for table rows, and for table columns, and more!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### CSS\n",
"\n",
"CSS stands for Cascading Style Sheets, this is what gives \"style\" to a website, including colors and fonts, and even some animations! CSS uses tags such as **id** or **class** to connect an HTML element to a CSS feature, such as a particular color. **id** is a unique id for an HTML tag and must be unique within the HTML document, basically a single use connection. **class** defines a general style that can then be linked to multiple HTML tags. Basically if you only want a single html tag to be red, you would use an id tag, if you wanted several HTML tags/blocks to be red, you would create a class in your CSS doc and then link it to the rest of these blocks."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Scraping Guidelines\n",
"\n",
"Keep in mind you should always have permission for the website you are scraping! Check a websites terms and conditions for more info. Also keep in mind that a computer can send requests to a website very fast, so a website may block your computer's ip address if you send too many requests too quickly. Lastly, websites change all the time! You will most likely need to update your code often for long term web-scraping jobs."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Web Scraping with Python\n",
"\n",
"There are a few libraries you will need, you can go to your command line and install them with conda install (if you are using anaconda distribution), or pip install for other python distributions.\n",
"\n",
" conda install requests\n",
" conda install lxml\n",
" conda install bs4\n",
" \n",
"if you are not using the Anaconda Installation, you can use **pip install** instead of **conda install**, for example:\n",
"\n",
" pip install requests\n",
" pip install lxml\n",
" pip install bs4\n",
" \n",
"Now let's see what we can do with these libraries.\n",
"\n",
"----"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Task 0 - Grabbing the title of a page\n",
"\n",
"Let's start very simple, we will grab the title of a page. Remember that this is the HTML block with the **title** tag. For this task we will use **www.example.com** which is a website specifically made to serve as an example domain. Let's go through the main steps:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import requests"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Step 1: Use the requests library to grab the page\n",
"# Note, this may fail if you have a firewall blocking Python/Jupyter \n",
"# Note sometimes you need to run this twice if it fails the first time\n",
"res = requests.get(\"http://www.example.com\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This object is a requests.models.Response object and it actually contains the information from the website, for example:"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"requests.models.Response"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(res)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\n\\n\\n Example Domain \\n\\n \\n \\n \\n \\n\\n\\n\\n\\n
Example Domain \\n
This domain is for use in illustrative examples in documents. You may use this\\n domain in literature without prior coordination or asking for permission.
\\n
More information...
\\n
\\n\\n\\n'"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"Now we use BeautifulSoup to analyze the extracted page. Technically we could use our own custom script to loook for items in the string of **res.text** but the BeautifulSoup library already has lots of built-in tools and methods to grab information from a string of this nature (basically an HTML file). Using BeautifulSoup we can create a \"soup\" object that contains all the \"ingredients\" of the webpage. Don't ask me about the weird library names, I didn't choose them! :)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import bs4"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,\"lxml\")"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"\n",
"\n",
"Example Domain \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
"\n",
"
Example Domain \n",
"
This domain is for use in illustrative examples in documents. You may use this\n",
" domain in literature without prior coordination or asking for permission.
\n",
"
More information...
\n",
"
\n",
"\n",
""
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's use the **.select()** method to grab elements. We are looking for the 'title' tag, so we will pass in 'title'\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Example Domain ]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select('title')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice what is returned here, its actually a list containing all the title elements (along with their tags). You can use indexing or even looping to grab the elements from the list. Since this object it still a specialized tag, we cna use method calls to grab just the text."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"title_tag = soup.select('title')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Example Domain "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"title_tag[0]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bs4.element.Tag"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(title_tag[0])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Example Domain'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"title_tag[0].getText()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Task 1 - Grabbing all elements of a class\n",
"\n",
"Let's try to grab all the section headings of the Wikipedia Article on Grace Hopper from this URL: https://en.wikipedia.org/wiki/Grace_Hopper"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# First get the request\n",
"res = requests.get('https://en.wikipedia.org/wiki/Grace_Hopper')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Create a soup from request\n",
"soup = bs4.BeautifulSoup(res.text,\"lxml\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now its time to figure out what we are actually looking for. Inspect the element on the page to see that the section headers have the class \"mw-headline\". Because this is a class and not a straight tag, we need to adhere to some syntax for CSS. In this case"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"\n",
"\n",
"Syntax to pass to the .select() method
\n",
" \n",
"\n",
"Match Results
\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
"soup.select('div')
\n",
" \n",
"\n",
"All elements with the <div> tag
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('#some_id')
\n",
" \n",
"\n",
"The HTML element containing the id attribute of some_id
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('.notice')
\n",
" \n",
"\n",
"All the HTML elements with the CSS class named notice
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('div span')
\n",
" \n",
"\n",
"Any elements named <span> that are within an element named <div>
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('div > span')
\n",
" \n",
"\n",
"Any elements named <span> that are directly within an element named <div>, with no other element in between
\n",
" \n",
" \n",
"\n",
"\n",
" \n",
" \n",
"
"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Early life and education ,\n",
" Career ,\n",
" World War II ,\n",
" UNIVAC ,\n",
" COBOL ,\n",
" Standards ,\n",
" Retirement ,\n",
" Post-retirement ,\n",
" Anecdotes ,\n",
" Death ,\n",
" Dates of rank ,\n",
" Awards and honors ,\n",
" Military awards ,\n",
" Other awards ,\n",
" Legacy ,\n",
" Places ,\n",
" Programs ,\n",
" In popular culture ,\n",
" Grace Hopper Celebration of Women in Computing ,\n",
" Notes ,\n",
" Obituary notices ,\n",
" See also ,\n",
" References ,\n",
" Further reading ,\n",
" External links ]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# note depending on your IP Address, \n",
"# this class may be called something different\n",
"soup.select(\".toctext\")"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Early life and education\n",
"Career\n",
"World War II\n",
"UNIVAC\n",
"COBOL\n",
"Standards\n",
"Retirement\n",
"Post-retirement\n",
"Anecdotes\n",
"Death\n",
"Dates of rank\n",
"Awards and honors\n",
"Military awards\n",
"Other awards\n",
"Legacy\n",
"Places\n",
"Programs\n",
"In popular culture\n",
"Grace Hopper Celebration of Women in Computing\n",
"Notes\n",
"Obituary notices\n",
"See also\n",
"References\n",
"Further reading\n",
"External links\n"
]
}
],
"source": [
"for item in soup.select(\".toctext\"):\n",
" print(item.text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Task 3 - Getting an Image from a Website\n",
"\n",
"Let's attempt to grab the image of the Deep Blue Computer from this wikipedia article: https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"res = requests.get(\"https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)\")"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"image_info = soup.select('.thumbimage')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[ ,\n",
" ]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"image_info"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(image_info)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"computer = image_info[0]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bs4.element.Tag"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(computer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can make dictionary like calls for parts of the Tag, in this case, we are interested in the **src** , or \"source\" of the image, which should be its own .jpg or .png link:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/220px-Deep_Blue.jpg'"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"computer['src']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can actually display it with a markdown cell with the following:\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that you have the actual src link, you can grab the image with requests and get along with the .content attribute. Note how we had to add https:// before the link, if you don't do this, requests will complain (but it gives you a pretty descriptive error code)."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"image_link = requests.get('https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/220px-Deep_Blue.jpg')"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"b'\\xff\\xd8\\xff\\xe0\\x00\\x10JFIF\\x00\\x01\\x01\\x01\\x00H\\x00H\\x00\\x00\\xff\\xfe\\x00CFile source: http://commons.wikimedia.org/wiki/File:Deep_Blue.jpg\\xff\\xe2\\x02@ICC_PROFILE\\x00\\x01\\x01\\x00\\x00\\x020ADBE\\x02\\x10\\x00\\x00mntrRGB XYZ \\x07\\xcf\\x00\\x06\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00acspAPPL\\x00\\x00\\x00\\x00none\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf6\\xd6\\x00\\x01\\x00\\x00\\x00\\x00\\xd3-ADBE\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\ncprt\\x00\\x00\\x00\\xfc\\x00\\x00\\x002desc\\x00\\x00\\x010\\x00\\x00\\x00kwtpt\\x00\\x00\\x01\\x9c\\x00\\x00\\x00\\x14bkpt\\x00\\x00\\x01\\xb0\\x00\\x00\\x00\\x14rTRC\\x00\\x00\\x01\\xc4\\x00\\x00\\x00\\x0egTRC\\x00\\x00\\x01\\xd4\\x00\\x00\\x00\\x0ebTRC\\x00\\x00\\x01\\xe4\\x00\\x00\\x00\\x0erXYZ\\x00\\x00\\x01\\xf4\\x00\\x00\\x00\\x14gXYZ\\x00\\x00\\x02\\x08\\x00\\x00\\x00\\x14bXYZ\\x00\\x00\\x02\\x1c\\x00\\x00\\x00\\x14text\\x00\\x00\\x00\\x00Copyright 1999 Adobe Systems Incorporated\\x00\\x00\\x00desc\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x11Adobe RGB (1998)\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00XYZ \\x00\\x00\\x00\\x00\\x00\\x00\\xf3Q\\x00\\x01\\x00\\x00\\x00\\x01\\x16\\xccXYZ \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00curv\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x023\\x00\\x00curv\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x023\\x00\\x00curv\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x023\\x00\\x00XYZ \\x00\\x00\\x00\\x00\\x00\\x00\\x9c\\x18\\x00\\x00O\\xa5\\x00\\x00\\x04\\xfcXYZ \\x00\\x00\\x00\\x00\\x00\\x004\\x8d\\x00\\x00\\xa0,\\x00\\x00\\x0f\\x95XYZ \\x00\\x00\\x00\\x00\\x00\\x00&1\\x00\\x00\\x10/\\x00\\x00\\xbe\\x9c\\xff\\xdb\\x00C\\x00\\x06\\x04\\x05\\x06\\x05\\x04\\x06\\x06\\x05\\x06\\x07\\x07\\x06\\x08\\n\\x10\\n\\n\\t\\t\\n\\x14\\x0e\\x0f\\x0c\\x10\\x17\\x14\\x18\\x18\\x17\\x14\\x16\\x16\\x1a\\x1d%\\x1f\\x1a\\x1b#\\x1c\\x16\\x16 , #&\\')*)\\x19\\x1f-0-(0%()(\\xff\\xdb\\x00C\\x01\\x07\\x07\\x07\\n\\x08\\n\\x13\\n\\n\\x13(\\x1a\\x16\\x1a((((((((((((((((((((((((((((((((((((((((((((((((((\\xff\\xc0\\x00\\x11\\x08\\x01K\\x00\\xdc\\x03\\x01\\x11\\x00\\x02\\x11\\x01\\x03\\x11\\x01\\xff\\xc4\\x00\\x1d\\x00\\x00\\x01\\x04\\x03\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x01\\x02\\x04\\x07\\x00\\x05\\x08\\x06\\t\\xff\\xc4\\x00[\\x10\\x00\\x01\\x03\\x02\\x03\\x04\\x05\\x07\\x07\\x06\\t\\x07\\t\\t\\x00\\x00\\x01\\x02\\x03\\x11\\x00\\x04\\x05!1\\x06\\x12AQ\\x07\\x13\"aq\\x142\\x81\\x91\\xa1\\xb1\\xc1#$BRbr\\xd1\\x08\\x1534s\\xf0\\x17CS\\x82\\xa2\\xa3\\xb2\\xb3\\xe1\\x16%Dc\\x92\\x94\\xc2&56Te\\x83\\x84\\x93\\xc37Utu\\xa4\\xb4\\xd2\\xd3\\xf1\\xff\\xc4\\x00\\x1a\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x02\\x03\\x04\\x05\\x06\\xff\\xc4\\x004\\x11\\x01\\x01\\x00\\x02\\x01\\x03\\x02\\x04\\x03\\x07\\x04\\x02\\x03\\x00\\x00\\x00\\x00\\x01\\x02\\x11!\\x03\\x121AQ\\x04\\x13aq\\x05\"\\x8123B\\xa1\\xb1\\xc1\\xf0\\x14#\\x91\\xd1\\x15\\xe1Rr\\xd2\\xff\\xda\\x00\\x0c\\x03\\x01\\x00\\x02\\x11\\x03\\x11\\x00?\\x00\\xf5\\x8c\\xf4\\x85io\\xb4\\xb85\\xde%h\\xb6\\x9bi\\xc5\\xa5kd\\xef\\xc6\\xf2\\x08\\x989\\xf1\\xafe\\xfc\\';\\x96\\xbayn\\xb8O\\xc4\\xf0\\x98\\xde\\xf9\\xa5\\xc9\\x83\\xe2V\\x98\\xbe\\x1a\\xc5\\xf6\\x1e\\xef[j\\xf0%\\x0b\\xdd)\\x980r=\\xe2\\xbc\\x1d^\\x96]\\x1c\\xefO9\\xab\\x1e\\xce\\x9fS\\x1e\\xae3<|T\\xe1\\\\\\xda-H\\xb5\\x06\\x10\\x08 \\x80A\\xc8\\x83\\xc6\\x90\\xd2+\\x0c\\xba\\xc2\\x96]\\xc0\\x96\\x95[\\x04\\x99\\xc3\\x1dT5\\xff\\x00t\\xa8\\x96\\x8f\\xd9\\xcd\\x1d\\xc9\\xd6\\x96\\xad\\xdf\\xed\\x7f\\xcf\\xfd\\xa7\\xd8b\\xb6\\xd7\\x8f\\x1bq\\xbe\\xc5\\xe2S\\xbc\\xbbW\\xc6\\xeb\\xa9\\x1c\\xe3E\\x0f\\xb4\\x92S\\xdfS6X\\x9dPa\\xd0\\xd4\\x9e;\\xc9Q\\x88m\\x05\\xdbN)\\xf6J]}m\\xba\\xc3\\x9b\\x8bB\\xa5\\x81 \\xfa\\xf22\\x0e\\x84\\x1a}[\\xfe\\x19\\xfe{\\xb6\\xff\\x00\\x99\\xae\\x1f\\xbe\\xb2\\x7f\\x11\\xc4Up\\x9b2T\\xda\\x1bd5\\xd6(\\xc7i\\xc3&H\\x81\\xe6\\xee\\x8dr\\xe53\\xb9\\xae\\x12\\xd0\\x9f\\x9d\\xdd~\\xd4g\\xfc\\xc4\\xd3\\x19\\xa9\\x0b\\x1f$\\xaf\\no\\x8a\\xa7\\x95\\x03\\xf9G\\xff\\x00\\xd2\\\\\\x07\\x9f\\x90;\\xfd\\xe2k\\x13\\xf6cW\\xd5\\xa1\\xe8M\\xb5/\\xa4\\xcc#sT\\xa1\\xf5\\x12\\x0cG\\xc9(O~\\xba~\\x15\\xd7\\xa7<\\xfd\\xbf\\xbb\\x9e~\\x8e\\xa0\\nZ\\n\\xc2\\xdf\\xc9\\x11\\x99H\\xce\\xb5\\xaffvpu\\xc0\\xde\\xfa\\xd2\\x00\\x90\\x00\"\\x0ef\\'\\xba\\x8ds\\xa8\\xb6\\x81\\x88\\xed\\x16\\x19\\x86\\xdf\\xdb\\xd8\\xdf^2\\xdd\\xeb\\xf9\\xb6\\xc2ek#\\x9e\\xe8\\x04\\x81\\xder\\xa6a\\x95\\x9b\\x91\\x9b\\xd4\\xc6][\\xcbh\\x97\\x01\\x00\\x80`\\xf7Vt\\xd6\\xce\\x0b\\x06\\xa3\\xb2\\xd4\\x99ReI\\x95&T\\x99ReI\\xc4Ww\\xca\\xb9\\xbf\\xb7\\x0e\\xc2\\x82VF\\xee\\x99\\x9c\\x81\\xf4W\\xea{5\\xd6\\xc2\\xcb\\xea\\xfc\\xfc\\xcf\\xfd\\xbc\\xbb\\xa6\\xf7\\x1d5\\xd0\\xda\\xf7\\xba<\\xc2\\xf3\\x9d\\xd2\\xea\\x7f\\xac5\\xf0?\\x17\\x9a\\xf8\\xcc\\xff\\x00O\\xe8\\xfb\\x7f\\x86\\xdd\\xfc6\\x1f\\xe7\\xad{q_9\\xec-H\\xa2\\xa0Z\\x91iH\\xd7\\xf6\\x16\\xb7\\xed\\xa17l\\xa5e\\xb5o6\\xb9)[j\\xfa\\xc8P\\xcd\\'\\xbc\\x1aF\\xec\\xf0\\x818\\x9e\\x14\\xc8\\xde\\xeb1{t\\x9c\\xd4\\x02Sr\\x94\\xf3\\x81\\tr;\\xb7Or\\x8d&\\xea\\xfd\\x1b\\x0b\\x1b\\xeblB\\xdc\\xbdd\\xf2^l\\x12\\x85n\\xea\\x95\\rR\\xa0sJ\\x87\\x10`\\x8a\\x19\\xb2\\xcf-\\x06\\x1d\\xff\\x00J\\xee\\x80\\xe0_=\\xd9\\xad\\x8a\\xbdk\\x7f\\xc3?\\xcfw\\xa9\\xa9\\xcd\\t\\x1f\\xad\\xdd~\\xd0\\x7fa5\\xa9U\\x19\\xdf\\xd0\\xaf\\xc2\\xabxS\\xca\\x81\\xfc\\xa4\\x07\\xfc\\xa6\\xc0\\x0f\\x0f!{\\xfb\\xc4\\xd6\\'\\x88\\xd5\\xf5iz\\x0f\\xdf\\x1d%a\\x9dXI\\x96\\x9f\\x991\\x03\\xab\\xd7\\xd7\\x15\\xdb\\xa5\\xe3/\\xb7\\xf7\\x8ey\\xfa:>\\xf2\\xea\\xd3\\t\\x17x\\x8e+z\\x96m\\xd0\\x94\\x82\\xb7\\x96\\x12\\x84e\\xa2G3=\\xe4\\xe49WM\\\\\\xa4\\x98\\xc7+f\\x1b\\xcb*\\xd2\\xb3\\x8a\\xe2;J\\x8b\\x84\\xd8[\\xdc\\xe1xJ\\xd1\\xb8\\xd6 \\xe2Bn\\x1cYRaM\\xb6\\xa0BS\\x1b\\xd9\\xa8Nc!Z\\x98\\xcc<\\xf3X\\xee\\xcb9\\xed?\\x9bi\\x80`\\xb6\\x18K>P\\xd27\\xae\\xdci\\xb0\\xfd\\xe3\\xca\\xdeu\\xe2\\x94\\x84\\x82\\xb5\\x9c\\xc9\\x81Y\\xcb+x\\xf4k\\x1cf3\\x84\\xc5]\\xa9\\xc5n\\xda \\xa8\\xfdr2\\xf5Vu\\xee~\\xc5E\\xb8+\\xdeyJu\\xcf\\x1d?~\\xea\\x8e\\x92\\xd0\\x83\\x94\\xf6@\\xe0(jA(,\\xa92\\xa4\\xca\\x91\\n\\x80\\xd6\\x8bQ7\\x95\\xc19w\\x9a7S\\x83\\x9e\\\\^\\xb5\\x1c\\x1d\\x1e\\xfa\\xfdm\\xfd\\xf67\\xea\\xfc\\xe6<\\xf4\\xec\\xfa:\\x9b\\xa0\\xd77\\xfa>\\xb5\\x1fV\\xe1\\xe4\\xff\\x00N\\xbe\\x17\\xe3s_\\x19\\x97\\xda\\x7fG\\xda\\xfc*\\xef\\xe1\\xb1\\xfd\\x7f\\xadX\"\\xbeS\\xe8\\x94T\\x0bR-!\\xa8\\xdaM\\xa6\\xc16f\\xd9\\xb7\\xf1\\xfcR\\xd6\\xc1\\xb7\\t\\r\\xf5\\xab\\xed.5\\xddH\\xcdQ\\x96\\x83\\x8d[\\x1fg\\x84\\xb8\\xe9\\xdfb\\xdaQ\\x08s\\x14x\\x0e(\\xb2P\\x07\\xfd\\xa8\\xaa}\\x92\"\\xff\\x00(\\x1d\\x90NI\\xb3\\xc7W\\xe1l\\x81\\xefX\\xa7\\xf4\\x1c\\xb4\\x98\\xa7N[\\'qt\\x8b\\xcbL/h\\xed\\xef\\x90#\\xcaYm\\x84\\xa9i\\xfa\\xab\\x05d-=\\xca\\x19p \\xe7N\\xef\\xb1\\x9cy\\xf0\\xd7\\xa3\\xa7\\x8c)\\x8ci\\xdb\\xd6\\xb0\\x1cIhYp\\x84\\xa9\\xd6\\x92\\xa8Ph\\xe7\\x99\\xd1M\\xab\\xd0EZ\\xbeV\\xf8\\xd2j\\xff\\x00)\\x0bO\\xe2\\xf6V\\xf4\\xfd\\xfb\\xc6\\xd3\\xee\\x06\\xad2\\x80\\xe7\\xe5\\x1e\\x86M\\xc3\\xc3d\\x96\\xa0\\xa5\\x05A\\xc4@ @\\x1fS\\xba\\xadP}\\xd7\\xe5 \\xdb\\xd6hs\\r\\xd9gU\\xbc!^Uz\\x13\\x07\\xbbq&F]\\xd4\\xea\\xde\\x17>U\\xee\\xdf\\xf4\\x98\\xee\\xd9\\xe2\\x16WWX3V\\x8a\\xb4il\\xa5-\\xdd)aAJ\\x06L\\xa4F\\x94Ln\\x9a\\xee@\\xd9=\\xb9\\xba\\xd9\\xac~\\xdf\\x16\\xb0\\xb0ao\\xb2\\x16\\x02\\x1eu[\\xaa\\n\\x10A\\x8fA\\x9e\\xea\\xe9\\x8c\\xedc+\\xbf\\r\\xd2\\xba^\\xc7\\x1e\\xc6\\x86)\\x88a\\xd8f%t\\x83,\\x0b\\xb0\\xe1n\\xdb\\xf6m\\x85\\x00xIO\\xb6\\xbe\\x1f\\xe3\\xb6_\\x8b\\xdf\\xd2>\\xdf\\xe1\\x18\\xdf\\xf4\\xd3\\xf5Y\\x03j\\xf0\\x00\\x90\\xa5cV\\x08\\x04ov\\xdd\\t1\\xe9\\xaf\\x8f\\xb8\\xfa]\\xb9{%\\xb1\\x8d\\xe17\\x04\\x0b|W\\x0ft\\xeb\\x08\\xb9A>\\xfaw=\\xc5\\x96y\\x89b\\xee\\xd8\\xe9snr\\x9f\\xd2\\xa7\\xf1\\xa9\\x9d\\x9e.X$\\x80\\xfb$\\x8e\\x1db\\x7f\\x1aF\\xdc\\xf3\\xf9U]0\\xed\\xe6\\xc9\\x9bw\\x99t\\x86\\xef\\x12\\xae\\xadaDJ\\x99\\xe5\\xe0}T\\xce|%$\\x86\\xd6\\xfb\\x8d\\xb6\\xd8\\x97\\x1cRP\\x90H\\x02I\\x00\\t9\\x0c\\xcf\\x1a\\xd0\\xafI\\xfc\\x1fmO^\\x86N\\x0eR\\xea\\xde6\\xe1&\\xe5\\x9c\\x9c\\xfa\\xa7\\xb7\\x91\\x91\\x1d\\xe4\\x81\\xa9\\x15\\xae\\xd4\\xd1b\\xb8M\\xf6\\x13\\xe4j\\xc4\\x18\\x0c\\x1b\\xc6<\\xa1\\x94\\xef\\x82\\xa2\\x89\\x89RFi3\\xc0\\xd5f\\x85k\\x94 \\x8c\\xaa\\x9f@h0u\\xce\\xafD\\x05\\xef\\xea\\xae\\xea\\t\\x13F\\xb8Z&\\x19\\x9d\\x80\\x93\\xfe9\\x9a\\xbdH\\xaa\\xc8\\x9a\\xd4\\xac\\xd2\\x03\\x07X\\xf4\\xd3\\xbfP\\xdaY`X\\x9d\\xf5\\x8f\\x96\\xd9\\xda)\\xfb}\\xe5#y\\x0b\\x13)\\xf3\\xbb:\\xe5#\\x86S4\\xa4\\x91\\xb2x\\xf4\\xad?\\x9b^\\x1b\\x84\\x85I\\x19F\\xbcyI\\xf0\\x93L\\x95\\x01w\\x82b\\x16Xsw\\xd7-\\xb6\\xdb\\x0e\\x90\\x11.\\r\\xe5f\\x06C\\x8cH\\x06&3\\x98\\x83\\x15\\x9a\\x08\\xac\\x18X\\xd4e\\xf0\\xa2\\xad;\\x0f\\xa0\\x01\\x1d\\x12\\xe0]\\xe6\\xe0\\xff\\x00\\xf5\\x0eQ\\x90\\xc5aVv\\xd3*\\xe52\\x94\\xca\\x93\\x08\\x04A\\x19T\\x8dPN\\xe1\\x07$\\xc7\\x03\\x11F\\xbd\\x11\\x81\\xd4Gd\\xa9@e!%^\\xda\\x93\\x84\\xb6\\xf5\\xeb5\\xe3A\\x16XN\\x1f\\x87\\xbbn\\xb2\\x97\\xd5\\x87\\\\\\xad\\xe6.\\x15!A\\xc6\\xe7\\xcdLp\\x19g_\\xa2\\xe9L\\xe7\\xe6\\xcb+y\\xdf3V}\\xfe\\xaf\\x91\\xd7\\xb8\\\\\\xac\\xc6I\\xf6\\xf1V\\xa7D[Jl\\xb0\\xbb\\x8b[}\\xad\\xd9\\xec=\\xc7nT\\xe2mqf\\x16\\xda\\x8c\\x84\\xc1J\\xc3\\x89\\n\\x071\\x1c\\x08\\xef\\xaf\\x9d\\xf8\\xceS\\xa9\\xd7\\x99\\xcb\\xc6\\xbf\\xbb\\xdd\\xf8T\\x9d>\\x8ff^v\\xb7\\xec\\xd8\\xda\\xfb\\x9br\\xed\\xbe1\\xb37\\xcd\\xaaJ\\x1cn\\xd9\\xd03\\xd3\\xcdq@\\xc7\\xa2k\\xe4M\\xdf\\x0f\\xa5\\xdd\\x8f\\xd4\\x978V\\xd4\\x10\\x15p\\xe6\\xcc]\\x1e-\\xbbb\\xf2\\'\\xf9\\xdb\\xca\\x8fQ\\xab\\xeefS\\xd3\\x7f\\xe7\\xea\\x8e\\xce\\x07\\x8d\\x8d\\xe0vkc\\xd0\\x93\\xa1\\x0f,\\x8fH\\xea*\\xd1\\xef\\xfa\\x8e0LSwu[9\\xb2\\x9b\\xdb\\xa4\\x05%\\xd5@<$\\x16f<\\rZ\\x1d\\xff\\x00Z\\xa5\\x7f(\\xec>\\xfa\\xc0\\xec\\xaf\\x97\\xdb`\\xf6\\xfb\\xc2\\xe9-\\xa7\\riH\\x02\\x0bD\\x85\\x13\\xaf\\x0808\\xd6\\xf1\\x9c9\\xe5w\\xea\\xa9\\xa1$\\r\\xf6\\xfa\\xd6\\xc1IR$\\xa4,e\"Fbt\\x91L\\x9e\\xcc\\xed\\xee\\xdf\\xe9\\x1d\\xb4\\xa9j\\xb7\\xd9\\x9bf\\x9bw\\x12V(\\xb4\\xaf\\x10qD:H2\\x08H\\x82\\nRG\\x0e\\x10k{\\xe1\\x9e^Ci\\xf6\\x82\\xe7in\\xac\\xee\\xb1&ZM\\xfb,y;\\xaf\\xb6\\xa5|\\xb8\\n*IRNI)\\xdeP\\xcbY\\xa2\\xf3\\xca\\x9cV\\xa0\\t\\x04\\xc11\\x993Qf\\xe8\\xde15O\\x02\\xa3\\xdf\\x00-\\x1d\\x19\\x0e\\xce\\xa6\\xa8\\xbdM\\xc3\\xa3\\xc8\\x06\\\\t\\xf4\\x9a\\xa4\\xe5T\\x92\\x01\\x1a\\n\\xa0\\xacJ7\\xd6\\x12\\x00\\x04\\xe94\\xfah\\x0e\\xce%\\x7fol\\x96mon\\x19`,\\xb8\\x946\\xad\\xd0\\x95\\xeb\\xbc9\\x1e\\xf1\\x9f\\xac\\xd6\\xa5\\x16\\x11x\\x96&TC\\x98\\x8d\\xf4\\xa4\\x00\\x12\\xa7\\xd5\\x90\\xf0\\xf0\\'\\xd6y\\xd5r\\xa3\\xb6\\x06]}\\xd4\\xa1\\x0f>\\xe3\\xa8A*B\\\\Y (\\x80\\t\\x13\\xc4\\x80$\\xf1\\x815n\\xeb\\x93\\'\\xb2M\\x99\\x1dz\\'p\\x8c\\xe7|H\\xd0\\xd1\\x92u\\xef\\xe4\\xf5?\\xc1\\x16\\x06L\\x99U\\xce\\xa7O\\x9c9\\\\\\xb2\\xca\\xdadX\\xf9M[\\x90\\x96kR\\xca\\x19ZF\\x95A\\x88$\\xf7\\n6\\x88w\\xd5\\xc9\\x03\\xd6jD\\xeaRL\\xaeV~\\xd6ts|\\xa1)N!\\xdb|>\\xcd\\x18\\xea\\xae,q\\x8c7\\x10\\x17\\x0e\\x12\\xe0\\xc3Y-6\\xca\\xd3\\xba\\x0f`\\xc8\\xedL\\xf6L\\x135\\xfa_\\x86\\x99e;r\\xc7,u\\xefw_\\x13\\xe2\\xee8e\\xb9\\x94\\xbb\\xf6\\x9al\\xb0-\\x9e^#l\\xf1B\\xedT\\x12\\xb0\\x92\\x87\\xd9$\\x1c\\xb9\\xa4\\xfc+\\xc5\\xf1\\xdb\\xc3)+\\xd9\\xf0z\\xcf\\x1bS\\x9b\\xd8\\xa7\\xedV\\x1d\\xb4\\xb1a\\xa7\\x01\\xfd%\\x8d\\xe2\\x99W\\xb9>\\xfa\\xf9\\xb7\\xb7/\\xda\\x8fl\\x96x\\xad\\xcd\\xa5\\xf6\\xd9a[\\xa6\\xd7\\x1a\\xdavBt\\x0e\\x91x\\x8f\\xe9o\\xd6n\\x18}\\x8d\\xb9F\\xe2\\xcb\\xa4\\xdd\\xb0\\xb3\\xec\\xbf}\\x82^\\x9eW\\xd6\\x8a\\xb6Y\\xf4\\x82\\x91\\xec\\xac\\xde\\x94\\xf3)\\x99\\xdfX\\xf4\\x96=-\\xe2\\xa1)\\xf2\\xed\\x93\\xeb\\xd3\\xc5\\xcc6\\xfd.\\xcf\\x82T\\x07\\xbe\\xb3\\xf2\\xabS\\xa8\\xac\\xff\\x00(=\\xb3\\xc3\\xf6\\xb9\\x1b<,\\xad1\\x0bW\\xac\\x97p\\x1dn\\xf1\\x90\\x827\\x83q\\x04\\x12\\x0ei:\\x1a\\xb5g\\x14\\xcb\\xbeU\\x8bF\\x14s\\x00\\xc0\\xe3\\xddA\\xa6\\\\\\x99Bt\\xd7\\xe1P\\x9bFN\\x7f\\xbe\\xb5\\x0b\\x0e\\x1ec\\x90\\x07\\x9b\\x9e}\\xe2\\xb5\\xa4\\xc0\\xa2\\x14\\x0c\\xe63\\xca\\x8f\\xb2\\xda=\\xe9\\xf9\\xb3\\xc7\\xba{\\xea\\xf06\\x16\\x1b\\x95\\x80\"G\\xa7\\xbc\\xd3\\xaeRP\\xd33F\\x88\\xd6\\xa3z\\xe1\\xb4\\xf9\\xb3>\\xe3PG\\x12R4\\xd2\\x98\\x8c\\x02N~\\x1c\\xe9\\xd8\\x19#3\\xcf_\\n\\x97\\x84\\x86\\x0f\\xca\\'\\xb2\\x14 \\xe5=\\xc6\\xb3\\x92\\x8e\\xc2\\xfc\\x9f\\x04tC\\x80\\x7f\\xe2?\\xfb\\x87+2%\\x82\\xa7\\x90\\x0c\\x03\\xbc\\xaeI\\xcc\\xd5u<\\xa2\\x02\\xe2\\xa2\\x12\\x10;\\xf34\\xcb\\xec\\x85\\xad&T\\x99F\\xbdS)L\\xa98?\\x13\\xc5\\xae\\xf1Lq\\xcb\\xdcQ\\xd2\\xfd\\xd2\\xd4\\x90\\xb7\\x14\\x84\\xa4\\xa8$\\x00&\\x00\\xce\\x00\\x13\\xdd_\\xb1\\xc3\\xa5\\x87G\\xfd\\xbc&\\xa4~W\\xab\\xd6\\xcf\\xad~fwuqtW\\xd4^X_\\x9e\\xad$\\x07\\x91\\xa8\\xe6\\x93_\\x07\\xf1m\\xcc\\xf1\\xfbW\\xdd\\xfc*\\xcc\\xbaw\\xee\\xb0\\x13\\x86Z,f\\xcaG\\x81\\x8a\\xf9\\x1d\\xf9>\\xa7la\\xc1-\\x8f\\x9a\\\\O\\xa6j\\xf9\\x94|\\xb8C\\x82\\x0c\\xc7]\\xbc\\x9eKL\\x8a~`\\xec@\\xb9\\xd9\\x1b\\x17\\x8e\\xf3\\x96\\x16.+\\xeb\\x06\\xc2\\x15\\xeb\\x10i\\x9dH;\\x15\\x0fO\\x18;xM\\xb6\\x03\\xd4\\xb2[K\\x8e\\xdc\\'5\\x95\\xceM\\x9dI&\\x99\\x97p\\xed\\xedV\\xa4KY\\xfdQ\\xee\\xa2\\xa2(|\\x92\\x0e\\x99\\x11>\\x9a\\xa2\\xd8;\\xba\\x91\\xa51V(\\x94\\x85\\x00\\x99\\xde\\x11\\xe8\\x91\\xf8S#6\\xfb\\x1bT@^\\x8f\\x9a\\xbd\\xf7t\\xa9\\x19\\x86\\xfe\\xa24\\x9f\\xf15z\\xa4\\xc0\\x04(\\xce`\\xe5V\\xb9Ea\\xe5\\xb1p\\x97Z0\\xb4\\xcc\\x12\\'PA\\xcb\\xc0\\x9a|\\x08\\x12S\\xbb\\x00\\r\\x07\\xc2\\x83\\xc9\\x02x\\x91\\x950\\n\\x84\\xe4\\xa3\\x04\\xf7\\xf0\\x15#\\xd0~U2s\\x8a\\xce^\\x04v\\x1f@\\r\\x85tC\\xb3\\xfb\\xe5DC\\xe6\\t\\xcb\\xf4\\xee{+;\\xbe\\xa6E\\x8a\\x00H\\x84\\x80\\x07 (\\xb9DQV$\\xb5\\xd02\\xa4\\xca\\x93*L\\xa98sl\\xd5b\\x8ce\\xa6,0\\xec2\\xd1\\xc6\\xc6\\xfb\\x8faw\\xab\\xb8a\\xf0\\xa0\\nc\\x7f\\xcd)\\x82\\r~\\xa7\\xe1\\xaewyg\\x95\\xbf\\xfd\\xa6\\xac|\\x0f\\x8d\\xf9sX\\xe1\\'\\xde]\\xc5\\x95\\xd0\\xc2\\xfee\\x89\\x8f\\xf5\\x8d\\x1fa\\xaf\\x95\\xf8\\xc7\\xeda\\xfa\\xbe\\x87\\xe1\\x1f\\xb1\\x97\\xde-fU\\xd9\\xaf\\x89_a%\\x06\\x84$\\xf2\\xa92jJG\\xf2\\x99\\xcf\\x0e\\xd9\\xd3\\xca\\xe6\\xe0z\\xd0\\x8a\\xdfO\\x9bX\\xcf\\xc2\\x9d\\x07\\xe4\\xa7\\xec\\x03\\xec\\xae\\x8c\\x15S\\xb8\\x89\\x8d\\x08\\xf6\\xd1F\\xbdC\\x90s\\xa6xF\\xac\\x88\\x9fm1\\x1b\\xbc8g\\xdf\\x15\\r\\x03|A\\xb5|p\\xdd\\xaa\\x1b\\xc08Q\\xf9\\x88\\x93\\xe9\\xf4\\x9a\\xb5\\xc8L$\\x1f\\xa4\\x07q\\x11N\\xc1\\xa0\\x82L\\x1a\\x0c\\xe5\\x92\\x01#xT\\x18#x\\x89\\x14\\xfap\\x8e\\x19$\\x92\"Fb\\xa4;\\xec-\\x87\\x99.\\xa4\\x80\\xb4\\x92\\x0f1&\\xb3\\x971Ga\\xfeO\\xd9t?\\xb3\\x9d\\xed\\xba\\x7f\\xae]g\\xd1,*\\xceE\\x94\\xc4Z\\xe8\\x19ReI\\x07\\x15\\xc60\\xdc%\\xb0\\xe6)\\x7fkf\\x92$\\x17\\xddJ\\'\\xc2Nt\\\\\\xa4\\xf2\\x9e:\\xf3\\xa5\\xad\\x94\\xb7|\\xb6\\x8b\\xab\\xbb\\x80>\\x9b6\\x8e)>\\xb8\\xce\\xb9\\xde\\xac\\xf4=\\xb7\\xd9\\xc8\\xb8\\xe5\\xa5\\xa5\\x8e&Sa\\x88\\xb1\\x88\\xb0R\\x97\\x03\\xcd4\\xb6\\xc4\\x9dR\\xa4\\xa8H\"<3\\x19\\xd7\\xedfy\\xe7\\xbc\\xb3\\xc7\\xb6\\xfbq\\x7f\\xa3\\xf2\\xfd\\\\1\\xc3S\\x0c\\xbb\\xa2\\xd0\\xe8n\\xec%\\x8cH\\x1c\\xf3h\\xe5\\xfc\\xea\\xf8_\\x8b\\xe5\\xce?\\xab\\xec\\xfe\\x13?&_\\xa2\\xd8b\\xf1\\xb8\\xceG\\xa2\\xbe%\\xaf\\xb1\\xa4\\xd6\\xee\\x9a\\xfa\\xfe\\xb1F\\xe2\\xd0\\xa2\\xe1\\xb3\\xa3\\x89\\xf5\\xd1\\xb5\\xa3\\xc3\\x80\\x8c\\x88\\xa9)o\\xcaUC\\xf3^\\x05\\x074\\xdd\\xbd\\xedi?\\x85t\\xe9y\\xacg\\xe1O\\xa7\\xf4#3\\xe6\\n\\xeb\\\\\\x8a\\xeehL\\xf0\\n\\xd0w\\xd0\\x80\\xd3:\\x91\\xed\\x8f\\x93\\xb8\\x98\\xcd\\x95\\x0fh\\xado\\xd1PG\\x9c4\\x89\\x1a\\xe9T\\x00^\\x90m\\xdf \\x00\\nL\\x019T\\xa8x^v\\x00\\xfe\\xfeq\\xaa\\xf9\\xd2\\xd2VCBj\\x88k@K\\xca\\x00I\\r8c\\xc1\\x06\\xaa\\x11\\xa6D\\xe7\\x15I\\xa4S\\xdbp\\x90\\x06f`\\x0c\\x85i\\t\\xac\\x83\\xca$\\xd5RM\\xed\\xd2\\xae\\x1e\\xb7\\x067[n\\x04\\x08<{\\xeb\\x17\\xc2\\x8e\\xc2\\xe8\\x07\\xff\\x00c\\xfb5?\\xc8\\xac\\xff\\x00Z\\xba\\xc7\\x84\\xb0\\rf\\xd2QN>Qk\\xa8x\\xbd\\xa1\\xc7\\xf6\\x9d8\\xbd\\xce\\x1d\\xb3\\xbb<\\x97\\xc3;\\xb1yt\\xe1KK\\x94\\x82`e11\\xe7j+\\x9eYe\\xbdc\\x0e\\x9a\\xa5\\xec\\xce\\xdcc_\\xf3\\xc6\\xd37\\x87\\xb2uf\\xc1\\x04\\x11\\xdd#t\\xff\\x00H\\xd6{s\\xbei\\xfc\\xb13\\x0c\\xe8\\xabg-\\x1c\\xebn\\xda\\x7f\\x10|\\xf9\\xcb\\xb8sS\\xcf\\xb3\\x13\\xe9&\\x99\\xd3\\x91w\\xfb=e\\xae\\x07\\x85Z2\\x1a\\xb6\\xc3l\\x9alh\\x94\\xb2\\x90=\\xd5\\xbe\\xdcF\\xeb\\x81\\xae\\x14z\\xc5g\\xc0W\\xee:\\x9ek\\xf2xN\"\\xca\\xe8y\\xde\\xce$2\\xf3Z\\xf7\\xaa\\xbf5\\xf8\\xb7\\xf0\\xfe\\xaf\\xbf\\xf8W\\x8c\\xff\\x00E\\xae\\xca\\xfb5\\xf0\\xeb\\xec%!yP\\x8e.\\xc0\\xce\\xa4\\x11~|\\xdd9\\xd5\\xa1\\xb5q\\xf9A\\xf6\\xb6Gg\\x95\\x00\\x91~\\xf0\\x93\\xfb\\x1f\\xf0\\xae\\xfd\\'.\\xa2\\xa1\\x13\\xe4\\xe3\\xf6\\x7f\\x8dt\\xbe\\\\\\xb6z\\xff\\x00F\\x93\\x91\\x04\\x1c\\xbd4R\\x00\\x10I\\xec\\x98\\xa6\\xa8rT\\x12\\x1c\\x04\\x03\\xbc\\x82\\x91\\xe9\\x8c\\xfd\\x95\\xa8\\xb6\\x10\\x1d\\xa8\\xe7\\x9d\\x1a\\x08\\xf7s\\xe4\\xcfr\\xdc&\\xa0f\\x17\\x9d\\x86|?\\xfc\\xa8\\x97\\x92\\x98\\x11!Fr\\xe5J\\x16\\xc6\\xe16\\xcf\\xba\\xb5\\xa0\\xaf}\\x97\\x99\\x80b\\n\\xd0\\xa4\\x83\\xe8\\x99\\x8ag\\x02\\xf2\\x8c\\x91\\xe1<*U\\xec6/e\\xd9\\xc4\\x1aF%\\x88-\\x0fZ%@\\x8bf\\xc9%`(\\x02\\x16\\xa1\\x90\\xce%\\x19+uAC(\\x9dI\\xc6\\xd9k6\\x93\\n\\xb7\\xc2T\\xcfR\\xeb\\x85o-G\\xa9p\\xa4\\xa9\\x08\\xc8\\xa6cX\\xccO\\x1c\\xa8\\xca\\x1d\\xb4\\x87\\xf4\\xed\\xf2\"+\\x19\\x17g\\xf4\\x07\\x97C\\xfb1\\xff\\x00\\xc3\\xa8\\xff\\x00X\\xaa\\xe7L{\\xd5\\x1d+4\\x90\\x1c\\xc5X\\xf9TJ\\xee\\xc9\\x8a9\\xd7\\x1c\\xad\\xd9\\x91\\x93F\\xcb&\\x84I\\xa98\\'h\\xf0\\xb4\\xe1N0Q\\x8aa\\x98\\x88}*!V\\x0f\\x17\\x02\"<\\xe9\\x00\\x89\\x04\\x11\\xe9\\xaf\\xdbc\\xd6\\xbd[w\\x8d\\xc7^\\xef\\xceu~\\x1b\\xe4\\xc9\\xac\\xa5\\xfb=\\x87D\\x0e\\x8d\\xfc@\\x03\\xf4\\x1a\\xf4fk\\xe1\\xfe-\\xe3\\x1b\\xf7}o\\xc2\\xfce\\xfa-\\x86\\x17\\xd9\\x15\\xf0\\xeb\\xeb\\xa4\\x97BFg\\xd1F\\x80E\\xc2\\xb3\\x99\\xabH\\xa9W}!\\xe0\\xfa|\\xedlN\\x08ybN{XUv\\xe9ys\\xcf\\x95B\\xd7\\xea\\xa9\\xd3\\xcc\\xae\\x96n\\xb9l\\xf5\\x90P\\x82 \\x0c\\xc5\\x1fB\\x10\\x8ec\\x97\\x85h\\x10\\xc6Z@:Q\\x03\\x0f\\x19#^\\x14\\xec\\xa3^~\\xaa\\xf0\\x9c\\xf7\\x0e\\x86\\x8f@\\x0e\\x14G\\x91\\t\\xe6{\\xf8\\xd5<\\x9bSTG1\\x02)d\\xc2F\\xb2\\x06Z\\xd4t\\xc3\\xcaG\\xf8U\\x15\\x11\\x9b\\x97\\xd8\\x1b\\xb6\\xf7/\\xb27\\xb7\\xe1\\xb7\\x14\\x91\\xbd\\x110\\x0e\\xb1\\x94\\xd38\\x06\\x01\\x91\\xd4\\xe455\\x9b}\\xd41G\\xe7(\\x03\\x95Y\\x18\\xed>\\x82\\x04tC\\xb2\\xdd\\xf6\\x80\\xfa\\xd4\\xaa\\xe3L{\\x97\\x0e\\x95\\x92D\\xf9\\xc2\\x9c|\\xaa5wd%\\x1e\\xd1\\xae\\x19yj\\x12hL\\x9a\\x8b&\\xa4\\xf9\\xf1|\\xbe\\xb2\\xe9\\xc7J\\x1bA\\\\\\xa8\\xa5\\xb4\\x84\\xa4\\x12x\\x01\\xa0\\xee\\xaf\\xdeg5\\xc4~Ver\\xe5\\xeez#XK\\xd8\\x97\\x00P\\xdc\\xe7\\xf6\\x8d~{\\xf1^f?\\xab\\xed~\\x17\\xfc\\x7f\\xa2\\xd5n\\xe3\\xb3\\t\\xcf\\xbe\\xbe\\x1e\\x9f_i\\x01\\xc2\\xa1\\x9c\\xd5\\xa1\\xe4\\xe0\\xaa\\x91\\xe9]Z[x\\x8e\\x9d\\xcc\\xec&\\x15\\xc61B=l.\\xba\\xf4\\xbc\\xb9\\xe6\\xa8X\\xfdU\\xa3\\x9eH\\xf8\\x9a\\xeb\\\\\\xd8\\x7fWG\\x11*\\xe1\\xe1Y[\\x0b y\\x98\\xa5\\rh\\xd7X^\\x1b\\xbb\\xdb\\xb6\\xee\\xb9\\x1c\\xb7S3\\xe8\\xadI\\xb1@\\x06U\\x9c\\xc5e\\x03\\x7f\\xbb\\xd4\\xdc\\x14$\\xee\\x94\\x92\\x013\\x97\\x8dR{\\x900\\x9f\\xd4\\x8c\\xf1\\x9f}\"&\\x1euJ\\x8f\\xb7IS\\xdb\\xa9\\x04\\x92\\x95e\\x1fd\\xd5\\xe5x\\x04f\\x90O\\x8c\\xd3\\x11\\xca!N(\\x84\\x94\\x83\\x9c\\x031G\\xa88f\\x14O\\x01\\xeb\\xd2\\xaaC\\\\\\xf5\\xed\\xf2\\x02\\xb3\\x92\\x8e\\xd5\\xe8,\\x11\\xd1\\x16\\xca\\x03\\x9f\\xccPg\\xd2k\\x9e\\xcc{\\x85\\x80b\\x8dE\\x18\\x13\\xda\\x14\\xc9\\xca\\xd8\\x95\\xd4<\\xbe+\\xb4\\x8b\\xb1z\\xe8~e\\xc4\\x9dC%P\\xeaWn\\x84;\\x02IF\\xf3\\x80\\x9eZL\\xd3\\x8f\\xc3\\xdc\\xef\\x19N~\\xff\\x00\\xda9\\xe5\\xd5\\xed\\xf4\\xfe\\x9f\\xde\\xb4\\xef\\xed\\xd2\\x80\\n\\xb5\\xc3\\xed^l\\x8c\\x96\\xac^\\xd9\\xb11$\\x19T\\x828\\x88\\xae\\xb3\\xe0\\xaf\\xf1[?K\\xff\\x00Nw\\xe2\\xa7\\xf0\\xeb\\xfecG\\x8bt\\xabs\\x87\\xdc\\xf98\\xc0m\\xeeVP\\x16\\x17m\\x89\\x07\\x91\\x99\"\\tCg0A\\x91\\xf8\\xd7l?\\r\\x99\\xce\\xee\\xfd}\\xe6\\xbf\\xads\\xcf\\xe32\\xc6\\xf6\\xccw\\xf6\\xbf\\xfak\\x8fK8\\xe2\\x8c\\xb7\\xb2\\xe9\\xdd:|\\xa3\\xc7\\xff\\x00N\\xb5\\xff\\x00\\x8e\\xe8\\xcf=i\\xfc\\xbf\\xfd\\x0f\\xf5}[\\xcc\\xe9\\xff\\x00_\\xfar\\xed\\xc2\\xd2{Pb4\\xe3_\\xa4\\xea\\xe7\\xfcO\\x89\\xd3\\xc6\\xf8z\\xde\\x8b\\x9c>S|\\x04\\xe6\\x84{\\xcd|\\x1f\\xc4\\xac\\xb8\\xe3_k\\xf0\\xde._\\xa2\\xd7\\xb5WdW\\xc5\\xaf\\xaf\\x13\\xd2k \\xe0\\xae\\xfa\\x88\\x89U\\t\\xe3:q\\xedt\\x7fbs\\x81\\x8a\\'N\\xf6\\\\\\xae\\x9d/.y\\xf8S\\xf6\\xe4y+\\x7fp\\xfb\\xcdv\\xaeg*z\\x84G\\xda\\x8c\\xfc(\\x1b\\n\\x0c\\x9c\\xc6Y\\xe7Q\\x1e\\xc9\\xf4\\xdb\\xad\\xf2\\xa4\\x92\\x1c\\xb6y\\x9c\\xb3\\xcdh \\x1f\\t\\xa6p\\xcdGH\\x93\\xfe\\x14l\\x81w\\xfa\\xbb\\xdfp\\xd3\\x108W\\xear\\'\\x8f\\x0f\\xb5Y\\x858\\xa0\\x90\\xb3\\xa0LH\\xadxd\\xe6\\x94\\x1a\\xb9\\xdeVP\\x142\\xef\\x04|j\\x9eHH\\x91\\x97\\x10>\\x14}\\xd5 :R\\xbe\\x82\\x04\\x90\\x85\\x92FYD\\xe7V\\xc4\\x01\\xcf\\xd6Q:\\xee\\xf1\\xac\\xe4\\xa3\\xb6\\xfa\\x11LtG\\xb2@\\xff\\x00\\xee\\xe6\\x8f\\xacMb\\xc2\\xf6k\\x19\\xd6\\x1a\\x84I;\\xc9\\xf1\\xa6yTc]\\x99s.\\xdbbW\\xc3l\\xb1\\xc6\\xd9+\\xea\\xd1z\\xe0HM\\xb2Ly\\xa2A\\xdd9\\xe5\\xad}\\xbe\\x87G\\xa1zx\\xdc\\xfc\\xeb\\xff\\x00\\x95\\xff\\x00\\xb7\\xc9\\xeb\\xf5:\\xd3\\xa9f\\x1e>\\xdf\\xfaj\\x11u\\x8d\\xba{\\x1f\\x9c\\xcf\\xec\\xd9P\\xf7&\\xba^\\x9f\\xc1O3\\x1f\\xf9\\x9f\\xde\\xb1\\xdd\\xf1w\\x99r\\xfeoG\\xb3\\xe9\\xc4Yi\\xe7q\\x11\\xc4E\\xc2!\\xa6V.\\xc1eI_\\x9cKc-\\xeeYH\\x8e\\x06\\xbc}|\\xfe\\x1a\\xe5\\xdb\\xd2\\x98\\xcdz\\xfeM]\\xcf\\xaf\\xb7\\xbb\\xd5\\xd1\\xe9|D\\x9d\\xddKn\\xfd?7\\x1a\\xfb7N\\xa2\\xdf\\xae_\\x93\\xecm\\xe2\\x99\\x90\\x10_j\\xedK\\x88\\x1eq\\x9dk\\x8e=N9\\xcb\\x1f\\xd2\\xe1\\xff\\x00N\\xb9t\\xb9\\xe3\\x1b\\xff\\x00\\x17\\xfe\\xd5\\x1a\\xb6\"\\xcdF\\x03\\xf7c\\xd2\\x9f\\xc2\\xbe\\x95\\xf8\\xcc\\xbd\\x9e\\x19\\xf0x{\\xd4\\xfd\\x92\\xc0Y\\xc2\\x9e}m:\\xea\\xcb\\x90\\x83\\xbf\\x19A\\xee\\xaf\\x99\\xf1}k\\xd5\\xd4\\xb3\\xc3\\xe8\\xfc/Ft\\xf7g\\xab\\xdb\\xb0\\x98H\\xce\\xbeu\\x8fv\\xd2\\x92k\\'g\\x03\\xa7}\\x08\\xf4\\x9a\\x96\\xdeG\\xa6\\x81\\xbd\\xd1\\xe3\\x112\\x9cQ\\xafkn\\n\\xe9\\xd3\\xf2\\xc6jv\\xdb\\xf5V\\xf5\\xf3\\x0f\\xbe\\xba\\xfa\\xb9\\x083a\\xb8\\x11\\x9a\\x81 \\xeb\\xa5\\x08\\xc4\\x0c\\xfe\\x02\\x9fD\\xc2\\x9d\"\\t\\x1c\\xaa\\xda H\\x98\\x00E[\\xe1\\x07t\\x00\\xb5z v\\t\\xc8wP\\x91pq\\xf3<\\xe0\\xe6}\\xf5$\\xf5\\x0c\\x8dH\\xd2\\x06\\xf6\\x82}\\xb5\\xaf\\xaa$\\r\\xee\\x14D\\xc1\\xddU\\xa0\\xf1\\x9bk\\xc8NFx\\xeb\\x14^\\n3\\xb1\\xe5\\t\\x9f\\xab5e\\xb5\\x1d\\xc3\\xd0\\xd2wz(\\xd9\\x11\\x11\\xfek\\xb7>\\xb4\\n4\\x9e\\xaa\\xf9\\xd3oh\\xf3\\xc1!E\\xb4\\x15\\x04\\x93\\x13\\x03J\\xc5\\x9a\\xe4\\xc0\\x10o\\x85\\xc3a\\xc6\\xadz\\xad\\xe8QK\\x8a\\xde\\x028\\r\\xd8\\xaayI\\xf5\\xd0<\\x860\\xee\"\\xc6 \\xe2l\\xf0\\xe6n\\x1bQ*\\xeb7\\x1c\\xc8\\xce\\x862&\\xbc\\xb6\\xe3mu\\xe6k\\x94\\xa4:\\xea\\xad\\x18P\\xb3t\\\\\\xa8|\\xa27\\x94\\x02cS\\xa6\\x84\\xf3\\xe1Y\\xb7\\x1fH\\xd4\\x97\\xd6\\x9d\\xe5\\x86CiAq\\xdf\\xa4P\\xe9\\x81\\xdd1Gv\\x9a\\xec\\xda@R\\x88\\xcd\\n\\xff\\x00\\xcc5w\\xd3\\xd9\\x14r0\\xe7\\x94f\\x10\\x07z\\xc5}{\\xd6\\xc7\\xdd\\xe0\\xf9Y\\x03k\\x84]\\xb4\\xa5KR\\n\\xa4\\x11\\x9eS^|\\xf3\\x99xw\\xc3\\x0b#b\\xdd\\x9d\\xc0\\x00uK\\xf5W\\x1a\\xe8/\\x93?\\xfc\\x8b\\x9e\\xaa\\xcf$\\xa2\\xd9\\xff\\x00\\xe4\\\\\\xf5U\\xa4zm\\x9f\\xfeE\\xcfUZ[y>\\x98\\x90\\xa4\\xf4}\\xba\\xe0)_\\xe7\\x16\\x14\\x12\\xa1\\x99\\x1b\\xab\\x12=u\\xac8\\xacd\\xa6l\\xcf\\xcd\\x9a\\xfb\\xa4k\\xdf]o\\x87:r\\x0f\\xcd\\x87\\x89\\xcf\\xd0(\\xb3H,\\xe7\\xc2\\xa2=\\xa2\\x12\\xeb\\x8bJ\\x80 4\\xea\\x87q\\x08Q\\x07.\\xf1L\\x1b\\xd0\\x038\\xcb\\x80\\xa2 \\xef?F\\xf8Nh\\xddT\\x13\\xca* a?\\xa8\\x9c\\xa2g.]\\xaa\\x82_tkR\\xdaV\\x19l\\x8b\\xab\\x87[p\\xee\\xa56\\xb7\\x0f\\x08\\x1cP\\xd2\\x96=\\xa9\\xadc7\\xc2\\xb7Q\\x0cA\\xdd\\x89\\x9ef\\xb37\\xe5\\x15@u\\x9d\\x99\\xdd\\x9c\\xa6\\x99Q\\xe8\\xf3\\x1d\\xf0\\x1e\\xfa\\xa8Ft\\xfc\\xb8\\xfb\\xbc\\r\\x19)\\xb7s\\xf4D7z,\\xd9\\x11\\xff\\x00d\\xda\\xff\\x00t\\x9a1\\xbb\\x8d^\\x1e\\x87\\x16P\\x16.%Z/\\xb1\\xe15Y\\xb8\\xa7\\x94\\x1716\\xee_m\\xa4/\\xabq\\xb5\\x87\\nB\\xb3P\\x1a\\x8ag\\x1c\\xe8\\'\\x8b\\xd4\\x91\\xe6\\xfbj\\xd2y\\xa7\\xb6u\\xa5\\xde\\x8b\\x83\\x89\\xe2A&\\xe1\\xcb\\x854\\x97\\xd4\\x90J\\x94\\x14\\x13\\x92\\x84\\x01\\x11\\x1c\\xb2\\xae\\xddO\\x88\\xebg\\x84\\xc3\\rc5\\xaf\\xd9\\x96\\xdf\\xd6\\xff\\x00X1\\xc3\\twwo\\xde\\xb6*\\xb2\\xeb\\x18m\\x0f\\xdd\\xbc\\xe1H\\x85\\x13\\xf4\\xb3\\xd4\\x89\\xaf\\x17\\xfa{\\xaek\\xbf\\xcd\\x9e\\x90VY\\xb7\\xb6A*Q\\xdd\\x1c\\xc8H\\x1e4\\xe3\\xd0\\x93\\xcf\"\\xf5m\\xf1\\xc0\\xad\\xb8\\xdb\\xed\\xa5\\xdbgw\\x9aP\\xc8\\xa0\\xc85\\xbf\\x95\\'\\x1ag\\xba\\xfb\\xa9)\\x156\\xdf\\xda\\x99\\xb6k_0R\\x85\\xa92\\x81\\xb6M\\x08\\xe1\\x14\\xaa\\xafzr\\xedljc\\x85\\xd3\\'\\xda\\xaa\\xa7\\x17l\\xd5#g\\x9d\\xb3z\\xe8u\\xae\\x93lQ\\x11>N;\\xd4}\\xc2\\xa2`D\\xcf\\x1c\\xa6\\xa5|\\rh\\xe0j\\xe1JQ\\xec\\x96\\x9dG\\xa5M\\xa9#\\xdfF4^Q\\x91\\xc3\\xd1\\xe9\\xabd;\\x9f\\xd0\\xbb\\x1fT\\xfb\\x8d(\\x1c*|\\x86 \\x8d\\x7f\\xb5D\\t\\xa1\\x07\\xce\\x81\\x03#5$\\x9c)\\xf6\\xed\\xaf\\x1cq\\xf0\\xad\\xc5[\\\\47x)m-)\\xf4o\\x11\\xe8\\xadK\\xab\\xc8\\xd6\\xd0\\x93\\xa4G\\x01Y\\x86\\xb1\\'\\xb5\\xaet\\xd4\"A\\xea\\x1d1\\xd9\\xec\\x89\\xef\\x9a\\xbdB%\\xc1!\\xe9\\xfb<(\\xb5ywoEI\\xdd\\xe8\\xc7dG\\xfd\\x91i\\xfd\\xcah\\xc7\\xc3W\\xcbo\\xb4\\x060\\xe3\\xf7\\xd3\\xef\\xa5E9\\x8a\\xf4\\x8d\\x87`;Y\\x88\\xe1\\xd7\\x18v7r\\xe5\\xbb\\x9b\\x8a6\\xa8mh\\xde)\\n\\xcaV\\x0e\\x8a\\x15\\xdb\\x1c2\\xcb\\x19\\xa6s\\xcac\\x7f2[],a\\xae&[\\xd9\\xdd\\xaaX\\xfb6\\xad\\x1f\\xfdJ\\xdf\\xc8\\xeaO1\\x99\\x967\\xc0\\xff\\x00\\xc2\\x85\\xa8\\x02v_l\\x06d~\\xa0\\x83\\xff\\x00\\x1d\\x13\\xa5\\x93]\\xb9{\\x1d\\xfc(\\xd9\\x84\\xa8\\xaff\\xf6\\xb9!:\\x93\\x87\\x0c\\xbf\\xa7O\\xc9\\xc8^<\\xa2\\xdc\\xf4\\xa5\\x84<\\xc2\\xd2\\xe6\\x0b\\xb5)lF\\xfa\\x8d\\x8e\\xe8H\\xef;\\xd9S:\\x19\\xca\\xcf\\xcc\\xc7\\xc4Z\\x96l\\xa2\\xd6\\xdd\\r2\\x08@\\x12$\\xc9\\xcf:\\xf3^n\\xeb\\xacR\\x00\\xf0\\x9a\\xc3\\xab}df\\xd1\\xaf\\xba)\\x03\\xce\\x95h\\x16h[eH\\xe1V\\x83\\xc0\\xf4\\xd7\\xda\\xd8\\xc7\\x0f+\\x86?\\xb7\\x1f\\x1a\\xb4*\\x8f\\xb1\\x1f7\\x06FS\\xf0\\xad2#d\\x06\\x00\\x13\\x9a\\x8c\\xe7\\xaeUl\\x9a2\\x90\\'1\\x14\\x86\\x10=<*L\\x80x\\x1a5\\xa8B\\xb8\\x12\\xcb\\xbft\\xf1\\xee\\xa8#a\\x19\\xd9\\xe8fO\\xbe\\xa99I\\xc3 G\\x03\\xed\\xa8\\x93I\\xc8\\x8f\\x03Hdg1\\x9d\\n\\x9b\\x96\\xa3\\xf0\\xa7\\xc2\\xfb\\x9d#\\xaap\\x11\\n\\xcb\\xb5<\\'\\x95J!\\\\\\x18qR\\x0f\\x98r\\x9a2\\xe5H\\xef.\\x8c2\\xe8\\xd7d\\xff\\x00\\xf9E\\xa7\\xf7(\\xa2x5\\xb1\\xdaC\\x18p\\xfd\\xa2jQ\\xcb{n\\x84\\xbf\\xd2\\x9e\"\\xda\\xd2\\x95\\xa5\\xcce\\x96\\x94\\x92&Am\\x00\\xc8\\xe5\\xad{\\xfa\\x17\\xfd\\xb7,\\xf1\\x97\\xad\\x86\\xfd\\xe2\\xcbN\\xc9`\\xac\\xdb\\xad\\xc6\\xac-\\xd2\\xfa\\x08RT\\x11\\xa1\\x04g\\\\g_;d\\xb5\\xef\\xb8\\xe17\\xacg\\xfc6[5\\x83\\xd9^aB\\xf1V\\xad\\x17\\x9eq\\xe9V\\xe02\\x03\\xaa\\x8fuk\\xe23\\xb8\\xf5;e\\xf6\\xfe\\x8exu8\\xe5&\\xcf\\tcr\\xd1V\\xf6\\xb6iQK\\x8a\\x970\\xd5]\\xc4\\xa8\\xe4\\x02`\\x8fMf\\xe7{\\xaf?\\xcfK=Y\\xcci\\xfa@\\xc3\\xd4\\xd6\\n\\xa5\\xa9\\x0c\\xa7}\\x95\\xb4T\\xc6\\x1a\\xab@IR`\\x10\\xadx\\xd7\\xa3\\xa1\\x9f\\x99\\xfd\\xf6\\xf1\\xf51\\xdeR\\xad\\x93\\x91\\x8c\\xf2\\xaf\\x03\\xb6\\xd4P\\xd6\\x87F\\xf7\\x0f\\xfdM\\xaf\\xbb\\xf1\\xa8T\\xa02\\xa8\\x16*\\x05\\x8a\\x93\"\\xad\\r\\xbc\\'Lh+\\xd8\\xab\\xae0\\xe3\\'\\xfa\\xd4\\xd5\\x97\\x85/*&\\xc4\\xc3 \\x1e\\x04\\x8fuB\\x8a\\xd9\\x1dOv\\xf9\\xf4eQ\\x08\\x1a\\xaa\\x1a\\xd5\\x01\\xe7V\\x92\\xb2\\x88m\\xc5\\x83\\xde\\x94\\x15\\x01\\xe9\\x88\\xa7\\x19\\xbf\"\\x82\\x95L\\x1f\\x85\\x1a:%\\xccn:\\x01%!&\\x0cD\\x88\\xd6\\xa1j.\\x17\\xfa\\x99\\x00F\\xbe\\xf1TR\\xa6\\x1ey\\xd0Rp\\xfbt\\xdd\\\\8\\x85\\xa8\\xa4&\\xd9\\xf7\\x84\\x0e(mK\\x03\\xd6\\x9a\\xd4\\x9b\\x16\\xe9\\x14\\x19\"g\\xddAb\\xa3\\xadPI\\xc8\\x1c\\x89\\xcaG}^\\x80\\xef\\xe2\\xd7\\xcb/}I\\x06\\xec\\xf6\\xd7\\xc3\\xb0}\\xd5_u/.\\xf7\\xe8\\xd0GG;*9a6\\x9f\\xdc\\xa6\\x89\\xe1T\\xed\\xa6\\xfdA\\xbf\\xda\\xa7\\xdciQ\\xcb\\xf8\\xeb\\x8bWK\\xd7A\\xb9\\x9f\\xf2\\x85\\xb4\\x9d\\xd9\\x98\\tO.\\x15\\xec\\xe9k\\xe5\\xb3\\x7f{\\x8f\\xde.\\x95u\\xeb\\xb6ZP\\xa2\\x95\\x1c\\xe5@\\x90 \\x82}\\x80\\xd7\\x8e[\\xdd\\x1e\\xdc\\xa4j\\xf0\\x17\\xc8\\xc1\\xd9`\\xdd\\xba\\xa7n\\x97r\\xeb%A!IIZ\\xa1)\\x81\\x10\\x91\\xa4\\xfaf\\xba\\xfcF7\\xbe\\xfe\\x8e\\x1d;$\\x17\\x0f\\xb7d\\xe1\\x98k8\\x8b\\x8e\\\\\\x8bvT\\xda\\xee\\\\`\\xb8\\xe1\\x83\\xe7v[\"Lf;>\\x9a\\xd6;\\xdd\\xb1\\xbb\\xb9\\x8bQ\\xb5\\x0f[\\xa1\\x17\\xb6\\xb6\\x81\\xbe\\xa1%\\x9d\\xc2Y\\xea\\xd4w\\x94\\x80A\\xc8{\\xab\\xd7\\xd3\\x97\\xb3\\xba\\xbc\\xd9[r\\xd2\\xe2^N/\\xc4\\xd7\\xceiD$\\xd5\\xa6\\xdb\\xec2<\\x89\\xbf\\x03\\xef\\xa5%\\x8e\\x15h\\x17\\xc2\\xa0E\\x05\\x98\\xdd^\\xeey\\xe53V\\x96\\xce9R-x\\xbe\\x96S\\xbd\\xb1\\x97\\xb2@\\x03\\xaa9\\xe9\\xfadQ\\x94\\xe0O*\\x06\\xd3\\xf4fx)B\\xb3#B7\\xfa#\\xfbO\\x85^\\x141)$\\x88\\x8d&\\x89\\xc8\\x16\\xd5\\xce\\xa9\\xd5(\\xc8\\x96\\x9cD\\xfd\\xe4\\x11\\xf1\\xadcV\\xb6\\x024H\\xf4P|\\x18\\xeeM.>\\xa9\\xf7U\\xe4#\\xe1YY\\x9c\\xf8\\x9fx\\xa9N<\\'\\xa5\\x1fK\\xe8\\x82\\x07\\x8d\\x1c\\x91\\xac\\x9e6\\xf7.((\\xa2Yy\\xac\\x8e\\xa1HRH\\xf6\\xc5jQ\\xe5\\x14r\\xcbJ\\xcc4\\x89\\xd4r\\xd6\\x95\\xa1\\x00=R\\xf2\\x84\\x92\"\\xaa\\xb4\\xd7^\\xab7f\\'\\xab:\\xf8UC\\xbe\\xba:V\\xefG\\xdb.7W\\xff\\x005Z\\xfd\\x1f\\xf5I\\xac\\xcc\\x8e\\x92\\xf6\\x91`\\xd9\\xb4!@\\xf5\\xa3Q\\xdci\\x97kNW\\xc7\\x9fm\\x8e\\x95\\xaf\\xee\\x9cp%\\xb6v\\x84\\xb8\\xe1\\x070\\x80\\x06g\\xbb*\\xf6\\xf4\\xa6\\xfazgruq\\xb5n\\xdamN\\x05\\xbc\\x80q[U\\x15\\x10\\x02z\\xdc\\xd5\\'A^o\\x93\\x9e\\xfc=\\x99e\\x8d\\xf1c\\xc9\\xe1\\x1bkii\\x87\\xb1\\x86:\\xff\\x00\\xf9\\xc7\\xca\\x17j\\x85\\xf9\"\\xc2\\x03\\x8bR\\x8a\\x12D\\xe7\\x00\\x89\\xcc\\x03\\x9cW\\xaf\\xa9\\xd3\\xee\\xce\\xda\\xe1\\x86\\xb1\\x9az\\xec\\x16\\xf1Ij\\xdd\\x17,\\xf9E\\xcbaM/\\xa9p[\\xa5N%FBJ\\xddI\\x1a\\x18\\x04\\x1c\\xb8\\xe4g\\x97e\\x9bt\\xcb\\x98\\xd3\\xede\\xc0{\\x1bXS+mKv\\xc5\\x1d[\\x8f\\x07H%\\xd4\\xfd T\\x0f\\xaf\\xba\\xbdXc\\xae\\x96\\xfe\\xef\\x1d\\xcaw\\xd9\\xf4]\\x0e\\x1f\\x95^\\x7fH\\xfb\\xeb\\xe6\\xba(\\x94wV\\x9aop\\xcf\\xd4\\x9b\\xf4\\xfb\\xea\\xd0\\xda`\\x14\\x83\\x87\\x8dH\\xec\\xaa\\xd04\\x91:M\"\\xd7\\x8e\\xe9hN\\xc3b\\xb04e*\\xf5:\\x83F\\\\\\xc5<\\xb9\\xfe\\xd7E@3\\xbek\\x9c\\xbbn\\x9c\\xda\\xfeI@ps\\x9e\\xb2*\\xa8\\xd1\\x91\\x914\\xc8\\x0b\\x90\\x11\\x14kI\\x80I\\xcef\\xa4\\x1b\\xc9\\x1dJ\\xf9\\xee\\x99\\xf5T\\xb4\\x8d\\x85\\x90m\\x8er\\x0c\\xfb\\xc5_u\\xa4\\xfd\\x12\\xa1\\xc3\\x8dK\\x93c>3U\\xf2a\\xba\\x1c\\xa7\\xd3H\\'\\x84\\xe4h\\xd28\\x91\\xd4\\xaf#\\xbd\\xbc$\\xf0\\xf5Q\\xb2\\xd6_IS\\xa9L\\x02P@\\xf5V\\x83\\xaf\\xb6;\\xa6~\\x8f\\xf0\\xed\\x90\\xc0\\xac\\xae\\xf6\\x81\\x08\\xba\\xb7\\xb0a\\x97Z\\x16\\xaf\\xa8\\xa1Im \\x83\\xba\\x83\\xa1\\x06\\xb9\\\\\\xa4\\xf2\\xd7mz\\x0b\\x1e\\x90vgmC\\x96\\xfb5\\x89*\\xed\\xebE!\\xd7\\x90\\xabgY\\xddB\\xa5 \\xf6\\xd2\\x99\\xcf\\x95k\\x1b\\xbe`\\xb3\\\\W>\\\\\\xdf6\\xdfH\\xfbN\\xa7\\xd3\\xbc\\xd1\\xc4n}0\\xa1\\xdd\\xdd^\\xfe\\x978\\xe9\\xd3\\xa3\\x94\\x99\\xdd\\xfb\\r\\x89\\xb7k~\\xb6\\x16\\xc2\\x8am\\x14\\xc8[\\xe9\\xddL\\xa0\\xa5\\xc0\\x81\\xbb\\xdf\\x98=\\xd1M\\x96\\xeaZ\\xf4\\xdce\\xb6\\xc0\\xac\\xac\\xf0+\\x9cA\\n{i]\\xb3\\xc4\\x14\\xfc\\xa6\\xc7\\xa9\\x1dfK\\x94\\x8d\\xf1\\x90\\x90\\x01\\x1a\\xc5t\\xba\\xbcW\\x97s\\xbd\\xedC\\xce\\xdf\\x9b\\xa7p\\xe4\\xd9:\\xfb\\xce\\x94(8-\\xc4\\xa2\\x0c\\xab\\xe5L\\x12Lf \\x8f\\t\\xaf62\\xf7]\\xef\\xf9\\xbd]K$\\x88\\xeb\\xb5~\\xd3\\x14\\xc1\\x99\\xbbd2\\xa7\\xf1\\x0b\\x14\\xa1!M((u\\xd9\\x90[%<+\\xd7\\x8e[\\xe8\\xd9\\xed\\xbf\\x7f\\xee\\xf9\\xbdY\\'W~\\xf1\\xd0\\x8a2\\xb5\\x1f\\xb4k\\xe6\\xba(\\x90\\xa1\\xc4\\xd6\\x9a\\xad\\xe6\\x16\\xb4\\xf9\\x1a`\\xfd#P\\xa9}jj\\x0c\\xeb\\x87u[\\x1a5W\\x00\\x03\\xc2\\xad\\xad\\x06n\\x84\\xf9\\xc2\\xad\\xe9i\\xe6zI\\xdd\\xb9\\xd8Lx\\xef\\x90Qf\\xa3\\x11\\xafi\\'\\xe1Y\\xb7fM9\\xf2\\xd8\\xe4\\xaf\\x13X\\x9a\\xbc\\x1a\"\\x0f\\xc9\\xb9\\xa9;\\xe3\\xdcjP,\\xa7*F\\xd2,\\x19\\xf2\\x9b\\x94\\xb4V\\x11(q[\\xdfu\\nTzwc\\xd3L\\xe7\\x85x\\x01\\xb5J\\x12y\\x80t\\x8a*\\x9c\\xb2\\xe0\\x00\\x1c\\tV\\xf2 \\x80b\\'-j\\xf2Qp\\xc3\\xf3UD\\xea~\\x15}D\\xfa%\\xcf\\x88\\xee\\xa0\\x8dj\\xcf\\\\\\x9b\\xa3\\xbe\\x12Y\\xb7[\\xe2G\\x9cRR7|s>\\xaa\\xd6\\xb6\\x00\\x98X\\x04\\xc0\\xe6\\x06\\x94i\\x1aL8`\\xef\\'{#\\xa4\\x8a\\xb4\\x84\\x91\\xe4\\xee\\x00>\\x92F\\x7f\\xce\\xa3\\\\\\x9d5w\\xc4\\x82\\xfcL\\x84\\x1fuhWkl[hcdp\\r\\xd6\\x1b\\x07\\xf3m\\xb1*\\t\\x19\\x9e\\xa99\\xccW\\x82\\xe37k\\xd33\\xe277\\x0e\\xf5\\x85\\x1d\\x93\\xd9\\xaf.G$\\xc0{S\\x98\\xad2\\x189\\xe7\\xaf\\xb2\\x94#\\x00)\\xf6\\x92\\xa9\\xdd&\\rH\\xc4\\xa8\\xee\\xe8f\\xa2W\\xa0o\\x04\\x93\\x11\\xcb=)\\x08\\xb8j\\x8f\\x92\\xa8N[\\xc7\\xe1W\\xaaJ\\x04\\xc1\\xd4\\xfc(SpVP\\x95\\x07\\xf7\\xd4S\\xba\\xd2\\x96\\x88\\x1a\\xa8\\x11\\x00\\xfa\\t\\xaa \\xc6n\\x00t\\x98\\x9eB\\xa3\\xe4\\xc0s:\\x114\\x88\\'\\xf1J\\x81\\x96\\xf8\\x1e\\xc3F\\xd3]}!\\xab\\xaf\\xd9\\x9fun3\\xea\\xfa=\\x86\\x8d\\xdc>\\xd9<\\x9a@\\xfe\\x88\\xa3?\\xda\\xab\\x1f\\x11\\xaa\\xda\\x9dm\\x7f\\x9f\\xf0\\xa24\\xac\\xfaEi\\xbb^\\x8b1\\xf7\\n\\xc0+, \\x95\\x10\\x04u\\xe8\\x81]1\\xe7(\\x14Kx\\x97V\\x8d\\xc6\\xee\\xdb\\x08\\xe5\\xbc\\x9e5\\xe9\\x92\\xb3R\\x11\\x8a\\xac\\x88\\xf2\\xd6\\xf3\\xe4Q\\xf8S\\xdbF\\xc5{\\x10\\x17*I~\\xe9\\xa7\\x14\\x9c\\x81\\x94\\x8fuRi\\xa5\\xdb\\xd1\\x9e\\x18\\xc6+\\xb0XKo8\\xb2\\xcf\\\\\\xfb\\x85( \\xa5\\xcf\\x949\\x1fV\\xa3J\\xe5\\x96W\\x1c\\xb6\\xce<\\xacK\\xb6\\xaf\\x96\\xb4\\x9b6\\xd9Sa0K\\x84\\xcc\\xc9\\xff\\x00\\n\\xf2\\xe5/\\xa3\\xa4\\xd7\\xab\\xc1\\xa1g\\xd9_9\\xf4\\xe8\\x89_3H\\x11*\\x11S\\'\\xef@\\xcf\\xd5H\\xa4\\xde\\x9c\\xe9\\xd0=\\x07\\x95@\\xb7\\x89\\xeb0\\xdb\\xe4G\\x9dj\\xf2c\\xc5\\xb5S<\\x8a\\xe3+E\\x13j\\xc6\\x7f@{\\xab\\xd7\\x1el\\x85F}fY\\xe5\\xa7\\x8d<\\xb2b@*\\x19\\xe4i\\xda\\x16\\xd9a\\xbb\\xb6\\x94N\\xeaR\\xa9\\'\\x952\\x8f!7\\x90H\\x83\\x95\\x08\\x8e\\x1e\\xc1\\xe1\\x97\\xc2\\x98\\xb7\\xb4l4\\x9f\\'P\\x8e\\'\\xe1V\\x92h\\x19\\x15O\\x18\\xa3h\\xf6\\x17\\xba\\x8b\\x89\"T\\xc9H\\xcb\\\\\\xd3\\xf8S\\xea\\x82\\x9c\\xc8\\xd7\\xd1R5*\\x93\\x94\\xd0!\\xe4\\xc5\\xb9\\x9d7\\xc4O\\x85>\\xa5\\x02\\xf0\\xfc\\x95\\xc8\\xfb$i\\xa6U\\xb9\\xe63_IXN\\xeb(O$\\x81\\xec\\xacewm8\\xf8\\x8d&\\xd4y\\xd6\\xbe\\x0b\\xff\\x00\\x86\\xa8Z,5\\xc4)\\x85!iB\\x90NiZB\\x81\\xf4\\x1c\\xabV\\x04\\xe4\\xb7l\\x7f\\xd1\\xad?\\xdd\\xd1\\xf8S\\xa0xf\\xd7\\xfe\\xabi\\xfe\\xee\\x8f\\xc2\\x94U1k\\xff\\x00U\\xb4\\xff\\x00wG\\xe1R\\xd1l\\x92\\x84\\xbc\\x10\\xdbhBD\\xc2P\\x90\\x91\\xea\\x15_\\n7\\xf6C\\xe4=&\\xb1J\\x9eaA`B\\x8cx\\xd7\\xcc}T\\xa4G\\xa3\\xbe\\x96h\\xc8\\xef\\xf5R\\xc8\\x84~\\xe2\\x99\\x05*if\\x8a\\x93\\x15h\\x0e\\x91\\xbe\\x87\\x11\\xf5\\x9bZ}i\"\\x9d\\n\\xe2\\x9b2<\\x91\\x90N\\x89\\x00\\xd7\\xa7\\x17\\x9f!\\x87\\xf1\\xa7\\xb8\\x1fh\\xad\\xb2\\x19\\xef\\x06\\xa9\\xe4\\x16F\\x91\\xdfJ:\\x12\\x0f\\x85\\x1e\\x88\\xd5F\\xe9\\x02\\x01\\x8f\\x851\"a\\x92m\\xcc\\xf7\\xe5\\xea\\xa3z\\xa97M4\\xa6{\\xa2\\x11\\x07J\\x97,;\\xb2s\\xf8PM\\x073\\xdcr\\xa6\\xc1\\x0e\\xde\\xf9\\x08\\xfa[\\xf3\\xec\\xaa\\xf9HWQ\\xba\\xf8\\xcf<\\xabx\\xee\\xd8\\xc6~6\\xfaP+\\x9bq\\xe7v\\xac\\xfc\\xa5\\xb0\\xfb+\\xff\\x00\\x86\\x98\\x9a\\x9c\\x1a\\xdc\\x1bi:\\x92kI\\xb3K\\x02*\\x07\\x86\\x05H\\xe2\\xc8\\x8a\\x90v\\xa9\\x02\\xe0\\xf8V\\xaf\\x80\\xdfY\\x8f\\x9b\\xa7\\xd3\\xef\\xaeyy*a}\\xa7C\\xad\\xa7u\\xb7\\x80t\\x0eS\\xa8\\xf4\\x19\\x15\\xf3p\\xbd\\xf2e\\x1fW9\\xdbn>\\xc9l\\xf2\\xad\\xe9\\x8d\\xa5&\\x7f\\xfe\\xd3\\xa6vti\\xddN\\x99\\xd8\\x89\\x03.}\\xf5\\x01\\x122\\xa8%Zf\\xfa\\x01\\xe2b\\x90\\xe2Kt\\x94\\xa0\\xa0}\\x15\\x11\\xed\"\\xbd8\\xbc\\xf4T\\x8e\\xd3\\xbd\\xe8\\xf8\\x8a\\xd5\\x01\\xf1?\\x0c\\xea\\xf4\\x022\\x99q\\xb0\\xa3\\x91P\\x07\\xd7LF\\xc7h\\xeb\\x00\\xd1\\xce\\x89\\xaa\\x19+1\\xa7\\xae\\x99\\xb1b.\\x10>lfu3\\xec\\xa2\\x9f\\t\\xaa\\xcf\\x80\\x9a\\xa2c)\\x0b+\\x92rmJ\\xc8q\\x15\\xaa\\xc9\\x93\\xdec\\x85\\x04\\xc1\\xa9\\x9dj\\xe3C\\xc9\\xff\\x00D\\xf8\\xf2\\xaa\\x94;\\x82\\x07Zb@ \\xf1\\xd2Ek\\x1b\\xccg)\\xc5}(B\\x82\\xd2\\x14\\x92\\nH\\x90Eb\\xb4\\xf3\\x9bV\\xaf\\x9c[\\x8c\\xbfF\\xafx\\xadO\\t\\x1b\\x07\\x1f4O\\x89\\xa86B\\xa4\"iDUI\\x1e\\xdf\\xf5\\x85\\x9e\\xea\\xd5\\x11\\xbc\\xb4\\xca\\xdd\\x1e\\x15\\xca\\xf9iQ\\xb8\\xa6\\xee\\x91\\xe5L\\x14\\x96\\xddH})I\\x90\\x8d\\xec\\x96\\x9fB\\x87\\xa8\\xd7\\xca\\xf8{&\\xf1\\xf4\\xf3\\xff\\x00\\xaf\\xd2\\xbe\\xa6yw\\xe3\\x8es\\xedNhG\\n\\xf58\\x8e\\x92\\x07\\xe3P\\x1a\\x8d\\xaa \\xde\\xb5\\xcc2}\\xf44f\\x12>h\\x8aS`\\x9a\\x81\\xe2\\x94E\\xe9J\\x02\\xdb7WU\\x11\\xbd\\xb7\\xc9\\x86\\xfe\\xe8\\xacV\\x94\\xa6\\t\\x81\\xe3\\x18\\x1d\\x8c\\xe3X\\xca\\xb1;\\x8cE\\xa4\\xba\\x94\\xa5\\xa0\\xd3l%9\\x90\\x94\\x8dw\\x81\\x19\\xf7W\\x8aI\\xbe&\\x9e\\xd9\\xa95\\x13\\xd0x\\x8a\\xd2\\x14\\x11\\xe8\\xa8QS\\xc3\\x95@D\\xe8hT@3\\xa4\\x0fk\\x95\\xcb\\'\\xed\\xa7\\xde*N5\\xc6\\xd3\\xd4\\xed\\x16.\\xd8>m\\xed\\xc7\\xa3\\xe5U^\\x8cf\\xdez\\x02Vw\\xd5\\x07 \\x92D\\xd6\\xb9\\xd3!\\x8d\\xe0\\x02\\x88;\\xa6`\\xf8TH\\x14&3\\x1cj\\x80\\xbb\\xc2D\\xf0\\xca\\xaf+\\xecE\\xa8n\\x1eziL(XQ\\x1eL\\xb8#%\\x1e\\x11\\xca\\x8b\\x12f\\xfac\\xbc\\xf3\\xaa\\x06o\\x89\\xd4U\\xa5\\xeaBF\\xf6\\xb5z5)\\x92\\x04\\x9c\\xb9kK\\'\\xb6V!i\\x82\\x12|b\\x82\\x88\\xf3\\x8b~\\xedkZ\\xb7\\x96\\xa7\\x11$\\xeb\\xe7S4\\xce\\\\\\xc7|l\\xbe\"\\x94\\x8b\\x9bu\\xa8\\xa7u\\xdd\\xe4\\xe5\"\\x08\\xcf\\xddU\\xbag\\x1f\\x07\\xed\\x0b\\xa5\\xcb\\xa6\\xca\\x88\\x90\\xc8\\x98\\xe7&\\x96\\xe0\\xb8_\\xea\\xa8\\xa9\\'\\x03P8\\x1aQ\\xae\\x1c\\xa9@\\xda\\x9e\\xda\\xcdTF\\xf5\\x89\\xea[\\xd7\\xcd\\x15\\x8a\\xd2\\x84\\xc2\\xf1\\x9ca\\xfcQ\\xb5\\xb5\\xb2\\x0cavE_(\\xfe!\\x88\\x07_\\xdc:\\xee4\\x89\\t=\\xc4\\xc5p\\xb5\\xeb\\x9e\\xcd\\xebr+\\x14\\x8e\\x91\\xdf\\xe3T\\x03 T\\x86@\\x11\\x1c(B\\'\\xbb:\\x83\\xcf\\xe3\\x1bk\\x81\\xe1\\x08\\xbc&\\xfd\\x87\\xef\\xed$y\\x1a\\t\\xdfS\\x83D\\xe9\\x1a\\xc4\\xe7F\\xe6\\xf4\\xdf\\xcb\\xcf[\\xd3\\x941\\'\\xdd\\x7f\\x1c\\xc4\\x1d\\xb9HK\\xef\\\\:\\xeb\\x81\"\\x00R\\x94U\\x90\\xe5\\x9eU\\xe9\\xc6\\xcfG\\x939e\\xd51\\x0b\\x1db\\x8e\\x87t\\xfb\\xab@\\xce\\xb0\\xf9\\xb2bI\\xf6T\\t\\xbd\\x97x\\xcef\\x9e\\x16\\x8e\\x90r\\x91=\\xf5z\\x1f\\xa1\\x15\\xa1\\xf3}\\xf4*\\x85\\x85\\x91\\xe4\\xebH\\x8f8\\xf1\\xf0\\xab\\xc2\\xd2l\\xaa;$\\x0fN\\xb5x\\xf2\\x08I\\xe1\\x07\\xd3R=\\xd6\\xd6\\xcb\\x85.\\x00\\x95@>p:\\x89\\xa3\\xc4!O\\xa3=\\x01\\x02\\xa8\\x8b\\xbcBs%):\\xe7N\\xd2+pn\\x80\\xe6\\xfbc^j\\xa7\\xd4d\\xed\\x1c.\\xe8\\xa7\\x11u\\x06HZT\"s$f#1\\x9eU\\x9c\\xfc3\\x87\\x15\\xb6}\\xe2u^\\xff\\x00d\\t\\x19s\\xe1V\\x1e\\x1b\\xad\\xc6\\x1a\\xbf\\x9a\\xb7\\xe1[\\t\\xa1u\\x03\\xc2\\xeaF8\\xac\\xa9AZ*B\\xe9\\xa27\\xc9 %;\\xc9\\x9c\\x84@\\xee\\xac\\xe8\\xa9\\xd4\\'J\\xf3=\\xa9H\\x12$\\x9a\\x10\\xa9<*\\xd0\\x199\\x19\\xa1\\n\\x93\\x1e\\x14&\\x93m\\xf1\\xa70\\r\\x96\\xbd\\xc4-\\xc4\\xbe\\x9d\\xd6\\x9bTN\\xe2\\x96wB\\xa3\\x8cL\\xd5\\xcd\\xe25\\x84\\x97.T5\\xb5\\xf5\\x8a|\\xa3\\xcb\\xad\\x97z\\\\l\\xa5\\x1b\\xce\\xad\\xa2\\xdb\\x93!\\xc9O\\x9cgPr5\\x9f\\x95\\x93\\xd9l\\xcb\\xd5\\xa0\\xbe\\xc3\\xad\\xae\\x9cS\\xab=\\xb0\\t\\xdeAR\\x15\\xa4\\xc4\\x8aq\\xc7\\xa94[\\xe8\\xc5^\\xcd]\\x16\\x1di\\xd9\\xcd*\\x06u\\xe3U\\x9b\\x8ayzP\\xb5\\x06\\xc9W\\x9d\\xc7\\xc7\\x8dg\\xa7\\xe1\\xd3//C\\x87+\\xe6\\xad\\xe7\\xc2\\xb6\\xcabUR\\x11*\\xa5\\x1a\\xea\\xb2\\xa6#,\\xfc\\xd5UDn\\xb7\\xd6\\xa8,\\xac\\x84\\xc4F\\xe09\\xd5\\xa4\\xa9\\x1a\\xcd\"+\\xc8\\xf6\\x8e\\x83\\x9et!:\\xc0\\x06f\\xa4\\xc5]\\xb6\\x8c\\xd4\\xa09\\xd6R\\x03\\xf8\\xfd\\xb2\\x1c\\xea\\xdbQq\\xd3\\xa2\\x1b\\x05J\\xf5\\n3\\xa9\\x9e\\xab\\x9f[<\\xbaRe\\x14\\xe1\\xce>Qq\\xf7Ez\\xbf\\xd3\\xcfw\\t\\xf1\\xd9{\\x13t\\x91\\x1dq\\x19\\x10e\\xb0~5_\\x87\\xfa\\xb5\\xfe\\xbb/f\\xba\\xdb\\x05e\\x84\\xee\\xb7p\\xa2\\x00\\xfaH\\x1f\\x8d7\\xa2\\xf3\\xfc\\xdd\\xa4~nA\\xc8\\xa9\\xa5}\\xe6\\xa8\\xf9W\\xdd|\\xc8\\x1b\\x98C*$\\x84Z\\x85s\\xea\\xa0\\xfb\\xa9\\x9d<\\xbd\\xd7\\xcc\\x94\\xdf\\xcdYD\\xb1\\xea?\\x85_/%\\xdf\\x08\\xac,\\x9e\\x16\\xfe3\\xfe\\x14|\\xbc\\x8f|1XZ\\x8c\\xfc\\x9b\\x06u\\xcf\\xfc)\\xf9y\\x0e\\xe8a\\xc2N\\x7f \\xc1\\xf0X\\xab\\xb3#\\xb9NN\\x14\\x80 \\xdb\\xb6\\x0fr\\x85W\\x1a\\xbb\\xa0\\x0e\\xe1R\\xac\\xad\\xd1\\xaf\\xd6\\x15vS\\xdd\\x03V\\x14G\\xfa8\\x8e\\xe5\\x0f\\xc6\\x8e\\xdb\\xeb\\x19\\xee\\x9e\\x86\\x8c(\\x05\\x93\\xe4\\xc7\\xc6r\\xf7\\xd5\\xdbZ\\xef{\\r\\x86\\x16\\xd8u\\xe2\\x0b\\xabE\\xb0\\x99R\\x94\\xbd\\xdfmf\\xe3}\\x86\\xfe\\xab\\x16\\xf3\\x13\\xb0U\\xbb\\x89g\\x17\\xb6*\\xdd;\\xb1v5\\xe1\\xc6\\xa9/\\xb2\\xf2\\xb7n\\xee-\\xae\\xecm1\\x0bd\\xb6\\xdb\\x17\\x96\\x8c\\xdd\\'p\\xf6{i\\x9c\\xa8\\x93\\\\:K\\xb9\\xb6\\xca\\xc9`[7\\x1fTT\\x92\\xc3\\x82\\xa0\"\\x1c\\x14\\xa3\\x1dX\\xdd1J>\\xc0\\xf6\\x0f\\x8dU&\\xb7r\\xad\\xd9\\x0bL\\x1e\\'9\\xa0*g1\\x06Xl\\x95\\xad)\\x81\\xa91^{\\x1e\\xcd\\xb5\\xbf\\xe5\\x07\\x958[\\xc3-\\xdf\\xbdp\\x1d\\x18A_\\xac\\xe8=u\\x9bd2Z\\x9fm\\x86m\\x06!\\x9b\\xaa\\xb6\\xc3[<\\x1cWZ\\xe7\\xfb)\\xcb\\xd6k\\x17?f\\xbb\\x1b{=\\x91\\xb1J\\x82\\xf1\\x0b\\x8b\\xbb\\xf5\\xf1\\x0b_V\\xdf\\xfb)\\xf8\\x9a\\xcd\\xb6\\xb51\\x91\\xe9,m\\xad\\xec\\x9b\\xdc\\xb2\\xb6f\\xd9\\x1c\\x9a@L\\xfax\\xd6t^\\x17\\xa7\\x94\\xcfG\\xbb\\xe7=\\xccB\\xdd^\\xbd\\xe1\\xf1\\xafO\\xc2~\\xf1\\xe5\\xf8\\xbf\\xdd\\xb9\\xe6u\\xe0\"\\xbe\\x93\\xe7\\x14\\x1f\\x0f\\x0eT\\x89tp\\'_\\x8d\\x06\\x1c\\x0epO\\xb2\\xa4t\\xcf\\x1f\\n\\xb4Xg\\x85D\\x84\\x98\\x9c\\xc7\\xa6\\xa0BH\\xa8\\x10\\x9c\\x8dD\\xc9\\xce8\\xd4u\\xeaI\\xf5\\xd0vf\\xb9\\x8a\\x845Yhc\\x84T\\xb6\\x90\\xd6\\x1a\\xe3\\xb8{\\x97n]Z2\\x95Jm\\x9b=\\xb58\\xb1\\xae\\xf4y\\xa3\\\\\\xf3\\x88\\xcf\\xbf\\x86}~\\xdc\\xb5#\\xbe=\\x1e\\xe9\\xdd\\xb6\\xb1\\xc8\\tY\\xddI \\x1d3\\x1e\\x83\\xcb\\xbe\\xbb\\xe3w%p\\xb3WN\\xab#\\xf3/D8&7v\\x10l,0;\\'\\x1cJ;K\\x84\\xb6\\x99\\x84\\x98\\x073\\xccW\\x9b9\\xbc\\xab\\xbfN\\xeb\\x18\\xf6\\x168U\\xea\\xadZq\\xb2\\xce\\xe3\\x89\\x0e\\tp\\xcc+>#\\xbe\\xb38\\xe1\\xae\\xed\\xf2\\x960\\xab\\xeeM\\x1f\\xfb\\xcav\\x8e\\x18]\\xef\\xd5G\\xa1b\\xae\\xe4\\x05\\xdd\\x8d\\xdd\\xbd\\xbb\\x8f\\xba\\x81\\xd56\\x92\\xb5\\x90\\xa0`\\x0c\\xc9\\x8afKO+\\xb2\\x18\\xdd\\x95\\xd0\\xb9\\xc5[\\xda?-\\xc3\\xafR|\\x91\\x0baL\\xa5\\x00\\x13\\x98\\xde\\x00\\x93\\xa8\\x9e M\\x17,g\\x0b\\x9a}\\xb6(\\xe2\\x1a\\tN\\xf2\\xe3\\x8c\\xcf\\xb5\"\\x0f\\x8dq\\xef\\xad\\xf6\\xc7\\x9e\\xb7\\xd9\\xfc1\\x95%n0n\\xdd\\x99\\xdf\\xb9Q^~\\x1a{+\\x85\\xce\\xe4\\xf6Ldo\\xd8X-\\x04 \\x04$e\\xb8\\x91\\x00z\\x05e\\xa4\\x86\\xcc\\x1a\\x82b\\x15 T\\x92\\x1b4\\'\\x87\\xe9\\xc0\\x05ti~~\\xa5\\xcd\\xb2\\xff\\x00\\xac\\x03\\xe3^\\x8f\\x85\\xbf\\xee\\xcf\\xd7\\xfa<\\xff\\x00\\x15?\\xdb\\xb5\\xce\\x13\\xcf\\xdf_Q\\xf2\\xfd\\x0e\\x1aiQ\\xd1\\xe3N4\\x1dh\\xe8\\xce8x\\xd5\\xb5\\x0e\\x139MGLW\\x85H\\xd5P\\xa9\\x84\\xf2\\xe3HaV\\xbd\\xd5\\x1d\\xd3w\\xa0\\xe9\\xfe5X\\xa1\\t\\xcb*\\t\\xa7>\\xf1P\\xfb\\x1aj \\xba\\x94\\xab\\xceJO\\x88\\xce\\xaf\"\\xda\\x0b\\xf9\\xb4\\xe0\\xd3\\xb2}\\xc6\\x91\\xe2:\\x1b\\xa4}\\xace\\x8f\\xc9\\xcdVO[-\\xb5\\xb9\\x85ZZ!A`\\x82\\xa2\\x11\\xdd\\xc8\\x13^Kw\\x95z0\\xf1\"\\xdd\\xd9\\xfd\\xa3f\\xfd\\xcb+T[8\\xdfYn\\x95%eiRd \\x18\\xe7\\xa4\\xe7\\xddY\\x97fp\\xf4At\\xa2\\x85\\xf1\\x00\\x93\\xc8q\\xa0\\xbc>\\xd5m\\xe6\\x1do\\xb1\\xf8\\xc5\\xd3\\xcc]\\xb4\\x13f\\xe9\\x95\\x04dJH\\x1a+\\x99\\x15K\\xce\\x8c\\xf2\\xd2\\xf4\\'\\x8b\\xe1\\xaete\\xb1\\xf8U\\xd5\\xba\\xd6\\xa5Z\\x84\\x02\\xe3i[{\\xd2\\xae3\"N\\x99q\\xa2\\xd9\\xbd3<=\\xbb\\xfb/\\x86\\xb8\\xb0[7,$\\x08\\xdci\\xd2\\x12=\\x04\\x1a.\\x11\\xbd\\xd79tw\\xd2cx\\x92\\xd9\\xc2\\xb6\\x99\\xd6\\xd8\\xc4\\x15\\x08f\\xf9P\\x86\\xae\\x0f\\x04\\xb9\\xc1\\x0b<\\xfc\\xd5w\\x1dy\\xe7\\xd2\\xd78\\xbd8u{\\xb8\\xbeV\\xbaB\\xd9Y\\x0e%A@\\xc1\\x04i\\\\]S\\x13\\x04\\x024\\xa1$2\\xbe\\x06\\xa4\\x98\\xca\\x16\\xac\\xc2Ls9T\\x9eG\\xa6F\\t\\xe8\\xc7\\x1cQVh\\x0c\\xae\\x00\\xe4\\xf2+\\xb7\\xc3\\xfe\\xf7\\x17\\x0f\\x89\\xfd\\xd5s9\\x1e\\xff\\x00\\x1a\\xfa\\xaf\\x95\\xa3\\xc2r\\x102\\xa1\\xae\\x04\\t\\xf1\\xa3d\\xe0\\x90\\x0esJ\\xd1c\\x9eT&NS\\x99\\xa8\\x84\\xb3\\x94zj\\x17\\x98\\x1a\\x8c\\x1dMh\\x1aU\\xacQ\\xa4@}DgU0\\xa0\\xf2\\xcf\\xc2\\x83\\xb6\\x03\"\\x8b\\xc9\\x84?\\nF\\x83sOeCH\\xd7=\\x86\\x1dV\\xe80\\x82c\\x9eT\\xab\\x1d7\\x8atk\\xf9\\xdfd\\xadp\\xcb\\xfd\\xa2\\xbbU\\x9b\\x8c2J\\x05\\x93;\\xc9\\x84\\xa4\\xa4\\x05e\\xa6\\\\+\\xc3k\\xd51\\xe1\\xeb\\xb0\\x9d\\x99\\xbe\\xb2\\xbe\\xb1\\xb8\\xfc\\xfe\\x87\\x11n\\xe2T[\\xfc\\xdc\\x84\\x17\\x12\\x04n\\xef\\x05\\xe5#\\x88\\x14\\r=\\x9f^)\\xd9\\xd1\\xe9{9\\x1a\\x8a\\xb6\\xb4\\xf0\\x1bY\\xb0W\\x18\\xd38\\xa5\\xbbX\\xc5\\xb5\\xb5\\x8d\\xe8P\\r*\\xc9KSAZ\\x80\\xa0\\xb0\\x0ert\\xac\\xdb\\xce\\xda\\x98\\xa2`]\\x1c\\xe2\\xb86\\x03g\\x86\\xd8c\\x18j\\xd3j\\xd0m\\xb7Wd\\xe2U \\xc8Q\\x01\\xc8\\x99\\xaa\\r-\\x16C\\x9dK}yB\\x9e\\xdd\\x1b\\xe5\\x00\\x84\\x95Fq\\xdd4\\xad>m\\xbdz\\xd9J\\x86JI\\x99\\x11\\xaduai\\xf4_\\xd2\\xeb\\x98:Y\\xc2\\xb6\\xa5\\xc7np\\x84\\xc2\\x19\\xbc\\x82\\xb7\\xac\\xc7\\x00\\xae.6?\\xdaH\\xd2FU\\xc7\\xa9\\xd3\\xdf8\\xbd=>\\xb7\\xa6N\\x98\\xc3\\xedZ\\xb9\\xb4f\\xe5\\xab\\x96.-\\x9eHq\\xa7XPZ\\x1cI\\xd1IP\\xc8\\x83^[\\xb8\\xf4&4\\xcbM\\x1f\\x93F|\\xcef\\xa44\\xd5\\xa4\\xf2}+\\xb7\\xd6tk\\xb4i\\xe5k\\xbd\\xeaZO\\xc2\\xbat8\\xeab\\xe3\\xd7\\xfd\\xdds\\tl\\xefO}}W\\xcc\\x90\\xe0\\x8c\\xb2\\xe1\\xa5\\x06rp\\xc8\\xfe\\xf9\\xd0X\\x06|\\xeb[\\xe1h\\xe3\\x90\\x99\\x81\\xef\\xa1SN\\xa7\\x9f\\xbe\\x94\\x12\\xb4\\x1aT\\x02)\\xe1N\\xc1\\nr9\\x1f][V\\x1b\\xc7I\\xa2\\xa2\\x93\\xc0\\x1a\\x1a\\x8c\\xe6EJ0\\xf7\\xebR1GL\\xfdu\\x00.RUn\\xe8\\xe6\\x93V\\xfdN\\x9d\\x9a\\xab\\x82\\x86m\\xd1\\xc1-6\\x9fR@\\xaf\\x9f\\xb7\\xb6D\\xc6\\xae\\xfb\"\\r;\\x1aHj\\xe2|j\\xd8\\xd2[n\\x93\\xce\\x8d\\x9d\\x0c\\xa3)\\xce\\xa8R\\xad\\x89 \\x01\\x99\\xadFj\\xbf\\xdaN\\x9b\\xb6\\x17g\\xf1gp\\xdb\\xccYo\\xdc\\xb3\\x93\\xa6\\xcd\\x85>\\x84+\\x8aJ\\x93\\x96\\xf0\\xe28V\\xb5Wm\\xf5pP$\\x13\\xcf\\xdf]>\\x8eg\\xa5Pu?\\xbf\\n\\x0cX\\xbd\\x15t\\xa7\\x8a\\xec\\x15\\xe0\\xb7!w\\xd8\\x03\\xaa\\xde~\\xc1k\\xf3\\t\\xfam+\\xe8/\\xfa*\\xe3\\xc0\\x8cg\\xd3\\xee\\xe5\\xd7\\x0e\\xa7o\\x1e\\x9f\\xe7\\xf9\\xaf\\xe8\\xeb\\x9d\\x96\\xc7\\xb0\\x9d\\xaa\\xc1Z\\xc5\\xb0\\x0b\\xc4\\xddY8wI\\x88[K\\xe2\\xdb\\x89\\xd5*\\x1c\\x8e\\xba\\x82Fu\\xe5\\xcb\\x1b\\x8d\\xd3\\xd3.\\xdb^\\xac\\xf0\\xac\\x96\\xa7kp\\xc7q}\\x97\\xc5\\xb0\\xc6\\x94\\x86\\xdd\\xbc\\xb6[([\\x93\\xba\\x95\\x1d\\t\\x8c\\xe3*\\xde\\x17\\xb7)}\\x98\\xcf\\x1e\\xeclsV#\\xb2\\xf8\\xd5\\x8d\\xc3\\xad+\\n\\xbc\\x7fp\\x91\\xd6\\xb0\\xc2\\x94\\x85w\\x83\\x03*\\xf7\\xe3\\xd7\\xc7/]<7\\xa3\\x94\\xe1\\xaf^\\x1d\\x88\\xa0\\xfc\\xa6\\x15\\x89\\'\\xc6\\xd5T\\xce\\xae7\\x8d\\xb3\\xd9\\x97\\xb0+b\\xe1\\x1f\\xa4\\xb3\\xbbO\\xdea\\x7f\\x85k\\xe6Ou\\xd9BQ\\xdd\\x9d\\xe4:<[W\\xe1O|\\xa3\\xb2\\xc3\\x0b\\xed\\x82w\\x95\\x1e)#\\xe1N\\xc7i\\xbeP\\xcc\\xfe\\x95\\x1e\\xba\\xa5]\\xba4\\xba\\xd1\\x07\\xe5Q\\xeb\\x15mh\\xde\\xb1\\xb2rq\\x07\\xf9\\xc2\\x9d\\x8d3y\\x04F\\xfa\\x7f\\xda\\x14mh\\xd3\\x13\\xa8\\xcf.umv\\x90\\xf0\\xee\\xef\\xabgFq\\xf6EI\\x84\\xd4\\x08\\xa3\\x96S\\xaf*\\x8e\\xcc#x$\\x123RS\\x9fy\\x8a8\\x89\\xd7\\xf7 \\xf5\\x91\\xcb/ex\\xa3\\xd9\\xb4\\x8bv\\x9c vLw\\xd1\\xb5\\xa6\\xc5\\x86\\xcau\\xf5Q\\xb3\"[d\\x81B\\xd3Q\\xb6\\x1b[\\x82\\xecv\\x17\\xf9\\xc3h\\xef\\xd1h\\xc9\\xc9\\xb6\\xfc\\xe7_<\\x9b@\\xcdG\\xbfA\\xc4\\x8a\\xd4\\x96\\xf8NZ\\xe9;\\xa7,ok\\xc3\\xb8~\\x0f\\xd6`\\xd8\\x12\\xe5%\\xa6\\xd7\\xf2\\xf7\\t\\xff\\x00Z\\xb1\\xa0?Q9g\\x04\\x9a\\xe98b\\xe5\\xaf\\xd9U\\ty)BD!\\x11Gn\\xd9\\xbak\\x81\\xd4\\x1a\\xe9\\xb6D\\x07\\x89\\x99\\xab\\x80 \\xe1\\x94\\xe7\\xfb\\xc5\\x17\\x92\\xf4;\\x0f\\xb6\\x18\\xce\\xc5c#\\x12\\xc0n\\x83n\\x10\\x12\\xeb+\\x1b\\xcd\\\\$}\\x07\\x11\\xf4\\x87~DND\\x1a2\\x93)\\xcbXeq\\xae\\xc5\\xe8\\xc7\\xa4\\\\\\x1b\\xa4\\x0c5Na\\xe4Z\\xe2l\\xa3~\\xeb\\x0eu`\\xb8\\xd0\\xd0\\xa9\\'\\xe9\\xb7?Hi\\x94\\x81^l\\xbaw\\x17\\xab\\x1c\\xa5\\x9b\\x9f\\xe7\\xf9\\xfc\\xff\\x00\\x94\\xf6\\x93\\x95a\\xa3w\\x8f\\xd6>\\xba\\xb4\\x99\\xbc~\\xb1\\xa3Kd&u\\x8fH\\xabH\\xd5!\\x07V\\xd0|R)\\xd0\\rV\\xb6\\xca\\xf3\\xad\\xed\\xcf\\x8bI?\\n\\x90+\\xc2\\xb0\\xe5\\xf9\\xf8}\\x92\\xbcXG\\xe1H\\xd4\\xf6\\x01\\xcd\\x9f\\xc1\\x97\\xe7\\xe1\\x18y\\xf1\\xb7G\\xe1N\\xef\\xba\\xed\\xc7\\xd9\\x1d{)\\xb3\\xeb\\xf3\\xf0<0\\xff\\x00\\xe1\\xd3\\xf8U\\xdd\\x97\\xb8\\xed\\xc7\\xd8\\x076\\'e\\xd7\\xe7`\\x18f\\x7f\\xeaE=\\xd9{\\x8e\\xcc}\\x91\\x97\\xd1\\xf6\\xc9/]\\x9f\\xc3\\xe7\\xb9\\x11\\xf1\\xab\\xe6g\\xee\\xbe^\\x1e\\xc8\\xcetm\\xb1\\xca\\x19\\xe0\\x16\\x83\\xc3x|j\\xf9\\x99\\xfb\\x9f\\x95\\x87\\xb22\\xfa.\\xd8\\xe5i\\x824<\\x1cX\\xf8\\xd3\\xf33\\xf7\\x1f+\\x0f`W\\xd1^\\xc7\\x9c\\xbf5\\x11\\xe0\\xfa\\xc7\\xc6\\xaf\\x9b\\x9f\\xb8\\xbd,=\\x80WD\\xbb \\xa8\\xff\\x007\\xbc<.W\\xf8\\xd3\\xf3s\\xf7\\x1f\\'\\x0fd\\x9c/\\xa2\\xdd\\x97\\xb1\\xbcf\\xe1\\x8b7\\n\\xdbPP\\x0e\\xba\\\\N\\\\\\xc1\\xc8\\xd5\\xf3s\\xb3V\\x8f\\x95\\x8c\\xf0\\xf7\\xa6\\xcd\\xa4\\x12R3\\xe6s\\xa7kB\\x04@\\x8a\\tR59\\x00\\x04\\x92r\\x00s5%)\\xd2\\x7fO\\xb8f\\x00^\\xc3v<3\\x8bb\\x89\\x94\\xae\\xedY\\xdb0~\\xcc~\\x90\\xf8v{\\xce\\x95\\xd2a\\xbek9Y\\x8f\\x0e_\\xda\\x0c{\\x13\\xda,U\\xdcK\\x1c\\xbe~\\xfa\\xf9\\xdf9\\xe7\\x95&8\\x04\\x8d\\x12\\x9e\\xe1\\x95t\\x93^\\x1c\\xeeW.kZVbI\\xf1\\xa83x\\xf7eW\\x03\\x90\\xa7<\\xe9V\\x08\\x83R\\x83 I\\xe1\\xeb\\xab{\\xa4\\x873?\\xb8\\xa0&ax\\x85\\xe6\\x15\\x88\\xdb\\xdf\\xe1\\x97.\\xda_[9\\xbe\\xd3\\xed(\\xa5m\\x9e`\\x8e\\xec\\xa3\\x8e\\x95qZ\\xdd\\x97q\\xd5}\\x10\\xf4\\xcfi\\xb5~O\\x83\\xed)b\\xc3hL!\\xb7rC\\x17\\xa7\\x84pC\\x87\\xea\\xe8O\\x9b\\x13\\xbb\\\\3\\xe9\\xeb\\x98\\xef\\x86}\\xde\\'\\xf9\\xf4\\xff\\x007\\xfd\\xad\\xe5\\x12\\x92A\\x04\\x10`\\xcf:\\xe4\\xe9+\\x02\\xaaE\\n\\xa93z\\x94Y\\xa1\\x15\"H\\x03S\\x95I]\\xe2=,`\\xd6\\x18\\xb5\\xe5\\x8b\\x98~\"\\xe8\\xb6yL\\x97\\x99Se+)0H\\x04\\x83\\x13\"\\xbaN\\x9d\\xd6\\xc6\\xe4\\xf3Nk\\xa5\\xbd\\x99\\\\u\\x8db\\xec\\xfd\\xebP\\xaf\\xec\\xa8\\xd5\\xf2\\xb2;\\x9e\\xe9mt\\xa1\\xb2\\x0e\\t8\\x9b\\xed~\\xd6\\xcd\\xd1\\xee\\x06\\x8f\\x97\\x97\\xb2\\xe3\\xdd-\\xae\\x906E\\xd3\\t\\xda\\x1b\\x14\\xfd\\xfd\\xf4{\\xd3Gf^\\xcbOAcym\\x88Y\\xb5wap\\xd5\\xcd\\xab\\xa3y\\xb7\\x9aV\\xf2V&2>\\x8a\\xca\\xb3^G\\x8a\\x91\\xa55\\x06n\\nQ\\xc9M!$\\x9c\\xabL<\\xd6\\xddm\\xae\\x03\\xb1\\x18w\\x95\\xed\\r\\xe8ik\\x04\\xb3j\\xdfi\\xf7\\xfe\\xe29}\\xa3\\x03\\xbe\\x99-\\xf0~\\xb5\\xc9\\xfd(\\xf4\\xc7\\x8fm\\xb9v\\xc9\\x92p\\xbc\\x06`Y0\\xbe\\xd3\\xa3\\x9b\\xab\\xd5^\\x19\\'\\xbb\\x8du\\xc7\\x19\\x1c\\xb2\\xcf\\xd2+\\x19\"\\x06U\\xa6\\t0*L9eBd\\x8e4\\x82Nd\\n\\x91RH\\x19\\xe9V\\xc8\\xc0\\xe5\\xa9\\xc8\\xd3\\xb5\\xe8p9\\x899\\x9e\\\\\\xa8\\xf2\\xbc\\x1e\\x95r\\x83\\xc0\\xf7\\xd3\\xa8|\\x94\\x84\\xa90s\\x07,\\xfch\\x0b\\xef\\xa2.\\x9b\\xdd\\xc3\\xc38.\\xdc<\\xbb\\x8b\\x10\\x02\\x18\\xc53[\\xacF[\\xae\\xf1Z>\\xd7\\x9c\\x9f\\xb44\\xe5\\x96\\x1b\\xf0\\xed\\x8fR^/\\xf9\\xfe{\\xff\\x00\\xcf\\xbb\\xa4\\x9a[o2\\xd3\\xcc:\\xd3\\xcc:\\x80\\xe3n\\xb4\\xa0\\xb48\\x82$)*\\x19\\x10y\\x8a\\xe1ev;:\\x91\\xc1&\\x90p\\x15\\x14\\x1d\\xa1\\xc4\\xd3\\x83`8\\x8e$\\xb8\\xf9\\xab\\nq3\\xc5Q\\t\\x1e\\xb2*\\x93|)\\xe5\\xce\\x18\\r\\xba\\\\\\xb2u\\xdb\\x96\\xd0\\xf2\\xddp\\x0e\\xdaA\\x93\\xa9#\\x91\\x92k\\xbeWWPNy\\xa9\\xea\\xc3\\xac\\xdcR\\xfein$\\x9d\\xd2\\x04NYe#\\xf7\\xf1\\xacn\\x9e\\xd8\\x12\\xb0\\x9b.\\xca|\\x9c\\x03\\xbf\\xafX\\xa4\\xc8\\x8d5\\xcbCOu\\x1d\\xb1\\xe7\\xb1f\\x9b\\xb6}]BJ\\x10\\x94\\x95\\x00T\\xa5H\\xe0s\\xf8\\x18\\xae\\xb3u\\x9b9t\\xbe\\xc4Y\\xf9\\x06\\xc6`v\\xc4AE\\x9bd\\xe5\\xc4\\x8d\\xe3\\xef\\xaf/\\x9bkm\\xe0\\xa8RT\\x89V\\xd1\\x1cR\\x1ae\\xc7\\x9eq\\r2\\xdaw\\xd6\\xe3\\x8a\\tJ\\x125$\\x9c\\x80\\xad\\x0f>\\x14GI\\xff\\x00\\x94%\\x9d\\x87]\\x86\\xec E\\xe5\\xd8\\x94\\xaf\\x13u2\\xd3|\\xfa\\xa4\\x9f<\\xfd\\xa3\\x97\\x8dt\\x98z\\xd7<\\xb2\\x98\\xf1\\xe6\\xb9\\x9f\\x17\\xc4\\xef\\xb1\\x8cE\\xeb\\xfcV\\xed\\xfb\\xcb\\xd7\\x8e\\xf3\\x8f>\\xbd\\xe5+\\xd7\\xc3\\xbbJ\\xe8\\xe5\\x95\\xb7\\xca\\x191\\xca\\x9d3HO/E\\x0b\\xcb5\\xf4\\xd3\\xb2\\xcc\\xa2(L\\x03.5\\x06\\x11\\x9e\\x82\\xa2v\\xa3\\\\\\xb9\\x11\\xad^\\x17\\x92\\x82f\\x91\\xb3\\xc2\\xb4\\xe5O\\x88}O&39\\x1e&(\\x9c\\xf0\\xb8\\x85\\n\\x10g\\xd1Z\\x02\\xcc\\x80s\\xcf\\x89\\x14iJ\\xb1\\xfa(\\xe9W\\x13\\xd8G\\xd1f\\xea\\x17\\x88l\\xfa\\xd6K\\xb6*T\\x16\\x899\\xad\\x95\\x1f5\\\\J|\\xd5q\\x83\\x98\\xc6Xn:\\xe1\\x9e\\xb8\\xae\\xb6\\xd9\\x9c\\x7f\\x0b\\xda|\\x19\\xacW\\x02\\xbcE\\xdd\\x93\\x87t\\xa8d\\xa6\\xd7\\xc5\\x0bN\\xa8P\\xe4|D\\x8c\\xeb\\xcf\\x94\\xb8\\xde]\\xe5\\xdbl(,\\x9a\\x92\\xb2\\xe9\\xdf\\x17M\\xae\\xce\\xd9aiX\\x0e_?\\xd6,O\\xf1m\\xe7\\xedQ\\x1e\\xaa\\xdfNn\\xec^\"\\xa2\\xb4\\xc6\\x1d\\xb7\\xb6C(i\\x05)\\xcc\\x10H3\\xce\\xba\\xdc7\\xc8\\xeeHV>T\\x95\\x85[\\x94\\xa9I\\x03y+\\x06\\x0f8\"\\x08\\xee5v\\x1e\\xe8\\x8a\\xde5z\\x84\\xc4\\xb0\\xa1\\xa4)\\xa1\\x1e\\xca{ \\xee\\xa8o)W\\xf7Q\\xb8\\x84\\xb9p\\xb4\\xa0\\x86\\xd3\\xba\\t$&c\\x99\\xa7\\xc4[\\xddu\\xba\\x1aK-\\xa1\\x94\\x8e\\xcbiJ\\x00\\xf0\\x00|+\\xc9\\x1a,R\\x19\\x15\\'\\x8d\\xe9\\x0f\\xa4m\\x9d\\xd8+\\x7f\\xf3\\xc5\\xcf]\\x88)2\\xd6\\x1fnB\\x9e_\"~\\xa2{\\xcf\\xa2kX\\xe3r\\x16\\xccf\\xeb\\x93:L\\xe9Oh6\\xf5\\xf2\\xdd\\xeb\\xa2\\xcf\\tJ\\xb7\\x9a\\xc3\\xad\\xc9\\xea\\xc7\"\\xb3\\xaa\\xd5\\xder\\xe4\\x05w\\xc7\\t\\x8b\\x8e]Kx\\x9cG\\x83:\\xc4\\x8f\\x01N\\xdc\\xf4Br\\xee\\xa50\\xd5\\x05!\\x88\\xcb\\xdbBf\\xbciL\\xe74#\\xa3\\x94Gx\\xa51YLw\\xd0X\\x0eC\\xc6\\xa4\\xc1\\x9e\\xef}H\\xa4\\x91\\x15ED\\'1\\xe1\\xf0\\xad\\nT\\x935\\x1fA\\x87\\x9a=5C9=9\\x8c\\xfb\\xfd\\xd5\\x9b\\xe5=\\xc7B\\xf8\\xe6%\\x83t\\x91\\x827\\x86^9n\\xd6!x\\xd5\\xad\\xdbi\\x82\\x87\\x9b*\\x8d\\xd5$\\xe4u\\xc8\\xea8\\x11F\\xb7\\x8d\\xdb\\xa7J\\xfem;eY(\\x81^gsf\\xa8\\x80\\xba\\xc30\\xfcII\\x18\\x8d\\x8d\\xa5\\xde\\xe8\\x84\\xf5\\xec\\xa5\\xcd\\xd1\\xdd#*\\xb5\\xb0\\x8c\\xae\\x8fvJ\\xe1$\\xbb\\xb3\\xf8|\\xf3C[\\x9e\\xe8\\xa2\\xf1\\xe0W\\x9e\\xc6\\xfa8\\xd96\\x90\\xa55\\x84%\\xb2>\\xab\\xce\\x8fr\\xaa\\xbdL\\xa7\\x8a4\\xab6\\x93g\\xf0\\xcb%+\\xc9\\xad\\xd4\\x8e\\x1f\\xa5Y\\xf7\\x9a\\xd6=\\\\\\xbd\\xcbE\\xb3\\xac6\\xad\\xab\\xc2[)\\x94yc9\\x12~\\xb8\\xad\\xf7[\\x8d1\\xd4\\xce\\xfe\\x91^5\\xcd\\x1a5\\xa9<7MX\\xee%\\xb3\\xbd\\x1d\\xe2X\\x86\\x0bt\\xab[\\xd4$\\x04\\xba\\x94\\xa4\\x94\\xc9\\x00\\xc4\\x83\\x07=kX\\xc9i\\x9e-\\xfa8r\\xee\\xe5\\xfb\\xc7\\xdc\\xb9\\xbby\\xc7\\xee\\x1e;\\xce:\\xea\\x8a\\x96\\xb2Fd\\x93\\x99\\xafC\\xc7\\xbb\\x95\\xdd\\x05Z\\xa4w|)\\x04$\\xefPJ<\\xe3\\xdcj\\x88\\x87\\x8d@\\x80\\x9c\\xeaE\\x03\\xb4iLI\\xd7\\xc6\\x844\\r\\xe5e\\xc6\\xb5<\\x1a\\xff\\xd9'"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# The raw content (its a binary file, meaning we will need to use binary read/write methods for saving it)\n",
"image_link.content"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Let's write this to a file:=, not the 'wb' call to denote a binary writing of the file.**"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"f = open('my_new_file_name.jpg','wb')"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"16806"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f.write(image_link.content)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can display this file right here in the notebook as markdown using:\n",
"\n",
" \n",
" \n",
"Just write the above line in a new markdown cell and it will display the image we just downloaded!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Project - Working with Multiple Pages and Items\n",
"\n",
"Let's show a more realistic example of scraping a full site. The website: http://books.toscrape.com/index.html is specifically designed for people to scrape it. Let's try to get the title of every book that has a 2 star rating and at the end just have a Python list with all their titles.\n",
"\n",
"We will do the following:\n",
"\n",
"1. Figure out the URL structure to go through every page\n",
"2. Scrap every page in the catalogue\n",
"3. Figure out what tag/class represents the Star rating\n",
"4. Filter by that star rating using an if statement\n",
"5. Store the results to a list"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"We can see that the URL structure is the following:\n",
"\n",
" http://books.toscrape.com/catalogue/page-1.html"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"base_url = 'http://books.toscrape.com/catalogue/page-{}.html'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then fill in the page number with .format()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"res = requests.get(base_url.format('1'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's grab the products (books) from the get request result:"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,\"lxml\")"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[\n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£51.77
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£53.74
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£50.10
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£47.82
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£54.23
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£22.65
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£33.34
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£17.93
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£22.60
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£52.15
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£13.99
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£20.66
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£17.46
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£52.29
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£35.02
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£57.25
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£23.88
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£37.59
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£51.33
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" , \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£45.17
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select(\".product_pod\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can see that each book has the product_pod class. We can select any tag with this class, and then further reduce it by its rating."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"products = soup.select(\".product_pod\")"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"example = products[0]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bs4.element.Tag"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(example)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'class': ['product_pod']}"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.attrs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now by inspecting the site we can see that the class we want is class='star-rating Two' , if you click on this in your browser, you'll notice it displays the space as a . , so that means we want to search for \".star-rating.Two\""
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['\\n', \n",
"
\n",
"
, '\\n', \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
, '\\n', , '\\n', \n",
"
£51.77
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
, '\\n']"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(example.children)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[\n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('.star-rating.Three')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But we are looking for 2 stars, so it looks like we can just check to see if something was returned"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('.star-rating.Two')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively, we can just quickly check the text string to see if \"star-rating Two\" is in it. Either approach is fine (there are also many other alternative approaches!)\n",
"\n",
"Now let's see how we can get the title if we have a 2-star match:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[ ,\n",
" A Light in the ... ]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('a')"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"A Light in the ... "
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('a')[1]"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'A Light in the Attic'"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('a')[1]['title']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Okay, let's give it a shot by combining all the ideas we've talked about! (this should take about 20-60 seconds to complete running. Be aware a firwall may prevent this script from running. Also if you are getting a no response error, maybe try adding a sleep step with time.sleep(1)."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"two_star_titles = []\n",
"\n",
"for n in range(1,51):\n",
"\n",
" scrape_url = base_url.format(n)\n",
" res = requests.get(scrape_url)\n",
" \n",
" soup = bs4.BeautifulSoup(res.text,\"lxml\")\n",
" books = soup.select(\".product_pod\")\n",
" \n",
" for book in books:\n",
" if len(book.select('.star-rating.Two')) != 0:\n",
" two_star_titles.append(book.select('a')[1]['title'])"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Starving Hearts (Triangular Trade Trilogy, #1)',\n",
" 'Libertarianism for Beginners',\n",
" \"It's Only the Himalayas\",\n",
" 'How Music Works',\n",
" 'Maude (1883-1993):She Grew Up with the country',\n",
" \"You can't bury them all: Poems\",\n",
" 'Reasons to Stay Alive',\n",
" 'Without Borders (Wanderlove #1)',\n",
" 'Soul Reader',\n",
" 'Security',\n",
" 'Saga, Volume 5 (Saga (Collected Editions) #5)',\n",
" 'Reskilling America: Learning to Labor in the Twenty-First Century',\n",
" 'Political Suicide: Missteps, Peccadilloes, Bad Calls, Backroom Hijinx, Sordid Pasts, Rotten Breaks, and Just Plain Dumb Mistakes in the Annals of American Politics',\n",
" 'Obsidian (Lux #1)',\n",
" 'My Paris Kitchen: Recipes and Stories',\n",
" 'Masks and Shadows',\n",
" 'Lumberjanes, Vol. 2: Friendship to the Max (Lumberjanes #5-8)',\n",
" 'Lumberjanes Vol. 3: A Terrible Plan (Lumberjanes #9-12)',\n",
" 'Judo: Seven Steps to Black Belt (an Introductory Guide for Beginners)',\n",
" 'I Hate Fairyland, Vol. 1: Madly Ever After (I Hate Fairyland (Compilations) #1-5)',\n",
" 'Giant Days, Vol. 2 (Giant Days #5-8)',\n",
" 'Everydata: The Misinformation Hidden in the Little Data You Consume Every Day',\n",
" \"Don't Be a Jerk: And Other Practical Advice from Dogen, Japan's Greatest Zen Master\",\n",
" 'Bossypants',\n",
" 'Bitch Planet, Vol. 1: Extraordinary Machine (Bitch Planet (Collected Editions))',\n",
" 'Avatar: The Last Airbender: Smoke and Shadow, Part 3 (Smoke and Shadow #3)',\n",
" 'Tuesday Nights in 1980',\n",
" 'The Psychopath Test: A Journey Through the Madness Industry',\n",
" 'The Power of Now: A Guide to Spiritual Enlightenment',\n",
" \"The Omnivore's Dilemma: A Natural History of Four Meals\",\n",
" 'The Love and Lemons Cookbook: An Apple-to-Zucchini Celebration of Impromptu Cooking',\n",
" 'The Girl on the Train',\n",
" 'The Emerald Mystery',\n",
" 'The Argonauts',\n",
" 'Suddenly in Love (Lake Haven #1)',\n",
" 'Soft Apocalypse',\n",
" \"So You've Been Publicly Shamed\",\n",
" 'Shoe Dog: A Memoir by the Creator of NIKE',\n",
" 'Louisa: The Extraordinary Life of Mrs. Adams',\n",
" 'Large Print Heart of the Pride',\n",
" 'Grumbles',\n",
" 'Chasing Heaven: What Dying Taught Me About Living',\n",
" 'Becoming Wise: An Inquiry into the Mystery and Art of Living',\n",
" 'Beauty Restored (Riley Family Legacy Novellas #3)',\n",
" 'Batman: The Long Halloween (Batman)',\n",
" \"Ayumi's Violin\",\n",
" 'Wild Swans',\n",
" \"What's It Like in Space?: Stories from Astronauts Who've Been There\",\n",
" 'Until Friday Night (The Field Party #1)',\n",
" 'Unbroken: A World War II Story of Survival, Resilience, and Redemption',\n",
" 'Twenty Yawns',\n",
" 'Through the Woods',\n",
" 'This Is Where It Ends',\n",
" 'The Year of Magical Thinking',\n",
" 'The Last Mile (Amos Decker #2)',\n",
" 'The Immortal Life of Henrietta Lacks',\n",
" 'The Hidden Oracle (The Trials of Apollo #1)',\n",
" 'The Guilty (Will Robie #4)',\n",
" 'Red Hood/Arsenal, Vol. 1: Open for Business (Red Hood/Arsenal #1)',\n",
" 'Once Was a Time',\n",
" 'No Dream Is Too High: Life Lessons From a Man Who Walked on the Moon',\n",
" 'Naruto (3-in-1 Edition), Vol. 14: Includes Vols. 40, 41 & 42 (Naruto: Omnibus #14)',\n",
" 'More Than Music (Chasing the Dream #1)',\n",
" 'Lowriders to the Center of the Earth (Lowriders in Space #2)',\n",
" 'Eat Fat, Get Thin',\n",
" 'Doctor Sleep (The Shining #2)',\n",
" 'Crazy Love: Overwhelmed by a Relentless God',\n",
" 'Carrie',\n",
" 'Batman: Europa',\n",
" 'Angels Walking (Angels Walking #1)',\n",
" 'Adulthood Is a Myth: A \"Sarah\\'s Scribbles\" Collection',\n",
" 'A Study in Scarlet (Sherlock Holmes #1)',\n",
" 'A Series of Catastrophes and Miracles: A True Story of Love, Science, and Cancer',\n",
" \"A People's History of the United States\",\n",
" 'My Kitchen Year: 136 Recipes That Saved My Life',\n",
" 'The Lonely City: Adventures in the Art of Being Alone',\n",
" 'The Dinner Party',\n",
" 'Stars Above (The Lunar Chronicles #4.5)',\n",
" 'Love, Lies and Spies',\n",
" 'Troublemaker: Surviving Hollywood and Scientology',\n",
" 'The Widow',\n",
" 'Setting the World on Fire: The Brief, Astonishing Life of St. Catherine of Siena',\n",
" 'Mothering Sunday',\n",
" 'Lilac Girls',\n",
" '10% Happier: How I Tamed the Voice in My Head, Reduced Stress Without Losing My Edge, and Found Self-Help That Actually Works',\n",
" 'Underlying Notes',\n",
" 'The Flowers Lied',\n",
" 'Modern Day Fables',\n",
" \"Chernobyl 01:23:40: The Incredible True Story of the World's Worst Nuclear Disaster\",\n",
" '23 Degrees South: A Tropical Tale of Changing Whether...',\n",
" 'When Breath Becomes Air',\n",
" 'Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel',\n",
" 'The Martian (The Martian #1)',\n",
" \"Miller's Valley\",\n",
" \"Love That Boy: What Two Presidents, Eight Road Trips, and My Son Taught Me About a Parent's Expectations\",\n",
" 'Left Behind (Left Behind #1)',\n",
" 'Howl and Other Poems',\n",
" \"Heaven is for Real: A Little Boy's Astounding Story of His Trip to Heaven and Back\",\n",
" \"Brazen: The Courage to Find the You That's Been Hiding\",\n",
" '32 Yolks',\n",
" 'Wildlife of New York: A Five-Borough Coloring Book',\n",
" 'Unreasonable Hope: Finding Faith in the God Who Brings Purpose to Your Pain',\n",
" 'The Art Book',\n",
" 'Steal Like an Artist: 10 Things Nobody Told You About Being Creative',\n",
" 'Raymie Nightingale',\n",
" 'Like Never Before (Walker Family #2)',\n",
" 'How to Be a Domestic Goddess: Baking and the Art of Comfort Cooking',\n",
" 'Finding God in the Ruins: How God Redeems Pain',\n",
" 'Chronicles, Vol. 1',\n",
" 'A Summer In Europe',\n",
" 'The Rise and Fall of the Third Reich: A History of Nazi Germany',\n",
" 'The Makings of a Fatherless Child',\n",
" 'The Fellowship of the Ring (The Lord of the Rings #1)',\n",
" \"Tell the Wolves I'm Home\",\n",
" 'In the Woods (Dublin Murder Squad #1)',\n",
" 'Give It Back',\n",
" 'Why Save the Bankers?: And Other Essays on Our Economic and Political Crisis',\n",
" 'The Raven King (The Raven Cycle #4)',\n",
" 'The Expatriates',\n",
" 'The 5th Wave (The 5th Wave #1)',\n",
" 'Peak: Secrets from the New Science of Expertise',\n",
" 'Logan Kade (Fallen Crest High #5.5)',\n",
" \"I Know Why the Caged Bird Sings (Maya Angelou's Autobiography #1)\",\n",
" 'Drama',\n",
" \"America's War for the Greater Middle East: A Military History\",\n",
" 'A Game of Thrones (A Song of Ice and Fire #1)',\n",
" \"The Pilgrim's Progress\",\n",
" 'The Hound of the Baskervilles (Sherlock Holmes #5)',\n",
" \"The Geography of Bliss: One Grump's Search for the Happiest Places in the World\",\n",
" 'The Demonists (Demonist #1)',\n",
" 'The Demon Prince of Momochi House, Vol. 4 (The Demon Prince of Momochi House #4)',\n",
" 'Misery',\n",
" 'Far From True (Promise Falls Trilogy #2)',\n",
" 'Confessions of a Shopaholic (Shopaholic #1)',\n",
" 'Vegan Vegetarian Omnivore: Dinner for Everyone at the Table',\n",
" 'Two Boys Kissing',\n",
" 'Twilight (Twilight #1)',\n",
" 'Twenties Girl',\n",
" 'The Tipping Point: How Little Things Can Make a Big Difference',\n",
" 'The Stand',\n",
" 'The Picture of Dorian Gray',\n",
" 'The Name of God is Mercy',\n",
" \"The Lover's Dictionary\",\n",
" 'The Last Painting of Sara de Vos',\n",
" 'The Guns of August',\n",
" 'The Girl Who Played with Fire (Millennium Trilogy #2)',\n",
" 'The Da Vinci Code (Robert Langdon #2)',\n",
" 'The Cat in the Hat (Beginner Books B-1)',\n",
" 'The Book Thief',\n",
" 'The Autobiography of Malcolm X',\n",
" \"Surely You're Joking, Mr. Feynman!: Adventures of a Curious Character\",\n",
" 'Soldier (Talon #3)',\n",
" 'Shopaholic & Baby (Shopaholic #5)',\n",
" 'Seven Days in the Art World',\n",
" 'Rework',\n",
" 'Packing for Mars: The Curious Science of Life in the Void',\n",
" 'Orange Is the New Black',\n",
" 'One for the Money (Stephanie Plum #1)',\n",
" 'Midnight Riot (Peter Grant/ Rivers of London - books #1)',\n",
" 'Me Talk Pretty One Day',\n",
" 'Manuscript Found in Accra',\n",
" 'Lust & Wonder',\n",
" \"Life, the Universe and Everything (Hitchhiker's Guide to the Galaxy #3)\",\n",
" 'Life After Life',\n",
" 'I Am Malala: The Girl Who Stood Up for Education and Was Shot by the Taliban',\n",
" 'House of Lost Worlds: Dinosaurs, Dynasties, and the Story of Life on Earth',\n",
" 'Horrible Bear!',\n",
" 'Holidays on Ice',\n",
" 'Girl in the Blue Coat',\n",
" 'Fruits Basket, Vol. 3 (Fruits Basket #3)',\n",
" 'Cosmos',\n",
" 'Civilization and Its Discontents',\n",
" \"Catastrophic Happiness: Finding Joy in Childhood's Messy Years\",\n",
" 'Career of Evil (Cormoran Strike #3)',\n",
" 'Born to Run: A Hidden Tribe, Superathletes, and the Greatest Race the World Has Never Seen',\n",
" \"Best of My Love (Fool's Gold #20)\",\n",
" 'Beowulf',\n",
" 'Awkward',\n",
" 'And Then There Were None',\n",
" 'A Storm of Swords (A Song of Ice and Fire #3)',\n",
" 'The Suffragettes (Little Black Classics, #96)',\n",
" 'Vampire Girl (Vampire Girl #1)',\n",
" 'Three Wishes (River of Time: California #1)',\n",
" 'The Wicked + The Divine, Vol. 1: The Faust Act (The Wicked + The Divine)',\n",
" 'The Little Prince',\n",
" 'The Last Girl (The Dominion Trilogy #1)',\n",
" 'Taking Shots (Assassins #1)',\n",
" 'Settling the Score (The Summer Games #1)',\n",
" 'Rhythm, Chord & Malykhin',\n",
" 'One Second (Seven #7)',\n",
" \"Old Records Never Die: One Man's Quest for His Vinyl and His Past\",\n",
" 'Of Mice and Men',\n",
" 'My Perfect Mistake (Over the Top #1)',\n",
" 'Meditations',\n",
" 'Frankenstein',\n",
" 'Emma']"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"two_star_titles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"** Excellent! You should now have the tools necessary to scrape any websites that interest you! Keep in mind, the more complex the website, the harder it will be to scrape. Always ask for permission! **"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 13-Web-Scraping/.ipynb_checkpoints/01-Web-Scraping-Exercises-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Web Scraping Exercises \n",
"\n",
"## Complete the Tasks Below"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Import any libraries you think you'll need to scrape a website.**"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Use requests library and BeautifulSoup to connect to http://quotes.toscrape.com/ and get the HMTL text from the homepage.**"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\n\\n\\n\\t \\n\\tQuotes to Scrape \\n \\n \\n\\n\\n \\n
\\n
\\n
\\n
\\n \\n Login \\n \\n
\\n
\\n
\\n \\n\\n
\\n
\\n\\n
\\n
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is our choices, Harry, that show what we truly are, far more than our abilities.” \\n
by J.K. Rowling \\n (about) \\n \\n
\\n
\\n\\n
\\n
“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.” \\n
by Jane Austen \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.” \\n
by Marilyn Monroe \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Try not to become a man of success. Rather become a man of value.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is better to be hated for what you are than to be loved for what you are not.” \\n
by André Gide \\n (about) \\n \\n
\\n
\\n\\n
\\n
“I have not failed. I've just found 10,000 ways that won't work.” \\n
by Thomas A. Edison \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A woman is like a tea bag; you never know how strong it is until it's in hot water.” \\n
by Eleanor Roosevelt \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A day without sunshine is like, you know, night.” \\n
by Steve Martin \\n (about) \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n\\n'"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Get the names of all the authors on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Albert Einstein',\n",
" 'André Gide',\n",
" 'Eleanor Roosevelt',\n",
" 'J.K. Rowling',\n",
" 'Jane Austen',\n",
" 'Marilyn Monroe',\n",
" 'Steve Martin',\n",
" 'Thomas A. Edison'}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"authors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Create a list of all the quotes on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”',\n",
" '“It is our choices, Harry, that show what we truly are, far more than our abilities.”',\n",
" '“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”',\n",
" '“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”',\n",
" \"“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”\",\n",
" '“Try not to become a man of success. Rather become a man of value.”',\n",
" '“It is better to be hated for what you are than to be loved for what you are not.”',\n",
" \"“I have not failed. I've just found 10,000 ways that won't work.”\",\n",
" \"“A woman is like a tea bag; you never know how strong it is until it's in hot water.”\",\n",
" '“A day without sunshine is like, you know, night.”']"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"quotes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Inspect the site and use Beautiful Soup to extract the top ten tags from the requests text shown on the top right from the home page (e.g Love,Inspirational,Life, etc...). HINT: Keep in mind there are also tags underneath each quote, try to find a class only present in the top right tags, perhaps check the span.**"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"love\n",
"\n",
"\n",
"inspirational\n",
"\n",
"\n",
"life\n",
"\n",
"\n",
"humor\n",
"\n",
"\n",
"books\n",
"\n",
"\n",
"reading\n",
"\n",
"\n",
"friendship\n",
"\n",
"\n",
"friends\n",
"\n",
"\n",
"truth\n",
"\n",
"\n",
"simile\n",
"\n"
]
}
],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Notice how there is more than one page, and subsequent pages look like this http://quotes.toscrape.com/page/2/. Use what you know about for loops and string concatenation to loop through all the pages and get all the unique authors on the website. Keep in mind there are many ways to achieve this, also note that you will need to somehow figure out how to check that your loop is on the last page with quotes. For debugging purposes, I will let you know that there are only 10 pages, so the last page is http://quotes.toscrape.com/page/10/, but try to create a loop that is robust enough that it wouldn't matter to know the amount of pages beforehand, perhaps use try/except for this, its up to you!**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are lots of other potential solutions that are even more robust and flexible, the main idea is the same though, use a while loop to cycle through potential pages and have a break condition based on the invalid page."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 13-Web-Scraping/.ipynb_checkpoints/02-Web-Scraping-Exercise-Solutions-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Web Scraping Exercises - Solutions\n",
"\n",
"## Complete the Tasks Below"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Import any libraries you think you'll need to scrape a website.**"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import requests\n",
"import bs4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Use requests library and BeautifulSoup to connect to http://quotes.toscrape.com/ and get the HMTL text from the homepage.**"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"res = requests.get(\"http://quotes.toscrape.com/\")"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\n\\n\\n\\t \\n\\tQuotes to Scrape \\n \\n \\n\\n\\n \\n
\\n
\\n
\\n
\\n \\n Login \\n \\n
\\n
\\n
\\n \\n\\n
\\n
\\n\\n
\\n
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is our choices, Harry, that show what we truly are, far more than our abilities.” \\n
by J.K. Rowling \\n (about) \\n \\n
\\n
\\n\\n
\\n
“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.” \\n
by Jane Austen \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.” \\n
by Marilyn Monroe \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Try not to become a man of success. Rather become a man of value.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is better to be hated for what you are than to be loved for what you are not.” \\n
by André Gide \\n (about) \\n \\n
\\n
\\n\\n
\\n
“I have not failed. I've just found 10,000 ways that won't work.” \\n
by Thomas A. Edison \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A woman is like a tea bag; you never know how strong it is until it's in hot water.” \\n
by Eleanor Roosevelt \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A day without sunshine is like, you know, night.” \\n
by Steve Martin \\n (about) \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n\\n'"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Get the names of all the authors on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Albert Einstein ,\n",
" J.K. Rowling ,\n",
" Albert Einstein ,\n",
" Jane Austen ,\n",
" Marilyn Monroe ,\n",
" Albert Einstein ,\n",
" André Gide ,\n",
" Thomas A. Edison ,\n",
" Eleanor Roosevelt ,\n",
" Steve Martin ]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select(\".author\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# I used a set to not worry about repeat authors.\n",
"authors = set() \n",
"for name in soup.select(\".author\"):\n",
" authors.add(name.text)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Albert Einstein',\n",
" 'André Gide',\n",
" 'Eleanor Roosevelt',\n",
" 'J.K. Rowling',\n",
" 'Jane Austen',\n",
" 'Marilyn Monroe',\n",
" 'Steve Martin',\n",
" 'Thomas A. Edison'}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"authors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Create a list of all the quotes on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"quotes = []\n",
"for quote in soup.select(\".text\"):\n",
" quotes.append(quote.text)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”',\n",
" '“It is our choices, Harry, that show what we truly are, far more than our abilities.”',\n",
" '“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”',\n",
" '“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”',\n",
" \"“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”\",\n",
" '“Try not to become a man of success. Rather become a man of value.”',\n",
" '“It is better to be hated for what you are than to be loved for what you are not.”',\n",
" \"“I have not failed. I've just found 10,000 ways that won't work.”\",\n",
" \"“A woman is like a tea bag; you never know how strong it is until it's in hot water.”\",\n",
" '“A day without sunshine is like, you know, night.”']"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"quotes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Inspect the site and use Beautiful Soup to extract the top ten tags from the requests text shown on the top right from the home page (e.g Love,Inspirational,Life, etc...). HINT: Keep in mind there are also tags underneath each quote, try to find a class only present in the top right tags, perhaps check the span.**"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[\n",
" love \n",
" , \n",
" inspirational \n",
" , \n",
" life \n",
" , \n",
" humor \n",
" , \n",
" books \n",
" , \n",
" reading \n",
" , \n",
" friendship \n",
" , \n",
" friends \n",
" , \n",
" truth \n",
" , \n",
" simile \n",
" ]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select('.tag-item')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"love\n",
"\n",
"\n",
"inspirational\n",
"\n",
"\n",
"life\n",
"\n",
"\n",
"humor\n",
"\n",
"\n",
"books\n",
"\n",
"\n",
"reading\n",
"\n",
"\n",
"friendship\n",
"\n",
"\n",
"friends\n",
"\n",
"\n",
"truth\n",
"\n",
"\n",
"simile\n",
"\n"
]
}
],
"source": [
"for item in soup.select(\".tag-item\"):\n",
" print(item.text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Notice how there is more than one page, and subsequent pages look like this http://quotes.toscrape.com/page/2/. Use what you know about for loops and string concatenation to loop through all the pages and get all the unique authors on the website. Keep in mind there are many ways to achieve this, also note that you will need to somehow figure out how to check that your loop is on the last page with quotes. For debugging purposes, I will let you know that there are only 10 pages, so the last page is http://quotes.toscrape.com/page/10/, but try to create a loop that is robust enough that it wouldn't matter to know the amount of pages beforehand, perhaps use try/except for this, its up to you!**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Possible Solution #1 ( Assuming You Know Number of Pages)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"url = 'http://quotes.toscrape.com/page/'"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"authors = set()\n",
"\n",
"for page in range(1,10):\n",
"\n",
" # Concatenate to get new page URL\n",
" page_url = url+str(page)\n",
" # Obtain Request\n",
" res = requests.get(page_url)\n",
" # Turn into Soup\n",
" soup = bs4.BeautifulSoup(res.text,'lxml')\n",
" # Add Authors to our set\n",
" for name in soup.select(\".author\"):\n",
" authors.add(name.text)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Possible Solution #2 ( Unknown Number of Pages, but knowledge of last page)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check what the last invalid page looks like:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Choose some huge page number we know doesn't exist\n",
"page_url = url+str(9999999)\n",
"\n",
"# Obtain Request\n",
"res = requests.get(page_url)\n",
"\n",
"# Turn into Soup\n",
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"\n",
"\n",
" \n",
"Quotes to Scrape \n",
" \n",
" \n",
"\n",
"\n",
"\n",
"
\n",
"
\n",
"
\n",
"
\n",
"Login \n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"\n",
"No quotes found!\n",
"\n",
" \n",
"\n",
" \n",
"
\n",
"
\n",
"
Top Ten tags \n",
"
\n",
"love \n",
" \n",
"
\n",
"inspirational \n",
" \n",
"
\n",
"life \n",
" \n",
"
\n",
"humor \n",
" \n",
"
\n",
"books \n",
" \n",
"
\n",
"reading \n",
" \n",
"
\n",
"friendship \n",
" \n",
"
\n",
"friends \n",
" \n",
"
\n",
"truth \n",
" \n",
"
\n",
"simile \n",
" \n",
"
\n",
"
\n",
"
\n",
"\n",
"\n",
""
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# This solution requires that the string \"No quotes found!\" only occurs on the last page.\n",
"# If for some reason this string was on the other pages, we would need to be more detailed.\n",
"\"No quotes found!\" in res.text"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"page_still_valid = True\n",
"authors = set()\n",
"page = 1\n",
"\n",
"while page_still_valid:\n",
"\n",
" # Concatenate to get new page URL\n",
" page_url = url+str(page)\n",
" \n",
" # Obtain Request\n",
" res = requests.get(page_url)\n",
" \n",
" # Check to see if we're on the last page\n",
" if \"No quotes found!\" in res.text:\n",
" break\n",
" \n",
" # Turn into Soup\n",
" soup = bs4.BeautifulSoup(res.text,'lxml')\n",
" \n",
" # Add Authors to our set\n",
" for name in soup.select(\".author\"):\n",
" authors.add(name.text)\n",
" \n",
" # Go to Next Page\n",
" page += 1"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Albert Einstein',\n",
" 'Alexandre Dumas fils',\n",
" 'Alfred Tennyson',\n",
" 'Allen Saunders',\n",
" 'André Gide',\n",
" 'Ayn Rand',\n",
" 'Bob Marley',\n",
" 'C.S. Lewis',\n",
" 'Charles Bukowski',\n",
" 'Charles M. Schulz',\n",
" 'Douglas Adams',\n",
" 'Dr. Seuss',\n",
" 'E.E. Cummings',\n",
" 'Eleanor Roosevelt',\n",
" 'Elie Wiesel',\n",
" 'Ernest Hemingway',\n",
" 'Friedrich Nietzsche',\n",
" 'Garrison Keillor',\n",
" 'George Bernard Shaw',\n",
" 'George Carlin',\n",
" 'George Eliot',\n",
" 'George R.R. Martin',\n",
" 'Harper Lee',\n",
" 'Haruki Murakami',\n",
" 'Helen Keller',\n",
" 'J.D. Salinger',\n",
" 'J.K. Rowling',\n",
" 'J.M. Barrie',\n",
" 'J.R.R. Tolkien',\n",
" 'James Baldwin',\n",
" 'Jane Austen',\n",
" 'Jim Henson',\n",
" 'Jimi Hendrix',\n",
" 'John Lennon',\n",
" 'Jorge Luis Borges',\n",
" 'Khaled Hosseini',\n",
" \"Madeleine L'Engle\",\n",
" 'Marilyn Monroe',\n",
" 'Mark Twain',\n",
" 'Martin Luther King Jr.',\n",
" 'Mother Teresa',\n",
" 'Pablo Neruda',\n",
" 'Ralph Waldo Emerson',\n",
" 'Stephenie Meyer',\n",
" 'Steve Martin',\n",
" 'Suzanne Collins',\n",
" 'Terry Pratchett',\n",
" 'Thomas A. Edison',\n",
" 'W.C. Fields',\n",
" 'William Nicholson'}"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"authors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are lots of other potential solutions that are even more robust and flexible, the main idea is the same though, use a while loop to cycle through potential pages and have a break condition based on the invalid page."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 13-Web-Scraping/00-Guide-to-Web-Scraping.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Guide to Web Scraping\n",
"\n",
"Let's get you started with web scraping and Python. Before we begin, here are some important rules to follow and understand:\n",
"\n",
"1. Always be respectful and try to get premission to scrape, do not bombard a website with scraping requests, otherwise your IP address may be blocked!\n",
"2. Be aware that websites change often, meaning your code could go from working to totally broken from one day to the next.\n",
"3. Pretty much every web scraping project of interest is a unique and custom job, so try your best to generalize the skills learned here.\n",
"\n",
"OK, let's get started with the basics!\n",
"\n",
"## Basic components of a WebSite\n",
"\n",
"### HTML\n",
"HTML stands for Hypertext Markup Language and every website on the internet uses it to display information. Even the jupyter notebook system uses it to display this information in your browser. If you right click on a website and select \"View Page Source\" you can see the raw HTML of a web page. This is the information that Python will be looking at to grab information from. Let's take a look at a simple webpage's HTML:\n",
"\n",
" \n",
" \n",
" \n",
" Title on Browser Tab \n",
" \n",
" \n",
" Website Header \n",
" Some Paragraph
\n",
" \n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's breakdown these components.\n",
"\n",
"Every indicates a specific block type on the webpage:\n",
"\n",
" 1. HTML documents will always start with this type declaration, letting the browser know its an HTML file.\n",
" 2. The component blocks of the HTML document are placed between and .\n",
" 3. Meta data and script connections (like a link to a CSS file or a JS file) are often placed in the block.\n",
" 4. The tag block defines the title of the webpage (its what shows up in the tab of a website you're visiting).\n",
" 5. Is between and tags are the blocks that will be visible to the site visitor.\n",
" 6. Headings are defined by the through tags, where the number represents the size of the heading.\n",
" 7. Paragraphs are defined by the tag, this is essentially just normal text on the website.\n",
"\n",
" There are many more tags than just these, such as for hyperlinks,
for tables, for table rows, and for table columns, and more!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### CSS\n",
"\n",
"CSS stands for Cascading Style Sheets, this is what gives \"style\" to a website, including colors and fonts, and even some animations! CSS uses tags such as **id** or **class** to connect an HTML element to a CSS feature, such as a particular color. **id** is a unique id for an HTML tag and must be unique within the HTML document, basically a single use connection. **class** defines a general style that can then be linked to multiple HTML tags. Basically if you only want a single html tag to be red, you would use an id tag, if you wanted several HTML tags/blocks to be red, you would create a class in your CSS doc and then link it to the rest of these blocks."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Scraping Guidelines\n",
"\n",
"Keep in mind you should always have permission for the website you are scraping! Check a websites terms and conditions for more info. Also keep in mind that a computer can send requests to a website very fast, so a website may block your computer's ip address if you send too many requests too quickly. Lastly, websites change all the time! You will most likely need to update your code often for long term web-scraping jobs."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Web Scraping with Python\n",
"\n",
"There are a few libraries you will need, you can go to your command line and install them with conda install (if you are using anaconda distribution), or pip install for other python distributions.\n",
"\n",
" conda install requests\n",
" conda install lxml\n",
" conda install bs4\n",
" \n",
"if you are not using the Anaconda Installation, you can use **pip install** instead of **conda install**, for example:\n",
"\n",
" pip install requests\n",
" pip install lxml\n",
" pip install bs4\n",
" \n",
"Now let's see what we can do with these libraries.\n",
"\n",
"----"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Task 0 - Grabbing the title of a page\n",
"\n",
"Let's start very simple, we will grab the title of a page. Remember that this is the HTML block with the **title** tag. For this task we will use **www.example.com** which is a website specifically made to serve as an example domain. Let's go through the main steps:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import requests"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Step 1: Use the requests library to grab the page\n",
"# Note, this may fail if you have a firewall blocking Python/Jupyter \n",
"# Note sometimes you need to run this twice if it fails the first time\n",
"res = requests.get(\"http://www.example.com\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This object is a requests.models.Response object and it actually contains the information from the website, for example:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"requests.models.Response"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(res)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\n\\n\\n Example Domain \\n\\n \\n \\n \\n \\n\\n\\n\\n\\n
Example Domain \\n
This domain is for use in illustrative examples in documents. You may use this\\n domain in literature without prior coordination or asking for permission.
\\n
More information...
\\n
\\n\\n\\n'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"Now we use BeautifulSoup to analyze the extracted page. Technically we could use our own custom script to loook for items in the string of **res.text** but the BeautifulSoup library already has lots of built-in tools and methods to grab information from a string of this nature (basically an HTML file). Using BeautifulSoup we can create a \"soup\" object that contains all the \"ingredients\" of the webpage. Don't ask me about the weird library names, I didn't choose them! :)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import bs4"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,\"lxml\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"\n",
"\n",
"Example Domain \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
"\n",
"
Example Domain \n",
"
This domain is for use in illustrative examples in documents. You may use this\n",
" domain in literature without prior coordination or asking for permission.
\n",
"
More information...
\n",
"
\n",
"\n",
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's use the **.select()** method to grab elements. We are looking for the 'title' tag, so we will pass in 'title'\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Example Domain ]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select('title')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice what is returned here, its actually a list containing all the title elements (along with their tags). You can use indexing or even looping to grab the elements from the list. Since this object it still a specialized tag, we cna use method calls to grab just the text."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"title_tag = soup.select('title')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Example Domain "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"title_tag[0]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bs4.element.Tag"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(title_tag[0])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Example Domain'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"title_tag[0].getText()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Task 1 - Grabbing all elements of a class\n",
"\n",
"Let's try to grab all the section headings of the Wikipedia Article on Grace Hopper from this URL: https://en.wikipedia.org/wiki/Grace_Hopper"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# First get the request\n",
"res = requests.get('https://en.wikipedia.org/wiki/Grace_Hopper')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# Create a soup from request\n",
"soup = bs4.BeautifulSoup(res.text,\"lxml\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now its time to figure out what we are actually looking for. Inspect the element on the page to see that the section headers have the class \"mw-headline\". Because this is a class and not a straight tag, we need to adhere to some syntax for CSS. In this case"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"\n",
"\n",
"Syntax to pass to the .select() method
\n",
" \n",
"\n",
"Match Results
\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
"soup.select('div')
\n",
" \n",
"\n",
"All elements with the <div> tag
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('#some_id')
\n",
" \n",
"\n",
"The HTML element containing the id attribute of some_id
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('.notice')
\n",
" \n",
"\n",
"All the HTML elements with the CSS class named notice
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('div span')
\n",
" \n",
"\n",
"Any elements named <span> that are within an element named <div>
\n",
" \n",
" \n",
"\n",
"\n",
"soup.select('div > span')
\n",
" \n",
"\n",
"Any elements named <span> that are directly within an element named <div>, with no other element in between
\n",
" \n",
" \n",
"\n",
"\n",
" \n",
" \n",
"
"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(Top)
,\n",
" \n",
" 1 \n",
" Early life and education \n",
"
,\n",
" \n",
" 2 \n",
" Career \n",
"
,\n",
" \n",
" 2.1 \n",
" World War II \n",
"
,\n",
" \n",
" 2.2 \n",
" UNIVAC \n",
"
,\n",
" \n",
" 2.3 \n",
" COBOL \n",
"
,\n",
" \n",
" 2.4 \n",
" Standards \n",
"
,\n",
" \n",
" 3 \n",
" Retirement \n",
"
,\n",
" \n",
" 4 \n",
" Post-retirement \n",
"
,\n",
" \n",
" 5 \n",
" Anecdotes \n",
"
,\n",
" \n",
" 6 \n",
" Death \n",
"
,\n",
" \n",
" 7 \n",
" Dates of rank \n",
"
,\n",
" \n",
" 8 \n",
" Awards and honors \n",
"
,\n",
" \n",
" 8.1 \n",
" Military awards \n",
"
,\n",
" \n",
" 8.2 \n",
" Other awards \n",
"
,\n",
" \n",
" 9 \n",
" Legacy \n",
"
,\n",
" \n",
" 9.1 \n",
" Places \n",
"
,\n",
" \n",
" 9.2 \n",
" Programs \n",
"
,\n",
" \n",
" 9.3 \n",
" In popular culture \n",
"
,\n",
" \n",
" 9.3.1 \n",
" Grace Hopper Celebration of Women in Computing \n",
"
,\n",
" \n",
" 10 \n",
" See also \n",
"
,\n",
" \n",
" 11 \n",
" Notes \n",
"
,\n",
" \n",
" 12 \n",
" References \n",
"
,\n",
" \n",
" 13 \n",
" Obituary notices \n",
"
,\n",
" \n",
" 14 \n",
" Further reading \n",
"
,\n",
" \n",
" 15 \n",
" External links \n",
"
]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# note depending on your IP Address, \n",
"# this class may be called something different\n",
"soup.select(\".vector-toc-text\")"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(Top)\n",
"\n",
"1\n",
"Early life and education\n",
"\n",
"\n",
"2\n",
"Career\n",
"\n",
"\n",
"2.1\n",
"World War II\n",
"\n",
"\n",
"2.2\n",
"UNIVAC\n",
"\n",
"\n",
"2.3\n",
"COBOL\n",
"\n",
"\n",
"2.4\n",
"Standards\n",
"\n",
"\n",
"3\n",
"Retirement\n",
"\n",
"\n",
"4\n",
"Post-retirement\n",
"\n",
"\n",
"5\n",
"Anecdotes\n",
"\n",
"\n",
"6\n",
"Death\n",
"\n",
"\n",
"7\n",
"Dates of rank\n",
"\n",
"\n",
"8\n",
"Awards and honors\n",
"\n",
"\n",
"8.1\n",
"Military awards\n",
"\n",
"\n",
"8.2\n",
"Other awards\n",
"\n",
"\n",
"9\n",
"Legacy\n",
"\n",
"\n",
"9.1\n",
"Places\n",
"\n",
"\n",
"9.2\n",
"Programs\n",
"\n",
"\n",
"9.3\n",
"In popular culture\n",
"\n",
"\n",
"9.3.1\n",
"Grace Hopper Celebration of Women in Computing\n",
"\n",
"\n",
"10\n",
"See also\n",
"\n",
"\n",
"11\n",
"Notes\n",
"\n",
"\n",
"12\n",
"References\n",
"\n",
"\n",
"13\n",
"Obituary notices\n",
"\n",
"\n",
"14\n",
"Further reading\n",
"\n",
"\n",
"15\n",
"External links\n",
"\n"
]
}
],
"source": [
"for item in soup.select(\".vector-toc-text\"):\n",
" print(item.text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Task 3 - Getting an Image from a Website\n",
"\n",
"Let's attempt to grab the image of the Deep Blue Computer from this wikipedia article: https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"res = requests.get(\"https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)\")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"image_info = soup.select('.mw-file-element')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[ ,\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
" ]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"image_info"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"11"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(image_info)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"computer = image_info[1]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bs4.element.Tag"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(computer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can make dictionary like calls for parts of the Tag, in this case, we are interested in the **src** , or \"source\" of the image, which should be its own .jpg or .png link:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/250px-Deep_Blue.jpg'"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"computer['src']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can actually display it with a markdown cell with the following:\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that you have the actual src link, you can grab the image with requests and get along with the .content attribute. Note how we had to add https:// before the link, if you don't do this, requests will complain (but it gives you a pretty descriptive error code)."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"image_link = requests.get('https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/250px-Deep_Blue.jpg')"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"b'\\xff\\xd8\\xff\\xe1\\x00\\x80Exif\\x00\\x00MM\\x00*\\x00\\x00\\x00\\x08\\x00\\x05\\x01\\x1a\\x00\\x05\\x00\\x00\\x00\\x01\\x00\\x00\\x00J\\x01\\x1b\\x00\\x05\\x00\\x00\\x00\\x01\\x00\\x00\\x00R\\x01(\\x00\\x03\\x00\\x00\\x00\\x01\\x00\\x02\\x00\\x00\\x01;\\x00\\x02\\x00\\x00\\x00\\x1e\\x00\\x00\\x00Z\\x02\\x13\\x00\\x03\\x00\\x00\\x00\\x01\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00H\\x00\\x00\\x00\\x01\\x00\\x00\\x00H\\x00\\x00\\x00\\x01Jim Gardner - thejimmyjob.com\\x00\\xff\\xe2\\x02@ICC_PROFILE\\x00\\x01\\x01\\x00\\x00\\x020ADBE\\x02\\x10\\x00\\x00mntrRGB XYZ \\x07\\xcf\\x00\\x06\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00acspAPPL\\x00\\x00\\x00\\x00none\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf6\\xd6\\x00\\x01\\x00\\x00\\x00\\x00\\xd3-ADBE\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\ncprt\\x00\\x00\\x00\\xfc\\x00\\x00\\x002desc\\x00\\x00\\x010\\x00\\x00\\x00kwtpt\\x00\\x00\\x01\\x9c\\x00\\x00\\x00\\x14bkpt\\x00\\x00\\x01\\xb0\\x00\\x00\\x00\\x14rTRC\\x00\\x00\\x01\\xc4\\x00\\x00\\x00\\x0egTRC\\x00\\x00\\x01\\xd4\\x00\\x00\\x00\\x0ebTRC\\x00\\x00\\x01\\xe4\\x00\\x00\\x00\\x0erXYZ\\x00\\x00\\x01\\xf4\\x00\\x00\\x00\\x14gXYZ\\x00\\x00\\x02\\x08\\x00\\x00\\x00\\x14bXYZ\\x00\\x00\\x02\\x1c\\x00\\x00\\x00\\x14text\\x00\\x00\\x00\\x00Copyright 1999 Adobe Systems Incorporated\\x00\\x00\\x00desc\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x11Adobe RGB (1998)\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00XYZ \\x00\\x00\\x00\\x00\\x00\\x00\\xf3Q\\x00\\x01\\x00\\x00\\x00\\x01\\x16\\xccXYZ \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00curv\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x023\\x00\\x00curv\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x023\\x00\\x00curv\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x023\\x00\\x00XYZ \\x00\\x00\\x00\\x00\\x00\\x00\\x9c\\x18\\x00\\x00O\\xa5\\x00\\x00\\x04\\xfcXYZ \\x00\\x00\\x00\\x00\\x00\\x004\\x8d\\x00\\x00\\xa0,\\x00\\x00\\x0f\\x95XYZ \\x00\\x00\\x00\\x00\\x00\\x00&1\\x00\\x00\\x10/\\x00\\x00\\xbe\\x9c\\xff\\xdb\\x00C\\x00\\x04\\x03\\x03\\x04\\x03\\x03\\x04\\x04\\x03\\x04\\x05\\x04\\x04\\x05\\x06\\n\\x07\\x06\\x06\\x06\\x06\\r\\t\\n\\x08\\n\\x0f\\r\\x10\\x10\\x0f\\r\\x0f\\x0e\\x11\\x13\\x18\\x14\\x11\\x12\\x17\\x12\\x0e\\x0f\\x15\\x1c\\x15\\x17\\x19\\x19\\x1b\\x1b\\x1b\\x10\\x14\\x1d\\x1f\\x1d\\x1a\\x1f\\x18\\x1a\\x1b\\x1a\\xff\\xdb\\x00C\\x01\\x04\\x05\\x05\\x06\\x05\\x06\\x0c\\x07\\x07\\x0c\\x1a\\x11\\x0f\\x11\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\x1a\\xff\\xc0\\x00\\x11\\x08\\x01x\\x00\\xfa\\x03\\x01\"\\x00\\x02\\x11\\x01\\x03\\x11\\x01\\xff\\xc4\\x00\\x1d\\x00\\x00\\x00\\x06\\x03\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\xff\\xc4\\x00[\\x10\\x00\\x01\\x03\\x02\\x04\\x03\\x04\\x05\\x08\\x05\\x07\\x08\\x06\\x07\\t\\x00\\x01\\x02\\x03\\x11\\x00\\x04\\x05\\x12!1\\x06AQ\\x07\\x13\"a\\x08\\x14q\\x81\\x91#2B\\xa1\\xb1\\xc1\\xd1\\xf0\\x15$3Rb\\x16%4Cr\\x92\\xe1&cs\\x82\\x83\\xa2\\xb2\\xf16d\\x93\\xa3\\xc2\\xc3\\t\\x17\\x185DT\\xd2\\'7St\\x84\\x85\\x94\\xd3\\xe2\\xff\\xc4\\x00\\x1b\\x01\\x00\\x03\\x01\\x01\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\xff\\xc4\\x007\\x11\\x00\\x02\\x02\\x02\\x01\\x03\\x01\\x06\\x04\\x04\\x04\\x07\\x00\\x00\\x00\\x00\\x00\\x01\\x02\\x11\\x03!1\\x04\\x12AQ\\x05\\x13\"aq\\xb12\\x91\\xc1\\xf0\\x14#R\\x813\\xa1\\xd1\\xe1$4B\\x82\\x92\\xb2\\xf1\\xff\\xda\\x00\\x0c\\x03\\x01\\x00\\x02\\x11\\x03\\x11\\x00?\\x00\\xd8X\\xaflx?\\xe9n\\x1b\\xbc\\xc5\\xec\\xee,[\\xb4\\xc4\\xd8u\\xd7\\x11\\x0f$&`\\x91\\x1a\\xe95\\xd2\\xd8\\x1f\\x11\\xe1\\x1cOj\\xbb\\xce\\x1e\\xc4X\\xc4m\\x92\\xe1B\\x96\\xca\\xa7*\\xb7\\xcaF\\xe0\\xf9\\x1a\\xf3\\x83\\x1f\\xc6\\x9b\\xbfv\\xd9\\xa7RQl.A\\xb8\\xee\\xd4\\n\\xb2\\x7f\\x0f\\x9e\\xdf\\n\\xea\\xff\\x00E\\x07\\x15\\xfc\\x98\\xe2F\\x94I\\xc9\\x89 \\xfcZ\\x1f\\x85{\\x9dw\\xb2\\xb0\\xf4\\xfd>L\\xd0\\xb4\\xe2\\xd6\\xbco_]\\x1egG\\xed\\x1c\\xd9\\xf3C\\x1c\\xe9\\xa6\\x9f\\xd7Tt&\\xf4\\xaa@\\xa5M|\\xb9\\xef\\x8a\\x14t\\x91F(\\x13#\\xe2\\x18u\\x9e/d\\xfd\\x8e+j\\xcd\\xed\\x9b\\xe9\\xca\\xeb\\x0f\\xb6\\x16\\x85\\x8d\\xf5\\x07\\xcf_h\\xacX\\xdbq\\x07\\x07\\xad\\xe7\\xac\\x1c\\xbb\\xe2\\xbc\\x04$\\xa8X:\\xb4\\xab\\x10\\xb5\\x8eL\\xba\\xa2=a?\\xc2\\xe9\\xef\\x06\\xb0\\xb5\\xe8\\x9a\\xcc\\x85*\\xa8WD\\x1c#\\x1c\\xc3\\xf1\\xd6\\x16\\xf6\\x13t\\x9b\\x84\\xb4\\xac\\x8f\"\\n\\x1ce\\x7f\\xb8\\xe3j\\x01M\\xab\\xf8T\\x01\\xab\\n\\xa2\\xc6xW\\x0f\\xc6o\\x18\\xc4\\x17\\xdfX\\xe2\\xf6\\xc3+\\x18\\x8d\\x9a\\xfb\\xbb\\x84&g)T\\x10\\xe2:\\xa1aH<\\xc5@N7\\x8c\\xf0\\xeb\\x0e\\xab\\x8b\\xedQ{d\\xcc\\x9f\\xd2xS\\x0bT sv\\xdbU\\xa0\\xf5(.\\r\\t9\\x06\\x81\\x8a\\xaf\\x83,\\xac\\x13\\xb5\\x0b\\x84\\xdb\\xe1\\xf8z\\x8aTT\\x95_/N\\x83\\x0e\\xb9\\'\\xee\\xac\\xce\\xc2\\xfe\\xd3\\x14\\xb3b\\xf7\\x0c\\xbab\\xf6\\xce\\xe19\\xd9}\\x87\\x03\\x8d\\xb8\\x9e\\xa9P\\xd0\\x8a\\xc2;W\\xd3\\x07\\xb7X1\\x95\\xbcCY\\x80?\\x9b\\xae7\\xa6(\\xfe\"^\\x1d\\xc3\\xd8\\xbe\\n\\x9e\\xfb\\x85\\xb1d\\x9bW\\x12\\x14\\xbc3\\x12\\nz\\xdd\\x0b)I%\\x87\\x07\\xca4\\x99\\x9f\\x07\\x8d\\x1c\\x92\\x94T\\x8c\\x1f\\x85\\xdc\\xe1\\xdc\\x1b\\x1bU\\xee\"\\xbcR\\xfe\\xf8>\\xf3\\xef\\x96\\x83I\\x13\\xde(!(\\x1b\\x00V\\xae\\xa4\\xce\\xb5\\x90\\xe1\\x80\\x8b6\\x81\\xe4\\x84\\r\\xbf\\x814\\xacDN\\x1fx?\\xcc9\\xff\\x00\\t\\xa6\\x81\\xb6D\\xb3O\\xc8\\xb5\\xfd\\x84\\xfd\\x82\\xa4\\x94\\x17\\xd2C\\x85d|\\x9c\\xe5\\x03a\\xf0\\xa3M\\xd3\\xa6\\xe3\\xb9Gv\\xf1\\x1f<\\xa4\\x10\\x11\\xe4N\\xba\\xf9oQ\\xaf[\\xbb\\xb8\\xc4\\xac\\x12\\x87Qmj\\x0b\\xa5\\xe4\\xe4\\xcc\\xe3\\xa0\\x00\\x00\\n\\x9f\\x00\\x93&$\\x98\\x1bkU\\x1cc\\xc7\\xf8\\x07g\\xf6\\xac\\xa3\\x12qn\\xdf<\\x93\\xeaXU\\x93}\\xed\\xdd\\xd1\\xe8\\xdbCX\\x9d\\n\\x8c$\\x13\\xaa\\x85tv\\xdd%\\xc9\\xcc\\xe4\\xa3m\\xe9\\x193W*w47\\xf3\\x14Ra\\\\\\xc5C\\xc3\\xf8\\x93\\x08\\xc5\\x9cy\\xac/\\x14\\xb2\\xbdu\\x85\\x94<\\xdd\\xbd\\xca\\x1dSj\\x06\\nT\\x12L\\x10yV\\t\\x8a\\xf0\\xc6?\\xc6\\x98\\x963\\x87c\\xf8\\x9bxo\\x08^[\\xe5n\\xc7\\r+n\\xe9k\\x0e4\\xa5\\x97\\x9e\\x9d\\x88J\\x90P\\x88IJ\\xd4\\x0ej\\xcc\\xb0.\\x1a\\xc1xO\\x0en\\xcb\\x87\\xf0\\xebL2\\xcd\\x94\\x80\\x12\\xd3I@\\x00u4\\xdc\"\\x97;%NM\\xf1\\xa2\\xeb\\xbe@\\xdd@{iAIP\\x94\\x90G\\x91\\xaa\\x87qR\\xe2\\xbb\\xbc=\\xbe\\xf5G\\xfa\\xc5\\x0f\\x0f\\xb8n~\\xcf:S6\\xef!EwW.gV\\xe9J\\xbe\\xed\\x85E\\x17\\xdde\\xb5\\na\\x05\\xc5j<#\\xce\\x9f\\x1bk\\xadI@\\xa1B\\x85\\x03\\x05\\n\\x14(\\x00P\\xa2R\\x82\\x04\\xa8\\x80<\\xe9\\x1d\\xf2z/\\xfb\\x86\\x95\\xa4\\x07\\x92\\xd8\\xab\\xc5+Y*\\x1a9\\x1eS;Wd\\xfa%\\xdcw\\x98w\\x17\"f/-\\xd7\\xbfT\\x1a\\xe2ln\\xf1)[\\xa4\\x1f\\x9a\\xa3\\xec\\x99\\xae\\xc5\\xf4?\\xb9\\x0e\\x0e1D\\x89\\xfdMz\\x1eP\\xb1_y\\xedE~\\xcf\\xea>]\\xbf\\xfb\\x1f#\\xec\\xc7\\xff\\x00\\x19\\x87\\xe9/\\xb1\\xd4\\xa2\\x8e\\x929R\\xab\\xf3\\x83\\xee\\xd8\\xaa1I\\x14\\xa1A,:V\\xe6\\x06\\xb4\\x9a\\xe3\\xafK\\x8e\\xd5\\xf8\\xd3\\x85x\\xef\\x0e\\xe1\\xbe\\x17\\xe2+\\xbc\\x13\\n{\\x02f\\xf1\\xc4X\\x84\\xb6\\xeb\\x8e\\xad\\xe7\\x90Iv\\n\\x80\\xca\\xda`$\\x883\\xee\\xa2N\\xc9\\xc8\\xaf\\xdd42\\xa9:\\xc4y\\xc8\\xaf#o\\xb1+\\xacV\\xf3\\x06\\xbc~\\xe5\\xf3\\xe6\\xb57 t\\x03A\\xb0\\x00W\\x0c\\xa8\\xf4\\x07\\x9cM\\x1c\\xf8\\x86\\x9a\\x08\\xd8\\xed\\xe7[\\xf74\\xa8\\xe6\\xf7{\\xbf\\'\\x7f\\x1fL\\xae\\xcb\\xed][\\x8d\\xbb\\x8f\\xdcf.e\\t\\xc1\\\\N\\xea\\x99\\xf1\\x11\\xa7\\xd7\\xec\\xa8/\\xfac\\xf6st\\xe0U\\xd3\\\\R\\xf2F\\xa1\\t\\xc2\\x12\\x94\\x8f ;\\xcd\\xfc\\xcdp\\x8aI\\x98\\xe6`@\\xf7\\xd3\\x8d\\x91\\xb2D\\xecL\\x8a/cQ=\\x13\\xc0}+\\xfb)\\xc4m\\xd8*\\xc6\\xeep\\x05:\\xbc\\x8aN\\'\\x87<\\xd7vcu\\xb8\\x01BA\\xd7\\\\\\xd1\\xa7*\\xde\\xec\\xb6\\xdeD\\xad\\xb2\\x1c\\n\\x00\\x85L\\x82:\\x8a\\xf1\\xf9\\xe5\\x93\\x86]\\t\\xd7!\\xdb\\xfb\\x06\\xbd\\x80\\xb3\\x19m\\x18\\x07\\x93i\\x1fP\\xa8kVR\\xe6\\x87\\xe8P\\xa1RX(P\\xa2\"M \\x04\\xd1\\x1c\\xc7\\xf8G\\xc6\\x80I\\n&|<\\x84P9\\xf3\\x88\\xcb\\x925\\xeb4\\xb6\\xf9\\x00\\x83i\\x06wWS\\xad*<\\xe9\\nR\\xc2\\xd0\\x12\\x8c\\xc9?9Y\\xa3/\\xbb\\x9d/Zz@y\\x15\\xdaO\\x03qG\\x03\\\\\\x06\\xb8\\xbf\\x05\\xbb\\xc2\\x85\\xc2\\xdc6\\xae8\\x12\\xa6\\x9f\\xca\\x04\\x94-$\\x85\\x00\\x08>\\xfa\\xdf\\xbe\\x8c\\x17\\x17?\\xca>!f\\xcb\\x8c\\x9e\\xc0\\xdew\\x0f\\xb7q\\x16\\xa9\\x16\\xae%\\xe8:\\xcbo\\t%3\\xa1I\\x1a(\\xef\"\\xb4Wi\\xb6\\x0fX\\xf1F+\\x839i\\x88\\xe0\\xb6\\xb6\\x0f\\x10\\xc6\\x0f\\x89\\xdf*\\xe1xxZ\\x10\\xa5%\\'1\\x04\\x12d(|\\xe4\\x94\\x9a\\xc9\\xfb9\\xe2tp\\xb5\\xc3\\x8b\\xe2\\x1e\\x01\\xc1x\\xee\\xd5l\\xb6\\x93ox\\x12\\xdb\\x8d\\x14\\x13\\x95\\xc48P\\xb10H\" \\x88\\xd7M~\\xdf\\xaa\\x9c\\xb2\\xf4\\x19S\\xdb\\x92O\\\\s~\\xaf\\xc7\\xcd\\xfdO\\x99\\xe9\\xa1\\x0c]v>\\xdd(\\xda\\xde\\xfcW\\xa2\\xfd\\x0e\\xf2\\xb4\\xbb\\xe2\\xdbp\\xbbuqw\\x0c_]\\xc9X\\x0fa\\x19\\x14\\x96\\xf9JQs\\'\\x96\\xb5 \\xe2>\\xdf\\xeen\\x14c|b\\x86\\x99Rxw\\x05\\xbf\\xccuqN\\xcc\\xe4\\xe3Z_\\xbf\\xcc\\xd2\\xb7\\nR\\x18uHNu\\xa59\\x90\\x8d\\xf3\\x18\\xd0i\\xd7o}t\\xad\\xc7d\\x1c6\\xfd\\x9f\\x16\\x96{:\\xc7p\\xc7\\xb0\\xeb\\x0b+\\xab\\x05=\\x89]\\xa8\\xbe\\xeb\\xd6*\\xb8S)\\x94\\xe5\\x94\\xba\\x80\\xca\\x82\\xc8\\x071\\x12\\x95\\x14\\xd76\\xf7A\\xf0\\xebJ\\x8c\\xabL(\\x1f\\x9b\\xa8\\xfb)\\xfb\\xfcC\\x16\\xbc\\xb3\\xb8k\\x12\\xc6qk\\xd6\\x9dHC\\xcd\\xbd\\x8a>\\xb4\\xb8\\xdce\\x08P+\\x82\\x91\\xc8\\x1d\\x04\\xd6\\xd1\\xd1\\x93\\xbf\\x06\\xe9\\xeds\\xb3\\xce\\x15\\xe1~\\t\\xc7\\xb1^\\x14\\xc0\\x1d\\xf5\\xe6ql=\\x17HU\\xc3\\xcaW\\x0f\\xb6\\xebp\\xb6\\x95\\x98\\xf8\\x92\\xa7PR\\n\\xc4\\xfc\\xaau\\x10+Aw\\xe0\\xf8r\\xaegQ\\x02\\x90\\xf2\\xddu\\xe7\\x9eu\\xeb\\x87]|\\x8e\\xfdkyj.\\x11\\x11\\x9c\\x93\\xe3\"\\x04f\\x98\\xe5\\x14\\x95\\x15\\x08\\x82f7\\xe54\\xdb\\xb2~\\xa1\\x97!\\x07\\xc2t\\x14]\\xe1\\x19NUFn\\xa0l:\\xd3\\xabFU\\xad\\x08\\x95$\\x01\\x13\\xa7/\\xf1\\xa2\\x08%\\x0b^`r\\xc7=L\\xf4\\x1c\\xf6\\xa0\\n> Q\\x16\\xed\\x0c\\xa4j\\xa8\\x83\\xe5W-:\\xa1h\\xd0\\t\\xd0\\xa8\\xe6\\x19\\xa3\\x90\\xaaN!\\xfe\\x8c\\xd2\\x8e_\\xa5\\xe2\\'\\xcbz\\xb6j\\r\\xabPF``\\x19\\x8eB\\x9dX\\xacZ\\xf3~\\xee\\xbc\\xe0\\xe9\\xbfZI%$\\xf8\\x00\\xe7\\x13\\xb6\\xb4\\xb2\\x01\\x04i\\xa1\\x93\\xaf/e\\x12G\\x89\\x13*\\x131\\xcf}\\xa9\\xa13$\\xe0\\xd78Y\\x0e\\xe2\\xa9\\xe3\\xa6\\xd2ZS\\r\\x0b\\x15fy ;\\x99Y\\xf3)\\xa0T\\x94\\xe5\\xcb*\\x85\\x11\\xb8\\n\\x82\\r\\xd3w\\xdd\\x93\\xa40\\xab\\x94c\\xc5\\tX/\\xa1\\x0c\\x92\\xa2\\x95(\\x95\\x00S\\xe1\\xce\\x84\\x94$\\x11\\tY\\x0b\\xd1\"\\x05`/6\\x94\\xbc\\xf2\\x11\\x01!j\\t\\xd7\\x90&)\\x85\\xa5\\tHPY\\xcf\\x98\\xf8#a\\x1b\\xcf\\xb7J\\xb4\\xf4CL\\xd8VX\\xbff\\xcc\\xe2\\xf8j\\xee0\\xccAv\\x01\\xb6\\x85\\xea\\x16\\x95\\xa8\\xa5\\x7f#\\xde)\\t2\\x16\\x9c\\xe2\\xe2\\x12JImH\\x85%i\\x83\\x89\\\\\\xdd\\xdb\\xde\\xdf<\\xfd\\x95\\x93X{\\n)\\x08a\\xa7\\x14\\xa4\\x80\\x12\\x13\\x9b\\xc5\\xa8\\xcd\\x19\\xcav\\x05P*\\xb1 \\x1c\\xc3\\x91<\\xfa\\xd4\\xa6\\xe2S\\x94m\\xb0\\xcdN\\xef\\x91l\\x94\\xe8P\\xc2\\xae\\xde$\\x16\\xdb\\x00/\\xc6\\'T\\xa8\\x81\\x1b\\xf2?\\x92+\\xd8KgR\\xed\\xbb.6\\x0eE\\xa1*Na\\x06\\x08\\xaf\\x1dn\\x88\\x18=\\xeaJ\\x02\\x94\\xa8\\x01z\\xe8r\\xabO\\x7f\\xdd^\\xc4\\xdb \\xb6\\xc3I\\x93\\xe1BG\\xd5X\\xcemi\\r-\\xd8\\xf4\\xcd\\r(\\x8c\\xf24`\\x9a\\x84\\xf60\\xe8P\\xa4\\xaf4\\x0c\\x99fu\\x9a\\xd0\\x05SK\\xb9m\\xb3\\x94\\xab2\\xff\\x00u#1\\xf8\\n\\ng0\\xf9U\\xa9C\\xa00>\\xaaRP\\x94\\xa6\\x10\\x02S\\xd0\\x08\\xa2\\xc0g\\xbc\\xb8w\\xf6m\\xa5\\xa4\\xfe\\xf3\\x86O\\xc0~4}\\xc3\\xbc\\xee\\xdc\\x9f$\\xa3\\xf0\\xa9\\x03J\\x14}@\\xf3\\x13\\xb5\\xdb\\x1e\\x1a\\xb4\\xc7=O\\x06\\xe1\\xee#\\xc01Kee\\xbbg\\x1ew\\xbe.1\\xdd#\\xb9R3\\x15\\x14FR#1\\x11\\x10t\\x817\\x80\\xf8Z\\xcf\\x16\\xbf[7\\x16\\xae\\x84\\xa6\\xd4\\xad&\\xdd\\xd5\\xb4\\xa4\\x90\\xa1\\xa8RMk;\\xfcB\\xea\\xea\\xfd\\xc5^\\xbc\\xfd\\xca\\xc0\\x08J\\x9eyN\\x14\\xa7p$\\x92cR}\\xe6\\xb7\\xefax\\x9ao\\xb8\\xa5m\\xe4\\xca\\xaf\\xd1\\xce\\xeb\\xd6\\nk\\xf4\\x1e\\xb3\\x0f\\xb8\\xe8f\\x9b\\xb6\\x93\\xdf\\xff\\x00v|gI\\x9dg\\xeb\\xe2\\xd2\\xa4\\xfc\\x16\\x03\\xb3\\xa6\\x922\\xda\\xe38\\xb5\\xb0;%\\xe2\\xdd\\xca~\\x0bD\\xfdu\\x19\\xde\\xcd\\xef\\xc8\\xca\\xdd\\xf6\\x15z\\x8f\\xdd\\xb9\\xb1[D\\xfb\\xd0\\xa2>\\xaa\\xe8\\xabv\\x1bRFt!ZsL\\xd3\\xaa\\xc1\\xac]\\xd5v\\x8d\\x13\\xe4\\x98\\xaf\\xcf\\xff\\x00\\x88\\xa3\\xee=\\xc1\\xcaw\\x1d\\x92-.\\x87O\\x0c\\xd88\\xe83\\xdfa\\xb7\\xe8m~\\xd1\\x99(P\\xf8\\xd5\\xbd\\x93\\\\a\\xc3\\xa9G\\xe8\\x9e%\\xed\\x07\\x02i\\x1b%Kv\\xf5\\x94\\xfb\\xa5\\xd4G\\xba\\xbaA|/\\x87\\xacx[[\\x7f\\xd9]%<.\\xca\\x04\\xb3p\\xe2\\x0f\\x98\\x14\\x9ehK\\x94/s%\\xc34\\x96\\x1d\\xdboixS\\xc9O\\xf2\\xdb\\x871\\xdc\\xa3F1\\xac16\\xee+\\xcaPY3\\xee\\xad%\\xe9\\x03\\xc7X\\xd7h\\xa2\\xf2\\x9di\\xe6\\xcb\\xeaPq9\\x84\\xa7Y\\x1b\\xa8nf\\xbbZ\\xe7\\x86\\xd6\\xf2J\\x1cq\\x9b\\x94\\x1d\\xd2\\xf3y\\x87\\xc0\\xcdr\\x17\\xa56\\x0e\\x9c\\x1b\\x8c\\xb8a\\xa6Xb\\xd9\\x0e`\\x92\\x12\\xcaBS\\xe1\\xba^\\xc0h \\xa8\\xfcOZW\\x06\\xf4>\\xd9G\\x93T\\xa1a\\x0e\\xab1 \\x10\\x9c\\xaa\\xcab#ZC\\xee\\x07-\\xfc\\x07Uh!<\\xf7\\x8f\\x85\\x01\\xfb#;\\x14\\x02gc\\xe1\\xa4\\xa53lDH\\x0b3\\xfd\\xd1R6B\\x8f\\x19\\xde(\\xcc\\x04\\xf4\\x11\\xd2i\\xc2\\x80\\xa5\\x004\\xd3x\\xf3\\xeb\\xf9\\x14JI\\x85BLI\\x9d4\\x8f\\xcc\\xd5$K\\t\\xd1\\x96\\xe1Y\\x89Q\\xca\\x83=|#\\xeb\\xa2\\xd8\\x10`k\\x04\\xc7\\xe3D\\xb5-\\xc5\\xa9n\\xf8\\x89\\x00O2\\x00\\x8f\\xb0P\\x8d\\xf4\\xd4\\x1dj\\xa8\\x82\\x97\\x88\\t\\xf5V\\x882\\xa5\\x15\\t\\xdb\\xe8\\xd5\\x9a\\tU\\xabz\\xc9\\x07R\\t\\xdf(\\xff\\x00\\x1a\\xac\\xe2\\x14\\xfe\\xa8\\xd4\\xccfP\\x926\\xf0\\xd5\\xb3^+V\\x8a\\xb3L\\x89\\xf0\\xcf!B\\xe4b\\x80\\xf2\\xe7\\xa7\\xe7\\xef\\xa5\\xb6\\x14\\xe3\\xcc\\xb7%jS\\xa9HH\\x1c\\xca\\x80\\x81\\x14a#\\xbbp\\x9f\\x9f09\\xc7\\xbf\\xcb\\xef\\xa6\\x8f\\xce\\x10\\x08\\x03Y\\x9f\\xcf:(V?\\x886Y\\xc4o\\x9bVd\\xf7w.\\xa5H \\x82!dA\\xe7\"*\\x19\\x078\\x19\\x8e\\xa2b\\x9fyKu\\xc5\\xba\\xf2\\xcb\\x8e\\xb8\\xb5-kR\\xa4\\xa8\\x9dI\\'\\xa9\\x93Hq\\n+\\x83\\xb7\\x98\\x1a\\xfeE\\x00\\xc0\\x88\"\\x08\\x91\\xccu\\xa9\\r\\xc9\\xcaA\\x99\\x03]\\xb4\\xd6\\x98\\t\\x19`\\xee:m\\xec\\xa9%\\x05\\x0e\\'0\\t \\x0f\\x08 \\x8euBa<\\xa5+\\x0e\\xbaBVHQ\\x03)\\xe6`\\x80~\\xbf\\xae\\xbd\\x8b[\\xad\\xdb\\xa4w\\xabJt\\x81\\xe7\\xec\\x15\\xe3{\\xb0\\xab\\x17\\xd0!AF\\x08\\xeb:G\\xd7^\\xc7\\xb5n\\xd3\\x1f\\xb2m) \\x04\\xce\\xe6\\x00\\x00k\\xee\\xacua\\xb1>\\xb2\\xe2\\xff\\x00`\\xc2\\x88\\xfd\\xe7<\\x03\\xe1\\xbf\\xd5D\\x19[\\xbf\\xb7x\\x90~\\x8b~\\x11\\xf8\\xfdu#5\\n\\x9e\\xed\\x8c0 \\x009Q\\xd0\\xa1[\\x08\\x14(P\\xa0\\x01B\\x85\\n\\x00\\xf2\\xe3\\xb5\\x94\\xe1\\xd6\\x18\\xad\\xa6\\x1c\\xd7\\x07`\\xdc3\\x8a\\xa5)\\xba]\\xd6\\t\\x8c*\\xf2\\xd6\\xea\\xdd\\xc4\\x90\\x94\\x80tJ\\x92\\xa4\\xee\\x0f]5\\x15\\x98v\\x00\\xef\\xf9f$\\tV\\x1fp&u\\xfa:}U\\xa9\\xb8\\xbf\\x83\\xb1N\\x0b\\xc5\\xd1i\\x8c\\xb1l\\xca\\xaem\\xd3sn\\xbb[\\xa6\\xee\\x1au\\xa2\\xa5\\'2V\\xd9#\\xe7!B7\\xd3j\\xd8\\xfd\\x84_ q\\xa5\\xb1Q)\\n\\xb4\\xb8\\x03\\xfb\\xa3\\xf0\\xaf\\xd0:\\xb5\\x18\\xfb?\"R\\xeeT\\xf7m\\xdf\\xe6\\xdf\\xdc\\xf8\\xde\\x9er\\xc9\\xed(JQ\\xedv\\xb5\\xfbH\\xeb\\xbb5\\xf8S\\xec\\xab&\\xd45\\xd7Z\\xc7\\xacoYR\\x13\\xf2\\x89\\x1aU\\xbb7(V\\xa1\\xc4\\xff\\x00z\\xbf3og\\xe8H\\xb3\\n\\x11\\xed\\xa3\\xcd\\xd6\\xa3%\\xc9\\x88 \\xfb\\xe6\\x95\\x9c\\xd4X\\x0f\\xc8\\xae6\\xf4\\xc6\\xf1q\\x7f\\x07+A\\xfc\\xce\\xf2~\\x17\\x7f\\xe3]\\x86\\x17\\xa0\\xd6\\xb8\\xf3\\xd3\\x08\\xff\\x00\\x94\\xfc\\x1c\\xad\\xff\\x00\\x9b.\\x92@\\xff\\x00\\xf3H\\xad1\\xbb\\x9aDM|&\\x93J\\xbc\\x00\\xff\\x00\\x9bI\\x81\\xec\\xdf\\xeb\\xa2L\\x8bd\\x13\\xb8rA\\xdf\\xe8\\x83\\xa5\\x1brZA\\x90e\\x94@\\xf7Q\\x83\\xfa\\xb2@\\x01$85\\x1c\\xc6A]\\x070\\xc2\\xcaI)$i\\xa4\\n,\\xc9\\xf2\\x8eZ\\xe9I\\xe7\\xb9\\x06~4\\x95j6\\xd4\\x8d\\xc1\\x8ah\\x04\\xe6\\x034+^\\x9eTa\\xc4I\\xda\\x00\\xfa\\xa9\\xdb\\xe0\\x94]\\x0c\\x80\\x0f\\xd5\\x982\\x04jP\\x994\\xcaH\\xee\\xdd%**\\x81\\x90\\xa5`\\t\\x9dg\\xae\\x9aUrJ)8\\x90\\x83d\\xd4\\x94\\xa4\\xa4\\xab]\\x80\\xf0\\xc5[[\\xc0\\xb6l\\x1f\\x0c\\x119\\x87\\xf0\\x8a\\xa8\\xe2\\x19M\\x9b|\\x88Y\\xd2\\x7f\\x86\\xad\\x98\\x1f\\xaa\\xb6:({\\xa5#Z\\x03l}P\\xa1\\xa2\\xd0Dh\\x0e\\xd4\\xd9)*\\xd0\\x84\\x913\\x07\\xce\\x81\\x1c\\xd4f|\\xa4\\xfbi\\xfb\\x04\\x83\\x88Y\\x88\\xff\\x00\\xe2\\x1b\\x06#\\xf7\\xc5\\x02\\xe0`\\x90\\x14%i\\xe67\\xa2_\\x9a\\x93\\xaf\\x9f\\xf8Q,\\x8c\\xce\\x04\\x88HR\\xb4\\x11\\xa6\\xa7J\\'\\x14\\x12\\xd22\\x02\\x08\\x92\\xa5\\xe6\\xd0\\x8d G(\\x83\\xf1\\xa6\\x84;\\xa1 \\x12\\x0c\\x9dL\\xedR\\xec\\xed\\xdc\\xbb}\\r0\\x92\\xb7HH\\x01#\\x96`>\\xd3P\\x90JP\\xb0\\x08\\x00\\xfc\\xedw\\xd6~\\xea\\xb6\\xc0\\xef\\x13\\x87\\xe2-\\xdc\\x90\\x95\\x00\\x83\\xe1S\\x99$\\xc8\\xe7\\x06\\x98\\x15N#*\\x1cei)P}))1\\xa7\\x8cs\\xe7^\\xca\\x1d\\xcdx\\xd9\\xde\\xfa\\xc3\\x9d\\xe4\\x04\\x97n\\x9a%;\\x8d\\\\O\\xe3\\xff\\x00*\\xf6L\\xefX>X\\xc1B\\x88\\xd1\\x8a\\xce\\xf61T(V\\x1f\\xc7\\xfd\\xa4`\\xfd\\x9cY\\xd9\\xdc\\xe3\\xc8\\xbbt\\xde:\\xa6\\x98j\\xd9\\xa0\\xa5-A%GU\\x14\\xa5:\\r\\xc9\\x15\\xd0\\xdd+d\\x99\\x85\\t\\xad\\n\\xbe\\xd8{@\\xe2\\x92Q\\xc0=\\x9f\\xbc\\xd3*$7w\\x88\\x12\\xa4\\xa8r#T7\\xff\\x00xi\\x8f\\xfd\\\\v\\xb5\\xc6jI\\xe3N2N\\x0bh\\xa9\\x9b\\\\9\\xf5$\\x81\\xd0\\x86Cs\\xefqu\\x97\\xbd\\xbf\\xc2\\xac\\xae\\xd7\\xe4\\xdc\\x9cC\\xc6\\x9c;\\xc2m\\x95\\xf1.9\\x87a#.`.\\xae\\x90\\xda\\x94<\\x92L\\x9fp\\xac\\x05^\\x92\\xdd\\x99\\xa5D~\\x9f}PbS\\x85]\\x90}\\x87\\xba\\xd6\\xa0\\xe0\\x1e\\x8c\\\\\\x17\\x858\\x1f\\xc4\\xfds\\x17\\xb9:\\xb8\\xa7\\x1d\\xeeR\\xb3\\xd4\\xf7p\\xa3\\xfe\\xb2\\x8dg\\x88\\xec\\xbb\\x83\\x1bBP\\x9e\\x19\\xc2\\xe1 \\x016\\xc9\\'\\xe2u4\\x7f1\\xfc\\x87Q\\xf5<\\x9e\\xb8)m\\xe5\\x04$$e\\x06#j\\xd8\\xbd\\x88\\\\\\x7f\\x96\\xd6\\x00\\x12e\\x9b\\x89\\x8d\\xbeekG\\x9dB\\xee>M\\xc4\\xa8e\\x04\\xe4T\\xfb\\xeb=\\xecY\\xc8\\xe3l6gT>\\x06\\xbf\\xe6\\xcd~\\x9f\\xed\\x7f\\xf9|\\x9fG\\xf6>\\x13\\xd9\\x91\\xae\\xa7\\x1f\\xd5\\x1dkd\\xf1\\xca\\x92O*\\xb3i\\xef\\x7f\\xb6\\xb1\\xfb\\x17IBcM\\x05Z4\\xe6\\x9a\\xd7\\xe4\\x92\\xe4\\xfd0\\xb3\\x0f\\x91\\x10ib\\xf5\\xc4\\xea\\x97T\\x07\\xf6\\x8dV\\xae\\xe0 x\\xb4\\xf2\\xa8\\xab\\xb9S\\x866\\x02\\xa0,\\xbb8\\xcd\\xc0\\x90\\xdb\\xca\\xe9&\\rsW\\xa6\\x03h\\x18\\xa7\\x01=\\x073\\xf8m\\xe1_9>\\xb0\\xd6\\xbf]o\\xc6\\xd7\\xa8\\xad\\r\\xe9v\\x7f\\xfb\\xbb_3a\\x88\\'\\xfe\\xf9\\x8a\\xe9\\xc2\\xbe4a\\x91\\xfc&\\x8fh\\xfc\\x93{h\\xcau\\x8eQA\\xb2=]\\xb9\\x123$\\xed\\xfc\\x14\\x19PU\\xb3D\\xed\\xdc\\xa6`{iI\\x94\\xd9\\xa0g\\x9f\\x1aL\\x7f\\xa9\\xcb\\xea\\xf8WS9H\\x8a\\x92`\\x13\\x04\\xc9\"\\x8fA%$\\xc8\\xd0\\xe9\\x06\\x94F\\xbb\\xf3\\xf0\\xc6\\xa0\\t\\xa0\\xaf\\x9cJ\\x94H\\xeaF\\xd4\\xe8.\\x82\\xbd)[\\xa8-\\xaf8\\xf5vA1\\xb1\\x08\\x13\\xef\\x91LhS:D\\x98\\x8d`\\xfef\\x96S\\xa4\\xa9z\\x9d&\\x82\\x93\\x02\\x04\\xe5\\x07\\xf2*\\x99%\\x17\\x10\\x10\\xab\\x16\\xc9\\x03\\xe7\\x1f`\\xf0\\xfev\\xabvu\\xb4n5\\xd50#\\xf8EUq\\x12b\\xc9\\xa2\\x12\\x0c\\xb8L\\x93\\xcf)\\xab[c6\\x8dk\\x00\\x94\\x9dw\\x1e\\x11\\xcf\\xa5/ \\x98\\xbc\\xa4\\xe7<\\xb9\\xaa\\xac8yL\\xa7\\x89\\xb0U\\xdf-,Z#\\x11\\xb6/\\xadcD :\\x92\\xa5\\x1f(\\xde\\xa2\\x13\\t-\\xc8\\x00\\x91\\xbcS%!FD\\x193\\xbc\\x89\\xa6\\x85b\\x15\\xa3\\xae\\x10d\\x97\\x1c\"6#1\\x88\\xf7E=gcq\\x89\\xdf\\xb1c\\x85[=}{p\\xa2\\x8b{{t\\xe7q\\xd5y\\x0f\\xc8\\xe7M\\xf8U\\xcc\\xcc\\xce\\xa6*\\xe7\\x86x\\x92\\xe3\\x86\\xb1\\x05\\xdd4\\xdf\\xad[\\\\\\xb0Y\\xbc\\xb5\\xef\\x94\\xcf~\\x8d\\xd3\\x0e$gmHp%aI \\xcacbAk\\xe6&dW\\xbd\\x96\\xe2v\\xd6xR\\xadolo1\\x0b\\xb7\\x9cC\\xf6\\xc8\\xb8@\\xf5t\\xe6\\xca\\x85\\xeb\\n#0Z\\x17\\xa0(Z\\x08\\xd4\\x10k\\x0cNd8RAJ\\xd0\\xa2\\x95\\t\\x98P$\\x11\\xf1\\x9a\\xcd\\xb1\\x8e\\xd7q\\x8can:\\x9b\\x1bKk\\xb7\\x12\\xa2\\xf3\\xa4\\x97W\\x9f>\\xedU\\xfa\\x97\\xb41C\\x17K8AR\\xa7\\xf6>\\'\\xa3\\xcd<\\xdd\\\\\\'\\'\\xbb_s\\xacl\\x1c\\xf0$\\xcciVm\\xdc\\xa1\"\\x02\\xa4\\x8e\\x95\\x8bX\\xde-\\xc6\\xd2\\x12yo\\xcej\\xd1\\x83\\xa4\\xc9\\xaf\\xca\\xdcv~\\x87\\xdd\\xa2\\xc4\\xbaTd\\xaa\\x94\\x95\\x1e\\xbbi\\xec\\xa8\\xa1_\\x93K\\n\\xe5\\xa4\\xf9\\xd2\\xa0\\xb2kj\\xd7\\x97\\xb2+Gz[\\t\\xb1\\xec\\xedc~\\xe3\\x11H1\\xb7\\x8d\\x8a\\xddHQ\\x04t\\xad\\'\\xe9d\\t\\xc1{;Y:\\xa4\\xe2i\\xf6\\xe8\\xc9\\xadq~4e\\x91\\xfc&\\x8e\\xb7\\xfe\\x8dnG\\xd2dr\\xf34\\x1a9\\xad\\x16\\x15\\n\\x87P\\x0f\\xf7M\\x0bC6\\xd6\\xfa\\xff\\x00W\\xff\\x00\\x88\\xd0d\\xfe\\xaa\\xac\\xe4~\\xd1\\x03o\\xe15\\xd6\\xceA\\x82\\xea\\xa7\\x94\\x9d<\\xfe4\\x0b\\x8a\\x91\\xa0\\n\\x03m\\xbd\\xd4\\x89\\x81\\xb8\\x9c\\xda\\x9f\\xb2\\x8c\\x03\\x98\\x082N\\xa3\\xec\\xa0b\\xdc\\x0bd$,&\\x1de/&5\\x94\\xabo\\xbe\\x92\\x02\\x9cJ\\xd6\\x86\\xca\\xc2\\x13*!\\x12\\x07!?W\\xbe\\xa7c\\x8c\\x86N\\x0c\\x12O\\xcb`\\xb6o\\x193\\xaa\\xb3\\xccyiU\\xe9QB\\x14\\x06`\\x142\\x9dH\\x94\\xfd\\xfe\\xfarU\\xa2J^\"\\xfe\\x84\\x82\\xe1HH\\\\\\xeab4\\xab\\x1b2}M\\x930@H\\x81\\xfd\\x9a\\xad\\xe2$\\xcd\\x8a\\x0c\\xff\\x00[\\xbcF\\x99L\\x9a\\xb2\\xb3\\xfe\\x86\\xd8\\xd8\\xca`\\x1f\\xec\\x8a\\x00}KV\\xa3M\\xf5\\xd3\\xeb\\xf6PnT\\xf3i*\\x82\\xa5\\x011\\xb6\\xb0M\\x05\\x91\\x04\\x13:l~\\xefu)\\x93\\x17v\\xc9p\\x94\\x82\\xf2\\x02\\xa2?xS\\xd3\\x01\\xb3\\x9cJd\\x12\\x92A=`\\xc6\\x94km\\xc0\\xd2\\x1c)XmeII#C\\x1b\\xfd\\xb4\\xab\\x84\\xa5\\x177\"s\\x04\\xbe\\xe2A\\x8d\\xc0Q\\xf8mM)\\x1a\\xa8xI\\x02t;\\xd0&-\\x1e0L\\x89\\x03A\\xcf\\x96\\xb4\\xb4\\xe8\\xa4\\xc4\\t\\x00\\x03H\\x9d|J&OJt\\xfc\\xf4f\\xd0\\x84\\'C\\xf1\\xa2\\x80k\\x04\\x8f\\xd2\\xf8RI\\x90q[?=\\xee\\x1b\\xafe\\x08\\x93^7p\\xd2s\\xe3\\xf8\\x12\\x02L+\\x19\\xb1I\\x9e\\xbe\\xb2\\xd5{ t5\\xcd&R\\x1at\\x1c\\xc3NT\\x9e\\x9e\\xdaqj\\x13\\xafJ)\\x12=\\xb5\\x9d\"\\x87\\xea=\\xca\\x82Jd\\x81\\xbdH\\xadY\\xda\\xd7\\x125\\x81\\xdea\\r\\xdc\\xe3\\xd8\\xbe\\n\\x87\\x19\\xb8p#\\x0f\\xb9\\xb2e7%%\\xbf\\x02\\xd5p\\n\\x93\\xbe\\x8aL\\x01&H\\xd2\\xba\\xd67\\x95\\xf6\\xa7FR\\x97b\\xee60X;\\x19\\xa3\\x95~\\xea\\xbe\\x06\\xb9]\\xde\\xd0\\xadB\\xaeY\\xb8\\xe2Lj\\xee\\xd6\\xe05\\x0e;\\xc6\\x8c1ql\\xa4\\x85\\x85\\x94z\\xbaJT\\x15\\xe0:\\xed\\xacF\\xc6\\xb1\\xce2\\xe1\\xeb\\x86\\xd6\\x8b\\x8b\\xec^\\xe74\\xa4\\xa9\\xde?\\xc4\\xdd(\\x99\\x12\\x90\\xdbQ#\\xc2u\\xd3\\xef\\xe9^\\xcd\\xc9\\xf3\\x7fE\\x7f\\xa9\\xcb\\xfcl>K\\xea\\xeb\\xf4:\\xef\\xc5\\xfb\\xaa\\xf8Q\\xe5WC\\xf1\\x15\\xc1\\xe8\\xe0\\x8cg\\x13\\xb6\\xb2r\\xe3\\x15\\xc5\\xf14\\xdd\\xb4\\xda\\xdau\\xac;\\x15\\xb9C\\xe1z\\x05%Y@\\x82G2>\\x1a\\xd2\\xd3\\xd8\\xfe$\\xeaB\\xd3\\x87\\xe3\\xc5*\\x12?\\xc9\\x9b\\xa1\\xbf\\x91\\\\\\xfcu\\xad\\xe5\\xec\\xbc+\\xf1ek\\xfe\\xc9\\x19.\\xbb+V\\xb1\\xaf\\xfc\\x91\\xccO\\xb8\\xe2\\xd303\\x84\\xc0\\xd2\\xaf;6.\\x8e4\\xc3\\xf3\\x84\\xa5Y\\x9c\\x06\\t#\\xe6\\x9e\\xb5\\xb7\\xd5\\xd9\\xf6\\x04\\xb3\\x07\\x07\\xb7\\xe5\\xb1P\\xff\\x00\\xc5M`\\xdc\\x19\\x83\\xe1X\\xda\\xae,\\xac\\x10\\xc3\\xec\\xaf\\xe4\\xd6\\x1cV\\x80\\x88;\\x98;\\xd7\\xd1\\xf5\\xdd~<\\x98\\xa5\\xce\\xd3_\\x99\\xe4\\xf4}\\x0eLyb\\xedi\\xa6l\\x0c2Cbu\\x80*\\xf5\\x83\\xe0\\xd7\\xe3U6-%-\\x88\\x1c\\xb4\\xf2\\xabF\\xf4\\x00{k\\xe0\\xe4\\xb6}\\xa2d\\x99\\xfc\\xc5-+\\xdb\\xa7Z`\\x1d\\xb9}ta]\\x06\\xdb\\x1a\\xc8vLmpf\\xb4\\xdf\\xa5`\\xcf\\xc3\\x1c\\x00\\xad\\x15\\x178\\x9a5\\x1b|\\x9bG\\xee\\xad\\xbc\\x83\\xae\\xbe\\xcd+Q\\xfaR\\xa3?\\x06\\xf01\"Jq,A;\\xc7\\xf5\\t?ui\\x8f\\xf1#9\\xfe\\x13C\\xda\\xab\\xf5f$n\\xd91?\\xc4h2\\xa0m\\x97\\x94\\x80\\xa2\\xe24\\xf7+\\xf3\\xf0\\xa4\\xd9\\xa4\\x8b{\\x7f\\x0c\\x92\\x85H\\xd7\\xf7\\x8d-\\xa5\\x13f\\xebeC(q\\x04OXP\\x99\\xfb\\xab\\xad\\x9c\\xc3\\x11\\xb2eZ(\\x89\\x98 PT$\\x94\\xa3\\xe6\\xe8bf\\x94\\xa8J\\x86\\xa1\\x00\\r5\\xdb\\xf3\\xad,\\xc4\\xe5\\x911\\xb0?]\\x00&\\xee\\xed\\xdb\\xd1g\\xdf\\xe4\\x9b[F\\xec\\xda }\\x06\\xd4\\xa2\\'\\xccg:\\xfb)\\xa0D\\x18\\xd0\\x93N(\\x08$\\xc2\\x81\\x9es4aB`\\xa8\\x9du3\\xca\\x87\\xb1\\x148\\xfa\\x7fPA\\t\\xfa|\\xf9\\xc8\\xab+0\\x15f\\xd6\\xc6rl6\\xf0\\xefP\\xb8\\x90\\xa5Xr\\x01:\\xf7\\x9dg\\xe8\\x9a\\x9f`G\\xa9\\xb3\\xe2\\x80\\x02u\\xf2\\xcbH\\x7f!\\xf2\\x10\\x10\\xf2\\x94\\xaf\\x10#&\\xbb\\xf9\\xd1)}\\xd5\\xc0Sg1J\\xc2\\x92H\\xde\\x0e\\x9fe8\\xa2\\x00V\\xb0\\xa1\\xcb7:B\\x94$\\x80\\xad\\xfamU\\xc8\\x86\\x9dVgV\\xe2\\xe4\\x15\\xa9K \\x0e\\xa6~\\xfa\\x0bI\\xef\\x15\\xe7\\xca?<\\xfe\\xeap\\x90#P:\\xebI\\x90J@\\x822\\xf2$P\\x80\\x01 \\x81\\x9fQ\"F\\xc4\\x8e\\x7f\\x9f1N\\xab twEA\\xb0\\x91\\x978\\x00\\xf9H\\x1c\\xfd\\x94\\xde\\xc3pF\\xfa\\x18\\x9a}\\xf5\\xa9O\\x97\\x16\\xb2\\xb5\\xa9\\tR\\x96\\xaf\\xa4H\\x9dM/\"\\x0b\\x83\\x10\\x1e\\xe2\\xee\\x18h\\xee\\xac{\\x0e\\x07\\xdft\\xd5{\\x19\\x15\\xe3\\xefg\\x89+\\xe3\\xce\\x0c@\\x19\\xb3q.\\x18\\x00;\\x7fKg\\xf3\\xef\\xaf`\\xc01\\xacnv\\xac\\x9clc.&O\\xba\\x9a)2=\\xa3\\xed\\xa6q\\xcb\\x87\\xac\\xf0\\x9b\\xdb\\x8bU\\x04\\xbe\\xdb*Sd\\xa70\\n\\xe5\\xa7:\\x88\\xe6\\x1f\\x8a\\xa5\\xe6\\xd4\\x8ceE\\tZJ\\x90l\\x9b9\\x93\"D\\x88\\x89\\x1aMe\\xdb\\xb2\\xcb\\xda\\xe7\\x7fH\\xfe\\x0e\\xe2\\x0e+\\xc7xi|=`/\\x1b\\xb6\\xb3\\xbaK\\xab/!\\xbc\\xaaZ\\xda\\x81\\xa9\\xe8\\x93\\xf0\\xae\\x87\\xe4k\\x16\\xe3\\x061w\\x9ao\\xf9:\\xfb\\xcd]\\xa5:%(iI \\xa8I9\\xb5\\x90<\\xe2\\xbb1\\xf53\\xe9&\\xb2\\xc3\\x95\\xeb\\xf3\\xd1\\x8eL1\\xea \\xf1\\xcb\\x86r\\x03]\\x8b\\xf1\\xe3\\xd1\\x18m\\xaa\\x13\\xcf>\"\\x8f\\x8d[\\xe1\\xdd\\x82\\xf1\\x8b\\xb7v\\xca\\xc4Y\\xc3\\x93g\\xdf \\xdc\\x06\\xf1\\x1f\\x94-\\xe6\\xf1\\x04\\x9c\\x9111\\xe7\\x15\\xd2\\x1c?o\\xc4\\xf6\\xb7k\\xca>\\x80\\x1aFTh\\x04\\xeb4\\xfb\\xc0\\xa5\\xc4\\xc6\\xfd\\xd3p\\x7f\\xd5\\xfc\\xe9L.r\\x99\\x1b\\x0e[\\x7f\\x8d<\\xf9%\\xfd\\x06\\xbd\\xd27\\x00\\x18\\xc85\\xa7\\xe4L\\x9f\\xd9\\x90\\xef;H\\xe0D\\xe5\\xd7\\xf9S\\x85H\\x07\\xfe\\xb6\\xcd{\\x03^@\\xf6Q\\n\\xedK\\xb3\\xe4\\xce\\xaa\\xe2\\xac*S\\xd3\\xf5\\xa6\\xa3\\xec\\xaf_\\xab5\\xc8\\xfc\\x15\\\\B\\xb4\\x8c5m\\xb8\\tK\\xca\\r\\x92\\x0e\\xd3\\xcf\\xea\\xaa\\x8cC\\x1c\\xb6\\xc5\\x02\\xb0\\xd2\\xb4\\xdb\\xbe\\xb5!@\\x07\\x01Q\\xca\\xa0\\xa8\\x03N\\x91\\xef\\xa9\\xbc\\\\\\xac\\xb8cz\\xc4\\xbe\\x91\\xf5\\x1a\\xe7\\xfe \\xed\\x9f\\x82\\xb8/\\x8do\\xf0\\x9e*\\xe2+\\x8c>\\xea\\xddI.0p\\xd7\\xdeBT\\xb4\\xa5B\\x14\\x84\\x11\\xf3H:\\x1d&\\xae\\x11\\xb9X\\xdf\\x07F\\xa7\\x16\\n\\xfe\\xab\\xfd\\xfa\\xc4\\xf8\\xab\\x82\\xb0\\x8e/\\xbeU\\xfe\"\\xab\\x86\\xeeE\\x82\\xec\\x90[RHB\\x14\\xb0\\xa2\\xa1?J@\\xadV\\x8fI\\xce\\xc9@\\x95q\\x92\\x87\\xb7\\x08\\xbd\\xff\\x00\\xfa\\xa8\\xc7\\xa5\\x17dI\\x92x\\xdd\\x00G\\xd2\\xc2\\xef\\x07\\xfeUo\\x8f\\xdec}\\xd0m?\\x95\\xaf\\xb1\\x9b\\xedzi3ip\\xff\\x00\\x06\\xe1\\x9c9n\\x8bl-\\xc7Y\\xb6\\r8\\x85\\xb4\\x90\\x00[\\x8bPR\\x9c:\\xe8dm\\xb6\\xa7\\xadOg\\x02\\xb2\\xb7T\\xb6\\xeb\\xb9\\xba\\xe5Mj\\x14\\xfaQvG?\\xf4\\xea\\xdf\\xdf\\x87\\xdd\\x0f\\xfc\\xba_\\xfe\\xd3\\x9d\\x9299x\\xf6\\xcf\\xff\\x00\\xe2\\\\\\x0f\\xfc\\xba\\xc2]*\\x93nI\\xb7\\xea\\xed\\xbf\\xcd\\x9b,\\xd2J\\x93K\\xf27J\\xae\\xb0\\xdb\\x04\\xb6\\x9b\\x85\\xb6\\xc1Y\\t\\nu\\xfc\\xb9\\x89\\xe4$\\xd3\\x8al\\x05+\\xe5\\x1c\\x1a\\xed\\x9c\\xe9\\xf5\\xd6\\xa1\\xe1\\x9e\\xd2\\xbb>\\xed?\\x89\\x18\\xc2\\xb8g\\x8a\\x93\\x8a_%\\xa5\\xba-\\x98e\\xc4J\\x11\\x05D\\x95\\xa0DO]g\\x9dn \\xa8\\x1c\\xc5\\x12\\xc3\\x18R\\xa0Rr\\xd9\\xca!]cNu\\x92\\xe0j&\\xc4\\x03\\xc9\\xc5iX\\xb0\\xdfZ\\xc90#6j\\xe5\\xf2\\xa7O\\x85BF\\xcd\\x96\\xe0\\xd1\\x83#C\\xf5R@\\x13\\xe5F<\\xc5\\x14M\\x87:\\t:\\xd1\\xcfSE\\x11G\\xa6\\x94\\xa8V(\\x1e\\xa6\\xb47\\xa5\\x08\\xcd\\xc3X2\\xb5\\x91\\x8b\"=\\xec;\\xf8V\\xf8\\xdb\\x97\\x95h\\xbfI\\xa4\\xe6\\xe1\\x0c9_\\xb9\\x8c[\\xcf\\xbd\\xa7E:\\xd1-\\xd9\\xcd\\xf8noUnA\\x88Q\\xd4i\\xca\\x9f`\\x90\\xdd\\xd4\\xa8\\x10\\x14\\x91\\x90\\x8f=\\xe7\\xe1Q0\\xb5\\x91f\\xd8\\xd4\\x03\\x98+\\xdb\\x02\\xa44a7I\\xcc\\x06\\xa9\\x82Lk\\x9b\\xfcj\\x88\\n\\x08Q\\xe63f\\xd8\\x19\\xa0\\xbf\\x19*\\xcd\\xb9\\x91\\xee\\xfc\\xedM\\xadp\\xb5\\xce\\xb0\\xa26\\xdb\\xd8hw\\x87a\\x96I\"5\\xa7\\xa5\\xa0a\\xe4\\x05D\\x13\\xafR:\\x9ety\\x04\\x1dA\\xe7\\xa5\\x07\\x12\\xe3Ik\\xbdB\\x90\\x1cd:\\xd9 \\xf8\\xd0f\\x14:\\x8f\\t\\xd4t\\xa2J\\xb3\\x82@\\x905Q\\x03D\\x8fo\\xb4\\x8d\\xe90E^:2\\xd8f\\xe5\\x9d?G\\xc8\\xff\\x00\\xca\\xa6\\xd8\\x9c\\xd6LB\\x81$#\\x9f<\\xb5\\x07\\x1cQr\\xc0\\x82\\x00\\x05\\xc4\\xef\\xef\\xa9\\x96J\"\\xc1\\x92`\\xf8Q>g-\\x1e@\\x98\\x92KjI$\\xccjF\\xddi$f$\\xe6\\xd0\\xeb\\xaa|\\xfe\\xcaAqZ\\xc8O\\xe4\\xd3\\xd6\\x8c\\xbf}\\x7fmil\\xd9v\\xe2\\xe5\\xe42\\xda\\x02I*R\\xc8\\t\\x1and\\xd0\\xb8\\xd0\\r\\x94I\\x10f\\x0e\\xa0\\r\\xfc\\xa9+@0b`\\xc8\\x8a,\\xc4\\x0f\\x12aBF\\xdc\\xc1\\x8f\\xb4\\x1a\\x0e\\x82\\x80\\x85(e\\xcf9U\\x1a\\x18\\xd0\\xc5\\x1c\\x03\\x0eCyey`\\xe8\\xb0\\x9dG9\\x8e\\xa2\\x97xf\\xe1j\\xcf\\x9f\\xc0\\xee!~0\\xb3\\x89\\xe2\\x0c*\\xc7\\rmKP|K\\x9f\\xac8\\tV\\x9a\\x929\\xd6wd\\x18K\\xe1\\x08l\\x00\\x14\\x00\\x85\\x9d+\\x1a\\xe1lG\\'\\x19\\xe2\\x05\\x8c6\\xe4[\\\\\\xe0\\x8d<\\xe5\\xda\\x9cGv\\xd3\\x82\\xe5\\xd4\\x86r\\x18\\\\\\x90\\n\\xb3DF\\x87X\\xadWQ9Fv\\xf8_\\xa9\\xe9\\xce1\\xc4\\xd7dR\\xfe\\xc4\\xd3\\xc2m\\'\\x12m\\x93wy\\xdd\\x86\\x9dx\\xa3\\xbe!$\\x01):\\r\\x08=>\\xba\\x93g\\xc0\\xde\\xb2\\x8b_\\xd2\\x1c\\x13\\xc4\\xf7\\xa9\\\\\\x07..1\\xf6\\t)$jR\\x16\\x9d#\\xa0\\x06\\x07Zq\\xacv\\xed\\xfe1z\\xd5\\xfc4\\xb3b\\xde\\x0c\\xa7\\x1b\\xc4C\\x88\\xee\\xdcp\\x95fk$\\xcc\\xa5 *H\\x8db\\x98\\xb3\\xb4R0\\x8f\\xd2MZ`\\xf7\\x96\\x16\\xec\\x05\\xae\\xe9\\x8c\\x15\\x87t\\x11\\x9a\\no5#\\xc8}\\x950\\xcb9.}=L\\xf2\\xa8\\xc9[H\\xa4\\xe0<9\\xcb>\\xd6pVT\\xd1`[Xb\\xa8)Y\\nX\\x85\\xa1!*#r\\x9d\\x81\\xf3\\xae\\x80\\xf7\\xd6\\x95\\xe0\\xa5[\\xddv\\xb3osh\\x96\\xd2\\x95\\xe0\\xb7n\\x8e\\xee\\xdc\\xb2\\x92\\x14\\xe3`\\x10\\x82\\xa5G>f\\xb7H\\x14uro\"o\\xd0\\xe1\\xc4\\xbb#H\\xe5\\x04\\x9a\\xc8\\xf8{[g:\\x07\\x0e\\xde\\xc1X\\xda\\'I\\x1a\\x8e[\\xd6G\\xc3\\xc4\\xfa\\xbb\\xfeN\\x0f\\xb2\\xb8\\xe8\\xe9l\\xbaH\\xdfJT~f\\x92=\\xb4\\xa8\\xfc\\xefN\\x89l\\t\\x83\\xb1\\x9db\\x92\\x97\\xdbq\\xc56\\x95x\\xd2|@\\x88\\x8ar\\x01\\x1du\\xde\\x8f.\\xfaO\\xdbGh\\xacI\\x024\\xad/\\xe9\\x1e\\xd8s\\x83\\xad\\xc6\\xf9q[#\\xa9\\x8d\\xc3\\xa2\\xb7I\\x04\\x9d\\xabPzDJ8\\x1dN\\x10\\x95%\\x18\\x95\\x81 \\xed\\x05k\\x1f}9GD^\\xceQ\\xc3\\'\\xd5\\x90Rt\\x95nv\\xd0T\\x86\\x81\\x8b\\xd1\\xa9\\xd1:O\\xf1\\nc\\r\\xf0\\xdb\\x94\\x89\\xf0\\xb8D\\x91\\xca*C\"=o]`\\t\\xff\\x00XTQC\\x0e\\x02\\x14\\xa3\\xaf83@\\r\\x88$\\xfb4\\x9f\\xcf\\x95\\x1b\\x80\\x05/\\xc3*\\x99\\x06)N%%D6!$\\x08\\x19`\\x11\\xec\\xa4\\x80\\x95\\x8a+;x\"J\\x94\\xbc\\xb8Si \\x88\\x8f\\x96w\\xc3\\xec\\xd7\\xeb\\xa8aj\\x00\\x84\\xa8\\xc2\\x86U\\x0c\\xc4H\\xde\\x0f\\x96\\x83JS\\xabS\\x9d\\xd0p\\x98e\\xbe\\xed&d\\xc6bc\\xfd\\xe3I\\xd6\\x0c\\x8dI\\xe8E6\\xed\\x8b\\xc1Y\\x8c\\x98\\xc3\\xe4\\xfe\\xf2H\\x93\\xbdK\\xb0\\xfe\\x80\\xd0:\\x1c\\xad\\xfb>mD\\xc5\\xc1\\xf5\\x1dIL\\xad>\\xea\\x95a\\xa5\\x839@H\\x86\\xf6\\xf6oH\\t0f\\x0e\\xf2\\x08\\x93&\\xad\\xf8Y\\xd4Yqw\\x0e=s\\x9c7o\\x8cZ8\\xe6H*\\tK\\xe8&=\\xc0\\xd5l$2\\xb3\\x94%s)\\xd3\\xec\\xa2K\\xdd\\xcd\\xe2n\\x1a\\x04)\\xb7\\x83\\x89$\\x1dH3\\xf7P\\xb5\\xb1\\xbd\\xe8i_\\xb7t\\x98\\xd5\\xf7H3\\xbf\\x8dGQ\\xec4K\\'\\xc0\\x95\\x1d\\x131\\x1b|>\\xda\\x0b\\xf1-Z\\x8dTN\\xb3\\xd6h\\x97\\xaa\\x95\\x10\\'\\xaf\\xdb@Pfr\\x02v\\x1f\\xc5\\xb5*\\xeb\\xf6\\x8e\\x81\\xb6A\\xb7\\xf6E$\\xe5(\\xf1N@5\\x03z;\\xcf\\xda;\\xa10405\\xf0\\xef@Q{\\xd8\\xd8\\x9e\\xd8;8\\x06#\\xf9Qa\\x1e\\xe7\\x01\\xfb\\xab\\xd7\\xaa\\xf2\\x13\\xb1@U\\xdb/f\\xe0\\x12\\x82x\\x9a\\xcbT\\xef\\x01[k\\xe4\\x08\\xf6\\x13^\\xbb\\x14(\\xcf\\xca\\xac{\\x87\\xe1Qt\\xc4\\xb81\\xde5\\xd6\\xce\\xc8\\x7f\\xd6\\'\\xfd\\xc5W\\x9e\\xbd\\xb2:\\x0fj|~\\x1d\\nSj\\xe2KD\\x10\\x95\\xe52\\x1ah\\x0eF\\xbd\\x04\\xe30\\xa45b\\x14\\xe2\\x96\\x0b\\xca0@\\xfd\\xdf!\\\\\\x05\\xda\\x05\\xab\\x98\\xefk\\x9c}`\\xc9i\\x0e+\\x88\\x8b\\x88R\\xa6s4\\xda<>\\xc3\\xf6\\x8a\\xed\\xe9?\\xc4\\x14\\xe2\\xe7\\x1e\\xd5\\xbb:\\xe1\\xb5#\\xbfpwn\\x1f\\x1c~\\xd0~\\x15\\x8b\\x8b\\x86]\\xe3n)\\xc3\\x13\\x89\"\\xdb\\x11^\\x15h\\xebi\\x0e\\x02\\xf3M\\x15\\xae\\x16\\x13\\xcd2bz\\x98\\xadd\\xf7j\\xdcW\\x84!\\x91ym\\x82\\xad\\xd7\\x02\\xf2\\xa9kpg))\\x04\\xe9\\xa4\\xf8\\x87\\xd75\\x84\\xe3}\\xac\\xe3\\x17x\\x85\\xa6.\\xcd\\xf2p\\x97\\xefm\\x03w\\x96\\xe8\\x0c\\xa9_&\\x14\\x91\\x91JD\\xe4\\x0b\\xd4\\xa0\\xcc\\x89\\x13\\xce\\xb4\\xc5\\x82I\\xc97\\xca\\xfdQ\\xe8fj[\\xf4:A\\x18\\xbd\\x92\\xf1\\xb3f\\xce#n\\xe6#ga\\x9e\\xe5\\xa4\\xbe\\x12\\xf0\\x05\\'*\\xd6\\x91%\\x01PHP\\xf3#j\\xb6\\xba\\xb5\\xc4/xw\\x10\\xb9U\\xfe.\\xfd\\xa7\\xa8\\xadjP\\xc6\\xed\\xae\\x19p\\x04f$\\xe5i%\\\\\\xb5\\x07Q\\x11ZG\\xb3\\x9e)\\xbc\\xc5xN\\xc3\\x16\\xbb\\xbbo\\x14\\xc5\\xd8\\xbc\\xb8\\xb5\\xc4\\\\\\xb6Sv\\xae)\\xb2~G*\\xf2\\x85\\x04\\xeb)\\x8c\\xd9L\\x91\\xd2\\xb3\\x1cC\\x8a[E\\xbb\\xac\\\\;x\\xfd\\xe3\\xf6\\xaf$<\\x9e4\\xef\\xc0\"G\\xca\\xdb\\xe4JB\\xf7\\xcc\\x8c\\xa0L\\x81\\x1c\\xae\\x10\\xed\\x95&g\\x91\\x7f.\\xe8\\xbe\\xec\\x84\\xb9q\\xda\\x03n8\\xac\\xc9o\\x85\\x94\\xad\\xb5\\x05w\\t\\x06\\x7f\\xbb[\\xe3\\xf3\\xb5s\\xc7aw\\x06\\xeb\\xb4\\x1cID\\x08k\\x85m@\\x831\\x9e\\xe1F\\'\\x98\\xf0\\xd7C\\xfew\\xa5\\xd6\\xaa\\xce\\xd1\\xc1\\x8d\\xdc\\x139=\\x1b\\rt\\xac\\x8f\\x87c\\xba\\x7f]\\x96=\\xc2+\\x18C\\x89;\\x1c\\xd24\\x8a\\xc8p\\x07r\\xa6\\xe32\\x16\\x80Jc0\\x8e\\xb5\\xccl\\xcc\\x88E((t\\xd2\\xa1\\xfa\\xd0\\x03\\xa6\\xbb\\x9a\\x06\\xf29\\xc5\\x04\\x93\\xb3@\\xda\\x8c\\xaf\\x7f:\\xadU\\xf4\\x023\\x00|\\xe9\\x971\\x00>\\x96\\xbe\\xdaV\\x85L\\xb5\\xef\\x0c\\xef\\x15\\xa8}\"\\xe1]\\x9d\\xe2j\\x91\\xf2w6\\n<\\xff\\x00\\xaf\\x03_\\x8dlO\\xd2\\t\\x9d\\xd5Z\\xf7\\xb7R\\xc5\\xd7d\\xfcF\\xea\\x91.!Vj\\n\\x93\\xb0\\xb9G\\xe2iJJ\\xa8J.\\xceO\\xb1T7\\x04\\xc1\\x0b:\\x111\\xa6\\xd4\\xfbeY\\xef\\x13\\xaeR\\x8d\\xba\\xc1\\x1aT[3\\x91$j\\x08T\\xfdT\\xf3D%\\xcb\\x90#Ft\\xe5:\\x8eU\\x8f\\x83O!)\\xc0I\\nT@\\xf3\\xde\\x8c8\\x98&t\\xdfi\\xa6V\\xa3\\x98\\x89\\x93\\xac\\x19\\xa2I\\xd4\\x14\\xf9j5\\xa7z$\\x7f6\\xd3\\xae\\x9b\\r\\x7f?\\xe3J$k\\xa8\\x94\\x90v\\xdb\\xe1N_\\xb5l\\xc5\\xae\\x06\\xbbp\\xae\\xf1\\xfb%\\xaa\\xe6\\x15\\xfdh\\xb8q\"?\\xd4\\x08\\xd3\\xdbL\\xb4P\\x90\\xb0\\xe2I%\\'&S\\x00*t\\'\\xa8\\xdciM\\xe8\\x16\\xca\\xfcic\\xd4I\\x00\\x93\\x9d<\\xf7\\xd3\\xeb\\xe7R0\\xf5E\\x9bD\\x98\\x04#\\xcf\\\\\\xb5\\x13\\x161d\\xa0u9\\xd3\\xf1\\x9a~\\xc4\\x93\\x87\\xb2`|\\xd4{\\xf4\\xdb\\xca\\x90\\xfc\\x93\\xf3\\xa7)\\x82\\x0cl5\\xd66\\xa4\\x05$F\\xba}\\xb4\\xd1T\\x19=fF\\x9a\\xfe~\\xea\\xb2\\xe1\\xd6l\\xee\\xb1\\xfc:\\xdf\\x15R\\x91`\\xeb\\xcaK\\xea\\n\\xd4x\\x15\\x1a\\xff\\x00h&\\x85oA\\xc1\\x05J\\xdc\\x13\\x02#h\\xa2.A\\x12\\xa0\\x01\\xfe)\\x89\\xa8\\xac\\xa9j\\xb6eN&\\x1c\\xca3x\\xb6$k\\xec\\xa7\\x1eR\\nZ)IB\\xc2\\x0erN\\x8a3\\xcb\\xdd\\xa7\\xdfOb\\x1c\\xef\\x0b\\x7f(\\xda\\x8aV\\x83\\x98(h\\xad\\x0e\\xff\\x00\\x1a;\\xff\\x00\\x0b\\xf7@\\xef\\x04\\x1d7\\xd2\\x99\\x92\\x19\"\\x01 \\x1eR`\\x8aw\\x14$\\xdd^\\x12I \\x9e~T\\xb7c$vm\\x7f\\x88a]\\xa1\\xf0u\\xff\\x00\\x0fX3\\x8a\\xe2\\xf6\\xd8\\xd5\\xbb\\x96Vn\\xbd\\xdd&\\xe1\\xd0\\xa8Ke\\x7fFf\\'\\x91\\x89\\x9d\\x8f~\\xa3\\xb5\\xae\\xde\\xae\\xc96\\xdd\\x92`\\x16rL\\x0b\\x9e(B\\xa3\\xdb\\x00W\\tv(\\xd9w\\xb6N\\xcd\\xd2\\xe5\\x15\\xa4\\xf9\\x99&\\xbd1\\xef\\x1dmd\\xcaI$\\xf2\\x15\\xcb\\x9eRRTm\\x89E\\xad\\x98\\xd7\\x0c\\xf17h\\\\B\\x9b\\xb4v\\xab\\xc3XG\\x0f\\xae\\xddm+\\x0e^\\x17\\x88z\\xd2n\\x02\\x82\\x83\\xa1Z\\x92\\x92\\x98Lu\\xcczI\\xe3~)\\xc5\\x95a\\xdbW\\x1d\\xdd\\x97ChO\\x11\\xdd\\x85\\x15\\xac\\xa1)\\x80\\x90\\tP\\x04\\r\\xa3\\xdb\\x15\\xddO\\xba\\xe3\\xaaGx#,\\xc1\\x07\\xd9Z\\x97\\x1e\\xf4z\\xec\\xef\\x16\\xfeVq.+\\x84\\xe2\\x17\\x18\\x9b\\x88\\xbb\\xc4\\xde#\\x1b\\xb9i\\xb5\\xbd\\x91N\\x1f\\x02\\x14 \\x12\"\\x06\\xc2\\xbbz\\\\\\x8e)I\\x917\\xdb/\\x85\\xf0h\\xab\\x8e&\\xb7\\xc6\\xadl\\xac8\\x85\\xd6\\x97j\\x8cI\\xab\\x97.ZJ^Op[t*\\x16v\\xf1\\x14fO=:T\\x13\\xc7\\xc9\\xc0Wj\\xed\\xf7\\x0ea\\xdcT\\x85Z\\xb5n\\x9b\\x17\\xdbB[\\xb7!EEq\\x95r\\xa31\\xc8\\x8fa\\xaa\\x0bFxe\\xfbV\\x14x*\\xcd\\x1d\\xe2\\x12\\xa2\\x94\\xe3\\xf8\\xa4k\\xae\\x9f-O&\\xd7\\x87\\x08\\xf0\\xf0\\xa3H\\x13$\\'\\x1f\\xc4\\xa2}\\x9d\\xedz\\xaaO\\xc2\\xfb\\x04\\xfa\\x89N4\\xcc\\xfa\\xdb\\xb4\\x9c6\\xf2\\xd3\\x08S\\xd8\\x12pv\\x12\\xe2\\xdfr\\xc6\\xde\\xd8)\\xb6ITe\\x1e\\x009L\\xe5\\x1f;\\x9d]5\\x8epu\\xcb\\xcf^+\\x1e\\xe2Kg\\x1fy\\xc7\\x1eJ\\xf0KG\\x82B\\x959J\\xb3\\x05\\xa8k\\x01[\\xc0\\x13\\xa8\\xad^\\xdd\\x8e\\x04\\x07\\x87\\x02[c\\xe8\\xe5\\xe2\\x0c@G\\xfd\\xed8\\xc6\\r\\x82\\xdd\\xddZ6p\\xbb\\x90\\x97\\x9fi\\x93\\xfc\\xfbzL)a1\\xaa\\xfc\\xfe5K\\xb2\\xeeQ\\x7f\\x9a&}FW\\x04\\xa2\\xd6\\x8e\\x90\\xf4v_\\x7f\\xc7|^\\xb0<\\x0cp\\xfe\\x14\\xdaH\\x11 \\xb8\\xf1\\x9c\\xbfFcnU\\xd1\\xb2zV\\xbb\\xec\\xd7\\xb2n\\x1b\\xec\\xba\\xeb\\x19W\\n\\xfe\\x94+\\xc4\\x03m\\xdc\\x9b\\xfcEwR\\x1b*)\\xcb\\x98J~q\\xac\\xf9K!DF\\xc7\\xa5pu9\\x16\\\\\\x8e~\\xa68\\xe2\\xe3\\x14\\x99\\xcd\\xe2\\xf2\\x13\\xe0\\x01 t\\x14\\x15x\\xa9\\x89\\x9f:\\ra\\x17kH\\x96\\xd0\\x83\\x1fI\\xd1\\xa7\\xb8M8\\xac,\\xb3\\x1e\\xb3un\\xc7\\x91\\xcc~\\xd8\\xae\\x07\\x9a+\\xc9\\xdf\\xee\\x9f\\xa0\\xc1\\xba^\\xa6H\\xf7\\xd3f\\xe1Q\\xa1\\x06\\x9dP\\xc3YNg\\xb1D\\x81\\xfc\\tO\\xe2M)\\xa5\\xe1\\xef\\x10-Q\\x7f{\\xd3#N\\x10~\\t\\x1fmG\\xbd^\\x07\\xee\\xd8\\xc7z\\xb3:\\x98\\x8eZSKt\\xcf\\x89q\\xef\\x15t\\x8c2\\xe1\\xd0\\r\\xb7\\x0f\\xdd\\xb9?I\\xf0\\x10#\\xda\\xa5\\x1f\\xb2\\xa47\\x80c\\x0e\\x11\\xdd\\xe1\\xf8}\\xa0\\xdb\\xe5\\x1f\\xcc~\\tO\\xdfY\\xfb\\xd4\\xbc\\x07\\xbb1\\xd4,\\x1dA\\xcd\\xb6\\xc0\\x9f\\xb2\\xb1~\\xd7X[\\x9d\\x92\\xf1g\\xc9\\xb9\\t\\xb6ez\\xa0\\x81\\xa5\\xc3pkm3\\xc3\\x18\\x8a\\x80\\xf5\\x9cR\\xd5\\x81\\xd1\\x8bR~\\xb5\\xab\\xee\\xacg\\xb6\\x1e\\x17C}\\x8e\\xf1\\xdb\\x8b\\xc4\\xee\\xdfq\\xac\\x1dn\\x84\\x9c\\x89A\\xca\\xe2\\x0c\\x14\\xa5;iK\\xdf[\\x07\\x8a\\x91\\xc3V\\xe4\\xca\\xe3@\\t#_o\\xdfN7%w<\\xe5\\x9dU1#O\\xc2\\x9bIBR\\nH \\xa8\\xcc\\xaay\\x9d(6Gx\\xf0\\x80Gr@\\x8fv\\xbf\\xe1]k\\x83\\x95\\xf2\\x13\\x9b\\xac\\xf4\\xdb^\\xb4\\xa5\\xf83j\\x15)\\x19\\x7f\\nl\\x89\"S\\xac\\xf3\\xa5o\\x13>Z\\x1f\\xb6\\x98\\nyc\\xb8\\xb4\\xca\\xe0Z\\x83*\\x05#\\xe8\\x9c\\xe7O\\x86\\xbe\\xfaBV7\\x1a\\t\\xd2LP ~\\xec\\x0e@\\x9f\\xcf\\xe4R\\x80\\x02r\\xea\\t\\xd6i\\xb2|\\x95\\xd8\\xb2\\xbfQ^\\x83\\xc2\\xa4\\xcf\\xc6\\xa4\\xd8\\x91\\xfa>\\xdd#(\\x84\":{\\xe9\\x8c\\\\\\x01d\\xb2\\x990\\xb4\\xc4\\xeb\\xcf\\xec\\xa70\\xe86,\\x0c\\xbe\\x10\\x94\\x11\\xae\\xbb\\x1a\\x18\\x13r\\x8e\\xe9Nf\\x92\\x91\\xb6\\xc4\\x1f\\xc2\\x9e\\xb1V\\\\J\\xdc\\xbc\\xe8e=\\xe7\\x89[\\x81#B|\\xa6>4\\xc4\\xf8H\\x03M\\xf5>\\xde\\xb4\\x88Nc\\xe7\\xb9\\x9f\\xae\\x80ch\\x94\\xa5\\x02%Q\\xd7o/\\xb6\\x82\\xc9\\xcc\\xa2\\x88\\xdc\\x9d?>T\\xb8H\\xd0\\r\\'\\xae\\x86\\x9aV\\\\\\xc3y\\x1a\\xc9\\xfch@\\xc5*H\\xf0\\x82\\xa9I\\x00\\x01\\xac{)\\xdcID\\xdd^B\\x84\\xe6Q\\x1at\\xa6\\x86Te\\xccN@g\\xc2A\\'\\xf3\\xd2\\x95\\x88\\x10\\x1f\\xbc\\xcb\\xa7\\x88\\x81\\x1bQ\\xae\\x06e\\xde\\x8fLz\\xc7n}\\x9b\\xa0\\x99\\x8ci\\x0e\\x7fu\\xb7\\x15\\xf7W\\xa9o`\\xc9V\\xc0\\x1fp\\xaf1\\xbd\\x18\\x9bK\\xfe\\x90\\x1d\\x9f$\\x89\\xfepy_\\xdd\\xb4|\\xef\\xee\\xafW{\\xb4\\xa9\"@\\xda\\x89E5\\xb2Si\\xe8\\xd7x\\xc5\\x90\\xb2y\\x80$gJ\\x8cL\\xf3\\x15G\\x8a\\xab\\xbb\\xe0\\xbe0r`\\xa7\\x06\\xbe3\\xd3\\xe4\\x17Y\\x7f\\x19\\xa7-\\xd5\\x88\\xd8wnm\\xedMa\\x1cF\\xbe\\xeb\\xb3\\xae8wP\\x06\\x07}\\xaf\\xfb\\x05\\xd3\\x84TRHm\\xb6\\xce(\\xe1\\x8b\\x1b[\\xcc5b\\xe9\\n[\\x88C!\\xa2.\\x0b{\\x8dt\\xe7;N\\x90y\\x89\\xac\\x89\\x18\\x06\\x16V2&\\xe1@)@\\xfe\\xb9\\x066\\xcb% \\x03#ND|j\\xaf\\x84\\x1c,\\xda8{\\xde\\xe8\\x82\\xd0\\x070\\x8d\\x13\\xa8#\\xa7\\xe7\\xaddl8\\x90\\x1fm*\\x92T\\xae\\xf5kY\\x00)Fcm\\x81\\x98\\x06|\\xa7c\\xea\\x99\\r\\xdb\\xf0\\xe6\\x19\\x97U\\xba%\\xc8\\n7`\\r\\xc0\\xd8\\xa7_\\xaa\\xa0Y\\xb2\\xd7\\xf2\\xa7\\r\\xb6\\xb6i\\xc6P1Kf\\xf2:\\xf7z\\xa9\\x0f$\\x1f\\x16T\\xe8w\\x00\\x8a\\xcam\\xd6\\xe3\\x8aA+Q\\xd4\\x90\\x95:\\xa3\\x13\\xbf(\\x8f\\xb2O(\\xaa{%\"\\xef\\xb4\\\\\\x11\\r!\\xc4\\x91\\x8cZ4\\xbc\\xea\\n\\x95%\\xc4\\x89\\x06\\x01\\x88\\x03z<\\x8f\\xfe\\x93\\xb9\\xad\\xd4}b\\xe7\\xfd!\\xfbh\\x9c|\\xa5\\xc5\\x8e\\x8a\"\\x85\\xa89\\xdeQ\\x06\\n\\xcf-*\\xbe\\xe6\\xe1i\\xb9x\\x04\\xc8\\x0bV\\xb3\\xe7^NGF\\xb15#|\\x19\\x87\\xea/1\\x1cN\\xf3RHU\\xd6P}\\xc2\\xa6[\\xf0\\xa7\\x0e\\xda\\xea\\x8c1\\x95\\x9d\\xe5\\xc2\\xa7\\x0f\\xd6iM\\xba\\x08\\x00s$\\xc0\\xa7\\x83\\xb3\\xd4\\x8a\\xf1\\x96Iz\\x9e\\xdb\\x82&\\xb2\\xcd\\x85\\x98\\x1e\\xaben\\xca\\x87\\xee\\xb2\\x90~\\xca\\x95\\xeb\\x8a \\r`\\x1d\\xb3\\x11U\\xc9R\\xb9\\xc8\\xa5\\xa5s\\x11\\xcet\\xa9\\xee\\x17m\\x13\\r\\xca\\x80\\x99H\\x9f/*g\\xbeR\\x8e\\xab:s\\xa6T\\xb0w1\\xa5\\x103\\xed\\xf2\\xa7d\\x12\\x92\\xaf0+\\x19\\xed]\\xbe\\xfb\\xb2N\\xd0\\x11\\xb1<=vb:&~\\xea\\xc8\\xd2u\\x8f\\xaf\\xa5Sv\\x80\\xdf\\x7f\\xd9\\xc7\\x1b\\xb7\\xac+\\x87\\xaf\\xe7\\xdc\\xc2\\x8dTyD>\\x0f<;\\xc2\\xe3hY\\xf1\\x1c\\xc4\\x9d|\\xf4\\xd6\\x89\\xb5~\\xb0\\xe6h\\xd5\\x95i\\xe7\\x15\\x1d\\x85\\x850\\xd2\\x88&@;u\\xe4i\\xc6\\xcf\\xeb\\x07]{\\xb5\\x08\\x8f#^\\xa4x<\\xd9r6\\xa5\\x05\\x1d\"\\x04\\xeeu:R\\xf3\\x1d|Q\\xa4j\\x7f>\\xcairA\\x9dDI<\\xbd\\xb4\\xa3(\\x037\\xb8\\x01\\xcb\\xed\\xab\\xd9#\\xa7\\xc2\\xcb\\x0e\\x95\\x01\\xde)c\\xcce1\\xaf\\xc6\\x94\\xd9\\xefT\\xa0\\x95\\r\\x8a\\xb5TN\\x93\\xef\\xa2x\\xc5\\x8d\\x91\\x03\\xe9<\\x15\\xcc\\x1f\\x12b\\x056\\x14u\\xccc^\\x9f\\x9et=\\x08\\x89\\x89\\xa8\\xfa\\x9a\\xe6~rI\\xf6\\xcf*v\\xc5g\\xd4-\\xcc\\x04\\x94\\xa1\\x030\\xe7\\xb8\\xde\\xa3b\\x84\\xfa\\x92\\xa0\\x0f\\x9c\\x9fv\\xbbO*r\\xc1C\\xd4Y\\t3\\tH\\x1b\\xed\\xec\\xf8S\\x06L\\xceB\\x0e~cJ\\x95\\x87\\xda\\xaf\\x11\\xbfb\\xcd\\xa5\\xa1\\nyJJT\\xe1\\x84\\xc8IV\\xe7\\xaeX\\xf7\\xd44\\x82\\x02\\x8cB6\\x90\\x9d\\xaaf\\x12R\\xacR\\xd88\\x14P\\n\\xe4\\x01\\xaf\\xccV\\xd4\\x01\\x11/w\\x8d\\xa1G\\xc4\\x16\\x8c\\xdb\\xfb\\xfd\\xdb\\xd1\\xba\\x14\\x957 \\xc2\\xd3\\x98y\\x83M2T\\xa6\\xda\\x9d\\x8aA\\x90$l(\\x13&v\\xd3~\\x9f\\x0f}\\x00\\xc5\\x92\\nAQ\\x00\\x98\\xd3\\x9d\\x1d\\xf2\\x8e{\\xb3\\xa2HR\\xe7]\\xb9\\xd2s\\x99\\x04\\r\\xc8\\x80dQ\\xe2\\x0b=\\xe5\\xd9I;\\xae\\x00\\x11\\xcc\\xe9Mr#g\\xfa) 9\\xe9\\x11\\xd9\\xf8\\x81\\xa5\\xc5\\xe2\\xb5\\x8d\"\\xc6\\xe2+\\xd5a\\xb0\\xaf,=\\x13\\x13>\\x91\\xbc\\x02 \\x8c\\xaa\\xc4\\x0f\\xb2,n4\\xfa\\xeb\\xd4\\xf4\\xfc\\xd1\\xec\\xa7/\\x02\\x89\\x86\\xf1\\xa1\\xfdr\\xce92\\xb3\\x13\\xfcI\\xad]\\xc46\\x8eZv_\\xda\\r\\xc2\\xdd\\x91\\xfc\\x9f\\xbeFPO\\x88\\x96\\xcf\\x88\\xf9\\xfb+g\\xf1\\x99\\x1f\\xa4-\\x81\\x9d\\x18Q\\xff\\x00xV&0\\xdbL\\x7f\\x87\\xb1l\\x17\\x13K\\xaa\\xb0\\xc4\\xd8r\\xda\\xe42\\xe1m}\\xda\\xc4+*\\x86\\xc7\\xce\\x9c]\\x14p\\xce\\x19\\x8a?\\x864\\x05\\xa8n\\tJ\\xbcy\\xa4\\x10\\x00\\xe4G/mX\\xa3\\x89\\xaf|%IiYS\\t%n\\xe8\\x9e\\x9f>\\xbay\\x1e\\x8d}\\x9e\\x00\\x02X\\xc7\\x93\\xa4\\x7f\\xef\\xa5\\xe9\\xfe\\xed<\\x9fF\\xae\\xcfA\\xd1\\xbcx\\x7f\\xfb\\xca\\xff\\x00\\xfak\\xb9e\\x81\\x939\\x91\\\\Aqsj\\xed\\xb5\\xdd\\xb5\\x9d\\xc3\\x0e\\x1dR\\xea\\\\!=#\\xc7\\xa4\\x1dF\\xff\\x00\\r*\\xc3\\x80\\x1a\\xcd\\xc7|&\\x80\\x00\\x1f\\xa6-\\xa0{\\x15<\\xbd\\x95\\xd2\\t\\xf4m\\xe0\\x004N<:\\x7f\\xff\\x00\\xa6\\xa5a}\\x85p_\\x0f\\xe2\\xd6\\x18\\xae\\x1c1\\x81y`\\xfa_c\\xbe\\xc4\\xcb\\x88\\xce\\x99\\x8c\\xc9)\\xd4k\\xb5?{\\x1a\\xd0;\\xa34\\xc1\\xf0\\x8cC\\xf9Gw\\x8a\\xdd\\xe2Jv\\xd5Am\\xb1n\\x92\\xa4\\x80\\x95\\x10ai\\x9c\\xa4\\x824P\\xd6\\x9c\\xbd\\xc5V\\xdd\\xe5\\xc2?D^;\\x95\\xd5\\x0c\\xe9BaZ\\xee*\\xef\\x0f\\x03\\xb8\\'\\xa95\\x94\\xa1\\xb1\\x91:\\x13\\xa0\\xd8\\xd7\\x06O\\x88\\xd2.\\xb99\\xb5\\xbb\\x92@\\xf0\\x92\\xa8\\'\\xe7T\\x96\\x9cR\\x88!1\\'A\\xbcUZs\\xda\\\\=n\\xff\\x00\\xcfe\\xc2\\x92\\x0729\\xfc \\xd5\\x83K.\\x90U\\xae\\x9c\\xf5\\x8f}|\\xf2>\\x8d\\x92\\xd0\\xaeg_g:}$\\xf3\\xdc\\xf5\\x1a\\xd3\\r\\x01\\xa1&\\x0f\\xb2)\\xf1\\x00}gM*\\xd21l\\x1a\\xc9\\xd4\\xe9\\x14\\xb4\\xa4\\x98\\x92O\\xe1\\xce\\x90\\x93;i;\\x0e\\xb4\\xf0\\x07\\xf0\\xab\\xa3&\\xc7[N\\xc7\\xf3\\xb5E\\xe2v\\x83\\xdc\\x1f\\xc5\\x0c\\xfc\\xee\\xf3\\x03\\xbfLN\\xff\\x00\\xab\\xb9R\\x90\\x9dD\\x1d\\xcfJ]\\xe3=\\xfe\\x13\\x8a5?\\xb5\\xc3\\xee\\x91\\xaf)eb\\xa9\"\\x1b\\xd1\\xe65\\x82\\x8a\\xec-U\\x05D\\xb4\\x83\\xd3p*Cf.S\\xcb\\xc2fI\\xde\\rA\\xc2\\x95\\x9b\\x0b\\xb3\\xd4He>\\xed\\x05MiQx\\xd0W\\xd2\\x9f\\xccW\\xa7\\x15\\xa3\\xce{cd\\xe9 \\x10\\x0e\\xe3\\x90\\xd2\\x94s(\\x00\\xa0e\":\\xfdt\\xcf\\xcdL*b5\\xa3Q\\x032I\\x13\\xa9$\\xf2\\xfc\\xc5Q\\x03\\xa7:\\x92\\x94\\x92\\x14\\x94\\xc9\\t\\xe8N\\xff\\x00e\\x00\\x0e\\x9bo\\xa4\\x93\\xf5Qx\\x82\\x01\\x01P\\xad\\x01\\x03n\\x7fe\\x16y\\xd8\\x11\\x06|\\xe6\\x862\\x1e)\\t\\xb3Y\\'YA>(\\x9di\\xdc<\\xc5\\x9bYw\\x010N\\x9di\\x8cU\\x7f\\xa8:L\\x10JA\\x1a\\xe8$S\\xb8i\\xcdd\\xd1\\x1f\\xba\\x93\\n\\xdco\\xf8Sz\\x17$\\xd0\\xa2\\x1b\\xca\\xad\\xc9\\x99\\xcd\\xf1\\xf2\\xa0\\xdb\\x8e2\\xe2V\\x93\\x95i\\x98P<\\xc8\\x8d\\xbc\\xe6\\x92\\xa9\\x1a\\x98\\x89\\xdc+JFl\\xea\\tH$\\x99H\\x11\\xa9\\xa1\\x00y#(\\x8d\\x00\\xd8\\xd2\\x14\\x90T\\x9c\\xe9\\x12\\xa1\\x11?\\x99\\xa5)\\xc9N\\xe4$s\\x891HZ\\xa4\\x83\\x12w\\xd3\\xa5\\x1c\\x83\\x1c\\x10T\\xdaL\\x19\"gm\\xc6\\xbb\\xd1_\\x1f\\x94\\xbb\\xd4\\xfc\\xe5k3\\x02M (\\x95%I\\x89\\n\\x90yo\\xec\\xa2\\xb9Z\\x88}BJ\\x95\\xa9\\x8f3\\xe5M\\t\\xb3o\\xfa\"\\xa6}#x\\x16\\x01\\x19[\\xc47\\xd7\\xff\\x00\\x83to\\xef\\xafS\\xd3\\xb0\\xf6W\\x96\\x9e\\x87\\xa8+\\xf4\\x8c\\xe0\\xe3\\xbeKlD\\x99;~\\xac\\xa1\\xf7\\xd7\\xa9caU?\\x04G\\xc9\\x84q\\xa2\\xe3\\x12`t\\xb6?\\xf1\\x7f\\x85b\\xb8\\x0bn-\\xa5\\xa93\\xfbCY7\\x1a\\x93\\xfaQ\\xb8\\x8f\\xe8\\xa3\\xfe%U\\x7f\\r\\xb5\\x16S\\x1fL\\xd0\\x9d#BSm8\\x00\\xd4\\xe9N\\x86\\xdc\\xe4jz[\\x1eT\\xe8lUY$\\x04\\xa1\\xc8\\xdc\\xd3/\\xa1y\\x08\\'z\\xb8\\xee\\xc4T[\\xb4\\x80\\xd9\\xa6\\x98\\x07\\x87\\xa7\\xf5P<\\xeb.\\x02\\x00\\x15\\x8bX\\t\\xb7lu#\\xed\\xac\\xaa\\xb3\\x9b\\x04s\\r\\xcd\\xa3\\xa8[\"\\xf3\\xfak\\x03\\xd5\\xae\\x93:\\xe7l\\x00\\x15\\xefLO\\xb2\\xa4[\\xa4\\x822\\xc4\\x8eCAR\\xad\\xd6\\xe6/l\\xdd\\xd3\\x8d:\\xd5\\xf3\\xb6\\x89\\x17hu\\xbc\\x84<\\xd0\\x80\\xbdu\\xf1 \\rz\\xd3-\\x0f\\x08\\x12\\x00\"\\xbc\\x0c\\x1f\\x165~\\x0f\\xa1\\xc9$\\xdfr\\xe1\\xec\\x96\\x802\\xef4\\xf0\\x1f\\x91L\\xa1\\\\\\xb6;\\xd3\\xc8XW\\xe1]\\x14s\\xb6-\\x03\\x9f\\x9fJy \\x8d\\xf7$\\x98\\x1d)\\x94\\x1dA<\\xa9\\xe1\\x11\\xae\\x9a\\xd0K\\x1d\\x10\\'4\\xf55)\\x91\\xdew\\x8d\\xc7\\xcfi\\xd4\\xc0\\xf3B\\x84}u\\r\\x1f8u\\x9djv\\x1b\\xe2\\xbd\\xb7\\x02\\xea\\xf5n\\xde\\xe0]0\\xdb\\xc8##\\xa8J\\xc0\\x1d\\x08\\x9a\\xa7\\xb2\\x16\\x9b0\\x9e5_\\xf3\\xc8\\x10|6\\x89\\xff\\x00\\x89t\\xd7\\x0fif?\\xb4y\\xd0\\xe3\\x05g\\xc6\\x9e\\x91\\xf3m\\x9b\\x1f\\xf1\\x1f\\xbe\\x97\\x80\\x08\\xb2o\\xdfG\\x82\\xcb\\x94\\x9d)\\xc4\\x9du\\xa6\\xd3N\\nd\\x8b\\x9d*\\x1d\\xe1\\xf92*a\\xda\\xa0\\xde\\x1f\\x05Z\\xe4\\txx\\x94\\xdb\\xa7\\xaa\\x93\\xf6\\xd6O\\xadcXv\\xf6\\xdf\\xdaMd\\xb5\\x9c\\x86\\x8eP\\xe1^\\xc9\\xac\\xbb7\\xb2\\xb4\\xbf\\xb6\\xc6/\\xf1\\xdcS\\x89-}^\\xe2\\xe6\\xfe\\xef\\xbd)m>4\\xf7Dh5\\xd1@\\xeb\\xec\\xda\\xaf\\x1a3\\x1c\\x88\\xde\\xb0;\\x1e8\\xe2;\\xfcQ\\xab\\x9e\\x15\\xec|\\xe0\\xf6\\xef\\xad+w\\x12\\xe2\\\\Q\\x0c;\\x94\\x91\\x98\\x8btJ\\xb3\\xc7S\\xbcL\\xd6z\\xe3\\x9d\\xed\\xcb\\xae\\xe83\\xac\\xabD\\xc6\\x84\\xf4\\xe5^c\\x8d\\x1e\\xbav\\x87\\xd2|10A\\xde\\x9eB\\x87O\\x16\\x95\\x1d\\x00\\x90\\x0c\\xeav\\xa7\\xd0\\x9f\\x7f=\\xb9\\xd2%\\xb1\\xe4m\\xe7O\\x81\\xf8\\xd3hH\\xe7\\xb8\\x15 G=)\\x084\\xa4\\x83Sp\\xdd1\\x1bA\\xfey\\x1c\\xfc\\xea0\\x12@N\\xa7\\xca\\xb0\\xbc\\x7f\\xb5\\xbe\\x19\\xe1\\xbc\"\\xeb\\x14\\xc31\\xac3\\x19\\xc4m\\xa16\\xd6V\\x97Iq\\xc7\\x1e&\\x12\\x08\\x1a\\x84\\x83\\xaa\\x8f \\r\\x00\\x93|#\\xcf\\xcb\\xc6\\xc3\\x18\\xce&\\xd2$d\\xbd\\xbaN\\xa7hyc\\xee\\xa0\\xda\\xc1\\xb8\\xb7)\\xd0\\x15\\'\\xdf\\xaf:\\x89t\\xfb\\xcb\\xc6/\\xd7z\\x92.\\x1d\\xba\\xb8q\\xef\\x00@\\xceV\\xa5*\\x07!&G\\x91\\xa7\\x03\\x92\\xeb*\\xfd\\xd25\\xe7\\xb8\\x8a\\xf4#Ty\\xd2[\\x1c(qe\\xe5#\\xc4\\x1b\\nR\\x8c\\xc4&b\\x92\\xe2\\xf2\\xcc \\xfbf#\\xef\\xe7\\xca\\x9bu\\xe2\\x97\\\\\\x85\\x18VpD\\xe8D\\xedI\\xcefT3\\x1d$y\\xfeMP\\x87\\xb3\\xc4) $\\xf5<\\xbf?}\\x1fz\\x07]\\x0c\\xc1\\xe6)\\x80r\\xccH\\xe7\\x1b\\x83\\xe5\\xf7\\xd2\\xc0\\'\\xe6\\x84\\x9d9\\x1f\\xbe\\x98\".,\\xe2}I\\xcdH\\xd1$\\x81\\xa7?\\xb0\\xd1\\xe1\\xceN\\x1a\\xc9\\xcc\\xaf\\x987\\xe7\\xa9\\xa6\\xb1P}A\\xe0r\\xe5\\x00\\x0f-\\xfa\\xd2\\xb0\\xe3\\x9a\\xc2\\xdclJ\\x01\\x8c\\xdf\\xc4h{\\x0eI\\xdd\\xf0\\x00\\x83)<\\xcco@\\xba\\x01\\x02U32t\\xa6\\x82\\x9c)\\x19\\x08O3\\n\\x89\\xf7\\xd1)G.\\xe0\\xce\\xbf8@\\xf8\\xd2\\\\\\x00\\xea\\x96$s1\\xb4k\\xfe\\x1f\\xf3\\xa6\\x96\\xa1 H\\x13\\xb0=}\\xb4\\xea\\xed\\xae\\x10\\xd3\\x17\\x0e\\xb2R\\xd3\\xd9\\xbb\\xb5\\x98\\x85\\x11\\xa1\\x8dy\\x1a`\\xe6\\n\\x03T\\x88\\x8c\\xc0\\r>\\xbd\\xa9]!\\xf2\\x1e`\\xa5@9D\\xc6\\xe7Mb~4\\xab\\xc2\\xeb6\\xebm\\xe5\\x98$*\\n\\x8eY\\x9e\\x9f\\n@R\\xb3\\xa4\\x00\\xac\\xd3\\xa1\\x06u\\x9eT\\xc5\\xd9\\x9bw\\x02\\xc9\\xcd\\xa0\\x8c\\xda\\x81<\\xbe\\xbf\\x8dW\"6\\x97\\xa3\\x02\\xb2\\xf6\\xc9\\x82/S\\x97\\x0b\\xbf\\x89\\xff\\x00BG\\xdf^\\x93p\\x8e<\\x87\\xb0;&\\x14\\xb54\\xf3M)\\xa0\\xe1#(!P4>Dm\\xf7W\\x9a~\\x8d\\x8a\\x8e\\xd6\\xb0\\xe5\\xa4\\x90Q\\x84^*fwl\\x0f\\xbe\\xbb\\xbb\\x86/\\xd4\\xb6/\\x19\\x95JT\\xdb\\x81IIQL\\x9c\\xb9\\xa0\\x1d\\xb4\\x13\\xbd)I\\xa5fu\\xf1\\x99\\xa7\\x13\\xbc\\x1e\\xc5\\xee\\x16\\x0c\\x8e\\xe5\\xb04\\xe5\\x94\\xef\\xf1\\xa9x&\\x96M\\xebX\\xc5\\xd3\\xe4)y\\x96\\x1c\\xf0\\xa4fI\\xd3n^U\\x91`\\xaeE\\x93[\\xedV\\x9d\\xab,\\xbc\\x07Jp+\\x9dDK\\x9a\\np9L\\x92A0*\\x05\\xea\\xbc5%NiU\\xf7\\x8b1\\xa6\\xba\\xd5 .0\\xff\\x00\\x12\\xed\\xc6\\xbb\\x8d\\x8e\\xb5\\x91H\\xea\\x7f\\xbdX\\xe6\\x18I}\\x80\\x9d\\xe0\\xc781Wa\\xc4\\x00\\x02\\xdb\\xf1s\\xca\\xd9\\x89\\xf2\\xd2\\xa5\\xab\\x0b9\\xa1)\\x98\\'S;\\xd4\\xe6\\x81\\x81:\\x0fn\\xf5\\r\\xb3\\x99\\t\\x93\\xce\\xa5\\xb6\\xb3\\xa7)\\xe7^s=k% \\xe54\\xfa@\\x83Q\\x93\\xd0\\xf2\\xa7\\xdbpm?_*\\x90%$\\xed\\x14\\xe825\\x81\\xf7\\xd4\\x13t\\x84\\'2\\x88\\xe4j3\\xf8\\xd5\\xbd\\xb8%\\xc7\\x12\\x00\\xdc\\xf2\\x15\\x00a\\x9d\\xb7q\\xd2\\xb8O\\x86\\xd9\\xc3l\\x1e\\x16\\xd8\\x8e9\\xde4\\x87\\x89\\x8e\\xe9\\x84\\xc7x\\xa0\\x7fx\\xe6\\t\\x1d&yW7\\xd9\\xa7\\x87\\xbfG\\xe2#\\x13r\\xf9\\x17\\xa9m\\x07\\t\\xfd\\x1e\\xeb\\x1d\\xc0X\\xdd7\\x01~\"\\x93#T\\x19\\xf25\\x9d\\xfaCq5\\xae;}\\xc3V\\x96\\x0bC\\xcfX\\xb7p\\xeb\\xaa\\x0e\\x00\\x90\\x97\\nBu\\xd7YA\\xad4{\\xec\\xc6\\x1a@\"4\\x0f\\xa6kU\\xd3K\"R\\xa6o\\x8f\\xa9\\xc3\\x8e=\\x8d\\xab \\xe2|.\\x8cF\\xf9W\\x0c\\xa9M\\\\-_\\xb6i\\xf4J\\x87)\\x07C\\xce\\xb5\\xab\\xb8\\xb5\\xd8\\xc5\\x1d\\xb7\\xb4\\x7f\\xd6\\x1aB\\xc8J\\x9di\\x01P9\\xccV\\xd9iO\\xa1\\xc6\\xd6-\\xb3\\x19\\x1f5\\xe6\\xc9\\x1d>\\x95`\\xec\\xf0E\\xcf|\\xeb\\x97v(t\\xb8\\xb5\\x1d\\x1c\\x07BI\\x1b\\x1e\\x86+\\xa3\\x1e\\x19\\xc2\\xd3\\xb3\\x9b\\xab\\xcd\\x87\"N5\\x7f\"V\\x0c\\xd38\\x9d\\x9f{p\\x8f\\x94\\xef\\x1cA(\\xd34\\x13\\x06*cXU\\xbb\\xed\\x8c\\xc9q\\x92gE%$\\x8dz\\xd3,p\\x92X\\x1e\\x1b\\x1b\\xb6\\x89\\x92{\\xa7\\xd7\\xef\\xe7\\xce\\x9dW\\x0e-\"[V.\\xd1\\x1a\\x8c\\xaf(\\x9f\\xac\\x1a\\xe9\\\\U\\x1eS{\\xe4\\xc6\\xc5\\xea\\x91\\x89^Z\\xba\\xd3E\\xb6\\x1eSiXI\\x04\\x80t\\'Z\\x98\\\\l\\x03\\xf2i\\xd7h\\'\\x7f\\x8dIW\\x0b!/\\xadn\\xb5~\\xe2\\xd79\\x96\\xe1Q$\\x9d\\xce\\x82(\\x1e\\x1ed\\x11\\x99\\x9b\\xa043\\x95i\\xf7\\xd0\\xd0\\xd3\\x186l_Z,\\x12[\\n\\x94\\xa8\\x03\\xb0\\x00k\\xa9\\xa0\\xd5\\xa36\\x8d\"\\xdd\\xb2\\xa2\\x9d\\x81\\xd2LN\\xa6\\r(\\xe0v\\xe9)*K\\xfa\\x0eez\\x1fm7\\xfa\\x16\\xd9#)[\\xe3Q\\xba\\xd5\\xad:TM\\xec\\x97\\xea\\xec\\x95\\x80\\x97\\x14\\x16O&\\xd4`\\xeb\\xca\\xb6\\x8f\\x0cz?\\xe3\\\\_\\xc2\\xd8G\\x11a\\x1cC\\x81\\xa2\\xd7\\x15iN%\\x87C\\xc5\\xc6\\x8a\\x16\\xa4)+)I\\x19\\x81L\\xe5\\xde\\x08\\xebZ\\x80\\xe1\\x16\\xe4\\x13\\xeb.\\x8e[\\xeb\\xed\\xa3\\x1c3d\\xf9\\xce\\xbb\\x82U\\x9bR@\\xe9\\xf8}\\x94$\\xbc\\x85\\xbfS/\\xe3\\xde\\xceq\\x1e\\xcf\\xb8\\x83\\xf4/\\x10\\\\\\xda\\xdc]\\x1b\\x16/\\x12\\xed\\xab\\xcbZ\\x14\\xd3\\xb3\\x94B\\x90\\x14\\x14\\nT\\nH\\xac=\\xc6\\x98KhW{\\x97\\xc5\\x193J\\xb4\\xdc\\xed\\xca\\x83\\x98#V\\xe0\\xa5\\xab\\xa5\\x80\\x12GX\\xa6\\xbfE\\x80\\xa0E\\xca\\xce\\x9aL\\x125\\xdf\\xf3\\xd6\\x8aC\\xbd\\x04\\xb7\\x19i\\x0b\\xce\\xa5\\x13\\x06R\\x95D\\xc0\\x9e\\x9b\\xd3W\\x01\\xb2\\xc2\\x90\\x97\\nLIQ#m\\xfe\\xc3O\\xfa\\x93\\xc2\\xd6\\xe6\\xdd\\xab\\xe7\\x1bj\\xe5(C\\xe9\\x00\\x10\\xa4\\xa5ABG8 \\x19\\xa3\\xb7\\xc0\\x83\\xe5\\x0c\\xaa\\xe1E*NUD\\r<\\x8d*\\xa1\\xf7*:\\x87\\xb0\\xce\\x0f\\xc00|-\\x18\\xce\\x1fl\\xb71\\xa5$\\xb0\\xbb\\xb7\\\\%A\\x04\\tJ\\x13\\xb2A\\xf7\\xd6\\xf0\\xc2q/R\\xc4[(\\xca\\x14\\xb4\\xad\\xb4\\x95\\x80D\\x91;\\x12&H\\x8d\\xc5h\\xbe\\xca\\x1f\\xb9c\\n]\\xbd\\xbb\\xa8\\xc8\\x02L-\\xac\\xd3\\xa4N\\xe3\\xa5l[\\xd5\\xc8\\x1e\\xe0+6C\\xcau )F\\x07._\\n\\xc5\\xce\\xf8/\\xb3\\xd4\\xc0,\\xf8\\x1f\\x89\\xf1@\\x15\\x8db\\x96x;gv\\xad\\x93\\xeb.\\x0f)\\xd1\\x03\\xeb\\xac\\x8b\\x0f\\xec\\xd7\\x87\\xad\\x14\\x97/\\x98\\xb8\\xc6^\\x1a\\xe7\\xbfx\\xad3\\xfe\\x8cB~\\xda\\xc8\\xdb#j\\x94\\x83 \\x13\\xce\\xb2m\\xb2\\xd2H\\xe5\\x1fJ\\xfbFmx\\xb7\\x84\\xfdN\\xdd\\x9bV\\x97\\x81\\xba\\x9c\\x8d6\\x10\\x9f\\r\\xc6\\x9a\\r4\\xcdZ\\x10\\xabC\\x96t\\xe9\\xf1\\xae\\x89\\xf4\\xbek.1\\xc0\\x8f\\xc1\\xf1X\\xdf\"A\\xe8\\xebG\\xef\\xde\\xb9\\xc4\\xaadD\\x82\"\\xbe\\x97\\xa3\\xde\\x08\\xfe\\xfc\\xb3\\xe6z\\xb5\\xfc\\xf9~\\xfc\\x0f\\x03:\\x05k;\\xd2\\x81\\x1a\\x1eQ\\xb4o\\xf8SAJ=\\x08\\x1c\\xa2@\\xa5 \\xa4\\x8d \\xe9\\xa9\\xdc\\xed]G0\\xe9!Di;\\x91\\xce\\x7f\\x1a\\\\\\x82\\x9dI\\xd7\\xddMI\"~i;\\x7f\\x87Jp\\x12z\\xc0\\xd8PW\\x91aJ\\x06\\x01T\\xce\\xa3\\x95\\x17x\\xa10\\xb5\\xf5\\xf9\\xc4~w\\xa2\\x1a\\x89\\x1e\"z\\xd2H\\x12\\x01\\x00\\xc1\\'}\\xa8\\x1a\\x1cS\\xab\\x92\\x02\\xd5\\xed\\xcd\\xb8\\xa4\\x97\\x8ad\\xe7_\\xce\\xdew\\xf3\\xa6\\xd4u\\x04i\\xa5\\x11W\\xd2\\xd5$\\x18\\'\\xcf\\xad!\\x0ew\\x8a;\\x92\\xaeq\\xa1\\xa6\\xcb\\x86B\\xb4\\x1c\\xfeh\\xfb(\\x8c\\x11\\x1a\\xed\\xf0\\xa6\\xc9\\xe66\\xa2\\x91[\\x02\\xc2U9\\x90\\x83\\x03|\\xa3N\\xbc\\xa9\\x0e%9H\\xee\\xdb)\\xe6\\x0b`\\xeb\\xf0\\xa5\\xa8\\t)\\x02D\\xfci\\xa2\\x04\\x93\\xf7O\\xd5SH\\xa7lB\\xdbd\\x85fe\\xa5\\x0e\\x7f&\\x9f\\xc2\\x91\\x0c\\xb23%\\x96\\x9b\\tI$\\xe4\\x10\\x07Zt\\xab\\xa8\\x83\\xed\\xa6\\xc6P\\xe2\\x16\\xe3L\\xdc\\xa1+J\\x94\\xd3\\xc9\\x94,L\\x94\\xabQ\\x124\\xfa\\xf9P\\xd2\\xad Od\\xdc;\\x8c\\xf1l%\\xa6\\x15\\x84c\\x0f\\xd95s\\x98[\\x94\\xa4%\\x0e\\x94\\xc6`\\x92\\xa1\\n#0\\xd0u\\x14\\xbc[\\xb4N+s\\x0b\\xbbK\\xb8\\xed\\xc2\\xc7t\\xbd\\x14\\xd3z\\x18\\xfe\\xcf\\x9d+\\x1e\\xe2\\xbcC\\x1d\\xcc\\xcb\\xed[7b%,[\\xb6%\\xb6\\x04Fd\\xa6\\x00\\xceF\\xea\\x10$\\x98\\x00V3v\\x80\\xeb*l\\x82K\\xabBc\\xda\\xb0\"9\\x9dk\\xe6\\xd5\\xdb\\xc0\\xda\\xd7h\\xeaR]jA*J\\x81\\xd0\\xc0\\x07mH\\xda\\x8d\\xbag\\x8887\\x8a_`\\xb4\\x8b\\xeb\\\\n\\xcd\\x0e%hC\\x8c\\x84\\xbe |\\xe1\\x98\\xe5\\xcc\\x0c\\xc6\\xbeQX\\xaa\\xb0\\xacE\\x95\\x16\\xd7\\x85\\xe3\\xcbR\\x0eR\\xa4\\xd88A#\\x98!$}f\\xb9\\xe5\\x92I\\xe9\\x14\\xa2\\x9a\\xd9\\\\\\xdd\\xdbW\\xd6\\xd6\\xf7V\\xaf\\xb5ukr\\xd0z\\xde\\xe1\\x97\\x03\\x8d\\xba\\xda\\xb6ZT4 \\xf5\\x15*\\xd5\\xc2\\x85D\\xcaO.\\x95\\xc3\\xbd\\x97v\\xc1\\x8bvcu\\xea\\xdd\\xda\\xb1n\\x17y\\xd2\\xab\\xac(\\xb9\\x94\\xb6\\xa3\\xbb\\xb6\\xeb?\\xb3s\\x99\\x1f5|\\xc4\\xc2\\x87gp\\xbe=\\x84\\xf1\\x96\\x07o\\x8ep\\x9e \\xde%\\x85\\xber\\x07\\x00\\xca\\xb6\\x9c\\x1b\\xb4\\xea7m\\xc1\\xcd\\'\\xda\\t\\x04\\x1a\\xe2\\xc9\\x89\\xe3\\xfa\\x1e\\xb6<\\xab\"\\xd1\\x93$T\\xb6\\x15\\x04MB\\xb6+(\\tZH)\\xe9\\xae\\x94\\xf0VB\\x904=+\\x1a4-P\\xa8\\xa9(>\\x1a\\x8c\\xc5\\xb3\\xee\\xa4\\x10\\x82\\x90F\\xea\\xd2\\xa7\\xa6\\xcd(\\x1f(\\xb2\\xa9\\xe44\\xa4\\x072\\xfa_\\';|\\x04\\xf4\\xc1\\x0eb\\r\\xf9\\xec\\xca\\xbe\\xea\\xe6q\\xa9\\x10\\x0e\\xbb\\xeb]S\\xe9\\x7fn\\x9f\\xd0\\x1c\\x0e\\xf3h\\x1e\\x0cR\\xed\\xb3\\x1b\\xc2\\x98\\x07\\xff\\x00\\rr\\xc6S\\x1a\\xf8\\x88\\x1c\\xc7ME}\\x17D\\xff\\x00\\x91\\x1f\\xef\\xf7>o\\xacW\\x9e_\\xd8\\t\\x12\\x90`\\xef\\xccS\\xd3\\xe7\\xa0\\xe5E\\x13\\x96\\x0e\\xc7Ju\\x08\\xd8\\x01\\xa4t\\xae\\xbb9\\x92\\x13\\xa4\\x01>D\\x8d5\\xa7\\x00\\xcc\\x04\\x82:F\\xbfU\\x19\\x11\\x04\\x81;F\\xc6\\x94Fy\\x82\\x9d\\xc1\\x03\\xf3\\xf7\\xd0RT$\\xc1\\x1a\\x931:\\xfd\\x9aR~n\\xb4\\xb3#P ni+\\x92\\x0c\\xc4\\x1f*C\\xa1\\xa5\\x9c\\xaa\\x13\\xf6\\xd3e@\\x93\\xa8\\xe7\\xf9\\xfa\\xa8\\xd6u\\x95\\x009{\\xa9\\x85*\\x01:O\\xb2\\xa9\\x10\\xc7\\t\\xf9\\xf3\\xcc\\xd23I\\xf0\\x98&N\\xbbt\\xa4\\x13\\xb9\\x1b\\xf3\\xfa\\xe8\\x81\\xd5:\\x90\\'q\\xf5|\\x05\\x00\\xb9\\x1c\\x077\\xd7\\xbf/}\\x16\\xb3\\xa9\\x81\\x04\\x88:\\xd0\\x06wI\\x03m\\xf6\\xf6Q\\x15\\x11\\x06u>\\xea\\x82\\xc1\\xb1\\x11\\xf5}T\\xd9\\xd7/\\x8b\\xca~\\xee\\xb4\\xf1\\xd0\\x9e@h\\x01\\xa4\\x19#BI\\x8d\\x0cP\\x14Cpr#_m4\\xb6\\xfb\\xd2\\x94(\\x04\\xb6\\xa7P\\x15\\x9bH\\x19\\x86\\xa6\\xa58\\x93$N\\x9bT\\xbe\\x1d\\xb6M\\xc7\\x14\\xf0\\xf3.!+m\\xecb\\xc9\\xb5\\xa5C0RM\\xc2$\\x10fA\\x1a\\x19\\xdc\\x1a\\x1b\\xa5d\\xf6\\xd9\\xd1\\xde\\x94\\xdcE\\x88^v9\\x89\\xda\\xe18\\xc1\\xba\\xb5\\xbd\\xbd\\xb5E\\xc0\\xf5\\xf2\\xe2V\\xc2U>\\x10\\x14f\\x16\\x94H \\xe8\\x0f1[\\xd7\\x86q\\xacJ\\xc2\\xe3\\x87_\\xba\\xbf\\xbb\\xf5F\\x91l\\xd3\\xcd\\x1b\\xb5-\\x95\\x05\\xb6\\x94\\x10d\\xc2\\xb52\\'\\x9d\\\\\\xe3}\\x9dp(\\xb9t5\\xc1<.\\x08uI$`\\xccj\\'\\x9f\\x87Zu=\\x98vx\\xe0mG\\x81xm\\nI\\nIF\\x1a\\x84A\\x06A\\x11\\x11\\x04\\x02:\\x11^E\\x9e\\x8fk6i\\x94\\xa8\\xa6v1G\\'\\xadU\\x9b\\xf9$\\x93$\\xd2\\xd1u=\\x05Wpv\\x98\\x87hW\\xd8\\xbe\\x17\\x89a\\xd7V\\x18\\x95\\xd5\\xa5\\xa3\\xec-\\xae\\xed\\xa5\\x80\\x8e\\xf5*\\x07PA\\xd4\\xa4\\x88\\xfe\\xc9\\xeb\\\\\\xc1\\xc5\\xbcM\\xc4\\xb7\\x9e\\x95=\\x9f\\x17\\xee.\\x9dF\\x1d`\\xe9\\xb6p\\x04\\xf7\\x88*m\\xc0\\xec\\xa7(\\x90e \\x8dt\\xae\\xbf\\xc7\\xf0\\x0c\\x1f\\x8bp\\xdf\\xd1\\xdcK`\\xce%c\\xde\\xa5\\xd0\\xcb\\xb3\\x01i\\x98P \\x82\\x0e\\xa7\\x9f:\\xc3\\xcfb\\x1d\\x9c\\xbd\\x893v\\xe7\\t\\xd9\\x9b\\xa6\\x7fgr\\x1f|<\\x8f\\xec\\xaf<\\x8fuGw\\xa1]\\x8c\\xb5\\xec\\xf7\\x89\\xf1\\x1b\\xfb\\xcb\\xbc?\\x1d\\xbaz\\xed\\xc7\\x13\\xdf\\xda\\xad\\xe6\\xd2\\x92\\x00\\xd1m\\xf8R$j\\x08\\x99;\\xeb[\\x0eW\\xd5U\\x85\\xe0\\xfd\\x95\\xf0\\x86\\t\\x8bY\\xe2\\xf8V\\x1bp\\xc6!fTXuX\\xa5\\xcb\\x81\\x19\\x81J\\xbc*p\\xa4\\x82\\x0cA\\x15\\x99\\xc0\\xa6\\x9b\\xa1Q\\xe2\\x03\\x98\\xd0QQk6\\x9a\\xc9\\xd2=\\xb1\\xca\\xb2\\x1e\\xcf\\xbbP\\xe2\\x1e\\xcd\\xf1\\xef\\xd2\\xdc+t\\x96\\x1fy!\\x17Vo\\xa4\\xae\\xde\\xf5\\xb1\\xafv\\xea4\\x9f\"!I&REk\\xe4\\x92\\x0e\\xa7]\\xa6)\\xc0\\xad5\\xcd\\x04j\\x06\\xa0\\x7f\\x8e\\xb5\\xbbI\\xaa\\x14[N\\xd1\\xea\\'c\\x1d\\xa5\\xf0\\xbfl\\xb8J\\xefp+\\x85\\xd8\\xe2\\xd6\\xad\\x871\\x1c\\r\\xd5\\x82\\xfd\\xae\\xb0T\\x15\\xfdk3\\xb3\\x80i ($\\xd6\\xd4\\x0c3lGt\\xd2A\\xeaD\\x9f\\x8dx\\xfb\\x80\\xf1\\x1e-\\xc2\\xb8\\xbd\\x8e9\\xc3W\\xd78V/b\\xef{mwl\\xbc\\xabJ\\xa2\\x0f\\xb4\\x11\\xa1I\\xd1@\\x90dW\\xa1\\x1d\\x80zOa\\x1d\\xac&\\xdf\\x87\\xf8\\xb3\\xd5\\xf0>8\\x10\\x96\\xd2\\x93\\x92\\xdb\\x14\\xf3f~c\\xbdZ;\\xee\\x82uH\\xf3\\xb2\\xe0kq\\xe0\\xf4\\xf1fR\\xd3\\xe4\\xdf\\xa1}~\\xda2ie\\x82\\t\\x07E\\r\\xc1\\x11\\x14;\\x85\\x0eY\\xab\\x96\\x8e\\x83\\x9f\\xfd-m\\xfb\\xce\\x06\\xe1\\x87\\x88\\x9e\\xeb\\x1e)\\x9f\\xed[9\\xf8W\\'\\xa5\\x9f\\x103\\xa8\\xe4+\\xb9{q\\xe0\\x8b\\xce>\\xe0\\xa6p\\xdc6\\xee\\xda\\xca\\xe2\\xcb\\x10E\\xfek\\x94-Iq)mi(\\x19\\x01!G8\\x8d\"\\xb8\\xee\\xf3\\x84\\xf8\\x8a\\xc9KK\\xbc9\\x8b.\\x0f\\xcfn\\xc9d\\x1f1\\xa6\\xd5\\xec\\xf4ya\\x1c}\\xad\\xec\\xf1z\\xbcRy;\\x92\\xd1B\\x10 \\x83\\xa7\\xb7\\x97\\x95\\x1eX\\x89\\x1aELs\\x0e\\xc4\\xdaW\\xcb`\\x98\\xc3Z\\x9f\\x9d`\\xba\\x8e\\xb6\\xdeG\\xed,o\\x9a$}+E\\xa6>\\xaa\\xeeS\\x8f\\xa9\\xc9\\xee\\xddp \\x83\\xb8;\\xee@\\x98\\xe8iz\\xe8N\\x9dd\\xe9L\\xae\\xe1\\xb0\\xa9Z\\\\B\\xb5>&V>2)\\xb5_\\xdb$\\x8c\\xce\\xe4\\xd7B\\xa4\\x11\\xf7Uw&.\\xd6\\x89\\x00\\x00!2@\\xd7^\\x7f\\x9d)\\x07P\\x92\\x9d\\xf4\\x83\\xcai\\xaf\\xd26\\xa4\\x81\\xeb,\\xcfB\\xba/\\\\\\xb6P\\x94\\xdc\\xb2z\\x1c\\xc3nT\\xfb\\x93\\x17k\\x12\\xb1;\\x12i\\xb2\\x9d\\xe6}\\xa7zuo\\xb0b\\x1fom\\xf3\\x8a@q\\xb2~M\\xc4\\x1e\\x9e!O\\xba\\xc5\\xdb\\xb1\\xb5 \\x90\\xac\\xc10H\\xf7R5\\xcd\\xb6\\xbdO\\xdbR%\\x07D\\xa90z+zm@\\xa4\\xa4\\x88\\xd3mg\\xeb\\x9a;\\xb4\\x1d\\xa3ze\\xe705\\x1e\\xdf\\xce\\x9et6\\xe6\\x05(\\xa4\\x80D\\x15i\\xa7\\xe7\\xee\\xa4(\\x1f\\x9b\\x04r565\\x11Z\\xc9)\\x04\\x81\\xcb\\xdd\\xf6\\xd2U\\x07B$oC6\\xc4\\xe9\\xa6\\xff\\x00\\x9d\\xe9\\x05Q\\xf0\\xda&\\x80h%I;\\x14\\xeb\\xf1\\xab\\x9e\\x07d=\\xc7\\x9c$\\xd8\\x12N=e\\x03\\xd8\\xfaO\\xddT\\x8e\\x18\\'\\xe7\\x01\\xb9\\xf3\\xf8VS\\xd9\\x9b}\\xff\\x00i\\xbc\\x12\\x83\\x12\\xacn\\xdc\\xfb\\x82\\xa7\\xee\\xa9\\x93\\xa8\\xb2\\xa2\\x95\\x9e\\x82b7\\xaaU\\xe3\\x8a\\x9d\\xdcQ\\xdf}jK8\\x84\\xa4A\\x8a\\xa4\\xb9\\x05N\\xa9G\\x9a\\x8f\\xdbSmm\\x9dP\\xd1\\x06\\x0e\\xc6\\xbc~\\x0fR\\x8b\\xa6o\\n\\x949\\xcdX\\xb0\\xfa\\x88\\x15T\\xc5\\xb2\\xc4\\x15oV-J|\\xa965\\x12\\xc9\\n1\\xe2#\\xe3Jm@95\\x1d\\xb4\\xad\\xc3\\x08\\x13\\xf7\\n\\xe6\\xae\\xda=2xk\\xb3\\xd5\\\\\\xe0\\xdd\\x9f\\x0b~.\\xe2\\x84J\\x16\\xf8Y6\\x16k\\x1f\\xbc\\xb4\\xea\\xf2\\x87\\xee\\xa0\\xc6\\xf2\\xa0DQ\\x1b`\\xd5\\x1d\\x1f\\xc6\\\\}\\xc3}\\x9b\\xf0\\xfb\\x98\\xef\\x1cb\\xf6\\xf8>\\x1c\\x8d\\x12\\xa7L\\xad\\xe5\\xfe\\xe3h\\x1e%\\xab\\xf8R\\t\\xe7\\xca\\xb9~\\xeb\\xff\\x00H\\x7f\\x0e\"\\xe5\\xe4\\xd9\\xf0\\x1e2\\xf5\\xbaV\\xa0\\xd3\\x8e_2\\xda\\x96\\x89\\xd0\\x94k\\x94\\x91\\xb8\\x93\\x1bI\\xae\\x1e\\xe3>\\xd0\\xb8\\x8b\\xb4\\\\}\\xdcw\\x8d\\xb1\\x8b\\x8c_\\x11Y\\x84\\xb8\\xe9\\x842\\x83\\xf4\\x1a@\\xf0\\xb6\\x9f \\x06\\xfa\\xc9\\xaaSz\\x12`\\x98#C\\xado^\\x88\\xcbE\\x1aL\\xc8\\xe7\\x1a\\xd3\\x89#@w\\x1d\\x05G\\x92\\xa2 x\\xb6\\x1e\\xday+\\xd69\\x08\\xad\\x8cG\\xd0\\xa1\\xba\\x88;\\x88\\xdc\\x13J\\x13\\x95*BaZ\\x9fa\\x1d\\x0fZB\\x0f\\x87B`\\xce\\xde\\xcd\\xff\\x00\\xe7KTe\\x98\\x93\\xbfC\\x1fv\\xbfm/%\\x1d\\xa7\\xe8\\xfb\\xe9\\x82R\\xabN\\x15\\xed\\xaa\\xf5KL\\x06l\\xb8\\x95\\xddT\\x824J/9\\x91\\xcb\\xbf\\xdc\\x18\\xcf\"T;P\\x00R\\x85\\xa0\\xa5hq!hZHRT\\x93\\xa8P#B\\x0f\"+\\xc5pFP\\x15\\x05 \\x88\\xd7j\\xe8N\\xc0\\xbd(\\xb1\\xae\\xc9\\x16\\xc6\\x03\\xc4m\\xddq\\x07\\x04\\x15\\xc8\\xb4\\xcc\\r\\xc6\\x1f\\'U[)Gc2Z$$\\x91 \\xa4\\x92O.L)\\xee\\'^<\\xde$zH\\xa5i\\xbcR;\\xc5\\x1d3\\x1f\\x8dS\\xf0\\xe7\\x13\\xe0\\xdce\\x81\\xdac\\xbc%\\x891\\x8c`\\xf7bX\\xba`\\x98\\'\\x9aT\\x93\\xaa\\x169\\xa1@\\x11\\xce\\xac\\xb3\\xd7\\x13^\\xa7Zc\\xc5g\\x9f>\\xb4\\x85%\\n\\xf9\\xcd\\xa1^\\xd4\\x03I\\n\\xa5\\x05R\\xa4\\x164\\xbb;E\\xfe\\xd2\\xd2\\xd9^\\xd6R~\\xeaax6\\x16\\xe8\\xf9L2\\xc1s\\xbekd\\x1f\\xba\\xa6\\xe6\\xa13N\\x84T\\xb9\\xc2x\\x03\\xc2\\x1d\\xc0p\\xa5\\xff\\x00j\\xc9\\xbf\\xc2\\xa1\\xb9\\xd9\\xef\\x08\\xbb\\xfbN\\x17\\xc1\\x95\\xff\\x00\\xe8Q\\xf8VC\\xce\\xa3\\xe2\\x18\\x85\\xa6\\x13au\\x88b\\x97-\\xd9X\\xda4]\\xb8}\\xd3\\x08m\\x03u\\x13\\xd0S\\xd8\\xa9z\\x18\\xd3\\x9d\\x95p;\\xbf?\\x84ps\\xcb\\xfa*ECs\\xb1\\x9e\\xcf\\x9c\\x9c\\xfc\\x1d\\x84\\xeb\\xd1\\x88\\xfb\\rO\\xb6\\xed?\\x81oc\\xd5\\xb8\\xdb\\x87\\x97;\\x05b\\tA\\xf8**\\xe2\\xdb\\x88p[\\xd8\\xf5\\x1cw\\x08\\xba\\x9d\\xbb\\xacI\\x95\\x7f\\xe2\\xaa\\xf8\\x97\\x96\\x1d\\x8b\\xfa\\x7f\\xc8\\xc3\\\\\\xec\\x1f\\xb3w7\\xe0\\xfc\\xfa\\x84\\xe7\\xa3\\x17f\\xcb\\xf9\\xb8M\\xda\\x7f\\xb3~\\xe0\\xfb\\xebr\\xad*A\\x85\\xa5I=\\x14\"\\x93\\x00\\xd1\\xef\\'\\xea\\xc3\\xdd\\xc3\\xfaM&\\xbfE\\xde\\xce\\xf5\\xcbg\\x88\\xa3\\xcd7\\xca\\xfc*+\\x9e\\x8b<\\x00\\xb2\\nF,\\x82:_\\x7f\\xfekz\\x14M \\xb5;\\xd5{\\xcc\\x9f\\xd4\\'\\x8f\\x1f\\xa1\\xa1W\\xe8\\xa3\\xc0\\xca\\'%\\xce4\\x93:~\\xb6\\x0f\\xda\\x9a\\xc9x#\\xd1\\xe7\\x858K\\x1e\\xb5\\xc4\\xec\\xc5\\xc5\\xdd\\xc3&Z7y\\x1c\\xee\\xd5\\xc9i\\xd2R\\xa1\\xc8\\x8a\\xda\\xdd\\xde\\xb4\\xf3)\\x85\\xa4\\xed\\xadW\\xbc\\x9b\\xd3d\\xb1\\x82\\xf6N-\\xf8\\x97\\x1cL\\xa1\\xccU~++c\\xfel\\x7f\\\\\\xa1\\xd4B<\\xd5\\xa8\\xae\\x0f\\xe2\\x9e-\\xc6\\xf8\\xdf\\x1a\\xb8\\xc6\\xf8\\xb7\\x14\\xb8\\xc6qK\\x83\\xf2\\x977.I\\x8f\\xddH\\xd9)\\x13\\xa2@\\x00r\\x15\\xb41\\xde\\xd9\\x12\\x9a\\x89\\xbc;o\\xf4\\xb4\\xe2\\x9e\\xd5\\x92\\xfe\\r\\x82\\x95\\xf0\\xaf\\x088J\\x15cl\\xec\\xbfv\\x9e\\xb7\\x0e\\x8d\\xc1\\x1fA>\\x1dH9\\xa2k\\x9fB\\xb2\\xa4\\'H\\xf2\\x02\\x053\\x9b6\\xa2D\\xf2\\x1b\\x9a-\\xcfS\\xec\\xad\\xd5%\\xa3\\x9d\\xc9\\xcb\\x91\\xf2\\xe1\\x9dg\\xafO}\\x16ru\\x08>\\xe4\\xd39\\x86\\xe0\\x8d\\x8e\\xe0\\xedG\\x03\\xa9\\x1f\\x9fm\\x04\\t\\xe6si\\x03j\\x08V\\xa7\\xcf\\xad$\\x82z\\x1d4\\xa5\\x98\\x00\\xc9 \\xefE\\x8c\\x90\\xd2\\xc9\\xd6\\t\\x11\\xa1\\x9d\\xbf:\\xd3\\x85jYHY\\x85\\x1d\\xa3\\x95FI:L\\x19\\x9d\\xce\\x94\\xeaU\\xa1\\x8d\\xba\\xc50\\x1eL\\x1f\\x9d\\xa0V\\x8a=\\x0c\\xd2\\xd2A\\x85\\x10\\x02\\xfe\\x96n~\\x7f\\x9e\\xb4\\xcaI))\\x04\\xc9\\xd4i\\xbe\\xff\\x00\\n^b\\xa0eC4\\x13:\\xed\\x14\\xe9 \\xf0l>\\xca;a\\xe2\\x8e\\xc71\\xe5\\xe2\\x1c-r\\x95\\xd9\\xdc\\x90\\x9cG\\x0b\\xb8%V\\xd7\\x88\\x1c\\x96\\x9eKI\\xf9\\xae\\'\\xc4\\x99\\xde\\t\\x07\\xd1\\xbe\\xca\\xbb_\\xe1\\x9e\\xd8\\xf0#\\x89p\\xab\\xeaj\\xf6\\xdd\\x00\\xe28M\\xc2\\x87\\xac\\xd9+\\xa9\\x8f\\x9e\\xd9\\xfa.\\'B49L\\x81\\xe5(Y\\xcf\\x9bP\\x0f\\x96\\xa7\\xf1\\xab\\x8e\\x1b\\xe2lg\\x83q\\xcbD\\xe2v\\xe9RL\\x82\\xe80\\xa3\\x11\\x12@\\xd2\\x0f\\xc4V\\'\\xc4/\\xa6\\xe2\\xfd9.\\x9b\\xb9d\\xa08\\x16\\xd3\\x8b)%[\\xc8*!*\\x11\\x07,\\x03\\xa6\\x82\\xb4\\x8b\\x93t\\xc4\\xf4\\xb4\\xce\\x99\\xf4j\\xb9\\xc5q.\\n\\xc5\\xaf\\xb1\\xacO\\x10\\xc4\\xbb\\xdcYM\\xdb\\x9b\\xdb\\xa5\\xbc[J\\x1bH!%D\\x90\\t5\\xb9Bk]\\xf6\\x01\\x86z\\x8fd\\x1c\\x9a\\n\\xd4\\xc0<\\xd3\\x9a5 \\xd0\\x92\\x08\\x8e{N\\xb4R\"OX\\xda\\x80:\\x18\\xf0\\xc5!\\x86\\xa9\\x1b\\x1d\\xe8\\x80$l?\\xbc(\\x01<\\xe7\\xcau\\xa5\\x08\\x81\\xe2\\xfa\\xcd!0\\xc8\\x1d:\\xe8h\\xd2bNa\\xa0\\xf6\\xe9B\\x85\\x03\\xf2\\x11\\xf2\\xd6\\x94\\x93\\x11\\xa0\\xdb\\x99\\xa1B\\x9ac\\xf2:\\xd2\\xf4\\x89\\xd2$\\xf9{G\\xe1J\\n3\\x13\\t\\x9dG\\xddB\\x855\\xa2lZV\\xa2|*\\x88\\xfa\\xbd\\x95\"L\\xa3Y9y\\xec\\'\\x9f\\xe7\\x9d\\n\\x15^J\\xa1I*J\\x90\\xa4\\x12\\nL\\xa7)\\x82\\x08\\xd4\\x10G1\\xd4Wfv\\t\\xe9\\x82G\\xaap\\xcfm\\x17\\xaaq0\\x19\\xb2\\xe2WgS\\xac\\x03B\\x85i\\x8e*R\\xa6D\\x9fl[\\xf4<\\xf7\\xed\\x83\\xd2\\x0b\\x8c\\xfbe\\xbb-\\xf1\\r\\xe8\\xb0\\xc0\\xd0\\xb9\\xb7\\xc1\\xac\\x89M\\xba5\\x90W\\xcd\\xc5m\\xe2T\\xeb\\xb0\\x1bV\\xaa\\xd34r\\xd2|\\xa8P\\xae\\xe4\\x92Z8%\\'\\'l\\x19\\xb5\\xd6\\x04\\x9e\\\\\\xa8\\xa6t\\xe7\\xcehP\\xa3\\x82@I\\x024\\x93\\xf9\\x9aL\\xc4\\r\"\\x85\\n\\x00%i$D{(\\xf6\\x92t\\xf3\\xa1B\\x81\\x0e\\x00\\xaf\\x9a\\x93\\xa0\\x07a:R\\x82\\'\\xe8O\\x9cP\\xa1U\\x10\\xa3\\xff\\xd9'"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# The raw content (its a binary file, meaning we will need to use binary read/write methods for saving it)\n",
"image_link.content"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Let's write this to a file:=, not the 'wb' call to denote a binary writing of the file.**"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"f = open('my_new_file_name.jpg','wb')"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"22491"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f.write(image_link.content)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can display this file right here in the notebook as markdown using:\n",
"\n",
" \n",
" \n",
"Just write the above line in a new markdown cell and it will display the image we just downloaded!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example Project - Working with Multiple Pages and Items\n",
"\n",
"Let's show a more realistic example of scraping a full site. The website: http://books.toscrape.com/index.html is specifically designed for people to scrape it. Let's try to get the title of every book that has a 2 star rating and at the end just have a Python list with all their titles.\n",
"\n",
"We will do the following:\n",
"\n",
"1. Figure out the URL structure to go through every page\n",
"2. Scrap every page in the catalogue\n",
"3. Figure out what tag/class represents the Star rating\n",
"4. Filter by that star rating using an if statement\n",
"5. Store the results to a list"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"source": [
"We can see that the URL structure is the following:\n",
"\n",
" http://books.toscrape.com/catalogue/page-1.html"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"base_url = 'http://books.toscrape.com/catalogue/page-{}.html'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then fill in the page number with .format()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"res = requests.get(base_url.format('1'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's grab the products (books) from the get request result:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,\"lxml\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[\n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£51.77
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£53.74
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£50.10
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£47.82
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£54.23
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£22.65
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£33.34
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£17.93
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£22.60
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£52.15
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£13.99
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£20.66
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£17.46
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£52.29
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£35.02
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£57.25
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£23.88
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£37.59
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£51.33
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ,\n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
£45.17
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
\n",
" ]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select(\".product_pod\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can see that each book has the product_pod class. We can select any tag with this class, and then further reduce it by its rating."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"products = soup.select(\".product_pod\")"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"example = products[0]"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"bs4.element.Tag"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(example)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'class': ['product_pod']}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.attrs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now by inspecting the site we can see that the class we want is class='star-rating Two' , if you click on this in your browser, you'll notice it displays the space as a . , so that means we want to search for \".star-rating.Two\""
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['\\n',\n",
" \n",
"
\n",
"
,\n",
" '\\n',\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
,\n",
" '\\n',\n",
" ,\n",
" '\\n',\n",
" \n",
"
£51.77
\n",
"
\n",
" \n",
" \n",
" In stock\n",
" \n",
"
\n",
"
\n",
"
,\n",
" '\\n']"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(example.children)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[\n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('.star-rating.Three')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But we are looking for 2 stars, so it looks like we can just check to see if something was returned"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('.star-rating.Two')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively, we can just quickly check the text string to see if \"star-rating Two\" is in it. Either approach is fine (there are also many other alternative approaches!)\n",
"\n",
"Now let's see how we can get the title if we have a 2-star match:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[ ,\n",
" A Light in the ... ]"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('a')"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"A Light in the ... "
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('a')[1]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'A Light in the Attic'"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example.select('a')[1]['title']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Okay, let's give it a shot by combining all the ideas we've talked about! (this should take about 20-60 seconds to complete running. Be aware a firwall may prevent this script from running. Also if you are getting a no response error, maybe try adding a sleep step with time.sleep(1)."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"two_star_titles = []\n",
"\n",
"for n in range(1,51):\n",
"\n",
" scrape_url = base_url.format(n)\n",
" res = requests.get(scrape_url)\n",
" \n",
" soup = bs4.BeautifulSoup(res.text,\"lxml\")\n",
" books = soup.select(\".product_pod\")\n",
" \n",
" for book in books:\n",
" if len(book.select('.star-rating.Two')) != 0:\n",
" two_star_titles.append(book.select('a')[1]['title'])"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Starving Hearts (Triangular Trade Trilogy, #1)',\n",
" 'Libertarianism for Beginners',\n",
" \"It's Only the Himalayas\",\n",
" 'How Music Works',\n",
" 'Maude (1883-1993):She Grew Up with the country',\n",
" \"You can't bury them all: Poems\",\n",
" 'Reasons to Stay Alive',\n",
" 'Without Borders (Wanderlove #1)',\n",
" 'Soul Reader',\n",
" 'Security',\n",
" 'Saga, Volume 5 (Saga (Collected Editions) #5)',\n",
" 'Reskilling America: Learning to Labor in the Twenty-First Century',\n",
" 'Political Suicide: Missteps, Peccadilloes, Bad Calls, Backroom Hijinx, Sordid Pasts, Rotten Breaks, and Just Plain Dumb Mistakes in the Annals of American Politics',\n",
" 'Obsidian (Lux #1)',\n",
" 'My Paris Kitchen: Recipes and Stories',\n",
" 'Masks and Shadows',\n",
" 'Lumberjanes, Vol. 2: Friendship to the Max (Lumberjanes #5-8)',\n",
" 'Lumberjanes Vol. 3: A Terrible Plan (Lumberjanes #9-12)',\n",
" 'Judo: Seven Steps to Black Belt (an Introductory Guide for Beginners)',\n",
" 'I Hate Fairyland, Vol. 1: Madly Ever After (I Hate Fairyland (Compilations) #1-5)',\n",
" 'Giant Days, Vol. 2 (Giant Days #5-8)',\n",
" 'Everydata: The Misinformation Hidden in the Little Data You Consume Every Day',\n",
" \"Don't Be a Jerk: And Other Practical Advice from Dogen, Japan's Greatest Zen Master\",\n",
" 'Bossypants',\n",
" 'Bitch Planet, Vol. 1: Extraordinary Machine (Bitch Planet (Collected Editions))',\n",
" 'Avatar: The Last Airbender: Smoke and Shadow, Part 3 (Smoke and Shadow #3)',\n",
" 'Tuesday Nights in 1980',\n",
" 'The Psychopath Test: A Journey Through the Madness Industry',\n",
" 'The Power of Now: A Guide to Spiritual Enlightenment',\n",
" \"The Omnivore's Dilemma: A Natural History of Four Meals\",\n",
" 'The Love and Lemons Cookbook: An Apple-to-Zucchini Celebration of Impromptu Cooking',\n",
" 'The Girl on the Train',\n",
" 'The Emerald Mystery',\n",
" 'The Argonauts',\n",
" 'Suddenly in Love (Lake Haven #1)',\n",
" 'Soft Apocalypse',\n",
" \"So You've Been Publicly Shamed\",\n",
" 'Shoe Dog: A Memoir by the Creator of NIKE',\n",
" 'Louisa: The Extraordinary Life of Mrs. Adams',\n",
" 'Large Print Heart of the Pride',\n",
" 'Grumbles',\n",
" 'Chasing Heaven: What Dying Taught Me About Living',\n",
" 'Becoming Wise: An Inquiry into the Mystery and Art of Living',\n",
" 'Beauty Restored (Riley Family Legacy Novellas #3)',\n",
" 'Batman: The Long Halloween (Batman)',\n",
" \"Ayumi's Violin\",\n",
" 'Wild Swans',\n",
" \"What's It Like in Space?: Stories from Astronauts Who've Been There\",\n",
" 'Until Friday Night (The Field Party #1)',\n",
" 'Unbroken: A World War II Story of Survival, Resilience, and Redemption',\n",
" 'Twenty Yawns',\n",
" 'Through the Woods',\n",
" 'This Is Where It Ends',\n",
" 'The Year of Magical Thinking',\n",
" 'The Last Mile (Amos Decker #2)',\n",
" 'The Immortal Life of Henrietta Lacks',\n",
" 'The Hidden Oracle (The Trials of Apollo #1)',\n",
" 'The Guilty (Will Robie #4)',\n",
" 'Red Hood/Arsenal, Vol. 1: Open for Business (Red Hood/Arsenal #1)',\n",
" 'Once Was a Time',\n",
" 'No Dream Is Too High: Life Lessons From a Man Who Walked on the Moon',\n",
" 'Naruto (3-in-1 Edition), Vol. 14: Includes Vols. 40, 41 & 42 (Naruto: Omnibus #14)',\n",
" 'More Than Music (Chasing the Dream #1)',\n",
" 'Lowriders to the Center of the Earth (Lowriders in Space #2)',\n",
" 'Eat Fat, Get Thin',\n",
" 'Doctor Sleep (The Shining #2)',\n",
" 'Crazy Love: Overwhelmed by a Relentless God',\n",
" 'Carrie',\n",
" 'Batman: Europa',\n",
" 'Angels Walking (Angels Walking #1)',\n",
" 'Adulthood Is a Myth: A \"Sarah\\'s Scribbles\" Collection',\n",
" 'A Study in Scarlet (Sherlock Holmes #1)',\n",
" 'A Series of Catastrophes and Miracles: A True Story of Love, Science, and Cancer',\n",
" \"A People's History of the United States\",\n",
" 'My Kitchen Year: 136 Recipes That Saved My Life',\n",
" 'The Lonely City: Adventures in the Art of Being Alone',\n",
" 'The Dinner Party',\n",
" 'Stars Above (The Lunar Chronicles #4.5)',\n",
" 'Love, Lies and Spies',\n",
" 'Troublemaker: Surviving Hollywood and Scientology',\n",
" 'The Widow',\n",
" 'Setting the World on Fire: The Brief, Astonishing Life of St. Catherine of Siena',\n",
" 'Mothering Sunday',\n",
" 'Lilac Girls',\n",
" '10% Happier: How I Tamed the Voice in My Head, Reduced Stress Without Losing My Edge, and Found Self-Help That Actually Works',\n",
" 'Underlying Notes',\n",
" 'The Flowers Lied',\n",
" 'Modern Day Fables',\n",
" \"Chernobyl 01:23:40: The Incredible True Story of the World's Worst Nuclear Disaster\",\n",
" '23 Degrees South: A Tropical Tale of Changing Whether...',\n",
" 'When Breath Becomes Air',\n",
" 'Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel',\n",
" 'The Martian (The Martian #1)',\n",
" \"Miller's Valley\",\n",
" \"Love That Boy: What Two Presidents, Eight Road Trips, and My Son Taught Me About a Parent's Expectations\",\n",
" 'Left Behind (Left Behind #1)',\n",
" 'Howl and Other Poems',\n",
" \"Heaven is for Real: A Little Boy's Astounding Story of His Trip to Heaven and Back\",\n",
" \"Brazen: The Courage to Find the You That's Been Hiding\",\n",
" '32 Yolks',\n",
" 'Wildlife of New York: A Five-Borough Coloring Book',\n",
" 'Unreasonable Hope: Finding Faith in the God Who Brings Purpose to Your Pain',\n",
" 'The Art Book',\n",
" 'Steal Like an Artist: 10 Things Nobody Told You About Being Creative',\n",
" 'Raymie Nightingale',\n",
" 'Like Never Before (Walker Family #2)',\n",
" 'How to Be a Domestic Goddess: Baking and the Art of Comfort Cooking',\n",
" 'Finding God in the Ruins: How God Redeems Pain',\n",
" 'Chronicles, Vol. 1',\n",
" 'A Summer In Europe',\n",
" 'The Rise and Fall of the Third Reich: A History of Nazi Germany',\n",
" 'The Makings of a Fatherless Child',\n",
" 'The Fellowship of the Ring (The Lord of the Rings #1)',\n",
" \"Tell the Wolves I'm Home\",\n",
" 'In the Woods (Dublin Murder Squad #1)',\n",
" 'Give It Back',\n",
" 'Why Save the Bankers?: And Other Essays on Our Economic and Political Crisis',\n",
" 'The Raven King (The Raven Cycle #4)',\n",
" 'The Expatriates',\n",
" 'The 5th Wave (The 5th Wave #1)',\n",
" 'Peak: Secrets from the New Science of Expertise',\n",
" 'Logan Kade (Fallen Crest High #5.5)',\n",
" \"I Know Why the Caged Bird Sings (Maya Angelou's Autobiography #1)\",\n",
" 'Drama',\n",
" \"America's War for the Greater Middle East: A Military History\",\n",
" 'A Game of Thrones (A Song of Ice and Fire #1)',\n",
" \"The Pilgrim's Progress\",\n",
" 'The Hound of the Baskervilles (Sherlock Holmes #5)',\n",
" \"The Geography of Bliss: One Grump's Search for the Happiest Places in the World\",\n",
" 'The Demonists (Demonist #1)',\n",
" 'The Demon Prince of Momochi House, Vol. 4 (The Demon Prince of Momochi House #4)',\n",
" 'Misery',\n",
" 'Far From True (Promise Falls Trilogy #2)',\n",
" 'Confessions of a Shopaholic (Shopaholic #1)',\n",
" 'Vegan Vegetarian Omnivore: Dinner for Everyone at the Table',\n",
" 'Two Boys Kissing',\n",
" 'Twilight (Twilight #1)',\n",
" 'Twenties Girl',\n",
" 'The Tipping Point: How Little Things Can Make a Big Difference',\n",
" 'The Stand',\n",
" 'The Picture of Dorian Gray',\n",
" 'The Name of God is Mercy',\n",
" \"The Lover's Dictionary\",\n",
" 'The Last Painting of Sara de Vos',\n",
" 'The Guns of August',\n",
" 'The Girl Who Played with Fire (Millennium Trilogy #2)',\n",
" 'The Da Vinci Code (Robert Langdon #2)',\n",
" 'The Cat in the Hat (Beginner Books B-1)',\n",
" 'The Book Thief',\n",
" 'The Autobiography of Malcolm X',\n",
" \"Surely You're Joking, Mr. Feynman!: Adventures of a Curious Character\",\n",
" 'Soldier (Talon #3)',\n",
" 'Shopaholic & Baby (Shopaholic #5)',\n",
" 'Seven Days in the Art World',\n",
" 'Rework',\n",
" 'Packing for Mars: The Curious Science of Life in the Void',\n",
" 'Orange Is the New Black',\n",
" 'One for the Money (Stephanie Plum #1)',\n",
" 'Midnight Riot (Peter Grant/ Rivers of London - books #1)',\n",
" 'Me Talk Pretty One Day',\n",
" 'Manuscript Found in Accra',\n",
" 'Lust & Wonder',\n",
" \"Life, the Universe and Everything (Hitchhiker's Guide to the Galaxy #3)\",\n",
" 'Life After Life',\n",
" 'I Am Malala: The Girl Who Stood Up for Education and Was Shot by the Taliban',\n",
" 'House of Lost Worlds: Dinosaurs, Dynasties, and the Story of Life on Earth',\n",
" 'Horrible Bear!',\n",
" 'Holidays on Ice',\n",
" 'Girl in the Blue Coat',\n",
" 'Fruits Basket, Vol. 3 (Fruits Basket #3)',\n",
" 'Cosmos',\n",
" 'Civilization and Its Discontents',\n",
" \"Catastrophic Happiness: Finding Joy in Childhood's Messy Years\",\n",
" 'Career of Evil (Cormoran Strike #3)',\n",
" 'Born to Run: A Hidden Tribe, Superathletes, and the Greatest Race the World Has Never Seen',\n",
" \"Best of My Love (Fool's Gold #20)\",\n",
" 'Beowulf',\n",
" 'Awkward',\n",
" 'And Then There Were None',\n",
" 'A Storm of Swords (A Song of Ice and Fire #3)',\n",
" 'The Suffragettes (Little Black Classics, #96)',\n",
" 'Vampire Girl (Vampire Girl #1)',\n",
" 'Three Wishes (River of Time: California #1)',\n",
" 'The Wicked + The Divine, Vol. 1: The Faust Act (The Wicked + The Divine)',\n",
" 'The Little Prince',\n",
" 'The Last Girl (The Dominion Trilogy #1)',\n",
" 'Taking Shots (Assassins #1)',\n",
" 'Settling the Score (The Summer Games #1)',\n",
" 'Rhythm, Chord & Malykhin',\n",
" 'One Second (Seven #7)',\n",
" \"Old Records Never Die: One Man's Quest for His Vinyl and His Past\",\n",
" 'Of Mice and Men',\n",
" 'My Perfect Mistake (Over the Top #1)',\n",
" 'Meditations',\n",
" 'Frankenstein',\n",
" 'Emma']"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"two_star_titles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"** Excellent! You should now have the tools necessary to scrape any websites that interest you! Keep in mind, the more complex the website, the harder it will be to scrape. Always ask for permission! **"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda env:base] *",
"language": "python",
"name": "conda-base-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: 13-Web-Scraping/01-Web-Scraping-Exercises.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Web Scraping Exercises \n",
"\n",
"## Complete the Tasks Below"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Import any libraries you think you'll need to scrape a website.**"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Use requests library and BeautifulSoup to connect to http://quotes.toscrape.com/ and get the HMTL text from the homepage.**"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\n\\n\\n\\t \\n\\tQuotes to Scrape \\n \\n \\n\\n\\n \\n
\\n
\\n
\\n
\\n \\n Login \\n \\n
\\n
\\n
\\n \\n\\n
\\n
\\n\\n
\\n
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is our choices, Harry, that show what we truly are, far more than our abilities.” \\n
by J.K. Rowling \\n (about) \\n \\n
\\n
\\n\\n
\\n
“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.” \\n
by Jane Austen \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.” \\n
by Marilyn Monroe \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Try not to become a man of success. Rather become a man of value.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is better to be hated for what you are than to be loved for what you are not.” \\n
by André Gide \\n (about) \\n \\n
\\n
\\n\\n
\\n
“I have not failed. I've just found 10,000 ways that won't work.” \\n
by Thomas A. Edison \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A woman is like a tea bag; you never know how strong it is until it's in hot water.” \\n
by Eleanor Roosevelt \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A day without sunshine is like, you know, night.” \\n
by Steve Martin \\n (about) \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n\\n'"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Get the names of all the authors on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Albert Einstein',\n",
" 'André Gide',\n",
" 'Eleanor Roosevelt',\n",
" 'J.K. Rowling',\n",
" 'Jane Austen',\n",
" 'Marilyn Monroe',\n",
" 'Steve Martin',\n",
" 'Thomas A. Edison'}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"authors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Create a list of all the quotes on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”',\n",
" '“It is our choices, Harry, that show what we truly are, far more than our abilities.”',\n",
" '“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”',\n",
" '“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”',\n",
" \"“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”\",\n",
" '“Try not to become a man of success. Rather become a man of value.”',\n",
" '“It is better to be hated for what you are than to be loved for what you are not.”',\n",
" \"“I have not failed. I've just found 10,000 ways that won't work.”\",\n",
" \"“A woman is like a tea bag; you never know how strong it is until it's in hot water.”\",\n",
" '“A day without sunshine is like, you know, night.”']"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"quotes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Inspect the site and use Beautiful Soup to extract the top ten tags from the requests text shown on the top right from the home page (e.g Love,Inspirational,Life, etc...). HINT: Keep in mind there are also tags underneath each quote, try to find a class only present in the top right tags, perhaps check the span.**"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"love\n",
"\n",
"\n",
"inspirational\n",
"\n",
"\n",
"life\n",
"\n",
"\n",
"humor\n",
"\n",
"\n",
"books\n",
"\n",
"\n",
"reading\n",
"\n",
"\n",
"friendship\n",
"\n",
"\n",
"friends\n",
"\n",
"\n",
"truth\n",
"\n",
"\n",
"simile\n",
"\n"
]
}
],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Notice how there is more than one page, and subsequent pages look like this http://quotes.toscrape.com/page/2/. Use what you know about for loops and string concatenation to loop through all the pages and get all the unique authors on the website. Keep in mind there are many ways to achieve this, also note that you will need to somehow figure out how to check that your loop is on the last page with quotes. For debugging purposes, I will let you know that there are only 10 pages, so the last page is http://quotes.toscrape.com/page/10/, but try to create a loop that is robust enough that it wouldn't matter to know the amount of pages beforehand, perhaps use try/except for this, its up to you!**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are lots of other potential solutions that are even more robust and flexible, the main idea is the same though, use a while loop to cycle through potential pages and have a break condition based on the invalid page."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 13-Web-Scraping/02-Web-Scraping-Exercise-Solutions.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Web Scraping Exercises - Solutions\n",
"\n",
"## Complete the Tasks Below"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Import any libraries you think you'll need to scrape a website.**"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import requests\n",
"import bs4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Use requests library and BeautifulSoup to connect to http://quotes.toscrape.com/ and get the HMTL text from the homepage.**"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"res = requests.get(\"http://quotes.toscrape.com/\")"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\n\\n\\n\\t \\n\\tQuotes to Scrape \\n \\n \\n\\n\\n \\n
\\n
\\n
\\n
\\n \\n Login \\n \\n
\\n
\\n
\\n \\n\\n
\\n
\\n\\n
\\n
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is our choices, Harry, that show what we truly are, far more than our abilities.” \\n
by J.K. Rowling \\n (about) \\n \\n
\\n
\\n\\n
\\n
“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.” \\n
by Jane Austen \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.” \\n
by Marilyn Monroe \\n (about) \\n \\n
\\n
\\n\\n
\\n
“Try not to become a man of success. Rather become a man of value.” \\n
by Albert Einstein \\n (about) \\n \\n
\\n
\\n\\n
\\n
“It is better to be hated for what you are than to be loved for what you are not.” \\n
by André Gide \\n (about) \\n \\n
\\n
\\n\\n
\\n
“I have not failed. I've just found 10,000 ways that won't work.” \\n
by Thomas A. Edison \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A woman is like a tea bag; you never know how strong it is until it's in hot water.” \\n
by Eleanor Roosevelt \\n (about) \\n \\n
\\n
\\n\\n
\\n
“A day without sunshine is like, you know, night.” \\n
by Steve Martin \\n (about) \\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n\\n'"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Get the names of all the authors on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Albert Einstein ,\n",
" J.K. Rowling ,\n",
" Albert Einstein ,\n",
" Jane Austen ,\n",
" Marilyn Monroe ,\n",
" Albert Einstein ,\n",
" André Gide ,\n",
" Thomas A. Edison ,\n",
" Eleanor Roosevelt ,\n",
" Steve Martin ]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select(\".author\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# I used a set to not worry about repeat authors.\n",
"authors = set() \n",
"for name in soup.select(\".author\"):\n",
" authors.add(name.text)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Albert Einstein',\n",
" 'André Gide',\n",
" 'Eleanor Roosevelt',\n",
" 'J.K. Rowling',\n",
" 'Jane Austen',\n",
" 'Marilyn Monroe',\n",
" 'Steve Martin',\n",
" 'Thomas A. Edison'}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"authors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Create a list of all the quotes on the first page.**"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"quotes = []\n",
"for quote in soup.select(\".text\"):\n",
" quotes.append(quote.text)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”',\n",
" '“It is our choices, Harry, that show what we truly are, far more than our abilities.”',\n",
" '“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”',\n",
" '“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”',\n",
" \"“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”\",\n",
" '“Try not to become a man of success. Rather become a man of value.”',\n",
" '“It is better to be hated for what you are than to be loved for what you are not.”',\n",
" \"“I have not failed. I've just found 10,000 ways that won't work.”\",\n",
" \"“A woman is like a tea bag; you never know how strong it is until it's in hot water.”\",\n",
" '“A day without sunshine is like, you know, night.”']"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"quotes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Inspect the site and use Beautiful Soup to extract the top ten tags from the requests text shown on the top right from the home page (e.g Love,Inspirational,Life, etc...). HINT: Keep in mind there are also tags underneath each quote, try to find a class only present in the top right tags, perhaps check the span.**"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[\n",
" love \n",
" , \n",
" inspirational \n",
" , \n",
" life \n",
" , \n",
" humor \n",
" , \n",
" books \n",
" , \n",
" reading \n",
" , \n",
" friendship \n",
" , \n",
" friends \n",
" , \n",
" truth \n",
" , \n",
" simile \n",
" ]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup.select('.tag-item')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"love\n",
"\n",
"\n",
"inspirational\n",
"\n",
"\n",
"life\n",
"\n",
"\n",
"humor\n",
"\n",
"\n",
"books\n",
"\n",
"\n",
"reading\n",
"\n",
"\n",
"friendship\n",
"\n",
"\n",
"friends\n",
"\n",
"\n",
"truth\n",
"\n",
"\n",
"simile\n",
"\n"
]
}
],
"source": [
"for item in soup.select(\".tag-item\"):\n",
" print(item.text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**TASK: Notice how there is more than one page, and subsequent pages look like this http://quotes.toscrape.com/page/2/. Use what you know about for loops and string concatenation to loop through all the pages and get all the unique authors on the website. Keep in mind there are many ways to achieve this, also note that you will need to somehow figure out how to check that your loop is on the last page with quotes. For debugging purposes, I will let you know that there are only 10 pages, so the last page is http://quotes.toscrape.com/page/10/, but try to create a loop that is robust enough that it wouldn't matter to know the amount of pages beforehand, perhaps use try/except for this, its up to you!**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# CODE HERE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Possible Solution #1 ( Assuming You Know Number of Pages)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"url = 'http://quotes.toscrape.com/page/'"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"authors = set()\n",
"\n",
"for page in range(1,10):\n",
"\n",
" # Concatenate to get new page URL\n",
" page_url = url+str(page)\n",
" # Obtain Request\n",
" res = requests.get(page_url)\n",
" # Turn into Soup\n",
" soup = bs4.BeautifulSoup(res.text,'lxml')\n",
" # Add Authors to our set\n",
" for name in soup.select(\".author\"):\n",
" authors.add(name.text)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Possible Solution #2 ( Unknown Number of Pages, but knowledge of last page)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check what the last invalid page looks like:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Choose some huge page number we know doesn't exist\n",
"page_url = url+str(9999999)\n",
"\n",
"# Obtain Request\n",
"res = requests.get(page_url)\n",
"\n",
"# Turn into Soup\n",
"soup = bs4.BeautifulSoup(res.text,'lxml')"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"\n",
"\n",
" \n",
"Quotes to Scrape \n",
" \n",
" \n",
"\n",
"\n",
"\n",
"
\n",
"
\n",
"
\n",
"
\n",
"Login \n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"\n",
"No quotes found!\n",
"\n",
" \n",
"\n",
" \n",
"
\n",
"
\n",
"
Top Ten tags \n",
"
\n",
"love \n",
" \n",
"
\n",
"inspirational \n",
" \n",
"
\n",
"life \n",
" \n",
"
\n",
"humor \n",
" \n",
"
\n",
"books \n",
" \n",
"
\n",
"reading \n",
" \n",
"
\n",
"friendship \n",
" \n",
"
\n",
"friends \n",
" \n",
"
\n",
"truth \n",
" \n",
"
\n",
"simile \n",
" \n",
"
\n",
"
\n",
"
\n",
"\n",
"\n",
""
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soup"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# This solution requires that the string \"No quotes found!\" only occurs on the last page.\n",
"# If for some reason this string was on the other pages, we would need to be more detailed.\n",
"\"No quotes found!\" in res.text"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"page_still_valid = True\n",
"authors = set()\n",
"page = 1\n",
"\n",
"while page_still_valid:\n",
"\n",
" # Concatenate to get new page URL\n",
" page_url = url+str(page)\n",
" \n",
" # Obtain Request\n",
" res = requests.get(page_url)\n",
" \n",
" # Check to see if we're on the last page\n",
" if \"No quotes found!\" in res.text:\n",
" break\n",
" \n",
" # Turn into Soup\n",
" soup = bs4.BeautifulSoup(res.text,'lxml')\n",
" \n",
" # Add Authors to our set\n",
" for name in soup.select(\".author\"):\n",
" authors.add(name.text)\n",
" \n",
" # Go to Next Page\n",
" page += 1"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Albert Einstein',\n",
" 'Alexandre Dumas fils',\n",
" 'Alfred Tennyson',\n",
" 'Allen Saunders',\n",
" 'André Gide',\n",
" 'Ayn Rand',\n",
" 'Bob Marley',\n",
" 'C.S. Lewis',\n",
" 'Charles Bukowski',\n",
" 'Charles M. Schulz',\n",
" 'Douglas Adams',\n",
" 'Dr. Seuss',\n",
" 'E.E. Cummings',\n",
" 'Eleanor Roosevelt',\n",
" 'Elie Wiesel',\n",
" 'Ernest Hemingway',\n",
" 'Friedrich Nietzsche',\n",
" 'Garrison Keillor',\n",
" 'George Bernard Shaw',\n",
" 'George Carlin',\n",
" 'George Eliot',\n",
" 'George R.R. Martin',\n",
" 'Harper Lee',\n",
" 'Haruki Murakami',\n",
" 'Helen Keller',\n",
" 'J.D. Salinger',\n",
" 'J.K. Rowling',\n",
" 'J.M. Barrie',\n",
" 'J.R.R. Tolkien',\n",
" 'James Baldwin',\n",
" 'Jane Austen',\n",
" 'Jim Henson',\n",
" 'Jimi Hendrix',\n",
" 'John Lennon',\n",
" 'Jorge Luis Borges',\n",
" 'Khaled Hosseini',\n",
" \"Madeleine L'Engle\",\n",
" 'Marilyn Monroe',\n",
" 'Mark Twain',\n",
" 'Martin Luther King Jr.',\n",
" 'Mother Teresa',\n",
" 'Pablo Neruda',\n",
" 'Ralph Waldo Emerson',\n",
" 'Stephenie Meyer',\n",
" 'Steve Martin',\n",
" 'Suzanne Collins',\n",
" 'Terry Pratchett',\n",
" 'Thomas A. Edison',\n",
" 'W.C. Fields',\n",
" 'William Nicholson'}"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"authors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are lots of other potential solutions that are even more robust and flexible, the main idea is the same though, use a while loop to cycle through potential pages and have a break condition based on the invalid page."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 14-Working-with-Images/.ipynb_checkpoints/00-Overview-of-Working-with-Images-checkpoint.ipynb
================================================
[File too large to display: 15.0 MB]
================================================
FILE: 14-Working-with-Images/.ipynb_checkpoints/01-Image-Exercise-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Image Exercise\n",
"\n",
"In the folder \"Working with Images\" (same folder this notebook is located in) there are two images we will be working with:\n",
"* word_matrix.png\n",
"* mask.png\n",
"\n",
"The word_matrix is a .png image that contains a spreadsheet of words with a hidden message in it. \n",
"\n",
"Your task is to use the mask.png image to reveal the hidden message inside the word_matrix.png. Keep in mind, you may need to make changes to the mask.png in order for this to work. That is all we'll say for now, since we really want you to discover this on your own!\n",
"\n",
"This exercise is more open-ended, so we won't guide you with the steps, instead, letting you explore and figure things out on your own as you would in a real world situation. However, if you get stuck, you can always view the solutions video or notebook for guidance. Best of luck!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/cAAAIvCAYAAAAxnCs5AAEAAElEQVR4nOzde1wU5f7A8c8saODt\nYJlnMUsotfSUgd3AsgLT1LIShULNAi8F5v3S0UINSktTS1MrFcoLdDSxoyWlCXVM4ddFOGbqURNN\nk80stiShhH1+fywsC7sLu4DKwvf9es3rpezMzux8n3lu88wzmlJKUerEyZNc3b49onGRuDdOEvfG\nSeLeOEncGyeJe+MkcW+cJO6NU+W46y7hsQghhBBCCCGEEKIOeAJomnapj0MIIYQQQgghhBAuKhuM\nL3fuhRBCCCGEEEIIN+d54uTJS30MQgghhBBCCCGEqIGyNr2mlFIyLF8IIYQQQgghhHA/ZcPyPav6\nUDRslTt1JO6Ng8S9cZK4N04S98ZJ4t44SdwbJ4l74+To5rw8cy+EEEIIIYQQQrg5adwLIYQQQggh\nhBBuThr3QgghhBBCCCGEm5PGvRBCCCGEEEII4eakcS+EEEIIIYQQQrg5adwLIYQQQgghhBBuzq0b\n92e+TiE++j5u8NWhaRpNfLvSJ+IZ3k7bj7E4k1lNm6FpWpVLC88X2UP5KyNMxlw2LxnLwODr0DQN\nnXYtd0c8w+JN+/nd5ggMvPPo3+x+b+fgQUxasoPTxRfzjDQunye0cSm2AKc3PWX5fGjSUbvf+1fW\nXMs6i7LM25ecTOFhD0+bfZSljxUZeRf89zYGpoKK15+maXQK7kVMwjq+Ollos36JIYO3po0i5KZ2\nFeLxdtpRO9cr/JhVMc9of1Mvnpq2ip0G29fGWKcD66WJb1f6Rr/Iln35Tq1vvZSlJ1EVx/lq2eIX\nsY6fce1atV5GpOTZrFv2N3scx9aXbqEjmZEkeX1NKbKYdZW5rP7HtB38Wenzv7Lm8vfS8/3PLfk2\n2//f/DvQNI2r+qzkhNXfa1qWl6Ute1xJW8L5/LysLG8b/CrfUTmPrD4253MWcbPOnKffMqNiGlJk\n1agu6FzZUvWxWe87IGF3jc9j4+Fandp+/u18+SF1+Iuj9uWnkfdG+KBpGp66B0g+UjGPqOsypLb5\nUb2gzC9DrLC4g4PJj6u2lY67bPHQ+qs1h3ermU287X5uvTT3SFDfKJNSSqnT2+LUPXqdw3WvDZmh\ndv5ssjqKPJUU0arK728TlKC+Omuy/yMuMXeMu7XP4q9wOrZmR9Wy/i0tn18ekKC+LrSNzZ+Zcyzr\nLMw0f158Ilk9pPOoYn969fCcXaroIv322qivcS85m6lmBTu+ZrtP/dTq/Baq/yaOUh3QHK7facB8\ntfds2XfvV8ujOjlcV8NfjU38rkL8rNOBo23Gr//e6fWt09OlUF/jbqv6fLVD+Fp1WtX0WkVFJ5+y\nWbfsb/Y4E9vmHaPV2gPnLsYJcok7xP2zeH8FKG/dJPVFpTw5a97tlmPvWiEPUMqkstWcwGYKUIPf\nLr8Wa1OWl6Ute1xJW5fapY67K/m5dVneN75yOVpdbApV2nQ/y/aeWpjaeKI8tiaV6WJd0JWypepj\ns973zfG76vL0OnSp4147rtWp7effzpcfzqx7bUj9rcNbq89xr235ef5woupjle/2sskj6rYMqV1+\ndHE5irtb3rk3GdNY+Pi/OA3cFbOW/+blU1hYyK95+9mW/BJhTw7h/o7BvPDXOZRSKKX4M3OOZfuF\nmSbL3wuKn6c7GudzFvHg/S/xucFE66BYVmd+T/7ZQs7lH+U/iVO4R6/jaMYcBg54iX1FtsfUIXwt\np0u/81x+Hv+XOIoOaJzJimPG8uyLd3IaoeYeCXyjymNaObZlzud8wJtpBZb//5oTx9o0o8v7i04+\nVbqPQn7N28PyqE6Agc0zniExR9XBL2qcvloxnhcyC/HQ+vNqetn1l8+R7FReG/UAw8JCuax03R82\njKZ39AqOo+g0IIFPDpzCWGi+Xj+eN5gOaFx3Ww86tAAwsvnZ/sQkHQb0DJ7zIQfz8jl3Np8fD2xl\nbnhHFLksie7FhA3277pZ8ozzhfySu5VpIe1R5LL8sZfYesY25tZ5jPUyMUiz8+3CEet81Xo5tn4o\nVzqxffm1WnFZFelb42Oyju25/Dy+TJ7KPXodfxxJZHToFHbYSQ+iaoF3DaMtUGhK5suc8r8rckhP\n2Wf5f+6CrXxdVH5+i3MyeC+nEI1AQm/zB6h1We6sC5G2GhJX8nNrH88cxPgU+6Pq7Ck5k0bKvB8t\n/y9WqbyZUl7n0ghyqS7oWtkiLpS6qFO7Un442t/RDKnD16WalJ/fbHqTbaYSy/93zl5ls15dliHW\nXM2P6gu3bNwXH8zh7ZK/AOg/ZAjd9D54eXnRWt+F3pEzWJ/oXMWvXC4rn5vFl8pE64AZbNv+Bo8H\nXYtPCy+8ffzpGTWfLRueo5tmzljmVhNobx89t0fN4+XoVgD836KtdoZ2iIuriB3rF7NXKfT9Epgd\n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\n69x0+9d5/Bg1dw53aTp+y19Cv9An2ZB1HGNhMUXGXPYmTaNfxFwOKkXbwARm2M2h6xY62rrIwuzp\nyRw0FFNcbOTbjHlMfOY9ALo+EeP0+BNHXtwbt846/7Y8nVcwT74UQTvgh7TR9Or/PLuO5vNrcTFF\nRgNfZ2ZXOkJACAGtg2N5uSyfpYy5m4j57/Ffg5Hi4mJ+ycvktQmD6OQXwpJPC5z2re3yo+RYCo92\n7WVd2Mm8vZFv05J4Y/dvANzSQX/5fhzhVpHRwP6U6fQb8CyfKxPNfWJ5Oto8jE/Dn5AnbgMgZ34c\nz6Yc4Mey2H8wfyLP7TwH6Hl0WJjcjW0E7httXlTT0zeKNanx3KXpKMiZx4jYZLkwf0UVs2tBAH+P\nfN68eKnRXO4XGLJJ3vAmAF76m7m2LVzISWJ+UuXrLfycvZjtGbZemkeHvkSVLaz3RdpODipF+76x\nPOQvF/Xqq9bBk3kt1hdwbDMUFRo5fTSNFyJ7l63NoWfoy09yd1kn8dyn86yPuh26biERtwYxZUkc\nd2k6zmbFMW1hw3nmeV3i0SGYAYNaAJB7zHwx5t6IEOtceE//YB71N19kySpbq6hfz27Wi2+lZ7ex\nckblT8KxH7lzY9Qc6/ppCb17MTVpHyeM5r7gL3mZZH7VADv8SikFOLwup5KTyaq/zsPpHCwvTy1c\nbT1pUkopdWZXnLpXr3O77fXBM9Xen0zlPqFIfTQvVLVzs0+LTjHq3VyTy/OJST7tcKTSc5lqdlAz\n675LMk0On/OfxNGqI5rb89MRpNZ+Zd7nfOY8t9tZXuU/v7ZdybjXrnyVFNlaAapjxEZ1pty7FcVU\nKcdYWGJaWboE1B3xn12G71b76nrcS88dVquiO1fw2+vVI0u+VMXq0pYfOcvuqTD+1wcnqP3nzNt/\nFH91hdvan8eVUtfjXhVVKTdbdIpRG4/87rBf6blMNTukg9t9AqLfVt/bbd+Q8n99jrslX7XwSFBf\nqvL5x3W5X1l5Xr4OOJo8zNo+iHr9O6ft62v861vcS8/tVGM8mrr9vTX81MTN3ymlilTaDF8FqKa6\nGPWeU5tPqdJz6WpC+6sUoG6Iflv9avfer+lxDu3Bp1J/cdq/LrTPaqq+xd0dV/nYncraDBp+anzi\n16rYur0tfVzXd7Vd2V+kPorvqcDcXl+S+bvrD6yD6lPcjyb2t56nhxaiNn3rGN+sBXdZ379KF6v2\n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\nIYQQQgghhBDCNRncCyGEEEIIIYQQjZwM7oUQQgghhBBCiEZOBvdCCCGEEEIIIUQjJ4N7IYQQQggh\nhBCikXO6Wr4QQgghhBBCCCG8n6yWL4QQQgghhBBCXCR8jx0/fqGPQQghhBBCCCGEELVgGdPLtHwh\nhBBCCCGEEKKRskzL963uRXFxq3pSR+LeNEjcmyaJe9MkcW+aJO5Nk8S9aZK4N02uLs7LPfdCCCGE\nEEIIIUQjJ4N7IYQQQgghhBCikZPBvRBCCCGEEEII0cjJ4F4IIYQQQgghhGjkZHAvhBBCCCGEEEI0\ncjK4F0IIIYQQQgghGrlGN7g//U0q8TH3cb2/Dk3TaObfk/6RT/NW+j7OlMEXCR3QNK3GrX8vHzRN\nIyByPacc9lLK/y24B03T6BjyCnsx8M4jf6omvUVlOldb9e8X1fkje4H1d1ySXfNjPkzGPLYse4ah\nIdegaRo6rSt3Rz7N0s37+F817/sp2z6Pde7Vlyemr2KHwX6f7uY1d45VuFvGLIwcSl9BbOQdBGjm\nOF0bMoznFm3ioNExtatYNfPvyf0xU1mTWVDt3qrmCb/ufRgQ8yIbs+3fV1OeaO37IruR/OApy+9a\nU94oyl7AzTodzXTDSDtu/p3Lj6fykI8vmqYxJtUSL6nTzyfburtq+RsQ8yIf7C20S++qHHXu1ZcJ\nCc7LuMXJzU9Y049MPmL/2gfPcoWmodNuYUl2icN7y49v5pFOzdA0f/72QaFd3nG1WfKUq7SWdmdl\nDXXMxawu5deWu20zVOY5H60Pr+c6vv5j6iPmPFixL0/ac+d1iuO+m3r7r8hmdvOWNf6mlnbR03rC\norZ9vXJDNmsSxhHaq1ON/QEp3w2jujGdsSzLo/xj4Vl+cN3GXxsyjMnLPuNk2fn8ReqJMj8M0W7z\nVgdSHlUdqxyrZfPRBqn1h0zq8/jLnL5edZv72pSKz9Kr2dvO2u3n3KEk1V/nY/NagUqObKsA1SVi\nnTrp8ggr07naqn//+dVY4m7xe9Z867EmZpmqTXtyW5y6R69zGYeuoTPVjlP2n1FetE+9Ht3d5Xs0\nAtUzSd+r0or07ua1mo71fPPOuLtbxpQqO5Whpod2dvl7N9OHqXnbfrV7jzuxCopeqf5bZL+vmvIE\noHpHv6d+dHM/rXwS1LfqwuQH74y7eyp/V8f6utIRtWJQGwUoXy1cbTpm/p3LjqWoITofBaiYlBMV\n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\n",
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAD7CAYAAABpCe1bAAAEiElEQVR4nO3dwa3kMAwFQXLh/FPW\nRvFHQKsqggf40OBF3nPOGQAgZ2dG5AEg6N/tAQDA3xB5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg+47Zz3/rS7u7cnAPADLnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiNqZee9dVwB4gEseAKJEHgCiRB4AokQeAKJEHgCiRB4A\nokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCivtsD4IZz3vvD8u7engD8mEseAKJEHgCi\nRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJ2Zt573xMAHuCSB4AokQeAKJEHgCiRB4Ao\nkQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiR\nB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKjv9gCAXznn3J7wc7t7ewIXueQBIErk\nASBK5AEgSuQBIErkASBK5AEgSuQBIErkASBK5AEgSuQBIGpn5r13HgHgAS55AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCI\nEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8A4O+dc25P+LndvT3hOpc8AESJPABE\niTwARIk8AESJPABEiTwARIk8AESJPABEiTwARIk8AETtzLz31iEAPMAlDwBRIg8AUSIPAFEiDwBR\nIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUd/MzDnv/W12d29PAIA/5ZIH\ngCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKidmffetAWAB7jkASDquz2Ae/yY\nCKDNJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUX5QAwBRLnkAiBJ5AIgS\neQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8Afuuc9/4u\nvbu3J1znu7/JJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUTsz7711CAAP\ncMkDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CU\nyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTI\nA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQNR3zrm9AQD4A/8B\ni5wo7x6tDuUAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 14-Working-with-Images/.ipynb_checkpoints/02-Image-Exercise-Solution-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Image Exercise - Solution\n",
"\n",
"In the folder \"Working with Images\" (same folder this notebook is located in) there are two images we will be working with:\n",
"* word_matrix.png\n",
"* mask.png\n",
"\n",
"The word_matrix is a .png image that contains a spreadsheet of words with a hidden message in it. \n",
"\n",
"Your task is to use the mask.png image to reveal the hidden message inside the word_matrix.png. Keep in mind, you may need to resize the mask.png in order for this to work.\n",
"\n",
"This exercise is more open-ended, so we won't guide you with the steps, instead, letting you explore and figure things out on your own as you would in a real world situation. However, if you get stuck, you can always view the solutions video or notebook for guidance. Best of luck!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Import Images"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from PIL import Image"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"words = Image.open('word_matrix.png')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/cAAAIvCAYAAAAxnCs5AAEAAElEQVR4nOzde1wU5f7A8c8saODt\nYJlnMUsotfSUgd3AsgLT1LIShULNAi8F5v3S0UINSktTS1MrFcoLdDSxoyWlCXVM4ddFOGbqURNN\nk80stiShhH1+fywsC7sLu4DKwvf9es3rpezMzux8n3lu88wzmlJKUerEyZNc3b49onGRuDdOEvfG\nSeLeOEncGyeJe+MkcW+cJO6NU+W46y7hsQghhBBCCCGEEKIOeAJomnapj0MIIYQQQgghhBAuKhuM\nL3fuhRBCCCGEEEIIN+d54uTJS30MQgghhBBCCCGEqIGyNr2mlFIyLF8IIYQQQgghhHA/ZcPyPav6\nUDRslTt1JO6Ng8S9cZK4N04S98ZJ4t44SdwbJ4l74+To5rw8cy+EEEIIIYQQQrg5adwLIYQQQggh\nhBBuThr3QgghhBBCCCGEm5PGvRBCCCGEEEII4eakcS+EEEIIIYQQQrg5adwLIYQQQgghhBBuzq0b\n92e+TiE++j5u8NWhaRpNfLvSJ+IZ3k7bj7E4k1lNm6FpWpVLC88X2UP5KyNMxlw2LxnLwODr0DQN\nnXYtd0c8w+JN+/nd5ggMvPPo3+x+b+fgQUxasoPTxRfzjDQunye0cSm2AKc3PWX5fGjSUbvf+1fW\nXMs6i7LM25ecTOFhD0+bfZSljxUZeRf89zYGpoKK15+maXQK7kVMwjq+Ollos36JIYO3po0i5KZ2\nFeLxdtpRO9cr/JhVMc9of1Mvnpq2ip0G29fGWKcD66WJb1f6Rr/Iln35Tq1vvZSlJ1EVx/lq2eIX\nsY6fce1atV5GpOTZrFv2N3scx9aXbqEjmZEkeX1NKbKYdZW5rP7HtB38Wenzv7Lm8vfS8/3PLfk2\n2//f/DvQNI2r+qzkhNXfa1qWl6Ute1xJW8L5/LysLG8b/CrfUTmPrD4253MWcbPOnKffMqNiGlJk\n1agu6FzZUvWxWe87IGF3jc9j4+Fandp+/u18+SF1+Iuj9uWnkfdG+KBpGp66B0g+UjGPqOsypLb5\nUb2gzC9DrLC4g4PJj6u2lY67bPHQ+qs1h3ermU287X5uvTT3SFDfKJNSSqnT2+LUPXqdw3WvDZmh\ndv5ssjqKPJUU0arK728TlKC+Omuy/yMuMXeMu7XP4q9wOrZmR9Wy/i0tn18ekKC+LrSNzZ+Zcyzr\nLMw0f158Ilk9pPOoYn969fCcXaroIv322qivcS85m6lmBTu+ZrtP/dTq/Baq/yaOUh3QHK7facB8\ntfds2XfvV8ujOjlcV8NfjU38rkL8rNOBo23Gr//e6fWt09OlUF/jbqv6fLVD+Fp1WtX0WkVFJ5+y\nWbfsb/Y4E9vmHaPV2gPnLsYJcok7xP2zeH8FKG/dJPVFpTw5a97tlmPvWiEPUMqkstWcwGYKUIPf\nLr8Wa1OWl6Ute1xJW5fapY67K/m5dVneN75yOVpdbApV2nQ/y/aeWpjaeKI8tiaV6WJd0JWypepj\ns973zfG76vL0OnSp4147rtWp7effzpcfzqx7bUj9rcNbq89xr235ef5woupjle/2sskj6rYMqV1+\ndHE5irtb3rk3GdNY+Pi/OA3cFbOW/+blU1hYyK95+9mW/BJhTw7h/o7BvPDXOZRSKKX4M3OOZfuF\nmSbL3wuKn6c7GudzFvHg/S/xucFE66BYVmd+T/7ZQs7lH+U/iVO4R6/jaMYcBg54iX1FtsfUIXwt\np0u/81x+Hv+XOIoOaJzJimPG8uyLd3IaoeYeCXyjymNaObZlzud8wJtpBZb//5oTx9o0o8v7i04+\nVbqPQn7N28PyqE6Agc0zniExR9XBL2qcvloxnhcyC/HQ+vNqetn1l8+R7FReG/UAw8JCuax03R82\njKZ39AqOo+g0IIFPDpzCWGi+Xj+eN5gOaFx3Ww86tAAwsvnZ/sQkHQb0DJ7zIQfz8jl3Np8fD2xl\nbnhHFLksie7FhA3277pZ8ozzhfySu5VpIe1R5LL8sZfYesY25tZ5jPUyMUiz8+3CEet81Xo5tn4o\nVzqxffm1WnFZFelb42Oyju25/Dy+TJ7KPXodfxxJZHToFHbYSQ+iaoF3DaMtUGhK5suc8r8rckhP\n2Wf5f+6CrXxdVH5+i3MyeC+nEI1AQm/zB6h1We6sC5G2GhJX8nNrH88cxPgU+6Pq7Ck5k0bKvB8t\n/y9WqbyZUl7n0ghyqS7oWtkiLpS6qFO7Un442t/RDKnD16WalJ/fbHqTbaYSy/93zl5ls15dliHW\nXM2P6gu3bNwXH8zh7ZK/AOg/ZAjd9D54eXnRWt+F3pEzWJ/oXMWvXC4rn5vFl8pE64AZbNv+Bo8H\nXYtPCy+8ffzpGTWfLRueo5tmzljmVhNobx89t0fN4+XoVgD836KtdoZ2iIuriB3rF7NXKfT9Epgd\n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\n69x0+9d5/Bg1dw53aTp+y19Cv9An2ZB1HGNhMUXGXPYmTaNfxFwOKkXbwARm2M2h6xY62rrIwuzp\nyRw0FFNcbOTbjHlMfOY9ALo+EeP0+BNHXtwbt846/7Y8nVcwT74UQTvgh7TR9Or/PLuO5vNrcTFF\nRgNfZ2ZXOkJACAGtg2N5uSyfpYy5m4j57/Ffg5Hi4mJ+ycvktQmD6OQXwpJPC5z2re3yo+RYCo92\n7WVd2Mm8vZFv05J4Y/dvANzSQX/5fhzhVpHRwP6U6fQb8CyfKxPNfWJ5Oto8jE/Dn5AnbgMgZ34c\nz6Yc4Mey2H8wfyLP7TwH6Hl0WJjcjW0E7httXlTT0zeKNanx3KXpKMiZx4jYZLkwf0UVs2tBAH+P\nfN68eKnRXO4XGLJJ3vAmAF76m7m2LVzISWJ+UuXrLfycvZjtGbZemkeHvkSVLaz3RdpODipF+76x\nPOQvF/Xqq9bBk3kt1hdwbDMUFRo5fTSNFyJ7l63NoWfoy09yd1kn8dyn86yPuh26biERtwYxZUkc\nd2k6zmbFMW1hw3nmeV3i0SGYAYNaAJB7zHwx5t6IEOtceE//YB71N19kySpbq6hfz27Wi2+lZ7ex\nckblT8KxH7lzY9Qc6/ppCb17MTVpHyeM5r7gL3mZZH7VADv8SikFOLwup5KTyaq/zsPpHCwvTy1c\nbT1pUkopdWZXnLpXr3O77fXBM9Xen0zlPqFIfTQvVLVzs0+LTjHq3VyTy/OJST7tcKTSc5lqdlAz\n675LMk0On/OfxNGqI5rb89MRpNZ+Zd7nfOY8t9tZXuU/v7ZdybjXrnyVFNlaAapjxEZ1pty7FcVU\nKcdYWGJaWboE1B3xn12G71b76nrcS88dVquiO1fw2+vVI0u+VMXq0pYfOcvuqTD+1wcnqP3nzNt/\nFH91hdvan8eVUtfjXhVVKTdbdIpRG4/87rBf6blMNTukg9t9AqLfVt/bbd+Q8n99jrslX7XwSFBf\nqvL5x3W5X1l5Xr4OOJo8zNo+iHr9O6ft62v861vcS8/tVGM8mrr9vTX81MTN3ymlilTaDF8FqKa6\nGPWeU5tPqdJz6WpC+6sUoG6Iflv9avfer+lxDu3Bp1J/cdq/LrTPaqq+xd0dV/nYncraDBp+anzi\n16rYur0tfVzXd7Vd2V+kPorvqcDcXl+S+bvrD6yD6lPcjyb2t56nhxaiNn3rGN+sBXdZ379KF6v2\n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\nIYQQQgghhBDCNRncCyGEEEIIIYQQjZwM7oUQQgghhBBCiEZOBvdCCCGEEEIIIUQjJ4N7IYQQQggh\nhBCikXO6Wr4QQgghhBBCCCG8n6yWL4QQQgghhBBCXCR8jx0/fqGPQQghhBBCCCGEELVgGdPLtHwh\nhBBCCCGEEKKRskzL963uRXFxq3pSR+LeNEjcmyaJe9MkcW+aJO5Nk8S9aZK4N02uLs7LPfdCCCGE\nEEIIIUQjJ4N7IYQQQgghhBCikZPBvRBCCCGEEEII0cjJ4F4IIYQQQgghhGjkZHAvhBBCCCGEEEI0\ncjK4F0IIIYQQQgghGrlGN7g//U0q8TH3cb2/Dk3TaObfk/6RT/NW+j7OlMEXCR3QNK3GrX8vHzRN\nIyByPacc9lLK/y24B03T6BjyCnsx8M4jf6omvUVlOldb9e8X1fkje4H1d1ySXfNjPkzGPLYse4ah\nIdegaRo6rSt3Rz7N0s37+F817/sp2z6Pde7Vlyemr2KHwX6f7uY1d45VuFvGLIwcSl9BbOQdBGjm\nOF0bMoznFm3ioNExtatYNfPvyf0xU1mTWVDt3qrmCb/ufRgQ8yIbs+3fV1OeaO37IruR/OApy+9a\nU94oyl7AzTodzXTDSDtu/p3Lj6fykI8vmqYxJtUSL6nTzyfburtq+RsQ8yIf7C20S++qHHXu1ZcJ\nCc7LuMXJzU9Y049MPmL/2gfPcoWmodNuYUl2icN7y49v5pFOzdA0f/72QaFd3nG1WfKUq7SWdmdl\nDXXMxawu5deWu20zVOY5H60Pr+c6vv5j6iPmPFixL0/ac+d1iuO+m3r7r8hmdvOWNf6mlnbR03rC\norZ9vXJDNmsSxhHaq1ON/QEp3w2jujGdsSzLo/xj4Vl+cN3GXxsyjMnLPuNk2fn8ReqJMj8M0W7z\nVgdSHlUdqxyrZfPRBqn1h0zq8/jLnL5edZv72pSKz9Kr2dvO2u3n3KEk1V/nY/NagUqObKsA1SVi\nnTrp8ggr07naqn//+dVY4m7xe9Z867EmZpmqTXtyW5y6R69zGYeuoTPVjlP2n1FetE+9Ht3d5Xs0\nAtUzSd+r0or07ua1mo71fPPOuLtbxpQqO5Whpod2dvl7N9OHqXnbfrV7jzuxCopeqf5bZL+vmvIE\noHpHv6d+dHM/rXwS1LfqwuQH74y7eyp/V8f6utIRtWJQGwUoXy1cbTpm/p3LjqWoITofBaiYlBMV\n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\n",
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mask = Image.open(\"mask.png\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAD7CAYAAABpCe1bAAAEiElEQVR4nO3dwa3kMAwFQXLh/FPW\nRvFHQKsqggf40OBF3nPOGQAgZ2dG5AEg6N/tAQDA3xB5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg+47Zz3/rS7u7cnAPADLnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiNqZee9dVwB4gEseAKJEHgCiRB4AokQeAKJEHgCiRB4A\nokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCivtsD4IZz3vvD8u7engD8mEseAKJEHgCi\nRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJ2Zt573xMAHuCSB4AokQeAKJEHgCiRB4Ao\nkQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiR\nB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKjv9gCAXznn3J7wc7t7ewIXueQBIErk\nASBK5AEgSuQBIErkASBK5AEgSuQBIErkASBK5AEgSuQBIGpn5r13HgHgAS55AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCI\nEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8A4O+dc25P+LndvT3hOpc8AESJPABE\niTwARIk8AESJPABEiTwARIk8AESJPABEiTwARIk8AETtzLz31iEAPMAlDwBRIg8AUSIPAFEiDwBR\nIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUd/MzDnv/W12d29PAIA/5ZIH\ngCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKidmffetAWAB7jkASDquz2Ae/yY\nCKDNJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUX5QAwBRLnkAiBJ5AIgS\neQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8Afuuc9/4u\nvbu3J1znu7/JJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUTsz7711CAAP\ncMkDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CU\nyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTI\nA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQNR3zrm9AQD4A/8B\ni5wo7x6tDuUAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Resize Images to Match"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(505, 251)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask.size"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1015, 559)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words.size"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mask = mask.resize((1015,559))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1015, 559)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask.size"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Add in alpha parameter\n",
"\n",
"Now we can't just paste them over, otherwise we won't see what is underneath, we need to add an alpha value."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mask.putalpha(200)\n",
"# links.putalpha(128)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAwAAQNxfxaEjW03OYssAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"words.paste(mask,(0,0),mask)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/cAAAIvCAYAAAAxnCs5AAEAAElEQVR4nOzd6VciWbqw/QuQeZ5B\ncNYca+ru9znZ//+nzj7dXae6KisnTVMFmacgGEPg/RCooKCgZqYk92+tXl0JERCyI/Z4770Ng8Hg\nD4a63S4WiwWxXCTdl5Ok+3KSdF9Oku7LSdJ9OUm6LydJ9+V0Nd2N3/BahBBCCCGEEEII8QBW/v73\nv/P69etvfR1CCCGEEEIIIYSY06tXrwAZuRdCCCGEEEIIIRbeSrfb/dbXIIQQQgghhBBCiDs4b9Ov\nyMILQgghhBBCCCHEYjpv069MevM8Zl98366utSDpvhwk3ZeTpPtyknRfTpLuy0nSfTlJui+naWvm\nyZx7IYQQQgghhBBiwUnjXgghhBBCCCGEWHDSuBdCCCGEEEIIIRacNO6FEEIIIYQQQogFJ417IYQQ\nQgghhBBiwUnjXgghhBBCCCGEWHATt8JbFGeNErlcnmJVoa2BwWzH4/YQCEcJentk/vct6UH/xs8w\nGpK8+J8EzvMXeh0qhQyFUpWK2gGsuAM+AqEoYb8d09jZGoX93/hU6l37XJsrgC8YZTXqwWx4mL9X\njFPS/+Zt6mzq+9fSFtAqh/znQx6A4PYv7Iat184bqKf8880JABsvXxFzwaBb4uOvB1QYXDlavz9C\n0QQRj/m+f5K49vyBzeXB4wsTCQdwWsb7IweaQiFTolStoLQ0LtIjHCfos155XqGrlijkL/MMi92D\nzxciFA/jvpJ8o/fBKIPZjscXJBqP4rev3Hr8qPP7Sdxker56zhrY4eVeiJW5ntVL4d2/sh00jx17\n/tok09PWjMPjwxcKEQtJXn83Kqlf35Lu9rHHn/PDumds1GGgnvLrmxM0YPXJ31jzj1db1Mwb3hyr\nWLxbvHwWwXL+xh3L8vN7a9KdMM+9JZg5Pz8vy82udZ6/jGMf+5Db02bQzPLH70c0Aefqc16sjd5D\nKql/zl8XnK1sue3aLr/bkXzBjwn3XD/f8pmvTj05/569/DBLHf6ruH/52aP06Vf2Cz0M+Nj5+SlB\n2+j7D1uGtO+ZHz0GC9u4b5cO+HO/iDby2kBrUSu3UModjD8n5v5MrZZi/yCNMvqhdKiXc9TLObKe\nVXb21nDP8Ku11TJZtUyxlOTZswTOq60M8Q10KOdLF/+qZYs0ggmc94pfOb8/ylTX9thddUs4zF31\nVFLv3pJWxythbVWhrSo0ehZeXGTafZqFIz58ytMZO/ryec3419nbieMwAb0W+aMPHBbaY0d3Wwr5\nlkI+kya2/ZS1sP3W9BtoLWqFFLVCgdjeczYC1zuIxLLQaCoFmkqB7GmYrSebhOySA8zHhSdiJp3q\n0MlUaSQ9uEd+wka9clHOV+pNEv7RilsTpdTUPyXgvWjYP2RZLu5orvxcp6nHHKdd7CXmKUf71EpZ\nmsN/NU9zVKMeApYbT7rx8+YqW8RX8bXr1OffV6kk2XsidfgvY7byc9AuUyjo+ciAKvlSHf9YHvGw\nZch5LfFu+dHjsJhFW69K5qCEBrijO2wm/NhMBvq9Dg2lQr5mwWtzEfqf/0dyeMqk0dhRg2aWD+/S\nqMCKK8rGRhy/3YwBjUY5R+okg6Kc8uG9kRfPE1y9/0Z7cPo9jWY5xf6nPB01xUnex7O4E/FlTBqh\nn2TQrJCvXvbQnjVTFGtRnP75HoPLHuI+Z1qL8sk+h4U2lZMjCr4fiDrm/xsEqIUj0mofAz7Wnm8S\ncZoxMKDbUajm8hC4zJC75UPefdI792z+JJtrEVxWE4aBRj1/zOFxGZvThdUE0KNy8p7DQgcwE1jb\nZi3sxmKEs26dYuqIk3Kb7Ke39E0/shW43g97kWcM+px1FU4/HZJROuQ+pvH+bRvfypTjxb3c1jM+\nffxU9yVGUUfTtt/TaFUzHB9lUNoFDt8asfy0iWcxS9ZvxukOYSaNRpFGcx33xbNzWfECrlXcBk2F\nUqMPOPG4rMPX7leWz0pG6G82T34+qpr6yJHtJVvB2TpNB2c1Spnu5b8pky81CFzUuVwk56gLzle2\niC/lIerU84ysTv0+RerwD+ku5Wejkqc2UtrXUwWUqHus3vWQZcioefOjx2LROiMAGLSa5Ad6QvuC\nIRxmE0ajkRWzHW9wlb3tecMkOuRPUnplwLHKs2ebhFxWTCYjRpMVd3idJ3sJHMCZmiJd6tz4aUaT\nGVd4nbWwnvurmSqtu/yh4gFd9u6bfUmSYf3WL+fLdG8+8QZGVsxOwuvrhAwGoEFFaTzM5S4djZaq\nPyVmf5Cg5/z5M2Fz+IltPb2shPUVskdlNPQC+fmTBF67GZNRf1698T2e//QTuwk3JqCnZDjM6c9s\neOcle6s+bGYTRpMJi93H6t4ztoMmQKP0OUv9puhNg5EVq4+1jTgOYECBen361BDxfTOazDiD6zx5\nsoYL6Gs5TguSB8zL5PIQNBgBjWKtfvH6ZcVL16dI47KeRket0gRWnEE8Dnjoslzc1Rz5+YRzC/vH\nlGdMmk6lQHEwwGiOk0zoDTA1U745H59mzrJFfB1fu0599fsaJUXq8F/ATOVnX6Gc1TP9QDJJyGBg\nQIFiZTyDeLgy5Kr58qPHYiEb96yYOZ+5lE99Il9p0OndJSfXDboqtap+vicamRh+Y3JHiQX1N+ql\n2gwNQhNmqz6BZHAGd7868RBGe/d9oQgRfwSAbjVPpXnTmbczrJixoqe1do/7cLmZMFv037BbSXGc\nLqK0NPoThmYHTZViV/+dQ5EAk6IvrfbLObWNuj4KYyROeGIIvZVQbBUz0NNOqc1SKxxN80kXKZaK\nyRVlNSoVwTszuvDG9OpIp6Je/H4NpUQTsIbXWQtcrbh1qJVVAKx+F3a+VFku5jd7fj7JgDKH+2ka\n06dNDzUp52oA2KN+VgMhHOj5eLk2f6frvGWL+Jq+dp368vv6zb7U4b+gm8pPrVYi0+1jIEAwHCUQ\n0cuJWq48Xs4+UBkyyez50eOxkMGDBluQZLLA21SdjlLgUCkAYLH7CISDhEIhnPMM3Xc7FwvkuB3T\nQi/M2B0rUOpxpmhoMDHjv9RD6+ifaVhZ1F6U78d5776BMAGvGbPRT9ySJ9NtUCgphB2TQwRnMTjT\n6AzvH6NBUvpujHijmwSLB5S0DqXUAaUUgBVPOEA4EMU/XMRI6zTRAAMBHLfG1Gp0WnolzxxwYJt2\nuNWOGwNlBnTPetz6xI6kuWHCIjBHb15zdOU1WVDp6yvs/4fC/vhrX2YRHBN2hwuo0Ws06Ghgl4jt\nORhxukOQyXLWKKE049gdHRpVvYrm8YYI9OuclCt6xS3hxtZVqdX6gJmQd/hcfZGyXMxv9vx87CzD\nKls7XY73i2hqioPPVp7teKd+S08pkx2G1Ib9bgwOCxFfis/VHuV8mbg/Mlfazle2jOuUD/jP64O5\nzhHzmL9OPSlNDATY/cveDGsySB3+65lWfl6uk2UNB/FaViAQw5xLozUyVJQods95yjxQGTJi3vzo\nMVnIxj0Y8SSe8bOzQCafo1JpoQHdVpXscZVcpsDG06dE77dS2p2dz9c5KejdPK64b2qPkLi//iDF\nH69T116/nNtz2btvDfuGiyi58ITMZE47NE+LKHHPtXnTM3yzPuf++DPFwQBwEvRISt+VwRpk9yc7\nvlyOXDGP2gbooBQyKIUMzvAeT7cD3/Yiz+fcH57QRK8oeF3SivtS7lc5E4vE7PESMeTIDxooaoeI\nUaFU62EggM9txtr346ZCfVhxM7UqVBhgModxfoN1Tr5ex9FimjU/H/+tjNiDW+y2O7xN1WkVj0n7\n9pgcwd+jWsyiMRpSa8Ub8EC1MozKi8gaON+BaXXqLxUz1+9pNEvHHA2/zxn1sFgzrr8Po+tk+fwe\nvTPQ5SFkyZDpahSKVaKewEUn4cOXIfPkR4/LgjbuAYzYfFG2fFG2Bn3aLQW1lOP4tIqmKWQLCiGn\nb7bwKYsVPwYqDKg3O8QmLKoAGq2mPgK44jFfK7yn9dquuJKsRWQhjm/psncfgsHze8KINxjDcXpE\nkwLFSgLfhG3xJplUqQPwJTeIuKR/915WHIQSW4QSW/TPWjTqCvnTI4rqgEbhlHIsQMTqwEwJjTLN\nVp+A5abf3IzVvgL00MpN2n0wTzq806I+rCpYVq7nGpNG4sFMeHd9YiNTFtR7HL7eomc9Wk09vM/k\ndGKV1t38TG48ISP5Qg+1UqNqqFAHrAE/bgsY8BD0mqjXGihqnRW1CoAl5L3c8eQBynLxgGbIz683\nvo14Ejtsqr/zuaqR3/9IxXw9HnZ0BW1PJHAxgGL1hwkZqhQH80flmecqW8bdthWemM9D1Knn6Wy7\n6fvWY4u3WvpimVR+Xq6TZSROwDtsrho9BGIOMscqnUKB6mrgclu8hyhDrpktP3psFrZx3+v1MZmG\nqWEwYnP4sDk8rAx+5X3mjIF2Rh9matwbLC68PiOVao9qKkc9uI77yom9eo7scC9Md9B7a6iX7JH5\n9dy8Wv5l7z5A+t3/kp5wVC1XphW+up/l7IIbP7Adc0oBcB+9Hj2T6eKZNa7YcfvtuOxGOr99ok6D\nQR8MDhchi5FMt08hWyTivR56qbU7mGxWjIyuopohV4zijlyt8HcoZk/RAJN5Fa97llS0E3/ynHW/\nNA2+pEUZCe2pOU5zw1GeoEcite7EhNvrg0KJbvWUo7a+gpHL5x6mvxWnzw41lVrhmK6q/94Br+si\n3/0SZfk0slr+LWbMzyezEtncov7mgJKmoWnXjxhdQbt8+H+8Prx+zLxRefOWLeLr+RZ1aot/naey\n5eEXN6n8HF0nq0+GP/83c+28AVUKlQbBi50M7l+GTHZ7fvTYLGbjvq+Q/u8h3UiCSMCL02LCwICz\nTpliUU+sFZtljkVPrETWkhSrR6hahg/v+hO3z2mi9+IlJmyJsCiV0GUzaBY4Ldzey3Z2bf7OdKNb\n4VWP/8v7TIfKaQE15JQtsO6hXT7gXXGF1VgUr8eG2WBgMNBQCgXqgAEf5hXA6CG2EaD4sUi3esjb\nD9rYdkWNcpbjT1lWki/0VY09cbaiRT7kOpQO3zA4m7QVXg8wE9yMMaltfzkS3yH3/nc+V1sUT4uE\n/XfvEBKPy6B3Rq93PfENJhPT6pKjW/mogNEcZTUskVp3ZXb78VOmQodOW3/m/e7L8tbpCeJApamq\n+u9NFM9YtNT9y/LBoE+v17te2TOYpEE3h5nz8ykM1iBbTzp03pygXnlvcFYhd3L7rhSDOaPy5i5b\nZvtUcQdfu049+n292jG/vcvQrWQoKWEcc26XLGZzU/nZKJwOp7veTM2UqUedF/W2+5chk92UHz1G\nC3nH9pQKmW4bLhZpGWe0hUlG5lsgzeCI8eTZGfsHaRQ1x8Gb3LVjrJ5Vdvbuvi+u+Nouw3oMhHky\nYT9yegpH/31PdmT+zuzJa8SX2CVRf0tazfH5yMWznZAsznQnLar5Gh21f7FA5jgzvrVV/MPwK0tg\ni2fbRj58ytOupHhXuZ4R2BoqnZ4bh8mEf+0pW/0PHBbalE/eUz65erSV2PZT1ibscX/1uIseXPWY\n47SLvcT1kL3JYfwy2ve1TZtCM2lxw+LhfyleGf07n9/vH3ltWtoabWG2nqxLB989jI68A5i9fty2\nkfcdHoJOI83hNCtL1HdtRfz7luXdyiG//ev6MHB4969syXqYM5ovP5/G5FplZ7fFn/tFRgfLzhfI\nBSebP/4wIbT/vBO2N3dU3nxly4wfKr6JaaH2N0d7gsmbZDep8jZVJ3v4Gadjl4kb7Yi5zVR+jmx/\nZwvv8cN24FpH2nkHjKadUq7FcQ87YB6iDJlmWn70GC1kNcTk2+BvP3sp5yuU6jUUVQ+9sLkC+AJB\nopEAtjtkumZvkuc/h6kUMhRKVSpqB7DiDvgIhKKE/bIFyiIZDevxrEcnh+aZPEQTXrKHlYv5O3Mt\n2WZyEd9MUPvjBLV4QMrjZnvWUQIxwk7sxS84y0VK5Sq1ukJbA4PZjsfnIxSKE/KMNoqNOMJb/OwL\nUsiUKFUrKC2N8+c1FI4THF2N2WQnsv0zvkiJQj5Psap/vsXuwecLEYqHcc/Y5jZYg6xvVlE+Fqmm\njsi6n7EqLbolZcbh8eELhYiFZArW/Vnx+l1Q1RdAdQWuhs07cPnN0NDLfJ/XNbFMlrL8W5s3P5/O\nFlxno1pnv3i+0XTjYoFcW3iV0MSFsKyEYhHS1QxaI0OpFiXpnbXbfs6yRXyHjHjimySqb0irJY6O\nPbh2I1gkf39gk8vP8+3vwEksdr1hD2DyRkn48hN2xniYMmSa6/nR42R49erVH69fvx578dWrV9/o\ncsTXJOm+nCTdl5Ok+3KSdF9Oku7LSdJ9OUm6L6dp6S4B5kIIIYQQQgghxIKTxr0QQgghhBBCCLHg\npHEvhBBCCCGEEEIsOGncCyGEEEIIIYQQC04a90IIIYQQQgghxIKbuFq+EEIIIYQQQgghHj9ZLV8I\nIYQQQgghhPhOrHS73W99DUIIIYQQQgghhLiD8zb9isVi+caXIoQQQgghhBBCiLs4b9OvTHrzPGZf\nfN+urrUg6b4cJN2Xk6T7cpJ0X06S7stJ0n05Sbovp2lr5k1s3Ivl8o9//AOQzOB79/e///1bX4IQ\nQgghhBDiC5EF9YQQQgghhBBCiAUnjXshhBBCCCGEEGLBSeNeCCGEEEIIIYRYcNK4F0IIIYQQQggh\nFpw07oUQQgghhBBCiAX3aFfL75b2+XW/hAEPOz8/J2gbfVejsP8bn0o9VpzrvPghjn3k3cFZhU//\n+UhxMCDx7P+R9F72YXTVEoV8nmJVoa2Bxe7B5wsRiodxm6ddTY92tUi2UKJartMBbK4AvkCQaCSA\nzTR+tJL+N29TZ9c+xWC24/H5CIXihDxTv0yM6nWoFDIUSlUqagcw4/C48fjDxMI+rBe//eU9cZXN\nFcAXjLIa9WA26K8NuiU+/npAhcHUrw7v/pXt4NV06lH69Cv7hR4GfOz8/HTs3pyW9ldtvHxFzHXr\nYYLRtHKw8fIFMde0PsnLe8CRfMGPCff1z2pm+eP3I5qAc/U5L9Y813o4B+op/3xzAoym0/T7y2hz\n4fMGCEXD+O2PNkt9FM4aJXK5y/zXYLbjcXsIhKMEvXYap7M/P1Eu02mUns8GicajU9Jjnvx85J6K\nPuXFpo/x7F4l9c+3pAf9yffczPnX8hl9zqbZePmKqGVaXm3FHfARiiaITClP5ynvL6/HxeaPL4k6\nrnzWRZ0kwO5f9lgpSF7/EOYpM6c981ePu/57Nzn94w0njT4m8ypPf1nDfa0YuXzWPckXPE24p45+\nnd8LRkOSF/+TwHnr1S+ngaZQyJQoVSsoLY2LZzYcJ+izDvPSy9/dGtjh5V6Im2vH89XH4fZyx2SY\nr044Pe8y4/D48IVCxEKX9U1x7u719PDuX9lyK7emEXDtPprlPrz6XVfr/pPrhY/Xo62Jmt1+/JSp\noFBWOgRt1ov3BmcqSrkPQK9RpdmOYx9pYJ3VFYqDAUbieM9z8F6L/NEHDgvtse/pthTyLYV8Jk1s\n+ylrYftYhj44Uzj5eEBG6Y6d11bLZNUyuYyH5M4eq97bf8qB1qJWaFErZMiEt9jbiEzMiIROq6XY\nP0ijaGOv0lTKNJUyuVMP60+e3tDY052nVaWSZO9JAuc9fvNBu0yhoN97A6rkS3X8N1QCxENqkEkX\nCTyNYJnwbq+W4WRCoXGpT62UpTn8V/M0RzXqITDpw+bQb6uU2yrlXAZ/YpedpAd5rK9rlw74c7/I\n6OM80FrUyi2UcgfTz09vqdTNRs9nU9QKBWJ7z9kIjJYdd8/Pm7lPHLtfshW0XntvkofKv8Q0Herl\nHPVymeraHrurI/nwHct7nUrqMI3r2f3KCvF49JQy2cawzqidUqjEcF/ruL9UT51SCT69Mqh08WFk\njitf6Eq/F32ahSM+fMrTGXv9/JnNkfGvs7cTxzHHM3aX/HuWcmdiOt+JRlMp0FQKZE/DbD3ZJGSX\n/H0W52lYLCV59mB57+z3oX3KJyyqR9u4N1hceH1GKtUejVodLWK9qPidN94BBtca/z3UWgEAS9SD\nw6i/Vjl5z2FBHzkJrG2zFnZjMcJZt04xdcRJuU3201v6ph/ZCpx/U5PM+/dk1D7gIr69TjTgxMyA\nbqtM7iRFVlE4efce4w/PiTnHH+KxXt1Bn7OzFtXTE46zNZqFQz4aLRNGggRAr3HKh3dpVGDFFWVj\nI47fbsbAgG4jz/HhCU2LB/eEjHO0167f02iWU+x/ytNRUpzkfTyLj/ezTx6hn6xRyVMb6TWspwoo\nUTe+4ZPkSfyNV4nzd28Z1RNz61ZT5CoB1vxXs64muVRurAC/anBWo5S5rBQMKJMvNQjE5xt3GesV\n7vc40xrkjw85KbeppN+yv/IDT2MyljOmVyVzUEID3NEdNhN+bCYD/V6HhlIhX7PgsYF5judnoF7+\n90VP+qDPWVfh9NMhGaVD7mMa79+2h8/n/fJz0Mjv72O3Pr+1QX6f/GsZ3TQSMhipx1/m1X3OtBbl\nk30OC20qJ0cUfD8MR9vvWt5fOlNTHHy28mwnNLEjESSvfyjz/I4Tn/lb9agWs2NlQyVTpBWcXqEf\nUOU0W8U3oX6mFlJku/1ZvnhpdcuHvPukN6ht/iSbaxFcVhOGgUY9f8zhcRmb0zVn5NId8u8Zy52r\n5qkTjt6H/Z5Gq5rh+CiD0i5w+NaI5adNPI+2pfXtTK2nq5Pr6QAGS5Anr4IX/74aTXV1oGau+/Cm\ncaEF9IhrFla8fv2J6ZYr1C8K+MvG+7lGrX6ZcfcbKHm98RXwujABPSXDYU7vtwnvvGRv1YfNbMJo\nMmGx+1jde8Z20ARolD5nqQ/z7XYhxYnaB5ysvXjOetiN1WTEaDJhc4XZeLJH3GkEVDKpIuN9iVcY\njKyYnYQ2nrCb1AusZi5FsXnTScuqQzF1qleMHas8e7ZJyGXFdP7be+I8+eEvvJxhFN5oMuMKr7MW\n1g9slBRad72svkI5qydYIJkkZDAwoECx0rnlRPFwNPKpHI0rdatu6XT4rE7XqRT0iB5znGRCLzjU\nTPnieb8To4kVq0fPQ0J6B2PtKEf19ijTpTJoNckPO2R9wRAOswmj0ciK2Y43uMre9m2hmDMyGFmx\n+ljbiOMABhSo1/XEeJj8XCV9mKZxY0Xg4fIvMY1enobX1wkZDECDitIA7l7eX9UqHpAqSt6+6C6j\n7czEkwkcwFkjQ0W5OeNv5lIUrpQpg26J0yN1yhkCgL5C9qiMht6Ae/4kgdduxmQ0YjRZ8cb3eP7T\nT+wm3HMNbN0l//5q5c6Q0WTGGVznyZM1XEBfy3FaaDzgN3yfrtbT1Uz17vX0c1/oPlwUj7hxD1ZP\nEDf6CFujMawt9+pU8/oDnlxPYGa88d+rV8kO+hgI4HTq3WWNut5zYyROODAppNJKKLaKGT1kq1bv\nAxr1mgKAxRshdH2CFphcxOJ+ALRqiXr7+iHXGfHEVolcqZCIS4OuSq2qF6reWGRyBdhkxjzzE2nC\nbNUn8fSbfe7altNqJTJd/d4KhqMEIvo9UcuV758RiZmdNVNkRivdM4VJNinnagDYo35WAyEc6M97\nufYQLXEroXjsWoNSDK2YOR+Dy6c+ka806PS+4OjXihkr+jOv9Qc8ZH5+1jzl4PP0ztyHz7/ENIbR\ndB7eT3cr7ycrHOyTvaXTUDxu59F2JnOUYMJP0GkENArF6i2Ddfo0sMvnvE8te3LrfN9lN2iqFIeR\nDaFIYGLki9Vun7NBdcf8+2uXOxeXEmU1+gADSkvlsp4+OOPO9fRzX+Y+XByPOljEYHPicxqpN/qU\nayqrfh+oCvnBAJPZjy/ippfNkOnqjf+AZYWGWgbAEvDjtgBodFp6RdsccGCb1p1htePGQJkB3bMe\n0KFT1jPxFbd9amie2ebATAkNBW3W+rzJjsNjhFqPdqODhvNBew8XXrdzUYC67JPnt/Z7Pf0IgwnT\nrV1UPbSO/nmGles9WoX9/1DYH3/t+sIuHcr5kv5eOIjXsgKBGOZcGq2RoaJEsXsedV/ZdyEaj1PO\nZCgfHlP26WFY52GSlkCSCKekyteLhcs5l07CfjcGh4WIL8Xnao9yvkzcP3ke/zwMNgceg5HmoI/S\n6sC1qQPLy2ALkkwWeJuq01EKHCrDqVN2H4FwkFAohPMhM8Ezjc4wDzEY4CHyc0tgkzVHiYNUnVbx\ngEOblb3EhBWTHjz/EtMMRtLZaNAbbXcr78cPTO7s0jo+oKSpnHz4hOXlLo98/aSlc/TmNUdXXrsW\nyj8SbeeK+3DixBT1cvKpQqdQoLoamDjf2hqL4y/nyFYPSZX8+iJqzTzpTAcDARJJSKXKX+6PW2Ba\np4kGGAjgeLBpR3fLvw2uu5U7s9UJb2LC7nABNXqNBh0N7FLJv8XN9fR53ec+nJT+i+aRVysceEL6\nkrXdnEKz36c+DMm3RT04TS48Qf1PKNdUeqgoeT1A3+VzS4P5u6Vy+u//8K9//Yujyk2zrPW5PGr+\nM0cFvY/eGfUw23JY4wbNCvmq/hk+v75gmsnlIWSZdRRAPARbIM5a0MSAMqdZhf5FmKSL1UQIi2HS\n8rSXcy5XnEE8DgAr3oAHgG41T0Wmx3xhRjyJZ/z8dJOI336RN3dbVbLHB7z5/S25q3Mt7mLQ56xT\n5eTwhCZ6we51PUxJYMCEN7FzMf2imjomp94lQmP2/GtZHL15zevX4//7PV2/4Yw+Z1qDwtHn4fo7\nToKeh1sSyWQLsvUkOQytLZFKFekMZMR20ZxH24ETv1efimV1+/FiYECVQmVy5KRpxU98XR8FLh1l\nqPc0iqcpVMC7sfqAC7CJL+srlTviXvo9DbVwzMmwnu6K+767Be6+tkc/tOT0BHGg0qSIUvPQK+lz\np0JevXfW7Q1DJkM3p1APmql0+xjw4HefN+HMWO0rQA+t3KTdB/OkLo1Oi/pwBMCyYgKsWAMGKMFZ\nvUUX98TeQq193jvkwTzrr9lr0RzO97I5rdIJcZXFih8DFQbUmx1irvma453yAf95fXDt9RVXkvWY\nvqLyaDXt9sVTLldZNxIncL4Sq9FDIOYgc6zeOAogHpKZUHKDUumQWuaE940OCgM8yXXCDiOlCWeM\n7nDgiQQuCg2rP0zIUKU4aFAoKYQd17fFm8eg3UQZDL9nyojtcjNi80XZ8kXZGvRptxTUUo7j0yqa\nppAtKIScd1tgdNIoHpgJ764PF9l5qPzcSnhzm6bynmxXH9VdGVypHN4z/xLTTRtR8SU3iLiMgPGO\n5f11JtcqO1sqvx1WaBUP+FiTkvoxuX1BvctoO4s3gn+4taHBFiAcPqJW6OlrrkSdE7bFA0twjc1i\nlc/VDCcfGrSVHiuOJMmIE2NF9jibxmw9Hz0v02z1CVgeYgzxPvn3bOXO6FXOs6DeZD1aTX1tBpPT\niVWyjmtuqqevRe6/IPF97sPbtsJbBI++cW9wuPBbjDS7Grnjz9DtYzLHcA4zapPLQ8SQJT8okj62\n0AQs3iDukUaW0x3CTBqNDLliFHfkamWrQzF7igaYzKvD7fOMuL0eKFXo1lLkayGS3is3R08lm9Hn\n+pp94985XR8lezpc5MOJ3yOral81ulNCNZWjHlzHfc+JMRb/Ok/n3Hbl3Ogq630y/Pm/mevHDEcB\ngnOuvC7mZ7AFSa4VqJ3UURQwmqMkom6MU9bKH93hoHz4f7w+vH5M87SIEvdc7Howvw7FTHY4WhzG\n7X70WetX1+v1MZ3HoBuM2Bw+bA4PK4NfeZ85Y6Cd0YcHmgNnJ/7kOev+8wLa/HD5uclDci+B+uYE\nVdOu3XVfIv/63t1n3+Dgxg9sx5wXlfO7lfeT2SIbbNebfCp20DSJslgko9F23dohv07I+PU1V+K4\nJ06hshJKrlKsnlBXFMDMajKK08jNiycvOYPDRchiJNPtU8gWiXivT3nT2h1MNuscnel3z79nLXce\nMoy5p+Y4zQ2jRYMeGYWewaR97u/jy9yHi2MB/iYXnoheQdPaHX1Lg7CXi12KTG58ET00WlX1ECu7\nzzmWiCZPnK2oXsCXDt/w8bRKW+vR7/XotqqcfnzHp1IPMBPcjF304trCSdZc+men373luFCn0+vT\n7/VoqwWOPnwk0xhuy5GcvmUOoIeLag2KRx/YT+nhho5okuGsAzFGL1T1kMgMH959pqh26F389nWa\nN4RIWgM7/PXVK169esX/9yyuL7pYyVBS7rbIWaNwerH14k3uvfK6mJERVzRJbNgT60/Gp241Mzir\nkDu5fdHKO+960O9x1lH0PGS4yJ93I3qPToLvVF8h/d/f2U8XUVraxbPcbZYoFvVK0IrNcueG/cZL\n/Xl/9eoXNn0moEXxtDi2kNFD5ucm1yo7u9PmX94v/xLThXf/Okzn/8fTuF6mV04LjM6OuGt5P5mV\n8OYuiVu2PhSPTY9yNsUss63K+fLUxrrJGSMxvM8sviRRWUfldkYPsY2AXu+qHvL2Q5paS6PX79Pv\ndagXjvjw2//xMV2/NpVxMOjT6/Wu/69/x/z7C5c7V/V7Go3SMR8+nKCiDzyshmXAZ5LRevqrV6/4\n+eUeG7GHadgD97oPvwcLkVNd9sTrfB7XSK+ECZc3CLn8+dETRsNN+NeestX/wGGhTfnkPeVr0RVW\nYttPWRvb89ZB/OlTzj4ekFFUMp/+JPNp/CyD2UNyZ2/CnsjQH6T443Vq4t/kCG+xtyZ73E9jcq7y\n5Fmf/YM0iprj4E1uwlFmzKabcwKTN8luUuVtqk728DNOxy5XF1CeFurpSL7gx/jgYkEeW3iPH7YD\n19KsVzvmt3cZtBtHAcSDMnmIb0ZoFS0kQtPDns+3vwMnmz+e74M9dgS597/zudrTdz0Ix7ktAGda\nOBmY8Sd22ZE97q/pKRUy3TakDihNyBKNtjDJyP2mReisRDa3qL85oKQec5x2sZdwDz/3fvn5Vbbg\nFrvtDm9T1+eGP1T+JaYx4kvskqi/Ja3m+HzkGtmT/q7l/RQmF4ndbdpvDihp0inzWEyeiqN3AG05\nqxdTsbzrP0zcM7ud/8Bvh5XhmiuRCWUDgBFvbINIs4jjtgEcccES2OLZtpEPn/K0KyneVa5n+raG\nSqfnHoum7FYO+e1f1yMs9DDp+fPvecqd0Sf7xjrh6IKNTL8PjbYwW0/WZY/7b2ie+/B7i65YiNvO\n5PIQNGTIDvoYiV8Lo1txevBToMJgZMGsqx9iJ7L9M75IiUI+T7Gq0NbAYvfg84UIxcO4J5TzhhUP\n689/IlItki2UqJbrdBiGkASCRCMBbDO20A1mOx6fj1AoTsgjk3BuY/Ymef5zkFI+R6lcpaJ2ADMO\njxuPzz/jCttGPPFNEtU3pNUSR8ceXLuRmdc5GF2QJxa73rAHMHmjJHz5B115XdzO4t/gmf+mIy63\nv7OFV6dEyVgJxSKkqxm0RoZSLUpizh43o82FzxsgFA3jty9ElvrVmXwb/O1nL+V8hVK9hqLqUQ53\nyUdvY7AGWd+sonwsUk0dkXU/Y3VYw3rI/Hw8b7kesvMw+ZeYyuQivpmg9scJavGAlMfNdnjY0XfH\n8n6a0XtKNrl8/M6nYhkIE5sycmoLxoila2S7DQpFhfD65Oq9weJn6+aCRlxjxBHe4mdfkEKmRKla\nQWlpgBV3wEcoHCfos849uDVv/v01yx2dGYfHhy8UIhZ6wFFocUez34eD72z43vDq1as/Xr9+Pfbi\nq1evvtHliK/pPN3/8Y9/AJLu37u///3vwGW6n5N0Xw6S7stJ0n05SbovJ0n35STpvpympbtMJBNC\nCCGEEEIIIRacNO6FEEIIIYQQQogFJ417IYQQQgghhBBiwUnjXgghhBBCCCGEWHDSuBdCCCGEEEII\nIRbcxNXyhRBCCCGEEEII8fjJavlCCCGEEEIIIcR3YqXb7X7raxBCCCGEEEIIIcQdnLfpVywWyze+\nFCGEEEIIIYQQQtzFeZt+ZdKb5zH74vt2da0FSfflIOm+nCTdl5Ok+3KSdF9Oku7LSdJ9OU1bM0/m\n3AshhBBCCCGEEAtOGvdCCCGEEEIIIcSCk8a9EEIIIYQQQgix4KRxL4QQQgghhBBCLDhp3AshhBBC\nCCGEEAtOGvdCCCGEEEIIIcSCm7gV3uOlUdj/jU+lHtbADi/3QpjH3ldJ/fMt6UEfR/IFPybcY+8O\nNJVSvkChVEFpaRjMdjw+H6FQnJBn/JMG3RIffz2gwoDw7l/ZDo6/f3Gceso/35xMeMeMw+PDFwoR\nC3kwG+71h4srukqBTLFItarQ1sBoc+H3hgjHgnht+m09mjYbL18Rc135jNI+v+6XMBqSvPifBE6m\np6d+rwSJxqP47ZePjZL+N29TZ2OfIe5m+rMEFrsHXzBKPBbAZjp/9TI/uMrmCuALRlmNTn/2tMoh\n//mQByC4/Qu7YeuE98ysPf+FVc+EftC+wvFv78l0+wS3fmHHUZp6/ecm3Ydiil6HSiFDoVSlonYA\nsLk8eHxhIuEAToueJufP4FW33TN6GWIjNywzbnL+fPemfNfV4yQfuLvRsvcqmyuALxAkGhlNU7gp\nLzg3Xmfo064WyBZKVMt1OuhliNvtIxKJ4HOZMXJz/t4uHfDnfhENM5Gdl2yFrJO+VszopnQ/d70u\n1uT0jzecNPqYzKs8/WUN97Wsevq9YbS58HkDhKLhsXIdbi6Pzkl+fleXaeKIPuXFpo+xx/mWujzA\noJnlj9+PaALO1ee8WPNcG608T0MDAXb/skfAMuVy+iqpP9+SbvRH7rF58xTxEGarU9/QFjxrUszl\nLtp5elvMjccfJhryYazp9f7b3NTuWwQL1ri/qz7NwhEfPuXpjLw60FrUCi1qhQyZ8BZ7G5ErFYb7\n0GgqBZpKgexpmK0nm4TsEihxb70W+aMPHBbaYy/32yqltkoplya48ZTtmJOH7E/R75UUtUKB2N5z\nNgJSkfuaui2FfEqhXE3y7FkC5y3PaVstk1XLVCpJ9p5MOr5DOX+ZwdeyRRrBBM7hI2r2BolbimS6\nGoVilagnwNWP0GolMt0+BgIEfFbo3vevFBd6Kql3b0mr443utqrQVhUaPQsv1q9X5kad3zPFXJCd\nl7vII7v4zp/rXMZDcmePVe9dqjB9lPQ73qbq46+2VWptlXq1x7Of13HfkMf01FMO9otogC+5x4Y0\n7L+JnlIm29DziJ52SqESwz1HhbzfVim3Vcq5DP7ELjtJz7V8XnxZzdwnjt0v2QrO8wz1qZWyNM8/\n4zRHNeqZ2ngfUOY0q+CbUma0i6ekGzd38IrHb9ApcfDmgJI22kGo0VTKNJUymvEX1pfkAV+Kxr1W\nOeHdpzwaYPMn2VyL4LKYGPQ71Ispjo7LNAuHfBis8HwncOdeuNFe3H5Po1XNcHyUQWkXOHxrxPLT\nJp6l+MW/FI3S5/ccFjuAmcDaNmthNxaTgb6mkj8+5KS8gtNpxQg39P/P5iI9B33Ougqnnw7JKB1y\nH9N4/7aNT9Lyi7n6LDVLx3w4LKKpKfK1CFuB8ad0tPe239NollPsf8rTUVKc5H08i4/3/w6aFfLV\nyx75s2aKYi2K0z9MVKOHQMxB5lilUyhQXQ0QtI1+wmXngDUcxGthrHEvIzr3oxaOSKt9DPhYe75J\nxGnGwIBuR6Gay0PgeiVtrKe/16Ndz3D4KY2ilThJB/BuX++gARfJ//l/JIf/ui3aR5n0XeKLGR09\n6fd6dBt5jg9PqLQVTt69x/TjS6KO8XNuG00bNPMcDRv2geRz1mMuzIYBfa2NUslT6vtvbNgPOiUO\nP6RQAe/qc3YTbpnf+MBmGzXrUS1m0UZeqWSKtIJx7FPOGLs3+j3OtMaw3tCmkn7L/soPPI1df6ol\nP/+SNPL7+9itz4m5ZnuSBmc1SpnLAndAmXypQSA+PUduZE4ohK7nF4OzKpl09cbvkxH6RdCjmjmk\npA0wOaJs7yTw2kwYBj06DYVyrobdZ8Vi2eVVcHd4zm3R4Ivr+y+T+gqZz3rD3hrY4fmTBF67GZPJ\nyIrZjj++x7OdAACt4mcKysP03hlNZpzBdZ48WcMF9LUcp4XGg3z2suopOY6KeuxFeOcle6s+bGYT\nRqORFauH1b1n/PTTM+LuB251G4ysWH2sbcRxAAMK1OvTQ3PFwzKazDh9PlzDWIzBLb02RpMZV3id\ntbBeQ2+UFFpjR1z2+pt9SZJhPRss58tjg+9OfwQvBgZUKVTGn93LzgEz4dDVkEJxPxotVU8xsz9I\n0GPFZDJiNJmwOfzEtp7eXtE2mbD5kqzF9QM7hTJ17ZZzxKNmNJmweeLsPdshaDYAKtlsmelBs5Np\nLZUmYCBAMOTBajJiNJpYsToJxLbYW70eAnxu0Knw6Z0+MmQP7bC9JiO938qgXaZQ6ANm4skEDuCs\nkaEyax3OaLqoN2wPIy9qRzmqUrR/AyrpwzSNGR/mTqVAcTDAaI6TTOgNejVTpn5j0qtk0kXGi4E+\n9VyafPe+Q0Hi22vRyOvpaPUHCTjMmIxGjCYzdk+QxN729GkZ36HvvnE/aKoUu/oTH4oEmJS2tlCc\nhMUIaBSrKg8ZnGNyRVmNTmtkiHk06nrGbCROeGKMrRW7/QtWtVbMWIcNTK0vhcHX06ejVFEZAC6c\n9ln6Vk2YrXpa9Zv9sWd6tNffF4oQ8UcA6FbzVJqXxxlsAcLDhv/VikO9oncOrDjj+CfNxxf3YMJs\n0dOuW0lxnC6itDTu8shZLOf5xOBO54vHx2ANElvVK/TdgjJzg+CcaUWvBQwokzpOU1JaaLN8Rk8l\nvb9PsT1gxZVkZzM0sT4hvo5GJU+NASZzlGDCT9Cp1+EKxeqcHT5WQvGYdNx/Y2fNUw4+F2eY3dak\nnKsBYI/6WQ2EcKBPyyjXbk67TvmYXO2yIB+0S5ymZNDt+2DG7NHrDa18is/ZMs1O70Hbc4tkYQOL\nO+UD/vP64NbjtE4TDb2X3jF1zrsVu8cAReh3uvR4yB/GhN3hAmr0Gg06GszUNhFXaHRaesZtDjiw\nfYv21JlGZxjsb5AFEr+oozevObr2qpnI1jZhx4QTrumhdYZptTLei3ne628gTMBrxmz0E7fkyXQb\nFEoKYcd5yLcJXyiGuZBG0wrU1QRujxH6CtW83v/vjQYmhoBOuv5pCwOJq4x4o5sEiweUtA6l1AGl\nFIAVTzhAOBDF77PONGLa7Z6vsmLA+IDPbH+Q4o/XqWuvS/ju12G3uwGVPmWa7U08I9G4k+oGowtq\nmbxRtkNlPhU7tMop9st6OtpcYQKRAJGAD+uVm2swaJL5nKc0XAMishq9dd0P8QX1FcpZvSfWFffh\nxIkp6uXkU2XKNKqbGWwOPAYjzUEfpdUB/3gNUPLzL8cS2GTNUeIgVadVPODQZmUvMT2zvlxnwUnY\n78bgsBDxpfhc7VHOl4n7I9c63QwEiMX7ZDJVcscZ/C8TOI09qtk0NQZ4kkkc6VOyUxZWvS1PEY+B\nlVBylWLtBFVTyB0p5I70xbB9gTChUIiAa3kaXzLkJL5fRiMztQNvM+hz1qlycnhyEc7pXaJM4vHQ\nqJUK1Ds3H9Xvaaj5zxwV9PEbZ9TDZZzHZa+/NezDvQIYXXhCeno2T4soI53/Jk+A2JURocuF9MKE\n/LKQ1pdgsAbZ/ekHdpIRXBeV9A5KIcPB+//j7acyN0bZ93q0qylOMioA1nAAtzyyAgAr4Z0f+WF3\njdDlzUVbLXD66T3//eMT1SvDhwPKlIqXL+ZPc3NHDIjZFfb/w+vXr8f+938fL0Oqz/NgcOL36j07\nVrd/6jQq8XgZMOFN7FxMjaimjsmp00bgL9dZWHEG8TgArHgDHuB69N0oVyRBwmnkrJkiU+zQU3Ok\nch2M5iirUa9Mr/kOmFyrPP/lKRtRH7ZheT/QWlRyx3x88zsfMo2lGclf2JH727bCO2e2OjBTQqNM\ns9UnYJnUn9GhpeijfEar5YEf8h6tpl7BNDmdWKWCeUdmrPYVoIdWbtLug/m2rqlhGH2TAa2uviXG\nqK52cytx2uhxeHddemu/sLER0PMFDfc/klEyfPps4+XT8d75aZE8K64k67HLBa9GV1cOBs/nyhvx\nBmM4To9oUqBYSeC72BbPQWBkRKiy6qQ3XEjPsRqaukCmjOA+gBUHocQWocQW/bMWjbpC/vSIojqg\nUTilHAuMLY40bTTdaA6ylpi0mN7dyYJ631arpS+IZySA48oI7WwLI5lwBlfZCa6y0+/RairU8hmO\nCnX67QLZchTftYXVXERjVsrZEpqa4uCzlWc7Epr/9V0uZmrxRvAP8wB9GtURtUJPn0YVdU7YFm+y\nQbuJMqw3euzXO2wlP//SrIQ3t2kq78l2VU4+fGJlwij65ToL4IlcRs1Z/WFChirFwdXouxFGF/G1\nKPl3GcqpT2hWhSYQ3kjgXelQv3r86NV9Z4utfc+MVh+xTR+xTeh3mihqmezRKTVNo3ZcQI048SxB\nT87CNu5nZXC4CFmMZLp9CtkiEe/1kJ12MUO6qy/MEvK5HmSl9XM9NcdpbjiCGPRMXcVV3M7pDmEm\njUaGXDGKO3K1ENbodExYrXq2brBYcVgMVLoDGo0W/YB5JMPv0KidL9plnbGCZif+5Dnrfsniv6rh\ngoaRiJeMWkGrKjS1CJZbksHiX+fpThzHRUY+vrpy+t3/kp5wXi1XphW+XHHZ6g3ip0qFKtmjzwyq\nPcBJOHjzVmziHno9eibTRYPcuGLH7bfjshvp/PaJOg1u2Zp+yj73YtENOiWyp/rIrCXsuUN4fJ9e\nz4jp4uYyYXf5sbscGLq/87nWQ+tdvbmsxPZ22QiYCax0eTsMIU553RcjjuLh3LRa/uhOJ93aIb++\nPrx2jD7/Oo7bP0sVt0Mxkx1G5YVxP/SCvGI2Jg/JvQTqmxNUTZsYmXW+zgJA+fD/mJD0evRd3DNx\nNyOTN85GqMx+UUHRwOxaJx40A7eEA4rF0OvRN5ku6mVGqwOf1YF7pc+/3mUYoHHWg2UI0/j+czGj\nh/hmhOKHLN3qIW8/aBO3wgOwhzYJT1gca9A7o9e7/rrBZJq6l/roVngq6KE/YRnnuQ+TJ8pGqMh+\nsUPp8A2Ds9Gt8JqUs8ccZgesv3g6XDHfgSfiIJ1SaZyekHJsEvfZMaFRzx2RHq52Hgz5JvbIXvbW\nd8i9/53P1RbF0yJh/6Stdvr0emf0rt0RpstKpLib4ch9Pq+H0xsMVsxXEmy0Z71XO+a3dxm6lQwl\nJYxjWMEbNAucFm6PpdVXXI5i95x3EvkIho1UCj0a1SoAFt/liJF4eO3yAe+KK6zGong9NswGA4OB\nhlIoUAcM+DBfKb1kNP37NrYVnqYvrhmLzR+RMWiX+PhnEdtqlIjfi3XFoG+zWC9QrOn5g90y3t1r\nNIQJDRdx9SR22G6/5VOxQ+FgH4dt9i28xH31KGdTTIm8HjNt/vWFsa3w9MaddyMqW9x+QybXKju7\nLf7cv7qqPQzOKuRObp9uMbgWfTfKTCCRwFs8pMYKkWRUBtwerXnr1H2qp79z3A6TiAbwOC2YDAb6\nvRbloh7pYzTbrtUbvldL8Wea/Ws82+7z4VOediXFu8r10E1HeIu9jcl73BcP/0vxSg/h+WIa/pHX\nJodxg9EWZuvJuuxxf29mgptP6Rk+cFhoUz55T/nk+jGNRoe+ewUjRjyxDRLKR9KKSmb/DzJXjnaG\nN4ne2rtvJbK5Rf3NASX1mOO0i70rexv3B6e8/dfptTNl0Z27mfYsAXjWAzc24EzeJLtJlbepOtnD\nzzgduwSsl9vfGQjz5G/b1ytxPYWj/74n29Xn10c95w2HkYX1hocGpuy8cdv1z7Z/87JrUc3X6Kh9\nDpXChPfN+NZW8c+xYNZDmzYFQBZZeliF/f9Q2L/+usHsIbmzd23Papg+Ree888dQLVDT6tSGCy5d\nZfUkiU/cjeXiCMKbu3Tab0mrKicfUjh/Xsctnbhf3GhYtnf9B55N2Ne8nf/Ab4eV4fzryNg9Mn0h\nZjP+xC47E/a4B8nPvyZbcIvddoe3qfFA+fOFcMHJ5o8/THj2zwdhehfRd5OKCIMtSHKjiqEdJOqd\nrVPutjxFOpQf3s116gkp21OoZLq0BpeLpI6zEt6MzDxVZ9EtSXPTiCO8xc++MKV8gUKpgtLSMJjt\neHw+QqE4Ic9DZ9BmHB4fvlCIWMiDWVZXfxgmO5Htn/GFCmSKRapVhbYGRpsLvzdEOBbEaxu5rU0u\nks9+wJ1LkytVqagdztMmFIsT8dtnGvkxWIOsb1ZRPhappo7Iup+xKr01X5EVd8BHKJogcuuzasQT\n3yRRfUNaLXF07MG5ab7Y/s6zPmV0xuQhmvCSPby+4rK+sF6Gk0Yfk3mVgFfS/suxE3vxC85ykVK5\nSq2uP+NfNr8Wi8DmCuALBIlG7j7VwhF7wV9cJUrFMlWljtLS12OZq7w2uYhvJKi9OUHVMhx+dsj8\n+6/gPCzbQJjYlEhIWzBGLF0j221QKCqE16ePzRptLnzeAKFoGL9d8vTHYbT8Pp8ec7kQri28Smhi\n1JyVUCxCuppBa2Qo1aIkJuYRRlyxPZ5+mYsX34rJx9bffsZXzlEpqSi1Oh2W9xk3vHr16o/Xr1+P\nvfjq1atvdDnia5J0X06S7stJ0n05SbovJ0n35STpvpwk3ZfTtHRfkgAFIYQQQgghhBDi+yWNeyGE\nEEIIIYQQYsFJ414IIYQQQgghhFhw0rgXQgghhBBCCCEWnDTuhRBCCCGEEEKIBTdxtXwhhBBCCCGE\nEEI8frJavhBCCCGEEEII8Z1Y6Xa73/oahBBCCCGEEEIIcQfnbfoVi8XyjS9FCCGEEEIIIYQQd3He\npl+Z9OZ5zL74vl1da0HSfTlIui8nSfflJOm+nCTdl5Ok+3KSdF9O09bMm9i4F0II8f36xz/+IYX/\nEvj73//+rS9BCCGEEF+RLKgnhBBCCCGEEEIsOGncCyGEEEIIIYQQC04a90IIIYQQQgghxIKTxr0Q\nQgghhBBCCLHgpHEvhBBCCCGEEEIsuAVfLV+jsP8bn0q9qUdYAzu83AthHj2rcsh/PuQBCG7/wm7Y\neu08Jf1v3qbOMBqSvPifBM4pnz/rceJLuEz/SekMKql/viU96ONIvuDHhHvqOQP1lH++OQFg4+Ur\nYq7J3yjp/fUNuiU+/npAhcGNx52nZ2uYRldZ7B58wSjxWACb6fzVefKQu+U34nZK+v94m+pgJM6z\n/7eOe6zbWSX161vS3T626FN+2PRhGnl30Mzyx+9HtPCw8/Nzgrbzd3q0q0WyhRLVcp0OYHMF8AWC\nRCOj98D5Ndztvrme5n2U9DvepuqAi/UXT4m7F7yofQhnTYq5HIVSBaWlAWYcHjcef5hoyIdtBW56\nHm2uAL5glNWoB7NBf+22fLtb2ufX/RIGAuz+ZY+AZbb8JLz7V7aD5huOteIO+AhFE0Q8lyk/ej3T\n3FS+LIOBplDIlChVz++D4W8ZjhP0WTExnkbnaTH2Gbek+0BTKeULF/eawWzH4/MRCsUJea581rxp\nfMP9c1P+Ii7Ncg+M6qolCvk8xapCWxvmyb4QoXgY9w2F7XnZ0AScq895seaZPKLZ61ApZCiUqlTU\nDgA2lwePL0wkHMBBZa46iJT/N5tW1uplgo9QLE7Eb792H8B898K89fqrbso3HrslrHF0KOdLF/+q\nZYs0ggmcEsMgxHet21LIpxSKxTB7z7bxXe/TE9+I2xvBnDpBI0OtnsTtvcyQB02VSrcPQDen0Fz3\njTX+G0qJJmDxBnEPG/aDM4WTjwdklO7Y97TVMlm1TC7jIbmzx6r39iJw3vumXTpkP1UHzER2d6Vh\nDww6JQ7eHFDSRivHGk2lTFMpoxl/YTdy8w97nnbFUpJnzxI4v2njqUO9nKNeLlNd22N31S1hkLfq\n0ywc8eFTns7Y6+e/ZY6Mf529nTj2B/6OgdaiVmhRK2TIhLfY24jM0PieP43vkr8sl9nvAYcJ6LXI\nH33gsNAeO7rbUsi3FPKZNLHtp6yF7RPSpk+tlKU5/FfzNEc16iFguXJYTyX17i1ptT/2cltVaKsK\njZ6FF7F7/tliRhpNpcCxUkBJvmAvMfLM3eteuJu75RuPw3eT88zaYzZoVshXL0cFzpopirUoTv93\n81MI8V0xWII8eRW8+Pek0bhRreH/j0VX9Hq06xkOP6VR2gWO0j7c24GxnuF5et2lh/5hGRwuQhYj\nmW6fqtog6XVfvHfeeAfoX2v8N1GK+rt2nxPL8LXM+/dk1D7gIr69TjTgxMyAbqtM7iRFVlE4efce\n4w/PiV3p2Z33vhnVU0852C+iYSay9ZyNoPQgQY9q5pCSNsDkiLK9k8BrM2EY9Og0FMq5GvYJPSaj\nz1i/p9Esp9j/lKejpjjJ+3gWv3/c1KRR4duP7XOmtSif7HNYaFM5OaLg+4GoY/z4ZR+hv6pbPuTd\npyIaYPMn2VyL4LKaMAw06vljDo/L2JwurCZgenDUjbTKCe8+5ce/w2Ji0O9QL6Y4Oi7TLBzyYbDC\n853Atfx73jQevX/6vR7dRp7jwxMqbT1/Mf348to5y2yue4AelZP3HBY6gJnA2jZrYTcWI5x16xRT\nR5yU22Q/vaVv+pGtwJWIjLMapcxl5+6AMvlSg8CVfEMtHJFW+xjwsfZ8k4jTjIEB3Y5CNZeHgAej\nhbnqIGI24xGww2fu+AOHxS61VA4l4sZnhvveC3e6nkGfs7MW1dMTjrM1moVDPhotvLgSOfhYLVln\n82VPntmXJBnW//xyvkz35hOFEIvMZMLmS7IW12vb3YJC444VSPEFGF14gnp+3M4pNC7euGy8n6uq\nl+8O2g2qjT7gxO/RqwjtQooTVX9t7cVz1sNurCYjRpMJmyvMxpM94k4joJJJFW/O++e4b3rqKR8+\nnKACvuQeG5GHG0FYbC0aeX3E3uoPEnCYMRmNGE1m7J4gib3tWyvHRpMZV3idtbBerVIz1YtOvK/P\nyIrZSXh9nZDBADSoKI1bz1pqfYXsURkNvdPm+ZMEXvv5fWDFG9/j+U8/sZtw373i3FfIfM5f/w6T\nkRWzHX98j2c7AQBaxc8UlP4NHzZ/GhtNJmyeOHvPdgiaDYBKNlu+az/F92fOe6CnZDjM6eP74Z2X\n7K36sJlNGE0mLHYfq3vP2A6aAI3S5yz1K8nZqRQoDgYYzXGSCb1sUDPlK8dptFQ9JzH7gwQ9Vkzn\nZYXDT2zrqXTQfTX6M+fznXfsD+gPA73uey/ciUG/ntDGE3aT+jU1cymuVEceraWqe4z25PlCESL+\nCADdap7KgiSYEOLuLBZ9hHCAxpnUuh4RI25vGICeVkEd5seDpkKp0cdAmPV1vWI+2vjvKCXqgMns\nx+UA0KjXFAAs3ggh94QizuQiFvcDoFVL1NvXD7nqtvum3ylx+CGFooE9tMNWQsK0L5kxe/RJ8q18\nis/ZMs1Oj/nrXybMVv1zBmfc4fyHZVgxY0W/Hq33ra/mcRs0VYrDqTWhSIBJfTlW++Q5tg/5HbZQ\nnITFCGgUq+qt99Bd0thgDRJb1RuT0ol8ad57oFHXR/iNxAkHJkVAWQnFVjEDPe2U2liLrkk5VwPA\nHvWzGgjhGB5Xro3OrTZhtujp262kOE4XUVraRaNSfGX9DrWqCsCKy4V9eJPc7164LyOe2CqRBevI\nXapY9POePANhAl4zZqOfuCVPptugUFIIO6YstiEevU75gP+8PvjWlyEeuW73fKafAaNh/L1J99C0\nsLt5jhWzMbk8RAxZ8gO9AI06nHTUKk3AGvAQ9A+oHVeoaRXUZgKnQ6Ou6BUBW9QzDO3r0CnrNbMV\nt31iBRLAbHNgpoSGgjZpXZ8rbrpver0qJ/vl4XxyF/HV0NTvXU5WQslVirUTVE0hd6SQO9IXK/IF\nwoRCIQKuWcIoe2gdPW0NK9dHJo7evOZozisr7P+Hwv6Vq511it+ZRme4wJbRcL3mMOl6Lhd2XS5a\np4mGnkc67PPVsial0d2/w4rdY4Ai9DtdetxcCb4tjaex292ASp8yzfYmHll5d857QKPT0jNmc8CB\nbWpy2nFjoMyA7lmP81yhp5TJDiO6wn43BoeFiC/F52qPcr5M3B8Z5tFGvNFNgsUDSlqHUuqAUgrA\niiccIByI4p+wwJ94GP1Bij9ep669bjQHWd+ODtfeuN+98CBMdhweI9R6tBsdNJyPfkrmd9O4v72y\nfdmTZw370Nc4cuEJmcmcdmieFlHiHnzfzS8ihLgwnDt9dKw3Bi0BH87HnjsvG5MbX8RIPtejVW3Q\nja1QK+vp5Ql4sdj6+L1GajW98R9ZaVMp9QEzAfcXqj3PcN+c1UpcLtGqkjkt4t2RBv4ok2uV5784\nyGdy5MpV2pq+WFEld0wll8G//pTduHNqdex8zv1JQR8GdcV92OGWtau/lPO5oZ8pDgaAk6Dn7kvA\nicdI0nhx9agWs2jAijOIxwFgxRvwQLUyjNSNXKyFYLAG2f3Jji+XI1fMo7YBOiiFDEohgzO8x9Pt\n6+sziC+nrymU8gqeDZ+Uo3e0NE3Zy548CAbPF0Qw4g3GcJwe0aRAsZLAN2FbPPH43bYVnlg+N/YK\nr18fmZMF9b41Ey5vEHJ5tFqFWtVApdbHQADfcI8bb8AFtRqtagPV2qDCACMh3K7zZqEVa8AAJTir\nt+jinlg50Nrno0gezFdKwXnvm/P3osEumWydVvGAQ5t1fKVfgdHqI7bpI7YJ/U4TRS2TPTqlpmnU\njguoESeekSGyadFYK64ka5HrnTk3bYU3zTwL6k0bQfYlN4i4rqe0LKh3yWw9j5Qp02z1CVhmfzJu\n2wpvvu/o0FKGI/FWy7UR2XnTeJpWq65/BwEctlsOXhLz3QNmrPYVoIdWbtLug3licraoD7v4LCt6\nag7aZQoFvc7niQQudl6w+sOEDFWKgwmRuisOQoktQokt+mctGnWF/OkRRXVAo3BKORaQhRG/gGtb\nSg870w/ep6lm33Ps0Lcqv+u98GB6LZrDNTpsTutC1Pu+m8b9zZXty548gPS7/yU94aharkwrfJ9t\nWIQQj5nJHmXv+SbeRcidl9CK04OfAhWqpI9adBhg8XlxDVvoVpcPBzWatQLHPX003Rr3jWxlasbt\n9UCpQreWIl8LkfReqQn0VLKZin6073L7vJvcdN8YzB7WnmwTc2nYz97yqdihmjoi63nB6qQ5/8uo\n16NvMl1Upo1WBz6rA/dKn3+9y1yuZXBDnWzSPvffWnDjB7Zj0yMOhG50N4xCtkjEG7nW6aa1O5hs\n1jv/lrN8R7uYId3Vo31CPhdGbo/+mDeNB50S2VN9Xq4l7PnGWzY+HvPeA053CDNpNDLkilHc17bK\n7FDMnqIBJvMq3mFe26jkqQ1TtXz4f7w+vH4tY5G6vR49k+ki6zGu2HH77bjsRjq/faJOAxkf+kpM\nJmy+MCF/FrXSQ1UaaGHrne+Fh9FHyZ6SH0bw+Bdkjs1307i/yaBZ4LRw+6omZ40MFSWK3TN6Y/Tp\n9c7ocbU2YcI0lmnPepx47HpnZ/R6V9PRgMl0l/tCfCujvcKDdoH3vx1Sa+XIlsJ4Y4uRQS8bg8WD\nP2ikUurRaevz3N0B70Ul0ODwEHQaaTZUVL1tj9/tGKt428JJ1vI1TlSN9Lu39CdthdcYbpOXvB4+\nP+99Y3GHCbqMgJXw5i6d9lvSaoP0x0/YXu4ycf2fpdKnevo7x+0wiWgAj9OCyWCg32tRLuqj6kaz\n7VoExWOLjhndJq16/F/eZzpUTguoISeepahJ3YPRQ2wjQPFjkW71kLcftLFt0BrlLMefsqwkX7B7\n14gXo4f4ZoTih+z4d1zZCg/AHtok7Ln+LfdJ47Gt8Ibrb8Ri07fNXDpz3gMmT5ytaJEPuQ6lwzcM\nziZtf9YDzAQ3Y7iNMDirkDu5fcGzwUikbrt8wLviCquxKF6PDbPBwGCgoRQK1AEDvmt5k/hCej3a\n9QLFit5eM1nNev5/h3vh2kfPVK8fMbYVnh6J44gmCS1IBMcS3LKX298ZCPPkb9vX59X3FI7++55s\nV6NQrBL1BC7PHpzy9l+n1z716sI4sx4nHr/U+39zNSj3vMJ/TtJ7sRhsYTZ3Ff7cL1I9+kzW9ZzY\nlTDLaWHA10LH5jxWzONy5B30sHm/e7R17MATdEBDb9kbieK9Vut2EH/6lLOPB2QUlcynP8l8Gj/C\nYPaQ3Nm7tsf9VbPcN2NMLhK727TfHFDSShx99uB6en2Eaqn0FCqZLq1Biv3y9ekOeqdIZGKF7Eub\nFoZ9cz5uxJfYJVF/S1rN8fnIxbMJayxMW+BvnqkA3xNLYItn20Y+fMrTrqR4V7l+L9gaKp2e+87R\nk2b/Gs+2+zd+hyO8xd7GbXOoZ0vjaffPef4iodzj5rkHHCYT/rWnbPU/cFhoUz55T/nk6tFWYttP\nWRvua36+aDY42fzxhwm/f4fc+9/5XO0NI3V91PI1OmqfQ6Uw4YrN+NZW8cvUii9i2hQ4nYtI4DwP\nnv9euGq2ev3063GEt9hbW4w97mEJGvej29951qOTF8wzeYgmvGQPK3QKBaqrsniGEN8bW3CdjWqd\n/aJK+jCN88Ua7kXJqZeI1e3HTYU6YPZeD5t3uv2YUdGYHvZqWPGw/vwnItUi2UKJarlOh2FodyBI\nNBLANmPaz3vfGKxBkhtVlH19hOowbV/u+fcmH1t/+xlfOUelpKLU9LQw2lz4vAFC0TB++4JVRUwu\n4psJan+coBYPSHncbMt6Pbcw4ghv8bMvSCFTolStoLQ0wIo74CMUjhMcrkw+uPP2ceffEaaUL1Ao\n6d9hMNvx+HyEQnFCnhlrd3dI47vkL8tl9nsAAJOdyPbP+CIlCvk8xapCWwOL3YPPFyIUD+O+SM7L\nRbNt4dUpI6xWQrEI6WoGrZGhVIuSfPELznKRUrlKra5//p3uF/EgjDYXfm+IaCI6krbMeS88jEW+\nDwyvXr364/Xr12Mvvnr16htdjviaJN2Xk6T7chpN93/84x+S7kvg73//uzzvS0rSfTlJui8nSffl\nNC3dl3YwQQghhBBCCCGE+F5I414IIYQQQgghhFhw0rgXQgghhBBCCCEWnDTuhRBCCCGEEEKIBSeN\neyGEEEIIIYQQYsFNXC1fCCGEEEIIIYQQj5+sli+EEEIIIYQQQnwnVrrd7re+BiGEEEIIIYQQQtzB\neZt+xWKxfONLEUIIIYQQQgghxF2ct+lXJr15HrMvvm9X11qQdF8Oku7LSdJ9OUm6LydJ9+Uk6b6c\nJN2X07Q182TOvRBCCCGEEEIIseCkcS+EEEIIIYQQQiw4adwLIYQQQgghhBALThr3QgghhBBCCCHE\ngpPGvRBCCCGEEEIIseCkcS+EEEIIIYQQQiy4iVvhPVaDsyqff/9AvjvAk3zB04T7Su+ERungDfvF\nDo7oU15s+jCdn9vM8sfvRzQB5+pzXqx5rvVsDLolPv56QIXBlXesuAM+QtEEEY95huPB5grgCwSJ\nRgLYTNfeFnMaqKf8880JABsvXxFzzXJWk9M/3nDS6GMyr/L0lzXc17qzNAr7v/Gp1Lt2z+hUUv98\nS3rQx5F8wY8J99g5VxltLnzeAKFoGL99oR6vr6hHs5InX6xQLdfpABa7B18wTCQSwjl8xG5L825p\nn1/3SxgIsPuXPQKW2c8xGpK8+J8EzivfM8pgtuPxBYnGo5PTsteilM9RKlepqB3AjMPjIxQJEwq4\nMRv0w5T0v3mbOhv7zkuX95I1sMPLvRDm69+01Ebz2fDuX9kOzvIL3fzsn6fJbTZeviLK5Pvj6nGz\n5UniNufP6G3Cu39ly63MVWaP61H69Cv7hR4GfOz8/JSg7fJdNfsnb47qY/nL2NmNU979cYKKi80f\nXxJ1zPVnLrHp5afNFcAXjLIa9Vzkn7M9/7flo5fl+MTPmCkvv+k7+ijpd7xN1QEX6y+eEndL+X+b\nh6hDa5VD/vMhD0Bw+xd2w9br3zNnGX9b+TC5LBez6KolCvk8xapCW9PrzG63j0gkQsB1+URNSwO9\nrhglHhu/LybVsy7vrxVWn/zEmn/8mZxUX/xe2nULNXJvWPERT/gAqKdOqbTH3+/VMhwVOxjwsRob\nbaT1qZWyNIf/ap7mqHbn+eYO9XKOw7e/8+G0Tn+GM9pqmezxR/7721tOa7dXIsXD6yllsg09tXra\nKYWKduPxzdwnjkude31nv61Szh3z4b//5UNK4Xr1ZbkNzhSO3/6X3z8ckxs27AG6LYV86oA//vOG\n48r90uChDLQWtUKKD//9g6Py+DVptRRvf/sv+8e5YWUQQKOpFDje/5P//vmZ2uP4M5bSvM+++N7c\nXmYP2mUKBf2dAVXypfHjXOEkMYuRAWVOs8qVz+hQTJ2iAs74GmFp2D+Itlome/SW//6ZpvGVCs+H\nyMvbpUP2U3XATGR3Vxr2D2C2OnSHcv6yI7CWLdKYpYI+dFMZLx5Yr0X+02/8+mafVEFv2INeZ64V\nUnx88x/++FTmtqaZXlf8yO9/fKI6c5JpZA8/c98kXqR23cLlQLbQKol8jXSjSjpdxrMTGPaeNsml\ncmiAJ7mKf6QHfnBWo5S5vGUGlMmXGgTi0/vdLnt3+5xpLcon+xwW2lROjij4frjWSz/aG9zv9eg2\n8hwfnlBpK5y8e49Jeva/sh7VYpbRKn0lU6QVjGOfeo5Gfn8fu/U5Mdds/V5jPfj9Hmdag/zxISfl\nNpX0W/ZXfuBpTPp3Aeg3Sb9/T0btAy7i2+tEA07MhgFn7SqZo2PyLSsux/We96/lYgR20Oesq3D6\n6ZCM0iH3MY33b9v4VvQRuw/v0qjAiivKxkYcv92MgR6taobjowyazYXdctu3iS/j9mffk/gbrxLn\n706Kzrk0UC//W0bovzxLcJdXwd3hv24ekR2M1ATnLbMblTy1kdGZeqqAEnXjO68VmTzE1/1k90s0\nMifkg8+JOfVyQatkSVd7GAiwGrseBShmM5qm/Z5Gs5xi/1OejpriJO/j2Q11tIfwEHl5Tz3lYL+I\nhpnI1nM2gt+u/Fpkd6lDD5oV8tXLXqCzZopiLYrTP71pM0sZf05G6B+KRunzew6LelRMYG2btbAb\ni9FAv9+ienrCcbaN2+fk6qM2lga9Hu16hsNPaZR2gaO0D/d2gFkG0ftaicN9O9ZnCZwzjrovcrtu\n8coko4v4WhQz0Cp+JlfTu+m6pVNO1D5Gc5xkbDxcv1MpUBwM9PcS+mOqZsrUZ+rhM7JidhJeXydk\nMAANKkrj5jNMJmyeOHvPdgiaDYBKNluWUdyv6HJUxkw8mcABnDUyVJTbEl0lfXjHUQOjiRWrh9W9\nZ2yH9AK+dpSj+rg7+L6adilFWu0DTtZePGc97MZqMmI0mrA4gmw8ecbLl7sEHkPdyGBkxepjbSOO\nAxhQoF4/Y3TEbsWxyrNnm4RcVkwmI0aTGWdwnafPf+TZdgiL4Rv/DUvq7s+++D7MUGb3FcpZPZYv\nkEwSMhgYUKB4JWrIElxj02cCVDKpoj6q1FfJpfNoQGBr/Vq4vrgbo8mMK7zOWliveauZKq0v+o33\nz8t76ikfPpygAr7kHhsR+wJWqh+f2erQlxG5Zl+SZFj/5cv520d/gRvKePHQekqOo6Ket4Z3XrK3\n6sNmNmE06Xl1aOMZP/31RzZuq/yZTNh8Sdbieg97t6DMVVc/U1McZ2aLvr5q0dp1C5kPmbxx1oIm\nQCOfytHsKWSOKwAEN+K4x3plmpRzNQDsUT+rgRAO9FDN8hxhFYYVM1b0HF7rzXZrGKxBYqt6Z8K8\nN6G4n/NRGZM5SjDhJ+g0AhqFYvXWh/GsecrB5+JsBcREVkLxmBQYYzTqNQUAizdC6PriB2Cy8w0H\n7Scbfe77AwZdlVpVf/490cjEHmCj3SEN+2/oPs+++H7cVGZrtRKZbh8DAYLhKIGInh/VcuUrDUor\nocQqDqBbTZGtaLSLp6QbfVYcSeKhx5ZhLToTZqueZoMz7lQJn9V98/J+p8ThhxSKBvbQDlvX1oAS\n93VTHXo0ItcXihDxR/TjqnkqzWsfNd2VMl48vEa9iAaYzKuEpzTgV8yzT2K3WPTPGKBxNmehrqQ/\ncnSP6beL0q5buLB8nZnQapJ86QhVPebwnQu128fsWid+ZaGUy7mXTsJ+NwaHhYgvxedqj3K+TNwf\nuRYGMsngTKMzDOEzGmbPwu12N6DSp0yzvYlH4nu+vJFRGVfchxMnpqiXk08VOoUC1dXA2MJJ5yyB\nTdYcJQ5SdVrFAw5tVvYSd2ulGWwOPAYjzUEfpdWBG8LElkOHTll/flbc9pmeuVFHb15z9PAXdbuR\n595gALqdi4VW3HP2RPQHKf54nXroKxSj7vjsz2rSfTgplF98e9PL7Mt5utZwEK9lBQIxzLk0WiND\nRYli91web3JFSUbzfMh1yKU+UNdUwEwkGcUprbkH1kPrDPPblS88+nSPvLzXq3KyX6akDQAX8dXQ\n3GWamM20OvR5RK6BMAGvGbPRT9ySJ9NtUCgphB0zTpe5WsaPmFZmy/SseWh0WvoA14rbjm1SovR7\n9AYABkym21Ot2z1vnBswzlhFD23uYC0eklYvp99GZzv1mkVo1y1s0WRwREjE9QxZVS8L2/H51Jdz\nL1ecQTwOACvegAeYtYevz5nWoHD0meJgADgJeqbP2hbf3vmoDDjxe/Wnzur248XAgCqFyuRpFQZM\neBM7FyH11dQxOVVG3ReK0ciDTIEa9DnrVDk5PKEJGAjgdck69o/dXZ998T25ucwenafr83swASaX\nh5BlWoSHCV8sgRcD/aaKqoHFlyS69B22D6vf01ALx5wU9F/fFffdsD7OVUZWvmJynNVKlNTzUV6V\nzOl9Iv3E/C4jcq1hH+4VwOjCExquwHVaRLmt6iZl/KPRrRzyr3/9i//8O8ONJXSvR7ua4uhYXwjH\nEvBd7K50G8OKl8Tu9kVIffoow/dcvV/g0smIN7aGP6NvWWANrBP1jvdVjK6G64kELgoKqz9MyFCl\nOJjew1fY/w+F/evf6ktuEJlxsTWAVqs+vNoAjnuMGIlZXY7KWLwR/MOWnsEWIBw+olbo6estRJ0T\ntsUDsBLe3KapvCfbVTn58ImVwfzBgYN2E2V4nscuoZtgxRowQAnO6i26uOca6bhpW7sxwxC7JgNa\nXQ2ubIjU1W4Ox5ocIWAmvKvPrR1gxY+BCgPqzQ4x1+xpe9tWeOK+7vvs305GbB6v2crsy3m6RuIE\nvMMqkNFDIOYgc6xOjPAw2IKsJvPUUirgJJ6QkdqH0Ckf8J/XB9deX3ElWYvMMxxmwjTcO++s3uGM\nKzl/7wzt6tZWlrvn5QBGc5BosEsmOxrpJ6H5D21SHXp0N5Rg8HxnLCPeYAzH6RFNChQrCXwTtsW7\nrYwfJQvqPQQzVvsK0EMrN2n3wTzHQzItesJoDrK+Pt/WwQZrkK2dBsq7DJqa4uOnu3XmLEK7boEb\n92CwWHEYDFQGA0wO67VEHl0Nt3z4f7w+vP4ZzdMiStwztkLmNMGNH9iOOWfOvAedEtlTvR/KEvbM\nvEKjuLvRUZlu7ZBfJyS6vt5CHPe0kReTh+ReAvXNCaqmMf8mWh2KmeywNziMW7bFAcy4vR4oVejW\nUuRrIZJXOuMYdOh0rVjv0RdisFhxWAxUugMajRb9gHnkee3QqOkzas1+64yVczvxJ89Z95uHn+/C\n6zNSqfaopnLUg+tX1viAQaeDZp3188VDeZBnX3xXrpbZo/N0+2T4838z1845j/AIjq3UbsRmswIq\nBqxYLNKE+xIm7XM/87k2L1Cir6k022AfqXT3GiqVwQAw47DePy83mD2sPdkm5tKwn73lU7FDNXVE\n1vOC1bv2HIprJtehx3dDSb/7X9ITzq3lyrTCN+2OdG68jBcPz+kOYSaNRoZcMYo7cr8BL5M9yt7z\nTbx3SDKTN8luUuVtqo6mzV+7X5R23XdbwxmcVcid3B6COZjSwze6rU71+L+8z3SonBZQQ048t/xq\nY1smDOdkxWKzbdcgbtc7O6PXu1ryGzCZBpSzKWZZS+W29RZMrlV2dlv8uV+cvXE/thWePkLs3YjO\n1HG0DGzBpL6NpaqRfveW/uhWeJ06+ZNDMqqbnXutmO/AE3GQTqk0Tk9IOTaJ++yY0KjnjkhXe4CZ\nYMg3scf3cmS2Q+7973yutiieFgn7zysJVkLJVYrVE1Qtw4d3/bHtk9r1AsefUnS927Ji/hcw6J3R\n612vPBtMUHmgZ18splnK7EbhdBiqf7P7RniI2Uza3vAm059/E2a3Hz9lKlRJHaexbMRwmg2ctSuk\nT07RALMrjvci8ubuebnFHSboMqJH+u3Sab8lrTZIf/yE7bHs+LLAbqpDD5oFTgu3R7qdTVg/A2Yp\n48VDM3mibISK7Bc7lA7fMDgbboVnMtDvdag32lPPHY2eGLQLvP/tkForR7YUxnunbaaNeBI7bLf1\nTrlZLVq77rttdpwvtgFONn+8vsft5YPdu+jhmxxdYcSX2CVRf0tazfH5yMWzneshedNCAg1mD8md\nvUe7F+IiSr3/N1eDdIyGJM9/slxMw/Cu/zBxj9x2/gO/HVaG6y1EbkwXW3CL3XaHt6n61GOmhRWC\nGX9ilx3Z4/6S0UHi6VP6Hw/IKCqZT3+S+XT1oA5qs0PgzsP3RjyxDRLKR9KKSmb/D66OzTnDmzPM\nl7US2dyi/uaAknrMcdp1EXJpcq7y5Fmf/YM0iprj4E3u2tkrbZVWN4RFKnkPqnj4X4pXBuQNBNh5\n4XvQZ3+aaQs7ju6HK761KWX2yGKLtvAeP0zYH7lXO+a3dxk0ifB4lKY9/7t/2SNgCbK+p9D8mKdd\nSfFnZbyWYDB7WN0YX5fpQfJyk4vE7jbtNweUtBJHnz24nkrn4bxmq0NfTqsxEObJlX3pAegpHP33\nPdmuvn5G1BOYEm07vYw/Ny0k/PKeu+Mfu3TMBDef0jN84LDQpnzynvLJ9aNMzpUbG8sGW5jNXYU/\n94tUjz6TdT0nNsc06UujnXLTp90ucrvuO+2XvlxswxZeJTQxAayEYhHM6D18pdoN86pNLuKbCVxA\nq3hAqnB7b4/NFSC2vsdPPz9n1SsVhK+hVclRQ189NRae3Ki2BWPELEagQaGo3LLVjhFPfJPEHJmH\n0eYiEF3nyU8/8STpebS9et+KYcXD+vOf+PHJOtGAm/P6ksXuIZLc4Ye/vmTdf88WsclF8tkPPNuI\n4r+YR2nG4Qmz/uQnnm8HZqp4GaxB1jeDmEEPuRxZocfsTfL855/YXZ/wHbsv+OnFJl5p2H817dpD\nP/tioU0os0cXW5w24mLyRkn49Hdm3i9bPBq2wBY//PSEZNiDbdjXZrS5CEY3ef7j5IbAQ+TlBmuQ\n5IZeVnSrhxym77aXtrg0qQ49Oq3Gsz4lKtLkIZrwAujrZ0wfFL6xjBcPzGQnsv0zf3m+TezK8+kN\nx9l5+gs/v4xOGWS9ZAuusxHSp0ilD9PU77pc0UgZMatFatcZXr169cfr16/HXnz16tU3uhzxNUm6\nLydJ9+Uk6b6cJN2Xk6T7cpJ0X06S7stpWrp/pyP3QgghhBBCCCHE8pDGvRBCCCGEEEIIseCkcS+E\nEEIIIYQQQiw4adwLIYQQQgghhBALThr3QgghhBBCCCHEgpu4Wr4QQgghhBBCCCEeP1ktXwghhBBC\nCCGE+E6sdLvdb30NQgghhBBCCCGEuIPzNv2KxWL5xpcihBBCCCGEEEKIuzhv069MevM8Zl98366u\ntSDpvhwk3ZeTpPtyknRfTpLuy0nSfTlJui+naWvmyZx7IYQQQgghhBBiwUnjXgghhBBCCCGEWHDS\nuBdCCCGEEEIIIRacNO6FEEIIIYQQQogFJ417IYQQQgghhBBiwUnjXgghhBBCCCGEWHATt8J7rJT0\nv3mbOpv6vtGQ5MX/JHB0S3z89YAKA8K7f2U7aB47bqCplPIFCqUKSksDrLi9HvzhMKGAG7NheJx6\nyj/fnACw8fIVMdf493VL+/y6X8JAgN2/7OGq6/++zaRrEg9ncJH+DjZeviDmmtaHpVHY/41PpR6O\n5At+TJg4ffOGE7WPNbDDy70Q46nURz19x5uTOmbXOs9fxrF/+T9nqUx7xi12D75glHgsgM006cwm\np3+84aTRx2Re5ekva7ivJPusz/N5PuI8f+OsSTGXG8kvzDg8bjz+MNGQD9vK6D03mPq3yXN/P9Pu\nDYPZjsfnIxSKE/JM+317tKtFsoUS1XKdDmBzBfAFgkQj0+4poNehUshQKFWpqB1G0z4W9mGddp6Y\ny21l+7mNl6+IcstzrJYo5PMUqwptDYw2F263j0gkQsB1eX+cf+e15x0YLRvOy4LWHNd49ZrE3Y3m\n29PMdF9MyN+nfbaepwSJxqP47QtVTX4cbikzjbXZ68pbbmVK2WrFHfARiiaIjOT7dy+Lb69DjOYL\nnuQLnibcU0dIp9YnxHxmqH9Nyq/NXObxk+vrk8/5XixZrtWnWTjiw6c8nbHXO9RrBeq1AilbmL1n\n2/is3+gSxQNqkEkXCTyNYJnwbq+W4aTUG3nFQTQZJfsuQ6d8TK4WIOm9zLoH7RKpExUwE0lGpWH/\nFXVbCvmUQjEXZOflLoErz2dPKZNt9PX/1k4pVGK4H6AhPeiUOHhzQEkbrShoNJUyTaWMZvyF3Yhk\nFt/SQGtRK7SoFTJkwlvsbUTGGuuDM4WTjwdklO7YeW21TFYtk8t4SO7sseodLw61Wor9gzSKNvbq\nRdrnTj2sP3l6Q+eh+Kp6LfJHHzgstMde7rdVam2VWiGFM7zHk+3AxPJAiHN6npKiVigQ23vOxtUC\nR0w1S5m5/iCdoh3q5Rz1cpnq2h67q9Mb2rOYtw5RT51SCT4laJv4YWSOK/e4GgEPV//S1GOO0y72\nbuiM+d4sZOP+tp6waf113fIh7z4V0QCbP8nmWgSXxYSBHq1qhuOjDD23D8cd83FLcJdXwd3hv77v\nXqFF0a2myFUCrPmv3upNcqkc2pVXTd44a8E8n0oauVSGoDuB3QjQo5pNU2OANbBO1LssWcS3MfaM\n93q06xkOP6VRtBIn6QDe7QCX9YMe1WJ2LC0rmSKt4H0jK3pUM4eUtAEmR5TtnQRemwnDoEenoVDO\n1bBP6AWUEfova+zeGPQ5O2tRPT3hOFujWTjko9HCi03f8P5oknn/nozaB1zEt9eJBpyYGdBtlcmd\npMgqCifv3mP84Tkxp/5c9xqnfHiXRgVWXFE2NuL47WYMDOg28hwfntC0eHDbJR94CJ7E33iVOP+X\nSuqfb0kP+sOIKvfYsQN10idolD6/57CoR1cE1rZZC7uxGA30++f3Rxu3z3nnhv081yi+jJuiIibf\nF3f47EGfs67C6adDMkqH3Mc03r9t41vI2vLXNluZabHMXlcejPTJXpatfc60FuWTfQ4LbSonRxR8\nPxB1jF/N7GXx/HWIAVVOs1V8F2XNJbWQItvtz/C9Yrq71b+mqaY+cmR7yVZwOTrqlqdm0lfIHpXR\nAGtgh+dPEnjtZkwmI0aTGWdwnec//ZXn0qv/ndHIp3I0ruSz3dIpJ+qkzNdMKLmBFwNnaop0UY/x\n6Kk5UrkOBnysrUlHzVdlMmHzJVmL67W6TqFMfaQUHrTLFAp9wEw8mcABnDUyVJT7Fq4tGnm9q9Dq\nDxJwmDEZ9fzC7gmS2NsmIJnFt2UwsmJ2Etp4wm5Sb2A1cymKTf3tdiE1fM6drL14znrYjdVkxGgy\nYXOF2XiyR9xpBFQyqSJ6PbJDMXWqN+wdqzx7tknIZR2WFSZsnjhPfvgLL58kcEpY/qPQU3IcDfPq\n8M5L9lZ92MwmjKbz++MZP/31RxmBFbczGFmx+ljbiOMABhSo12+fjiHg65WZ+nMdXl8nZDAADSpK\n486fdtc6RDOXonClHjnoljg9umdPk+Dh7yWNwv4x5c7tR34PlqZxP2iqFLv6wxuJTmnAr5iv9cCJ\nxXfWTJEpjjzRt4RMGWxBVpN6XEgllaGmdSimT2kC7uQq/klhWOKLs1jOK+YD+iPhOY1KnhoDTOYo\nwYSfoNMIaBSKVXqTPmhmZswefQGOVj7F52yZZqeH9Mc/RkY8sVUiYxU9jXpNAcDijRC6PoESTC5i\ncT8AWrVEvQ2DrkqtqqeyNxaZ3IA3mTFLYfFoNOp6RJ7JvEp4SgN+RRJMzGPFjBU9/9f60+dvi1Ff\nt8w0jKZR7+7fcvc6hD718zK4oE8te3LjfH8xq4e/lwaUOdxP07hfxXAhLE2gkdZpogEG3Nhsk/o0\n+vR6+gNpMJowGsbfPXrzmqMvfpXioUXjccqZDOXDY8q+PQKWy5ApSyBJhFNS5avZhRF3NEEk/4F8\nN8fJhwZdtYfRHCURXZ45O49Nt3veQWO4fD77CuWsPkzrivtw4sQU9XLyqUKnUKC6Gpg8J24mVkLJ\nVYq1E1RNIXekkDvSF1vyBcKEQqGxBbrOFfb/Q2H/yifJ1Jwvz2TH4TFCrUe70UFjQKes5+krbvvU\niCyzzYGZEhoK2hlA56Jy5rJPbij2ez39CIMJk2QI35hGp6WPrK647Uwu3nvoxbsB05UE6w9S/PE6\n9cWvUiyYM43OMB8wGG45Vgzdrcy8q8FIGhkN1x/8mcriO9YhrLE4/nKObPWQVMnPdtDMoJknnelg\nIEAiCalU+cH+1uXzcPeS0bDK1k6X4/0impri4LOVZzveL3z939ZCNu6nFcb3WaV20K1wMFxhU1a7\n/X7YAnHWunk+lcqcZhV8MW0YMuViNRHCeJqZeJ5hxUc84SN/WKGh6iFWwWQcz0I+MQtuOOf+JKOn\ngzUcwD3M07VaiUxXD7v2e/VoC6vbj5cqNaoUKg2C8eHqHEYjDqA5x1ebXKs8/8VBPpMjV67S1vTF\nliq5Yyq5DP71p+zGnUjdb5monP5bn28t6ysshm7lUFau/g5MGmS5WPPgDvn7ROdz7g9PaAIGAngf\nsEH6vZu1zLxfn+hwzv3xZ4qDAeAk6LnbCjtz1SFGmFb8xNe7ZPdLlI4yhH1x2qcpVMC3sUrQfIp0\nGd7Pw91LRuzBLXbbHd6m6rSKx6R9e3zPzbylaaqYreejM2WarT4By3xZy01bq4jHTJ9DXyodUsuc\n8L7RQWGAJ7lO2GHkptSzhVZJ5GukG31WHEniIZmv+bVM68AzmoOsJc4X0+tQzuspaPFG8A8X0zHY\nAoTDR9QKPdRMmXrUqW9pMwzhazKg1dW3VBnV1SZPxjJafcQ2fcQ2od9poqhlsken1DSN2nEBNeJk\ndDktafB9I70WzeEcSZvTihkL1oABSnBWb9HFPXH0XmufR3V5MK8ARit+DFQYUG92iLnkuX/czFjt\nK0APrdyk3QfzHMX7bVvhiQVxx/z93OToTDPh3XVZW2VOs5SZnjvMkpk0Eg/gS24QmbBrye1l8Zx1\niCsswTU2i1U+VzOcfGjQVnqsOJIkI06MFenyfwgPdy8Z8SR22FR/53NVI7//kYr5+83fF7Jxf5fe\nd4PDRchiJNPtU8gWiXgnb48mvj8GW5DkWoHaSR1FYSS8/upa+VcYrVhtBmiAyWZlzv4g8YAm7XM/\naFbIV/XMuVs75NfXh9fO62mnlGtx3P4VDBYrDouBSndAo9GiHzCP9Ph2aNRaAJj91su8odejbzJd\nHGe0OvBZHbhX+vzrXYYBGmffb/mwQPoo2VPyw1Ecv0cvHdxeD5QqdGsp8rXQ2NaWAPRUshl9/Q2z\nL4jbBgZceH1GKtUe1VSOenAdt0zXftSc7hBm0mhkyBWjuGV7yu/STVGVd8rfb2Qn/uQ5637pqJ3L\nrGXmA+WpwY0f2I7dLRJg3jrEdcPQ8eoJdUUBzKwmoziN0J1wtJjTg99LViKbW9TfHFDSNLRbmgCL\nbHmaK0YPsY0AZqBbPeTthzS1lkav36ff02ipjYu5O+J7Y8QVTRIbts79El7/6BkNSX549YpXw//9\n5afnbCUCI/uX9yhnUzOFYJbz5WFB68AT0bvmG6cnpEoNtF6ffq9D7fSIdLUHmAmGfMMxnz7V09/5\n42OaktJC6/Xo9/ucaQ1KRb2332i26aO94tsY6OlRPPrAfqoOgCOaJDQcgbGFk6y59MWR0u/eclyo\n0+n16fd6tNUCRx8+kmkMt8lLhoaVfr3C5gL6WoYP7z5TVDv0Ls6r0xxIWfGYmDxRNoaRVaXDN3w8\nrdLWzp/XFvVG+xtfofjy5s3fx228PC9vfmHTZwJaFE+LtL7mn7DwvmyZGd796zCN/h9P4/rzXjkt\noN5pM4O71CGuMzljJIbXYvEliU7sBBDz+zL3ksEaZOtJ8rsOyYcFHbm/K0tgi2fbRj58ytOupHhX\nmTQjxoVJRmm+PyYP8c0IraKFhITXL7zLrWvAu/4DzybMiWvnP/DbYYVuNU+lGSHqMOKJbZBQPpJW\nVDL7f3B1xQVnePOycO4pVDJdWoMU++VJeYWV8GYEt5GxbsFpoYOyH/bDuGkBNEd4i7210X2HHcSf\nPuXs4wEZRSXz6U8yn8bPMZg9JHf2Lva4BzA5V3nyrM/+QRpFzXHwJjfh28yYTRJ6+TiYCW4+pWf4\nwGGhTfnkPeWT60eZnCuyI853a878faqR0T31mOO0i72ELKQ7kznKzPsx4kvskqi/Ja3m+Hzk4tlO\n6FpExk1l8Q/B9h3qEJOvxRvbINIs4khevwZxR1/wXjK5VtnZbfHnfvG2+N2FtVSNezDiCG/xsy9I\nIVOiVK2gtDTAitvrwR0MEAn4sErp/12y+Dd45v/WVyEewvnWNQbCxMKTJ+jYgjFi6RrZboNCUSG8\n7sFocpF89gPuXJpcqUpF7QBmHB4foViciN9+Wfk3+dj628/4yjkqJRWlVqcDGG0ufN4AoWgYv33J\nstBHyGC24/H5CIXihDzXx+QMKx7Wn/9EpFokWyhRLevpaHMF8AWCRCOjESGXzN4kz38OUsrnKJVH\n7xU3Hp+fUCiEUyJ2Hw+Tncj2z/hCBTLFItWqQlvTn1e3200oEMXvs0rj/ns2T/5+A4M1yPpmFeVj\nkWrqiKz7GasS7ne7r1lmmlzENxPU/jhBLR6Q8rjZDs8+cHO3OsTkRfsMFj9bUrl8WF/4XrIF19mo\n1tkvfp8b3xtevXr1x+vXr8defPXq1Te6HPE1SbovJ0n35STpvpwk3ZeTpPtyknRfTpLuy2laukuk\nkRBCCCGEEEIIseCkcS+EEEIIIYQQQiw4adwLIYQQQgghhBALThr3QgghhBBCCCHEgpPGvRBCCCGE\nEEIIseAmrpYvhBBCCCGEEEKIx09WyxdCCCGEEEIIIb4TK91u91tfgxBCCCGEEEIIIe7gvE2/YrFY\nvvGlCCGEEEIIIYQQ4i7O2/Qrk948j9kX37eray1Iui8HSfflJOm+nCTdl9PVdB8MBt/oSsTX9Pr1\na/7+979f/Fue9+Ug+fxymrZmnsy5F0IIIYQQQgghFpw07oUQQgghhBBCiAUnjXshhBBCCCGEEGLB\nSeNeCCGEEEIIIYRYcNK4F0IIIYQQQgghFpw07oUQQgghhBBCiAU3cSu8RdNVCmSKRapVhbYGRpsL\nvzdEOBbEa5v0JzY5/eMNJ40+JvMqT39Zw32tm0OjsP8bn0o9rIEdXu6FME/4pEG3xMdfD6gwfZuZ\n8O5f2Q5OOlvclZL+N29TZxgNSV78TwLn2LuT026gnvLPNycAbLx8Rcw1nn7X0qmnknr3lrTaZ8WV\n5NmzBI6epPfXNJpm48w4PD58oRCxkAezYdon9Ch9+pX9Qg8DPnZ+fkrQNum4Pu1qgWyhRLVcp4Oe\nj7jdPiKRCD6XGSOT76FR3dI+v+6XMBBg9y97BCx3/cuXw/T0vaT/zrPlx5d6tKvFsfS0uQL4AkGi\nkQA207TTOlQKGQqlKhW1A1hxB3wEQlHCfjvjp11e01VGmwufN0AoGsZv/y6K2S9AJfXPt6QH/RuP\nOs/je8M8/7bjnFyWD2bXOs9fxrGPHXnDvXTWpJjLUShVUFoaej7jxuMPEw35sK1Imf8ljP6mga1f\n2ItYx94/z1fByeaPPxB1jL57mcfb48/5Yd1O6Ur6tm65d85tvHxFFMnjv7zpeafNFcAXjLIavSzX\nZy13R/OA83NuTae+SurPt6Qb/ZHndr7rEw/npvz1vG0XTURxT8leB80sf/x+RBNwrj7nxZpnZBR7\nvjLHeeNRj9ti1zp6LfJHHzgstMde7rdVSm2VUi5NcOMp2zHnWIhCTymTbeiJ29NOKVRiuKUgFmM6\nFD7vk1b7GM1BtnYTOE0wuJ7Xi29Co6kUaCoFsqdhtp5sErJfD0QatMsUCvqzPqBKvlTHn3BfCVnq\no6Tf8TZVH3+1rVJrq9SrPZ79vI57WoNQPCqDM4WTjwdklO7Y6221TFYtk8t4SO7sseodL/60Wor9\ngzSKNvpqh3o5R72cI+tZZWdvDfcMpWa/rVJuq5RzGfyJXXaSHuT2+fo09ZjjtIu9a8/8dYNOiYM3\nB5S00UqlRlMp01TKaMZf2L3S6BQPw2Dx4A8aqZR6qOUa3UiEy7ZYj3qtOvzvBoraIeoYSYdeHaWo\n5/EBrwsjUkgvsvN8uljSB1Sc98w4B5Q5zSr41j0T84B28ZR04+bG3pe8PjG787ZdpVxn5+UugWvZ\ncZ9aKUtz+K/maY5q1LOUHXAL3LjXKH1+z2GxA5gJrG2zFnZjMRnoayr540NOyis4ndYrD3SPajHL\naP2tkinSCl7t3Z+f9NZ/L/oo6QM+FTt6w/759oRMRNL7axvtse/3NFrVDMdHGZR2gcO3Riw/beK5\nkqM1KnlqIz3A9VQBJerGN3LcoJnnaNiwDySfsx5zYTYM6GttlEqeUt8vDfuvYNKIzPyaZN6/J6P2\nARfx7XWiASdmBnRbZXInKbKKwsm79xh/eE7MqZcOg2aWD+/SqMCKK8rGRhy/3YwBjUY5R+okg6Kc\n8uG9kRfPE1ztRxobAe73ONMawzKoTSX9lv2VH3gaW+RxgC/BRfJ//h/J4b9uG51Thv8/76hKNfWR\nI9tLtoI3Ncx7VDOHlLQBJkeU7Z0EXpsJw6BHp6FQztWw+66fL2XAQzHj9nqgVEGr1VC7kcsK+Ujj\nHbjW+NeUGvnBACNRPC4jTGjcexJ/41Xi4hMuRu8cyRf8mHCPHTtQH/pvEzcZzTv7PY1mOcX+pzwd\nNcVJ3sez+P3zzUbmhELo5ZWIDxicVcmkq9/8+sRkY/lrr0e7nuHgfRpVK5EpxQmsjv/2g7Mapcxl\np/6AMvlSg8BFGs1X5iyyhZ1z31NyHBU7AIR3XrK36sNmNmE0Glmxeljde8ZPPz0jfmWY5XIkz0w8\nmcABnDUyVJTZe+7E96yPcvqB/VQdcLH2ZHviiLD4towmM87gOk+erOEC+lqO00Jj/KC+Qjmr9+EG\nkklCBgMDChQrnbHDtJZKEzAQIBjyYDUZMRpNrFidBGJb7K2OV/7E49UupDhR+4CTtRfPWQ+79fQ0\nmbC5wmw82SPuNAIqmVQRvRrQIX+S0hv2jlWePdsk5LJiMhkxmqy4w+s82RuWFWqKdKlzwxUARtNF\nGbQd0huEtaMc1dujgsUXoVHYP6Z8Y7K1aOT1TkCrP0jAYcZkNGI0mbF7giT2tpdy9Odrsrr9uNEr\n5NX65fDLeeP94t+1GupF/b1Po14EwBL1ySjqgjOazLjC66yF9YRUM1VaD/LJKpl0cWxQD/rUc2ny\n3enTa77e9YlbmUzYfD68Br0+3p8QWt+pFCgOBhjNcZIJvUGvZsrUl7B5t7CtlkZdf1CNxAlPGlbF\nit1+Pac/H8kzmaMEE36CTiOgUShWJZhr6fVplw7ZP6mhYSayu0vMtbCPyFIwuaKsRvXnvFFSxgpa\nrVYi0+3rjfZwlEBET8tarjx2nGlFr7UPKJM6TlNSWmiSGSwgjXpNH9+1eCOEri+kAiYXsbhfP7pa\not6GQVelVtVLf080MrGBYHJHiQX1N+qlGt3rh0xgJRSP4QAGFKjXpXX/rQwoc7ifpjH1uTZj9ugT\naFv5FJ+zZZqdHktYJ/xmDDYPQe/wGas3hvWxHmqtAIBnbZ24xTje+O+r1LJ6KrndTpn68l0wYbbq\nz+LgjAd7BjvlY3K1y08btEucpho3nPF1r0/cTlMUagN9cNbnuBpr3aScqwFgj/pZDYRwoE+9LteW\nr+xd0LB8jU5LTyxzwIFt1vbXyEieK+7DiRNT1MvJpwqdQoHqamDKYlviseoPUvzxOvUgn9WtnnBQ\nLKEBZneC+I1hnFDY/w+F/fHXZlvsSzwcE3aHC6jRazToaGA3A3Qo50sAWMNBvJYVCMQw59JojQwV\nJYrdo2ccJm+U7VCZT8UOrXKK/bJ+P9lcYQKRAJGAD+uEWuPRm9ccfZ0/UsykQ6esj8KsuO1MG2g1\n2xyYKaGhoJ3p550v3uN2THvmzdgdK1DqcaZoaDD180cZbA48BiPNQR+l1QH/gha5j8i0PH9SWKXR\nsMrWTpfj/SKamuLgs5VnO94Jn2ollFylWDtB1RRyRwq5IzCY7fgCYUKhEAHX9VxdyoCHZMXps0NN\npZur0ljz4TE0UPIDwIzfE8XWy5E57eiN/6APY1OlNNA7cH3TVti6B8njv4UeWkfPjw0r9x+BNBAg\nFu+TyVTJHWfwv0zgNPaoZtPUGOBJJnGkT8nessjal7o+Md2k/BXAu7rL6pWy9HItNSdhvxuDw0LE\nl+JztUc5Xybuj8xUZn8vlqqmcT6SB078Xj1kw+r246VKjSqFSoPgPebPSEG/2GrF0sV/a/U0mZLv\nlnma4rEaNCvkq/rYj88/XMzM5SFkyZDp6pE6UU9gONJjJbzzIw5fjmy2QFHVF+hsqwVOVX3Bvr3n\n2/iWqWT4BiZVpCfNiRVidkbswS122x3epuq0isekfXtMmlppcq3y/BcH+UyOXLlKW4OB1qKSO6aS\ny+Bff8pu3IkskP3lOD1BHKg0yaGo6zipkh3ouxq5XUZsvQCcZi4a/9Tyekebz4tL8ueFdz6n/aSg\nl92uuA87MDAaccDFQmnzckUSJBSFdCNFphhiy1EiletgNEdZjXqpp0/vdX3i66qXc5SDLsKO866V\ny7XUVpxBPA4AK96AB6oVutU8lWbk2poL37MFbdybsdpXgB5auUm7D+Zbu88uR/Is3gj+YSIbbAHC\n4SNqhZ4+NyPqnLAtnnisbtsKb162UBxPO0te1cjv72O3Pp8ami+LKT0GPVpNfQUkk9OJVV/R7GLF\nVCNxAuerohs9BGIOMsfqhEgdE87gKjvBVXb6PVpNhVo+w1GhTr9dIFuO4ruyINpNW/KIb8GKNWCA\nEpzVW3RxT+yp19pNNMCAB/MKYLTix0CFAfVmh5hrUoeeRqupR4uteMwzd9YO2k2U4YiQxy4dhQ9h\n/m2KjHgSO2yqv/O5qpHf/0jFPLlsMFp9xDZ9xDah32miqGWyR6fUNI3acQE14mS0q0nKgIdlcHgI\nOo00G32qioKTMgC2qEdPb7ePmCFHdpBDqQcxVvTwfJff+0VG5SSP//I65QP+8/rg2usrriRrkeFT\nvmLGioEmA1pdfYvKUV3ttnVQXMTXouTfZSinPqFZFZpAeCOBd6VD/YZTZ7o+8UWM5699zrQW5eMP\nHBbLHL2zYRtuYz66K5InErjocLH6/3/27vQrjTVd/P4XsJgp5klxipppj939nJPz/7866dO/3r17\n73Qmh6gg81QUIJQFz4tCBQGnmETj9Vlrr7UDVYjedQ/XPcaJ2RpUhm3KVY24d/aJCd+jBxrcgy8Q\nQyGHQZ5iJUlg6ogag17Pgct1uhvy+Uhev7nHb6/3pj7TWpuRJnDLqZNS0T9sLjXD5toS3hMf5psd\nqoZObi9H4OWybNRzT5l6kaOila99UdXq5R/bMXVAnv/8X37qvuHETJ0BpmnHcZrGdgcefxiP34ut\n/wefmiaGKSvrvrTP3632fMftfjNLqRkjE7xQlZs6hXzdujoUJeAGG36CITv1hkkjW6QVnT720GwV\nKYw6CwPR6wYSPSr5wmizxjiB65yhJ74QF4m1dVpvdqgaBoYx4xLTZOBwnDX+7C4vIZeXwMKAf7zL\nM8TgRPbi+MK8+MMKtHt0yp/YZ3QaUmAURNl9qAkbhSKUcwcstAfYUImo0nH2vZh1jrzN6cLrtFHv\nD2m3uwwiyliQ1qPdtHbRUcKuuWWzI5hmNVZju6KhGaD4V0hHFeCKjoFrfD/xNdhZUHzE43H2KjlM\no0y7u0zAN3kqUm3vX8wI7+gcVdDS6sRJSd+zB/trOtQkq7EK25Ue1b03DE/Gj8LrUCscsFcYsvLy\nGemAjVohe60pPbPWZgyHA0zTnO7xsTkeTS/QY6AmRptpOaKsP+3Re3OI3jli55OH5xuxR7Ve574b\nPwpPB2t6XdxqALbLR1SGV++AezpTx9+v8vE/FdyLSRLhIK4FGzaG9FtlKk2rNe9xSurfF5eVx+54\nhuVSk0PdIPfuLYNZR+G1R8fkZU7ztIvEcoZKYx/dyPPh3WDmUXgdrNGapauW6kwchWc1HIOryUfT\nqLivbK6xcn3q3QGNoz84OI6zlIyg+pw4bDYGZpfaaLmWXXFbMz0e395MX1UgmEDJHmIYPXqAQ4kT\nOJs958AfjEOxQF/X6QMLvhBe2Svpwbre0lUvasJLLqvTPjok610jHfLgwKBV3CfXMAGFaCx0yeco\nRJaWCFb2aLJAIpO81pR6WVp7X4xG7svWBps2AjgXYHhSp3h49caI1klJS4Tij6Mj8AE3NxSia88w\nbR/YKx9TO3xP7XD6mna7x0DpnE3ZCK78OPNcyuPSB37fm702o1/f4/d/THcFxTf/yrosB/0uOfyL\nbGx2+c92hW5lh4NAgM0Ls0PmbfYh64S/jHmbG9ndcdafrlhn3I9tmumOb/Hjk8jUDspm84Df3+Ux\nRjN1HL0yTaNFc7SJ1kUuNUN65okc4lu4rDx+EvWSfvaMk4875DWd/O5/yO9OXmdTVDIbW2dn3APY\nvCmePj9heyeHphfZeVOc+nyXusjG1vQZ9zB/6iYohJc22ZAz7u/MvA31bETY/MvWpUfWjZfrE4P3\npkY936c7PN9Qc5KL+FrCmgI69qrUAXfP5vUTc9pH+yOBMxZkLKuyEFCJ2YpnHbi+mCrrnr97dtTU\nKkvaR3KaTn77Ty7Ox/PF10heMevW5o6SWW1gO46SvDirS9w788pXAE8yTtAFvXJ5VBb4WPvpxxnr\n6nsU3//Bp4ZpnZQUTz+K8uIBB/eAw0PiyS+EYmXylQqNhsaxAXa3n3AwRjwVJeheQM9/oskQG3FS\n8dmNLHc0RSrXpNBvU65oxFceQ/KLy7ijGZYbLXYrPap72/i9L0jKAO49oeBVQ4RiMVKx8+lx45tm\nplLTgT1Yu+MvhUrnu6g+e8lf/FWqlRoNrYXWNeZ+vrj/bAsqKy9+JtGoUChXadRa9BhNp4xESSYi\nuGc8GEoww4tf4tTLecrVBnW9B7gIREJEYkniYc+1j9qyu/2EghFiyThhz8OuZr837ugKq40W25Wx\n6biOEOt/+4VQrUi9qqM1rWdG0vEbsPtRo3byeSu4jwT9E7N0bAt+1IidStUEfIRV6Th7FBx+Ms9/\nJFDMUTwrn616OpZKk7hW+WzHn9ri2Zf/tuKLuJjeHYqj4+/c8UViMzfMcxFLJcg18hjtPNVmcnq5\n3nfI9urVqz9fv3498eKrV6++0dcRX5Ok++Mk6f44Sbo/TpLuj9PFdB9eY6mSePhev37N//zP/5z9\nW/L74yDl/OM0L92//+4LIYQQQgghhBDiOyfBvRBCCCGEEEII8cBJcC+EEEIIIYQQQjxwEtwLIYQQ\nQgghhBAPnAT3QgghhBBCCCHEAzdzt3whhBBCCCGEEELcf7JbvhBCCCGEEEII8Z1Y6Pf73/o7CCGE\nEEIIIYQQ4hZOY/oFp9P5jb+KEEIIIYQQQgghbuM0pl+Y9ebpnH3xfbu414Kk++Mg6f44Sbo/TpLu\nj5Ok++Mk6f44Sbo/TvP2zJM190IIIYQQQgghxAMnwb0QQgghhBBCCPHASXAvhBBCCCGEEEI8cBLc\nCyGEEEIIIYQQD5wE90IIIYQQQgghxAMnwb0QQgghhBBCCPHAzTwK7yEb6kf8/c3hpdes/vCKlN+g\nvP07u1UTV2SDH7ZiKDOu7Ve3+W27io0Im3/ZIuKcfF/L/T/eZk8u/QxxWzrZ396S6w/wpF/w44o6\n0Rs11I/47c0hBrD49G8shycfZz3/hjcHOs7gOj88T3A8Sqt57LYML/97CR/n6ar4V3jxQxrPxJUX\nnx03xb+/JTccXPrbjH++uCWzR72cp1xtUNd7ALj9KmooTiIeweec7K8cGjrVUplytY7WNbApHtRQ\niFgsTUw9z63DfpWPv+1QZ0hk/Ve2Eq6JzzktB8DH2k8/kvROfCmqu7+xXTZnPqfiOkw69RKlSp1G\nrUUPcHpUQtE4iUQM30TBelXZrZMd5cf45l95Ep1897rPhHZFeXFq9YdXJLluvXPlxz1443npIrc/\nQigSJZmI4HaMv3OepjPviSZZTKoottk/06jv8c8PJQCiT35lMz6ef++2HlGu3caY3x6xnrkoyXSS\nsOe7a4bNNf73mJUfrmpv9fUq5VKJSkPj2BiVEaEYsXScgHKzz5rXdjtpVykWz3+GTfGgBlQi8STR\noAeH7SbtzBv+gb4752XxZabaRlP1vItAJEQkliQe9jBedFz3mZrX/uprZfKVCo1RetvdfsLBGPFU\nlKB74UY/Y96zJm7gWm2827QBzu/xJp/xci008RyN3+PNvOSnpcBX+oW/jMdTq4gHyI+aUMhle/Ty\nDdoZlcBYq6zdqmOM/r/e6rAUHm+0ddCqHetTIkGcwPEtvoGhH3CQ87O1FJCA7VszdbLv3pLTJxsK\nx7rGsa7RNp28PGu4D+iU9/mwW6I3du3Q6NIsd2mW8+Tj62ytJnA7wOZUCUft1Ksmeq1JP5HgvH42\naTUbo/9vo+k9kt6x4MFsoVWs7xQJ+uU5uaFhr8HB7h4FrT/xer+rUcpqlLJF0k83WQm75nzCdd3s\nmRB371ivUdBrFPMqmY0tFoNXN0FO76nXM2w9XcI3lTY9aqXq2b+ahQrt6BK+s4x4t/XIdJfFzVnP\nXJZmuUxq6wWrkc99tr9zZpfS/gf2ypO1eL+rUepqlPI5Uk+esRz3fFb5e1zd4T/blbPnAUZpVeui\n1Xo4fnlG1P0ZP0BcyWhm2d7JoY0nAj1atSKtWpGCusjG1jKBz41e5jxTg2Od6rFOtZgjuvqMJykf\nc/oUxV27URvv9jrFXQ4CP7Ae/X7L3e86uJee04fPF4ihkMOgQruzQuAsPc8bXcBUo23Y0ai2B4AP\n1T+ZgW86gt7IfmTffVlB4Cfz3/9FZvSvq3p5xe3o5X1y+gAbIZZfrJHwKdgY0u9pNIoliJwX+kb9\nkHe7JQzAHc6wtpzA73QwHPRoVbLsH9TolPf4MFzgxUYEBYVAUIVqHaPZRO8nznvfx4J3YCr4N7Qm\npeEQO0lUv4T2N2Lq5LY/UtAH2BSV9HKGRMSHYhtyctwgv39AQdPJf9jG+cMLUp/x973pM6Eu/Y1X\nS6d3X96rP9TP/1/y/LnxmRMD06TfLnGwd0j9WOPw3XscP/1wYRYMEyMxA9OgU8uyvVuip2U5LIV4\nnp4suYedOqXG+Yj/SSdLpZnENzYC/yXqEbhZWp9dOxxw0tc42t0jr/UofswR/NsTQt91a+xzmNQP\n37NX7gEKkeUnLMcDOO1w0m9Rye5zWDumsPuWgeMn1iO3nD9pNsjvVDGAQHKDtaUwboeNgdmjrdUp\nNZ2oMwJ7ye+XuVnbaNgp8OFdDh1Y8CdZXU0T9ijYMGjXimQP82jaER/e23n5YgnPrasDg+qn9+xV\nLjxTDhsDQ6d0sMdhbQGfz4Wdu+nQE1e7SRvv8xiUtrfxuD6vTXGffZ+/lfhuOPwqUZs1DafSbJ29\nft7osgyo0D5vo9HTG3SABV8U9ULj8eYMytsH1HpXXym+FIOu3gVACUeJqi4cDjt2hwO3N0xq/dl5\nQ2Ggkf9kBXGuyAYvni4R9Cg4HHYWFA/h9BbPNyIAdCufKGvWc+QKhAkAQ2o0WufDBqfB+9m/m030\ns0HmAe1WBQBnMjRjVFFc5rh2NOql97Py9BnL8QAuhx273YHTG2X16RZLfjugk/tUpHvbH3TLZ0Lc\nHbvDgVtNs/V8g6hiA3QKhRrTE/HH71Hwx1dYjlsZq13VLjwDA5rVAh1ACWXIxK0mTa1UY3weyP2o\nR0ZsdhZcIZZX03iBIWVarauXfzxWppZnr2hVvvGNH9haDOFWHNgdDpyeEItbz3kSdWAFbAVat8y6\nw27nrJwPRWN4FQd2u1U+BKOLbD2RZZdfVo/SYdYK7L2LPH++Rsx/Ws+7CMRXeLq1hBc40bPkqrdv\nkJlakf3KjGfKbmfBpbK49Zyff35O+rOnB4jru0Eb707o5PZytC+rgB4wCe7F/Wb3E0xZj2mvrp81\n7NpalQ7giq+wHLnYaOvRrFlDaa6w/8J6+dsZUmNv+/stCO4/B4rTmhzXr2c5yFXQugaDGV3qw45O\npW+18GKJCLOWv7ljaZZGa7cqDZ0BYHOrRINWENFqtUdBh4neLAOgLq+Qdtong/+BTrNg/axAwIfE\n9jfRo1nVAHDH08Rn9aA7/CQXE4C1FlbrTF9yHbd9JsTds7mipBat0fd+WbtGmepAcVl5f9AZTKTL\n8KRJNW+F8aFYgkTYelb6jRL18WflntQjExYUXKMJv8asgkwA0G5Z0+TtpInPXL7gIpZaRAFM44jm\nbaP7BYXT+Til7C6lepueKaXA1zLs6zQb1t9bTSZmdpQ7AklS0VEdXW3Sn77kWq7zTHk8Upt/Xddv\n492Vk84RO58qt36O7jPplhL3nB1fIAb5wqhxn8bj7dFuWM0zNRgjMmhxWKtbjbalAO6+TrM5ABRi\nwelNMQbDLH++zk69PmuamN22yPpGn4PtCoaeZeeTi+cbwS/xi4pL2Qkm14hWdqgaParZHapZABdq\nPEI8kiQccuEAjF4HA7ARwTt33p4Lj2qDCgx6fUzAjgtfyANNnX6xQXs5hGpro5WGgEJYTeI2i+SP\nelbwHw1h7+hUhwNsRAhd3NFJXMHA0Kya2+5S5naMLHi8BIAWba7Yl2n+T7r1M3Fz+29es3/hte9h\ng5675PEEAJ0BNTrHa6iXrpEyMXrWc2JbmEyTXr1MZTjERpxIUEGxh0k7S+T7bcpVjbj3dBrn3dcj\n8JlpfWLQG034tT3CRb2z/nbTDHpda1aDEvHinpt1PQSwUWNI/+R2OdfmjpLJlHmbbdHTyuxpVqeu\n0xMiEo8Si13c2HP+7yH5/Rb6vbNNOAPeeUsgFTzeBaianGgGBtxiNsU1n6k5rvfcipu7fhvvczkj\nayx7q+xkW3QrO+y5XWwtfV+F8Hc9cr//5jWvX0/+90eudfWNY2x2abB/a4oaJGGzcbqZ2fBYo9o0\nzwKq0+nUpyN7RqtOnSEOJY7vs6dS2vFE19nMWBV1t3JArnqbrfnE57K5omz+/CMbmQT+s7WPPbRy\nnp33/+Ltbm1iI6Tb8KlRvMCAIpo+wGw1KAwHOJQkAb+dgGpN3e4XG7RNaDWtqd5KKIhfdsi9vct6\n508MJkttOwvSLf0oDEwDvfSJ/bI1vO9Lqpw3+zvUik0AXPGQtcGW3Y8as+rszlEFbWy2+7etR8YM\nB5z0GhzuHdLB6nAK+qWdcddu3nazoy4955dnayTCnrOgsd9tUDjY4c0fbym2ZST/3rHbucvsKb6d\n67fxPq8NYMNBcGmDJzGrNmlkDyjq39fSKGkiXWFBsYr4IS36BkzO5zQxDZlO98U5AqgxO6WyiV5v\n0rDVaQGuSJiAE2xY06lbzTaa3mJBbwDgjAXHdkw+d/Mj6eyoSxus6X/wqWFQ2v5IXZH5+d/EgpfY\n0jqxpXUGJ13aLY3S0T4VfUi7fEQtFSHh8qJQxaBGpzsg4pzVh9mjezZq7DzrDbZ5VaI+O532gIam\n4aMGgDupWs9LIETKVqQwLKK1otjrVlXjDwdnTvUWl/HgS9igCMelOq10gMBUt/yAVrMOWEGQ0wng\nwDE6E+2k1eOEC6M35gnGhd4C5TOeiZuSDbau1u1a3TV2IngvbFLWq+3wz9c7U/cs+DOspM5PLTG1\nGoVRsBWNnh5rZCcYTeE92qdDmUp9idDpsXh3XI/AzdJ69oifQnxz5VEenXXZkWLnFFyeBcDEqHU4\nHoAyM+t2aY3yvHPBehJu13az4w4lWQ8lWR8OOO5q6NUiB0cNDEOjUNaI+UITo2KS3++I00UYG3WG\ntDo9UjM2sASDbscKwhZUxSr3R8tbOgzp9qfH8vvGxbX513ym5rjecytu7RptvKT35m2AaS7ia0/o\naO8p9HUOP+yycNupgffQdx3c30mhe1bgGOidHvjGCpxBm1bdeoAWvC7ZbOWLcRAIhqBcpd84Yv/Y\nKqz9ocDob34+nbpZPqCvW4H33R5L5iKxtk7rzQ5Vw8D43CFicXOmielwnAVd9gUPgbAHv8dO7/fd\ns2nbNq+fmNNOvj+gXKiQCCamAu/jSp5cfzTlNjT+nHjxhxVo9+iUP7HPaDfdwKgryO5DTdgoFKGc\nO2ChPcCGSkT9fo9U+XIcqOEESjGPYeTZ++Tm6drkMXTH1X12s9a6Z08yTnCUkG53EKgyMHQ6x+AZ\nCxDNtk59aC2l8LqsEuLznglxl4a9KoWjNgDOuHqtTSid4RWebaTxnl1r0qgUzmbq5N79H7kZ9zWL\nNbrx9Gi9/H2oR8Z5SD99wUpYWg6XOT/pIE+xkiSQuFjW9qgUjjAAh7JI8PSog1u03UxzgMMxut9m\nx+0N4faqLAx/433+hKFxwoDvfMrrN2Jz+gmG7NQbJo1skVZ0Zaqz12wVKVStfBmIjjrUnS68Thv1\n/pB2u8sgooylT49283STNtdZmX/1M2XQ6zlwuSSlv6prtvHg5m2AmRwqma0l9DeH6Ibx2TM/7xN5\ncoHhcIBpmtP/Dc7PvwaoHX4ir/UwBwMGRofKYZZ839rpOR6W9VVfkhIIE8YG9Ogdg40Q4cB5gXw6\nndrUdXT4IseS2VxR1p9mkE76b+O4tsMfb083OjIZDAaYZo9GuUwL65lQFgC7SnotgQL0G3u8/ZCj\n2TUwzQEnRpd6/iPvdqwReU9sjbg6+ZwEgta9Q6NHzwCHEidw9iw58AfjAPR1nQ7g8IWmRh/F9TiC\nS6ynrD9et7LHv3//N+92D8gf7PH23//k923rTPoFf4Yny6GzSv+0PBjSIHuQo9Wznod+p8rBodXQ\nV/xpgqeZ9TOfCfH5BqbJsZbn47sdqsYQ8JNKRaZmSLgiG/z11StevXrF//c8baVZPU91bI79sFPm\nqHz17KmTdp762MkH37IeWf3B+p1evfqVtZAD6FI5qtz+BIhHwqGmWU9aaVTde8PHowbHhmkdrdht\ncPTxHbtVE1CIrqXOjjG8cdttoJH79x9sjzbyMs2B9TM6VSoV61lbcN9+Ro+4iovEstW+Ghh5Prz7\nREXvjdKhR6t8wIePOev0Cn+GpbOjib2oCWtifvvokGy1jTG6p3m0T64xejZiobNOHIeaZDU245ka\nDDjp6ZT2P/Kvf70lL6dYfFXXbuNxizbAHA7/Ihub399JGN/1yP119et7/P6PvanXT8/ojS1voLU/\nUjlucPD2XxxMXKUQXl4hLot+vqjxXl0AJRgmMBZQjU+nhsuPJZu3oZ6NCJt/2bp0iqRVEHT5z3bl\nu+rlu/+6NEpNevrgbKOjSQqh5UXCo2dCCS/z/MmAD7sljutZ3tWn09sbX2drNTJVqI+P8sL0tNyF\ngErMVqQyOjbJF1PvfiftR8NBePVHXjh32T2o0TO6NMtdmmfvK/iiSzxZT46N2oLNGWVlS6Pz0Urf\n/1xIX5uisrianEiXz3kmbmLehkvjZ74/FuXtf1Lenn7dpqhkNramzri/yBHMsJnReZttUdj7hM+7\nScR1fvydjThPZ50Rb2rs//s9hb5BudIgqVqdCHdZj8Bt03psFph+wEHOz9ZSQEZa5nIQXn7G+uAD\ne+VjaofvqR1evMZF6skzlifOuL9Z283U6uT7x3C2kdckuztOJqFOnXsu+f3u2Lwpnj4/YXsnh6YX\n2XlTnLrGpS6ysTV+xr0dNbXKkvaRnKaT3/6T/IV7fPE1kuHxQkIhuvYM03bZM6XQbvcYBBb4vrZa\nu69u1sa7TRtgHnd0nc3jHm+zN9uT7T6T4P4abK4wGz/+RKhQoFSto3UNwEUgEiKWXCKhSgH+5bkI\nhv3QsJr9/sjFNc7n06kBQkH/F+thd0dXWG202K7Iwfdfj4fUy1/x1SpUaw2aLY1jA2yKBzUUIhZL\nE5vIh3a88XV+CcWplsqUR/l2/vXjt/pRo3byeauBf3Farm3BjxqxU6magI/w5Vt9iys5UNNb/Brv\n0mxqNKpHFOrW4TTB9BM2lkMomLSrDQhFz4Itd2SdH38OUcwXqDSs58Hu9hMOxkguJZk+vOAznglx\nJ9z+CKFIlGQiMrH8Yj47anqNpcYbcnqV/QMV35pydvydupKcDuwBHCrJpSCFvTq9cpnGYoSoG+5L\nPWJzRVlZa6B9rNDI7lMIPGdRlebYXA4PiSe/EEpUKZdKZ/nd6VEJhWLE0vEZ+f1mbTdHaJW//RKk\nVqpTbTXRdOsZuPkzKz6HEszw4pc49XKecrVBXe9xmmaRWJJ42DOdJx1+Ms9/JFDMUTy7R8Grhoil\n0iRm3jN6pmJl8pUKjQt1SDwVJei28qTsrPU13LSNd5s2wDzj9cz3se7e9urVqz9fv3498eKrV6++\n0dcRX5Ok++Mk6f44PZh0H/Yo771jtzx9KoUnvsWLJ583sv7YPJh0F3dK0v1xknR/nCTdH6d56S4z\nwYQQQtwfNhfxJz/y09Nlop7TcVUFX3SFjRUJ7IUQQggh5pF5YEIIIe4ZB97wIpvhRTa/9VcRQggh\nhHggZOReCCGEEEIIIYR44CS4F0IIIYQQQgghHjgJ7oUQQgghhBBCiAdu5m75QgghhBBCCCGEuP9k\nt3whhBBCCCGEEOI7sdDv97/1dxBCCCGEEEIIIcQtnMb0C06n84pLhRBCCCGEEEIIcR+dxvQzz7k/\nnbMvvm8X91qQdH8cJN0fJ0n3x0nS/XGSdH+cJN0fJ0n3x2nennmy5l4IIYQQQgghhHjgJLgXQggh\nhBBCCCEeOAnuhRBCCCGEEEKIB06CeyGEEEIIIYQQ4oGT4F4IIYQQQgghhHjgJLgXQgghhBBCCCEe\nuJlH4X1Nw36Vj7/tUGdIfPOvPIkql99g9qiX85SrDep6D3ARiISIxJLEwx4cExfrZP/+ltxwgDfz\nkp+WAnN/9uoPr0j5x19bYPHpzyyHJ/9EQ/2Iv785BDi7Z+J9Q6daKlOu1tG6hvX9girheJxYJIBi\nm/6ceWZ9vrD0q9v8tl298rr45l9ZD2iXPmOz0nT82bjss698XsWt9bUy+UqFRkPj2AC72084GCOe\nihJ0W/nyy5YfAAOOG2UK5SqNWose1vcIBEIkEglCfgU7oOX+H2+zJ3N/rN2W4eV/L+G7/Z9DcFm5\nqeBVQ4RiMVIx9aycvXjPrDL1tCwZTyPJ//fDab6anX8Mytu/s1s1cUU2+GErhsLV5flUupk62Xdv\nyekDFvwZnj9fwmtK+n8zJx0qxeJYG0rBqwZQw3GSsRDuGa1Wo77HPz+UAIg++ZXNuGvGewrLL35l\nUZ0xpjXQOPj9Pfn+gOj6r2x4q9I++8Zu00bu61XKpRKVUZvB6VEJhWLE0nECY1n1uPSB3/fqgMLS\n81/JBMeeCVNj/9/vKfQHeJNbPF+LILn882m5f/E228NOmuf/tUJgIhvqZH97S64/wJ18xo9roYm2\n2LBT4M8/9umisvHLC6Lu6fc6gG/xBS+X1UtGrU2OG5WJ9pzToxJQIxPtyvG6ZZ7xOuc++ubB/U0Y\nzSzbOzk0Y/zVHq1akVatSEFdZGNrmcCd/FYGhb1P+LybRFxXXw0DOuV9PuyW6E283qPVLNNqlsm6\n42w9f0LoWp8nxCNldintf2CvfDzx8uBYp3qsUy3miK4+40nKh23OR8xy8/JjgJZ7x9tsa+p7NI91\nWg2T57+sEJjuERBfnUFHK9PRyhSO4qw/XSPmkYlp4io9yp+2yekD7EqU9c0lfA4Yzm/TiS9o2Kuy\n82aHqjHeqWLQ0Wp0tBqG/Vc2ExcbUD1qpfOO/mahQju6hG+U/ZVglLSzQr5vUK40SKqRqU5co1kl\n3x9gI0Ik5IL+l/jtxBczp83Q72qUuhqlfI7Uk2csxz3YAXdilbW6xqeGQX4nS/CsHh+g5Q8p9AfY\nlSSrGQns70ogmEDJHmKQp9nKEBjrUBl2dOr9AQD9okZnJTQR/Le1Kh3AGYwScI9/6oBmtUBn9K/O\nUZFGUiXinP75wxONw4875LXJzN3valS7GtVijvDyFpuLge9iSvuDCe6HnQIf3uXQgQV/ktXVNGGP\ngg2Ddq1I9jCPph3x4b2dly+WuIt23cCosrftwfXcqvAv06/t8W63ggG4wxnWlhP4nQ5smHQbeQ72\n85iBEN4Zgb30AN+cM7rJq+jm6F+zR3BODT+zopYRmq/JoPrpPXuVHqAQWX7CcjyA02FjYOiUDvY4\nrC3g87mwwyXjapNuU34MOyX2R4F9JPOClZQfxTZkYByj1UtUB+GpwF5G6L+e8XJzYBpn5ax2XGbv\nrR3nz2uod1DDSf7/Xg3QcjvsVnpWYP/iycyOfEn/r8Wkkd+jagxxeJM82Vgi6HZgG5r02hq1YhPP\njJGRYadOqXHeG3PSyVJpJvGdzrq0q0RSXvIHOr1ymcZiZGLkb7xzwBWPEnQyEdxL++zbuzwNTOqH\n79krX2gz2OGk36KS3eewdkxh9y0Dx0+sRxTARWJ1lXpjj6aRZz8X4uWKyrB1xH5OBxRS65k7qT+E\nxeb1E3PayfcHNPQ2meD5TOrT4B1gMBX8d9Aq1ruekI/xuH140qSaP8+sQ2qUqm0i6QstsEGH3Pv3\n5PUB4Cf9ZIVkxIsCDE7alA72yLacqKpvKrC/7yP08zyQDooepcOs1TD3LvL8+RoxvwuHw47d4SIQ\nX+Hp1hJe4ETPkqv2rvrAazvRsxzkWwwuu2igUdivYWA9CC+eLhH0KKPvp+CLrvDi57/y4kmEGR1K\nQogRUyuyX7Hyb3zjB7YWQ7gVB3a7nQWXyuLWc37++TnpG03PuV35YXR1OoCNCNGYisthx253sODy\nEUmts7UYuOyHiq/otJx9+nQZPzAwihyV29/6a4l7a4B29IHtbAvws/z0icz0+Oa6tEtWd60rHCXi\nVXDYrTaUR42ytPVkxojc+cidEsqQiVtpWCvVJgbffeEEQWwMaVCuT5YL550DCvFYaMbSLHGfmVqe\nveKMNoPDgdMTYnHrOU+iDqyBgwKtUWPe5o6zth4CoJ3fJldrkD/IW9O705sshSWyv1N2P2rUyp/H\nRY3zXHgevJ9q6OfvDo/bNNoDwEdYnQzae/UyleEQu5Ims2S9p+drZ2l86riaJadbn7H88gUr8QAu\nh/WMWO3Kn/jLT89I+b+fOuBB/CbDvk6zYaWWmkzMHEV3BJKkotYbrWrzTmdVabmP7F/SYTDs6FT6\nA0AhkZwTwC8oUmkIcYV2y5r9YidNfOZ6GBcez81y0m3LD8eClZOH1Mge5KhqXQyZrnuvOfxJFpNW\nOrarGt1v/H3EfTTguLrH9mETA4XE5uZ31ah7uBQU1Vpo1S1l+VSo0emZlw6sjI/chWIJEuEEAP1G\nifpYvGBzR4iPAv+Ljf9W3eocWPClCc9ajy/uteu0GWKpRRTANI5ojiW+O7HKWsgK/I8+vh8tz0mz\nunTZum1xO3YCwTgAplFHH+XPYUej2h5gI87KSgSYDP57WpUW4FDC+L3jn9ehVmwC4EmGWYzE8GKl\nca05vv+RQaupAeAMJYgFZqWsHUX5vlL8YXRN9XtnG9sEZs1rB0DB412AqsmJZmDAZ4+Sx9Y2cFX2\nyOkGpe1tPK4XJGdcZ/Q6GICNAG73rAdkgGla399md2C/sFB4/81r9i/cMWsDQPH5ytv/pLz9+fc8\n1Kk695tBr2sVykrEy8ysdBu3LT+CSZ7EauxWenRrWbZrWQDc/jiRRIREJITrQkfBYJjlz9fZqU+X\nqZ1fiwOP1w80Mdttega4r7zncpL/v715+eo2+o1DdipVDEAJLJGOXr4JjqT/1+Iillmk0jxENzSK\n+xrFfbApHkKROLFYjIh/8i9+OnJnI04kqKDYw6SdJfL9NuWqRtx7GqQ5CMVSKOUchlGmpS8RUO0w\n0GiUrE1YgskInhnfStpn99k12wwuDwFs1BjSPzE5H9ccm57PEFBIb2RkH50vxOFXSdgKlIZt6lqb\npNdHT2/QAVwRlWh4SPOgTtOoo3eW8HkNWpoOgDupTix3NLUahdGIfjwcwOZ1kghl+dQwqZVqpMOJ\nUQzYo1ez2n8Lfs/suNA0scZtbDgckw9Rr7bDP1/vTLxmI8LmX7Zmru2/L76vroopduzeq6+ax7YQ\nZGnzCVHFBujk9vPo8zfEnmvYr7Pzj//HP/7xD0oyU1SIB8JFfOMnftxcJuY/DxGP9TJHu+/595+7\nNGTjpfvPbuczqgHxnWlWquij/zdaOfJ3uIxPfB6Hf5EXvz5jNRnCPYrjh0aXevGAj2/+4EO+PTaS\nfz5y54qHrI1Q7X7UmHVj56iCNtZec6gRUj47YG2sZzK+kV6cWFh2Or6v9t+85vXryf/+yLWuvvEa\nBqaBebZ7j0G7K/O9vhhHgFDCCju7jTZ9ejRrVmmsRoI43SrhoB2wgv9hX6NetWZFRwIToT2NSgED\nWPBFUb0ALoIRFZieuXMVrfAv/vGPf/DHrrW8+nvwMEbunS7C2KgzpNXpkfLPKoQNuh2rJF9QlVGP\nuoLitkEbzGNrNG6i3/fEoHfFllw2V5T1jTbauzyGnuXj7nRfveLyolDFoEanOyDivFmfiYzqfT1X\nHYV33XvEl6Dg8iwAJkatw/EA7mSm1K3LDwAHvugiG9FFNgYm3Y5Gs5Rnv9xicFymUEsSSp1XOrKh\n3rdm0u1YjQWHz4dLAYYKLmx0GNLtT9UC9I3LgzvJ/9/eVUfh3ZQ7lkY9LlAam5U3b2q+pP/XZXeF\nSK2FSK3BoNdB02sU9o9oGgbNgzJ6wofqGB+5g2j0dK28nWA0hfdonw5lKvUlQmfH4nmJJIMc7tbp\nlcvUF32Yo430vIuxuZunSfvsPrtmm6HXpTVq6zsXxoblTZ38J2ujXUVRMAyDxv4niuoPJKVH+Atw\n4A9GoVjCaNZpNmzUm9YpFaHRWYXBiB+aTbqNNrqrTZ0hdmIExsrn4XGNcnm01DJxPuPGFY4TszWo\nDMdn7rhwRWxQhZNWlz6BG83qfqiztB5EcG9z+gmG7NQbJo1skVZ0+vgps1WkMKrkA9HgKPHOM/5J\ns83xIDKR8Xtt7WzDLOclqe0IZtjM6LzNtjCM6X6d8V0gy4UKiWBCNs4T4hZ8gRgKOQzyFCtJAlPH\nHhn0eg5crutH/bcvPwaYph3H6bV2Bx5/GI/fi63/B5+aJoZ56Vab4isz9SJHRSsdfVHVqvSdLrxO\nG/X+kHa7yyCijE1Z69FuWiM1Stgl5fYj4FIzbK4t4T3xYb7ZoWro5PZyBF4uX3kqjvjCTJOBw3GW\nP+0uLyGXl8DCgH+8yzPE4MQEHOcjdwC5d/9HbsbHNYs1uvH0eeM/GCVMgzoNCvufGDZMwEc8Kmus\n77PLOliubjP0qBSOMACHskjwbM31AK1wQE63gsu1F2k6u2/J6TrZvRzqHZ26JSYt+FTClKnTILff\npccQZyiIf1T5uvwhvDTpNMscmFZHvSsdOjvaEqBdL42WUUBt71+83pv+OZ2jClpaJbSgEAiqUK3T\nb2YpNWNkgt9/wt6r33BonmCa5tR/A1wkljOjXZDzfHj3iYrewzQHDMwerfIBHz7mrE1R/BmWxtbQ\n+YKJs00WsocVOsaAwcDkWDvi02EDAE8ybh1/MpcddWmDJ7E507bsKqlV6zzMfmOPtx9yNLsG5mBg\nHdGkt6+cISCEAIeaZHWUz6p7b/h41ODYMBkMBpz0dEr7H/nXv96Sb02vj7nr8mN4XOXj72/PNnay\nrjc5bpSpNK0A0nNZr6D4agamQbt6wIcPh+iAXUmyGD8d5/WiJqxhmPbRIdlqG2OU9s2jfXKjnbKj\nsdCD650XN6cmrE01ba4o60+tcuGkc8TOp4ocb/5NDWgc/cGfH083Lx2V+0abasUaYbcrbpQFGHbK\nHJWvnrFx0s5T1847YG3OENHRxnrthrXW1xlKEJZR2gfLoaZZT85oM5gm/W6Do4/vRrN7FKJrqbPz\n083W0dlRt7GNFSIeP+nVJas8uM4pWeJWbE6V8GjX/N6xNWsuEAmedazbvCpRnx3Q0Ufrp8IB71mw\nOjypUzy8en3zkDKVuvX57miGJb+1JCf37i0H5RY904oFT3o6euf7S+l7NXJf2fs3lQs9MGcbF3hT\nPH1+wvZODk0vsvOmOHW/S11kY2uyt83hT7G6rLF92EQr7PBHYXJjBLs7znL6OsefuIivbdI7fjs6\nUmGSM7LO8yd2PuyWOK5neVeftfmP/3wUcMysDVtApgPeF/M24ZNNdb4EhejaM0zbB/bKx9QO31Ob\nWjGh0G73GAQWGN+b8q7Lj26jTNNo0Rxt7DR9fYb0hd1552389RA2YHlo5pWbdnec9acrY9Ns7aip\nVZa0j+Q0nfz2n+Qv3OOLr5Gcc/SR5P/vl8O/yMZml/9sV+hWdjgIBNi8MPIn6f+VmBr1fJ/u8Hzz\n0kku4msJAvYBjdHxdzbiPP3bE0IXs66psf/v9xT61vr6pBoZtfHGNtYbXRpJXH5EsbTP7jsH4eVn\nrA8uazO4SD15xnJklF6mRnY7P+rcWSczGlBw+FMsZxq8zbZoZA8oBecv1xG3dT6SDmBDJRwYL3O9\nqFEvtK3I3k6S4NiamdNNNMHH2k8/zlg+0aP4/g8+NczzmTt2L0vPnjH4uENe08nv/of87vQ3czgX\npka8Z22oB/d/Cea9Cu6vogQzvPglTr2cp1xtUNd7gItAJEQkliQe9swI0u2oi8/50V/kqFilUWvR\nA5welVA0SToVwX3dqXgOP+m1JZp/Hp5tyDP+c7zxdX4JRSnnq1QbdbSuYX2/oEogOnt3bSHEBQ4P\niSe/EIqVyVcqNBoaxwbY3X7CwRjxVJSg2yq6bjIf5qblhzf1kr/4q1QrNRpaa5SfFbxqiFAsRiqm\notjm/DDxlV2RLg4/mec/EijmKJ6lvXVPLJUmMbPuEI+BO5phudFit9KjureN3/uCpHTCfX2OEOt/\n+4VQrUi9qqM1rbaa3e0nFIwQS8YJexYYntTPjr9TV5LTgT2AQyW5FKSwZ62vbyxGiLpP34qQ8uU5\nbA9wKItEgg+qGSxmOW0zJKqUSyUqozaD06MSCsWIpeMEzvphDKqHuxT6A2yEWFkdX0ZrR02tsNSw\npufLcp0vwxUIE6BOC1CCUQIXjrTxBcIo6NapRXF17O9/vommO75IbOaMGxexVIJcI4/RzlNtJskE\n7dgWVFZe/EysXqJUqU/Egn41RHTGaRwPme3Vq1d/vn79euLFV69efaOvI74mSffHSdL9cZJ0f5wk\n3R8nSffHSdL9cZJ0f5zmpbvMNxFCCCGEEEIIIR44Ce6FEEIIIYQQQogHToJ7IYQQQgghhBDigZPg\nXgghhBBCCCGEeOAkuBdCCCGEEEIIIR64mbvlCyGEEEIIIYQQ4v6T3fKFEEIIIYQQQojvxEK/3//W\n30EIIYQQQgghhBC3cBrTLzidzm/8VYQQQgghhBBCCHEbpzH9wqw3T+fsi+/bxb0WJN0fB0n3x0nS\n/XGSdH+cJN0fJ0n3x0nS/XGat2eerLkXQgghhBBCCCEeOAnuhRBCCCGEEEKIB06CeyGEEEIIIYQQ\n4oGT4F4IIYQQQgghhHjgJLgXQgghhBBCCCEeOAnuhRBCCCGEEEKIB27mUXj3zVA/4u9vDme+5/So\nhKJJ0qkIbsfpqwbl7d/ZrZpT17v9EULRJItJFcU2fb0rssEPWzEUQMv9P95mT1D8K7z4IY1n4pNm\n3zP+XVd/eEXKP/Z79KrsvNmhagzxxDZ4/iSG04aYx+xRL+cpVxvU9R4Abr+KGoqTiEfwUufjbzvU\nGV76MePpA9DXq5RLJSoNjWNj9AyFYsTScQLK5L3znj2b4kENRUmmk4Q9C1deP+7icyGuMjuvndPJ\n/v0tueEAb+YlPy0FgPP8O4/dluHlfy/hu/jT6nv880MJgOiTX9mMu87eG/art3rmxN2Yl6az64Ex\nU2WJi0AkRCSWJB72MH7L/DS27okll0iokrJf2pfIvxNOOlSKRcrVOlrXABS8agA1HCcZC2FvbvPb\ndvXK7xnf/CtPovI83Kkr6n6fc3JcamjoVEvls7S06ucQsVia2FheHc/bkfVf2UpMPhv96mma+1j7\n6UeS3okvRXX3N7bLJp70C35cUWV07M6d1/Vq5iXPlgJz/8anaTWvHIAOR3++4bA9wKEs8uzXZQJT\nH3bTWEF8OybHjQqFcpVGrUWPURpFoiQT0/X+af0x+/m4qk358D2I4P4y/a5GKatRa2R4/nwJ36yG\n3ZhjvUZBr1GvZ9h6evX1AIZ+wEHOz9YlBc2VTJ3c9i5VY8iCP8PGmgT2lzJ1su/ektMHEy8f6xrH\nukbbdPIyddPP7FLa/8Be+Xji5X5Xo9TVKOVzpJ48YznuuTKdh0aXZjlLs1wmtfWC1cicBqR4YHrU\nSucN+mahQju6hE9acffaaT1QKUbZ+GGT8exoNLNs7+TQjPE7erRqRVq1IgV1kY2tZQJX1obn99Qz\nLz+vPhBfyPXy73hH+zmDjlajo9Uw7L+yco22gfgCrlP3nwXWAzrlfT7sluiNXWvVz12a5Tz5+Dpb\nqwncDrA5VcJRO/WqiV5r0k8kcJ7/YFrNxuj/22h6j6R3rCAxW2gV6ztFgn7J+19YK3tEPfqMqHvG\nm6ZG/qB+6f2mVqPQttLLNI4o11MEbtAJdxorVKrXiy3ElzM80Tj8uENe60+8fppGxbxKZmOLxeCD\nD2nvzIP7S4yPeg5Mg071gA97FQw9S6mZYD0ymXnHe2UGpkGnlmV7t0RPy3JYCvE8Pd3fN0sj+5F9\n9w+sR28TxPUof9ompw9Y8C/y9JkUFFfRy/vk9AE2Qiy/WCPhU7AxpN/TaBRLEFGxO+Hpq+jZPac9\nuTYibP5li4hz/BNN6ofv2Sv3AIXI8hOW4wGcdjjpt6hk9zmsHVPYfcvA8dPUcwRjz95wwElf42h3\nj7zWo/gxR/BvTwgtzLlefFPze/anDTt1So3zXvyTTpZKM4kvbCWuzRm9wTMnvpSJNDVNjlt59nZz\naEaVw1yE4JMIDmDYKfDhXQ4dWPAnWV1NE/Yo2DBo14pkD/No2hEf3tt5+WIJz4UW+/mo7IATo0vt\ncJu98jGN7D7l8MWRPfEl3GX+tZg08ntUjSEOb5InG0sE3Q5sQ5NeW6NWbOIJuXA6N3kV3Rzd8/2P\n9NwX16r7R9ca9UPe7ZYwAHc4w9pyAr/TwXDQo1XJsn9Qo1Pe48NwgRcbERQUAkEVqnWMZhO9nzgv\ns8eCd2Aq+De0JqXhEDtJVL+E9l/akAZHhQahtRAXm8t6OUuhP5h5n8WkUSkw3p9bz1foRi/OwD03\nN1bQbxYriLvWIf/+PXl9APhJP1khGfGhMKTfrVE8zFLQNA7fvcf+4wtSMhIDPPA193aHgi8Uwo81\nBD68fKYsdoeCP77CctwqKtpVje61f5pBefuAWu/qKyf1qO6+Y7fSw65EWd+8zgjRY2fQ1a2UUcJR\noqoLh8OO3eHA7Q2TWn9246DZ1PLsFa3Ei2/8wNZiCLfiwO5w4PSEWNx6zpOoAzCofirQuqzesNlZ\ncIVYXk3jBYaUabXmTx8VD8WAZrVAB1BCGTJxq3islWr0L79RfEsOB+5QhuW0VSj0yjVaBkCP0mHW\nCuy9izx/vkbMf1qWuAjEV3i6tYQXONGz5KqXFe52FhQf8ZUVYjYb0KbSaH/xX03cxHXzb5d2yWos\nuMJRIl4Fh92O3aHgUaMsbT2RTrpv5gZ1/0Aj/8kK7F2RDV48XSLoUXA47CwoHsLpLZ5vRADoVj5R\n1qxK3RUIEwCG1Gi0zsO/0+D97N/NJvrZgzOg3aoA4EyGZHDmK+kUs5QvzOAY9qsc7euX3jc8rlEu\nDwCFdGZUxrfz1LXLGnbnLsYKer5xg1hB3KXjcpZDfQD4WH75gpV4ANdpmeCPs/p0i7TPDujksxVp\nq4086OAeBvS0BjpDwI/Pc52+dAeKy+oMGHQGXC+rW4bU2NvO0Z5enjP3+2m5HbbLx4Cf5adPkNnb\n1+FAGa1Z6NezHOQqaF2DwRWdN5dptyoYgJ008ZmJ4CKWWkTBmsLVvDS6H1lQcI06lozP+XLiXhie\nNKnmraohFEuQCCcA6DdK1Dvf8puJ63A6T/P1kMEQhn2dZsPKx2oyMbNB7ggkSUWtN1rV5pUNA9tY\nnh8Mb1J7iC/t+vlXQVGtNOyWsnwq1Oj0zBu1BcSXcv26f9jRqYxGb2OJCLP6Y9yxNEtOO2BQaegM\nAJtbJRoc5flWG6s5Z6I3ywCoyyuknfbJ4H+g0yxYPysQ8E2NJIsvpU0+Nx6wDWgWDq/c86ZdL9Fk\niENJEl0KE/VZz0C50uDazfexWGF4gpQP34RBq6kB4AwmiE1vmgAOP6l02Lq6UaV1PH3JY/TgxpD3\n37xmf+pVhcT6E+LXmiJpYvSsgsG2cL3eDbttkfWNPgfb1vT/nU8unm8Er7yvVdzlqNICwJ1cIi5T\nua7JTjC5RrSyQ9XoUc3uUM0CuFDjEeKRJOGQ6wYVrEGva42sKxEv7nnJ4PIQwEaNIf0TkyufjhOD\n3qiSsc3YP2HWszq+4Zu4uV5th3++3rnRPYNhlj9fZ6dev7hsolcvUxkOsREnElRQ7GHSzhL5fpty\nVSPulQ2U7rN+/3Tk3YbdBvR6Z43AgHder6qCx7sAVZMTzcDaVm2+4Viet9vkafga7j7/uohlFqk0\nD9ENjeK+RnHf2iQ1FIkTi8WI+GXS/bdx/brf6HUwABsRvBfX05xx4VFtUIFBr49Vq7vwhTzQ1OkX\nG7SXQ6i2NlppCCiE1SRus0j+qGcF/9EQ9o5OdTjARoTQxV13xRfhSqUJ14oUGntkq2GeRBWGnRK5\nfA8bEZYykM3Wpm8caNQKVm+ePx3Chw9HMsjhbp1euUxjMTJ7Hf+Um8cK4q716NWsNFgIeGZ24AEo\nbi8KVQw0jAuTaOfVH9+77+R5NWhWy7SumDI/MA300if2y1bfnS+pcr2BdDue6DqbGSso61YOyFWv\n7h6qVapna36Oi7mp6UViPpsryubPP7KRSeA/K4h7aOU8O+//xdvd2sR6qq9qOOCk1+Bw75AOVuMi\nKI3BB65DrdgEwBUPWUtn7H7UmJWunaMKmqy8uJ9Mk+NGlsO8NVXTFY9MnXrx+QacGG3KBwdUhkPA\nRywkazDvj5vlX4d/kRe/PmM1GcI9elaGRpd68YCPb/7gQ74tI3XfyNeo+31qFC8woIimDzBbDQrD\nAQ4lScBvJ6Ba0/n7xQZtE1pNa/q/EgrilyUbX4VjIUx6xRqRre7naZkGlSNrmVVwdXFugG40q+T7\n1jTucNAqo12BMEFsDGlQrl+9nGpgGujlAw5HsYI/HZq7Vl+I++jBjdxP9Nafbmy2/ZG8lmf3k5sf\nniUmenfmjfQt+DOspG6y27EddWmDNf0PPjUMStsfqStXT/BRU2mUaoGqoXP4YRfnhZ2cxSUWvMSW\n1oktrTM46dJuaZSO9qnoQ9rlI2qpyDU3tFJweRYAE6PW4XgAyqyE73VpjUblnAvT8wLmzRqJb67M\nXKMpG+rdvauOwpvlOhtyje+sG42ebuBjJxhN4T3ap0OZSn2J0LxjtcRXNa833q5EWV4ababndBHG\nRp0hrU6PlH9W2hl0O1bUt6AqU6P25e1/Ut6eviuUWb3mTDHxub5U/rW7QqTWQqTWYNDroOk1CvtH\nNA2D5kEZPeFDlfnX38Y16v6E63S0rkanOyDinFmp09VGM21czrPZfjavStRnp9Me0NA0fFgjwO6k\naj1ngRApW5HCsIjWimKvW90J/nBw7uihuHvO6DJrlQafGnkOP7Q51kwWvBkyCR/2+qzjps5Py3AG\nE4RHZbTNHSEe36dZNtHzNVpJ39SxeJfFCssJ6cj9Nly4IjaowkmrS5/AzPxnHJ/O4lFRLkS1Vx2F\n9716cMH9hNHGZolEkLxex2hodIwEzitGbZzhFZ5tpPHeuOJ2kVhbp/Vmh6phYFzRfeyLb7GxGsER\nXaD35hDdqHJwEMK/FZMK4iqmielwnFXG9gUPgbAHv8dO7/ddWrS5yZJXXyCGQg6DPMVKkkDiYkO/\nR6VwhAE4lEWCs9b2TPGQfvqClbCM2j9skzvr5t79H7kZVzWLNbrx+bvtim9n1jn3NqefYMhOvWHS\nyBZpRVcIXCjzzVaRwqiCD0Sthvv81Zxyzv39dIv8a5oMHI6zzn27y0vI5SWwMOAf7/IMMTgxQRZX\nfwPXrPttXj8xp518f0C5UCERTEy1q44reXJ9a2O1WGj8+Dov/rAC7R6d8if2GZ2iExiFAHYfasJG\noQjl3AEL7QE2VCKqdO5+XaMlNI1DWpoGKCxmkvjszNwfZfy0jH5zj99e701dYxpH1JppAuHLwx85\n5/4+OD/dot/MUmrGyAQvtM1NnULeOhZRCUUJXGvJxffvYQf3o5H7UsmajmezuVAutLnGR/rM5gG/\nv8vTr+epanG8V2TuWWyuKOtPe1awfsW1Z5u8+BfZ2Ozyn+0KvdoOezmXnJF8hePaDu8qCyymkgRV\nN4rNxnBooJXLtAAboakeuss41DTryQofij2qe28Ynsw6Cs8EFKJrqaleXRgfie9RfP8HnxpdKkcV\n4mEJ+B6yYafMUfnqHlxrt90kHlVy7rd2vePRXCSWM1Qa++hGng/vBjOPwutgjc4szTjm9PwoPHFf\n3Tz/QuPoDw6O4ywlI6g+Jw6bjYHZpVaxRv3sivtG9Yu4O9eu++0q6bUElQ8F+o093n4wZh6FB+CJ\nrRG/UG4HggmU7CGG0aMHOJQ4gbN9kRz4g3EoFujrOn1gwRfCK4HDV+fwpVhKl3if7+EMZUjObbeb\n1ApZrrP3ba1UIx2e7AySIy7vJ3c8w3KpyaFukHv3lsGso/Dao2PyMjJweurBVV+zp0Zb1JXIpY09\nRzDDZkbnbbZFYe8TPu/tpsg7xoL16679ckfX2Tzu8TbbopH9yJH/1+keKDHSpVFq0tMH7GnlGe8r\nhJYXCd+oonUQXn7G+uADe+VjaofvqR1evMZF6skzlmeccX/xurMZHPoBBzn/zM6aec+qBAxf17wp\n3NbZ9BvYR8dn2Yjz9G9PCF0sFU2N/X+/p9C3dttNqhEZ0HsgbN4UT5+fsL2TQ9OL7LwpTl3jUhfZ\n2Jo+417cD3eef3126vk+3WGW7dqsjZZcxNcSMzt4xZd2s7pfCS/z/MmAD7sljutZ3tWn09MbX2dr\nNTIVtI2P/AM4Y0HGj8heCKjEbMXRHhvgi6nSif9N2AmmVkl0KngvCd7Oj7+D4MqPM8+lPy594Pe9\n+ugEjcQ1l3WKb8tL+tkzTj7ukNd08rv/Ib87eYVNUclsbMkZ92MeXHA/7SZTJe2o6TWWGm/I6VX2\nD1T8mwmct5hy446usNposV257sH3dtTUCkuNt+R0g/zOLl5Zfz+Hh9TLX/HVKlRrDZotjWPD2s1Y\nDYWIxdLEbjMt1uEh8eQXQokq5VKJSsP6XKdHJRSKEUvHr70Rl80VZWWtgfaxQiO7TyHwnEX1O8hO\nj81J4+z4LHUlOR0YADhUkktBCns33W1X3AdKMMOLX+LUy3nK1QZ1vcdpvRGJJYmHPdJZ81DdKv8+\nY/1vvxCqFalXdbRmix5gd/sJBSPEknHCHinLv42b1v12vPF1fgnFqZbKlKt1tK5xvbaC3Y8atZPP\nWwFhJOif6KC3LfhRI3YqVRPwEVZl3fW3YnOGWX8evvSa0+PvbMRJxWenlTuaIpVrUui3KVc04ivS\nXfMQ2BZUVl78TKJRoVCu0qhZZbbbHyEUiZJMnC/HExbbq1ev/nz9+vXEi69evfpGX0d8TZLuj5Ok\n++Mk6f44Sbo/TpLuj5Ok++Mk6f44zUt3mcMghBBCCCGEEEI8cBLcCyGEEEIIIYQQD5wE90IIIYQQ\nQgghxAMnwb0QQgghhBBCCPHASXAvhBBCCCGEEEI8cDN3yxdCCCGEEEIIIcT9J7vlCyGEEEIIIYQQ\n34mFfr//rb+DEEIIIYQQQgghbuE0pl9wOp3f+KsIIYQQQgghhBDiNk5j+oVZb57O2Rfft4t7LUi6\nPw6S7o+TpPvjJOn+OEm6P06z0v1///d/v9G3EV/L69ev+Z//+Z+zf0t+fxzm7Zkna+6FEEIIIYQQ\nQogHToJ7IYQQQgghhBDigZPgXgghhBBCCCGEeOAkuBdCCCGEEEIIIR44Ce6FEEIIIYQQQogHToJ7\nIYQQQgghhBDigZt5FN79YlDe/p3dqjn1jt3tJxSMEEvGCXsmf5WhfsTf3xxO3WNTPKihKMl0cuKe\n8etXf3hFyg/DfpWPv+1QZ4HFpz+zHJ7/M07vGf++rsgGP2zFUM7uGKDl3vE22wL8rLx8RjrwAJLg\nq9HJ/v0tueHg0qvstgwv/3sJ3+jfQ0OnWipTrtbRusYojUPEYmliqjJx73maDqc+1+2PEIpESSYi\nuB3zf75R3+OfH0oARJ/8ymbcNfbePn98KGDgY/WHl6T8k/1nw36dnT8/UjVmP1NijpMOlWLxLI1B\nwasGUMNxkrEQ7oXJtI1v/pUn0QtpPzO/jr1/zedIy/0/3mZPrvzKs36GuMyA40aZQrlKo9aih1XG\nBwIhEokEIb9yoTfa5LhRmbj+sjx8mm4Xyw9Lh6M/33DYHuAMrfPDswTOGd/wuPyB33fr2JU0z39J\nc7w3u246NV0HiKucppPiX+HFD2k8E+9eVr8CZo96OU+52qCu9wAXgUiISCxJPOzh9JHoV7f5bbt6\n5XexyhHmtkFOSTrf3Hh5HVn/la2Ea+L98zTysfbTjyS94++aVHd/Y7ts4km/4McVdaxsOH/PRoiN\nX54RdZ/feV5/Kyy/+JVFdcYY10Dj4Pf35PsDouu/suGtzmxPjpPyftLlbWrvzPbRufN87s285Kel\nwIxrzstsh7LIs1+XCVwyXNnXq5RLJSoNjWNjsm6J+K9fv0/WHzetsx6fm7SXktwsbpt0w+dBK5Ov\nVGiMPQ/hYIx4KkrQbf2My+KFU7PamvfBg44sBsc6tWOdWjFPeGmTjYzKJTEZAEOjS7OcpVkuk9p6\nwWrEdcUdAAaFvU/4vJtc6/I5jqt7bGdbgEJic1MC+882oFPe58Nuid7Yq1Yad2mW8+Tj62ytJi4N\n1k8d6zUKeo1iXiWzscVicFb69KiVzhuFzUKFdnQJ36gQUcIplkJlPjXa5HMVIhNBwoBmYZ+qMcQZ\nypCUwP5ahr0qO292qBrjBaxBR6vR0WoY9l/ZTHxGxrzj50jcxnjH59irxzrNY51Ww+T5LysERn//\n4YnG4ccd8lp/4vrr5eFZvESSQQ536/QbJeqdxIVgAqBDrdgEwJMME3DA8c1/UXFNhn7AQc7P1lLg\nWg1ko5lleyeHZoy/2qNVK9KqFSmoi2xsLSPV7v1gc6qEo3bqVRO91qSfGK8rTVrNxuj/22h6j6R3\nrIw3W2gVaxAgEvRPPB/D4xrlsvXekAalaovw2DOkBKOknRXyfYNypUFSjUy1G41mlXx/gI0IkZAL\n+og7Nat9dM5s5jm8pDMNwNRqFNpWOpvGEeV6isCsIMvsUtr/wF55srQ+rVua5Sy++BZPn0Rmfpf5\nblZnidu7Ttx2F89D9VinWswRXX3Gk5QP2xf5bb6OB1XNTfSOD0xOjDalgz0Oa8fUc2/ZXviRZynf\n1H1nParDASd9jaPdPfJaj+LHHMG/PSF0jb/CwKiyt+3B9XwJ3y0yq6kfsbNdwUAhsf6C1ejnBCPf\nKz+Z//4vMqN/XTXSatQPebdbwgDc4Qxrywn8TgfDQY9WJcv+QY1OeY8PwwVebESmRlXGe9wGpkm/\nXeJg75D6scbhu/c4fvphqoE/7NQpNc4rnZNOlkozie8sUHcRW1qk1Dik08iSq4VZjyije0vk8j3A\nR3opdsOK5LEyaeT3qBpDHN4kTzaWCLod2IYmvbZGrdjEE/q8vHTT50hd+huvlk7vPp9tMn+EQVxl\n2CmxP2okRTIvWEn5UWxDBsYxWr1EdRAeayR1yL9/T14fAH7ST1ZIRnwoDOl3axQPsxQ0Kw/bf3xB\nyne9sRNXOE7M1qAybFOuasS96kTQcN548BEPB4DzKFJGbr+MRvYj++4fWL+ivhx2Cnx4l0MHFvxJ\nVlfThD0KNgzatSLZwzyadsSH93ZevljCE93kVXRzdPcVswEknb8QhUBQhWodo9lE7yeInFaKY8E7\nMBX8G1qT0nCInSTqhdHfdr1Ec2ykrZUtoyUD5+08u0ok5SV/oNMrl2ksRiZG9sc78F3xKEEnE8G9\njNDfjX4jS7EemTF7sUMxW8SYedcpk0alMHFNPV+hG52e6VP99J69Sg9QiCw/YTkewGm3MRh0aRwd\nclA4JhDyTbXHZs/wOnezOuvxukl7aaif///N4rbPfB4cNgaGPoonF/D5XNhhYrz+vo7Qz/NwZ4zY\nHSy4VBa3nvMkZlX8zf0ijctmf9jsLLhCLK+m8QJDyrRaV08XOXWiZznIt7h80vg0Uz/iw4dDdCCU\n2WI14XnAf/h7YqCR/2QFZK7IBi+eLhH0KDgcdhYUD+H0Fs83IgB0K58oa1dM9Xc4cKtptp5vEFVs\ngE6hUGOy73hAs1qgAyihDJm4lYq1Um2iY9/hT7GcdgEGlU95WibW/x9l0QFfeoXE3OloYlKXdskq\nYl3hKBGvgsNux+5Q8KhRlraenDcIb+OOnyNxO0ZXpwPYiBCNqbgcdux2BwsuH5HUOluL542A43KW\nQ90KspdfvmAlHrCudzhw++OsPt0i7bMDOvls5dqDbraFING09TB1jipoE1XDeePBGUoQnhrVF1+G\nQXn7gFrvsmt6lA6tsnXBu8jz52vE/C4cDjt2h4tAfIWnW0t4serwXPXSDxNfkSsQJgAMqdFonTfN\nT4P3s383m+hnGXlAu1UBwJkMTQ62DDRqhQ4AkUyGmM3GkDKV+mSa+8IJgtgY0qBcb0+8d96BrxCP\nha6cDSpuy6CULdK+UKX2q0ej8n2+89kZCunMKG+389Qv1M+mVmS/YqV9fOMHthZDuBUHdoedBcVH\nbPU5P//1p2vO4L3w7W9QZ4nPcI247bOfB7v9LJ78+efn38Ws6u8gwnARS6duFqwvKLhGEy6Mwfy1\nFLNouY/s36BxMOhV2fuQRTPAE9tg/ZpTDMXlhh2dSt/KuLHE7OlU7liaJacdMKg09Gt1ythcUVKL\nVl9tv6zRHovuhydNqnmrhRGKJUiEE9Z1jRL1zvin2AmmlgljY2DkOSq3MUbTzGxEWEyp8gxcm4Ki\nWnm1W8ryqVCj0zNv3ME2z5d6jsTNOBasv/yQGtmDHFWtizFzVqZBq6kB4AwmiM1aVOfwk0qHrasb\nVVrXnjtvJxg9r0vGA4Jhv0F1NNU3Muc5EV/GkBp727mJsnji/b5Os2GljZpMzJxZ5wgkSUWtN1rV\npsyyvidsbpVocJQurfaoM91Eb5YBUJdXSDvtk8H/QKdZsNI7EPBNBN/j0+mj8SSRhFU+NIs1uhM/\nN0J81Dmv52u0xgr1Vt3qwF/wpQnPWo8v7sxJJ0u+MtaeNjXyB/Ur7zudneFQkkSXwkR9Vv1crjQm\nBmTarQoG4FAWic8J4BeU23XfXL/OEnfikrjtps+DnfSc58GFx/N9dOc9/O4JwOb2otrsdIYDtG4P\nrlrLfGLQG024sF1zUUVsbQNXZY+cblDa3sbjekHyintMs8Hhdm20VthPelGmYt8Vo9fBwOo19Xrm\nVcAuPKoNKjDo9TG53gPv8QQAnQE1OsdrqKN5Wb16mcpwiI04kaCCYg+TdpbI96en8dqcURZXi9T3\nWzT2P/HBr2MAodXFzxtpfnRcxDKLVJqH6IZGcV+juG9tsBKKxInFYhOb4Zwqb/+T8vbVn37b50ia\nfHfLEUzyJFZjt9KjW8uyXcsC4PbHiSQiJCIhXA6AHr2aVXYvBDxzy1PF7UWhioGGcf3JWdi8YRKh\nLJ8aJq1ak37cmgrca1apM8ShLBKZsY6/V9vhn693Jj+LCJt/2ZL8fkt22yLrG30OtisYepadTy6e\nbwSnL+z3zjY8CnjnjcApeLwLUDU50QxrBsYtvpOk811z4Qt5oKnTLzZoL4dQbW200hBQCKtJ3GaR\n/FHPCv6jIewdnerQCuBDgfGy/+J0+gWIpFCKOYx2nrqWxHMWrDsIxVIo5RyGUaalLxFQ7TDQaJSs\nToRgMnJhSq9l/81r9i+8Jkuybi6ZTlPL56ntHVALWflHL2cp9Ac4IxkSHJGtzehKH5ud4U+H8OHD\nMdovZXKZhUGvaxX+CwEP7lmV9sDEHALYcDgmLxgMs/z5Ojt1y+l08evXWeJOzIvbbvE8KBHv7Ofh\nErPalPd5mdbjaqMOB5z0GhzuHZ5NpwnOCAxmsS0EWdp8cjZlO7efR7+i0XjSrFLVT3uYdPJH158i\nKu6b8820XPGQtSmT3Y8as56f6Wm84I9nSDmt6cG6DnYlzWJ83gouMY/Dv8iLX5+xmgzhHmXXodGl\nXjzg45s/+JBvy2j6g+civvETP24uE/OfL4A91ssc7b7n33/u0vgqhaeLSCIKjM/IOc/7/nTk0h14\nxV2y44mus5mxgqZu5YBcVbYw/N741CheYEARTR9gthoUhgMcSpKA305AtZZF9YsN2ia0mtYyKiUU\nxD/WoTK+H04obG2u7PCrxJyzR/EcamS0H8f5e+cj/3FiYdkX6UtyR9IsRx0MqXFU0Bj0qxzt64Cf\nxaUYzjkjb6dpBD7CQas95QqE5y6zuEy/vsc//vEP/vn/8lz/rlP3pc76zl0Rt93l8/A9+S5G7ofH\nHbTR8WmqZ7pAntXTCgrxzZUb9bbbXFHWN9po7/IYepaPu1d3DNiVKMlon3yhRbeyw57bde3df8V8\niut0ZK5Gpzsg4pz1F+3R1azOFbvLee21c92utUmKnQjeUZk9vhNnNHq6Dm80jfdonw5lKvUlQmPH\n4uFQSa+EKYyOXIqupmWDlVuyu0Kk1kKk1mDQ66DpNQr7RzQNg+ZBGT3hY3zc5Kqj8E59yedI3JQD\nX3SRjegiGwOTbkejWcqzX24xOC5TqCUJpVy4IjaowkmrS5/AzBFY4/h0RoaKcsNa7nw3bWtGTuRE\no9AeYCNEPDy7c+4+9+A/bHbUpQ3W9D/41DAobX+krlyY++p0EcZGnSGtTo+Uf1ZQZtDtjEbxVOXW\n6STpfPdsXpWoz06nPaChafioAeBOqtZmZoEQKVuRwrCI1opir1sj6/5wcPIkmtF+OHbS57NrLt08\n7/yEjF65TH3Rhzka+fcuxlDnlBuyod5dUYhlVqlW92jmD3nf7qExRM2sEPfamX1Q5fnsDGfwfO8T\na5nFPs2yaS2zSPoI2BVcngXAxKh1OB6AcoOG91Ub6lmuU2fJgM5tXC9u+3rPw0PbUO87CO57VPKF\nUY9OnMC1NkLwkH76gpXwzRPKEcywmdF5m21hGJfv52lTVJafPiHlN/CcvGW30qOR3aegvmRRhn8+\ni83rJ+a0k+8PKBcqJILTR6ocV/Lk+tYmG7GQf2r3y1mGvSqFI6unzxlXR+s3J3fizL37P3Iz7m0W\na3Tjk7tzKi4vjKopr+vhFAz3imkycDjOOsTsLi8hl5fAwoB/vMszxODklmvdbvscibs2wDTtOE57\nTuwOPP4wHr8XW/8PPjVNDNNKg9MdtvvNLKVmjEzwQoqYOoW8tW5TCUUJuLkZu0oooZDP9ugc5dnt\nNKyTFOJxQjf9LHEHXCTW1mm92aFqGFysdm1OP8GQnXrDpJEt0opOHz9ltooURkdrBaJBWR53r3jx\nhxVo9+iUP7HPaCfrwCgosvtQEzYKRSjnDlhoD7ChElHPO3HG98MZkOc//5ef+imno3jR9Hmw5QpG\nCdOgToPC/ieGDRPwEY/Kvjhfg80dJbNcpnnYQtPAriRZSgawz9krf3x2Rr+5x2+v96auMY0jas00\ngfACvkAMhRwGeYqVJIHPOjL3ouvWWeJuTMdtd/88GPR6Dlyuh5/7H+5vMDA56WkcfXzH7mhDjuBq\ncuaxdqs/vOLVq1e8evUrayEH0KVyVJnYYOX6rJGE0x36L+MMxIn67YCL+NomS3470Cb3cfeK3X/F\nlewq6bUECtBv7PH2Q45m18A0B5wYXer5j7zbsUYAPLE14ldsjDMwTY61PB/f7ZztkZBKWeffDjtl\njspXR4+zducUn2tA4+gP/vx4umGNyWAw4MRoU61YnSZ2xX3j0dkzd/wcidsZHlf5+Pvbsw0TTXNg\n5clGmUrTynsepxWSueMZlv3WdNrcu7cclFv0Tq/Xy+x/+Ei+PTomLzNrn5MBpnmCaZoX/ju/IhA+\n3VivQaMBsnP2t2VzRVl/mmH2gKmLxLL13sDI8+HdJyp6b/QM9WiVD/jwMWdtkubPsCTH0N47gaBV\nBg+NHj0DHEqcgP98fbw/GAegr1s7lDt8obNZdQDt8hGV4dWbI1/cPM/mDBEdbazXbjToIKdhfF12\n/MnT5YsQzqTnzpgAk1ohS2fe22NOTzByqElWR2316t4bPh41ODZO2xBdWu3bL/O5SZ0lbu7quO2O\nn4eeTmn/I//611vyNzhF7b56UCP3szazsSiElzbZuHL6y9gIgH7AQc5/yynyVrDeO35L7oojO844\n/CxtPuH4zQ5Vo8r+JxX/s+lRQnF9SniZ508GfNgtcVzP8q4+vfmJN77O1ur0Gfcwf9M1m6KS2dga\nnXF/Pt3PRpynU+drAqbG/r/fU+hba/eSakSCgLtiatTzfbrD8w1rJrmIryUI2K+elTHP5z5H4vN1\nG2WaRovmaMPEi1xqhvTZ7rZe0s+ecfJxh7ymk9/9D/ndyetP8/CsM+4HwyPe/uNo6vXxTbHGN9aD\nq3fOnlc3XW9qp7gOh3+Rjc0u/9muTI3r2bwpnj4/YXsnh6YX2XlTnLrfpS6ysbXE3H0zr0HS+csY\nn0EF4IwFGc+6CwGVmK14FsD7Yur5DLmxDbXc8S1+fDJd/5rNA35/l8cYG8WzjG2sN3rlqtMwZk8X\nfnjTdu8Nh9XB3q04Wbpk0Oz8uDMIrvzI8/R0bjsufeD3vfpov5QESa9CdO0Zpu0De+VjaofvqR1O\n3YbDtzD1zMzbUO90A033jeoscXuz4zbbF3seFNrtHoPAAuO7PsyLF+7rZpoPKri/yO72EwpGiCXj\nhD3X+1Vsrigraw20jxVrinzgOYvzuwrnc/hJry3R/NM6v/66Pzuz2kDbrtBv7LGX88j6+89ixxtf\n55dQnGqpTLlaR+sa2BQPaihELJYmpl6/snX7I4QiUZKJCO5RST8+3U9dmT0zBIdKcilIYe/i7pzi\nszlCrP/tF0K1IvWqjtZs0eN2eX++u32OxM15Uy/5i79KtVKjobXQugag4FVDhGIxUjEVZaymtS2o\nrLz4mUSjQqFcpVGznotZefh2rI31PjVKwPyds8XX5Y6usNposV2ZnvqmBDO8+CVOvZynXG1Q13uA\ni0AkRCSWJB72SKfrfWX3o0bt5POj4yaDk8ufbAt+1IidStWaNh9Wzxvy4xtqnc62u8gRTLIUKvGp\nYVIr1UiHzwdWrI318hy2B3NPwxBfljO8yvPw5decHndmI05qzsbE7miKVK5Jod+mXNGIr6jYHR4S\nT34hFCuTr1RoNDSODasNEQgEiEWShEOuG5cNN62zxO3NitvU9t0/D+FgjHgqStBtlQG3HTC6D2yv\nXr368/Xr1xMvvnr16ht9HfE1Sbo/TpLuj5Ok++Mk6f44Sbo/TrPS/X//93+/0bcRX8vr16/5n//5\nn7N/S35/HOaV8zJoLIQQQgghhBBCPHAS3AshhBBCCCGEEA+cBPdCCCGEEEIIIcQDJ8G9EEIIIYQQ\nQgjxwElwL4QQQgghhBBCPHAzd8sXQgghhBBCCCHE/Se75QshhBBCCCGEEN+JhX6//62/gxBCCCGE\nEEIIIW7hNKZfcDqd3/irCCGEEEIIIYQQ4jZOY/qFWW+eztkX37eLey1Iuj8Oku6Pk6T74yTp/jhJ\nuj9Oku6Pk6T74zRvzzxZcy+EEEIIIYQQQjxwEtwLIYQQQgghhBAPnAT3QgghhBBCCCHEAyfBvRBC\nCCGEEEII8cBJcC+EEEIIIYQQQjxwEtwLIYQQQgghhBAP3Myj8O4vnezf35IbDi69ym7L8PK/g9RH\n13ozL/lpKTBxzbBf5eNvO9QZsvrDK1L+ydcmuQhEQsSSSyRUZcZnLLD49GeWw5N/zqF+xN/fHAKc\n/Qxx1wzK27+zWzXnXuGKbPDDVoyzlDN71Mt5ytUGdb3HafpGYkniYQ+Oa36+2x8hFE2ymFRRbHf3\nG4mr9avb/LZdnXrdyvtL+C68PuwU+POPfTqAb/EFL5fVqZ7N8/zsZfWHl6T88/o+z5+JWWWLuAvz\n853d7ScUjBBLxgl7JstcLff/eJs9mfupM58Ps0u1VKRaOy0PFLxqiFgiTiwSGOXt8+8zVZ4wQMu9\n4222BfhZefmMdOCBVa33yVT5DG6/ihqKk4hH8DntV1x/WXk+cSPV3d/YLpvYCLHxyzOi7umrTp+p\nWc/OcXWH/2xXMFBIbPzAesz1+b//Y3dF+nupz2mnTZrOpx2O/nzDYXuAQ1nk2a/LBC48SvPbgFa5\nEw7GSC4lCShTb4u7cq38f7N22Xi6xjf/ypOolYCneVvxr/DihzSeiU+6rMwXp7Tcv3ib7WEnzfP/\nWrmQp3Syv70l1x/gTj7jx7XQRHl82i7rorLxywsi9vn579R4+p27Om9flZ7z2pSzfv56QJv5PJ39\nXvcg9pMWyLX0aNWKtGo1GstbbC4GLgQGBoW9T/i8m0Skbr/XjGaW7Z0cmjH+6mn6Fimoi2xsLXOd\ntvmxXqOg16jXM2w9XcI3vxUpvqkBzWqBzuhfnaMijaRKxDnv+jb5XIXIswSzLjGbeQ4v6UwSX9bg\nWKd2rFMr5gkvbbKRUS8J4C43uzww6GhlDrQyR/4km5trBC8p14+re2xnW4BCYnNTAvvPYepk370l\np0924B/rGse6Rtt08nLlvGPuc8rz4XGNctn6OUMalKotwksX6/bLvuoRO9sVDCCU2WJVAvvPd530\nT93yo7Uahbb1uaZxRLmeIjAVJMw3ONapHuvUay02fpC23hdxw/w/y2m7rFLN8Pz59dplhn7AQc7P\n1g3yv7AEggmU7CEGeZqtDIHg+V9w2NGp96207Bc1OiuhiaC7rVXpAM5glIAb6N/uO3xu3v4ePbBW\niJ/Mf/8XmdG/Lu8d0al/xk86740ZcGJ0qR1us1c+pn64Tzn0I0nv5PUDo8retgfXNQsTcfeu6l0d\ndgp8eJdDBxb8SVZX04Q9CjYM2rUi2cM8mnbEh/d2Xr5YwnOhlB///IFp0Kll2d4t0dOyHJZCPE9f\nHC8WX4ozusmr6ObZvy/rdR2eNKnmz2uNITVK1TaRS9Kr38hSrEemZuNAh2K2iDHzLvElTOTrgcmJ\n0aZ0sMdh7Zh67i3bCz/yLDWZlvNmcIwz20dzygOTbiPPwX4ew+3HM7cTaDzAU0isv2A1Ki3+z6GX\n98npA2yEWH6xRsKnYGNIv6fRKJYgct6w/9zyvF0v0RwbIWply2jJAKFrtIqGvSp7H7LoQHDxBZsS\nFNyJa6W/E56+ip7dc1r224iw+ZetOZ22Jo1KYaLcrucrdKMXR2vPTYzImSbHrTw773PoRpV8NU1k\nUer7u3aT/H9qbrtMv1m7rJH9yL77B9alDL8Rm9dPzGkn3x/Q0NtkguczGU+Dd4DBVPDfQatY73pC\nPpwwMV4/e4R+lpvn7Vkm25SXj/IPb9kJ8TVJfXQlOwuKj/jKCjGbDWhT19ozrzzRsxzkW1y+aEB8\nGz1Kh1ZjbMG7yPPna8T8LhwOO3aHi0B8hadbS3ix0jFX7V36aXaHgj++wnLc6slpVzW6X/6XELfQ\nq5epDIfYlTSZJaui1/M1WpdmVINStkj7wjX96hGHuuTwb8buYMGlsrj1nCejkdLmfpHG/Jn4c/So\nZI/mlAcKvugKz178xPMnMZxzltyY+hEfPhyiMxq5TXikQv0sBl3dKkWVcJSoepoeDtzeMKn1Z2Md\n+J9Zng80agWrYRnJZIjZbAwpU6lfXu4DDHt1dt/tUDWGeGIbPFm+/cwRMe4m6X8z57M0FNKZ0XPR\nzlPXrlmWOxy4QyGCNiuHD65YGipu4/PT/2K7TM83btAuMyhvH1C7uggQ4+x+1KiVL46LGufR0Xnw\nfqqhn787PG7TaA8AH2H19h1ln523v1PSFrkm24KCC6uVZ5jzHxot95H9KwJD8fUN+zrNhpVuajIx\nc3aFI5AkFbXeaFWb15gh5EBxWc/EoDOQTp17qUOt2ATAkwyzGInhxZq6VWteHhGedLLkK2N52dTI\nH3zOfCBxd1zE0im8wJAyrdbNovvrlAd2j3duYD8YjdxqBnhiG6zLyO0dcKCM/uD9epaDXAWtazCY\nsfzyc8tzo1kl3x9gI0I0niSSsFKvWaxdHgyYOrntbSrHQxb8GTbWYjOX7ojbuH7639TpLA2HkiS6\nFCbqG63brjS47gIrQ9NoDq0gIuS9yZiguJ67Sv/zdtnwhBu1y4bU2NvO0ZZVdzdgJxCMA2AadfRR\nPD/saFTbA2zEWVmJAJPBf0+r0gIcShi/d/pTr+su8vb36IFNy/92hicGvdGkEbttuhkXW9vAVdkj\npxuUtrfxuF6Q/NpfUszX751t0hHwzpt2peDxLkDV5EQzMOCKhpuJ0bM+07YgPWX30flaLB/xcACb\n10kilOVTw6RWqpEOz15Xn0ynqeXz1PYOqIWsqZ56OUuhP8AZyZDgiGxNunO+JZvbi2qz0xkO0Lo9\nGFtCMRhm+fN1duqes+Vb1yoPZjPNBofbNarGEPCTXpQA727YCSbXiFZ2qBo9qtkdqlkAF2o8QjyS\nJBxyWaPkn1We96iVrCU8rniUoHMBIimUYg6jnaeuJfGo06X5cNgh/6lEdTRzJ7GYlCV4d+oG6X8T\nY7M0/OkQPnw4kkEOd+v0ymUai5GZGymWt/9JeXv69eDiJotTy7XE57ur9L95u8xuW2R9o8/BdgVD\nz7LzycXzjeBn/TaPicOvkrAVKA2tmc1Jr4+e3qADuCIq0fCQ5kGdplFH7yzh8xq0NB0Ad1KduXxu\nVv6bmiJ/y7x9l+aVE9/adxyP2LF/Rm/QuQEnRpvy/icqwyHgI6pO99raFoIsbT4hqtgAndx+Hv3G\nU0XF5+jVdvjn69e8Hvvv768/UvsC62MGpoFe+sR+2eob9CVVZKXWfXO+FmvBF0X1ArgIRlQA+o0S\n9c7sO92RNMtRB0NqHBU0Bv0qR/s64GdxKYbTJscjPFYnzSpV/XQ4SSd/VLntPkDiApsryubPP7KR\nSeA/a5T10Mp5dt7/i7e7tc/e72LYqVNqWOV2KGxNqXf4VWLOy0d8htSoVs5TunRUlBG+O/Yl0v90\nlgb4CAetMMIVCBPExpAG5frsZZbztGpFah3p2P0SPjf9B6aBXj7gcNQu86dD11x3bccTXWczY60X\n71YOyFWPb/+LPDaOAKHR7Kduo02fHs2aFbyrkSBOt0o4aOd0WfOwr1GvWrNgIoHbT8m/67z9PfmO\nux8VFLcN2mAeW732E1szjI3EzzKvNyaUWSUx54gsmyvK+kYb7V0eQ8/ycfdx79Z4rzhdhLFRZ0ir\n0yPlnxWKG3Q7Vo/MgqpMbcxndR7sTN214M+wkpJpuffN+G7YaiJyVsm7wnFitgaVYZtyVSPunbX7\nrkIss0q1ukczf8j7dg+NIWpmhbjXztUHpogvbXjcQRutfVU9k/n5yg31rlUezGdXoiSjffKFFt3K\nDntul+y0fFcWvMSW1oktrTM46dJuaZSO9qnoQ9rlI2qpCIlbl+fnJ2fYSRMJjppAdpVIykv+QL9i\nxMdPMuWiVqiOjfDJzI07dY30v7ih8XznszScwQTh0X02d4R4fJ9m2bT2X0n6po7OmtzQa7Sx8sEH\n9io19t+5cc88bkt8thum/2XtsuXETQJHO+rSBmv6H3xqGJS2P1JXpPfuehz4g1EoljCadZoNG/Wm\ntewpNDo3MhjxQ7NJt9FGd7WpM8ROjMCceOrqDfVun7fv0lVH4X0r33Vw7/IsACYnzTbHgwjKWAL3\n2hodwEYE5zVr5ujqjzxJ+S5twDmCGTYzOm+zLQxD9tT+mi7fLd9PMGSn3jBpZIu0oisELszvMltF\nCqMjzgLR4LUabM7wCs820nhleubXZZoMHI6zvNjv6VOXjO+GXdv7F6/3pj+mc1RBS6szd8i2uaNk\nlss0D1toGtiVJEvJAHbZK/8e6FHJF0ZleJzADY+fszmvLg+GvR6GyzVVDtgUleWnT0j5DTwnb9mt\n9Ghk9ymoL1mU1v7nMU1Mh+Ns6q19wUMg7MHvsdP7fZcWbYaD66XfrPJ8/OSMAXn+83/5qa9wOuIT\nndpl20Vqa5PViEJkoc/brNWxkw0GzjZ3FJ/pmul/XeOzNPrNPX6bUQlY+6+kCVw61X60sXI8zl4l\nh2mUaXeX+YxBRzHLHaT/rHPur89FYm2d1psdqoaBNOGvb8GnEqZMnQa5/S49hjhDQfyjCtTlD+Gl\nSadZ5sC02muudAjfLavMu8vb36fvuiXiCybONs/KHlboGAMGA5Nj7YhPhw0APMk4wRlRXHzzr7x6\n9YpXr/6LZ2mr4q4fla8x1d7q/ZPK/r5xkVjO4AcGRp4P7z5R0XuY5oCB2aNVPuDDxxwdrB7fpRnH\nobgiG/z11StevXrF//c8jQL063mqmqy/+KpMney7f/Op0KJnDhj0GlRrVi3sTPhwA8OTOsXDq6dk\nXb5Dth1/MkPKaRWT4Uwa9fHVEffLwOSkp3H08R27o80Og6vJax1fNslFLLM4pzww6DSOeP/md97t\nVOhfmODlDMSJ+u2Ai/jaJkt+a7ph7uOu7LT8mY5rO/zxdpdSvU3PNBkMBphmj0a5TAuwEUJZgNuW\n5+3y0Wh53eVmnaZht8WJRVxcrOPLO9sU5ASNO3H99L8Ok1ohy5yVVxNqpdoVS2tGyzPLZQBsBHBK\nXXDnbpP+4+2yV69e8csPW6ymbhPYW2yuKOtPrbJFXJ/NqRIe7ZrfO7YqwkDkfJDM5lVHm93p6KOx\nmHDAe8sg9PPy9nA4wDTN6f++o2L8uy6eHP4Uq8sa24dNtMIOfxQmp+7Y3XGW06ErNuiwE1raZKn1\nlpxe5NO+/xrT8KxGX+/4LTmp9O8NmzfF0+cnbO/k0PQiO2+KU9e41EU2tqbPRL5ofIZGYe8TPu8m\nEenP+Sr0cpac3gf9P5T3x9/xk4xba2iPR8ffgY+1n36cMY2zR/H9H3xqmNYO2fE0M2fhOlTSawm6\nFSdL0mH3TcybdgkK4aVNNlLTw2fzNtQbPwvb4Vvk6fPBpeXBwrFOtx/DOS/pHX6WNp9w/GaHqlFl\n/5OK/9nsTRrFVbo0Sk16+oA9rTzjfYXQ8iLhUUa9cXk+tvmSO77Fj08iU3W/2Tzg93d5jCtHfMbr\neJ3DD1l8v0zPHhA3cbP0v8r4sqzgyo8zzzs/Ln3g9736aP+VBImx5L5soyxPMk5QqoM7drfp/zkc\n/kU2Nrv8Z7si8/SuTSEQVKFqnShkQyUcGM8kXtSoF9pWZG8nSfCS0ZJ5+c+becmP0eMb5+3xNmC/\nvsfv/5ge6b96KcDD8V2P3IMddfE5P75YIxkJnG145vSoJDJb/PTjE0LXKaAdftJrS/jBmoZXvsbw\nzNg94v5Qghle/PIrT1eThM/WaboIRJKsPv2Zn14sc70ZvnbU9BpLfjsDo8r+QWlqhE98Gf7Uc/7y\nYo1E2DNaguEiEEmz9fMzUj4748ffueOLxGauz3QRSyVQsM5ErTbnd8I5w6s830pf2eEjvg67208k\nucLTn3/maebzzhi3yoOf2VwZLw8UvGqclc2X/Pxy7cpGvM0VJbMatWbyNPbYy7XkWMxb8ZB6+Ssv\nN1dIRlTcozaWTfEQjKfZePETTxcn9zW4SXk+vvlSKjUd2AM4gkmWQtY7V47mOvykV5fOZg/sfZKN\nFT/PzdP/MqfLsmzEScVnz593R1OjmVltyhXtkl2Y4KxcePozL9euGhQSN3e36f+53NEVVqVD/0Zc\ngTCB0f8rwSiBCx0xvkD4bNmsM67e+rSR2+Ttx1Yn2169evXn69evJ1589erVN/o64muSdH+cJN0f\nJ0n3x0nS/XGSdH+cJN0fJ0n3x2leustYlBBCCCGEEEII8cBJcC+EEEIIIYQQQjxwEtwLIYQQQggh\nhBAPnAT3QgghhBBCCCHEAyfBvRBCCCGEEEII8cDN3C1fCCGEEEIIIYQQ95/sli+EEEIIIYQQQnwn\nFvr9/rf+DkIIIYQQQgghhLiF05h+wel0fuOvIoQQQgghhBBCiNs4jekXTl/43//937M3T+fsi+/T\n//zP/wBwca8FSffHQdL9cZJ0f5wk3R8nSffHSdL9cZJ0f5zm7Zkna+6FEEIIIYQQQogHToJ7IYQQ\nQgghhBDigZPgXgghhBBCCCGEeOAkuBdCCCGEEEIIIR44Ce6FEEIIIYQQQogHToJ7IYQQQgghhBDi\ngVu4+pL7Ty/8hzf7LWxE2PzLFhHn5Ptm+4h3fx6i42ftpx9Ieq3Xh4ZOtVSmXK2jdQ1sigc1FCIW\nSxNTlYnPGOpH/P3NIQCrP7wi5Z/8Gf3qNr9tV7HbMrz87yV8X+qXfeS03P/jbfYExb/Cix/SeCbe\nNShv/85u1cQV2eCHrRiTqWhy3KhQKFdp1Fr0ALc/QigSJZmI4HacXqeT/e0tuf4AT/oFP66oE71g\nQ/2I394cYgCLT//GcngyG+n5N7w50HEG1/nheYILj6O4hvP8NplnT53mt/E8P+xX+fjbDnWGcz83\nvvlX1gPa2XWR9V/ZSrhmfjb4WPvpxws/26S6+xvbZXPs2Rhw3ChPPFd2t59AIEQikSDkV6QX9ZqG\nhkY5X6XasMpkcBGIhIjF00RDLqwselU+18n+/S254QBv5iU/LQUm7pln9meBUd/jnx9KAESf/Mpm\n/Px5uc4zd9lni/nG/7bxzb/yJHqdv16Hoz/fcNge4FAWefbrMoGZme+qPNvjaPQMXUbq+5sZb0fN\ns/rDK5LOeflqVB4kl0io856H8zLaRoiNX54RdU9fddqWuCpvmvoR/3lzSPcWdc31ntnv33mdermL\n9fOk2Wk/qy0w7vJ0NunUS5Qq9bNywOlRCUXjJBIxfMrkZ8zK78fVHf6zXcFAIbHxA+uxyfbE9+t6\n7Z55ed6Kt6Ik00nCnvM29GV/61O3icdu+j3OTccNTo9KQI0QT0UJuk/vuX0b40v4LoJ7fzxDKv+e\nQr/GUUEjNBGM9ahkj9ABX3qZuBdgQKe8z4fdEr2xzxkaXZrlLs1ynnx8na3VxFjAJ+4TQz/gIOdn\naylwrcBpeKJx+HGHvNafeP1Yr1HQaxTzKpmNLRaDC4AfNaGQy/bo5Ru0M+pEA7HdqmOM/r/e6rAU\nHn/eOmjVDgD+SFAC+8+mk93L4X++hO+O8qLNqRKO2qlXTfRak35ivAPGpNVsjP6/jab3SHrHKmuz\nhVaxGvyRoB87A7TcO95mWxM/Y3Cs0zzWaTVMnv+yQkDKkSvMLpOhR6tWpFUrkg+vsLWRxvtV/5Y9\naqXzRmmzUKEdXcInvTX3kqnVKLSt/GkaR5TrKQJTAdZ18mzkK31jcTOn5UGNxvIWm4vT9f/wuEa5\nbD0DQxqUqi3Cl7QTerUDis0ImeCsK3pUckd0ANsd/hbiNq5O+5uY1ybsdzVKWY1Stkj66SYr4fnB\nuqkfsbNdwQBCmS1WH1Fg/7ntHiveytIsF0ls/sB69Nv87c6/R5nU1gtWI2Od95c8I9WuRrWYI3wH\nz+KX8F0E9zhU0ithCttV2vlDStEXpEatL6NeINcwsRFhMWUFYUb9kHe7JQzAHc6wtpzA73QwHPRo\nVbLsH9TolPf4MFzgxUZERlvuqUb2I/vu6xQKHfLv35PXB4Cf9JMVkhEfCkP63RrFwywFTePw3Xvs\nP1rPji8QQyGHQYV2Z4WA//yzToN3YCr4H3Y0qu0B4EP1P5aC/ss60bPsfHLxfCN27c6Sq0ZNAkEV\nqnWMZhO9nzjv7R8L3oGp4N/QmpSGQ+wkUf12hp0C+6MKLpJ5wUrKj2IbMjCO0eolqoOwBPbX0K/t\n8W63MlkmuxzYhgat0gF7BzXcPj+uO/hb3qT3fNipU2qc98SfdLJUmkl8o9k6NmeUp6+i57/HFaNI\n4ksyaVQKZx2vAPV8hW50cobXsFO6Rp71E/jv/yJzes8VI0Xi5i77Ow7H2tLnZfmAE6NL7XCbvfIx\n9cN9yqGLM6ugXS/RHBv1bWXLaMkAobmtXYNStkg0eHEm4Hn78TIyQn81Z3STV9HN0b8un3n1OWl/\nbYMOuVltQtuQk+MG+f0DSl0Xfu/8NtywV2XvQxYdCC6+YPOaA03fg+uVodP3neX54YCTvsbR7h55\nrU95O0c4+OSSPHq3Zn+PHsWPOYJ/G32Pmc+IFwUYnLQpHeyRbTlRVd9Uut+HmXrfzbPojC6zFnIA\nOvlshT7AQKeYs4L4yPqK1dAaaOQ/Wa+5Ihu8eLpE0KPgcNhZUDyE01s837B67buVT5S1y6fliW/J\noLx9QK13+VXH5SyHuhVwL798wUo8gMthx+5w4PbHWX26RdpnZ/zZcfhVojY7YFBpnvdOngfvlgEV\n2uexPj29QQdY8EVRb1vxiCndyg7ZyhUJfQOuQJgAMKRGo3UeDpwG72f/bjbRzxobA9qtCgDOZAif\nA4yuPhrViRCNqdZzZXew4PIRSa2ztRi4s+/83RpoFPZr02Wy3Y7d4SKY3uLFzz+zuRTg6/aTDGhW\nC3QAJZQhE7eqy1qpRv/yG8U3cD5iq5DOLOEFTtp56hfqcMmzD5WdBcVHfGWFmM0GtKlr7clLBhq1\nglUhRzIZYjYbQ8pU6pfXHYZ+QL5qTL441n4U39o10v4GjqtZcrPahHYHTm+U1afP+eGHTSJzYvth\nr87uux2qxhBPbIMny+pXrpu+rc8uQ212FlwhllfTeIEhZeraN8hpM75Hq3UCzHtGHNgdDhZcKotb\nP/GXn56R8t/PMPp+fqtbcRFbWsQL9BtZCnWD48oRufaABW+G9Gi6zLCjU+lblX0sEZk5EuiOpVly\njgK7ho6E9/fXkBp72znaczvXDVpNDQBnMEFs1gJMh59UOmxd3ajSOgbsfoIp69peXac7urStVekA\nrvgKy5GLwX+PZk0HwBX2T40CiM9T3tmmoN9NbrS5VaJBqzputdpYj4+J3iwDoC6vkHbaJ4P/gU6z\nYP38QMCHA3AsWCXIkBrZgxxVrYtx+UCPuOA6ZbLL4/nqjafhSZNq3grjQ7EEiXACgH6jRL1z2Z3i\nWzgdsXUoSaJLYaI+q3wuVxqMZ0nJsw+bbUHBNZokb5gXOm6aVfL9gRV0xJNEElYd3izWzurwear7\neVpjz8Fp+1HcH5el/fVdp03oYe6gvamT296mcjxkwZ9hY+36Mwq/F3dWho6l5/DybWu+rPHnajBk\n4hkJzXlGsKMo9zeE/j6m5Y84/EkyyRIfij2K2Q+0DB1QSGSSZ2skjV4HA6vHyeuZlzAuPKoNKjDo\n9TH5zv5Q3wG7bZH1jT4H2xWMs2nbwRlX9ujVrFJjIeCZWwgrbi8KVQw0jBMAa2o++QIn7SpaJ43H\n26PdsJoIajBGZNDisFa3gv+lAO6+TrNpjRzFgjL6c1cyG5t0D3aoGjqHH3Zx/rDJVbNiy9v/pLw9\n+drkVCkXvpAHmjr9YoP2cgjV1kYrDQGFsJrEbRbJH/Ws4D8awt7RqQ6thmMoYH2KI5jkSazGbqVH\nt5Zlu5YFwO2PE0lESERCdzKV/Ht2vTJ5tl5th3++3vnse2ZNo+/Vy1SGQ2zEiQQVFHuYtLNEvt+m\nXNWIe9XvqXf8YRsbsfWnQ/jw4UgGOdyt0yuXaSxGzjZVkzz7sA1PDHqjafd223gOPN8fwxWPEnQu\nQCSFUsxhtPPUtSQedTrHKuE00WGBQiNPthDm2VIA20mDfK4B+MhkVLLZ/Nzvc3VdI+7K/LS/ieu1\nCWf+/GGH/KcS1dEgQ2IxeWd7AT0kd1aGjqWn7VtuajH1PcaeEf+cZ8Q0R53GNhyOyWfxum2ML+k7\na5s4CKWWCGJj0NHRDXCGMiTDdxCa2+3ILOv7xI4nus5mxgqiu5UDctXjO/0JihokMZoCpuk9hsca\n1aZ5FtydTu22gn8wWnXqDHEocXzysNwZhzvK+tMMfmBgVMlmK/TuoJvXp0bxAgOKaPoAs9WgMBzg\nUJIE/HYCqrU8p19s0Dah1bSmaCqhIP6zAtpFfOMnftxcJuY/35L5WC9ztPuef/+5S0PmcD9AHWrF\nJgCueIjAAmD3o8as5nrnqIJ28g2/nphwOmILPsJBa39lVyBMEBtDGpTr41N4Jc/eB/tvXvP69eR/\nf+Ral9wx4MRoU97/RGU4BHxE1fP5ceP7Y4TC1jRph18l5pw9g+OU3eYluZTBC7SyR9SPB7SKOUr9\nId5khmRQhna+vflpb7N/vS6UITWqlfPCoXRUvGTW6PfsM8vQ4YCTXoPD/fxoen+c8NzTL2a4q3js\n9HvsHZ4tMwj6r/c9tMK/+Mc//sEfu7V7uXTnuyu1bO4oi5kSzawO+EgvTU6ZUVynI7Q1Ot0BEefs\nHVK72qh30OW0poOOpm10GNLtG3ChT7Zv3N16YHFddtSlDdb0P/jUMChtf6SuXCxpXbgiNqjCSatL\nn8DMXjjj+HT0UEU5zRWOAGrMTqlsotebNGx1WoArEibgtK6NBh20mm00vcWC3gDAGQvKbtp3zOFf\nZGNd5/e9Ot3KDh+blxfA19nkyOZVifrsdNoDGpqGjxoA7qRqHb8SCJGyFSkMi2itKPa6VYT7wxdP\nQXDgiy6yEV1kY2DS7Wg0S3n2yy0Gx2UKtSShlByWNc/1yuTZrjoK7/r3TBrfdT0aDY2WBNgJRlN4\nj/bpUKZSXyIUl00zv73zEVtnMEF41OqzuSPE4/s0yyZ6vkYr6Rs79UTy7EMxa2QcIJRZJXG23vV8\nfww7aSKnAbldJZLykj/Qp2ZwjHP4UyynS7zPNzjce4+i6diIsLQYwtG/fA2ObKj35Vwn7RcU628/\npEXfgMnK2cQ0po/Uu06bcD4/yZSLWqE6Nmv08U3Nv00Zuv/mNftTn6MQ31y62WZ6nxmPzf8eo73Z\nPvMZuQ8zd7674B7suN0uQMeGC+eFhqLN6yfmtJPvDygXKiSC0+eQH1fy5Pqj6dUhvzW9wenC67RR\n7w9pt7sMIsrEcXvtpjVdWwm7HmEm/5ZcJNbWab3ZoWoYGFNdaMrZzuj9ZpZSMzZ95I2pU8jXratD\nUQJnlb+DQDAE5Sr9xhH7x1aB4Q8FpqZ2N8sH9HWrY8E6Ik3cNXdilSetDruVHsZ0Qt+CF39YgXaP\nTvkT+/QAhUhgVCHZfagJG4UilHMHLLQH2FCJqOMB3QDTtOM4nYJmd+Dxh/H4vdj6f/CpaX7G2sDH\n4TplsnHcw+F2faV8Nbnreu7d/5GbcVWzWKMbn95hW3xd4yO2/eYev73em7rGNI6oNdMEwgtInr0f\nPufUgejqjzxJne9SPb4/xoA8//m/6Wn0pzM4oulZnTZ2gqlVopWPVDWNHhBaXRydaX+77yi+jItp\nj9NFGBt1DPROD3xj9fOgTas+ml7tdY3abddoEw579PouXFN9ty5SW5usRhQiC33eZlvWZr/BAE8e\nzTF4cBdl6NXny19y753HYx7ST1+wEj4Nx6/xjNxzD+vb3gW7SnotgQL0G3u8/ZCj2TUwTeuojXr+\nI+92rBE8T2yN+NkaLS9qwhoSaB8dkq22McwBA7NH82h/dFyKQjQWknVWX5nNdT5texZ3PMOy35qa\nl3v3loNyi545YGCaHOtl9j98JN8eHXeRuTDTIxAmjA3o0TsGGyHCgfNC/HRqt6nr6HB2RJr4ElzE\n1zZZusO/byBolQVDo0fPAIcSJ3D2+Q78wTgAfd3aHdbhC+EdG/kZHlf5+PtbPhVqdHom5ulz1ShT\naVoBh8cp3X2XsqukViPTZfLAKl9b5X0+/P4vPuZaM6fV3rVhp8xR+eqfNGsndvFlDM0TTNOc+m+A\nSa2Q5Tr7G56eciB59mGJb/6VV69e8erVf/EsbdW99aMy+tiymHb5aDRd+3J6vkZrTpa1OcNkMiEA\n7EqaxbjM3PjWrpP2NqdKODo6yeTwE3mtZ9UdRofKYXa0XMdPPHy+D5I7mhm1Iy60CQcm/W6D7Mf/\n8O8321MnMdltcWIRF6ezRk8D+rvc7PchuG0ZuvrDq1F6vuK///ozz58sXRLYDzBnlvv/f3v3+ZXI\nljZ+/wtIzhkEQxs6nTgzz333/P+vpuc398ycOaenk6FVkJyKIpYFz4tCBQFFW1ttr89aZ63TUATZ\n8dp7197wtfHY+ff4dXTKWofycXli083L8shJT0VtP+z0/g5n7q9mDa7wcmPAp70i3VqGD7XM1DWu\n6DO218bPuDfjS6yRUj6TVVRyO39wcWzYHV2/nfv7xbVZPMtsbnX47055xv0vLpIvXnDyeZecopLb\n+y+5vckrTFYf6c1tEhfW05tsHvwBM7XRzJDVHxyb2Z9c2g3nR6SJO2LxkNraoPvOOIZmnnnL+Vzp\n1/yUOm/kx2eNYfqWiiWvj4ipcNZxdEd8EzO1nXqJhtakcaBQmF7nhd2XJjnvPB1xxhZ6xssN86V1\nsqOl0tO9uL6yfM3bhM9sSvP6f5Noo+W9JqI8/8uMs3d1hYP/fCTfN+7jjftCT+oYpPtQ3v8P5QsT\n8iZCbL4OjI6/A//qj7ycMSvbLX7it/3a6JSDGF5FyuzjZCaQ2iLVfE9WLfDlwGMshx7bTNER3ebH\njenyqDcO+e1DDm1iBcc0RyTNSkPnJJKceU73LIu2NeJrzEl7AKxEVjZRWp8pd+scvv83hxOvtRJc\nWSU6fpO22UXqxQsGl/QJoYfa7hGanr4fMSYbet33ZFWVo08Z3L+sLpxvHrNv0e8ZDI95/4/jqcdP\ny9XtxGNjK3/VQw6zHrZTXmPWe6E8Ahbb0tQs+eV9jBTfYtjwiUaiZlzRZ/wSiFIplihVaigdbbRM\nJEAkkiQya3MHi4f0yx/xFrIUKnVqqrGM1+ULEEkkiQW//XFN4pwjvMpavcnOjPPQTUs+Vl/9TKxe\nJl+qUK826QEOT4hAKEw8FsIxM/Hs+IMeqBuba3lCF++3Pl/aDRDweyQP3DGTPczqeh3lc5mv3tPM\n7MEXNpPLGQHCxVsqTEsefCEz5YoOuAn6JqtlV+I1f/JUqJSr1JUmSse4/8vlCxCIREhEfFjvcxfY\nR+O0Tg5TylWo1Guj39KONxQgEk0SDtjvvGwNvqXnIAAAc4BJREFUT+pny3t9q/HZ9wFafMRTfvL7\n0zuxi2+r2yjQwDjRIDFnptURTpDINsj3W5TKCtFVKbOPlsVDcj1F448j1PIuGZ+XlaXzzRQTidkD\nbRZ/nFSgyJe6TrVYJTk61nKK2cXy9qu7/AvETc1I+43Rnicme5DNH38ikM9TrFxoO+IpYjP686d9\nwkitSLFcO+sT2pw+AuEosVgE91XLcC0ekmspGu+OULUc+19cT+L++wfR77mleGy8P1nPHJD3vmTZ\nZzT8l+URjy9AOBIhtOAGfN+a6c2bN3+8ffuWv/3tb2cPvnnz5h6/krhrf/3rXwF4+/btxOOS7k+D\npPvTJOn+NEm6P02S7k+TpPvTJOn+NM1Ld7k5WAghhBBCCCGEeOQkuBdCCCGEEEIIIR45Ce6FEEII\nIYQQQohHToJ7IYQQQgghhBDikZPgXgghhBBCCCGEeOTOdssXQgghhBBCCCHE4yK75QshhBBCCCGE\nEN+JpX6/f9/fQQghhBBCCCGEEDdwGtMv2Wy2e/4qQgghhBBCCCGEuInTmH5p1pOna/bF9+3iXguS\n7k/Dabr/7W9/AyTdn4K//vWvUt6fKEn3p0nS/WmSdH+aJN2fpnl75sk990IIIYQQQgghxCMnwb0Q\nQgghhBBCCPHISXAvhBBCCCGEEEI8chLcCyGEEEIIIYQQj5wE90IIIYQQQgghxCMnwb0QQgghhBBC\nCPHIzTwK70HSe9RKOUqVOjW1B1hx+bz4glES0QB2i3HZsF/h8792qTEkuvVnNsLWBd68zfEf7zhq\nDbBYl3nx6wreqWEPjdLOb+xV9KlXOzwhAuE4y3EfVtPV15+yhzb5YTvCIt/we9Wv7PCvncqV10W3\n/swzr3KWtpPseEMBIvEUMd+8X1Onsvcvdko6JgJs/vKCsOP8WTX3jneH6sznTg27JT7+tk+DJVIv\nfyVlyfP3d0eXfu+1H96Q8MBQPT679vQxcXuG7Tx//H5AG3Avv+L1im9q5HK8bpg0O//Mv/7c4nWM\nuA4l+3+8z5xMPW5z+giE4yQTIRyWGS+caieMtA1F4kSDTma9BGCoqVSKJUqVGkpHw2R14gsEiESS\nRMbyxLzvdZGU8TEnbcqFwtlvO952xyMBHBd6IX2lRK5cpl5X6GpgdngI+iNEE2H8o4u/XVm+Xt/A\nl37Ni5R37qzJaXtnNqV5/b8p3HO/zRNwS326q9rWvlqhVCxSHuUnm9NHIBAhkozinVV1X5FfzY3F\n+yzSNhjm15tWXL4AkUSS2Fj9fJ3yep7+HtZ/+oG4a/K60zJnIsTWn7YJ2S48v0h9c1Ueu+Izvmc3\naxN1uvUy+VKFerVJj1EcFQoTj11s28/rV1f8Ba/XAxfacZXM39+THQ5wpV/zU8o7+cGL1jMLpvF4\n3T3+msX+7m/nUQT3WiPDzm4WRZt4lLZSpa1UKRz7WH3+goTnZgsRdKVKvjUw/l87plRL4L1GpdxV\nq+TVKrVamu3nKdzzepDijvRoVgs0q1XqK9tsLU93robdKqWSkcZD6hQrTYJjnTB3MIb/sEWDOqVa\ni3ByutvVqhVpMMRijRP0m0G9279KLGpAo5KnPfpX+7hAPe67RgN7df4RD0O/o1DMKJTLUbZfbhCw\nnz83u504TdsCed8ym9sreCdavQHt0gGf9or0xh4dah0apQ6NUo5c9Bnba7HZgwniUsNehd13u1S0\n8U76edutmX9lKzZKRL1D8eAT+6XuxHsMuiqVrkqlkCW89oKNhBsT89xuWb5u36CZOaYWnj04jK6Q\nO6x9xbf5ftx1nw6Ym5/6HYViR6GYy5LYeMFK1HmWRxbJr6tSD9wijbZS4lApoaRfs33JwNjVVDL7\nWTwvF+yD30p9I65reKJw9HmXnNKfePw0jirkfKQ3t1n2T4en7cIeh94feBa2Tz03yzepZx6oBx/c\n661jPn3IogJLnjhra0mCTismhvRbRQ73j2jbfHidN00cnXo5z3ja13JlOuEkzjmvGJ9xH+ga7WqG\nnb0iPSXDUTHAywuBoczQz2cLb/EmvDX61/kI3azfbDhWF5yPig840TpUj3bYL3WpHR1QCvw4NXp7\nGpifamZKKHEvgVEJMDlCRKMHNEo6aq5KM+6enKEZKFTzRvjoSQaMUbuxp2Wm7v4MTxpUcueZY0iV\nYqVFaMYAzanr5h+ZhbkfEzOcuk63mWN/L4vSLXGQDeDdCGHBWLkxu53QaFULZI5yKMoxnz6aef0q\nxWlzodWO+LBXRAMcwTTrKzE8NgvDQY9mOcPBYZV2aZ9PwyVebYbwpf7Cm9Tpt7tixuDJ06nn9qlo\nQyyuOBubKfwOC6ahTq+lUC00cJ6NzmhUvnxkv2zMrIRWNliJerFZTAw0leLhPkfVJdxuO2Ym6967\nK8vX7xsMqXOcrxOYml0CtZQh3x8s8Lnft7vv0wHo1I4+sl+6kJ/McNJvUs4ccFTtkt97z8DyE89C\nVhbNrzbb4n0WMWlyxcqovB5+Yr/cp5EpoMS8BC78gNdpe0/UDLtf7LzcjHD52P7N6xsx6XptYpvc\nx4/k1AHgIbmxSjzkxsqQfqdK4ShDXlE4+vAR84+vSLgv1gEaxZ0dnPZXVwbk36aeOffQYoAHPlzR\no5w5NhLHtczLl+tEPHYsFjNmiwWHL8nzH//ED18xW34+o2slmU7hAk5aOWrKYo2w2WLFE11lJWp8\ngVZFoXOzryJuxMyS1U10dZWIyQS0qCmtyUvGAvNQOk3EZGJIiXJtfK7OQiCSwIoxQ1NtTC4z0hoV\ncv0BJgJEg096MeWD06uVKA+HmK1J0ikjbdRcleZCRXiB/CMeBosFRyDNStJoQfslhZYO0KN4lJnT\nTtjxRld5vj2q29UM2cqo3A8Ucl+MwN4e2uTV8xR+pxWLxcyS1Ukwuc3LzRAAnfIXSgu2CeJUh1bR\n6Bbbg2FCLisWsxmzxYrTFya1vXG2ukZXChyUjXSJbv7A9nIAh9WC2Wxmye5jefslP//8kqT3svmI\n2y3LN+0btAsZSurkNcN+heMDWer1Lfp0ALqSY78wIz9ZLNicAZa3X7IRtmAEeflRW7F4fhW3wSiv\ngcBpADhkcAtRdKe8S6bcu/Sa26lvxHV1SxmO1AHgZuX1K1ajXuynZd8TZe35Nkm3GVDJZcr0Z76L\nSnY/O2r75/k29cxD9qCD+2FfpVE3Gkl/IjY7ESxWrF+ROONLrcOpIGG3GdAoletcmncmvwRWu7Fw\nZ9AeIF3Ab8+0ZMU+Wjyl6ZMpcB6YhwhH44RiRrZvFKoTAzEWX+hspLBarI5VLBr1inGPnT0aJTBr\nyaW4J22qhQYAzniQ5VAEF7MHaC5zWf4RD4vNZsz2DtE40SfbCV98djth8cZJhI0nmpUGfWDYVimP\nZlIjsdDMmR5HJEnKZrQJ5boqdfu1WLH6jDLVKWb4kq/S7ukzf8NWs4wGmEkSDc1acmnH6Vysob+t\nsnzzvkGLXHa8YzqgkT+69P7hp+Jb9OlgsfwUSSyfDeY3msYgzqL5VdySQY9G3Rj0WvJ4cN7S4Elp\nd4e8Oj/lbrO+EYvSaDYUAGz+GJHpzUvA4iGRDBpX1ys0u9OXAJy0j9n9Mi/4/3b1zEP2sIel+r2z\nBtHjnH2PxUDXjStMFizXHaqYWmrtxhL3c7RXo1cqUV8Ozb53boqO1jO+p2lpesSkV93ln293Jx57\nihtv3KXhiUZvlFfMpvEU6FEtngbmYfy2JQglsBayaK0cNSWO03d6vYvQKP21eo1mN0bYAcNunUrF\naPyjkenllgAH795ycOExWap7987viXUTDXoxuWzEAhm+1HWqxSrJYOyK5XmG+fnHUNr5J6Wdycdk\nGeb96PdPZ2VMmE1A77yd8Lrm3YtnxelagorOiaIZS617bTSMutg1d2meHafPBGUY9ProPPAR8QfF\nTiS9TLlxhKopFA4UCgdgsjoJhKJEIhFCHiug0esYA3HWkAvHV/7At1KWb9g3sCeSBKsF8vV9MpWg\nseFXu0g218NEiFQaMpnq1/2Bj9lX9ulmpd20BfOT3YkXE1WG9E90Fs+v4qYGwwx/vM1MPW62hlnd\niM+83eU6bW96c4vO4S4VTeXo0x62H7aYXin9dfXNrL6eWESPXtUo+0te59x+mdXhwkoFDQXtwvyM\nLbTOiqvCbqZJp7zLvsPOdmrGjgh3HTvO8NBigEfeT1E5/r9/8o9//IODmnb15ReczuiCm6DfWM5r\n9wbxY2I42ljtKgNdQy1+4aBkjOW74z4W2+pB3I4BJ1qL0sEXysMh4CbsO28ihu0axbqRNoGgDwtg\n8fiI2GbPwtiD0dGy/fP0P53BWXInCfoeeZH5rpzfE7vkDuNzAdjxh3wA9OtFau3LXg9X5R/xgOg6\n3XqGg0NjpscWCuCWvvaDZvEs8+rXF6zFAzhGaTXUOtQKh3x+9zufcq1bnBm9vbJ8076BZSlIctWY\neaoc5GjqGuVj45YR/9rygpMFT9nX9em+1rfNr+LUQFOoFJW5M7GLsjjCPHuexgMMtAqZTJneUFbM\nfC9MWPCnNtmIGFFWPXNIQV18hea5GfWM2Yzr8hc9Kg975t5mJ4iJGkOa7R4Jz22GzeczujZ/jOAo\nVa/cWI3ZM/EAS540q4np3T5lhu/2zRvBD6TXiJ1ttHG+i7qZJKHT3TfNPkIJF7lDdWoWxrTkJ5y0\nUT7uGekf1amNZnD88dDcjZQe2mYaT8H4CQi+2HnaGAM0dcrDFqWKQtQ1fSzeYvnnnGyodz8unelZ\nNerU4ULthEanbXQClnxWrIDVfjpDUKXdGRCyzRq469FRRrPAdtvco/TEfGZ7gMR6gMQ6DHptFLVK\n/uCYhqbROCyhxtaxO5cAHa3apjsA6zXGUG+/LN+8bwBgC6+wXq7zpZ7j6FOLrqKz5EqTjrkx1574\nvttf2ae76ig8g3Wx/NTr0BzN7tmWzkv21fnVjU8qghuZOgJytEnq7scs9fxHDl2/shWdzBPXbXst\nnmU2n6n8tl+jU97lc+PiaxfMH3NcdkyauIwde8gEFThpdujjnTl7r3VPV9T5sM6MUO1E1zdoKx/J\n940VGkvDC0NuN6lnRrdztRnS6RtHYI7ra5fv4/DQYoAHHdybbB78ATO1uk49U6AZXsV7S5Xq+Ixu\nv7HPv97uT11j3LebxBu8+meyBVd5sZnEJZX+vQmv/chGwn1+rM3YLuoDcvz3/+WmXjOcOvrOjD8Y\nw3p8hKYdc7zbpt4fYCJKJChrMh6S8RMQqvv/ZkYRpn1cRkn6zk5FuMzF/CMeJoszzvardfyjtneR\ndkJvFshXjPreG/YbnQqXh4jNTK4/oJQvE/NP38LRLefI9o1bciIBj+SN69J1BhbL2e9mtrsI2F14\nlwb840PubN8EvzeClSwaOQrlON7YxbpWo9ezYLcvlgJfU5a/vm8wWt5dP6KpKICV5XQct5mvnpl8\n7O6yTzfOfWV+6lHOH6MBFusy/tNRmgXzq4zy3RKLBUcgSiSYR63pqEoLLWr/6sDEEVtjo9lmr9xD\n06ZXgFydP65X34hFWPH6fVCp0W9kKDYipP0Xfl9dJZ8zjgu1BsJ45610svhIb6dQ3x2hahoXU/gm\n9YzJZsdlM1HrD2m1OgxC1rH2o0erYezQZQ3aF7rV87498JxrNJLGEpscnz58oaz20PUBA12nqzZp\nX7LkZqifoOv61H8DdKr5DFeu2OXixmqjbxXa5M9v3vDmzRv+v5dJrEC/lqOi3GR5iLiJ6NafefPm\nDW/e/A8vkkbFXDsuMb5Cp1U6Hi3PvNzFndVNnsDZxnr1eh0A13IE3y0Nhekns/KlLPa7juFJjcLR\n1bfNTJ+KYFgk/4j7Zzal+XFU1/7vLxv4MaF3CuQr42lvJ7aSntNO9GiWDvn0OUsbY3VV6vSMXLOP\n5HrMqL/r+7z/lKXR0dB144imWu4zH3aN+6OdkXWickvONQ2oH//OH5+zVJQOmq4zGBhL5ytlY5bL\nbHVgXQKLL87aaKllZf8dn4/rdLXR9T2V4sFn/v3v9+Sa0wX0dsvy1/UNTlncCVKj72ILpIkvMEHw\nNHxdn25RFl+SZ/EZ+UnX6XfqHH/+wF5FB6yE1xOjFRiL51dxS3Sdbr1EuWYMplns1lta4Wonur5F\nas5xaV9T34ibc0TTrHiMW2KzH95zWGrSOyv7JQ4+fSbXGh2Tl778OEOLZ5nNrXkrom9Sz7jwxYxl\nWq3jIzKVFtqoD9E4PiBbH9UXkcCjWIX94Kspi3uZ5y8H7OxmUdQCu+8KM66yYrVML3cr7/+H8oVB\ndxMhNl8Hzpbz+ld/nDqXHqBb/MRv+7XRfbuxqbNyz76fP81WWuV9pkl+/wtu1xYXN9+ct4x/aomS\nuAEzgdQWqeZ7smqBLwce44zTsQ2RHNFtfhydhz1Obxzy24cc2tQszPnGegY30fD00u5x8zZZmbWk\nLPPx/7i40FjywvWcHn8HbtZ/mj7LGnoUPv7Ol7punIoQTTJ7EHhO/rlw1bylv7Jp4rdjckRZ31L4\n706Z+sEX8p7zs25NrgTPX55c2k7Yfctsbp+fcQ9gDa7wcmPAp70i3VqGD7XpWwBc0Wdsr4UeRYP+\noOgKtVyfzjDDTnX6dzU64LFRYGUlvP4C3fSJ/VKX6tFHqkcXr7fSavUYeJeYvbj968vyj+HuLfUN\nzPgTa8TaZVxXdFKfmq/p013jUwiuvODZ4LL8ZCex8YKV0KhkXyu/ipuYd5uVwUMsNN2W3rjttXhI\nbW3QfbdLRbsYyN1GfSOuz0XyxQtOPu+SU1Rye/8ltzd5hcnqI725PeOM+2mO8DO2uj3eZ5pTz12/\nnjHjS6yRUj6TVVRyO39wca2vO7o+d6D2OjHAt/Dgg3sAqz/Nq1/CVIoFKtU6NbUHWHH5vPgCQSKR\nyLU2Vuo2CjQYYiJKIjo7nHKEEySyDfL9FqWyQnR13t3WZnzJdVL1d2TVCgeHPjxbMWxSG3w7Fg/J\n9RSNP45Qy7tkfF5Wls43REokpgN7AIs/TipQnLmz+vl920NsgfP7LsVDcH78nSO6TGRm2tiJJGJk\n6zm0Vo5KI05qXhGekX82onILxkPkCK+yVm+yUzbOunW/Xjlbbme0E1FqpRylymk7YccbChCKxIkG\nnTPqATOu6DN+CUSpFEuUKjWUjobJ6sQXCBCJJIn4JKy/EUuAZ3/5hUC1QK2iojSa9ACzw0PAHyIS\njxJ0jnVBLE5iG78QiJTIlcvU6wpdzbg+6I8QTYTxO4zr587tfmVZPr3V5zb6BiZbkGcvgwt/9lNy\n2326mU7zU6xCqVikPMpPNqePQCBCJBnFO/4Z182v4laclu94Kj6ZHrfAZA+zul5H+Vxmag7+Nuob\ncW2mJR+rr34mVi+TL1WoV41y5vCECITCxGMhHAvf9jIef02vfr12PWPxkH75I95ClkJl/PoAkUSS\n2Mw+xMNkevPmzR9v376dePDNmzf39HXEtyTp/jSdpvvf/vY3QNL9KfjrX/8q5f2JknR/miTdnyZJ\n96dJ0v1pmpfussBICCGEEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGE\nEOKRk+BeCCGEEEIIIYR45Gbuli+EEEIIIYQQQoiHT3bLF0IIIYQQQgghvhNL/X7/vr+DEEIIIYQQ\nQgghbuA0pl+y2Wz3/FWEEEIIIYQQQghxE6cx/dKsJ0/X7Ivv28W9FiTdnwZJ96dJ0v1pknR/miTd\nnyZJ96dJ0v1pmrdnntxzL4QQQgghhBBCPHIS3AshhBBCCCGEEI+cBPdCCCGEEEIIIcQjJ8G9EEII\nIYQQQgjxyElwL4QQQgghhBBCPHIS3AshhBBCCCGEEI/czKPwHrKTVoVCoUi5rtDVwGR14vP6CEXj\nhP1OWsf/x/vMyZXv43dCowP20CY/bEewTjw7QD3+wLujJlbPKq9+iKDu/MZeRZ9z/SmN0ui6eS5/\nvbjMUD3m7++OAFj74Q0JzxUv0HvUSjlKlTo1tQfY8YYChCJxokEnljkv66sVSsXzPGZz+ggEIkSS\nUbxjCadkF8trC33XJ++87CxWRnS69TL5UoV6tUkPcHhCBEJh4rEQjguJOy+tTFYnvkCASCRJxDf/\nEy/mCbPDg9cbIBaLEfKcv+6qPGE2pXn9vyncl/5t4qLT3/WqvKGrx/z33REdQmz9aZuQDYb9Cp//\ntUuNIdGtP7MRtrJ4fpM6/TaM193jjPIXJp6ME3Sed0fmlSOb00cgHCeZmC7jp7TaPv/8VAQgvPEr\nW1H72HMH/P4pj4abtR9ek/BMzm8M+zV2//hMRVti+fnPpN2Ns7wzz2meGs9nk4x2JxJPEbukjvme\nfU35Hbdo2wzjec7D+k8/EHddeK/KDv/aqWAafdZSafH2PG6bVafM+uyn3v6rZP7+nuxwcOlVp+2i\n65r1xJkb9vWGmkqlWKJUqaF0tEv7A1K+78blMZ1O7v8tnn/O+lXXyg/z23iHJ0QgHGc57sNqup2/\n91t5VMF9t7LLf3fKaGOPDbUOjWoHpdrD8suLhTtY3liS9kGOXvWQQiNE2n/eyA+7FTJHKmAllo7j\nREe9zT9E3DmtkWFnN4synlno0awWaFYL5H3LbG6v4B0vAXqH4sEn9kvdiffqdxSKHYViLkti4wUr\nUacseblHwxOFo8+75JT+xONdtUperVLI+UhvbrPsv7p6G2odGqUOjVKOXPQZ22uxyaBhTp4YdFUa\nXZVGKYM7us3zjRAX+qHiDsyqr8eepZw9pg08snb4yTLKX4ZGqUBs6weehe2XXt/vKBQzCuVylO2X\nGwSmLu9RLVbO/tXIl2mFU7hH2cUaTJAKlPhSb5HLlgm9iI2V2wGN/AEVbYgtkCYeXIL+xfe/idN2\np0p9ZZutZe+TbT9uXH6/qm1Wyexn8bxM4Z4X5YkH7byeKJHYfsVaaGzA7iZ9PQa0Swd82ivSm/qc\nS/oDM51/Vi39mu3U0y3f13VVTGf+JXXt97xZfpjz/UZ9ynIlzctHVn88nuBer5PbraAB3vgm66kg\nDouJgd6jpdQoNmz4HGBN/YU3Z/nhfNTQlX7NTynv2Btq2NQiexWNQiZH2JvCaQbQqeezNBhiD60S\n95uB+bM288hszv0ZtvN8+pBFBZY8cdbWkgSdVkxotKoFMkc5FOWYTx/NvH51nu61o4/sl3qAldDK\nBitRLzYznPSblDMHHFW75PfeM7D8xLOQFd/CeU3cnja5jx/JqQPAQ3JjlXjIjZUh/U6VwlGGvKJw\n9OEj5h9fkXBPNrMTI7zDAScnHerHRxzmG7RL+3w223i9HhiN7GpUvnxkv3wxT5gYDE5f18UbcE8F\n9jJDf1c0ipkCYX8S58Vnanmy9evX1YuSOv12nM1kDgec9BWO9/bJKX1KO1mC/g0CY72SiXKk63Sb\nOfb3sijdEgfZAN6N0MQszLBdoziWB07aGcqNOO7g6ZvaiaSWKdaPaNczZKtBnoWso9cWyeZ6gJtk\nKoINJuboZs3QznN+7YATrUP1aIf9Upfa0QGlwI9Ts8hPx03K7/Xb5otO1Ay7X+y83IzMHYS9Tns+\nvJVBn6fAQ/p//4f06F9XrWgYL2+z64kehc9Z/H8x6omb9fVAqx3xYa+IBjiCadZXYnhsFoaDHs1y\nhoPDKu3SPp+GS7zaDE3V+fPKdz1zQCn4lMv3NSwQ0/kdHiLXyT83zA+nxtv4ga7RrmbY2SvSUzMc\nFQO8TD6eHt2jGWAadtoUh0bRD4QjuKwWzGYzS1Yn/vAy2xvX7XRZiaTX8GPiRM2QLRvjd7paIFPo\nYSLAyop05B6fHsWjjFG4Xcu8fLlOxGPHYjFjttjxRld5vp3ChdHgZyujdFdy7BeM/49u/sD2cgCH\n1YLZYsHmDLC8/ZKNsAUj4MvTvHyVkLgj3VKGI3UAuFl5/YrVqBe7xYzZYsHhibL2fJuk2wyo5DLl\nyyfeTGaWrG4ia8/ZShudt3YhQ7ltPK0rBQ7Ks/LE6ete8vOff5qYRRB3T1MPyVW0yQcHKoVsEW32\nS8RDZDKzZA+wspbEBQwpUVMuSUGLBUcgzUrS6NH1SwqtiVhwQKOSpw1YA2nSUaN7Uy1WJ+oBiyfB\nStIOaJS/5GjqGP9/bLQb7uQqMc9tdY2MuiK6ukrEZAJa1JTWLb3343Td8ntbbXOnvEum3Jv9pHi4\nZtQTzeYJN+3rMVDIfTHymj20yavnKfxOKxaLEU8Ek9u83AwB0Cl/oaRc1tmbLt/l+tMu34u6/Zju\nhvlhDrPFiie6ykrUGD5Wc3U6N/lD78mjCe5ZsnI6dlrM7FGstejpXxdhmRxhltPGSEwtk6OhnS8L\n86aXCTq+7iuLb2/YV2nUjXzhi8dmLqOxeOMkwsYTzUqDPtBqGkuDzCSJzgzW7EQSy1gBXTumIdH9\nPdBoNhQAbP4YEe+M6sviIZEMGlfXKzS705dMM+NLLBO70Pk+zRMW6/KcPAFL1ke0Tus7Ujk4DcoM\n3fIx2ZaUyUdpyYp9tBB7OP/W9jM2m1EWh2icjOWB4UmDSs4I4wORGLFgDIB+vUitPf4OZvyJFYKY\nGGg5jksttEaOo4qOiRDLCd+td4xMY3+j9pX9lu/BdcrvbbbNpd0d8qr8/o/SeBkaDG/c1xu2Vcp9\n43WR2Ozb6RyRJCmbGdAo11WuyjHj5Xtwxf3hYuSWY7qb5ofLWbDaR23TCVfmg4fk0SzLNznCpNMl\n3mea9JQS+0oJAJszQCgaJhKJ4L72NLsZbzxFrPiJYr/A0acWfVXHbI2Tin/dfTO96i7/fLs7+TfM\n2SRG3KJ+72zDE69r3oyqFadrCSo6J4qGhkavY2ykYw25cMxLeLsTLyaqDOmf6DymsbHvQ49e1Ujb\nJa9z7vJKq8OFlQoaCtrV+yMZLE5cPjM0dLqtHhq2szyx5HXOzhMDHX0IYMJimbxgMMzwx9vM1Eue\n9uZKX88aTBIe5snXc2TyQV6kvJhO6uSydcBNOu0jk8ndyWdLnX5HTjR6ozrbtMBmCf3+6YyLCfPY\n9b1aifJwiIkoIb8VqzlI0lYk129RqihEXedBu8kWZnmtQO2gSf3gC588KhoQWFuem5alnX9S2pl8\nbNFbNYZjf6PZ9HTbjeuX39tpm9ObW3QOd6loKkef9rD9sMVtVcOz8oW4AxfriRv19YBeGw2j7nZd\nXJd9xo7TZ4IyDHp9dC4PlqR8X9+tx3Q3zA+XN906Wm+U55YeV4//EX1XM77US355sU4s6DxrTPud\nOvnDXd79/p7CDWZuTEsBkqkAAC3VaOCD6SS+RzPsIYS4D/3aPv/4xz/45//lkIV434bZ5CKeSuMC\nmpljat0BzUKWYn+IK54mvsAmiuKBGA446dU5OsiNNlGLErxst2ldp1vPcHBobG9rCwXGOn9tqoUG\nAPZowNgsyezBFzEuaB+XUS4M9HmiaRI24xYeVQWzNcly9LbvqRxworUoHXyhPBwCbsK+i3ebPx33\nVX4tjjDPnqfxAAOtQiZTprfIMhFx/07rif2jUT0Rwu95KDfMjsr34eFZ+Y4EHs992ffrbmK62zLQ\nNdTSIUclY4mRJxmY2ifkIXtkPSEzjkCcZ4E4z4YDuh0FtVLg8LiOpinkSwoRd2DusRfzOCLLpIoN\nsq0BS640ycjX30Mrmy/dE5udICZqDGm2eyQ8s9JSo9Mezcr6rFixYncuATpatU13ANaZm/l2aI5G\nBm1Lshz727NjD5mgAifNDn28M0ddte7pyLwP66I1nN6hPbq3zuG2L54n5pAN9e6Occ90kY+5Okf7\nH7EqKiZCpJYDWPrtq9/ghqROvx0H795yMPWolehWamIzPZi/AsZsDbO6ep4WulIlP+oIhsOnfQAz\n/nAC1/EBbUqUaykCY8fiYfGRXA2S3zF21w+vJfFeUq1fZ0O9ebO5gfTaLd7P/zhdr/zeXtts8Syz\n+Uzlt/0anfIunxu3U5KvOgpP3Mz8emLVOOKUm/T1wGo/XdlXpd0ZELLNPrmho4xm4u22qZjisvId\nlc30ruEWY7ob9f0nzVqdB7DkSbMSe1y9uUfVyujj92OYzDhcASIr22wkjR7BUDu52T0RZjt2h7G+\nz+KwM7Osi0fBZPPgDxgJWM8UJu7rO6U3C+RHZ1p6w35sgNs72iGTHIWZm+70KOePz+7B9s+631vc\nMStevw+AfiNDsTGjtOsq+VzNuDoQxrvQvhkDlPzxaHMXN0GfUYlfnSfE/TDjT6wRtproKQoq4L9k\nObV4uExWJ/5omuc//3zlMXinLM44z3/a4vz2a516OX+2GVv2w//j7du3vH37lr//fsBpuNgoVKc2\nRLLaz3viLvvdDtuE136UY7KA65bf22ybHbE1NkaTN5om228+Lk6Sz386qydu2tczuTxERp38Un72\nprvdco5sfwBYiQQ8V5RZO95QnGev/swLKd/Xcpsx3U3zw2UcnhCJtVf8/PpxHYMHj2nmfqCQ/c8+\n/ViKWMiP22bBxJCTXpVy2UisJcf0CNttGw4H6Lo+XYBNFixSqr8Z/eQEXb94g6YJi8VObCVNuX6A\nquX49GEw8ziMNsZoXGrUUFh8SZ7Fy3wq9Kjsv2N4Muu4HR2wEl5PILH93bmsjDmiaVaKDY5UjeyH\n9wxmHYXXGh2Tl55/7JHxQeNH4TUBcMXTREb9fYsvzlqkzE75Qp4YHdfSbC20W5+4AyZbkHQ6QGW/\n9tXLqaVO/7aus+/E+AqYYbfEx9/2aXQK5CtR/AkjzYftEselq49APGnlqClxnL67T9Txo7Lqh//h\nY65H7biEGnHLLX9cr/zebttsJ7q+Ra/7nqxsrPegndcTPQoff+dLvUP5uEw0eHqM4s36eph9JNdj\nlD/l6df3ef9Jm3kUHoAzsk50Rn1xnVU8Yo5bj+lumB/G3+E7Wp33aJoZXamR63chs0tlepUeZkeU\ndOz2d7m9qF/b57d/7E89bhT283/PW94hy3VvR+bj/3ExG5z9tq4Ez1+esLObRVEL7L4rTL3e7ltm\nc3v8nEsLwZUXPBt8Yr/UpXr0kerUqjo7iY0XrMw4R1fcnsvLmIvkixecfN4lp6jk9v5Lbm/yOpPV\nR3pze+qMe5i/zBfAFX3G9sr4EjAr4fUX6KbL8gRY3EtTDdC8z5EN2G6PI5JmpaFzErl8OfVVpE5/\nHEyOKOtbCv/dKVM/+ELe84qEh7Pj70xEeT46/3qCrnDwn4/k+xqlcp24L3SjSYB5S3FnnYN+zkwg\ntUWq+Z6sWuDLgefSs9afksXL7y23zRYPqa0Nuu92qWhy3/3DZye2/ozmu10q6iGHWc/ZChjTjfp6\nYA2u8HJjwKe9It1ahg+16bbaFX3G9tr0GffidtxFTHfT/PA9ejTBvSWwxl9+8VMt1qg0GyiqsTzL\n4QkRCIWJx0I4HtmyCXF3rP40r36JUivlKFXq1NQexvKpAKFInGjQOd3BsziJbfxCIFahVCxSrit0\nNbA5fQQCESLJKF6p6e+dacnH6qufidXL5EsV6tUmPW5WF5isTnyBAJFIksiszbxO80SkRK5cpj7K\nE2aHB6/XSyQUJxiw3/mKITGD2cXy9qv7/hbiG3KEV1mrN9kpq2T3s7i23WfH3/lW49OBPYDFRzzl\nJ79fo1cqUV8OEf6Wx9xaPCTXUzT+OEIt75LxedmIfv2+Po/edcrvLbfNJnuY1fU6yucyix6oIu7P\neHrVMwfkvS9ZHi2BuVFfDzOu6DN+CUSpFEuUKjWUjnZ1f0DcmruK6W6WH74/pjdv3vzx9u3biQff\nvHlzT19HfEuS7k+TpPvTJOn+NEm6P02S7k+TpPvTJOn+NM1L9+98YYIQQgghhBBCCPH9k+BeCCGE\nEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGEEOKRm7lbvhBCCCGEEEII\nIR4+2S1fCCGEEEIIIYT4Tiz1+/37/g5CCCGEEEIIIYS4gdOYfslms93zVxFCCCGEEEIIIcRNnMb0\nS7OePF2zL75vF/dakHR/GiTdnyZJ96fpYroPh8N7+ibiWzKZTBP/lvL+NMyq5//2t7/d07cR38rb\nt2/561//evZvKe9Pw7w98+SeeyGEEEIIIYQQ4pGT4F4IIYQQQgghhHjkJLgXQgghhBBCCCEeOQnu\nhRBCCCGEEEKIR06CeyGEEEIIIYQQ4pGT4F4IIYQQQgghhHjkZh6F93AM6NZL5EsV6tUmPcDs8OD1\nBojFYgQ8Vk4qO/xrp4IJH5u/vCLsGH+9RmnnN/YqOkvuVV7/mMQ59uzwpMbePz9THg5Jvfwf0n79\n7Hp7aJMftiNYASX7f7zPnGD1rPLqh8n3GP+M8dec0+nWyxN/g83pw+sLEU2E8TseeBI8EMN+hc//\n2qWGi7UfXpPwzBuXOk8PV/o1P6W80+/VzvPH7we0AffyK16v+GaPcp20KRcKlCo1lI4GWHH5vPiC\nUeKRAOdJd3U+lVG0xZyn8/zjuqJbf2YjzFk6X+TwhAiE4yzHfVjPToPS5l5/aqL86j1qpRylSp2a\n2hu9rw9fIEosGsJtM1L0tG4wm9K8/t8U7ol3vKpuEOMuS3uHJ0QgFCYeC+GwzHm9plIpls7Kq8nq\nxBcIEIkkifgmf/n5n2XHGwoQiaeIjb3mNusfcX2L1AtwWob91C8tdyqZv78nOxxMpNFpWZ5ndhkX\nN3dZnTynHKrH/P3d0dTVRlkPE0/GCTrP+1Sz6ueb1TPXbD/Etc0vf1ZcvgCRRJJY0MlpsizeVxil\nyBX9OXPDiCWuMvGe4nYt1O+aXX+fGs8Xaz+8IeF5mu33A44sByjZD7zPNCcf7ao0uirNus7LX1bx\neIMEqVJDoar0CDvsZ9cOT1SU6gAAvVWn3U3iHAv+T5oK5eEQM0n8XjMwv+IG0NRDDrMetlPehYK1\n4YnC0eddckp/4vF+R6HSUagUsgRXttlaXuz9BECLXLZM6EUM24xn9UaOo0saYBjQqORpj/7VPi5Q\nj/sIXXizYa/C7rtdKtp4w6HRVqq0lSqa+Ve2YnYWzafeOQGJuH1dtUperVKrpdl+nsJ93d9eV8l8\neE9WHVx4X4WuqtDSbbxenTMgJO7EaZoWcj7Sm9ss+8ebrgHt0gGf9or0xh4dah0apQ6NUo5c9Bnb\na7G5AwPnejSrBZrVKvWZdfPX1j9CiKudl8PW1g88C9svvdoo6xkapRKJ7VeshS6/fp7L6xlxPzTa\nSolDpYSSfr1w/3vcIv25Vemj3a9v0u96Ou33g625hu0iB6OAKZR+xWrCg9U0ZKB1UWpFKoOgETBZ\nPPgDZmp1nVajiRazn42cngbvAMOp4F9HbZQAsMV9uBbMMfXMZw4cVzc2DNpkP34kpw4AD8mNVeIh\nF1ZgcNKieLhPpmnD53NLkHBN/XqGQi3ESvBi9m1TyBTQLnnt8KRBJXc+2DKkSrHSIpQcn4/Rqef2\nqWhDLK44G5sp/A4LpqFOr6VQLTRwBoz0Xzifimu7fIT8PJXHZ0wGuka7mmFnr0hPyXBUDPAyOTnX\ndtUMi1o6IKsOMBFg5dU6MbcVE0P6PYV6oQghCezv2njaD3SdfqvI4f4Rta7C0YePWH76gbjLuFar\nHfFhr4gGOIJp1ldieGwWhoMezXKGg8Mq7dI+n4ZLvNoMTaX7+WcNONE6VI922C91qR0dUAr8ePY5\np76m/hE3Y7KFef4mfPbv/tmKvRBbf9q+MDj7dSkgM/Tf3kSdPBxw0lc43vlMTtWoHJRJhFMXVkxy\nNit3dv3ePjmlR+FzFv9fNggs0Lu9Tj0z87uKWzdZ/kZ18uEn9st9GpkCSsxL4MKPf3lfYbH+nM22\nxZvw1ug1suruW/tW/a6n0n4/2D6q1lFpAyZChCM+7BYzZrOFJbubUOIZ28unyyXs+IMeAPrVGs2z\nuO08eD/VajTPE27QQikagX/I72Hx+EujtHNItXf5Vd1KZjQC5Wbl9StWo17sFgtmi4Ulu4/l7Z/4\n008vLlkeIubTKGYKtCYH+OhXjjm6MOp3Ua9WMlZrWJOkU0bzoeaqNCde1qE1yhv2YJiQy4rFbMZs\nseL0hUltb5x1JhfPp+JbMFuseKKrrESNEt2qKHSu9Q4aHdV4hTUYJuyzY7GYMVssOFxBEs9eGB1K\n8c2YLRYcviTbLzcJW02ASj5fNdZZDRRyX4zA3h7a5NXzFH6nFYvFzJLVSTC5zcvNEACd8hdKymX1\ng5klq5vo6ioRkwloUVNaM667ef0jhLiCycySPUAgYPSNhidwaakaXb+ylsQFDCnRbM6/vWKeS+sZ\ncU+MOjkQOO1HDRlcfmfODIv358R9+Zb9rqfRfj/YyNKyZJS2IVUyh1kqSgdtTi1r94Xxjq5ttUaV\nut6kXjSC6/RqCiuTwb/erJMfDjARwu2+3gKGIVX2d7K05tb6Gs2GAoAtECPinfUzm7FaH+zP/+Cd\ntDPkymMjLLpC7rB2xavaVAsNAJzxIMuhCC5A146pNsY7A1asPuNm7U4xw5d8lXZPn9nBuE4+Fd+K\nBavdSL9Be3B5x3DWa23Ga/u1DIfZMkpHu0GHQtw2kz1MYtkYkOuXFFo6DNsq5b6RwpFYaOZSO0ck\nScpmBjTKdfXK/GBasmLHyAOaPvvqm9U/QohFDE8UlLpR9hwxN44rrgdgvNx+RYU9q54R92jQo1FX\nAVjyeHBeOxBfvD8n7su37Xc9hfb7wS7Lt/jjbESq7JV7dKoZdqoZAByeKKFYiFgogH003W5yuAm4\nzTRbA6oNleVgAFSF4nCIxRokEPOi53Pk+kbwH7It0VKrANhCQbwLVhZm0zLPNvsc7pTR1Ay7X+y8\n3PTPuLJHr2rkyiWPc2aHE10fjQibsFgkyL+OeDJJNZejun9INWAsyVRLGfL9AbZQmhjHZKrTVbeu\nVMm3jAGfaNCLyWUjFsjwpa5TLVZJBk/vw7ETSS9TbhyhagqFA4XCgbFpTyAUJRKJEPIYi7Suk0/F\nt6Kj9YzyZ1qaHsHsVXf559vdicfOl/ea8cfXCZd3qWg9KpldKhkAO75oiGgoTjBgn1rpMxhm+ONt\n5q7+IDHidHoBlQFV2t11HL02Gkb6uZzz6lE7Tp8JyjDo9dG5vOEbnmj0Rps0mU3T73nT+kd8e7PK\n+lXmleWzZeDi1s1LpyXPMuvpwGIrK8fKrcl0xbVXuFjP+Mbu0bi8/fi6zxXzy5/ZGmZ1Iz51ewZA\naeeflHYmHztfTr94f07cl5v1u27iqbTfDziqtBPd/Ikft1aIeM7HbbtqieO9j/znjz3qZ0vwXfgi\nxo1R/YJCezCgOVqS74j7cFs8+MLGn1ptqOioKEVjgb4n4L3GvTRmnOFnbKWNJUKd8iHZSvdGf52S\n/zf/+Mc/+H2v+t3c4/GtOEJJVsIWhlQ5zisM+hWOD1TAw3Iqgm1my65TL+fRgCV3GJ8LwI4/5AOg\nXy9Sa59fbfEs8+rXF6zFAzhGGWSodagVDvn87nc+5Vqjkd/r5FNxHaWdf/L27duJ//79uXxpeRno\nGmrxCwclY+jMHfdx3a2VTPYwWz//yGY6xnmS9lBKOXY//pv3Uma/UwNOtBalgy+jvVrchH3TXcmb\n1T9CiOs6USsUy63LZ1mHA056dY72j85ukfNLsPbdGWgKlaLCTbpTi/fnxH1ZvN9lxuya+zZXeirt\n94OduTdYcIeX2QwvsznQ6bQVGsUcB6Umg26JfDVOIGEMqbp9YVyotCmjNHzolQFgJeI3AnGvPwq5\nHP2CQjNspdYfYMJH0Hvdrr8ZX2qTdfV3vtQ1ijufqVkvrtuyYw+ZoAInzQ59vLNn78UNWYmk16hU\n9mnkjvjY6qEwxJdeJeoyM+swk2G3SqlkVN++WOhs9NcejBIx1SkPW5QqClHX+aYdZnuAxHqAxDoM\nem0UtUr+4JiGptE4LKHG3PgscJ18Km7f/FmfNKuJ6Z11F9ogZ8lFJPWMSOoZg5MOraZC8fiAsjqk\nVTqmmghNbLR01VF44nZ0OsbmlWZCuBxgHbqwUkGjSrszIGSbNV7do6OMZuLttqnR/1mzPgCB9Bqx\nmXuiXL/+EffjqqPwZpEN9b69i+k00DXalUM+7ZcpH3zE6fqVZd9kWTx495aDqXeyEt1a/eoZ9Iv1\nzGXfVdyuqfKn63SbOXY/ZqnnP3Lo+pWt6GS/fZHj6Rbvz4l7s1C/y4rVYYIW6F0N41DDMWMreGZ7\nGu33Aw7uB+i6GctpYTNbcHqCOD0uTP3f+dLQJ+6HNLk8BG1m2n2NwuEX6A+wWBO4Rx1wi8dHzJSn\nOCyTPbTRBmz+MN6Fbua6yE5s/RnNd7tUNA1tahrPitfvg0qNfiNDsREh7X/AiyQeIZMjTHqlROOo\niaKA2RonFfdinjOn2qoVaYwKfHX/37zdn76mfVxGSfqMXXZ1nYHFMhbouwjYXXiXBvzjQ44hGic6\nYLlePhWL+5rzZG3BVV5sJnHdpLHWdXSL5SwINC858QadeJxmer/t0aTFnLhA3KFhr0L+2Njgzhb1\n4bYY9X7EZibXH1DKl4n5p4+46ZZzZPujwd6ABzNccVo6hNd+ZCMx/yST69Y/QojFGRujRol8qZIb\natTUDsu+q4ZbnCSfv2I1+HVh96x6RtwjiwVHIEokmEet6ahKCy1qv17wsnB/7va/vljQwv0uK3bn\nEqBz0mjRHYQY376s11LOVvDY5gzyPYX2+8FGnMNuhc+/vT/b/ELXBwx0nW69RLlhzIQ5J1LOgy9m\nVOpat2ccixT14z79Cy1eAjFjUyVVNSpuZ8B94xl1kz3Ms+dp5t2C5winSXmMz8t+eM9hqUlPHzAY\n6Jz0VNS2RAdfx4wnniYxmqkLppP45tT2w5MahaNZu15fuI4S5VoPGFA//p0/Pp9ukKczGBhLditl\nY1zPbHVgXbpJPhW3zR7a5M9v3vDmzRv+v5dJY/PMWo6Kcv0dkwG61V1+f79HsdaiN0p7Xe9RL5Vo\nAiYCWB/wsOj3ZqDrdJUcnz+cnlPsIZEIGZ0As4/kesxI8/o+7z9laXQ0dN04QqmW+8yHXWN/FWdk\nnahvusmLbv2ZN2/e8ObN//AiacwI1Y5LqJdmn8XrHyHE9Qx0DbVUojwaRXXapgvX2g9vRuX2V9YD\nFqBD+bh8zdNRxj/zknpG3J/T/lTN6E9Z7NZrrppYvD8n7s91+l1uf+xsM+zMUZm2ZsRWXeWYL0d1\nAJzxKP65Xe/vv/1+sH9Op16ioTVpjDa/uMjuS5MMTS7NcXsjWMmejb0EfJ6x0QsLHn8YCsXTqwle\nORJ8OYtnmc2tDv/dmXEfsNlF6sULBp93ySkqub3/ktub8R62pYc7wvLQWYyOfadsIxWZf3vF6fF3\n4Gb9p+lzq6FH4ePvfKnrNApV2iEntVyfzvB8g7xJdqLrMbxmaN8gn4q7Y/Gn2UqrvM80ye9/we3a\n4uLPP28Zv7EcMESz2KCnDthXSlPXgJXAyjLBG634EYuat1TeZPWR3tyeKMPW4AovNwZ82ivSrWX4\nUJsus67oM7bXps+4n2QmkNoi1XxPVi3w5cDDy83I/AHgBesf8bjM29BLNk27O5dtfGi2xokELitf\nYysp1UMOsx62U9O3Y81ynXrmqu8qt3Pcjss3p/UQC00fLzwvHV3p1/yU0Bfuz4n70qF+jX6XxZNg\nbUVh56iBkt/l9/xkeTQ7oqwkr9iI8ztvvx9scO9KvOZPngqVcpW60kTpGHdWuHwBApEIiYgP64V9\nDyweH2FTjvxwgJkk/guldcntI0iJGsOxTdW+jiO8ylq9yU55+uB705KP1Vc/E6kVKZZr1KtNeoDN\n6cPjCxCWXTq/mi24xsvgZVecH3/niC4TmZnmdiKJGNl6Dq2Vo6r+yrO//EKgWqBWUVEaRrqZHR4C\n/hCReJSg0yg6N8mn4i6Z8SXXSdXfkVUrHBz68GzFsC2cBk4Sr3/FXS1TqdZpNBW6mrGzri8QIBJJ\nEvFJmf3WHJ4QgVCYeCyEY6rFNuOKPuOXQJRKsUSpUkPpaDdLM4uH5HqKxh9HqOVdMj4vG9H5Df/V\n9Y8Q4iZsTh+BcJxkYlaZn2Syh1ldr6N8LlPPHJD3vmT5BlNxl9cz4r6YHR6C/gjxVBzvdZtfS2Dh\n/py4L9ftd5nxLb/kR0+B40JlIrZatM6A77v9Nr158+aPt2/fTjz45s2be/o64luSdH+aJN2fJkn3\np+liug+Hd3R4sHhQTBd2fZby/jTMquf/9re/3dO3Ed/K27dv+etf/3r2bynvT8O8fp0sRBFCCCGE\nEEIIIR45Ce6FEEIIIYQQQohHToJ7IYQQQgghhBDikZPgXgghhBBCCCGEeORki0ghhBDiiRjfdEkI\n8f2TMv/9u7ixmnjaZu6WL4QQQgghhBBCiIdPdssXQgghhBBCCCG+E0v9fv++v4MQQgghhBBCCCFu\n4DSmX7LZbPf8VYQQQgghhBBCCHETpzH9zA31Ttfsi+/bxb0WJN2fBkn3p0nS/WmSdH+aJN2fJkn3\np0nS/Wmat2ee3HMvhBBCCCGEEEI8chLcCyGEEEIIIYQQj5wE90IIIYQQQgghxCMnwb0QQgghhBBC\nCPHISXAvhBBCCCGEEEI8chLcCyGEEEIIIYQQj9zMo/AehgHdeol8qUK92qQHmB0evN4AsViMgMeK\nGRiqx/z93REmQmz9aZuQbd7bqWT++55sa0B0689shK1Tl2i1ff75qQhAeONXtqL22e910qZcKFCq\n1FA6GmDF5fPiC0aJRwI4lmDYr/D5X7vUGM78vNPvDbD2wxsSnpv9Sk/R+G83zmR14guEiSfjBJ1L\nV14/bjwNTloVCoUi5bpCVxu9r9dHKBon7HfSOv4/3mdOrvyekq6343rprVHa+Y29io49tMkP2xGm\nS/q0Rcr++ffwsP7TD8Rdk8/3Kzv8a6dydV0kvo7eo1bKUarUqak9ABweH75AlFg0hNtmZlY+6GQX\nL7dxrldniNtwnma+9GtepLxzZx9Oy5rZlOb1/6ZwTzyr062XJ/oODk+IQChMPBbCYZl8L2WUL2a/\n1/R3m+c69Y1Y1Pzf3ezwEPCHiMSjE+09nKfpRTanj0A4TjJh5IPhSZ0vv3+i2B/OyXMald137JR7\nuOIveL0ewDL1ruKmxvvJF11WZs9MtQV2vKEAoUicaNA5I60Wiyvm5Z9Tl9cVYq4FYqdxfaVErlym\nPuqLmx0egv4I0UQY/8WLAWhz/Mc7jloDLNZlXvy6gneqEVmsj3hZ3jw1L5Z8CB5ocD9AyX7gfaY5\n+WhXpdFVadZ1Xv6yines5A6pcpxXCKz6ZnYIuuVjsq3BJZ/Zo1qsnP2rkS/TCqdwX3izYa/C7rtd\nKtp4gmu0lSptpYpm/pWt2JxBAXGnhlqHRilDo1Qisf2KtdD106Fb2eW/O2W0i+9b7aBUe1h+eSGd\ntwfiPL0LxLZ+4Fn4puVusbJ/TiWzn8XzMoVbenrflq6S+fCerDpZl3dVha6q0NJtvJ7TBojHo5k5\nphZ+Qdgx40ldIXdYm/m64YnC0eddckp/4vGuWiWvVinkfKQ3t1n2P9Cuj1jYoKtS7apUCzmCqS02\n074rA+9+R6GYUSiXo2y/3CBgD5BMBSju12bmOb2R46Dcw0SA5YQE9t/SVWVWa2TY2c2ijHfW6NGs\nFmhWC+R9y2xur+A9e9n14wpxe64VO+kdigef2C91J95j0FWpdFUqhSzhtRdsJNwTbb2uVMmP4jxd\nO6ZUS+B9oMH3XXuQLdywXeRgVABD6VesJjxYTUMGWhelVqQyCM4sgK3cEaXI9Iza8KROLlu/4jNr\nFOvno8Mn7QzlRhx3cPwn0qnn9qloQyyuOBubKfwOC6ahTq+lUC00cAYksP+WzmbPhgNO+grHe/vk\nlB6Fz1n8f9kgsDTn+ln0OrndChrgjW+yngrisJgY6D1aSo1iw4bPAdbUX3iTOn2RSubv78kOB7jS\nr/kp5b2zv1XMS+8+pZ0sQf90ei9isbI/6UTNsPvFzsvNCDJB/+2opQOy6gATAVZerRNzWzExpN9T\nqBeKEJof2PuuUW6H6vn/ywz9tzekznG+TmDGTKlaypDvzxqob5P7+JGcOgA8JDdWiYfcWBnS71Qp\nHGXIKwpHHz5i/vEVifmjd5eSGfr7MfG7D3ROtBbFw32Oql1q2ffsLP3Ii8TkXOrEDKuu023m2N/L\nonRLHGQDeDdCOCLLpIoNsq062WwV32ZolLZtCpkCGuBLLxOcNdAkbs34LOhA1+m3ihzuH1HrGmXW\nMrZabtjO8+lDFhVY8sRZW0sSdFoxodGqFsgc5VCUYz59NPP6VQqn+WZxhczQ35brxE4alS8f2S/3\nACuhlQ1Wol5sFhMDTR2V+SXcbvuFtl6nXs5PTMzVcmU64STOr/z2D3mGfp4HOcGhdVTagIkQ4YgP\nu8WM2Wxhye4mlHjG9vK8AEoll52cdYUBzUKWYn/+0goY0KjkaQPWQJp01PhZqsUqk+P/HVpF433s\nwTAhlxWL2YzZYsXpC5Pa3pCluPfFZGbJHmBlLYkLGFKi2bx6Ce64YadNcWikbyAcwWW1YDabWbI6\n8YeX2d6QDt2DMSO9a5ND+AtatOxP65R3yZR7N/hMcTMaHbUDgDUYJuyzY7GYMVssOFxBEs9eSBD+\nHWkXMpQurNAY9iscH6gzr++WMhypA8DNyutXrEa9Rt/BYsHhibL2fJuk2wyo5DLlK8u3eMDMFpbs\nPpa3X7IRMYKCxkGB+mVNvsWCI5BmJWlUEv2SQksHzB6SK3GsQKf8hULDyHP9yjFH6gCzNUk6Mf8W\nEXH7zBYLDl+S7ZebhK0mQCWfr2IMwfcoHmWMwN61zMuX60Q8p22BHW90lefbKVwYg/DZitFG3zyu\nEF9v8dhJVwocjPpV0c0f2F4O4Djti4/K/M8/vyTpnZx8GXarlEoDwEoyPUr/Vo6actmK7e/Xg6yv\nLEtGKg+pkjnMUlE6aPNvdZvQqx6eVc4Aw26F40zr0tcMTxpUckZTH4jEiAVjAPTrRWrt8SutWH0m\nADrFDF/yVdo9naeZdR6oJSt2jDTSBpcN6Mx+7Wn1XszsUay16OmSug/aWHoPr5nccJ2yP1tpd4e8\nKnnk27BgtRlp3a9lOMyWUToa1y3m4rFokcuOB+EDGvmjOfdAajQbCgA2f4zI9I2WYPGQSAaNq+sV\nmt3pS8RjYyeSTFxrQN9mMwYDhmicjPqVFn+SlbAF0ChmCrTHbv0IryVlqfY9MdnDJJaNefPTwZhh\nX6VRN9pcXzw289Y4izdOImw80aw06PN1cYX4WovHTq2mMUFrJkl05q21dpzO6URv1Yo0GGKxxgmn\ngoTdo713ynWeYjI/yGX5Fn+cjUiVvXKPTjXDTjUDgMMTJRQLEQsFsF9IWxMhEskBuVydwmGO4A8p\n3Gadej5LgyG+dBpX9pj8cDo79WolysMhJqKE/Fas5iBJW5Fcv0WpohB1nS71tBNJL1NuHKFqCoUD\nhcKBsbFXIBQlEokQ8kzP7ZZ2/klp5/Z/JzHDiUZv1PkzmaafPnj3loMLj50uyzU5wqTTJd5nmvSU\nEvtKCQCbM0AoGiYSieCWqfuH5Yr0vsriZX9SenOLzuEuFU3l6NMeth+2kEnju2bGH18nXN6lovWo\nZHapZADs+KIhoqE4wYD91u+LvazOEHfDnkgSrBbI1/fJVIJshK0M20WyuR4mQqTSkMlUx17Ro1c1\n6oElr3PurTJWhwsrFTQUtOst7Dr/pOou/3y7O/GYbKJ5f0wOFz6TmfZwgNLpwSW3UwH0+6errUyY\nz9oMK5HlNMXKAap6yP4HD2p/gNWzSvKRLcf93jidXkBlQJV2dx3vsHc2wOd1zbsN1orTtQQVnRNF\nQwNsN4grBsMMf7zNTL273Kp1XYvGThq9jlExW0MuHItOPw8UqnljNsaTDODGjSXu52ivRq9Uor4c\nmr1/y4JmxXAP/fasBzlzD3aimz/x49YKEc95inTVEsd7H/nPH3vUZ6yp88RSpNxmTtoZcuUeulog\nU+hhtsZZjvvndPraVAsN41OjAWPzDbMHX2R019VxGWWsE2DxLPPq1xesxQM4Rqk61DrUCod8fvc7\nn3Itmcm/D8MBJ706R/tHZ0uv/DMGWi5nxpd6yS8v1okFnWeFtt+pkz/c5d3v7ylcuimj+GZO0/sg\nN0rvKEHfddP7emV/nMUR5tnzNB5goFXIZMr0brJ0QFyLyR5m6+cf2UzHOG8aeiilHLsf/837vSo3\nuTlDPCyWpSDJVWOWvXKQo6lrlI+Npbj+teWv6qiJJ0rX6dYzHBwat3XYQoGJwXqTK0YqaQSLqqoC\nVmLp+FffryseipvFFeJ23GXspDUq5PrGLVlBv7HSw+4N4sfEkDql2uWrt79HD3Lm3mDBHV5mM7zM\n5kCn01ZoFHMclJoMuiXy1TiBC5unnN47VfyQo5rZQ7MrtIHoWgr/Uo/mjE8Z310xHD7dvMeMP5zA\ndXxAmxLlWorA2NFYZnuAxHqAxDoMem0UtUr+4JiGptE4LKHG3IzP6Vx1FJ64uVmzamAlurU6cxbl\n6hFXM45AnGeBOM+GA7odBbVS4PC4jqYp5EsKEbfsmntf5qd36tqb6d2k7I+zeJbZfKby236NTnmX\nz42HOob7nVlyEUk9I5J6xuCkQ6upUDw+oKwOaZWOqSZCU5uqfg2ZpbkftvAK6+U6X+o5jj616Co6\nS6406Zgbc+3iMh079pAJKnDS7NDHO3P2Xuu20QATPqw37P089Bmbp2bYbaOMVmT6nJN19byZV7M1\nzOrqxTQ040+sEMwZx1/ZQ6vE/Q90/usJ6XSMnruZEC4HoNsJYqLGkGa7R8Izq33W6LSNkfkln3Us\nna8XV8iGerfr6thpHbtzCdDRqm26A7BeWQTPTzuy+WMER22/yREiGj2gUdJRc1WacfeMY/EW8xg3\n1Hugwf0AXTdjOY2gzBacniBOjwtT/3e+NHS0OfdCW/xJ1iJVdsoKisbYsqpZG19N7q6Y/fD/yM64\nqlGo0omOdlzUdQYWy9mSB7PdRcDuwrs04B8fchP3cYn74CT5/BWrwZsVRF0fYLGMUtdkxuEK4HD5\nWBr+i4+5E4baCQOQ4P4BmH3O/aJuUPZncMTW2Gi22Sv30DSZM75zuo5usZyVP/OSE2/Qicdppvfb\nHk1azLjzSjxKo6Wc9SOaigJYWU7HcZuZsRmeFa/fB5Ua/UaGYiNC+mJgpqvkc8Z91NZAGK/M/n8H\nepRz+bPVW17v1e2AxRln+9U6/hldBJPNjstkojYcYnHZZQDnng17FfLHxqyrLerDbQGTxYM/YKZW\n16lnCjTD08fX6c0C+YrREfeG/aOBvpvHFeIWLBg7+b0RrGTRyFEox/FOHS2u0etZsNuNdxo/7ajf\n2Odfb/enP1o7ptpI4r3ilp3vyYP8S4fdCp//W8axHCcW9GNfMhnHHTVLlBtGIjptc++qI5RK4S/v\n02Dp0mVVw3aJ49LVkbix42Icpw/qx79z2I2SiofwuW1YTCYGeodq2Rg5MlsdxozADe/nE9dzPqvW\no/Dxd77UO5SPy0SDNzj+YqCQ/c8+/ViKWMiP22bBxJCTXpVy2cgnSw6bBPb36DqzqMPhAF3Xp+89\nMlkwd69b9ucN+dqJrm/R606fvS5uX7e6y4fyEsuJOH6fA6vJxHCooZRKNAETgRvPyIqHx+JOkEoW\n+ZjrYQukiV/SOXNE06wUGxypGtkP7xnMOgqvNTomLz3rCMsBun6CzsVVAZbzgEA8DBNH4RkTN/61\n+NTqrfGZ12G3xMff9ml0CuQrUfwXV36KB2PiKDxtCHhIJEKjvped2Eqacv0AVcvx6cNg5lF4bWDJ\nkyYVHm2g+FVxhfg6g4VjJ4svzlqkzE65R2X/HcOT8aPw2lTzh+znh6y+fkHSa6Kaz7DA3sdUi1WS\nwdhEvX9pH/GW/vL78iC7QZ16iYbWpDHadOEiuy9NcuYuigaTI0x6rY6pG75kWdX5EVgmojyfcSY6\nusLBfz6S7xs7LsbdZmq5Pp3h+WYcF74Z0fUYXjMz9/MVd8lObP0ZzXe7VNRDDrMetlPTx9fMXtZt\nLLtZs9TI9btwtlHXJLMjSjo2/xxt8bD0a/v89o/pUdzo1q+E2tcs+77Q/HS3eEhtbdB9t0tFk5J/\ndzrUiw166uBss8tJVgIrt38e9WV1xmNbqvf4mPEn1oi1y7hmBuTjXCRfvODk8y45RSW3919ye5NX\nmKw+0pvbM8+4HwyPef+P4+l3Tb/mp9R5ppq1oR7IEt67Nu93ByvB1BabVwTrJkeU9S2F/+6UqR98\nIe95RcIjrflDMW/j6dMyO36rlcmV4PnLE3Z2syhqgd13hanX2X3LbG4bZ9zDzeKKebd1yAaa16Qr\nC8dOYCW8/gLd9In9Upfq0UeqU3cwW2m1egys7dHxd+Bf/ZGXyek6oFv8xG/7tdEJSLGJfDS/j/hn\nno3dWz0vbz7kjXUfZHDvSrzmT54KlXKVutJE6WiAFZcvQCASIRHxYb10Z2wznsQ2Ly65YvwILN/q\n9IgvABYf8ZSf/P7pjosvePaXXwhUC9QqKkqjSQ8wOzwE/CEi8egNlgeL22Kyh1ldr6N8LlPPHJD3\nvmTZt3h6WAJr/OUXP9VijUqzgaIaMwIOT4hAKEw8FsIhMziP3lBXblD2Q4Quec/xvCeLdu6Kk8Tr\nX3FXy1SqdRpNha52entGgEgkSeTamyqKh85kC/LsZXCxa5d8rL76mVi9TL5UoV412mipw78/N+l3\nOcKrrNWb7JRVsvtZ3K9X5Ji7B+qqMmv1p3n1S5RaKUepUqem9gA73lCAUCRONOicWGX59XGFuDFL\n4Hqxk8VJbOMXApESuXKZet1o680OD0F/hGgijN+xhJr7QgPjtKNEdPbgniOcIJFtkO+3KJUVoqtP\nY4tM05s3b/54+/btxINv3ry5p68jviVJ96dJ0v1pknR/miTdnyZJ96dJ0v1pknR/mualu6xJEkII\nIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGEEOKRk+BeCCGEEEIIIYR45CS4F0IIIYQQQggh\nHrmZu+ULIYQQQgghhBDi4ZPd8oUQQgghhBBCiO/EUr/fv+/vIIQQQgghhBBCiBs4jemXbDbbPX8V\nIYQQQgghhBBC3MRpTL8068nTNfvi+3ZxrwVJ96dB0v1pknR/miTdnyZJ96dJ0v1pknR/mubtmSf3\n3AshhBBCCCGEEI+cBPdCCCGEEEIIIcQjJ8G9EEIIIYQQQgjxyElwL4QQQgghhBBCPHIS3AshhBBC\nCCGEEI+cBPdCCCGEEEIIIcQjN/MovMegr5TIlcvU6wpdDcwOD0F/hGgijN9h/FlD9Zi/vzsCYO2H\nNyQ8F96jssO/diqYCLH1p21CtgvPqxVKxSLl0WfYnD4CgQiRZBSvdfLa8c8aZ7I68QXCxJNxgs5H\n+3M/KsN+hc//2qWGi7UfXpPwzBvD0ijt/MZeRceVfs1PKQvH795xpA6whzb5YTvCZDIPUI8/8O6o\nidWzyqsfkjjv/s8Rl7hYRs0OD15vgFgsRshznnpK9v94nznBbErz+n9TuBnPJ8O57x/deo5td4fs\ncHDp9xh/X3G7hppCKVehUq+hdDTAjjcUIBJNEg7YsUxcrdOtl8mXKtSrTXqAwxMiEAoTj4VwTF58\nli8usjl9BMJxkonJ18y7/pTkg8Wdtr8Xjf+GV7XRp+kxXl/PSyOjLQ4QiSSJ+KxTz599r2vWKfM8\n5bwwrz8Es8vWeF0c3fozG+H56WO4WTmf3W6f9wO+Nh8t1qYs8vd9Xy77XU777vFUfKxffZ4m88zu\no4FW2+efn4oAhDd+ZStqn//F9A6VYoFKtU5N7QFWXL4AkViUSMiL1WRcNqv/MPaJM/OPuEDvUSvl\nKFVOf2tweHz4AlFi0RAualeWHZhO97uM0y6rx07Nii0fgscXbeodigef2C91Jx4edFUqXZVKIUt4\n7QUbCTemW/6Mfkeh2FEo5rIkNl6wEnVeufRhqHVolDI0SgViWz/wLHxJRSNuWYtctkzoRQzbjGf1\nRo6jicbDRTwdJ/8hR696SKERIu0/T+Fht0LmSAWsxNJxCezv0yX1QKOr0ihlcEe3eb4Rmpn24jEY\n0C4d8GmvSG/i8R7NaoFmtUAuuMr2ZhKXBYYnCkefd8kp/Ymru2qVvFqlkPOR3txm2X91s9fvKBQz\nCuVylO2XGwSk2n70jLa4Q6OUIxd9xvZabDIIlDrlmzgtW9V6mpcvU7gtV79m3NeUc0095DDrYTvl\nvfGy1SvzkbiW0757rdpk84ctQl9V1/aoFs8HDBv5Mq1wCveMxNYaGXZ2syjaxKO0lRKHSoljT5yt\nrXX8Uvd/PV0l8+E9WXVykqSrKnRVhZZu43Xiuu95F3FaicT2K9a+LhM+CI8suNeofPnIftkYYQut\nbLAS9WKzmBhoKsXDfY6qS7jddsxwxfjPPDq1o4/sly58hhlO+k3KmQOOql3ye+8ZWH7iWWh6jO5s\nJGc44KSvcLy3T07pU9rJEvRvEHhkv/pj1q9nKNRCrAQv/uhtCpkC2oVHLf4kK+EiexWNQiZH2JvC\naQbQqeezNBhiD60S98sdLfdnTj1gNjEYdKgfH3GY7+INuBfuhF86mxL+H9Kj/71qNZC4Pf3qPh/2\nymiAI5hmfSWGx27BNNRoFg/ZP6zicHuwWwDa5D5+JKcOAA/JjVXiITdWhvQ7VQpHGfKKwtGHj5h/\nfEXiQm9vYkZG1+k2c+zvZVG6JQ6yAbwboYkVAk95Vva22MJbvAlvnf173kz+TU2k0XDAyclp3dCg\nXdrns9nG6/XAKF1vXqdIXrjceD050DXalUM+7ZfR1AzFRmxmH2q+ryvnAPXMZw4ci0+0XC8fnXuK\nM/SLmPhdRnXt7scsqlYhV0kSWp4sSdeZDR+2axTr5xM2J+0M5UYc94X+n9465tOHLCqw5ImztpYk\n6LRiQqdTz3F4kENzeHDKKN6tUEsHZNUBJgKsvFon5rZiYki/p1AvFCHkw2yD52/CZ6+5fNXWXcVp\nPQqfs/j/Mh2nPbb+3qOKUHSlwEHZmMOJbv7A9nIAh9WC2Wxmye5jefslP//8kqT35tGzruTYL8z4\nDIsFmzPA8vZLNsIWjM5AnuZlq3VNZpbsAVbWkriAISVqysVwUtwtjWKmQOtCOvUrxxypsxLPSiS9\nhh8TJ2qG7Ci/6WqBTKFnVE4rsuzqPs2tByxmlqxuImsv+fnPP30Xo69P1kAhf1BFw+jcvXqewu+0\nYjGbMVvs+JPbvPr5Z7ZSXixAt5QZlWc3K69fsRr1YreYMVssODxR1p5vk3SbAZVcpkz/ss+2WHAE\n0qwkjZa8X1JozV8dKh4D02nd8JyttBeAdiFDuW08LXXKt2G2WHEHAnhG6yqH15yBuZ1yrlHaOaTa\nm/nk5a7IR+KaLBYcgQB+kxGKDK64/e1yAxqVPG3AGkiTjhrvWS1WL+SDHuXMsRHYu5Z5+XKdiMeO\nxWI28md4lRevfuLlRgTbjZf/inMaHbUDgDUYJuw7/a0tOFxBEs9eXDtovus4rdmcf7vVY/GogvtW\n05jFMZMkOrORteN0ft36qEU+I5JYxgro2jGNS3PNyJIV+w0bM/H1TtoZcuWxllxXyB3W5l5vcoRZ\nThujx7VMjobWo5w9pg1408sEHXf8hcWlTsuoxbo8p4zCklXWST5mw7ZKuW/UrZHY7GXQdqfzbNa1\n2VAAsPljRLwzmjWLh0QyaFxdr9DsTl9ykc1m5K0hGicS3H8nzPgSy8RMJqBFTWkBUqd8OwN6Sh2V\nIeDB7bzOMPntlfMhVfZ3sl8xaDc7H4nr0xSFxnAAWAm4bn6z4/CkQSVnhPGBSIxYMAZAv16kNjb4\nMuyrNOpG2+KLx2beFmJ2uiSwvzUWrKMfs1/LcJgto3Q0Bl8RC911nKZ9zZd7IB7RAnGNXscYTbGG\nXDiuOSxx8O4tB7f1GXYnXkxUGdI/0blyjOREoze6ScAkFcY3FU8mqeZyVPcPqQaMpT1qKUO+P8AW\nShPjmEz1YsE3442niBU/UewXOPrUoq/qmK1xUvGb36snbsN5GV3yOmeX0YGOPgQwYbFIaj1GWq+N\nBpgI4XJelYY9elWjfl3yOufeimF1uLBSQUNBW2Bgvt8/HRA0Yb5Qbw+GGf54m5l6zWNbuvckWZy4\nfGZo6HRbPTRsX1WnSF643Oy+l5XYsw2iruu809eXc7NpmWebfQ53jNsCdr/Yebnpv86XODeVj9wT\nHerSzj8p7Uy+RDZcm/27APiXt1ieun0SetVd/vl2d+KxWUu1e7US5eEQE1FCfitWc5CkrUiu36JU\nUYi6fEbfrd8727TN67reSpx5ZV1cxow/vk64vEtF61HJ7FLJANjxRUNEQ3GCUxvjXuZ+4rRZ9Zix\nEbd34W/+LT2i4P4ROr2X4yBHGzARJXjJLr3i9jlCSVb6RfYqVY7zCoGExvGBCnhYTkUwH+dmvs60\nFCCZClDcr9FSVQDC6SQ+KTEPXr+2z792Kte6F1Y6YuLM6D7Qg0Oj3NtCAdySCe6Fyfwwfvib1Cni\nMhqNSommf/Ubb1hmxhl+xla3x/tMk075kGxgGxmDuX/NaoFq2EPUdZMB+TbVQgMAezSAcWeuB1/E\nSu64R/u4jJL0yX5X98RkD7P1s5NAoUChXETtAvRQSjmUUg53dJsXG6H76Wudxmn7R6M4LYTf8zDa\nna/xiLK6FbtzCdDRqm26A7Beow647Ci8a39Gr0NzNMJjW5oeb5o3Uh3dSknl8s0Z99BXKvs0ckd8\nbPVQGOJLrxJ1mbls+yZHZJlUsUG2NWDJlSYZkfst79/X1QPicbDaT2ffqrQ7A0K2yxLZjj1kggqc\nNDv08c6c1dO6p6sBfFgv1MPzZmTM1jCrq9MDPBLkfRtLVuOXH9KkrwEXNlXStRssn9Q7tBVjtZbD\nbcf6lXWK5IXLTfS9TjvSO5/JKTn2vjj44UVswU7915dzgxlfapN19Xe+1DWKO5+pWW+wPn8qH01u\n4iwb6s02+bsMONE6VA8/sV+ucvDBgePXFcbvuFhkkF1XquRHGyuFw6ebG5rxhxO4jg9oU6JcSxGI\n2sFmJ4iJGkOa7R4Jz+L9uquOwhOXWHIRST0jknrG4KRDq6lQPD6grA5plY6pJkLEF1rJc9dx2urU\nkavw+FZiPapusdtrFPABOQrlWbuhaPR6X7MhxyKf0aOcPz67P88/676vMSarE380zfOff5Zj8O6J\nyREmveIBVBRFW3x5vdmO3WGsz7E47FwaX4hv5uoyen3RrT/z5s2bif9+lVn7e2NyeYiMClwpP3tj\nLK3bw6jtrXj9PgD6jQzFxow2QFfJ54x9NqyBMN4F9s2wOOM8/+lrj2YSc+k64ynV76nT14w64qCh\nti+U9UGLZm20TNtlX7CsDlDyxxSHQ8BN0Gd00++iThEzjDavisWMpfBaXaG98B7Dt1nO7cTWnxG2\nGnlLu/Y+x7PzkbguY4PCaDQKgK6VaHWu+x469XL+7OSj7If/x9u3b3n79i1///2A09vtG4UqHcBk\n8+APGG1LPVOgOSMmH/Z6l2+6Kq5H1xn/mc1LTrzBOBubzzAWtbe4zl6Ktx2nGZwkn//03cRpjypc\nsfjirI1mTyv77/h8XKer6QwGA056KsWDz/z73+/JfcVOhxZfkmfxGZ+h6/Q7dY4/fxiN0FkJryeY\nlWfWfjgPEP73zz/zciNF0ClT9vfHjCeeJjEKFoKyvP5Ru7Qe0Do0WwvsliYeNrOPxJqxTK9f3+f9\npyyNjoY+GDDQezRLB3z67d98zjbRAUc0zYrHDGhkP7znsNSkpw8Y6DpdtcTBp8/kWqPjs9KRmceZ\n/XhaZ/+ygR8TeqdAviIbZd0JXSXz4T98yY/SqVenUjW657aYm9OYzGTzEQyPdr0++kJO6Rl5QGtT\nPsqQ6xtpGg1ecd/jcMCJ1qJ88ImdTBMAVzxNZDRTJHXKNzIccNKrUywaS6hNJjvWC6MyQ/0EXden\n/hvw9eV8nMke5tnz9PWW5F+Rj8R1Gb9nqVQCwIQX2zX7ZsN2iePS1bPmJ60cNWUA2Imkl/EAAy3H\npw9fKKs9dH1gHNVYP+bju9/4sFum//j3VXsQutVdfn+/R7HWoqcb9aqu96iXSjQBE4E5q2xmu904\n7VfWAxagQ/m4zLXHlh6oRxbiWAmvv0A3fWK/1KV69JHq0fQ1rVaPgXeJm+1dZyG48oJng8s+w05i\n4wUr1zqfVdwri4/keoxO2UZKltc/covUA2BxL11jkxbx0NhCz3i5YebTXpFuLcOH2vSyeUdLpad7\ncVlcJF+84OTzLjlFJbf3X3J7k9earD7Sm9szz76euM4RZX1L4b87ZeoHX8h7XpHwLLaJ2uwzecVF\nailDVu2D+l9KE2sjPcSjvrFyayWysonS+ky5W+fw/b85nHgnK8GV1Zkbs122+ZUr+oztlcDE59y0\nTpG8cLnLNjP2rYZwM7mcvbz/H8r7k9ed/5a3V84BLJ5lNrc6/HenzLzJ++vlo3PzNo57yJtwfQvz\nfhcAZzw6tQfDrA314HSJfBJtdPydiSjPZ5xPjq5w8J+P5PsapXKduC+Exb3M85cDdnazKGqB3XeF\nqfdf6qp0+hFs0l38Sh3qxQY9dcC+UprxvJXAynVPobrNOM1YxdN8t0tFPeQw62E7Nb2yd1499lBv\nv3lkwT1gcRLb+IVApESuXKZeV+hqYHZ4CPojRBNh/A7jz7rxoNvpZ8QqlIpFyqPPsDl9BAIRIsko\n3oeXluIKtuAaL4P3/S3ErbikHvB6vUSuvQOreHjMuKLP+CUQppSrUKnXUDoaYMcbChCJJgmPpbFp\nycfqq5+J1cvkSxXq1SY9wOEJEQiFicdCOBbMEI7wKmv1Jjtllex+FvfrFbySmW6NJ/GSP7kKZPMF\narUOGna8oRCJ9DKhC6cjmOxBNn/8iUA+T7FyIQ/EU8QW3KTWZHXiCwSIRJJEZr1G6pRv5PppN+42\nyzmMl/XFbse4Mh+Ja7Li8gWIJJLEgs5rla/hSf3s+Dvfanz2nlYWH/GUn/x+jV6pRH05RNgBVn+a\nV7+EqRQLVKp1amrv/LvEokRCXqxyutUtcJJ4/SvuaplKtU6jadSrX12ObjFOM9nDrK7XUT6XqWcO\nyHtfsvzIl/ea3rx588fbt28nHnzz5s09fR3xLUm6P02S7k+TpPvTJOn+NEm6P02S7k+TpPvTNC/d\nH9U990IIIYQQQgghhJgmwb0QQgghhBBCCPHISXAvhBBCCCGEEEI8chLcCyGEEEIIIYQQj5wE90II\nIYQQQgghxCM3c7d8IYQQQgghhBBCPHyyW74QQgghhBBCCPGdWOr3+/f9HYQQQgghhBBCCHEDpzH9\nks1mu+evIoQQQgghhBBCiJs4jemXZj15umZffN8u7rUg6f40SLo/TZLuT5Ok+9Mk6f40Sbo/TZLu\nT9O8PfPknnshhBBCCCGEEOKRk+BeCCGEEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdO\ngnshhBBCCCGEEOKRk+BeCCGEEEIIIYR45GYehfcYDPsVPv9rlxpDolt/ZiNsnXxePebv744AWPvh\nDQnP9HtotX3++akIQHjjV7ai9unPufR9VDJ/f092OLj0u5pNaV7/bwr34n/ek6dk/837TA8zSV7+\nzyreiWEolcy/3pPtD3DEX/DjegDL2LPDdp4/fj+gg4/NX14Rdpw+o9Otl8mXKtSrTXqAwxMiEAoT\nj4VwjL8JoGT/j/eZk6nvZnP6CITjJBPjr9Eo7fzGXkXHHtrkh+0I5zlygJL9wPtME/Cw+voFSe+j\nLXoPxPnv7Yq/4PWFPDBeNl3p1/yU8nJ5Gk2+Jrr1Z9Ic8K+dypXfZFb9I77eSatCoVCkXFfoamCy\nOvF5fYSiccJ+JxbTzdqBea+ZV95PmU1ptjbbfNqpXvndJU/cnqvS5dTF9vmm7ftVeUrcrUXK4az+\n1CLpDcBJm3KhQKlSQ+logBWXz4svGCUeCWBu7Ei9f6cGdOuliX6Y2eHB6w0Qi8UIeKyYWawPf9Fp\n368NuJdf8XrFNzWDeV6+l1h+/jMrwcm+2MXPjdvO64PLzO5TPHXnfa6LHJ4QgXCc5bgPq8l4bLzu\nnWd2udOp7P2LnZKOiQCbv7wY6/dPG2oKpVyFSv20DrDjDQWIRJOEA/ZRX3Lx/uJ5H/PheMIz9z2q\nxfMKvJEv07o8RhffkNcfwwoMyNFoTibMsK1S6xuP9QsK7Qvp1lIqtAGrP4x3VMCHJwqH7//Dbx+/\nUBg1KABdtUr+8DP/+e09x42rO5AA/Y5CMfOZ3//Yo967+vpuZZ+dTBOwEtvaksD+lrULexxWFkgI\n8Wh0K7v8548dMiUjsAcYah0a1QJfPh4uVO7EUybt+9OyWHoPexV2/vMHu5niqFMPoNFWquQPPpKp\nSsVyt4yJjov9sEFXpVHKsPspR2s6Dlz4vRuVPO3Rv9rHBer9y67XyO9/QZL8fnTVKvmD97z7kP2K\nNDcMu1VKJaPAD6lTrDSZXd0PaJf2+e2f79nPjdcBPZrVAvsf/80fn3K0v/L7PARPNsoYtmsU6+cp\neNLOUG7EcQev85N4SP/v/5A+fc8bjDSK2UwuDxGbmVx/QF1tkfafj4qdBu9wGvyn8fpPx6naKGXj\nWWfAjW30WO7jR3LqAPCQ3FglHnJjZUi/U6VwlCGvKBx9+Ij5x1ck3JNjXhMzBbpOt5ljfy+L0i1x\nkA3g3QhdmDU+p6vH7O6U0bASe/aKtfCc2QTxFTSKOzs47a9IeG5vvNIW3uJNeOvsMy4fxRW3Rq+T\n262gAd74JuupIA6LiYHeo6XUKDZs+C4Zlf9aV620ehM+/T/JE9+CL/UX3qRO/7XYbMnttO/iPl1n\nxeNi6a1Tz+1T0YZYXHE2NlP4HRZMQ51eS6FaaOAM2LHZpN6/K8N2kYNME4BQ+hWrCQ9W05CB1kWp\nFakMgnjndaaueu+TBpXceTQ/pEqx0iKUnJ+DBlqF/R0n9pcp3HM+12QL8/y80qdfMVZ2mAix9adt\nQrabfd+nZrz8DHSNdjXDzl6RnpLhqBjg5YV0us7KmFatSGNstr+ZKaHEvQQuVPf96j4f9spogCOY\nZn0lhsduwTTUaBYP2T+s4nB7sN8wDz4kT3Tm/nyEzxpIk44aP0O1WOXSgT7x7Zg9+MJGunQLCq2z\nJ86D91N19fzZYbdFvTUA3AR9RmXRLWU4Uo3HVl6/YjXqxW4xY7ZYcHiirD3fJuk2Ayq5TPnyPGCx\n4AikWUkaIzf9kjJ31FFXj/n06QgVCKS3WYs5n2qB+wZUsvtfPwIs7t+w06Y4NBrqQDiCy2rBbDaz\nZHXiDy+zvSEdbHEZad+flkXTu0OraNQr9mCYkMuKxWzGbLHi9IVJbW9IoHbHtI5KGzARIhzxGf0w\ns4Ulu5tQ4hnbyzdf2tyrlSgPh5itSdIpo++n5qo0r1ixc6JmOMzNm+kVd8FsseKJrrISNaLoVkWh\nc9M3GyhU80ZMEEqniZhMDClRrvWmrssfVNEwBhpePU/hd57WAXb8yW1e/fwzWynv3Mm6x+RJxhrj\nI3yBSIxYMAZAv16k1r7sleLbMeP1RwHQtRrqKF2GbYVKa4CJKKurIWAy+O8pFZqAxRrE4wLQaDYU\nAGz+GBHvjCxv8ZBIBgHQ6hWa3au/nc1mzMAP0TiZEVAOehX2P2VQNHBGNnmW8j7NwvYNnbSP2f1y\nxeCMePiWrJx28YqZPYq1Fj1dul5iMdK+Py2Lp7cVq8+4ubdTzPAlX6Xd0yWo+4YsS8boyZAqmcMs\nFaWDdisD8m2qhQYAzniQ5VAEF6Brx1QXuN1SyX7mQG7t+8YsWO1GeRy0Bzcuh1qjQq4/MAaMonFC\nMaOn3ShUJwYMhm2V8uh23kgsxKxxPLvT+V0E9vCdLMsv7fyT0s7i15+O8JmIEvJbsZqDJG1Fcv0W\npYpC1DW9CYf49iweHzFTnuKwRU1pEXe56al12oA95CMcHNI4rNHQaqjtFG6XRlNRAXDEfaPlfD16\nVWO0fsnrnFmgAawOF1YqaChoC9x63++fNgQmzKbJ53S9ztFOlYo2BDwklyNzP1d8PVtonRVXhd1M\nk055l32Hne2U6eoXigfJ5AiTTpd4n2nSU0rsKyUAbM4AoWiYSCSCe8bU/XXbAfF9kvb9+zAYZvjj\nbWbq8Yu3PC6e3nYi6WXKjSNUTaFwoFA4MDbqDISiRCIRQh5ZE3SXLP44G5Eqe+UenWqGnaqRvg5P\nlFAsRCwUuNGSaF2pkh+t2IwGvZhcNmKBDF/qOtVilWQwNrMPFlnfxF7eJ6ue39oX/6q/UCxOR+sZ\nfXPT0vRM86z2fPrWmPO9NuzRMH7bEoQSWAtZtFaOmhLH6TPeWeu10TBWjbic12sBetVd/vl291qv\nuW9PsI07H+GzRwN4lzCWgEeM7NI+LqMstq+auGsWL4HRKFyn3qJPj0bVCN59IT82h4+g3wwYwf+w\nr1CrDAArIe8dnU2g63TrGQ4Oje9hCwWmAo2TRoWKenr/j0ruWGaT75IJC/7UJhsRYzVFPXNIQZ1V\niM0sfRfDmd87M77US355sU4s6DxryPudOvnDXd79/p7CHe6OZgQVb3l74b+8emcfKW6NtO9Py/XS\n2+JZ5tWvL1iLB3CMKpah1qFWOOTzu9/5lGvJTP6dshPd/Ikft1aIeM43TumqJY73PvKfP/au2ARv\nFp16OY8GLLnD+FzG5/hDPuDyFTumJT+prQ3CVhOgkj3IMbPrIG7VQNdQi184KBnLNtxxHzfZjWp8\nr41A0IcFY1IwYjMDGqVynad6p+Z30dW96gikcecjfBAOnx6fZcYfTuA6PqBNiXItRWDeMSriG7Lg\n8YehUERr1GjUTdQaxvKbgNdIb3/IA40GnXoL1d6ixhAzEbxnG6vZsYdMUIGTZoc+3pkjuFr3dFTP\nh/VCqZg3g2C2hlldnX3/r9kaJh7uk8uPzybL0vy7Yye6vkFb+Ui+r3L0aY+lqSMqLVhGZ66cNHuc\nwGTa6SdoVxx3I74VM45AnGeBOM+GA7odBbVS4PC4jqYp5EsKEXdgojxdpx0Q3ydp378fi2yod5P0\nNtsDJNYDJNZh0GujqFXyB8c0NI3GYQk15sb3vazNfZAsuMPLbIaX2RzodNoKjWKOg1KTQbdEvhon\nkFh8cmZ8p3RfLIRz9Lg9GCViqlMeXr5ix2QP82yzhfIhh6Zm+LwnqzfuwrzZ7yVPmtWE0Tce731d\nvaHe+V4bZpKE/KOOu9lHKOEid6jSK5WoL4cIO8BqP12dW6XdGRCyLd4bv+oovIfouwjuF3c+wgeQ\n/fD/yM64qlGo0okmzyoJcX+W3D6ClKhRJ3vQoccQW8CPZxSh2z0BXDRoN0oc6sbUmj0Z4HzDeyte\nvw8qNfqNDMVGhLT/QqHWVfK5mnF14Pz4vMtYnHG2X63jn1H3mKw+Vp5vkPBoOE/es1fuUc8ckPe9\nZnnWPf/idlh8pLdTqO+OUDXtrJyPczj8QIWBptLugnMsrfWWSm04BKy47NLA3yddH2CxjMqKyYzD\nFcDh8rE0/BcfcycMtRMG3M3Ss+vs0i0eEmnfn5YbpLeuM7BYzuoNs91FwO7CuzTgHx9y53voSHB/\nRwbouhnL6e9rtuD0BHF6XJj6v/OloaNdc3+V8Z3Sq/v/5u3+9DXt4zJK0je1e/opiz/NVlrlfaaJ\nps3qOYi7YAuu8mIziesG5W18r40BOf77/3LT11CnVGsRTronTuAq5cvE/NO3amjdHhaH/buYhPse\n/oaFDdsljktXL9I4aeWoKdMVjH5ygq7rF/57mKM23wuTzUdwtGt+r2vc5+4N+c8KpcnlIzza6V4d\nLZsNel0TGdsRTbPiMZbpZD+857DUpKcPGOg6XbXEwafP5FqjY/LS0/fHm01pfnzzhjdv3vC/v2zg\nx4TeKZCvtJjF5o0S9pgxZpO3SHmMWweyn/fkTNU7ZvEss7k1fzd1qzdIEBND6mQOszR7OoPBgH67\nwuHRMRpg9STxyzGW92egkP3P7+xkyygdDX1UVvvtCuWyUX8vOWzS/xYTvrZ9n/me+qw2XzZhewiu\nn94D6se/88fn043cjLr/RGtRKRv37ZqtjqmVe+L2DLsVPv/2/mwzw9O6vVsvUW4Yaem0Ta+tnNf3\nHp7UKBzN7odNfO6s3dMnmPGN3donbp89tMmfR/3o/+9lEivQr+Wo3PA+qVbpmPLw6pWWZycmmH0k\n1kLG59b3ef8pS6OjoQ8GDPQezdIBn377N5+zze9iKf8TqsbOl3CYiPL8LxvTo3i6wsF/PpLvG/dq\nxH2hiSAx8/H/uLg4W2Z57tr5zDsYy+aD3vEK2IUv7IKWEdmbieP3XUxYF8kXLzj5vEtOUcnt/Zfc\n3uQVJquP9Ob21Bn3F5kcUda3FP67U6Z+8IW854qz1S0eUlsbdN/tUtEqHHzx4Xkxe3MXcTsc4Wds\ndXu8H52nO85kC7O6rdD+XKRby/Df2mSJNll9LK/FZVbvHulKjVy/C5ldKtN3w2B2REnHfFPL+MRT\n9vXt+yzl/f9QvjATKOdbfxvzboczfv9NzNdNb7eZWq5PZ3i+kdskO9H1GLK47u506iUaWpPGaDPD\ni+y+NMnQdIA9r++9+UwdBXhu1n/6kbjr4it7FD7+zpe6fraCY/7CTGMyptd9T1aV4bu7NL5SIr//\nBbdri4vJPm+DXFf6NT8lh2fH3zmi2/y4EZoa7Ncbh/z2IYemHVNtJPEGl7CFnvFyw8ynPaP/96E2\nXQ84Wio93Xuj1QQPyZOpxsaXcPhW47OX51h8xFN+AONejQWORBN3z+4Nnh2NZfVPL5t3e4NnM7W2\nqA/3jEJpWvKx+upnfnmxTjzkPdu8w+EJkVjd5udfXrHsX2ysyxFeZS1i5/Rs9eYVw3wme5j0Wvhs\nxHA/K2eq3i0zvuT6aMXENEfoGT/+/Jx01He2qZLZ4SEcX+fVT1cM1og7Zwms8ZdfXvAsGcPnOW/x\nT8vqTz9uEJAJFjFG2vcn5qR+/fTWAjz7yy8830gS9Z/3AcwOD6H4Ks9//pG1GYGluD2uxGv+9MMW\nq/EQPudpr82KyxdleeMVP7xMzey/zTTUaIw2U3REl4lMBfYAdiKJGFaMFRyVxhU9L4uH5HoKWbh3\n1877aAOtwsFhkf41RupPj78DN4nEdGAPxskMqYDxTLVYHW1qbcYVfcYvf35l9C/O8qAdbyjOsxe/\n8uPzm90m8NCY3rx588fbt28nHnzz5s09fR3xLUm6P02S7k+TpPvTJOn+NEm6P02S7k+TpPvTNC/d\nZYpKCCGEEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGEEOKRk+BeCCGE\nEEIIIYR45Gbuli+EEEIIIYQQQoiHT3bLF0IIIYQQQgghvhNL/X7/vr+DEEIIIYQQQgghbuA0pl+y\n2Wz3/FWEEEIIIYQQQghxE6cxvWk4HP5x+mC/30eC/adH0v1pknR/miTdnyZJ96dJ0v1pknR/miTd\nn6aL6S733AshhBBCCCGEEI/c/w8UHC6PGvQZzgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Excellent! Hope you enjoyed this one!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 14-Working-with-Images/00-Overview-of-Working-with-Images.ipynb
================================================
[File too large to display: 20.0 MB]
================================================
FILE: 14-Working-with-Images/01-Image-Exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Image Exercise\n",
"\n",
"In the folder \"Working with Images\" (same folder this notebook is located in) there are two images we will be working with:\n",
"* word_matrix.png\n",
"* mask.png\n",
"\n",
"The word_matrix is a .png image that contains a spreadsheet of words with a hidden message in it. \n",
"\n",
"Your task is to use the mask.png image to reveal the hidden message inside the word_matrix.png. Keep in mind, you may need to make changes to the mask.png in order for this to work. That is all we'll say for now, since we really want you to discover this on your own!\n",
"\n",
"This exercise is more open-ended, so we won't guide you with the steps, instead, letting you explore and figure things out on your own as you would in a real world situation. However, if you get stuck, you can always view the solutions video or notebook for guidance. Best of luck!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/cAAAIvCAYAAAAxnCs5AAEAAElEQVR4nOzde1wU5f7A8c8saODt\nYJlnMUsotfSUgd3AsgLT1LIShULNAi8F5v3S0UINSktTS1MrFcoLdDSxoyWlCXVM4ddFOGbqURNN\nk80stiShhH1+fywsC7sLu4DKwvf9es3rpezMzux8n3lu88wzmlJKUerEyZNc3b49onGRuDdOEvfG\nSeLeOEncGyeJe+MkcW+cJO6NU+W46y7hsQghhBBCCCGEEKIOeAJomnapj0MIIYQQQgghhBAuKhuM\nL3fuhRBCCCGEEEIIN+d54uTJS30MQgghhBBCCCGEqIGyNr2mlFIyLF8IIYQQQgghhHA/ZcPyPav6\nUDRslTt1JO6Ng8S9cZK4N04S98ZJ4t44SdwbJ4l74+To5rw8cy+EEEIIIYQQQrg5adwLIYQQQggh\nhBBuThr3QgghhBBCCCGEm5PGvRBCCCGEEEII4eakcS+EEEIIIYQQQrg5adwLIYQQQgghhBBuzq0b\n92e+TiE++j5u8NWhaRpNfLvSJ+IZ3k7bj7E4k1lNm6FpWpVLC88X2UP5KyNMxlw2LxnLwODr0DQN\nnXYtd0c8w+JN+/nd5ggMvPPo3+x+b+fgQUxasoPTxRfzjDQunye0cSm2AKc3PWX5fGjSUbvf+1fW\nXMs6i7LM25ecTOFhD0+bfZSljxUZeRf89zYGpoKK15+maXQK7kVMwjq+Ollos36JIYO3po0i5KZ2\nFeLxdtpRO9cr/JhVMc9of1Mvnpq2ip0G29fGWKcD66WJb1f6Rr/Iln35Tq1vvZSlJ1EVx/lq2eIX\nsY6fce1atV5GpOTZrFv2N3scx9aXbqEjmZEkeX1NKbKYdZW5rP7HtB38Wenzv7Lm8vfS8/3PLfk2\n2//f/DvQNI2r+qzkhNXfa1qWl6Ute1xJW8L5/LysLG8b/CrfUTmPrD4253MWcbPOnKffMqNiGlJk\n1agu6FzZUvWxWe87IGF3jc9j4+Fandp+/u18+SF1+Iuj9uWnkfdG+KBpGp66B0g+UjGPqOsypLb5\nUb2gzC9DrLC4g4PJj6u2lY67bPHQ+qs1h3ermU287X5uvTT3SFDfKJNSSqnT2+LUPXqdw3WvDZmh\ndv5ssjqKPJUU0arK728TlKC+Omuy/yMuMXeMu7XP4q9wOrZmR9Wy/i0tn18ekKC+LrSNzZ+Zcyzr\nLMw0f158Ilk9pPOoYn969fCcXaroIv322qivcS85m6lmBTu+ZrtP/dTq/Baq/yaOUh3QHK7facB8\ntfds2XfvV8ujOjlcV8NfjU38rkL8rNOBo23Gr//e6fWt09OlUF/jbqv6fLVD+Fp1WtX0WkVFJ5+y\nWbfsb/Y4E9vmHaPV2gPnLsYJcok7xP2zeH8FKG/dJPVFpTw5a97tlmPvWiEPUMqkstWcwGYKUIPf\nLr8Wa1OWl6Ute1xJW5fapY67K/m5dVneN75yOVpdbApV2nQ/y/aeWpjaeKI8tiaV6WJd0JWypepj\ns973zfG76vL0OnSp4147rtWp7effzpcfzqx7bUj9rcNbq89xr235ef5woupjle/2sskj6rYMqV1+\ndHE5irtb3rk3GdNY+Pi/OA3cFbOW/+blU1hYyK95+9mW/BJhTw7h/o7BvPDXOZRSKKX4M3OOZfuF\nmSbL3wuKn6c7GudzFvHg/S/xucFE66BYVmd+T/7ZQs7lH+U/iVO4R6/jaMYcBg54iX1FtsfUIXwt\np0u/81x+Hv+XOIoOaJzJimPG8uyLd3IaoeYeCXyjymNaObZlzud8wJtpBZb//5oTx9o0o8v7i04+\nVbqPQn7N28PyqE6Agc0zniExR9XBL2qcvloxnhcyC/HQ+vNqetn1l8+R7FReG/UAw8JCuax03R82\njKZ39AqOo+g0IIFPDpzCWGi+Xj+eN5gOaFx3Ww86tAAwsvnZ/sQkHQb0DJ7zIQfz8jl3Np8fD2xl\nbnhHFLksie7FhA3277pZ8ozzhfySu5VpIe1R5LL8sZfYesY25tZ5jPUyMUiz8+3CEet81Xo5tn4o\nVzqxffm1WnFZFelb42Oyju25/Dy+TJ7KPXodfxxJZHToFHbYSQ+iaoF3DaMtUGhK5suc8r8rckhP\n2Wf5f+6CrXxdVH5+i3MyeC+nEI1AQm/zB6h1We6sC5G2GhJX8nNrH88cxPgU+6Pq7Ck5k0bKvB8t\n/y9WqbyZUl7n0ghyqS7oWtkiLpS6qFO7Un442t/RDKnD16WalJ/fbHqTbaYSy/93zl5ls15dliHW\nXM2P6gu3bNwXH8zh7ZK/AOg/ZAjd9D54eXnRWt+F3pEzWJ/oXMWvXC4rn5vFl8pE64AZbNv+Bo8H\nXYtPCy+8ffzpGTWfLRueo5tmzljmVhNobx89t0fN4+XoVgD836KtdoZ2iIuriB3rF7NXKfT9Epgd\n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\n69x0+9d5/Bg1dw53aTp+y19Cv9An2ZB1HGNhMUXGXPYmTaNfxFwOKkXbwARm2M2h6xY62rrIwuzp\nyRw0FFNcbOTbjHlMfOY9ALo+EeP0+BNHXtwbt846/7Y8nVcwT74UQTvgh7TR9Or/PLuO5vNrcTFF\nRgNfZ2ZXOkJACAGtg2N5uSyfpYy5m4j57/Ffg5Hi4mJ+ycvktQmD6OQXwpJPC5z2re3yo+RYCo92\n7WVd2Mm8vZFv05J4Y/dvANzSQX/5fhzhVpHRwP6U6fQb8CyfKxPNfWJ5Oto8jE/Dn5AnbgMgZ34c\nz6Yc4Mey2H8wfyLP7TwH6Hl0WJjcjW0E7httXlTT0zeKNanx3KXpKMiZx4jYZLkwf0UVs2tBAH+P\nfN68eKnRXO4XGLJJ3vAmAF76m7m2LVzISWJ+UuXrLfycvZjtGbZemkeHvkSVLaz3RdpODipF+76x\nPOQvF/Xqq9bBk3kt1hdwbDMUFRo5fTSNFyJ7l63NoWfoy09yd1kn8dyn86yPuh26biERtwYxZUkc\nd2k6zmbFMW1hw3nmeV3i0SGYAYNaAJB7zHwx5t6IEOtceE//YB71N19kySpbq6hfz27Wi2+lZ7ex\nckblT8KxH7lzY9Qc6/ppCb17MTVpHyeM5r7gL3mZZH7VADv8SikFOLwup5KTyaq/zsPpHCwvTy1c\nbT1pUkopdWZXnLpXr3O77fXBM9Xen0zlPqFIfTQvVLVzs0+LTjHq3VyTy/OJST7tcKTSc5lqdlAz\n675LMk0On/OfxNGqI5rb89MRpNZ+Zd7nfOY8t9tZXuU/v7ZdybjXrnyVFNlaAapjxEZ1pty7FcVU\nKcdYWGJaWboE1B3xn12G71b76nrcS88dVquiO1fw2+vVI0u+VMXq0pYfOcvuqTD+1wcnqP3nzNt/\nFH91hdvan8eVUtfjXhVVKTdbdIpRG4/87rBf6blMNTukg9t9AqLfVt/bbd+Q8n99jrslX7XwSFBf\nqvL5x3W5X1l5Xr4OOJo8zNo+iHr9O6ft62v861vcS8/tVGM8mrr9vTX81MTN3ymlilTaDF8FqKa6\nGPWeU5tPqdJz6WpC+6sUoG6Iflv9avfer+lxDu3Bp1J/cdq/LrTPaqq+xd0dV/nYncraDBp+anzi\n16rYur0tfVzXd7Vd2V+kPorvqcDcXl+S+bvrD6yD6lPcjyb2t56nhxaiNn3rGN+sBXdZ379KF6v2\n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\nIYQQQgghhBDCNRncCyGEEEIIIYQQjZwM7oUQQgghhBBCiEZOBvdCCCGEEEIIIUQjJ4N7IYQQQggh\nhBCikXO6Wr4QQgghhBBCCCG8n6yWL4QQQgghhBBCXCR8jx0/fqGPQQghhBBCCCGEELVgGdPLtHwh\nhBBCCCGEEKKRskzL963uRXFxq3pSR+LeNEjcmyaJe9MkcW+aJO5Nk8S9aZK4N02uLs7LPfdCCCGE\nEEIIIUQjJ4N7IYQQQgghhBCikZPBvRBCCCGEEEII0cjJ4F4IIYQQQgghhGjkZHAvhBBCCCGEEEI0\ncjK4F0IIIYQQQgghGrlGN7g//U0q8TH3cb2/Dk3TaObfk/6RT/NW+j7OlMEXCR3QNK3GrX8vHzRN\nIyByPacc9lLK/y24B03T6BjyCnsx8M4jf6omvUVlOldb9e8X1fkje4H1d1ySXfNjPkzGPLYse4ah\nIdegaRo6rSt3Rz7N0s37+F817/sp2z6Pde7Vlyemr2KHwX6f7uY1d45VuFvGLIwcSl9BbOQdBGjm\nOF0bMoznFm3ioNExtatYNfPvyf0xU1mTWVDt3qrmCb/ufRgQ8yIbs+3fV1OeaO37IruR/OApy+9a\nU94oyl7AzTodzXTDSDtu/p3Lj6fykI8vmqYxJtUSL6nTzyfburtq+RsQ8yIf7C20S++qHHXu1ZcJ\nCc7LuMXJzU9Y049MPmL/2gfPcoWmodNuYUl2icN7y49v5pFOzdA0f/72QaFd3nG1WfKUq7SWdmdl\nDXXMxawu5deWu20zVOY5H60Pr+c6vv5j6iPmPFixL0/ac+d1iuO+m3r7r8hmdvOWNf6mlnbR03rC\norZ9vXJDNmsSxhHaq1ON/QEp3w2jujGdsSzLo/xj4Vl+cN3GXxsyjMnLPuNk2fn8ReqJMj8M0W7z\nVgdSHlUdqxyrZfPRBqn1h0zq8/jLnL5edZv72pSKz9Kr2dvO2u3n3KEk1V/nY/NagUqObKsA1SVi\nnTrp8ggr07naqn//+dVY4m7xe9Z867EmZpmqTXtyW5y6R69zGYeuoTPVjlP2n1FetE+9Ht3d5Xs0\nAtUzSd+r0or07ua1mo71fPPOuLtbxpQqO5Whpod2dvl7N9OHqXnbfrV7jzuxCopeqf5bZL+vmvIE\noHpHv6d+dHM/rXwS1LfqwuQH74y7eyp/V8f6utIRtWJQGwUoXy1cbTpm/p3LjqWoITofBaiYlBMV\n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\n",
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAD7CAYAAABpCe1bAAAEiElEQVR4nO3dwa3kMAwFQXLh/FPW\nRvFHQKsqggf40OBF3nPOGQAgZ2dG5AEg6N/tAQDA3xB5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg+47Zz3/rS7u7cnAPADLnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiNqZee9dVwB4gEseAKJEHgCiRB4AokQeAKJEHgCiRB4A\nokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCivtsD4IZz3vvD8u7engD8mEseAKJEHgCi\nRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJ2Zt573xMAHuCSB4AokQeAKJEHgCiRB4Ao\nkQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiR\nB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKjv9gCAXznn3J7wc7t7ewIXueQBIErk\nASBK5AEgSuQBIErkASBK5AEgSuQBIErkASBK5AEgSuQBIGpn5r13HgHgAS55AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCI\nEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8A4O+dc25P+LndvT3hOpc8AESJPABE\niTwARIk8AESJPABEiTwARIk8AESJPABEiTwARIk8AETtzLz31iEAPMAlDwBRIg8AUSIPAFEiDwBR\nIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUd/MzDnv/W12d29PAIA/5ZIH\ngCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKidmffetAWAB7jkASDquz2Ae/yY\nCKDNJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUX5QAwBRLnkAiBJ5AIgS\neQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8Afuuc9/4u\nvbu3J1znu7/JJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUTsz7711CAAP\ncMkDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CU\nyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTI\nA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQNR3zrm9AQD4A/8B\ni5wo7x6tDuUAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 14-Working-with-Images/02-Image-Exercise-Solution.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Image Exercise - Solution\n",
"\n",
"In the folder \"Working with Images\" (same folder this notebook is located in) there are two images we will be working with:\n",
"* word_matrix.png\n",
"* mask.png\n",
"\n",
"The word_matrix is a .png image that contains a spreadsheet of words with a hidden message in it. \n",
"\n",
"Your task is to use the mask.png image to reveal the hidden message inside the word_matrix.png. Keep in mind, you may need to resize the mask.png in order for this to work.\n",
"\n",
"This exercise is more open-ended, so we won't guide you with the steps, instead, letting you explore and figure things out on your own as you would in a real world situation. However, if you get stuck, you can always view the solutions video or notebook for guidance. Best of luck!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Import Images"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from PIL import Image"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"words = Image.open('word_matrix.png')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/cAAAIvCAYAAAAxnCs5AAEAAElEQVR4nOzde1wU5f7A8c8saODt\nYJlnMUsotfSUgd3AsgLT1LIShULNAi8F5v3S0UINSktTS1MrFcoLdDSxoyWlCXVM4ddFOGbqURNN\nk80stiShhH1+fywsC7sLu4DKwvf9es3rpezMzux8n3lu88wzmlJKUerEyZNc3b49onGRuDdOEvfG\nSeLeOEncGyeJe+MkcW+cJO6NU+W46y7hsQghhBBCCCGEEKIOeAJomnapj0MIIYQQQgghhBAuKhuM\nL3fuhRBCCCGEEEIIN+d54uTJS30MQgghhBBCCCGEqIGyNr2mlFIyLF8IIYQQQgghhHA/ZcPyPav6\nUDRslTt1JO6Ng8S9cZK4N04S98ZJ4t44SdwbJ4l74+To5rw8cy+EEEIIIYQQQrg5adwLIYQQQggh\nhBBuThr3QgghhBBCCCGEm5PGvRBCCCGEEEII4eakcS+EEEIIIYQQQrg5adwLIYQQQgghhBBuzq0b\n92e+TiE++j5u8NWhaRpNfLvSJ+IZ3k7bj7E4k1lNm6FpWpVLC88X2UP5KyNMxlw2LxnLwODr0DQN\nnXYtd0c8w+JN+/nd5ggMvPPo3+x+b+fgQUxasoPTxRfzjDQunye0cSm2AKc3PWX5fGjSUbvf+1fW\nXMs6i7LM25ecTOFhD0+bfZSljxUZeRf89zYGpoKK15+maXQK7kVMwjq+Ollos36JIYO3po0i5KZ2\nFeLxdtpRO9cr/JhVMc9of1Mvnpq2ip0G29fGWKcD66WJb1f6Rr/Iln35Tq1vvZSlJ1EVx/lq2eIX\nsY6fce1atV5GpOTZrFv2N3scx9aXbqEjmZEkeX1NKbKYdZW5rP7HtB38Wenzv7Lm8vfS8/3PLfk2\n2//f/DvQNI2r+qzkhNXfa1qWl6Ute1xJW8L5/LysLG8b/CrfUTmPrD4253MWcbPOnKffMqNiGlJk\n1agu6FzZUvWxWe87IGF3jc9j4+Fandp+/u18+SF1+Iuj9uWnkfdG+KBpGp66B0g+UjGPqOsypLb5\nUb2gzC9DrLC4g4PJj6u2lY67bPHQ+qs1h3ermU287X5uvTT3SFDfKJNSSqnT2+LUPXqdw3WvDZmh\ndv5ssjqKPJUU0arK728TlKC+Omuy/yMuMXeMu7XP4q9wOrZmR9Wy/i0tn18ekKC+LrSNzZ+Zcyzr\nLMw0f158Ilk9pPOoYn969fCcXaroIv322qivcS85m6lmBTu+ZrtP/dTq/Baq/yaOUh3QHK7facB8\ntfds2XfvV8ujOjlcV8NfjU38rkL8rNOBo23Gr//e6fWt09OlUF/jbqv6fLVD+Fp1WtX0WkVFJ5+y\nWbfsb/Y4E9vmHaPV2gPnLsYJcok7xP2zeH8FKG/dJPVFpTw5a97tlmPvWiEPUMqkstWcwGYKUIPf\nLr8Wa1OWl6Ute1xJW5fapY67K/m5dVneN75yOVpdbApV2nQ/y/aeWpjaeKI8tiaV6WJd0JWypepj\ns973zfG76vL0OnSp4147rtWp7effzpcfzqx7bUj9rcNbq89xr235ef5woupjle/2sskj6rYMqV1+\ndHE5irtb3rk3GdNY+Pi/OA3cFbOW/+blU1hYyK95+9mW/BJhTw7h/o7BvPDXOZRSKKX4M3OOZfuF\nmSbL3wuKn6c7GudzFvHg/S/xucFE66BYVmd+T/7ZQs7lH+U/iVO4R6/jaMYcBg54iX1FtsfUIXwt\np0u/81x+Hv+XOIoOaJzJimPG8uyLd3IaoeYeCXyjymNaObZlzud8wJtpBZb//5oTx9o0o8v7i04+\nVbqPQn7N28PyqE6Agc0zniExR9XBL2qcvloxnhcyC/HQ+vNqetn1l8+R7FReG/UAw8JCuax03R82\njKZ39AqOo+g0IIFPDpzCWGi+Xj+eN5gOaFx3Ww86tAAwsvnZ/sQkHQb0DJ7zIQfz8jl3Np8fD2xl\nbnhHFLksie7FhA3277pZ8ozzhfySu5VpIe1R5LL8sZfYesY25tZ5jPUyMUiz8+3CEet81Xo5tn4o\nVzqxffm1WnFZFelb42Oyju25/Dy+TJ7KPXodfxxJZHToFHbYSQ+iaoF3DaMtUGhK5suc8r8rckhP\n2Wf5f+6CrXxdVH5+i3MyeC+nEI1AQm/zB6h1We6sC5G2GhJX8nNrH88cxPgU+6Pq7Ck5k0bKvB8t\n/y9WqbyZUl7n0ghyqS7oWtkiLpS6qFO7Un442t/RDKnD16WalJ/fbHqTbaYSy/93zl5ls15dliHW\nXM2P6gu3bNwXH8zh7ZK/AOg/ZAjd9D54eXnRWt+F3pEzWJ/oXMWvXC4rn5vFl8pE64AZbNv+Bo8H\nXYtPCy+8ffzpGTWfLRueo5tmzljmVhNobx89t0fN4+XoVgD836KtdoZ2iIuriB3rF7NXKfT9Epgd\n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\n69x0+9d5/Bg1dw53aTp+y19Cv9An2ZB1HGNhMUXGXPYmTaNfxFwOKkXbwARm2M2h6xY62rrIwuzp\nyRw0FFNcbOTbjHlMfOY9ALo+EeP0+BNHXtwbt846/7Y8nVcwT74UQTvgh7TR9Or/PLuO5vNrcTFF\nRgNfZ2ZXOkJACAGtg2N5uSyfpYy5m4j57/Ffg5Hi4mJ+ycvktQmD6OQXwpJPC5z2re3yo+RYCo92\n7WVd2Mm8vZFv05J4Y/dvANzSQX/5fhzhVpHRwP6U6fQb8CyfKxPNfWJ5Oto8jE/Dn5AnbgMgZ34c\nz6Yc4Mey2H8wfyLP7TwH6Hl0WJjcjW0E7httXlTT0zeKNanx3KXpKMiZx4jYZLkwf0UVs2tBAH+P\nfN68eKnRXO4XGLJJ3vAmAF76m7m2LVzISWJ+UuXrLfycvZjtGbZemkeHvkSVLaz3RdpODipF+76x\nPOQvF/Xqq9bBk3kt1hdwbDMUFRo5fTSNFyJ7l63NoWfoy09yd1kn8dyn86yPuh26biERtwYxZUkc\nd2k6zmbFMW1hw3nmeV3i0SGYAYNaAJB7zHwx5t6IEOtceE//YB71N19kySpbq6hfz27Wi2+lZ7ex\nckblT8KxH7lzY9Qc6/ppCb17MTVpHyeM5r7gL3mZZH7VADv8SikFOLwup5KTyaq/zsPpHCwvTy1c\nbT1pUkopdWZXnLpXr3O77fXBM9Xen0zlPqFIfTQvVLVzs0+LTjHq3VyTy/OJST7tcKTSc5lqdlAz\n675LMk0On/OfxNGqI5rb89MRpNZ+Zd7nfOY8t9tZXuU/v7ZdybjXrnyVFNlaAapjxEZ1pty7FcVU\nKcdYWGJaWboE1B3xn12G71b76nrcS88dVquiO1fw2+vVI0u+VMXq0pYfOcvuqTD+1wcnqP3nzNt/\nFH91hdvan8eVUtfjXhVVKTdbdIpRG4/87rBf6blMNTukg9t9AqLfVt/bbd+Q8n99jrslX7XwSFBf\nqvL5x3W5X1l5Xr4OOJo8zNo+iHr9O6ft62v861vcS8/tVGM8mrr9vTX81MTN3ymlilTaDF8FqKa6\nGPWeU5tPqdJz6WpC+6sUoG6Iflv9avfer+lxDu3Bp1J/cdq/LrTPaqq+xd0dV/nYncraDBp+anzi\n16rYur0tfVzXd7Vd2V+kPorvqcDcXl+S+bvrD6yD6lPcjyb2t56nhxaiNn3rGN+sBXdZ379KF6v2\n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\nIYQQQgghhBDCNRncCyGEEEIIIYQQjZwM7oUQQgghhBBCiEZOBvdCCCGEEEIIIUQjJ4N7IYQQQggh\nhBCikXO6Wr4QQgghhBBCCCG8n6yWL4QQQgghhBBCXCR8jx0/fqGPQQghhBBCCCGEELVgGdPLtHwh\nhBBCCCGEEKKRskzL963uRXFxq3pSR+LeNEjcmyaJe9MkcW+aJO5Nk8S9aZK4N02uLs7LPfdCCCGE\nEEIIIUQjJ4N7IYQQQgghhBCikZPBvRBCCCGEEEII0cjJ4F4IIYQQQgghhGjkZHAvhBBCCCGEEEI0\ncjK4F0IIIYQQQgghGrlGN7g//U0q8TH3cb2/Dk3TaObfk/6RT/NW+j7OlMEXCR3QNK3GrX8vHzRN\nIyByPacc9lLK/y24B03T6BjyCnsx8M4jf6omvUVlOldb9e8X1fkje4H1d1ySXfNjPkzGPLYse4ah\nIdegaRo6rSt3Rz7N0s37+F817/sp2z6Pde7Vlyemr2KHwX6f7uY1d45VuFvGLIwcSl9BbOQdBGjm\nOF0bMoznFm3ioNExtatYNfPvyf0xU1mTWVDt3qrmCb/ufRgQ8yIbs+3fV1OeaO37IruR/OApy+9a\nU94oyl7AzTodzXTDSDtu/p3Lj6fykI8vmqYxJtUSL6nTzyfburtq+RsQ8yIf7C20S++qHHXu1ZcJ\nCc7LuMXJzU9Y049MPmL/2gfPcoWmodNuYUl2icN7y49v5pFOzdA0f/72QaFd3nG1WfKUq7SWdmdl\nDXXMxawu5deWu20zVOY5H60Pr+c6vv5j6iPmPFixL0/ac+d1iuO+m3r7r8hmdvOWNf6mlnbR03rC\norZ9vXJDNmsSxhHaq1ON/QEp3w2jujGdsSzLo/xj4Vl+cN3GXxsyjMnLPuNk2fn8ReqJMj8M0W7z\nVgdSHlUdqxyrZfPRBqn1h0zq8/jLnL5edZv72pSKz9Kr2dvO2u3n3KEk1V/nY/NagUqObKsA1SVi\nnTrp8ggr07naqn//+dVY4m7xe9Z867EmZpmqTXtyW5y6R69zGYeuoTPVjlP2n1FetE+9Ht3d5Xs0\nAtUzSd+r0or07ua1mo71fPPOuLtbxpQqO5Whpod2dvl7N9OHqXnbfrV7jzuxCopeqf5bZL+vmvIE\noHpHv6d+dHM/rXwS1LfqwuQH74y7eyp/V8f6utIRtWJQGwUoXy1cbTpm/p3LjqWoITofBaiYlBMV\n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\n",
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mask = Image.open(\"mask.png\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAD7CAYAAABpCe1bAAAEiElEQVR4nO3dwa3kMAwFQXLh/FPW\nRvFHQKsqggf40OBF3nPOGQAgZ2dG5AEg6N/tAQDA3xB5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg+47Zz3/rS7u7cnAPADLnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiNqZee9dVwB4gEseAKJEHgCiRB4AokQeAKJEHgCiRB4A\nokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCivtsD4IZz3vvD8u7engD8mEseAKJEHgCi\nRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJ2Zt573xMAHuCSB4AokQeAKJEHgCiRB4Ao\nkQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiR\nB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKjv9gCAXznn3J7wc7t7ewIXueQBIErk\nASBK5AEgSuQBIErkASBK5AEgSuQBIErkASBK5AEgSuQBIGpn5r13HgHgAS55AIgSeQCIEnkAiBJ5\nAIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkA\niBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCI\nEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8A4O+dc25P+LndvT3hOpc8AESJPABE\niTwARIk8AESJPABEiTwARIk8AESJPABEiTwARIk8AETtzLz31iEAPMAlDwBRIg8AUSIPAFEiDwBR\nIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUd/MzDnv/W12d29PAIA/5ZIH\ngCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgCiRB4AokQeAKJEHgKidmffetAWAB7jkASDquz2Ae/yY\nCKDNJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUX5QAwBRLnkAiBJ5AIgS\neQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIgSeQCIEnkAiBJ5AIj6bg8Afuuc9/4u\nvbu3J1znu7/JJQ8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUSIPAFEiDwBRIg8AUTsz7711CAAP\ncMkDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CU\nyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTI\nA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQJTIA0CUyANAlMgDQNR3zrm9AQD4A/8B\ni5wo7x6tDuUAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Resize Images to Match"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(505, 251)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask.size"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1015, 559)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words.size"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mask = mask.resize((1015,559))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1015, 559)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask.size"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Add in alpha parameter\n",
"\n",
"Now we can't just paste them over, otherwise we won't see what is underneath, we need to add an alpha value."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mask.putalpha(200)\n",
"# links.putalpha(128)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAwAAQNxfxaEjW03OYssAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mask"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"words.paste(mask,(0,0),mask)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/cAAAIvCAYAAAAxnCs5AAEAAElEQVR4nOzd6VciWbqw/QuQeZ5B\ncNYca+ru9znZ//+nzj7dXae6KisnTVMFmacgGEPg/RCooKCgZqYk92+tXl0JERCyI/Z4770Ng8Hg\nD4a63S4WiwWxXCTdl5Ok+3KSdF9Oku7LSdJ9OUm6LydJ9+V0Nd2N3/BahBBCCCGEEEII8QBW/v73\nv/P69etvfR1CCCGEEEIIIYSY06tXrwAZuRdCCCGEEEIIIRbeSrfb/dbXIIQQQgghhBBCiDs4b9Ov\nyMILQgghhBBCCCHEYjpv069MevM8Zl98366utSDpvhwk3ZeTpPtyknRfTpLuy0nSfTlJui+naWvm\nyZx7IYQQQgghhBBiwUnjXgghhBBCCCGEWHDSuBdCCCGEEEIIIRacNO6FEEIIIYQQQogFJ417IYQQ\nQgghhBBiwUnjXgghhBBCCCGEWHATt8JbFGeNErlcnmJVoa2BwWzH4/YQCEcJentk/vct6UH/xs8w\nGpK8+J8EzvMXeh0qhQyFUpWK2gGsuAM+AqEoYb8d09jZGoX93/hU6l37XJsrgC8YZTXqwWx4mL9X\njFPS/+Zt6mzq+9fSFtAqh/znQx6A4PYv7Iat184bqKf8880JABsvXxFzwaBb4uOvB1QYXDlavz9C\n0QQRj/m+f5K49vyBzeXB4wsTCQdwWsb7IweaQiFTolStoLQ0LtIjHCfos155XqGrlijkL/MMi92D\nzxciFA/jvpJ8o/fBKIPZjscXJBqP4rev3Hr8qPP7Sdxker56zhrY4eVeiJW5ntVL4d2/sh00jx17\n/tok09PWjMPjwxcKEQtJXn83Kqlf35Lu9rHHn/PDumds1GGgnvLrmxM0YPXJ31jzj1db1Mwb3hyr\nWLxbvHwWwXL+xh3L8vN7a9KdMM+9JZg5Pz8vy82udZ6/jGMf+5Db02bQzPLH70c0Aefqc16sjd5D\nKql/zl8XnK1sue3aLr/bkXzBjwn3XD/f8pmvTj05/569/DBLHf6ruH/52aP06Vf2Cz0M+Nj5+SlB\n2+j7D1uGtO+ZHz0GC9u4b5cO+HO/iDby2kBrUSu3UModjD8n5v5MrZZi/yCNMvqhdKiXc9TLObKe\nVXb21nDP8Ku11TJZtUyxlOTZswTOq60M8Q10KOdLF/+qZYs0ggmc94pfOb8/ylTX9thddUs4zF31\nVFLv3pJWxythbVWhrSo0ehZeXGTafZqFIz58ytMZO/ryec3419nbieMwAb0W+aMPHBbaY0d3Wwr5\nlkI+kya2/ZS1sP3W9BtoLWqFFLVCgdjeczYC1zuIxLLQaCoFmkqB7GmYrSebhOySA8zHhSdiJp3q\n0MlUaSQ9uEd+wka9clHOV+pNEv7RilsTpdTUPyXgvWjYP2RZLu5orvxcp6nHHKdd7CXmKUf71EpZ\nmsN/NU9zVKMeApYbT7rx8+YqW8RX8bXr1OffV6kk2XsidfgvY7byc9AuUyjo+ciAKvlSHf9YHvGw\nZch5LfFu+dHjsJhFW69K5qCEBrijO2wm/NhMBvq9Dg2lQr5mwWtzEfqf/0dyeMqk0dhRg2aWD+/S\nqMCKK8rGRhy/3YwBjUY5R+okg6Kc8uG9kRfPE1y9/0Z7cPo9jWY5xf6nPB01xUnex7O4E/FlTBqh\nn2TQrJCvXvbQnjVTFGtRnP75HoPLHuI+Z1qL8sk+h4U2lZMjCr4fiDrm/xsEqIUj0mofAz7Wnm8S\ncZoxMKDbUajm8hC4zJC75UPefdI792z+JJtrEVxWE4aBRj1/zOFxGZvThdUE0KNy8p7DQgcwE1jb\nZi3sxmKEs26dYuqIk3Kb7Ke39E0/shW43g97kWcM+px1FU4/HZJROuQ+pvH+bRvfypTjxb3c1jM+\nffxU9yVGUUfTtt/TaFUzHB9lUNoFDt8asfy0iWcxS9ZvxukOYSaNRpFGcx33xbNzWfECrlXcBk2F\nUqMPOPG4rMPX7leWz0pG6G82T34+qpr6yJHtJVvB2TpNB2c1Spnu5b8pky81CFzUuVwk56gLzle2\niC/lIerU84ysTv0+RerwD+ku5Wejkqc2UtrXUwWUqHus3vWQZcioefOjx2LROiMAGLSa5Ad6QvuC\nIRxmE0ajkRWzHW9wlb3tecMkOuRPUnplwLHKs2ebhFxWTCYjRpMVd3idJ3sJHMCZmiJd6tz4aUaT\nGVd4nbWwnvurmSqtu/yh4gFd9u6bfUmSYf3WL+fLdG8+8QZGVsxOwuvrhAwGoEFFaTzM5S4djZaq\nPyVmf5Cg5/z5M2Fz+IltPb2shPUVskdlNPQC+fmTBF67GZNRf1698T2e//QTuwk3JqCnZDjM6c9s\neOcle6s+bGYTRpMJi93H6t4ztoMmQKP0OUv9puhNg5EVq4+1jTgOYECBen361BDxfTOazDiD6zx5\nsoYL6Gs5TguSB8zL5PIQNBgBjWKtfvH6ZcVL16dI47KeRket0gRWnEE8Dnjoslzc1Rz5+YRzC/vH\nlGdMmk6lQHEwwGiOk0zoDTA1U745H59mzrJFfB1fu0599fsaJUXq8F/ATOVnX6Gc1TP9QDJJyGBg\nQIFiZTyDeLgy5Kr58qPHYiEb96yYOZ+5lE99Il9p0OndJSfXDboqtap+vicamRh+Y3JHiQX1N+ql\n2gwNQhNmqz6BZHAGd7868RBGe/d9oQgRfwSAbjVPpXnTmbczrJixoqe1do/7cLmZMFv037BbSXGc\nLqK0NPoThmYHTZViV/+dQ5EAk6IvrfbLObWNuj4KYyROeGIIvZVQbBUz0NNOqc1SKxxN80kXKZaK\nyRVlNSoVwTszuvDG9OpIp6Je/H4NpUQTsIbXWQtcrbh1qJVVAKx+F3a+VFku5jd7fj7JgDKH+2ka\n06dNDzUp52oA2KN+VgMhHOj5eLk2f6frvGWL+Jq+dp368vv6zb7U4b+gm8pPrVYi0+1jIEAwHCUQ\n0cuJWq48Xs4+UBkyyez50eOxkMGDBluQZLLA21SdjlLgUCkAYLH7CISDhEIhnPMM3Xc7FwvkuB3T\nQi/M2B0rUOpxpmhoMDHjv9RD6+ifaVhZ1F6U78d5776BMAGvGbPRT9ySJ9NtUCgphB2TQwRnMTjT\n6AzvH6NBUvpujHijmwSLB5S0DqXUAaUUgBVPOEA4EMU/XMRI6zTRAAMBHLfG1Gp0WnolzxxwYJt2\nuNWOGwNlBnTPetz6xI6kuWHCIjBHb15zdOU1WVDp6yvs/4fC/vhrX2YRHBN2hwuo0Ws06Ghgl4jt\nORhxukOQyXLWKKE049gdHRpVvYrm8YYI9OuclCt6xS3hxtZVqdX6gJmQd/hcfZGyXMxv9vx87CzD\nKls7XY73i2hqioPPVp7teKd+S08pkx2G1Ib9bgwOCxFfis/VHuV8mbg/Mlfazle2jOuUD/jP64O5\nzhHzmL9OPSlNDATY/cveDGsySB3+65lWfl6uk2UNB/FaViAQw5xLozUyVJQods95yjxQGTJi3vzo\nMVnIxj0Y8SSe8bOzQCafo1JpoQHdVpXscZVcpsDG06dE77dS2p2dz9c5KejdPK64b2qPkLi//iDF\nH69T116/nNtz2btvDfuGiyi58ITMZE47NE+LKHHPtXnTM3yzPuf++DPFwQBwEvRISt+VwRpk9yc7\nvlyOXDGP2gbooBQyKIUMzvAeT7cD3/Yiz+fcH57QRK8oeF3SivtS7lc5E4vE7PESMeTIDxooaoeI\nUaFU62EggM9txtr346ZCfVhxM7UqVBhgModxfoN1Tr5ex9FimjU/H/+tjNiDW+y2O7xN1WkVj0n7\n9pgcwd+jWsyiMRpSa8Ub8EC1MozKi8gaON+BaXXqLxUz1+9pNEvHHA2/zxn1sFgzrr8Po+tk+fwe\nvTPQ5SFkyZDpahSKVaKewEUn4cOXIfPkR4/LgjbuAYzYfFG2fFG2Bn3aLQW1lOP4tIqmKWQLCiGn\nb7bwKYsVPwYqDKg3O8QmLKoAGq2mPgK44jFfK7yn9dquuJKsRWQhjm/psncfgsHze8KINxjDcXpE\nkwLFSgLfhG3xJplUqQPwJTeIuKR/915WHIQSW4QSW/TPWjTqCvnTI4rqgEbhlHIsQMTqwEwJjTLN\nVp+A5abf3IzVvgL00MpN2n0wTzq806I+rCpYVq7nGpNG4sFMeHd9YiNTFtR7HL7eomc9Wk09vM/k\ndGKV1t38TG48ISP5Qg+1UqNqqFAHrAE/bgsY8BD0mqjXGihqnRW1CoAl5L3c8eQBynLxgGbIz683\nvo14Ejtsqr/zuaqR3/9IxXw9HnZ0BW1PJHAxgGL1hwkZqhQH80flmecqW8bdthWemM9D1Knn6Wy7\n6fvWY4u3WvpimVR+Xq6TZSROwDtsrho9BGIOMscqnUKB6mrgclu8hyhDrpktP3psFrZx3+v1MZmG\nqWEwYnP4sDk8rAx+5X3mjIF2Rh9matwbLC68PiOVao9qKkc9uI77yom9eo7scC9Md9B7a6iX7JH5\n9dy8Wv5l7z5A+t3/kp5wVC1XphW+up/l7IIbP7Adc0oBcB+9Hj2T6eKZNa7YcfvtuOxGOr99ok6D\nQR8MDhchi5FMt08hWyTivR56qbU7mGxWjIyuopohV4zijlyt8HcoZk/RAJN5Fa97llS0E3/ynHW/\nNA2+pEUZCe2pOU5zw1GeoEcite7EhNvrg0KJbvWUo7a+gpHL5x6mvxWnzw41lVrhmK6q/94Br+si\n3/0SZfk0slr+LWbMzyezEtncov7mgJKmoWnXjxhdQbt8+H+8Prx+zLxRefOWLeLr+RZ1aot/naey\n5eEXN6n8HF0nq0+GP/83c+28AVUKlQbBi50M7l+GTHZ7fvTYLGbjvq+Q/u8h3UiCSMCL02LCwICz\nTpliUU+sFZtljkVPrETWkhSrR6hahg/v+hO3z2mi9+IlJmyJsCiV0GUzaBY4Ldzey3Z2bf7OdKNb\n4VWP/8v7TIfKaQE15JQtsO6hXT7gXXGF1VgUr8eG2WBgMNBQCgXqgAEf5hXA6CG2EaD4sUi3esjb\nD9rYdkWNcpbjT1lWki/0VY09cbaiRT7kOpQO3zA4m7QVXg8wE9yMMaltfzkS3yH3/nc+V1sUT4uE\n/XfvEBKPy6B3Rq93PfENJhPT6pKjW/mogNEcZTUskVp3ZXb78VOmQodOW3/m/e7L8tbpCeJApamq\n+u9NFM9YtNT9y/LBoE+v17te2TOYpEE3h5nz8ykM1iBbTzp03pygXnlvcFYhd3L7rhSDOaPy5i5b\nZvtUcQdfu049+n292jG/vcvQrWQoKWEcc26XLGZzU/nZKJwOp7veTM2UqUedF/W2+5chk92UHz1G\nC3nH9pQKmW4bLhZpGWe0hUlG5lsgzeCI8eTZGfsHaRQ1x8Gb3LVjrJ5Vdvbuvi+u+Nouw3oMhHky\nYT9yegpH/31PdmT+zuzJa8SX2CVRf0tazfH5yMWznZAsznQnLar5Gh21f7FA5jgzvrVV/MPwK0tg\ni2fbRj58ytOupHhXuZ4R2BoqnZ4bh8mEf+0pW/0PHBbalE/eUz65erSV2PZT1ibscX/1uIseXPWY\n47SLvcT1kL3JYfwy2ve1TZtCM2lxw+LhfyleGf07n9/vH3ltWtoabWG2nqxLB989jI68A5i9fty2\nkfcdHoJOI83hNCtL1HdtRfz7luXdyiG//ev6MHB4969syXqYM5ovP5/G5FplZ7fFn/tFRgfLzhfI\nBSebP/4wIbT/vBO2N3dU3nxly4wfKr6JaaH2N0d7gsmbZDep8jZVJ3v4Gadjl4kb7Yi5zVR+jmx/\nZwvv8cN24FpH2nkHjKadUq7FcQ87YB6iDJlmWn70GC1kNcTk2+BvP3sp5yuU6jUUVQ+9sLkC+AJB\nopEAtjtkumZvkuc/h6kUMhRKVSpqB7DiDvgIhKKE/bIFyiIZDevxrEcnh+aZPEQTXrKHlYv5O3Mt\n2WZyEd9MUPvjBLV4QMrjZnvWUQIxwk7sxS84y0VK5Sq1ukJbA4PZjsfnIxSKE/KMNoqNOMJb/OwL\nUsiUKFUrKC2N8+c1FI4THF2N2WQnsv0zvkiJQj5Psap/vsXuwecLEYqHcc/Y5jZYg6xvVlE+Fqmm\njsi6n7EqLbolZcbh8eELhYiFZArW/Vnx+l1Q1RdAdQWuhs07cPnN0NDLfJ/XNbFMlrL8W5s3P5/O\nFlxno1pnv3i+0XTjYoFcW3iV0MSFsKyEYhHS1QxaI0OpFiXpnbXbfs6yRXyHjHjimySqb0irJY6O\nPbh2I1gkf39gk8vP8+3vwEksdr1hD2DyRkn48hN2xniYMmSa6/nR42R49erVH69fvx578dWrV9/o\ncsTXJOm+nCTdl5Ok+3KSdF9Oku7LSdJ9OUm6L6dp6S4B5kIIIYQQQgghxIKTxr0QQgghhBBCCLHg\npHEvhBBCCCGEEEIsOGncCyGEEEIIIYQQC04a90IIIYQQQgghxIKbuFq+EEIIIYQQQgghHj9ZLV8I\nIYQQQgghhPhOrHS73W99DUIIIYQQQgghhLiD8zb9isVi+caXIoQQQgghhBBCiLs4b9OvTHrzPGZf\nfN+urrUg6b4cJN2Xk6T7cpJ0X06S7stJ0n05Sbovp2lr5k1s3Ivl8o9//AOQzOB79/e///1bX4IQ\nQgghhBDiC5EF9YQQQgghhBBCiAUnjXshhBBCCCGEEGLBSeNeCCGEEEIIIYRYcNK4F0IIIYQQQggh\nFpw07oUQQgghhBBCiAX3aFfL75b2+XW/hAEPOz8/J2gbfVejsP8bn0o9VpzrvPghjn3k3cFZhU//\n+UhxMCDx7P+R9F72YXTVEoV8nmJVoa2Bxe7B5wsRiodxm6ddTY92tUi2UKJartMBbK4AvkCQaCSA\nzTR+tJL+N29TZ9c+xWC24/H5CIXihDxTv0yM6nWoFDIUSlUqagcw4/C48fjDxMI+rBe//eU9cZXN\nFcAXjLIa9WA26K8NuiU+/npAhcHUrw7v/pXt4NV06lH69Cv7hR4GfOz8/HTs3pyW9ldtvHxFzHXr\nYYLRtHKw8fIFMde0PsnLe8CRfMGPCff1z2pm+eP3I5qAc/U5L9Y813o4B+op/3xzAoym0/T7y2hz\n4fMGCEXD+O2PNkt9FM4aJXK5y/zXYLbjcXsIhKMEvXYap7M/P1Eu02mUns8GicajU9Jjnvx85J6K\nPuXFpo/x7F4l9c+3pAf9yffczPnX8hl9zqbZePmKqGVaXm3FHfARiiaITClP5ynvL6/HxeaPL4k6\nrnzWRZ0kwO5f9lgpSF7/EOYpM6c981ePu/57Nzn94w0njT4m8ypPf1nDfa0YuXzWPckXPE24p45+\nnd8LRkOSF/+TwHnr1S+ngaZQyJQoVSsoLY2LZzYcJ+izDvPSy9/dGtjh5V6Im2vH89XH4fZyx2SY\nr044Pe8y4/D48IVCxEKX9U1x7u719PDuX9lyK7emEXDtPprlPrz6XVfr/pPrhY/Xo62Jmt1+/JSp\noFBWOgRt1ov3BmcqSrkPQK9RpdmOYx9pYJ3VFYqDAUbieM9z8F6L/NEHDgvtse/pthTyLYV8Jk1s\n+ylrYftYhj44Uzj5eEBG6Y6d11bLZNUyuYyH5M4eq97bf8qB1qJWaFErZMiEt9jbiEzMiIROq6XY\nP0ijaGOv0lTKNJUyuVMP60+e3tDY052nVaWSZO9JAuc9fvNBu0yhoN97A6rkS3X8N1QCxENqkEkX\nCTyNYJnwbq+W4WRCoXGpT62UpTn8V/M0RzXqITDpw+bQb6uU2yrlXAZ/YpedpAd5rK9rlw74c7/I\n6OM80FrUyi2UcgfTz09vqdTNRs9nU9QKBWJ7z9kIjJYdd8/Pm7lPHLtfshW0XntvkofKv8Q0Herl\nHPVymeraHrurI/nwHct7nUrqMI3r2f3KCvF49JQy2cawzqidUqjEcF/ruL9UT51SCT69Mqh08WFk\njitf6Eq/F32ahSM+fMrTGXv9/JnNkfGvs7cTxzHHM3aX/HuWcmdiOt+JRlMp0FQKZE/DbD3ZJGSX\n/H0W52lYLCV59mB57+z3oX3KJyyqR9u4N1hceH1GKtUejVodLWK9qPidN94BBtca/z3UWgEAS9SD\nw6i/Vjl5z2FBHzkJrG2zFnZjMcJZt04xdcRJuU3201v6ph/ZCpx/U5PM+/dk1D7gIr69TjTgxMyA\nbqtM7iRFVlE4efce4w/PiTnHH+KxXt1Bn7OzFtXTE46zNZqFQz4aLRNGggRAr3HKh3dpVGDFFWVj\nI47fbsbAgG4jz/HhCU2LB/eEjHO0167f02iWU+x/ytNRUpzkfTyLj/ezTx6hn6xRyVMb6TWspwoo\nUTe+4ZPkSfyNV4nzd28Z1RNz61ZT5CoB1vxXs64muVRurAC/anBWo5S5rBQMKJMvNQjE5xt3GesV\n7vc40xrkjw85KbeppN+yv/IDT2MyljOmVyVzUEID3NEdNhN+bCYD/V6HhlIhX7PgsYF5judnoF7+\n90VP+qDPWVfh9NMhGaVD7mMa79+2h8/n/fJz0Mjv72O3Pr+1QX6f/GsZ3TQSMhipx1/m1X3OtBbl\nk30OC20qJ0cUfD8MR9vvWt5fOlNTHHy28mwnNLEjESSvfyjz/I4Tn/lb9agWs2NlQyVTpBWcXqEf\nUOU0W8U3oX6mFlJku/1ZvnhpdcuHvPukN6ht/iSbaxFcVhOGgUY9f8zhcRmb0zVn5NId8u8Zy52r\n5qkTjt6H/Z5Gq5rh+CiD0i5w+NaI5adNPI+2pfXtTK2nq5Pr6QAGS5Anr4IX/74aTXV1oGau+/Cm\ncaEF9IhrFla8fv2J6ZYr1C8K+MvG+7lGrX6ZcfcbKHm98RXwujABPSXDYU7vtwnvvGRv1YfNbMJo\nMmGx+1jde8Z20ARolD5nqQ/z7XYhxYnaB5ysvXjOetiN1WTEaDJhc4XZeLJH3GkEVDKpIuN9iVcY\njKyYnYQ2nrCb1AusZi5FsXnTScuqQzF1qleMHas8e7ZJyGXFdP7be+I8+eEvvJxhFN5oMuMKr7MW\n1g9slBRad72svkI5qydYIJkkZDAwoECx0rnlRPFwNPKpHI0rdatu6XT4rE7XqRT0iB5znGRCLzjU\nTPnieb8To4kVq0fPQ0J6B2PtKEf19ijTpTJoNckPO2R9wRAOswmj0ciK2Y43uMre9m2hmDMyGFmx\n+ljbiOMABhSo1/XEeJj8XCV9mKZxY0Xg4fIvMY1enobX1wkZDECDitIA7l7eX9UqHpAqSt6+6C6j\n7czEkwkcwFkjQ0W5OeNv5lIUrpQpg26J0yN1yhkCgL5C9qiMht6Ae/4kgdduxmQ0YjRZ8cb3eP7T\nT+wm3HMNbN0l//5q5c6Q0WTGGVznyZM1XEBfy3FaaDzgN3yfrtbT1Uz17vX0c1/oPlwUj7hxD1ZP\nEDf6CFujMawt9+pU8/oDnlxPYGa88d+rV8kO+hgI4HTq3WWNut5zYyROODAppNJKKLaKGT1kq1bv\nAxr1mgKAxRshdH2CFphcxOJ+ALRqiXr7+iHXGfHEVolcqZCIS4OuSq2qF6reWGRyBdhkxjzzE2nC\nbNUn8fSbfe7altNqJTJd/d4KhqMEIvo9UcuV758RiZmdNVNkRivdM4VJNinnagDYo35WAyEc6M97\nufYQLXEroXjsWoNSDK2YOR+Dy6c+ka806PS+4OjXihkr+jOv9Qc8ZH5+1jzl4PP0ztyHz7/ENIbR\ndB7eT3cr7ycrHOyTvaXTUDxu59F2JnOUYMJP0GkENArF6i2Ddfo0sMvnvE8te3LrfN9lN2iqFIeR\nDaFIYGLki9Vun7NBdcf8+2uXOxeXEmU1+gADSkvlsp4+OOPO9fRzX+Y+XByPOljEYHPicxqpN/qU\nayqrfh+oCvnBAJPZjy/ippfNkOnqjf+AZYWGWgbAEvDjtgBodFp6RdsccGCb1p1htePGQJkB3bMe\n0KFT1jPxFbd9amie2ebATAkNBW3W+rzJjsNjhFqPdqODhvNBew8XXrdzUYC67JPnt/Z7Pf0IgwnT\nrV1UPbSO/nmGles9WoX9/1DYH3/t+sIuHcr5kv5eOIjXsgKBGOZcGq2RoaJEsXsedV/ZdyEaj1PO\nZCgfHlP26WFY52GSlkCSCKekyteLhcs5l07CfjcGh4WIL8Xnao9yvkzcP3ke/zwMNgceg5HmoI/S\n6sC1qQPLy2ALkkwWeJuq01EKHCrDqVN2H4FwkFAohPMhM8Ezjc4wDzEY4CHyc0tgkzVHiYNUnVbx\ngEOblb3EhBWTHjz/EtMMRtLZaNAbbXcr78cPTO7s0jo+oKSpnHz4hOXlLo98/aSlc/TmNUdXXrsW\nyj8SbeeK+3DixBT1cvKpQqdQoLoamDjf2hqL4y/nyFYPSZX8+iJqzTzpTAcDARJJSKXKX+6PW2Ba\np4kGGAjgeLBpR3fLvw2uu5U7s9UJb2LC7nABNXqNBh0N7FLJv8XN9fR53ec+nJT+i+aRVysceEL6\nkrXdnEKz36c+DMm3RT04TS48Qf1PKNdUeqgoeT1A3+VzS4P5u6Vy+u//8K9//Yujyk2zrPW5PGr+\nM0cFvY/eGfUw23JY4wbNCvmq/hk+v75gmsnlIWSZdRRAPARbIM5a0MSAMqdZhf5FmKSL1UQIi2HS\n8rSXcy5XnEE8DgAr3oAHgG41T0Wmx3xhRjyJZ/z8dJOI336RN3dbVbLHB7z5/S25q3Mt7mLQ56xT\n5eTwhCZ6we51PUxJYMCEN7FzMf2imjomp94lQmP2/GtZHL15zevX4//7PV2/4Yw+Z1qDwtHn4fo7\nToKeh1sSyWQLsvUkOQytLZFKFekMZMR20ZxH24ETv1efimV1+/FiYECVQmVy5KRpxU98XR8FLh1l\nqPc0iqcpVMC7sfqAC7CJL+srlTviXvo9DbVwzMmwnu6K+767Be6+tkc/tOT0BHGg0qSIUvPQK+lz\np0JevXfW7Q1DJkM3p1APmql0+xjw4HefN+HMWO0rQA+t3KTdB/OkLo1Oi/pwBMCyYgKsWAMGKMFZ\nvUUX98TeQq193jvkwTzrr9lr0RzO97I5rdIJcZXFih8DFQbUmx1irvma453yAf95fXDt9RVXkvWY\nvqLyaDXt9sVTLldZNxIncL4Sq9FDIOYgc6zeOAogHpKZUHKDUumQWuaE940OCgM8yXXCDiOlCWeM\n7nDgiQQuCg2rP0zIUKU4aFAoKYQd17fFm8eg3UQZDL9nyojtcjNi80XZ8kXZGvRptxTUUo7j0yqa\nppAtKIScd1tgdNIoHpgJ764PF9l5qPzcSnhzm6bynmxXH9VdGVypHN4z/xLTTRtR8SU3iLiMgPGO\n5f11JtcqO1sqvx1WaBUP+FiTkvoxuX1BvctoO4s3gn+4taHBFiAcPqJW6OlrrkSdE7bFA0twjc1i\nlc/VDCcfGrSVHiuOJMmIE2NF9jibxmw9Hz0v02z1CVgeYgzxPvn3bOXO6FXOs6DeZD1aTX1tBpPT\niVWyjmtuqqevRe6/IPF97sPbtsJbBI++cW9wuPBbjDS7Grnjz9DtYzLHcA4zapPLQ8SQJT8okj62\n0AQs3iDukUaW0x3CTBqNDLliFHfkamWrQzF7igaYzKvD7fOMuL0eKFXo1lLkayGS3is3R08lm9Hn\n+pp94985XR8lezpc5MOJ3yOral81ulNCNZWjHlzHfc+JMRb/Ok/n3Hbl3Ogq630y/Pm/mevHDEcB\ngnOuvC7mZ7AFSa4VqJ3UURQwmqMkom6MU9bKH93hoHz4f7w+vH5M87SIEvdc7Howvw7FTHY4WhzG\n7X70WetX1+v1MZ3HoBuM2Bw+bA4PK4NfeZ85Y6Cd0YcHmgNnJ/7kOev+8wLa/HD5uclDci+B+uYE\nVdOu3XVfIv/63t1n3+Dgxg9sx5wXlfO7lfeT2SIbbNebfCp20DSJslgko9F23dohv07I+PU1V+K4\nJ06hshJKrlKsnlBXFMDMajKK08jNiycvOYPDRchiJNPtU8gWiXivT3nT2h1MNuscnel3z79nLXce\nMoy5p+Y4zQ2jRYMeGYWewaR97u/jy9yHi2MB/iYXnoheQdPaHX1Lg7CXi12KTG58ET00WlX1ECu7\nzzmWiCZPnK2oXsCXDt/w8bRKW+vR7/XotqqcfnzHp1IPMBPcjF304trCSdZc+men373luFCn0+vT\n7/VoqwWOPnwk0xhuy5GcvmUOoIeLag2KRx/YT+nhho5okuGsAzFGL1T1kMgMH959pqh26F389nWa\nN4RIWgM7/PXVK169esX/9yyuL7pYyVBS7rbIWaNwerH14k3uvfK6mJERVzRJbNgT60/Gp241Mzir\nkDu5fdHKO+960O9x1lH0PGS4yJ93I3qPToLvVF8h/d/f2U8XUVraxbPcbZYoFvVK0IrNcueG/cZL\n/Xl/9eoXNn0moEXxtDi2kNFD5ucm1yo7u9PmX94v/xLThXf/Okzn/8fTuF6mV04LjM6OuGt5P5mV\n8OYuiVu2PhSPTY9yNsUss63K+fLUxrrJGSMxvM8sviRRWUfldkYPsY2AXu+qHvL2Q5paS6PX79Pv\ndagXjvjw2//xMV2/NpVxMOjT6/Wu/69/x/z7C5c7V/V7Go3SMR8+nKCiDzyshmXAZ5LRevqrV6/4\n+eUeG7GHadgD97oPvwcLkVNd9sTrfB7XSK+ECZc3CLn8+dETRsNN+NeestX/wGGhTfnkPeVr0RVW\nYttPWRvb89ZB/OlTzj4ekFFUMp/+JPNp/CyD2UNyZ2/CnsjQH6T443Vq4t/kCG+xtyZ73E9jcq7y\n5Fmf/YM0iprj4E1uwlFmzKabcwKTN8luUuVtqk728DNOxy5XF1CeFurpSL7gx/jgYkEeW3iPH7YD\n19KsVzvmt3cZtBtHAcSDMnmIb0ZoFS0kQtPDns+3vwMnmz+e74M9dgS597/zudrTdz0Ix7ktAGda\nOBmY8Sd22ZE97q/pKRUy3TakDihNyBKNtjDJyP2mReisRDa3qL85oKQec5x2sZdwDz/3fvn5Vbbg\nFrvtDm9T1+eGP1T+JaYx4kvskqi/Ja3m+HzkGtmT/q7l/RQmF4ndbdpvDihp0inzWEyeiqN3AG05\nqxdTsbzrP0zcM7ud/8Bvh5XhmiuRCWUDgBFvbINIs4jjtgEcccES2OLZtpEPn/K0KyneVa5n+raG\nSqfnHoum7FYO+e1f1yMs9DDp+fPvecqd0Sf7xjrh6IKNTL8PjbYwW0/WZY/7b2ie+/B7i65YiNvO\n5PIQNGTIDvoYiV8Lo1txevBToMJgZMGsqx9iJ7L9M75IiUI+T7Gq0NbAYvfg84UIxcO4J5TzhhUP\n689/IlItki2UqJbrdBiGkASCRCMBbDO20A1mOx6fj1AoTsgjk3BuY/Ymef5zkFI+R6lcpaJ2ADMO\njxuPzz/jCttGPPFNEtU3pNUSR8ceXLuRmdc5GF2QJxa73rAHMHmjJHz5B115XdzO4t/gmf+mIy63\nv7OFV6dEyVgJxSKkqxm0RoZSLUpizh43o82FzxsgFA3jty9ElvrVmXwb/O1nL+V8hVK9hqLqUQ53\nyUdvY7AGWd+sonwsUk0dkXU/Y3VYw3rI/Hw8b7kesvMw+ZeYyuQivpmg9scJavGAlMfNdnjY0XfH\n8n6a0XtKNrl8/M6nYhkIE5sycmoLxoila2S7DQpFhfD65Oq9weJn6+aCRlxjxBHe4mdfkEKmRKla\nQWlpgBV3wEcoHCfos849uDVv/v01yx2dGYfHhy8UIhZ6wFFocUez34eD72z43vDq1as/Xr9+Pfbi\nq1evvtHliK/pPN3/8Y9/AJLu37u///3vwGW6n5N0Xw6S7stJ0n05SbovJ0n35STpvpympbtMJBNC\nCCGEEEIIIRacNO6FEEIIIYQQQogFJ417IYQQQgghhBBiwUnjXgghhBBCCCGEWHDSuBdCCCGEEEII\nIRbcxNXyhRBCCCGEEEII8fjJavlCCCGEEEIIIcR3YqXb7X7raxBCCCGEEEIIIcQdnLfpVywWyze+\nFCGEEEIIIYQQQtzFeZt+ZdKb5zH74vt2da0FSfflIOm+nCTdl5Ok+3KSdF9Oku7LSdJ9OU1bM0/m\n3AshhBBCCCGEEAtOGvdCCCGEEEIIIcSCk8a9EEIIIYQQQgix4KRxL4QQQgghhBBCLDhp3AshhBBC\nCCGEEAtOGvdCCCGEEEIIIcSCm7gV3uOlUdj/jU+lHtbADi/3QpjH3ldJ/fMt6UEfR/IFPybcY+8O\nNJVSvkChVEFpaRjMdjw+H6FQnJBn/JMG3RIffz2gwoDw7l/ZDo6/f3Gceso/35xMeMeMw+PDFwoR\nC3kwG+71h4srukqBTLFItarQ1sBoc+H3hgjHgnht+m09mjYbL18Rc135jNI+v+6XMBqSvPifBE6m\np6d+rwSJxqP47ZePjZL+N29TZ2OfIe5m+rMEFrsHXzBKPBbAZjp/9TI/uMrmCuALRlmNTn/2tMoh\n//mQByC4/Qu7YeuE98ysPf+FVc+EftC+wvFv78l0+wS3fmHHUZp6/ecm3Ydiil6HSiFDoVSlonYA\nsLk8eHxhIuEAToueJufP4FW33TN6GWIjNywzbnL+fPemfNfV4yQfuLvRsvcqmyuALxAkGhlNU7gp\nLzg3Xmfo064WyBZKVMt1OuhliNvtIxKJ4HOZMXJz/t4uHfDnfhENM5Gdl2yFrJO+VszopnQ/d70u\n1uT0jzecNPqYzKs8/WUN97Wsevq9YbS58HkDhKLhsXIdbi6Pzkl+fleXaeKIPuXFpo+xx/mWujzA\noJnlj9+PaALO1ee8WPNcG608T0MDAXb/skfAMuVy+iqpP9+SbvRH7rF58xTxEGarU9/QFjxrUszl\nLtp5elvMjccfJhryYazp9f7b3NTuWwQL1ri/qz7NwhEfPuXpjLw60FrUCi1qhQyZ8BZ7G5ErFYb7\n0GgqBZpKgexpmK0nm4TsEihxb70W+aMPHBbaYy/32yqltkoplya48ZTtmJOH7E/R75UUtUKB2N5z\nNgJSkfuaui2FfEqhXE3y7FkC5y3PaVstk1XLVCpJ9p5MOr5DOX+ZwdeyRRrBBM7hI2r2BolbimS6\nGoVilagnwNWP0GolMt0+BgIEfFbo3vevFBd6Kql3b0mr443utqrQVhUaPQsv1q9X5kad3zPFXJCd\nl7vII7v4zp/rXMZDcmePVe9dqjB9lPQ73qbq46+2VWptlXq1x7Of13HfkMf01FMO9otogC+5x4Y0\n7L+JnlIm29DziJ52SqESwz1HhbzfVim3Vcq5DP7ELjtJz7V8XnxZzdwnjt0v2QrO8wz1qZWyNM8/\n4zRHNeqZ2ngfUOY0q+CbUma0i6ekGzd38IrHb9ApcfDmgJI22kGo0VTKNJUymvEX1pfkAV+Kxr1W\nOeHdpzwaYPMn2VyL4LKYGPQ71Ispjo7LNAuHfBis8HwncOdeuNFe3H5Po1XNcHyUQWkXOHxrxPLT\nJp6l+MW/FI3S5/ccFjuAmcDaNmthNxaTgb6mkj8+5KS8gtNpxQg39P/P5iI9B33Ougqnnw7JKB1y\nH9N4/7aNT9Lyi7n6LDVLx3w4LKKpKfK1CFuB8ad0tPe239NollPsf8rTUVKc5H08i4/3/w6aFfLV\nyx75s2aKYi2K0z9MVKOHQMxB5lilUyhQXQ0QtI1+wmXngDUcxGthrHEvIzr3oxaOSKt9DPhYe75J\nxGnGwIBuR6Gay0PgeiVtrKe/16Ndz3D4KY2ilThJB/BuX++gARfJ//l/JIf/ui3aR5n0XeKLGR09\n6fd6dBt5jg9PqLQVTt69x/TjS6KO8XNuG00bNPMcDRv2geRz1mMuzIYBfa2NUslT6vtvbNgPOiUO\nP6RQAe/qc3YTbpnf+MBmGzXrUS1m0UZeqWSKtIJx7FPOGLs3+j3OtMaw3tCmkn7L/soPPI1df6ol\nP/+SNPL7+9itz4m5ZnuSBmc1SpnLAndAmXypQSA+PUduZE4ohK7nF4OzKpl09cbvkxH6RdCjmjmk\npA0wOaJs7yTw2kwYBj06DYVyrobdZ8Vi2eVVcHd4zm3R4Ivr+y+T+gqZz3rD3hrY4fmTBF67GZPJ\nyIrZjj++x7OdAACt4mcKysP03hlNZpzBdZ48WcMF9LUcp4XGg3z2suopOY6KeuxFeOcle6s+bGYT\nRqORFauH1b1n/PTTM+LuB251G4ysWH2sbcRxAAMK1OvTQ3PFwzKazDh9PlzDWIzBLb02RpMZV3id\ntbBeQ2+UFFpjR1z2+pt9SZJhPRss58tjg+9OfwQvBgZUKVTGn93LzgEz4dDVkEJxPxotVU8xsz9I\n0GPFZDJiNJmwOfzEtp7eXtE2mbD5kqzF9QM7hTJ17ZZzxKNmNJmweeLsPdshaDYAKtlsmelBs5Np\nLZUmYCBAMOTBajJiNJpYsToJxLbYW70eAnxu0Knw6Z0+MmQP7bC9JiO938qgXaZQ6ANm4skEDuCs\nkaEyax3OaLqoN2wPIy9qRzmqUrR/AyrpwzSNGR/mTqVAcTDAaI6TTOgNejVTpn5j0qtk0kXGi4E+\n9VyafPe+Q0Hi22vRyOvpaPUHCTjMmIxGjCYzdk+QxN729GkZ36HvvnE/aKoUu/oTH4oEmJS2tlCc\nhMUIaBSrKg8ZnGNyRVmNTmtkiHk06nrGbCROeGKMrRW7/QtWtVbMWIcNTK0vhcHX06ejVFEZAC6c\n9ln6Vk2YrXpa9Zv9sWd6tNffF4oQ8UcA6FbzVJqXxxlsAcLDhv/VikO9oncOrDjj+CfNxxf3YMJs\n0dOuW0lxnC6itDTu8shZLOf5xOBO54vHx2ANElvVK/TdgjJzg+CcaUWvBQwokzpOU1JaaLN8Rk8l\nvb9PsT1gxZVkZzM0sT4hvo5GJU+NASZzlGDCT9Cp1+EKxeqcHT5WQvGYdNx/Y2fNUw4+F2eY3dak\nnKsBYI/6WQ2EcKBPyyjXbk67TvmYXO2yIB+0S5ymZNDt+2DG7NHrDa18is/ZMs1O70Hbc4tkYQOL\nO+UD/vP64NbjtE4TDb2X3jF1zrsVu8cAReh3uvR4yB/GhN3hAmr0Gg06GszUNhFXaHRaesZtDjiw\nfYv21JlGZxjsb5AFEr+oozevObr2qpnI1jZhx4QTrumhdYZptTLei3ne628gTMBrxmz0E7fkyXQb\nFEoKYcd5yLcJXyiGuZBG0wrU1QRujxH6CtW83v/vjQYmhoBOuv5pCwOJq4x4o5sEiweUtA6l1AGl\nFIAVTzhAOBDF77PONGLa7Z6vsmLA+IDPbH+Q4o/XqWuvS/ju12G3uwGVPmWa7U08I9G4k+oGowtq\nmbxRtkNlPhU7tMop9st6OtpcYQKRAJGAD+uVm2swaJL5nKc0XAMishq9dd0P8QX1FcpZvSfWFffh\nxIkp6uXkU2XKNKqbGWwOPAYjzUEfpdUB/3gNUPLzL8cS2GTNUeIgVadVPODQZmUvMT2zvlxnwUnY\n78bgsBDxpfhc7VHOl4n7I9c63QwEiMX7ZDJVcscZ/C8TOI09qtk0NQZ4kkkc6VOyUxZWvS1PEY+B\nlVBylWLtBFVTyB0p5I70xbB9gTChUIiAa3kaXzLkJL5fRiMztQNvM+hz1qlycnhyEc7pXaJM4vHQ\nqJUK1Ds3H9Xvaaj5zxwV9PEbZ9TDZZzHZa+/NezDvQIYXXhCeno2T4soI53/Jk+A2JURocuF9MKE\n/LKQ1pdgsAbZ/ekHdpIRXBeV9A5KIcPB+//j7acyN0bZ93q0qylOMioA1nAAtzyyAgAr4Z0f+WF3\njdDlzUVbLXD66T3//eMT1SvDhwPKlIqXL+ZPc3NHDIjZFfb/w+vXr8f+938fL0Oqz/NgcOL36j07\nVrd/6jQq8XgZMOFN7FxMjaimjsmp00bgL9dZWHEG8TgArHgDHuB69N0oVyRBwmnkrJkiU+zQU3Ok\nch2M5iirUa9Mr/kOmFyrPP/lKRtRH7ZheT/QWlRyx3x88zsfMo2lGclf2JH727bCO2e2OjBTQqNM\ns9UnYJnUn9GhpeijfEar5YEf8h6tpl7BNDmdWKWCeUdmrPYVoIdWbtLug/m2rqlhGH2TAa2uviXG\nqK52cytx2uhxeHddemu/sLER0PMFDfc/klEyfPps4+XT8d75aZE8K64k67HLBa9GV1cOBs/nyhvx\nBmM4To9oUqBYSeC72BbPQWBkRKiy6qQ3XEjPsRqaukCmjOA+gBUHocQWocQW/bMWjbpC/vSIojqg\nUTilHAuMLY40bTTdaA6ylpi0mN7dyYJ631arpS+IZySA48oI7WwLI5lwBlfZCa6y0+/RairU8hmO\nCnX67QLZchTftYXVXERjVsrZEpqa4uCzlWc7Epr/9V0uZmrxRvAP8wB9GtURtUJPn0YVdU7YFm+y\nQbuJMqw3euzXO2wlP//SrIQ3t2kq78l2VU4+fGJlwij65ToL4IlcRs1Z/WFChirFwdXouxFGF/G1\nKPl3GcqpT2hWhSYQ3kjgXelQv3r86NV9Z4utfc+MVh+xTR+xTeh3mihqmezRKTVNo3ZcQI048SxB\nT87CNu5nZXC4CFmMZLp9CtkiEe/1kJ12MUO6qy/MEvK5HmSl9XM9NcdpbjiCGPRMXcVV3M7pDmEm\njUaGXDGKO3K1ENbodExYrXq2brBYcVgMVLoDGo0W/YB5JMPv0KidL9plnbGCZif+5Dnrfsniv6rh\ngoaRiJeMWkGrKjS1CJZbksHiX+fpThzHRUY+vrpy+t3/kp5wXi1XphW+XHHZ6g3ip0qFKtmjzwyq\nPcBJOHjzVmziHno9eibTRYPcuGLH7bfjshvp/PaJOg1u2Zp+yj73YtENOiWyp/rIrCXsuUN4fJ9e\nz4jp4uYyYXf5sbscGLq/87nWQ+tdvbmsxPZ22QiYCax0eTsMIU553RcjjuLh3LRa/uhOJ93aIb++\nPrx2jD7/Oo7bP0sVt0Mxkx1G5YVxP/SCvGI2Jg/JvQTqmxNUTZsYmXW+zgJA+fD/mJD0evRd3DNx\nNyOTN85GqMx+UUHRwOxaJx40A7eEA4rF0OvRN5ku6mVGqwOf1YF7pc+/3mUYoHHWg2UI0/j+czGj\nh/hmhOKHLN3qIW8/aBO3wgOwhzYJT1gca9A7o9e7/rrBZJq6l/roVngq6KE/YRnnuQ+TJ8pGqMh+\nsUPp8A2Ds9Gt8JqUs8ccZgesv3g6XDHfgSfiIJ1SaZyekHJsEvfZMaFRzx2RHq52Hgz5JvbIXvbW\nd8i9/53P1RbF0yJh/6Stdvr0emf0rt0RpstKpLib4ch9Pq+H0xsMVsxXEmy0Z71XO+a3dxm6lQwl\nJYxjWMEbNAucFm6PpdVXXI5i95x3EvkIho1UCj0a1SoAFt/liJF4eO3yAe+KK6zGong9NswGA4OB\nhlIoUAcM+DBfKb1kNP37NrYVnqYvrhmLzR+RMWiX+PhnEdtqlIjfi3XFoG+zWC9QrOn5g90y3t1r\nNIQJDRdx9SR22G6/5VOxQ+FgH4dt9i28xH31KGdTTIm8HjNt/vWFsa3w9MaddyMqW9x+QybXKju7\nLf7cv7qqPQzOKuRObp9uMbgWfTfKTCCRwFs8pMYKkWRUBtwerXnr1H2qp79z3A6TiAbwOC2YDAb6\nvRbloh7pYzTbrtUbvldL8Wea/Ws82+7z4VOediXFu8r10E1HeIu9jcl73BcP/0vxSg/h+WIa/pHX\nJodxg9EWZuvJuuxxf29mgptP6Rk+cFhoUz55T/nk+jGNRoe+ewUjRjyxDRLKR9KKSmb/DzJXjnaG\nN4ne2rtvJbK5Rf3NASX1mOO0i70rexv3B6e8/dfptTNl0Z27mfYsAXjWAzc24EzeJLtJlbepOtnD\nzzgduwSsl9vfGQjz5G/b1ytxPYWj/74n29Xn10c95w2HkYX1hocGpuy8cdv1z7Z/87JrUc3X6Kh9\nDpXChPfN+NZW8c+xYNZDmzYFQBZZeliF/f9Q2L/+usHsIbmzd23Papg+Ree888dQLVDT6tSGCy5d\nZfUkiU/cjeXiCMKbu3Tab0mrKicfUjh/Xsctnbhf3GhYtnf9B55N2Ne8nf/Ab4eV4fzryNg9Mn0h\nZjP+xC47E/a4B8nPvyZbcIvddoe3qfFA+fOFcMHJ5o8/THj2zwdhehfRd5OKCIMtSHKjiqEdJOqd\nrVPutjxFOpQf3s116gkp21OoZLq0BpeLpI6zEt6MzDxVZ9EtSXPTiCO8xc++MKV8gUKpgtLSMJjt\neHw+QqE4Ic9DZ9BmHB4fvlCIWMiDWVZXfxgmO5Htn/GFCmSKRapVhbYGRpsLvzdEOBbEaxu5rU0u\nks9+wJ1LkytVqagdztMmFIsT8dtnGvkxWIOsb1ZRPhappo7Iup+xKr01X5EVd8BHKJogcuuzasQT\n3yRRfUNaLXF07MG5ab7Y/s6zPmV0xuQhmvCSPby+4rK+sF6Gk0Yfk3mVgFfS/suxE3vxC85ykVK5\nSq2uP+NfNr8Wi8DmCuALBIlG7j7VwhF7wV9cJUrFMlWljtLS12OZq7w2uYhvJKi9OUHVMhx+dsj8\n+6/gPCzbQJjYlEhIWzBGLF0j221QKCqE16ePzRptLnzeAKFoGL9d8vTHYbT8Pp8ec7kQri28Smhi\n1JyVUCxCuppBa2Qo1aIkJuYRRlyxPZ5+mYsX34rJx9bffsZXzlEpqSi1Oh2W9xk3vHr16o/Xr1+P\nvfjq1atvdDnia5J0X06S7stJ0n05SbovJ0n35STpvpwk3ZfTtHRfkgAFIYQQQgghhBDi+yWNeyGE\nEEIIIYQQYsFJ414IIYQQQgghhFhw0rgXQgghhBBCCCEWnDTuhRBCCCGEEEKIBTdxtXwhhBBCCCGE\nEEI8frJavhBCCCGEEEII8Z1Y6Xa73/oahBBCCCGEEEIIcQfnbfoVi8XyjS9FCCGEEEIIIYQQd3He\npl+Z9OZ5zL74vl1da0HSfTlIui8nSfflJOm+nCTdl5Ok+3KSdF9O09bMm9i4F0II8f36xz/+IYX/\nEvj73//+rS9BCCGEEF+RLKgnhBBCCCGEEEIsOGncCyGEEEIIIYQQC04a90IIIYQQQgghxIKTxr0Q\nQgghhBBCCLHgpHEvhBBCCCGEEEIsuAVfLV+jsP8bn0q9qUdYAzu83AthHj2rcsh/PuQBCG7/wm7Y\neu08Jf1v3qbOMBqSvPifBM4pnz/rceJLuEz/SekMKql/viU96ONIvuDHhHvqOQP1lH++OQFg4+Ur\nYq7J3yjp/fUNuiU+/npAhcGNx52nZ2uYRldZ7B58wSjxWACb6fzVefKQu+U34nZK+v94m+pgJM6z\n/7eOe6zbWSX161vS3T626FN+2PRhGnl30Mzyx+9HtPCw8/Nzgrbzd3q0q0WyhRLVcp0OYHMF8AWC\nRCOj98D5Ndztvrme5n2U9DvepuqAi/UXT4m7F7yofQhnTYq5HIVSBaWlAWYcHjcef5hoyIdtBW56\nHm2uAL5glNWoB7NBf+22fLtb2ufX/RIGAuz+ZY+AZbb8JLz7V7aD5huOteIO+AhFE0Q8lyk/ej3T\n3FS+LIOBplDIlChVz++D4W8ZjhP0WTExnkbnaTH2Gbek+0BTKeULF/eawWzH4/MRCsUJea581rxp\nfMP9c1P+Ii7Ncg+M6qolCvk8xapCWxvmyb4QoXgY9w2F7XnZ0AScq895seaZPKLZ61ApZCiUqlTU\nDgA2lwePL0wkHMBBZa46iJT/N5tW1uplgo9QLE7Eb792H8B898K89fqrbso3HrslrHF0KOdLF/+q\nZYs0ggmcEsMgxHet21LIpxSKxTB7z7bxXe/TE9+I2xvBnDpBI0OtnsTtvcyQB02VSrcPQDen0Fz3\njTX+G0qJJmDxBnEPG/aDM4WTjwdklO7Y97TVMlm1TC7jIbmzx6r39iJw3vumXTpkP1UHzER2d6Vh\nDww6JQ7eHFDSRivHGk2lTFMpoxl/YTdy8w97nnbFUpJnzxI4v2njqUO9nKNeLlNd22N31S1hkLfq\n0ywc8eFTns7Y6+e/ZY6Mf529nTj2B/6OgdaiVmhRK2TIhLfY24jM0PieP43vkr8sl9nvAYcJ6LXI\nH33gsNAeO7rbUsi3FPKZNLHtp6yF7RPSpk+tlKU5/FfzNEc16iFguXJYTyX17i1ptT/2cltVaKsK\njZ6FF7F7/tliRhpNpcCxUkBJvmAvMfLM3eteuJu75RuPw3eT88zaYzZoVshXL0cFzpopirUoTv93\n81MI8V0xWII8eRW8+Pek0bhRreH/j0VX9Hq06xkOP6VR2gWO0j7c24GxnuF5et2lh/5hGRwuQhYj\nmW6fqtog6XVfvHfeeAfoX2v8N1GK+rt2nxPL8LXM+/dk1D7gIr69TjTgxMyAbqtM7iRFVlE4efce\n4w/PiV3p2Z33vhnVU0852C+iYSay9ZyNoPQgQY9q5pCSNsDkiLK9k8BrM2EY9Og0FMq5GvYJPSaj\nz1i/p9Esp9j/lKejpjjJ+3gWv3/c1KRR4duP7XOmtSif7HNYaFM5OaLg+4GoY/z4ZR+hv6pbPuTd\npyIaYPMn2VyL4LKaMAw06vljDo/L2JwurCZgenDUjbTKCe8+5ce/w2Ji0O9QL6Y4Oi7TLBzyYbDC\n853Atfx73jQevX/6vR7dRp7jwxMqbT1/Mf348to5y2yue4AelZP3HBY6gJnA2jZrYTcWI5x16xRT\nR5yU22Q/vaVv+pGtwJWIjLMapcxl5+6AMvlSg8CVfEMtHJFW+xjwsfZ8k4jTjIEB3Y5CNZeHgAej\nhbnqIGI24xGww2fu+AOHxS61VA4l4sZnhvveC3e6nkGfs7MW1dMTjrM1moVDPhotvLgSOfhYLVln\n82VPntmXJBnW//xyvkz35hOFEIvMZMLmS7IW12vb3YJC444VSPEFGF14gnp+3M4pNC7euGy8n6uq\nl+8O2g2qjT7gxO/RqwjtQooTVX9t7cVz1sNurCYjRpMJmyvMxpM94k4joJJJFW/O++e4b3rqKR8+\nnKACvuQeG5GHG0FYbC0aeX3E3uoPEnCYMRmNGE1m7J4gib3tWyvHRpMZV3idtbBerVIz1YtOvK/P\nyIrZSXh9nZDBADSoKI1bz1pqfYXsURkNvdPm+ZMEXvv5fWDFG9/j+U8/sZtw373i3FfIfM5f/w6T\nkRWzHX98j2c7AQBaxc8UlP4NHzZ/GhtNJmyeOHvPdgiaDYBKNlu+az/F92fOe6CnZDjM6eP74Z2X\n7K36sJlNGE0mLHYfq3vP2A6aAI3S5yz1K8nZqRQoDgYYzXGSCb1sUDPlK8dptFQ9JzH7gwQ9Vkzn\nZYXDT2zrqXTQfTX6M+fznXfsD+gPA73uey/ciUG/ntDGE3aT+jU1cymuVEceraWqe4z25PlCESL+\nCADdap7KgiSYEOLuLBZ9hHCAxpnUuh4RI25vGICeVkEd5seDpkKp0cdAmPV1vWI+2vjvKCXqgMns\nx+UA0KjXFAAs3ggh94QizuQiFvcDoFVL1NvXD7nqtvum3ylx+CGFooE9tMNWQsK0L5kxe/RJ8q18\nis/ZMs1Oj/nrXybMVv1zBmfc4fyHZVgxY0W/Hq33ra/mcRs0VYrDqTWhSIBJfTlW++Q5tg/5HbZQ\nnITFCGgUq+qt99Bd0thgDRJb1RuT0ol8ad57oFHXR/iNxAkHJkVAWQnFVjEDPe2U2liLrkk5VwPA\nHvWzGgjhGB5Xro3OrTZhtujp262kOE4XUVraRaNSfGX9DrWqCsCKy4V9eJPc7164LyOe2CqRBevI\nXapY9POePANhAl4zZqOfuCVPptugUFIIO6YstiEevU75gP+8PvjWlyEeuW73fKafAaNh/L1J99C0\nsLt5jhWzMbk8RAxZ8gO9AI06nHTUKk3AGvAQ9A+oHVeoaRXUZgKnQ6Ou6BUBW9QzDO3r0CnrNbMV\nt31iBRLAbHNgpoSGgjZpXZ8rbrpver0qJ/vl4XxyF/HV0NTvXU5WQslVirUTVE0hd6SQO9IXK/IF\nwoRCIQKuWcIoe2gdPW0NK9dHJo7evOZozisr7P+Hwv6Vq511it+ZRme4wJbRcL3mMOl6Lhd2XS5a\np4mGnkc67PPVsial0d2/w4rdY4Ai9DtdetxcCb4tjaex292ASp8yzfYmHll5d857QKPT0jNmc8CB\nbWpy2nFjoMyA7lmP81yhp5TJDiO6wn43BoeFiC/F52qPcr5M3B8Z5tFGvNFNgsUDSlqHUuqAUgrA\niiccIByI4p+wwJ94GP1Bij9ep669bjQHWd+ODtfeuN+98CBMdhweI9R6tBsdNJyPfkrmd9O4v72y\nfdmTZw370Nc4cuEJmcmcdmieFlHiHnzfzS8ihLgwnDt9dKw3Bi0BH87HnjsvG5MbX8RIPtejVW3Q\nja1QK+vp5Ql4sdj6+L1GajW98R9ZaVMp9QEzAfcXqj3PcN+c1UpcLtGqkjkt4t2RBv4ok2uV5784\nyGdy5MpV2pq+WFEld0wll8G//pTduHNqdex8zv1JQR8GdcV92OGWtau/lPO5oZ8pDgaAk6Dn7kvA\nicdI0nhx9agWs2jAijOIxwFgxRvwQLUyjNSNXKyFYLAG2f3Jji+XI1fMo7YBOiiFDEohgzO8x9Pt\n6+sziC+nrymU8gqeDZ+Uo3e0NE3Zy548CAbPF0Qw4g3GcJwe0aRAsZLAN2FbPPH43bYVnlg+N/YK\nr18fmZMF9b41Ey5vEHJ5tFqFWtVApdbHQADfcI8bb8AFtRqtagPV2qDCACMh3K7zZqEVa8AAJTir\nt+jinlg50Nrno0gezFdKwXnvm/P3osEumWydVvGAQ5t1fKVfgdHqI7bpI7YJ/U4TRS2TPTqlpmnU\njguoESeekSGyadFYK64ka5HrnTk3bYU3zTwL6k0bQfYlN4i4rqe0LKh3yWw9j5Qp02z1CVhmfzJu\n2wpvvu/o0FKGI/FWy7UR2XnTeJpWq65/BwEctlsOXhLz3QNmrPYVoIdWbtLug3licraoD7v4LCt6\nag7aZQoFvc7niQQudl6w+sOEDFWKgwmRuisOQoktQokt+mctGnWF/OkRRXVAo3BKORaQhRG/gGtb\nSg870w/ep6lm33Ps0Lcqv+u98GB6LZrDNTpsTutC1Pu+m8b9zZXty548gPS7/yU94aharkwrfJ9t\nWIQQj5nJHmXv+SbeRcidl9CK04OfAhWqpI9adBhg8XlxDVvoVpcPBzWatQLHPX003Rr3jWxlasbt\n9UCpQreWIl8LkfReqQn0VLKZin6073L7vJvcdN8YzB7WnmwTc2nYz97yqdihmjoi63nB6qQ5/8uo\n16NvMl1Upo1WBz6rA/dKn3+9y1yuZXBDnWzSPvffWnDjB7Zj0yMOhG50N4xCtkjEG7nW6aa1O5hs\n1jv/lrN8R7uYId3Vo31CPhdGbo/+mDeNB50S2VN9Xq4l7PnGWzY+HvPeA053CDNpNDLkilHc17bK\n7FDMnqIBJvMq3mFe26jkqQ1TtXz4f7w+vH4tY5G6vR49k+ki6zGu2HH77bjsRjq/faJOAxkf+kpM\nJmy+MCF/FrXSQ1UaaGHrne+Fh9FHyZ6SH0bw+Bdkjs1307i/yaBZ4LRw+6omZ40MFSWK3TN6Y/Tp\n9c7ocbU2YcI0lmnPepx47HpnZ/R6V9PRgMl0l/tCfCujvcKDdoH3vx1Sa+XIlsJ4Y4uRQS8bg8WD\nP2ikUurRaevz3N0B70Ul0ODwEHQaaTZUVL1tj9/tGKt428JJ1vI1TlSN9Lu39CdthdcYbpOXvB4+\nP+99Y3GHCbqMgJXw5i6d9lvSaoP0x0/YXu4ycf2fpdKnevo7x+0wiWgAj9OCyWCg32tRLuqj6kaz\n7VoExWOLjhndJq16/F/eZzpUTguoISeepahJ3YPRQ2wjQPFjkW71kLcftLFt0BrlLMefsqwkX7B7\n14gXo4f4ZoTih+z4d1zZCg/AHtok7Ln+LfdJ47Gt8Ibrb8Ri07fNXDpz3gMmT5ytaJEPuQ6lwzcM\nziZtf9YDzAQ3Y7iNMDirkDu5fcGzwUikbrt8wLviCquxKF6PDbPBwGCgoRQK1AEDvmt5k/hCej3a\n9QLFit5eM1nNev5/h3vh2kfPVK8fMbYVnh6J44gmCS1IBMcS3LKX298ZCPPkb9vX59X3FI7++55s\nV6NQrBL1BC7PHpzy9l+n1z716sI4sx4nHr/U+39zNSj3vMJ/TtJ7sRhsYTZ3Ff7cL1I9+kzW9ZzY\nlTDLaWHA10LH5jxWzONy5B30sHm/e7R17MATdEBDb9kbieK9Vut2EH/6lLOPB2QUlcynP8l8Gj/C\nYPaQ3Nm7tsf9VbPcN2NMLhK727TfHFDSShx99uB6en2Eaqn0FCqZLq1Biv3y9ekOeqdIZGKF7Eub\nFoZ9cz5uxJfYJVF/S1rN8fnIxbMJayxMW+BvnqkA3xNLYItn20Y+fMrTrqR4V7l+L9gaKp2e+87R\nk2b/Gs+2+zd+hyO8xd7GbXOoZ0vjaffPef4iodzj5rkHHCYT/rWnbPU/cFhoUz55T/nk6tFWYttP\nWRvua36+aDY42fzxhwm/f4fc+9/5XO0NI3V91PI1OmqfQ6Uw4YrN+NZW8cvUii9i2hQ4nYtI4DwP\nnv9euGq2ev3063GEt9hbW4w97mEJGvej29951qOTF8wzeYgmvGQPK3QKBaqrsniGEN8bW3CdjWqd\n/aJK+jCN88Ua7kXJqZeI1e3HTYU6YPZeD5t3uv2YUdGYHvZqWPGw/vwnItUi2UKJarlOh2FodyBI\nNBLANmPaz3vfGKxBkhtVlH19hOowbV/u+fcmH1t/+xlfOUelpKLU9LQw2lz4vAFC0TB++4JVRUwu\n4psJan+coBYPSHncbMt6Pbcw4ghv8bMvSCFTolStoLQ0wIo74CMUjhMcrkw+uPP2ceffEaaUL1Ao\n6d9hMNvx+HyEQnFCnhlrd3dI47vkL8tl9nsAAJOdyPbP+CIlCvk8xapCWwOL3YPPFyIUD+O+SM7L\nRbNt4dUpI6xWQrEI6WoGrZGhVIuSfPELznKRUrlKra5//p3uF/EgjDYXfm+IaCI6krbMeS88jEW+\nDwyvXr364/Xr12Mvvnr16htdjviaJN2Xk6T7chpN93/84x+S7kvg73//uzzvS0rSfTlJui8nSffl\nNC3dl3YwQQghhBBCCCGE+F5I414IIYQQQgghhFhw0rgXQgghhBBCCCEWnDTuhRBCCCGEEEKIBSeN\neyGEEEIIIYQQYsFNXC1fCCGEEEIIIYQQj5+sli+EEEIIIYQQQnwnVrrd7re+BiGEEEIIIYQQQtzB\neZt+xWKxfONLEUIIIYQQQgghxF2ct+lXJr15HrMvvm9X11qQdF8Oku7LSdJ9OUm6LydJ9+Uk6b6c\nJN2X07Q182TOvRBCCCGEEEIIseCkcS+EEEIIIYQQQiw4adwLIYQQQgghhBALThr3QgghhBBCCCHE\ngpPGvRBCCCGEEEIIseCkcS+EEEIIIYQQQiy4iVvhPVaDsyqff/9AvjvAk3zB04T7Su+ERungDfvF\nDo7oU15s+jCdn9vM8sfvRzQB5+pzXqx5rvVsDLolPv56QIXBlXesuAM+QtEEEY95huPB5grgCwSJ\nRgLYTNfeFnMaqKf8880JABsvXxFzzXJWk9M/3nDS6GMyr/L0lzXc17qzNAr7v/Gp1Lt2z+hUUv98\nS3rQx5F8wY8J99g5VxltLnzeAKFoGL99oR6vr6hHs5InX6xQLdfpABa7B18wTCQSwjl8xG5L825p\nn1/3SxgIsPuXPQKW2c8xGpK8+J8EzivfM8pgtuPxBYnGo5PTsteilM9RKlepqB3AjMPjIxQJEwq4\nMRv0w5T0v3mbOhv7zkuX95I1sMPLvRDm69+01Ebz2fDuX9kOzvIL3fzsn6fJbTZeviLK5Pvj6nGz\n5UniNufP6G3Cu39ly63MVWaP61H69Cv7hR4GfOz8/JSg7fJdNfsnb47qY/nL2NmNU979cYKKi80f\nXxJ1zPVnLrHp5afNFcAXjLIa9Vzkn7M9/7flo5fl+MTPmCkvv+k7+ijpd7xN1QEX6y+eEndL+X+b\nh6hDa5VD/vMhD0Bw+xd2w9br3zNnGX9b+TC5LBez6KolCvk8xapCW9PrzG63j0gkQsB1+URNSwO9\nrhglHhu/LybVsy7vrxVWn/zEmn/8mZxUX/xe2nULNXJvWPERT/gAqKdOqbTH3+/VMhwVOxjwsRob\nbaT1qZWyNIf/ap7mqHbn+eYO9XKOw7e/8+G0Tn+GM9pqmezxR/7721tOa7dXIsXD6yllsg09tXra\nKYWKduPxzdwnjkude31nv61Szh3z4b//5UNK4Xr1ZbkNzhSO3/6X3z8ckxs27AG6LYV86oA//vOG\n48r90uChDLQWtUKKD//9g6Py+DVptRRvf/sv+8e5YWUQQKOpFDje/5P//vmZ2uP4M5bSvM+++N7c\nXmYP2mUKBf2dAVXypfHjXOEkMYuRAWVOs8qVz+hQTJ2iAs74GmFp2D+Itlome/SW//6ZpvGVCs+H\nyMvbpUP2U3XATGR3Vxr2D2C2OnSHcv6yI7CWLdKYpYI+dFMZLx5Yr0X+02/8+mafVEFv2INeZ64V\nUnx88x/++FTmtqaZXlf8yO9/fKI6c5JpZA8/c98kXqR23cLlQLbQKol8jXSjSjpdxrMTGPaeNsml\ncmiAJ7mKf6QHfnBWo5S5vGUGlMmXGgTi0/vdLnt3+5xpLcon+xwW2lROjij4frjWSz/aG9zv9eg2\n8hwfnlBpK5y8e49Jeva/sh7VYpbRKn0lU6QVjGOfeo5Gfn8fu/U5Mdds/V5jPfj9Hmdag/zxISfl\nNpX0W/ZXfuBpTPp3Aeg3Sb9/T0btAy7i2+tEA07MhgFn7SqZo2PyLSsux/We96/lYgR20Oesq3D6\n6ZCM0iH3MY33b9v4VvQRuw/v0qjAiivKxkYcv92MgR6taobjowyazYXdctu3iS/j9mffk/gbrxLn\n706Kzrk0UC//W0bovzxLcJdXwd3hv24ekR2M1ATnLbMblTy1kdGZeqqAEnXjO68VmTzE1/1k90s0\nMifkg8+JOfVyQatkSVd7GAiwGrseBShmM5qm/Z5Gs5xi/1OejpriJO/j2Q11tIfwEHl5Tz3lYL+I\nhpnI1nM2gt+u/Fpkd6lDD5oV8tXLXqCzZopiLYrTP71pM0sZf05G6B+KRunzew6LelRMYG2btbAb\ni9FAv9+ienrCcbaN2+fk6qM2lga9Hu16hsNPaZR2gaO0D/d2gFkG0ftaicN9O9ZnCZwzjrovcrtu\n8coko4v4WhQz0Cp+JlfTu+m6pVNO1D5Gc5xkbDxcv1MpUBwM9PcS+mOqZsrUZ+rhM7JidhJeXydk\nMAANKkrj5jNMJmyeOHvPdgiaDYBKNluWUdyv6HJUxkw8mcABnDUyVJTbEl0lfXjHUQOjiRWrh9W9\nZ2yH9AK+dpSj+rg7+L6adilFWu0DTtZePGc97MZqMmI0mrA4gmw8ecbLl7sEHkPdyGBkxepjbSOO\nAxhQoF4/Y3TEbsWxyrNnm4RcVkwmI0aTGWdwnafPf+TZdgiL4Rv/DUvq7s+++D7MUGb3FcpZPZYv\nkEwSMhgYUKB4JWrIElxj02cCVDKpoj6q1FfJpfNoQGBr/Vq4vrgbo8mMK7zOWliveauZKq0v+o33\nz8t76ikfPpygAr7kHhsR+wJWqh+f2erQlxG5Zl+SZFj/5cv520d/gRvKePHQekqOo6Ket4Z3XrK3\n6sNmNmE06Xl1aOMZP/31RzZuq/yZTNh8Sdbieg97t6DMVVc/U1McZ2aLvr5q0dp1C5kPmbxx1oIm\nQCOfytHsKWSOKwAEN+K4x3plmpRzNQDsUT+rgRAO9FDN8hxhFYYVM1b0HF7rzXZrGKxBYqt6Z8K8\nN6G4n/NRGZM5SjDhJ+g0AhqFYvXWh/GsecrB5+JsBcREVkLxmBQYYzTqNQUAizdC6PriB2Cy8w0H\n7Scbfe77AwZdlVpVf/490cjEHmCj3SEN+2/oPs+++H7cVGZrtRKZbh8DAYLhKIGInh/VcuUrDUor\nocQqDqBbTZGtaLSLp6QbfVYcSeKhx5ZhLToTZqueZoMz7lQJn9V98/J+p8ThhxSKBvbQDlvX1oAS\n93VTHXo0ItcXihDxR/TjqnkqzWsfNd2VMl48vEa9iAaYzKuEpzTgV8yzT2K3WPTPGKBxNmehrqQ/\ncnSP6beL0q5buLB8nZnQapJ86QhVPebwnQu128fsWid+ZaGUy7mXTsJ+NwaHhYgvxedqj3K+TNwf\nuRYGMsngTKMzDOEzGmbPwu12N6DSp0yzvYlH4nu+vJFRGVfchxMnpqiXk08VOoUC1dXA2MJJ5yyB\nTdYcJQ5SdVrFAw5tVvYSd2ulGWwOPAYjzUEfpdWBG8LElkOHTll/flbc9pmeuVFHb15z9PAXdbuR\n595gALqdi4VW3HP2RPQHKf54nXroKxSj7vjsz2rSfTgplF98e9PL7Mt5utZwEK9lBQIxzLk0WiND\nRYli91web3JFSUbzfMh1yKU+UNdUwEwkGcUprbkH1kPrDPPblS88+nSPvLzXq3KyX6akDQAX8dXQ\n3GWamM20OvR5RK6BMAGvGbPRT9ySJ9NtUCgphB0zTpe5WsaPmFZmy/SseWh0WvoA14rbjm1SovR7\n9AYABkym21Ot2z1vnBswzlhFD23uYC0eklYvp99GZzv1mkVo1y1s0WRwREjE9QxZVS8L2/H51Jdz\nL1ecQTwOACvegAeYtYevz5nWoHD0meJgADgJeqbP2hbf3vmoDDjxe/Wnzur248XAgCqFyuRpFQZM\neBM7FyH11dQxOVVG3ReK0ciDTIEa9DnrVDk5PKEJGAjgdck69o/dXZ998T25ucwenafr83swASaX\nh5BlWoSHCV8sgRcD/aaKqoHFlyS69B22D6vf01ALx5wU9F/fFffdsD7OVUZWvmJynNVKlNTzUV6V\nzOl9Iv3E/C4jcq1hH+4VwOjCExquwHVaRLmt6iZl/KPRrRzyr3/9i//8O8ONJXSvR7ua4uhYXwjH\nEvBd7K50G8OKl8Tu9kVIffoow/dcvV/g0smIN7aGP6NvWWANrBP1jvdVjK6G64kELgoKqz9MyFCl\nOJjew1fY/w+F/evf6ktuEJlxsTWAVqs+vNoAjnuMGIlZXY7KWLwR/MOWnsEWIBw+olbo6estRJ0T\ntsUDsBLe3KapvCfbVTn58ImVwfzBgYN2E2V4nscuoZtgxRowQAnO6i26uOca6bhpW7sxwxC7JgNa\nXQ2ubIjU1W4Ox5ocIWAmvKvPrR1gxY+BCgPqzQ4x1+xpe9tWeOK+7vvs305GbB6v2crsy3m6RuIE\nvMMqkNFDIOYgc6xOjPAw2IKsJvPUUirgJJ6QkdqH0Ckf8J/XB9deX3ElWYvMMxxmwjTcO++s3uGM\nKzl/7wzt6tZWlrvn5QBGc5BosEsmOxrpJ6H5D21SHXp0N5Rg8HxnLCPeYAzH6RFNChQrCXwTtsW7\nrYwfJQvqPQQzVvsK0EMrN2n3wTzHQzItesJoDrK+Pt/WwQZrkK2dBsq7DJqa4uOnu3XmLEK7boEb\n92CwWHEYDFQGA0wO67VEHl0Nt3z4f7w+vP4ZzdMiStwztkLmNMGNH9iOOWfOvAedEtlTvR/KEvbM\nvEKjuLvRUZlu7ZBfJyS6vt5CHPe0kReTh+ReAvXNCaqmMf8mWh2KmeywNziMW7bFAcy4vR4oVejW\nUuRrIZJXOuMYdOh0rVjv0RdisFhxWAxUugMajRb9gHnkee3QqOkzas1+64yVczvxJ89Z95uHn+/C\n6zNSqfaopnLUg+tX1viAQaeDZp3188VDeZBnX3xXrpbZo/N0+2T4838z1845j/AIjq3UbsRmswIq\nBqxYLNKE+xIm7XM/87k2L1Cir6k022AfqXT3GiqVwQAw47DePy83mD2sPdkm5tKwn73lU7FDNXVE\n1vOC1bv2HIprJtehx3dDSb/7X9ITzq3lyrTCN+2OdG68jBcPz+kOYSaNRoZcMYo7cr8BL5M9yt7z\nTbx3SDKTN8luUuVtqo6mzV+7X5R23XdbwxmcVcid3B6COZjSwze6rU71+L+8z3SonBZQQ048t/xq\nY1smDOdkxWKzbdcgbtc7O6PXu1ryGzCZBpSzKWZZS+W29RZMrlV2dlv8uV+cvXE/thWePkLs3YjO\n1HG0DGzBpL6NpaqRfveW/uhWeJ06+ZNDMqqbnXutmO/AE3GQTqk0Tk9IOTaJ++yY0KjnjkhXe4CZ\nYMg3scf3cmS2Q+7973yutiieFgn7zysJVkLJVYrVE1Qtw4d3/bHtk9r1AsefUnS927Ji/hcw6J3R\n612vPBtMUHmgZ18splnK7EbhdBiqf7P7RniI2Uza3vAm059/E2a3Hz9lKlRJHaexbMRwmg2ctSuk\nT07RALMrjvci8ubuebnFHSboMqJH+u3Sab8lrTZIf/yE7bHs+LLAbqpDD5oFTgu3R7qdTVg/A2Yp\n48VDM3mibISK7Bc7lA7fMDgbboVnMtDvdag32lPPHY2eGLQLvP/tkForR7YUxnunbaaNeBI7bLf1\nTrlZLVq77rttdpwvtgFONn+8vsft5YPdu+jhmxxdYcSX2CVRf0tazfH5yMWzneshedNCAg1mD8md\nvUe7F+IiSr3/N1eDdIyGJM9/slxMw/Cu/zBxj9x2/gO/HVaG6y1EbkwXW3CL3XaHt6n61GOmhRWC\nGX9ilx3Z4/6S0UHi6VP6Hw/IKCqZT3+S+XT1oA5qs0PgzsP3RjyxDRLKR9KKSmb/D66OzTnDmzPM\nl7US2dyi/uaAknrMcdp1EXJpcq7y5Fmf/YM0iprj4E3u2tkrbZVWN4RFKnkPqnj4X4pXBuQNBNh5\n4XvQZ3+aaQs7ju6HK761KWX2yGKLtvAeP0zYH7lXO+a3dxk0ifB4lKY9/7t/2SNgCbK+p9D8mKdd\nSfFnZbyWYDB7WN0YX5fpQfJyk4vE7jbtNweUtBJHnz24nkrn4bxmq0NfTqsxEObJlX3pAegpHP33\nPdmuvn5G1BOYEm07vYw/Ny0k/PKeu+Mfu3TMBDef0jN84LDQpnzynvLJ9aNMzpUbG8sGW5jNXYU/\n94tUjz6TdT0nNsc06UujnXLTp90ucrvuO+2XvlxswxZeJTQxAayEYhHM6D18pdoN86pNLuKbCVxA\nq3hAqnB7b4/NFSC2vsdPPz9n1SsVhK+hVclRQ189NRae3Ki2BWPELEagQaGo3LLVjhFPfJPEHJmH\n0eYiEF3nyU8/8STpebS9et+KYcXD+vOf+PHJOtGAm/P6ksXuIZLc4Ye/vmTdf88WsclF8tkPPNuI\n4r+YR2nG4Qmz/uQnnm8HZqp4GaxB1jeDmEEPuRxZocfsTfL855/YXZ/wHbsv+OnFJl5p2H817dpD\nP/tioU0os0cXW5w24mLyRkn49Hdm3i9bPBq2wBY//PSEZNiDbdjXZrS5CEY3ef7j5IbAQ+TlBmuQ\n5IZeVnSrhxym77aXtrg0qQ49Oq3Gsz4lKtLkIZrwAujrZ0wfFL6xjBcPzGQnsv0zf3m+TezK8+kN\nx9l5+gs/v4xOGWS9ZAuusxHSp0ilD9PU77pc0UgZMatFatcZXr169cfr16/HXnz16tU3uhzxNUm6\nLydJ9+Uk6b6cJN2Xk6T7cpJ0X06S7stpWrp/pyP3QgghhBBCCCHE8pDGvRBCCCGEEEIIseCkcS+E\nEEIIIYQQQiw4adwLIYQQQgghhBALThr3QgghhBBCCCHEgpu4Wr4QQgghhBBCCCEeP1ktXwghhBBC\nCCGE+E6sdLvdb30NQgghhBBCCCGEuIPzNv2KxWL5xpcihBBCCCGEEEKIuzhv069MevM8Zl98366u\ntSDpvhwk3ZeTpPtyknRfTpLuy0nSfTlJui+naWvmyZx7IYQQQgghhBBiwUnjXgghhBBCCCGEWHDS\nuBdCCCGEEEIIIRacNO6FEEIIIYQQQogFJ417IYQQQgghhBBiwUnjXgghhBBCCCGEWHATt8J7rJT0\nv3mbOpv6vtGQ5MX/JHB0S3z89YAKA8K7f2U7aB47bqCplPIFCqUKSksDrLi9HvzhMKGAG7NheJx6\nyj/fnACw8fIVMdf493VL+/y6X8JAgN2/7OGq6/++zaRrEg9ncJH+DjZeviDmmtaHpVHY/41PpR6O\n5At+TJg4ffOGE7WPNbDDy70Q46nURz19x5uTOmbXOs9fxrF/+T9nqUx7xi12D75glHgsgM006cwm\np3+84aTRx2Re5ekva7ivJPusz/N5PuI8f+OsSTGXG8kvzDg8bjz+MNGQD9vK6D03mPq3yXN/P9Pu\nDYPZjsfnIxSKE/JM+317tKtFsoUS1XKdDmBzBfAFgkQj0+4poNehUshQKFWpqB1G0z4W9mGddp6Y\ny21l+7mNl6+IcstzrJYo5PMUqwptDYw2F263j0gkQsB1eX+cf+e15x0YLRvOy4LWHNd49ZrE3Y3m\n29PMdF9MyN+nfbaepwSJxqP47QtVTX4cbikzjbXZ68pbbmVK2WrFHfARiiaIjOT7dy+Lb69DjOYL\nnuQLnibcU0dIp9YnxHxmqH9Nyq/NXObxk+vrk8/5XixZrtWnWTjiw6c8nbHXO9RrBeq1AilbmL1n\n2/is3+gSxQNqkEkXCTyNYJnwbq+W4aTUG3nFQTQZJfsuQ6d8TK4WIOm9zLoH7RKpExUwE0lGpWH/\nFXVbCvmUQjEXZOflLoErz2dPKZNt9PX/1k4pVGK4H6AhPeiUOHhzQEkbrShoNJUyTaWMZvyF3Yhk\nFt/SQGtRK7SoFTJkwlvsbUTGGuuDM4WTjwdklO7YeW21TFYtk8t4SO7sseodLw61Wor9gzSKNvbq\nRdrnTj2sP3l6Q+eh+Kp6LfJHHzgstMde7rdVam2VWiGFM7zHk+3AxPJAiHN6npKiVigQ23vOxtUC\nR0w1S5m5/iCdoh3q5Rz1cpnq2h67q9Mb2rOYtw5RT51SCT4laJv4YWSOK/e4GgEPV//S1GOO0y72\nbuiM+d4sZOP+tp6waf113fIh7z4V0QCbP8nmWgSXxYSBHq1qhuOjDD23D8cd83FLcJdXwd3hv77v\nXqFF0a2myFUCrPmv3upNcqkc2pVXTd44a8E8n0oauVSGoDuB3QjQo5pNU2OANbBO1LssWcS3MfaM\n93q06xkOP6VRtBIn6QDe7QCX9YMe1WJ2LC0rmSKt4H0jK3pUM4eUtAEmR5TtnQRemwnDoEenoVDO\n1bBP6AWUEfova+zeGPQ5O2tRPT3hOFujWTjko9HCi03f8P5oknn/nozaB1zEt9eJBpyYGdBtlcmd\npMgqCifv3mP84Tkxp/5c9xqnfHiXRgVWXFE2NuL47WYMDOg28hwfntC0eHDbJR94CJ7E33iVOP+X\nSuqfb0kP+sOIKvfYsQN10idolD6/57CoR1cE1rZZC7uxGA30++f3Rxu3z3nnhv081yi+jJuiIibf\nF3f47EGfs67C6adDMkqH3Mc03r9t41vI2vLXNluZabHMXlcejPTJXpatfc60FuWTfQ4LbSonRxR8\nPxB1jF/N7GXx/HWIAVVOs1V8F2XNJbWQItvtz/C9Yrq71b+mqaY+cmR7yVZwOTrqlqdm0lfIHpXR\nAGtgh+dPEnjtZkwmI0aTGWdwnec//ZXn0qv/ndHIp3I0ruSz3dIpJ+qkzNdMKLmBFwNnaop0UY/x\n6Kk5UrkOBnysrUlHzVdlMmHzJVmL67W6TqFMfaQUHrTLFAp9wEw8mcABnDUyVJT7Fq4tGnm9q9Dq\nDxJwmDEZ9fzC7gmS2NsmIJnFt2UwsmJ2Etp4wm5Sb2A1cymKTf3tdiE1fM6drL14znrYjdVkxGgy\nYXOF2XiyR9xpBFQyqSJ6PbJDMXWqN+wdqzx7tknIZR2WFSZsnjhPfvgLL58kcEpY/qPQU3IcDfPq\n8M5L9lZ92MwmjKbz++MZP/31RxmBFbczGFmx+ljbiOMABhSo12+fjiHg65WZ+nMdXl8nZDAADSpK\n486fdtc6RDOXonClHjnoljg9umdPk+Dh7yWNwv4x5c7tR34PlqZxP2iqFLv6wxuJTmnAr5iv9cCJ\nxXfWTJEpjjzRt4RMGWxBVpN6XEgllaGmdSimT2kC7uQq/klhWOKLs1jOK+YD+iPhOY1KnhoDTOYo\nwYSfoNMIaBSKVXqTPmhmZswefQGOVj7F52yZZqeH9Mc/RkY8sVUiYxU9jXpNAcDijRC6PoESTC5i\ncT8AWrVEvQ2DrkqtqqeyNxaZ3IA3mTFLYfFoNOp6RJ7JvEp4SgN+RRJMzGPFjBU9/9f60+dvi1Ff\nt8w0jKZR7+7fcvc6hD718zK4oE8te3LjfH8xq4e/lwaUOdxP07hfxXAhLE2gkdZpogEG3Nhsk/o0\n+vR6+gNpMJowGsbfPXrzmqMvfpXioUXjccqZDOXDY8q+PQKWy5ApSyBJhFNS5avZhRF3NEEk/4F8\nN8fJhwZdtYfRHCURXZ45O49Nt3veQWO4fD77CuWsPkzrivtw4sQU9XLyqUKnUKC6Gpg8J24mVkLJ\nVYq1E1RNIXekkDvSF1vyBcKEQqGxBbrOFfb/Q2H/yifJ1Jwvz2TH4TFCrUe70UFjQKes5+krbvvU\niCyzzYGZEhoK2hlA56Jy5rJPbij2ez39CIMJk2QI35hGp6WPrK647Uwu3nvoxbsB05UE6w9S/PE6\n9cWvUiyYM43OMB8wGG45Vgzdrcy8q8FIGhkN1x/8mcriO9YhrLE4/nKObPWQVMnPdtDMoJknnelg\nIEAiCalU+cH+1uXzcPeS0bDK1k6X4/0impri4LOVZzveL3z939ZCNu6nFcb3WaV20K1wMFxhU1a7\n/X7YAnHWunk+lcqcZhV8MW0YMuViNRHCeJqZeJ5hxUc84SN/WKGh6iFWwWQcz0I+MQtuOOf+JKOn\ngzUcwD3M07VaiUxXD7v2e/VoC6vbj5cqNaoUKg2C8eHqHEYjDqA5x1ebXKs8/8VBPpMjV67S1vTF\nliq5Yyq5DP71p+zGnUjdb5monP5bn28t6ysshm7lUFau/g5MGmS5WPPgDvn7ROdz7g9PaAIGAngf\nsEH6vZu1zLxfn+hwzv3xZ4qDAeAk6LnbCjtz1SFGmFb8xNe7ZPdLlI4yhH1x2qcpVMC3sUrQfIp0\nGd7Pw91LRuzBLXbbHd6m6rSKx6R9e3zPzbylaaqYreejM2WarT4By3xZy01bq4jHTJ9DXyodUsuc\n8L7RQWGAJ7lO2GHkptSzhVZJ5GukG31WHEniIZmv+bVM68AzmoOsJc4X0+tQzuspaPFG8A8X0zHY\nAoTDR9QKPdRMmXrUqW9pMwzhazKg1dW3VBnV1SZPxjJafcQ2fcQ2od9poqhlsken1DSN2nEBNeJk\ndDktafB9I70WzeEcSZvTihkL1oABSnBWb9HFPXH0XmufR3V5MK8ARit+DFQYUG92iLnkuX/czFjt\nK0APrdyk3QfzHMX7bVvhiQVxx/z93OToTDPh3XVZW2VOs5SZnjvMkpk0Eg/gS24QmbBrye1l8Zx1\niCsswTU2i1U+VzOcfGjQVnqsOJIkI06MFenyfwgPdy8Z8SR22FR/53NVI7//kYr5+83fF7Jxf5fe\nd4PDRchiJNPtU8gWiXgnb48mvj8GW5DkWoHaSR1FYSS8/upa+VcYrVhtBmiAyWZlzv4g8YAm7XM/\naFbIV/XMuVs75NfXh9fO62mnlGtx3P4VDBYrDouBSndAo9GiHzCP9Ph2aNRaAJj91su8odejbzJd\nHGe0OvBZHbhX+vzrXYYBGmffb/mwQPoo2VPyw1Ecv0cvHdxeD5QqdGsp8rXQ2NaWAPRUshl9/Q2z\nL4jbBgZceH1GKtUe1VSOenAdt0zXftSc7hBm0mhkyBWjuGV7yu/STVGVd8rfb2Qn/uQ5637pqJ3L\nrGXmA+WpwY0f2I7dLRJg3jrEdcPQ8eoJdUUBzKwmoziN0J1wtJjTg99LViKbW9TfHFDSNLRbmgCL\nbHmaK0YPsY0AZqBbPeTthzS1lkav36ff02ipjYu5O+J7Y8QVTRIbts79El7/6BkNSX549YpXw//9\n5afnbCUCI/uX9yhnUzOFYJbz5WFB68AT0bvmG6cnpEoNtF6ffq9D7fSIdLUHmAmGfMMxnz7V09/5\n42OaktJC6/Xo9/ucaQ1KRb2332i26aO94tsY6OlRPPrAfqoOgCOaJDQcgbGFk6y59MWR0u/eclyo\n0+n16fd6tNUCRx8+kmkMt8lLhoaVfr3C5gL6WoYP7z5TVDv0Ls6r0xxIWfGYmDxRNoaRVaXDN3w8\nrdLWzp/XFvVG+xtfofjy5s3fx228PC9vfmHTZwJaFE+LtL7mn7DwvmyZGd796zCN/h9P4/rzXjkt\noN5pM4O71CGuMzljJIbXYvEliU7sBBDz+zL3ksEaZOtJ8rsOyYcFHbm/K0tgi2fbRj58ytOupHhX\nmTQjxoVJRmm+PyYP8c0IraKFhITXL7zLrWvAu/4DzybMiWvnP/DbYYVuNU+lGSHqMOKJbZBQPpJW\nVDL7f3B1xQVnePOycO4pVDJdWoMU++VJeYWV8GYEt5GxbsFpoYOyH/bDuGkBNEd4i7210X2HHcSf\nPuXs4wEZRSXz6U8yn8bPMZg9JHf2Lva4BzA5V3nyrM/+QRpFzXHwJjfh28yYTRJ6+TiYCW4+pWf4\nwGGhTfnkPeWT60eZnCuyI853a878faqR0T31mOO0i72ELKQ7kznKzPsx4kvskqi/Ja3m+Hzk4tlO\n6FpExk1l8Q/B9h3qEJOvxRvbINIs4khevwZxR1/wXjK5VtnZbfHnfvG2+N2FtVSNezDiCG/xsy9I\nIVOiVK2gtDTAitvrwR0MEAn4sErp/12y+Dd45v/WVyEewvnWNQbCxMKTJ+jYgjFi6RrZboNCUSG8\n7sFocpF89gPuXJpcqUpF7QBmHB4foViciN9+Wfk3+dj628/4yjkqJRWlVqcDGG0ufN4AoWgYv33J\nstBHyGC24/H5CIXihDzXx+QMKx7Wn/9EpFokWyhRLevpaHMF8AWCRCOjESGXzN4kz38OUsrnKJVH\n7xU3Hp+fUCiEUyJ2Hw+Tncj2z/hCBTLFItWqQlvTn1e3200oEMXvs0rj/ns2T/5+A4M1yPpmFeVj\nkWrqiKz7GasS7ne7r1lmmlzENxPU/jhBLR6Q8rjZDs8+cHO3OsTkRfsMFj9bUrl8WF/4XrIF19mo\n1tkvfp8b3xtevXr1x+vXr8defPXq1Te6HPE1SbovJ0n35STpvpwk3ZeTpPtyknRfTpLuy2laukuk\nkRBCCCGEEEIIseCkcS+EEEIIIYQQQiw4adwLIYQQQgghhBALThr3QgghhBBCCCHEgpPGvRBCCCGE\nEEIIseAmrpYvhBBCCCGEEEKIx09WyxdCCCGEEEIIIb4TK91u91tfgxBCCCGEEEIIIe7gvE2/YrFY\nvvGlCCGEEEIIIYQQ4i7O2/Qrk948j9kX37eray1Iui8HSfflJOm+nCTdl9PVdB8MBt/oSsTX9Pr1\na/7+979f/Fue9+Ug+fxymrZmnsy5F0IIIYQQQgghFpw07oUQQgghhBBCiAUnjXshhBBCCCGEEGLB\nSeNeCCGEEEIIIYRYcNK4F0IIIYQQQgghFpw07oUQQgghhBBCiAU3cSu8RdNVCmSKRapVhbYGRpsL\nvzdEOBbEa5v0JzY5/eMNJ40+JvMqT39Zw32tm0OjsP8bn0o9rIEdXu6FME/4pEG3xMdfD6gwfZuZ\n8O5f2Q5OOlvclZL+N29TZxgNSV78TwLn2LuT026gnvLPNycAbLx8Rcw1nn7X0qmnknr3lrTaZ8WV\n5NmzBI6epPfXNJpm48w4PD58oRCxkAezYdon9Ch9+pX9Qg8DPnZ+fkrQNum4Pu1qgWyhRLVcp4Oe\nj7jdPiKRCD6XGSOT76FR3dI+v+6XMBBg9y97BCx3/cuXw/T0vaT/zrPlx5d6tKvFsfS0uQL4AkGi\nkQA207TTOlQKGQqlKhW1A1hxB3wEQlHCfjvjp11e01VGmwufN0AoGsZv/y6K2S9AJfXPt6QH/RuP\nOs/je8M8/7bjnFyWD2bXOs9fxrGPHXnDvXTWpJjLUShVUFoaej7jxuMPEw35sK1Imf8ljP6mga1f\n2ItYx94/z1fByeaPPxB1jL57mcfb48/5Yd1O6Ur6tm65d85tvHxFFMnjv7zpeafNFcAXjLIavSzX\nZy13R/OA83NuTae+SurPt6Qb/ZHndr7rEw/npvz1vG0XTURxT8leB80sf/x+RBNwrj7nxZpnZBR7\nvjLHeeNRj9ti1zp6LfJHHzgstMde7rdVSm2VUi5NcOMp2zHnWIhCTymTbeiJ29NOKVRiuKUgFmM6\nFD7vk1b7GM1BtnYTOE0wuJ7Xi29Co6kUaCoFsqdhtp5sErJfD0QatMsUCvqzPqBKvlTHn3BfCVnq\no6Tf8TZVH3+1rVJrq9SrPZ79vI57WoNQPCqDM4WTjwdklO7Y6221TFYtk8t4SO7sseodL/60Wor9\ngzSKNvpqh3o5R72cI+tZZWdvDfcMpWa/rVJuq5RzGfyJXXaSHuT2+fo09ZjjtIu9a8/8dYNOiYM3\nB5S00UqlRlMp01TKaMZf2L3S6BQPw2Dx4A8aqZR6qOUa3UiEy7ZYj3qtOvzvBoraIeoYSYdeHaWo\n5/EBrwsjUkgvsvN8uljSB1Sc98w4B5Q5zSr41j0T84B28ZR04+bG3pe8PjG787ZdpVxn5+UugWvZ\ncZ9aKUtz+K/maY5q1LOUHXAL3LjXKH1+z2GxA5gJrG2zFnZjMRnoayr540NOyis4ndYrD3SPajHL\naP2tkinSCl7t3Z+f9NZ/L/oo6QM+FTt6w/759oRMRNL7axvtse/3NFrVDMdHGZR2gcO3Riw/beK5\nkqM1KnlqIz3A9VQBJerGN3LcoJnnaNiwDySfsx5zYTYM6GttlEqeUt8vDfuvYNKIzPyaZN6/J6P2\nARfx7XWiASdmBnRbZXInKbKKwsm79xh/eE7MqZcOg2aWD+/SqMCKK8rGRhy/3YwBjUY5R+okg6Kc\n8uG9kRfPE1ztRxobAe73ONMawzKoTSX9lv2VH3gaW+RxgC/BRfJ//h/J4b9uG51Thv8/76hKNfWR\nI9tLtoI3Ncx7VDOHlLQBJkeU7Z0EXpsJw6BHp6FQztWw+66fL2XAQzHj9nqgVEGr1VC7kcsK+Ujj\nHbjW+NeUGvnBACNRPC4jTGjcexJ/41Xi4hMuRu8cyRf8mHCPHTtQH/pvEzcZzTv7PY1mOcX+pzwd\nNcVJ3sez+P3zzUbmhELo5ZWIDxicVcmkq9/8+sRkY/lrr0e7nuHgfRpVK5EpxQmsjv/2g7Mapcxl\np/6AMvlSg8BFGs1X5iyyhZ1z31NyHBU7AIR3XrK36sNmNmE0Glmxeljde8ZPPz0jfmWY5XIkz0w8\nmcABnDUyVJTZe+7E96yPcvqB/VQdcLH2ZHviiLD4towmM87gOk+erOEC+lqO00Jj/KC+Qjmr9+EG\nkklCBgMDChQrnbHDtJZKEzAQIBjyYDUZMRpNrFidBGJb7K2OV/7E49UupDhR+4CTtRfPWQ+79fQ0\nmbC5wmw82SPuNAIqmVQRvRrQIX+S0hv2jlWePdsk5LJiMhkxmqy4w+s82RuWFWqKdKlzwxUARtNF\nGbQd0huEtaMc1dujgsUXoVHYP6Z8Y7K1aOT1TkCrP0jAYcZkNGI0mbF7giT2tpdy9Odrsrr9uNEr\n5NX65fDLeeP94t+1GupF/b1Po14EwBL1ySjqgjOazLjC66yF9YRUM1VaD/LJKpl0cWxQD/rUc2ny\n3enTa77e9YlbmUzYfD68Br0+3p8QWt+pFCgOBhjNcZIJvUGvZsrUl7B5t7CtlkZdf1CNxAlPGlbF\nit1+Pac/H8kzmaMEE36CTiOgUShWJZhr6fVplw7ZP6mhYSayu0vMtbCPyFIwuaKsRvXnvFFSxgpa\nrVYi0+3rjfZwlEBET8tarjx2nGlFr7UPKJM6TlNSWmiSGSwgjXpNH9+1eCOEri+kAiYXsbhfP7pa\not6GQVelVtVLf080MrGBYHJHiQX1N+qlGt3rh0xgJRSP4QAGFKjXpXX/rQwoc7ifpjH1uTZj9ugT\naFv5FJ+zZZqdHktYJ/xmDDYPQe/wGas3hvWxHmqtAIBnbZ24xTje+O+r1LJ6KrndTpn68l0wYbbq\nz+LgjAd7BjvlY3K1y08btEucpho3nPF1r0/cTlMUagN9cNbnuBpr3aScqwFgj/pZDYRwoE+9LteW\nr+xd0LB8jU5LTyxzwIFt1vbXyEieK+7DiRNT1MvJpwqdQoHqamDKYlviseoPUvzxOvUgn9WtnnBQ\nLKEBZneC+I1hnFDY/w+F/fHXZlvsSzwcE3aHC6jRazToaGA3A3Qo50sAWMNBvJYVCMQw59JojQwV\nJYrdo2ccJm+U7VCZT8UOrXKK/bJ+P9lcYQKRAJGAD+uEWuPRm9ccfZ0/UsykQ6esj8KsuO1MG2g1\n2xyYKaGhoJ3p550v3uN2THvmzdgdK1DqcaZoaDD180cZbA48BiPNQR+l1QH/gha5j8i0PH9SWKXR\nsMrWTpfj/SKamuLgs5VnO94Jn2ollFylWDtB1RRyRwq5IzCY7fgCYUKhEAHX9VxdyoCHZMXps0NN\npZur0ljz4TE0UPIDwIzfE8XWy5E57eiN/6APY1OlNNA7cH3TVti6B8njv4UeWkfPjw0r9x+BNBAg\nFu+TyVTJHWfwv0zgNPaoZtPUGOBJJnGkT8nessjal7o+Md2k/BXAu7rL6pWy9HItNSdhvxuDw0LE\nl+JztUc5Xybuj8xUZn8vlqqmcT6SB078Xj1kw+r246VKjSqFSoPgPebPSEG/2GrF0sV/a/U0mZLv\nlnma4rEaNCvkq/rYj88/XMzM5SFkyZDp6pE6UU9gONJjJbzzIw5fjmy2QFHVF+hsqwVOVX3Bvr3n\n2/iWqWT4BiZVpCfNiRVidkbswS122x3epuq0isekfXtMmlppcq3y/BcH+UyOXLlKW4OB1qKSO6aS\ny+Bff8pu3IkskP3lOD1BHKg0yaGo6zipkh3ouxq5XUZsvQCcZi4a/9Tyekebz4tL8ueFdz6n/aSg\nl92uuA87MDAaccDFQmnzckUSJBSFdCNFphhiy1EiletgNEdZjXqpp0/vdX3i66qXc5SDLsKO866V\ny7XUVpxBPA4AK96AB6oVutU8lWbk2poL37MFbdybsdpXgB5auUm7D+Zbu88uR/Is3gj+YSIbbAHC\n4SNqhZ4+NyPqnLAtnnisbtsKb162UBxPO0te1cjv72O3Pp8ami+LKT0GPVpNfQUkk9OJVV/R7GLF\nVCNxAuerohs9BGIOMsfqhEgdE87gKjvBVXb6PVpNhVo+w1GhTr9dIFuO4ruyINpNW/KIb8GKNWCA\nEpzVW3RxT+yp19pNNMCAB/MKYLTix0CFAfVmh5hrUoeeRqupR4uteMwzd9YO2k2U4YiQxy4dhQ9h\n/m2KjHgSO2yqv/O5qpHf/0jFPLlsMFp9xDZ9xDah32miqGWyR6fUNI3acQE14mS0q0nKgIdlcHgI\nOo00G32qioKTMgC2qEdPb7ePmCFHdpBDqQcxVvTwfJff+0VG5SSP//I65QP+8/rg2usrriRrkeFT\nvmLGioEmA1pdfYvKUV3ttnVQXMTXouTfZSinPqFZFZpAeCOBd6VD/YZTZ7o+8UWM5699zrQW5eMP\nHBbLHL2zYRtuYz66K5InErjocLH6/3/27vQrjTVd/P4XsJgp5klxipppj939nJPz/7866dO/3r17\n73Qmh6gg81QUIJQFz4tCBQGnmETj9Vlrr7UDVYjedQ/XPcaJ2RpUhm3KVY24d/aJCd+jBxrcgy8Q\nQyGHQZ5iJUlg6ogag17Pgct1uhvy+Uhev7nHb6/3pj7TWpuRJnDLqZNS0T9sLjXD5toS3hMf5psd\nqoZObi9H4OWybNRzT5l6kaOila99UdXq5R/bMXVAnv/8X37qvuHETJ0BpmnHcZrGdgcefxiP34ut\n/wefmiaGKSvrvrTP3632fMftfjNLqRkjE7xQlZs6hXzdujoUJeAGG36CITv1hkkjW6QVnT720GwV\nKYw6CwPR6wYSPSr5wmizxjiB65yhJ74QF4m1dVpvdqgaBoYx4xLTZOBwnDX+7C4vIZeXwMKAf7zL\nM8TgRPbi+MK8+MMKtHt0yp/YZ3QaUmAURNl9qAkbhSKUcwcstAfYUImo0nH2vZh1jrzN6cLrtFHv\nD2m3uwwiyliQ1qPdtHbRUcKuuWWzI5hmNVZju6KhGaD4V0hHFeCKjoFrfD/xNdhZUHzE43H2KjlM\no0y7u0zAN3kqUm3vX8wI7+gcVdDS6sRJSd+zB/trOtQkq7EK25Ue1b03DE/Gj8LrUCscsFcYsvLy\nGemAjVohe60pPbPWZgyHA0zTnO7xsTkeTS/QY6AmRptpOaKsP+3Re3OI3jli55OH5xuxR7Ve574b\nPwpPB2t6XdxqALbLR1SGV++AezpTx9+v8vE/FdyLSRLhIK4FGzaG9FtlKk2rNe9xSurfF5eVx+54\nhuVSk0PdIPfuLYNZR+G1R8fkZU7ztIvEcoZKYx/dyPPh3WDmUXgdrNGapauW6kwchWc1HIOryUfT\nqLivbK6xcn3q3QGNoz84OI6zlIyg+pw4bDYGZpfaaLmWXXFbMz0e395MX1UgmEDJHmIYPXqAQ4kT\nOJs958AfjEOxQF/X6QMLvhBe2Svpwbre0lUvasJLLqvTPjok610jHfLgwKBV3CfXMAGFaCx0yeco\nRJaWCFb2aLJAIpO81pR6WVp7X4xG7svWBps2AjgXYHhSp3h49caI1klJS4Tij6Mj8AE3NxSia88w\nbR/YKx9TO3xP7XD6mna7x0DpnE3ZCK78OPNcyuPSB37fm702o1/f4/d/THcFxTf/yrosB/0uOfyL\nbGx2+c92hW5lh4NAgM0Ls0PmbfYh64S/jHmbG9ndcdafrlhn3I9tmumOb/Hjk8jUDspm84Df3+Ux\nRjN1HL0yTaNFc7SJ1kUuNUN65okc4lu4rDx+EvWSfvaMk4875DWd/O5/yO9OXmdTVDIbW2dn3APY\nvCmePj9heyeHphfZeVOc+nyXusjG1vQZ9zB/6iYohJc22ZAz7u/MvA31bETY/MvWpUfWjZfrE4P3\npkY936c7PN9Qc5KL+FrCmgI69qrUAXfP5vUTc9pH+yOBMxZkLKuyEFCJ2YpnHbi+mCrrnr97dtTU\nKkvaR3KaTn77Ty7Ox/PF10heMevW5o6SWW1gO46SvDirS9w788pXAE8yTtAFvXJ5VBb4WPvpxxnr\n6nsU3//Bp4ZpnZQUTz+K8uIBB/eAw0PiyS+EYmXylQqNhsaxAXa3n3AwRjwVJeheQM9/oskQG3FS\n8dmNLHc0RSrXpNBvU65oxFceQ/KLy7ijGZYbLXYrPap72/i9L0jKAO49oeBVQ4RiMVKx8+lx45tm\nplLTgT1Yu+MvhUrnu6g+e8lf/FWqlRoNrYXWNeZ+vrj/bAsqKy9+JtGoUChXadRa9BhNp4xESSYi\nuGc8GEoww4tf4tTLecrVBnW9B7gIREJEYkniYc+1j9qyu/2EghFiyThhz8OuZr837ugKq40W25Wx\n6biOEOt/+4VQrUi9qqM1rWdG0vEbsPtRo3byeSu4jwT9E7N0bAt+1IidStUEfIRV6Th7FBx+Ms9/\nJFDMUTwrn616OpZKk7hW+WzHn9ri2Zf/tuKLuJjeHYqj4+/c8UViMzfMcxFLJcg18hjtPNVmcnq5\n3nfI9urVqz9fv3498eKrV6++0dcRX5Ok++Mk6f44Sbo/TpLuj9PFdB9eY6mSePhev37N//zP/5z9\nW/L74yDl/OM0L92//+4LIYQQQgghhBDiOyfBvRBCCCGEEEII8cBJcC+EEEIIIYQQQjxwEtwLIYQQ\nQgghhBAPnAT3QgghhBBCCCHEAzdzt3whhBBCCCGEEELcf7JbvhBCCCGEEEII8Z1Y6Pf73/o7CCGE\nEEIIIYQQ4hZOY/oFp9P5jb+KEEIIIYQQQgghbuM0pl+Y9ebpnH3xfbu414Kk++Mg6f44Sbo/TpLu\nj5Ok++Mk6f44Sbo/TvP2zJM190IIIYQQQgghxAMnwb0QQgghhBBCCPHASXAvhBBCCCGEEEI8cBLc\nCyGEEEIIIYQQD5wE90IIIYQQQgghxAMnwb0QQgghhBBCCPHAzTwK7yEb6kf8/c3hpdes/vCKlN+g\nvP07u1UTV2SDH7ZiKDOu7Ve3+W27io0Im3/ZIuKcfF/L/T/eZk8u/QxxWzrZ396S6w/wpF/w44o6\n0Rs11I/47c0hBrD49G8shycfZz3/hjcHOs7gOj88T3A8Sqt57LYML/97CR/n6ar4V3jxQxrPxJUX\nnx03xb+/JTccXPrbjH++uCWzR72cp1xtUNd7ALj9KmooTiIeweec7K8cGjrVUplytY7WNbApHtRQ\niFgsTUw9z63DfpWPv+1QZ0hk/Ve2Eq6JzzktB8DH2k8/kvROfCmqu7+xXTZnPqfiOkw69RKlSp1G\nrUUPcHpUQtE4iUQM30TBelXZrZMd5cf45l95Ep1897rPhHZFeXFq9YdXJLluvXPlxz1443npIrc/\nQigSJZmI4HaMv3OepjPviSZZTKoottk/06jv8c8PJQCiT35lMz6ef++2HlGu3caY3x6xnrkoyXSS\nsOe7a4bNNf73mJUfrmpv9fUq5VKJSkPj2BiVEaEYsXScgHKzz5rXdjtpVykWz3+GTfGgBlQi8STR\noAeH7SbtzBv+gb4752XxZabaRlP1vItAJEQkliQe9jBedFz3mZrX/uprZfKVCo1RetvdfsLBGPFU\nlKB74UY/Y96zJm7gWm2827QBzu/xJp/xci008RyN3+PNvOSnpcBX+oW/jMdTq4gHyI+aUMhle/Ty\nDdoZlcBYq6zdqmOM/r/e6rAUHm+0ddCqHetTIkGcwPEtvoGhH3CQ87O1FJCA7VszdbLv3pLTJxsK\nx7rGsa7RNp28PGu4D+iU9/mwW6I3du3Q6NIsd2mW8+Tj62ytJnA7wOZUCUft1Ksmeq1JP5HgvH42\naTUbo/9vo+k9kt6x4MFsoVWs7xQJ+uU5uaFhr8HB7h4FrT/xer+rUcpqlLJF0k83WQm75nzCdd3s\nmRB371ivUdBrFPMqmY0tFoNXN0FO76nXM2w9XcI3lTY9aqXq2b+ahQrt6BK+s4x4t/XIdJfFzVnP\nXJZmuUxq6wWrkc99tr9zZpfS/gf2ypO1eL+rUepqlPI5Uk+esRz3fFb5e1zd4T/blbPnAUZpVeui\n1Xo4fnlG1P0ZP0BcyWhm2d7JoY0nAj1atSKtWpGCusjG1jKBz41e5jxTg2Od6rFOtZgjuvqMJykf\nc/oUxV27URvv9jrFXQ4CP7Ae/X7L3e86uJee04fPF4ihkMOgQruzQuAsPc8bXcBUo23Y0ai2B4AP\n1T+ZgW86gt7IfmTffVlB4Cfz3/9FZvSvq3p5xe3o5X1y+gAbIZZfrJHwKdgY0u9pNIoliJwX+kb9\nkHe7JQzAHc6wtpzA73QwHPRoVbLsH9TolPf4MFzgxUYEBYVAUIVqHaPZRO8nznvfx4J3YCr4N7Qm\npeEQO0lUv4T2N2Lq5LY/UtAH2BSV9HKGRMSHYhtyctwgv39AQdPJf9jG+cMLUp/x973pM6Eu/Y1X\nS6d3X96rP9TP/1/y/LnxmRMD06TfLnGwd0j9WOPw3XscP/1wYRYMEyMxA9OgU8uyvVuip2U5LIV4\nnp4suYedOqXG+Yj/SSdLpZnENzYC/yXqEbhZWp9dOxxw0tc42t0jr/UofswR/NsTQt91a+xzmNQP\n37NX7gEKkeUnLMcDOO1w0m9Rye5zWDumsPuWgeMn1iO3nD9pNsjvVDGAQHKDtaUwboeNgdmjrdUp\nNZ2oMwJ7ye+XuVnbaNgp8OFdDh1Y8CdZXU0T9ijYMGjXimQP82jaER/e23n5YgnPrasDg+qn9+xV\nLjxTDhsDQ6d0sMdhbQGfz4Wdu+nQE1e7SRvv8xiUtrfxuD6vTXGffZ+/lfhuOPwqUZs1DafSbJ29\nft7osgyo0D5vo9HTG3SABV8U9ULj8eYMytsH1HpXXym+FIOu3gVACUeJqi4cDjt2hwO3N0xq/dl5\nQ2Ggkf9kBXGuyAYvni4R9Cg4HHYWFA/h9BbPNyIAdCufKGvWc+QKhAkAQ2o0WufDBqfB+9m/m030\ns0HmAe1WBQBnMjRjVFFc5rh2NOql97Py9BnL8QAuhx273YHTG2X16RZLfjugk/tUpHvbH3TLZ0Lc\nHbvDgVtNs/V8g6hiA3QKhRrTE/HH71Hwx1dYjlsZq13VLjwDA5rVAh1ACWXIxK0mTa1UY3weyP2o\nR0ZsdhZcIZZX03iBIWVarauXfzxWppZnr2hVvvGNH9haDOFWHNgdDpyeEItbz3kSdWAFbAVat8y6\nw27nrJwPRWN4FQd2u1U+BKOLbD2RZZdfVo/SYdYK7L2LPH++Rsx/Ws+7CMRXeLq1hBc40bPkqrdv\nkJlakf3KjGfKbmfBpbK49Zyff35O+rOnB4jru0Eb707o5PZytC+rgB4wCe7F/Wb3E0xZj2mvrp81\n7NpalQ7giq+wHLnYaOvRrFlDaa6w/8J6+dsZUmNv+/stCO4/B4rTmhzXr2c5yFXQugaDGV3qw45O\npW+18GKJCLOWv7ljaZZGa7cqDZ0BYHOrRINWENFqtUdBh4neLAOgLq+Qdtong/+BTrNg/axAwIfE\n9jfRo1nVAHDH08Rn9aA7/CQXE4C1FlbrTF9yHbd9JsTds7mipBat0fd+WbtGmepAcVl5f9AZTKTL\n8KRJNW+F8aFYgkTYelb6jRL18WflntQjExYUXKMJv8asgkwA0G5Z0+TtpInPXL7gIpZaRAFM44jm\nbaP7BYXT+Til7C6lepueKaXA1zLs6zQb1t9bTSZmdpQ7AklS0VEdXW3Sn77kWq7zTHk8Upt/Xddv\n492Vk84RO58qt36O7jPplhL3nB1fIAb5wqhxn8bj7dFuWM0zNRgjMmhxWKtbjbalAO6+TrM5ABRi\nwelNMQbDLH++zk69PmuamN22yPpGn4PtCoaeZeeTi+cbwS/xi4pL2Qkm14hWdqgaParZHapZABdq\nPEI8kiQccuEAjF4HA7ARwTt33p4Lj2qDCgx6fUzAjgtfyANNnX6xQXs5hGpro5WGgEJYTeI2i+SP\nelbwHw1h7+hUhwNsRAhd3NFJXMHA0Kya2+5S5naMLHi8BIAWba7Yl2n+T7r1M3Fz+29es3/hte9h\ng5675PEEAJ0BNTrHa6iXrpEyMXrWc2JbmEyTXr1MZTjERpxIUEGxh0k7S+T7bcpVjbj3dBrn3dcj\n8JlpfWLQG034tT3CRb2z/nbTDHpda1aDEvHinpt1PQSwUWNI/+R2OdfmjpLJlHmbbdHTyuxpVqeu\n0xMiEo8Si13c2HP+7yH5/Rb6vbNNOAPeeUsgFTzeBaianGgGBtxiNsU1n6k5rvfcipu7fhvvczkj\nayx7q+xkW3QrO+y5XWwtfV+F8Hc9cr//5jWvX0/+90eudfWNY2x2abB/a4oaJGGzcbqZ2fBYo9o0\nzwKq0+nUpyN7RqtOnSEOJY7vs6dS2vFE19nMWBV1t3JArnqbrfnE57K5omz+/CMbmQT+s7WPPbRy\nnp33/+Ltbm1iI6Tb8KlRvMCAIpo+wGw1KAwHOJQkAb+dgGpN3e4XG7RNaDWtqd5KKIhfdsi9vct6\n508MJkttOwvSLf0oDEwDvfSJ/bI1vO9Lqpw3+zvUik0AXPGQtcGW3Y8as+rszlEFbWy2+7etR8YM\nB5z0GhzuHdLB6nAK+qWdcddu3nazoy4955dnayTCnrOgsd9tUDjY4c0fbym2ZST/3rHbucvsKb6d\n67fxPq8NYMNBcGmDJzGrNmlkDyjq39fSKGkiXWFBsYr4IS36BkzO5zQxDZlO98U5AqgxO6WyiV5v\n0rDVaQGuSJiAE2xY06lbzTaa3mJBbwDgjAXHdkw+d/Mj6eyoSxus6X/wqWFQ2v5IXZH5+d/EgpfY\n0jqxpXUGJ13aLY3S0T4VfUi7fEQtFSHh8qJQxaBGpzsg4pzVh9mjezZq7DzrDbZ5VaI+O532gIam\n4aMGgDupWs9LIETKVqQwLKK1otjrVlXjDwdnTvUWl/HgS9igCMelOq10gMBUt/yAVrMOWEGQ0wng\nwDE6E+2k1eOEC6M35gnGhd4C5TOeiZuSDbau1u1a3TV2IngvbFLWq+3wz9c7U/cs+DOspM5PLTG1\nGoVRsBWNnh5rZCcYTeE92qdDmUp9idDpsXh3XI/AzdJ69oifQnxz5VEenXXZkWLnFFyeBcDEqHU4\nHoAyM+t2aY3yvHPBehJu13az4w4lWQ8lWR8OOO5q6NUiB0cNDEOjUNaI+UITo2KS3++I00UYG3WG\ntDo9UjM2sASDbscKwhZUxSr3R8tbOgzp9qfH8vvGxbX513ym5rjecytu7RptvKT35m2AaS7ia0/o\naO8p9HUOP+yycNupgffQdx3c30mhe1bgGOidHvjGCpxBm1bdeoAWvC7ZbOWLcRAIhqBcpd84Yv/Y\nKqz9ocDob34+nbpZPqCvW4H33R5L5iKxtk7rzQ5Vw8D43CFicXOmielwnAVd9gUPgbAHv8dO7/fd\ns2nbNq+fmNNOvj+gXKiQCCamAu/jSp5cfzTlNjT+nHjxhxVo9+iUP7HPaDfdwKgryO5DTdgoFKGc\nO2ChPcCGSkT9fo9U+XIcqOEESjGPYeTZ++Tm6drkMXTH1X12s9a6Z08yTnCUkG53EKgyMHQ6x+AZ\nCxDNtk59aC2l8LqsEuLznglxl4a9KoWjNgDOuHqtTSid4RWebaTxnl1r0qgUzmbq5N79H7kZ9zWL\nNbrx9Gi9/H2oR8Z5SD99wUpYWg6XOT/pIE+xkiSQuFjW9qgUjjAAh7JI8PSog1u03UxzgMMxut9m\nx+0N4faqLAx/433+hKFxwoDvfMrrN2Jz+gmG7NQbJo1skVZ0Zaqz12wVKVStfBmIjjrUnS68Thv1\n/pB2u8sgooylT49283STNtdZmX/1M2XQ6zlwuSSlv6prtvHg5m2AmRwqma0l9DeH6Ibx2TM/7xN5\ncoHhcIBpmtP/Dc7PvwaoHX4ir/UwBwMGRofKYZZ839rpOR6W9VVfkhIIE8YG9Ogdg40Q4cB5gXw6\nndrUdXT4IseS2VxR1p9mkE76b+O4tsMfb083OjIZDAaYZo9GuUwL65lQFgC7SnotgQL0G3u8/ZCj\n2TUwzQEnRpd6/iPvdqwReU9sjbg6+ZwEgta9Q6NHzwCHEidw9iw58AfjAPR1nQ7g8IWmRh/F9TiC\nS6ynrD9et7LHv3//N+92D8gf7PH23//k923rTPoFf4Yny6GzSv+0PBjSIHuQo9Wznod+p8rBodXQ\nV/xpgqeZ9TOfCfH5BqbJsZbn47sdqsYQ8JNKRaZmSLgiG/z11StevXrF//c8baVZPU91bI79sFPm\nqHz17KmTdp762MkH37IeWf3B+p1evfqVtZAD6FI5qtz+BIhHwqGmWU9aaVTde8PHowbHhmkdrdht\ncPTxHbtVE1CIrqXOjjG8cdttoJH79x9sjzbyMs2B9TM6VSoV61lbcN9+Ro+4iovEstW+Ghh5Prz7\nREXvjdKhR6t8wIePOev0Cn+GpbOjib2oCWtifvvokGy1jTG6p3m0T64xejZiobNOHIeaZDU245ka\nDDjp6ZT2P/Kvf70lL6dYfFXXbuNxizbAHA7/Ihub399JGN/1yP119et7/P6PvanXT8/ojS1voLU/\nUjlucPD2XxxMXKUQXl4hLot+vqjxXl0AJRgmMBZQjU+nhsuPJZu3oZ6NCJt/2bp0iqRVEHT5z3bl\nu+rlu/+6NEpNevrgbKOjSQqh5UXCo2dCCS/z/MmAD7sljutZ3tWn09sbX2drNTJVqI+P8sL0tNyF\ngErMVqQyOjbJF1PvfiftR8NBePVHXjh32T2o0TO6NMtdmmfvK/iiSzxZT46N2oLNGWVlS6Pz0Urf\n/1xIX5uisrianEiXz3kmbmLehkvjZ74/FuXtf1Lenn7dpqhkNramzri/yBHMsJnReZttUdj7hM+7\nScR1fvydjThPZ50Rb2rs//s9hb5BudIgqVqdCHdZj8Bt03psFph+wEHOz9ZSQEZa5nIQXn7G+uAD\ne+VjaofvqR1evMZF6skzlifOuL9Z283U6uT7x3C2kdckuztOJqFOnXsu+f3u2Lwpnj4/YXsnh6YX\n2XlTnLrGpS6ysTV+xr0dNbXKkvaRnKaT3/6T/IV7fPE1kuHxQkIhuvYM03bZM6XQbvcYBBb4vrZa\nu69u1sa7TRtgHnd0nc3jHm+zN9uT7T6T4P4abK4wGz/+RKhQoFSto3UNwEUgEiKWXCKhSgH+5bkI\nhv3QsJr9/sjFNc7n06kBQkH/F+thd0dXWG202K7Iwfdfj4fUy1/x1SpUaw2aLY1jA2yKBzUUIhZL\nE5vIh3a88XV+CcWplsqUR/l2/vXjt/pRo3byeauBf3Farm3BjxqxU6magI/w5Vt9iys5UNNb/Brv\n0mxqNKpHFOrW4TTB9BM2lkMomLSrDQhFz4Itd2SdH38OUcwXqDSs58Hu9hMOxkguJZk+vOAznglx\nJ9z+CKFIlGQiMrH8Yj47anqNpcYbcnqV/QMV35pydvydupKcDuwBHCrJpSCFvTq9cpnGYoSoG+5L\nPWJzRVlZa6B9rNDI7lMIPGdRlebYXA4PiSe/EEpUKZdKZ/nd6VEJhWLE0vEZ+f1mbTdHaJW//RKk\nVqpTbTXRdOsZuPkzKz6HEszw4pc49XKecrVBXe9xmmaRWJJ42DOdJx1+Ms9/JFDMUTy7R8Grhoil\n0iRm3jN6pmJl8pUKjQt1SDwVJei28qTsrPU13LSNd5s2wDzj9cz3se7e9urVqz9fv3498eKrV6++\n0dcRX5Ok++Mk6f44PZh0H/Yo771jtzx9KoUnvsWLJ583sv7YPJh0F3dK0v1xknR/nCTdH6d56S4z\nwYQQQtwfNhfxJz/y09Nlop7TcVUFX3SFjRUJ7IUQQggh5pF5YEIIIe4ZB97wIpvhRTa/9VcRQggh\nhHggZOReCCGEEEIIIYR44CS4F0IIIYQQQgghHjgJ7oUQQgghhBBCiAdu5m75QgghhBBCCCGEuP9k\nt3whhBBCCCGEEOI7sdDv97/1dxBCCCGEEEIIIcQtnMb0C06n84pLhRBCCCGEEEIIcR+dxvQzz7k/\nnbMvvm8X91qQdH8cJN0fJ0n3x0nS/XGSdH+cJN0fJ0n3x2nennmy5l4IIYQQQgghhHjgJLgXQggh\nhBBCCCEeOAnuhRBCCCGEEEKIB06CeyGEEEIIIYQQ4oGT4F4IIYQQQgghhHjgJLgXQgghhBBCCCEe\nuJlH4X1Nw36Vj7/tUGdIfPOvPIkql99g9qiX85SrDep6D3ARiISIxJLEwx4cExfrZP/+ltxwgDfz\nkp+WAnN/9uoPr0j5x19bYPHpzyyHJ/9EQ/2Iv785BDi7Z+J9Q6daKlOu1tG6hvX9girheJxYJIBi\nm/6ceWZ9vrD0q9v8tl298rr45l9ZD2iXPmOz0nT82bjss698XsWt9bUy+UqFRkPj2AC72084GCOe\nihJ0W/nyy5YfAAOOG2UK5SqNWose1vcIBEIkEglCfgU7oOX+H2+zJ3N/rN2W4eV/L+G7/Z9DcFm5\nqeBVQ4RiMVIx9aycvXjPrDL1tCwZTyPJ//fDab6anX8Mytu/s1s1cUU2+GErhsLV5flUupk62Xdv\nyekDFvwZnj9fwmtK+n8zJx0qxeJYG0rBqwZQw3GSsRDuGa1Wo77HPz+UAIg++ZXNuGvGewrLL35l\nUZ0xpjXQOPj9Pfn+gOj6r2x4q9I++8Zu00bu61XKpRKVUZvB6VEJhWLE0nECY1n1uPSB3/fqgMLS\n81/JBMeeCVNj/9/vKfQHeJNbPF+LILn882m5f/E228NOmuf/tUJgIhvqZH97S64/wJ18xo9roYm2\n2LBT4M8/9umisvHLC6Lu6fc6gG/xBS+X1UtGrU2OG5WJ9pzToxJQIxPtyvG6ZZ7xOuc++ubB/U0Y\nzSzbOzk0Y/zVHq1akVatSEFdZGNrmcCd/FYGhb1P+LybRFxXXw0DOuV9PuyW6E283qPVLNNqlsm6\n42w9f0LoWp8nxCNldintf2CvfDzx8uBYp3qsUy3miK4+40nKh23OR8xy8/JjgJZ7x9tsa+p7NI91\nWg2T57+sEJjuERBfnUFHK9PRyhSO4qw/XSPmkYlp4io9yp+2yekD7EqU9c0lfA4Yzm/TiS9o2Kuy\n82aHqjHeqWLQ0Wp0tBqG/Vc2ExcbUD1qpfOO/mahQju6hG+U/ZVglLSzQr5vUK40SKqRqU5co1kl\n3x9gI0Ik5IL+l/jtxBczp83Q72qUuhqlfI7Uk2csxz3YAXdilbW6xqeGQX4nS/CsHh+g5Q8p9AfY\nlSSrGQns70ogmEDJHmKQp9nKEBjrUBl2dOr9AQD9okZnJTQR/Le1Kh3AGYwScI9/6oBmtUBn9K/O\nUZFGUiXinP75wxONw4875LXJzN3valS7GtVijvDyFpuLge9iSvuDCe6HnQIf3uXQgQV/ktXVNGGP\ngg2Ddq1I9jCPph3x4b2dly+WuIt23cCosrftwfXcqvAv06/t8W63ggG4wxnWlhP4nQ5smHQbeQ72\n85iBEN4Zgb30AN+cM7rJq+jm6F+zR3BODT+zopYRmq/JoPrpPXuVHqAQWX7CcjyA02FjYOiUDvY4\nrC3g87mwwyXjapNuU34MOyX2R4F9JPOClZQfxTZkYByj1UtUB+GpwF5G6L+e8XJzYBpn5ax2XGbv\nrR3nz2uod1DDSf7/Xg3QcjvsVnpWYP/iycyOfEn/r8Wkkd+jagxxeJM82Vgi6HZgG5r02hq1YhPP\njJGRYadOqXHeG3PSyVJpJvGdzrq0q0RSXvIHOr1ymcZiZGLkb7xzwBWPEnQyEdxL++zbuzwNTOqH\n79krX2gz2OGk36KS3eewdkxh9y0Dx0+sRxTARWJ1lXpjj6aRZz8X4uWKyrB1xH5OBxRS65k7qT+E\nxeb1E3PayfcHNPQ2meD5TOrT4B1gMBX8d9Aq1ruekI/xuH140qSaP8+sQ2qUqm0i6QstsEGH3Pv3\n5PUB4Cf9ZIVkxIsCDE7alA72yLacqKpvKrC/7yP08zyQDooepcOs1TD3LvL8+RoxvwuHw47d4SIQ\nX+Hp1hJe4ETPkqv2rvrAazvRsxzkWwwuu2igUdivYWA9CC+eLhH0KKPvp+CLrvDi57/y4kmEGR1K\nQogRUyuyX7Hyb3zjB7YWQ7gVB3a7nQWXyuLWc37++TnpG03PuV35YXR1OoCNCNGYisthx253sODy\nEUmts7UYuOyHiq/otJx9+nQZPzAwihyV29/6a4l7a4B29IHtbAvws/z0icz0+Oa6tEtWd60rHCXi\nVXDYrTaUR42ytPVkxojc+cidEsqQiVtpWCvVJgbffeEEQWwMaVCuT5YL550DCvFYaMbSLHGfmVqe\nveKMNoPDgdMTYnHrOU+iDqyBgwKtUWPe5o6zth4CoJ3fJldrkD/IW9O705sshSWyv1N2P2rUyp/H\nRY3zXHgevJ9q6OfvDo/bNNoDwEdYnQzae/UyleEQu5Ims2S9p+drZ2l86riaJadbn7H88gUr8QAu\nh/WMWO3Kn/jLT89I+b+fOuBB/CbDvk6zYaWWmkzMHEV3BJKkotYbrWrzTmdVabmP7F/SYTDs6FT6\nA0AhkZwTwC8oUmkIcYV2y5r9YidNfOZ6GBcez81y0m3LD8eClZOH1Mge5KhqXQyZrnuvOfxJFpNW\nOrarGt1v/H3EfTTguLrH9mETA4XE5uZ31ah7uBQU1Vpo1S1l+VSo0emZlw6sjI/chWIJEuEEAP1G\nifpYvGBzR4iPAv+Ljf9W3eocWPClCc9ajy/uteu0GWKpRRTANI5ojiW+O7HKWsgK/I8+vh8tz0mz\nunTZum1xO3YCwTgAplFHH+XPYUej2h5gI87KSgSYDP57WpUW4FDC+L3jn9ehVmwC4EmGWYzE8GKl\nca05vv+RQaupAeAMJYgFZqWsHUX5vlL8YXRN9XtnG9sEZs1rB0DB412AqsmJZmDAZ4+Sx9Y2cFX2\nyOkGpe1tPK4XJGdcZ/Q6GICNAG73rAdkgGla399md2C/sFB4/81r9i/cMWsDQPH5ytv/pLz9+fc8\n1Kk695tBr2sVykrEy8ysdBu3LT+CSZ7EauxWenRrWbZrWQDc/jiRRIREJITrQkfBYJjlz9fZqU+X\nqZ1fiwOP1w80Mdttega4r7zncpL/v715+eo2+o1DdipVDEAJLJGOXr4JjqT/1+Iillmk0jxENzSK\n+xrFfbApHkKROLFYjIh/8i9+OnJnI04kqKDYw6SdJfL9NuWqRtx7GqQ5CMVSKOUchlGmpS8RUO0w\n0GiUrE1YgskInhnfStpn99k12wwuDwFs1BjSPzE5H9ccm57PEFBIb2RkH50vxOFXSdgKlIZt6lqb\npNdHT2/QAVwRlWh4SPOgTtOoo3eW8HkNWpoOgDupTix3NLUahdGIfjwcwOZ1kghl+dQwqZVqpMOJ\nUQzYo1ez2n8Lfs/suNA0scZtbDgckw9Rr7bDP1/vTLxmI8LmX7Zmru2/L76vroopduzeq6+ax7YQ\nZGnzCVHFBujk9vPo8zfEnmvYr7Pzj//HP/7xD0oyU1SIB8JFfOMnftxcJuY/DxGP9TJHu+/595+7\nNGTjpfvPbuczqgHxnWlWquij/zdaOfJ3uIxPfB6Hf5EXvz5jNRnCPYrjh0aXevGAj2/+4EO+PTaS\nfz5y54qHrI1Q7X7UmHVj56iCNtZec6gRUj47YG2sZzK+kV6cWFh2Or6v9t+85vXryf/+yLWuvvEa\nBqaBebZ7j0G7K/O9vhhHgFDCCju7jTZ9ejRrVmmsRoI43SrhoB2wgv9hX6NetWZFRwIToT2NSgED\nWPBFUb0ALoIRFZieuXMVrfAv/vGPf/DHrrW8+nvwMEbunS7C2KgzpNXpkfLPKoQNuh2rJF9QlVGP\nuoLitkEbzGNrNG6i3/fEoHfFllw2V5T1jTbauzyGnuXj7nRfveLyolDFoEanOyDivFmfiYzqfT1X\nHYV33XvEl6Dg8iwAJkatw/EA7mSm1K3LDwAHvugiG9FFNgYm3Y5Gs5Rnv9xicFymUEsSSp1XOrKh\n3rdm0u1YjQWHz4dLAYYKLmx0GNLtT9UC9I3LgzvJ/9/eVUfh3ZQ7lkY9LlAam5U3b2q+pP/XZXeF\nSK2FSK3BoNdB02sU9o9oGgbNgzJ6wofqGB+5g2j0dK28nWA0hfdonw5lKvUlQmfH4nmJJIMc7tbp\nlcvUF32Yo430vIuxuZunSfvsPrtmm6HXpTVq6zsXxoblTZ38J2ujXUVRMAyDxv4niuoPJKVH+Atw\n4A9GoVjCaNZpNmzUm9YpFaHRWYXBiB+aTbqNNrqrTZ0hdmIExsrn4XGNcnm01DJxPuPGFY4TszWo\nDMdn7rhwRWxQhZNWlz6BG83qfqiztB5EcG9z+gmG7NQbJo1skVZ0+vgps1WkMKrkA9HgKPHOM/5J\ns83xIDKR8Xtt7WzDLOclqe0IZtjM6LzNtjCM6X6d8V0gy4UKiWBCNs4T4hZ8gRgKOQzyFCtJAlPH\nHhn0eg5crutH/bcvPwaYph3H6bV2Bx5/GI/fi63/B5+aJoZ56Vab4isz9SJHRSsdfVHVqvSdLrxO\nG/X+kHa7yyCijE1Z69FuWiM1Stgl5fYj4FIzbK4t4T3xYb7ZoWro5PZyBF4uX3kqjvjCTJOBw3GW\nP+0uLyGXl8DCgH+8yzPE4MQEHOcjdwC5d/9HbsbHNYs1uvH0eeM/GCVMgzoNCvufGDZMwEc8Kmus\n77PLOliubjP0qBSOMACHskjwbM31AK1wQE63gsu1F2k6u2/J6TrZvRzqHZ26JSYt+FTClKnTILff\npccQZyiIf1T5uvwhvDTpNMscmFZHvSsdOjvaEqBdL42WUUBt71+83pv+OZ2jClpaJbSgEAiqUK3T\nb2YpNWNkgt9/wt6r33BonmCa5tR/A1wkljOjXZDzfHj3iYrewzQHDMwerfIBHz7mrE1R/BmWxtbQ\n+YKJs00WsocVOsaAwcDkWDvi02EDAE8ybh1/MpcddWmDJ7E507bsKqlV6zzMfmOPtx9yNLsG5mBg\nHdGkt6+cISCEAIeaZHWUz6p7b/h41ODYMBkMBpz0dEr7H/nXv96Sb02vj7nr8mN4XOXj72/PNnay\nrjc5bpSpNK0A0nNZr6D4agamQbt6wIcPh+iAXUmyGD8d5/WiJqxhmPbRIdlqG2OU9s2jfXKjnbKj\nsdCD650XN6cmrE01ba4o60+tcuGkc8TOp4ocb/5NDWgc/cGfH083Lx2V+0abasUaYbcrbpQFGHbK\nHJWvnrFx0s5T1847YG3OENHRxnrthrXW1xlKEJZR2gfLoaZZT85oM5gm/W6Do4/vRrN7FKJrqbPz\n083W0dlRt7GNFSIeP+nVJas8uM4pWeJWbE6V8GjX/N6xNWsuEAmedazbvCpRnx3Q0Ufrp8IB71mw\nOjypUzy8en3zkDKVuvX57miGJb+1JCf37i0H5RY904oFT3o6euf7S+l7NXJf2fs3lQs9MGcbF3hT\nPH1+wvZODk0vsvOmOHW/S11kY2uyt83hT7G6rLF92EQr7PBHYXJjBLs7znL6OsefuIivbdI7fjs6\nUmGSM7LO8yd2PuyWOK5neVeftfmP/3wUcMysDVtApgPeF/M24ZNNdb4EhejaM0zbB/bKx9QO31Ob\nWjGh0G73GAQWGN+b8q7Lj26jTNNo0Rxt7DR9fYb0hd1552389RA2YHlo5pWbdnec9acrY9Ns7aip\nVZa0j+Q0nfz2n+Qv3OOLr5Gcc/SR5P/vl8O/yMZml/9sV+hWdjgIBNi8MPIn6f+VmBr1fJ/u8Hzz\n0kku4msJAvYBjdHxdzbiPP3bE0IXs66psf/v9xT61vr6pBoZtfHGNtYbXRpJXH5EsbTP7jsH4eVn\nrA8uazO4SD15xnJklF6mRnY7P+rcWSczGlBw+FMsZxq8zbZoZA8oBecv1xG3dT6SDmBDJRwYL3O9\nqFEvtK3I3k6S4NiamdNNNMHH2k8/zlg+0aP4/g8+NczzmTt2L0vPnjH4uENe08nv/of87vQ3czgX\npka8Z22oB/d/Cea9Cu6vogQzvPglTr2cp1xtUNd7gItAJEQkliQe9swI0u2oi8/50V/kqFilUWvR\nA5welVA0SToVwX3dqXgOP+m1JZp/Hp5tyDP+c7zxdX4JRSnnq1QbdbSuYX2/oEogOnt3bSHEBQ4P\niSe/EIqVyVcqNBoaxwbY3X7CwRjxVJSg2yq6bjIf5qblhzf1kr/4q1QrNRpaa5SfFbxqiFAsRiqm\notjm/DDxlV2RLg4/mec/EijmKJ6lvXVPLJUmMbPuEI+BO5phudFit9KjureN3/uCpHTCfX2OEOt/\n+4VQrUi9qqM1rbaa3e0nFIwQS8YJexYYntTPjr9TV5LTgT2AQyW5FKSwZ62vbyxGiLpP34qQ8uU5\nbA9wKItEgg+qGSxmOW0zJKqUSyUqozaD06MSCsWIpeMEzvphDKqHuxT6A2yEWFkdX0ZrR02tsNSw\npufLcp0vwxUIE6BOC1CCUQIXjrTxBcIo6NapRXF17O9/vommO75IbOaMGxexVIJcI4/RzlNtJskE\n7dgWVFZe/EysXqJUqU/Egn41RHTGaRwPme3Vq1d/vn79euLFV69efaOvI74mSffHSdL9cZJ0f5wk\n3R8nSffHSdL9cZJ0f5zmpbvMNxFCCCGEEEIIIR44Ce6FEEIIIYQQQogHToJ7IYQQQgghhBDigZPg\nXgghhBBCCCGEeOAkuBdCCCGEEEIIIR64mbvlCyGEEEIIIYQQ4v6T3fKFEEIIIYQQQojvxEK/3//W\n30EIIYQQQgghhBC3cBrTLzidzm/8VYQQQgghhBBCCHEbpzH9wqw3T+fsi+/bxb0WJN0fB0n3x0nS\n/XGSdH+cJN0fJ0n3x0nS/XGat2eerLkXQgghhBBCCCEeOAnuhRBCCCGEEEKIB06CeyGEEEIIIYQQ\n4oGT4F4IIYQQQgghhHjgJLgXQgghhBBCCCEeOAnuhRBCCCGEEEKIB27mUXj3zVA/4u9vDme+5/So\nhKJJ0qkIbsfpqwbl7d/ZrZpT17v9EULRJItJFcU2fb0rssEPWzEUQMv9P95mT1D8K7z4IY1n4pNm\n3zP+XVd/eEXKP/Z79KrsvNmhagzxxDZ4/iSG04aYx+xRL+cpVxvU9R4Abr+KGoqTiEfwUufjbzvU\nGV76MePpA9DXq5RLJSoNjWNj9AyFYsTScQLK5L3znj2b4kENRUmmk4Q9C1deP+7icyGuMjuvndPJ\n/v0tueEAb+YlPy0FgPP8O4/dluHlfy/hu/jT6nv880MJgOiTX9mMu87eG/art3rmxN2Yl6az64Ex\nU2WJi0AkRCSWJB72MH7L/DS27okll0iokrJf2pfIvxNOOlSKRcrVOlrXABS8agA1HCcZC2FvbvPb\ndvXK7xnf/CtPovI83Kkr6n6fc3JcamjoVEvls7S06ucQsVia2FheHc/bkfVf2UpMPhv96mma+1j7\n6UeS3okvRXX3N7bLJp70C35cUWV07M6d1/Vq5iXPlgJz/8anaTWvHIAOR3++4bA9wKEs8uzXZQJT\nH3bTWEF8OybHjQqFcpVGrUWPURpFoiQT0/X+af0x+/m4qk358D2I4P4y/a5GKatRa2R4/nwJ36yG\n3ZhjvUZBr1GvZ9h6evX1AIZ+wEHOz9YlBc2VTJ3c9i5VY8iCP8PGmgT2lzJ1su/ektMHEy8f6xrH\nukbbdPIyddPP7FLa/8Be+Xji5X5Xo9TVKOVzpJ48YznuuTKdh0aXZjlLs1wmtfWC1cicBqR4YHrU\nSucN+mahQju6hE9acffaaT1QKUbZ+GGT8exoNLNs7+TQjPE7erRqRVq1IgV1kY2tZQJX1obn99Qz\nLz+vPhBfyPXy73hH+zmDjlajo9Uw7L+yco22gfgCrlP3nwXWAzrlfT7sluiNXWvVz12a5Tz5+Dpb\nqwncDrA5VcJRO/WqiV5r0k8kcJ7/YFrNxuj/22h6j6R3rCAxW2gV6ztFgn7J+19YK3tEPfqMqHvG\nm6ZG/qB+6f2mVqPQttLLNI4o11MEbtAJdxorVKrXiy3ElzM80Tj8uENe60+8fppGxbxKZmOLxeCD\nD2nvzIP7S4yPeg5Mg071gA97FQw9S6mZYD0ymXnHe2UGpkGnlmV7t0RPy3JYCvE8Pd3fN0sj+5F9\n9w+sR28TxPUof9ompw9Y8C/y9JkUFFfRy/vk9AE2Qiy/WCPhU7AxpN/TaBRLEFGxO+Hpq+jZPac9\nuTYibP5li4hz/BNN6ofv2Sv3AIXI8hOW4wGcdjjpt6hk9zmsHVPYfcvA8dPUcwRjz95wwElf42h3\nj7zWo/gxR/BvTwgtzLlefFPze/anDTt1So3zXvyTTpZKM4kvbCWuzRm9wTMnvpSJNDVNjlt59nZz\naEaVw1yE4JMIDmDYKfDhXQ4dWPAnWV1NE/Yo2DBo14pkD/No2hEf3tt5+WIJz4UW+/mo7IATo0vt\ncJu98jGN7D7l8MWRPfEl3GX+tZg08ntUjSEOb5InG0sE3Q5sQ5NeW6NWbOIJuXA6N3kV3Rzd8/2P\n9NwX16r7R9ca9UPe7ZYwAHc4w9pyAr/TwXDQo1XJsn9Qo1Pe48NwgRcbERQUAkEVqnWMZhO9nzgv\ns8eCd2Aq+De0JqXhEDtJVL+E9l/akAZHhQahtRAXm8t6OUuhP5h5n8WkUSkw3p9bz1foRi/OwD03\nN1bQbxYriLvWIf/+PXl9APhJP1khGfGhMKTfrVE8zFLQNA7fvcf+4wtSMhIDPPA193aHgi8Uwo81\nBD68fKYsdoeCP77CctwqKtpVje61f5pBefuAWu/qKyf1qO6+Y7fSw65EWd+8zgjRY2fQ1a2UUcJR\noqoLh8OO3eHA7Q2TWn9246DZ1PLsFa3Ei2/8wNZiCLfiwO5w4PSEWNx6zpOoAzCofirQuqzesNlZ\ncIVYXk3jBYaUabXmTx8VD8WAZrVAB1BCGTJxq3islWr0L79RfEsOB+5QhuW0VSj0yjVaBkCP0mHW\nCuy9izx/vkbMf1qWuAjEV3i6tYQXONGz5KqXFe52FhQf8ZUVYjYb0KbSaH/xX03cxHXzb5d2yWos\nuMJRIl4Fh92O3aHgUaMsbT2RTrpv5gZ1/0Aj/8kK7F2RDV48XSLoUXA47CwoHsLpLZ5vRADoVj5R\n1qxK3RUIEwCG1Gi0zsO/0+D97N/NJvrZgzOg3aoA4EyGZHDmK+kUs5QvzOAY9qsc7euX3jc8rlEu\nDwCFdGZUxrfz1LXLGnbnLsYKer5xg1hB3KXjcpZDfQD4WH75gpV4ANdpmeCPs/p0i7TPDujksxVp\nq4086OAeBvS0BjpDwI/Pc52+dAeKy+oMGHQGXC+rW4bU2NvO0Z5enjP3+2m5HbbLx4Cf5adPkNnb\n1+FAGa1Z6NezHOQqaF2DwRWdN5dptyoYgJ008ZmJ4CKWWkTBmsLVvDS6H1lQcI06lozP+XLiXhie\nNKnmraohFEuQCCcA6DdK1Dvf8puJ63A6T/P1kMEQhn2dZsPKx2oyMbNB7ggkSUWtN1rV5pUNA9tY\nnh8Mb1J7iC/t+vlXQVGtNOyWsnwq1Oj0zBu1BcSXcv26f9jRqYxGb2OJCLP6Y9yxNEtOO2BQaegM\nAJtbJRoc5flWG6s5Z6I3ywCoyyuknfbJ4H+g0yxYPysQ8E2NJIsvpU0+Nx6wDWgWDq/c86ZdL9Fk\niENJEl0KE/VZz0C50uDazfexWGF4gpQP34RBq6kB4AwmiE1vmgAOP6l02Lq6UaV1PH3JY/TgxpD3\n37xmf+pVhcT6E+LXmiJpYvSsgsG2cL3eDbttkfWNPgfb1vT/nU8unm8Er7yvVdzlqNICwJ1cIi5T\nua7JTjC5RrSyQ9XoUc3uUM0CuFDjEeKRJOGQ6wYVrEGva42sKxEv7nnJ4PIQwEaNIf0TkyufjhOD\n3qiSsc3YP2HWszq+4Zu4uV5th3++3rnRPYNhlj9fZ6dev7hsolcvUxkOsREnElRQ7GHSzhL5fpty\nVSPulQ2U7rN+/3Tk3YbdBvR6Z43AgHder6qCx7sAVZMTzcDaVm2+4Viet9vkafga7j7/uohlFqk0\nD9ENjeK+RnHf2iQ1FIkTi8WI+GXS/bdx/brf6HUwABsRvBfX05xx4VFtUIFBr49Vq7vwhTzQ1OkX\nG7SXQ6i2NlppCCiE1SRus0j+qGcF/9EQ9o5OdTjARoTQxV13xRfhSqUJ14oUGntkq2GeRBWGnRK5\nfA8bEZYykM3Wpm8caNQKVm+ePx3Chw9HMsjhbp1euUxjMTJ7Hf+Um8cK4q716NWsNFgIeGZ24AEo\nbi8KVQw0jAuTaOfVH9+77+R5NWhWy7SumDI/MA300if2y1bfnS+pcr2BdDue6DqbGSso61YOyFWv\n7h6qVapna36Oi7mp6UViPpsryubPP7KRSeA/K4h7aOU8O+//xdvd2sR6qq9qOOCk1+Bw75AOVuMi\nKI3BB65DrdgEwBUPWUtn7H7UmJWunaMKmqy8uJ9Mk+NGlsO8NVXTFY9MnXrx+QacGG3KBwdUhkPA\nRywkazDvj5vlX4d/kRe/PmM1GcI9elaGRpd68YCPb/7gQ74tI3XfyNeo+31qFC8woIimDzBbDQrD\nAQ4lScBvJ6Ba0/n7xQZtE1pNa/q/EgrilyUbX4VjIUx6xRqRre7naZkGlSNrmVVwdXFugG40q+T7\n1jTucNAqo12BMEFsDGlQrl+9nGpgGujlAw5HsYI/HZq7Vl+I++jBjdxP9Nafbmy2/ZG8lmf3k5sf\nniUmenfmjfQt+DOspG6y27EddWmDNf0PPjUMStsfqStXT/BRU2mUaoGqoXP4YRfnhZ2cxSUWvMSW\n1oktrTM46dJuaZSO9qnoQ9rlI2qpyDU3tFJweRYAE6PW4XgAyqyE73VpjUblnAvT8wLmzRqJb67M\nXKMpG+rdvauOwpvlOhtyje+sG42ebuBjJxhN4T3ap0OZSn2J0LxjtcRXNa833q5EWV4ababndBHG\nRp0hrU6PlH9W2hl0O1bUt6AqU6P25e1/Ut6eviuUWb3mTDHxub5U/rW7QqTWQqTWYNDroOk1CvtH\nNA2D5kEZPeFDlfnX38Y16v6E63S0rkanOyDinFmp09VGM21czrPZfjavStRnp9Me0NA0fFgjwO6k\naj1ngRApW5HCsIjWimKvW90J/nBw7uihuHvO6DJrlQafGnkOP7Q51kwWvBkyCR/2+qzjps5Py3AG\nE4RHZbTNHSEe36dZNtHzNVpJ39SxeJfFCssJ6cj9Nly4IjaowkmrS5/AzPxnHJ/O4lFRLkS1Vx2F\n9716cMH9hNHGZolEkLxex2hodIwEzitGbZzhFZ5tpPHeuOJ2kVhbp/Vmh6phYFzRfeyLb7GxGsER\nXaD35hDdqHJwEMK/FZMK4iqmielwnFXG9gUPgbAHv8dO7/ddWrS5yZJXXyCGQg6DPMVKkkDiYkO/\nR6VwhAE4lEWCs9b2TPGQfvqClbCM2j9skzvr5t79H7kZVzWLNbrx+bvtim9n1jn3NqefYMhOvWHS\nyBZpRVcIXCjzzVaRwqiCD0Sthvv81Zxyzv39dIv8a5oMHI6zzn27y0vI5SWwMOAf7/IMMTgxQRZX\nfwPXrPttXj8xp518f0C5UCERTEy1q44reXJ9a2O1WGj8+Dov/rAC7R6d8if2GZ2iExiFAHYfasJG\noQjl3AEL7QE2VCKqdO5+XaMlNI1DWpoGKCxmkvjszNwfZfy0jH5zj99e701dYxpH1JppAuHLwx85\n5/4+OD/dot/MUmrGyAQvtM1NnULeOhZRCUUJXGvJxffvYQf3o5H7UsmajmezuVAutLnGR/rM5gG/\nv8vTr+epanG8V2TuWWyuKOtPe1awfsW1Z5u8+BfZ2Ozyn+0KvdoOezmXnJF8hePaDu8qCyymkgRV\nN4rNxnBooJXLtAAboakeuss41DTryQofij2qe28Ynsw6Cs8EFKJrqaleXRgfie9RfP8HnxpdKkcV\n4mEJ+B6yYafMUfnqHlxrt90kHlVy7rd2vePRXCSWM1Qa++hGng/vBjOPwutgjc4szTjm9PwoPHFf\n3Tz/QuPoDw6O4ywlI6g+Jw6bjYHZpVaxRv3sivtG9Yu4O9eu++0q6bUElQ8F+o093n4wZh6FB+CJ\nrRG/UG4HggmU7CGG0aMHOJQ4gbN9kRz4g3EoFujrOn1gwRfCK4HDV+fwpVhKl3if7+EMZUjObbeb\n1ApZrrP3ba1UIx2e7AySIy7vJ3c8w3KpyaFukHv3lsGso/Dao2PyMjJweurBVV+zp0Zb1JXIpY09\nRzDDZkbnbbZFYe8TPu/tpsg7xoL16679ckfX2Tzu8TbbopH9yJH/1+keKDHSpVFq0tMH7GnlGe8r\nhJYXCd+oonUQXn7G+uADe+VjaofvqR1evMZF6skzlmeccX/xurMZHPoBBzn/zM6aec+qBAxf17wp\n3NbZ9BvYR8dn2Yjz9G9PCF0sFU2N/X+/p9C3dttNqhEZ0HsgbN4UT5+fsL2TQ9OL7LwpTl3jUhfZ\n2Jo+417cD3eef3126vk+3WGW7dqsjZZcxNcSMzt4xZd2s7pfCS/z/MmAD7sljutZ3tWn09MbX2dr\nNTIVtI2P/AM4Y0HGj8heCKjEbMXRHhvgi6nSif9N2AmmVkl0KngvCd7Oj7+D4MqPM8+lPy594Pe9\n+ugEjcQ1l3WKb8tL+tkzTj7ukNd08rv/Ib87eYVNUclsbMkZ92MeXHA/7SZTJe2o6TWWGm/I6VX2\nD1T8mwmct5hy446usNposV257sH3dtTUCkuNt+R0g/zOLl5Zfz+Hh9TLX/HVKlRrDZotjWPD2s1Y\nDYWIxdLEbjMt1uEh8eQXQokq5VKJSsP6XKdHJRSKEUvHr70Rl80VZWWtgfaxQiO7TyHwnEX1O8hO\nj81J4+z4LHUlOR0YADhUkktBCns33W1X3AdKMMOLX+LUy3nK1QZ1vcdpvRGJJYmHPdJZ81DdKv8+\nY/1vvxCqFalXdbRmix5gd/sJBSPEknHCHinLv42b1v12vPF1fgnFqZbKlKt1tK5xvbaC3Y8atZPP\nWwFhJOif6KC3LfhRI3YqVRPwEVZl3fW3YnOGWX8evvSa0+PvbMRJxWenlTuaIpVrUui3KVc04ivS\nXfMQ2BZUVl78TKJRoVCu0qhZZbbbHyEUiZJMnC/HExbbq1ev/nz9+vXEi69evfpGX0d8TZLuj5Ok\n++Mk6f44Sbo/TpLuj5Ok++Mk6f44zUt3mcMghBBCCCGEEEI8cBLcCyGEEEIIIYQQD5wE90IIIYQQ\nQgghxAMnwb0QQgghhBBCCPHASXAvhBBCCCGEEEI8cDN3yxdCCCGEEEIIIcT9J7vlCyGEEEIIIYQQ\n34mFfr//rb+DEEIIIYQQQgghbuE0pl9wOp3f+KsIIYQQQgghhBDiNk5j+oVZb57O2Rfft4t7LUi6\nPw6S7o+TpPvjJOn+OEm6P06z0v1///d/v9G3EV/L69ev+Z//+Z+zf0t+fxzm7Zkna+6FEEIIIYQQ\nQogHToJ7IYQQQgghhBDigZPgXgghhBBCCCGEeOAkuBdCCCGEEEIIIR44Ce6FEEIIIYQQQogHToJ7\nIYQQQgghhBDigZt5FN79YlDe/p3dqjn1jt3tJxSMEEvGCXsmf5WhfsTf3xxO3WNTPKihKMl0cuKe\n8etXf3hFyg/DfpWPv+1QZ4HFpz+zHJ7/M07vGf++rsgGP2zFUM7uGKDl3vE22wL8rLx8RjrwAJLg\nq9HJ/v0tueHg0qvstgwv/3sJ3+jfQ0OnWipTrtbRusYojUPEYmliqjJx73maDqc+1+2PEIpESSYi\nuB3zf75R3+OfH0oARJ/8ymbcNfbePn98KGDgY/WHl6T8k/1nw36dnT8/UjVmP1NijpMOlWLxLI1B\nwasGUMNxkrEQ7oXJtI1v/pUn0QtpPzO/jr1/zedIy/0/3mZPrvzKs36GuMyA40aZQrlKo9aih1XG\nBwIhEokEIb9yoTfa5LhRmbj+sjx8mm4Xyw9Lh6M/33DYHuAMrfPDswTOGd/wuPyB33fr2JU0z39J\nc7w3u246NV0HiKucppPiX+HFD2k8E+9eVr8CZo96OU+52qCu9wAXgUiISCxJPOzh9JHoV7f5bbt6\n5XexyhHmtkFOSTrf3Hh5HVn/la2Ea+L98zTysfbTjyS94++aVHd/Y7ts4km/4McVdaxsOH/PRoiN\nX54RdZ/feV5/Kyy/+JVFdcYY10Dj4Pf35PsDouu/suGtzmxPjpPyftLlbWrvzPbRufN87s285Kel\nwIxrzstsh7LIs1+XCVwyXNnXq5RLJSoNjWNjsm6J+K9fv0/WHzetsx6fm7SXktwsbpt0w+dBK5Ov\nVGiMPQ/hYIx4KkrQbf2My+KFU7PamvfBg44sBsc6tWOdWjFPeGmTjYzKJTEZAEOjS7OcpVkuk9p6\nwWrEdcUdAAaFvU/4vJtc6/I5jqt7bGdbgEJic1MC+882oFPe58Nuid7Yq1Yad2mW8+Tj62ytJi4N\n1k8d6zUKeo1iXiWzscVicFb69KiVzhuFzUKFdnQJ36gQUcIplkJlPjXa5HMVIhNBwoBmYZ+qMcQZ\nypCUwP5ahr0qO292qBrjBaxBR6vR0WoY9l/ZTHxGxrzj50jcxnjH59irxzrNY51Ww+T5LysERn//\n4YnG4ccd8lp/4vrr5eFZvESSQQ536/QbJeqdxIVgAqBDrdgEwJMME3DA8c1/UXFNhn7AQc7P1lLg\nWg1ko5lleyeHZoy/2qNVK9KqFSmoi2xsLSPV7v1gc6qEo3bqVRO91qSfGK8rTVrNxuj/22h6j6R3\nrIw3W2gVaxAgEvRPPB/D4xrlsvXekAalaovw2DOkBKOknRXyfYNypUFSjUy1G41mlXx/gI0IkZAL\n+og7Nat9dM5s5jm8pDMNwNRqFNpWOpvGEeV6isCsIMvsUtr/wF55srQ+rVua5Sy++BZPn0Rmfpf5\nblZnidu7Ttx2F89D9VinWswRXX3Gk5QP2xf5bb6OB1XNTfSOD0xOjDalgz0Oa8fUc2/ZXviRZynf\n1H1nParDASd9jaPdPfJaj+LHHMG/PSF0jb/CwKiyt+3B9XwJ3y0yq6kfsbNdwUAhsf6C1ejnBCPf\nKz+Z//4vMqN/XTXSatQPebdbwgDc4Qxrywn8TgfDQY9WJcv+QY1OeY8PwwVebESmRlXGe9wGpkm/\nXeJg75D6scbhu/c4fvphqoE/7NQpNc4rnZNOlkozie8sUHcRW1qk1Dik08iSq4VZjyije0vk8j3A\nR3opdsOK5LEyaeT3qBpDHN4kTzaWCLod2IYmvbZGrdjEE/q8vHTT50hd+huvlk7vPp9tMn+EQVxl\n2CmxP2okRTIvWEn5UWxDBsYxWr1EdRAeayR1yL9/T14fAH7ST1ZIRnwoDOl3axQPsxQ0Kw/bf3xB\nyne9sRNXOE7M1qAybFOuasS96kTQcN548BEPB4DzKFJGbr+MRvYj++4fWL+ivhx2Cnx4l0MHFvxJ\nVlfThD0KNgzatSLZwzyadsSH93ZevljCE93kVXRzdPcVswEknb8QhUBQhWodo9lE7yeInFaKY8E7\nMBX8G1qT0nCInSTqhdHfdr1Ec2ykrZUtoyUD5+08u0ok5SV/oNMrl2ksRiZG9sc78F3xKEEnE8G9\njNDfjX4jS7EemTF7sUMxW8SYedcpk0alMHFNPV+hG52e6VP99J69Sg9QiCw/YTkewGm3MRh0aRwd\nclA4JhDyTbXHZs/wOnezOuvxukl7aaif///N4rbPfB4cNgaGPoonF/D5XNhhYrz+vo7Qz/NwZ4zY\nHSy4VBa3nvMkZlX8zf0ijctmf9jsLLhCLK+m8QJDyrRaV08XOXWiZznIt7h80vg0Uz/iw4dDdCCU\n2WI14XnAf/h7YqCR/2QFZK7IBi+eLhH0KDgcdhYUD+H0Fs83IgB0K58oa1dM9Xc4cKtptp5vEFVs\ngE6hUGOy73hAs1qgAyihDJm4lYq1Um2iY9/hT7GcdgEGlU95WibW/x9l0QFfeoXE3OloYlKXdskq\nYl3hKBGvgsNux+5Q8KhRlraenDcIb+OOnyNxO0ZXpwPYiBCNqbgcdux2BwsuH5HUOluL542A43KW\nQ90KspdfvmAlHrCudzhw++OsPt0i7bMDOvls5dqDbraFING09TB1jipoE1XDeePBGUoQnhrVF1+G\nQXn7gFrvsmt6lA6tsnXBu8jz52vE/C4cDjt2h4tAfIWnW0t4serwXPXSDxNfkSsQJgAMqdFonTfN\nT4P3s383m+hnGXlAu1UBwJkMTQ62DDRqhQ4AkUyGmM3GkDKV+mSa+8IJgtgY0qBcb0+8d96BrxCP\nha6cDSpuy6CULdK+UKX2q0ej8n2+89kZCunMKG+389Qv1M+mVmS/YqV9fOMHthZDuBUHdoedBcVH\nbPU5P//1p2vO4L3w7W9QZ4nPcI247bOfB7v9LJ78+efn38Ws6u8gwnARS6duFqwvKLhGEy6Mwfy1\nFLNouY/s36BxMOhV2fuQRTPAE9tg/ZpTDMXlhh2dSt/KuLHE7OlU7liaJacdMKg09Gt1ythcUVKL\nVl9tv6zRHovuhydNqnmrhRGKJUiEE9Z1jRL1zvin2AmmlgljY2DkOSq3MUbTzGxEWEyp8gxcm4Ki\nWnm1W8ryqVCj0zNv3ME2z5d6jsTNOBasv/yQGtmDHFWtizFzVqZBq6kB4AwmiM1aVOfwk0qHrasb\nVVrXnjtvJxg9r0vGA4Jhv0F1NNU3Muc5EV/GkBp727mJsnji/b5Os2GljZpMzJxZ5wgkSUWtN1rV\npsyyvidsbpVocJQurfaoM91Eb5YBUJdXSDvtk8H/QKdZsNI7EPBNBN/j0+mj8SSRhFU+NIs1uhM/\nN0J81Dmv52u0xgr1Vt3qwF/wpQnPWo8v7sxJJ0u+MtaeNjXyB/Ur7zudneFQkkSXwkR9Vv1crjQm\nBmTarQoG4FAWic8J4BeU23XfXL/OEnfikrjtps+DnfSc58GFx/N9dOc9/O4JwOb2otrsdIYDtG4P\nrlrLfGLQG024sF1zUUVsbQNXZY+cblDa3sbjekHyintMs8Hhdm20VthPelGmYt8Vo9fBwOo19Xrm\nVcAuPKoNKjDo9TG53gPv8QQAnQE1OsdrqKN5Wb16mcpwiI04kaCCYg+TdpbI96en8dqcURZXi9T3\nWzT2P/HBr2MAodXFzxtpfnRcxDKLVJqH6IZGcV+juG9tsBKKxInFYhOb4Zwqb/+T8vbVn37b50ia\nfHfLEUzyJFZjt9KjW8uyXcsC4PbHiSQiJCIhXA6AHr2aVXYvBDxzy1PF7UWhioGGcf3JWdi8YRKh\nLJ8aJq1ak37cmgrca1apM8ShLBKZsY6/V9vhn693Jj+LCJt/2ZL8fkt22yLrG30OtisYepadTy6e\nbwSnL+z3zjY8CnjnjcApeLwLUDU50QxrBsYtvpOk811z4Qt5oKnTLzZoL4dQbW200hBQCKtJ3GaR\n/FHPCv6jIewdnerQCuBDgfGy/+J0+gWIpFCKOYx2nrqWxHMWrDsIxVIo5RyGUaalLxFQ7TDQaJSs\nToRgMnJhSq9l/81r9i+8Jkuybi6ZTlPL56ntHVALWflHL2cp9Ac4IxkSHJGtzehKH5ud4U+H8OHD\nMdovZXKZhUGvaxX+CwEP7lmV9sDEHALYcDgmLxgMs/z5Ojt1y+l08evXWeJOzIvbbvE8KBHv7Ofh\nErPalPd5mdbjaqMOB5z0GhzuHZ5NpwnOCAxmsS0EWdp8cjZlO7efR7+i0XjSrFLVT3uYdPJH158i\nKu6b8820XPGQtSmT3Y8as56f6Wm84I9nSDmt6cG6DnYlzWJ83gouMY/Dv8iLX5+xmgzhHmXXodGl\nXjzg45s/+JBvy2j6g+civvETP24uE/OfL4A91ssc7b7n33/u0vgqhaeLSCIKjM/IOc/7/nTk0h14\nxV2y44mus5mxgqZu5YBcVbYw/N741CheYEARTR9gthoUhgMcSpKA305AtZZF9YsN2ia0mtYyKiUU\nxD/WoTK+H04obG2u7PCrxJyzR/EcamS0H8f5e+cj/3FiYdkX6UtyR9IsRx0MqXFU0Bj0qxzt64Cf\nxaUYzjkjb6dpBD7CQas95QqE5y6zuEy/vsc//vEP/vn/8lz/rlP3pc76zl0Rt93l8/A9+S5G7ofH\nHbTR8WmqZ7pAntXTCgrxzZUb9bbbXFHWN9po7/IYepaPu1d3DNiVKMlon3yhRbeyw57bde3df8V8\niut0ZK5Gpzsg4pz1F+3R1azOFbvLee21c92utUmKnQjeUZk9vhNnNHq6Dm80jfdonw5lKvUlQmPH\n4uFQSa+EKYyOXIqupmWDlVuyu0Kk1kKk1mDQ66DpNQr7RzQNg+ZBGT3hY3zc5Kqj8E59yedI3JQD\nX3SRjegiGwOTbkejWcqzX24xOC5TqCUJpVy4IjaowkmrS5/AzBFY4/h0RoaKcsNa7nw3bWtGTuRE\no9AeYCNEPDy7c+4+9+A/bHbUpQ3W9D/41DAobX+krlyY++p0EcZGnSGtTo+Uf1ZQZtDtjEbxVOXW\n6STpfPdsXpWoz06nPaChafioAeBOqtZmZoEQKVuRwrCI1opir1sj6/5wcPIkmtF+OHbS57NrLt08\n7/yEjF65TH3Rhzka+fcuxlDnlBuyod5dUYhlVqlW92jmD3nf7qExRM2sEPfamX1Q5fnsDGfwfO8T\na5nFPs2yaS2zSPoI2BVcngXAxKh1OB6AcoOG91Ub6lmuU2fJgM5tXC9u+3rPw0PbUO87CO57VPKF\nUY9OnMC1NkLwkH76gpXwzRPKEcywmdF5m21hGJfv52lTVJafPiHlN/CcvGW30qOR3aegvmRRhn8+\ni83rJ+a0k+8PKBcqJILTR6ocV/Lk+tYmG7GQf2r3y1mGvSqFI6unzxlXR+s3J3fizL37P3Iz7m0W\na3Tjk7tzKi4vjKopr+vhFAz3imkycDjOOsTsLi8hl5fAwoB/vMszxODklmvdbvscibs2wDTtOE57\nTuwOPP4wHr8XW/8PPjVNDNNKg9MdtvvNLKVmjEzwQoqYOoW8tW5TCUUJuLkZu0oooZDP9ugc5dnt\nNKyTFOJxQjf9LHEHXCTW1mm92aFqGFysdm1OP8GQnXrDpJEt0opOHz9ltooURkdrBaJBWR53r3jx\nhxVo9+iUP7HPaCfrwCgosvtQEzYKRSjnDlhoD7ChElHPO3HG98MZkOc//5ef+imno3jR9Hmw5QpG\nCdOgToPC/ieGDRPwEY/Kvjhfg80dJbNcpnnYQtPAriRZSgawz9krf3x2Rr+5x2+v96auMY0jas00\ngfACvkAMhRwGeYqVJIHPOjL3ouvWWeJuTMdtd/88GPR6Dlyuh5/7H+5vMDA56WkcfXzH7mhDjuBq\ncuaxdqs/vOLVq1e8evUrayEH0KVyVJnYYOX6rJGE0x36L+MMxIn67YCL+NomS3470Cb3cfeK3X/F\nlewq6bUECtBv7PH2Q45m18A0B5wYXer5j7zbsUYAPLE14ldsjDMwTY61PB/f7ZztkZBKWeffDjtl\njspXR4+zducUn2tA4+gP/vx4umGNyWAw4MRoU61YnSZ2xX3j0dkzd/wcidsZHlf5+Pvbsw0TTXNg\n5clGmUrTynsepxWSueMZlv3WdNrcu7cclFv0Tq/Xy+x/+Ei+PTomLzNrn5MBpnmCaZoX/ju/IhA+\n3VivQaMBsnP2t2VzRVl/mmH2gKmLxLL13sDI8+HdJyp6b/QM9WiVD/jwMWdtkubPsCTH0N47gaBV\nBg+NHj0DHEqcgP98fbw/GAegr1s7lDt8obNZdQDt8hGV4dWbI1/cPM/mDBEdbazXbjToIKdhfF12\n/MnT5YsQzqTnzpgAk1ohS2fe22NOTzByqElWR2316t4bPh41ODZO2xBdWu3bL/O5SZ0lbu7quO2O\nn4eeTmn/I//611vyNzhF7b56UCP3szazsSiElzbZuHL6y9gIgH7AQc5/yynyVrDeO35L7oojO844\n/CxtPuH4zQ5Vo8r+JxX/s+lRQnF9SniZ508GfNgtcVzP8q4+vfmJN77O1ur0Gfcwf9M1m6KS2dga\nnXF/Pt3PRpynU+drAqbG/r/fU+hba/eSakSCgLtiatTzfbrD8w1rJrmIryUI2K+elTHP5z5H4vN1\nG2WaRovmaMPEi1xqhvTZ7rZe0s+ecfJxh7ymk9/9D/ndyetP8/CsM+4HwyPe/uNo6vXxTbHGN9aD\nq3fOnlc3XW9qp7gOh3+Rjc0u/9muTI3r2bwpnj4/YXsnh6YX2XlTnLrfpS6ysbXE3H0zr0HS+csY\nn0EF4IwFGc+6CwGVmK14FsD7Yur5DLmxDbXc8S1+fDJd/5rNA35/l8cYG8WzjG2sN3rlqtMwZk8X\nfnjTdu8Nh9XB3q04Wbpk0Oz8uDMIrvzI8/R0bjsufeD3vfpov5QESa9CdO0Zpu0De+VjaofvqR1O\n3YbDtzD1zMzbUO90A033jeoscXuz4zbbF3seFNrtHoPAAuO7PsyLF+7rZpoPKri/yO72EwpGiCXj\nhD3X+1Vsrigraw20jxVrinzgOYvzuwrnc/hJry3R/NM6v/66Pzuz2kDbrtBv7LGX88j6+89ixxtf\n55dQnGqpTLlaR+sa2BQPaihELJYmpl6/snX7I4QiUZKJCO5RST8+3U9dmT0zBIdKcilIYe/i7pzi\nszlCrP/tF0K1IvWqjtZs0eN2eX++u32OxM15Uy/5i79KtVKjobXQugag4FVDhGIxUjEVZaymtS2o\nrLz4mUSjQqFcpVGznotZefh2rI31PjVKwPyds8XX5Y6usNposV2ZnvqmBDO8+CVOvZynXG1Q13uA\ni0AkRCSWJB72SKfrfWX3o0bt5POj4yaDk8ufbAt+1IidStWaNh9Wzxvy4xtqnc62u8gRTLIUKvGp\nYVIr1UiHzwdWrI318hy2B3NPwxBfljO8yvPw5decHndmI05qzsbE7miKVK5Jod+mXNGIr6jYHR4S\nT34hFCuTr1RoNDSODasNEQgEiEWShEOuG5cNN62zxO3NitvU9t0/D+FgjHgqStBtlQG3HTC6D2yv\nXr368/Xr1xMvvnr16ht9HfE1Sbo/TpLuj5Ok++Mk6f44Sbo/TrPS/X//93+/0bcRX8vr16/5n//5\nn7N/S35/HOaV8zJoLIQQQgghhBBCPHAS3AshhBBCCCGEEA+cBPdCCCGEEEIIIcQDJ8G9EEIIIYQQ\nQgjxwElwL4QQQgghhBBCPHAzd8sXQgghhBBCCCHE/Se75QshhBBCCCGEEN+JhX6//62/gxBCCCGE\nEEIIIW7hNKZfcDqd3/irCCGEEEIIIYQQ4jZOY/qFWW+eztkX37eLey1Iuj8Oku6Pk6T74yTp/jhJ\nuj9Oku6Pk6T74zRvzzxZcy+EEEIIIYQQQjxwEtwLIYQQQgghhBAPnAT3QgghhBBCCCHEAyfBvRBC\nCCGEEEII8cBJcC+EEEIIIYQQQjxwEtwLIYQQQgghhBAP3Myj8O4vnezf35IbDi69ym7L8PK/g9RH\n13ozL/lpKTBxzbBf5eNvO9QZsvrDK1L+ydcmuQhEQsSSSyRUZcZnLLD49GeWw5N/zqF+xN/fHAKc\n/Qxx1wzK27+zWzXnXuGKbPDDVoyzlDN71Mt5ytUGdb3HafpGYkniYQ+Oa36+2x8hFE2ymFRRbHf3\nG4mr9avb/LZdnXrdyvtL+C68PuwU+POPfTqAb/EFL5fVqZ7N8/zsZfWHl6T88/o+z5+JWWWLuAvz\n853d7ScUjBBLxgl7JstcLff/eJs9mfupM58Ps0u1VKRaOy0PFLxqiFgiTiwSGOXt8+8zVZ4wQMu9\n4222BfhZefmMdOCBVa33yVT5DG6/ihqKk4hH8DntV1x/WXk+cSPV3d/YLpvYCLHxyzOi7umrTp+p\nWc/OcXWH/2xXMFBIbPzAesz1+b//Y3dF+nupz2mnTZrOpx2O/nzDYXuAQ1nk2a/LBC48SvPbgFa5\nEw7GSC4lCShTb4u7cq38f7N22Xi6xjf/ypOolYCneVvxr/DihzSeiU+6rMwXp7Tcv3ib7WEnzfP/\nWrmQp3Syv70l1x/gTj7jx7XQRHl82i7rorLxywsi9vn579R4+p27Om9flZ7z2pSzfv56QJv5PJ39\nXvcg9pMWyLX0aNWKtGo1GstbbC4GLgQGBoW9T/i8m0Skbr/XjGaW7Z0cmjH+6mn6Fimoi2xsLXOd\ntvmxXqOg16jXM2w9XcI3vxUpvqkBzWqBzuhfnaMijaRKxDnv+jb5XIXIswSzLjGbeQ4v6UwSX9bg\nWKd2rFMr5gkvbbKRUS8J4C43uzww6GhlDrQyR/4km5trBC8p14+re2xnW4BCYnNTAvvPYepk370l\np0924B/rGse6Rtt08nLlvGPuc8rz4XGNctn6OUMalKotwksX6/bLvuoRO9sVDCCU2WJVAvvPd530\nT93yo7Uahbb1uaZxRLmeIjAVJMw3ONapHuvUay02fpC23hdxw/w/y2m7rFLN8Pz59dplhn7AQc7P\n1g3yv7AEggmU7CEGeZqtDIHg+V9w2NGp96207Bc1OiuhiaC7rVXpAM5glIAb6N/uO3xu3v4ePbBW\niJ/Mf/8XmdG/Lu8d0al/xk86740ZcGJ0qR1us1c+pn64Tzn0I0nv5PUDo8retgfXNQsTcfeu6l0d\ndgp8eJdDBxb8SVZX04Q9CjYM2rUi2cM8mnbEh/d2Xr5YwnOhlB///IFp0Kll2d4t0dOyHJZCPE9f\nHC8WX4ozusmr6ObZvy/rdR2eNKnmz2uNITVK1TaRS9Kr38hSrEemZuNAh2K2iDHzLvElTOTrgcmJ\n0aZ0sMdh7Zh67i3bCz/yLDWZlvNmcIwz20dzygOTbiPPwX4ew+3HM7cTaDzAU0isv2A1Ki3+z6GX\n98npA2yEWH6xRsKnYGNIv6fRKJYgct6w/9zyvF0v0RwbIWply2jJAKFrtIqGvSp7H7LoQHDxBZsS\nFNyJa6W/E56+ip7dc1r224iw+ZetOZ22Jo1KYaLcrucrdKMXR2vPTYzImSbHrTw773PoRpV8NU1k\nUer7u3aT/H9qbrtMv1m7rJH9yL77B9alDL8Rm9dPzGkn3x/Q0NtkguczGU+Dd4DBVPDfQatY73pC\nPpwwMV4/e4R+lpvn7Vkm25SXj/IPb9kJ8TVJfXQlOwuKj/jKCjGbDWhT19ozrzzRsxzkW1y+aEB8\nGz1Kh1ZjbMG7yPPna8T8LhwOO3aHi0B8hadbS3ix0jFX7V36aXaHgj++wnLc6slpVzW6X/6XELfQ\nq5epDIfYlTSZJaui1/M1WpdmVINStkj7wjX96hGHuuTwb8buYMGlsrj1nCejkdLmfpHG/Jn4c/So\nZI/mlAcKvugKz178xPMnMZxzltyY+hEfPhyiMxq5TXikQv0sBl3dKkWVcJSoepoeDtzeMKn1Z2Md\n+J9Zng80agWrYRnJZIjZbAwpU6lfXu4DDHt1dt/tUDWGeGIbPFm+/cwRMe4m6X8z57M0FNKZ0XPR\nzlPXrlmWOxy4QyGCNiuHD65YGipu4/PT/2K7TM83btAuMyhvH1C7uggQ4+x+1KiVL46LGufR0Xnw\nfqqhn787PG7TaA8AH2H19h1ln523v1PSFrkm24KCC6uVZ5jzHxot95H9KwJD8fUN+zrNhpVuajIx\nc3aFI5AkFbXeaFWb15gh5EBxWc/EoDOQTp17qUOt2ATAkwyzGInhxZq6VWteHhGedLLkK2N52dTI\nH3zOfCBxd1zE0im8wJAyrdbNovvrlAd2j3duYD8YjdxqBnhiG6zLyO0dcKCM/uD9epaDXAWtazCY\nsfzyc8tzo1kl3x9gI0I0niSSsFKvWaxdHgyYOrntbSrHQxb8GTbWYjOX7ojbuH7639TpLA2HkiS6\nFCbqG63brjS47gIrQ9NoDq0gIuS9yZiguJ67Sv/zdtnwhBu1y4bU2NvO0ZZVdzdgJxCMA2AadfRR\nPD/saFTbA2zEWVmJAJPBf0+r0gIcShi/d/pTr+su8vb36IFNy/92hicGvdGkEbttuhkXW9vAVdkj\npxuUtrfxuF6Q/NpfUszX751t0hHwzpt2peDxLkDV5EQzMOCKhpuJ0bM+07YgPWX30flaLB/xcACb\n10kilOVTw6RWqpEOz15Xn0ynqeXz1PYOqIWsqZ56OUuhP8AZyZDgiGxNunO+JZvbi2qz0xkO0Lo9\nGFtCMRhm+fN1duqes+Vb1yoPZjPNBofbNarGEPCTXpQA727YCSbXiFZ2qBo9qtkdqlkAF2o8QjyS\nJBxyWaPkn1We96iVrCU8rniUoHMBIimUYg6jnaeuJfGo06X5cNgh/6lEdTRzJ7GYlCV4d+oG6X8T\nY7M0/OkQPnw4kkEOd+v0ymUai5GZGymWt/9JeXv69eDiJotTy7XE57ur9L95u8xuW2R9o8/BdgVD\nz7LzycXzjeBn/TaPicOvkrAVKA2tmc1Jr4+e3qADuCIq0fCQ5kGdplFH7yzh8xq0NB0Ad1KduXxu\nVv6bmiJ/y7x9l+aVE9/adxyP2LF/Rm/QuQEnRpvy/icqwyHgI6pO99raFoIsbT4hqtgAndx+Hv3G\nU0XF5+jVdvjn69e8Hvvv768/UvsC62MGpoFe+sR+2eob9CVVZKXWfXO+FmvBF0X1ArgIRlQA+o0S\n9c7sO92RNMtRB0NqHBU0Bv0qR/s64GdxKYbTJscjPFYnzSpV/XQ4SSd/VLntPkDiApsryubPP7KR\nSeA/a5T10Mp5dt7/i7e7tc/e72LYqVNqWOV2KGxNqXf4VWLOy0d8htSoVs5TunRUlBG+O/Yl0v90\nlgb4CAetMMIVCBPExpAG5frsZZbztGpFah3p2P0SPjf9B6aBXj7gcNQu86dD11x3bccTXWczY60X\n71YOyFWPb/+LPDaOAKHR7Kduo02fHs2aFbyrkSBOt0o4aOd0WfOwr1GvWrNgIoHbT8m/67z9PfmO\nux8VFLcN2mAeW732E1szjI3EzzKvNyaUWSUx54gsmyvK+kYb7V0eQ8/ycfdx79Z4rzhdhLFRZ0ir\n0yPlnxWKG3Q7Vo/MgqpMbcxndR7sTN214M+wkpJpuffN+G7YaiJyVsm7wnFitgaVYZtyVSPunbX7\nrkIss0q1ukczf8j7dg+NIWpmhbjXztUHpogvbXjcQRutfVU9k/n5yg31rlUezGdXoiSjffKFFt3K\nDntul+y0fFcWvMSW1oktrTM46dJuaZSO9qnoQ9rlI2qpCIlbl+fnJ2fYSRMJjppAdpVIykv+QL9i\nxMdPMuWiVqiOjfDJzI07dY30v7ih8XznszScwQTh0X02d4R4fJ9m2bT2X0n6po7OmtzQa7Sx8sEH\n9io19t+5cc88bkt8thum/2XtsuXETQJHO+rSBmv6H3xqGJS2P1JXpPfuehz4g1EoljCadZoNG/Wm\ntewpNDo3MhjxQ7NJt9FGd7WpM8ROjMCceOrqDfVun7fv0lVH4X0r33Vw7/IsACYnzTbHgwjKWAL3\n2hodwEYE5zVr5ujqjzxJ+S5twDmCGTYzOm+zLQxD9tT+mi7fLd9PMGSn3jBpZIu0oisELszvMltF\nCqMjzgLR4LUabM7wCs820nhleubXZZoMHI6zvNjv6VOXjO+GXdv7F6/3pj+mc1RBS6szd8i2uaNk\nlss0D1toGtiVJEvJAHbZK/8e6FHJF0ZleJzADY+fszmvLg+GvR6GyzVVDtgUleWnT0j5DTwnb9mt\n9Ghk9ymoL1mU1v7nMU1Mh+Ns6q19wUMg7MHvsdP7fZcWbYaD66XfrPJ8/OSMAXn+83/5qa9wOuIT\nndpl20Vqa5PViEJkoc/brNWxkw0GzjZ3FJ/pmul/XeOzNPrNPX6bUQlY+6+kCVw61X60sXI8zl4l\nh2mUaXeX+YxBRzHLHaT/rHPur89FYm2d1psdqoaBNOGvb8GnEqZMnQa5/S49hjhDQfyjCtTlD+Gl\nSadZ5sC02muudAjfLavMu8vb36fvuiXiCybONs/KHlboGAMGA5Nj7YhPhw0APMk4wRlRXHzzr7x6\n9YpXr/6LZ2mr4q4fla8x1d7q/ZPK/r5xkVjO4AcGRp4P7z5R0XuY5oCB2aNVPuDDxxwdrB7fpRnH\nobgiG/z11StevXrF//c8jQL063mqmqy/+KpMney7f/Op0KJnDhj0GlRrVi3sTPhwA8OTOsXDq6dk\nXb5Dth1/MkPKaRWT4Uwa9fHVEffLwOSkp3H08R27o80Og6vJax1fNslFLLM4pzww6DSOeP/md97t\nVOhfmODlDMSJ+u2Ai/jaJkt+a7ph7uOu7LT8mY5rO/zxdpdSvU3PNBkMBphmj0a5TAuwEUJZgNuW\n5+3y0Wh53eVmnaZht8WJRVxcrOPLO9sU5ASNO3H99L8Ok1ohy5yVVxNqpdoVS2tGyzPLZQBsBHBK\nXXDnbpP+4+2yV69e8csPW6ymbhPYW2yuKOtPrbJFXJ/NqRIe7ZrfO7YqwkDkfJDM5lVHm93p6KOx\nmHDAe8sg9PPy9nA4wDTN6f++o2L8uy6eHP4Uq8sa24dNtMIOfxQmp+7Y3XGW06ErNuiwE1raZKn1\nlpxe5NO+/xrT8KxGX+/4LTmp9O8NmzfF0+cnbO/k0PQiO2+KU9e41EU2tqbPRL5ofIZGYe8TPu8m\nEenP+Sr0cpac3gf9P5T3x9/xk4xba2iPR8ffgY+1n36cMY2zR/H9H3xqmNYO2fE0M2fhOlTSawm6\nFSdL0mH3TcybdgkK4aVNNlLTw2fzNtQbPwvb4Vvk6fPBpeXBwrFOtx/DOS/pHX6WNp9w/GaHqlFl\n/5OK/9nsTRrFVbo0Sk16+oA9rTzjfYXQ8iLhUUa9cXk+tvmSO77Fj08iU3W/2Tzg93d5jCtHfMbr\neJ3DD1l8v0zPHhA3cbP0v8r4sqzgyo8zzzs/Ln3g9736aP+VBImx5L5soyxPMk5QqoM7drfp/zkc\n/kU2Nrv8Z7si8/SuTSEQVKFqnShkQyUcGM8kXtSoF9pWZG8nSfCS0ZJ5+c+becmP0eMb5+3xNmC/\nvsfv/5ge6b96KcDD8V2P3IMddfE5P75YIxkJnG145vSoJDJb/PTjE0LXKaAdftJrS/jBmoZXvsbw\nzNg94v5Qghle/PIrT1eThM/WaboIRJKsPv2Zn14sc70ZvnbU9BpLfjsDo8r+QWlqhE98Gf7Uc/7y\nYo1E2DNaguEiEEmz9fMzUj4748ffueOLxGauz3QRSyVQsM5ErTbnd8I5w6s830pf2eEjvg67208k\nucLTn3/maebzzhi3yoOf2VwZLw8UvGqclc2X/Pxy7cpGvM0VJbMatWbyNPbYy7XkWMxb8ZB6+Ssv\nN1dIRlTcozaWTfEQjKfZePETTxcn9zW4SXk+vvlSKjUd2AM4gkmWQtY7V47mOvykV5fOZg/sfZKN\nFT/PzdP/MqfLsmzEScVnz593R1OjmVltyhXtkl2Y4KxcePozL9euGhQSN3e36f+53NEVVqVD/0Zc\ngTCB0f8rwSiBCx0xvkD4bNmsM67e+rSR2+Ttx1Yn2169evXn69evJ1589erVN/o64muSdH+cJN0f\nJ0n3x0nS/XGSdH+cJN0fJ0n3x2leustYlBBCCCGEEEII8cBJcC+EEEIIIYQQQjxwEtwLIYQQQggh\nhBAPnAT3QgghhBBCCCHEAyfBvRBCCCGEEEII8cDN3C1fCCGEEEIIIYQQ95/sli+EEEIIIYQQQnwn\nFvr9/rf+DkIIIYQQQgghhLiF05h+wel0fuOvIoQQQgghhBBCiNs4jekXTl/43//937M3T+fsi+/T\n//zP/wBwca8FSffHQdL9cZJ0f5wk3R8nSffHSdL9cZJ0f5zm7Zkna+6FEEIIIYQQQogHToJ7IYQQ\nQgghhBDigZPgXgghhBBCCCGEeOAkuBdCCCGEEEIIIR44Ce6FEEIIIYQQQogHToJ7IYQQQgghhBDi\ngVu4+pL7Ty/8hzf7LWxE2PzLFhHn5Ptm+4h3fx6i42ftpx9Ieq3Xh4ZOtVSmXK2jdQ1sigc1FCIW\nSxNTlYnPGOpH/P3NIQCrP7wi5Z/8Gf3qNr9tV7HbMrz87yV8X+qXfeS03P/jbfYExb/Cix/SeCbe\nNShv/85u1cQV2eCHrRiTqWhy3KhQKFdp1Fr0ALc/QigSJZmI4HacXqeT/e0tuf4AT/oFP66oE71g\nQ/2I394cYgCLT//GcngyG+n5N7w50HEG1/nheYILj6O4hvP8NplnT53mt/E8P+xX+fjbDnWGcz83\nvvlX1gPa2XWR9V/ZSrhmfjb4WPvpxws/26S6+xvbZXPs2Rhw3ChPPFd2t59AIEQikSDkV6QX9ZqG\nhkY5X6XasMpkcBGIhIjF00RDLqwselU+18n+/S254QBv5iU/LQUm7pln9meBUd/jnx9KAESf/Mpm\n/Px5uc4zd9lni/nG/7bxzb/yJHqdv16Hoz/fcNge4FAWefbrMoGZme+qPNvjaPQMXUbq+5sZb0fN\ns/rDK5LOeflqVB4kl0io856H8zLaRoiNX54RdU9fddqWuCpvmvoR/3lzSPcWdc31ntnv33mdermL\n9fOk2Wk/qy0w7vJ0NunUS5Qq9bNywOlRCUXjJBIxfMrkZ8zK78fVHf6zXcFAIbHxA+uxyfbE9+t6\n7Z55ed6Kt6Ik00nCnvM29GV/61O3icdu+j3OTccNTo9KQI0QT0UJuk/vuX0b40v4LoJ7fzxDKv+e\nQr/GUUEjNBGM9ahkj9ABX3qZuBdgQKe8z4fdEr2xzxkaXZrlLs1ynnx8na3VxFjAJ+4TQz/gIOdn\naylwrcBpeKJx+HGHvNafeP1Yr1HQaxTzKpmNLRaDC4AfNaGQy/bo5Ru0M+pEA7HdqmOM/r/e6rAU\nHn/eOmjVDgD+SFAC+8+mk93L4X++hO+O8qLNqRKO2qlXTfRak35ivAPGpNVsjP6/jab3SHrHKmuz\nhVaxGvyRoB87A7TcO95mWxM/Y3Cs0zzWaTVMnv+yQkDKkSvMLpOhR6tWpFUrkg+vsLWRxvtV/5Y9\naqXzRmmzUKEdXcInvTX3kqnVKLSt/GkaR5TrKQJTAdZ18mzkK31jcTOn5UGNxvIWm4vT9f/wuEa5\nbD0DQxqUqi3Cl7QTerUDis0ImeCsK3pUckd0ANsd/hbiNq5O+5uY1ybsdzVKWY1Stkj66SYr4fnB\nuqkfsbNdwQBCmS1WH1Fg/7ntHiveytIsF0ls/sB69Nv87c6/R5nU1gtWI2Od95c8I9WuRrWYI3wH\nz+KX8F0E9zhU0ithCttV2vlDStEXpEatL6NeINcwsRFhMWUFYUb9kHe7JQzAHc6wtpzA73QwHPRo\nVbLsH9TolPf4MFzgxUZERlvuqUb2I/vu6xQKHfLv35PXB4Cf9JMVkhEfCkP63RrFwywFTePw3Xvs\nP1rPji8QQyGHQYV2Z4WA//yzToN3YCr4H3Y0qu0B4EP1P5aC/ss60bPsfHLxfCN27c6Sq0ZNAkEV\nqnWMZhO9nzjv7R8L3oGp4N/QmpSGQ+wkUf12hp0C+6MKLpJ5wUrKj2IbMjCO0eolqoOwBPbX0K/t\n8W63MlkmuxzYhgat0gF7BzXcPj+uO/hb3qT3fNipU2qc98SfdLJUmkl8o9k6NmeUp6+i57/HFaNI\n4ksyaVQKZx2vAPV8hW50cobXsFO6Rp71E/jv/yJzes8VI0Xi5i77Ow7H2tLnZfmAE6NL7XCbvfIx\n9cN9yqGLM6ugXS/RHBv1bWXLaMkAobmtXYNStkg0eHEm4Hn78TIyQn81Z3STV9HN0b8un3n1OWl/\nbYMOuVltQtuQk+MG+f0DSl0Xfu/8NtywV2XvQxYdCC6+YPOaA03fg+uVodP3neX54YCTvsbR7h55\nrU95O0c4+OSSPHq3Zn+PHsWPOYJ/G32Pmc+IFwUYnLQpHeyRbTlRVd9Uut+HmXrfzbPojC6zFnIA\nOvlshT7AQKeYs4L4yPqK1dAaaOQ/Wa+5Ihu8eLpE0KPgcNhZUDyE01s837B67buVT5S1y6fliW/J\noLx9QK13+VXH5SyHuhVwL798wUo8gMthx+5w4PbHWX26RdpnZ/zZcfhVojY7YFBpnvdOngfvlgEV\n2uexPj29QQdY8EVRb1vxiCndyg7ZyhUJfQOuQJgAMKRGo3UeDpwG72f/bjbRzxobA9qtCgDOZAif\nA4yuPhrViRCNqdZzZXew4PIRSa2ztRi4s+/83RpoFPZr02Wy3Y7d4SKY3uLFzz+zuRTg6/aTDGhW\nC3QAJZQhE7eqy1qpRv/yG8U3cD5iq5DOLOEFTtp56hfqcMmzD5WdBcVHfGWFmM0GtKlr7clLBhq1\nglUhRzIZYjYbQ8pU6pfXHYZ+QL5qTL441n4U39o10v4GjqtZcrPahHYHTm+U1afP+eGHTSJzYvth\nr87uux2qxhBPbIMny+pXrpu+rc8uQ212FlwhllfTeIEhZeraN8hpM75Hq3UCzHtGHNgdDhZcKotb\nP/GXn56R8t/PMPp+fqtbcRFbWsQL9BtZCnWD48oRufaABW+G9Gi6zLCjU+lblX0sEZk5EuiOpVly\njgK7ho6E9/fXkBp72znaczvXDVpNDQBnMEFs1gJMh59UOmxd3ajSOgbsfoIp69peXac7urStVekA\nrvgKy5GLwX+PZk0HwBX2T40CiM9T3tmmoN9NbrS5VaJBqzputdpYj4+J3iwDoC6vkHbaJ4P/gU6z\nYP38QMCHA3AsWCXIkBrZgxxVrYtx+UCPuOA6ZbLL4/nqjafhSZNq3grjQ7EEiXACgH6jRL1z2Z3i\nWzgdsXUoSaJLYaI+q3wuVxqMZ0nJsw+bbUHBNZokb5gXOm6aVfL9gRV0xJNEElYd3izWzurwear7\neVpjz8Fp+1HcH5el/fVdp03oYe6gvamT296mcjxkwZ9hY+36Mwq/F3dWho6l5/DybWu+rPHnajBk\n4hkJzXlGsKMo9zeE/j6m5Y84/EkyyRIfij2K2Q+0DB1QSGSSZ2skjV4HA6vHyeuZlzAuPKoNKjDo\n9TH5zv5Q3wG7bZH1jT4H2xWMs2nbwRlX9ujVrFJjIeCZWwgrbi8KVQw0jBMAa2o++QIn7SpaJ43H\n26PdsJoIajBGZNDisFa3gv+lAO6+TrNpjRzFgjL6c1cyG5t0D3aoGjqHH3Zx/rDJVbNiy9v/pLw9\n+drkVCkXvpAHmjr9YoP2cgjV1kYrDQGFsJrEbRbJH/Ws4D8awt7RqQ6thmMoYH2KI5jkSazGbqVH\nt5Zlu5YFwO2PE0lESERCdzKV/Ht2vTJ5tl5th3++3vnse2ZNo+/Vy1SGQ2zEiQQVFHuYtLNEvt+m\nXNWIe9XvqXf8YRsbsfWnQ/jw4UgGOdyt0yuXaSxGzjZVkzz7sA1PDHqjafd223gOPN8fwxWPEnQu\nQCSFUsxhtPPUtSQedTrHKuE00WGBQiNPthDm2VIA20mDfK4B+MhkVLLZ/Nzvc3VdI+7K/LS/ieu1\nCWf+/GGH/KcS1dEgQ2IxeWd7AT0kd1aGjqWn7VtuajH1PcaeEf+cZ8Q0R53GNhyOyWfxum2ML+k7\na5s4CKWWCGJj0NHRDXCGMiTDdxCa2+3ILOv7xI4nus5mxgqiu5UDctXjO/0JihokMZoCpuk9hsca\n1aZ5FtydTu22gn8wWnXqDHEocXzysNwZhzvK+tMMfmBgVMlmK/TuoJvXp0bxAgOKaPoAs9WgMBzg\nUJIE/HYCqrU8p19s0Dah1bSmaCqhIP6zAtpFfOMnftxcJuY/35L5WC9ztPuef/+5S0PmcD9AHWrF\nJgCueIjAAmD3o8as5nrnqIJ28g2/nphwOmILPsJBa39lVyBMEBtDGpTr41N4Jc/eB/tvXvP69eR/\nf+Ral9wx4MRoU97/RGU4BHxE1fP5ceP7Y4TC1jRph18l5pw9g+OU3eYluZTBC7SyR9SPB7SKOUr9\nId5khmRQhna+vflpb7N/vS6UITWqlfPCoXRUvGTW6PfsM8vQ4YCTXoPD/fxoen+c8NzTL2a4q3js\n9HvsHZ4tMwj6r/c9tMK/+Mc//sEfu7V7uXTnuyu1bO4oi5kSzawO+EgvTU6ZUVynI7Q1Ot0BEefs\nHVK72qh30OW0poOOpm10GNLtG3ChT7Zv3N16YHFddtSlDdb0P/jUMChtf6SuXCxpXbgiNqjCSatL\nn8DMXjjj+HT0UEU5zRWOAGrMTqlsotebNGx1WoArEibgtK6NBh20mm00vcWC3gDAGQvKbtp3zOFf\nZGNd5/e9Ot3KDh+blxfA19nkyOZVifrsdNoDGpqGjxoA7qRqHb8SCJGyFSkMi2itKPa6VYT7wxdP\nQXDgiy6yEV1kY2DS7Wg0S3n2yy0Gx2UKtSShlByWNc/1yuTZrjoK7/r3TBrfdT0aDY2WBNgJRlN4\nj/bpUKZSXyIUl00zv73zEVtnMEF41OqzuSPE4/s0yyZ6vkYr6Rs79UTy7EMxa2QcIJRZJXG23vV8\nfww7aSKnAbldJZLykj/Qp2ZwjHP4UyynS7zPNzjce4+i6diIsLQYwtG/fA2ObKj35Vwn7RcU628/\npEXfgMnK2cQ0po/Uu06bcD4/yZSLWqE6Nmv08U3Nv00Zuv/mNftTn6MQ31y62WZ6nxmPzf8eo73Z\nPvMZuQ8zd7674B7suN0uQMeGC+eFhqLN6yfmtJPvDygXKiSC0+eQH1fy5Pqj6dUhvzW9wenC67RR\n7w9pt7sMIsrEcXvtpjVdWwm7HmEm/5ZcJNbWab3ZoWoYGFNdaMrZzuj9ZpZSMzZ95I2pU8jXratD\nUQJnlb+DQDAE5Sr9xhH7x1aB4Q8FpqZ2N8sH9HWrY8E6Ik3cNXdilSetDruVHsZ0Qt+CF39YgXaP\nTvkT+/QAhUhgVCHZfagJG4UilHMHLLQH2FCJqOMB3QDTtOM4nYJmd+Dxh/H4vdj6f/CpaX7G2sDH\n4TplsnHcw+F2faV8Nbnreu7d/5GbcVWzWKMbn95hW3xd4yO2/eYev73em7rGNI6oNdMEwgtInr0f\nPufUgejqjzxJne9SPb4/xoA8//m/6Wn0pzM4oulZnTZ2gqlVopWPVDWNHhBaXRydaX+77yi+jItp\nj9NFGBt1DPROD3xj9fOgTas+ml7tdY3abddoEw579PouXFN9ty5SW5usRhQiC33eZlvWZr/BAE8e\nzTF4cBdl6NXny19y753HYx7ST1+wEj4Nx6/xjNxzD+vb3gW7SnotgQL0G3u8/ZCj2TUwTeuojXr+\nI+92rBE8T2yN+NkaLS9qwhoSaB8dkq22McwBA7NH82h/dFyKQjQWknVWX5nNdT5texZ3PMOy35qa\nl3v3loNyi545YGCaHOtl9j98JN8eHXeRuTDTIxAmjA3o0TsGGyHCgfNC/HRqt6nr6HB2RJr4ElzE\n1zZZusO/byBolQVDo0fPAIcSJ3D2+Q78wTgAfd3aHdbhC+EdG/kZHlf5+PtbPhVqdHom5ulz1ShT\naVoBh8cp3X2XsqukViPTZfLAKl9b5X0+/P4vPuZaM6fV3rVhp8xR+eqfNGsndvFlDM0TTNOc+m+A\nSa2Q5Tr7G56eciB59mGJb/6VV69e8erVf/EsbdW99aMy+tiymHb5aDRd+3J6vkZrTpa1OcNkMiEA\n7EqaxbjM3PjWrpP2NqdKODo6yeTwE3mtZ9UdRofKYXa0XMdPPHy+D5I7mhm1Iy60CQcm/W6D7Mf/\n8O8321MnMdltcWIRF6ezRk8D+rvc7PchuG0ZuvrDq1F6vuK///ozz58sXRLYDzBnlvv/f3v3+ZXI\nljZ+/wtIzhkEQxs6nTgzz333/P+vpuc398ycOaenk6FVkJyKIpYFz4tCBQFFW1ttr89aZ63TUATZ\n8dp7197wtfHY+ff4dXTKWofycXli083L8shJT0VtP+z0/g5n7q9mDa7wcmPAp70i3VqGD7XM1DWu\n6DO218bPuDfjS6yRUj6TVVRyO39wcWzYHV2/nfv7xbVZPMtsbnX47055xv0vLpIvXnDyeZecopLb\n+y+5vckrTFYf6c1tEhfW05tsHvwBM7XRzJDVHxyb2Z9c2g3nR6SJO2LxkNraoPvOOIZmnnnL+Vzp\n1/yUOm/kx2eNYfqWiiWvj4ipcNZxdEd8EzO1nXqJhtakcaBQmF7nhd2XJjnvPB1xxhZ6xssN86V1\nsqOl0tO9uL6yfM3bhM9sSvP6f5Noo+W9JqI8/8uMs3d1hYP/fCTfN+7jjftCT+oYpPtQ3v8P5QsT\n8iZCbL4OjI6/A//qj7ycMSvbLX7it/3a6JSDGF5FyuzjZCaQ2iLVfE9WLfDlwGMshx7bTNER3ebH\njenyqDcO+e1DDm1iBcc0RyTNSkPnJJKceU73LIu2NeJrzEl7AKxEVjZRWp8pd+scvv83hxOvtRJc\nWSU6fpO22UXqxQsGl/QJoYfa7hGanr4fMSYbet33ZFWVo08Z3L+sLpxvHrNv0e8ZDI95/4/jqcdP\ny9XtxGNjK3/VQw6zHrZTXmPWe6E8Ahbb0tQs+eV9jBTfYtjwiUaiZlzRZ/wSiFIplihVaigdbbRM\nJEAkkiQya3MHi4f0yx/xFrIUKnVqqrGM1+ULEEkkiQW//XFN4pwjvMpavcnOjPPQTUs+Vl/9TKxe\nJl+qUK826QEOT4hAKEw8FsIxM/Hs+IMeqBuba3lCF++3Pl/aDRDweyQP3DGTPczqeh3lc5mv3tPM\n7MEXNpPLGQHCxVsqTEsefCEz5YoOuAn6JqtlV+I1f/JUqJSr1JUmSse4/8vlCxCIREhEfFjvcxfY\nR+O0Tg5TylWo1Guj39KONxQgEk0SDtjvvGwNvqXnIAAAc4BJREFUT+pny3t9q/HZ9wFafMRTfvL7\n0zuxi2+r2yjQwDjRIDFnptURTpDINsj3W5TKCtFVKbOPlsVDcj1F448j1PIuGZ+XlaXzzRQTidkD\nbRZ/nFSgyJe6TrVYJTk61nKK2cXy9qu7/AvETc1I+43Rnicme5DNH38ikM9TrFxoO+IpYjP686d9\nwkitSLFcO+sT2pw+AuEosVgE91XLcC0ekmspGu+OULUc+19cT+L++wfR77mleGy8P1nPHJD3vmTZ\nZzT8l+URjy9AOBIhtOAGfN+a6c2bN3+8ffuWv/3tb2cPvnnz5h6/krhrf/3rXwF4+/btxOOS7k+D\npPvTJOn+NEm6P02S7k+TpPvTJOn+NM1Ld7k5WAghhBBCCCGEeOQkuBdCCCGEEEIIIR45Ce6FEEII\nIYQQQohHToJ7IYQQQgghhBDikZPgXgghhBBCCCGEeOTOdssXQgghhBBCCCHE4yK75QshhBBCCCGE\nEN+JpX6/f9/fQQghhBBCCCGEEDdwGtMv2Wy2e/4qQgghhBBCCCGEuInTmH5p1pOna/bF9+3iXguS\n7k/Dabr/7W9/AyTdn4K//vWvUt6fKEn3p0nS/WmSdH+aJN2fpnl75sk990IIIYQQQgghxCMnwb0Q\nQgghhBBCCPHISXAvhBBCCCGEEEI8chLcCyGEEEIIIYQQj5wE90IIIYQQQgghxCMnwb0QQgghhBBC\nCPHIzTwK70HSe9RKOUqVOjW1B1hx+bz4glES0QB2i3HZsF/h8792qTEkuvVnNsLWBd68zfEf7zhq\nDbBYl3nx6wreqWEPjdLOb+xV9KlXOzwhAuE4y3EfVtPV15+yhzb5YTvCIt/we9Wv7PCvncqV10W3\n/swzr3KWtpPseEMBIvEUMd+8X1Onsvcvdko6JgJs/vKCsOP8WTX3jneH6sznTg27JT7+tk+DJVIv\nfyVlyfP3d0eXfu+1H96Q8MBQPT679vQxcXuG7Tx//H5AG3Avv+L1im9q5HK8bpg0O//Mv/7c4nWM\nuA4l+3+8z5xMPW5z+giE4yQTIRyWGS+caieMtA1F4kSDTma9BGCoqVSKJUqVGkpHw2R14gsEiESS\nRMbyxLzvdZGU8TEnbcqFwtlvO952xyMBHBd6IX2lRK5cpl5X6GpgdngI+iNEE2H8o4u/XVm+Xt/A\nl37Ni5R37qzJaXtnNqV5/b8p3HO/zRNwS326q9rWvlqhVCxSHuUnm9NHIBAhkozinVV1X5FfzY3F\n+yzSNhjm15tWXL4AkUSS2Fj9fJ3yep7+HtZ/+oG4a/K60zJnIsTWn7YJ2S48v0h9c1Ueu+Izvmc3\naxN1uvUy+VKFerVJj1EcFQoTj11s28/rV1f8Ba/XAxfacZXM39+THQ5wpV/zU8o7+cGL1jMLpvF4\n3T3+msX+7m/nUQT3WiPDzm4WRZt4lLZSpa1UKRz7WH3+goTnZgsRdKVKvjUw/l87plRL4L1GpdxV\nq+TVKrVamu3nKdzzepDijvRoVgs0q1XqK9tsLU93robdKqWSkcZD6hQrTYJjnTB3MIb/sEWDOqVa\ni3ByutvVqhVpMMRijRP0m0G9279KLGpAo5KnPfpX+7hAPe67RgN7df4RD0O/o1DMKJTLUbZfbhCw\nnz83u504TdsCed8ym9sreCdavQHt0gGf9or0xh4dah0apQ6NUo5c9Bnba7HZgwniUsNehd13u1S0\n8U76edutmX9lKzZKRL1D8eAT+6XuxHsMuiqVrkqlkCW89oKNhBsT89xuWb5u36CZOaYWnj04jK6Q\nO6x9xbf5ftx1nw6Ym5/6HYViR6GYy5LYeMFK1HmWRxbJr6tSD9wijbZS4lApoaRfs33JwNjVVDL7\nWTwvF+yD30p9I65reKJw9HmXnNKfePw0jirkfKQ3t1n2T4en7cIeh94feBa2Tz03yzepZx6oBx/c\n661jPn3IogJLnjhra0mCTismhvRbRQ73j2jbfHidN00cnXo5z3ja13JlOuEkzjmvGJ9xH+ga7WqG\nnb0iPSXDUTHAywuBoczQz2cLb/EmvDX61/kI3azfbDhWF5yPig840TpUj3bYL3WpHR1QCvw4NXp7\nGpifamZKKHEvgVEJMDlCRKMHNEo6aq5KM+6enKEZKFTzRvjoSQaMUbuxp2Wm7v4MTxpUcueZY0iV\nYqVFaMYAzanr5h+ZhbkfEzOcuk63mWN/L4vSLXGQDeDdCGHBWLkxu53QaFULZI5yKMoxnz6aef0q\nxWlzodWO+LBXRAMcwTTrKzE8NgvDQY9mOcPBYZV2aZ9PwyVebYbwpf7Cm9Tpt7tixuDJ06nn9qlo\nQyyuOBubKfwOC6ahTq+lUC00cJ6NzmhUvnxkv2zMrIRWNliJerFZTAw0leLhPkfVJdxuO2Ym6967\nK8vX7xsMqXOcrxOYml0CtZQh3x8s8Lnft7vv0wHo1I4+sl+6kJ/McNJvUs4ccFTtkt97z8DyE89C\nVhbNrzbb4n0WMWlyxcqovB5+Yr/cp5EpoMS8BC78gNdpe0/UDLtf7LzcjHD52P7N6xsx6XptYpvc\nx4/k1AHgIbmxSjzkxsqQfqdK4ShDXlE4+vAR84+vSLgv1gEaxZ0dnPZXVwbk36aeOffQYoAHPlzR\no5w5NhLHtczLl+tEPHYsFjNmiwWHL8nzH//ED18xW34+o2slmU7hAk5aOWrKYo2w2WLFE11lJWp8\ngVZFoXOzryJuxMyS1U10dZWIyQS0qCmtyUvGAvNQOk3EZGJIiXJtfK7OQiCSwIoxQ1NtTC4z0hoV\ncv0BJgJEg096MeWD06uVKA+HmK1J0ikjbdRcleZCRXiB/CMeBosFRyDNStJoQfslhZYO0KN4lJnT\nTtjxRld5vj2q29UM2cqo3A8Ucl+MwN4e2uTV8xR+pxWLxcyS1Ukwuc3LzRAAnfIXSgu2CeJUh1bR\n6Bbbg2FCLisWsxmzxYrTFya1vXG2ukZXChyUjXSJbv7A9nIAh9WC2Wxmye5jefslP//8kqT3svmI\n2y3LN+0btAsZSurkNcN+heMDWer1Lfp0ALqSY78wIz9ZLNicAZa3X7IRtmAEeflRW7F4fhW3wSiv\ngcBpADhkcAtRdKe8S6bcu/Sa26lvxHV1SxmO1AHgZuX1K1ajXuynZd8TZe35Nkm3GVDJZcr0Z76L\nSnY/O2r75/k29cxD9qCD+2FfpVE3Gkl/IjY7ESxWrF+ROONLrcOpIGG3GdAoletcmncmvwRWu7Fw\nZ9AeIF3Ab8+0ZMU+Wjyl6ZMpcB6YhwhH44RiRrZvFKoTAzEWX+hspLBarI5VLBr1inGPnT0aJTBr\nyaW4J22qhQYAzniQ5VAEF7MHaC5zWf4RD4vNZsz2DtE40SfbCV98djth8cZJhI0nmpUGfWDYVimP\nZlIjsdDMmR5HJEnKZrQJ5boqdfu1WLH6jDLVKWb4kq/S7ukzf8NWs4wGmEkSDc1acmnH6Vysob+t\nsnzzvkGLXHa8YzqgkT+69P7hp+Jb9OlgsfwUSSyfDeY3msYgzqL5VdySQY9G3Rj0WvJ4cN7S4Elp\nd4e8Oj/lbrO+EYvSaDYUAGz+GJHpzUvA4iGRDBpX1ys0u9OXAJy0j9n9Mi/4/3b1zEP2sIel+r2z\nBtHjnH2PxUDXjStMFizXHaqYWmrtxhL3c7RXo1cqUV8Ozb53boqO1jO+p2lpesSkV93ln293Jx57\nihtv3KXhiUZvlFfMpvEU6FEtngbmYfy2JQglsBayaK0cNSWO03d6vYvQKP21eo1mN0bYAcNunUrF\naPyjkenllgAH795ycOExWap7987viXUTDXoxuWzEAhm+1HWqxSrJYOyK5XmG+fnHUNr5J6Wdycdk\nGeb96PdPZ2VMmE1A77yd8Lrm3YtnxelagorOiaIZS617bTSMutg1d2meHafPBGUY9ProPPAR8QfF\nTiS9TLlxhKopFA4UCgdgsjoJhKJEIhFCHiug0esYA3HWkAvHV/7At1KWb9g3sCeSBKsF8vV9MpWg\nseFXu0g218NEiFQaMpnq1/2Bj9lX9ulmpd20BfOT3YkXE1WG9E90Fs+v4qYGwwx/vM1MPW62hlnd\niM+83eU6bW96c4vO4S4VTeXo0x62H7aYXin9dfXNrL6eWESPXtUo+0te59x+mdXhwkoFDQXtwvyM\nLbTOiqvCbqZJp7zLvsPOdmrGjgh3HTvO8NBigEfeT1E5/r9/8o9//IODmnb15ReczuiCm6DfWM5r\n9wbxY2I42ljtKgNdQy1+4aBkjOW74z4W2+pB3I4BJ1qL0sEXysMh4CbsO28ihu0axbqRNoGgDwtg\n8fiI2GbPwtiD0dGy/fP0P53BWXInCfoeeZH5rpzfE7vkDuNzAdjxh3wA9OtFau3LXg9X5R/xgOg6\n3XqGg0NjpscWCuCWvvaDZvEs8+rXF6zFAzhGaTXUOtQKh3x+9zufcq1bnBm9vbJ8076BZSlIctWY\neaoc5GjqGuVj45YR/9rygpMFT9nX9em+1rfNr+LUQFOoFJW5M7GLsjjCPHuexgMMtAqZTJneUFbM\nfC9MWPCnNtmIGFFWPXNIQV18hea5GfWM2Yzr8hc9Kg975t5mJ4iJGkOa7R4Jz22GzeczujZ/jOAo\nVa/cWI3ZM/EAS540q4np3T5lhu/2zRvBD6TXiJ1ttHG+i7qZJKHT3TfNPkIJF7lDdWoWxrTkJ5y0\nUT7uGekf1amNZnD88dDcjZQe2mYaT8H4CQi+2HnaGAM0dcrDFqWKQtQ1fSzeYvnnnGyodz8unelZ\nNerU4ULthEanbXQClnxWrIDVfjpDUKXdGRCyzRq469FRRrPAdtvco/TEfGZ7gMR6gMQ6DHptFLVK\n/uCYhqbROCyhxtaxO5cAHa3apjsA6zXGUG+/LN+8bwBgC6+wXq7zpZ7j6FOLrqKz5EqTjrkx1574\nvttf2ae76ig8g3Wx/NTr0BzN7tmWzkv21fnVjU8qghuZOgJytEnq7scs9fxHDl2/shWdzBPXbXst\nnmU2n6n8tl+jU97lc+PiaxfMH3NcdkyauIwde8gEFThpdujjnTl7r3VPV9T5sM6MUO1E1zdoKx/J\n940VGkvDC0NuN6lnRrdztRnS6RtHYI7ra5fv4/DQYoAHHdybbB78ATO1uk49U6AZXsV7S5Xq+Ixu\nv7HPv97uT11j3LebxBu8+meyBVd5sZnEJZX+vQmv/chGwn1+rM3YLuoDcvz3/+WmXjOcOvrOjD8Y\nw3p8hKYdc7zbpt4fYCJKJChrMh6S8RMQqvv/ZkYRpn1cRkn6zk5FuMzF/CMeJoszzvardfyjtneR\ndkJvFshXjPreG/YbnQqXh4jNTK4/oJQvE/NP38LRLefI9o1bciIBj+SN69J1BhbL2e9mtrsI2F14\nlwb840PubN8EvzeClSwaOQrlON7YxbpWo9ezYLcvlgJfU5a/vm8wWt5dP6KpKICV5XQct5mvnpl8\n7O6yTzfOfWV+6lHOH6MBFusy/tNRmgXzq4zy3RKLBUcgSiSYR63pqEoLLWr/6sDEEVtjo9lmr9xD\n06ZXgFydP65X34hFWPH6fVCp0W9kKDYipP0Xfl9dJZ8zjgu1BsJ45610svhIb6dQ3x2hahoXU/gm\n9YzJZsdlM1HrD2m1OgxC1rH2o0erYezQZQ3aF7rV87498JxrNJLGEpscnz58oaz20PUBA12nqzZp\nX7LkZqifoOv61H8DdKr5DFeu2OXixmqjbxXa5M9v3vDmzRv+v5dJrEC/lqOi3GR5iLiJ6NafefPm\nDW/e/A8vkkbFXDsuMb5Cp1U6Hi3PvNzFndVNnsDZxnr1eh0A13IE3y0Nhekns/KlLPa7juFJjcLR\n1bfNTJ+KYFgk/4j7Zzal+XFU1/7vLxv4MaF3CuQr42lvJ7aSntNO9GiWDvn0OUsbY3VV6vSMXLOP\n5HrMqL/r+7z/lKXR0dB144imWu4zH3aN+6OdkXWickvONQ2oH//OH5+zVJQOmq4zGBhL5ytlY5bL\nbHVgXQKLL87aaKllZf8dn4/rdLXR9T2V4sFn/v3v9+Sa0wX0dsvy1/UNTlncCVKj72ILpIkvMEHw\nNHxdn25RFl+SZ/EZ+UnX6XfqHH/+wF5FB6yE1xOjFRiL51dxS3Sdbr1EuWYMplns1lta4Wonur5F\nas5xaV9T34ibc0TTrHiMW2KzH95zWGrSOyv7JQ4+fSbXGh2Tl778OEOLZ5nNrXkrom9Sz7jwxYxl\nWq3jIzKVFtqoD9E4PiBbH9UXkcCjWIX94Kspi3uZ5y8H7OxmUdQCu+8KM66yYrVML3cr7/+H8oVB\ndxMhNl8Hzpbz+ld/nDqXHqBb/MRv+7XRfbuxqbNyz76fP81WWuV9pkl+/wtu1xYXN9+ct4x/aomS\nuAEzgdQWqeZ7smqBLwce44zTsQ2RHNFtfhydhz1Obxzy24cc2tQszPnGegY30fD00u5x8zZZmbWk\nLPPx/7i40FjywvWcHn8HbtZ/mj7LGnoUPv7Ol7punIoQTTJ7EHhO/rlw1bylv7Jp4rdjckRZ31L4\n706Z+sEX8p7zs25NrgTPX55c2k7Yfctsbp+fcQ9gDa7wcmPAp70i3VqGD7XpWwBc0Wdsr4UeRYP+\noOgKtVyfzjDDTnX6dzU64LFRYGUlvP4C3fSJ/VKX6tFHqkcXr7fSavUYeJeYvbj968vyj+HuLfUN\nzPgTa8TaZVxXdFKfmq/p013jUwiuvODZ4LL8ZCex8YKV0KhkXyu/ipuYd5uVwUMsNN2W3rjttXhI\nbW3QfbdLRbsYyN1GfSOuz0XyxQtOPu+SU1Rye/8ltzd5hcnqI725PeOM+2mO8DO2uj3eZ5pTz12/\nnjHjS6yRUj6TVVRyO39wca2vO7o+d6D2OjHAt/Dgg3sAqz/Nq1/CVIoFKtU6NbUHWHH5vPgCQSKR\nyLU2Vuo2CjQYYiJKIjo7nHKEEySyDfL9FqWyQnR13t3WZnzJdVL1d2TVCgeHPjxbMWxSG3w7Fg/J\n9RSNP45Qy7tkfF5Wls43REokpgN7AIs/TipQnLmz+vl920NsgfP7LsVDcH78nSO6TGRm2tiJJGJk\n6zm0Vo5KI05qXhGekX82onILxkPkCK+yVm+yUzbOunW/Xjlbbme0E1FqpRylymk7YccbChCKxIkG\nnTPqATOu6DN+CUSpFEuUKjWUjobJ6sQXCBCJJIn4JKy/EUuAZ3/5hUC1QK2iojSa9ACzw0PAHyIS\njxJ0jnVBLE5iG78QiJTIlcvU6wpdzbg+6I8QTYTxO4zr587tfmVZPr3V5zb6BiZbkGcvgwt/9lNy\n2326mU7zU6xCqVikPMpPNqePQCBCJBnFO/4Z182v4laclu94Kj6ZHrfAZA+zul5H+Vxmag7+Nuob\ncW2mJR+rr34mVi+TL1WoV41y5vCECITCxGMhHAvf9jIef02vfr12PWPxkH75I95ClkJl/PoAkUSS\n2Mw+xMNkevPmzR9v376dePDNmzf39HXEtyTp/jSdpvvf/vY3QNL9KfjrX/8q5f2JknR/miTdnyZJ\n96dJ0v1pmpfussBICCGEEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGE\nEOKRk+BeCCGEEEIIIYR45Gbuli+EEEIIIYQQQoiHT3bLF0IIIYQQQgghvhNL/X7/vr+DEEIIIYQQ\nQgghbuA0pl+y2Wz3/FWEEEIIIYQQQghxE6cx/dKsJ0/X7Ivv28W9FiTdnwZJ96dJ0v1pknR/miTd\nnyZJ96dJ0v1pmrdnntxzL4QQQgghhBBCPHIS3AshhBBCCCGEEI+cBPdCCCGEEEIIIcQjJ8G9EEII\nIYQQQgjxyElwL4QQQgghhBBCPHIS3AshhBBCCCGEEI/czKPwHrKTVoVCoUi5rtDVwGR14vP6CEXj\nhP1OWsf/x/vMyZXv43dCowP20CY/bEewTjw7QD3+wLujJlbPKq9+iKDu/MZeRZ9z/SmN0ui6eS5/\nvbjMUD3m7++OAFj74Q0JzxUv0HvUSjlKlTo1tQfY8YYChCJxokEnljkv66sVSsXzPGZz+ggEIkSS\nUbxjCadkF8trC33XJ++87CxWRnS69TL5UoV6tUkPcHhCBEJh4rEQjguJOy+tTFYnvkCASCRJxDf/\nEy/mCbPDg9cbIBaLEfKcv+6qPGE2pXn9vyncl/5t4qLT3/WqvKGrx/z33REdQmz9aZuQDYb9Cp//\ntUuNIdGtP7MRtrJ4fpM6/TaM193jjPIXJp6ME3Sed0fmlSOb00cgHCeZmC7jp7TaPv/8VAQgvPEr\nW1H72HMH/P4pj4abtR9ek/BMzm8M+zV2//hMRVti+fnPpN2Ns7wzz2meGs9nk4x2JxJPEbukjvme\nfU35Hbdo2wzjec7D+k8/EHddeK/KDv/aqWAafdZSafH2PG6bVafM+uyn3v6rZP7+nuxwcOlVp+2i\n65r1xJkb9vWGmkqlWKJUqaF0tEv7A1K+78blMZ1O7v8tnn/O+lXXyg/z23iHJ0QgHGc57sNqup2/\n91t5VMF9t7LLf3fKaGOPDbUOjWoHpdrD8suLhTtY3liS9kGOXvWQQiNE2n/eyA+7FTJHKmAllo7j\nREe9zT9E3DmtkWFnN4synlno0awWaFYL5H3LbG6v4B0vAXqH4sEn9kvdiffqdxSKHYViLkti4wUr\nUacseblHwxOFo8+75JT+xONdtUperVLI+UhvbrPsv7p6G2odGqUOjVKOXPQZ22uxyaBhTp4YdFUa\nXZVGKYM7us3zjRAX+qHiDsyqr8eepZw9pg08snb4yTLKX4ZGqUBs6weehe2XXt/vKBQzCuVylO2X\nGwSmLu9RLVbO/tXIl2mFU7hH2cUaTJAKlPhSb5HLlgm9iI2V2wGN/AEVbYgtkCYeXIL+xfe/idN2\np0p9ZZutZe+TbT9uXH6/qm1Wyexn8bxM4Z4X5YkH7byeKJHYfsVaaGzA7iZ9PQa0Swd82ivSm/qc\nS/oDM51/Vi39mu3U0y3f13VVTGf+JXXt97xZfpjz/UZ9ynIlzctHVn88nuBer5PbraAB3vgm66kg\nDouJgd6jpdQoNmz4HGBN/YU3Z/nhfNTQlX7NTynv2Btq2NQiexWNQiZH2JvCaQbQqeezNBhiD60S\n95uB+bM288hszv0ZtvN8+pBFBZY8cdbWkgSdVkxotKoFMkc5FOWYTx/NvH51nu61o4/sl3qAldDK\nBitRLzYznPSblDMHHFW75PfeM7D8xLOQFd/CeU3cnja5jx/JqQPAQ3JjlXjIjZUh/U6VwlGGvKJw\n9OEj5h9fkXBPNrMTI7zDAScnHerHRxzmG7RL+3w223i9HhiN7GpUvnxkv3wxT5gYDE5f18UbcE8F\n9jJDf1c0ipkCYX8S58Vnanmy9evX1YuSOv12nM1kDgec9BWO9/bJKX1KO1mC/g0CY72SiXKk63Sb\nOfb3sijdEgfZAN6N0MQszLBdoziWB07aGcqNOO7g6ZvaiaSWKdaPaNczZKtBnoWso9cWyeZ6gJtk\nKoINJuboZs3QznN+7YATrUP1aIf9Upfa0QGlwI9Ts8hPx03K7/Xb5otO1Ay7X+y83IzMHYS9Tns+\nvJVBn6fAQ/p//4f06F9XrWgYL2+z64kehc9Z/H8x6omb9fVAqx3xYa+IBjiCadZXYnhsFoaDHs1y\nhoPDKu3SPp+GS7zaDE3V+fPKdz1zQCn4lMv3NSwQ0/kdHiLXyT83zA+nxtv4ga7RrmbY2SvSUzMc\nFQO8TD6eHt2jGWAadtoUh0bRD4QjuKwWzGYzS1Yn/vAy2xvX7XRZiaTX8GPiRM2QLRvjd7paIFPo\nYSLAyop05B6fHsWjjFG4Xcu8fLlOxGPHYjFjttjxRld5vp3ChdHgZyujdFdy7BeM/49u/sD2cgCH\n1YLZYsHmDLC8/ZKNsAUj4MvTvHyVkLgj3VKGI3UAuFl5/YrVqBe7xYzZYsHhibL2fJuk2wyo5DLl\nyyfeTGaWrG4ia8/ZShudt3YhQ7ltPK0rBQ7Ks/LE6ete8vOff5qYRRB3T1MPyVW0yQcHKoVsEW32\nS8RDZDKzZA+wspbEBQwpUVMuSUGLBUcgzUrS6NH1SwqtiVhwQKOSpw1YA2nSUaN7Uy1WJ+oBiyfB\nStIOaJS/5GjqGP9/bLQb7uQqMc9tdY2MuiK6ukrEZAJa1JTWLb3343Td8ntbbXOnvEum3Jv9pHi4\nZtQTzeYJN+3rMVDIfTHymj20yavnKfxOKxaLEU8Ek9u83AwB0Cl/oaRc1tmbLt/l+tMu34u6/Zju\nhvlhDrPFiie6ykrUGD5Wc3U6N/lD78mjCe5ZsnI6dlrM7FGstejpXxdhmRxhltPGSEwtk6OhnS8L\n86aXCTq+7iuLb2/YV2nUjXzhi8dmLqOxeOMkwsYTzUqDPtBqGkuDzCSJzgzW7EQSy1gBXTumIdH9\nPdBoNhQAbP4YEe+M6sviIZEMGlfXKzS705dMM+NLLBO70Pk+zRMW6/KcPAFL1ke0Tus7Ujk4DcoM\n3fIx2ZaUyUdpyYp9tBB7OP/W9jM2m1EWh2icjOWB4UmDSs4I4wORGLFgDIB+vUitPf4OZvyJFYKY\nGGg5jksttEaOo4qOiRDLCd+td4xMY3+j9pX9lu/BdcrvbbbNpd0d8qr8/o/SeBkaDG/c1xu2Vcp9\n43WR2Ozb6RyRJCmbGdAo11WuyjHj5Xtwxf3hYuSWY7qb5ofLWbDaR23TCVfmg4fk0SzLNznCpNMl\n3mea9JQS+0oJAJszQCgaJhKJ4L72NLsZbzxFrPiJYr/A0acWfVXHbI2Tin/dfTO96i7/fLs7+TfM\n2SRG3KJ+72zDE69r3oyqFadrCSo6J4qGhkavY2ykYw25cMxLeLsTLyaqDOmf6DymsbHvQ49e1Ujb\nJa9z7vJKq8OFlQoaCtrV+yMZLE5cPjM0dLqtHhq2szyx5HXOzhMDHX0IYMJimbxgMMzwx9vM1Eue\n9uZKX88aTBIe5snXc2TyQV6kvJhO6uSydcBNOu0jk8ndyWdLnX5HTjR6ozrbtMBmCf3+6YyLCfPY\n9b1aifJwiIkoIb8VqzlI0lYk129RqihEXedBu8kWZnmtQO2gSf3gC588KhoQWFuem5alnX9S2pl8\nbNFbNYZjf6PZ9HTbjeuX39tpm9ObW3QOd6loKkef9rD9sMVtVcOz8oW4AxfriRv19YBeGw2j7nZd\nXJd9xo7TZ4IyDHp9dC4PlqR8X9+tx3Q3zA+XN906Wm+U55YeV4//EX1XM77US355sU4s6DxrTPud\nOvnDXd79/p7CDWZuTEsBkqkAAC3VaOCD6SS+RzPsIYS4D/3aPv/4xz/45//lkIV434bZ5CKeSuMC\nmpljat0BzUKWYn+IK54mvsAmiuKBGA446dU5OsiNNlGLErxst2ldp1vPcHBobG9rCwXGOn9tqoUG\nAPZowNgsyezBFzEuaB+XUS4M9HmiaRI24xYeVQWzNcly9LbvqRxworUoHXyhPBwCbsK+i3ebPx33\nVX4tjjDPnqfxAAOtQiZTprfIMhFx/07rif2jUT0Rwu95KDfMjsr34eFZ+Y4EHs992ffrbmK62zLQ\nNdTSIUclY4mRJxmY2ifkIXtkPSEzjkCcZ4E4z4YDuh0FtVLg8LiOpinkSwoRd2DusRfzOCLLpIoN\nsq0BS640ycjX30Mrmy/dE5udICZqDGm2eyQ8s9JSo9Mezcr6rFixYncuATpatU13ANaZm/l2aI5G\nBm1Lshz727NjD5mgAifNDn28M0ddte7pyLwP66I1nN6hPbq3zuG2L54n5pAN9e6Occ90kY+5Okf7\nH7EqKiZCpJYDWPrtq9/ghqROvx0H795yMPWolehWamIzPZi/AsZsDbO6ep4WulIlP+oIhsOnfQAz\n/nAC1/EBbUqUaykCY8fiYfGRXA2S3zF21w+vJfFeUq1fZ0O9ebO5gfTaLd7P/zhdr/zeXtts8Syz\n+Uzlt/0anfIunxu3U5KvOgpP3Mz8emLVOOKUm/T1wGo/XdlXpd0ZELLNPrmho4xm4u22qZjisvId\nlc30ruEWY7ob9f0nzVqdB7DkSbMSe1y9uUfVyujj92OYzDhcASIr22wkjR7BUDu52T0RZjt2h7G+\nz+KwM7Osi0fBZPPgDxgJWM8UJu7rO6U3C+RHZ1p6w35sgNs72iGTHIWZm+70KOePz+7B9s+631vc\nMStevw+AfiNDsTGjtOsq+VzNuDoQxrvQvhkDlPzxaHMXN0GfUYlfnSfE/TDjT6wRtproKQoq4L9k\nObV4uExWJ/5omuc//3zlMXinLM44z3/a4vz2a516OX+2GVv2w//j7du3vH37lr//fsBpuNgoVKc2\nRLLaz3viLvvdDtuE136UY7KA65bf22ybHbE1NkaTN5om228+Lk6Sz386qydu2tczuTxERp38Un72\nprvdco5sfwBYiQQ8V5RZO95QnGev/swLKd/Xcpsx3U3zw2UcnhCJtVf8/PpxHYMHj2nmfqCQ/c8+\n/ViKWMiP22bBxJCTXpVy2UisJcf0CNttGw4H6Lo+XYBNFixSqr8Z/eQEXb94g6YJi8VObCVNuX6A\nquX49GEw8ziMNsZoXGrUUFh8SZ7Fy3wq9Kjsv2N4Muu4HR2wEl5PILH93bmsjDmiaVaKDY5UjeyH\n9wxmHYXXGh2Tl55/7JHxQeNH4TUBcMXTREb9fYsvzlqkzE75Qp4YHdfSbC20W5+4AyZbkHQ6QGW/\n9tXLqaVO/7aus+/E+AqYYbfEx9/2aXQK5CtR/AkjzYftEselq49APGnlqClxnL67T9Txo7Lqh//h\nY65H7biEGnHLLX9cr/zebttsJ7q+Ra/7nqxsrPegndcTPQoff+dLvUP5uEw0eHqM4s36eph9JNdj\nlD/l6df3ef9Jm3kUHoAzsk50Rn1xnVU8Yo5bj+lumB/G3+E7Wp33aJoZXamR63chs0tlepUeZkeU\ndOz2d7m9qF/b57d/7E89bhT283/PW94hy3VvR+bj/3ExG5z9tq4Ez1+esLObRVEL7L4rTL3e7ltm\nc3v8nEsLwZUXPBt8Yr/UpXr0kerUqjo7iY0XrMw4R1fcnsvLmIvkixecfN4lp6jk9v5Lbm/yOpPV\nR3pze+qMe5i/zBfAFX3G9sr4EjAr4fUX6KbL8gRY3EtTDdC8z5EN2G6PI5JmpaFzErl8OfVVpE5/\nHEyOKOtbCv/dKVM/+ELe84qEh7Pj70xEeT46/3qCrnDwn4/k+xqlcp24L3SjSYB5S3FnnYN+zkwg\ntUWq+Z6sWuDLgefSs9afksXL7y23zRYPqa0Nuu92qWhy3/3DZye2/ozmu10q6iGHWc/ZChjTjfp6\nYA2u8HJjwKe9It1ahg+16bbaFX3G9tr0GffidtxFTHfT/PA9ejTBvSWwxl9+8VMt1qg0GyiqsTzL\n4QkRCIWJx0I4HtmyCXF3rP40r36JUivlKFXq1NQexvKpAKFInGjQOd3BsziJbfxCIFahVCxSrit0\nNbA5fQQCESLJKF6p6e+dacnH6qufidXL5EsV6tUmPW5WF5isTnyBAJFIksiszbxO80SkRK5cpj7K\nE2aHB6/XSyQUJxiw3/mKITGD2cXy9qv7/hbiG3KEV1mrN9kpq2T3s7i23WfH3/lW49OBPYDFRzzl\nJ79fo1cqUV8OEf6Wx9xaPCTXUzT+OEIt75LxedmIfv2+Po/edcrvLbfNJnuY1fU6yucyix6oIu7P\neHrVMwfkvS9ZHi2BuVFfDzOu6DN+CUSpFEuUKjWUjnZ1f0DcmruK6W6WH74/pjdv3vzx9u3biQff\nvHlzT19HfEuS7k+TpPvTJOn+NEm6P02S7k+TpPvTJOn+NM1L9+98YYIQQgghhBBCCPH9k+BeCCGE\nEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGEEOKRm7lbvhBCCCGEEEII\nIR4+2S1fCCGEEEIIIYT4Tiz1+/37/g5CCCGEEEIIIYS4gdOYfslms93zVxFCCCGEEEIIIcRNnMb0\nS7OePF2zL75vF/dakHR/GiTdnyZJ96fpYroPh8N7+ibiWzKZTBP/lvL+NMyq5//2t7/d07cR38rb\nt2/561//evZvKe9Pw7w98+SeeyGEEEIIIYQQ4pGT4F4IIYQQQgghhHjkJLgXQgghhBBCCCEeOQnu\nhRBCCCGEEEKIR06CeyGEEEIIIYQQ4pGT4F4IIYQQQgghhHjkZh6F93AM6NZL5EsV6tUmPcDs8OD1\nBojFYgQ8Vk4qO/xrp4IJH5u/vCLsGH+9RmnnN/YqOkvuVV7/mMQ59uzwpMbePz9THg5Jvfwf0n79\n7Hp7aJMftiNYASX7f7zPnGD1rPLqh8n3GP+M8dec0+nWyxN/g83pw+sLEU2E8TseeBI8EMN+hc//\n2qWGi7UfXpPwzBuXOk8PV/o1P6W80+/VzvPH7we0AffyK16v+GaPcp20KRcKlCo1lI4GWHH5vPiC\nUeKRAOdJd3U+lVG0xZyn8/zjuqJbf2YjzFk6X+TwhAiE4yzHfVjPToPS5l5/aqL86j1qpRylSp2a\n2hu9rw9fIEosGsJtM1L0tG4wm9K8/t8U7ol3vKpuEOMuS3uHJ0QgFCYeC+GwzHm9plIpls7Kq8nq\nxBcIEIkkifgmf/n5n2XHGwoQiaeIjb3mNusfcX2L1AtwWob91C8tdyqZv78nOxxMpNFpWZ5ndhkX\nN3dZnTynHKrH/P3d0dTVRlkPE0/GCTrP+1Sz6ueb1TPXbD/Etc0vf1ZcvgCRRJJY0MlpsizeVxil\nyBX9OXPDiCWuMvGe4nYt1O+aXX+fGs8Xaz+8IeF5mu33A44sByjZD7zPNCcf7ao0uirNus7LX1bx\neIMEqVJDoar0CDvsZ9cOT1SU6gAAvVWn3U3iHAv+T5oK5eEQM0n8XjMwv+IG0NRDDrMetlPehYK1\n4YnC0eddckp/4vF+R6HSUagUsgRXttlaXuz9BECLXLZM6EUM24xn9UaOo0saYBjQqORpj/7VPi5Q\nj/sIXXizYa/C7rtdKtp4w6HRVqq0lSqa+Ve2YnYWzafeOQGJuH1dtUperVKrpdl+nsJ93d9eV8l8\neE9WHVx4X4WuqtDSbbxenTMgJO7EaZoWcj7Sm9ss+8ebrgHt0gGf9or0xh4dah0apQ6NUo5c9Bnb\na7G5AwPnejSrBZrVKvWZdfPX1j9CiKudl8PW1g88C9svvdoo6xkapRKJ7VeshS6/fp7L6xlxPzTa\nSolDpYSSfr1w/3vcIv25Vemj3a9v0u96Ou33g625hu0iB6OAKZR+xWrCg9U0ZKB1UWpFKoOgETBZ\nPPgDZmp1nVajiRazn42cngbvAMOp4F9HbZQAsMV9uBbMMfXMZw4cVzc2DNpkP34kpw4AD8mNVeIh\nF1ZgcNKieLhPpmnD53NLkHBN/XqGQi3ESvBi9m1TyBTQLnnt8KRBJXc+2DKkSrHSIpQcn4/Rqef2\nqWhDLK44G5sp/A4LpqFOr6VQLTRwBoz0Xzifimu7fIT8PJXHZ0wGuka7mmFnr0hPyXBUDPAyOTnX\ndtUMi1o6IKsOMBFg5dU6MbcVE0P6PYV6oQghCezv2njaD3SdfqvI4f4Rta7C0YePWH76gbjLuFar\nHfFhr4gGOIJp1ldieGwWhoMezXKGg8Mq7dI+n4ZLvNoMTaX7+WcNONE6VI922C91qR0dUAr8ePY5\np76m/hE3Y7KFef4mfPbv/tmKvRBbf9q+MDj7dSkgM/Tf3kSdPBxw0lc43vlMTtWoHJRJhFMXVkxy\nNit3dv3ePjmlR+FzFv9fNggs0Lu9Tj0z87uKWzdZ/kZ18uEn9st9GpkCSsxL4MKPf3lfYbH+nM22\nxZvw1ug1suruW/tW/a6n0n4/2D6q1lFpAyZChCM+7BYzZrOFJbubUOIZ28unyyXs+IMeAPrVGs2z\nuO08eD/VajTPE27QQikagX/I72Hx+EujtHNItXf5Vd1KZjQC5Wbl9StWo17sFgtmi4Ulu4/l7Z/4\n008vLlkeIubTKGYKtCYH+OhXjjm6MOp3Ua9WMlZrWJOkU0bzoeaqNCde1qE1yhv2YJiQy4rFbMZs\nseL0hUltb5x1JhfPp+JbMFuseKKrrESNEt2qKHSu9Q4aHdV4hTUYJuyzY7GYMVssOFxBEs9eGB1K\n8c2YLRYcviTbLzcJW02ASj5fNdZZDRRyX4zA3h7a5NXzFH6nFYvFzJLVSTC5zcvNEACd8hdKymX1\ng5klq5vo6ioRkwloUVNaM667ef0jhLiCycySPUAgYPSNhidwaakaXb+ylsQFDCnRbM6/vWKeS+sZ\ncU+MOjkQOO1HDRlcfmfODIv358R9+Zb9rqfRfj/YyNKyZJS2IVUyh1kqSgdtTi1r94Xxjq5ttUaV\nut6kXjSC6/RqCiuTwb/erJMfDjARwu2+3gKGIVX2d7K05tb6Gs2GAoAtECPinfUzm7FaH+zP/+Cd\ntDPkymMjLLpC7rB2xavaVAsNAJzxIMuhCC5A146pNsY7A1asPuNm7U4xw5d8lXZPn9nBuE4+Fd+K\nBavdSL9Be3B5x3DWa23Ga/u1DIfZMkpHu0GHQtw2kz1MYtkYkOuXFFo6DNsq5b6RwpFYaOZSO0ck\nScpmBjTKdfXK/GBasmLHyAOaPvvqm9U/QohFDE8UlLpR9hwxN44rrgdgvNx+RYU9q54R92jQo1FX\nAVjyeHBeOxBfvD8n7su37Xc9hfb7wS7Lt/jjbESq7JV7dKoZdqoZAByeKKFYiFgogH003W5yuAm4\nzTRbA6oNleVgAFSF4nCIxRokEPOi53Pk+kbwH7It0VKrANhCQbwLVhZm0zLPNvsc7pTR1Ay7X+y8\n3PTPuLJHr2rkyiWPc2aHE10fjQibsFgkyL+OeDJJNZejun9INWAsyVRLGfL9AbZQmhjHZKrTVbeu\nVMm3jAGfaNCLyWUjFsjwpa5TLVZJBk/vw7ETSS9TbhyhagqFA4XCgbFpTyAUJRKJEPIYi7Suk0/F\nt6Kj9YzyZ1qaHsHsVXf559vdicfOl/ea8cfXCZd3qWg9KpldKhkAO75oiGgoTjBgn1rpMxhm+ONt\n5q7+IDHidHoBlQFV2t11HL02Gkb6uZzz6lE7Tp8JyjDo9dG5vOEbnmj0Rps0mU3T73nT+kd8e7PK\n+lXmleWzZeDi1s1LpyXPMuvpwGIrK8fKrcl0xbVXuFjP+Mbu0bi8/fi6zxXzy5/ZGmZ1Iz51ewZA\naeeflHYmHztfTr94f07cl5v1u27iqbTfDziqtBPd/Ikft1aIeM7HbbtqieO9j/znjz3qZ0vwXfgi\nxo1R/YJCezCgOVqS74j7cFs8+MLGn1ptqOioKEVjgb4n4L3GvTRmnOFnbKWNJUKd8iHZSvdGf52S\n/zf/+Mc/+H2v+t3c4/GtOEJJVsIWhlQ5zisM+hWOD1TAw3Iqgm1my65TL+fRgCV3GJ8LwI4/5AOg\nXy9Sa59fbfEs8+rXF6zFAzhGGWSodagVDvn87nc+5Vqjkd/r5FNxHaWdf/L27duJ//79uXxpeRno\nGmrxCwclY+jMHfdx3a2VTPYwWz//yGY6xnmS9lBKOXY//pv3Uma/UwNOtBalgy+jvVrchH3TXcmb\n1T9CiOs6USsUy63LZ1mHA056dY72j85ukfNLsPbdGWgKlaLCTbpTi/fnxH1ZvN9lxuya+zZXeirt\n94OduTdYcIeX2QwvsznQ6bQVGsUcB6Umg26JfDVOIGEMqbp9YVyotCmjNHzolQFgJeI3AnGvPwq5\nHP2CQjNspdYfYMJH0Hvdrr8ZX2qTdfV3vtQ1ijufqVkvrtuyYw+ZoAInzQ59vLNn78UNWYmk16hU\n9mnkjvjY6qEwxJdeJeoyM+swk2G3SqlkVN++WOhs9NcejBIx1SkPW5QqClHX+aYdZnuAxHqAxDoM\nem0UtUr+4JiGptE4LKHG3PgscJ18Km7f/FmfNKuJ6Z11F9ogZ8lFJPWMSOoZg5MOraZC8fiAsjqk\nVTqmmghNbLR01VF44nZ0OsbmlWZCuBxgHbqwUkGjSrszIGSbNV7do6OMZuLttqnR/1mzPgCB9Bqx\nmXuiXL/+EffjqqPwZpEN9b69i+k00DXalUM+7ZcpH3zE6fqVZd9kWTx495aDqXeyEt1a/eoZ9Iv1\nzGXfVdyuqfKn63SbOXY/ZqnnP3Lo+pWt6GS/fZHj6Rbvz4l7s1C/y4rVYYIW6F0N41DDMWMreGZ7\nGu33Aw7uB+i6GctpYTNbcHqCOD0uTP3f+dLQJ+6HNLk8BG1m2n2NwuEX6A+wWBO4Rx1wi8dHzJSn\nOCyTPbTRBmz+MN6Fbua6yE5s/RnNd7tUNA1tahrPitfvg0qNfiNDsREh7X/AiyQeIZMjTHqlROOo\niaKA2RonFfdinjOn2qoVaYwKfHX/37zdn76mfVxGSfqMXXZ1nYHFMhbouwjYXXiXBvzjQ44hGic6\nYLlePhWL+5rzZG3BVV5sJnHdpLHWdXSL5SwINC858QadeJxmer/t0aTFnLhA3KFhr0L+2Njgzhb1\n4bYY9X7EZibXH1DKl4n5p4+46ZZzZPujwd6ABzNccVo6hNd+ZCMx/yST69Y/QojFGRujRol8qZIb\natTUDsu+q4ZbnCSfv2I1+HVh96x6RtwjiwVHIEokmEet6ahKCy1qv17wsnB/7va/vljQwv0uK3bn\nEqBz0mjRHYQY376s11LOVvDY5gzyPYX2+8FGnMNuhc+/vT/b/ELXBwx0nW69RLlhzIQ5J1LOgy9m\nVOpat2ccixT14z79Cy1eAjFjUyVVNSpuZ8B94xl1kz3Ms+dp5t2C5winSXmMz8t+eM9hqUlPHzAY\n6Jz0VNS2RAdfx4wnniYxmqkLppP45tT2w5MahaNZu15fuI4S5VoPGFA//p0/Pp9ukKczGBhLditl\nY1zPbHVgXbpJPhW3zR7a5M9v3vDmzRv+v5dJY/PMWo6Kcv0dkwG61V1+f79HsdaiN0p7Xe9RL5Vo\nAiYCWB/wsOj3ZqDrdJUcnz+cnlPsIZEIGZ0As4/kesxI8/o+7z9laXQ0dN04QqmW+8yHXWN/FWdk\nnahvusmLbv2ZN2/e8ObN//AiacwI1Y5LqJdmn8XrHyHE9Qx0DbVUojwaRXXapgvX2g9vRuX2V9YD\nFqBD+bh8zdNRxj/zknpG3J/T/lTN6E9Z7NZrrppYvD8n7s91+l1uf+xsM+zMUZm2ZsRWXeWYL0d1\nAJzxKP65Xe/vv/1+sH9Op16ioTVpjDa/uMjuS5MMTS7NcXsjWMmejb0EfJ6x0QsLHn8YCsXTqwle\nORJ8OYtnmc2tDv/dmXEfsNlF6sULBp93ySkqub3/ktub8R62pYc7wvLQWYyOfadsIxWZf3vF6fF3\n4Gb9p+lzq6FH4ePvfKnrNApV2iEntVyfzvB8g7xJdqLrMbxmaN8gn4q7Y/Gn2UqrvM80ye9/we3a\n4uLPP28Zv7EcMESz2KCnDthXSlPXgJXAyjLBG634EYuat1TeZPWR3tyeKMPW4AovNwZ82ivSrWX4\nUJsus67oM7bXps+4n2QmkNoi1XxPVi3w5cDDy83I/AHgBesf8bjM29BLNk27O5dtfGi2xokELitf\nYysp1UMOsx62U9O3Y81ynXrmqu8qt3Pcjss3p/UQC00fLzwvHV3p1/yU0Bfuz4n70qF+jX6XxZNg\nbUVh56iBkt/l9/xkeTQ7oqwkr9iI8ztvvx9scO9KvOZPngqVcpW60kTpGHdWuHwBApEIiYgP64V9\nDyweH2FTjvxwgJkk/guldcntI0iJGsOxTdW+jiO8ylq9yU55+uB705KP1Vc/E6kVKZZr1KtNeoDN\n6cPjCxCWXTq/mi24xsvgZVecH3/niC4TmZnmdiKJGNl6Dq2Vo6r+yrO//EKgWqBWUVEaRrqZHR4C\n/hCReJSg0yg6N8mn4i6Z8SXXSdXfkVUrHBz68GzFsC2cBk4Sr3/FXS1TqdZpNBW6mrGzri8QIBJJ\nEvFJmf3WHJ4QgVCYeCyEY6rFNuOKPuOXQJRKsUSpUkPpaDdLM4uH5HqKxh9HqOVdMj4vG9H5Df/V\n9Y8Q4iZsTh+BcJxkYlaZn2Syh1ldr6N8LlPPHJD3vmT5BlNxl9cz4r6YHR6C/gjxVBzvdZtfS2Dh\n/py4L9ftd5nxLb/kR0+B40JlIrZatM6A77v9Nr158+aPt2/fTjz45s2be/o64luSdH+aJN2fJkn3\np+liug+Hd3R4sHhQTBd2fZby/jTMquf/9re/3dO3Ed/K27dv+etf/3r2bynvT8O8fp0sRBFCCCGE\nEEIIIR45Ce6FEEIIIYQQQohHToJ7IYQQQgghhBDikZPgXgghhBBCCCGEeORki0ghhBDiiRjfdEkI\n8f2TMv/9u7ixmnjaZu6WL4QQQgghhBBCiIdPdssXQgghhBBCCCG+E0v9fv++v4MQQgghhBBCCCFu\n4DSmX7LZbPf8VYQQQgghhBBCCHETpzH9zA31Ttfsi+/bxb0WJN2fBkn3p0nS/WmSdH+aJN2fJkn3\np0nS/Wmat2ee3HMvhBBCCCGEEEI8chLcCyGEEEIIIYQQj5wE90IIIYQQQgghxCMnwb0QQgghhBBC\nCPHISXAvhBBCCCGEEEI8chLcCyGEEEIIIYQQj9zMo/AehgHdeol8qUK92qQHmB0evN4AsViMgMeK\nGRiqx/z93REmQmz9aZuQbd7bqWT++55sa0B0689shK1Tl2i1ff75qQhAeONXtqL22e910qZcKFCq\n1FA6GmDF5fPiC0aJRwI4lmDYr/D5X7vUGM78vNPvDbD2wxsSnpv9Sk/R+G83zmR14guEiSfjBJ1L\nV14/bjwNTloVCoUi5bpCVxu9r9dHKBon7HfSOv4/3mdOrvyekq6343rprVHa+Y29io49tMkP2xGm\nS/q0Rcr++ffwsP7TD8Rdk8/3Kzv8a6dydV0kvo7eo1bKUarUqak9ABweH75AlFg0hNtmZlY+6GQX\nL7dxrldniNtwnma+9GtepLxzZx9Oy5rZlOb1/6ZwTzyr062XJ/oODk+IQChMPBbCYZl8L2WUL2a/\n1/R3m+c69Y1Y1Pzf3ezwEPCHiMSjE+09nKfpRTanj0A4TjJh5IPhSZ0vv3+i2B/OyXMald137JR7\nuOIveL0ewDL1ruKmxvvJF11WZs9MtQV2vKEAoUicaNA5I60Wiyvm5Z9Tl9cVYq4FYqdxfaVErlym\nPuqLmx0egv4I0UQY/8WLAWhz/Mc7jloDLNZlXvy6gneqEVmsj3hZ3jw1L5Z8CB5ocD9AyX7gfaY5\n+WhXpdFVadZ1Xv6yines5A6pcpxXCKz6ZnYIuuVjsq3BJZ/Zo1qsnP2rkS/TCqdwX3izYa/C7rtd\nKtp4gmu0lSptpYpm/pWt2JxBAXGnhlqHRilDo1Qisf2KtdD106Fb2eW/O2W0i+9b7aBUe1h+eSGd\ntwfiPL0LxLZ+4Fn4puVusbJ/TiWzn8XzMoVbenrflq6S+fCerDpZl3dVha6q0NJtvJ7TBojHo5k5\nphZ+Qdgx40ldIXdYm/m64YnC0eddckp/4vGuWiWvVinkfKQ3t1n2P9Cuj1jYoKtS7apUCzmCqS02\n074rA+9+R6GYUSiXo2y/3CBgD5BMBSju12bmOb2R46Dcw0SA5YQE9t/SVWVWa2TY2c2ijHfW6NGs\nFmhWC+R9y2xur+A9e9n14wpxe64VO+kdigef2C91J95j0FWpdFUqhSzhtRdsJNwTbb2uVMmP4jxd\nO6ZUS+B9oMH3XXuQLdywXeRgVABD6VesJjxYTUMGWhelVqQyCM4sgK3cEaXI9Iza8KROLlu/4jNr\nFOvno8Mn7QzlRhx3cPwn0qnn9qloQyyuOBubKfwOC6ahTq+lUC00cAYksP+WzmbPhgNO+grHe/vk\nlB6Fz1n8f9kgsDTn+ln0OrndChrgjW+yngrisJgY6D1aSo1iw4bPAdbUX3iTOn2RSubv78kOB7jS\nr/kp5b2zv1XMS+8+pZ0sQf90ei9isbI/6UTNsPvFzsvNCDJB/+2opQOy6gATAVZerRNzWzExpN9T\nqBeKEJof2PuuUW6H6vn/ywz9tzekznG+TmDGTKlaypDvzxqob5P7+JGcOgA8JDdWiYfcWBnS71Qp\nHGXIKwpHHz5i/vEVifmjd5eSGfr7MfG7D3ROtBbFw32Oql1q2ffsLP3Ii8TkXOrEDKuu023m2N/L\nonRLHGQDeDdCOCLLpIoNsq062WwV32ZolLZtCpkCGuBLLxOcNdAkbs34LOhA1+m3ihzuH1HrGmXW\nMrZabtjO8+lDFhVY8sRZW0sSdFoxodGqFsgc5VCUYz59NPP6VQqn+WZxhczQ35brxE4alS8f2S/3\nACuhlQ1Wol5sFhMDTR2V+SXcbvuFtl6nXs5PTMzVcmU64STOr/z2D3mGfp4HOcGhdVTagIkQ4YgP\nu8WM2Wxhye4mlHjG9vK8AEoll52cdYUBzUKWYn/+0goY0KjkaQPWQJp01PhZqsUqk+P/HVpF433s\nwTAhlxWL2YzZYsXpC5Pa3pCluPfFZGbJHmBlLYkLGFKi2bx6Ce64YadNcWikbyAcwWW1YDabWbI6\n8YeX2d6QDt2DMSO9a5ND+AtatOxP65R3yZR7N/hMcTMaHbUDgDUYJuyzY7GYMVssOFxBEs9eSBD+\nHWkXMpQurNAY9iscH6gzr++WMhypA8DNyutXrEa9Rt/BYsHhibL2fJuk2wyo5DLlK8u3eMDMFpbs\nPpa3X7IRMYKCxkGB+mVNvsWCI5BmJWlUEv2SQksHzB6SK3GsQKf8hULDyHP9yjFH6gCzNUk6Mf8W\nEXH7zBYLDl+S7ZebhK0mQCWfr2IMwfcoHmWMwN61zMuX60Q8p22BHW90lefbKVwYg/DZitFG3zyu\nEF9v8dhJVwocjPpV0c0f2F4O4Djti4/K/M8/vyTpnZx8GXarlEoDwEoyPUr/Vo6actmK7e/Xg6yv\nLEtGKg+pkjnMUlE6aPNvdZvQqx6eVc4Aw26F40zr0tcMTxpUckZTH4jEiAVjAPTrRWrt8SutWH0m\nADrFDF/yVdo9naeZdR6oJSt2jDTSBpcN6Mx+7Wn1XszsUay16OmSug/aWHoPr5nccJ2yP1tpd4e8\nKnnk27BgtRlp3a9lOMyWUToa1y3m4rFokcuOB+EDGvmjOfdAajQbCgA2f4zI9I2WYPGQSAaNq+sV\nmt3pS8RjYyeSTFxrQN9mMwYDhmicjPqVFn+SlbAF0ChmCrTHbv0IryVlqfY9MdnDJJaNefPTwZhh\nX6VRN9pcXzw289Y4izdOImw80aw06PN1cYX4WovHTq2mMUFrJkl05q21dpzO6URv1Yo0GGKxxgmn\ngoTdo713ynWeYjI/yGX5Fn+cjUiVvXKPTjXDTjUDgMMTJRQLEQsFsF9IWxMhEskBuVydwmGO4A8p\n3Gadej5LgyG+dBpX9pj8cDo79WolysMhJqKE/Fas5iBJW5Fcv0WpohB1nS71tBNJL1NuHKFqCoUD\nhcKBsbFXIBQlEokQ8kzP7ZZ2/klp5/Z/JzHDiUZv1PkzmaafPnj3loMLj50uyzU5wqTTJd5nmvSU\nEvtKCQCbM0AoGiYSieCWqfuH5Yr0vsriZX9SenOLzuEuFU3l6NMeth+2kEnju2bGH18nXN6lovWo\nZHapZADs+KIhoqE4wYD91u+LvazOEHfDnkgSrBbI1/fJVIJshK0M20WyuR4mQqTSkMlUx17Ro1c1\n6oElr3PurTJWhwsrFTQUtOst7Dr/pOou/3y7O/GYbKJ5f0wOFz6TmfZwgNLpwSW3UwH0+6errUyY\nz9oMK5HlNMXKAap6yP4HD2p/gNWzSvKRLcf93jidXkBlQJV2dx3vsHc2wOd1zbsN1orTtQQVnRNF\nQwNsN4grBsMMf7zNTL273Kp1XYvGThq9jlExW0MuHItOPw8UqnljNsaTDODGjSXu52ivRq9Uor4c\nmr1/y4JmxXAP/fasBzlzD3aimz/x49YKEc95inTVEsd7H/nPH3vUZ6yp88RSpNxmTtoZcuUeulog\nU+hhtsZZjvvndPraVAsN41OjAWPzDbMHX2R019VxGWWsE2DxLPPq1xesxQM4Rqk61DrUCod8fvc7\nn3Itmcm/D8MBJ706R/tHZ0uv/DMGWi5nxpd6yS8v1okFnWeFtt+pkz/c5d3v7ylcuimj+GZO0/sg\nN0rvKEHfddP7emV/nMUR5tnzNB5goFXIZMr0brJ0QFyLyR5m6+cf2UzHOG8aeiilHLsf/837vSo3\nuTlDPCyWpSDJVWOWvXKQo6lrlI+Npbj+teWv6qiJJ0rX6dYzHBwat3XYQoGJwXqTK0YqaQSLqqoC\nVmLp+FffryseipvFFeJ23GXspDUq5PrGLVlBv7HSw+4N4sfEkDql2uWrt79HD3Lm3mDBHV5mM7zM\n5kCn01ZoFHMclJoMuiXy1TiBC5unnN47VfyQo5rZQ7MrtIHoWgr/Uo/mjE8Z310xHD7dvMeMP5zA\ndXxAmxLlWorA2NFYZnuAxHqAxDoMem0UtUr+4JiGptE4LKHG3IzP6Vx1FJ64uVmzamAlurU6cxbl\n6hFXM45AnGeBOM+GA7odBbVS4PC4jqYp5EsKEbfsmntf5qd36tqb6d2k7I+zeJbZfKby236NTnmX\nz42HOob7nVlyEUk9I5J6xuCkQ6upUDw+oKwOaZWOqSZCU5uqfg2ZpbkftvAK6+U6X+o5jj616Co6\nS6406Zgbc+3iMh079pAJKnDS7NDHO3P2Xuu20QATPqw37P089Bmbp2bYbaOMVmT6nJN19byZV7M1\nzOrqxTQ040+sEMwZx1/ZQ6vE/Q90/usJ6XSMnruZEC4HoNsJYqLGkGa7R8Izq33W6LSNkfkln3Us\nna8XV8iGerfr6thpHbtzCdDRqm26A7BeWQTPTzuy+WMER22/yREiGj2gUdJRc1WacfeMY/EW8xg3\n1Hugwf0AXTdjOY2gzBacniBOjwtT/3e+NHS0OfdCW/xJ1iJVdsoKisbYsqpZG19N7q6Y/fD/yM64\nqlGo0omOdlzUdQYWy9mSB7PdRcDuwrs04B8fchP3cYn74CT5/BWrwZsVRF0fYLGMUtdkxuEK4HD5\nWBr+i4+5E4baCQOQ4P4BmH3O/aJuUPZncMTW2Gi22Sv30DSZM75zuo5usZyVP/OSE2/Qicdppvfb\nHk1azLjzSjxKo6Wc9SOaigJYWU7HcZuZsRmeFa/fB5Ua/UaGYiNC+mJgpqvkc8Z91NZAGK/M/n8H\nepRz+bPVW17v1e2AxRln+9U6/hldBJPNjstkojYcYnHZZQDnng17FfLHxqyrLerDbQGTxYM/YKZW\n16lnCjTD08fX6c0C+YrREfeG/aOBvpvHFeIWLBg7+b0RrGTRyFEox/FOHS2u0etZsNuNdxo/7ajf\n2Odfb/enP1o7ptpI4r3ilp3vyYP8S4fdCp//W8axHCcW9GNfMhnHHTVLlBtGIjptc++qI5RK4S/v\n02Dp0mVVw3aJ49LVkbix42Icpw/qx79z2I2SiofwuW1YTCYGeodq2Rg5MlsdxozADe/nE9dzPqvW\no/Dxd77UO5SPy0SDNzj+YqCQ/c8+/ViKWMiP22bBxJCTXpVy2cgnSw6bBPb36DqzqMPhAF3Xp+89\nMlkwd69b9ucN+dqJrm/R606fvS5uX7e6y4fyEsuJOH6fA6vJxHCooZRKNAETgRvPyIqHx+JOkEoW\n+ZjrYQukiV/SOXNE06wUGxypGtkP7xnMOgqvNTomLz3rCMsBun6CzsVVAZbzgEA8DBNH4RkTN/61\n+NTqrfGZ12G3xMff9ml0CuQrUfwXV36KB2PiKDxtCHhIJEKjvped2Eqacv0AVcvx6cNg5lF4bWDJ\nkyYVHm2g+FVxhfg6g4VjJ4svzlqkzE65R2X/HcOT8aPw2lTzh+znh6y+fkHSa6Kaz7DA3sdUi1WS\nwdhEvX9pH/GW/vL78iC7QZ16iYbWpDHadOEiuy9NcuYuigaTI0x6rY6pG75kWdX5EVgmojyfcSY6\nusLBfz6S7xs7LsbdZmq5Pp3h+WYcF74Z0fUYXjMz9/MVd8lObP0ZzXe7VNRDDrMetlPTx9fMXtZt\nLLtZs9TI9btwtlHXJLMjSjo2/xxt8bD0a/v89o/pUdzo1q+E2tcs+77Q/HS3eEhtbdB9t0tFk5J/\ndzrUiw166uBss8tJVgIrt38e9WV1xmNbqvf4mPEn1oi1y7hmBuTjXCRfvODk8y45RSW3919ye5NX\nmKw+0pvbM8+4HwyPef+P4+l3Tb/mp9R5ppq1oR7IEt67Nu93ByvB1BabVwTrJkeU9S2F/+6UqR98\nIe95RcIjrflDMW/j6dMyO36rlcmV4PnLE3Z2syhqgd13hanX2X3LbG4bZ9zDzeKKebd1yAaa16Qr\nC8dOYCW8/gLd9In9Upfq0UeqU3cwW2m1egys7dHxd+Bf/ZGXyek6oFv8xG/7tdEJSLGJfDS/j/hn\nno3dWz0vbz7kjXUfZHDvSrzmT54KlXKVutJE6WiAFZcvQCASIRHxYb10Z2wznsQ2Ly65YvwILN/q\n9IgvABYf8ZSf/P7pjosvePaXXwhUC9QqKkqjSQ8wOzwE/CEi8egNlgeL22Kyh1ldr6N8LlPPHJD3\nvmTZt3h6WAJr/OUXP9VijUqzgaIaMwIOT4hAKEw8FsIhMziP3lBXblD2Q4Quec/xvCeLdu6Kk8Tr\nX3FXy1SqdRpNha52entGgEgkSeTamyqKh85kC/LsZXCxa5d8rL76mVi9TL5UoV412mipw78/N+l3\nOcKrrNWb7JRVsvtZ3K9X5Ji7B+qqMmv1p3n1S5RaKUepUqem9gA73lCAUCRONOicWGX59XGFuDFL\n4Hqxk8VJbOMXApESuXKZet1o680OD0F/hGgijN+xhJr7QgPjtKNEdPbgniOcIJFtkO+3KJUVoqtP\nY4tM05s3b/54+/btxINv3ry5p68jviVJ96dJ0v1pknR/miTdnyZJ96dJ0v1pknR/mualu6xJEkII\nIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGEEOKRk+BeCCGEEEIIIYR45CS4F0IIIYQQQggh\nHrmZu+ULIYQQQgghhBDi4ZPd8oUQQgghhBBCiO/EUr/fv+/vIIQQQgghhBBCiBs4jemXbDbbPX8V\nIYQQQgghhBBC3MRpTL8068nTNfvi+3ZxrwVJ96dB0v1pknR/miTdnyZJ96dJ0v1pknR/mubtmSf3\n3AshhBBCCCGEEI+cBPdCCCGEEEIIIcQjJ8G9EEIIIYQQQgjxyElwL4QQQgghhBBCPHIS3AshhBBC\nCCGEEI+cBPdCCCGEEEIIIcQjN/MovMegr5TIlcvU6wpdDcwOD0F/hGgijN9h/FlD9Zi/vzsCYO2H\nNyQ8F96jssO/diqYCLH1p21CtgvPqxVKxSLl0WfYnD4CgQiRZBSvdfLa8c8aZ7I68QXCxJNxgs5H\n+3M/KsN+hc//2qWGi7UfXpPwzBvD0ijt/MZeRceVfs1PKQvH795xpA6whzb5YTvCZDIPUI8/8O6o\nidWzyqsfkjjv/s8Rl7hYRs0OD15vgFgsRshznnpK9v94nznBbErz+n9TuBnPJ8O57x/deo5td4fs\ncHDp9xh/X3G7hppCKVehUq+hdDTAjjcUIBJNEg7YsUxcrdOtl8mXKtSrTXqAwxMiEAoTj4VwTF58\nli8usjl9BMJxkonJ18y7/pTkg8Wdtr8Xjf+GV7XRp+kxXl/PSyOjLQ4QiSSJ+KxTz599r2vWKfM8\n5bwwrz8Es8vWeF0c3fozG+H56WO4WTmf3W6f9wO+Nh8t1qYs8vd9Xy77XU777vFUfKxffZ4m88zu\no4FW2+efn4oAhDd+ZStqn//F9A6VYoFKtU5N7QFWXL4AkViUSMiL1WRcNqv/MPaJM/OPuEDvUSvl\nKFVOf2tweHz4AlFi0RAualeWHZhO97uM0y6rx07Nii0fgscXbeodigef2C91Jx4edFUqXZVKIUt4\n7QUbCTemW/6Mfkeh2FEo5rIkNl6wEnVeufRhqHVolDI0SgViWz/wLHxJRSNuWYtctkzoRQzbjGf1\nRo6jicbDRTwdJ/8hR696SKERIu0/T+Fht0LmSAWsxNJxCezv0yX1QKOr0ihlcEe3eb4Rmpn24jEY\n0C4d8GmvSG/i8R7NaoFmtUAuuMr2ZhKXBYYnCkefd8kp/Ymru2qVvFqlkPOR3txm2X91s9fvKBQz\nCuVylO2XGwSk2n70jLa4Q6OUIxd9xvZabDIIlDrlmzgtW9V6mpcvU7gtV79m3NeUc0095DDrYTvl\nvfGy1SvzkbiW0757rdpk84ctQl9V1/aoFs8HDBv5Mq1wCveMxNYaGXZ2syjaxKO0lRKHSoljT5yt\nrXX8Uvd/PV0l8+E9WXVykqSrKnRVhZZu43Xiuu95F3FaicT2K9a+LhM+CI8suNeofPnIftkYYQut\nbLAS9WKzmBhoKsXDfY6qS7jddsxwxfjPPDq1o4/sly58hhlO+k3KmQOOql3ye+8ZWH7iWWh6jO5s\nJGc44KSvcLy3T07pU9rJEvRvEHhkv/pj1q9nKNRCrAQv/uhtCpkC2oVHLf4kK+EiexWNQiZH2JvC\naQbQqeezNBhiD60S98sdLfdnTj1gNjEYdKgfH3GY7+INuBfuhF86mxL+H9Kj/71qNZC4Pf3qPh/2\nymiAI5hmfSWGx27BNNRoFg/ZP6zicHuwWwDa5D5+JKcOAA/JjVXiITdWhvQ7VQpHGfKKwtGHj5h/\nfEXiQm9vYkZG1+k2c+zvZVG6JQ6yAbwboYkVAk95Vva22MJbvAlvnf173kz+TU2k0XDAyclp3dCg\nXdrns9nG6/XAKF1vXqdIXrjceD050DXalUM+7ZfR1AzFRmxmH2q+ryvnAPXMZw4ci0+0XC8fnXuK\nM/SLmPhdRnXt7scsqlYhV0kSWp4sSdeZDR+2axTr5xM2J+0M5UYc94X+n9465tOHLCqw5ImztpYk\n6LRiQqdTz3F4kENzeHDKKN6tUEsHZNUBJgKsvFon5rZiYki/p1AvFCHkw2yD52/CZ6+5fNXWXcVp\nPQqfs/j/Mh2nPbb+3qOKUHSlwEHZmMOJbv7A9nIAh9WC2Wxmye5jefslP//8kqT35tGzruTYL8z4\nDIsFmzPA8vZLNsIWjM5AnuZlq3VNZpbsAVbWkriAISVqysVwUtwtjWKmQOtCOvUrxxypsxLPSiS9\nhh8TJ2qG7Ci/6WqBTKFnVE4rsuzqPs2tByxmlqxuImsv+fnPP30Xo69P1kAhf1BFw+jcvXqewu+0\nYjGbMVvs+JPbvPr5Z7ZSXixAt5QZlWc3K69fsRr1YreYMVssODxR1p5vk3SbAZVcpkz/ss+2WHAE\n0qwkjZa8X1JozV8dKh4D02nd8JyttBeAdiFDuW08LXXKt2G2WHEHAnhG6yqH15yBuZ1yrlHaOaTa\nm/nk5a7IR+KaLBYcgQB+kxGKDK64/e1yAxqVPG3AGkiTjhrvWS1WL+SDHuXMsRHYu5Z5+XKdiMeO\nxWI28md4lRevfuLlRgTbjZf/inMaHbUDgDUYJuw7/a0tOFxBEs9eXDtovus4rdmcf7vVY/GogvtW\n05jFMZMkOrORteN0ft36qEU+I5JYxgro2jGNS3PNyJIV+w0bM/H1TtoZcuWxllxXyB3W5l5vcoRZ\nThujx7VMjobWo5w9pg1408sEHXf8hcWlTsuoxbo8p4zCklXWST5mw7ZKuW/UrZHY7GXQdqfzbNa1\n2VAAsPljRLwzmjWLh0QyaFxdr9DsTl9ykc1m5K0hGicS3H8nzPgSy8RMJqBFTWkBUqd8OwN6Sh2V\nIeDB7bzOMPntlfMhVfZ3sl8xaDc7H4nr0xSFxnAAWAm4bn6z4/CkQSVnhPGBSIxYMAZAv16kNjb4\nMuyrNOpG2+KLx2beFmJ2uiSwvzUWrKMfs1/LcJgto3Q0Bl8RC911nKZ9zZd7IB7RAnGNXscYTbGG\nXDiuOSxx8O4tB7f1GXYnXkxUGdI/0blyjOREoze6ScAkFcY3FU8mqeZyVPcPqQaMpT1qKUO+P8AW\nShPjmEz1YsE3442niBU/UewXOPrUoq/qmK1xUvGb36snbsN5GV3yOmeX0YGOPgQwYbFIaj1GWq+N\nBpgI4XJelYY9elWjfl3yOufeimF1uLBSQUNBW2Bgvt8/HRA0Yb5Qbw+GGf54m5l6zWNbuvckWZy4\nfGZo6HRbPTRsX1WnSF643Oy+l5XYsw2iruu809eXc7NpmWebfQ53jNsCdr/Yebnpv86XODeVj9wT\nHerSzj8p7Uy+RDZcm/27APiXt1ieun0SetVd/vl2d+KxWUu1e7US5eEQE1FCfitWc5CkrUiu36JU\nUYi6fEbfrd8727TN67reSpx5ZV1cxow/vk64vEtF61HJ7FLJANjxRUNEQ3GCUxvjXuZ+4rRZ9Zix\nEbd34W/+LT2i4P4ROr2X4yBHGzARJXjJLr3i9jlCSVb6RfYqVY7zCoGExvGBCnhYTkUwH+dmvs60\nFCCZClDcr9FSVQDC6SQ+KTEPXr+2z792Kte6F1Y6YuLM6D7Qg0Oj3NtCAdySCe6Fyfwwfvib1Cni\nMhqNSommf/Ubb1hmxhl+xla3x/tMk075kGxgGxmDuX/NaoFq2EPUdZMB+TbVQgMAezSAcWeuB1/E\nSu64R/u4jJL0yX5X98RkD7P1s5NAoUChXETtAvRQSjmUUg53dJsXG6H76Wudxmn7R6M4LYTf8zDa\nna/xiLK6FbtzCdDRqm26A7Beow647Ci8a39Gr0NzNMJjW5oeb5o3Uh3dSknl8s0Z99BXKvs0ckd8\nbPVQGOJLrxJ1mbls+yZHZJlUsUG2NWDJlSYZkfst79/X1QPicbDaT2ffqrQ7A0K2yxLZjj1kggqc\nNDv08c6c1dO6p6sBfFgv1MPzZmTM1jCrq9MDPBLkfRtLVuOXH9KkrwEXNlXStRssn9Q7tBVjtZbD\nbcf6lXWK5IXLTfS9TjvSO5/JKTn2vjj44UVswU7915dzgxlfapN19Xe+1DWKO5+pWW+wPn8qH01u\n4iwb6s02+bsMONE6VA8/sV+ucvDBgePXFcbvuFhkkF1XquRHGyuFw6ebG5rxhxO4jg9oU6JcSxGI\n2sFmJ4iJGkOa7R4Jz+L9uquOwhOXWHIRST0jknrG4KRDq6lQPD6grA5plY6pJkLEF1rJc9dx2urU\nkavw+FZiPapusdtrFPABOQrlWbuhaPR6X7MhxyKf0aOcPz67P88/676vMSarE380zfOff5Zj8O6J\nyREmveIBVBRFW3x5vdmO3WGsz7E47FwaX4hv5uoyen3RrT/z5s2bif9+lVn7e2NyeYiMClwpP3tj\nLK3bw6jtrXj9PgD6jQzFxow2QFfJ54x9NqyBMN4F9s2wOOM8/+lrj2YSc+k64ynV76nT14w64qCh\nti+U9UGLZm20TNtlX7CsDlDyxxSHQ8BN0Gd00++iThEzjDavisWMpfBaXaG98B7Dt1nO7cTWnxG2\nGnlLu/Y+x7PzkbguY4PCaDQKgK6VaHWu+x469XL+7OSj7If/x9u3b3n79i1///2A09vtG4UqHcBk\n8+APGG1LPVOgOSMmH/Z6l2+6Kq5H1xn/mc1LTrzBOBubzzAWtbe4zl6Ktx2nGZwkn//03cRpjypc\nsfjirI1mTyv77/h8XKer6QwGA056KsWDz/z73+/JfcVOhxZfkmfxGZ+h6/Q7dY4/fxiN0FkJryeY\nlWfWfjgPEP73zz/zciNF0ClT9vfHjCeeJjEKFoKyvP5Ru7Qe0Do0WwvsliYeNrOPxJqxTK9f3+f9\npyyNjoY+GDDQezRLB3z67d98zjbRAUc0zYrHDGhkP7znsNSkpw8Y6DpdtcTBp8/kWqPjs9KRmceZ\n/XhaZ/+ygR8TeqdAviIbZd0JXSXz4T98yY/SqVenUjW657aYm9OYzGTzEQyPdr0++kJO6Rl5QGtT\nPsqQ6xtpGg1ecd/jcMCJ1qJ88ImdTBMAVzxNZDRTJHXKNzIccNKrUywaS6hNJjvWC6MyQ/0EXden\n/hvw9eV8nMke5tnz9PWW5F+Rj8R1Gb9nqVQCwIQX2zX7ZsN2iePS1bPmJ60cNWUA2Imkl/EAAy3H\npw9fKKs9dH1gHNVYP+bju9/4sFum//j3VXsQutVdfn+/R7HWoqcb9aqu96iXSjQBE4E5q2xmu904\n7VfWAxagQ/m4zLXHlh6oRxbiWAmvv0A3fWK/1KV69JHq0fQ1rVaPgXeJm+1dZyG48oJng8s+w05i\n4wUr1zqfVdwri4/keoxO2UZKltc/covUA2BxL11jkxbx0NhCz3i5YebTXpFuLcOH2vSyeUdLpad7\ncVlcJF+84OTzLjlFJbf3X3J7k9earD7Sm9szz76euM4RZX1L4b87ZeoHX8h7XpHwLLaJ2uwzecVF\nailDVu2D+l9KE2sjPcSjvrFyayWysonS+ky5W+fw/b85nHgnK8GV1Zkbs122+ZUr+oztlcDE59y0\nTpG8cLnLNjP2rYZwM7mcvbz/H8r7k9ed/5a3V84BLJ5lNrc6/HenzLzJ++vlo3PzNo57yJtwfQvz\nfhcAZzw6tQfDrA314HSJfBJtdPydiSjPZ5xPjq5w8J+P5PsapXKduC+Exb3M85cDdnazKGqB3XeF\nqfdf6qp0+hFs0l38Sh3qxQY9dcC+UprxvJXAynVPobrNOM1YxdN8t0tFPeQw62E7Nb2yd1499lBv\nv3lkwT1gcRLb+IVApESuXKZeV+hqYHZ4CPojRBNh/A7jz7rxoNvpZ8QqlIpFyqPPsDl9BAIRIsko\n3oeXluIKtuAaL4P3/S3ErbikHvB6vUSuvQOreHjMuKLP+CUQppSrUKnXUDoaYMcbChCJJgmPpbFp\nycfqq5+J1cvkSxXq1SY9wOEJEQiFicdCOBbMEI7wKmv1Jjtllex+FvfrFbySmW6NJ/GSP7kKZPMF\narUOGna8oRCJ9DKhC6cjmOxBNn/8iUA+T7FyIQ/EU8QW3KTWZHXiCwSIRJJEZr1G6pRv5PppN+42\nyzmMl/XFbse4Mh+Ja7Li8gWIJJLEgs5rla/hSf3s+Dvfanz2nlYWH/GUn/x+jV6pRH05RNgBVn+a\nV7+EqRQLVKp1amrv/LvEokRCXqxyutUtcJJ4/SvuaplKtU6jadSrX12ObjFOM9nDrK7XUT6XqWcO\nyHtfsvzIl/ea3rx588fbt28nHnzz5s09fR3xLUm6P02S7k+TpPvTJOn+NEm6P02S7k+TpPvTNC/d\nH9U990IIIYQQQgghhJgmwb0QQgghhBBCCPHISXAvhBBCCCGEEEI8chLcCyGEEEIIIYQQj5wE90II\nIYQQQgghxCM3c7d8IYQQQgghhBBCPHyyW74QQgghhBBCCPGdWOr3+/f9HYQQQgghhBBCCHEDpzH9\nks1mu+evIoQQQgghhBBCiJs4jemXZj15umZffN8u7rUg6f40SLo/TZLuT5Ok+9Mk6f40Sbo/TZLu\nT9O8PfPknnshhBBCCCGEEOKRk+BeCCGEEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdO\ngnshhBBCCCGEEOKRk+BeCCGEEEIIIYR45GYehfcYDPsVPv9rlxpDolt/ZiNsnXxePebv744AWPvh\nDQnP9HtotX3++akIQHjjV7ai9unPufR9VDJ/f092OLj0u5pNaV7/bwr34n/ek6dk/837TA8zSV7+\nzyreiWEolcy/3pPtD3DEX/DjegDL2LPDdp4/fj+gg4/NX14Rdpw+o9Otl8mXKtSrTXqAwxMiEAoT\nj4VwjL8JoGT/j/eZk6nvZnP6CITjJBPjr9Eo7fzGXkXHHtrkh+0I5zlygJL9wPtME/Cw+voFSe+j\nLXoPxPnv7Yq/4PWFPDBeNl3p1/yU8nJ5Gk2+Jrr1Z9Ic8K+dypXfZFb9I77eSatCoVCkXFfoamCy\nOvF5fYSiccJ+JxbTzdqBea+ZV95PmU1ptjbbfNqpXvndJU/cnqvS5dTF9vmm7ftVeUrcrUXK4az+\n1CLpDcBJm3KhQKlSQ+logBWXz4svGCUeCWBu7Ei9f6cGdOuliX6Y2eHB6w0Qi8UIeKyYWawPf9Fp\n368NuJdf8XrFNzWDeV6+l1h+/jMrwcm+2MXPjdvO64PLzO5TPHXnfa6LHJ4QgXCc5bgPq8l4bLzu\nnWd2udOp7P2LnZKOiQCbv7wY6/dPG2oKpVyFSv20DrDjDQWIRJOEA/ZRX3Lx/uJ5H/PheMIz9z2q\nxfMKvJEv07o8RhffkNcfwwoMyNFoTibMsK1S6xuP9QsK7Qvp1lIqtAGrP4x3VMCHJwqH7//Dbx+/\nUBg1KABdtUr+8DP/+e09x42rO5AA/Y5CMfOZ3//Yo967+vpuZZ+dTBOwEtvaksD+lrULexxWFkgI\n8Wh0K7v8548dMiUjsAcYah0a1QJfPh4uVO7EUybt+9OyWHoPexV2/vMHu5niqFMPoNFWquQPPpKp\nSsVyt4yJjov9sEFXpVHKsPspR2s6Dlz4vRuVPO3Rv9rHBer9y67XyO9/QZL8fnTVKvmD97z7kP2K\nNDcMu1VKJaPAD6lTrDSZXd0PaJf2+e2f79nPjdcBPZrVAvsf/80fn3K0v/L7PARPNsoYtmsU6+cp\neNLOUG7EcQev85N4SP/v/5A+fc8bjDSK2UwuDxGbmVx/QF1tkfafj4qdBu9wGvyn8fpPx6naKGXj\nWWfAjW30WO7jR3LqAPCQ3FglHnJjZUi/U6VwlCGvKBx9+Ij5x1ck3JNjXhMzBbpOt5ljfy+L0i1x\nkA3g3QhdmDU+p6vH7O6U0bASe/aKtfCc2QTxFTSKOzs47a9IeG5vvNIW3uJNeOvsMy4fxRW3Rq+T\n262gAd74JuupIA6LiYHeo6XUKDZs+C4Zlf9aV620ehM+/T/JE9+CL/UX3qRO/7XYbMnttO/iPl1n\nxeNi6a1Tz+1T0YZYXHE2NlP4HRZMQ51eS6FaaOAM2LHZpN6/K8N2kYNME4BQ+hWrCQ9W05CB1kWp\nFakMgnjndaaueu+TBpXceTQ/pEqx0iKUnJ+DBlqF/R0n9pcp3HM+12QL8/y80qdfMVZ2mAix9adt\nQrabfd+nZrz8DHSNdjXDzl6RnpLhqBjg5YV0us7KmFatSGNstr+ZKaHEvQQuVPf96j4f9spogCOY\nZn0lhsduwTTUaBYP2T+s4nB7sN8wDz4kT3Tm/nyEzxpIk44aP0O1WOXSgT7x7Zg9+MJGunQLCq2z\nJ86D91N19fzZYbdFvTUA3AR9RmXRLWU4Uo3HVl6/YjXqxW4xY7ZYcHiirD3fJuk2Ayq5TPnyPGCx\n4AikWUkaIzf9kjJ31FFXj/n06QgVCKS3WYs5n2qB+wZUsvtfPwIs7t+w06Y4NBrqQDiCy2rBbDaz\nZHXiDy+zvSEdbHEZad+flkXTu0OraNQr9mCYkMuKxWzGbLHi9IVJbW9IoHbHtI5KGzARIhzxGf0w\ns4Ulu5tQ4hnbyzdf2tyrlSgPh5itSdIpo++n5qo0r1ixc6JmOMzNm+kVd8FsseKJrrISNaLoVkWh\nc9M3GyhU80ZMEEqniZhMDClRrvWmrssfVNEwBhpePU/hd57WAXb8yW1e/fwzWynv3Mm6x+RJxhrj\nI3yBSIxYMAZAv16k1r7sleLbMeP1RwHQtRrqKF2GbYVKa4CJKKurIWAy+O8pFZqAxRrE4wLQaDYU\nAGz+GBHvjCxv8ZBIBgHQ6hWa3au/nc1mzMAP0TiZEVAOehX2P2VQNHBGNnmW8j7NwvYNnbSP2f1y\nxeCMePiWrJx28YqZPYq1Fj1dul5iMdK+Py2Lp7cVq8+4ubdTzPAlX6Xd0yWo+4YsS8boyZAqmcMs\nFaWDdisD8m2qhQYAzniQ5VAEF6Brx1QXuN1SyX7mQG7t+8YsWO1GeRy0Bzcuh1qjQq4/MAaMonFC\nMaOn3ShUJwYMhm2V8uh23kgsxKxxPLvT+V0E9vCdLMsv7fyT0s7i15+O8JmIEvJbsZqDJG1Fcv0W\npYpC1DW9CYf49iweHzFTnuKwRU1pEXe56al12oA95CMcHNI4rNHQaqjtFG6XRlNRAXDEfaPlfD16\nVWO0fsnrnFmgAawOF1YqaChoC9x63++fNgQmzKbJ53S9ztFOlYo2BDwklyNzP1d8PVtonRVXhd1M\nk055l32Hne2U6eoXigfJ5AiTTpd4n2nSU0rsKyUAbM4AoWiYSCSCe8bU/XXbAfF9kvb9+zAYZvjj\nbWbq8Yu3PC6e3nYi6WXKjSNUTaFwoFA4MDbqDISiRCIRQh5ZE3SXLP44G5Eqe+UenWqGnaqRvg5P\nlFAsRCwUuNGSaF2pkh+t2IwGvZhcNmKBDF/qOtVilWQwNrMPFlnfxF7eJ6ue39oX/6q/UCxOR+sZ\nfXPT0vRM86z2fPrWmPO9NuzRMH7bEoQSWAtZtFaOmhLH6TPeWeu10TBWjbic12sBetVd/vl291qv\nuW9PsI07H+GzRwN4lzCWgEeM7NI+LqMstq+auGsWL4HRKFyn3qJPj0bVCN59IT82h4+g3wwYwf+w\nr1CrDAArIe8dnU2g63TrGQ4Oje9hCwWmAo2TRoWKenr/j0ruWGaT75IJC/7UJhsRYzVFPXNIQZ1V\niM0sfRfDmd87M77US355sU4s6DxryPudOvnDXd79/p7CHe6OZgQVb3l74b+8emcfKW6NtO9Py/XS\n2+JZ5tWvL1iLB3CMKpah1qFWOOTzu9/5lGvJTP6dshPd/Ikft1aIeM43TumqJY73PvKfP/au2ARv\nFp16OY8GLLnD+FzG5/hDPuDyFTumJT+prQ3CVhOgkj3IMbPrIG7VQNdQi184KBnLNtxxHzfZjWp8\nr41A0IcFY1IwYjMDGqVynad6p+Z30dW96gikcecjfBAOnx6fZcYfTuA6PqBNiXItRWDeMSriG7Lg\n8YehUERr1GjUTdQaxvKbgNdIb3/IA40GnXoL1d6ixhAzEbxnG6vZsYdMUIGTZoc+3pkjuFr3dFTP\nh/VCqZg3g2C2hlldnX3/r9kaJh7uk8uPzybL0vy7Yye6vkFb+Ui+r3L0aY+lqSMqLVhGZ66cNHuc\nwGTa6SdoVxx3I74VM45AnGeBOM+GA7odBbVS4PC4jqYp5EsKEXdgojxdpx0Q3ydp378fi2yod5P0\nNtsDJNYDJNZh0GujqFXyB8c0NI3GYQk15sb3vazNfZAsuMPLbIaX2RzodNoKjWKOg1KTQbdEvhon\nkFh8cmZ8p3RfLIRz9Lg9GCViqlMeXr5ix2QP82yzhfIhh6Zm+LwnqzfuwrzZ7yVPmtWE0Tce731d\nvaHe+V4bZpKE/KOOu9lHKOEid6jSK5WoL4cIO8BqP12dW6XdGRCyLd4bv+oovIfouwjuF3c+wgeQ\n/fD/yM64qlGo0okmzyoJcX+W3D6ClKhRJ3vQoccQW8CPZxSh2z0BXDRoN0oc6sbUmj0Z4HzDeyte\nvw8qNfqNDMVGhLT/QqHWVfK5mnF14Pz4vMtYnHG2X63jn1H3mKw+Vp5vkPBoOE/es1fuUc8ckPe9\nZnnWPf/idlh8pLdTqO+OUDXtrJyPczj8QIWBptLugnMsrfWWSm04BKy47NLA3yddH2CxjMqKyYzD\nFcDh8rE0/BcfcycMtRMG3M3Ss+vs0i0eEmnfn5YbpLeuM7BYzuoNs91FwO7CuzTgHx9y53voSHB/\nRwbouhnL6e9rtuD0BHF6XJj6v/OloaNdc3+V8Z3Sq/v/5u3+9DXt4zJK0je1e/opiz/NVlrlfaaJ\nps3qOYi7YAuu8mIziesG5W18r40BOf77/3LT11CnVGsRTronTuAq5cvE/NO3amjdHhaH/buYhPse\n/oaFDdsljktXL9I4aeWoKdMVjH5ygq7rF/57mKM23wuTzUdwtGt+r2vc5+4N+c8KpcnlIzza6V4d\nLZsNel0TGdsRTbPiMZbpZD+857DUpKcPGOg6XbXEwafP5FqjY/LS0/fHm01pfnzzhjdv3vC/v2zg\nx4TeKZCvtJjF5o0S9pgxZpO3SHmMWweyn/fkTNU7ZvEss7k1fzd1qzdIEBND6mQOszR7OoPBgH67\nwuHRMRpg9STxyzGW92egkP3P7+xkyygdDX1UVvvtCuWyUX8vOWzS/xYTvrZ9n/me+qw2XzZhewiu\nn94D6se/88fn043cjLr/RGtRKRv37ZqtjqmVe+L2DLsVPv/2/mwzw9O6vVsvUW4Yaem0Ta+tnNf3\nHp7UKBzN7odNfO6s3dMnmPGN3donbp89tMmfR/3o/+9lEivQr+Wo3PA+qVbpmPLw6pWWZycmmH0k\n1kLG59b3ef8pS6OjoQ8GDPQezdIBn377N5+zze9iKf8TqsbOl3CYiPL8LxvTo3i6wsF/PpLvG/dq\nxH2hiSAx8/H/uLg4W2Z57tr5zDsYy+aD3vEK2IUv7IKWEdmbieP3XUxYF8kXLzj5vEtOUcnt/Zfc\n3uQVJquP9Ob21Bn3F5kcUda3FP67U6Z+8IW854qz1S0eUlsbdN/tUtEqHHzx4Xkxe3MXcTsc4Wds\ndXu8H52nO85kC7O6rdD+XKRby/Df2mSJNll9LK/FZVbvHulKjVy/C5ldKtN3w2B2REnHfFPL+MRT\n9vXt+yzl/f9QvjATKOdbfxvzboczfv9NzNdNb7eZWq5PZ3i+kdskO9H1GLK47u506iUaWpPGaDPD\ni+y+NMnQdIA9r++9+UwdBXhu1n/6kbjr4it7FD7+zpe6fraCY/7CTGMyptd9T1aV4bu7NL5SIr//\nBbdri4vJPm+DXFf6NT8lh2fH3zmi2/y4EZoa7Ncbh/z2IYemHVNtJPEGl7CFnvFyw8ynPaP/96E2\nXQ84Wio93Xuj1QQPyZOpxsaXcPhW47OX51h8xFN+AONejQWORBN3z+4Nnh2NZfVPL5t3e4NnM7W2\nqA/3jEJpWvKx+upnfnmxTjzkPdu8w+EJkVjd5udfXrHsX2ysyxFeZS1i5/Rs9eYVw3wme5j0Wvhs\nxHA/K2eq3i0zvuT6aMXENEfoGT/+/Jx01He2qZLZ4SEcX+fVT1cM1og7Zwms8ZdfXvAsGcPnOW/x\nT8vqTz9uEJAJFjFG2vcn5qR+/fTWAjz7yy8830gS9Z/3AcwOD6H4Ks9//pG1GYGluD2uxGv+9MMW\nq/EQPudpr82KyxdleeMVP7xMzey/zTTUaIw2U3REl4lMBfYAdiKJGFaMFRyVxhU9L4uH5HoKWbh3\n1877aAOtwsFhkf41RupPj78DN4nEdGAPxskMqYDxTLVYHW1qbcYVfcYvf35l9C/O8qAdbyjOsxe/\n8uPzm90m8NCY3rx588fbt28nHnzz5s09fR3xLUm6P02S7k+TpPvTJOn+NEm6P02S7k+TpPvTNC/d\nZYpKCCGEEEIIIYR45CS4F0IIIYQQQgghHjkJ7oUQQgghhBBCiEdOgnshhBBCCCGEEOKRk+BeCCGE\nEEIIIYR45Gbuli+EEEIIIYQQQoiHT3bLF0IIIYQQQgghvhNL/X7/vr+DEEIIIYQQQgghbuA0pl+y\n2Wz3/FWEEEIIIYQQQghxE6cxvWk4HP5x+mC/30eC/adH0v1pknR/miTdnyZJ96dJ0v1pknR/miTd\nn6aL6S733AshhBBCCCGEEI/c/w8UHC6PGvQZzgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Excellent! Hope you enjoyed this one!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 15-PDFs-and-Spreadsheets/.ipynb_checkpoints/00-Working-with-CSV-Files-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Working with CSV Files\n",
"\n",
"Welcome back! Let's discuss how to work with CSV files in Python. A file with the CSV file extension is a Comma Separated Values file. All CSV files are plain text, contain alphanumeric characters, and structure the data contained within them in a tabular form. Don't confuse Excel Files with csv files, while csv files are formatted very similarly to excel files, they don't have data types for their values, they are all strings with no font or color. They also don't have worksheets the way an excel file does. Python does have several libraries for working with Excel files, you can check them out [here](http://www.python-excel.org/) and [here](https://www.xlwings.org/).\n",
"\n",
"Files in the CSV format are generally used to exchange data, usually when there's a large amount, between different applications. Database programs, analytical software, and other applications that store massive amounts of information (like contacts and customer data), will usually support the CSV format.\n",
"\n",
"Let's explore how we can open a csv file with Python's built-in csv library. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"## Notebook Location. \n",
"\n",
"Run **pwd** inside a notebook cell to find out where your notebook is located"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'C:\\\\Users\\\\Marcial\\\\Pierian-Data-Courses\\\\Complete-Python-3-Bootcamp\\\\15-PDFs-and-Spreadsheets'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"## Reading CSV Files"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When passing in the file path, make sure to include the extension if it has one, you should be able to Tab Autocomplete the file name. If you can't Tab autocomplete, that is a good indicator your file is not in the same location as your notebook. You can always type in the entire file path (it will look similar in formatting to the output of **pwd**."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data = open('example.csv')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<_io.TextIOWrapper name='example.csv' mode='r' encoding='cp1252'>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Encoding\n",
"\n",
"Often csv files may contain characters that you can't interpret with standard python, this could be something like an **@** symbol, or even foreign characters. Let's view an example of this sort of error ([its pretty common, so its important to go over](https://stackoverflow.com/questions/9233027/unicodedecodeerror-charmap-codec-cant-decode-byte-x-in-position-y-character))."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"csv_data = csv.reader(data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cast to a list will give an error, note the **can't decode** line in the error, this is a giveaway that we have an encoding problem!"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"ename": "UnicodeDecodeError",
"evalue": "'charmap' codec can't decode byte 0x8d in position 1835: character maps to ",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mUnicodeDecodeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdata_lines\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcsv_data\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\encodings\\cp1252.py\u001b[0m in \u001b[0;36mdecode\u001b[1;34m(self, input, final)\u001b[0m\n\u001b[0;32m 21\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 23\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcharmap_decode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdecoding_table\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 24\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 25\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mStreamWriter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCodec\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mStreamWriter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mUnicodeDecodeError\u001b[0m: 'charmap' codec can't decode byte 0x8d in position 1835: character maps to "
]
}
],
"source": [
"data_lines = list(csv_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's not try reading it with a \"utf-8\" encoding."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data = open('example.csv',encoding=\"utf-8\")\n",
"csv_data = csv.reader(data)\n",
"data_lines = list(csv_data)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[['id', 'first_name', 'last_name', 'email', 'gender', 'ip_address', 'city'],\n",
" ['1',\n",
" 'Joseph',\n",
" 'Zaniolini',\n",
" 'jzaniolini0@simplemachines.org',\n",
" 'Male',\n",
" '163.168.68.132',\n",
" 'Pedro Leopoldo'],\n",
" ['2',\n",
" 'Freida',\n",
" 'Drillingcourt',\n",
" 'fdrillingcourt1@umich.edu',\n",
" 'Female',\n",
" '97.212.102.79',\n",
" 'Buri']]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Looks like it worked!\n",
"data_lines[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note the first item in the list is the header line, this contains the information about what each column represents. Let's format our printing just a bit:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['id', 'first_name', 'last_name', 'email', 'gender', 'ip_address', 'city']\n",
"['1', 'Joseph', 'Zaniolini', 'jzaniolini0@simplemachines.org', 'Male', '163.168.68.132', 'Pedro Leopoldo']\n",
"['2', 'Freida', 'Drillingcourt', 'fdrillingcourt1@umich.edu', 'Female', '97.212.102.79', 'Buri']\n",
"['3', 'Nanni', 'Herity', 'nherity2@statcounter.com', 'Female', '145.151.178.98', 'Claver']\n",
"['4', 'Orazio', 'Frayling', 'ofrayling3@economist.com', 'Male', '25.199.143.143', 'Kungur']\n"
]
}
],
"source": [
"for line in data_lines[:5]:\n",
" print(line)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's imagine we wanted a list of all the emails. For demonstration, since there are 1000 items plus the header, we will only do a few rows."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1001"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(data_lines)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"all_emails = []\n",
"for line in data_lines[1:15]:\n",
" all_emails.append(line[3])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['jzaniolini0@simplemachines.org', 'fdrillingcourt1@umich.edu', 'nherity2@statcounter.com', 'ofrayling3@economist.com', 'jmurrison4@cbslocal.com', 'lgamet5@list-manage.com', 'dhowatt6@amazon.com', 'kherion7@amazon.com', 'chedworth8@china.com.cn', 'hgasquoine9@google.ru', 'ftarra@shareasale.com', 'abathb@umn.edu', 'lchastangc@goo.gl', 'cceried@yale.edu']\n"
]
}
],
"source": [
"print(all_emails)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What if we wanted a list of full names?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"full_names = []\n",
"\n",
"for line in data_lines[1:15]:\n",
" full_names.append(line[1]+' '+line[2])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Joseph Zaniolini',\n",
" 'Freida Drillingcourt',\n",
" 'Nanni Herity',\n",
" 'Orazio Frayling',\n",
" 'Julianne Murrison',\n",
" 'Lucy Gamet',\n",
" 'Dyana Howatt',\n",
" 'Kassey Herion',\n",
" 'Chrissy Hedworth',\n",
" 'Hyatt Gasquoine',\n",
" 'Felicdad Tarr',\n",
" 'Andrew Bath',\n",
" 'Lucais Chastang',\n",
" 'Car Cerie']"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_names"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Writing to CSV Files\n",
"\n",
"We can also write csv files, either new ones or add on to existing ones."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### New File \n",
"**This will also overwrite any exisiting file with the same name, so be careful with this!**"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# newline controls how universal newlines works (it only applies to text\n",
"# mode). It can be None, '', '\\n', '\\r', and '\\r\\n'. \n",
"file_to_output = open('to_save_file.csv','w',newline='')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"csv_writer = csv.writer(file_to_output,delimiter=',')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"csv_writer.writerow(['a','b','c'])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"csv_writer.writerows([['1','2','3'],['4','5','6']])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"file_to_output.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"### Existing File "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"f = open('to_save_file.csv','a',newline='')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"csv_writer = csv.writer(f)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"csv_writer.writerow(['new','new','new'])"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That is all for the basics! If you believe you will be working with CSV files often, you may want to check out the powerful [pandas library](https://pandas.pydata.org/)."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 15-PDFs-and-Spreadsheets/.ipynb_checkpoints/01-Working-with-PDFs-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Working with PDF Files\n",
"\n",
"Welcome back Agent. Often you will have to deal with PDF files. There are [many libraries in Python for working with PDFs](https://www.binpress.com/tutorial/manipulating-pdfs-with-python/167), each with their pros and cons, the most common one being **PyPDF2**. You can install it with (note the case-sensitivity, you need to make sure your capitilization matches):\n",
"\n",
" pip install PyPDF2\n",
" \n",
"Keep in mind that not every PDF file can be read with this library. PDFs that are too blurry, have a special encoding, encrypted, or maybe just created with a particular program that doesn't work well with PyPDF2 won't be able to be read. If you find yourself in this situation, try using the libraries linked above, but keep in mind, these may also not work. The reason for this is because of the many different parameters for a PDF and how non-standard the settings can be, text could be shown as an image instead of a utf-8 encoding. There are many parameters to consider in this aspect.\n",
"\n",
"As far as PyPDF2 is concerned, it can only read the text from a PDF document, it won't be able to grab images or other media files from a PDF.\n",
"___\n",
"\n",
"## Working with PyPDF2\n",
"\n",
"Let's being showing the basics of the PyPDF2 library."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting PyPDF2\n",
" Downloading pypdf2-3.0.1-py3-none-any.whl (232 kB)\n",
" ------------------------------------ 232.6/232.6 kB 490.8 kB/s eta 0:00:00\n",
"Requirement already satisfied: typing_extensions>=3.10.0.0 in c:\\users\\jmpor\\anaconda3\\lib\\site-packages (from PyPDF2) (4.3.0)\n",
"Installing collected packages: PyPDF2\n",
"Successfully installed PyPDF2-3.0.1\n"
]
}
],
"source": [
"!pip install PyPDF2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# note the capitalization\n",
"import PyPDF2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Reading PDFs\n",
"\n",
"Similar to the csv library, we open a pdf, then create a reader object for it. Notice how we use the binary method of reading , 'rb', instead of just 'r'."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Notice we read it as a binary with 'rb'\n",
"f = open('Working_Business_Proposal.pdf','rb')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_reader = PyPDF2.PdfReader(f)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(pdf_reader.pages)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"page_number = 0\n",
"page_one = pdf_reader.pages[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then extract the text:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"page_one_text = page_one.extract_text()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Business Proposal The Revolution is Coming Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment. Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring. Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line. Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration. Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions. BUSINESS PROPOSAL!1'"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"page_one_text"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Adding to PDFs\n",
"\n",
"We can not write to PDFs using Python because of the differences between the single string type of Python, and the variety of fonts, placements, and other parameters that a PDF could have.\n",
"\n",
"What we can do is copy pages and append pages to the end."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f = open('Working_Business_Proposal.pdf','rb')\n",
"pdf_reader = PyPDF2.PdfReader(f)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"page_number = 0\n",
"page_one = pdf_reader.pages[0]"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_writer = PyPDF2.PdfWriter()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_writer.add_page(page_one);"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_output = open(\"Some_New_Doc.pdf\",\"wb\")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(False, <_io.BufferedWriter name='Some_New_Doc.pdf'>)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pdf_writer.write(pdf_output)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we have copied a page and added it to another new document!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Simple Example\n",
"\n",
"Let's try to grab all the text from this PDF file:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f = open('Working_Business_Proposal.pdf','rb')\n",
"\n",
"# List of every page's text.\n",
"# The index will correspond to the page number.\n",
"pdf_text = []\n",
"\n",
"pdf_reader = PyPDF2.PdfReader(f)\n",
"\n",
"for p in range(len(pdf_reader.pages)):\n",
" \n",
" page = pdf_reader.pages[0]\n",
" \n",
" pdf_text.append(page.extract_text())\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Business Proposal The Revolution is Coming Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment. Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring. Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line. Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration. Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions. BUSINESS PROPOSAL!1',\n",
" 'Business Proposal The Revolution is Coming Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment. Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring. Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line. Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration. Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions. BUSINESS PROPOSAL!1',\n",
" 'Business Proposal The Revolution is Coming Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment. Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring. Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line. Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration. Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions. BUSINESS PROPOSAL!1',\n",
" 'Business Proposal The Revolution is Coming Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment. Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring. Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line. Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration. Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions. BUSINESS PROPOSAL!1',\n",
" 'Business Proposal The Revolution is Coming Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment. Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring. Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line. Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration. Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions. BUSINESS PROPOSAL!1']"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pdf_text"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Business Proposal The Revolution is Coming Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment. Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring. Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line. Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration. Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI. Efficiently unleash cross-media information without cross-media value. Quickly maximize timely deliverables for real-time schemas. Dramatically maintain clicks-and-mortar solutions without functional solutions. BUSINESS PROPOSAL!1\n"
]
}
],
"source": [
"print(pdf_text[3])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Excellent work! That is all for PyPDF2 for now, remember that this won't work with every PDF file and is limited in its scope to only text of PDFs."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: 15-PDFs-and-Spreadsheets/.ipynb_checkpoints/02-PDFs-Spreadsheets-Puzzle-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PDFs and Spreadsheets Puzzle Exercise\n",
"\n",
"Let's test your skills, the files needed for this puzzle exercise\n",
"\n",
"You will need to work with two files for this exercise and solve the following tasks:\n",
"\n",
"* Task One: Use Python to extract the Google Drive link from the .csv file. (Hint: Its along the diagonal from top left to bottom right).\n",
"* Task Two: Download the PDF from the Google Drive link (we already downloaded it for you just in case you can't download from Google Drive) and find the phone number that is in the document. Note: There are different ways of formatting a phone number!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task One: Grab the Google Drive Link from .csv File"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://drive.google.com/open?id=1G6SEgg018UB4_4xsAJJ5TdzrhmXipr4Q'"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# THe correct result is shown below, if you can't download from Google Drive, \n",
"# we added the PDF file to the Exercise_Files folder already"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task Two: Download the PDF from the Google Drive link and find the phone number that is in the document. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# You should get this phone number\n",
"# 505 503 4455"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 15-PDFs-and-Spreadsheets/.ipynb_checkpoints/03-PDFs-Spreadsheets-Puzzle-Solution-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PDFs and Spreadsheets Puzzle Exercise\n",
"\n",
"You will need to work with two files for this exercise and solve the following tasks:\n",
"\n",
"* Task One: Grab the Google Drive link from the .csv file. (Hint: Its along the diagonal).\n",
"* Task Two: Download the PDF from the Google Drive link (we already downloaded it for you just in case you can't download from Google Drive) and find the phone number that is in the document. Note: There are different ways of formatting a phone number!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task One: Grab the Google Drive Link from .csv File"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Grab all the lines of data.**"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"data = open('Exercise_Files/find_the_link.csv',encoding=\"utf-8\")\n",
"csv_data = csv.reader(data)\n",
"data_lines = list(csv_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**We can see its along the diagonal, which means the values are at the index position that matches the row's number order. So the 1st letter is the 1st item in the 1st row, the 2nd letter is the 2nd item in the 2nd row, the 3rd item is the 3rd letter in the 3rd row and so on. We can use enumerate to track the row number and simply index off the data_lines.**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Method One**"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"link_list = []\n",
"for row_num,data in enumerate(data_lines):\n",
" link_list.append(data[row_num])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://drive.google.com/open?id=1G6SEgg018UB4_4xsAJJ5TdzrhmXipr4Q'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"''.join(link_list)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Method Two**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"link_str = ''\n",
"for row_num,data in enumerate(data_lines):\n",
" link_str+=data[row_num]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://drive.google.com/open?id=1G6SEgg018UB4_4xsAJJ5TdzrhmXipr4Q'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"link_str"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task Two: Download the PDF from the Google Drive link and find the phone number that is in the document. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import PyPDF2"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f = open('Exercise_Files/Find_the_Phone_Number.pdf','rb')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf = PyPDF2.PdfReader(f)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"17"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(pdf.pages)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Phone Number Matching\n",
"\n",
"Lot's of ways to do this, but you had to figure out the phone number was in format ###.###.####\n",
"\n",
"Hint: https://stackoverflow.com/questions/4697882/how-can-i-find-all-matches-to-a-regular-expression-in-python"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import re"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pattern = r'\\d{3}'"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"all_text = ''\n",
"\n",
"for n in range(len(pdf.pages)):\n",
" \n",
" page = pdf.pages[n]\n",
" page_text = page.extract_text()\n",
" \n",
" all_text = all_text+' '+page_text"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
}
],
"source": [
"for match in re.finditer(pattern,all_text):\n",
" print(match)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once you know the correct pattern:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import re"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pattern = r'\\d{3}.\\d{3}.\\d{4}' "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"505.503.4455\n"
]
}
],
"source": [
"for n in range(len(pdf.pages)):\n",
" \n",
" page = pdf.pages[n]\n",
" page_text = page.extract_text()\n",
" match = re.search(pattern,page_text)\n",
" \n",
" if match:\n",
" print(match.group())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great Job! Information on this phone number: \n",
"* https://www.businessinsider.com/better-call-saul-billboard-and-phone-number-2014-7\n",
"* https://www.reddit.com/r/betterCallSaul/comments/4awouf/heres_a_list_of_real_numbers_you_can_call_from/\n",
"* https://www.amc.com/shows/better-call-saul/talk/2020/03/saul-goodmans-phone-number-is-the-latest-breaking-bad-callback"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: 15-PDFs-and-Spreadsheets/00-Working-with-CSV-Files.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Working with CSV Files\n",
"\n",
"Welcome back! Let's discuss how to work with CSV files in Python. A file with the CSV file extension is a Comma Separated Values file. All CSV files are plain text, contain alphanumeric characters, and structure the data contained within them in a tabular form. Don't confuse Excel Files with csv files, while csv files are formatted very similarly to excel files, they don't have data types for their values, they are all strings with no font or color. They also don't have worksheets the way an excel file does. Python does have several libraries for working with Excel files, you can check them out [here](http://www.python-excel.org/) and [here](https://www.xlwings.org/).\n",
"\n",
"Files in the CSV format are generally used to exchange data, usually when there's a large amount, between different applications. Database programs, analytical software, and other applications that store massive amounts of information (like contacts and customer data), will usually support the CSV format.\n",
"\n",
"Let's explore how we can open a csv file with Python's built-in csv library. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"## Notebook Location. \n",
"\n",
"Run **pwd** inside a notebook cell to find out where your notebook is located"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'C:\\\\Users\\\\Marcial\\\\Pierian-Data-Courses\\\\Complete-Python-3-Bootcamp\\\\15-PDFs-and-Spreadsheets'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pwd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"## Reading CSV Files"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"import csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When passing in the file path, make sure to include the extension if it has one, you should be able to Tab Autocomplete the file name. If you can't Tab autocomplete, that is a good indicator your file is not in the same location as your notebook. You can always type in the entire file path (it will look similar in formatting to the output of **pwd**."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"data = open('example.csv')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<_io.TextIOWrapper name='example.csv' mode='r' encoding='cp1252'>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Encoding\n",
"\n",
"Often csv files may contain characters that you can't interpret with standard python, this could be something like an **@** symbol, or even foreign characters. Let's view an example of this sort of error ([its pretty common, so its important to go over](https://stackoverflow.com/questions/9233027/unicodedecodeerror-charmap-codec-cant-decode-byte-x-in-position-y-character))."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"csv_data = csv.reader(data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cast to a list may give an error, note the **can't decode** line in the error, this is a giveaway that we have an encoding problem!"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"ename": "UnicodeDecodeError",
"evalue": "'charmap' codec can't decode byte 0x8d in position 1835: character maps to ",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mUnicodeDecodeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdata_lines\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcsv_data\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\encodings\\cp1252.py\u001b[0m in \u001b[0;36mdecode\u001b[1;34m(self, input, final)\u001b[0m\n\u001b[0;32m 21\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 23\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcharmap_decode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdecoding_table\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 24\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 25\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mStreamWriter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCodec\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mStreamWriter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mUnicodeDecodeError\u001b[0m: 'charmap' codec can't decode byte 0x8d in position 1835: character maps to "
]
}
],
"source": [
"data_lines = list(csv_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's not try reading it with a \"utf-8\" encoding."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"data = open('example.csv',encoding=\"utf-8\")\n",
"csv_data = csv.reader(data)\n",
"data_lines = list(csv_data)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[['id', 'first_name', 'last_name', 'email', 'gender', 'ip_address', 'city'],\n",
" ['1',\n",
" 'Joseph',\n",
" 'Zaniolini',\n",
" 'jzaniolini0@simplemachines.org',\n",
" 'Male',\n",
" '163.168.68.132',\n",
" 'Pedro Leopoldo'],\n",
" ['2',\n",
" 'Freida',\n",
" 'Drillingcourt',\n",
" 'fdrillingcourt1@umich.edu',\n",
" 'Female',\n",
" '97.212.102.79',\n",
" 'Buri']]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Looks like it worked!\n",
"data_lines[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note the first item in the list is the header line, this contains the information about what each column represents. Let's format our printing just a bit:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['id', 'first_name', 'last_name', 'email', 'gender', 'ip_address', 'city']\n",
"['1', 'Joseph', 'Zaniolini', 'jzaniolini0@simplemachines.org', 'Male', '163.168.68.132', 'Pedro Leopoldo']\n",
"['2', 'Freida', 'Drillingcourt', 'fdrillingcourt1@umich.edu', 'Female', '97.212.102.79', 'Buri']\n",
"['3', 'Nanni', 'Herity', 'nherity2@statcounter.com', 'Female', '145.151.178.98', 'Claver']\n",
"['4', 'Orazio', 'Frayling', 'ofrayling3@economist.com', 'Male', '25.199.143.143', 'Kungur']\n"
]
}
],
"source": [
"for line in data_lines[:5]:\n",
" print(line)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's imagine we wanted a list of all the emails. For demonstration, since there are 1000 items plus the header, we will only do a few rows."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1001"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(data_lines)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"all_emails = []\n",
"for line in data_lines[1:15]:\n",
" all_emails.append(line[3])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['jzaniolini0@simplemachines.org', 'fdrillingcourt1@umich.edu', 'nherity2@statcounter.com', 'ofrayling3@economist.com', 'jmurrison4@cbslocal.com', 'lgamet5@list-manage.com', 'dhowatt6@amazon.com', 'kherion7@amazon.com', 'chedworth8@china.com.cn', 'hgasquoine9@google.ru', 'ftarra@shareasale.com', 'abathb@umn.edu', 'lchastangc@goo.gl', 'cceried@yale.edu']\n"
]
}
],
"source": [
"print(all_emails)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What if we wanted a list of full names?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"full_names = []\n",
"\n",
"for line in data_lines[1:15]:\n",
" full_names.append(line[1]+' '+line[2])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Joseph Zaniolini',\n",
" 'Freida Drillingcourt',\n",
" 'Nanni Herity',\n",
" 'Orazio Frayling',\n",
" 'Julianne Murrison',\n",
" 'Lucy Gamet',\n",
" 'Dyana Howatt',\n",
" 'Kassey Herion',\n",
" 'Chrissy Hedworth',\n",
" 'Hyatt Gasquoine',\n",
" 'Felicdad Tarr',\n",
" 'Andrew Bath',\n",
" 'Lucais Chastang',\n",
" 'Car Cerie']"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_names"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Writing to CSV Files\n",
"\n",
"We can also write csv files, either new ones or add on to existing ones."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### New File \n",
"**This will also overwrite any exisiting file with the same name, so be careful with this!**"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"# newline controls how universal newlines works (it only applies to text\n",
"# mode). It can be None, '', '\\n', '\\r', and '\\r\\n'. \n",
"file_to_output = open('to_save_file.csv','w',newline='')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"csv_writer = csv.writer(file_to_output,delimiter=',')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"csv_writer.writerow(['a','b','c'])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"csv_writer.writerows([['1','2','3'],['4','5','6']])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"file_to_output.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"### Existing File "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"f = open('to_save_file.csv','a',newline='')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"csv_writer = csv.writer(f)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"csv_writer.writerow(['new','new','new'])"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That is all for the basics! If you believe you will be working with CSV files often, you may want to check out the powerful [pandas library](https://pandas.pydata.org/)."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: 15-PDFs-and-Spreadsheets/01-Working-with-PDFs.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Working with PDF Files\n",
"\n",
"Welcome back Agent. Often you will have to deal with PDF files. There are [many libraries in Python for working with PDFs](https://www.binpress.com/tutorial/manipulating-pdfs-with-python/167), each with their pros and cons, the most common one being **pypdf**. You can install it with:\n",
"\n",
" pip install pypdf\n",
" \n",
"Keep in mind that not every PDF file can be read with this library. PDFs that are too blurry, have a special encoding, encrypted, or maybe just created with a particular program that doesn't work well with pypdf won't be able to be read. If you find yourself in this situation, try using the libraries linked above, but keep in mind, these may also not work. The reason for this is because of the many different parameters for a PDF and how non-standard the settings can be, text could be shown as an image instead of a utf-8 encoding. There are many parameters to consider in this aspect.\n",
"\n",
"As far as pypdf is concerned, it can only read the text from a PDF document, it won't be able to grab images or other media files from a PDF.\n",
"___\n",
"\n",
"## Working with pypdf\n",
"\n",
"Let's being showing the basics of the pypdf library."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install pypdf"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# note the capitalization\n",
"import pypdf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Reading PDFs\n",
"\n",
"Similar to the csv library, we open a pdf, then create a reader object for it. Notice how we use the binary method of reading , 'rb', instead of just 'r'."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Notice we read it as a binary with 'rb'\n",
"f = open('Working_Business_Proposal.pdf','rb')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_reader = pypdf.PdfReader(f)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(pdf_reader.pages)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"page_number = 0\n",
"page_one = pdf_reader.pages[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then extract the text:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"page_one_text = page_one.extract_text()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Business Proposal The Revolution is Coming \\nLeverage agile frameworks to provide a robust synopsis for high level \\noverviews. Iterative approaches to corporate strategy foster collaborative \\nthinking to further the overall value proposition. Organically grow the \\nholistic world view of disruptive innovation via workplace diversity and \\nempowerment. \\nBring to the table win-win survival strategies to ensure proactive \\ndomination. At the end of the day, going forward, a new normal that has \\nevolved from generation X is on the runway heading towards a streamlined \\ncloud solution. User generated content in real-time will have multiple \\ntouchpoints for offshoring. \\nCapitalize on low hanging fruit to identify a ballpark value added activity to \\nbeta test. Override the digital divide with additional clickthroughs from \\nDevOps. Nanotechnology immersion along the information highway will \\nclose the loop on focusing solely on the bottom line. \\nPodcasting operational change management inside of workflows to \\nestablish a framework. Taking seamless key performance indicators offline \\nto maximise the long tail. Keeping your eye on the ball while performing a \\ndeep dive on the start-up mentality to derive convergence on cross-\\nplatform integration. \\nCollaboratively administrate empowered markets via plug-and-play \\nnetworks. Dynamically procrastinate B2C users after installed base \\nbenefits. Dramatically visualize customer directed convergence without \\nrevolutionary ROI. \\nEfficiently unleash cross-media information without cross-media value. \\nQuickly maximize timely deliverables for real-time schemas. Dramatically \\nmaintain clicks-and-mortar solutions without functional solutions. \\nBUSINESS PROPOSAL ! 1'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"page_one_text"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Adding to PDFs\n",
"\n",
"We can not write to PDFs using Python because of the differences between the single string type of Python, and the variety of fonts, placements, and other parameters that a PDF could have.\n",
"\n",
"What we can do is copy pages and append pages to the end."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f = open('Working_Business_Proposal.pdf','rb')\n",
"pdf_reader = pypdf.PdfReader(f)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"page_number = 0\n",
"page_one = pdf_reader.pages[0]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_writer = pypdf.PdfWriter()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_writer.add_page(page_one);"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf_output = open(\"Some_New_Doc.pdf\",\"wb\")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(False, <_io.BufferedWriter name='Some_New_Doc.pdf'>)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pdf_writer.write(pdf_output)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we have copied a page and added it to another new document!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Simple Example\n",
"\n",
"Let's try to grab all the text from this PDF file:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f = open('Working_Business_Proposal.pdf','rb')\n",
"\n",
"# List of every page's text.\n",
"# The index will correspond to the page number.\n",
"pdf_text = []\n",
"\n",
"pdf_reader = pypdf.PdfReader(f)\n",
"\n",
"for p in range(len(pdf_reader.pages)):\n",
" \n",
" page = pdf_reader.pages[0]\n",
" \n",
" pdf_text.append(page.extract_text())\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Business Proposal The Revolution is Coming \\nLeverage agile frameworks to provide a robust synopsis for high level \\noverviews. Iterative approaches to corporate strategy foster collaborative \\nthinking to further the overall value proposition. Organically grow the \\nholistic world view of disruptive innovation via workplace diversity and \\nempowerment. \\nBring to the table win-win survival strategies to ensure proactive \\ndomination. At the end of the day, going forward, a new normal that has \\nevolved from generation X is on the runway heading towards a streamlined \\ncloud solution. User generated content in real-time will have multiple \\ntouchpoints for offshoring. \\nCapitalize on low hanging fruit to identify a ballpark value added activity to \\nbeta test. Override the digital divide with additional clickthroughs from \\nDevOps. Nanotechnology immersion along the information highway will \\nclose the loop on focusing solely on the bottom line. \\nPodcasting operational change management inside of workflows to \\nestablish a framework. Taking seamless key performance indicators offline \\nto maximise the long tail. Keeping your eye on the ball while performing a \\ndeep dive on the start-up mentality to derive convergence on cross-\\nplatform integration. \\nCollaboratively administrate empowered markets via plug-and-play \\nnetworks. Dynamically procrastinate B2C users after installed base \\nbenefits. Dramatically visualize customer directed convergence without \\nrevolutionary ROI. \\nEfficiently unleash cross-media information without cross-media value. \\nQuickly maximize timely deliverables for real-time schemas. Dramatically \\nmaintain clicks-and-mortar solutions without functional solutions. \\nBUSINESS PROPOSAL ! 1',\n",
" 'Business Proposal The Revolution is Coming \\nLeverage agile frameworks to provide a robust synopsis for high level \\noverviews. Iterative approaches to corporate strategy foster collaborative \\nthinking to further the overall value proposition. Organically grow the \\nholistic world view of disruptive innovation via workplace diversity and \\nempowerment. \\nBring to the table win-win survival strategies to ensure proactive \\ndomination. At the end of the day, going forward, a new normal that has \\nevolved from generation X is on the runway heading towards a streamlined \\ncloud solution. User generated content in real-time will have multiple \\ntouchpoints for offshoring. \\nCapitalize on low hanging fruit to identify a ballpark value added activity to \\nbeta test. Override the digital divide with additional clickthroughs from \\nDevOps. Nanotechnology immersion along the information highway will \\nclose the loop on focusing solely on the bottom line. \\nPodcasting operational change management inside of workflows to \\nestablish a framework. Taking seamless key performance indicators offline \\nto maximise the long tail. Keeping your eye on the ball while performing a \\ndeep dive on the start-up mentality to derive convergence on cross-\\nplatform integration. \\nCollaboratively administrate empowered markets via plug-and-play \\nnetworks. Dynamically procrastinate B2C users after installed base \\nbenefits. Dramatically visualize customer directed convergence without \\nrevolutionary ROI. \\nEfficiently unleash cross-media information without cross-media value. \\nQuickly maximize timely deliverables for real-time schemas. Dramatically \\nmaintain clicks-and-mortar solutions without functional solutions. \\nBUSINESS PROPOSAL ! 1',\n",
" 'Business Proposal The Revolution is Coming \\nLeverage agile frameworks to provide a robust synopsis for high level \\noverviews. Iterative approaches to corporate strategy foster collaborative \\nthinking to further the overall value proposition. Organically grow the \\nholistic world view of disruptive innovation via workplace diversity and \\nempowerment. \\nBring to the table win-win survival strategies to ensure proactive \\ndomination. At the end of the day, going forward, a new normal that has \\nevolved from generation X is on the runway heading towards a streamlined \\ncloud solution. User generated content in real-time will have multiple \\ntouchpoints for offshoring. \\nCapitalize on low hanging fruit to identify a ballpark value added activity to \\nbeta test. Override the digital divide with additional clickthroughs from \\nDevOps. Nanotechnology immersion along the information highway will \\nclose the loop on focusing solely on the bottom line. \\nPodcasting operational change management inside of workflows to \\nestablish a framework. Taking seamless key performance indicators offline \\nto maximise the long tail. Keeping your eye on the ball while performing a \\ndeep dive on the start-up mentality to derive convergence on cross-\\nplatform integration. \\nCollaboratively administrate empowered markets via plug-and-play \\nnetworks. Dynamically procrastinate B2C users after installed base \\nbenefits. Dramatically visualize customer directed convergence without \\nrevolutionary ROI. \\nEfficiently unleash cross-media information without cross-media value. \\nQuickly maximize timely deliverables for real-time schemas. Dramatically \\nmaintain clicks-and-mortar solutions without functional solutions. \\nBUSINESS PROPOSAL ! 1',\n",
" 'Business Proposal The Revolution is Coming \\nLeverage agile frameworks to provide a robust synopsis for high level \\noverviews. Iterative approaches to corporate strategy foster collaborative \\nthinking to further the overall value proposition. Organically grow the \\nholistic world view of disruptive innovation via workplace diversity and \\nempowerment. \\nBring to the table win-win survival strategies to ensure proactive \\ndomination. At the end of the day, going forward, a new normal that has \\nevolved from generation X is on the runway heading towards a streamlined \\ncloud solution. User generated content in real-time will have multiple \\ntouchpoints for offshoring. \\nCapitalize on low hanging fruit to identify a ballpark value added activity to \\nbeta test. Override the digital divide with additional clickthroughs from \\nDevOps. Nanotechnology immersion along the information highway will \\nclose the loop on focusing solely on the bottom line. \\nPodcasting operational change management inside of workflows to \\nestablish a framework. Taking seamless key performance indicators offline \\nto maximise the long tail. Keeping your eye on the ball while performing a \\ndeep dive on the start-up mentality to derive convergence on cross-\\nplatform integration. \\nCollaboratively administrate empowered markets via plug-and-play \\nnetworks. Dynamically procrastinate B2C users after installed base \\nbenefits. Dramatically visualize customer directed convergence without \\nrevolutionary ROI. \\nEfficiently unleash cross-media information without cross-media value. \\nQuickly maximize timely deliverables for real-time schemas. Dramatically \\nmaintain clicks-and-mortar solutions without functional solutions. \\nBUSINESS PROPOSAL ! 1',\n",
" 'Business Proposal The Revolution is Coming \\nLeverage agile frameworks to provide a robust synopsis for high level \\noverviews. Iterative approaches to corporate strategy foster collaborative \\nthinking to further the overall value proposition. Organically grow the \\nholistic world view of disruptive innovation via workplace diversity and \\nempowerment. \\nBring to the table win-win survival strategies to ensure proactive \\ndomination. At the end of the day, going forward, a new normal that has \\nevolved from generation X is on the runway heading towards a streamlined \\ncloud solution. User generated content in real-time will have multiple \\ntouchpoints for offshoring. \\nCapitalize on low hanging fruit to identify a ballpark value added activity to \\nbeta test. Override the digital divide with additional clickthroughs from \\nDevOps. Nanotechnology immersion along the information highway will \\nclose the loop on focusing solely on the bottom line. \\nPodcasting operational change management inside of workflows to \\nestablish a framework. Taking seamless key performance indicators offline \\nto maximise the long tail. Keeping your eye on the ball while performing a \\ndeep dive on the start-up mentality to derive convergence on cross-\\nplatform integration. \\nCollaboratively administrate empowered markets via plug-and-play \\nnetworks. Dynamically procrastinate B2C users after installed base \\nbenefits. Dramatically visualize customer directed convergence without \\nrevolutionary ROI. \\nEfficiently unleash cross-media information without cross-media value. \\nQuickly maximize timely deliverables for real-time schemas. Dramatically \\nmaintain clicks-and-mortar solutions without functional solutions. \\nBUSINESS PROPOSAL ! 1']"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pdf_text"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Business Proposal The Revolution is Coming \n",
"Leverage agile frameworks to provide a robust synopsis for high level \n",
"overviews. Iterative approaches to corporate strategy foster collaborative \n",
"thinking to further the overall value proposition. Organically grow the \n",
"holistic world view of disruptive innovation via workplace diversity and \n",
"empowerment. \n",
"Bring to the table win-win survival strategies to ensure proactive \n",
"domination. At the end of the day, going forward, a new normal that has \n",
"evolved from generation X is on the runway heading towards a streamlined \n",
"cloud solution. User generated content in real-time will have multiple \n",
"touchpoints for offshoring. \n",
"Capitalize on low hanging fruit to identify a ballpark value added activity to \n",
"beta test. Override the digital divide with additional clickthroughs from \n",
"DevOps. Nanotechnology immersion along the information highway will \n",
"close the loop on focusing solely on the bottom line. \n",
"Podcasting operational change management inside of workflows to \n",
"establish a framework. Taking seamless key performance indicators offline \n",
"to maximise the long tail. Keeping your eye on the ball while performing a \n",
"deep dive on the start-up mentality to derive convergence on cross-\n",
"platform integration. \n",
"Collaboratively administrate empowered markets via plug-and-play \n",
"networks. Dynamically procrastinate B2C users after installed base \n",
"benefits. Dramatically visualize customer directed convergence without \n",
"revolutionary ROI. \n",
"Efficiently unleash cross-media information without cross-media value. \n",
"Quickly maximize timely deliverables for real-time schemas. Dramatically \n",
"maintain clicks-and-mortar solutions without functional solutions. \n",
"BUSINESS PROPOSAL ! 1\n"
]
}
],
"source": [
"print(pdf_text[3])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Excellent work! That is all for pypdf for now, remember that this won't work with every PDF file and is limited in its scope to only text of PDFs."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:base] *",
"language": "python",
"name": "conda-base-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: 15-PDFs-and-Spreadsheets/02-PDFs-Spreadsheets-Puzzle.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PDFs and Spreadsheets Puzzle Exercise\n",
"\n",
"Let's test your skills, the files needed for this puzzle exercise\n",
"\n",
"You will need to work with two files for this exercise and solve the following tasks:\n",
"\n",
"* Task One: Use Python to extract the Google Drive link from the .csv file. (Hint: Its along the diagonal from top left to bottom right).\n",
"* Task Two: Download the PDF from the Google Drive link (we already downloaded it for you just in case you can't download from Google Drive) and find the phone number that is in the document. Note: There are different ways of formatting a phone number!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task One: Grab the Google Drive Link from .csv File"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://drive.google.com/open?id=1G6SEgg018UB4_4xsAJJ5TdzrhmXipr4Q'"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# THe correct result is shown below, if you can't download from Google Drive, \n",
"# we added the PDF file to the Exercise_Files folder already"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task Two: Download the PDF from the Google Drive link and find the phone number that is in the document. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# You should get this phone number\n",
"# 505 503 4455"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 15-PDFs-and-Spreadsheets/03-PDFs-Spreadsheets-Puzzle-Solution.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PDFs and Spreadsheets Puzzle Exercise\n",
"\n",
"You will need to work with two files for this exercise and solve the following tasks:\n",
"\n",
"* Task One: Grab the Google Drive link from the .csv file. (Hint: Its along the diagonal).\n",
"* Task Two: Download the PDF from the Google Drive link (we already downloaded it for you just in case you can't download from Google Drive) and find the phone number that is in the document. Note: There are different ways of formatting a phone number!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task One: Grab the Google Drive Link from .csv File"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Grab all the lines of data.**"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"data = open('Exercise_Files/find_the_link.csv',encoding=\"utf-8\")\n",
"csv_data = csv.reader(data)\n",
"data_lines = list(csv_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**We can see its along the diagonal, which means the values are at the index position that matches the row's number order. So the 1st letter is the 1st item in the 1st row, the 2nd letter is the 2nd item in the 2nd row, the 3rd item is the 3rd letter in the 3rd row and so on. We can use enumerate to track the row number and simply index off the data_lines.**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Method One**"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"link_list = []\n",
"for row_num,data in enumerate(data_lines):\n",
" link_list.append(data[row_num])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://drive.google.com/open?id=1G6SEgg018UB4_4xsAJJ5TdzrhmXipr4Q'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"''.join(link_list)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Method Two**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"link_str = ''\n",
"for row_num,data in enumerate(data_lines):\n",
" link_str+=data[row_num]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://drive.google.com/open?id=1G6SEgg018UB4_4xsAJJ5TdzrhmXipr4Q'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"link_str"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task Two: Download the PDF from the Google Drive link and find the phone number that is in the document. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import pypdf"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"f = open('Exercise_Files/Find_the_Phone_Number.pdf','rb')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pdf = pypdf.PdfReader(f)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"17"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(pdf.pages)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Phone Number Matching\n",
"\n",
"Lot's of ways to do this, but you had to figure out the phone number was in format ###.###.####\n",
"\n",
"Hint: https://stackoverflow.com/questions/4697882/how-can-i-find-all-matches-to-a-regular-expression-in-python"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import re"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pattern = r'\\d{3}'"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"all_text = ''\n",
"\n",
"for n in range(len(pdf.pages)):\n",
" \n",
" page = pdf.pages[n]\n",
" page_text = page.extract_text()\n",
" \n",
" all_text = all_text+' '+page_text"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
}
],
"source": [
"for match in re.finditer(pattern,all_text):\n",
" print(match)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once you know the correct pattern:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import re"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"pattern = r'\\d{3}.\\d{3}.\\d{4}' "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"505.503.4455\n"
]
}
],
"source": [
"for n in range(len(pdf.pages)):\n",
" \n",
" page = pdf.pages[n]\n",
" page_text = page.extract_text()\n",
" match = re.search(pattern,page_text)\n",
" \n",
" if match:\n",
" print(match.group())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great Job! Information on this phone number: \n",
"* https://www.businessinsider.com/better-call-saul-billboard-and-phone-number-2014-7\n",
"* https://www.reddit.com/r/betterCallSaul/comments/4awouf/heres_a_list_of_real_numbers_you_can_call_from/"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda env:base] *",
"language": "python",
"name": "conda-base-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: 15-PDFs-and-Spreadsheets/Exercise_Files/find_the_link.csv
================================================
h,53,24,46,4,11,3,35,17,52,9,60,26,60,72,39,11,80,86,66,59,9,41,33,11,42,69,74,91,61,5,69,17,17,78,6,51,54,54,94,47,37,0,16,71,6,83,7,6,38,61,18,68,15,2,81,49,5,17,21,36,63,38,24,3,99
85,t,31,54,60,22,77,39,93,38,31,16,29,27,8,35,0,54,84,21,47,37,66,83,26,22,68,25,44,81,27,68,17,63,13,99,38,43,87,83,73,88,67,5,12,10,7,58,64,56,53,88,96,20,7,85,94,23,14,79,24,27,90,40,27,8
22,98,t,83,33,53,66,13,81,53,60,52,45,51,39,98,14,94,68,5,99,62,68,95,50,81,64,58,96,1,71,4,60,57,84,39,5,24,79,19,86,20,15,55,68,26,81,78,3,2,24,64,17,86,3,16,89,81,33,70,42,5,31,42,45,42
11,58,4,p,59,85,97,35,11,78,75,23,83,37,79,8,82,42,73,9,13,98,57,50,28,41,55,58,33,85,80,69,64,53,87,38,58,48,31,82,56,14,49,8,50,4,5,9,69,33,61,24,61,21,59,1,81,73,13,75,21,13,15,85,71,36
0,15,8,77,s,90,42,25,38,93,18,81,6,31,17,3,55,91,46,30,28,6,45,66,97,9,71,31,26,50,86,52,24,93,97,18,71,79,61,9,19,67,74,48,54,30,69,1,43,11,8,97,52,22,66,81,55,53,5,91,30,14,62,27,27,33
47,43,36,38,37,:,77,69,20,51,87,31,45,50,43,48,72,47,88,29,25,62,97,70,44,87,76,89,99,93,6,21,68,45,57,40,74,46,71,98,29,8,40,89,90,96,90,32,11,84,87,35,88,75,75,17,74,86,46,96,86,10,14,9,56,0
43,73,30,67,47,7,/,88,38,83,36,26,1,69,69,89,96,77,10,5,68,43,19,65,25,48,25,33,29,14,19,87,20,20,35,65,4,89,1,62,40,7,9,98,18,3,58,22,41,95,73,29,8,34,75,38,76,10,62,67,74,90,60,94,4,97
26,59,40,91,5,93,0,/,74,80,13,67,15,42,93,3,10,61,9,13,38,68,60,34,37,32,17,60,95,92,44,33,99,69,4,16,80,87,7,9,43,73,64,9,25,12,65,59,1,84,73,40,78,10,64,59,58,25,53,71,72,92,51,15,26,76
33,13,17,66,84,74,77,8,d,44,53,14,63,17,62,77,75,61,75,28,57,12,1,36,62,63,8,12,24,85,80,26,18,19,1,13,47,74,72,83,46,53,25,89,74,57,54,12,38,83,38,67,94,75,26,86,91,30,66,75,53,46,60,78,50,47
34,76,15,58,37,61,96,57,6,r,98,60,64,32,0,68,32,41,72,99,13,29,88,59,45,85,93,19,39,5,2,35,80,11,35,34,3,55,27,3,3,57,90,75,54,85,6,10,7,95,9,30,25,25,87,1,55,9,1,76,90,6,60,87,33,86
67,30,97,49,27,14,17,28,60,74,i,21,24,66,83,25,99,62,89,27,85,48,23,93,12,9,13,70,41,21,85,12,3,39,71,36,84,55,30,4,48,75,47,89,39,97,56,38,23,84,58,72,79,22,13,23,14,29,2,31,11,42,94,3,34,52
95,42,42,95,95,20,9,29,65,26,13,v,82,66,67,96,48,7,36,89,73,98,3,23,50,89,42,75,84,6,73,5,93,83,1,39,22,33,76,61,49,53,66,23,81,63,50,97,13,51,47,13,12,44,71,42,7,59,70,96,37,30,3,1,78,16
96,28,68,65,40,12,36,15,39,57,35,49,e,4,65,73,75,77,29,64,35,70,11,1,2,88,95,22,44,50,82,98,50,53,14,28,39,50,12,18,59,41,68,7,81,69,57,68,48,74,45,7,11,14,23,58,10,16,49,64,62,27,40,84,12,68
80,10,31,78,64,18,88,41,98,89,99,69,36,.,56,44,30,85,7,74,71,9,84,91,25,78,0,28,4,97,3,63,1,74,55,74,22,21,49,65,6,23,50,72,43,51,4,29,2,92,20,96,72,69,34,7,8,32,59,78,75,66,98,90,58,20
0,67,15,39,97,49,72,53,56,29,18,67,39,20,g,66,61,29,67,93,13,97,64,63,92,78,68,25,87,32,82,36,63,6,29,60,11,59,13,16,14,88,96,39,47,68,44,13,2,34,20,29,89,3,99,74,75,41,77,62,34,12,90,32,18,74
49,56,7,76,3,54,65,76,68,89,60,19,51,93,13,o,25,18,29,49,88,31,25,98,70,83,64,26,89,74,91,30,5,56,39,25,2,74,83,98,44,71,98,69,66,13,20,28,2,42,91,63,74,6,52,54,82,54,83,39,10,70,50,53,47,68
68,62,73,17,3,84,97,56,12,65,46,24,40,81,18,25,o,93,29,44,28,11,45,44,28,97,79,35,4,9,83,4,20,21,22,53,36,74,43,55,19,76,52,92,34,78,23,33,30,21,96,31,69,60,63,97,90,42,61,25,83,78,10,31,58,95
78,84,3,55,56,17,83,59,74,8,46,10,30,78,75,27,24,g,54,71,1,23,47,3,72,64,55,35,21,69,10,45,25,10,57,41,95,48,97,17,52,27,47,89,55,62,38,34,29,42,32,81,11,79,83,85,44,86,59,21,22,80,20,73,1,47
89,51,33,16,51,38,64,29,32,82,61,38,16,11,97,29,37,94,l,92,18,0,62,0,12,40,6,1,27,74,22,44,72,77,30,36,89,0,84,44,94,1,84,96,21,17,99,91,18,5,36,50,85,51,81,8,99,39,54,80,8,40,56,35,74,98
25,49,44,14,73,92,59,92,62,74,40,9,37,78,96,31,92,5,52,e,77,75,81,5,54,75,10,51,85,87,1,81,70,86,87,75,58,85,65,46,0,46,36,61,62,37,69,96,70,10,6,31,61,6,81,52,64,63,94,4,86,22,50,64,14,86
23,13,55,56,67,59,30,26,43,29,62,66,39,41,91,91,23,22,95,78,.,69,62,54,8,50,22,32,42,53,36,20,95,77,39,97,49,26,83,54,53,58,57,5,0,65,28,67,12,25,68,70,73,13,93,49,25,88,36,97,5,24,24,61,18,95
58,8,97,14,85,12,1,11,73,81,16,52,53,99,2,56,58,13,64,31,48,c,28,81,92,13,61,70,91,56,7,39,41,64,94,83,3,61,27,10,45,20,75,68,24,91,35,60,52,27,81,8,35,63,16,88,74,93,56,47,16,79,90,83,84,69
22,92,48,20,57,73,11,27,7,67,69,90,7,21,2,69,15,66,78,88,66,21,o,40,15,20,32,48,73,27,46,70,30,22,51,73,19,94,48,56,99,20,22,0,5,47,14,65,91,98,96,50,40,6,80,66,36,33,24,73,84,86,25,11,84,26
26,68,67,55,93,98,69,98,37,37,14,48,53,32,3,0,75,65,84,38,42,22,83,m,54,51,68,43,56,84,72,65,72,99,16,73,41,4,19,36,71,87,29,30,85,74,32,46,49,85,13,92,14,97,60,69,62,9,43,32,18,95,24,66,98,79
61,77,4,29,6,16,3,71,26,20,24,1,60,45,61,99,79,67,65,29,40,24,44,39,/,7,26,28,10,74,30,35,86,78,94,9,61,2,16,30,10,60,56,27,47,11,15,28,21,81,95,49,7,92,91,13,26,52,24,94,27,72,29,86,18,51
92,18,21,88,72,26,43,35,62,75,40,92,61,35,52,10,49,77,18,1,28,9,32,96,37,o,48,47,4,57,42,45,93,90,71,24,10,16,41,99,83,15,23,76,48,35,65,37,89,15,9,91,64,61,45,59,24,63,34,1,6,44,93,60,89,50
25,5,38,85,25,88,56,71,96,27,93,14,7,2,22,49,93,93,5,56,75,11,36,19,81,11,p,42,54,29,20,31,1,12,40,65,18,2,89,68,77,66,53,95,20,85,7,92,46,44,16,13,59,53,90,64,67,38,79,26,69,13,63,59,1,64
2,95,27,12,92,78,73,64,53,92,75,23,81,18,16,66,22,20,13,31,15,30,65,62,46,60,3,e,68,98,86,82,93,12,16,68,78,62,36,15,47,91,17,77,65,98,45,52,69,5,52,50,46,73,17,7,72,84,7,26,52,40,86,36,80,66
52,85,6,13,7,57,51,42,66,33,11,78,51,43,21,55,13,38,90,47,73,18,65,80,89,11,85,25,n,48,33,47,33,12,65,28,42,80,89,58,24,65,46,23,20,72,92,51,82,40,85,67,79,50,87,27,31,74,71,84,41,84,55,16,43,61
72,58,16,98,95,38,35,17,83,22,37,55,1,18,25,75,0,39,64,35,76,94,3,42,86,97,36,68,49,?,5,23,62,8,79,56,32,30,86,8,13,17,76,43,82,74,82,90,47,6,79,57,95,44,40,9,59,25,75,6,90,39,97,18,38,93
48,14,7,47,65,92,98,96,23,3,41,21,17,3,1,99,3,57,13,50,81,58,43,2,33,68,33,72,1,66,i,80,26,11,83,35,29,28,75,38,13,66,71,32,57,67,10,56,46,27,82,9,28,29,99,44,35,22,56,2,99,28,2,29,56,76
77,34,47,96,48,73,58,81,28,52,58,1,4,65,57,72,52,66,37,46,51,95,23,0,15,86,7,95,81,63,87,d,46,78,47,83,26,3,6,77,44,3,30,9,43,27,37,37,98,11,78,82,22,36,11,93,53,85,49,4,7,38,24,63,85,11
47,8,16,16,52,47,55,31,51,2,18,24,51,8,21,7,6,21,59,91,88,53,67,92,58,99,51,67,9,28,5,87,=,61,23,10,56,4,63,23,28,21,14,18,66,60,58,94,37,65,10,70,79,28,7,27,29,83,93,6,1,27,90,92,27,1
56,33,68,16,13,21,83,10,94,95,96,58,16,97,82,24,87,1,19,73,25,17,0,35,79,41,16,58,90,58,81,80,41,1,11,30,97,67,84,49,57,29,46,56,40,21,85,93,10,93,36,67,18,35,46,50,3,57,90,72,4,66,24,69,16,19
13,10,91,85,32,71,26,58,91,15,29,7,78,10,51,18,54,40,39,34,33,68,81,63,61,38,68,98,40,72,9,59,50,89,G,28,17,10,12,23,86,74,52,25,76,27,10,20,77,26,20,62,13,80,57,73,67,7,35,8,64,27,99,81,10,66
54,0,69,6,70,76,91,1,44,32,17,92,90,8,15,48,80,38,9,89,37,36,92,62,82,8,65,4,70,75,85,95,21,17,21,6,8,56,73,40,9,61,42,7,81,20,23,67,45,59,44,69,78,91,83,45,38,44,27,26,57,4,55,9,84,96
81,80,83,83,56,46,84,81,64,45,52,31,60,30,61,97,81,50,48,51,44,96,12,23,52,42,81,10,26,69,37,76,78,86,34,73,S,97,59,99,85,96,80,52,41,16,92,28,18,19,80,70,71,3,63,41,59,83,5,3,72,40,15,75,27,56
52,90,46,54,34,61,72,40,42,97,56,62,8,90,72,59,37,67,5,74,93,16,38,91,71,1,61,5,59,96,37,54,72,59,71,85,70,E,0,30,45,68,1,36,43,13,6,14,91,45,10,25,38,46,79,25,66,53,94,43,16,28,48,10,37,65
1,30,24,32,76,13,51,44,65,61,26,91,9,96,39,35,34,50,89,68,80,78,58,14,57,31,1,47,72,42,75,60,70,16,54,67,71,0,g,49,10,87,70,89,86,94,95,52,39,74,1,89,15,28,51,94,65,38,54,63,29,88,69,46,33,10
84,58,35,83,52,88,97,59,30,49,40,79,53,89,46,48,59,64,50,2,33,29,61,19,78,20,42,34,31,75,49,35,10,56,65,19,58,15,35,g,37,34,52,82,58,4,89,69,44,22,17,95,99,89,57,16,26,30,95,8,10,67,18,52,1,90
81,26,39,84,11,69,31,6,13,2,52,20,59,54,75,81,98,66,8,29,41,41,98,49,82,79,45,38,96,78,71,53,84,20,50,32,38,52,16,99,0,45,64,51,19,69,85,95,34,94,75,28,43,66,34,33,19,63,60,26,30,54,93,92,45,81
89,6,88,71,63,12,60,84,87,61,49,28,5,67,59,23,25,33,0,12,42,95,32,29,70,76,97,94,74,91,50,3,24,72,8,72,19,74,67,18,47,1,12,30,49,2,45,19,37,62,14,21,38,51,36,30,31,44,81,46,72,90,28,70,54,70
29,52,73,76,18,24,25,59,90,9,70,75,17,18,66,4,62,87,32,76,30,28,70,2,74,56,5,35,49,20,37,40,18,80,90,53,22,76,87,32,20,85,8,14,17,15,69,94,79,81,96,3,85,42,80,26,92,46,47,98,56,78,56,59,91,36
73,16,76,6,49,33,17,65,89,43,30,72,17,30,79,4,92,85,96,69,36,55,46,66,40,24,35,90,88,73,61,26,54,22,34,4,90,34,63,28,18,5,14,U,12,9,65,27,46,48,57,22,14,40,26,96,18,5,30,26,90,15,66,37,47,78
56,55,90,8,59,81,80,95,67,73,73,46,11,91,24,33,67,70,37,56,55,60,70,58,22,70,4,25,15,27,77,88,40,6,15,23,52,55,56,23,0,49,65,45,B,47,67,6,55,39,86,75,96,98,50,31,78,93,56,65,23,94,96,15,31,63
76,68,47,72,96,65,27,54,76,10,67,51,38,91,7,55,47,9,25,44,71,92,35,64,20,3,92,36,63,14,39,46,35,14,87,15,39,3,64,95,56,59,19,25,81,4,40,42,39,45,97,1,49,58,93,87,3,41,15,88,35,53,0,35,20,20
16,19,51,42,81,49,35,83,36,63,76,70,49,79,11,35,71,71,31,34,4,71,9,24,35,28,39,56,24,2,17,72,73,41,92,16,18,9,53,6,18,10,65,34,79,79,_,50,72,80,28,47,52,7,27,46,0,6,29,91,47,92,94,47,37,75
19,4,25,8,60,87,61,91,15,92,46,1,57,92,47,46,9,14,32,21,74,76,47,48,22,95,26,9,17,75,13,79,44,30,15,61,47,6,46,83,52,73,56,74,84,31,82,4,32,7,27,4,43,92,46,62,1,97,16,73,27,68,39,34,70,69
24,85,23,49,54,18,90,36,33,73,98,19,16,67,44,12,72,89,85,9,71,9,98,81,34,77,60,10,91,93,63,22,69,63,13,75,6,29,52,23,45,98,55,23,37,66,91,11,x,66,86,0,37,12,44,16,67,93,34,5,69,70,23,40,36,99
94,53,29,95,87,91,38,68,83,8,83,18,85,64,62,9,88,81,3,43,78,31,72,68,50,95,20,68,89,56,58,53,31,32,7,71,29,33,66,23,38,96,52,45,86,69,41,46,49,s,87,33,40,52,13,19,89,56,96,97,40,66,10,51,56,19
53,57,90,2,83,91,55,85,25,41,76,3,15,77,73,82,13,94,27,41,50,5,55,24,5,21,27,91,2,52,66,13,94,7,95,28,88,11,60,62,15,32,49,19,56,95,88,52,23,94,A,88,95,48,5,48,30,60,35,74,63,20,27,75,57,63
6,49,57,86,37,12,65,80,16,9,38,89,50,30,66,89,65,66,39,33,59,40,10,16,98,34,20,83,71,34,7,83,80,27,11,43,94,92,10,69,6,23,90,19,22,18,51,11,39,61,1,J,47,95,41,61,74,83,59,70,35,30,6,43,74,59
55,44,50,29,44,62,9,38,9,68,74,59,49,45,8,35,40,94,50,92,26,44,59,5,63,14,95,20,72,62,82,51,23,83,34,33,39,63,13,69,58,85,45,71,38,6,97,76,19,57,93,25,J,38,9,86,27,88,67,40,33,2,55,74,74,32
95,30,9,12,70,67,94,79,84,72,6,98,47,67,66,25,72,28,73,44,87,85,25,53,53,61,46,67,87,88,46,63,91,68,40,96,54,76,95,60,37,13,58,13,30,51,11,86,87,36,90,45,29,5,3,43,33,19,1,25,76,90,75,55,53,60
40,82,59,48,63,75,65,18,29,8,89,1,23,13,64,63,15,91,97,33,86,57,47,45,96,73,96,5,35,41,90,6,68,73,23,25,24,25,64,8,25,20,48,22,93,7,59,29,87,17,33,48,16,91,T,19,2,23,56,77,23,99,12,37,55,60
88,38,20,30,1,77,19,42,95,70,70,14,27,96,5,11,85,83,91,0,88,11,94,80,42,87,94,73,44,62,74,10,5,29,18,43,62,11,11,61,77,68,90,63,83,58,41,41,96,61,57,35,21,47,4,d,11,40,23,58,94,64,94,6,92,51
72,92,11,92,62,13,10,56,70,89,16,27,53,26,91,34,32,34,42,75,47,59,23,23,34,17,20,7,98,30,64,40,98,77,74,39,75,94,55,46,32,96,33,22,46,80,30,71,41,14,49,40,66,84,40,4,z,20,52,73,40,29,52,19,29,1
80,55,68,59,49,84,54,59,48,63,67,53,80,75,68,6,33,33,4,67,82,7,99,94,57,42,7,77,70,40,57,57,40,41,51,85,87,29,96,56,11,6,48,63,10,39,90,68,34,38,0,90,41,78,16,19,66,r,30,58,37,89,61,61,76,45
70,9,52,79,19,98,74,11,15,51,17,39,81,41,32,28,35,53,23,18,60,84,39,27,95,68,2,47,51,43,46,39,17,41,98,15,34,76,75,7,1,96,74,90,49,73,15,46,42,40,75,55,77,53,2,35,46,4,h,51,11,74,13,47,81,36
75,12,2,58,16,45,26,1,48,74,27,73,65,93,75,94,0,98,66,26,11,0,21,63,36,0,60,94,54,78,33,19,13,26,48,66,27,39,4,27,96,19,32,7,24,51,85,36,15,46,28,64,40,72,28,80,35,90,2,m,99,91,70,47,85,49
68,16,0,31,44,34,85,12,53,43,59,51,10,42,91,42,92,19,3,73,15,33,94,50,81,97,66,11,52,87,26,36,24,92,26,2,83,64,12,12,64,76,41,14,18,95,46,8,7,41,37,34,20,47,93,21,90,26,8,80,X,90,84,53,80,1
70,15,70,62,65,32,53,3,22,57,86,74,61,89,96,40,27,32,12,70,66,57,4,93,57,69,36,86,38,99,3,45,42,78,61,44,88,61,61,82,26,25,53,59,53,54,59,51,17,95,24,22,69,19,36,3,91,87,85,40,13,i,60,44,35,92
29,65,93,3,73,70,63,28,44,87,91,97,56,71,91,85,16,68,96,70,93,61,62,13,59,31,26,10,61,67,97,10,82,88,32,45,15,94,98,21,71,86,92,84,0,62,47,19,59,53,79,42,16,32,55,66,79,39,52,27,84,44,p,84,49,78
77,98,39,6,26,16,86,11,24,88,39,39,76,67,51,68,52,69,72,89,49,70,73,35,83,31,73,17,80,66,89,76,1,31,6,84,28,24,86,39,16,14,78,87,44,81,62,82,23,96,76,60,58,39,42,74,95,19,99,16,2,71,32,r,30,65
52,38,49,63,33,37,18,60,99,27,47,0,32,42,86,28,93,26,26,88,60,44,38,95,2,27,81,3,24,69,3,49,5,82,7,94,52,55,28,77,98,8,20,90,46,20,39,16,30,13,94,9,58,83,7,73,17,33,71,60,50,84,14,64,4,23
51,70,63,34,84,97,80,31,41,82,15,35,93,25,62,31,87,18,28,74,4,80,87,97,9,78,40,56,43,28,12,25,32,94,41,95,26,76,86,94,88,71,72,72,15,93,1,47,55,41,12,23,23,46,99,77,63,12,18,63,55,2,0,58,25,Q
================================================
FILE: 15-PDFs-and-Spreadsheets/example.csv
================================================
id,first_name,last_name,email,gender,ip_address,city
1,Joseph,Zaniolini,jzaniolini0@simplemachines.org,Male,163.168.68.132,Pedro Leopoldo
2,Freida,Drillingcourt,fdrillingcourt1@umich.edu,Female,97.212.102.79,Buri
3,Nanni,Herity,nherity2@statcounter.com,Female,145.151.178.98,Claver
4,Orazio,Frayling,ofrayling3@economist.com,Male,25.199.143.143,Kungur
5,Julianne,Murrison,jmurrison4@cbslocal.com,Female,10.186.243.144,Sainte-Luce-sur-Loire
6,Lucy,Gamet,lgamet5@list-manage.com,Female,10.151.93.36,Pak Phli
7,Dyana,Howatt,dhowatt6@amazon.com,Female,224.169.61.29,Palmares
8,Kassey,Herion,kherion7@amazon.com,Female,245.51.154.79,Zákynthos
9,Chrissy,Hedworth,chedworth8@china.com.cn,Male,124.222.93.57,Boevange-sur-Attert
10,Hyatt,Gasquoine,hgasquoine9@google.ru,Male,221.155.106.39,Złoty Stok
11,Felicdad,Tarr,ftarra@shareasale.com,Female,145.203.98.173,Salamnunggal
12,Andrew,Bath,abathb@umn.edu,Male,64.36.30.186,El Hermel
13,Lucais,Chastang,lchastangc@goo.gl,Male,142.182.6.86,Tilburg
14,Car,Cerie,cceried@yale.edu,Male,203.204.69.107,Shofirkon
15,Alvera,Jepp,ajeppe@umich.edu,Female,202.150.229.139,New Sibonga
16,Prescott,Caldeiro,pcaldeirof@chronoengine.com,Male,29.81.197.109,Patzicía
17,Nariko,Clunie,nclunieg@utexas.edu,Female,237.85.98.58,Umuarama
18,Kalvin,Rois,kroish@unicef.org,Male,75.20.57.166,Marsh Harbour
19,Isa,Boycott,iboycotti@dailymail.co.uk,Female,48.82.184.239,Kalix
20,Benedetta,Glanert,bglanertj@timesonline.co.uk,Female,209.194.38.175,Tianxin
21,Poul,Caroli,pcarolik@cam.ac.uk,Male,176.134.222.111,Dingcheng
22,Virgie,Dran,vdranl@independent.co.uk,Male,87.224.43.109,Changpu
23,Gillie,Roantree,groantreem@nba.com,Female,240.133.255.198,Lirung
24,Tabor,Dawidowitsch,tdawidowitschn@free.fr,Male,102.236.160.230,Lamalera
25,Sarina,Choulerton,schoulertono@wisc.edu,Female,73.36.0.165,Íquira
26,Elbert,Seawell,eseawellp@live.com,Male,116.69.73.19,Vitória
27,Danita,Aldrin,daldrinq@wired.com,Female,98.171.121.136,Bringinanom
28,Jone,Dank,jdankr@miibeian.gov.cn,Male,188.201.52.190,Xiancun
29,Merralee,Lampel,mlampels@a8.net,Female,131.52.216.81,West Hartford
30,Charyl,Halstead,chalsteadt@amazon.de,Female,20.219.12.180,Las Vegas
31,Giuseppe,Karolowski,gkarolowskiu@narod.ru,Male,171.177.109.165,Mlangali
32,Sutherlan,Mundee,smundeev@nsw.gov.au,Male,68.91.169.230,Keluke
33,Alexander,Oldershaw,aoldershaww@so-net.ne.jp,Male,38.108.66.54,Capitán Bado
34,Blayne,Mattusevich,bmattusevichx@foxnews.com,Male,227.51.230.208,Vykhino-Zhulebino
35,Alfredo,Bohlens,abohlensy@nih.gov,Male,219.50.104.169,Lazaro Cardenas
36,Harman,Braidwood,hbraidwoodz@amazon.com,Male,100.123.214.249,Täby
37,Haslett,Sudron,hsudron10@nps.gov,Male,168.21.120.107,Oyabe
38,Jeanelle,VanBrugh,jvanbrugh11@cocolog-nifty.com,Female,59.112.24.10,Weifen
39,Hetty,Lightollers,hlightollers12@comsenz.com,Female,199.246.118.133,Château-Richer
40,Elmira,Goodhand,egoodhand13@tripadvisor.com,Female,83.5.248.21,Nytva
41,Granger,Lewerenz,glewerenz14@about.me,Male,126.53.131.38,Itambacuri
42,Tobie,Lewson,tlewson15@marriott.com,Male,111.144.164.250,Lushikeng
43,Knox,Sainteau,ksainteau16@ning.com,Male,169.28.54.18,Jiezi
44,Eliot,Vedekhov,evedekhov17@jiathis.com,Male,235.14.147.198,Stockholm
45,Honey,Crenshaw,hcrenshaw18@github.io,Female,200.207.16.70,Nanyue
46,Karmen,Soppitt,ksoppitt19@cdc.gov,Female,21.73.69.9,Anseong
47,Fairleigh,Sivess,fsivess1a@free.fr,Male,141.156.151.157,Vienna
48,Angelina,Stranio,astranio1b@latimes.com,Female,215.130.119.210,Chitral
49,Lilla,Erni,lerni1c@dailymotion.com,Female,244.94.188.95,Jiannan
50,Penn,Batson,pbatson1d@vimeo.com,Male,41.104.204.213,Caldas Novas
51,Salvidor,Cawthry,scawthry1e@youtu.be,Male,68.84.121.114,Habartov
52,Ker,Kellock,kkellock1f@japanpost.jp,Male,13.216.243.76,Guanlu
53,Lorne,Smouten,lsmouten1g@noaa.gov,Female,84.97.70.93,Nice
54,Elijah,Sore,esore1h@wikia.com,Male,189.118.42.113,La Romana
55,Paxton,Chsteney,pchsteney1i@msn.com,Male,123.81.121.141,Labin
56,Ernie,Eddies,eeddies1j@disqus.com,Male,60.57.254.84,Książ Wielkopolski
57,Deb,Endicott,dendicott1k@buzzfeed.com,Female,29.187.172.187,Gamagōri
58,Morna,Masse,mmasse1l@vkontakte.ru,Female,245.114.22.71,Itaparica
59,Gregorius,Drains,gdrains1m@samsung.com,Male,9.2.68.145,Medovene
60,Raynard,Teaz,rteaz1n@issuu.com,Male,220.0.194.145,Birātnagar
61,Harrietta,Northey,hnorthey1o@hostgator.com,Female,165.48.131.46,Columbus
62,Cariotta,Le Breton De La Vieuville,clebretondelavieuville1p@sfgate.com,Female,218.154.55.94,Guanqian
63,Lisetta,Allbones,lallbones1q@reddit.com,Female,240.28.254.181,Higetegera
64,Danielle,Jeduch,djeduch1r@ovh.net,Female,26.236.61.218,Dadiharja
65,Ingra,Andriolli,iandriolli1s@ucoz.com,Male,186.119.76.202,Dananshan
66,Ferdinand,Cruickshanks,fcruickshanks1t@lulu.com,Male,133.165.27.191,Saint Cloud
67,Salomi,Pinnock,spinnock1u@hc360.com,Female,20.234.128.32,Venda
68,Lurlene,Snazel,lsnazel1v@smh.com.au,Female,244.2.252.88,Hitiaa
69,Penni,Sells,psells1w@booking.com,Female,245.53.159.172,Asahi
70,Stormie,Dougal,sdougal1x@cbc.ca,Female,63.157.30.92,Woniuhe
71,Baily,Hallwell,bhallwell1y@usnews.com,Male,55.151.17.139,Taytayan
72,Kristofor,Recke,krecke1z@microsoft.com,Male,12.155.58.230,Lukavec
73,Cherey,Dorricott,cdorricott20@cbslocal.com,Female,198.238.41.228,Batabanó
74,Phillip,Bartolijn,pbartolijn21@biblegateway.com,Male,46.108.220.240,Huskvarna
75,Karil,Hefford,khefford22@t.co,Female,238.187.151.199,Příbor
76,Loise,Issacof,lissacof23@dagondesign.com,Female,141.102.16.185,Shangdongjie
77,Rickie,Laybourn,rlaybourn24@nasa.gov,Male,39.144.8.98,Nova Varoš
78,Orella,Giacomuzzo,ogiacomuzzo25@alibaba.com,Female,10.142.244.217,Uglich
79,Calli,D'orsay,cdorsay26@home.pl,Female,66.172.27.41,Fort Lauderdale
80,Harli,Fakeley,hfakeley27@blogger.com,Female,187.170.131.49,Tempaling
81,Edvard,Morilla,emorilla28@ycombinator.com,Male,18.246.230.179,Emiliano Zapata
82,Almira,Eastmead,aeastmead29@soundcloud.com,Female,171.92.72.40,Göteborg
83,Kort,Blooman,kblooman2a@imgur.com,Male,245.7.50.99,Oenaik
84,Sigmund,Sessions,ssessions2b@bizjournals.com,Male,218.191.236.117,Bordeaux
85,Winna,Dodshon,wdodshon2c@tinypic.com,Female,104.5.161.50,Casselman
86,Norton,Raiston,nraiston2d@nydailynews.com,Male,38.85.237.249,Rudnyy
87,Moss,Doche,mdoche2e@microsoft.com,Male,113.41.249.243,Egvekinot
88,Jeanna,Mazey,jmazey2f@naver.com,Female,71.33.138.94,Wolomoni
89,Kerrin,Rojahn,krojahn2g@delicious.com,Female,42.80.219.36,Sonder
90,Luca,Frazier,lfrazier2h@i2i.jp,Male,217.45.176.54,Safed
91,Faina,Jarville,fjarville2i@si.edu,Female,15.70.138.160,Limoges
92,Skelly,Cragg,scragg2j@naver.com,Male,58.82.80.21,Wang Saphung
93,Mike,Kennewell,mkennewell2k@virginia.edu,Male,66.171.238.162,Pinghu
94,Trever,Bradie,tbradie2l@merriam-webster.com,Male,34.247.7.142,Pryluky
95,Ferdinande,Drought,fdrought2m@goo.gl,Female,38.16.55.1,Pajé
96,Brenda,Guiel,bguiel2n@time.com,Female,203.120.94.122,Bilalang
97,Matthiew,Vanyukov,mvanyukov2o@discovery.com,Male,57.225.42.87,Nehe
98,Rosalie,Stribbling,rstribbling2p@wiley.com,Female,153.96.166.231,Chinameca
99,Flor,Giuron,fgiuron2q@storify.com,Female,223.47.130.90,Forssa
100,Ax,Bristowe,abristowe2r@live.com,Male,61.225.63.247,Francisco Beltrão
101,Guglielma,Magenny,gmagenny2s@flavors.me,Female,186.78.157.147,Otjimbingwe
102,Kyla,Crosse,kcrosse2t@bluehost.com,Female,120.253.177.94,Orissaare
103,Brittan,Bubb,bbubb2u@dailymail.co.uk,Female,105.193.213.100,Bech
104,Corri,Rubinowicz,crubinowicz2v@europa.eu,Female,211.112.231.38,Bhamdoûn el Mhatta
105,Korney,Prestidge,kprestidge2w@bing.com,Female,135.251.129.49,Gaobu
106,Paddie,Dary,pdary2x@redcross.org,Male,28.53.58.92,Xukou
107,Ase,Fibbens,afibbens2y@whitehouse.gov,Male,206.131.76.218,Örebro
108,Susi,Pawsey,spawsey2z@zimbio.com,Female,164.219.128.94,Couço
109,Jo,Walak,jwalak30@dedecms.com,Female,236.66.83.1,Dyurtyuli
110,Ardelia,Vasilyonok,avasilyonok31@blogspot.com,Female,122.49.55.191,Yege
111,Alis,Stammer,astammer32@vimeo.com,Female,27.139.204.173,Panggung
112,Al,Gravatt,agravatt33@1und1.de,Male,122.159.232.76,Rio Meão
113,Osborne,Fendlow,ofendlow34@tuttocitta.it,Male,233.92.178.182,Uzdin
114,Brook,Purvey,bpurvey35@dell.com,Female,132.148.245.215,Dahewan
115,Mag,Feechan,mfeechan36@last.fm,Female,120.208.15.245,Dijon
116,Luigi,Reaveley,lreaveley37@wp.com,Male,202.197.85.83,Loei
117,Tymon,Castro,tcastro38@gov.uk,Male,59.83.8.250,Utrecht
118,Minnaminnie,MacNair,mmacnair39@archive.org,Female,87.11.75.217,Desē
119,Hugues,MacFarlane,hmacfarlane3a@facebook.com,Male,185.39.40.240,Albuquerque
120,Fianna,Moizer,fmoizer3b@scientificamerican.com,Female,25.220.76.173,Esperanza
121,Morton,Derby,mderby3c@ask.com,Male,123.182.139.240,Sentani
122,Carita,Tomet,ctomet3d@timesonline.co.uk,Female,66.53.175.101,Ecroignard
123,Beulah,MacGowan,bmacgowan3e@squarespace.com,Female,76.220.38.70,Aquiraz
124,Etta,Riccardelli,ericcardelli3f@sciencedaily.com,Female,35.86.169.215,Yangyuan
125,Udall,Chevers,uchevers3g@surveymonkey.com,Male,173.151.137.127,Santa María del Real
126,Javier,Spitell,jspitell3h@wordpress.com,Male,102.218.85.174,Qinghua
127,Munmro,Snelling,msnelling3i@php.net,Male,165.120.45.84,Chinju
128,Carina,Moxon,cmoxon3j@usda.gov,Female,56.126.144.88,Wangjiang
129,Crissy,Murdie,cmurdie3k@biblegateway.com,Female,222.219.220.191,Santana do Livramento
130,Karrah,Danshin,kdanshin3l@linkedin.com,Female,87.33.117.4,Dizangué
131,Idalina,Hartup,ihartup3m@amazon.de,Female,163.148.108.83,Lyon
132,Denice,Cargon,dcargon3n@usda.gov,Female,163.199.140.236,Huai Mek
133,Courtnay,Tosh,ctosh3o@list-manage.com,Male,61.103.199.171,Yonago
134,Harp,Szymoni,hszymoni3p@angelfire.com,Male,203.168.199.52,Rosa Zarate
135,Franklin,Tregian,ftregian3q@shutterfly.com,Male,232.233.181.45,Rinconada
136,Celestyna,Jacquemy,cjacquemy3r@berkeley.edu,Female,227.98.162.186,Tangba
137,Silva,Pittham,spittham3s@ibm.com,Female,18.77.14.20,Rayevskiy
138,Kendra,Arnow,karnow3t@seesaa.net,Female,39.239.56.41,Lai Lai Bisi Kopan
139,Cordie,Monier,cmonier3u@harvard.edu,Female,88.168.111.250,Mekarsari
140,Tabbitha,Padbery,tpadbery3v@woothemes.com,Female,59.255.253.233,Cangchang
141,Haydon,Sheran,hsheran3w@spiegel.de,Male,144.228.58.140,Vsevolozhsk
142,Halli,Clempton,hclempton3x@google.co.uk,Female,158.166.191.11,Pamedaran
143,Gwenette,Helling,ghelling3y@discuz.net,Female,49.89.225.10,Santiago Atitlán
144,Ermina,Carff,ecarff3z@tinyurl.com,Female,172.50.40.26,Šabac
145,Tedd,Howler,thowler40@thetimes.co.uk,Male,60.102.22.137,Beiyuan
146,Wren,Janc,wjanc41@nhs.uk,Female,190.72.127.18,Ngampon
147,Anatola,Upsale,aupsale42@hc360.com,Female,20.144.225.200,Murici
148,Ken,Muirhead,kmuirhead43@hatena.ne.jp,Male,63.37.36.62,Sete Lagoas
149,Jerri,Bohje,jbohje44@livejournal.com,Male,108.147.35.164,Sanfang
150,Julie,Kopacek,jkopacek45@deviantart.com,Female,126.102.0.5,Borova
151,Ingelbert,Loveday,iloveday46@aboutads.info,Male,112.68.23.230,São Leopoldo
152,Elaina,Yanez,eyanez47@ft.com,Female,146.218.1.99,Barrī ash Sharqī
153,Uri,Aven,uaven48@fema.gov,Male,128.86.185.16,Wichit
154,Ally,Clausen-Thue,aclausenthue49@latimes.com,Female,187.65.40.149,Xinxiang
155,Ki,Clew,kclew4a@pagesperso-orange.fr,Female,147.209.17.246,Cristalina
156,Francesca,Cottham,fcottham4b@hc360.com,Female,147.137.122.252,Viga
157,Aida,Mundy,amundy4c@ftc.gov,Female,12.248.131.213,Liaodian
158,Aloin,Dimelow,adimelow4d@tamu.edu,Male,7.12.91.0,Bandjoun
159,Edgar,Raithbie,eraithbie4e@elegantthemes.com,Male,235.182.131.31,Bau
160,Thorvald,Gunstone,tgunstone4f@yahoo.co.jp,Male,148.136.238.100,Berat
161,Temp,Karet,tkaret4g@slideshare.net,Male,250.187.91.149,Baishui
162,Corinna,Naismith,cnaismith4h@privacy.gov.au,Female,75.78.185.215,Zgornje Pirniče
163,Cinnamon,Birchenhead,cbirchenhead4i@multiply.com,Female,234.89.1.155,Nyima
164,Tilda,Couser,tcouser4j@google.nl,Female,31.237.176.246,Mayingzhuang
165,Tildi,Kimbell,tkimbell4k@phoca.cz,Female,15.223.38.138,Bela Vista do Paraíso
166,Jeno,Marran,jmarran4l@harvard.edu,Male,194.220.226.188,Pocpo
167,Mariska,Noble,mnoble4m@mayoclinic.com,Female,0.111.136.34,Luxi
168,Rozelle,Northrop,rnorthrop4n@wikimedia.org,Female,86.238.26.49,Chajarí
169,Petey,Thompkins,pthompkins4o@shinystat.com,Male,227.60.166.151,Librazhd-Qendër
170,Alvie,Pyffe,apyffe4p@economist.com,Male,73.125.141.205,Villeta
171,Kev,MacKniely,kmackniely4q@dailymail.co.uk,Male,144.254.97.110,Candelaria
172,Matelda,Wycliffe,mwycliffe4r@squarespace.com,Female,167.147.234.88,Lurugan
173,Leoline,Flawith,lflawith4s@theglobeandmail.com,Female,80.161.40.207,Sumuranyar
174,Malachi,Fodden,mfodden4t@smugmug.com,Male,154.32.206.224,Shengli
175,Pierrette,Abramow,pabramow4u@github.io,Female,112.65.143.82,Pingshan
176,Lynn,Sames,lsames4v@slideshare.net,Male,155.216.183.177,Tarxien
177,Krisha,Jinkins,kjinkins4w@list-manage.com,Male,194.242.214.77,Odessa
178,Cassie,Bramich,cbramich4x@youku.com,Male,254.54.219.96,Guashe
179,Cynthia,MacTurlough,cmacturlough4y@zimbio.com,Female,113.131.18.92,Outjo
180,Care,Lademann,clademann4z@meetup.com,Male,48.109.141.160,Lyon
181,Torrey,Nye,tnye50@merriam-webster.com,Male,163.205.132.15,Ol Kalou
182,Conni,Higgan,chiggan51@deliciousdays.com,Female,27.37.172.124,Ambatondrazaka
183,Franky,Casarini,fcasarini52@jugem.jp,Male,61.104.43.130,Meikeng
184,Alva,Feechan,afeechan53@ftc.gov,Male,24.199.160.151,Priiskovyy
185,Gaby,Synder,gsynder54@eventbrite.com,Male,44.16.40.151,Balkanabat
186,Andy,Varley,avarley55@wikimedia.org,Female,152.252.64.126,Chechenglu
187,Ronda,Heavens,rheavens56@nifty.com,Female,142.133.134.72,Gelgaudiškis
188,Elwin,Hounsham,ehounsham57@intel.com,Male,109.129.250.250,Tinta
189,Faythe,Pither,fpither58@stumbleupon.com,Female,203.197.153.39,Zárate
190,Carling,Arkell,carkell59@java.com,Male,117.87.70.174,Huotian
191,Kurtis,Saddington,ksaddington5a@cloudflare.com,Male,236.232.152.19,Dobrošte
192,Dennison,Woolatt,dwoolatt5b@addthis.com,Male,189.16.13.93,Ciudad Barrios
193,Leda,Luchetti,lluchetti5c@posterous.com,Female,42.106.29.243,Kurikka
194,Britt,Vile,bvile5d@myspace.com,Male,122.214.119.113,Ciénaga de Oro
195,Gertrude,Iddison,giddison5e@youtube.com,Female,234.143.79.113,Gribanovskiy
196,Kathi,Kerne,kkerne5f@bigcartel.com,Female,80.58.158.31,Vila Verde
197,Caitlin,Zannutti,czannutti5g@behance.net,Female,229.43.64.104,Luodian
198,Sanson,Ramelot,sramelot5h@smugmug.com,Male,207.245.213.229,Mercedes
199,Krista,Cowoppe,kcowoppe5i@cam.ac.uk,Female,11.118.28.185,Xiugu
200,Laurella,Hotchkin,lhotchkin5j@google.co.uk,Female,148.210.240.171,Kashmor
201,Juliane,Koba,jkoba5k@hao123.com,Female,180.61.20.67,Quanyang
202,Tobe,Hamlyn,thamlyn5l@wikimedia.org,Female,5.202.34.4,Oleszyce
203,Neddie,Kwietek,nkwietek5m@edublogs.org,Male,183.80.63.200,Klichaw
204,Dav,Donet,ddonet5n@sciencedirect.com,Male,147.79.187.128,Cabinda
205,Amelia,Peggs,apeggs5o@huffingtonpost.com,Female,187.127.231.43,Yashikera
206,Robby,Heijnen,rheijnen5p@4shared.com,Female,67.244.110.49,Rosh Ha‘Ayin
207,Loria,Serrier,lserrier5q@hibu.com,Female,87.68.60.140,Tushi
208,Nan,Witch,nwitch5r@quantcast.com,Female,10.116.94.61,Grande Rivière Noire
209,Mauricio,Curr,mcurr5s@cyberchimps.com,Male,175.29.39.95,Satinka
210,Micheal,Whiteson,mwhiteson5t@cocolog-nifty.com,Male,78.18.193.69,Energetik
211,Denys,Esmonde,desmonde5u@addtoany.com,Female,134.171.231.179,Pantian
212,Sibilla,Stachini,sstachini5v@dyndns.org,Female,66.219.114.10,Rio Grande da Serra
213,Enrique,Roman,eroman5w@elegantthemes.com,Male,226.155.134.108,Gunungmalang Satu
214,Edyth,Macartney,emacartney5x@elegantthemes.com,Female,26.161.138.37,Preobrazheniye
215,Lisetta,Bigglestone,lbigglestone5y@mit.edu,Female,32.115.116.0,Baikouquan
216,Colin,Younghusband,cyounghusband5z@jiathis.com,Male,123.91.16.2,Bojong
217,Britni,Cottham,bcottham60@soundcloud.com,Female,54.243.80.13,Köln
218,Matias,Tudor,mtudor61@squarespace.com,Male,71.254.115.118,Čeladná
219,Carina,O' Ronan,coronan62@techcrunch.com,Female,114.82.73.15,Lianzhou
220,Albrecht,Airds,aairds63@drupal.org,Male,209.213.159.128,Palaiomonástiron
221,Randy,Sazio,rsazio64@zimbio.com,Female,7.28.169.35,Shuangxiqiao
222,Timmie,Scotti,tscotti65@hc360.com,Female,134.67.132.81,Banyuresmi
223,Gerik,Milligan,gmilligan66@ustream.tv,Male,142.157.153.130,San Isidro
224,Ardys,Diben,adiben67@ucoz.com,Female,251.238.123.72,Petit Valley
225,Ellery,Bruni,ebruni68@army.mil,Male,148.186.246.133,Prienai
226,Clarence,Blenkiron,cblenkiron69@com.com,Male,84.85.162.222,Phan Thong
227,Jackie,Jiruch,jjiruch6a@topsy.com,Male,206.140.145.145,Norrahammar
228,Melisent,Northwood,mnorthwood6b@mozilla.com,Female,72.52.196.40,Guilmaro
229,Jeffy,Dalliston,jdalliston6c@tinyurl.com,Male,205.104.32.164,Campamento
230,Joanne,Lyburn,jlyburn6d@networkadvertising.org,Female,31.91.254.237,Guitang
231,Yulma,Castagneri,ycastagneri6e@discovery.com,Male,25.83.169.104,Irecê
232,Marielle,Chrystal,mchrystal6f@blogs.com,Female,195.131.48.31,Paragominas
233,Haskell,Klimshuk,hklimshuk6g@weather.com,Male,46.170.163.107,Dłutów
234,Cob,Mardall,cmardall6h@photobucket.com,Male,196.121.158.67,Viljoenskroon
235,Shep,Voyce,svoyce6i@linkedin.com,Male,253.119.174.230,Kumanis
236,Geno,Crayden,gcrayden6j@1und1.de,Male,185.131.197.241,København
237,Friedrich,Giblin,fgiblin6k@vk.com,Male,121.157.210.85,Santa Fe
238,Desmund,Belamy,dbelamy6l@amazon.co.jp,Male,225.134.142.182,Oefau
239,Rafe,Wratten,rwratten6m@seattletimes.com,Male,34.104.18.249,Ncue
240,Flo,Sorrie,fsorrie6n@nationalgeographic.com,Female,92.239.41.42,Rachanie
241,Elvina,Dulwitch,edulwitch6o@sourceforge.net,Female,209.9.197.182,Gilowice
242,Dell,Rafe,drafe6p@issuu.com,Male,217.9.123.178,Espírito Santo do Pinhal
243,Diena,Jahan,djahan6q@salon.com,Female,14.136.254.55,Kotakan Selatan
244,Gino,Skuce,gskuce6r@yale.edu,Male,14.73.136.196,Dingle
245,Heath,Eastmond,heastmond6s@geocities.jp,Female,97.228.113.200,Akhaltsikhe
246,Meg,McKirdy,mmckirdy6t@drupal.org,Female,236.162.213.87,Shuitou
247,Hastie,Hadley,hhadley6u@yelp.com,Male,247.243.188.92,RMI Capitol
248,Westleigh,Willetts,wwilletts6v@nhs.uk,Male,254.201.29.160,Berthierville
249,Lee,Bagnal,lbagnal6w@yahoo.co.jp,Female,149.85.96.127,Psygansu
250,Hildegaard,Fairey,hfairey6x@biglobe.ne.jp,Female,163.32.149.210,Thanatpin
251,Easter,Hamshere,ehamshere6y@freewebs.com,Female,79.63.202.214,Dalgān
252,Elton,Tows,etows6z@quantcast.com,Male,247.144.178.132,Yamkino
253,Verile,Gunning,vgunning70@infoseek.co.jp,Female,167.199.48.8,Barmash
254,Brandtr,Margeram,bmargeram71@php.net,Male,92.148.45.135,Nasilava
255,Ozzie,Zecchii,ozecchii72@sfgate.com,Male,106.126.179.46,Ruy Barbosa
256,Daniella,Jindra,djindra73@jigsy.com,Female,177.36.251.227,Yelets
257,Shoshanna,Stollsteimer,sstollsteimer74@mysql.com,Female,59.129.39.60,Az Zuwaytīnah
258,Benton,Jahnig,bjahnig75@bigcartel.com,Male,6.102.2.246,Avdzaga
259,Noel,Selliman,nselliman76@istockphoto.com,Male,116.13.38.101,Žirovnice
260,Clarke,Tidcomb,ctidcomb77@linkedin.com,Male,12.36.43.63,Budayuan
261,Brigitta,Haquin,bhaquin78@cdbaby.com,Female,240.150.196.238,Huangjinjing
262,Claribel,Dosedale,cdosedale79@barnesandnoble.com,Female,246.254.4.138,Dasol
263,Gallard,Wanden,gwanden7a@purevolume.com,Male,166.154.144.52,Wartburg
264,Marleah,Shevlan,mshevlan7b@surveymonkey.com,Female,251.253.123.90,Semey
265,Saundra,Butterfint,sbutterfint7c@redcross.org,Male,34.0.120.48,Sincelejo
266,Opalina,Bleier,obleier7d@posterous.com,Female,29.181.64.189,Monte Carmelo
267,Shaughn,Antoniades,santoniades7e@salon.com,Male,81.81.69.245,Lumphăt
268,Kathleen,Treswell,ktreswell7f@kickstarter.com,Female,60.7.118.238,Binlod
269,Mufinella,Santo,msanto7g@paypal.com,Female,152.225.165.64,Pavlodar
270,Marlin,Wheeliker,mwheeliker7h@dedecms.com,Male,254.47.9.106,Nîmes
271,Aldon,Wozencraft,awozencraft7i@meetup.com,Male,247.123.79.200,Liangdang Chengguanzhen
272,Beaufort,Petrello,bpetrello7j@latimes.com,Male,218.17.92.56,Diadi
273,Marmaduke,O'Malley,momalley7k@adobe.com,Male,98.67.111.52,Zapolyarnyy
274,Kathryn,MacManus,kmacmanus7l@hc360.com,Female,240.234.35.68,Anabar
275,Eve,Clother,eclother7m@bigcartel.com,Female,42.141.113.243,Milín
276,Obediah,Janus,ojanus7n@imageshack.us,Male,179.170.164.93,Pontinha
277,Emmy,Negri,enegri7o@merriam-webster.com,Male,105.235.29.160,Karangori
278,Mill,Wesson,mwesson7p@bizjournals.com,Male,53.112.190.129,Nōgata
279,Tiertza,Bullivent,tbullivent7q@dyndns.org,Female,131.45.227.60,Mehrābpur
280,Berne,Scrivener,bscrivener7r@mtv.com,Male,14.171.136.28,Weichanglu
281,Rozella,Shirlaw,rshirlaw7s@ask.com,Female,102.88.226.237,Manique de Baixo
282,Emmit,Cruttenden,ecruttenden7t@skyrock.com,Male,223.173.130.230,Guanshui
283,Iseabal,Terron,iterron7u@spiegel.de,Female,238.112.13.39,Krasiczyn
284,Michele,Garritley,mgarritley7v@nyu.edu,Female,146.115.120.2,Morcellemont Saint André
285,Theodoric,Deave,tdeave7w@exblog.jp,Male,154.19.56.42,Ugljan
286,Sibilla,Alesi,salesi7x@chron.com,Female,54.24.9.225,Xingou
287,Erick,Austick,eaustick7y@kickstarter.com,Male,249.246.133.232,Longvic
288,Hercules,Dowall,hdowall7z@example.com,Male,95.224.172.15,Talisayan
289,Ellene,Glisane,eglisane80@nyu.edu,Female,199.110.252.148,Palue
290,Bren,Marchenko,bmarchenko81@twitpic.com,Male,118.101.28.108,Songculan
291,Oralee,Letchmore,oletchmore82@indiatimes.com,Female,101.50.142.2,Mayenne
292,Hamilton,Horsley,hhorsley83@forbes.com,Male,159.74.111.25,Namur
293,Fanya,Gartan,fgartan84@si.edu,Female,153.208.82.105,Vancouver
294,Godfrey,Cattrell,gcattrell85@state.gov,Male,13.184.11.7,Abdurahmoni Jomí
295,Vania,Sinnott,vsinnott86@constantcontact.com,Female,255.197.190.77,Qiaolin
296,Osmond,Reichert,oreichert87@etsy.com,Male,116.212.149.203,Jixin
297,Colline,Meadowcroft,cmeadowcroft88@ihg.com,Female,242.3.203.109,Capalonga
298,Marybelle,Neathway,mneathway89@topsy.com,Female,116.124.132.29,Kaduluhur
299,Laetitia,Sidry,lsidry8a@livejournal.com,Female,40.242.52.39,Villa General Belgrano
300,Gasparo,Burr,gburr8b@apple.com,Male,188.118.237.96,Emiliano Zapata
301,Darin,Gitting,dgitting8c@delicious.com,Male,144.239.113.244,Jinpanling
302,Lotti,Linnock,llinnock8d@tripod.com,Female,134.251.34.59,Binkolo
303,Lilly,Annear,lannear8e@uiuc.edu,Female,220.213.130.67,Savonlinna
304,Freda,Winslade,fwinslade8f@angelfire.com,Female,185.228.131.81,Tayum
305,Stavros,McGeady,smcgeady8g@disqus.com,Male,135.200.148.69,Aketi
306,Marje,Fordyce,mfordyce8h@deliciousdays.com,Female,78.253.229.61,Rinbung
307,Willard,Widdall,wwiddall8i@dyndns.org,Male,189.158.78.106,Bagnères-de-Bigorre
308,Meridel,Ledford,mledford8j@taobao.com,Female,5.228.2.228,Doong
309,Catrina,Whiskerd,cwhiskerd8k@fema.gov,Female,25.106.94.89,Halimaung Jaya (F-3)
310,Chucho,Lewton,clewton8l@geocities.com,Male,67.63.87.83,Asadābād
311,Rakel,Fitzsymons,rfitzsymons8m@addthis.com,Female,43.238.97.33,Gaoleshan
312,Caye,Canton,ccanton8n@unicef.org,Female,48.65.103.178,Verkhnyaya Belka
313,Clari,Thowless,cthowless8o@uiuc.edu,Female,147.78.179.122,Suḩayl Shibām
314,Thia,Vasyanin,tvasyanin8p@issuu.com,Female,10.4.154.83,San Francisco
315,Laird,Insoll,linsoll8q@wsj.com,Male,27.89.133.102,Torbay
316,Jany,Holbie,jholbie8r@twitter.com,Female,162.154.130.96,Santa Clara
317,Adlai,Harm,aharm8s@ucsd.edu,Male,71.41.127.8,Francisco I Madero
318,Doy,Riccetti,driccetti8t@pinterest.com,Male,146.94.172.211,Mengdadazhuang
319,Elvera,Bowdrey,ebowdrey8u@alexa.com,Female,139.75.140.171,Uruçuca
320,Kalli,Critcher,kcritcher8v@feedburner.com,Female,37.3.6.7,Xinbao
321,Carny,Growden,cgrowden8w@wikia.com,Male,234.207.132.85,Obiliq
322,Brook,Caff,bcaff8x@army.mil,Female,62.195.181.235,Xue’an
323,Frankie,Warburton,fwarburton8y@who.int,Female,252.8.235.114,Tanghu
324,Mahmud,Ferby,mferby8z@amazonaws.com,Male,62.47.235.96,Odolanów
325,Tamas,MacPaik,tmacpaik90@archive.org,Male,239.120.30.249,Bashan
326,Tulley,Twiggs,ttwiggs91@123-reg.co.uk,Male,46.213.53.42,Cergy-Pontoise
327,Tony,Venny,tvenny92@alibaba.com,Male,157.244.169.162,Dabaozi
328,Dwain,Verrick,dverrick93@goodreads.com,Male,59.133.131.217,Avellaneda
329,Adaline,Gligoraci,agligoraci94@harvard.edu,Female,78.178.234.9,Megion
330,Bronny,Innman,binnman95@go.com,Male,117.21.81.90,An Châu
331,Sydel,Sherland,ssherland96@de.vu,Female,45.27.130.2,Santana do Paraíso
332,Nelie,Barnard,nbarnard97@nsw.gov.au,Female,192.133.199.243,Citeguh
333,Keary,Jamary,kjamary98@disqus.com,Male,146.49.194.187,Mae Ramat
334,Elwood,Mingardi,emingardi99@blogtalkradio.com,Male,11.133.106.229,Lodan Wetan
335,Ellwood,Meegan,emeegan9a@virginia.edu,Male,253.126.81.111,Blama
336,Berry,Gribbins,bgribbins9b@odnoklassniki.ru,Female,231.15.254.178,Lukunor
337,Alys,Gerge,agerge9c@cdc.gov,Female,63.30.64.147,Grujugan
338,Mufinella,Harcus,mharcus9d@zimbio.com,Female,231.124.67.65,Polyarnyye Zori
339,Nap,Messiter,nmessiter9e@linkedin.com,Male,43.153.143.109,Fundong
340,Hy,Drewry,hdrewry9f@tuttocitta.it,Male,190.211.156.71,Fernandópolis
341,Maressa,Andras,mandras9g@yellowbook.com,Female,241.59.42.178,Mapusagafou
342,Gayla,Hebbes,ghebbes9h@gnu.org,Female,15.19.142.22,Abomsa
343,Stephenie,Hurt,shurt9i@goo.gl,Female,215.144.121.249,Zharkent
344,Sergei,Blumson,sblumson9j@yelp.com,Male,98.24.92.125,Daping
345,Berke,Fashion,bfashion9k@ning.com,Male,148.254.8.121,Eixo
346,Gal,Bestiman,gbestiman9l@timesonline.co.uk,Male,50.115.52.87,Morazán
347,Rosalind,Macieja,rmacieja9m@cdc.gov,Female,193.114.128.156,Cuispes
348,Roderick,Hush,rhush9n@nymag.com,Male,118.50.21.212,Tianhe
349,Libbie,Gabbotts,lgabbotts9o@unicef.org,Female,172.216.241.143,Tilburg
350,Pippy,Thickins,pthickins9p@facebook.com,Female,188.249.136.202,Benisheikh
351,Manny,Denny,mdenny9q@yandex.ru,Male,185.239.194.99,Kae Dam
352,Florie,Cuthbertson,fcuthbertson9r@narod.ru,Female,10.181.155.228,Goiás
353,Simone,McMychem,smcmychem9s@ow.ly,Female,185.172.219.152,Sieradza
354,Lyn,Chivers,lchivers9t@cpanel.net,Female,27.201.177.8,Ash Shaddādah
355,Devlin,Woodhouse,dwoodhouse9u@163.com,Male,36.53.87.177,Turirejo
356,Dulcie,Dower,ddower9v@engadget.com,Female,45.70.201.155,Milaor
357,Aaron,Baker,abaker9w@spiegel.de,Male,218.209.50.211,Bandarbeyla
358,Benedikta,O'Crevan,bocrevan9x@cam.ac.uk,Female,71.21.249.153,Kālīganj
359,Saudra,McGrill,smcgrill9y@ocn.ne.jp,Female,255.236.14.201,Pombas
360,Meggy,Birbeck,mbirbeck9z@e-recht24.de,Female,108.171.254.153,Donnycarney
361,Link,McGuinness,lmcguinnessa0@facebook.com,Male,111.4.194.175,Semiletka
362,Bertha,Vondrach,bvondracha1@xrea.com,Female,14.142.215.166,Can-Avid
363,Nert,Finby,nfinbya2@cyberchimps.com,Female,227.164.229.225,Cruz Alta
364,Fairleigh,Brunt,fbrunta3@earthlink.net,Male,146.88.97.255,Shipaidong
365,Genni,Cabrales,gcabralesa4@netlog.com,Female,140.23.52.92,Dębno
366,Rosella,Kenney,rkenneya5@mapquest.com,Female,57.20.98.134,Bordeaux
367,Rodrique,Elderbrant,relderbranta6@geocities.com,Male,227.86.173.77,Qinghe
368,Moise,Kaspar,mkaspara7@eventbrite.com,Male,177.156.183.172,Vyatskiye Polyany
369,Betteann,Mayall,bmayalla8@bluehost.com,Female,39.148.32.41,Nanton
370,Colleen,Ikringill,cikringilla9@angelfire.com,Female,107.234.122.63,Canto
371,Eleni,Yakushkev,eyakushkevaa@instagram.com,Female,237.24.104.10,Cukangpanjang
372,Carolus,Sainz,csainzab@wordpress.org,Male,16.29.210.252,N'Djamena
373,Towney,Slimme,tslimmeac@wp.com,Male,228.145.79.133,Kthella e Epërme
374,Fifine,Petto,fpettoad@auda.org.au,Female,2.37.210.172,Kunheda Woerzu Manzu
375,Ernesto,Schlag,eschlagae@blogs.com,Male,51.41.191.108,Laï
376,Rorke,Coot,rcootaf@elegantthemes.com,Male,121.103.231.105,Barbosa
377,Courtney,Terry,cterryag@list-manage.com,Female,88.139.79.154,Mthatha
378,Delinda,Jirka,djirkaah@people.com.cn,Female,115.156.134.48,Omboué
379,Kipp,Grigoletti,kgrigolettiai@goo.gl,Male,250.76.168.248,Girihieum
380,Bailey,Colbeck,bcolbeckaj@plala.or.jp,Male,124.113.134.23,Da’an
381,Wilburt,Gopsall,wgopsallak@bing.com,Male,41.247.226.52,Kolonnawa
382,Venita,Bainbridge,vbainbridgeal@skyrock.com,Female,48.37.214.169,Dessalines
383,Lelia,Collingworth,lcollingwortham@mashable.com,Female,128.238.213.118,El Quetzal
384,Kate,Cusworth,kcusworthan@ameblo.jp,Female,220.228.86.194,Hostivice
385,Lenore,Domenicone,ldomeniconeao@mail.ru,Female,74.117.219.172,Jaworze
386,Fidole,Drillingcourt,fdrillingcourtap@toplist.cz,Male,69.118.58.76,Daejeon
387,Kariotta,Diloway,kdilowayaq@cdbaby.com,Female,103.83.133.80,Macabugos
388,Camila,Beveredge,cbeveredgear@netvibes.com,Female,113.174.189.152,Pingshan
389,Myrwyn,Marcham,mmarchamas@cafepress.com,Male,144.221.172.213,Muroto-misakicho
390,Stephi,Miskimmon,smiskimmonat@vimeo.com,Female,158.67.131.220,Arrap’i
391,Averill,Sciusscietto,asciussciettoau@qq.com,Male,255.224.28.240,Sumbuya
392,Caleb,Satch,csatchav@microsoft.com,Male,212.238.107.121,Schengen
393,Curt,Rowlands,crowlandsaw@prweb.com,Male,239.230.92.227,Pulau Pinang
394,Randie,McKennan,rmckennanax@spotify.com,Male,170.143.185.82,Sanqu
395,Jacenta,Follacaro,jfollacaroay@shop-pro.jp,Female,198.87.39.196,Kyaikkami
396,Danie,Baddam,dbaddamaz@wp.com,Male,139.156.47.130,Rosario de Lerma
397,Lucius,Rankmore,lrankmoreb0@reddit.com,Male,99.68.158.111,Sunchales
398,Teddie,Iglesia,tiglesiab1@ft.com,Female,195.185.45.3,Miatli
399,Chaunce,Boyse,cboyseb2@vk.com,Male,64.216.183.240,Pantukan
400,Gerrie,Cronkshaw,gcronkshawb3@dailymail.co.uk,Male,43.18.5.43,Shanshu
401,Alexandra,Ortsmann,aortsmannb4@skype.com,Female,241.240.48.219,Lühua
402,Jillian,Larrett,jlarrettb5@twitpic.com,Female,22.251.77.60,Tála
403,Jens,Shewan,jshewanb6@scribd.com,Male,183.22.220.250,Donggou
404,Lloyd,Staunton,lstauntonb7@hhs.gov,Male,112.154.115.149,Casal Novo
405,York,Tockell,ytockellb8@moonfruit.com,Male,193.255.184.166,Andrushivka
406,Gardiner,Watterson,gwattersonb9@simplemachines.org,Male,253.132.155.148,Hane
407,Ernesto,Doughartie,edoughartieba@reverbnation.com,Male,167.27.44.131,Xishiqiao
408,Lanni,Nice,lnicebb@nydailynews.com,Female,63.51.171.246,Wutongkou
409,Jeannie,Slane,jslanebc@youku.com,Female,148.37.251.23,Al Marj
410,Obediah,Akers,oakersbd@macromedia.com,Male,110.177.142.101,Khoa
411,Minnnie,Tomkinson,mtomkinsonbe@harvard.edu,Female,203.185.227.183,Starotitarovskaya
412,Salomone,Arsey,sarseybf@newyorker.com,Male,36.145.122.195,Gorobinci
413,Vernen,Linnock,vlinnockbg@ftc.gov,Male,11.185.95.5,Dusun Tengah Cihaurbeuti
414,Ignatius,Fleeman,ifleemanbh@netvibes.com,Male,251.200.174.252,Qiting
415,Orton,Motte,omottebi@de.vu,Male,49.129.201.89,Trasak
416,Ferdinande,Vasenkov,fvasenkovbj@blogger.com,Female,51.198.206.77,Ratchasan
417,Sayer,Derks,sderksbk@netvibes.com,Male,211.137.204.125,Tayang
418,Joycelin,MacCallion,jmaccallionbl@abc.net.au,Female,64.248.194.84,Baixi
419,Marice,Armin,marminbm@ucla.edu,Female,72.168.195.235,Agrela
420,Misti,Feaveer,mfeaveerbn@chron.com,Female,200.121.205.130,Pital
421,Myles,Gordge,mgordgebo@marriott.com,Male,182.56.56.30,Végueta
422,Anissa,Trowler,atrowlerbp@dailymotion.com,Female,115.198.118.219,Kuching
423,Willi,Human,whumanbq@earthlink.net,Female,8.110.59.216,Guaitarilla
424,Branden,Muglestone,bmuglestonebr@icio.us,Male,244.134.165.102,Xilanqi
425,Saxe,Hegdonne,shegdonnebs@wufoo.com,Male,82.60.153.78,Wichit
426,Therine,Kelsell,tkelsellbt@google.cn,Female,196.245.107.52,Cawayan
427,Pietrek,Athersmith,pathersmithbu@theglobeandmail.com,Male,226.27.53.165,Chichigalpa
428,Humberto,Bengtsen,hbengtsenbv@cbslocal.com,Male,220.133.43.50,Malveira
429,Lilli,De Bruijne,ldebruijnebw@mediafire.com,Female,13.187.218.126,Tawangrejo
430,Lizette,MacCard,lmaccardbx@weibo.com,Female,210.229.231.8,Cerca la Source
431,Edwina,Colleer,ecolleerby@comcast.net,Female,60.158.242.97,Yezhu
432,Channa,Kuhnhardt,ckuhnhardtbz@google.ru,Female,83.176.56.161,San Cristobal
433,Melva,Walbrook,mwalbrookc0@ning.com,Female,60.15.108.78,Vin’kivtsi
434,Carlie,Belone,cbelonec1@nhs.uk,Female,194.117.147.59,Yichun
435,Christiano,Bru,cbruc2@abc.net.au,Male,206.48.249.23,Bicas
436,Mary,Reven,mrevenc3@technorati.com,Female,130.82.252.73,Faqqū‘ah
437,Sib,Chavey,schaveyc4@deviantart.com,Female,67.17.36.69,Kotlovka
438,Aurlie,Mossop,amossopc5@cnn.com,Female,41.23.163.63,Sioah
439,Antonina,Evershed,aevershedc6@scientificamerican.com,Female,153.9.86.247,Tubajon
440,Ajay,Orth,aorthc7@apache.org,Female,28.99.81.176,Calachuchi
441,Ollie,Codlin,ocodlinc8@npr.org,Male,75.34.211.152,Pingtang
442,Boycey,Chanter,bchanterc9@youtube.com,Male,111.54.219.187,Thị Trấn Ngan Dừa
443,Flory,Coch,fcochca@cocolog-nifty.com,Male,233.29.165.10,San Pedro Ayampuc
444,Donavon,Lackeye,dlackeyecb@creativecommons.org,Male,113.226.184.17,Praia da Tocha
445,Vivyan,Staley,vstaleycc@drupal.org,Female,202.170.31.194,Cibaregbeg
446,Robinetta,Perse,rpersecd@booking.com,Female,15.71.127.137,San Cristobal
447,Lisbeth,Huetson,lhuetsonce@shutterfly.com,Female,87.61.0.218,Medveđa
448,Sidonnie,Ianelli,sianellicf@edublogs.org,Female,105.14.138.208,Luopioinen
449,Yetty,Creebo,ycreebocg@boston.com,Female,175.171.148.237,Bachok
450,Reuven,Surgeon,rsurgeonch@so-net.ne.jp,Male,84.213.210.73,Ínfias
451,Tommi,Gooda,tgoodaci@google.com.au,Female,83.251.178.155,Zoushi
452,Mac,Edelston,medelstoncj@uol.com.br,Male,117.196.189.30,Jednorożec
453,Lavinia,Englefield,lenglefieldck@google.com.au,Female,167.183.182.247,Žamberk
454,Randall,Balser,rbalsercl@yelp.com,Male,85.80.63.75,Bronnitsy
455,Griffy,Anand,ganandcm@fema.gov,Male,48.186.193.234,Masebewa
456,Penni,Sharpley,psharpleycn@indiegogo.com,Female,123.181.124.217,Cawayan Bugtong
457,Torr,Briggdale,tbriggdaleco@last.fm,Male,82.195.224.8,Krajan Kerjo
458,Sauveur,Povele,spovelecp@taobao.com,Male,52.191.202.161,Nangalisan
459,Bea,Vallerine,bvallerinecq@devhub.com,Female,59.149.247.149,Feyẕābād
460,Holt,Strippling,hstripplingcr@phpbb.com,Male,58.13.250.53,Serere
461,Dell,Blewitt,dblewittcs@tinyurl.com,Female,30.229.231.119,Shangju
462,Anett,Bertrand,abertrandct@oakley.com,Female,185.192.19.72,Okazaki
463,Alford,Rowbottom,arowbottomcu@twitpic.com,Male,80.192.194.5,Kista
464,Merralee,Fidelli,mfidellicv@salon.com,Female,80.193.201.110,Tovačov
465,Fidole,Hove,fhovecw@simplemachines.org,Male,74.89.111.90,Komyshnya
466,Eldredge,Corbally,ecorballycx@census.gov,Male,178.145.90.1,Reszel
467,Carlin,Mc Combe,cmccombecy@taobao.com,Female,37.21.70.69,Châtellerault
468,Penelope,Rehme,prehmecz@seesaa.net,Female,145.58.68.21,Habana del Este
469,Susann,Sciusscietto,ssciussciettod0@topsy.com,Female,117.204.19.108,Dayangqi
470,Zorah,MacMenemy,zmacmenemyd1@seattletimes.com,Female,207.96.93.51,Olival Basto
471,Andrew,Label,alabeld2@w3.org,Male,210.178.149.145,Playas
472,Claudina,Scogin,cscogind3@upenn.edu,Female,159.158.0.243,Zuénoula
473,Skippie,Obern,sobernd4@eventbrite.com,Male,196.57.252.103,Chaoyang
474,Pandora,Gadie,pgadied5@prnewswire.com,Female,180.120.134.245,Liushi
475,Evy,Hoyer,ehoyerd6@booking.com,Female,182.190.113.32,Kon Tum
476,Dinny,Avo,davod7@lulu.com,Female,192.49.20.253,Wilkowice
477,Elyn,Giraldo,egiraldod8@wired.com,Female,211.43.21.48,Chervonoarmiys’k
478,Brewer,Lowdwell,blowdwelld9@weibo.com,Male,78.161.236.46,Lanas
479,Fanya,Backshall,fbackshallda@constantcontact.com,Female,129.106.54.47,Kapchorwa
480,Brockie,Rioch,briochdb@pagesperso-orange.fr,Male,249.58.60.21,Małkinia Górna
481,Wyatt,Ribbens,wribbensdc@house.gov,Male,129.49.135.119,Trebisht-Muçinë
482,Annette,Griffin,agriffindd@geocities.com,Female,255.210.140.72,Bolorejo
483,Dorothy,Barnard,dbarnardde@uol.com.br,Female,156.172.174.215,Olszyna
484,Lexis,Drillingcourt,ldrillingcourtdf@springer.com,Female,253.222.144.185,Phú Thái
485,Rhodia,Bainton,rbaintondg@wix.com,Female,240.54.111.63,Oslo
486,Eli,Hammerson,ehammersondh@clickbank.net,Male,14.69.149.51,Dzerzhinsk
487,Danella,Hancox,dhancoxdi@ucoz.ru,Female,207.195.67.73,Khisarya
488,Jody,Hounsom,jhounsomdj@squarespace.com,Male,225.55.64.168,Falun
489,Bradan,Crain,bcraindk@lulu.com,Male,87.95.167.62,Curumaní
490,Asher,Roycroft,aroycroftdl@blog.com,Male,108.1.14.165,Oslo
491,Gaylor,Southcott,gsouthcottdm@tmall.com,Male,190.60.6.68,Shuangquan
492,Bondy,Josefer,bjoseferdn@paypal.com,Male,229.145.79.15,Cartagena
493,Darelle,Parkey,dparkeydo@lycos.com,Female,48.188.77.239,Purwosari
494,Nikos,O'Lyhane,nolyhanedp@wunderground.com,Male,18.149.108.252,Pryamitsyno
495,Glenn,Gellion,ggelliondq@amazon.de,Female,119.42.217.40,Örebro
496,Laryssa,Foucher,lfoucherdr@istockphoto.com,Female,52.186.189.20,Baihe
497,Lewes,Bonome,lbonomeds@wikispaces.com,Male,189.163.202.193,Ribas do Rio Pardo
498,Taber,Critchley,tcritchleydt@cbsnews.com,Male,121.195.184.129,Sterlitamak
499,Julie,Tomaselli,jtomasellidu@free.fr,Male,151.109.168.39,Köln
500,Jacqueline,Bourgourd,jbourgourddv@skyrock.com,Female,191.170.211.104,Berezna
501,Ambur,Holdey,aholdeydw@xinhuanet.com,Female,236.209.51.231,Sawaengha
502,Sabine,Lyosik,slyosikdx@360.cn,Female,161.232.137.136,Bayt ‘Īnūn
503,Gladys,Bandt,gbandtdy@ocn.ne.jp,Female,158.14.30.142,Hunkuyi
504,Paten,Vasyukhichev,pvasyukhichevdz@illinois.edu,Male,175.216.192.130,Nandong
505,Hunter,Creggan,hcreggane0@amazon.co.uk,Male,208.173.52.40,Albuera
506,Robert,Dodridge,rdodridgee1@github.io,Male,254.126.160.55,San Vicente
507,Cash,Dunklee,cdunkleee2@webs.com,Male,42.168.48.95,Kannabechō-yahiro
508,Thurstan,Broomhall,tbroomhalle3@loc.gov,Male,202.24.156.150,Baraya
509,Garald,Hackin,ghackine4@comsenz.com,Male,226.232.246.39,Criciúma
510,Novelia,Dureden,nduredene5@comsenz.com,Female,102.122.213.234,Oberá
511,Cathlene,Elgood,celgoode6@shutterfly.com,Female,66.37.238.247,Cibiru
512,Tyler,Latore,tlatoree7@home.pl,Male,41.215.92.170,Gorskaya
513,Filbert,Bulloch,fbulloche8@hhs.gov,Male,72.24.112.117,La Tinguiña
514,Katherine,Dand,kdande9@sphinn.com,Female,108.101.48.128,Auch
515,Ferdy,Richold,fricholdea@privacy.gov.au,Male,113.230.18.33,Eldoret
516,Warner,Almond,walmondeb@hud.gov,Male,250.114.209.0,Arboga
517,Lorrie,Elcomb,lelcombec@amazon.co.jp,Male,45.180.103.48,Porteirinha
518,Granville,Garnsworth,ggarnsworthed@google.es,Male,49.219.161.80,Huancabamba
519,Tye,Labon,tlabonee@cyberchimps.com,Male,7.143.63.56,Skolkovo
520,Raoul,Comelli,rcomellief@bravesites.com,Male,163.51.80.68,Madīnat ‘Īsá
521,Candida,Jikylls,cjikyllseg@xinhuanet.com,Female,177.46.130.45,Matadi
522,Noni,Whoston,nwhostoneh@jigsy.com,Female,11.182.33.119,Columbia
523,Laurent,Althorp,lalthorpei@marriott.com,Male,93.246.70.133,Sarandi
524,Dwight,Messenger,dmessengerej@meetup.com,Male,61.48.47.81,Almolonga
525,Vinny,Riddell,vriddellek@nhs.uk,Male,235.41.30.163,Ungaran
526,Wendie,Shaplin,wshaplinel@phoca.cz,Female,219.103.28.113,Puro
527,Shurwood,Sisneros,ssisnerosem@cnbc.com,Male,208.151.194.106,Pamatang
528,Brenda,Rogliero,broglieroen@ebay.co.uk,Female,8.103.136.58,Budapest
529,Alyce,Scotter,ascottereo@ifeng.com,Female,245.246.169.182,Daga
530,Clare,Swainson,cswainsonep@yahoo.com,Male,240.176.141.192,Combita
531,Lurleen,Kerswill,lkerswilleq@redcross.org,Female,3.77.74.156,Himeji
532,Woodman,Hadny,whadnyer@seesaa.net,Male,167.37.97.138,Suci Kaler
533,Gerianne,Tryhorn,gtryhornes@bbc.co.uk,Female,233.165.24.161,Shihua
534,Avigdor,Stadden,astaddenet@youtu.be,Male,2.162.98.165,Beit Jann
535,Dennet,Plessing,dplessingeu@gnu.org,Male,109.132.124.252,Frederiksberg
536,Tabbie,Farge,tfargeev@icio.us,Female,56.152.235.191,Terang
537,Cristionna,MacBain,cmacbainew@phpbb.com,Female,221.165.111.121,Waco
538,Leonie,Brocket,lbrocketex@barnesandnoble.com,Female,107.206.75.216,Nepomuceno
539,Lief,Bielby,lbielbyey@studiopress.com,Male,201.29.133.102,Zubtsov
540,Kellen,Chew,kchewez@sun.com,Male,115.197.231.137,Porsgrunn
541,Chico,Lismore,clismoref0@flavors.me,Male,236.72.101.144,Canga’an
542,Dan,Baldetti,dbaldettif1@booking.com,Male,228.163.192.178,Pentecoste
543,Stormi,Schimke,sschimkef2@apple.com,Female,133.116.215.131,Yonghe
544,Letta,Meneyer,lmeneyerf3@loc.gov,Female,235.252.200.137,Atlanta
545,Adah,Larder,alarderf4@tamu.edu,Female,159.105.37.166,Arvayheer
546,Gerri,McQuade,gmcquadef5@nbcnews.com,Female,174.231.142.255,Yongfeng
547,Parke,Charteris,pcharterisf6@si.edu,Male,119.155.5.197,Belém
548,Chico,Hardwick,chardwickf7@whitehouse.gov,Male,178.184.136.159,Vihāri
549,Peder,Coakley,pcoakleyf8@walmart.com,Male,75.183.213.214,Libu
550,Chelsea,Verriour,cverriourf9@youku.com,Female,172.13.54.244,Nijmegen
551,Carina,Yurmanovev,cyurmanovevfa@indiatimes.com,Female,215.108.185.108,Longxing
552,Brittne,Hawkshaw,bhawkshawfb@weather.com,Female,240.172.194.75,Candelária
553,Candy,Dreakin,cdreakinfc@homestead.com,Female,227.18.178.94,Sadowie
554,Raynard,Sperring,rsperringfd@gravatar.com,Male,215.6.73.75,Huipinggeng
555,Angel,covino,acovinofe@w3.org,Male,40.147.52.189,Monkayo
556,Judy,Yesenev,jyesenevff@stanford.edu,Female,212.165.166.71,Baisha
557,Thibaut,Demsey,tdemseyfg@house.gov,Male,198.162.213.135,Moret-sur-Loing
558,Esmaria,Tidman,etidmanfh@i2i.jp,Female,171.223.200.20,Balungao
559,Michaela,Yandle,myandlefi@addthis.com,Female,12.228.203.169,Lebak
560,Lincoln,Conboy,lconboyfj@spotify.com,Male,98.158.65.159,Baloc
561,Bartram,Agass,bagassfk@virginia.edu,Male,133.228.196.6,Siyabuswa
562,Guendolen,Iacovino,giacovinofl@ucla.edu,Female,117.187.61.27,Jäppilä
563,Glenda,Shenley,gshenleyfm@symantec.com,Female,45.84.218.12,Ayapa
564,Dedra,Kempe,dkempefn@stanford.edu,Female,61.28.17.151,Anáfi
565,Paten,Selborne,pselbornefo@cdbaby.com,Male,241.233.43.80,Zhoujiang
566,Mill,Tanguy,mtanguyfp@purevolume.com,Male,58.222.13.8,Kveda Chkhorots’q’u
567,Jonathan,Abbess,jabbessfq@wikipedia.org,Male,207.157.61.135,Xufu
568,Lester,Dyton,ldytonfr@sakura.ne.jp,Male,25.190.165.42,Strum
569,Hynda,Dahlback,hdahlbackfs@cisco.com,Female,29.174.159.83,Serikbuya
570,Willi,Crannach,wcrannachft@economist.com,Male,255.178.90.25,Honglai
571,Hinda,Reinisch,hreinischfu@usatoday.com,Female,172.106.76.24,Hanban
572,Margareta,Strainge,mstraingefv@who.int,Female,81.42.6.41,Xinmin
573,Modestine,Rayer,mrayerfw@4shared.com,Female,51.233.150.198,Ōnojō
574,Maurizia,Costen,mcostenfx@npr.org,Female,124.38.157.213,Qiaoxi
575,Crosby,Rosenfelt,crosenfeltfy@cbc.ca,Male,131.228.177.2,Guocun
576,Willie,von Grollmann,wvongrollmannfz@soup.io,Male,114.174.141.92,Renshan
577,Laurice,Pople,lpopleg0@dell.com,Female,222.216.151.202,Kárystos
578,Colan,Cluet,ccluetg1@illinois.edu,Male,232.197.104.164,Danxi
579,Bertina,Buist,bbuistg2@hao123.com,Female,101.120.144.17,Moholm
580,Alli,Creedland,acreedlandg3@addtoany.com,Female,113.198.82.211,Hengdian
581,Engelbert,Fahy,efahyg4@washington.edu,Male,252.149.12.53,Mogadishu
582,Arch,Wightman,awightmang5@flickr.com,Male,204.102.242.200,Ōnojō
583,Allyn,Towl,atowlg6@nifty.com,Female,112.182.152.104,Taman
584,Valenka,Thirwell,vthirwellg7@php.net,Female,222.57.96.182,Paccho
585,Kelsi,Roaf,kroafg8@exblog.jp,Female,217.180.35.187,Staraya Derevnya
586,Elspeth,Kleinzweig,ekleinzweigg9@blogs.com,Female,51.231.174.227,Šabac
587,Roderick,Burgis,rburgisga@economist.com,Male,169.206.107.141,Zhaocun
588,Keven,Grinham,kgrinhamgb@live.com,Male,184.42.234.252,São Luís do Quitunde
589,Jere,Ganley,jganleygc@clickbank.net,Female,100.27.190.169,Paris 12
590,Larry,Sircombe,lsircombegd@ebay.com,Male,150.37.68.183,Tankhoy
591,Jacques,O'Nion,jonionge@blogger.com,Male,234.120.143.200,Cisarap
592,Herbert,Sugg,hsugggf@webeden.co.uk,Male,46.37.80.254,Pathum Thani
593,Nettle,Sinncock,nsinncockgg@google.fr,Female,42.179.9.230,Wilcza
594,Ogdan,Paffot,opaffotgh@newyorker.com,Male,205.176.99.178,Beiping
595,Emile,Rosellini,erosellinigi@dot.gov,Male,151.176.33.198,Kedrovoye
596,Lenee,Howsin,lhowsingj@umich.edu,Female,172.248.100.48,Walakeri
597,Nonie,Slaymaker,nslaymakergk@springer.com,Female,98.181.182.84,Wanshan
598,Wilhelmina,Muzzini,wmuzzinigl@wikispaces.com,Female,8.12.36.186,Sanli
599,Lesley,Gerok,lgerokgm@zimbio.com,Female,101.115.64.140,Sukadana Selatan
600,Aubrey,McIlhagga,amcilhaggagn@indiatimes.com,Male,229.14.50.108,Bella Vista
601,Cassey,Juanes,cjuanesgo@clickbank.net,Female,106.95.90.153,Kafr Dān
602,Leigh,Bernaert,lbernaertgp@usatoday.com,Male,105.155.224.80,Lianhe
603,Clarita,Nast,cnastgq@eventbrite.com,Female,139.23.86.235,Kibuku
604,Darin,Grigoire,dgrigoiregr@angelfire.com,Male,213.124.21.164,Qiaogu
605,Noemi,Tuttiett,ntuttiettgs@com.com,Female,159.35.228.155,Ticrapo
606,Garrik,Pauleau,gpauleaugt@noaa.gov,Male,250.227.164.122,Matur
607,Carlos,McComiskey,cmccomiskeygu@wufoo.com,Male,206.199.182.255,Srabah
608,Yves,Heynel,yheynelgv@archive.org,Male,111.49.213.91,Chenārān
609,Patric,Herculeson,pherculesongw@jigsy.com,Male,52.129.127.148,Hanover
610,Cam,Alesbrook,calesbrookgx@nifty.com,Female,215.17.75.5,Malata
611,Nydia,Edmenson,nedmensongy@addthis.com,Female,174.107.242.147,Santiago Puringla
612,Norina,Greening,ngreeninggz@usnews.com,Female,250.206.156.151,Chengqiao
613,Alexandros,Prettyman,aprettymanh0@ucoz.ru,Male,163.155.175.148,Partille
614,Neddie,Clothier,nclothierh1@skyrock.com,Male,12.187.208.71,Jaworzynka
615,Rudolfo,Silly,rsillyh2@techcrunch.com,Male,90.107.19.85,Donggu
616,Kerrie,Casemore,kcasemoreh3@webnode.com,Female,24.32.21.140,Pszczyna
617,Wylie,De Fries,wdefriesh4@japanpost.jp,Male,59.231.68.195,Xiaoya
618,Lea,Errington,lerringtonh5@bandcamp.com,Female,189.27.107.246,Santa Bárbara
619,Woodrow,Brechin,wbrechinh6@dailymail.co.uk,Male,32.114.250.59,Quintã
620,Stafani,Boggish,sboggishh7@ox.ac.uk,Female,215.78.129.133,Frederico Westphalen
621,Jakob,Varns,jvarnsh8@mtv.com,Male,118.237.174.240,Grabovci
622,Norma,Calley,ncalleyh9@wordpress.org,Female,122.86.158.187,Üydzen
623,Victoir,Yurenev,vyurenevha@cargocollective.com,Male,186.221.83.203,Miliangju
624,Cassey,Rockhall,crockhallhb@unc.edu,Female,253.82.56.213,Villejuif
625,Nilson,Kimberley,nkimberleyhc@chronoengine.com,Male,208.212.235.143,Videira
626,Gwendolin,Joselson,gjoselsonhd@e-recht24.de,Female,113.163.96.246,Liandu
627,Reggie,Bushaway,rbushawayhe@hp.com,Female,30.146.223.173,Carleton Place
628,Giorgia,Dundredge,gdundredgehf@skyrock.com,Female,129.47.61.234,Yachimata
629,Pietra,McAleese,pmcaleesehg@networksolutions.com,Female,253.156.232.35,Dushang
630,Ellynn,Peterken,epeterkenhh@nba.com,Female,93.195.212.10,Farah
631,Umberto,Schermick,uschermickhi@photobucket.com,Male,50.30.197.240,Penha
632,Mildrid,Osban,mosbanhj@cafepress.com,Female,240.193.200.11,Göteborg
633,Emera,Digges,ediggeshk@trellian.com,Female,179.229.224.134,Doba
634,Krissie,Nore,knorehl@vinaora.com,Female,93.46.120.15,Armenia
635,Jeannine,Phlippsen,jphlippsenhm@jigsy.com,Female,130.98.206.249,Zalishchyky
636,Wolf,Klasen,wklasenhn@kickstarter.com,Male,139.76.229.18,Dadong
637,Allistir,Rollingson,arollingsonho@privacy.gov.au,Male,240.170.27.137,Uglich
638,Suzann,Hugli,shuglihp@engadget.com,Female,251.197.224.18,Banjar Jambe Baleran
639,Nick,Lesek,nlesekhq@technorati.com,Male,121.71.188.99,Manggis
640,Adams,Denisevich,adenisevichhr@merriam-webster.com,Male,27.18.164.214,Portela
641,Bird,Meritt,bmeritths@sogou.com,Female,169.145.31.224,Eskilstuna
642,Erastus,Constanza,econstanzaht@dailymail.co.uk,Male,191.2.22.18,Mirów
643,Dinah,Jandourek,djandourekhu@dell.com,Female,185.55.93.91,Nawābganj
644,Edmund,Dales,edaleshv@skype.com,Male,222.225.157.7,Chepo
645,Justin,O'Donovan,jodonovanhw@wired.com,Male,123.133.125.30,Cambarus
646,Aeriela,Thumnel,athumnelhx@hao123.com,Female,95.252.91.103,Karlskrona
647,Abbie,Allett,aalletthy@accuweather.com,Female,14.20.177.82,Delgermörön
648,Ede,Margrem,emargremhz@nymag.com,Female,165.28.0.175,Kōriyama
649,Danette,Darcy,ddarcyi0@google.pl,Female,153.72.37.29,Velestíno
650,Betsey,Cracknell,bcracknelli1@shop-pro.jp,Female,20.164.159.91,Xiawuqi
651,Ciro,Caldicot,ccaldicoti2@yahoo.co.jp,Male,107.80.201.237,San Fernando
652,Devlen,Roast,droasti3@dell.com,Male,235.150.61.149,Kadupinang
653,Brandy,Conichie,bconichiei4@nasa.gov,Female,203.83.101.38,Lobanovo
654,Kimmi,Kay,kkayi5@omniture.com,Female,163.22.224.33,Beiyang
655,Kincaid,Bitcheno,kbitchenoi6@msu.edu,Male,106.49.100.140,Dasha
656,Lolita,Castelletti,lcastellettii7@msu.edu,Female,155.187.86.132,Zbraslavice
657,Murray,MacDermott,mmacdermotti8@wordpress.org,Male,66.75.209.77,Issy-les-Moulineaux
658,Christie,Haggath,chaggathi9@cnn.com,Female,125.143.168.82,Emiliano Zapata
659,Cassey,Swidenbank,cswidenbankia@ed.gov,Female,18.161.103.17,Ialoveni
660,Rozanna,Sambiedge,rsambiedgeib@yolasite.com,Female,100.28.150.126,Mniszków
661,Alex,Ayce,aayceic@mail.ru,Female,50.148.243.117,Sankeng
662,Salvador,Daunter,sdaunterid@huffingtonpost.com,Male,155.85.251.25,El Rancho
663,Nobie,Winks,nwinksie@com.com,Male,145.149.180.102,Pytalovo
664,Carling,Von Brook,cvonbrookif@sakura.ne.jp,Male,65.56.113.95,Sambonggede
665,Lazaro,Buckby,lbuckbyig@intel.com,Male,32.18.52.116,Troitsk
666,Berta,Bleackly,bbleacklyih@ucsd.edu,Female,82.81.121.204,Kamuli
667,Amalee,Collocott,acollocottii@huffingtonpost.com,Female,236.46.250.172,Nikopol’
668,Penrod,Tures,pturesij@soundcloud.com,Male,164.134.78.50,Abejorral
669,Isa,Broxton,ibroxtonik@about.me,Male,134.239.78.183,Quesada
670,Bonny,Folbige,bfolbigeil@blogtalkradio.com,Female,32.89.37.71,Hagondange
671,Nerte,Dayly,ndaylyim@pcworld.com,Female,201.113.48.146,Zhenchuan
672,Linet,Shiliton,lshilitonin@apple.com,Female,247.231.7.187,Chuncheon
673,Misti,Lambell,mlambellio@youku.com,Female,15.158.200.213,Tokushima-shi
674,Gwendolin,McCart,gmccartip@jalbum.net,Female,193.247.161.2,Gaozhou
675,Alisander,Speenden,aspeendeniq@ucoz.ru,Male,218.221.155.185,Guaíra
676,Jaquith,Satterthwaite,jsatterthwaiteir@drupal.org,Female,168.194.11.131,Sydney
677,Lucie,Hadcock,lhadcockis@theguardian.com,Female,10.246.229.145,Rogoźnik
678,Phedra,Pampling,ppamplingit@lycos.com,Female,118.133.126.83,Zmiennica
679,Kenton,Toal,ktoaliu@noaa.gov,Male,0.119.148.90,Brzyska
680,Bess,Meryett,bmeryettiv@wufoo.com,Female,8.31.58.166,San Sebastián
681,Harman,Cowburn,hcowburniw@ihg.com,Male,174.234.145.42,Oebatu
682,Bobbye,Rawls,brawlsix@opensource.org,Female,102.84.74.13,Yongchang
683,Gasparo,Ecclesall,gecclesalliy@squidoo.com,Male,6.179.236.141,Kota Kinabalu
684,Deana,Glasscoe,dglasscoeiz@liveinternet.ru,Female,151.134.8.1,Khodasy
685,Rani,Colerick,rcolerickj0@edublogs.org,Female,144.255.200.232,Daleman
686,Federico,Rudinger,frudingerj1@shop-pro.jp,Male,167.171.79.229,Karlovy Vary
687,Cyrille,Durram,cdurramj2@google.com.hk,Male,240.153.151.125,Ungus-Ungus
688,Gunar,Belleny,gbellenyj3@acquirethisname.com,Male,118.67.115.247,Tianya
689,Arabel,Denzilow,adenzilowj4@ustream.tv,Female,125.5.21.155,Ar Rass
690,Curt,Carville,ccarvillej5@php.net,Male,192.183.241.240,Babiak
691,Marvin,Garshore,mgarshorej6@dagondesign.com,Male,5.46.243.48,Tetyushi
692,Jonathan,Headingham,jheadinghamj7@trellian.com,Male,96.155.36.19,Miaoya
693,Jerrilee,Saxton,jsaxtonj8@redcross.org,Female,252.82.35.114,Telnice
694,Viva,Robberts,vrobbertsj9@europa.eu,Female,32.114.65.39,Capatárida
695,Freeland,Stockow,fstockowja@cloudflare.com,Male,142.159.120.119,Armenia
696,Fancy,Hengoed,fhengoedjb@china.com.cn,Female,106.238.131.229,Malita
697,Dionysus,Gresser,dgresserjc@unc.edu,Male,42.213.225.123,Yingshouyingzi
698,Hebert,Madden,hmaddenjd@jalbum.net,Male,72.0.242.3,Cangyou
699,Humbert,Luigi,hluigije@businesswire.com,Male,223.153.207.254,Visby
700,Elladine,Corbally,ecorballyjf@accuweather.com,Female,212.172.188.111,Konin
701,Trumann,McFarlan,tmcfarlanjg@techcrunch.com,Male,146.216.187.232,Longyuanba
702,Dan,Sawbridge,dsawbridgejh@imgur.com,Male,161.225.204.98,Vikbolandet
703,Clerkclaude,Timoney,ctimoneyji@cnn.com,Male,239.141.113.85,Sancang
704,Marietta,Dench,mdenchjj@hao123.com,Female,43.34.14.200,Kalembutillu
705,Patty,Millimoe,pmillimoejk@netlog.com,Female,110.76.11.110,Opinogóra Górna
706,Jeth,Pettiward,jpettiwardjl@wix.com,Male,145.189.233.138,Koundara
707,Marlo,Hendrix,mhendrixjm@nature.com,Male,85.248.38.34,Canmore
708,Marnie,Hans,mhansjn@clickbank.net,Female,119.18.150.27,Vysoké nad Jizerou
709,Bunni,DeSousa,bdesousajo@weather.com,Female,196.30.125.245,Nanyuan
710,Frans,Kuhl,fkuhljp@nationalgeographic.com,Male,183.27.95.202,Chotepe
711,Cosetta,Edgecombe,cedgecombejq@apache.org,Female,93.178.1.6,Matozinhos
712,Crissy,Pinckard,cpinckardjr@typepad.com,Female,51.122.58.171,Varva
713,Ailene,Billison,abillisonjs@gmpg.org,Female,46.188.8.118,Si Khoraphum
714,Johna,Ellacott,jellacottjt@geocities.jp,Female,93.217.4.160,Suraż
715,Candide,Shepstone,cshepstoneju@godaddy.com,Female,176.125.2.196,Druya
716,Bibi,De Banke,bdebankejv@shareasale.com,Female,187.210.54.2,Mengdong
717,Delores,Haug,dhaugjw@blogspot.com,Female,135.172.151.9,Nanmuping
718,Kendricks,Duigenan,kduigenanjx@a8.net,Male,67.157.109.97,Wierzchucino
719,Bernie,Rattenberie,brattenberiejy@nature.com,Male,206.13.8.146,Cerro Corá
720,Abbe,Trevarthen,atrevarthenjz@tinyurl.com,Male,36.98.130.183,Nafada
721,Jae,Matyushonok,jmatyushonokk0@liveinternet.ru,Male,148.178.247.192,Bauru
722,Babs,Dixcey,bdixceyk1@china.com.cn,Female,11.254.57.89,Tripoli
723,Betta,Poxon,bpoxonk2@usatoday.com,Female,36.38.110.45,Thul
724,Mame,Byatt,mbyattk3@gnu.org,Female,136.36.64.168,Raymond
725,Jennilee,Strasse,jstrassek4@stumbleupon.com,Female,61.54.155.35,Huangge
726,Sutton,Jelk,sjelkk5@loc.gov,Male,124.77.233.209,Sanguinheira
727,Vannie,Landrick,vlandrickk6@mysql.com,Female,116.17.184.83,Duncan
728,Phyllida,Kryszka,pkryszkak7@biglobe.ne.jp,Female,3.57.243.238,Orsk
729,Burt,Saffill,bsaffillk8@people.com.cn,Male,38.90.2.145,Proletar
730,Nelson,Crudginton,ncrudgintonk9@ihg.com,Male,28.6.220.124,Macapá
731,Thomasin,Robilart,trobilartka@bigcartel.com,Female,116.161.191.180,Radès
732,Lari,Tomovic,ltomovickb@ameblo.jp,Female,149.18.135.245,Fonte da Aldeia
733,Rica,Stable,rstablekc@washington.edu,Female,52.167.232.219,Osasco
734,Colver,Munnis,cmunniskd@examiner.com,Male,60.170.74.208,Tegalrejo
735,Jerald,Beesley,jbeesleyke@imageshack.us,Male,9.58.165.147,Parachinar
736,Reyna,Cawtheray,rcawtheraykf@gmpg.org,Female,8.6.199.172,Máncora
737,Buiron,Vlasenko,bvlasenkokg@omniture.com,Male,187.175.237.115,Stamáta
738,Jennine,Chartman,jchartmankh@miitbeian.gov.cn,Female,106.164.32.156,El Retén
739,Dallis,Aldus,dalduski@vkontakte.ru,Male,194.28.134.174,Bayan Ewenke Minzu
740,Carlotta,McIlvaney,cmcilvaneykj@wisc.edu,Female,37.223.138.254,Batou
741,Tanya,Raye,trayekk@wikispaces.com,Female,125.226.67.218,Paraíso de Chabasquén
742,Idelle,Jupp,ijuppkl@squarespace.com,Female,169.118.168.39,Wongaya Kaja
743,Andeee,Stocking,astockingkm@unicef.org,Female,49.186.55.223,Huesca
744,Ivie,Jewise,ijewisekn@clickbank.net,Female,170.238.221.161,Sanjiang
745,Prentiss,Lackington,plackingtonko@clickbank.net,Male,86.188.203.147,San Antonio Suchitepéquez
746,Nikki,Hagerty,nhagertykp@webs.com,Male,73.192.89.91,Labrador City
747,Dannie,Gowling,dgowlingkq@state.gov,Male,114.109.228.220,Yuqi
748,Francene,Burnes,fburneskr@reverbnation.com,Female,10.144.224.107,Sumbersarikrajan
749,Troy,Fawley,tfawleyks@reddit.com,Male,110.174.234.169,Riebiņi
750,Randi,Surr,rsurrkt@icio.us,Female,90.254.168.46,Dongjingcheng
751,Skipper,Naisbit,snaisbitku@tuttocitta.it,Male,254.42.37.151,Washington
752,Prince,Halso,phalsokv@taobao.com,Male,172.85.215.11,Bratislava
753,Dov,Apthorpe,dapthorpekw@360.cn,Male,86.145.16.48,Breda
754,Tilda,Milner,tmilnerkx@homestead.com,Female,232.172.79.64,Kandi
755,Siegfried,Stewartson,sstewartsonky@studiopress.com,Male,199.139.87.87,Baykonyr
756,Ulick,Keddie,ukeddiekz@acquirethisname.com,Male,38.29.216.94,Bakaran Kulon
757,Portie,Fydoe,pfydoel0@cyberchimps.com,Male,212.247.17.180,El Zapotal del Norte
758,Matty,Souness,msounessl1@xinhuanet.com,Female,154.75.46.78,Yinhedahan’er
759,Mei,Hamel,mhamell2@uol.com.br,Female,136.70.25.250,Gebang
760,Kenton,Kegg,kkeggl3@loc.gov,Male,34.119.109.174,Lajeosa do Mondego
761,Tabbie,Wyatt,twyattl4@ted.com,Male,66.33.178.239,Niandui
762,Woody,Rooms,wroomsl5@e-recht24.de,Male,174.120.186.165,Idi Rayeuk
763,Erina,Bocock,ebocockl6@wunderground.com,Female,72.46.13.228,Sertânia
764,Bronnie,Lutz,blutzl7@deliciousdays.com,Male,207.47.116.110,Vologda
765,Alix,Dohmer,adohmerl8@salon.com,Male,112.196.62.145,Yamkino
766,Eberto,Rumin,eruminl9@scientificamerican.com,Male,77.152.26.28,Mambusao
767,Ambrosio,Burley,aburleyla@newyorker.com,Male,145.253.91.248,Oxford
768,Skippy,Odell,sodelllb@goo.gl,Male,209.219.142.176,Émponas
769,Killian,Tillyer,ktillyerlc@globo.com,Male,121.160.19.4,Veisiejai
770,Walsh,Doni,wdonild@epa.gov,Male,40.50.190.83,Nacaome
771,Roseline,Dotterill,rdotterillle@msn.com,Female,2.217.106.36,Cergy-Pontoise
772,Ariel,MacMarcuis,amacmarcuislf@over-blog.com,Female,189.61.217.236,Winschoten
773,Sherri,Runacres,srunacreslg@mail.ru,Female,115.28.145.171,San Gil
774,Belita,Gorringe,bgorringelh@sitemeter.com,Female,181.30.198.208,Łazy
775,Britt,Kitteman,bkittemanli@pcworld.com,Female,197.242.248.249,Bieligutai
776,Adaline,Mahony,amahonylj@phoca.cz,Female,228.59.155.105,Elliot
777,Simeon,Diloway,sdilowaylk@mozilla.com,Male,93.224.165.226,Changliang
778,Nealon,Dysert,ndysertll@hexun.com,Male,98.200.54.199,Sayansk
779,Eduardo,Hartman,ehartmanlm@fc2.com,Male,32.242.191.7,Krajan Alasdowo
780,Merline,Augustine,maugustineln@geocities.jp,Female,192.69.30.58,Dal’neye Konstantinovo
781,Samara,Spall,sspalllo@yahoo.com,Female,188.21.28.134,Birowo
782,Irita,Sherratt,isherrattlp@domainmarket.com,Female,163.228.164.142,Invercargill
783,Devonna,McCaighey,dmccaigheylq@opera.com,Female,108.111.101.139,Pervoural’sk
784,Ripley,McGowran,rmcgowranlr@scribd.com,Male,169.102.239.203,Triwil
785,Dom,Hailwood,dhailwoodls@ocn.ne.jp,Male,76.22.244.122,Impalutao
786,Don,Sacco,dsaccolt@opera.com,Male,255.132.91.112,Kidal
787,Tammy,Lidierth,tlidierthlu@bloomberg.com,Female,2.56.12.56,Athy
788,Quill,Dewey,qdeweylv@theglobeandmail.com,Male,143.173.241.90,Metsamor
789,Jannelle,Chuck,jchucklw@unblog.fr,Female,61.76.224.200,Chateaubelair
790,Tomasine,Dennick,tdennicklx@webnode.com,Female,45.193.231.163,Phủ Thông
791,Mayne,Brusle,mbruslely@phpbb.com,Male,74.15.161.78,Kunheda Woerzu Manzu
792,Cart,Escot,cescotlz@deviantart.com,Male,90.112.220.226,Jarinu
793,Emerson,Southgate,esouthgatem0@si.edu,Male,222.161.148.46,Perbaungan
794,Gino,Delepine,gdelepinem1@parallels.com,Male,53.24.113.23,Rizári
795,Perrine,Beranek,pberanekm2@vk.com,Female,50.227.71.150,Yiánnouli
796,Alfonso,Jados,ajadosm3@mozilla.org,Male,90.161.249.121,Merritt
797,Hali,Dragonette,hdragonettem4@slideshare.net,Female,37.234.6.140,Thị Trấn Cao Phong
798,Bebe,Mellhuish,bmellhuishm5@psu.edu,Female,158.100.207.244,Matagami
799,Constantia,Tomaskunas,ctomaskunasm6@friendfeed.com,Female,181.178.161.190,Elias Fausto
800,Ashley,Wollard,awollardm7@sciencedirect.com,Female,41.71.196.161,Carreira
801,Aime,Bruckman,abruckmanm8@naver.com,Female,163.55.76.124,Baqiao
802,Temp,McMearty,tmcmeartym9@lycos.com,Male,129.128.17.101,Porsgrunn
803,Belita,Kynge,bkyngema@nih.gov,Female,229.198.160.116,Batiano
804,Irma,Gillford,igillfordmb@fotki.com,Female,188.3.135.88,Yangxi
805,Mariejeanne,Mound,mmoundmc@soup.io,Female,116.154.104.117,Tissa
806,Shannah,Daudray,sdaudraymd@cyberchimps.com,Female,219.175.89.132,Tagdanua
807,Wolfy,Degli Antoni,wdegliantonime@unc.edu,Male,216.94.147.51,Diourbel
808,Kev,Bagniuk,kbagniukmf@xrea.com,Male,25.239.125.7,Itaqui
809,Tobi,Doyland,tdoylandmg@friendfeed.com,Female,61.110.75.68,Limeil-Brévannes
810,Daniela,Crosskell,dcrosskellmh@taobao.com,Female,54.162.5.201,Punkaharju
811,Hayden,Quade,hquademi@ucoz.com,Male,251.117.159.22,Heishan
812,Jodee,Kitteman,jkittemanmj@smugmug.com,Female,62.246.68.102,Maslovare
813,Corina,Lockart,clockartmk@yale.edu,Female,108.130.175.118,Hongtang
814,Delcina,MacAnelley,dmacanelleyml@nasa.gov,Female,74.150.111.239,Chumpi
815,Yuma,Tattershall,ytattershallmm@spiegel.de,Male,115.219.51.8,Paris 17
816,Jonathon,Ipplett,jipplettmn@spotify.com,Male,241.8.118.20,Privlaka
817,Aura,MacMychem,amacmychemmo@newsvine.com,Female,101.109.194.210,Osias
818,Pierre,Wortman,pwortmanmp@theguardian.com,Male,227.237.236.201,Město
819,Lowe,Scini,lscinimq@newsvine.com,Male,200.13.153.137,Langchi
820,Giustina,Huckabe,ghuckabemr@angelfire.com,Female,34.86.8.191,Uherský Ostroh
821,Nannie,Harrismith,nharrismithms@naver.com,Female,8.50.169.30,Bayside
822,Denny,Bowry,dbowrymt@mozilla.com,Male,247.206.123.29,Krajanjugosari
823,Carney,Maunders,cmaundersmu@tripod.com,Male,177.87.58.168,Segong
824,Fonsie,de Marco,fdemarcomv@moonfruit.com,Male,209.3.117.173,Sariwŏn
825,Zelig,Sparrowhawk,zsparrowhawkmw@vimeo.com,Male,108.125.27.193,Kolochava
826,Irvine,Mill,imillmx@yahoo.co.jp,Male,194.198.63.176,Huangni
827,Gracie,Dorsett,gdorsettmy@unesco.org,Female,227.246.209.86,Castanhal
828,Pen,Lundy,plundymz@yandex.ru,Male,97.98.168.26,Richky
829,Arni,Ducarel,aducareln0@yolasite.com,Male,202.231.146.117,Tatarsk
830,Carrie,Goding,cgodingn1@businessweek.com,Female,248.231.113.207,Banjarejo
831,Sonya,Clifft,sclifftn2@businesswire.com,Female,139.46.233.62,Saynshand
832,Chilton,Josland,cjoslandn3@skyrock.com,Male,14.117.107.33,Prokhladnyy
833,Melly,Furphy,mfurphyn4@irs.gov,Female,213.13.119.195,Sinfra
834,Nial,Garcia,ngarcian5@indiegogo.com,Male,88.1.195.231,Mauhao
835,Nerta,Patrick,npatrickn6@deliciousdays.com,Female,10.180.177.120,Lom Kao
836,Kissee,Busby,kbusbyn7@fastcompany.com,Female,59.201.190.0,Malhiao
837,Ellene,Rosenstein,erosensteinn8@geocities.com,Female,134.211.107.212,Baumata
838,Jessamine,St. Paul,jstpauln9@blogspot.com,Female,62.149.106.75,Manadas
839,Constantino,Truin,ctruinna@homestead.com,Male,155.91.86.224,San Javier
840,Anitra,Kopf,akopfnb@prlog.org,Female,6.15.186.20,San Agustin
841,Sigismund,Barnish,sbarnishnc@twitter.com,Male,170.148.96.127,Izingolweni
842,Giustina,Dumblton,gdumbltonnd@opensource.org,Female,213.95.197.156,Honglong
843,Amye,Siely,asielyne@imdb.com,Female,184.41.70.19,Tvøroyri
844,Chaim,Miche,cmichenf@amazon.co.jp,Male,194.178.94.159,Shicha
845,Chev,Polson,cpolsonng@shop-pro.jp,Male,240.72.39.247,Wojaszówka
846,Sherwin,Marriage,smarriagenh@devhub.com,Male,193.127.164.248,Weishan
847,Babara,Konke,bkonkeni@slate.com,Female,9.101.60.54,Thành Phố Lạng Sơn
848,Ethelind,Gloster,eglosternj@webmd.com,Female,248.208.128.128,Staromyshastovskaya
849,Betteann,Tsarovic,btsarovicnk@cnbc.com,Female,102.184.254.222,Pukou
850,Montague,Devoy,mdevoynl@cloudflare.com,Male,252.207.148.230,Topolná
851,Sibelle,Godfray,sgodfraynm@google.com.au,Female,178.39.99.237,Hato Mayor del Rey
852,Flinn,Daspar,fdasparnn@photobucket.com,Male,92.27.245.127,Camiling
853,Dalis,Caves,dcavesno@businessweek.com,Male,94.250.241.87,Umm as Summāq
854,Christin,Worters,cwortersnp@lulu.com,Female,241.196.206.241,Erping
855,Gayel,Goodluck,ggoodlucknq@epa.gov,Female,1.22.117.81,Boulder
856,Lilli,Skinner,lskinnernr@cnet.com,Female,244.134.85.29,Zhongfang
857,Norrie,Emmanuele,nemmanuelens@drupal.org,Male,31.115.252.67,Shucheng Chengguanzhen
858,Stanislaw,McClenan,smcclenannt@theguardian.com,Male,32.61.125.245,Poshnje
859,Leilah,St. Leger,lstlegernu@ezinearticles.com,Female,149.25.26.223,Pôrto Barra do Ivinheima
860,Ingemar,Gierok,igieroknv@apache.org,Male,240.195.205.208,Avaré
861,Winnah,Sprowell,wsprowellnw@wikimedia.org,Female,109.41.167.45,Hägersten
862,Kim,Boldry,kboldrynx@fc2.com,Male,189.25.153.211,Umm Şalāl ‘Alī
863,Katrina,Hexam,khexamny@nbcnews.com,Female,34.6.42.148,Bonneuil-sur-Marne
864,Tucky,Tiley,ttileynz@cam.ac.uk,Male,78.39.156.244,Iowa City
865,Lanette,Trainor,ltrainoro0@gmpg.org,Female,220.45.69.117,Santa Catalina
866,Marcia,Custy,mcustyo1@vkontakte.ru,Female,113.87.78.219,Sungai
867,Obadiah,Delahunt,odelahunto2@naver.com,Male,46.121.247.134,Isiro
868,Denny,Avrahamy,davrahamyo3@google.nl,Male,41.8.123.31,Melres
869,Casey,Di Claudio,cdiclaudioo4@hc360.com,Male,155.101.251.95,Fengcheng
870,Jessie,Willimot,jwillimoto5@google.it,Male,215.123.115.134,Guankou
871,Hanni,MacInherney,hmacinherneyo6@yolasite.com,Female,190.148.145.104,Solna
872,Titos,Poppy,tpoppyo7@trellian.com,Male,73.214.200.220,Thaba Nchu
873,Mariann,Matyugin,mmatyugino8@so-net.ne.jp,Female,47.135.43.114,Duyanggang
874,Kimble,Kneebone,kkneeboneo9@techcrunch.com,Male,53.1.246.86,Géfyra
875,Raynell,Tollerfield,rtollerfieldoa@ning.com,Female,236.216.146.71,Mombasa
876,Annie,Woolford,awoolfordob@yellowbook.com,Female,213.48.2.195,San José de Feliciano
877,Ryun,Shearwood,rshearwoodoc@nifty.com,Male,176.109.232.157,Trinidad
878,Martynne,Valerio,mvaleriood@biblegateway.com,Female,213.92.103.233,Calle Blancos
879,Sherman,Vaulkhard,svaulkhardoe@is.gd,Male,18.111.45.167,Jatipamor
880,Regina,Pemble,rpembleof@state.gov,Female,110.141.126.66,El Limon
881,Aggi,Wase,awaseog@java.com,Female,225.252.144.190,Saint-Laurent-du-Var
882,Yorke,Hurran,yhurranoh@flickr.com,Male,153.15.188.46,Klokot
883,Miller,Kegley,mkegleyoi@xrea.com,Male,148.159.223.17,Chengzi
884,Carlos,Kerrich,ckerrichoj@trellian.com,Male,22.107.234.61,Pacho
885,Lezley,Langshaw,llangshawok@va.gov,Male,88.27.130.178,Trubchevsk
886,Dewain,Goulborn,dgoulbornol@whitehouse.gov,Male,253.192.28.168,Banyuurip
887,Jorgan,Kielt,jkieltom@java.com,Male,41.109.237.62,Namayingo
888,Robinetta,Normabell,rnormabellon@seattletimes.com,Female,50.139.21.226,Zhentian
889,Webster,Leppington,wleppingtonoo@people.com.cn,Male,156.2.248.20,Abejorral
890,Ruby,Farnworth,rfarnworthop@printfriendly.com,Male,243.136.26.131,Jibiya
891,Rozele,Moncarr,rmoncarroq@mayoclinic.com,Female,184.84.91.86,Puro
892,Lorine,Warrillow,lwarrillowor@geocities.jp,Female,28.247.227.190,Rosario de Mora
893,Minta,Counihan,mcounihanos@rambler.ru,Female,189.84.194.204,Pingdingshan
894,Janel,Atkirk,jatkirkot@tinyurl.com,Female,90.253.191.9,Pojok
895,Adelice,Huckerbe,ahuckerbeou@go.com,Female,28.88.58.224,Lisui
896,Wendy,Meynell,wmeynellov@joomla.org,Female,239.174.47.190,Bacacay
897,Iain,Husk,ihuskow@cloudflare.com,Male,238.216.119.34,Nynäshamn
898,Antonia,Tarbet,atarbetox@pbs.org,Female,9.147.222.67,Conchucos
899,Cooper,Cloney,ccloneyoy@shutterfly.com,Male,46.231.126.147,Gangjia
900,Lizzy,Spittles,lspittlesoz@deviantart.com,Female,121.26.88.99,Aleshtar
901,Bryana,Champ,bchampp0@sitemeter.com,Female,67.3.190.175,Cañas
902,Georgi,Bleas,gbleasp1@joomla.org,Male,180.237.183.73,Corona
903,Fonsie,Bonehill,fbonehillp2@prnewswire.com,Male,127.18.219.128,Aparecida de Goiânia
904,Phil,Tsarovic,ptsarovicp3@mayoclinic.com,Male,22.118.239.142,Montbrison
905,Delores,Fenwick,dfenwickp4@economist.com,Female,92.122.47.32,Willowdale
906,Clarisse,Tilmouth,ctilmouthp5@jimdo.com,Female,36.142.119.155,Santo Domingo
907,Abbott,Caustic,acausticp6@tripod.com,Male,66.216.37.43,San Antonio
908,Martyn,Basil,mbasilp7@altervista.org,Male,153.207.122.182,Qulaybīyah
909,Orly,Feirn,ofeirnp8@aol.com,Female,195.14.219.176,La Unión
910,Gabriell,Winsborrow,gwinsborrowp9@theguardian.com,Female,219.46.54.149,Zhulebino
911,Noreen,Glidder,nglidderpa@oracle.com,Female,156.6.62.215,Bestovje
912,Dorelle,Thwaites,dthwaitespb@ning.com,Female,213.221.81.3,Lākshām
913,Ted,Tatersale,ttatersalepc@cam.ac.uk,Female,74.37.252.220,Mangai
914,Delinda,Kiebes,dkiebespd@blog.com,Female,141.78.98.191,Agdangan
915,Desirae,Clemmey,dclemmeype@linkedin.com,Female,169.207.99.224,Öndörhoshuu
916,Carly,Suston,csustonpf@blogger.com,Female,203.229.183.134,Gia Nghĩa
917,Fleming,Colls,fcollspg@prlog.org,Male,164.205.149.251,Pallisa
918,Terrijo,Hemeret,themeretph@issuu.com,Female,229.138.7.102,Ueda
919,Kane,Betser,kbetserpi@usatoday.com,Male,64.78.140.248,Shyroke
920,Abner,Dalligan,adalliganpj@guardian.co.uk,Male,51.81.70.32,Tirat Karmel
921,Jolie,Brightie,jbrightiepk@desdev.cn,Female,1.191.102.176,Bodega
922,Hastings,Lockett,hlockettpl@wsj.com,Male,45.253.12.252,Bořetice
923,Duffie,Andreou,dandreoupm@wsj.com,Male,215.156.77.91,Xiangdong
924,Darryl,Bletsor,dbletsorpn@weather.com,Female,163.74.93.186,Chandler
925,Loise,Shortt,lshorttpo@joomla.org,Female,80.184.52.165,Iitti
926,Gian,Di Biagi,gdibiagipp@baidu.com,Male,151.228.234.104,Centralniy
927,Dallas,Rowantree,drowantreepq@chicagotribune.com,Male,139.124.28.107,Tsagaanders
928,Trevar,Monnoyer,tmonnoyerpr@ucla.edu,Male,78.124.237.246,Vũ Quang
929,Lorilyn,Panner,lpannerps@phoca.cz,Female,208.191.191.56,Wenwucao
930,Felipa,McKaile,fmckailept@webs.com,Female,180.173.193.151,Maciejowice
931,Tiffanie,Ravel,travelpu@webmd.com,Female,253.132.174.99,Kamen
932,Leroy,Moizer,lmoizerpv@dagondesign.com,Male,46.118.7.28,Rosh Pinna
933,Addy,Bleesing,ableesingpw@uiuc.edu,Female,163.93.53.132,Lahad Datu
934,Dewie,Howton,dhowtonpx@yahoo.co.jp,Male,148.153.244.46,Qingyun
935,Dianne,Esposita,despositapy@tuttocitta.it,Female,185.95.191.231,Timiryazevskoye
936,Verney,Legging,vleggingpz@alexa.com,Male,218.122.32.215,Lampitak
937,Kaitlyn,Inge,kingeq0@w3.org,Female,108.54.75.241,Pashiya
938,Erwin,Hobson,ehobsonq1@simplemachines.org,Male,103.109.115.90,Kimméria
939,Aarika,Eeles,aeelesq2@example.com,Female,15.196.17.238,Dawuhanmangli
940,Aurora,Stockdale,astockdaleq3@blogger.com,Female,176.117.120.141,Banzão
941,Catherina,Toner,ctonerq4@clickbank.net,Female,44.181.238.45,Nguigmi
942,Claiborne,Yanyushkin,cyanyushkinq5@mozilla.com,Male,129.14.187.176,Sozopol
943,Kass,O' Concannon,koconcannonq6@pen.io,Female,69.201.225.40,Arīḩā
944,Carolina,Daddow,cdaddowq7@flickr.com,Female,11.173.186.246,Quilmaná
945,Aaron,Antonsen,aantonsenq8@whitehouse.gov,Male,0.192.253.81,Białobrzegi
946,Paton,Cahalin,pcahalinq9@moonfruit.com,Male,163.204.186.228,Sankera
947,Angie,Spyby,aspybyqa@twitpic.com,Female,148.42.190.129,Baku
948,Karlan,Woolgar,kwoolgarqb@examiner.com,Male,141.226.155.201,Birinci Aşıqlı
949,Walsh,Pranger,wprangerqc@ca.gov,Male,83.61.226.154,Sulkava
950,Jacqueline,Yglesia,jyglesiaqd@devhub.com,Female,157.218.152.72,Älvsbyn
951,Parnell,Kinloch,pkinlochqe@reference.com,Male,60.122.1.119,Rožďalovice
952,Shena,Townshend,stownshendqf@livejournal.com,Female,53.15.203.106,Yong’an
953,Kelli,Nunn,knunnqg@yellowbook.com,Female,6.243.78.148,St. Catharines
954,Minda,Treves,mtrevesqh@cyberchimps.com,Female,179.198.30.20,Kurzętnik
955,Perren,Riglar,priglarqi@princeton.edu,Male,179.9.112.226,Cikou
956,Shurlock,Rubanenko,srubanenkoqj@narod.ru,Male,124.177.68.255,Jishi
957,Karlik,Anan,kananqk@bigcartel.com,Male,211.80.3.156,Shiqian
958,Mayne,Wall,mwallql@who.int,Male,92.159.108.202,Mulandoro
959,Catherin,Winger,cwingerqm@infoseek.co.jp,Female,81.207.80.151,Huangduobu
960,Sioux,Smillie,ssmillieqn@so-net.ne.jp,Female,106.42.217.238,Nomhon
961,Tobin,Grice,tgriceqo@elegantthemes.com,Male,119.60.73.193,Lokoja
962,Hercules,Curneen,hcurneenqp@hostgator.com,Male,61.81.42.7,Richmond
963,Darcie,Hubeaux,dhubeauxqq@twitpic.com,Female,252.254.215.180,Loureiro
964,Ellyn,Zwicker,ezwickerqr@ucla.edu,Female,34.181.10.155,Toguchin
965,Davide,Marrow,dmarrowqs@e-recht24.de,Male,207.35.57.112,Vermil
966,Finley,Riolfi,friolfiqt@macromedia.com,Male,114.211.141.200,Vällingby
967,Rosemonde,Ilyukhov,rilyukhovqu@jigsy.com,Female,32.4.241.83,Namangan Shahri
968,Marten,McKall,mmckallqv@odnoklassniki.ru,Male,28.86.37.196,San Esteban
969,Crista,Portinari,cportinariqw@parallels.com,Female,84.136.203.101,Sepanjang
970,Torrence,Havoc,thavocqx@japanpost.jp,Male,142.112.110.51,Chejiazhuang
971,Rici,Jocic,rjocicqy@odnoklassniki.ru,Female,146.91.187.253,Dřevohostice
972,Tad,O'Loughnan,toloughnanqz@bloglines.com,Male,137.55.77.161,Karanglincak
973,Danyelle,Aslet,dasletr0@t.co,Female,220.234.69.142,Gjinoc
974,Wallas,Sabberton,wsabbertonr1@cocolog-nifty.com,Male,242.214.215.62,Suqu
975,Genevra,Berkery,gberkeryr2@last.fm,Female,108.162.138.106,Oum Hadjer
976,Roarke,Berthe,rberther3@omniture.com,Male,208.101.213.119,Mae Fa Luang
977,Ryan,Searson,rsearsonr4@rambler.ru,Male,67.91.243.143,Pyatigorsk
978,Kerri,Polson,kpolsonr5@chron.com,Female,10.16.140.78,Öldziyt
979,Allister,Grigorini,agrigorinir6@bloglines.com,Male,178.196.171.156,Pato Branco
980,Terese,Thoumasson,tthoumassonr7@bloglines.com,Female,1.187.193.193,Nōgata
981,Franklyn,Ickovitz,fickovitzr8@oakley.com,Male,190.129.63.145,Conceição das Alagoas
982,Byrom,Trye,btryer9@parallels.com,Male,253.197.119.102,Almada
983,Hamlin,Shearston,hshearstonra@clickbank.net,Male,209.133.239.108,Potosí
984,Patrizia,Drew-Clifton,pdrewcliftonrb@nsw.gov.au,Female,109.103.70.24,Guariba
985,Thane,Kindell,tkindellrc@amazonaws.com,Male,71.199.121.133,Mengcheng Chengguanzhen
986,Basile,Speerman,bspeermanrd@blogger.com,Male,163.71.220.229,Tiecun
987,Jamison,Line,jlinere@pinterest.com,Male,100.52.196.187,Oklahoma City
988,Ev,Tremathack,etremathackrf@github.io,Male,121.180.48.101,Xinzha
989,Care,Gladdis,cgladdisrg@hp.com,Male,121.8.176.32,Leles
990,Gerrie,Nilles,gnillesrh@usgs.gov,Female,157.132.4.185,Sherwood Park
991,Bat,Tomczynski,btomczynskiri@toplist.cz,Male,138.39.70.190,‘Arīqah
992,Bernelle,Sheavills,bsheavillsrj@biblegateway.com,Female,149.217.194.24,Thanatpin
993,Alvera,Marvelley,amarvelleyrk@miibeian.gov.cn,Female,8.87.243.103,Kleszczewo
994,Lothaire,Luxford,lluxfordrl@redcross.org,Male,65.32.26.102,Si Racha
995,Glynn,Wakerley,gwakerleyrm@disqus.com,Male,10.67.24.104,Rennes
996,Parrnell,Jeff,pjeffrn@4shared.com,Male,159.55.55.39,Dengok
997,Pat,Warstall,pwarstallro@dropbox.com,Male,169.200.7.131,Rosário do Sul
998,Willyt,Vannuccini,wvannuccinirp@tuttocitta.it,Female,156.149.18.155,Xiaopingba
999,Gaelan,Petrashkov,gpetrashkovrq@hostgator.com,Male,219.109.169.75,Bethlehem
1000,Stirling,Francesc,sfrancescrr@cyberchimps.com,Male,108.193.9.206,Potok Złoty
================================================
FILE: 15-PDFs-and-Spreadsheets/makeup_new.csv
================================================
col1,col2,col3
1,2,3
4,5,6
7,8,9
================================================
FILE: 15-PDFs-and-Spreadsheets/to_save_file.csv
================================================
a,b,c
1,2,3
4,5,6
1,2,3
================================================
FILE: 16-Emailing-with-Python/.ipynb_checkpoints/00-Overview-of-Sending-Emails-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Overview of Sending Emails"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The smtplib library allows you to manually go through the steps of creating and sending an email in Python:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import smtplib"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create an SMTP object for a server. Here are the main Server Domain Name for the top email services. If you don't see your email server here, you may need to do a quick Google Search to see if there SMTP server domain name is available:\n",
"\n",
"\n",
"\n",
"\n",
" Provider \n",
" SMTP server domain name \n",
" \n",
"\n",
"\n",
" Gmail (will need App Password) \n",
" smtp.gmail.com \n",
" \n",
"\n",
" Yahoo Mail \n",
" smtp.mail.yahoo.com \n",
" \n",
"\n",
" Outlook.com/Hotmail.com \n",
" smtp-mail.outlook.com \n",
" \n",
" \n",
"\n",
"\n",
" AT&T \n",
" smpt.mail.att.net (Use port 465) \n",
" \n",
"\n",
"\n",
"\n",
" Verizon \n",
" smtp.verizon.net (Use port 465) \n",
" \n",
"\n",
"\n",
" Comcast \n",
" smtp.comcast.net \n",
" \n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next is to create an STMP object that can make the method calls to log you in to your email in order to send messages. Notice how also specify a port number. If the number 587 does not work on your computer, try using 465 instead. Keep in mind, a firewall or antivirus may prevent Python from opening up this port, so you may need to disable it on your computer."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"smtp_object = smtplib.SMTP('smtp.gmail.com',587)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next we run the ehlo() command which \"greets\" the server and establishes the connection. This method call should be done directly after creating the object. Calling it after other methods may result in errors in connecting later on. The first item in the tuple that is returned should be 250, indicating a successful connection."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(250,\n",
" b'smtp.gmail.com at your service, [47.143.81.4]\\nSIZE 35882577\\n8BITMIME\\nSTARTTLS\\nENHANCEDSTATUSCODES\\nPIPELINING\\nCHUNKING\\nSMTPUTF8')"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smtp_object.ehlo()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When using the 587 port, this means you are using TLS encryption, which you need to initiate by running the starttls() command. If you are using port 465, this means you are using SSL and you can skip this step."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(220, b'2.0.0 Ready to start TLS')"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smtp_object.starttls()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now its time to set up the email and the passwords. You should never save the raw string of your password or email in a script, because anyone that sees this script will then be able to see you email and password! Instead you should use input() to get that information. If you also don't want your password to be visible when typing it in, you can use the built-in **getpass** library that will hide your password as you type it in, either with asterisks or by just keeping it invisible."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# For hidden passwords\n",
"import getpass"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Type something here and it will be hidden: ········\n"
]
}
],
"source": [
"result = getpass.getpass(\"Type something here and it will be hidden: \")"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'a'"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Just keep in mind that its still visible as an object internally:\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter your passwords\n"
]
},
{
"data": {
"text/plain": [
"'s'"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Or just use input()\n",
"input(\"Enter your password\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"**Note for Gmail Users, you need to generate an app password instead of your normal email password. This also requires enabling 2-step authentication. Follow the instructions here to set-up 2-Step Factor Authentication as well as App Password Generation:https://support.google.com/accounts/answer/185833?hl=en/. Set-up 2 Factor Authentication, then create the App Password, choose Mail as the App and give it any name you want. This will output a 16 letter password for you. Pass in this password as your login password for the smtp.**\n",
"____"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"email = getpass.getpass(\"Enter your email: \")\n",
"password = getpass.getpass(\"Enter your password: \")\n",
"smtp_object.login(email,password)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can send an email using the .sendmail() method."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter your email: ········\n",
"Enter the email of the recipient: ········\n",
"Enter the subject line: This is a test\n",
"Type out the message you want to send: Here is the message.\n"
]
},
{
"data": {
"text/plain": [
"{}"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from_address = getpass.getpass(\"Enter your email: \")\n",
"to_address = getpass.getpass(\"Enter the email of the recipient: \")\n",
"subject = input(\"Enter the subject line: \")\n",
"message = input(\"Type out the message you want to send: \")\n",
"msg = \"Subject: \" + subject + '\\n' + message\n",
"smtp_object.sendmail(from_address,to_address,msg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you get back an empty dictionary, then the sending was successful."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can then close your session with the .quit() method."
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(221, b'2.0.0 closing connection j1sm22376227pgq.33 - gsmtp')"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smtp_object.quit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we know how to send emails, its time to learn how to look through emails you've already recieved."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 16-Emailing-with-Python/.ipynb_checkpoints/01-Overview-of-Received-Emails-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Overview of Received Emails\n",
"\n",
"Now that we understand how to send emails progammatically with Python, let's explore how we can read and search recieved emails. To do we will use the built-in [imaplib library](https://docs.python.org/3/library/imaplib.html#imap4-example). We will also use the built in [email](https://docs.python.org/3/library/email.examples.html) library for parsing through the recieved emails."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import imaplib"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"M = imaplib.IMAP4_SSL('imap.gmail.com')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import getpass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"user = input(\"Enter your email: \")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter your password: ········\n"
]
}
],
"source": [
"# Remember , you may need an app password if you are a gmail user\n",
"# \n",
"password = getpass.getpass(\"Enter your password: \")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"M.login(user,password)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('OK',\n",
" [b'(\\\\HasNoChildren) \"/\" \"INBOX\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Personal\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Receipts\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Sent\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Trash\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Travel\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Work\"',\n",
" b'(\\\\HasChildren \\\\Noselect) \"/\" \"[Gmail]\"',\n",
" b'(\\\\All \\\\HasNoChildren) \"/\" \"[Gmail]/All Mail\"',\n",
" b'(\\\\Drafts \\\\HasNoChildren) \"/\" \"[Gmail]/Drafts\"',\n",
" b'(\\\\HasNoChildren \\\\Important) \"/\" \"[Gmail]/Important\"',\n",
" b'(\\\\HasNoChildren \\\\Sent) \"/\" \"[Gmail]/Sent Mail\"',\n",
" b'(\\\\HasNoChildren \\\\Junk) \"/\" \"[Gmail]/Spam\"',\n",
" b'(\\\\Flagged \\\\HasNoChildren) \"/\" \"[Gmail]/Starred\"',\n",
" b'(\\\\HasNoChildren \\\\Trash) \"/\" \"[Gmail]/Trash\"'])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.list()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('OK', [b'28297'])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Connect to your inbox\n",
"M.select(\"inbox\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Searching Mail\n",
"\n",
"Now that we have connected to our mail, we should be able to search for it using the specialized syntax of IMAP. Here are the different search keys you can use:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
" \n",
" Keyword \n",
" Definition \n",
" \n",
" \n",
" 'ALL' \n",
" \n",
" Returns all messages in your email folder. Often there are size limits from imaplib.\n",
" To change these use imaplib._MAXLINE = 100 , where 100 is whatever you want the limit to be.\n",
" \n",
" \n",
" \n",
" \n",
" 'BEFORE date' \n",
" \n",
" Returns all messages before the date. Date must be formatted as 01-Nov-2000.\n",
" \n",
" \n",
" \n",
" \n",
" 'ON date' \n",
" \n",
" Returns all messages on the date. Date must be formatted as 01-Nov-2000.\n",
" \n",
" \n",
" \n",
" \n",
" 'SINCE date' \n",
" \n",
" Returns all messages after the date. Date must be formatted as 01-Nov-2000.\n",
" \n",
" \n",
" \n",
" \n",
" 'FROM some_string ' \n",
" \n",
" Returns all from the sender in the string. String can be an email, for example 'FROM user@example.com' or just a string that may appear in the email, \"FROM example\"\n",
" \n",
" \n",
" \n",
" \n",
" 'TO some_string' \n",
" \n",
" Returns all outgoing email to the email in the string. String can be an email, for example 'FROM user@example.com' or just a string that may appear in the email, \"FROM example\"\n",
" \n",
" \n",
" \n",
" \n",
" 'CC some_string' and/or 'BCC some_string' \n",
" \n",
" Returns all messages in your email folder. Often there are size limits from imaplib.\n",
" To change these use imaplib._MAXLINE = 100 , where 100 is whatever you want the limit to be.\n",
" \n",
" \n",
" \n",
" \n",
" 'SUBJECT string','BODY string','TEXT \"string with spaces\"' \n",
" \n",
" Returns all messages with the subject string or the string in the body of the email. If the string you are searching for has spaces in it, wrap it in double quotes.\n",
" \n",
" \n",
" \n",
" \n",
" 'SEEN', 'UNSEEN' \n",
" \n",
" Returns all messages that have been seen or unseen. (Also known as read or unread)\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 'ANSWERED', 'UNANSWERED' \n",
" \n",
" Returns all messages that have been replied to or unreplied to. \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 'DELETED', 'UNDELETED' \n",
" \n",
" Returns all messages that have been deleted or that have not been deleted.\n",
" \n",
" \n",
" \n",
" \n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also use the logical operators AND and OR to combine the above statements. Check out the full list of search keys here: http://www.4d.com/docs/CMU/CMU88864.HTM.\n",
"\n",
"Please note that some IMAP server providers for different email services will have slightly different syntax. You may need to experiment to get the results you want.\n",
"\n",
"___________\n",
"___________\n",
"\n",
"Now we can search our mail for any term we want. "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Use if you get an error saying limit was reached\n",
"imaplib._MAXLINE = 10000000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Send yourself a test email with the subject line:\n",
"\n",
" this is a test email for python\n",
"\n",
"Or some other uniquely identifying string. \n",
"\n",
"We will now need to reconnect to our imap server. You will probably need to restart your kernel for this step if you are using jupyter notebook."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Restart your kernel and run the following:\n",
"import imaplib\n",
"import getpass\n",
"M = imaplib.IMAP4_SSL('imap.gmail.com')\n",
"user = input(\"Enter your email: \")\n",
"password = getpass.getpass(\"Enter your password: \")\n",
"M.login(user,password)\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('OK', [b'28299'])"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Connect to your inbox\n",
"M.select(\"inbox\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now search and confirm if it is there:"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"typ ,data = M.search(None,'SUBJECT \"this is a test email for python\"')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"We can now save what it has returned:"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'OK'"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"typ"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[b'28298']"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The data will be a list of unique ids."
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"\n",
"# typ, data = M.fetch(data[0],\"(RFC822)\")"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"result, email_data = M.fetch(data[0],\"(RFC822)\")"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"raw_email = email_data[0][1]"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"raw_email_string = raw_email.decode('utf-8')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the built in email library to help parse this raw string."
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import email"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"email_message = email.message_from_string(raw_email_string)"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b'This is a test to see if the python search worked.\\r\\n'\n"
]
}
],
"source": [
"for part in email_message.walk():\n",
" if part.get_content_type() == \"text/plain\":\n",
" body = part.get_payload(decode=True)\n",
" print(body)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Excellent! We've successfully have been able to check our email's inbox , filter by some condition, and read the body of the text that was there. This will come in handy in the near future!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 16-Emailing-with-Python/.ipynb_checkpoints/02-Exercise-Ideas-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Python Email Exercise Ideas\n",
"\n",
"Since we can't really assess any code that would involve your personal email address, here are some ideas for you to test your new skills. Please keep in mind, we can not assess these."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Ideas\n",
"\n",
"* Daily Automatic Email Reminder for your Tasks\n",
"* Webscrape some statistics from a website automatically each day and email them to yourself\n",
"* Automatically email daily/weekly/monthly reports at your work\n",
"* Have end of day messages to your friends and family be sent out at random to spread joy\n",
"* Be creative! Mix together any of the skills you've learned so far with email :)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 16-Emailing-with-Python/00-Overview-of-Sending-Emails.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Overview of Sending Emails"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The smtplib library allows you to manually go through the steps of creating and sending an email in Python:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import smtplib"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create an SMTP object for a server. Here are the main Server Domain Name for the top email services. If you don't see your email server here, you may need to do a quick Google Search to see if there SMTP server domain name is available:\n",
"\n",
"\n",
"\n",
"\n",
" Provider \n",
" SMTP server domain name \n",
" \n",
"\n",
"\n",
" Gmail (will need App Password) \n",
" smtp.gmail.com \n",
" \n",
"\n",
" Yahoo Mail \n",
" smtp.mail.yahoo.com \n",
" \n",
"\n",
" Outlook.com/Hotmail.com \n",
" smtp-mail.outlook.com \n",
" \n",
" \n",
"\n",
"\n",
" AT&T \n",
" smpt.mail.att.net (Use port 465) \n",
" \n",
"\n",
"\n",
"\n",
" Verizon \n",
" smtp.verizon.net (Use port 465) \n",
" \n",
"\n",
"\n",
" Comcast \n",
" smtp.comcast.net \n",
" \n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next is to create an STMP object that can make the method calls to log you in to your email in order to send messages. Notice how also specify a port number. If the number 587 does not work on your computer, try using 465 instead. Keep in mind, a firewall or antivirus may prevent Python from opening up this port, so you may need to disable it on your computer."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"smtp_object = smtplib.SMTP('smtp.gmail.com',587)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next we run the ehlo() command which \"greets\" the server and establishes the connection. This method call should be done directly after creating the object. Calling it after other methods may result in errors in connecting later on. The first item in the tuple that is returned should be 250, indicating a successful connection."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(250,\n",
" b'smtp.gmail.com at your service, [47.143.81.4]\\nSIZE 35882577\\n8BITMIME\\nSTARTTLS\\nENHANCEDSTATUSCODES\\nPIPELINING\\nCHUNKING\\nSMTPUTF8')"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smtp_object.ehlo()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When using the 587 port, this means you are using TLS encryption, which you need to initiate by running the starttls() command. If you are using port 465, this means you are using SSL and you can skip this step."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(220, b'2.0.0 Ready to start TLS')"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smtp_object.starttls()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now its time to set up the email and the passwords. You should never save the raw string of your password or email in a script, because anyone that sees this script will then be able to see you email and password! Instead you should use input() to get that information. If you also don't want your password to be visible when typing it in, you can use the built-in **getpass** library that will hide your password as you type it in, either with asterisks or by just keeping it invisible."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# For hidden passwords\n",
"import getpass"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Type something here and it will be hidden: ········\n"
]
}
],
"source": [
"result = getpass.getpass(\"Type something here and it will be hidden: \")"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'a'"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Just keep in mind that its still visible as an object internally:\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter your passwords\n"
]
},
{
"data": {
"text/plain": [
"'s'"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Or just use input()\n",
"input(\"Enter your password\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"**Note for Gmail Users, you need to generate an app password instead of your normal email password. This also requires enabling 2-step authentication. Follow the instructions here to set-up 2-Step Factor Authentication as well as App Password Generation:https://support.google.com/accounts/answer/185833?hl=en/. Set-up 2 Factor Authentication, then create the App Password, choose Mail as the App and give it any name you want. This will output a 16 letter password for you. Pass in this password as your login password for the smtp.**\n",
"____"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"email = getpass.getpass(\"Enter your email: \")\n",
"password = getpass.getpass(\"Enter your password: \")\n",
"smtp_object.login(email,password)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can send an email using the .sendmail() method."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter your email: ········\n",
"Enter the email of the recipient: ········\n",
"Enter the subject line: This is a test\n",
"Type out the message you want to send: Here is the message.\n"
]
},
{
"data": {
"text/plain": [
"{}"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from_address = getpass.getpass(\"Enter your email: \")\n",
"to_address = getpass.getpass(\"Enter the email of the recipient: \")\n",
"subject = input(\"Enter the subject line: \")\n",
"message = input(\"Type out the message you want to send: \")\n",
"msg = \"Subject: \" + subject + '\\n' + message\n",
"smtp_object.sendmail(from_address,to_address,msg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you get back an empty dictionary, then the sending was successful."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can then close your session with the .quit() method."
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(221, b'2.0.0 closing connection j1sm22376227pgq.33 - gsmtp')"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smtp_object.quit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we know how to send emails, its time to learn how to look through emails you've already recieved."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 16-Emailing-with-Python/01-Overview-of-Received-Emails.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Overview of Received Emails\n",
"\n",
"Now that we understand how to send emails progammatically with Python, let's explore how we can read and search recieved emails. To do we will use the built-in [imaplib library](https://docs.python.org/3/library/imaplib.html#imap4-example). We will also use the built in [email](https://docs.python.org/3/library/email.examples.html) library for parsing through the recieved emails."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"import imaplib"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"M = imaplib.IMAP4_SSL('imap.gmail.com')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"import getpass"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"user = input(\"Enter your email: \")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter your password: ········\n"
]
}
],
"source": [
"# Remember , you may need an app password if you are a gmail user\n",
"# \n",
"password = getpass.getpass(\"Enter your password: \")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"M.login(user,password)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('OK',\n",
" [b'(\\\\HasNoChildren) \"/\" \"INBOX\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Personal\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Receipts\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Sent\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Trash\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Travel\"',\n",
" b'(\\\\HasNoChildren) \"/\" \"Work\"',\n",
" b'(\\\\HasChildren \\\\Noselect) \"/\" \"[Gmail]\"',\n",
" b'(\\\\All \\\\HasNoChildren) \"/\" \"[Gmail]/All Mail\"',\n",
" b'(\\\\Drafts \\\\HasNoChildren) \"/\" \"[Gmail]/Drafts\"',\n",
" b'(\\\\HasNoChildren \\\\Important) \"/\" \"[Gmail]/Important\"',\n",
" b'(\\\\HasNoChildren \\\\Sent) \"/\" \"[Gmail]/Sent Mail\"',\n",
" b'(\\\\HasNoChildren \\\\Junk) \"/\" \"[Gmail]/Spam\"',\n",
" b'(\\\\Flagged \\\\HasNoChildren) \"/\" \"[Gmail]/Starred\"',\n",
" b'(\\\\HasNoChildren \\\\Trash) \"/\" \"[Gmail]/Trash\"'])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.list()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('OK', [b'28297'])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Connect to your inbox\n",
"M.select(\"inbox\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Searching Mail\n",
"\n",
"Now that we have connected to our mail, we should be able to search for it using the specialized syntax of IMAP. Here are the different search keys you can use:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
" \n",
" Keyword \n",
" Definition \n",
" \n",
" \n",
" 'ALL' \n",
" \n",
" Returns all messages in your email folder. Often there are size limits from imaplib.\n",
" To change these use imaplib._MAXLINE = 100 , where 100 is whatever you want the limit to be.\n",
" \n",
" \n",
" \n",
" 'BEFORE date' \n",
" \n",
" Returns all messages before the date. Date must be formatted as 01-Nov-2000.\n",
" \n",
" \n",
" \n",
" 'ON date' \n",
" \n",
" Returns all messages on the date. Date must be formatted as 01-Nov-2000.\n",
" \n",
" \n",
" \n",
" 'SINCE date' \n",
" \n",
" Returns all messages after the date. Date must be formatted as 01-Nov-2000.\n",
" \n",
" \n",
" \n",
" 'FROM some_string ' \n",
" \n",
" Returns all from the sender in the string. String can be an email, for example 'FROM user@example.com' or just a string that may appear in the email, \"FROM example\"\n",
" \n",
" \n",
" \n",
" 'TO some_string' \n",
" \n",
" Returns all outgoing email to the email in the string. String can be an email, for example 'FROM user@example.com' or just a string that may appear in the email, \"FROM example\"\n",
" \n",
" \n",
" \n",
" 'CC some_string' and/or 'BCC some_string' \n",
" \n",
" Returns all messages in your email folder. Often there are size limits from imaplib.\n",
" To change these use imaplib._MAXLINE = 100 , where 100 is whatever you want the limit to be.\n",
" \n",
" \n",
" \n",
" 'SUBJECT string','BODY string','TEXT \"string with spaces\"' \n",
" \n",
" Returns all messages with the subject string or the string in the body of the email. If the string you are searching for has spaces in it, wrap it in double quotes.\n",
" \n",
" \n",
" \n",
" 'SEEN', 'UNSEEN' \n",
" \n",
" Returns all messages that have been seen or unseen. (Also known as read or unread)\n",
" \n",
" \n",
" \n",
" 'ANSWERED', 'UNANSWERED' \n",
" \n",
" Returns all messages that have been replied to or unreplied to. \n",
" \n",
" \n",
" \n",
" 'DELETED', 'UNDELETED' \n",
" \n",
" Returns all messages that have been deleted or that have not been deleted.\n",
" \n",
" \n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also use the logical operators AND and OR to combine the above statements. Check out the full list of search keys here: https://developer.4d.com/docs/API/IMAPTransporterClass#authorized-search-keys.\n",
"\n",
"Please note that some IMAP server providers for different email services will have slightly different syntax. You may need to experiment to get the results you want.\n",
"\n",
"___________\n",
"___________\n",
"\n",
"Now we can search our mail for any term we want. "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"# Use if you get an error saying limit was reached\n",
"imaplib._MAXLINE = 10000000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Send yourself a test email with the subject line:\n",
"\n",
" this is a test email for python\n",
"\n",
"Or some other uniquely identifying string. \n",
"\n",
"We will now need to reconnect to our imap server. You will probably need to restart your kernel for this step if you are using jupyter notebook."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"# Restart your kernel and run the following:\n",
"import imaplib\n",
"import getpass\n",
"M = imaplib.IMAP4_SSL('imap.gmail.com')\n",
"user = input(\"Enter your email: \")\n",
"password = getpass.getpass(\"Enter your password: \")\n",
"M.login(user,password)\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('OK', [b'28299'])"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Connect to your inbox\n",
"M.select(\"inbox\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now search and confirm if it is there:"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"typ ,data = M.search(None,'SUBJECT \"this is a test email for python\"')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"source": [
"We can now save what it has returned:"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'OK'"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"typ"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[b'28298']"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The data will be a list of unique ids."
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"\n",
"# typ, data = M.fetch(data[0],\"(RFC822)\")"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"result, email_data = M.fetch(data[0],\"(RFC822)\")"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"raw_email = email_data[0][1]"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"raw_email_string = raw_email.decode('utf-8')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the built in email library to help parse this raw string."
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"import email"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"email_message = email.message_from_string(raw_email_string)"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b'This is a test to see if the python search worked.\\r\\n'\n"
]
}
],
"source": [
"for part in email_message.walk():\n",
" if part.get_content_type() == \"text/plain\":\n",
" body = part.get_payload(decode=True)\n",
" print(body)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Excellent! We've successfully have been able to check our email's inbox , filter by some condition, and read the body of the text that was there. This will come in handy in the near future!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: 16-Emailing-with-Python/02-Exercise-Ideas.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
" \n",
"___\n",
"Content Copyright by Pierian Data "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Python Email Exercise Ideas\n",
"\n",
"Since we can't really assess any code that would involve your personal email address, here are some ideas for you to test your new skills. Please keep in mind, we can not assess these."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Ideas\n",
"\n",
"* Daily Automatic Email Reminder for your Tasks\n",
"* Webscrape some statistics from a website automatically each day and email them to yourself\n",
"* Automatically email daily/weekly/monthly reports at your work\n",
"* Have end of day messages to your friends and family be sent out at random to spread joy\n",
"* Be creative! Mix together any of the skills you've learned so far with email :)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/.ipynb_checkpoints/01-Advanced Numbers-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Advanced Numbers\n",
"In this lecture we will learn about a few more representations of numbers in Python."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Hexadecimal\n",
"\n",
"Using the function hex() you can convert numbers into a [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) format:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0xf6'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hex(246)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0x200'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hex(512)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Binary \n",
"Using the function bin() you can convert numbers into their [binary](https://en.wikipedia.org/wiki/Binary_number) format."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0b10011010010'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bin(1234)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0b10000000'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bin(128)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0b1000000000'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bin(512)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exponentials\n",
"The function pow() takes two arguments, equivalent to ```x^y```. With three arguments it is equivalent to ```(x^y)%z```, but may be more efficient for long integers."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"81"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pow(3,4)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pow(3,4,5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Absolute Value\n",
"The function abs() returns the absolute value of a number. The argument may be an integer or a floating point number. If the argument is a complex number, its magnitude is returned.\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.14"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"abs(-3.14)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"abs(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Round\n",
"The function round() will round a number to a given precision in decimal digits (default 0 digits). It does not convert integers to floats."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(3,2)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"400"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(395,-2)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.14"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(3.1415926535,2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python has a built-in math library that is also useful to play around with in case you are ever in need of some mathematical operations. Explore the documentation [here](https://docs.python.org/3/library/math.html)!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/.ipynb_checkpoints/02-Advanced Strings-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Advanced Strings\n",
"String objects have a variety of methods we can use to save time and add functionality. Let's explore some of them in this lecture:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"s = 'hello world'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Changing case\n",
"We can use methods to capitalize the first word of a string, or change the case of the entire string."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Hello world'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Capitalize first word in string\n",
"s.capitalize()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'HELLO WORLD'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.upper()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello world'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.lower()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remember, strings are immutable. None of the above methods change the string in place, they only return modified copies of the original string."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello world'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To change a string requires reassignment:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'HELLO WORLD'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = s.upper()\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello world'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = s.lower()\n",
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Location and Counting"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.count('o') # returns the number of occurrences, without overlap"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.find('o') # returns the starting index position of the first occurence"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Formatting\n",
"The center() method allows you to place your string 'centered' between a provided string with a certain length. Personally, I've never actually used this in code as it seems pretty esoteric..."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'zzzzhello worldzzzzz'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.center(20,'z')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The expandtabs() method will expand tab notations \\t into spaces:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello hi'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'hello\\thi'.expandtabs()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## is check methods\n",
"These various methods below check if the string is some case. Let's explore them:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"s = 'hello'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isalnum() will return True if all characters in **s** are alphanumeric"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isalnum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isalpha() will return True if all characters in **s** are alphabetic"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isalpha()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"islower() will return True if all cased characters in **s** are lowercase and there is\n",
"at least one cased character in **s**, False otherwise."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.islower()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isspace() will return True if all characters in **s** are whitespace."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isspace()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"istitle() will return True if **s** is a title cased string and there is at least one character in **s**, i.e. uppercase characters may only follow uncased characters and lowercase characters only cased ones. It returns False otherwise."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.istitle()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isupper() will return True if all cased characters in **s** are uppercase and there is\n",
"at least one cased character in **s**, False otherwise."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isupper()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another method is endswith() which is essentially the same as a boolean check on s[-1]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.endswith('o')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Built-in Reg. Expressions\n",
"Strings have some built-in methods that can resemble regular expression operations.\n",
"We can use split() to split the string at a certain element and return a list of the results.\n",
"We can use partition() to return a tuple that includes the first occurrence of the separator sandwiched between the first half and the end half."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['h', 'llo']"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.split('e')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('he', 'l', 'lo')"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.partition('l')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now feel comfortable using the variety of methods that are built-in string objects!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/.ipynb_checkpoints/03-Advanced Sets-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Sets\n",
"In this lecture we will learn about the various methods for sets that you may not have seen yet. We'll go over the basic ones you already know and then dive a little deeper."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"s = set()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# add\n",
"add elements to a set. Remember, a set won't duplicate elements; it will only present them once (that's why it's called a set!)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"s.add(1)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"s.add(2)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## clear\n",
"removes all elements from the set"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"s.clear()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"set()"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## copy\n",
"returns a copy of the set. Note it is a copy, so changes to the original don't effect the copy."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"s = {1,2,3}\n",
"sc = s.copy()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sc"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"s.add(4)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 4}"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sc"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## difference\n",
"difference returns the difference of two or more sets. The syntax is:\n",
"\n",
" set1.difference(set2)\n",
"For example:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{4}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.difference(sc)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## difference_update\n",
"difference_update syntax is:\n",
"\n",
" set1.difference_update(set2)\n",
"the method returns set1 after removing elements found in set2"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"s1 = {1,2,3}"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"s2 = {1,4,5}"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"s1.difference_update(s2)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{2, 3}"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## discard\n",
"Removes an element from a set if it is a member. If the element is not a member, do nothing."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 4}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"s.discard(2)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 3, 4}"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## intersection and intersection_update\n",
"Returns the intersection of two or more sets as a new set.(i.e. elements that are common to all of the sets.)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"s1 = {1,2,3}"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"s2 = {1,2,4}"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.intersection(s2)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"intersection_update will update a set with the intersection of itself and another."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"s1.intersection_update(s2)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## isdisjoint\n",
"This method will return True if two sets have a null intersection."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"s1 = {1,2}\n",
"s2 = {1,2,4}\n",
"s3 = {5}"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.isdisjoint(s2)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.isdisjoint(s3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## issubset\n",
"This method reports whether another set contains this set."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s2"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.issubset(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## issuperset\n",
"This method will report whether this set contains another set."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s2.issuperset(s1)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.issuperset(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## symmetric_difference and symmetric_update\n",
"Return the symmetric difference of two sets as a new set.(i.e. all elements that are in exactly one of the sets.)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s2"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{4}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.symmetric_difference(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## union\n",
"Returns the union of two sets (i.e. all elements that are in either set.)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.union(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## update\n",
"Update a set with the union of itself and others."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"s1.update(s2)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now have a complete awareness of all the methods available to you for a set object type. This data structure is extremely useful and is underutilized by beginners, so try to keep it in mind!\n",
"\n",
"Good Job!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/.ipynb_checkpoints/04-Advanced Dictionaries-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Dictionaries\n",
"Unlike some of the other Data Structures we've worked with, most of the really useful methods available to us in Dictionaries have already been explored throughout this course. Here we will touch on just a few more for good measure:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dictionary Comprehensions\n",
"\n",
"Just like List Comprehensions, Dictionary Data Types also support their own version of comprehension for quick creation. It is not as commonly used as List Comprehensions, but the syntax is:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"{x:x**2 for x in range(10)}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One of the reasons it is not as common is the difficulty in structuring key names that are not based off the values."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Iteration over keys, values, and items\n",
"Dictionaries can be iterated over using the keys(), values() and items() methods. For example:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"d = {'k1':1,'k2':2}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"k1\n",
"k2\n"
]
}
],
"source": [
"for k in d.keys():\n",
" print(k)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"2\n"
]
}
],
"source": [
"for v in d.values():\n",
" print(v)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('k1', 1)\n",
"('k2', 2)\n"
]
}
],
"source": [
"for item in d.items():\n",
" print(item)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Viewing keys, values and items\n",
"By themselves the keys(), values() and items() methods return a dictionary *view object*. This is not a separate list of items. Instead, the view is always tied to the original dictionary."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['k1', 'k2'])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"key_view = d.keys()\n",
"\n",
"key_view"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'k1': 1, 'k2': 2, 'k3': 3}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d['k3'] = 3\n",
"\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['k1', 'k2', 'k3'])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"key_view"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now feel very comfortable using the variety of methods available to you in Dictionaries!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/.ipynb_checkpoints/05-Advanced Lists-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Lists\n",
"\n",
"In this series of lectures we will be diving a little deeper into all the methods available in a list object. These aren't officially \"advanced\" features, just methods that you wouldn't typically encounter without some additional exploring. It's pretty likely that you've already encountered some of these yourself!\n",
"\n",
"Let's begin!"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"list1 = [1,2,3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## append\n",
"You will definitely have used this method by now, which merely appends an element to the end of a list:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.append(4)\n",
"\n",
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## count\n",
"We discussed this during the methods lectures, but here it is again. count() takes in an element and returns the number of times it occurs in your list:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.count(10)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.count(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## extend\n",
"Many times people find the difference between extend and append to be unclear. So note:\n",
"\n",
"**append: appends whole object at end:**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, [4, 5]]\n"
]
}
],
"source": [
"x = [1, 2, 3]\n",
"x.append([4, 5])\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**extend: extends list by appending elements from the iterable:**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5]\n"
]
}
],
"source": [
"x = [1, 2, 3]\n",
"x.extend([4, 5])\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note how extend() appends each element from the passed-in list. That is the key difference."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## index\n",
"index() will return the index of whatever element is placed as an argument. Note: If the the element is not in the list an error is raised."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.index(2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "12 is not in list",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlist1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m12\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mValueError\u001b[0m: 12 is not in list"
]
}
],
"source": [
"list1.index(12)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## insert \n",
"insert() takes in two arguments: insert(index,object) This method places the object at the index supplied. For example:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# Place a letter at the index 2\n",
"list1.insert(2,'inserted')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 'inserted', 3, 4]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## pop\n",
"You most likely have already seen pop(), which allows us to \"pop\" off the last element of a list. However, by passing an index position you can remove and return a specific element."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"ele = list1.pop(1) # pop the second element"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 'inserted', 3, 4]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ele"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## remove\n",
"The remove() method removes the first occurrence of a value. For example:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 'inserted', 3, 4]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"list1.remove('inserted')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 3, 4]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"list2 = [1,2,3,4,3]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"list2.remove(3)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 4, 3]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## reverse\n",
"As you might have guessed, reverse() reverses a list. Note this occurs in place! Meaning it affects your list permanently."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"list2.reverse()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 4, 2, 1]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## sort\n",
"The sort() method will sort your list in place:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 4, 2, 1]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"list2.sort()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The sort() method takes an optional argument for reverse sorting. Note this is different than simply reversing the order of items."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"list2.sort(reverse=True)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[4, 3, 2, 1]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Be Careful With Assignment!\n",
"A common programming mistake is to assume you can assign a modified list to a new variable. While this typically works with immutable objects like strings and tuples:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"x = 'hello world'"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"y = x.upper()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"HELLO WORLD\n"
]
}
],
"source": [
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This will NOT work the same way with lists:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"x = [1,2,3]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"y = x.append(4)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"None\n"
]
}
],
"source": [
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What happened? In this case, since list methods like append() affect the list *in-place*, the operation returns a None value. This is what was passed to **y**. In order to retain **x** you would have to assign a *copy* of **x** to **y**, and then modify **y**:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"x = [1,2,3]\n",
"y = x.copy()\n",
"y.append(4)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3]\n"
]
}
],
"source": [
"print(x)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4]\n"
]
}
],
"source": [
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now have an understanding of all the methods available for a list in Python!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/.ipynb_checkpoints/06-Advanced Python Objects Test-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Python Objects Test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Numbers\n",
"\n",
"**Problem 1: Convert 1024 to binary and hexadecimal representation**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 2: Round 5.23222 to two decimal places**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Strings\n",
"**Problem 3: Check if every letter in the string s is lower case**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s = 'hello how are you Mary, are you feeling okay?'\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 4: How many times does the letter 'w' show up in the string below?**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s = 'twywywtwywbwhsjhwuwshshwuwwwjdjdid'\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Sets\n",
"**Problem 5: Find the elements in set1 that are not in set2:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"set1 = {2,3,1,5,6,8}\n",
"set2 = {3,1,7,5,6,8}\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 6: Find all elements that are in either set:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Dictionaries\n",
"\n",
"**Problem 7: Create this dictionary:\n",
"{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}\n",
" using a dictionary comprehension.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Lists\n",
"\n",
"**Problem 8: Reverse the list below:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"list1 = [1,2,3,4]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 9: Sort the list below:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"list2 = [3,4,2,5,1]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Great Job!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/.ipynb_checkpoints/07-Advanced Python Objects Test - Solutions-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Python Objects Test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Numbers\n",
"\n",
"**Problem 1: Convert 1024 to binary and hexadecimal representation**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0b10000000000\n",
"0x400\n"
]
}
],
"source": [
"print(bin(1024))\n",
"print(hex(1024))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 2: Round 5.23222 to two decimal places**"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.23"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(5.23222,2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Strings\n",
"**Problem 3: Check if every letter in the string s is lower case**"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = 'hello how are you Mary, are you feeling okay?'\n",
"\n",
"s.islower()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 4: How many times does the letter 'w' show up in the string below?**"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = 'twywywtwywbwhsjhwuwshshwuwwwjdjdid'\n",
"s.count('w')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced \n",
"**Problem 5: Find the elements in set1 that are not in set2:**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{2}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set1 = {2,3,1,5,6,8}\n",
"set2 = {3,1,7,5,6,8}\n",
"\n",
"set1.difference(set2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 6: Find all elements that are in either set:**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 5, 6, 7, 8}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set1.union(set2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Dictionaries\n",
"\n",
"**Problem 7: Create this dictionary:\n",
"{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}\n",
" using a dictionary comprehension.**"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"{x:x**3 for x in range(5)}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Lists\n",
"\n",
"**Problem 8: Reverse the list below:**"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[4, 3, 2, 1]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1 = [1,2,3,4]\n",
"\n",
"list1.reverse()\n",
"\n",
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 9: Sort the list below:**"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4, 5]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2 = [3,4,2,5,1]\n",
"\n",
"list2.sort()\n",
"\n",
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Great Job!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/01-Advanced Numbers.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Advanced Numbers\n",
"In this lecture we will learn about a few more representations of numbers in Python."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Hexadecimal\n",
"\n",
"Using the function hex() you can convert numbers into a [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) format:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0xf6'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hex(246)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0x200'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hex(512)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Binary \n",
"Using the function bin() you can convert numbers into their [binary](https://en.wikipedia.org/wiki/Binary_number) format."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0b10011010010'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bin(1234)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0b10000000'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bin(128)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0b1000000000'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bin(512)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exponentials\n",
"The function pow() takes two arguments, equivalent to ```x^y```. With three arguments it is equivalent to ```(x^y)%z```, but may be more efficient for long integers."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"81"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pow(3,4)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pow(3,4,5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Absolute Value\n",
"The function abs() returns the absolute value of a number. The argument may be an integer or a floating point number. If the argument is a complex number, its magnitude is returned.\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.14"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"abs(-3.14)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"abs(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Round\n",
"The function round() will round a number to a given precision in decimal digits (default 0 digits). It does not convert integers to floats."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(3,2)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"400"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(395,-2)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.14"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(3.1415926535,2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python has a built-in math library that is also useful to play around with in case you are ever in need of some mathematical operations. Explore the documentation [here](https://docs.python.org/3/library/math.html)!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/02-Advanced Strings.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Advanced Strings\n",
"String objects have a variety of methods we can use to save time and add functionality. Let's explore some of them in this lecture:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"s = 'hello world'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Changing case\n",
"We can use methods to capitalize the first word of a string, or change the case of the entire string."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Hello world'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Capitalize first word in string\n",
"s.capitalize()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'HELLO WORLD'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.upper()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello world'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.lower()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remember, strings are immutable. None of the above methods change the string in place, they only return modified copies of the original string."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello world'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To change a string requires reassignment:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'HELLO WORLD'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = s.upper()\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello world'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = s.lower()\n",
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Location and Counting"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.count('o') # returns the number of occurrences, without overlap"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.find('o') # returns the starting index position of the first occurence"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Formatting\n",
"The center() method allows you to place your string 'centered' between a provided string with a certain length. Personally, I've never actually used this in code as it seems pretty esoteric..."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'zzzzhello worldzzzzz'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.center(20,'z')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The expandtabs() method will expand tab notations \\t into spaces:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hello hi'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'hello\\thi'.expandtabs()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## is check methods\n",
"These various methods below check if the string is some case. Let's explore them:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"s = 'hello'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isalnum() will return True if all characters in **s** are alphanumeric"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isalnum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isalpha() will return True if all characters in **s** are alphabetic"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isalpha()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"islower() will return True if all cased characters in **s** are lowercase and there is\n",
"at least one cased character in **s**, False otherwise."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.islower()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isspace() will return True if all characters in **s** are whitespace."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isspace()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"istitle() will return True if **s** is a title cased string and there is at least one character in **s**, i.e. uppercase characters may only follow uncased characters and lowercase characters only cased ones. It returns False otherwise."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.istitle()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"isupper() will return True if all cased characters in **s** are uppercase and there is\n",
"at least one cased character in **s**, False otherwise."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.isupper()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another method is endswith() which is essentially the same as a boolean check on s[-1]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.endswith('o')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Built-in Reg. Expressions\n",
"Strings have some built-in methods that can resemble regular expression operations.\n",
"We can use split() to split the string at a certain element and return a list of the results.\n",
"We can use partition() to return a tuple that includes the first occurrence of the separator sandwiched between the first half and the end half."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['h', 'llo']"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.split('e')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('he', 'l', 'lo')"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.partition('l')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now feel comfortable using the variety of methods that are built-in string objects!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/03-Advanced Sets.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Sets\n",
"In this lecture we will learn about the various methods for sets that you may not have seen yet. We'll go over the basic ones you already know and then dive a little deeper."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"s = set()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# add\n",
"add elements to a set. Remember, a set won't duplicate elements; it will only present them once (that's why it's called a set!)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"s.add(1)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"s.add(2)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## clear\n",
"removes all elements from the set"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"s.clear()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"set()"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## copy\n",
"returns a copy of the set. Note it is a copy, so changes to the original don't effect the copy."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"s = {1,2,3}\n",
"sc = s.copy()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sc"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"s.add(4)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 4}"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sc"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## difference\n",
"difference returns the difference of two or more sets. The syntax is:\n",
"\n",
" set1.difference(set2)\n",
"For example:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{4}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.difference(sc)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## difference_update\n",
"difference_update syntax is:\n",
"\n",
" set1.difference_update(set2)\n",
"the method returns set1 after removing elements found in set2"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"s1 = {1,2,3}"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"s2 = {1,4,5}"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"s1.difference_update(s2)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{2, 3}"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## discard\n",
"Removes an element from a set if it is a member. If the element is not a member, do nothing."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 4}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"s.discard(2)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 3, 4}"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## intersection and intersection_update\n",
"Returns the intersection of two or more sets as a new set.(i.e. elements that are common to all of the sets.)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"s1 = {1,2,3}"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"s2 = {1,2,4}"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.intersection(s2)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3}"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"intersection_update will update a set with the intersection of itself and another."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"s1.intersection_update(s2)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## isdisjoint\n",
"This method will return True if two sets have a null intersection."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"s1 = {1,2}\n",
"s2 = {1,2,4}\n",
"s3 = {5}"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.isdisjoint(s2)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.isdisjoint(s3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## issubset\n",
"This method reports whether another set contains this set."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s2"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.issubset(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## issuperset\n",
"This method will report whether this set contains another set."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s2.issuperset(s1)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.issuperset(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## symmetric_difference and symmetric_update\n",
"Return the symmetric difference of two sets as a new set.(i.e. all elements that are in exactly one of the sets.)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2}"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s2"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{4}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.symmetric_difference(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## union\n",
"Returns the union of two sets (i.e. all elements that are in either set.)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1.union(s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## update\n",
"Update a set with the union of itself and others."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"s1.update(s2)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 4}"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now have a complete awareness of all the methods available to you for a set object type. This data structure is extremely useful and is underutilized by beginners, so try to keep it in mind!\n",
"\n",
"Good Job!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/04-Advanced Dictionaries.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Dictionaries\n",
"Unlike some of the other Data Structures we've worked with, most of the really useful methods available to us in Dictionaries have already been explored throughout this course. Here we will touch on just a few more for good measure:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dictionary Comprehensions\n",
"\n",
"Just like List Comprehensions, Dictionary Data Types also support their own version of comprehension for quick creation. It is not as commonly used as List Comprehensions, but the syntax is:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"{x:x**2 for x in range(10)}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One of the reasons it is not as common is the difficulty in structuring key names that are not based off the values."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Iteration over keys, values, and items\n",
"Dictionaries can be iterated over using the keys(), values() and items() methods. For example:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"d = {'k1':1,'k2':2}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"k1\n",
"k2\n"
]
}
],
"source": [
"for k in d.keys():\n",
" print(k)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"2\n"
]
}
],
"source": [
"for v in d.values():\n",
" print(v)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('k1', 1)\n",
"('k2', 2)\n"
]
}
],
"source": [
"for item in d.items():\n",
" print(item)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Viewing keys, values and items\n",
"By themselves the keys(), values() and items() methods return a dictionary *view object*. This is not a separate list of items. Instead, the view is always tied to the original dictionary."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['k1', 'k2'])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"key_view = d.keys()\n",
"\n",
"key_view"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'k1': 1, 'k2': 2, 'k3': 3}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d['k3'] = 3\n",
"\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['k1', 'k2', 'k3'])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"key_view"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now feel very comfortable using the variety of methods available to you in Dictionaries!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/05-Advanced Lists.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Lists\n",
"\n",
"In this series of lectures we will be diving a little deeper into all the methods available in a list object. These aren't officially \"advanced\" features, just methods that you wouldn't typically encounter without some additional exploring. It's pretty likely that you've already encountered some of these yourself!\n",
"\n",
"Let's begin!"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"list1 = [1,2,3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## append\n",
"You will definitely have used this method by now, which merely appends an element to the end of a list:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.append(4)\n",
"\n",
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## count\n",
"We discussed this during the methods lectures, but here it is again. count() takes in an element and returns the number of times it occurs in your list:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.count(10)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.count(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## extend\n",
"Many times people find the difference between extend and append to be unclear. So note:\n",
"\n",
"**append: appends whole object at end:**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, [4, 5]]\n"
]
}
],
"source": [
"x = [1, 2, 3]\n",
"x.append([4, 5])\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**extend: extends list by appending elements from the iterable:**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5]\n"
]
}
],
"source": [
"x = [1, 2, 3]\n",
"x.extend([4, 5])\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note how extend() appends each element from the passed-in list. That is the key difference."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## index\n",
"index() will return the index of whatever element is placed as an argument. Note: If the the element is not in the list an error is raised."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1.index(2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "12 is not in list",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlist1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m12\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mValueError\u001b[0m: 12 is not in list"
]
}
],
"source": [
"list1.index(12)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## insert \n",
"insert() takes in two arguments: insert(index,object) This method places the object at the index supplied. For example:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# Place a letter at the index 2\n",
"list1.insert(2,'inserted')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 'inserted', 3, 4]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## pop\n",
"You most likely have already seen pop(), which allows us to \"pop\" off the last element of a list. However, by passing an index position you can remove and return a specific element."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"ele = list1.pop(1) # pop the second element"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 'inserted', 3, 4]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ele"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## remove\n",
"The remove() method removes the first occurrence of a value. For example:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 'inserted', 3, 4]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"list1.remove('inserted')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 3, 4]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"list2 = [1,2,3,4,3]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"list2.remove(3)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 4, 3]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## reverse\n",
"As you might have guessed, reverse() reverses a list. Note this occurs in place! Meaning it affects your list permanently."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"list2.reverse()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 4, 2, 1]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## sort\n",
"The sort() method will sort your list in place:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[3, 4, 2, 1]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"list2.sort()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The sort() method takes an optional argument for reverse sorting. Note this is different than simply reversing the order of items."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"list2.sort(reverse=True)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[4, 3, 2, 1]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Be Careful With Assignment!\n",
"A common programming mistake is to assume you can assign a modified list to a new variable. While this typically works with immutable objects like strings and tuples:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"x = 'hello world'"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"y = x.upper()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"HELLO WORLD\n"
]
}
],
"source": [
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This will NOT work the same way with lists:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"x = [1,2,3]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"y = x.append(4)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"None\n"
]
}
],
"source": [
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What happened? In this case, since list methods like append() affect the list *in-place*, the operation returns a None value. This is what was passed to **y**. In order to retain **x** you would have to assign a *copy* of **x** to **y**, and then modify **y**:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"x = [1,2,3]\n",
"y = x.copy()\n",
"y.append(4)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3]\n"
]
}
],
"source": [
"print(x)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4]\n"
]
}
],
"source": [
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! You should now have an understanding of all the methods available for a list in Python!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/06-Advanced Python Objects Test.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Python Objects Test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Numbers\n",
"\n",
"**Problem 1: Convert 1024 to binary and hexadecimal representation**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 2: Round 5.23222 to two decimal places**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Strings\n",
"**Problem 3: Check if every letter in the string s is lower case**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s = 'hello how are you Mary, are you feeling okay?'\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 4: How many times does the letter 'w' show up in the string below?**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s = 'twywywtwywbwhsjhwuwshshwuwwwjdjdid'\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Sets\n",
"**Problem 5: Find the elements in set1 that are not in set2:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"set1 = {2,3,1,5,6,8}\n",
"set2 = {3,1,7,5,6,8}\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 6: Find all elements that are in either set:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Dictionaries\n",
"\n",
"**Problem 7: Create this dictionary:\n",
"{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}\n",
" using a dictionary comprehension.**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Lists\n",
"\n",
"**Problem 8: Reverse the list below:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"list1 = [1,2,3,4]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 9: Sort the list below:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"list2 = [3,4,2,5,1]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Great Job!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/07-Advanced Python Objects Test - Solutions.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Python Objects Test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Numbers\n",
"\n",
"**Problem 1: Convert 1024 to binary and hexadecimal representation**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0b10000000000\n",
"0x400\n"
]
}
],
"source": [
"print(bin(1024))\n",
"print(hex(1024))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 2: Round 5.23222 to two decimal places**"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.23"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(5.23222,2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Strings\n",
"**Problem 3: Check if every letter in the string s is lower case**"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = 'hello how are you Mary, are you feeling okay?'\n",
"\n",
"s.islower()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 4: How many times does the letter 'w' show up in the string below?**"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = 'twywywtwywbwhsjhwuwshshwuwwwjdjdid'\n",
"s.count('w')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced \n",
"**Problem 5: Find the elements in set1 that are not in set2:**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{2}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set1 = {2,3,1,5,6,8}\n",
"set2 = {3,1,7,5,6,8}\n",
"\n",
"set1.difference(set2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 6: Find all elements that are in either set:**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 5, 6, 7, 8}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set1.union(set2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Dictionaries\n",
"\n",
"**Problem 7: Create this dictionary:\n",
"{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}\n",
" using a dictionary comprehension.**"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"{x:x**3 for x in range(5)}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced Lists\n",
"\n",
"**Problem 8: Reverse the list below:**"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[4, 3, 2, 1]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list1 = [1,2,3,4]\n",
"\n",
"list1.reverse()\n",
"\n",
"list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Problem 9: Sort the list below:**"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4, 5]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list2 = [3,4,2,5,1]\n",
"\n",
"list2.sort()\n",
"\n",
"list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Great Job!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 17-Advanced Python Objects and Data Structures/08-BONUS - With Statement Context Managers.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# With Statement Context Managers\n",
"\n",
"When you open a file using `f = open('test.txt')`, the file stays open until you specifically call `f.close()`. Should an exception be raised while working with the file, it remains open. This can lead to vulnerabilities in your code, and inefficient use of resources.\n",
"\n",
"A context manager handles the opening and closing of resources, and provides a built-in `try/finally` block should any exceptions occur.\n",
"\n",
"The best way to demonstrate this is with an example.\n",
"\n",
"### Standard `open()` procedure, with a raised exception:\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"ename": "UnsupportedOperation",
"evalue": "not readable",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mUnsupportedOperation\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'oops.txt'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'a'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreadlines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mUnsupportedOperation\u001b[0m: not readable"
]
}
],
"source": [
"p = open('oops.txt','a')\n",
"p.readlines()\n",
"p.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see if we can modify our file:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.write('add more text')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ouch! I may not have wanted to do that until I traced the exception! Unfortunately, the exception prevented the last line, `p.close()` from running. Let's close the file manually:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"p.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Protect the file with `try/except/finally`\n",
"\n",
"A common workaround is to insert a `try/except/finally` clause to close the file whenever an exception is raised:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"An exception was raised!\n"
]
}
],
"source": [
"p = open('oops.txt','a')\n",
"try:\n",
" p.readlines()\n",
"except:\n",
" print('An exception was raised!')\n",
"finally:\n",
" p.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see if we can modify our file this time:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "I/O operation on closed file.",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'add more text'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mValueError\u001b[0m: I/O operation on closed file."
]
}
],
"source": [
"p.write('add more text')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Excellent! Our file is safe.\n",
"\n",
"### Save steps with `with`\n",
"\n",
"Now we'll employ our context manager. The syntax follows `with [resource] as [target]: do something`"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"ename": "UnsupportedOperation",
"evalue": "not readable",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mUnsupportedOperation\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'oops.txt'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'a'\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mp\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreadlines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mUnsupportedOperation\u001b[0m: not readable"
]
}
],
"source": [
"with open('oops.txt','a') as p:\n",
" p.readlines()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Can we modify the file?"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "I/O operation on closed file.",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'add more text'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mValueError\u001b[0m: I/O operation on closed file."
]
}
],
"source": [
"p.write('add more text')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great! With just one line of code we've handled opening the file, enclosing our code in a `try/finally` block, and closing our file all at the same time.\n",
"\n",
"Now you should have a basic understanding of context managers."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 18-Milestone Project - 3/.ipynb_checkpoints/01-Final Capstone Project-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Final Capstone Projects\n",
"\n",
"Please refer to the [**Final Capstone Projects**](http://nbviewer.jupyter.org/github/jmportilla/Complete-Python-Bootcamp/tree/master/Final%20Capstone%20Projects/) folder to get all the info on final capstone project ideas and possible solutions!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 18-Milestone Project - 3/.ipynb_checkpoints/02-Final Capstone Project Ideas-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# List of Capstone Projects\n",
"\n",
"This list contains around 100 project ideas for you to try out in Python! Some of them are straightforward and others we have done before (such as a Fibonacci Sequence or FizzBuzz). \n",
"\n",
"Pick a simple project that you think you can finish in a day to start off with, then pick another project that you think will take you more than a week and extensive Googling!\n",
"\n",
"There are some sample solutions in this folder as well so feel free to explore and remember:\n",
"\n",
"**HAVE FUN!**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Numbers\n",
"---------\n",
"\n",
"**Find PI to the Nth Digit** - Enter a number and have the program generate π (pi) up to that many decimal places. Keep a limit to how far the program will go.\n",
"\n",
"**Find e to the Nth Digit** - Just like the previous problem, but with e instead of π (pi). Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go.\n",
"\n",
"**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number.\n",
"\n",
"**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them.\n",
"\n",
"**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one.\n",
"\n",
"**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user.\n",
"\n",
"**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually).\n",
"\n",
"**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change.\n",
"\n",
"**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent.\n",
"\n",
"**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity.\n",
"\n",
"**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion.\n",
"\n",
"**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time.\n",
"\n",
"**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude.\n",
"\n",
"**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum).\n",
"\n",
"**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax.\n",
"\n",
"**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion.\n",
"\n",
"**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested.\n",
"\n",
"**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers.\n",
"\n",
"**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).*\n",
"\n",
"**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads.\n",
"\n",
"**Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.*\n",
"\n",
"**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity.\n",
"\n",
"Classic Algorithms\n",
"-----------------\n",
"\n",
"**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1.\n",
"\n",
"**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort.\n",
"\n",
"**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them.\n",
"\n",
"**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so).\n",
"\n",
"\n",
"Graph\n",
"--------\n",
"\n",
"**Graph from links** - Create a program that will create a graph or network from a series of links.\n",
"\n",
"**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node.\n",
"\n",
"**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not.\n",
"\n",
"**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges.\n",
"\n",
"**Minimum Spanning Tree** - Create a program which takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a\n",
"subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible.\n",
"\n",
"\n",
"Data Structures\n",
"---------\n",
"\n",
"**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory.\n",
"\n",
"\n",
"Text\n",
"---------\n",
"\n",
"**Fizz Buzz** - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.\n",
"\n",
"**Reverse a String** - Enter a string and the program will reverse it and print it out.\n",
"\n",
"**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: \"banana\" would yield anana-bay). Read Wikipedia for more information on rules.\n",
"\n",
"**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found.\n",
"\n",
"**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar”\n",
"\n",
"**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary.\n",
"\n",
"**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.*\n",
"\n",
"**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them.\n",
"\n",
"**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.*\n",
"\n",
"**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).*\n",
"\n",
"**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend.\n",
"\n",
"**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression.\n",
"\n",
"\n",
"Networking\n",
"---------\n",
"\n",
"**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever.\n",
"\n",
"**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it.\n",
"\n",
"**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open.\n",
"\n",
"**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval.\n",
"\n",
"**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.*\n",
"\n",
"**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you.\n",
"\n",
"**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen.\n",
"\n",
"\n",
"Classes\n",
"---------\n",
"\n",
"**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value.\n",
"\n",
"**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled.\n",
"\n",
"**Company Manager** - Create an hierarchy of classes - abstract class Employee and subclasses HourlyEmployee, SalariedEmployee, Manager and Executive. Every one's pay is calculated differently, research a bit about it.\n",
"After you've established an employee hierarchy, create a Company class that allows you to manage the employees. You should be able to hire, fire and raise employees. \n",
"\n",
"**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program.\n",
"\n",
"**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day.\n",
"\n",
"**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc.\n",
"\n",
"**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing.\n",
"\n",
"**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type.\n",
"\n",
"**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more.\n",
"\n",
"**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen.\n",
"\n",
"\n",
"Threading\n",
"---------\n",
"\n",
"**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates.\n",
"\n",
"**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc.\n",
"\n",
"\n",
"Web\n",
"---------\n",
"\n",
"**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.*\n",
"\n",
"**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.*\n",
"\n",
"**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search.\n",
"\n",
"**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.*\n",
"\n",
"**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer.\n",
"\n",
"**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes.\n",
"\n",
"**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.*\n",
"\n",
"**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas.\n",
"\n",
"**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms.\n",
"\n",
"\n",
"Files\n",
"---------\n",
"\n",
"**Quiz Maker** - Make an application which takes various questions from a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes.\n",
"\n",
"**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field.\n",
"\n",
"**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.*\n",
"\n",
"**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.*\n",
"\n",
"**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags.\n",
"\n",
"**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.*\n",
"\n",
"\n",
"Databases\n",
"---------\n",
"\n",
"**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient.\n",
"\n",
"**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results.\n",
"\n",
"**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity.\n",
"\n",
"**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.*\n",
"\n",
"**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.*\n",
"\n",
"**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on.\n",
"\n",
"**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule.\n",
"\n",
"\n",
"Graphics and Multimedia\n",
"---------\n",
"\n",
"**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.*\n",
"\n",
"**Stream Video from Online** - Try to create your own online streaming video player.\n",
"\n",
"**Mp3 Player** - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player.\n",
"\n",
"**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.*\n",
"\n",
"**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for \"Turtle Graphics\" for more information. *Optional: Allow the program to read in the list of commands from a file.*\n",
"\n",
"**GIF Creator** A program that puts together multiple images (PNGs, JPGs, TIFFs) to make a smooth GIF that can be exported. *Optional: Make the program convert small video files to GIFs as well.*\n",
"\n",
"\n",
"Security\n",
"-------------\n",
"\n",
"**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts \"HI\" to \"JK\", but key 20 encrypts \"HI\" to \"BC\". This simple \"monoalphabetic substitution cipher\" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 18-Milestone Project - 3/01-Final Capstone Project.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Final Capstone Projects\n",
"\n",
"Please refer to the [**Final Capstone Projects**](http://nbviewer.jupyter.org/github/jmportilla/Complete-Python-Bootcamp/tree/master/Final%20Capstone%20Projects/) folder to get all the info on final capstone project ideas and possible solutions!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 18-Milestone Project - 3/02-Final Capstone Project Ideas.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# List of Capstone Projects\n",
"\n",
"This list contains around 100 project ideas for you to try out in Python! Some of them are straightforward and others we have done before (such as a Fibonacci Sequence or FizzBuzz). \n",
"\n",
"Pick a simple project that you think you can finish in a day to start off with, then pick another project that you think will take you more than a week and extensive Googling!\n",
"\n",
"There are some sample solutions in this folder as well so feel free to explore and remember:\n",
"\n",
"**HAVE FUN!**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Numbers\n",
"---------\n",
"\n",
"**Find PI to the Nth Digit** - Enter a number and have the program generate π (pi) up to that many decimal places. Keep a limit to how far the program will go.\n",
"\n",
"**Find e to the Nth Digit** - Just like the previous problem, but with e instead of π (pi). Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go.\n",
"\n",
"**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number.\n",
"\n",
"**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them.\n",
"\n",
"**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one.\n",
"\n",
"**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user.\n",
"\n",
"**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually).\n",
"\n",
"**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change.\n",
"\n",
"**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent.\n",
"\n",
"**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity.\n",
"\n",
"**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion.\n",
"\n",
"**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time.\n",
"\n",
"**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude.\n",
"\n",
"**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum).\n",
"\n",
"**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax.\n",
"\n",
"**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion.\n",
"\n",
"**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested.\n",
"\n",
"**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers.\n",
"\n",
"**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).*\n",
"\n",
"**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads.\n",
"\n",
"**Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.*\n",
"\n",
"**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity.\n",
"\n",
"Classic Algorithms\n",
"-----------------\n",
"\n",
"**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1.\n",
"\n",
"**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort.\n",
"\n",
"**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them.\n",
"\n",
"**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so).\n",
"\n",
"\n",
"Graph\n",
"--------\n",
"\n",
"**Graph from links** - Create a program that will create a graph or network from a series of links.\n",
"\n",
"**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node.\n",
"\n",
"**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not.\n",
"\n",
"**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges.\n",
"\n",
"**Minimum Spanning Tree** - Create a program which takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a\n",
"subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible.\n",
"\n",
"\n",
"Data Structures\n",
"---------\n",
"\n",
"**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory.\n",
"\n",
"\n",
"Text\n",
"---------\n",
"\n",
"**Fizz Buzz** - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.\n",
"\n",
"**Reverse a String** - Enter a string and the program will reverse it and print it out.\n",
"\n",
"**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: \"banana\" would yield anana-bay). Read Wikipedia for more information on rules.\n",
"\n",
"**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found.\n",
"\n",
"**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar”\n",
"\n",
"**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary.\n",
"\n",
"**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.*\n",
"\n",
"**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them.\n",
"\n",
"**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.*\n",
"\n",
"**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).*\n",
"\n",
"**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend.\n",
"\n",
"**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression.\n",
"\n",
"\n",
"Networking\n",
"---------\n",
"\n",
"**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever.\n",
"\n",
"**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it.\n",
"\n",
"**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open.\n",
"\n",
"**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval.\n",
"\n",
"**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.*\n",
"\n",
"**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you.\n",
"\n",
"**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen.\n",
"\n",
"\n",
"Classes\n",
"---------\n",
"\n",
"**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value.\n",
"\n",
"**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled.\n",
"\n",
"**Company Manager** - Create an hierarchy of classes - abstract class Employee and subclasses HourlyEmployee, SalariedEmployee, Manager and Executive. Every one's pay is calculated differently, research a bit about it.\n",
"After you've established an employee hierarchy, create a Company class that allows you to manage the employees. You should be able to hire, fire and raise employees. \n",
"\n",
"**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program.\n",
"\n",
"**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day.\n",
"\n",
"**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc.\n",
"\n",
"**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing.\n",
"\n",
"**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type.\n",
"\n",
"**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more.\n",
"\n",
"**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen.\n",
"\n",
"\n",
"Threading\n",
"---------\n",
"\n",
"**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates.\n",
"\n",
"**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc.\n",
"\n",
"\n",
"Web\n",
"---------\n",
"\n",
"**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.*\n",
"\n",
"**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.*\n",
"\n",
"**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search.\n",
"\n",
"**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.*\n",
"\n",
"**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer.\n",
"\n",
"**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes.\n",
"\n",
"**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.*\n",
"\n",
"**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas.\n",
"\n",
"**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms.\n",
"\n",
"\n",
"Files\n",
"---------\n",
"\n",
"**Quiz Maker** - Make an application which takes various questions from a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes.\n",
"\n",
"**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field.\n",
"\n",
"**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.*\n",
"\n",
"**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.*\n",
"\n",
"**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags.\n",
"\n",
"**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.*\n",
"\n",
"\n",
"Databases\n",
"---------\n",
"\n",
"**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient.\n",
"\n",
"**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results.\n",
"\n",
"**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity.\n",
"\n",
"**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.*\n",
"\n",
"**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.*\n",
"\n",
"**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on.\n",
"\n",
"**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule.\n",
"\n",
"\n",
"Graphics and Multimedia\n",
"---------\n",
"\n",
"**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.*\n",
"\n",
"**Stream Video from Online** - Try to create your own online streaming video player.\n",
"\n",
"**Mp3 Player** - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player.\n",
"\n",
"**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.*\n",
"\n",
"**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for \"Turtle Graphics\" for more information. *Optional: Allow the program to read in the list of commands from a file.*\n",
"\n",
"**GIF Creator** A program that puts together multiple images (PNGs, JPGs, TIFFs) to make a smooth GIF that can be exported. *Optional: Make the program convert small video files to GIFs as well.*\n",
"\n",
"\n",
"Security\n",
"-------------\n",
"\n",
"**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts \"HI\" to \"JK\", but key 20 encrypts \"HI\" to \"BC\". This simple \"monoalphabetic substitution cipher\" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 18-Milestone Project - 3/Projects-Solutions/Solution Links.md
================================================
This repo links to solutions of [Projects](http://nbviewer.ipython.org/github/jmportilla/Complete-Python-Bootcamp/blob/master/Final%20Capstone%20Projects/Final%20Capstone%20Project%20Ideas.ipynb) written by other users in Python.
=========================================
Numbers
---------
**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. [[geekpradd (Python)]](https://github.com/geekpradd/PythonPi/blob/master/PythonPi.py)
[[MrBlaise (Python)]](https://github.com/MrBlaise/learnpython/blob/master/Numbers/pi.py) [[whoshuu (Python)]](https://github.com/whoshuu/Projects/blob/master/Numbers/pi.py)
**Find e to the Nth Digit** - Just like the previous problem, but with e instead of PI. Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go. [[aseeon (Python)]](https://gist.github.com/aseeon/3f06d95f995fde7adfc2)
[[rlingineni (Python)]](https://github.com/rlingineni/PythonPractice/blob/master/eCalc/eCalculate.py)
**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. [[MrBlaise (Python)]](https://github.com/MrBlaise/learnpython/blob/master/Numbers/fibonacci.py) [[timkaboya (Python)]](https://github.com/timkaboya/cached_fibo/blob/master/cached_fibo.py) [[whoshuu (Python)]](https://github.com/whoshuu/Projects/blob/master/Numbers/fibonacci.py)
**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them.
[[geekpradd (Python)]](https://github.com/geekpradd/Prime-Factorise/blob/master/primefactorize.py)
[[MrBlaise (Python)]](https://github.com/MrBlaise/learnpython/blob/master/Numbers/prime.py) [[whoshuu (Python)]](https://github.com/whoshuu/Projects/blob/master/Numbers/prime.py)
**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. [[MrBlaise (Python)]](https://github.com/MrBlaise/learnpython/blob/master/Numbers/next_prime.py) [[Silverneo (Python)]](https://github.com/Silverneo/pylearn/blob/master/prime.py)
**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/number_projects/other/misc.py)
**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually). [[austinmcconnell]](Python)]](https://github.com/austinmcconnell/mortgage)
**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/number_projects/money_changing/money_changing.py)
**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/number_projects/conversion/conversions.py)
**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. [[MrBlaise (Python)]](https://github.com/MrBlaise/learnpython/blob/master/Numbers/calc.py)
**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/number_projects/conversion/conversions.py)
**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. [[smthc (Python)]](https://github.com/smthc/mini_projects/blob/master/alarm.py)
**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. [[dabillox (Python)]](https://github.com/dabillox/pyprojects/blob/master/citydistance.py)
**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discover) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). [[Barvin (Python)]](https://github.com/Barvin/CodeWars-ByArvin/blob/master/TheLuhnAlgorithm.py)
**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax.
[[neivin (Python)]](https://github.com/neivin/projects/blob/master/numbers/tax_calculator.py)[[Vdrey (Python)]](https://github.com/vdrey/Project-Programs/blob/master/Python/Tax%20Calculator.py)
**Factorial Finder** - The factorial of a positive integer *n* is defined as the product of the sequence , n-1, n-2, ...1 and the factorial of 0 is defined as being 1. Solve this using both loops and recursion. [[turlapatykaushik(Python)]](https://github.com/turlapatykaushik/Programs-and-codes/blob/master/problems/factorial.py) [[kvsingh (Python)]](https://github.com/kvsingh/python-practice/blob/master/factorial.py)
**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. [[ppype (python)]](https://github.com/ppype/Complex-Number-Algebra/blob/master/programs/main.py)
**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. [[Quoly (Python)]](https://github.com/Quoly/Projects/blob/master/happy_numbers.py) [[tel (Haskell)]](https://github.com/tel/Projects/blob/master/Numbers/HappyNumbers.hs)
**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* [[scottdchris (Python)]](https://github.com/scottdchris/NumToWords)
**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. [[scottdchris (Python)]](https://github.com/scottdchris/CoinFlip) [[dsub15 (Python)]](https://github.com/dsub15/Projects/blob/master/Coin_flip.py)
**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity. [[korabum (Python)]](https://github.com/korabum/Projects/blob/master/Numbers/power.py)
Classic Algorithms
-----------------
**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. [[EpicDavi (Python)]](https://github.com/EpicDavi/RandomProjects/blob/master/Language%20Challenge%20Stuff/CollatzRecursive.py) [[francis36012 (Python)]](https://github.com/francis36012/karan-projects/blob/master/src/classic_algorithms/collatz.py) [[viktorahlstrom (Python)]](https://github.com/viktorahlstrom/pythonscripts/blob/master/collatz_conjecture.py)
**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort [[petehuang (Ruby)]](https://github.com/petehuang/Projects/blob/master/Classic%20Algorithms/sorting.rb) [[sananth12 (C)]](https://github.com/sananth12/Projects/blob/master/Classic%20Algorithms/Sorting.c) [[liuyang1 (Python)]](https://github.com/liuyang1/Projects/blob/master/Classic%20Algorithms/mergesort.py) [[ScottKolo (Go)]](https://github.com/ScottKolo/GoProjects/blob/master/Classic%20Algorithms/sorting.go)
[[checkcheckzz (C++)]](https://github.com/checkcheckzz/coding-problem/blob/master/problem/Sorting.cpp) [[yasaswyk (C++)]](https://github.com/yasaswyk/Projects-Solutions/blob/mysolutions/Sorting/sort.cc) [[turlapatykaushik (C)]](https://github.com/turlapatykaushik/DataStructures-and-Algorithms-Implementation/tree/master/sorting)[[smac89 (haskell)]](https://gist.github.com/smac89/656240fea116f8230351) [[sijunhe (java)]](https://github.com/sijunhe/Project-Programs/blob/master/java/sort.java)
**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. [[dabillox (Python)]](https://github.com/dabillox/pyprojects/blob/master/closestpairproblem.py) [[liuyang1 (Python)]](https://github.com/liuyang1/Projects/blob/master/Classic%20Algorithms/cloestpair.py) [[smac89 (C++)]](https://github.com/smac89/Projects/tree/master/solutions/classic-algorithms/closestpair) [[sijunhe (java)]](https://github.com/sijunhe/Project-Programs/tree/master/java/closest%20Pair)
**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). [[swapagarwal (Python)]](https://github.com/swapagarwal/Projects/blob/master/Classic%20Algorithms/Sieve%20of%20Eratosthenes.py) [[quitrk (JavaScript)]](https://github.com/quitrk/LearningJS/blob/master/Classic%20Algorithms/03.%20Sieve%20of%20Eratosthenes.js) [[liuyang1 (Python)]](https://github.com/liuyang1/Projects/blob/master/Classic%20Algorithms/sieve.py) [[ScottKolo (Go)]](https://github.com/ScottKolo/GoProjects/blob/master/Classic%20Algorithms/sieve.go) [[danfang (Java)]](https://github.com/danfang/Algorithms/blob/master/src/problem35/SieveEratosthenes.java) [[checkcheckzz (C++)]](https://github.com/checkcheckzz/coding-problem/blob/master/problem/SieveofEratosthenes.cpp) [[gautamk (rust)]](https://github.com/gautamk/ferrous-oxide/blob/master/projects/src/sieve_of_eratosthenes.rs) [[korabum (Python)]](https://github.com/korabum/Projects/blob/master/Classic-Algorithms/sieveOfEratosthenes.py)
Graphs
---------
**Graph from links** - Create a program that will create a graph or network from a series of links.[[grimley517 (Python)]](https://github.com/grimley517/Projects/blob/graph1/Graphs/GfmLinks.py)[
**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node.
[[DiegoAscanio(Python)]](https://github.com/DiegoAscanio/python-graphs/blob/master/eulerian.py)
**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not.[[DiegoAscanio(Python)]](https://github.com/DiegoAscanio/python-graphs/blob/master/is_connected.py)
**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. [[mouradmourafiq (Python)]](https://github.com/mouradmourafiq/data-analysis/blob/master/dijkstra.py)
**Minimum Spanning Tree** - Create a program which takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a
subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible. [[kiriakosv (Python)]](https://github.com/kiriakosv/Project_Solutions/tree/master/MinSpanTree)
Data Structures
---------
**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. [[anubhavmaity (Python)]](https://github.com/anubhavmaity/FindWordInFiles)
Text
---------
**Fizz Buzz** - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
[[korabum (Python)]](https://github.com/korabum/Projects/blob/master/Text/fizzbuzz.py)
**Reverse a String** - Enter a string and the program will reverse it and print it out. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/text_projects/string_editing.py) [[JLukeC (Python)]](https://github.com/jLukeC/mega-project-list/blob/master/python/reverse_string.py)
**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/text_projects/string_editing.py) [[JLukeC (Python)]](https://github.com/jLukeC/mega-project-list/blob/master/python/pig_latin.py)
**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/text_projects/string_editing.py) [[JLukeC (Python)]](https://github.com/jLukeC/mega-project-list/blob/master/python/count_vowels.py)
**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/text_projects/string_editing.py) [[JLukeC (Python)]](https://github.com/jLukeC/mega-project-list/blob/master/python/palindrome.py)
**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/text_projects/string_editing.py) [[JLukeC (Python)]](https://github.com/jLukeC/mega-project-list/blob/master/python/count_words.py)
**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* [[JLukeC (Python)]](https://github.com/jLukeC/advanced-text-editor) [[rasppie (Python)]](https://github.com/rasppie/Text_Editor/blob/master/texteditor.py)
**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. [[sriniavireddy (python)]](https://github.com/sriniavireddy/scripts-and-solutions/tree/master/Text/RSSfeedparser)
**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* [[masegaloeh (Python)]](https://github.com/masegaloeh/freetime-projects/blob/master/text/quote_tracker.py)
**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).*
**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. [[cahitonur (Python)]](https://github.com/cahitonur/mini-project/blob/master/horoscope/horoscope.py) [[tapasweni-pathak (Python)]](https://github.com/tapasweni-pathak/Scripts/blob/master/Your-Horoscope.py)
**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).*
**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/text_projects/auto_markup/markup.py)
Networking
---------
**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it.
**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open.[[enessenel (Python)]](https://github.com/enessenel/Small-Projects/blob/master/PortScanner.py)
**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval.
**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* [[tapasweni-pathak (Python)]](https://github.com/tapasweni-pathak/Scripts/blob/master/Locate-Me.py) [[viktorahlstrom (Python)]](https://github.com/viktorahlstrom/pythonscripts/blob/master/iplocator.py)
**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. [[tapasweni-pathak (Python)]](https://github.com/tapasweni-pathak/Scripts/blob/master/WhoIs%3F.py)
**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. [[cahitonur (Python)]](https://github.com/cahitonur/mini-project/blob/master/site_monitor/monitor.py)
Classes
---------
**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. [[Drhealsgood (Python)]](https://github.com/Drhealsgood/miniprojects/blob/master/class_projects/product_inventory/product_inventory.py)
**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled.
**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. [[Daytron (Python)]](https://github.com/Daytron/Projects/blob/master/Classes/bank_account_manager.py)
**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day.
**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc.
**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing.
**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. [[masegaloeh (Python)]](https://github.com/masegaloeh/freetime-projects/blob/master/class/shape/shape.py)
**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more.
**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen.
Threading
---------
**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates.
**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc.
[[bhaskar4n(python)]](https://github.com/bhaskar4n/bulk-thumbnail-creator)
[[SumedhArani(python)]](https://github.com/SumedhArani/Threading-Python)
[[tushar-rishav(python)]](https://github.com/tushar-rishav/Pynail)
Web
---------
**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* [[mouradmourafiq (python)]](https://github.com/mouradmourafiq/pages-jaunes-maroc)[[chillaranand (python)]](https://github.com/ChillarAnand/site_crawler) [[tapasweni-pathak (python)]](https://github.com/tapasweni-pathak/STW-Collection)
**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code.
**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.*
**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search.
**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.*
[[chillaranand (python)]](https://github.com/ChillarAnand/Weather-on-Terminal) [[tapasweni-pathak (python)]](https://github.com/tapasweni-pathak/Scripts/blob/master/Weather.py) [[viktorahlstrom (Python)]](https://github.com/viktorahlstrom/pyweather)
**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer.
**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes.
**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.*
**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas.
**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms.
Files
---------
**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes.
**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder.
**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. [[vishwanath79 (Python)]](https://github.com/vishwanath79/ExcelSorter/blob/master/ExcelSorter.py)
**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.*
**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.*
**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags.
**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.*
Databases
---------
**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient.
**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results.[[vishwanath79 (Python)]](https://github.com/vishwanath79/Remote-SQL/blob/master/RemSQL.py)
**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity.
**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.*
**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.*
**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database.[[bhaskar4n(python)]](https://github.com/bhaskar4n/address-book-database) [[bhaskar4n(python)]](https://github.com/bhaskar4n/address-book-database-linked)
**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. [[dabillox (Python)]](https://github.com/dabillox/pyprojects/tree/master/tvshowtracker)
**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule.
Graphics and Multimedia
---------
**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.*
**Stream Video from Online** - Try to create your own online streaming video player.
**Mp3 Player** - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player. [[rasppie (Python)]](https://github.com/rasppie/pyprojects/blob/master/music-player.py)
**Stream Music from Online** - Try to create your own online streaming music player.
**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* [[bhaskar4n(python)]](https://github.com/bhaskar4n/watermarker)
**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.*
[[Tushar(python)]](https://github.com/tushar-rishav/PyLogo)
**GIF Creator** A program that puts together multiple images (PNGs, JPGs, TIFFs) to make a smooth GIF that can be exported. *Optional: Make the program convert small video files to GIFs as well.*
Security
-------------
**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. [[shyamsalimkumar (Python)]](https://github.com/shyamsalimkumar/Projects/blob/master/Security/caesar_cipher.py) [[sriniavireddy (python)]](https://github.com/sriniavireddy/scripts-and-solutions/blob/master/CaesarCipher.py)
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/01-Interact-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Using Interact\n",
"\n",
"In this lecture we will begin to learn about creating dashboard-type GUI with iPython widgets!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `interact` function (`ipywidgets.interact`) automatically creates user interface (UI) controls for exploring code and data interactively. It is the easiest way to get started using IPython's widgets."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Start with some imports!\n",
"\n",
"from ipywidgets import interact, interactive, fixed\n",
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Please Note! The widgets in this notebook won't show up on NbViewer or GitHub renderings. To view the widgets and interact with them, you will need to download this notebook and run it with a Jupyter Notebook server.\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Basic `interact`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At the most basic level, `interact` auto-generates UI controls for function arguments, and then calls the function with those arguments when you manipulate the controls interactively. To use `interact`, you need to define a function that you want to explore. Here is a function that prints its only argument `x`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Very basic function\n",
"def f(x):\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you pass this function as the first argument to `interact` along with an integer keyword argument (`x=10`), a slider is generated and bound to the function parameter. Note that the semicolon here just prevents an **out** cell from showing up."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d19364a3984541918392df94acd74157",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='x', max=30, min=-10), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate a slider to interact with\n",
"interact(f, x=10,);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you move the slider, the function is called, which prints the current value of `x`.\n",
"\n",
"If you pass `True` or `False`, `interact` will generate a check-box:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d56caf432729463dabc716ef65c437db",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Checkbox(value=True, description='x'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Booleans generate check-boxes\n",
"interact(f, x=True);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you pass a string, `interact` will generate a text area."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3ec606e93ced408992a5cb0f59903ed9",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Text(value='Hi there!', description='x'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Strings generate text areas\n",
"interact(f, x='Hi there!');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`interact` can also be used as a decorator. This allows you to define a function and interact with it in a single shot. As this example shows, `interact` also works with functions that have multiple arguments."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4d87f586f60945c3ba0ed9dcc4e1874a",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Checkbox(value=True, description='x'), FloatSlider(value=1.0, description='y', max=3.0, min=-1.0), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Using a decorator!\n",
"@interact(x=True, y=1.0)\n",
"def g(x, y):\n",
" return (x, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fixing arguments using `fixed`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are times when you may want to explore a function using `interact`, but fix one or more of its arguments to specific values. This can be accomplished by wrapping values with the `fixed` function."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Again, a simple function\n",
"def h(p, q):\n",
" return (p, q)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we call `interact`, we pass `fixed(20)` for q to hold it fixed at a value of `20`."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1bcccacaa1cc43f9a1df1b4df87503ff",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=5, description='p', max=15, min=-5), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(h, p=5, q=fixed(20));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that a slider is only produced for `p` as the value of `q` is fixed."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Widget abbreviations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you pass an integer-valued keyword argument of `10` (`x=10`) to `interact`, it generates an integer-valued slider control with a range of `[-10,+3\\times10]`. In this case, `10` is an *abbreviation* for an actual slider widget:\n",
"\n",
"```python\n",
"IntSlider(min=-10,max=30,step=1,value=10)\n",
"```\n",
"\n",
"In fact, we can get the same result if we pass this `IntSlider` as the keyword argument for `x`:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a251c042d8de4ecfbbfe2f2c4d65de55",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='x', max=30, min=-10), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Can call the IntSlider to get more specific\n",
"interact(f, x=widgets.IntSlider(min=-10,max=30,step=1,value=10));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This examples clarifies how `interact` processes its keyword arguments:\n",
"\n",
"1. If the keyword argument is a `Widget` instance with a `value` attribute, that widget is used. Any widget with a `value` attribute can be used, even custom ones.\n",
"2. Otherwise, the value is treated as a *widget abbreviation* that is converted to a widget before it is used.\n",
"\n",
"The following table gives an overview of different widget abbreviations:\n",
"\n",
"\n",
" Keyword argument Widget \n",
" `True` or `False` Checkbox \n",
" `'Hi there'` Text \n",
" `value` or `(min,max)` or `(min,max,step)` if integers are passed IntSlider \n",
" `value` or `(min,max)` or `(min,max,step)` if floats are passed FloatSlider \n",
" `['orange','apple']` or `{'one':1,'two':2}` Dropdown \n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that a dropdown is used if a list or a dict is given (signifying discrete choices), and a slider is used if a tuple is given (signifying a range).\n",
"\n",
"You have seen how the checkbox and text area widgets work above. Here, more details about the different abbreviations for sliders and drop-downs are given.\n",
"\n",
"If a 2-tuple of integers is passed `(min,max)`, an integer-valued slider is produced with those minimum and maximum values (inclusively). In this case, the default step size of `1` is used."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "671e9e1043b44bbf905862440167bec4",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=2, description='x', max=4), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Min,Max slider with Tuples\n",
"interact(f, x=(0,4));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If a 3-tuple of integers is passed `(min,max,step)`, the step size can also be set."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "912b839b05ba488d819ff0c09c877a57",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=4, description='x', max=8, step=2), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# (min, max, step)\n",
"interact(f, x=(0,8,2));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A float-valued slider is produced if the elements of the tuples are floats. Here the minimum is `0.0`, the maximum is `10.0` and step size is `0.1` (the default)."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e7cbdf72471d406ca80bed9a232e6605",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(FloatSlider(value=5.0, description='x', max=10.0), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x=(0.0,10.0));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The step size can be changed by passing a third element in the tuple."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "239573e3448a44179962dccfb9fe15cf",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(FloatSlider(value=5.0, description='x', max=10.0, step=0.01), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x=(0.0,10.0,0.01));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For both integer and float-valued sliders, you can pick the initial value of the widget by passing a default keyword argument to the underlying Python function. Here we set the initial value of a float slider to `5.5`."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fd58de461e564c38b0a12def19ccfd1b",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(FloatSlider(value=5.5, description='x', max=20.0, step=0.5), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@interact(x=(0.0,20.0,0.5))\n",
"def h(x=5.5):\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Dropdown menus are constructed by passing a list of strings. In this case, the strings are both used as the names in the drop-down menu UI and passed to the underlying Python function."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "88ab10cb594d46b2ade99079f5087f12",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Dropdown(description='x', options=('apples', 'oranges'), value='apples'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x=['apples','oranges']);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you want a drop-down menu that passes non-string values to the Python function, you can pass a dictionary. The keys in the dictionary are used for the names in the drop-down menu UI and the values are the arguments that are passed to the underlying Python function."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d006408fb16f457b81eb604f5bf18220",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Dropdown(description='x', options={'one': 10, 'two': 20}, value=10), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x={'one': 10, 'two': 20});"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using function annotations with `interact`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also specify widget abbreviations using [function annotations](https://docs.python.org/3/tutorial/controlflow.html#function-annotations).\n",
"\n",
"Define a function with a checkbox widget abbreviation for the argument `x`."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def f(x:True): # Python 3 only\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then, because the widget abbreviation has already been defined, you can call `interact` with a single argument."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "70f34f96f12143b492fc3160d089f854",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Checkbox(value=True, description='x'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## interactive"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition to `interact`, IPython provides another function, `interactive`, that is useful when you want to reuse the widgets that are produced or access the data that is bound to the UI controls.\n",
"\n",
"Note that unlike `interact`, the return value of the function will not be displayed automatically, but you can display a value inside the function with `IPython.display.display`.\n",
"\n",
"Here is a function that returns the sum of its two arguments and displays them. The display line may be omitted if you don’t want to show the result of the function."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import display\n",
"\n",
"def f(a, b):\n",
" display(a + b)\n",
" return a+b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Unlike `interact`, `interactive` returns a `Widget` instance rather than immediately displaying the widget."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"w = interactive(f, a=10, b=20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The widget is an `interactive`, a subclass of `VBox`, which is a container for other widgets."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ipywidgets.widgets.interaction.interactive"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(w)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The children of the `interactive` are two integer-valued sliders and an output widget, produced by the widget abbreviations above."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(IntSlider(value=10, description='a', max=30, min=-10),\n",
" IntSlider(value=20, description='b', max=60, min=-20),\n",
" Output())"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.children"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To actually display the widgets, you can use IPython's `display` function."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0da895902d664d5086ed00d535d36ef3",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='a', max=30, min=-10), IntSlider(value=20, description='b', max=60, min=-20), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At this point, the UI controls work just like they would if `interact` had been used. You can manipulate them interactively and the function will be called. However, the widget instance returned by `interactive` also give you access to the current keyword arguments and return value of the underlying Python function.\n",
"\n",
"Here are the current keyword arguments. If you rerun this cell after manipulating the sliders, the values will have changed."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'a': 10, 'b': 20}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.kwargs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here is the current return value of the function."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"30"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now have a basic understanding of how to use Interact in Jupyter Notebooks!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/02-Widget Basics-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Widget Basics\n",
"\n",
"In this lecture we will continue to build off our understanding of **interact** and **interactive** to begin using full widgets!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What are widgets?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Widgets are eventful python objects that have a representation in the browser, often as a control like a slider, textbox, etc."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What can they be used for?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"You can use widgets to build **interactive GUIs** for your notebooks. \n",
"You can also use widgets to **synchronize stateful and stateless information** between Python and JavaScript."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using widgets "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"To use the widget framework, you need to import `ipywidgets`."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### repr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Widgets have their own display `repr` which allows them to be displayed using IPython's display framework. Constructing and returning an `IntSlider` automatically displays the widget (as seen below). Widgets are displayed inside the output area below the code cell. Clearing cell output will also remove the widget."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e1feeb5d164345929849b3775b347ad7",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"widgets.IntSlider()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also explicitly display the widget using `display(...)`."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75f00040661845228532350c310c4bc6",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from IPython.display import display\n",
"w = widgets.IntSlider()\n",
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Multiple display() calls"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you display the same widget twice, the displayed instances in the front-end will remain in sync with each other. Try dragging the slider below and watch the slider above."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75f00040661845228532350c310c4bc6",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Closing widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can close a widget by calling its `close()` method."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75f00040661845228532350c310c4bc6",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"w.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Widget properties"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"All of the IPython widgets share a similar naming scheme. To read the value of a widget, you can query its `value` property."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a5ab821e8906437d99a86664021856d3",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"w = widgets.IntSlider()\n",
"display(w)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.value"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, to set a widget's value, you can set its `value` property."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"w.value = 100"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Keys"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition to `value`, most widgets share `keys`, `description`, and `disabled`. To see the entire list of synchronized, stateful properties of any specific widget, you can query the `keys` property."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['_dom_classes',\n",
" '_model_module',\n",
" '_model_module_version',\n",
" '_model_name',\n",
" '_view_count',\n",
" '_view_module',\n",
" '_view_module_version',\n",
" '_view_name',\n",
" 'continuous_update',\n",
" 'description',\n",
" 'disabled',\n",
" 'layout',\n",
" 'max',\n",
" 'min',\n",
" 'orientation',\n",
" 'readout',\n",
" 'readout_format',\n",
" 'step',\n",
" 'style',\n",
" 'value']"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.keys"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Shorthand for setting the initial values of widget properties"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"While creating a widget, you can set some or all of the initial values of that widget by defining them as keyword arguments in the widget's constructor (as seen below)."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b35936af3f2741ae823d7d2fd4c7fcda",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type Text.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"Text(value='Hello World!', disabled=True)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"widgets.Text(value='Hello World!', disabled=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linking two similar widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"If you need to display the same value two different ways, you'll have to use two different widgets. Instead of attempting to manually synchronize the values of the two widgets, you can use the `link` or `jslink` function to link two properties together (the difference between these is discussed in Widget Events). Below, the values of two widgets are linked together."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2013fbc8bf434a2b8d8d8ebe8f06c89a",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type FloatText.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"FloatText(value=0.0)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "edacad1b8c34472c92ac5052449cba52",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type FloatSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"FloatSlider(value=0.0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"a = widgets.FloatText()\n",
"b = widgets.FloatSlider()\n",
"display(a,b)\n",
"\n",
"mylink = widgets.jslink((a, 'value'), (b, 'value'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Unlinking widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Unlinking the widgets is simple. All you have to do is call `.unlink` on the link object. Try changing one of the widgets above after unlinking to see that they can be independently changed."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"mylink.unlink()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now be beginning to have an understanding of how Widgets can interact with each other and how you can begin to specify widget details."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/03-Widget List-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Widget List\n",
"\n",
"This lecture will serve as a reference for widgets, providing a list of the GUI widgets available!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Complete list"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"For a complete list of the GUI widgets available to you, you can list the registered widget types. `Widget` is the base class."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"\n",
"# Show all available widgets!\n",
"for item in widgets.Widget.widget_types.items():\n",
" print(item[0][2][:-5])"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Numeric widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are 10 widgets distributed with IPython that are designed to display numeric values. Widgets exist for displaying integers and floats, both bounded and unbounded. The integer widgets share a similar naming scheme to their floating point counterparts. By replacing `Float` with `Int` in the widget name, you can find the Integer equivalent."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### IntSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntSlider(\n",
" value=7,\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='d'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### FloatSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatSlider(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='.1f',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sliders can also be **displayed vertically**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatSlider(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='vertical',\n",
" readout=True,\n",
" readout_format='.1f',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### IntRangeSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntRangeSlider(\n",
" value=[5, 7],\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='d',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### FloatRangeSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatRangeSlider(\n",
" value=[5, 7.5],\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='.1f',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### IntProgress"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntProgress(\n",
" value=7,\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Loading:',\n",
" bar_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" orientation='horizontal'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### FloatProgress"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatProgress(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Loading:',\n",
" bar_style='info',\n",
" orientation='horizontal'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The numerical text boxes that impose some limit on the data (range, integer-only) impose that restriction when the user presses enter."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### BoundedIntText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.BoundedIntText(\n",
" value=7,\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Text:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### BoundedFloatText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.BoundedFloatText(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Text:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### IntText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntText(\n",
" value=7,\n",
" description='Any:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### FloatText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatText(\n",
" value=7.5,\n",
" description='Any:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Boolean widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are three widgets that are designed to display a boolean value."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ToggleButton"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.ToggleButton(\n",
" value=False,\n",
" description='Click me',\n",
" disabled=False,\n",
" button_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" tooltip='Description',\n",
" icon='check'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Checkbox"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Checkbox(\n",
" value=False,\n",
" description='Check me',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Valid\n",
"\n",
"The valid widget provides a read-only indicator."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Valid(\n",
" value=False,\n",
" description='Valid!',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Selection widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are several widgets that can be used to display single selection lists, and two that can be used to select multiple values. All inherit from the same base class. You can specify the **enumeration of selectable options by passing a list** (options are either (label, value) pairs, or simply values for which the labels are derived by calling `str`). You can **also specify the enumeration as a dictionary**, in which case the **keys will be used as the item displayed** in the list and the corresponding **value will be used** when an item is selected (in this case, since dictionaries are unordered, the displayed order of items in the widget is unspecified)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Dropdown"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Dropdown(\n",
" options=['1', '2', '3'],\n",
" value='2',\n",
" description='Number:',\n",
" disabled=False,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following is also valid:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Dropdown(\n",
" options={'One': 1, 'Two': 2, 'Three': 3},\n",
" value=2,\n",
" description='Number:',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### RadioButtons"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.RadioButtons(\n",
" options=['pepperoni', 'pineapple', 'anchovies'],\n",
" # value='pineapple',\n",
" description='Pizza topping:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Select"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Select(\n",
" options=['Linux', 'Windows', 'OSX'],\n",
" value='OSX',\n",
" # rows=10,\n",
" description='OS:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SelectionSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.SelectionSlider(\n",
" options=['scrambled', 'sunny side up', 'poached', 'over easy'],\n",
" value='sunny side up',\n",
" description='I like my eggs ...',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SelectionRangeSlider\n",
"The value, index, and label keys are 2-tuples of the min and max values selected. The options must be nonempty."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import datetime\n",
"dates = [datetime.date(2015,i,1) for i in range(1,13)]\n",
"options = [(i.strftime('%b'), i) for i in dates]\n",
"widgets.SelectionRangeSlider(\n",
" options=options,\n",
" index=(0,11),\n",
" description='Months (2015)',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### ToggleButtons"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.ToggleButtons(\n",
" options=['Slow', 'Regular', 'Fast'],\n",
" description='Speed:',\n",
" disabled=False,\n",
" button_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" tooltips=['Description of slow', 'Description of regular', 'Description of fast'],\n",
" # icons=['check'] * 3\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SelectMultiple\n",
"Multiple values can be selected with shift and/or ctrl (or command ) pressed and mouse clicks or arrow keys."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.SelectMultiple(\n",
" options=['Apples', 'Oranges', 'Pears'],\n",
" value=['Oranges'],\n",
" # rows=10,\n",
" description='Fruits',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## String widgets\n",
"There are several widgets that can be used to display a string value. The `Text` and `Textarea` widgets accept input. The `HTML` and `HTMLMath` widgets display a string as HTML (`HTMLMath` also renders math). The `Label` widget can be used to construct a custom control label."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Text"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Text(\n",
" value='Hello World',\n",
" placeholder='Type something',\n",
" description='String:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Textarea"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Textarea(\n",
" value='Hello World',\n",
" placeholder='Type something',\n",
" description='String:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Label\n",
"The `Label` widget is useful if you need to build a custom description next to a control using similar styling to the built-in control descriptions."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.HBox([widgets.Label(value=\"The $m$ in $E=mc^2$:\"), widgets.FloatSlider()])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### HTML"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.HTML(\n",
" value=\"Hello World \",\n",
" placeholder='Some HTML',\n",
" description='Some HTML',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### HTML Math"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.HTMLMath(\n",
" value=r\"Some math and HTML : \\(x^2\\) and $$\\frac{x+1}{x-1}$$\",\n",
" placeholder='Some HTML',\n",
" description='Some HTML',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Image"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"file = open(\"images/WidgetArch.png\", \"rb\")\n",
"image = file.read()\n",
"widgets.Image(\n",
" value=image,\n",
" format='png',\n",
" width=300,\n",
" height=400,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Button"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Button(\n",
" description='Click me',\n",
" disabled=False,\n",
" button_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" tooltip='Click me',\n",
" icon='check'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"Even more widgets are described in the notebook **Widget List - Advanced**. Use these as a future reference for yourself!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/04-Widget Events-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Widget Events\n",
"\n",
"In this lecture we will discuss widget events, such as button clicks!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Special events"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `Button` is not used to represent a data type. Instead the button widget is used to handle mouse clicks. The `on_click` method of the `Button` can be used to register a function to be called when the button is clicked. The docstring of the `on_click` can be seen below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"\n",
"print(widgets.Button.on_click.__doc__)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Example #1 - on_click"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since button clicks are stateless, they are transmitted from the front-end to the back-end using custom messages. By using the `on_click` method, a button that prints a message when it has been clicked is shown below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import display\n",
"button = widgets.Button(description=\"Click Me!\")\n",
"display(button)\n",
"\n",
"def on_button_clicked(b):\n",
" print(\"Button clicked.\")\n",
"\n",
"button.on_click(on_button_clicked)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Example #2 - on_submit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `Text` widget also has a special `on_submit` event. The `on_submit` event fires when the user hits enter ."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"text = widgets.Text()\n",
"display(text)\n",
"\n",
"def handle_submit(sender):\n",
" print(text.value)\n",
"\n",
"text.on_submit(handle_submit)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Traitlet events\n",
"Widget properties are IPython traitlets and traitlets are eventful. To handle changes, the `observe` method of the widget can be used to register a callback. The docstring for `observe` can be seen below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(widgets.Widget.observe.__doc__)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Signatures\n",
"Mentioned in the docstring, the callback registered must have the signature `handler(change)` where `change` is a dictionary holding the information about the change.\n",
"\n",
"Using this method, an example of how to output an `IntSlider`’s value as it is changed can be seen below.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"int_range = widgets.IntSlider()\n",
"display(int_range)\n",
"\n",
"def on_value_change(change):\n",
" print(change['new'])\n",
"\n",
"int_range.observe(on_value_change, names='value')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Linking Widgets\n",
"Often, you may want to simply link widget attributes together. Synchronization of attributes can be done in a simpler way than by using bare traitlets events."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linking traitlets attributes in the kernel¶\n",
"\n",
"The first method is to use the `link` and `dlink` functions from the `traitlets` module. This only works if we are interacting with a live kernel.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import traitlets"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Create Caption\n",
"caption = widgets.Label(value = 'The values of slider1 and slider2 are synchronized')\n",
"\n",
"# Create IntSliders\n",
"slider1 = widgets.IntSlider(description='Slider 1')\n",
"slider2 = widgets.IntSlider(description='Slider 2')\n",
"\n",
"# Use trailets to link\n",
"l = traitlets.link((slider1, 'value'), (slider2, 'value'))\n",
"\n",
"# Display!\n",
"display(caption, slider1, slider2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Create Caption\n",
"caption = widgets.Label(value='Changes in source values are reflected in target1')\n",
"\n",
"# Create Sliders\n",
"source = widgets.IntSlider(description='Source')\n",
"target1 = widgets.IntSlider(description='Target 1')\n",
"\n",
"# Use dlink\n",
"dl = traitlets.dlink((source, 'value'), (target1, 'value'))\n",
"display(caption, source, target1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Function `traitlets.link` and `traitlets.dlink` return a `Link` or `DLink` object. The link can be broken by calling the `unlink` method."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# May get an error depending on order of cells being run!\n",
"l.unlink()\n",
"dl.unlink()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Registering callbacks to trait changes in the kernel\n",
"\n",
"Since attributes of widgets on the Python side are traitlets, you can register handlers to the change events whenever the model gets updates from the front-end.\n",
"\n",
"The handler passed to observe will be called with one change argument. The change object holds at least a `type` key and a `name` key, corresponding respectively to the type of notification and the name of the attribute that triggered the notification.\n",
"\n",
"Other keys may be passed depending on the value of `type`. In the case where type is `change`, we also have the following keys:\n",
"* `owner` : the HasTraits instance\n",
"* `old` : the old value of the modified trait attribute\n",
"* `new` : the new value of the modified trait attribute\n",
"* `name` : the name of the modified trait attribute.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"caption = widgets.Label(value='The values of range1 and range2 are synchronized')\n",
"slider = widgets.IntSlider(min=-5, max=5, value=1, description='Slider')\n",
"\n",
"def handle_slider_change(change):\n",
" caption.value = 'The slider value is ' + (\n",
" 'negative' if change.new < 0 else 'nonnegative'\n",
" )\n",
"\n",
"slider.observe(handle_slider_change, names='value')\n",
"\n",
"display(caption, slider)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linking widgets attributes from the client side\n",
"\n",
"When synchronizing traitlets attributes, you may experience a lag because of the latency due to the roundtrip to the server side. You can also directly link widget attributes in the browser using the link widgets, in either a unidirectional or a bidirectional fashion.\n",
"\n",
"Javascript links persist when embedding widgets in html web pages without a kernel."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# NO LAG VERSION\n",
"caption = widgets.Label(value = 'The values of range1 and range2 are synchronized')\n",
"\n",
"range1 = widgets.IntSlider(description='Range 1')\n",
"range2 = widgets.IntSlider(description='Range 2')\n",
"\n",
"l = widgets.jslink((range1, 'value'), (range2, 'value'))\n",
"display(caption, range1, range2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# NO LAG VERSION\n",
"caption = widgets.Label(value = 'Changes in source_range values are reflected in target_range')\n",
"\n",
"source_range = widgets.IntSlider(description='Source range')\n",
"target_range = widgets.IntSlider(description='Target range')\n",
"\n",
"dl = widgets.jsdlink((source_range, 'value'), (target_range, 'value'))\n",
"display(caption, source_range, target_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Function `widgets.jslink` returns a `Link` widget. The link can be broken by calling the `unlink` method."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"l.unlink()\n",
"dl.unlink()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The difference between linking in the kernel and linking in the client\n",
"\n",
"Linking in the kernel means linking via python. If two sliders are linked in the kernel, when one slider is changed the browser sends a message to the kernel (python in this case) updating the changed slider, the link widget in the kernel then propagates the change to the other slider object in the kernel, and then the other slider’s kernel object sends a message to the browser to update the other slider’s views in the browser. If the kernel is not running (as in a static web page), then the controls will not be linked.\n",
"\n",
"Linking using jslink (i.e., on the browser side) means contructing the link in Javascript. When one slider is changed, Javascript running in the browser changes the value of the other slider in the browser, without needing to communicate with the kernel at all. If the sliders are attached to kernel objects, each slider will update their kernel-side objects independently.\n",
"\n",
"To see the difference between the two, go to the [ipywidgets documentation](http://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Events.html) and try out the sliders near the bottom. The ones linked in the kernel with `link` and `dlink` are no longer linked, but the ones linked in the browser with `jslink` and `jsdlink` are still linked.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Continuous updates\n",
"\n",
"Some widgets offer a choice with their `continuous_update` attribute between continually updating values or only updating values when a user submits the value (for example, by pressing Enter or navigating away from the control). In the next example, we see the “Delayed” controls only transmit their value after the user finishes dragging the slider or submitting the textbox. The “Continuous” controls continually transmit their values as they are changed. Try typing a two-digit number into each of the text boxes, or dragging each of the sliders, to see the difference.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import traitlets\n",
"a = widgets.IntSlider(description=\"Delayed\", continuous_update=False)\n",
"b = widgets.IntText(description=\"Delayed\", continuous_update=False)\n",
"c = widgets.IntSlider(description=\"Continuous\", continuous_update=True)\n",
"d = widgets.IntText(description=\"Continuous\", continuous_update=True)\n",
"\n",
"traitlets.link((a, 'value'), (b, 'value'))\n",
"traitlets.link((a, 'value'), (c, 'value'))\n",
"traitlets.link((a, 'value'), (d, 'value'))\n",
"widgets.VBox([a,b,c,d])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sliders, `Text`, and `Textarea` controls default to `continuous_update=True`. `IntText` and other text boxes for entering integer or float numbers default to `continuous_update=False` (since often you’ll want to type an entire number before submitting the value by pressing enter or navigating out of the box)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"You should now feel comfortable linking Widget events!"
]
}
],
"metadata": {
"cell_tags": [
[
"",
null
]
],
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/05-Widget Styling-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Widget Styling\n",
"\n",
"In this lecture we will learn about the various ways to style widgets!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `style` vs. `layout`\n",
"\n",
"There are two ways to change the appearance of widgets in the browser. The first is through the `layout` attribute which exposes layout-related CSS properties for the top-level DOM element of widgets, such as margins and positioning. The second is through the `style` attribute which exposes non-layout related attributes like button color and font weight. While `layout` is general to all widgets and containers of widgets, `style` offers tools specific to each type of widget.\n",
"\n",
"Thorough understanding of all that `layout` has to offer requires knowledge of front-end web development, including HTML and CSS. This section provides a brief overview of things that can be adjusted using `layout`. However, the full set of tools are provided in the separate notebook **Advanced Widget Styling with Layout**.\n",
"\n",
"To learn more about web development, including HTML and CSS, check out the course [\n",
"Python and Django Full Stack Web Developer Bootcamp](https://www.udemy.com/python-and-django-full-stack-web-developer-bootcamp/)\n",
"\n",
"Basic styling is more intuitive as it relates directly to each type of widget. Here we provide a set of helpful examples of the `style` attribute.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The `layout` attribute\n",
"Jupyter interactive widgets have a `layout` attribute exposing a number of CSS properties that impact how widgets are laid out. These properties map to the values of the CSS properties of the same name (underscores being replaced with dashes), applied to the top DOM elements of the corresponding widget.\n",
"\n",
"#### Sizes\n",
"* `height`\n",
"* `width`\n",
"* `max_height`\n",
"* `max_width`\n",
"* `min_height`\n",
"* `min_width`\n",
"\n",
"#### Display\n",
"* `visibility`\n",
"* `display`\n",
"* `overflow`\n",
"* `overflow_x`\n",
"* `overflow_y`\n",
"\n",
"#### Box model\n",
"* `border`\n",
"* `margin`\n",
"* `padding`\n",
"\n",
"#### Positioning\n",
"* `top`\n",
"* `left`\n",
"* `bottom`\n",
"* `right`\n",
"\n",
"#### Flexbox\n",
"* `order`\n",
"* `flex_flow`\n",
"* `align_items`\n",
"* `flex`\n",
"* `align_self`\n",
"* `align_content`\n",
"* `justify_content`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A quick example of `layout`\n",
"\n",
"We've already seen what a slider looks like without any layout adjustments:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"from IPython.display import display\n",
"\n",
"w = widgets.IntSlider()\n",
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's say we wanted to change two of the properties of this widget: `margin` and `height`. We want to center the slider in the output area and increase its height. This can be done by adding `layout` attributes to **w**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w.layout.margin = 'auto'\n",
"w.layout.height = '75px'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that the slider changed positions on the page immediately!\n",
"\n",
"\n",
"Layout settings can be passed from one widget to another widget of the same type. Let's first create a new IntSlider:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x = widgets.IntSlider(value=15,description='New slider')\n",
"display(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now assign **w**'s layout settings to **x**:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x.layout = w.layout"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's it! For a complete set of instructions on using `layout`, visit the **Advanced Widget Styling - Layout** notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Predefined styles\n",
"\n",
"Before we investigate the `style` attribute, it should be noted that many widgets offer a list of pre-defined styles that can be passed as arguments during creation.\n",
"\n",
"For example, the `Button` widget has a `button_style` attribute that may take 5 different values:\n",
"\n",
"* `'primary'`\n",
"* `'success'`\n",
"* `'info'`\n",
"* `'warning'`\n",
"* `'danger'`\n",
"\n",
"besides the default empty string `''`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"\n",
"widgets.Button(description='Ordinary Button', button_style='')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Button(description='Danger Button', button_style='danger')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The `style` attribute"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"While the `layout` attribute only exposes layout-related CSS properties for the top-level DOM element of widgets, the\n",
"`style` attribute is used to expose non-layout related styling attributes of widgets.\n",
"\n",
"However, the properties of the `style` atribute are specific to each widget type."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b1 = widgets.Button(description='Custom color')\n",
"b1.style.button_color = 'lightgreen'\n",
"b1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can get a list of the style attributes for a widget with the `keys` property."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b1.style.keys"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that `widgets.Button().style.keys` also works."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just like the `layout` attribute, widget styles can be assigned to other widgets."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b2 = widgets.Button()\n",
"b2.style = b1.style\n",
"b2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that only the style was picked up by **b2**, not any other parameters like `description`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Widget styling attributes are specific to each widget type."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s1 = widgets.IntSlider(description='Blue handle')\n",
"s1.style.handle_color = 'lightblue'\n",
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Widget style traits\n",
"\n",
"These are traits that belong to some of the more common widgets:\n",
"\n",
"#### Button\n",
"\n",
"- `button_color`\n",
"- `font_weight`\n",
"\n",
"#### IntSlider, FloatSlider, IntRangeSlider, FloatRangeSlider\n",
"\n",
"- `description_width`\n",
"- `handle_color`\n",
"\n",
"#### IntProgress, FloatProgress\n",
"\n",
"- `bar_color`\n",
"- `description_width`\n",
"\n",
"Most others such as `ToggleButton`, `Checkbox`, `Dropdown`, `RadioButtons`, `Select` and `Text` only have `description_width` as an adjustable trait."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now have an understanding of how to style widgets!"
]
}
],
"metadata": {
"cell_tags": [
[
"",
null
]
],
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/06-Custom Widget-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Custom Widget\n",
"## Exploring the Lorenz System of Differential Equations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this Notebook we explore the Lorenz system of differential equations:\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"\\dot{x} & = \\sigma(y-x) \\\\\n",
"\\dot{y} & = \\rho x - y - xz \\\\\n",
"\\dot{z} & = -\\beta z + xy\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"This is one of the classic systems in non-linear differential equations. It exhibits a range of different behaviors as the parameters ($\\sigma$, $\\beta$, $\\rho$) are varied."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Imports"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we import the needed things from IPython, [NumPy](http://www.numpy.org/), [Matplotlib](http://matplotlib.org/index.html) and [SciPy](http://www.scipy.org/). Check out the class [Python for Data Science and Machine Learning Bootcamp](https://www.udemy.com/python-for-data-science-and-machine-learning-bootcamp/) if you're interested in learning more about this part of Python!"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from ipywidgets import interact, interactive\n",
"from IPython.display import clear_output, display, HTML"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy import integrate\n",
"\n",
"from matplotlib import pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"from matplotlib.colors import cnames\n",
"from matplotlib import animation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computing the trajectories and plotting the result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We define a function that can integrate the differential equations numerically and then plot the solutions. This function has arguments that control the parameters of the differential equation ($\\sigma$, $\\beta$, $\\rho$), the numerical integration (`N`, `max_time`) and the visualization (`angle`)."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def solve_lorenz(N=10, angle=0.0, max_time=4.0, sigma=10.0, beta=8./3, rho=28.0):\n",
"\n",
" fig = plt.figure();\n",
" ax = fig.add_axes([0, 0, 1, 1], projection='3d');\n",
" ax.axis('off')\n",
"\n",
" # prepare the axes limits\n",
" ax.set_xlim((-25, 25))\n",
" ax.set_ylim((-35, 35))\n",
" ax.set_zlim((5, 55))\n",
" \n",
" def lorenz_deriv(x_y_z, t0, sigma=sigma, beta=beta, rho=rho):\n",
" \"\"\"Compute the time-derivative of a Lorenz system.\"\"\"\n",
" x, y, z = x_y_z\n",
" return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]\n",
"\n",
" # Choose random starting points, uniformly distributed from -15 to 15\n",
" np.random.seed(1)\n",
" x0 = -15 + 30 * np.random.random((N, 3))\n",
"\n",
" # Solve for the trajectories\n",
" t = np.linspace(0, max_time, int(250*max_time))\n",
" x_t = np.asarray([integrate.odeint(lorenz_deriv, x0i, t)\n",
" for x0i in x0])\n",
" \n",
" # choose a different color for each trajectory\n",
" colors = plt.cm.jet(np.linspace(0, 1, N));\n",
"\n",
" for i in range(N):\n",
" x, y, z = x_t[i,:,:].T\n",
" lines = ax.plot(x, y, z, '-', c=colors[i])\n",
" _ = plt.setp(lines, linewidth=2);\n",
"\n",
" ax.view_init(30, angle)\n",
" _ = plt.show();\n",
"\n",
" return t, x_t"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's call the function once to view the solutions. For this set of parameters, we see the trajectories swirling around two points, called attractors. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"t, x_t = solve_lorenz(angle=0, N=10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using IPython's `interactive` function, we can explore how the trajectories behave as we change the various parameters."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8c6fcac683e54aebb53559937774065e",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='N', max=50), FloatSlider(value=0.0, description='angle', max=360.0), FloatSlider(value=4.0, description='max_time', max=12.0, min=-4.0), FloatSlider(value=10.0, description='sigma', max=50.0), FloatSlider(value=2.6666666666666665, description='beta', max=8.0, min=-2.6666666666666665), FloatSlider(value=28.0, description='rho', max=50.0), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"w = interactive(solve_lorenz, angle=(0.,360.), N=(0,50), sigma=(0.0,50.0), rho=(0.0,50.0))\n",
"display(w);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The object returned by `interactive` is a `Widget` object and it has attributes that contain the current result and arguments:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"t, x_t = w.result"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'N': 10,\n",
" 'angle': 0.0,\n",
" 'beta': 2.6666666666666665,\n",
" 'max_time': 4.0,\n",
" 'rho': 28.0,\n",
" 'sigma': 10.0}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.kwargs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After interacting with the system, we can take the result and perform further computations. In this case, we compute the average positions in $x$, $y$ and $z$."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"xyz_avg = x_t.mean(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, 3)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xyz_avg.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creating histograms of the average positions (across different trajectories) show that on average the trajectories swirl about the attractors.\n",
"\n",
"*NOTE: These will look different from the lecture version if you adjusted any of the sliders in the* `interactive` *widget and changed the parameters.*"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(xyz_avg[:,0])\n",
"plt.title('Average $x(t)$');"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(xyz_avg[:,1])\n",
"plt.title('Average $y(t)$');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"Hopefully you've enjoyed using widgets in the Jupyter Notebook system and have begun to explore the other GUI possibilities for Python!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/07-Advanced Widget List-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Widget List\n",
"\n",
"This notebook is an extension of **Widget List**, describing even more of the GUI widgets available!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Output\n",
"The `Output` widget can capture and display stdout, stderr and [rich output generated by IPython](http://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html#module-IPython.display). After the widget is created, direct output to it using a context manager."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"out = widgets.Output()\n",
"out"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"You can print text to the output area as shown below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"with out:\n",
" for i in range(10):\n",
" print(i, 'Hello world!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Rich material can also be directed to the output area. Anything which displays nicely in a Jupyter notebook will also display well in the `Output` widget."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import YouTubeVideo\n",
"with out:\n",
" display(YouTubeVideo('eWzY2nGfkXk'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Play (Animation) widget\n",
"The `Play` widget is useful to perform animations by iterating on a sequence of integers with a certain speed. The value of the slider below is linked to the player.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"play = widgets.Play(\n",
" # interval=10,\n",
" value=50,\n",
" min=0,\n",
" max=100,\n",
" step=1,\n",
" description=\"Press play\",\n",
" disabled=False\n",
")\n",
"slider = widgets.IntSlider()\n",
"widgets.jslink((play, 'value'), (slider, 'value'))\n",
"widgets.HBox([play, slider])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Date picker\n",
"The date picker widget works in Chrome and IE Edge, but does not currently work in Firefox or Safari because they do not support the HTML date input field."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.DatePicker(\n",
" description='Pick a Date',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Color picker"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.ColorPicker(\n",
" concise=False,\n",
" description='Pick a color',\n",
" value='blue',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Controller\n",
"The `Controller` allows a game controller to be used as an input device."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Controller(\n",
" index=0,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Container/Layout widgets\n",
"\n",
"These widgets are used to hold other widgets, called children. Each has a `children` property that may be set either when the widget is created or later.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Box"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"items = [widgets.Label(str(i)) for i in range(4)]\n",
"widgets.Box(items)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### HBox"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"items = [widgets.Label(str(i)) for i in range(4)]\n",
"widgets.HBox(items)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### VBox"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"items = [widgets.Label(str(i)) for i in range(4)]\n",
"left_box = widgets.VBox([items[0], items[1]])\n",
"right_box = widgets.VBox([items[2], items[3]])\n",
"widgets.HBox([left_box, right_box])"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Accordion"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"accordion = widgets.Accordion(children=[widgets.IntSlider(), widgets.Text()])\n",
"accordion.set_title(0, 'Slider')\n",
"accordion.set_title(1, 'Text')\n",
"accordion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tabs\n",
"\n",
"In this example the children are set after the tab is created. Titles for the tabes are set in the same way they are for `Accordion`.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']\n",
"children = [widgets.Text(description=name) for name in tab_contents]\n",
"tab = widgets.Tab()\n",
"tab.children = children\n",
"for i in range(len(children)):\n",
" tab.set_title(i, str(i))\n",
"tab"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Accordion and Tab use `selected_index`, not value\n",
"\n",
"Unlike the rest of the widgets discussed earlier, the container widgets `Accordion` and `Tab` update their `selected_index` attribute when the user changes which accordion or tab is selected. That means that you can both see what the user is doing *and* programmatically set what the user sees by setting the value of `selected_index`.\n",
"\n",
"Setting `selected_index = None` closes all of the accordions or deselects all tabs.\n",
"\n",
"In the cells below try displaying or setting the `selected_index` of the `tab` and/or `accordion`.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tab.selected_index = 3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"accordion.selected_index = None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Nesting tabs and accordions\n",
"\n",
"Tabs and accordions can be nested as deeply as you want. If you have a few minutes, try nesting a few accordions or putting an accordion inside a tab or a tab inside an accordion.\n",
"\n",
"The example below makes a couple of tabs with an accordion children in one of them"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tab_nest = widgets.Tab()\n",
"tab_nest.children = [accordion, accordion]\n",
"tab_nest.set_title(0, 'An accordion')\n",
"tab_nest.set_title(1, 'Copy of the accordion')\n",
"tab_nest"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"Use this as a further reference for yourself!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/.ipynb_checkpoints/08-Advanced Widget Styling with Layout-checkpoint.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Widget Styling with Layout\n",
"\n",
"This notebook expands on the **Widget Styling** lecture by describing the various HTML and CSS adjustments that can be made through the `layout` attribute."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The `layout` attribute\n",
"Jupyter interactive widgets have a `layout` attribute exposing a number of CSS properties that impact how widgets are laid out.\n",
"\n",
"### Exposed CSS properties\n",
"The following properties map to the values of the CSS properties of the same name (underscores being replaced with dashes), applied to the top DOM elements of the corresponding widget.
\n",
"\n",
"#### Sizes\n",
"* `height`\n",
"* `width`\n",
"* `max_height`\n",
"* `max_width`\n",
"* `min_height`\n",
"* `min_width`\n",
"\n",
"#### Display\n",
"* `visibility`\n",
"* `display`\n",
"* `overflow`\n",
"* `overflow_x`\n",
"* `overflow_y`\n",
"\n",
"#### Box model\n",
"* `border`\n",
"* `margin`\n",
"* `padding`\n",
"\n",
"#### Positioning\n",
"* `top`\n",
"* `left`\n",
"* `bottom`\n",
"* `right`\n",
"\n",
"#### Flexbox\n",
"* `order`\n",
"* `flex_flow`\n",
"* `align_items`\n",
"* `flex`\n",
"* `align_self`\n",
"* `align_content`\n",
"* `justify_content`\n",
"\n",
"### Shorthand CSS properties\n",
"\n",
"You may have noticed that certain CSS properties such as `margin-[top/right/bottom/left]` seem to be missing. The same holds for `padding-[top/right/bottom/left]` etc.\n",
"\n",
"In fact, you can atomically specify `[top/right/bottom/left]` margins via the `margin` attribute alone by passing the string `'100px 150px 100px 80px'` for a respectively `top`, `right`, `bottom` and `left` margins of `100`, `150`, `100` and `80` pixels.\n",
"\n",
"Similarly, the `flex` attribute can hold values for `flex-grow`, `flex-shrink` and `flex-basis`. The `border` attribute is a shorthand property for `border-width`, `border-style (required)`, and `border-color`."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"from IPython.display import display"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now have an understanding of how to style widgets!"
]
}
],
"metadata": {
"cell_tags": [
[
"",
null
]
],
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/01-Interact.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Using Interact\n",
"\n",
"In this lecture we will begin to learn about creating dashboard-type GUI with iPython widgets!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `interact` function (`ipywidgets.interact`) automatically creates user interface (UI) controls for exploring code and data interactively. It is the easiest way to get started using IPython's widgets."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Start with some imports!\n",
"\n",
"from ipywidgets import interact, interactive, fixed\n",
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Please Note! The widgets in this notebook won't show up on NbViewer or GitHub renderings. To view the widgets and interact with them, you will need to download this notebook and run it with a Jupyter Notebook server.\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Basic `interact`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At the most basic level, `interact` auto-generates UI controls for function arguments, and then calls the function with those arguments when you manipulate the controls interactively. To use `interact`, you need to define a function that you want to explore. Here is a function that prints its only argument `x`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Very basic function\n",
"def f(x):\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you pass this function as the first argument to `interact` along with an integer keyword argument (`x=10`), a slider is generated and bound to the function parameter. Note that the semicolon here just prevents an **out** cell from showing up."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d19364a3984541918392df94acd74157",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='x', max=30, min=-10), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate a slider to interact with\n",
"interact(f, x=10,);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you move the slider, the function is called, which prints the current value of `x`.\n",
"\n",
"If you pass `True` or `False`, `interact` will generate a check-box:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d56caf432729463dabc716ef65c437db",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Checkbox(value=True, description='x'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Booleans generate check-boxes\n",
"interact(f, x=True);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you pass a string, `interact` will generate a text area."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3ec606e93ced408992a5cb0f59903ed9",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Text(value='Hi there!', description='x'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Strings generate text areas\n",
"interact(f, x='Hi there!');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`interact` can also be used as a decorator. This allows you to define a function and interact with it in a single shot. As this example shows, `interact` also works with functions that have multiple arguments."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4d87f586f60945c3ba0ed9dcc4e1874a",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Checkbox(value=True, description='x'), FloatSlider(value=1.0, description='y', max=3.0, min=-1.0), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Using a decorator!\n",
"@interact(x=True, y=1.0)\n",
"def g(x, y):\n",
" return (x, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fixing arguments using `fixed`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are times when you may want to explore a function using `interact`, but fix one or more of its arguments to specific values. This can be accomplished by wrapping values with the `fixed` function."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Again, a simple function\n",
"def h(p, q):\n",
" return (p, q)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we call `interact`, we pass `fixed(20)` for q to hold it fixed at a value of `20`."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1bcccacaa1cc43f9a1df1b4df87503ff",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=5, description='p', max=15, min=-5), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(h, p=5, q=fixed(20));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that a slider is only produced for `p` as the value of `q` is fixed."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Widget abbreviations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you pass an integer-valued keyword argument of `10` (`x=10`) to `interact`, it generates an integer-valued slider control with a range of `[-10,+3\\times10]`. In this case, `10` is an *abbreviation* for an actual slider widget:\n",
"\n",
"```python\n",
"IntSlider(min=-10,max=30,step=1,value=10)\n",
"```\n",
"\n",
"In fact, we can get the same result if we pass this `IntSlider` as the keyword argument for `x`:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a251c042d8de4ecfbbfe2f2c4d65de55",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='x', max=30, min=-10), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Can call the IntSlider to get more specific\n",
"interact(f, x=widgets.IntSlider(min=-10,max=30,step=1,value=10));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This examples clarifies how `interact` processes its keyword arguments:\n",
"\n",
"1. If the keyword argument is a `Widget` instance with a `value` attribute, that widget is used. Any widget with a `value` attribute can be used, even custom ones.\n",
"2. Otherwise, the value is treated as a *widget abbreviation* that is converted to a widget before it is used.\n",
"\n",
"The following table gives an overview of different widget abbreviations:\n",
"\n",
"\n",
" Keyword argument Widget \n",
" `True` or `False` Checkbox \n",
" `'Hi there'` Text \n",
" `value` or `(min,max)` or `(min,max,step)` if integers are passed IntSlider \n",
" `value` or `(min,max)` or `(min,max,step)` if floats are passed FloatSlider \n",
" `['orange','apple']` or `{'one':1,'two':2}` Dropdown \n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that a dropdown is used if a list or a dict is given (signifying discrete choices), and a slider is used if a tuple is given (signifying a range).\n",
"\n",
"You have seen how the checkbox and text area widgets work above. Here, more details about the different abbreviations for sliders and drop-downs are given.\n",
"\n",
"If a 2-tuple of integers is passed `(min,max)`, an integer-valued slider is produced with those minimum and maximum values (inclusively). In this case, the default step size of `1` is used."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "671e9e1043b44bbf905862440167bec4",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=2, description='x', max=4), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Min,Max slider with Tuples\n",
"interact(f, x=(0,4));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If a 3-tuple of integers is passed `(min,max,step)`, the step size can also be set."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "912b839b05ba488d819ff0c09c877a57",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=4, description='x', max=8, step=2), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# (min, max, step)\n",
"interact(f, x=(0,8,2));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A float-valued slider is produced if the elements of the tuples are floats. Here the minimum is `0.0`, the maximum is `10.0` and step size is `0.1` (the default)."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e7cbdf72471d406ca80bed9a232e6605",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(FloatSlider(value=5.0, description='x', max=10.0), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x=(0.0,10.0));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The step size can be changed by passing a third element in the tuple."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "239573e3448a44179962dccfb9fe15cf",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(FloatSlider(value=5.0, description='x', max=10.0, step=0.01), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x=(0.0,10.0,0.01));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For both integer and float-valued sliders, you can pick the initial value of the widget by passing a default keyword argument to the underlying Python function. Here we set the initial value of a float slider to `5.5`."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fd58de461e564c38b0a12def19ccfd1b",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(FloatSlider(value=5.5, description='x', max=20.0, step=0.5), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@interact(x=(0.0,20.0,0.5))\n",
"def h(x=5.5):\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Dropdown menus are constructed by passing a list of strings. In this case, the strings are both used as the names in the drop-down menu UI and passed to the underlying Python function."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "88ab10cb594d46b2ade99079f5087f12",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Dropdown(description='x', options=('apples', 'oranges'), value='apples'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x=['apples','oranges']);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you want a drop-down menu that passes non-string values to the Python function, you can pass a dictionary. The keys in the dictionary are used for the names in the drop-down menu UI and the values are the arguments that are passed to the underlying Python function."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d006408fb16f457b81eb604f5bf18220",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Dropdown(description='x', options={'one': 10, 'two': 20}, value=10), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f, x={'one': 10, 'two': 20});"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using function annotations with `interact`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also specify widget abbreviations using [function annotations](https://docs.python.org/3/tutorial/controlflow.html#function-annotations).\n",
"\n",
"Define a function with a checkbox widget abbreviation for the argument `x`."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def f(x:True): # Python 3 only\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then, because the widget abbreviation has already been defined, you can call `interact` with a single argument."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "70f34f96f12143b492fc3160d089f854",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(Checkbox(value=True, description='x'), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(f);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## interactive"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition to `interact`, IPython provides another function, `interactive`, that is useful when you want to reuse the widgets that are produced or access the data that is bound to the UI controls.\n",
"\n",
"Note that unlike `interact`, the return value of the function will not be displayed automatically, but you can display a value inside the function with `IPython.display.display`.\n",
"\n",
"Here is a function that returns the sum of its two arguments and displays them. The display line may be omitted if you don’t want to show the result of the function."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import display\n",
"\n",
"def f(a, b):\n",
" display(a + b)\n",
" return a+b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Unlike `interact`, `interactive` returns a `Widget` instance rather than immediately displaying the widget."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"w = interactive(f, a=10, b=20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The widget is an `interactive`, a subclass of `VBox`, which is a container for other widgets."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ipywidgets.widgets.interaction.interactive"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(w)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The children of the `interactive` are two integer-valued sliders and an output widget, produced by the widget abbreviations above."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(IntSlider(value=10, description='a', max=30, min=-10),\n",
" IntSlider(value=20, description='b', max=60, min=-20),\n",
" Output())"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.children"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To actually display the widgets, you can use IPython's `display` function."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0da895902d664d5086ed00d535d36ef3",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='a', max=30, min=-10), IntSlider(value=20, description='b', max=60, min=-20), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At this point, the UI controls work just like they would if `interact` had been used. You can manipulate them interactively and the function will be called. However, the widget instance returned by `interactive` also give you access to the current keyword arguments and return value of the underlying Python function.\n",
"\n",
"Here are the current keyword arguments. If you rerun this cell after manipulating the sliders, the values will have changed."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'a': 10, 'b': 20}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.kwargs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here is the current return value of the function."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"30"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now have a basic understanding of how to use Interact in Jupyter Notebooks!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/02-Widget Basics.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Widget Basics\n",
"\n",
"In this lecture we will continue to build off our understanding of **interact** and **interactive** to begin using full widgets!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What are widgets?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Widgets are eventful python objects that have a representation in the browser, often as a control like a slider, textbox, etc."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What can they be used for?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"You can use widgets to build **interactive GUIs** for your notebooks. \n",
"You can also use widgets to **synchronize stateful and stateless information** between Python and JavaScript."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using widgets "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"To use the widget framework, you need to import `ipywidgets`."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### repr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Widgets have their own display `repr` which allows them to be displayed using IPython's display framework. Constructing and returning an `IntSlider` automatically displays the widget (as seen below). Widgets are displayed inside the output area below the code cell. Clearing cell output will also remove the widget."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e1feeb5d164345929849b3775b347ad7",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"widgets.IntSlider()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### display()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also explicitly display the widget using `display(...)`."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75f00040661845228532350c310c4bc6",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from IPython.display import display\n",
"w = widgets.IntSlider()\n",
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Multiple display() calls"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you display the same widget twice, the displayed instances in the front-end will remain in sync with each other. Try dragging the slider below and watch the slider above."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75f00040661845228532350c310c4bc6",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Closing widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can close a widget by calling its `close()` method."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75f00040661845228532350c310c4bc6",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"w.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Widget properties"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"All of the IPython widgets share a similar naming scheme. To read the value of a widget, you can query its `value` property."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a5ab821e8906437d99a86664021856d3",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type IntSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"IntSlider(value=0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"w = widgets.IntSlider()\n",
"display(w)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.value"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, to set a widget's value, you can set its `value` property."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"w.value = 100"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Keys"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition to `value`, most widgets share `keys`, `description`, and `disabled`. To see the entire list of synchronized, stateful properties of any specific widget, you can query the `keys` property."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['_dom_classes',\n",
" '_model_module',\n",
" '_model_module_version',\n",
" '_model_name',\n",
" '_view_count',\n",
" '_view_module',\n",
" '_view_module_version',\n",
" '_view_name',\n",
" 'continuous_update',\n",
" 'description',\n",
" 'disabled',\n",
" 'layout',\n",
" 'max',\n",
" 'min',\n",
" 'orientation',\n",
" 'readout',\n",
" 'readout_format',\n",
" 'step',\n",
" 'style',\n",
" 'value']"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.keys"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Shorthand for setting the initial values of widget properties"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"While creating a widget, you can set some or all of the initial values of that widget by defining them as keyword arguments in the widget's constructor (as seen below)."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b35936af3f2741ae823d7d2fd4c7fcda",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type Text.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"Text(value='Hello World!', disabled=True)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"widgets.Text(value='Hello World!', disabled=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linking two similar widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"If you need to display the same value two different ways, you'll have to use two different widgets. Instead of attempting to manually synchronize the values of the two widgets, you can use the `link` or `jslink` function to link two properties together (the difference between these is discussed in Widget Events). Below, the values of two widgets are linked together."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2013fbc8bf434a2b8d8d8ebe8f06c89a",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type FloatText.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"FloatText(value=0.0)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "edacad1b8c34472c92ac5052449cba52",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type FloatSlider.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"FloatSlider(value=0.0)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"a = widgets.FloatText()\n",
"b = widgets.FloatSlider()\n",
"display(a,b)\n",
"\n",
"mylink = widgets.jslink((a, 'value'), (b, 'value'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Unlinking widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Unlinking the widgets is simple. All you have to do is call `.unlink` on the link object. Try changing one of the widgets above after unlinking to see that they can be independently changed."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"mylink.unlink()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now be beginning to have an understanding of how Widgets can interact with each other and how you can begin to specify widget details."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/03-Widget List.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Widget List\n",
"\n",
"This lecture will serve as a reference for widgets, providing a list of the GUI widgets available!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Complete list"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"For a complete list of the GUI widgets available to you, you can list the registered widget types. `Widget` is the base class."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"\n",
"# Show all available widgets!\n",
"for item in widgets.Widget.widget_types.items():\n",
" print(item[0][2][:-5])"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Numeric widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are 10 widgets distributed with IPython that are designed to display numeric values. Widgets exist for displaying integers and floats, both bounded and unbounded. The integer widgets share a similar naming scheme to their floating point counterparts. By replacing `Float` with `Int` in the widget name, you can find the Integer equivalent."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### IntSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntSlider(\n",
" value=7,\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='d'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### FloatSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatSlider(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='.1f',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sliders can also be **displayed vertically**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatSlider(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='vertical',\n",
" readout=True,\n",
" readout_format='.1f',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### IntRangeSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntRangeSlider(\n",
" value=[5, 7],\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='d',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### FloatRangeSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatRangeSlider(\n",
" value=[5, 7.5],\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Test:',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True,\n",
" readout_format='.1f',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### IntProgress"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntProgress(\n",
" value=7,\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Loading:',\n",
" bar_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" orientation='horizontal'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### FloatProgress"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatProgress(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Loading:',\n",
" bar_style='info',\n",
" orientation='horizontal'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The numerical text boxes that impose some limit on the data (range, integer-only) impose that restriction when the user presses enter."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### BoundedIntText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.BoundedIntText(\n",
" value=7,\n",
" min=0,\n",
" max=10,\n",
" step=1,\n",
" description='Text:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### BoundedFloatText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.BoundedFloatText(\n",
" value=7.5,\n",
" min=0,\n",
" max=10.0,\n",
" step=0.1,\n",
" description='Text:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### IntText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.IntText(\n",
" value=7,\n",
" description='Any:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### FloatText"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.FloatText(\n",
" value=7.5,\n",
" description='Any:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Boolean widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are three widgets that are designed to display a boolean value."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ToggleButton"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.ToggleButton(\n",
" value=False,\n",
" description='Click me',\n",
" disabled=False,\n",
" button_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" tooltip='Description',\n",
" icon='check'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Checkbox"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Checkbox(\n",
" value=False,\n",
" description='Check me',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Valid\n",
"\n",
"The valid widget provides a read-only indicator."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Valid(\n",
" value=False,\n",
" description='Valid!',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Selection widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are several widgets that can be used to display single selection lists, and two that can be used to select multiple values. All inherit from the same base class. You can specify the **enumeration of selectable options by passing a list** (options are either (label, value) pairs, or simply values for which the labels are derived by calling `str`). You can **also specify the enumeration as a dictionary**, in which case the **keys will be used as the item displayed** in the list and the corresponding **value will be used** when an item is selected (in this case, since dictionaries are unordered, the displayed order of items in the widget is unspecified)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Dropdown"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Dropdown(\n",
" options=['1', '2', '3'],\n",
" value='2',\n",
" description='Number:',\n",
" disabled=False,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following is also valid:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Dropdown(\n",
" options={'One': 1, 'Two': 2, 'Three': 3},\n",
" value=2,\n",
" description='Number:',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### RadioButtons"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.RadioButtons(\n",
" options=['pepperoni', 'pineapple', 'anchovies'],\n",
" # value='pineapple',\n",
" description='Pizza topping:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Select"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Select(\n",
" options=['Linux', 'Windows', 'OSX'],\n",
" value='OSX',\n",
" # rows=10,\n",
" description='OS:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SelectionSlider"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.SelectionSlider(\n",
" options=['scrambled', 'sunny side up', 'poached', 'over easy'],\n",
" value='sunny side up',\n",
" description='I like my eggs ...',\n",
" disabled=False,\n",
" continuous_update=False,\n",
" orientation='horizontal',\n",
" readout=True\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SelectionRangeSlider\n",
"The value, index, and label keys are 2-tuples of the min and max values selected. The options must be nonempty."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import datetime\n",
"dates = [datetime.date(2015,i,1) for i in range(1,13)]\n",
"options = [(i.strftime('%b'), i) for i in dates]\n",
"widgets.SelectionRangeSlider(\n",
" options=options,\n",
" index=(0,11),\n",
" description='Months (2015)',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### ToggleButtons"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.ToggleButtons(\n",
" options=['Slow', 'Regular', 'Fast'],\n",
" description='Speed:',\n",
" disabled=False,\n",
" button_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" tooltips=['Description of slow', 'Description of regular', 'Description of fast'],\n",
" # icons=['check'] * 3\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SelectMultiple\n",
"Multiple values can be selected with shift and/or ctrl (or command ) pressed and mouse clicks or arrow keys."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.SelectMultiple(\n",
" options=['Apples', 'Oranges', 'Pears'],\n",
" value=['Oranges'],\n",
" # rows=10,\n",
" description='Fruits',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## String widgets\n",
"There are several widgets that can be used to display a string value. The `Text` and `Textarea` widgets accept input. The `HTML` and `HTMLMath` widgets display a string as HTML (`HTMLMath` also renders math). The `Label` widget can be used to construct a custom control label."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Text"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Text(\n",
" value='Hello World',\n",
" placeholder='Type something',\n",
" description='String:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Textarea"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Textarea(\n",
" value='Hello World',\n",
" placeholder='Type something',\n",
" description='String:',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Label\n",
"The `Label` widget is useful if you need to build a custom description next to a control using similar styling to the built-in control descriptions."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.HBox([widgets.Label(value=\"The $m$ in $E=mc^2$:\"), widgets.FloatSlider()])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### HTML"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.HTML(\n",
" value=\"Hello World \",\n",
" placeholder='Some HTML',\n",
" description='Some HTML',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### HTML Math"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.HTMLMath(\n",
" value=r\"Some math and HTML : \\(x^2\\) and $$\\frac{x+1}{x-1}$$\",\n",
" placeholder='Some HTML',\n",
" description='Some HTML',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Image"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"file = open(\"images/WidgetArch.png\", \"rb\")\n",
"image = file.read()\n",
"widgets.Image(\n",
" value=image,\n",
" format='png',\n",
" width=300,\n",
" height=400,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Button"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Button(\n",
" description='Click me',\n",
" disabled=False,\n",
" button_style='', # 'success', 'info', 'warning', 'danger' or ''\n",
" tooltip='Click me',\n",
" icon='check'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"Even more widgets are described in the notebook **Widget List - Advanced**. Use these as a future reference for yourself!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/04-Widget Events.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Widget Events\n",
"\n",
"In this lecture we will discuss widget events, such as button clicks!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Special events"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `Button` is not used to represent a data type. Instead the button widget is used to handle mouse clicks. The `on_click` method of the `Button` can be used to register a function to be called when the button is clicked. The docstring of the `on_click` can be seen below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"\n",
"print(widgets.Button.on_click.__doc__)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Example #1 - on_click"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since button clicks are stateless, they are transmitted from the front-end to the back-end using custom messages. By using the `on_click` method, a button that prints a message when it has been clicked is shown below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import display\n",
"button = widgets.Button(description=\"Click Me!\")\n",
"display(button)\n",
"\n",
"def on_button_clicked(b):\n",
" print(\"Button clicked.\")\n",
"\n",
"button.on_click(on_button_clicked)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Example #2 - on_submit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `Text` widget also has a special `on_submit` event. The `on_submit` event fires when the user hits enter ."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"text = widgets.Text()\n",
"display(text)\n",
"\n",
"def handle_submit(sender):\n",
" print(text.value)\n",
"\n",
"text.on_submit(handle_submit)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Traitlet events\n",
"Widget properties are IPython traitlets and traitlets are eventful. To handle changes, the `observe` method of the widget can be used to register a callback. The docstring for `observe` can be seen below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(widgets.Widget.observe.__doc__)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Signatures\n",
"Mentioned in the docstring, the callback registered must have the signature `handler(change)` where `change` is a dictionary holding the information about the change.\n",
"\n",
"Using this method, an example of how to output an `IntSlider`’s value as it is changed can be seen below.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"int_range = widgets.IntSlider()\n",
"display(int_range)\n",
"\n",
"def on_value_change(change):\n",
" print(change['new'])\n",
"\n",
"int_range.observe(on_value_change, names='value')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Linking Widgets\n",
"Often, you may want to simply link widget attributes together. Synchronization of attributes can be done in a simpler way than by using bare traitlets events."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linking traitlets attributes in the kernel¶\n",
"\n",
"The first method is to use the `link` and `dlink` functions from the `traitlets` module. This only works if we are interacting with a live kernel.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import traitlets"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Create Caption\n",
"caption = widgets.Label(value = 'The values of slider1 and slider2 are synchronized')\n",
"\n",
"# Create IntSliders\n",
"slider1 = widgets.IntSlider(description='Slider 1')\n",
"slider2 = widgets.IntSlider(description='Slider 2')\n",
"\n",
"# Use trailets to link\n",
"l = traitlets.link((slider1, 'value'), (slider2, 'value'))\n",
"\n",
"# Display!\n",
"display(caption, slider1, slider2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Create Caption\n",
"caption = widgets.Label(value='Changes in source values are reflected in target1')\n",
"\n",
"# Create Sliders\n",
"source = widgets.IntSlider(description='Source')\n",
"target1 = widgets.IntSlider(description='Target 1')\n",
"\n",
"# Use dlink\n",
"dl = traitlets.dlink((source, 'value'), (target1, 'value'))\n",
"display(caption, source, target1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Function `traitlets.link` and `traitlets.dlink` return a `Link` or `DLink` object. The link can be broken by calling the `unlink` method."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# May get an error depending on order of cells being run!\n",
"l.unlink()\n",
"dl.unlink()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Registering callbacks to trait changes in the kernel\n",
"\n",
"Since attributes of widgets on the Python side are traitlets, you can register handlers to the change events whenever the model gets updates from the front-end.\n",
"\n",
"The handler passed to observe will be called with one change argument. The change object holds at least a `type` key and a `name` key, corresponding respectively to the type of notification and the name of the attribute that triggered the notification.\n",
"\n",
"Other keys may be passed depending on the value of `type`. In the case where type is `change`, we also have the following keys:\n",
"* `owner` : the HasTraits instance\n",
"* `old` : the old value of the modified trait attribute\n",
"* `new` : the new value of the modified trait attribute\n",
"* `name` : the name of the modified trait attribute.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"caption = widgets.Label(value='The values of range1 and range2 are synchronized')\n",
"slider = widgets.IntSlider(min=-5, max=5, value=1, description='Slider')\n",
"\n",
"def handle_slider_change(change):\n",
" caption.value = 'The slider value is ' + (\n",
" 'negative' if change.new < 0 else 'nonnegative'\n",
" )\n",
"\n",
"slider.observe(handle_slider_change, names='value')\n",
"\n",
"display(caption, slider)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linking widgets attributes from the client side\n",
"\n",
"When synchronizing traitlets attributes, you may experience a lag because of the latency due to the roundtrip to the server side. You can also directly link widget attributes in the browser using the link widgets, in either a unidirectional or a bidirectional fashion.\n",
"\n",
"Javascript links persist when embedding widgets in html web pages without a kernel."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# NO LAG VERSION\n",
"caption = widgets.Label(value = 'The values of range1 and range2 are synchronized')\n",
"\n",
"range1 = widgets.IntSlider(description='Range 1')\n",
"range2 = widgets.IntSlider(description='Range 2')\n",
"\n",
"l = widgets.jslink((range1, 'value'), (range2, 'value'))\n",
"display(caption, range1, range2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# NO LAG VERSION\n",
"caption = widgets.Label(value = 'Changes in source_range values are reflected in target_range')\n",
"\n",
"source_range = widgets.IntSlider(description='Source range')\n",
"target_range = widgets.IntSlider(description='Target range')\n",
"\n",
"dl = widgets.jsdlink((source_range, 'value'), (target_range, 'value'))\n",
"display(caption, source_range, target_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Function `widgets.jslink` returns a `Link` widget. The link can be broken by calling the `unlink` method."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"l.unlink()\n",
"dl.unlink()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The difference between linking in the kernel and linking in the client\n",
"\n",
"Linking in the kernel means linking via python. If two sliders are linked in the kernel, when one slider is changed the browser sends a message to the kernel (python in this case) updating the changed slider, the link widget in the kernel then propagates the change to the other slider object in the kernel, and then the other slider’s kernel object sends a message to the browser to update the other slider’s views in the browser. If the kernel is not running (as in a static web page), then the controls will not be linked.\n",
"\n",
"Linking using jslink (i.e., on the browser side) means contructing the link in Javascript. When one slider is changed, Javascript running in the browser changes the value of the other slider in the browser, without needing to communicate with the kernel at all. If the sliders are attached to kernel objects, each slider will update their kernel-side objects independently.\n",
"\n",
"To see the difference between the two, go to the [ipywidgets documentation](http://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Events.html) and try out the sliders near the bottom. The ones linked in the kernel with `link` and `dlink` are no longer linked, but the ones linked in the browser with `jslink` and `jsdlink` are still linked.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Continuous updates\n",
"\n",
"Some widgets offer a choice with their `continuous_update` attribute between continually updating values or only updating values when a user submits the value (for example, by pressing Enter or navigating away from the control). In the next example, we see the “Delayed” controls only transmit their value after the user finishes dragging the slider or submitting the textbox. The “Continuous” controls continually transmit their values as they are changed. Try typing a two-digit number into each of the text boxes, or dragging each of the sliders, to see the difference.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import traitlets\n",
"a = widgets.IntSlider(description=\"Delayed\", continuous_update=False)\n",
"b = widgets.IntText(description=\"Delayed\", continuous_update=False)\n",
"c = widgets.IntSlider(description=\"Continuous\", continuous_update=True)\n",
"d = widgets.IntText(description=\"Continuous\", continuous_update=True)\n",
"\n",
"traitlets.link((a, 'value'), (b, 'value'))\n",
"traitlets.link((a, 'value'), (c, 'value'))\n",
"traitlets.link((a, 'value'), (d, 'value'))\n",
"widgets.VBox([a,b,c,d])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sliders, `Text`, and `Textarea` controls default to `continuous_update=True`. `IntText` and other text boxes for entering integer or float numbers default to `continuous_update=False` (since often you’ll want to type an entire number before submitting the value by pressing enter or navigating out of the box)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"You should now feel comfortable linking Widget events!"
]
}
],
"metadata": {
"cell_tags": [
[
"",
null
]
],
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/05-Widget Styling.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Widget Styling\n",
"\n",
"In this lecture we will learn about the various ways to style widgets!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `style` vs. `layout`\n",
"\n",
"There are two ways to change the appearance of widgets in the browser. The first is through the `layout` attribute which exposes layout-related CSS properties for the top-level DOM element of widgets, such as margins and positioning. The second is through the `style` attribute which exposes non-layout related attributes like button color and font weight. While `layout` is general to all widgets and containers of widgets, `style` offers tools specific to each type of widget.\n",
"\n",
"Thorough understanding of all that `layout` has to offer requires knowledge of front-end web development, including HTML and CSS. This section provides a brief overview of things that can be adjusted using `layout`. However, the full set of tools are provided in the separate notebook **Advanced Widget Styling with Layout**.\n",
"\n",
"To learn more about web development, including HTML and CSS, check out the course [\n",
"Python and Django Full Stack Web Developer Bootcamp](https://www.udemy.com/python-and-django-full-stack-web-developer-bootcamp/)\n",
"\n",
"Basic styling is more intuitive as it relates directly to each type of widget. Here we provide a set of helpful examples of the `style` attribute.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The `layout` attribute\n",
"Jupyter interactive widgets have a `layout` attribute exposing a number of CSS properties that impact how widgets are laid out. These properties map to the values of the CSS properties of the same name (underscores being replaced with dashes), applied to the top DOM elements of the corresponding widget.\n",
"\n",
"#### Sizes\n",
"* `height`\n",
"* `width`\n",
"* `max_height`\n",
"* `max_width`\n",
"* `min_height`\n",
"* `min_width`\n",
"\n",
"#### Display\n",
"* `visibility`\n",
"* `display`\n",
"* `overflow`\n",
"* `overflow_x`\n",
"* `overflow_y`\n",
"\n",
"#### Box model\n",
"* `border`\n",
"* `margin`\n",
"* `padding`\n",
"\n",
"#### Positioning\n",
"* `top`\n",
"* `left`\n",
"* `bottom`\n",
"* `right`\n",
"\n",
"#### Flexbox\n",
"* `order`\n",
"* `flex_flow`\n",
"* `align_items`\n",
"* `flex`\n",
"* `align_self`\n",
"* `align_content`\n",
"* `justify_content`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A quick example of `layout`\n",
"\n",
"We've already seen what a slider looks like without any layout adjustments:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"from IPython.display import display\n",
"\n",
"w = widgets.IntSlider()\n",
"display(w)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's say we wanted to change two of the properties of this widget: `margin` and `height`. We want to center the slider in the output area and increase its height. This can be done by adding `layout` attributes to **w**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w.layout.margin = 'auto'\n",
"w.layout.height = '75px'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that the slider changed positions on the page immediately!\n",
"\n",
"\n",
"Layout settings can be passed from one widget to another widget of the same type. Let's first create a new IntSlider:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x = widgets.IntSlider(value=15,description='New slider')\n",
"display(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now assign **w**'s layout settings to **x**:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x.layout = w.layout"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's it! For a complete set of instructions on using `layout`, visit the **Advanced Widget Styling - Layout** notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Predefined styles\n",
"\n",
"Before we investigate the `style` attribute, it should be noted that many widgets offer a list of pre-defined styles that can be passed as arguments during creation.\n",
"\n",
"For example, the `Button` widget has a `button_style` attribute that may take 5 different values:\n",
"\n",
"* `'primary'`\n",
"* `'success'`\n",
"* `'info'`\n",
"* `'warning'`\n",
"* `'danger'`\n",
"\n",
"besides the default empty string `''`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"\n",
"widgets.Button(description='Ordinary Button', button_style='')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Button(description='Danger Button', button_style='danger')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The `style` attribute"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"While the `layout` attribute only exposes layout-related CSS properties for the top-level DOM element of widgets, the\n",
"`style` attribute is used to expose non-layout related styling attributes of widgets.\n",
"\n",
"However, the properties of the `style` atribute are specific to each widget type."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b1 = widgets.Button(description='Custom color')\n",
"b1.style.button_color = 'lightgreen'\n",
"b1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can get a list of the style attributes for a widget with the `keys` property."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b1.style.keys"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that `widgets.Button().style.keys` also works."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just like the `layout` attribute, widget styles can be assigned to other widgets."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b2 = widgets.Button()\n",
"b2.style = b1.style\n",
"b2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that only the style was picked up by **b2**, not any other parameters like `description`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Widget styling attributes are specific to each widget type."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s1 = widgets.IntSlider(description='Blue handle')\n",
"s1.style.handle_color = 'lightblue'\n",
"s1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Widget style traits\n",
"\n",
"These are traits that belong to some of the more common widgets:\n",
"\n",
"#### Button\n",
"\n",
"- `button_color`\n",
"- `font_weight`\n",
"\n",
"#### IntSlider, FloatSlider, IntRangeSlider, FloatRangeSlider\n",
"\n",
"- `description_width`\n",
"- `handle_color`\n",
"\n",
"#### IntProgress, FloatProgress\n",
"\n",
"- `bar_color`\n",
"- `description_width`\n",
"\n",
"Most others such as `ToggleButton`, `Checkbox`, `Dropdown`, `RadioButtons`, `Select` and `Text` only have `description_width` as an adjustable trait."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now have an understanding of how to style widgets!"
]
}
],
"metadata": {
"cell_tags": [
[
"",
null
]
],
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/06-Custom Widget.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Custom Widget\n",
"## Exploring the Lorenz System of Differential Equations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this Notebook we explore the Lorenz system of differential equations:\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"\\dot{x} & = \\sigma(y-x) \\\\\n",
"\\dot{y} & = \\rho x - y - xz \\\\\n",
"\\dot{z} & = -\\beta z + xy\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"This is one of the classic systems in non-linear differential equations. It exhibits a range of different behaviors as the parameters ($\\sigma$, $\\beta$, $\\rho$) are varied."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Imports"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we import the needed things from IPython, [NumPy](http://www.numpy.org/), [Matplotlib](http://matplotlib.org/index.html) and [SciPy](http://www.scipy.org/). Check out the class [Python for Data Science and Machine Learning Bootcamp](https://www.udemy.com/python-for-data-science-and-machine-learning-bootcamp/) if you're interested in learning more about this part of Python!"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from ipywidgets import interact, interactive\n",
"from IPython.display import clear_output, display, HTML"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy import integrate\n",
"\n",
"from matplotlib import pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"from matplotlib.colors import cnames\n",
"from matplotlib import animation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computing the trajectories and plotting the result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We define a function that can integrate the differential equations numerically and then plot the solutions. This function has arguments that control the parameters of the differential equation ($\\sigma$, $\\beta$, $\\rho$), the numerical integration (`N`, `max_time`) and the visualization (`angle`)."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def solve_lorenz(N=10, angle=0.0, max_time=4.0, sigma=10.0, beta=8./3, rho=28.0):\n",
"\n",
" fig = plt.figure();\n",
" ax = fig.add_axes([0, 0, 1, 1], projection='3d');\n",
" ax.axis('off')\n",
"\n",
" # prepare the axes limits\n",
" ax.set_xlim((-25, 25))\n",
" ax.set_ylim((-35, 35))\n",
" ax.set_zlim((5, 55))\n",
" \n",
" def lorenz_deriv(x_y_z, t0, sigma=sigma, beta=beta, rho=rho):\n",
" \"\"\"Compute the time-derivative of a Lorenz system.\"\"\"\n",
" x, y, z = x_y_z\n",
" return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]\n",
"\n",
" # Choose random starting points, uniformly distributed from -15 to 15\n",
" np.random.seed(1)\n",
" x0 = -15 + 30 * np.random.random((N, 3))\n",
"\n",
" # Solve for the trajectories\n",
" t = np.linspace(0, max_time, int(250*max_time))\n",
" x_t = np.asarray([integrate.odeint(lorenz_deriv, x0i, t)\n",
" for x0i in x0])\n",
" \n",
" # choose a different color for each trajectory\n",
" colors = plt.cm.jet(np.linspace(0, 1, N));\n",
"\n",
" for i in range(N):\n",
" x, y, z = x_t[i,:,:].T\n",
" lines = ax.plot(x, y, z, '-', c=colors[i])\n",
" _ = plt.setp(lines, linewidth=2);\n",
"\n",
" ax.view_init(30, angle)\n",
" _ = plt.show();\n",
"\n",
" return t, x_t"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's call the function once to view the solutions. For this set of parameters, we see the trajectories swirling around two points, called attractors. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"t, x_t = solve_lorenz(angle=0, N=10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using IPython's `interactive` function, we can explore how the trajectories behave as we change the various parameters."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8c6fcac683e54aebb53559937774065e",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"Failed to display Jupyter Widget of type interactive.
\n",
"\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the Jupyter\n",
" Widgets Documentation for setup instructions.\n",
"
\n",
"\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or NBViewer ),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"
\n"
],
"text/plain": [
"interactive(children=(IntSlider(value=10, description='N', max=50), FloatSlider(value=0.0, description='angle', max=360.0), FloatSlider(value=4.0, description='max_time', max=12.0, min=-4.0), FloatSlider(value=10.0, description='sigma', max=50.0), FloatSlider(value=2.6666666666666665, description='beta', max=8.0, min=-2.6666666666666665), FloatSlider(value=28.0, description='rho', max=50.0), Output()), _dom_classes=('widget-interact',))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"w = interactive(solve_lorenz, angle=(0.,360.), N=(0,50), sigma=(0.0,50.0), rho=(0.0,50.0))\n",
"display(w);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The object returned by `interactive` is a `Widget` object and it has attributes that contain the current result and arguments:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"t, x_t = w.result"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'N': 10,\n",
" 'angle': 0.0,\n",
" 'beta': 2.6666666666666665,\n",
" 'max_time': 4.0,\n",
" 'rho': 28.0,\n",
" 'sigma': 10.0}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.kwargs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After interacting with the system, we can take the result and perform further computations. In this case, we compute the average positions in $x$, $y$ and $z$."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"xyz_avg = x_t.mean(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, 3)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xyz_avg.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creating histograms of the average positions (across different trajectories) show that on average the trajectories swirl about the attractors.\n",
"\n",
"*NOTE: These will look different from the lecture version if you adjusted any of the sliders in the* `interactive` *widget and changed the parameters.*"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(xyz_avg[:,0])\n",
"plt.title('Average $x(t)$');"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEKCAYAAAAVaT4rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAFstJREFUeJzt3XuQHWd95vHvE/kCiwEbNNx0sczGEJuLjTMIKCfBBLDFJRYkVFbiYsFCqZbCBHaTTWyo4F2zyTqQhMtCYhQQDgvYgMGJkgiMstyyAYEk4wu2MQjhoEFmPSADBrP2yv7tH6eHHI9mNK2Zozkj9/dTdUqn3/ft7t9MjZ7T5z19ulNVSJK64xeGXYAkaX4Z/JLUMQa/JHWMwS9JHWPwS1LHGPyS1DEGvyR1jMEvSR1j8EsLTJL/nuT1M4z5SpLHzVdNum8x+HVYSPK5JLclOXrYtRxKSUaAc4D3TGr/bpJT+5r+FLhwPmvTfYfBrwUvyQrgV4ECzj4E2z9i0Nucg5cDm6vqZxMNSRYDDwNu7Bu3CXhGkkfOb3m6LzD4dTg4B9gKXAKsm2hMcl6Sy/sHJnlHknc2zx+V5ONJxpN8O8nv9I27OckfJLkW+GmSI5rtfSvJ7UluSPLCvvGnJflq0/exJB9J8t/6+qfd16T6jklyd39gJ3l8kluSPBB4DvD5vr5fBHbT+7/6gyQ/SHJEVf1fYAdw5mx+oeo2g1+Hg3OADzWPs5I8vGm/FHhukgcBJFkE/Dbw4SS/APwdcA2wBHgm8PokZ/Vtdy3wPODYqtoHfIveO4sHA/8V+GCSRyY5CriC3gvPQ5r99r8otNkXAFX1E+DrwGl9zRcBf1xVtwNPAG7qG78T+D3g8qo6pqoe2tQKvXcAp7T6DUp9DH4taEl+BTge+GhV7aAXzi8GqKp/Aa4CXtAM/3XgjqraCjwZGKmqC6vqrqraBfwVsKZv8++sqt0T0ypV9bGq2lNV91TVR4BvAiuBpwJHNOP/X1V9AvhK33ba7KvfNprgT/JrwMn865z+scDtk8afAlw9xXZub8ZLB8Xg10K3Dvh0VX2/Wf4wfdM9zfLa5vmLm2XovVg8KskPJx7AG4CH9627u39HSc5JcnXf+McDi4FHAd+te1/DvH/dNvvq9/PgB94C/GFV3dUs3wY8cNL4U+m9m5jsgcAPp9mHNK2F9KGWdC9J7k9v6mZRku81zUcDxyY5paquAT4G/FmSpfSmX57WjNsNfLuqTjzALn4e5EmOp3eU/kzgS1V1d5KrgQC3AEuSpC/8l9F799F2X/22Ab+f5LeA+9ObOppwLfCYZszENNLjmfqI/yTggy33Kf2cR/xayF4A3E1vKuTU5nES8E/05v2pqnHgc8D76YXvxJkvXwF+3HyAe/8ki5oPUZ88zb4eQO+FYBwgySvoBS7Al5o6zm0+BF5NbwpowsHu6xrgEcCfAedV1T19fZuBp/ct37953Ov/anNa6y8DW6bZhzQtg18L2Trg/VX1nar63sQDeBfwkr7TMD8MPIt/neahqu4GfoPei8W3ge8D76X3we1+quoGekH8JeD/0PuQ9Z+bvruA3wReSW9q5aXA3wN3znJfdwLXATdX1ScndX+A3gfW92/G/hS4GLghyVjfuLOBz1XVnil/c9IBxFsvSgcvyZeBi6vq/bNY9yhgJ/DbzQfRk/v/GLi1qt4+w/5fWVVfO9j9Swa/1EKSp9M7zfL7wEvoHYU/uqpumcW2/qhZd+2Mg6VDwA93pXYeC3wUOIbeh7ovOtjQT3Ia8Fl6H+C+cIbh0iHjEb8kdYwf7kpSxyzIqZ7FixfXihUrhl2GJB02duzY8f2qGmkzdkEG/4oVK9i+ffuwy5Ckw0aSf2k71qkeSeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjpmxuBPsizJZ5PcmOT6JK+bYkySvDPJziTXNl9Nn+hbl+SbzWPd5HUlSfOrzXn8+4DfraqrmptB70iypbmM7YTnACc2j6cAfwk8JclDgAuAUXrXOt+RZFNV3TbQn0KS1NqMR/xVdUtVXdU8v53eDZ6XTBq2GvhA9Wyld4ekRwJnAVuqam8T9luAVQP9CSRJB+WgvrmbZAXwJODLk7qWcO97kI41bdO1T7Xt9cB6gOXLlx9MWfey4rx/mPW6c3HzRc8byn4lDd59PUdaf7ib5Bjg48Drq+rHk7unWKUO0L5/Y9WGqhqtqtGRkVaXm5AkzUKr4E9yJL3Q/1BVfWKKIWP0bj49YSmw5wDtkqQhaXNWT4D3ATdW1Z9PM2wTcE5zds9TgR81N6m4EjgzyXFJjgPObNokSUPSZo7/dOBlwHVJrm7a3gAsB6iqi4HNwHPp3Uf0DuAVTd/eJG8GtjXrXVhVewdXviTpYM0Y/FX1v5l6rr5/TAGvmaZvI7BxVtVJkgbOb+5KUscY/JLUMQa/JHWMwS9JHWPwS1LHGPyS1DEGvyR1jMEvSR1j8EtSxxj8ktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHTPjjViSbASeD9xaVY+fov8/Ay/p295JwEhz962bgduBu4F9VTU6qMIlSbPT5oj/EmDVdJ1V9daqOrWqTgXOBz4/6faKz2j6DX1JWgBmDP6q+gLQ9j65a4FL51SRJOmQGtgcf5J/Q++dwcf7mgv4dJIdSdYPal+SpNmbcY7/IPwG8M+TpnlOr6o9SR4GbEny9eYdxH6aF4b1AMuXLx9gWZKkfoM8q2cNk6Z5qmpP8++twBXAyulWrqoNVTVaVaMjIyMDLEuS1G8gwZ/kwcDTgb/ta3tAkgdOPAfOBL42iP1JkmavzemclwJnAIuTjAEXAEcCVNXFzbAXAp+uqp/2rfpw4IokE/v5cFV9anClS5JmY8bgr6q1LcZcQu+0z/62XcApsy1MknRo+M1dSeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjrG4JekjjH4JaljDH5J6hiDX5I6xuCXpI4x+CWpYwx+SeoYg1+SOsbgl6SOMfglqWMMfknqmBmDP8nGJLcmmfJ+uUnOSPKjJFc3jzf19a1KclOSnUnOG2ThkqTZaXPEfwmwaoYx/1RVpzaPCwGSLALeDTwHOBlYm+TkuRQrSZq7GYO/qr4A7J3FtlcCO6tqV1XdBVwGrJ7FdiRJAzSoOf6nJbkmySeTPK5pWwLs7hsz1rRNKcn6JNuTbB8fHx9QWZKkyQYR/FcBx1fVKcD/AP6mac8UY2u6jVTVhqoararRkZGRAZQlSZrKnIO/qn5cVT9pnm8GjkyymN4R/rK+oUuBPXPdnyRpbuYc/EkekSTN85XNNn8AbANOTHJCkqOANcCmue5PkjQ3R8w0IMmlwBnA4iRjwAXAkQBVdTHwIuDVSfYBPwPWVFUB+5KcC1wJLAI2VtX1h+SnkCS1NmPwV9XaGfrfBbxrmr7NwObZlSZJOhT85q4kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHWPwS1LHGPyS1DEGvyR1jMEvSR1j8EtSxxj8ktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHXMjMGfZGOSW5N8bZr+lyS5tnl8MckpfX03J7kuydVJtg+ycEnS7LQ54r8EWHWA/m8DT6+qJwJvBjZM6n9GVZ1aVaOzK1GSNEht7rn7hSQrDtD/xb7FrcDSuZclSTpUBj3H/0rgk33LBXw6yY4k6w+0YpL1SbYn2T4+Pj7gsiRJE2Y84m8ryTPoBf+v9DWfXlV7kjwM2JLk61X1hanWr6oNNNNEo6OjNai6JEn3NpAj/iRPBN4LrK6qH0y0V9We5t9bgSuAlYPYnyRp9uYc/EmWA58AXlZV3+hrf0CSB048B84EpjwzSJI0f2ac6klyKXAGsDjJGHABcCRAVV0MvAl4KPAXSQD2NWfwPBy4omk7AvhwVX3qEPwMkqSD0OasnrUz9L8KeNUU7buAU/ZfQ5I0TH5zV5I6xuCXpI4x+CWpYwx+SeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjrG4JekjjH4JaljDH5J6hiDX5I6xuCXpI4x+CWpYwx+SeoYg1+SOqZV8CfZmOTWJFPeMzc970yyM8m1SU7r61uX5JvNY92gCpckzU7bI/5LgFUH6H8OcGLzWA/8JUCSh9C7R+9TgJXABUmOm22xkqS5axX8VfUFYO8BhqwGPlA9W4FjkzwSOAvYUlV7q+o2YAsHfgGRJB1iM95svaUlwO6+5bGmbbr2/SRZT+/dAsuXLx9QWfNnxXn/MLR933zR84ay32H+zLrvG9bfdRcM6sPdTNFWB2jfv7FqQ1WNVtXoyMjIgMqSJE02qOAfA5b1LS8F9hygXZI0JIMK/k3AOc3ZPU8FflRVtwBXAmcmOa75UPfMpk2SNCSt5viTXAqcASxOMkbvTJ0jAarqYmAz8FxgJ3AH8Iqmb2+SNwPbmk1dWFUH+pBYknSItQr+qlo7Q38Br5mmbyOw8eBLkyQdCn5zV5I6xuCXpI4x+CWpYwx+SeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjrG4JekjjH4JaljDH5J6hiDX5I6xuCXpI4x+CWpYwx+SeoYg1+SOqZV8CdZleSmJDuTnDdF/9uSXN08vpHkh319d/f1bRpk8ZKkgzfjrReTLALeDTwbGAO2JdlUVTdMjKmq/9g3/rXAk/o28bOqOnVwJUuS5qLNEf9KYGdV7aqqu4DLgNUHGL8WuHQQxUmSBq9N8C8BdvctjzVt+0lyPHAC8Jm+5vsl2Z5ka5IXTLeTJOubcdvHx8dblCVJmo02wZ8p2mqasWuAy6vq7r625VU1CrwYeHuSfzvVilW1oapGq2p0ZGSkRVmSpNloE/xjwLK+5aXAnmnGrmHSNE9V7Wn+3QV8jnvP/0uS5lmb4N8GnJjkhCRH0Qv3/c7OSfJY4DjgS31txyU5unm+GDgduGHyupKk+TPjWT1VtS/JucCVwCJgY1Vdn+RCYHtVTbwIrAUuq6r+aaCTgPckuYfei8xF/WcDSZLm34zBD1BVm4HNk9reNGn5v0yx3heBJ8yhPknSgPnNXUnqGINfkjrG4JekjjH4JaljDH5J6hiDX5I6xuCXpI4x+CWpYwx+SeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjrG4JekjjH4JaljDH5J6phWwZ9kVZKbkuxMct4U/S9PMp7k6ubxqr6+dUm+2TzWDbJ4SdLBm/HWi0kWAe8Gng2MAduSbJri3rkfqapzJ637EOACYBQoYEez7m0DqV6SdNDaHPGvBHZW1a6qugu4DFjdcvtnAVuqam8T9luAVbMrVZI0CG2Cfwmwu295rGmb7LeSXJvk8iTLDnJdkqxPsj3J9vHx8RZlSZJmo03wZ4q2mrT8d8CKqnoi8I/AXx/Eur3Gqg1VNVpVoyMjIy3KkiTNRpvgHwOW9S0vBfb0D6iqH1TVnc3iXwG/3HZdSdL8ahP824ATk5yQ5ChgDbCpf0CSR/Ytng3c2Dy/EjgzyXFJjgPObNokSUMy41k9VbUvybn0AnsRsLGqrk9yIbC9qjYBv5PkbGAfsBd4ebPu3iRvpvfiAXBhVe09BD+HJKmlGYMfoKo2A5sntb2p7/n5wPnTrLsR2DiHGiVJA+Q3dyWpYwx+SeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjrG4JekjjH4JaljDH5J6hiDX5I6xuCXpI4x+CWpYwx+SeoYg1+SOsbgl6SOMfglqWNaBX+SVUluSrIzyXlT9P+nJDckuTbJ/0pyfF/f3Umubh6bJq8rSZpfM956Mcki4N3As4ExYFuSTVV1Q9+wrwKjVXVHklcDbwH+XdP3s6o6dcB1S5Jmqc0R/0pgZ1Xtqqq7gMuA1f0DquqzVXVHs7gVWDrYMiVJg9Im+JcAu/uWx5q26bwS+GTf8v2SbE+yNckLplspyfpm3Pbx8fEWZUmSZmPGqR4gU7TVlAOTlwKjwNP7mpdX1Z4kjwY+k+S6qvrWfhus2gBsABgdHZ1y+5KkuWtzxD8GLOtbXgrsmTwoybOANwJnV9WdE+1Vtaf5dxfwOeBJc6hXkjRHbYJ/G3BikhOSHAWsAe51dk6SJwHvoRf6t/a1H5fk6Ob5YuB0oP9DYUnSPJtxqqeq9iU5F7gSWARsrKrrk1wIbK+qTcBbgWOAjyUB+E5VnQ2cBLwnyT30XmQumnQ2kCRpnrWZ46eqNgObJ7W9qe/5s6ZZ74vAE+ZSoCRpsPzmriR1jMEvSR1j8EtSxxj8ktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHWPwS1LHGPyS1DEGvyR1jMEvSR1j8EtSxxj8ktQxBr8kdUyr4E+yKslNSXYmOW+K/qOTfKTp/3KSFX195zftNyU5a3ClS5JmY8bgT7IIeDfwHOBkYG2SkycNeyVwW1X9IvA24E+adU+md3P2xwGrgL9otidJGpI2R/wrgZ1Vtauq7gIuA1ZPGrMa+Ovm+eXAM9O76/pq4LKqurOqvg3sbLYnSRqSNjdbXwLs7lseA54y3Ziq2pfkR8BDm/atk9ZdMtVOkqwH1jeLP0lyU4va5mox8P152M8g7Vdz/mRIlbR3n/g9HwbuUzUv4L/rQ/Z7nuPPfHzbgW2CP1O0VcsxbdbtNVZtADa0qGdgkmyvqtH53OdcWfP8sOb5Yc3D0WaqZwxY1re8FNgz3ZgkRwAPBva2XFeSNI/aBP824MQkJyQ5it6HtZsmjdkErGuevwj4TFVV076mOevnBOBE4CuDKV2SNBszTvU0c/bnAlcCi4CNVXV9kguB7VW1CXgf8D+T7KR3pL+mWff6JB8FbgD2Aa+pqrsP0c8yG/M6tTQg1jw/rHl+WPMQpHdgLknqCr+5K0kdY/BLUsd0PviTvLa5nMT1Sd4y7HraSvJ7SSrJ4mHXMpMkb03y9STXJrkiybHDrmk6M12eZKFJsizJZ5Pc2PwNv27YNbWVZFGSryb5+2HX0kaSY5Nc3vwt35jkacOuabY6HfxJnkHv28VPrKrHAX865JJaSbIMeDbwnWHX0tIW4PFV9UTgG8D5Q65nSi0vT7LQ7AN+t6pOAp4KvOYwqHnC64Abh13EQXgH8Kmq+iXgFA6v2u+l08EPvBq4qKruBKiqW4dcT1tvA36fab4Mt9BU1aeral+zuJXe9zkWojaXJ1lQquqWqrqqeX47vTCa8tvxC0mSpcDzgPcOu5Y2kjwI+DV6ZzBSVXdV1Q+HW9XsdT34HwP8anNF0c8nefKwC5pJkrOB71bVNcOuZZb+PfDJYRcxjakuT7LgQ3RCc1XcJwFfHm4lrbyd3sHLPcMupKVHA+PA+5vpqfcmecCwi5qtNpdsOKwl+UfgEVN0vZHez38cvbfITwY+muTRNeRzXGeo+Q3AmfNb0cwOVHNV/W0z5o30piY+NJ+1HYTWlxhZaJIcA3wceH1V/XjY9RxIkucDt1bVjiRnDLuelo4ATgNeW1VfTvIO4DzgD4db1uzc54O/qp41XV+SVwOfaIL+K0nuoXcBpvH5qm8q09Wc5AnACcA1vYufshS4KsnKqvrePJa4nwP9ngGSrAOeDzxz2C+sB3BYXmIkyZH0Qv9DVfWJYdfTwunA2UmeC9wPeFCSD1bVS4dc14GMAWNVNfFu6nJ6wX9Y6vpUz98Avw6Q5DHAUSzgqxtW1XVV9bCqWlFVK+j9MZ427NCfSZJVwB8AZ1fVHcOu5wDaXJ5kQWkuf/4+4Maq+vNh19NGVZ1fVUubv+E19C7xspBDn+b/2O4kj22anknvigSHpfv8Ef8MNgIbk3wNuAtYt4CPRg9n7wKOBrY071S2VtV/GG5J+5vu8iRDLmsmpwMvA65LcnXT9oaq2jzEmu6rXgt8qDko2AW8Ysj1zJqXbJCkjun6VI8kdY7BL0kdY/BLUscY/JLUMQa/JHWMwS9JHWPwS1LH/H+hMQtcBLC0KAAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(xyz_avg[:,1])\n",
"plt.title('Average $y(t)$');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"Hopefully you've enjoyed using widgets in the Jupyter Notebook system and have begun to explore the other GUI possibilities for Python!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/07-Advanced Widget List.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Widget List\n",
"\n",
"This notebook is an extension of **Widget List**, describing even more of the GUI widgets available!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Output\n",
"The `Output` widget can capture and display stdout, stderr and [rich output generated by IPython](http://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html#module-IPython.display). After the widget is created, direct output to it using a context manager."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"out = widgets.Output()\n",
"out"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"You can print text to the output area as shown below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"with out:\n",
" for i in range(10):\n",
" print(i, 'Hello world!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Rich material can also be directed to the output area. Anything which displays nicely in a Jupyter notebook will also display well in the `Output` widget."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import YouTubeVideo\n",
"with out:\n",
" display(YouTubeVideo('eWzY2nGfkXk'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Play (Animation) widget\n",
"The `Play` widget is useful to perform animations by iterating on a sequence of integers with a certain speed. The value of the slider below is linked to the player.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"play = widgets.Play(\n",
" # interval=10,\n",
" value=50,\n",
" min=0,\n",
" max=100,\n",
" step=1,\n",
" description=\"Press play\",\n",
" disabled=False\n",
")\n",
"slider = widgets.IntSlider()\n",
"widgets.jslink((play, 'value'), (slider, 'value'))\n",
"widgets.HBox([play, slider])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Date picker\n",
"The date picker widget works in Chrome and IE Edge, but does not currently work in Firefox or Safari because they do not support the HTML date input field."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.DatePicker(\n",
" description='Pick a Date',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Color picker"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.ColorPicker(\n",
" concise=False,\n",
" description='Pick a color',\n",
" value='blue',\n",
" disabled=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Controller\n",
"The `Controller` allows a game controller to be used as an input device."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"widgets.Controller(\n",
" index=0,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Container/Layout widgets\n",
"\n",
"These widgets are used to hold other widgets, called children. Each has a `children` property that may be set either when the widget is created or later.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Box"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"items = [widgets.Label(str(i)) for i in range(4)]\n",
"widgets.Box(items)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### HBox"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"items = [widgets.Label(str(i)) for i in range(4)]\n",
"widgets.HBox(items)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### VBox"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"items = [widgets.Label(str(i)) for i in range(4)]\n",
"left_box = widgets.VBox([items[0], items[1]])\n",
"right_box = widgets.VBox([items[2], items[3]])\n",
"widgets.HBox([left_box, right_box])"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Accordion"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"accordion = widgets.Accordion(children=[widgets.IntSlider(), widgets.Text()])\n",
"accordion.set_title(0, 'Slider')\n",
"accordion.set_title(1, 'Text')\n",
"accordion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tabs\n",
"\n",
"In this example the children are set after the tab is created. Titles for the tabes are set in the same way they are for `Accordion`.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']\n",
"children = [widgets.Text(description=name) for name in tab_contents]\n",
"tab = widgets.Tab()\n",
"tab.children = children\n",
"for i in range(len(children)):\n",
" tab.set_title(i, str(i))\n",
"tab"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Accordion and Tab use `selected_index`, not value\n",
"\n",
"Unlike the rest of the widgets discussed earlier, the container widgets `Accordion` and `Tab` update their `selected_index` attribute when the user changes which accordion or tab is selected. That means that you can both see what the user is doing *and* programmatically set what the user sees by setting the value of `selected_index`.\n",
"\n",
"Setting `selected_index = None` closes all of the accordions or deselects all tabs.\n",
"\n",
"In the cells below try displaying or setting the `selected_index` of the `tab` and/or `accordion`.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tab.selected_index = 3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"accordion.selected_index = None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Nesting tabs and accordions\n",
"\n",
"Tabs and accordions can be nested as deeply as you want. If you have a few minutes, try nesting a few accordions or putting an accordion inside a tab or a tab inside an accordion.\n",
"\n",
"The example below makes a couple of tabs with an accordion children in one of them"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tab_nest = widgets.Tab()\n",
"tab_nest.children = [accordion, accordion]\n",
"tab_nest.set_title(0, 'An accordion')\n",
"tab_nest.set_title(1, 'Copy of the accordion')\n",
"tab_nest"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"Use this as a further reference for yourself!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: 19-Bonus Material - Introduction to GUIs/08-Advanced Widget Styling with Layout.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Advanced Widget Styling with Layout\n",
"\n",
"This notebook expands on the **Widget Styling** lecture by describing the various HTML and CSS adjustments that can be made through the `layout` attribute."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The `layout` attribute\n",
"Jupyter interactive widgets have a `layout` attribute exposing a number of CSS properties that impact how widgets are laid out.\n",
"\n",
"### Exposed CSS properties\n",
"The following properties map to the values of the CSS properties of the same name (underscores being replaced with dashes), applied to the top DOM elements of the corresponding widget.
\n",
"\n",
"#### Sizes\n",
"* `height`\n",
"* `width`\n",
"* `max_height`\n",
"* `max_width`\n",
"* `min_height`\n",
"* `min_width`\n",
"\n",
"#### Display\n",
"* `visibility`\n",
"* `display`\n",
"* `overflow`\n",
"* `overflow_x`\n",
"* `overflow_y`\n",
"\n",
"#### Box model\n",
"* `border`\n",
"* `margin`\n",
"* `padding`\n",
"\n",
"#### Positioning\n",
"* `top`\n",
"* `left`\n",
"* `bottom`\n",
"* `right`\n",
"\n",
"#### Flexbox\n",
"* `order`\n",
"* `flex_flow`\n",
"* `align_items`\n",
"* `flex`\n",
"* `align_self`\n",
"* `align_content`\n",
"* `justify_content`\n",
"\n",
"### Shorthand CSS properties\n",
"\n",
"You may have noticed that certain CSS properties such as `margin-[top/right/bottom/left]` seem to be missing. The same holds for `padding-[top/right/bottom/left]` etc.\n",
"\n",
"In fact, you can atomically specify `[top/right/bottom/left]` margins via the `margin` attribute alone by passing the string `'100px 150px 100px 80px'` for a respectively `top`, `right`, `bottom` and `left` margins of `100`, `150`, `100` and `80` pixels.\n",
"\n",
"Similarly, the `flex` attribute can hold values for `flex-grow`, `flex-shrink` and `flex-basis`. The `border` attribute is a shorthand property for `border-width`, `border-style (required)`, and `border-color`."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"import ipywidgets as widgets\n",
"from IPython.display import display"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conclusion\n",
"\n",
"You should now have an understanding of how to style widgets!"
]
}
],
"metadata": {
"cell_tags": [
[
"",
null
]
],
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: Jupyter (iPython) Notebooks Guide.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Guide to Using Jupyter Notebooks\n",
"In this lecture we will be going over the basics of the Jupyter (previously called iPython Notebooks).\n",
"\n",
"For a complete User Manual check out the [Bryn Mawr College Computer Science Guide](https://jupyter.brynmawr.edu/services/public/dblank/Jupyter%20Notebook%20Users%20Manual.ipynb).\n",
"\n",
"Most of the breakdown will actually occur in the presentation corresponding to this Notebook. So please refer to either the presentation or the full User Manual linked above."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: README.md
================================================
# Complete-Python-3-Bootcamp
Course Files for Complete Python 3 Bootcamp Course on Udemy
Copyright(©) by Pierian Data Inc.
Get it now for 95% off with the link:
https://www.udemy.com/complete-python-bootcamp/?couponCode=COMPLETE_GITHUB
Thanks!