Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Book Hunters Final Deliverable
{
"metadata": {
"name": "BookHunters Deliverable Final-Copy0"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": "#Book Hunters\n\nhttps://github.com/fchasen/bookhunters\n\n###Team Members\n\nFred, Luis, Sonali\n\n###Problem and Overview\n\nWhen we search for books on the internet, we are often overwhelmed with results coming from various sources in both physical and digital locations. Futhermore, it\u2019s difficult to get direct trusted urls to books. Project Gutenberg, HathiTrust and Open Library, all provide an extensive library of books online, each with their own large repositories. By combining their catalogs, Book Hunters enables querying for a book across those different sources, our project will also highlight key statistics about the three datasets which will make it easier for the user to choose the library that best meets their needs. \n\n###Data sources\n\n[![Open Library](http://fchasen.com/cal/open-data/logo_OL-lg.png)](http://openlibrary.org/)\n\nOpen Library - http://openlibrary.org/\n\nOpen Library is an open, editable library catalog, building towards a web page for every book ever published.\n\n\n[![HathiTrust](http://fchasen.com/cal/open-data/hathi_logo_bigger.jpg)](http://www.hathitrust.org/)\n\nHathiTrust - http://www.hathitrust.org/\n\nHathiTrust is a partnership of major research institutions and libraries working to ensure that the cultural record is preserved and accessible long into the future. There are more than sixty partners in HathiTrust, and membership is open to institutions worldwide.\n\n\n[![Gutenberg](http://fchasen.com/cal/open-data/pg-logo-002.png)](http://www.gutenberg.org/)\n\nGutenberg - http://www.gutenberg.org/\n\nProject Gutenberg is the first and largest single collection of free electronic books, or eBooks. Michael Hart, founder of Project Gutenberg, invented eBooks in 1971 and continues to inspire the creation of eBooks and related technologies today. All books in Gutenberg are in Public Domain and may exist across the format spectrum from simple plain text to mp3. "
},
{
"cell_type": "markdown",
"metadata": {},
"source": "###The Plan vs. The Execution\n\nWe have followed the plan pretty closely as far as functionality we wanted to establish in regard to finding and downloading books immediately. As far as calculating when books would enter Public Domain, this proved to be difficult. First, depending on when the book was published, a copyright can either be renewed or is automatically renewed. The system would have to keep track of not just the date, but the status of a renewal and whether the copyright was held by an individual author or a corporation."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "###Bookhunters Database Schema\n\nDue to the large amount of records that the data sources contain, we needed to move to a more persistent storage in order to run various metrics and achieve better retrieval performance.\n\n![Bookhunters Schema](http://fchasen.com/cal/open-data/erd.png)"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Trials and Tribulations"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Hmmmmm, where do we start\n<ul>\n <li>Configuring systems and databases</li>\n <li>Vocabulary issue between the disparate sources and formats (XML, CSV, JSON)</li>\n <li>Large datasets</li>\n <li>Deciding the overlap between the disparate sources</li>\n</ul>"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Analyzing The Data"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The goal here is to show some general metrics which will help if/when you want to choose what data source to look at more closely\n<ul>\n <li>Total book counts for each source</li>\n <li>Books by year published/released</li>\n <li>Books by language</li>\n <li>Books by format</li>\n <li>Search example and results</li>\n <ul>\n <li>Links to formats</li> \n </ul>\n <li>Hathi Trust publications per search</li>\n</ul>"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Results Reproduction"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "In order to reproduce the results, there is some setup required:\n<ol>\n <li>Install a MySQL database and the necessary python libraries needed to load the data sources</li>\n <li>Download the latest data dumps from the various sources</li>\n <li>Use provided python data loading scripts for each of the data sources</li>\n <li>Run the final notebook</li>\n</ol>"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Workload Distribution"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Fred\n<ul>\n <li>OpenLibrary dataset expert, data loader and database schema designer</li>\n <li>Notebook HTML author</li> \n</ul>\n\nLuis\n<ul>\n <li>General system and database configuration</li>\n <li>Gutenberg dataset expert, data loader and database schema designer</li>\n</ul>\n\nSonali\n<ul>\n <li>Graphing and visualizations author across the datasets</li>\n <li>Hathi Trust dataset expert, data loader and database schema designer</li>\n</ul>"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Where Do We Go From Here?"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The goal for the presentation was to show that Notebooks could still be used even though the data source is a database. Our main next step would be to turn this into a web application, with a sophisticated UI in order to help people find \"on demand\" books. Other update include:\n<ul>\n <li>Create a materialized view between the three tables to simplify search and increase performance across the databases</li>\n <li>Incorporating more statistics from the sources, i.e. - Gutenberg number of downloads</li>\n <li>Including and mitigating subject vocabulary issues between the sources or possibly looking up book metadata from a source like Wikipedia</li>\n <li>Incorporating book rankings technologies along with user metrics in order to identify books the user may enjoy</li>\n</ul>"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Import libraries and Connect to database"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Each library's data needed to be imported into the databse differently.\n\nThe following links provided the urls to the data and code we used to import each of the datasets.\n\nThis process takes several hours, so shown for reproducibility only.\n\nOpen Library - https://ec2-54-225-70-191.compute-1.amazonaws.com:80/5fb75e17-1eb2-4eb1-8d52-2eb5c3e18fe9\n\nHathiTrust - https://ec2-54-225-70-191.compute-1.amazonaws.com:80/69a6a181-4243-4b85-8a30-d74e90584bc7\n\nGutenberg - https://ec2-54-225-70-191.compute-1.amazonaws.com:80/82ab62ce-c46f-4c3f-9c2c-97fe3f2a6220"
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Importing libraries\n\nimport matplotlib.pyplot as plt\nimport pandas as pd\nfrom itertools import islice\nimport numpy as np\n#Useful way of priting dataframe using html\nfrom IPython.core.display import HTML\nimport IPython.core.display\n",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": "/usr/local/lib/python2.7/dist-packages/pytz/__init__.py:35: UserWarning: Module logging was already imported from /usr/lib/python2.7/logging/__init__.pyc, but /usr/local/lib/python2.7/dist-packages is being added to sys.path\n from pkg_resources import resource_stream\n"
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Connect to database, our data is in mysql hosted on ec2 cluster. Since the size of data was huge hence it was essential to use a database.\nimport MySQLdb\ndb = MySQLdb.connect(host=\"bookhunters.cicwejvpogpp.us-east-1.rds.amazonaws.com\", port=3306, user=\"bookhunters\", passwd=\"wwod13pw!\",\ndb=\"bookhunters\", charset='utf8')\ndb.set_character_set('utf8')\ncursor = db.cursor()\ncursor.execute('SET NAMES utf8')\ncursor.execute('SET CHARACTER SET utf8')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 2,
"text": "0L"
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": "# execute SQL select statement to fetch results from database\ncursor.execute(\"select 'Hathtrust' , count(1) from ht_books union select 'Gutenberg', count(1) from gut_books union select 'Open library', count(1) from ol_books\")\nresults = cursor.fetchall()",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Fetching overall statistics"
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Total Count"
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Store results in a dataframe\nl = list(results)\ndf = pd.DataFrame(l, columns=[\"Source\",\"Count\"])\ndf = df.set_index(df.Source)\ndf",
"language": "python",
"metadata": {},
"outputs": [
{
"html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Source</th>\n <th>Count</th>\n </tr>\n <tr>\n <th>Source</th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>Hathtrust</th>\n <td> Hathtrust</td>\n <td> 4418000</td>\n </tr>\n <tr>\n <th>Gutenberg</th>\n <td> Gutenberg</td>\n <td> 42213</td>\n </tr>\n <tr>\n <th>Open library</th>\n <td> Open library</td>\n <td> 197245</td>\n </tr>\n </tbody>\n</table>\n</div>",
"output_type": "pyout",
"prompt_number": 5,
"text": " Source Count\nSource \nHathtrust Hathtrust 4418000\nGutenberg Gutenberg 42213\nOpen library Open library 197245"
}
],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Books count in a bar graph"
},
{
"cell_type": "code",
"collapsed": false,
"input": "df['Count'].plot(kind = 'bar',title=\"Total books\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 6,
"text": "<matplotlib.axes.AxesSubplot at 0x2ca5f50>"
},
{
"output_type": "display_data",
"png": "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\nrAzPbWIAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Plot graphs based on publish date\ncursor.execute(\"select pubdate,'Hathitrust' as Source, COUNT(1) from ht_books group by pubdate, 'Hathitrust' union select publish_date,'Openlibrary' as Source, COUNT(1) from ol_books group by publish_date,'Openlibrary' union select created,'Gutenberg' as Source, COUNT(1) from gut_books group by created,'Gutenberg'\")\ndates = cursor.fetchall()\n",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": "dateslist = list(dates)\ndfdates=pd.DataFrame(dateslist,columns=[\"Year\",\"Source\",\"Count\"])\n#display(HTML(dfdates[:-25].to_html()))",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Number of books by Year"
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Parsing the dates field to fetch only the year, remove redundant text.\nimport re\ndef returnnumber(num): \n try:\n tmp = re.findall((\"(\\d{4})\") ,num)\n if (len(tmp)==1):\n return int(\"\".join(tmp))\n else:\n return None\n except:\n return None\n ",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Removing null fields from the dataframe to add another column called FilteredDate to store parsed date.\ndfdates.dropna()\ns = pd.Series()\ns = dfdates.Year.apply(returnnumber)\ndfdates[\"FilteredDate\"]=s",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": "dfdates.sort('FilteredDate')\ndfdates = dfdates[(dfdates.FilteredDate>1990) & (dfdates.FilteredDate<2007)]\n#display(HTML(dfdates.to_html()))",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Plot the books publishes by year between 1990 and 2002\nd = dfdates.pivot_table('Count', rows='FilteredDate', cols='Source', aggfunc=sum)\nd",
"language": "python",
"metadata": {},
"outputs": [
{
"html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th>Source</th>\n <th>Gutenberg</th>\n <th>Hathitrust</th>\n <th>Openlibrary</th>\n </tr>\n <tr>\n <th>FilteredDate</th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1991</th>\n <td> 5</td>\n <td> 58774</td>\n <td> 1389</td>\n </tr>\n <tr>\n <th>1992</th>\n <td> 13</td>\n <td> 52561</td>\n <td> 1498</td>\n </tr>\n <tr>\n <th>1993</th>\n <td> 36</td>\n <td> 32109</td>\n <td> 1832</td>\n </tr>\n <tr>\n <th>1994</th>\n <td> 58</td>\n <td> 16576</td>\n <td> 1724</td>\n </tr>\n <tr>\n <th>1995</th>\n <td> 110</td>\n <td> 16136</td>\n <td> 1620</td>\n </tr>\n <tr>\n <th>1996</th>\n <td> 335</td>\n <td> 14864</td>\n <td> 1649</td>\n </tr>\n <tr>\n <th>1997</th>\n <td> 335</td>\n <td> 13812</td>\n <td> 1679</td>\n </tr>\n <tr>\n <th>1998</th>\n <td> 350</td>\n <td> 12870</td>\n <td> 1703</td>\n </tr>\n <tr>\n <th>1999</th>\n <td> 344</td>\n <td> 19557</td>\n <td> 1630</td>\n </tr>\n <tr>\n <th>2000</th>\n <td> 356</td>\n <td> 12103</td>\n <td> 1817</td>\n </tr>\n <tr>\n <th>2001</th>\n <td> 332</td>\n <td> 11023</td>\n <td> 1427</td>\n </tr>\n <tr>\n <th>2002</th>\n <td> 388</td>\n <td> 10277</td>\n <td> 1423</td>\n </tr>\n <tr>\n <th>2003</th>\n <td> 1481</td>\n <td> 10003</td>\n <td> 1398</td>\n </tr>\n <tr>\n <th>2004</th>\n <td> 7124</td>\n <td> 9891</td>\n <td> 1262</td>\n </tr>\n <tr>\n <th>2005</th>\n <td> 5145</td>\n <td> 9425</td>\n <td> 1222</td>\n </tr>\n <tr>\n <th>2006</th>\n <td> 3637</td>\n <td> 8401</td>\n <td> 1147</td>\n </tr>\n </tbody>\n</table>\n</div>",
"output_type": "pyout",
"prompt_number": 12,
"text": "Source Gutenberg Hathitrust Openlibrary\nFilteredDate \n1991 5 58774 1389\n1992 13 52561 1498\n1993 36 32109 1832\n1994 58 16576 1724\n1995 110 16136 1620\n1996 335 14864 1649\n1997 335 13812 1679\n1998 350 12870 1703\n1999 344 19557 1630\n2000 356 12103 1817\n2001 332 11023 1427\n2002 388 10277 1423\n2003 1481 10003 1398\n2004 7124 9891 1262\n2005 5145 9425 1222\n2006 3637 8401 1147"
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": "d.plot(title=\"Total books collection by year\", linewidth=2.5 )",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 13,
"text": "<matplotlib.axes.AxesSubplot at 0x31e4bd0>"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": "def ipynb_input(varname, prompt=''):\n \"\"\"Prompt user for input and assign string val to given variable name.\"\"\"\n js_code = (\"\"\"\n var value = prompt(\"{prompt}\",\"\");\n var py_code = \"{varname} = '\" + value + \"'\";\n IPython.notebook.kernel.execute(py_code);\n \"\"\").format(prompt=prompt, varname=varname)\n return IPython.core.display.Javascript(js_code)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": "ipynb_input(\"fromyear\", prompt='Enter the from year: ')",
"language": "python",
"metadata": {},
"outputs": [
{
"javascript": "\n var value = prompt(\"Enter the from year: \",\"\");\n var py_code = \"fromyear = '\" + value + \"'\";\n IPython.notebook.kernel.execute(py_code);\n ",
"output_type": "pyout",
"prompt_number": 15,
"text": "<IPython.core.display.Javascript at 0x26902d0>"
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": "ipynb_input(\"toyear\", prompt='Enter the to year: ')",
"language": "python",
"metadata": {},
"outputs": [
{
"javascript": "\n var value = prompt(\"Enter the to year: \",\"\");\n var py_code = \"toyear = '\" + value + \"'\";\n IPython.notebook.kernel.execute(py_code);\n ",
"output_type": "pyout",
"prompt_number": 16,
"text": "<IPython.core.display.Javascript at 0x2690510>"
}
],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": "dfdatesuser = dfdates[(dfdates.FilteredDate>int(fromyear)) & (dfdates.FilteredDate<int(toyear))]\nduser = dfdatesuser.pivot_table('Count', rows='FilteredDate', cols='Source', aggfunc=sum)\nduser.plot(title=\"Books collection by year\", linewidth=2.5 )",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 17,
"text": "<matplotlib.axes.AxesSubplot at 0x3316e10>"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 17
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Plot number of books by language"
},
{
"cell_type": "code",
"collapsed": false,
"input": "cursor.execute(\"select lang as lang,count(1) as count,'Hathitrust' as Source from ht_books where lang is not null group by (lang)\") \ndflang_ht = pd.DataFrame(list(cursor.fetchall()),columns=['Language','Count','Source'])\ncursor.execute(\"select lang as lang ,count(1) as count,'Gutenberg' as Source from gut_books where lang is not null group by (lang)\")\ndflang_gb = pd.DataFrame(list(cursor.fetchall()),columns=['Language','Count','Source'])\ncursor.execute(\"select language as lang,count(1) as count, 'Openlibrary' as Source from ol_books where language is not null group by (language)\")\ndflang_ol = pd.DataFrame(list(cursor.fetchall()),columns=['Language','Count','Source'])",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": "#Function to translate date abbreviation to their full form\ndef language(l):\n langdict= { 'eng':'English',\n 'ger':'German',\n 'fre':'French',\n 'chi':'Chinese',\n 'jpn':'Japan',\n 'rus':'Russian',\n 'en':'English',\n 'fr':'French',\n 'de':'Dutch',\n 'nl':'Dutch',\n 'pt':'Portugese',\n 'spa':'Spanish',\n 'ita':'Italian',\n 'lat':'Latin',\n 'fr':'French',\n 'fi':'Finnish' }\n try:\n if len(l)>3:\n tmp= l[-3:]\n else:\n tmp=l\n return langdict[tmp]\n except:\n return 'Other'\n ",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": "dflang_gb6= dflang_gb[dflang_gb.Language.str.strip()!=\"\"].sort('Count')[::-1][:6]\ndflang_ol6 = dflang_ol[dflang_ol.Language.str.strip()!=\"\"].sort('Count')[::-1][:6]\ndflang_ht6 = dflang_ht[dflang_ht.Language.str.strip()!=\"\"].sort('Count')[::-1][:6]\ndflang_gb6['Lang']= dflang_gb[dflang_gb.Language.str.strip()!=\"\"].sort('Count')[::-1][:6].Language.apply(language)\ndflang_ol6['Lang']= dflang_ol[dflang_ol.Language.str.strip()!=\"\"].sort('Count')[::-1][:6].Language.apply(language)\ndflang_ht6['Lang']= dflang_ht[dflang_ht.Language.str.strip()!=\"\"].sort('Count')[::-1][:6].Language.apply(language)\ndf_mer_lang = dflang_gb6.append(dflang_ol6).append(dflang_ht6)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Books by language"
},
{
"cell_type": "code",
"collapsed": false,
"input": "df_mer_lang = df_mer_lang.pivot_table('Count', rows='Lang', cols='Source', aggfunc=sum)\ndf_mer_lang.fillna(0)",
"language": "python",
"metadata": {},
"outputs": [
{
"html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th>Source</th>\n <th>Gutenberg</th>\n <th>Hathitrust</th>\n <th>Openlibrary</th>\n </tr>\n <tr>\n <th>Lang</th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>Chinese</th>\n <td> 0</td>\n <td> 221058</td>\n <td> 0</td>\n </tr>\n <tr>\n <th>Dutch</th>\n <td> 1520</td>\n <td> 0</td>\n <td> 0</td>\n </tr>\n <tr>\n <th>English</th>\n <td> 35198</td>\n <td> 2352951</td>\n <td> 108873</td>\n </tr>\n <tr>\n <th>Finnish</th>\n <td> 712</td>\n <td> 0</td>\n <td> 0</td>\n </tr>\n <tr>\n <th>French</th>\n <td> 2158</td>\n <td> 343066</td>\n <td> 14479</td>\n </tr>\n <tr>\n <th>German</th>\n <td> 0</td>\n <td> 398413</td>\n <td> 9456</td>\n </tr>\n <tr>\n <th>Italian</th>\n <td> 0</td>\n <td> 0</td>\n <td> 2323</td>\n </tr>\n <tr>\n <th>Japan</th>\n <td> 0</td>\n <td> 212208</td>\n <td> 0</td>\n </tr>\n <tr>\n <th>Latin</th>\n <td> 0</td>\n <td> 0</td>\n <td> 1898</td>\n </tr>\n <tr>\n <th>Portugese</th>\n <td> 528</td>\n <td> 0</td>\n <td> 0</td>\n </tr>\n <tr>\n <th>Russian</th>\n <td> 0</td>\n <td> 147235</td>\n <td> 0</td>\n </tr>\n <tr>\n <th>Spanish</th>\n <td> 0</td>\n <td> 0</td>\n <td> 2785</td>\n </tr>\n </tbody>\n</table>\n</div>",
"output_type": "pyout",
"prompt_number": 21,
"text": "Source Gutenberg Hathitrust Openlibrary\nLang \nChinese 0 221058 0\nDutch 1520 0 0\nEnglish 35198 2352951 108873\nFinnish 712 0 0\nFrench 2158 343066 14479\nGerman 0 398413 9456\nItalian 0 0 2323\nJapan 0 212208 0\nLatin 0 0 1898\nPortugese 528 0 0\nRussian 0 147235 0\nSpanish 0 0 2785"
}
],
"prompt_number": 21
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Plot books count by language for the three data sources"
},
{
"cell_type": "code",
"collapsed": false,
"input": "fig = plt.figure()\nfig.set_size_inches(10,10)\nax1 = fig.add_subplot(2, 2, 1)\ndf_mer_lang.fillna(0)['Gutenberg'].plot(kind=\"barh\", title=\"Gutenberg\",color='r')\nax2 = fig.add_subplot(2, 2, 2)\ndf_mer_lang.fillna(0)['Openlibrary'].plot(kind=\"barh\", title=\"Openlibrary\",color='b')\nax3 = fig.add_subplot(2, 2, 3)\nprint \"\\n\"\nprint \"\\n\"\ndf_mer_lang.fillna(0)['Hathitrust'].plot(kind=\"barh\", title=\"Hathitrust\",color='g')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "\n\n\n\n"
},
{
"output_type": "pyout",
"prompt_number": 22,
"text": "<matplotlib.axes.AxesSubplot at 0x384ed10>"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAApEAAAJXCAYAAADLmg9iAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8E9XaB/BfKLQCLbRggbKmyiLQJWlL2USigojIclkF\nWeoCCMIVEETFV8LrBtgiy1XBvmrZXABX4HItV1pEtkoXFlGw2EC1gmylC4XSct4/MLGlLU0gyczJ\n/L6fTz7kpJN5npPJPJxkzkx0QggBIiIiIiIH1FA6ASIiIiKSDweRREREROQwDiKJiIiIyGEcRBIR\nERGRwziIJCIiIiKHcRBJRERERA7jIJLoJiQnJ6NFixZKp0FEVCm9Xo9t27YBAF5//XWMHz8eAGCx\nWFCjRg1cvXpVyfTIQ3AQSVL55JNP0LlzZ/j6+qJx48bo0qUL3n33XbueW6NGDfz6668uzpCI6G8J\nCQkIDQ1F3bp1ERQUhMmTJ+PChQsuj6vT6Wz3X3zxRcTHx7s8JmkPB5Ekjbi4OEybNg2zZ8/GqVOn\ncOrUKSxfvhw7d+5EcXGxXetQ47X1S0pKlE6BiFwgLi4Ozz//POLi4pCXl4c9e/bg+PHj6N27N65c\nuaJ0enYpLS11aHnWM23hIJKkcOHCBcydOxfvvvsuBg8ejLp16wIADAYD1qxZA29vb5hMJrz//vu2\n5yQkJKBHjx4AgHvuuQcAEB4eDj8/P6xfvx4AsGnTJhgMBgQEBKB79+44ePCg7fl6vR5xcXEIDw+H\nv78/HnnkEVy+fLlcXm+88QYCAwMRHByMjz76yPb45cuXMXPmTLRq1QpNmjTBpEmTcOnSJQDXDoU3\nb94cCxcuRFBQEJ544glcunQJ48aNQ4MGDdChQwcsXLiQh8uJJJaXlwez2Yx//etfeOCBB+Dl5YVW\nrVph3bp1sFgsWLNmDcxmM4YOHYpHHnkE9erVQ2RkJA4cOGBbR05ODoYMGYJGjRrhjjvuwLJly2x/\nM5vNGD58OMaNG4d69eohJCQEqampleZiNpsxZsyYco+9//77aNasGZo2bYq4uLhyyw4dOhRjxoxB\n/fr1sXLlSvzwww/o2rUrAgIC0LRpU0ydOrXcILhGjRp455130LZtW7Rt2xZTpkzBzJkzy8UbMGAA\nFi9efEuvKakPB5Ekhd27d+Py5csYOHBglcvodLpyh3DK+u677wAABw4cQH5+PoYNG4b09HQ88cQT\niI+Px7lz5zBx4kQMGDDAVhx1Oh3Wr1+Pb775BllZWThw4AASEhJs6zx58iTOnj2LnJwcrFy5EhMm\nTMDRo0cBAM8//zwyMzOxf/9+ZGZm4vfff8f//u//2p576tQpnD9/HidOnMCKFStgNptx4sQJZGVl\nYevWrVizZk2VfSEi9du1axcuXbqEwYMHl3u8bt26eOihh7B161bodDp8/fXXGD58OM6fP49Ro0Zh\n0KBBKC0txdWrV9G/f38YjUbk5OTg22+/xeLFi5GYmGhb18aNGzFy5EhcuHABAwYMwJQpUyrNpbJa\nkpycjMzMTCQmJmLBggX49ttvbX/7+uuvMWzYMFy4cAGjRo2Cl5cXlixZgrNnz2L37t349ttv8c47\n75Rb31dffYWUlBT89NNPGDduHD7++GPbkZ8zZ87g22+/xaOPPnrTryepEweRJIUzZ87g9ttvR40a\nf79lu3XrhoCAANSpUwc7duxweJ3vvfceJk6ciE6dOkGn02Hs2LHw8fHBnj17bMv885//RJMmTRAQ\nEID+/fsjIyOj3DpeeeUV1KpVC/fccw/69euHdevWQQiB+Ph4LFq0CP7+/vD19cULL7yATz75xPa8\nGjVqYN68eahVqxZuu+02rF+/Hi+++CLq16+PZs2a4ZlnnlHloXcisk9lNcsqKCgIZ86cAQBERUVh\n8ODB8PLywowZM3Dp0iXs3r0bP/zwA86cOYOXXnoJNWvWRHBwMJ588slydaRHjx548MEHodPpMHr0\naOzfv7/SXCqrJXPnzkXt2rUREhKCxx57DB9//LHtb926dcOAAQMAALfddhsiIiIQHR2NGjVqoFWr\nVpgwYQK2b99ebn0vvPAC/P394ePjg06dOqF+/fq2geknn3yCe++9F4GBgQ6+iqR2NZVOgMgeDRs2\nxJkzZ3D16lVbUd61axcAoEWLFjd1puHx48exatWqcoeIrly5gpycHFu7SZMmtvu1a9cu97eAgADU\nrl3b1m7VqhX++OMPnDlzBhcvXkRkZKTtb0KIcjkGBgbC29vb1s7JySl3+Lp58+YO94eI1OP222+v\nULOscnJycPvttwMov6/rdDo0b94cOTk50Ol0yMnJQUBAgO3vpaWltqk5ANC4cWPb/Tp16uDSpUuV\nxqtM2XrTsmXLclN5rq8/R48exYwZM5CamoqLFy+ipKQEUVFRVa4PAMaOHYs1a9agV69eWLNmDaZP\nn15tTiQffhNJUujatSt8fHzw5ZdfVrlM3bp1UVhYaGufPHnyhuts2bIl5syZg/Pnz9tuBQUFGDFi\nhF05nT9/HhcvXrS1jx8/jqZNm+L2229H7dq1cfjwYdt6c3NzkZeXZ1v2+sNLQUFByM7OtrXL3ici\n+Vhr1meffVbu8YKCAvznP/9Br169AJTf169evYrffvsNzZo1Q4sWLRAcHFyuPuXl5WHTpk0AKj9E\n7YgTJ06Uu9+sWTNb+/p1T5o0CR06dEBmZiYuXLiA1157rcIH9+ufM3r0aHz11VfYv38/fv75Zwwa\nNOiW8iV14iCSpODv74+5c+di8uTJ+Oyzz5Cfn4+rV68iIyMDhYWF0Ol0MBgM+Pzzz1FUVITMzMxy\nJ9kA1z61Hzt2zNYeP348li9fjpSUFAghUFhYiM2bN6OgoMDuvObOnYsrV65gx44d2Lx5M4YNGwad\nTofx48dj2rRpOH36NADg999/LzeX6XrDhw/HG2+8gdzcXPz+++/417/+xTmRRBKrX78+5s6di6lT\np+Kbb77BlStXYLFYMHz4cLRo0QKjR4+GEAKpqan44osvUFJSgsWLF+O2225Dly5d0KlTJ/j5+WHh\nwoUoKipCaWkpDh06hH379gG49StNvPrqqygqKsKPP/6IhISEG354LigogJ+fH+rUqYOff/7Zrsuq\nNW/eHFFRURg7diyGDh0KHx+fW8qX1ImDSJLGrFmzsGjRIixcuBBNmjRBkyZN8NRTT2HhwoXo2rUr\npk+fDm9vbzRu3BiPPfYYRo8eXW4gZjabMW7cOAQEBGDDhg2IjIxEfHw8pkyZggYNGqBNmzZYtWpV\nlYO360/cCQoKsp2tOGbMGKxYsQJt27YFACxYsACtW7dGly5dUL9+ffTu3dt20o11XWW9/PLLaN68\nOYKDg/HAAw9g2LBh5Q53E5F8Zs2ahddffx0zZ85E/fr10aVLF7Rq1QrffvstvL29odPpMHDgQHz6\n6ado0KAB1q5di88//xxeXl7w8vLCpk2bkJGRgTvuuAOBgYGYMGGC7YhGZScS2lu7dDodevbsidat\nW6NXr16YNWuW7ZvRytYbGxuLjz76CPXq1cOECRPwyCOPVFhfZcaNG4eDBw9WODOcPIdOcPY+keq8\n++67WLduHZKSkpROhYhcZN68ecjMzMTq1auVTsUlduzYgdGjR+P48eNKp0Iuwm8iiVTg5MmT2Llz\nJ65evYojR45g0aJF+Mc//qF0WkTkQp78Hc6VK1ewePFi288tkmfiIJJIBYqLi/HUU0+hXr16uP/+\n+zFo0CBMnjxZ6bSIyIVudG1bmf30008ICAjAqVOnMG3aNKXTIRfi4WwiIiIichi/iSQiIiIih/Fi\n4w7wxMMORHRjnnKwhvWLSJtcWcP4TaSDhBCK3MaNG6dYbK3H13LflY6vdN89jZKvpSzb3NPylClX\n5un8m6txECkJvV7P+BqMrfX4Sved3E+WbS5LnoA8uTJP+XAQSUREREQO4yBSEv7+/oyvwdhaj690\n38n9ZNnmsuQJyJMr85QPB5GSMBgMjK/B2FqPr3TfPY31uoRlb/XqNVA6rXJk2eay5AnIkyvzlA+v\nE+kAnU7nlomqRKQOnrTPXzs7u7K+eE4fiag8V9cwfhNJRERERA5TzSDytddeQ0hICMLDw2E0GpGS\nkuLU9Xfv3v2Gf/f19XVqPGdLTk5mfA3G1np8pftuL9Yv55Flm8uSJyBPrsxTPqq42Pju3buxefNm\npKeno1atWjh37hwuX77s1Bg7d+684d95IV4iuhmsX0SkVar4JvLkyZO4/fbbUatWLQBAgwYNEBQU\nBL1ej9mzZyMsLAydO3fGsWPHAAAbN25Ely5dEBERgd69e+PPP/8EAJjNZjz++OO49957ceedd2LZ\nsmW2GNZP6n/88QfuueceGI1GhIaGlivOL730EgwGA7p27Wpbp1qYTCbG12BsrcdXuu/2YP1yLhm2\nOSBPnoA8uTJP+ahiEPnAAw8gOzsb7dq1w9NPP43vvvsOwLVP1/7+/jhw4ACmTJmCadOmAQB69OiB\nPXv2IC0tDSNGjMDChQtt6zp69CgSExORkpKCefPmobS01LYuAPjoo4/w4IMPIj09Hfv370d4eDgA\noLCwEF27dkVGRgbuuecexMfHu/MlICJJsX4RkVapYhBZt25dpKam4r333kNgYCBGjBiBhIQEAMDI\nkSMBAI888gh2794NAMjOzsYDDzyAsLAwxMbG4vDhwwCuFdp+/fqhVq1aaNiwIRo1aoRTp06VixUd\nHY0PP/wQ8+bNw8GDB22f8L29vdGvXz8AQGRkJCwWixt6bj+l52BoOb6W+650fKX7bg/WL+eSYZsD\n8uQJyJMr85SPKuZEAkCNGjXQs2dP9OzZE6GhobYiXJb10/jUqVMxc+ZMPPzww9i+fTvMZrNtGW9v\nb9t9Ly8vlJSUlFtHjx49sGPHDmzatAkxMTGYMWMGxowZYzsUZc3l+udZxcTE2H7yyN/fHwaDwfbV\ntvWNxbZnta0Y3/3xMzIy3B4vNzcXABwaiMlSv4AYAPq/7vsD+Pt6d9zfHGtnZGSoKh9PaLt7f/fE\ntvW+2z5IChU4cuSIOHr0qK09Z84cMWXKFKHX68X8+fOFEEKsXr1aDBgwQAghhNFoFKmpqUIIIWJi\nYoTJZBJCCDF37lwRGxtrW09ISIg4fvy4EEIIX19fIYQQx48fFyUlJUIIIZYtWyamT59e7u9CCLF+\n/XoRExNTIU+VvFxE5Cb27PMy1S9AVHJjXSPyVK7ev1XxTWRBQQGmTp2K3Nxc1KxZE23atMGKFSuw\nadMmnD9/HuHh4bjtttvw8ccfA7g2AX3YsGEICAjAfffdh+PHjwP4+9cYKmN9PCkpCbGxsahVqxb8\n/PywatWqcn+vbj1ERGWxfhGRZrl0iHqL9Hq9OHv2rNJp2Cj5ciUlJSkWW+vxtdx3peMr3fdb2efV\nWL9k+CZS6W1uL1nyFEKeXJmn87l6/1bFiTVV4adpIpIV6xcReTr+drYDPOl3dImoep60z/O3s4m0\nh7+dTURERESqw0GkJK6//AXjayO21uMr3XdyP1m2uSx5AvLkyjzlo4qzs4mIyB0qztP08wtQIA8i\n8gScE+kAT5ofRUTV86R93pP6QkT24ZxIIiIiIlIdDiIlofQcDC3H13LflY6vdN/J/WTZ5rLkCciT\nK/OUDweRREREROQwzol0AOcUEWmLJ+3zntQXIrIP50QSERERkepwECkJpedgaDm+lvuudHyl+07u\nJ8s2lyVPQJ5cmad8OIgkIiIiIoepZk6kl5cXwsLCUFpaitatW2PVqlXw9fV1yrrHjx+PGTNmoH37\n9re0Hs4pItIWe/d51i8iUiNX7/eqGUT6+fkhPz8fABATE4PQ0FA8++yzCmdVHoswkbbYu8+zfhGR\nGmnyxJouXbrg2LFjAACTyYTU1FQAwJkzZxAcHAwA+PHHH9G5c2cYjUaEh4fj2LFjKCwsRL9+/WAw\nGBAaGor169fb1pGWlgYAmDx5Mjp16oSQkBCYzWZbTL1eD7PZjMjISISFheHIkSNu7HH1lJ6DoeX4\nWu670vGV7vvNYP26NbJsc1nyBOTJlXnKR3W/nV1aWoqtW7fi/vvvB3BtFK3TVfy91+XLl+OZZ57B\nqFGjUFJSgpKSEmzevBnNmjXD5s2bAQB5eXm2dVi99tprCAgIQGlpKXr16oVDhw4hJCQEOp0OgYGB\nSE1NxbvvvovY2FjEx8dXiBsTEwO9Xg8A8Pf3h8FggMlkAvD3G4ttz2pbMb7742dkZLg9Xm5uLgDA\nYrHAUaxfcr/fHGlnZGSoKh9PaLt7f/fEtvX+zdSvmyJUwsvLSxgMBhEYGCg6deokSktLhRBCmEwm\nkZqaKoQQ4vTp00Kv1wshhPjoo49Ex44dxYIFC8Qvv/wihBDi6NGjQq/Xi9mzZ4sdO3bY1l12He++\n+66IiIgQYWFhIjAwUHz66adCCCH0er3IyckRQgixZ88e0atXrwo5qujlIiI3sHefZ/0iIjVy9X6v\nmsPZtWvXRnp6Oo4fP47bbrsNX331FQCgZs2auHr1KgDg0qVLtuVHjhyJjRs3onbt2njooYeQlJSE\nNm3aID09HaGhoXjppZfwyiuvlIuRlZWFuLg4bNu2Dfv370e/fv3KrdPHxwfAtUnyJSUlru4yEXkI\n1i8i0iLVDCKtateujaVLl2LOnDkQQkCv12Pfvn0AgA0bNtiW+/XXXxEcHIypU6di4MCBOHDgAP74\n4w/cdtttePTRRzFz5kykp6eXW3deXh7q1q2LevXq4dSpU9iyZYtb+3Yrrj/Uw/jaiK31+Er33VGs\nX7dOlm0uS56APLkyT/moZk5k2Xk/BoMBrVu3xrp16zBz5kwMHz4c7733Hvr162dbbt26dVizZg1q\n1aqFoKAgzJkzBykpKZg1axZq1KiBWrVqYfny5eVihIeHw2g04q677kKLFi1w9913V5lLZfOYiIgq\nw/pFRFqkmkv8yICXyCDSFk/a5z2pL0RkH01e4oeIiIiI1I2DSEkoPQdDy/G13Hel4yvdd3I/Wba5\nLHkC8uTKPOXDQSQREREROYxzIh3AOUVE2uJJ+7wn9YWI7MM5kURERESkOhxESkLpORhajq/lvisd\nX+m+k/vJss1lyROQJ1fmKR8OIomIiIjIYZwT6YCyF/AN8PPDubw8BbMhIlfzpHmEntQXIrKPq/d7\n1fxijSysm0KXn69oHkRERERK4uFsSSg9B0PL8bXcd6XjK913cj9ZtrkseQLy5Mo85cNBJBERERE5\nzGVzIr28vBAWFoaSkhK0b98eK1euRO3ate167v79+5GTk4O+ffu6IrWbptPp/j6cDXB+EZEH8/Ly\nwtWrVxESEuIRNYxzIom0R9rrRNapUwfp6ek4ePAgvL29sXz5crueV1JSgvT0dPz73/92VWpERNWq\nU6cOALCGERFVwS2Hs++++25kZmbi/PnzGDRoEMLDw9G1a1ccPHgQAGA2mzFmzBjcfffdGDt2LObO\nnYtPP/0URqMR69atg9lsRlxcnG19ISEhOHHiBADglVdewV133YUePXpg1KhRtuWOHTuGvn37Iioq\nCvfccw+OHDkCAFi/fj1CQ0NhMBjQs2dPAEBpaSlmzZqF6OhohIeH47333nPHy+IQpedgaDm+lvuu\ndHyl+27FGuY+atnm1ZElT0CeXJmnfFx+dnZJSQn+85//oG/fvnj55ZcRGRmJL7/8EklJSRg7dizS\n09MBAD///DO+//57+Pj4YOXKlUhNTcXSpUsBAPPmzSu3Tuuldn744Qd8/vnnOHDgAIqLixEREYGo\nqCgAwIQJE7BixQq0bt0ae/fuxeTJk/Htt9/ilVdeQWJiIoKCgpD31yV63n//ffj7+yMlJQWXL1/G\n3XffjQceeAB6vd7VLw8RqRxrGBFR5Vw2iCwqKoLRaAQA3HPPPXj88cfRuXNnfP755wCAe++9F2fP\nnkV+fj50Oh0GDBgAHx8fANfmGlZ3DF8IgZ07d2LQoEHw9vaGt7c3+vfvDwAoLCzErl27MGzYMNvy\nxcXFAIDu3btj3LhxGD58OAYPHgwASExMxMGDB7FhwwYAQF5eHjIzMystwDEArI8uXrwYBoMBJpMJ\nwN+fTlzRNplMLl0/47Ot1raVO+JlZGQgNzcXwLU6AgCdOnXymBoWExNje8zf399t9csT29bH1JLP\njdomieqnlVryke31tN63WCxwC+Eivr6+FR4zGo3i119/tbVbtGgh8vLyhNlsFrGxsbbHExISxJQp\nU2ztV199VSxcuNDWbt26tbBYLGLx4sVi7ty5tsenT58u4uLiRF5enggKCqoyt71794qXX35Z6PV6\ncfbsWTFkyBCRmJhYbZ8ACPHXzYUvHRGpgK+vb4X9XOYaxppFpD2u3u/dMifSqkePHli7di2AayPl\nwMBA+Pn5VfjE7ufnh/wyF/PW6/VIS0sDAKSlpSErKws6nQ7du3fHxo0bcfnyZRQUFGDz5s225wcH\nB9s+lQshcODAAQDX5hlFR0dj3rx5CAwMRHZ2Nvr06YN33nkHJSUlAICjR4/i4sWLrn0xHHT9pzTG\n10ZsrcdXuu/XYw1zPbVt86rIkicgT67MUz4uO5xd9icCrcxmMx5//HGEh4ejbt26WLlypW3Zssvf\ne++9mD9/PoxGI1588UUMGTIEq1atQkhICDp37ox27doBAKKiojBgwACEhYWhcePGCA0NRf369QEA\na9euxaRJk/Dqq6/iypUrGDlyJMLCwvDcc8/hl19+gRACvXr1Qnh4OMLCwmCxWBAREQEhBBo1aoQv\nvvjCVS8NEUmANYyI6Mak/+3swsJC1K1bFxcvXkTPnj0RHx8Pg8Hgkli8TiSRtrjj2oruqmG8TiSR\n9vC3s6sxYcIEHD58GJcuXUJMTIzLBpBERK7AGkZEsnLrnEhXWLt2LdLT0/HTTz9h9uzZSqfjMkrP\nwdByfC33Xen4SvfdHbRSw+wlyzaXJU9AnlyZp3ykH0QSERERkftJPyfSncpOnA/w88O5vy70S0Se\nyZPmEXpSX4jIPpwTqTIswkREREQ8nC0NpedgaDm+lvuudHyl+07uJ8s2lyVPQJ5cmad8OIgkIiIi\nIodxTqQDOKeISFs8aZ/3pL4QkX1cvd/zm0giIo2w/rKOTqdDvXoNlE6HiCTHQaQklJ6DoeX4Wu67\n0vGV7rvnEbZbfv55pZOplCzbXJY8AXlyZZ7y4SCSiIiIiBzGOZEO4JwiIm3xpH3+2nVuy/bFc/pG\nRJXjnMhq+Pr62r3s9u3bsXv3blt7xYoVWL16tSvSIiKqFusXEclM+kFk2V+RqU5SUhJ27dpla0+c\nOBFjxoxxRVpOp/QcDC3H13LflY6vdN9dTSv1yxGybHNZ8gTkyZV5yscjf7Fm48aNeO2111BcXIyG\nDRti7dq1uHjxIlasWAEvLy+sWbMGy5Ytw3//+1/4+fnh2WefhclkQpcuXZCUlITc3Fy8//77uPvu\nu5XuChFpDOsXEclC+jmRfn5+yM/PL/dYbm4u/P39AQD/93//h59//hmxsbGYN28e/Pz8MGPGDAAo\n17733nsRFRWFN998E1u2bMGiRYuwdevWcuv1pPlRRFQ9V+/z7q5fnBNJpC387eybkJ2djeHDh+Pk\nyZMoLi7GHXfcYfvbjV7MwYMHAwAiIiJgsVgqXSYmJgZ6vR4A4O/vD4PBAJPJBODvr7jZZpttOdsZ\nGRnIzc0FgCprgKu5sn4BMQD0tlZycrKqXn+22Wb71trW+26rX0Jyvr6+FR7r2bOn2LhxoxBCiOTk\nZGEymYQQQpjNZhEbG2tbzmw2i7i4OCGEECaTSaSmpgohhDh9+rTQ6/UV1qvky5WUlKRYbK3H13Lf\nlY6vdN9dvc+7u34BosxNneVf6W1uL1nyFEKeXJmn87l6P5f+xJrK5OXloWnTpgCAhIQE2+OVHToS\nPJxDRCrC+kVEspB+EHnx4kW0aNHCdnvrrbdgNpsxbNgwREVFITAw0HYGZP/+/fHFF18gIiIC33//\nPYCqz4505KxJd7B+Zc342oqt9fhK993VtFK/HCHLNpclT0CeXJmnfKQ/scadeGINkbZ40j7PE2uI\ntIcXGycAyl+XSsvxtdx3peMr3XdyP1m2uSx5AvLkyjzlw0EkERERETmMh7Md4EmHtoioep60z/Nw\nNpH28DqRRETkJH+fcOPnF6BgHkTkCXg4WxJKz8HQcnwt913p+Er33dMIIWy3vLxzSqdTKVm2uSx5\nAvLkyjzlw0EkERERETmMcyId4Enzo4ioep60z3tSX4jIPrzEDxERERGpDgeRklB6DoaW42u570rH\nV7rv5H6ybHNZ8gTkyZV5yoeDSCIiIiJyGOdEOoBzioi0xZP2eU/qCxHZh3MiK+Hr66t0CkREN401\njIg8gZSDyGu/vKAtSs/B0HJ8Lfdd6fhK991VtFjD7CXLNpclT0CeXJmnfKQcRAJAYWEhevXqhcjI\nSISFheHrr78GAFgsFtx1110YPXo0OnTogGHDhqGoqAgA8MorryA6OhqhoaGYOHGibV0mkwnPP/88\nOnfujHbt2uH7779XpE9EpB2sYUQkPSEhX19fUVpaKvLy8oQQQpw+fVq0bt1aCCFEVlaW0Ol0Yteu\nXUIIIR5//HERGxsrhBDi3LlztnWMGTNGbNy4UQghhMlkEjNnzhRCCPHvf/9b9OrVq9K4kr5cRHST\nXLXPK1HDWL+ItMfV+72030RevXoVL7zwAsLDw9G7d2/k5OTgzz//BAC0aNECXbt2BQCMHj3a9ql8\n27Zt6NKlC8LCwrBt2zYcPnzYtr7BgwcDACIiImCxWNzbGSLSHNYwIpJdTaUTuFlr167FmTNnkJaW\nBi8vLwQHB+PSpUsAys83EkJAp9Ph8uXLmDx5MtLS0tCsWTPMmzfPtjwA+Pj4AAC8vLxQUlJSZdyY\nmBjo9XoAgL+/PwwGA0wmE4C/50m4ol12DoY74jE+KsR0Z38Z/1o7IyMD06ZNc2u83NxcAHD5QEyJ\nGqZU/XKkbX1MLflU1V68eLEqX7/K2te/tkrnU1Xb3fv7zbbV/Hpa77vtg6RLv+d0EV9fX7FkyRIx\ndepUIYQprWb7AAAgAElEQVQQ27ZtEzqdThw/ftx2KGj37t1CCCGeeOIJsWjRIpGbmysaN24sioqK\nRH5+vujYsaOYN2+eEOLaoaDU1FQhxLXDSnq9vtK4Sr5cSUlJisXWenwt913p+Er33VX7vBI1TJZy\nr/Q2t5cseQohT67M0/lcvd9Ldzi7pKQEPj4+ePTRR7Fv3z6EhYVh9erVaN++vW2Zdu3a4e2330aH\nDh1w4cIFTJo0CfXr18f48eMREhKCBx98EJ07d64yhhrPnLR+2mB8bcXWenyl++4KWq1h9pJlm8uS\nJyBPrsxTPtJdbHz//v2YOHEi9uzZU+nfLRYL+vfvj4MHDzo9Ni/WS6QtrtjnlaphrF9E2sOLjZex\nfPlyjBo1Cq+++uoNl5P5U3hVys53YHztxNZ6fKX77mxarmH2kmWby5InIE+uzFM+Up1Y89RTT+Gp\np5664TJ6vR4HDhxwU0ZERPZjDSMiTyLd4Wwl8XAQkbZ40j7vSX0hIvvwcDYRERERqQ4HkZJQeg6G\nluNrue9Kx1e67+R+smxzWfIE5MmVecqHg0giIiIichjnRDqAc4qItMWT9nlP6gsR2YdzIomIiIhI\ndTiIlITSczC0HF/LfVc6vtJ9J/eTZZvLkicgT67MUz4cRBIRaYROpyt3q1evgdIpEZHEOCfSAZxT\nRKQtnrTPX/sVnOv74jn9I6KKOCeSiIiIiFSHg0hJKD0HQ8vxtdx3peMr3XdyP1m2uSx5AvLkyjzl\nI8Ug0tfXFwBw/PhxfPzxx9Uub7FYEBoaCgDYt28fnnnmGZfmR0R0I6xhROSJpJgT6efnh/z8fCQn\nJyMuLg4bN2684fIWiwX9+/fHwYMHnZqHJ82PIqLqOWufV0MN45xIIu3hnMgynn/+eezYsQNGoxFL\nlizB8ePHcc899yAyMhKRkZHYvXt3heckJyejf//+AICUlBR069YNERER6N69O44ePQoASEhIwODB\ng9G3b1+0bdsWs2fPdmu/iEgbWMOIyJPUrG6BuLi4ciNZnU6H+vXrIzIyEgaDweUJlrVgwQLExsba\nPsUXFRVh69at8PHxwS+//IJRo0bhhx9+qPL57du3x44dO+Dl5YX//ve/ePHFF7FhwwYAwP79+5GR\nkQFvb2+0a9cO//znP9GsWbMK64iJiYFerwcA+Pv7w2AwwGQyAfh7noQr2mXnYLgjHuOjQkx39pfx\nr7UzMjIwbdq0W1pfamoqdDodMjMzAQCtW7dG/fr1IYRA69atK8TLzc0FcO3bQGdTvobFAND/dd+/\n3F+Uen+p6f3mSHvx4sVuq/+32r7+tVU6n6raztjftf56Wu+7on5VSlRj5MiRok2bNmLGjBli+vTp\nom3btmLIkCEiKipKzJ8/v7qnO4Wvr68QQoikpCTx8MMP2x7Pzc0Vo0ePFqGhocJgMIg6deoIIYTI\nysoSISEhFZ5z4sQJMWjQIBESEiJCQ0NF+/bthRBCfPjhh2L8+PG29fbt21d8//33FfKw4+VymaSk\nJMViaz2+lvuudHxnxL6VGuasfV4NNQyAAMR1N+VqWlWUfr/bS5Y8hZAnV+bpfK7ex6s9nJ2dnY20\ntDTExcVh0aJFSE1NxZ9//ont27cjISHBtSPcarz11lsICgrCgQMHsG/fPhQXF99w+f/5n//B/fff\nj4MHD2Ljxo0oKiqy/c3Hx8d238vLC6WlpS7L+2ZYP20wvrZiaz2+M2KzhslF6fe7vWTJE5AnV+Yp\nn2oHkadPn4a3t7etXatWLZw6dQp16tTBbbfd5tLkrmednG6Vl5eHJk2aAABWrVpVbdHMy8tD06ZN\nAQAffvjhDZcVnGxO5BFYw4iIXKPaQeSjjz6Kzp07Y968eTCbzejWrRtGjRqFwsJCdOjQwR05/nVW\nIRAeHg4vLy8YDAYsWbIEkydPxsqVK2EwGHDkyBHbZTTKPqfs/eeeew4vvPACIiIiUFpaanvc+hNg\nlcVUi7LzHRhfO7G1Ht8ZsVnD5KL0+91esuQJyJMr85SPXZf4+eGHH7Bz507odDp0794dUVFR7shN\ndZS8xE9ycrKiX6FrOb6W+650fGfFvtka5kmX9ZLlEj9Kv9/tJUuegDy5Mk/nc3UNs2sQWVpaipMn\nT6KkpMT26bZly5YuS0qtPOk/FCItudka5kn7vCyDSCJyHlfXsGov8bNs2TLMmzcPjRo1gpeXl+1x\nZ1/Im4jIFVjDiIhco9o5kYsXL8aRI0dw+PBhHDx40HYj91J6DoaW42u570rHd0Zs1rCydOVufn4B\nCudTkdLvd3vJkicgT67MUz7VfhPZsmVL1KtXzx25EBE5HWvY33jomoicqdo5kY8//jiOHj2Kfv36\n2S6TodPpMGPGDLckqCaeND+KSCtupYZ50j7vSX0hIvsoPieyZcuWaNmyJYqLi1FcXAwhhLSXjiAi\n7WENIyJyDbvOzqZreIkfbcbXct+Vjq903z3p2ztZ+qL0NreXLHkC8uTKPJ1P8W8i//zzTyxcuBCH\nDx+2/cSWTqfDtm3bXJYUEZGzsIb9zZnfwPr5BSAv75zT1kdE8qn2m8jevXtjxIgRiI2NxYoVK5CQ\nkIDAwEAsXLjQXTmqhiyf5Inob7dSwzxpn6/8OpG3tEaPeW2IPJXiFxuPiIhAWloawsLCcODAAQBA\nVFQU9u3b57Kk1MqT/kMh0opbqWGetM9zEEmkPa6uYdVeJ9J6NmOTJk2wadMmpKWl4fz58y5LiCqn\n9HWptBxfy31XOr4zYrOGyUXp97u9ZMkTkCdX5imfaudEzpkzB7m5uYiLi8PUqVORl5eHt956y6lJ\nnDp1CtOnT8fevXsREBAAb29vPPfccxg0aJBT4xCR9ri6hrF+EZFW3dTZ2W+99RamT5/ulASEEOjW\nrRsee+wxTJgwAQBw4sQJfP3115gyZUq1zy8pKUHNmtWOhZ3Ckw5tEWmZvTWsun1etvrFw9lE2qL4\n4ezKLFq0yGkJbNu2DT4+PrYCDFy7rtuUKVNQWlqKWbNmITo6GuHh4XjvvfcAXPsquUePHhg4cCA6\nduyI7du3o2fPnhg0aBDuvPNOPP/881i9ejWio6MRFhaGX3/9FQCwceNGdOnSBREREejduzf+/PNP\nAIDZbMbjjz+Oe++9F3feeSeWLVvmtP4Rkfo4q4axfhGRlt3UINKZfvzxR0RERFT6t/fffx/+/v5I\nSUlBSkoK4uPjYbFYAADp6elYunQpjhw5AiEEDhw4gBUrVuCnn37C6tWrcezYMaSkpODJJ5+0FdUe\nPXpgz549SEtLw4gRI8qdnXn06FEkJiYiJSUF8+bNQ2lpqcv77gil52BoOb6W+650fKX7Xh3WL+dT\n+za3kiVPQJ5cmad83HMc5Qauv27Z008/jZ07d8Lb2xutWrXCgQMHsGHDBgBAXl4eMjMzUbNmTURH\nR6NVq1a253Xq1AmNGzcGALRu3Rp9+vQBAISEhCApKQkAkJ2djeHDh+PkyZMoLi7GHXfcYcuhX79+\nqFWrFho2bIhGjRrh1KlTaNq0aYV8Y2JioNfrAQD+/v4wGAy2i45a31hse1bbivHdHz8jI8Pt8XJz\ncwHANuC7EdnqFxADQP/XfX8ABgCmv9rJf/1rb7v8RZc94f3mSDsjI0NV+XhC2937uye2rfftqV9O\nIapQt25d4evrW+mtRo0aVT3NYd9++63o2bNnucfOnDkj9Hq9GDp0qEhMTKzwnKSkJPHwww9X2TaZ\nTCI1NbXC33r27Ck2btwohBAiOTlZmEwmIYQQZrNZxMbG2p4fEhIijh8/XiHuDV4uIlIZZ9Sw6vZ5\n2eoXIJx4Yz0kUjtX76dVHs4uKChAfn5+pTdnHiq57777cOnSJSxfvtz2WGFhIQCgT58+eOedd1BS\nUgLg2iGbixcv3nSsvLw826fzhIQE2+OCk8OJPI47ahjrFxFpmeJzIgHgyy+/xPbt23HHHXegc+fO\niImJwcKFC/HEE0+gQ4cOiIiIQGhoKCZNmoSSkhLodLpyh5Gub5dV9m9msxnDhg1DVFQUAgMDbY/f\n6Plqcf2hHsbXRmytx1e67/Zg/XIuGbY5IE+egDy5Mk/53NQlfrRKyUv8JJeZe8T42omt9fhK992T\nLuslyyV+lN7m9pIlT0CeXJmn8yn+s4f0N0/6D4WIqudJ+7wsg0gich5VXieSiIiIiLSNg0hJKD0H\nQ8vxtdx3peMr3XdyP1m2uSx5AvLkyjzlo/h1IomIyF2cdwKOn1+A09ZFRHLinEgHeNL8KCKqnift\n857UFyKyD+dEEhEREZHqcBApCaXnYGg5vpb7rnR8pftO7ifLNpclT0CeXJmnfDiIJCIiIiKHcU6k\nA27mVyEC/PxwLi/PBdkQkat50jxCpX7Vxs8vAHl55xSJTaR1vNi4iuh0Oocv1asDf9uWSFaeN4hU\noi+e8xoSyYYn1hAA5edgaDm+lvuudHyl+07uJ8s2lyVPQJ5cmad8OIgkIiIiIoep+nC2l5cXwsLC\nbO2vvvoKLVu2dHqc5ORkxMXFYePGjTdcjoezibTlVg8FqamG8XA2kfa4+nC2qn+xpk6dOkhPT6/0\nb9YXRanJ4kRE1WENIyJPJtXhbIvFgnbt2mHcuHEIDQ1FdnY23nzzTURHRyM8PBxms9m2XPv27TFh\nwgSEhISgT58+uHTpEgAgMzMTvXr1gsFgQGRkJH799VfodDoUFBRg2LBhaN++PUaPHq1gLyun9BwM\nLcfXct+Vjq90351NyzXMXrJsc1nyBOTJlXnKR9WDyKKiIhiNRhiNRgwZMgQ6nQ6ZmZl4+umncejQ\nIfz888/IzMxESkoK0tPTkZqaih07dgC4VminTJmCQ4cOwd/fH5999hkA4NFHH8XUqVORkZGB3bt3\nIygoCEIIpKenY8mSJTh8+DB+/fVX7Ny5U8muE5EHYA0jIk+m6sPZtWvXLncoyGKxoFWrVoiOjgYA\nJCYmIjExEUajEQBQWFiIzMxMtGjRAsHBwba5SJGRkbBYLCgoKEBOTg4GDhwIAPD29ratOzo6Gk2b\nNgUAGAwGWCwWdO/evUJOMQD0f933B2AAYPqrnfzXv9e3rayfXkwmk8Ntk8l0S89nfLZlbVu5I15G\nRgZyc3MBXKs3t0p9NSwGjlewW23/1VLJ+8lZbetjasnHU+qnlVryke31tN53Rv2yh6pPrPHz80N+\nfr6tbbFY0L9/fxw8eBAAMHPmTLRt2xYTJkwo97zrl4uLi0NhYSFmzJiB9u3bIzs7u9zyycnlJ6VP\nnToVUVFRGDduXLnleGINkbbc6qR0NdUwnlhDpD28TuQN9OnTBx988AEKCwsBAL///jtOnz5d6bJC\nCPj6+qJ58+b46quvAACXL19GUVGR2/K9Fdd/SmN8bcTWenyl++5qWqph9pJlm8uSJyBPrsxTPqo+\nnF3ZWYtlH+vduzd++ukndO3aFcC1T/1r1qyBTqer8Fxre/Xq1Zg4cSJefvlleHt7Y926dTdcnojo\nZrGGEZEnU/XhbLXh4WwibeHPHjolsse8hkSy4eFsIiIiIlIdDiIlofQcDC3H13LflY6vdN/J/WTZ\n5rLkCciTK/OUj6rnRKqRo7OMAvz8XJIHEZHj3D9P0s8vwO0xicg9OCfSAZ40P4qIqudJ+7wn9YWI\n7MM5kURERESkOhxESkLpORhajq/lvisdX+m+k/vJss1lyROQJ1fmKR8OIomIiIjIYZwT6QDOKSLS\nFk/a5z2pL0RkH86JVBnrL0PodDo0qFdP6XSIiIiIFMFBpINEmdv5/Hy3xVV6DoaW42u570rHV7rv\n5H6ybHNZ8gTkyZV5yoeDSCIiIiJyGOdEOuD6387m72ITeTZPmkfoSX0hIvtock6kl5cXjEYjjEYj\nIiIicPz4cXTv3v2m17dx40YsWLCgyr8nJCRg6tSpN71+IqKyWMOISAtUOYisU6cO0tPTkZ6ejrS0\nNLRq1Qo7d+686fX1798fs2fPrvLvOp37fwrMUUrPwdByfC33Xen4Svf9ZrGG3TxZtrkseQLy5Mo8\n5aPKQWRlfH19AVzbeCaTCcOGDUP79u0xevRo2zJ6vR5msxmRkZEICwvDkSNHAJT/lL5+/XqEhobC\nYDDAZDIBuHZIOicnB3379kXbtm1vWKyJiG4GaxgReZqaSidQmaKiIhiNRgDAHXfcgc8++6zcJ+2M\njAwcPnwYQUFB6N69O3bt2oVu3bpBp9MhMDAQqampePfddxEbG4v4+HgAf39Sf+WVV5CYmIigoCDk\n5eWVW2dGRga8vb3Rrl07/POf/0SzZs0q5BYDQF+mbf0PwXofgEvaJpPJpetnfLbV2rZyR7yMjAzk\n5uYCACwWC26WWmtYTEwM9Ho9AMDf37/cQFQt21uWtvUxteRzo7ZJovpppZZ8ZHs9rfdvpX45RKiQ\nr69vlY8lJSWJ3r172x6fNGmSWLt2rRBCCL1eL3JycoQQQuzZs0f06tVLCCHEhx9+KKZMmSKEEOKp\np54SvXv3FvHx8eLs2bNCCCESEhLE+PHjbevs27ev+P777yvkAECIMjeVvnxE5CQ3u4+rsYaxXhFp\nj6v3+xruGao6l4+Pj+2+l5cXSkpKKvzt+set3n33Xbz66qvIzs5GZGQkzp07ByFEhXWWlpa6sAeO\nu/5TGuNrI7bW4yvdd1fRYg2zlyzbXJY8AXlyZZ7yUeXhbFc6duwYoqOjER0djS1btiA7O7vSSemC\nl8IgIhViDSMitVDlN5GVFcSyj9lzJqL1pwmvv//cc88hLCwMoaGh6N69O8LDwytdp9rOdiw7D4fx\ntRNb6/GV7vvNYg27ebJsc1nyBOTJlXnKhxcbdwAvNk6kLZ50gW5P6gsR2UeTFxunipSeg6Hl+Fru\nu9Lxle47uZ8s21yWPAF5cmWe8uEgkoiIiIgcxsPZDrh+jlGAnx/OlblOGxF5Fk86BOxJfSEi+7h6\nv9fc2dm3ikWYiIiIiIezpaH0HAwtx9dy35WOr3Tfyf1k2eay5AnIkyvzlA8HkURERETkMM6JdADn\nFBFpiyft857UFyKyD+dEqoysF/AlkhlPYnMO1i8idfHzC0Be3jml07hpPJztIKHQLUnB2FqPr+W+\nKx3fGvt8fj7IGZR8J8nwjvPEPGXKVXt55uefh8w4iCQiIiIih6luEOnl5QWj0Wi7LVy48KbX5evr\nCwDIycnBsGHDqlzOYrEgNDT0puO4g4nxNRlb6/GVjH0zWL+cwaR0AnYyKZ2AA0xKJ2Ank9IJ2Mmk\ndAKqobo5kXXq1EF6erpT1mWd/9O0aVOsX7/eKeskIqoK6xcRaYnqvomsil6vh9lsRmRkJMLCwnDk\nyBEAwOnTp9G7d2+EhIRg/Pjx0Ov1OHeu/CTVsp/Uf/zxR3Tu3BlGoxHh4eE4duwYAKC0tBQTJkxA\nSEgI+vTpg0uXLrm3g9VIZnxNxtZ6fCVjO5PW65djkpVOwE7JSifggGSlE7BTstIJ2ClZ6QRUQ3WD\nyKKionKHg6yfwHU6HQIDA5GamopJkyYhNjYWADBv3jz06tULhw4dwtChQ3HixIkbrn/58uV45pln\nkJ6ejtTUVDRr1gwA8Msvv2DKlCk4dOgQ/P398dlnn7m2o0TkcVi/iEhLVHc4u3bt2lUeDho8eDAA\nICIiAp9//jkAYOfOnfjyyy8BAH369EFAQMAN19+tWze89tpr+O233zB48GC0bt0aABAcHIywsDAA\nQGRkJCwWizO64zQmxtdkbK3HVzL2zWD9cgaT0gnYyaR0Ag4wKZ2AnUxKJ2Ank9IJqIbqBpE34uPj\nA+Da5PWSkhLb445cSHPkyJHo0qULNm3ahIceeggrVqxAcHCwbd3W9RcVFVX6/BgA+r/u+wMw4O+3\nU/Jf/7LNNtsuaP/1U2Mmk8ll7YyMDOTm5gKA0wdiaqhfrGBss6229l8tJ9Uz6323fZAUKuPr61vp\n43q9Xpw9e1YIIcQPP/wgTCaTEEKIp59+WixYsEAIIcQ333wjdDqdbTnrurKyskRISIgQQohjx47Z\n1jlz5kyxZMkSYbFYbH8XQojY2FhhNpsr5ABACIVuSQrG1np8Lfdd6fjW2EqVKkfjqr1+KfxWsvOW\npIIcPClPmXLVYp5wqMY4ytXrr+Geoar9rp9T9OKLL1ZYRqfT2c5cnDt3LhITExEaGooNGzagSZMm\n8PPzsy1X9jkAsG7dOoSEhMBoNOLHH3/E2LFjIYSo8EsO/GUHInIU6xcRaYn0v51dXFwMLy8veHl5\nYffu3Xj66aeRlpbmklg6nQ5Sv1hEktIBUKJUufp3Z91dv8AKRqQyrq0x/O3sapw4cQLDhw/H1atX\n4e3tjfj4eKVTIiKyC+sXEclM+m8i3UnJbyKToez5YFqOr2Rsrce3xvbUbyLdSZ5vIpOh7DveXsmQ\nI09AnlyTob085f4mUnVzIomIiIhI/fhNpAM4J5JIGfwm8tbJ800kkZbI/U2k9HMi3Y3nPBK5X8Bf\nZyzTrWIFI1ITP78b/8CA2vFwtoOEEIrckpKSFIut9fha7rvS8a2xz+XlKb3rewQl30cyvN88MU+Z\nctVinnl555QuC7eEg0giIiIichjnRDrAk+ZHEVH1PGmf96S+EJF9eHY2EREREakOB5EOsv5kWVW3\nBvXquSRu2R9XV4KW42u570rHV7rv5H6ybHNZ8gTkyZV5yodnZzuoui+Fdfn5bsmDiIiISEmcE+kA\ne64TqdT17IjI+TxpHqEn9YWI7MM5kURERESkOlINIr28vGA0GhESEgKDwYBFixbZNcJ+/fXXq10m\nJiYGn332mTPSdAml52BoOb6W+650fKX77kxarl+OkGWby5InIE+uzFM+Ug0i69Spg/T0dBw6dAhb\nt27Fli1bMG/evGqf98Ybb1S7zLWfBCMicg3WLyLyNFLNifTz80N+mRNXsrKy0KlTJ5w5cwYJCQlI\nTU3FsmXLAAAPP/wwZs2ahS1btiA2NhahoaEICQnB6tWrsWrVKsTFxUGn0yE8PBwrV67EY489hnr1\n6mHfvn04efIkFi5ciCFDhpSLzzmRRNrizPlEqqhfrE1EmsLfzr6B4OBglJaW4s8//6zwSdx6yZ35\n8+fj7bffRnp6OgDgxx9/xGuvvYbdu3ejQYMGyM3NBXBt4Hfy5Ens3LkTP/30EwYMGFChCBMROQvr\nFxHJTupBpJUjI+1t27Zh+PDhaNCgAQDA39/fto5BgwYBANq3b49Tp05V+vwYAPq/7vsDMAAw/dVO\nvm5Z67wJk8l0y+2yczCcsT7Gt799fQ6M7774GRkZmDZtmlvjWQdmFosF7uDW+hUTA71eb3uuwWBQ\nZH++Udv6mFryqaq9ePFiVb5+lbWvf22Vzqeqtrv395ttq/n1tN53V/2CkIivr2+59rFjx0TDhg2F\nEEKsXr1aTJ482fa3Xr16ie3bt1d43rJly8ScOXMqrDsmJkZs2LChylhCCAFAiGpurnpJk5KSXLJe\nxld3bK3HV7rvztyfVVG/JKD0NreXLHkKIU+uzNP5XL3fS3ViTVmnT5/GU089halTpwK4dmgoIyMD\nQghkZ2cjJSXFtmytWrVQUlICALjvvvuwfv16nDt3DgBw/vx59yd/E6yfNhhfW7G1Hl/pvruK1uqX\nI2TZ5rLkCciTK/OUj1SHs4uKimA0GnHlyhXUrFkTY8eOxfTp0wEA3bt3R3BwMDp06ID27dsjMjLS\n9rwJEyYgLCwMkZGRWL16NebMmYOePXvCy8sLERER+OCDDwCUP8ORZzsSkTOxfhGRp5Hq7GylKXl2\ndnJysqKffrQcX8t9Vzq+0n33pDOaZemL0tvcXrLkCciTK/N0Pv5iDRERERGpDr+JdACvE0mkLbJ8\ne2cPT+oLEdmH30QSERERkepwEOkgXTW3AD8/l8Qtew0oJWg5vpb7rnR8pftO7ifLNpclT0CeXJmn\nfKQ6O1sNeDiIiIiIiHMiHcI5RUTa4kn7vCf1hYjswzmRRERERKQ6HERKQuk5GFqOr+W+Kx1f6b6T\n+8myzWXJE5AnV+YpHw4iiYiIiMhhnBPpAM4pItIWT9rnPakvRGQfzokkIiIiItXhIFISSs/B0HJ8\nLfdd6fhK953cT5ZtLkuegDy5Mk/5qGIQefLkSTzyyCNo3bo1oqKi0K9fP8THx6N///6VLj9+/Hj8\n9NNPbs6SiKgi1i8i0irF50QKIdCtWzc89thjmDBhAgDgwIED+Prrr7F3715s3LhRyfTK4ZwiIm2p\nbp9n/SIiNfP4OZFJSUnw9va2FWAACAsLQ48ePVBQUIBhw4ahffv2GD16tO3vJpMJaWlpAABfX1+8\n9NJLMBgM6Nq1K/78808AwOnTpzF06FBER0cjOjoau3btAgBs374dRqMRRqMRERERKCwsBAC8+eab\niI6ORnh4OMxms5t6T0QyY/0iIi1T/GcPDx06hMjIyAqPCyGQnp6Ow4cPIygoCN27d8euXbvQrVs3\n6HQ623IXL15E165d8eqrr2L27NmIj4/HnDlz8Mwzz2D69Ono3r07Tpw4gQcffBCHDx9GXFwc3nnn\nHXTt2hUXL16Ej48PEhMTkZmZiZSUFFy9ehUDBw7Ejh070KNHjwp5xcTEQK/XAwD8/f1hMBhgMpkA\n/D1PwhXtsnMw3BGP8VEhpjv7y/jX2hkZGZg2bZpb4+Xm5gIALBYLqsP65VnvN0faixcvVuXrV1n7\n+tdW6Xyqart7f7/ZtppfT+t9e+qXUwiFLV26VEyfPr3C40lJSaJ379629qRJk8TatWuFEEKYTCaR\nmpoqhBDCx8fHtsynn34qnnzySSGEEIGBgcJgMNhuzZs3FwUFBWL+/Pmic+fOYunSpeK3334TQgjx\n7LPPCr1eb1u2TZs24oMPPqiQk5IvV1JSkmKxtR5fy31XOr7Sfa9un2f9cj6lt7m9ZMlTCHlyZZ7O\n5+r9XvFvIjt27IgNGzZU+jcfHx/bfS8vL5SUlFRYplatWrb7NWrUsC0jhMDevXvh7e1dbvnZs2fj\n4SCXsToAACAASURBVIcfxubNm9G9e3d88803AIAXXnih3CEptbF+2mB8bcXWenyl+14d1i/nU/s2\nt5IlT0CeXJmnfGooncB9992Hy5cvIz4+3vbYgQMHsGPHjlta7wMPPIClS5fa2hkZGQCAY8eOoWPH\njnjuuefQqVMnHDlyBH369MEHH3xgm1/0+++/4/Tp07cUn4g8H+sXEWmZ4oNIAPjiiy/w3//+F61b\nt0ZISAjmzJmDoKCgcnOHqlJ2GZ1OZ2svXboU+/btQ3h4ODp27Ij33nsPALBkyRKEhoYiPDwc3t7e\n6Nu3L3r37o1Ro0aha9euCAsLw/Dhw1FQUOCazt6ksvMdGF87sbUeX+m+24P1y7lk2OaAPHkC8uTK\nPOWj+CV+ZKLkJTKSk5MV/Qpdy/G13Hel4yvdd0+6LI4sfVF6m9tLljwBeXJlns7n6v2eg0gHyFKE\nicg5PGmf96S+EJF9PP46kUREREQkHw4iJaH0HAwtx9dy35WOr3Tfyf1k2eay5AnIkyvzlA8HkZKw\nnp3J+NqKrfX4Sved3E+WbS5LnoA8uTJP+XAQKQnrr2gwvrZiaz2+0n0n95Nlm8uSJyBPrsxTPhxE\nEhEREZHDOIiUhNt+B5PxVRVb6/GV7ju5nyzbXJY8AXlyZZ7y4SV+HGDPxYOJyLN4Solk/SLSJl4n\nkoiIiIhUhYeziYiIiMhhHEQSERERkcM4iCQiIiIih3EQaYf//Oc/uOuuu9CmTRssWLDAaevV6/UI\nCwuD0WhEdHQ0AODcuXPo3bs32rZtiwceeKDc9ajeeOMNtGnTBnfddRcSExNtj6empiI0NBRt2rTB\nM888U2W8xx9/HI0bN0ZoaKjtMWfGu3z5MkaMGIE2bdqgS5cuOH78eLXxzWYzmjdvDqPRCKPRiC1b\ntrgkfnZ2Nu6991507NgRISEhWLp0qVv7X1V8d/X/0qVL6Ny5MwwGAzp06IAXXnjBbf2vKra7+m5V\nWloKo9GI/v37u3XbK81V9etGlN7fHCXLeyM3NxdDhw5F+/bt0aFDB+zdu1eVub7xxhvo2LEjQkND\nMWrUKFy+fFkVeSr5f+DKlSvRtm1btG3bFqtWrXI4z1mzZqF9+/YIDw/H4MGDceHCBcXzBAAIuqGS\nkhJx5513iqysLFFcXCzCw8PF4cOHnbJuvV4vzp49W+6xWbNmiQULFgghhJg/f76YPXu2EEKIH3/8\nUYSHh4vi4mKRlZUl7rzzTnH16lUhhBCdOnUSe/fuFUII0bdvX7Fly5ZK43333XciLS1NhISEuCTe\n22+/LSZNmiSEEOKTTz4RI0aMqDa+2WwWcXFxFXJ1dvw//vhDpKenCyGEyM/PF23bthWHDx92W/+r\niu+u/gshRGFhoRBCiCtXrojOnTuLHTt2uK3/lcV2Z9+FECIuLk6MGjVK9O/fXwjh3ve+UlxZv25E\n6f3NUbK8N8aOHSvef/99IcS1fSk3N1d1uWZlZYng4GBx6dIlIYQQw4cPFwkJCarIU6n/A8+ePSvu\nuOMOcf78eXH+/HnbfUfyTExMFKWlpUIIIWbPnq2KPIUQgoPIauzatUv06dPH1n7jjTfEG2+84ZR1\n6/V6cebMmXKPtWvXTpw8eVIIca0Qt2vXTgghxOuvvy7mz59vW65Pnz5i9+7dIicnR9x11122xz/+\n+GMxceLEKmNmZWWVe2M6M16fPn3Enj17hBDXCtztt99ebXyz2SxiY2MrLOeq+FYDBw4UW7dudXv/\nr4+vRP8LCwtFVFSUOHTokNv7Xza2O/uenZ0t7r//frFt2zbx8MMPCyHc/95XgivrlyOU3t9uRJb3\nRm5urggODq7wuNpyPXv2rGjbtq04d+6cuHLlinj44YdFYmKiavJU4v/Ajz76SDz11FO250ycOFF8\n/PHHDuVZ1ueffy4effRRVeTJw9nV+P3339GiRQtbu3nz5vj999+dsm6dTodevXohKioK8fHxAIBT\np06hcePGAIDGjRvj1KlTAICcnBw0b968Qh7XP96sWTOH8nNmvLKvVc2aNVG/fn2cO3eu2hyWLVuG\n8PBwPPHEE7ZDCa6Mb7FYkJ6ejs6dOyvSf2v8Ll26uLX/V69ehcFgQOPGjW2HGt3V/8piu7Pv06dP\nx5tvvokaNf4ueWp477uaK+uXvZTe36ojy3sjKysLgYGBeOyxxxAREYHx48ejsLBQdbk2aNAAzz77\nLFq2bImmTZvC398fvXv3Vl2eVq7O6+zZs1Wu62Z98MEHeOihh1SRJweR1XDlBXp37tyJ9PR0bNmy\nBW+//TZ27NhRIbY7LxDs7ngAMGnSJGRlZSEjIwNBQUF49tlnXRqvoKAAQ4YMwZIlS+Dn51fub+7o\nf0FBAYYOHYolS5bA19fXrf2vUaMGMjIy8Ntvv+G7775DUlJSub+7sv/Xx05OTnZb3zdt2oRGjRrB\naDRWedFdJd777qB0n5Te36oj03ujpKQEaWlpmDx5MtLS0lC3bl3Mnz+/3DJqyPXYsWNYvHgxLBYL\ncnJyUFBQgDVr1pRbRg15VkateZX12muvwdvbG6NGjVI6FQAcRFarWbNmyM7OtrWzs7PLjdRvRVBQ\nEAAgMDAQ//jHP5CSkoLGjRvj5MmTAIA//vgDjRo1qjSP3377Dc2bN0ezZs3w22+/lXu8WbNmdufg\njHjW16NZs2Y4ceIEgGsF78KFC2jQoMEN4zdq1Mi24z755JNISUlxWfwrV65gyJAhGDNmDAYNGuT2\n/lvjjx492hbfnf23ql+/Pvr164fU1FS3b39r7H379rmt77t27cLXX3+N4OBgjBw5Etu2bcOYMWMU\nf++7gyvrV3WU3t/sIdN7o3nz5mjevDk6deoEABg6dCjS0tLQpEkTVeW6b98+dOvWDQ0bNkTNmjUx\nePBg7N69W3V5Wrl6Wzds2NBp+2FCQgL+/e9/Y+3atbbHlM6Tg8hqREVF4ZdffoHFYkFxcTE+/fRT\nDBgw4JbXe/HiReTn5wMACgsLkZiYiNDQUAwYMAArV64EcO0sKWvxHTBgAD755BMUFxcjKysLv/zy\nC6Kjo9GkSRPUq1cPe/fuhRACq1evtj3HHs6IN3DgwArr2rBhA+6///5q4//xxx+2+1988YXtbDRn\nxxdC4IknnkCHDh0wbdo0t/e/qvju6v+ZM2dsh4uLioqwdetWGI1Gt/S/qtjWwu3qvr/++uvIzs5G\nVlYWPvnkk/9v787jo6ru/4+/xkBAZFhUlNUGCSCQZGYSDDsEEajVCKKgVQTcUBRUirjU9tugxQWJ\niqkLUhSlruBSEeEXFIKIaCRkWC0IZAAVXIA0IQRDwvn9gZkSYQYGksydm/fz8ciDnDt3OZ9MbubD\nOZ97LxdddBGzZ88O++9+daiqv1/HE+7z7URF0u9G06ZNadWqFZs2bQLg448/plOnTqSmplqqrxdc\ncAFffPEFxcXFGGP4+OOP6dixo+X6Wa463usBAwaQmZlJfn4+e/fuZdGiRQwcODCkfi5cuJAnnniC\nf//739StW7dC/8Paz6AVk2KMMeajjz4y7dq1M23atDGPPPJIpexz69atxuVyGZfLZTp16uTf7+7d\nu02/fv1M27ZtTf/+/StcGTV58mTTpk0b0759e7Nw4UL/8pUrV5q4uDjTpk0bM27cuIDHvOaaa0yz\nZs1M7dq1TcuWLc1LL71Uqcc7cOCAGTp0qImNjTVdunQxeXl5QY8/c+ZMc/3115v4+HiTkJBgBg0a\n5C9wruzjL1u2zDgcDuNyuYzb7TZut9ssWLCg2uI/1vE/+uijaot/zZo1xuPxGJfLZeLj482UKVOM\nMZX7+xbo+IGOXV2xHykrK8t/BW51/u6HU1X8/TqecJ9vJyMSfje8Xq/p3LmzSUhIMFdccYXJz8+3\nZF8ff/xx07FjRxMXF2dGjBhhSkpKLNHPcH4GvvTSSyY2NtbExsaaWbNmhdTPmTNnmtjYWHPeeef5\nz6fyq6vD2U9jjNGzs0VEREQkZJrOFhEREZGQKYkUERERkZApiRQRERGRkCmJFBEREZGQKYkUERER\nkZApiRQRERGRkCmJFBEREZGQKYkUERERkZApiRQRERGRkCmJFBEREZGQKYkUERERkZApiRQRERGR\nkCmJFBEREZGQKYkUERERkZApiRQRERGRkCmJFBEREZGQKYkUERERkZApiRQRERGRkCmJFBEREZGQ\nKYkUERERkZApiRQRERGRkCmJFBEREZGQKYkUERERkZApiZQabdSoUfz1r38N+LrT6cTn81Vfh0RE\nRCKEkkiJKDExMXzyyScVls2aNYtevXodd9tjredwOHA4HAG3KSwsJCYmBjh+wnmqYmJiWLx4cZXt\nX0REpDIpiZSIcrykL5xKS0tPaXuHw4ExppJ6IyIiUrWURIqtPPbYY8TGxtKgQQM6derE+++/D8DX\nX3/NmDFjWLFiBU6nkzPPPNO/zZ49e7jsssto0KABXbt2ZevWrf7XTjvtNLZs2cKLL77I66+/zpQp\nU3A6nQwaNAg4PHo4ZcoUEhIScDqdlJWVcdppp1XYx5EjmD///DOXXXYZjRs35qyzzqJ3794YY7j+\n+uvZvn07qampOJ1Opk6dWh0/LhERkZNWK9wdEAlVsNG62NhYPvvsM5o2bcrbb7/N8OHD2bJlCx06\ndOCFF17gn//8J8uWLauwrzfffJOFCxfi8XgYOXIkDz74IG+88YZ/HYfDwejRo1mxYgWtWrXioYce\nqnDMN998kwULFnD22WcTFRV1VJ+OHD1NT0+nVatW/PzzzwB88cUXOBwOZs+ezWeffcbMmTO56KKL\nTunnIyIiUh00EikRxRjD4MGDady4sf/rjjvu8CdpV111FU2bNgVg2LBhtG3bli+//NK/7W85HA6G\nDBlC586diYqK4rrrrsPr9QY9/m+3v/POO2nRogV16tQ5bv+jo6PZuXMnPp+PqKgoevToccKxi4iI\nWImSSIkoDoeDf//73+zdu9f/9dxzz/mTu1dffRWPx+NPMNetW8fu3buD7vPcc8/1f3/66aezb9++\nkPrUqlWr465T3r+JEycSGxvLgAEDaNOmDY8//nhIxxIREbEKJZES8coTtO3bt3PLLbfw7LPPsmfP\nHvbu3UtcXJz/9VO9ICfQ9r9dXq9ePfbv3+9v79y5079O/fr1mTp1Klu2bOGDDz7gySefZMmSJZXS\nPxERkeqkJFJso6ioiNNOO42zzz6bQ4cO8fLLL7Nu3Tr/6+eeey7ffvstBw8e9C8L5Wroc889t8IF\nM4G43W5ee+01ysrKWLhwIZ9++qn/tQ8//JDNmzdjjKFBgwZERUVx2mmn+fe/ZcuWE+6PiIhIOCmJ\nlIhXfuFKhw4dmDBhAt26daNp06asW7eOnj17+tfr168fnTp1omnTppxzzjkVtv3t/o71/U033cSG\nDRto3LgxQ4YMCdifadOmMW/ePBo3bszrr7/OFVdc4X9t8+bN9O/fH6fTSffu3bnjjjvo06cPAA88\n8AB///vfady4MU8++eSp/VBERESqmMPoxnQiIiIiEiKNRIqIiIhIyJREioiIiEjIlESKiIiISMj0\nxJoQ6BYsIjWPysZFRI5NI5EhMsZE/NfIkSPD3gfFYt9Y7BKHMUoeRUSCURIpIiIiIiFTElkDxcTE\nhLsLlUaxWI9d4hARkeCURNZAKSkp4e5CpVEs1mOXOEREJDglkSIiIiISMiWRIiIiIhIyPfYwBA6H\nQ1dsitQgOudFRALTSKSIiIiIhMwySeTkyZOJi4vD5XLh8XjIzs6u1P336NEj6Ov169ev1ONZWVZW\nVri7UGkUi/XYJQ4REQnOEk+sWbFiBfPnzyc3N5fatWuzZ88efvnll0o9xvLly4O+rqfRiIiIiJw4\nS4xE7tq1i7PPPpvatWsDcOaZZ9KsWTNiYmK47777SEhIoEuXLmzZsgWAefPm0bVrVxITE+nfvz8/\n/vgjAGlpadx444307duXNm3akJGR4T9G+Ujjzp076d27Nx6Ph/j4+ArJ5V/+8hfcbjfdunXz79OO\n7HQLFsViPXaJQ0REgrNEEjlgwAB27NhB+/btueOOO/j000+Bw6ODjRo1Ys2aNYwdO5a7774bgF69\nevHFF1+watUqrr76aqZMmeLf16ZNm8jMzCQ7O5tJkyZRVlbm3xfA66+/zu9//3tyc3NZvXo1LpcL\ngKKiIrp164bX66V3797MmDGjOn8EIiIiIhHFEtPZZ5xxBjk5OSxbtowlS5Zw9dVX8+ijjwLwxz/+\nEYBrrrmG8ePHA7Bjxw6GDRvGrl27KCkp4fzzzwcOJ4qXXnoptWvX5qyzzuKcc87hhx9+oHnz5v5j\nJScnc+ONN3Lw4EEGDx7sTyKjo6O59NJLAUhKSmLRokXH7OuoUaP8T+Ro1KgRbrfbP/JSXgtm9Xb5\nMqv051TaXq/X/58LK/TnVNpPP/10RP4+2en3y+v1kp+fD4DP50NERIIwFjR37lxz2WWXmZiYGJOX\nl2eMMaakpMScffbZxhhj+vTpY+bNm2eMMSYrK8ukpKQYY4xJS0szU6dO9e8nLi7ObNu2zRhjTP36\n9f3Ld+7caWbMmGHcbrd59dVXj3p9zpw5ZtSoUUf1y6I/rpAtWbIk3F2oNIrFeuwShzH2OedFRKqC\nJaazN23axDfffONv5+bm+kf73nrrLf+/3bt3B6CgoMA/ujhr1iz/duYE7ue2fft2mjRpws0338xN\nN91Ebm5uJUUROexUs6ZYrMcucYiISHCWmM7et28f48aNIz8/n1q1atG2bVumT5/Ohx9+yN69e3G5\nXNStW5c33ngDOHwBzdChQ2ncuDEXXXQR27ZtAw5PZwe6yrp8+ZIlS5g6dSq1a9fG6XTy6quvVnj9\nePsREREREYs/saZ169bk5ORw5plnhrsrgH2eXpGVlWWb0SLFYj12iQPsc86LiFQFS0xnB6LRQBER\nERFrsvRIpNVoVEKkZtE5LyISmKVHIkVERETEmpRE1kBH3s8v0ikW67FLHCIiEpySSBEREREJmWoi\nQ6D6KJGaRee8iEhgGokUERERkZApiayB7FSzplisxy5xiIhIcEoiQ1T+NJtQvho0ahDubouIiIhU\nKtVEhsDhcEDaSWyYdmLP9RYRa1FNpIhIYBqJFBEREZGQKYmsgexUs6ZYrMcucYiISHCWSSKjoqLw\neDwkJCQwZMgQ9u3bV2n7vuWWW/j6668rbX8iIiIiNZ1laiKdTieFhYUAjBo1ivj4eCZMmBDmXlWk\nmkiRmkU1kSIigVlmJPJIXbt2ZcuWLQCkpKSQk5MDwM8//0zr1q0BWL9+PV26dMHj8eByudiyZQtF\nRUVceumluN1u4uPjmTNnjn8fq1atAuD222/nwgsvJC4ujrS0NP8xY2JiSEtLIykpiYSEBDZu3FiN\nEYuIiIhEFsslkWVlZSxatIi4uDjgf7fU+a0XXniBu+66i9zcXHJycmjRogULFy6kRYsWeL1e1q5d\ny8CBA/37KDd58mS++uorVq9ezdKlS1m3bp1/nSZNmpCTk8OYMWOYOnVqNUQbHnaqWVMs1mOXOERE\nJLha4e5AueLiYjweD9999x0xMTHcdtttQdfv3r07kydP5ttvv2XIkCHExsaSkJDAPffcw/33389l\nl11Gz549j9rurbfeYsaMGZSWlrJz5042bNjgT1iHDBkCQGJiIu++++6xD/w+0OjX7+sCTYGYX9u+\nX//9bftX5R+uKSkpYW1brT+n0vZ6vZbqz6m0vV6vpfpTE3+/vF4v+fn5APh8PkREJDDL1UQWFxcz\ncOBAxo8fzxVXXEH//v159NFH6dy5M99++y29evUiLy8PgLy8PD788EMyMjKYPn06ffv2JT8/n/nz\n5zNjxgz69evHX//6V/r27Ut6ejqNGzdmwIABrFy5koYNG3LDDTfQt29fRowYQevWrcnJyeHMM89k\n5cqVTJw4kSVLllToo2oiRWoW1USKiARmuens008/nWeeeYYHH3wQYwwxMTGsXLkSgLlz5/rX27p1\nK61bt2bcuHEMGjSINWvWsHPnTurWrct1113HPffcQ25uboV9FxQUcMYZZ9CgQQN++OEHFixYUK2x\niYiIiNiFZZLII+sW3W43sbGxvP3229xzzz08//zzJCYmsnv3bv96b7/9NnFxcXg8HtavX8/IkSNZ\nu3at/2Kbhx56iL/85S8VjuFyufB4PFxwwQVcd911x5zuLu/Lseow7cJONWuKxXrsEoeIiARnmens\nSGCX6eysrCx/HVikUyzWY5c4QNPZIiLBKIkMgV2SSBE5MUoiRUQCs8x0toiIiIhEDiWRNZCdatYU\ni/XYJQ4REQnOMveJjBhpoW/ibOis9G6IiIiIhJNqIkOg+iiRmkXnvIhIYJrOFhEREZGQKYmsgexU\ns6ZYrMcucYiISHBKIkVEREQkZKqJDIHqo0RqFp3zIiKBaSRSREREREKmJLIGslPNmmKxHrvEISIi\n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\np5+47bbb/HWQrVu3xuv1Yoxhx44dZGdn+9etXbs2paWlAFx00UXMmTOHPXv2ALB3797q73yY2WWU\nCBSLFdklDhERCS6iaiLLL5A5ePAgtWrVYsSIEYwfPx6AHj160Lp1azp27EiHDh1ISkrybzd69GgS\nEhJISkpi9uzZPPjgg/Tp04eoqCgSExN56aWXgIpXaOtqbREREZHAIqomMtzsUh9lp5o1xWI9dokD\n7HPOi4hUhYidzhYRERGR8NFIZAg0KiFSs+icFxEJTCORIiIiIhIyJZE1UPlNlu1AsViPXeIQEZHg\nlESKiIiISMhUExkC1UeJ1Cw650VEAtNIpIiIiIiETElkiBwOR6V/NWjUoFpjsFPNmmKxHrvEISIi\nwUXUE2ssIa3yd1mYVlj5OxURERGpQqqJDIHD4aiSJJI0VHclYkGqiRQRCUzT2SIiIiISMkskkbt2\n7eKaa64hNjaWzp07c+mllzJjxgxSU1OPuf4tt9zC119/Xc29tA871awpFuuxSxwiIhJc2GsijTFc\nccUV3HDDDbz55psArFmzhg8++CDgNjNmzKiu7omIiIjIMYR9JHLJkiVER0czevRo/7KEhAR69erF\nvn37GDp0KB06dGD48OH+11NSUli1ahUA9evX5y9/+Qtut5tu3brx448/AvDTTz9x1VVXkZycTHJy\nMp9//jkAS5cuxePx4PF4SExMpKioCIAnnniC5ORkXC4XaWlp1RR9eKSkpIS7C5VGsViPXeIQEZHg\nwp5Erlu3jqSkpKOWG2PIzc1l2rRpbNiwga1bt/oTQYfD4V9v//79dOvWDa/XS+/evf2jlHfddRfj\nx48nOzubuXPncvPNNwOQnp7Oc889R25uLp999hl169YlMzOTzZs3k52dTW5uLjk5OSxbtqwaohcR\nERGJTGGfzj4yIfyt5ORkmjdvDoDb7cbn89G9e/cK60RHR3PppZcCkJSUxKJFiwD4+OOPK9RNFhYW\nUlRURI8ePRg/fjzXXXcdQ4YMoUWLFmRmZpKZmYnH4wGgqKiIzZs306tXr6M79T7Q6Nfv6wJNgZhf\n275f/w21/avyWrLykZyqapcvq67jVWXb6/Vy9913W6Y/p9J++umncbvdlulPTfz98nq95OfnA+Dz\n+RARkcDCfoufxYsXM2nSJJYuXVpheVZWFunp6cybNw+AcePGceGFFzJixAj69u1Leno6iYmJOJ1O\nCgsP32dx7ty5zJ8/n5dffpkmTZrw3XffER0dfdQx169fz/z583nuuef4f//v/zFjxgzatWtXYUr9\nWOxyi5+srCzbTDkqFuuxSxygW/yIiAQT9unsiy66iF9++aXCxTJr1qw55enkAQMG8Mwzz/jbXq8X\ngC1bttCpUyfuvfdeLrzwQjZu3MjAgQN56aWX/PWR3333HT/99NMpHd/K7PIBD4rFiuwSh4iIBBf2\nJBLgvffe4+OPPyY2Npa4uDgefPBBmjVrFnSqu9yR65Q/RhDgmWeeYeXKlbhcLjp16sSLL74IwLRp\n04iPj8flchEdHc0ll1xC//79ufbaa+nWrRsJCQkMGzaMffv2VU2wIiIiIjYQ9unsSKLpbOtRLNZj\nlzhA09kiIsFYYiRSRERERCKLRiJDYJeRSBE5MRqJFBEJTCORIiIiIhIyjUSG4EQu9DkZzoZOCvIL\nqmTfx2KnmjXFYj12iQM0EikiEoxGIkNkjKn0r+pMIOF/tzuyA8ViPXaJQ0REglMSWQOVP5HDDhSL\n9dglDhERCU5JpIiIiIiETElkDWSnZwIrFuuxSxwiIhKcLqwJQVVdWCMi1qU/kSIix1Yr3B2IJPow\nERERETlM09kiIiIiEjIlkSIiIiISMiWRJ2DhwoVccMEFtG3blscffzysfYmJiSEhIQGPx0NycjIA\ne/bsoX///rRr144BAwZUuMXKo48+Stu2bbngggvIzMz0L8/JySE+Pp62bdty1113+Zf/8ssvXH31\n1bRt25auXbuybds2/2uvvPIK7dq1o127drz66qsh9/3GG2/k3HPPJT4+3r8s3H3Py8ujS5cutG3b\nlmuuuYaDBw+eVBxpaWm0bNkSj8eDx+NhwYIFlo8DYMeOHfTt25dOnToRFxfHM888A0Tm+xIolkh9\nb0RELM9IUKWlpaZNmzYmLy/PlJSUGJfLZTZs2BC2/sTExJjdu3dXWDZx4kTz+OOPG2OMeeyxx8x9\n991njDFm/fr1xuVymZKSEpOXl2fatGljDh06ZIwx5sILLzRffvmlMcaYSy65xCxYsMAYY8yzzz5r\nxowZY4wx5s033zRXX321McaY3bt3m/PPP9/s3bvX7N271/99KD799FOzatUqExcXF/a+5+fnG2OM\nGTp0qHnrrbeMMcbcdttt5vnnnz+pONLS0kx6evpR61o5DmOM2blzp8nNzTXGGFNYWGjatWtnNmzY\nEJHvS6BYIvW9ERGxOiWRx/H555+bgQMH+tuPPvqoefTRR8PWn5iYGPPzzz9XWNa+fXsrR1c7AAAE\nPklEQVSza9cuY8zhD9L27dsbY4x55JFHzGOPPeZfb+DAgWbFihXm+++/NxdccIF/+RtvvGFuvfVW\n/zpffPGFMcaYgwcPmrPPPtsYY8zrr79ubrvtNv82t956q3njjTdC7n9eXl6F5CucfT906JA5++yz\nTVlZmTHGmBUrVlR4r0OJIy0tzUydOvWo9awex28NGjTILFq0KGLfl2PFYpf3RkTEajSdfRzfffcd\nrVq18rdbtmzJd999F7b+OBwOLr74Yjp37syMGTMA+OGHHzj33HMBOPfcc/nhhx8A+P7772nZsqV/\n2/K+/3Z5ixYt/DEdGW+tWrVo2LAhu3fvDrivUxXOvu/Zs4dGjRpx2mmnHbWvk5GRkYHL5eKmm27y\nT/9GUhw+n4/c3Fy6dOkS8e9LeSxdu3YFIv+9ERGxIiWRx2G1e0MuX76c3NxcFixYwLPPPsuyZcsq\nvO5wOCzX5xNVnX2v7OOMGTOGvLw8vF4vzZo1Y8KECZW6/0AqK459+/Zx5ZVXMm3aNJxO51HHiKT3\nZd++fVx11VVMmzaN+vXrR/x7IyJiVUoij6NFixbs2LHD396xY0eFEYfq1qxZMwCaNGnCFVdcQXZ2\nNueeey67du0CYOfOnZxzzjnA0X3/9ttvadmyJS1atODbb789ann5Ntu3bwegtLSU//73v5x11llV\n9nMIV99btGjBmWeeSX5+PocOHfLvq0WLFicVxznnnONPtm6++Ways7MjJo6DBw9y5ZVXcv311zN4\n8GAgct+X8liGDx/ujyWS3xsREStTEnkcnTt35ptvvsHn81FSUsJbb73F5ZdfHpa+7N+/n8LCQgCK\niorIzMwkPj6eyy+/nFdeeQU4fIVo+Yfn5ZdfzptvvklJSQl5eXl88803JCcn07RpUxo0aMCXX36J\nMYbZs2czaNAg/zbl+5o7dy79+vUDYMCAAWRmZpKfn8/evXtZtGgRAwcOPOWYwtl3h8NB3759mTNn\nzlHHD9XOnTv937/33nv+K7etHocxhptuuomOHTty9913+5dH4vsSKJZIfW9ERCwvjPWYEeOjjz4y\n7dq1M23atDGPPPJI2PqxdetW43K5jMvlMp06dfL3Zffu3aZfv36mbdu2pn///hWump48ebJp06aN\nad++vVm4cKF/+cqVK01cXJxp06aNGTdunH/5gQMHzNChQ01sbKzp0qWLycvL87/20ksvmdjYWBMb\nG2tmzZoVcv+vueYa06xZM1O7dm3TsmVL89JLL4W971u3bjXJyckmNjbWDBs2zJSUlIQcx8yZM831\n119v4uPjTUJCghk0aJD/ohQrx2GMMcuWLTMOh8O4XC7jdruN2+02CxYsiMj35VixfPTRRxH73oiI\nWJ2enS0iIiIiIdN0toiIiIiETEmkiIiIiIRMSaSIiIiIhExJpIiIiIiETEmkiIiIiIRMSaSIiIiI\nhOz/A1GJ/ija8SlHAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 22
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Number of books by format"
},
{
"cell_type": "code",
"collapsed": false,
"input": "query = \" \".join([\"select COUNT(FORM) AS formatcnt, FORM as format, Source\",\n\"from( select case WHEN gut_files.FORMAT LIKE '%epub%' then 'epub'\", \n\"else case WHEN gut_files.FORMAT LIKE '%pdf%' THEN 'pdf' \",\n\"else case WHEN gut_files.format like '%text%' THEN 'text' END END END AS FORM , 'Gutenberg' as Source\",\n\"from gut_files) a\",\n\"group by FORM , Source\",\n\"union SELECT count('PDF') as formatcnt,'pdf' as format, 'Hathitrust'as Source from ht_books where Access='allow' group by 'PDF','Hathitrust' \",\n\"union select count('epub') as formatcnt,'epub' as format, 'Openlibrary' as Source from ol_books group by 'epub','Openlibrary' \",\n\"union select count('text') as formatcnt, 'text' as format, 'Openlibrary' as Source from ol_books group by 'text','Openlibrary' \",\n\"union select count('pdf') as formatcnt, 'pdf' as format, 'Openlibrary' as Source from ol_books group by 'pdf','Openlibrary' \"\n])\ncursor.execute(query)\nformatres = list(cursor.fetchall())\ndfformatres = pd.DataFrame(formatres,columns=['Count','Format','Source'])\n",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": "dfformatres = dfformatres.pivot_table('Count', rows='Format', cols='Source', aggfunc=sum)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": "dfformatres.plot(kind=\"bar\", stacked=True)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 25,
"text": "<matplotlib.axes.AxesSubplot at 0x33f7650>"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEaCAYAAADg2nttAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVHX++PHXIKRk4AAaKEONypCieElBqnXFCFAfK1km\nZF6wdE3bJdesr7b9fGiuKbpWtiXtt5YC6YJmF7RvISzJ6m6KSdpNSzJQLkopFzFFBD6/P4izko4I\nDp5hfD8fj3nA+Zw5Z97nDDNvPpfzOQallEIIIYS4BCe9AxBCCGH/JFkIIYRokSQLIYQQLZJkIYQQ\nokWSLIQQQrRIkoUQQogWXTJZPPTQQ3h7exMUFHTBumeffRYnJyfKy8u1spUrV2KxWOjXrx+ZmZla\neV5eHkFBQVgsFubNm6eVnz17ltjYWCwWC6GhoRw+fFhbl5KSQkBAAAEBAaxfv14rLygoYMSIEVgs\nFu6//37OnTvXtiMXQghx+dQlbN++XX3++edq4MCBzcqPHDmioqKilNlsVidOnFBKKfXNN9+owYMH\nq9raWlVQUKD69u2rGhoalFJKBQcHq9zcXKWUUmPHjlUff/yxUkqpdevWqblz5yqllEpLS1OxsbFK\nKaVOnDih+vTpoyoqKlRFRYXq06ePqqysVEopNWnSJLVhwwallFJz5sxRL7/88qUOQQghhA1csmYx\ncuRIPDw8Lih/7LHHWL16dbOy9PR0Jk+ejIuLC2azGX9/f3Jzczl69CjV1dWEhIQAMH36dD744AMA\nNm/eTFxcHAATJ04kOzsbgK1btxIZGYnRaMRoNBIREcHHH3+MUopt27Zx3333ARAXF6ftSwghRPtp\ndZ9Feno6JpOJQYMGNSsvLS3FZDJpyyaTiZKSkgvKfX19KSkpAaCkpAQ/Pz8AnJ2d6datGydOnLC6\nr/LycoxGI05OThfsSwghRPtxbs2TT58+zYoVK8jKytLK1FWaLcRgMLTr84UQQjS62Pd6q2oWhw4d\norCwkMGDB9O7d2+Ki4sZNmwYZWVl+Pr6UlRUpD23uLgYk8mEr68vxcXFF5RDY83gyJEjANTV1VFV\nVYWXl9cF+yoqKsLX1xdPT08qKytpaGjQ9uXr63vJA3aEx5IlS3SPQR7y3nS0h7w3bXtY06pkERQU\nRFlZGQUFBRQUFGAymfj888/x9vYmOjqatLQ0amtrKSgoID8/n5CQEHx8fHB3dyc3NxelFKmpqdx9\n990AREdHk5KSAsCmTZsIDw8HIDIykszMTCorK6moqCArK4uoqCgMBgOjR4/mnXfeARpHTE2YMKE1\nh9AhFRYW6h2CsELeG/sl741tXTJZTJ48mdtvv52DBw/i5+fH66+/3mz9+U09gYGBxMTEEBgYyNix\nY0lMTNTWJyYmMmvWLCwWC/7+/owZMwaAmTNncuLECSwWC2vXriUhIQEAT09PFi9eTHBwMCEhISxZ\nsgSj0QjAqlWreO6557BYLFRUVDBz5kzbnQ0hhBAXZVCXqnd0YAaD4ZJVqo4kJyeHsLAwvcMQFyHv\njf2S96ZtrH13SrIQQgihsfbdec1N9+Hp6YnBYJBHB354enrq/WekycnJ0TsEYYW8N7bVqqGzjqCi\nokJqHB2cDIsW4uq75pqhpHmq45P3UIj2I81QQggh2kyShRBXQNrF7Ze8N7YlycIOPfPMMwwcOJDB\ngwczdOhQdu/erXdIQohrnPRZ2JmdO3eyYMEC/vWvf+Hi4kJ5eTlnz56lZ8+ebd5nXV0dzs6OM5bB\n3t9DIToy6bPoII4dO0b37t1xcXEBGof69uzZk+zsbG699VYGDRrEzJkzqa2tBcBsNms3oNqzZw+j\nR48GYOnSpUybNo3f/OY3xMXF8eOPP3LPPfcwZMgQhgwZwq5duwB44403GDFiBEOHDmXOnDnavFtC\nCHE+SRZ2JjIykqKiIm655Rb+8Ic/sH37dmpqanjwwQfZuHEjX375JXV1dbz88svApYeRfvvtt2Rn\nZ/Pmm28SHx/P6NGj2bdvH3v37iUwMJADBw6wceNGPv30U/bu3YuTkxNvvvnm1TpUhyDt4vZL3hvb\nkmRhZ7p27UpeXh6vvPIKPXr0IDY2lldeeYXevXvj7+8PNN70afv27Zfcj8FgIDo6ms6dOwOwbds2\n5s6dq61zd3cnOzubvLw8hg8fztChQ/nkk08oKCho3wMUQnRIjtOQ7UCcnJwYNWoUo0aNIigoiHXr\n1jVbr5TSahTOzs5a01FNTU2z511//fUXbPdrcXFxrFixwpbhX1Nk7iH7Je+NbUnNws4cPHiQ/Px8\nbXnv3r307duXw4cPc+jQIQBSU1MZNWoU0NhnsWfPHgDeffddbbtfJ4bw8HCt6aq+vp6TJ08SHh7O\npk2b+OmnnwAoLy/X7i8ihBDnk2RhZ06dOsWMGTMYMGAAgwcP5ttvv2XVqlW89tprTJo0iUGDBuHs\n7MycOXMAWLJkCfPmzSM4OBhnZ2etxtE0j1KTF154gW3btjFo0CCGDx/OgQMH6N+/P8uXLycyMpLB\ngwcTGRnJsWPHdDnujkraxe2XvDe2JUNnRYdjT++hTINtv+S9aRur352SLERHI++hEO1HrrMQQgjR\nZpIshMPydHfX/d4bNruHh7u73qezw5E+C9uSobPCYVVUV9PejVU5QFg7vwaAobr6KryKENZJn4Xo\ncC73PTQYDO2eLK4WAxe/TkYIW5M+CyGEEG0myUKIK5CjdwDCKumzsC1JFuKicnJy8PPz0zsMIYSd\nuGSyeOihh/D29iYoKEgre+KJJ+jfvz+DBw/m3nvvpaqqSlu3cuVKLBYL/fr1IzMzUyvPy8sjKCgI\ni8XCvHnztPKzZ88SGxuLxWIhNDSUw4cPa+tSUlIICAggICCA9evXa+UFBQWMGDECi8XC/fffz7lz\n567sDADu7p7tOpLF3d3zsmNJS0tjxIgR3HDDDXh7exMaGqpN09ESJycnfvjhh7aeBtEGYXoHIKyS\nC/JsTF3C9u3b1eeff64GDhyolWVmZqr6+nqllFILFy5UCxcuVEop9c0336jBgwer2tpaVVBQoPr2\n7asaGhqUUkoFBwer3NxcpZRSY8eOVR9//LFSSql169apuXPnKqWUSktLU7GxsUoppU6cOKH69Omj\nKioqVEVFherTp4+qrKxUSik1adIktWHDBqWUUnPmzFEvv/zyRWO3dmgXKwcUqHZ8XPI0a9asWaO8\nvb3Vu+++q06dOqWUUmrv3r1qypQp6uzZsy1ubzAY1Pfff39Zr9WSbdu2KZPJZJN9nTt3zib7aXK5\n55P2fVOv6uNyj1mIK2X1u7OlDQsKCpoli/O99957asqUKUoppVasWKESEhK0dVFRUWrnzp2qtLRU\n9evXTyt/++231cMPP6w9Z9euXUqpxi+U7t27K6WUeuutt9ScOXO0bR5++GH19ttvq4aGBtW9e3ct\nWe3cuVNFRUW17oDtNFlUVlaqrl27qvfee8/qc0aNGqX+8Y9/aMuvv/66+s1vfqOUUmrkyJHKYDCo\nrl27qhtuuEFt3LhRKaXUli1b1ODBg5XRaFS33367+vLLL7Xtb775ZrVmzRo1aNAg1a1bNxUbG6tq\namqUUv9NFitWrFDdu3dXZrNZvfnmm9q2NTU1asGCBeqmm25S3t7eas6cOerMmTPatr6+vmrVqlXK\nx8dHTZ8+XZ05c0ZNnz5deXh4qP79+6tVq1a1ORnZU7LYJsnCbm3btk3vEDoka39rV3SdxWuvvcbk\nyZMBKC0tJTQ0VFtnMpkoKSnBxcUFk8mklfv6+lJSUgJASUmJ1i7u7OxMt27dOHHiBKWlpc22adpX\neXk5RqMRJyenC/Z1MTNmzMBsNgNgNBoZMmTIlRxuu9q5cydnz57l7rvvtvqcX08OeL7t27fj5OTE\nl19+SZ8+fYDGGWtnzpzJhx9+yPDhw0lNTSU6OpqDBw/i4uKCwWDgnXfeYevWrXTu3Jk77riD5ORk\nHn74YaDxrn1N78fOnTsZN24cw4cPJyAggEWLFlFQUMAXX3yBs7MzDzzwAMuWLdOmOy8rK6OiooIj\nR45QX1/P0qVLOXLkCAUFBZw6dYqxY8de8sZNLWnqvGxqarC2rD3/l59hNl5u7/03LUPzuY4u9/iv\n5eV9+/bZVTz2upyTk0NycjKA9n15US1lGWs1i+XLl6t7771XW/7jH/+o3njjDW155syZatOmTWrP\nnj3qrrvu0sq3b9+ufve73ymllBo4cKAqKSnR1vXt21cdP35crVmzRi1fvlwr/8tf/qKeffZZdfz4\nceXv76+VHzlyxGqtx9qhXawcO6hZpKamKh8fn2Zlt912mzIajcrV1VVt375dhYWFqaSkJG39+TUL\npRqboQ4dOqQtz5kzRy1evLjZPm+55Ra1fft2pZS6oLbwP//zP1qNbtu2bcrZ2VmdPn1aWx8TE6P+\n8pe/qIaGBtW1a9dmr/Xpp5+q3r17a9ted911zZrO+vTpozIzM7Xlf/zjHw5Rs7haj8s9ZiGulLW/\ntTbVLJKTk/noo4/Izs7Wynx9fSkqKtKWi4uLMZlM+Pr6UlxcfEF50zZHjhyhV69e1NXVUVVVhZeX\nF76+vs3+MywqKuLOO+/E09OTyspKGhoacHJyori4GF9f37Ycgt3x8vLi+PHj2rEBfPrppwD4+fm1\n6d7Yhw8fZv369bz44ota2blz5ygtLdWWfXx8tN9dXV2brfPw8MDV1VVbvvnmmzl69CjHjx/n9OnT\nDBs2TFunlGoWY48ePbjuuuu05dLS0majq86vOQoh7F+rh85mZGTw17/+lfT0dLp06aKVR0dHk5aW\nRm1tLQUFBeTn5xMSEoKPjw/u7u7k5uailCI1NVVraomOjiYlJQWATZs2ER4eDjTehzozM5PKykoq\nKirIysoiKioKg8HA6NGjeeedd4DGEVMTJky44pNgD2677TY6d+7MBx98YPU5Xbt25eeff9aWW7r3\nxE033cRTTz1FRUWF9jh16hSxsbGXFVNFRQWnT5/Wlg8fPkyvXr3o3r07rq6u7N+/X9tvZWUlJ0+e\n1J776yamnj17Nvtn4vzfO7IcvQMQVsl1FjZ2qerI/fffr3r27KlcXFyUyWRSSUlJyt/fX910001q\nyJAhasiQIdpoJqWUeuaZZ1Tfvn3VLbfcojIyMrTyPXv2qIEDB6q+ffuq+Ph4rbympkZNmjRJ+fv7\nqxEjRqiCggJt3Wuvvab8/f2Vv7+/Sk5O1sp/+OEHFRISovz9/VVMTIyqra1tVVXqYuXYQTOUUkqt\nXr1aeXt7q02bNqmTJ0+q+vp6tXfvXuXh4aH+9a9/qaeeekqFhYWp06dPq/z8fOXv79+sGcrHx6dZ\nU8+ePXuUn5+fys3NVQ0NDerUqVPqww8/VNXV1Uqpxmao7Oxs7flLlixRU6dOVUr9txnq8ccfV7W1\ntWr79u2qa9eu6rvvvlNKKTVv3jwVExOjfvzxR6WUUsXFxWrr1q3atr9uYlq4cKEaPXq0qqioUMXF\nxWrw4MHKz8/vss7Lr13u+eQqNA9tk2YouyUd3G1j9bvzKsdx1bQmWbi5efySMNrn4ebmcdlxv/nm\nmyokJERdf/31qkePHmrEiBHq1VdfVbW1ter48eMqMjJSubm5qd/85jdq6dKlauTIkdq2f//731XP\nnj2V0WhU77zzjlJKqYyMDBUcHKyMRqPq2bOniomJ0Ybl/jpZLF26VE2bNk0p1fhB8/PzU88884zq\n3r27uvnmm5v1SdXU1Kg///nPqk+fPsrd3V31799fvfjii822Pd/PP/+spk2bpoxGowoMDFTLly9X\nffv2vezzcj57ShZX6yHJQlwt1v7WZCJBoYuXX36ZjRs3sm3btlZvKxMJCtF+ZCJBoatjx47xn//8\nh4aGBr777juee+457rnnHr3DumI5egcgrJI+C9uS+1mIq6K2tpY5c+ZQUFCA0Whk8uTJPPLII3qH\nJYS4TNIMJTocaYYSov1IM5QQQog2k2QhxBXI0TsAYZX0WdiWJAshhBAtkj4L0eFIn4UQ7Uf6LIQQ\nQrSZJAsHNWPGDBYvXmx1vZubG4WFhVcvIAeVo3cAwirps7AtSRaAu9G9fW+ranRvMQaz2dxsFl9o\nnN135MiRLW57sedd6t4XANXV1drc9S0llitlNpv55JNP2m3/Qoj2JxflAdVV1bC0Hfe/tLrF57T0\n5a6nuro6nJ3b/qfiyP1EYXoHIKySe3DbltQsOoiEhAT8/f1xd3dnwIAB2lTmBw4cYO7cuezcuRM3\nNzc8PT21bcrLy/nd736Hu7s7oaGh/PDDD9o6JycnDh06xCuvvMJbb73F6tWrcXNz06aPN5vNrF69\nmkGDBuHm5kZ9fT1OTk7N9nF+jeT48eP87ne/w8PDAy8vL37729+ilGLatGkcOXKE8ePH4+bmxpo1\na67G6RJC2JgkCztyqf++/f39+fe//83JkydZsmQJU6dOpaysjP79+/P3v/+d2267jerqasrLy7V9\npaWlsXTpUioqKvD39+epp55qtk+DwcDs2bOZMmUKCxcupLq6mvT0dG19WloaH3/8MZWVlXTq1OmC\nmM6vDT377LP4+flx/PhxfvzxR1auXInBYCA1NZWbbrqJDz/8kOrqah5//HFbnCq7kaN3AMIq6bOw\nLUkWdkIpxYQJE/Dw8NAef/jDH7Qv4/vuu0+7q11MTAwWi4Xc3Fxt218zGAzce++9DB8+nE6dOjFl\nyhT27dt3ydf/9faPPvoovr6+dO7cucX4r7vuOo4ePUphYSGdOnXijjvuuOxjF0LYP0kWdsJgMJCe\nnt7srnaJiYnal/j69esZOnSolki+/vprTpw4ccl9ent7a7+7urpy6tSpVsV0/m1QrWmK74knnsDf\n35/IyEj69u3LqlWrWvVaHVWY3gEIq6TPwrYkWdixpi/iI0eO8Pvf/55169ZRXl5ORUUFAwcO1NZf\nace4te1/XX799dc3u83q0aNHtefccMMNrFmzhkOHDrF582aee+457V4VenXcu9B4MZsjPFxsfG6E\naC0ZDdUB/Pzzzzg5OdG9e3caGhpYv349X3/9tbbe29ub4uJizp07h4tL49dKa0YfeXt7N+u4tmbI\nkCG8+eabLF++nKysLLZv305ISAgAH374If369aNv3764u7vTqVMnnJyctP0fOnSIO++8szWHfcXO\nQbuOcgOgEDC382sA55a2/2s4mpycHKld2JAkC8Ctm9tlDW+9kv23RVMHcv/+/VmwYAG33XYbTk5O\nTJ8+nd/85jfa88LDwxkwYAA+Pj506tSJH3/88aJDcc9fPv/3mTNnMmnSJDw8PBg9ejTvvffeReN5\n4YUXiIuLY926dUyYMKHZzYu+//574uPj+emnn7T+llGjRgHw5JNPEh8fz//8z/+wePFiHnvssTad\nDyGEfmRuKNHhtGZuqHavWVwtS2VuKHF1yNxQQggh2kyShRBXolDvAIQ1cp2FbUmyEEII0aJLJouH\nHnoIb29vgoKCtLLy8nIiIiIICAggMjKSyspKbd3KlSuxWCz069ePzMxMrTwvL4+goCAsFgvz5s3T\nys+ePUtsbCwWi4XQ0FAOHz6srUtJSSEgIICAgADWr1+vlRcUFDBixAgsFgv3338/586du7IzIMSV\nMOsdgLBGRkLZ1iWTxYMPPkhGRkazsoSEBCIiIjh48CDh4eEkJCQAsH//fjZs2MD+/fvJyMjgkUce\n0TpJ5s6dS1JSEvn5+eTn52v7TEpKwsvLi/z8fObPn8/ChQuBxoS0bNkydu/eze7du3n66aepqqoC\nYOHChSxYsID8/Hw8PDxISkqy7RkRQghxgUsmi5EjR+Lh4dGsbPPmzcTFxQEQFxenTWiXnp7O5MmT\ncXFxwWw24+/vT25uLkePHqW6ulobjz99+nRtm/P3NXHiRG2K7q1btxIZGYnRaMRoNBIREcHHH3+M\nUopt27Zx3333XfD6QuiiUO8AhDXSZ2Fbrb7OoqysTJtGwtvbm7KyMgBKS0sJDQ3VnmcymSgpKcHF\nxQWTyaSV+/r6UlJSAkBJSYk2pYSzszPdunXjxIkTlJaWNtumaV/l5eUYjUbtYq/z93UxM2bM0O7Z\nYDQaGTJkSGsPV9ippi+CpqYGa8uawl9+mm283N77b1qm+UVml3v81/Lyvn377Coee13OyckhOTkZ\nQPu+vJgWr7MoLCxk/PjxfPXVVwB4eHhQUVGhrff09KS8vJz4+HhCQ0OZMmUKALNmzWLs2LGYzWYW\nLVpEVlYWADt27GD16tVs2bKFoKAgtm7dSq9evQC02khycjI1NTXaLKnLly/n+uuvJy4ujtDQUPLz\n8wEoKipi3LhxWmzNDkyus3BYcp2FEO3HZtdZeHt7c+zYMaBxbqAbb7wRaPwvv6ioSHtecXExJpMJ\nX19fiouLLyhv2ubIkSNA4w12qqqq8PLyumBfRUVF+Pr64unpSWVlJQ0NDdq+fH19W3sI4iLOv5vd\nihUr+P3vfw80/rPg5OSknXMhxLWp1ckiOjqalJQUoHHE0oQJE7TytLQ0amtrKSgoID8/n5CQEHx8\nfHB3dyc3NxelFKmpqdoNds7f16ZNmwgPDwcgMjKSzMxMKisrqaioICsri6ioKAwGA6NHj+add965\n4PWvhKd7+95W1dO95duqNklOTiYoKIiuXbvSs2dPHnnkEa1zvz2dP/3Hn//8Z1599dV2f02HUKh3\nAMIa6bOwrUsmi8mTJ3P77bfz3Xff4efnx+uvv641KQUEBPDJJ5+waNEiAAIDA4mJiSEwMJCxY8eS\nmJiofQElJiYya9YsLBYL/v7+jBkzBmick+jEiRNYLBbWrl2rjazy9PRk8eLFBAcHExISwpIlSzAa\njQCsWrWK5557DovFQkVFBTNnzrzik1BRXY2CdntUVF/evFPPPvssixYt4tlnn+XkyZPs2rWLw4cP\nExER0WGGCNfX17fq+XV1de0UiRDClmRuqKay9oyFltubT548ia+vL6+//ro22gsaZ5zt3bs3q1at\n4vDhw3z99dc4Ozvz0UcfYbFYeP311xk0aBDQOMggPj6eHTt2cMMNNzB//nzi4+MBWLp0Kfv378fV\n1ZX333+fm266iZSUFIYNGwZA7969SUpK4s4772Tp0qUcOnSI1NRUCgsL6dOnD//7v//L0qVLUUqx\nYMECFixYoO3366+/xtXVlc2bN/P8888TFBTEo48+yrfffourqysTJ07kueee02bEdXJy4qWXXmLt\n2rXU1dUxbtw4unTp0uyWq9HR0dx555386U9/uvB8Sp+FEO1G5oayc59++ik1NTXce++9zcq7du3K\nuHHjyMrKwmAwsHnzZmJiYqioqOCBBx5gwoQJ1NfX09DQwPjx4xk6dCilpaVkZ2ezdu3aZhdHbtmy\nhcmTJ1NVVUV0dDR//OMfLxrLxe4/kZOTw/fff09mZiarVq3ShjlD4xDoSZMmUVVVxQMPPECnTp14\n4YUXOHHiBDt37iQ7O5vExMRm+0tPT2f37t0cOHCAuLg43n77be0P9Pjx42RnZ2uDJYQQ+pNkYSeO\nHz9O9+7dtWHB5+vZsyfHjx8HYPjw4dx777106tSJxx57jJqaGnbu3Mlnn33G8ePH+X//7//h7OxM\n7969mTVrFmlpadp+Ro4cyZgxYzAYDEydOpUvvvjiorFc7L+KJUuW4OrqysCBA3nwwQd5++23tXW3\n33470dHRAHTp0oVbb72VkJAQnJycuPnmm5k9ezb/+te/mu3vySefxGg00rlzZ4KDg+nWrZuWgNLS\n0hg9ejQ9evRo5VnUQaHeAQhrpM/CtuR+Fnaie/fuHD9+nIaGhgsSRmlpKd27dwdodv2JwWDAZDJR\nWlqKwWCgtLS02UWU9fX1/Pa3v9WWz7/N6vXXX09NTc1FX+9izr/F6k033dRsuPL5MQEcPHiQxx57\njLy8PE6fPk1dXR3Dhw+3uj9ovFjzjTfe4K677uKNN95g/vz5LcYkhLh6pGZhJ2677TY6d+7Mu+++\n26z81KlTZGRkcNdddwE0G1Lc0NCgDR/28/Ojd+/eze7hffLkST788EPgym9t2jTEuen384cs/3rf\nc+fOJTAwkO+//56qqiqeeeaZC4be/nqbqVOnkp6ezhdffMG3335rk1FuV4VZ7wCENTI3lG1JsrAT\n3bp1Y8mSJcTHx7N161bOnTtHYWEhMTEx+Pn5MXXqVJRS5OXl8f7771NXV8fatWvp0qULoaGhBAcH\n4+bmxurVqzlz5gz19fV8/fXX7NmzB7jyztHly5dz5swZvvnmG5KTk4mNjbX63FOnTuHm5sb111/P\nt99+y8svv9zi/k0mE8OHD2f69Oncd999dO7c+YriFULYliQLwMPNDQO028PD7fJuq/rEE0+wYsUK\nHn/8cbp160ZoaCg333wz2dnZXHfddRgMBu6++242bNiAp6cnb775Ju+99x6dOnWiU6dOfPjhh+zb\nt48+ffrQo0cPZs+ezcmTJ4H/3qL1fNZqG79+rsFgYNSoUfj7+3PXXXfxxBNPaDWdi+13zZo1vPXW\nW7i7uzN79mzuv/9+q7d0PV9cXBxfffUV06ZNu6zzZRcK9Q5AWCN9FrYlQ2c7kKeffprvv/+e1NRU\nvUNpFzt27GDq1KnNpqq/GLsaOlvI1WmKWipDZ1vr/Lm0xOWTobMOwJG/LM6dO8fatWu1aUY6DLPe\nAQhrJFHYliSLDuRiTT6O4MCBA3h4eFBWVnbRi/CEEPqTZijR4UgzlLgc0gzVNtIMJYQQos0kWQhx\nJcx6ByCskVqFbUmyEEII0aJrbroPDw8Ph+wkvpb8+r7wuipEahd2SvosbOuaSxbl5eV6h9Bq8kcv\nhNDbNTcaSlw75H4WQrSejIYSQgjRZpIsOgCZ48aOFeodgLBGPje2JclCCCFEi6TPQjgs6bMQovWk\nz0IIIUSbSbLoAKTt1Y4V6h2AsEY+N7YlyUIIIUSL2pwsVq5cyYABAwgKCuKBBx7g7NmzlJeXExER\nQUBAAJGRkVRWVjZ7vsVioV+/fmRmZmrleXl5BAUFYbFYmDdvnlZ+9uxZYmNjsVgshIaGNrshTkpK\nCgEBAQSczxDGAAAck0lEQVQEBLB+/fq2HkKHIRfk2TGz3gEIa+RzY1ttShaFhYW8+uqrfP7553z1\n1VfU19eTlpZGQkICERERHDx4kPDwcBISEgDYv38/GzZsYP/+/WRkZPDII49oHShz584lKSmJ/Px8\n8vPzycjIACApKQkvLy/y8/OZP38+CxcuBBqvwF62bBm7d+9m9+7dPP30082SkhBCCNtrU7Jwd3fH\nxcWF06dPU1dXx+nTp+nVqxebN28mLi4OaLyf8gcffABAeno6kydPxsXFBbPZjL+/P7m5uRw9epTq\n6mpCQkIAmD59urbN+fuaOHEi2dnZAGzdupXIyEiMRiNGo5GIiAgtwTgqaXu1Y4V6ByCskc+NbbVp\nbihPT08WLFjATTfdhKurK1FRUURERFBWVoa3tzcA3t7elJWVAVBaWkpoaKi2vclkoqSkBBcXF0wm\nk1bu6+tLSUkJACUlJfj5+TUG6exMt27dOHHiBKWlpc22adrXxcyYMQOz2QyA0WhkyJAhWtW06Q9J\nlh17WVP4y0+zjZfbe/9NyzSfI8xezq89L+/bt8+u4rHX5ZycHJKTkwG078uLadN1FocOHWL8+PHs\n2LGDbt26MWnSJCZOnEh8fDwVFRXa8zw9PSkvLyc+Pp7Q0FCmTJkCwKxZsxg7dixms5lFixaRlZUF\nwI4dO1i9ejVbtmwhKCiIrVu30qtXLwCtNpKcnExNTQ1PPfUUAMuXL8fV1ZUFCxY0PzC5zuKaJ9dZ\nCNF6Nr3OYs+ePdx+++14eXnh7OzMvffey86dO/Hx8eHYsWMAHD16lBtvvBForDEUFRVp2xcXF2My\nmfD19aW4uPiC8qZtjhw5AkBdXR1VVVV4eXldsK+ioqJmNQ0hhBC216Zk0a9fP3bt2sWZM2dQSvHP\nf/6TwMBAxo8fT0pKCtA4YmnChAkAREdHk5aWRm1tLQUFBeTn5xMSEoKPjw/u7u7k5uailCI1NZW7\n775b26ZpX5s2bSI8PByAyMhIMjMzqayspKKigqysLKKioq74RNizC5pUhP0o1DsAYY18bmyrTX0W\ngwcPZvr06QwfPhwnJyduvfVWZs+eTXV1NTExMSQlJWE2m9m4cSMAgYGBxMTEEBgYiLOzM4mJidoN\niBITE5kxYwZnzpxh3LhxjBkzBoCZM2cybdo0LBYLXl5epKWlAY1NW4sXLyY4OBiAJUuWYDQar/hE\nCCGEsE7mhhIOS/oshGg9mRtKCCFEm0my6ACk7dWOFeodgLBGPje2JclCCCFEi6TPQjgs6bMQovWk\nz0IIIUSbSbLoAKTt1Y4V6h2AsEY+N7YlyUIIIUSLpM9COCzpsxCi9aTPQgghRJtJsugApO3VjhXq\nHYCwRj43tiXJQgghRIukz0I4LOmzEKL1pM9CCCFEm0my6ACk7dWOFeodgLBGPje2JclCCCFEi6TP\nQjgs6bMQovWkz0IIIUSbSbLoAKTt1Y4V6h2AsEY+N7YlyUIIIUSLpM9COCzpsxCi9aTPQgghRJtJ\nsugApO3VjhXqHYCwRj43tiXJQgghRIvanCwqKyu577776N+/P4GBgeTm5lJeXk5ERAQBAQFERkZS\nWVmpPX/lypVYLBb69etHZmamVp6Xl0dQUBAWi4V58+Zp5WfPniU2NhaLxUJoaCiHDx/W1qWkpBAQ\nEEBAQADr169v6yF0GGFhYXqHIKwx6x2AsEY+N7bV5mQxb948xo0bx4EDB/jyyy/p168fCQkJRERE\ncPDgQcLDw0lISABg//79bNiwgf3795ORkcEjjzyidaDMnTuXpKQk8vPzyc/PJyMjA4CkpCS8vLzI\nz89n/vz5LFy4EIDy8nKWLVvG7t272b17N08//XSzpCSEEML22pQsqqqq2LFjBw899BAAzs7OdOvW\njc2bNxMXFwdAXFwcH3zwAQDp6elMnjwZFxcXzGYz/v7+5ObmcvToUaqrqwkJCQFg+vTp2jbn72vi\nxIlkZ2cDsHXrViIjIzEajRiNRiIiIrQE46ik7dWOFeodgLBGPje25dyWjQoKCujRowcPPvggX3zx\nBcOGDWPt2rWUlZXh7e0NgLe3N2VlZQCUlpYSGhqqbW8ymSgpKcHFxQWTyaSV+/r6UlJSAkBJSQl+\nfn6NQf6SjE6cOEFpaWmzbZr2dTEzZszAbDYDYDQaGTJkiFY1bfpDkmXHXtYU/vLTbOPl9t5/0zKN\nx6T3+exIy/v27bOreOx1OScnh+TkZADt+/Ji2nSdxZ49e7jtttv49NNPCQ4O5k9/+hNubm689NJL\nVFRUaM/z9PSkvLyc+Ph4QkNDmTJlCgCzZs1i7NixmM1mFi1aRFZWFgA7duxg9erVbNmyhaCgILZu\n3UqvXr0AtNpIcnIyNTU1PPXUUwAsX74cV1dXFixY0PzA5DqLa55cZyFE69n0OguTyYTJZCI4OBiA\n++67j88//xwfHx+OHTsGwNGjR7nxxhuBxhpDUVGRtn1xcTEmkwlfX1+Ki4svKG/a5siRIwDU1dVR\nVVWFl5fXBfsqKipqVtMQQghhe21KFj4+Pvj5+XHw4EEA/vnPfzJgwADGjx9PSkoK0DhiacKECQBE\nR0eTlpZGbW0tBQUF5OfnExISgo+PD+7u7uTm5qKUIjU1lbvvvlvbpmlfmzZtIjw8HIDIyEgyMzOp\nrKykoqKCrKwsoqKiruws2LkLmlSE/SjUOwBhjXxubKtNfRYAL774IlOmTKG2tpa+ffvy+uuvU19f\nT0xMDElJSZjNZjZu3AhAYGAgMTExBAYG4uzsTGJiYmMTAZCYmMiMGTM4c+YM48aNY8yYMQDMnDmT\nadOmYbFY8PLyIi0tDWhs2lq8eLFWq1myZAlGo/GKToIQQohLk7mhhMOSPgshWk/mhhJCCNFmkiw6\nAGl7tWOFegcgrJHPjW1JshBCCNEi6bMQDkv6LIRoPemzEEII0WaSLDoAaXu1Y4V6ByCskc+NbUmy\nEEII0SLpsxAOS/oshGg96bMQQgjRZpIsOgBpe7VjhXoHIKyRz41tSbIQQgjRIumzEA5L+iyEaD3p\nsxBCCNFmkiw6AGl7tWOFegcgrJHPjW1JshBCCNEi6bMQDkv6LIRoPemzEEII0WaSLDoAaXu1Y4V6\nByCskc+NbUmyEEII0SJnvQMQLQsLC9M7BGGNWe8AOiZPd3cqqqv1DsMmPNzcKD95Uu8w2p0kCyHE\nVVdRXY2jdNcbHCTptUSaoToAaXu1Y4V6ByCsydE7AAcjyUIIIUSLrihZ1NfXM3ToUMaPHw9AeXk5\nERERBAQEEBkZSWVlpfbclStXYrFY6NevH5mZmVp5Xl4eQUFBWCwW5s2bp5WfPXuW2NhYLBYLoaGh\nHD58WFuXkpJCQEAAAQEBrF+//koOoUOQPgs7ZtY7AGFNmN4BOJgrShYvvPACgYGBjRc/AQkJCURE\nRHDw4EHCw8NJSEgAYP/+/WzYsIH9+/eTkZHBI488ol30MXfuXJKSksjPzyc/P5+MjAwAkpKS8PLy\nIj8/n/nz57Nw4UKgMSEtW7aM3bt3s3v3bp5++ulmSUkIIYTttTlZFBcX89FHHzFr1izti3/z5s3E\nxcUBEBcXxwcffABAeno6kydPxsXFBbPZjL+/P7m5uRw9epTq6mpCQkIAmD59urbN+fuaOHEi2dnZ\nAGzdupXIyEiMRiNGo5GIiAgtwTgq6bOwY4V6ByCsydE7AAfT5tFQ8+fP569//SsnzxsyVlZWhre3\nNwDe3t6UlZUBUFpaSmhoqPY8k8lESUkJLi4umEwmrdzX15eSkhIASkpK8PPzawzS2Zlu3bpx4sQJ\nSktLm23TtK+LmTFjBmazGQCj0ciQIUO0Jp2mL2BZduxlTeEvP802Xm7v/Tct03hMep9PWy1D45d5\n2Hm/Y+Plfe28/2bLdnZ+W7Ock5NDcnIygPZ9eTFtmhvqww8/5OOPP2bdunXk5OTw7LPPsmXLFjw8\nPKioqNCe5+npSXl5OfHx8YSGhjJlyhQAZs2axdixYzGbzSxatIisrCwAduzYwerVq9myZQtBQUFs\n3bqVXr16AWi1keTkZGpqanjqqacAWL58Oa6urixYsKD5gcncUNc8mRvKfhkMBscZOosDvje2mhvq\n008/ZfPmzfTu3ZvJkyfzySefMG3aNLy9vTl27BgAR48e5cYbbwQaawxFRUXa9sXFxZhMJnx9fSku\nLr6gvGmbI0eOAFBXV0dVVRVeXl4X7KuoqKhZTUMIIYTttSlZrFixgqKiIgoKCkhLS+POO+8kNTWV\n6OhoUlJSgMYRSxMmTAAgOjqatLQ0amtrKSgoID8/n5CQEHx8fHB3dyc3NxelFKmpqdx9993aNk37\n2rRpE+Hh4QBERkaSmZlJZWUlFRUVZGVlERUVdcUnwp5Jn4UdK9Q7AGFNjt4BOBibXMHdNBpq0aJF\nxMTEkJSUhNlsZuPGjQAEBgYSExNDYGAgzs7OJCYmatskJiYyY8YMzpw5w7hx4xgzZgwAM2fOZNq0\naVgsFry8vEhLSwMam7YWL15McHAwAEuWLMFoNNriMIQQQlgh97MQDkv6LOyX9FnYL7mfhRBCiDaT\nZNEBSJ+FHSvUOwBhTY7eATgYSRZCCCFaJH0WwmFJn4X9kj4L+yV9FkIIIdpMkkUHIH0WdqxQ7wCE\nNTl6B+BgJFkIIYRokfRZCIclfRb2S/os7Jf0WQghhGgzSRYdgPRZ2LFCvQMQ1uToHYCDkWQhhBCi\nRdJnIRyW9FnYL+mzsF/SZyGEEKLNJFl0ANJnYccK9Q5AWJOjdwAORpKFEEKIFkmfhXBY0mdhv6TP\nwn5Jn4UQQog2k2RxhTzd3TEYDA7x8HR31/t0djyFegcgrMnROwAHY5N7cF/LKqqr2706nQOEtfNr\nABiqq6/CqwghOiJJFh1AmN4BCOvMegfQMbnQ2NbvCFz0DuAqkWQhhLjqzgE4SBf3OYdJe5cmfRYd\nQI7eAQjrCvUOQFiXo3cADkWShRBCiBa1KVkUFRUxevRoBgwYwMCBA/nb3/4GQHl5OREREQQEBBAZ\nGUllZaW2zcqVK7FYLPTr14/MzEytPC8vj6CgICwWC/PmzdPKz549S2xsLBaLhdDQUA4fPqytS0lJ\nISAggICAANavX9+WQ+hQwvQOQFhn1jsAYV2Y3gE4lDYlCxcXF55//nm++eYbdu3axbp16zhw4AAJ\nCQlERERw8OBBwsPDSUhIAGD//v1s2LCB/fv3k5GRwSOPPKJd9DF37lySkpLIz88nPz+fjIwMAJKS\nkvDy8iI/P5/58+ezcOFCoDEhLVu2jN27d7N7926efvrpZklJCCGE7bUpWfj4+DBkyBAAbrjhBvr3\n709JSQmbN28mLi4OgLi4OD744AMA0tPTmTx5Mi4uLpjNZvz9/cnNzeXo0aNUV1cTEhICwPTp07Vt\nzt/XxIkTyc7OBmDr1q1ERkZiNBoxGo1ERERoCcZR5egdgLCuUO8AhHU5egfgUK54NFRhYSF79+5l\nxIgRlJWV4e3tDYC3tzdlZWUAlJaWEhoaqm1jMpkoKSnBxcUFk8mklfv6+lJSUgJASUkJfn5+jUE6\nO9OtWzdOnDhBaWlps22a9nUxM2bMwGw2A2A0GhkyZAhhYWHAfyfnu9LlJk1LYR18uYmtzo/ey5rC\nX36abbzc3vtvWqbxmPQ+n7Za/uWIaN+/6H3tvP//Lut9Pq9kOScnh+TkZADt+/JirmhuqFOnTjFq\n1CgWL17MhAkT8PDwoKKiQlvv6elJeXk58fHxhIaGMmXKFABmzZrF2LFjMZvNLFq0iKysLAB27NjB\n6tWr2bJlC0FBQWzdupVevXoBaLWR5ORkampqeOqppwBYvnw5rq6uLFiwoPmBXaW5oWSOG/slc0PZ\nL4PBgKMMnQXHmofO5nNDnTt3jokTJzJt2jQmTJgANNYmjh07BsDRo0e58cYbgcYaQ1FRkbZtcXEx\nJpMJX19fiouLLyhv2ubIkSMA1NXVUVVVhZeX1wX7KioqalbTEEIIYXttShZKKWbOnElgYCB/+tOf\ntPLo6GhSUlKAxhFLTUkkOjqatLQ0amtrKSgoID8/n5CQEHx8fHB3dyc3NxelFKmpqdx9990X7GvT\npk2Eh4cDEBkZSWZmJpWVlVRUVJCVlUVUVFTbz0AHkKN3AMK6Qr0DENbl6B2AQ2lTn8V//vMf3njj\nDQYNGsTQoUOBxqGxixYtIiYmhqSkJMxmMxs3bgQgMDCQmJgYAgMDcXZ2JjEx8ZdqKCQmJjJjxgzO\nnDnDuHHjGDNmDAAzZ85k2rRpWCwWvLy8SEtLAxqbthYvXkxwcDAAS5YswWg0XtlZEEIIcUlyPwtb\nvE67v8rVIX0WdmypA743DvTJcbT3Ru5nIYQQok0kWXQAOXoHIKwr1DsAYV2O3gE4FEkWQgghWiTJ\nogMI0zsAYZ1Z7wCEdWF6B+BQJFkIIYRokSSLDiBH7wCEdYV6ByCsy9E7AIciyUIIIUSLJFl0AGF6\nByCsM+sdgLAuTO8AHIokCyGEEC2SZNEB5OgdgLCuUO8AhHU5egfgUCRZCCGEaJEkiw4gTO8AhHVm\nvQMQ1oXpHYBDkWQhhBCiRZIsOoAcvQMQ1hXqHYCwLkfvAByKJAshhBAtkmTRAYTpHYCwzqx3AMK6\nML0DcChtulOe+C8XGm8a5Ahc9A5ACGG3pGZxhc4BjXf8as/HtqvwGuqXYxGtUqh3AMK6HL0DcCiS\nLIQQQrRIkkWHEKZ3AMIas94BCOvC9A7AoUiyEEII0SJJFh1Cjt4BCGsK9Q5AWJejdwAOpcMmi4yM\nDPr164fFYmHVqlV6h9PO9ukdgLDmmN4BCOvkc2NLHTJZ1NfX88c//pGMjAz279/P22+/zYEDB/QO\nqx1V6h2AsKZG7wCEdfK5saUOmSx2796Nv78/ZrMZFxcX7r//ftLT0/UOSwghHFaHvCivpKQEPz8/\nbdlkMpGbm6tjRO2tUO8AOiYnYOlVeJ2cq/AaHfLfOr0V6h2AQ+mQycJguLxrpi/3eVfuarxOylV4\njat5zkSrNDjieyOfm46kQyYLX19fioqKtOWioiJMJlOz5yilrnZYQgjhsDpk5Xb48OHk5+dTWFhI\nbW0tGzZsIDo6Wu+whBDCYXXImoWzszMvvfQSUVFR1NfXM3PmTPr37693WEII4bAMStprhBBCtKBD\nNkNdC/Ly8njhhRd48cUX+fzzz/UO55r3zjvvAPDDDz/oHIkQ+pBkYYeWLVvGjBkzKC8v56effuLB\nBx/kL3/5i95hXdNWrFgBwMSJE3WORFxKU1JvqUy0njRD2aGAgAC+/PJLunTpAsCZM2cYPHgwBw8e\n1Dmya9ddd92FwWDgs88+Y+TIkc3WGQwGNm/erFNk4nxDhw5l7969LZaJ1uuQHdyOztfXlzNnzmjJ\noqam5oKhweLq+r//+z/27t3L1KlTefzxx5sNzb4Wxtjbu48//piPPvqIkpISHn30Ue39qa6uxsVF\n7gFpC5Is7Eh8fDwA3bp1Y8CAAURGRgKQlZVFSEiInqFd8zp37kxoaCg7d+6kR48eeocjfqVXr14M\nGzaM9PR0hg0bhlIKg8GAm5sbzz//vN7hOQRphrIjycnJGAyGi15QaDAYiIuL0yEqATB+/Hjt91+/\nR9IMZT+KioqaTQUE8N1333HLLbfoFJHjkGQhxGXIyckB4P333+fYsWNMnToVpRRvv/023t7erF27\nVt8ABQC33HILy5YtIzY2FqUUzz33HP/4xz8cfFbqq0OShR3q3bv3BWUGg0GGbdqBYcOGkZeX12KZ\n0MfRo0eZPXs2Xbp0oaysjH79+vHcc89xww036B1ahyd9Fnbos88+036vqalh06ZNnDhxQseIRJPT\np09z6NAh+vbtCzRed3H69GmdoxJNevbsSVRUFCtXrqRTp04kJCRIorARqVl0ELfeeqtcnGcHMjIy\nmD17Nn369EEpRWFhIa+88gpRUVF6hyZoHOLcs2dPXnzxRYqKipg5cya//e1vWbNmjd6hdXhSs7BD\neXl52nDMhoYG9uzZQ319vc5RCYBRo0Yxe/Zs9uzZw8mTJ3n44YcZNWqU3mGJX/zhD3/gnnvuAcBo\nNPLpp5+ycuVKnaNyDFKzsENhYWFasnB2dsZsNvP444/LiA47MGnSJNzd3bUO7rfeeouqqiq5StiO\n7Nixg++//54HH3yQn376ierqavr06aN3WB2eJAshWiEwMJD9+/e3WCb0sXTpUvLy8vjuu+84ePAg\nJSUlxMTE8J///Efv0Do8mRvKDh0/fpz4+HiGDh3Krbfeyrx586SD207ceuut7Ny5U1vetWsXw4YN\n0zEicb7333+f9PR0unbtCjTOhlBdXa1zVI5BkoUduv/++7nxxht577332LRpEz169CA2NlbvsASw\nZ88e7rjjDm6++WbMZjO33347e/bsISgoiEGDBukd3jWvc+fOODn992vt559/1jEaxyLNUHZo4MCB\nfP31183KgoKC+Oqrr3SKSDQpLCy85Hqz2XxV4hAXt2bNGvLz88nMzOTJJ5/ktdde44EHHuDRRx/V\nO7QOT0ZD2aHIyEjefvttrTbxzjvvaPNECX1JMrBvP/74IxMnTsTNzY2DBw+ybNky/vnPf+odlkOQ\nmoUduuGGGzh9+rRWnW5oaNDaYA0GAydPntQzPCHs1sWmI5dauW1IzcIOVVVV8eabb1JQUMCSJUs4\nfPgwx44dY8SIEXqHJoRdevnll0lMTOTQoUMEBQVp5dXV1dxxxx06RuY4pGZhh+bMmUOnTp345JNP\nOHDgAOXl5URFRTWbBkQI8V9VVVVUVFSwaNEiVq1apc0K7ObmhpeXl87ROQZJFnaoqSp9fpV68ODB\nfPHFFzpHJoS4VsnQWTt03XXXNZve46effmo2HFAIIa42+QayQ/Hx8dxzzz38+OOP/PnPf+aOO+7g\nySef1DssIcQ1TJqh7NSBAwfIzs4GIDw8nP79++sckRDiWibJQgghRIukGUoIIUSLJFkIIYRokSQL\nIYQQLZJkIUQrdOrUiaFDh2qPI0eOXLXXXrFixVV7LSF+TTq4hWgFNze3Nt0fob6+nk6dOuny2kLY\ngtQshLhC+/btIzQ0lMGDB3PvvfdSWVkJNN4ed/78+QQHB/PCCy8QFhbGY489RnBwMP379+ezzz7j\nnnvuISAggMWLF2v7u+eeexg+fDgDBw7k1VdfBWDRokWcOXOGoUOHMm3aNF2OU1zbpGYhRCs4Oztr\nE9X16dOHd999l0GDBrFu3TpGjhzJkiVLOHnyJM8//zyjR49mwIABvPTSSwCMHj2a0NBQVq5cyd/+\n9jcSEhLYu3cvHh4e9O3bly+//BIPDw8qKirw8PDgzJkzhISEsH37djw8PKRmIXQls84K0Qqurq7N\npsCuqqqiqqqKkSNHAhAXF8ekSZO09b++w2F0dDTQeIOrgQMH4u3tDTQmnqKiIjw8PHjhhRf44IMP\nACgqKiI/P5+QkJB2PS4hWiLJQggb+nVFvek+JE06d+4MgJOTk/Z703JdXR05OTlkZ2eza9cuunTp\nwujRo6mpqWn/wIVogfRZCHEFunXrhoeHB//+978BSE1NJSwsTFvfmlZepRQnT57Ew8ODLl268O23\n37Jr1y5tvYuLC3V1dTaLXYjWkJqFEK1gMBguKEtJSWHOnDmcPn2avn378vrrr1/y+U3lv15nMBgY\nM2YMf//73wkMDOSWW27htttu09bPnj2bQYMGMWzYMFJTU210REJcHungFkII0SJphhJCCNEiSRZC\nCCFaJMlCCCFEiyRZCCGEaJEkCyGEEC2SZCGEEKJF/x+JTgg1NtfvPwAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 25
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "Code for Book Query"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def maketable(df):\n imagedict={6:\"http://fchasen.com/cal/open-data/icons/pdf-icon.png\",\n 8:\"http://fchasen.com/cal/open-data/icons/epub-icon.png\",\n 7:\"http://fchasen.com/cal/open-data/icons/text-icon.png\"}\n columns=df.columns\n \n table =\"<table><thead>\"\n table +=\" <tr><th>Results</th>\"\n for i in columns:\n table += \"<th>{0}</th>\".format(i)\n table += \"</tr></thead><tbody>\"\n for k,s in df.iterrows():\n table +=\"<tr>\"\n table += \"<th>{0}</th>\".format(k)\n \n for colnum,j in enumerate(s):\n #print type(j)\n try:\n if (colnum in [6,7,8]):\n if j is not None and j[:4]==\"http\":\n table += \"<td style='word-break:break-word;'><a href='{0}' target='_blank' style='word-break:break-word;'><img src='{1}' style='height:50px; margin: 0 auto;'/></td>\".format(j,imagedict[colnum])\n else:\n table += \"<td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td>\"\n else:\n table += \"<td>{0}</td>\".format(j.encode('utf-8'))\n except:\n table += \"<td>{0}</td>\".format(j)\n table += \"</tr>\"\n\n table += \"</tbody></table>\"\n return table\n",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": "def searchBook(q, o=\"title\"):\n if o == \"title\":\n g = \"title\"\n ol = \"title\"\n h = \"Title\"\n \n if o == \"author\":\n ol = \"ol_authors.name\"\n g = \"creator\"\n h = \"Imprint\" \n \n \n query = \"\".join([\"select distinct 'Gutenberg' as source, g.title as title, \" ,\n \"g.creator as author, g.lang as language,'Unknown' as pubdate, 'public domain' as rights, \",\n \"(select about from gut_files where format like '%pdf%' and etext_id=g.etext_id limit 1) as pdf, \",\n \"(select about from gut_files where format like '%text%' and etext_id=g.etext_id limit 1) as text, \",\n \"(select about from gut_files where format like '%epub%' and etext_id=g.etext_id limit 1) as epub \",\n \"from gut_books g \",\n \"where lower(\"+g+\") like lower('%\"+q+\"%') \" ,\n \"union \",\n \"select distinct 'Hathitrust' as source, Title as title, \",\n \"'Unknown' as author, lang as language, PubDate as pubdate, case Access when 'allow' then 'public domain' else 'non public' end as rights, \",\n \"concat('http://hdl.handle.net/2027/',VolumeID) as pdf,'N/A' as epub, 'N/A' as text from \",\n \"ht_books where lower(\"+h+\") like lower('%\"+q+\"%') and Access = 'allow' \",\n \"union \",\n \"select distinct 'OpenLibrary' as source, title, name as author, \",\n \"language, publish_date as pubdate, 'Unknown' as rights, \",\n \"concat('http://www.archive.org/download/',ocaid, '/', ocaid, '.pdf') as pdf, \",\n \"concat('http://www.archive.org/download/',ocaid, '/', ocaid, '_djvu.txt') as text, \",\n \"concat('http://www.archive.org/download/',ocaid, '/', ocaid, '.epub') as epub \",\n \"from ol_books LEFT JOIN ol_authors ON ol_books.author_key = ol_authors.key where lower(\"+ol+\") like lower('%\"+q+\"%')\"])\n \n cursor.execute(query)\n res = list(cursor.fetchall())\n \n if(len(res)):\n dfresult = pd.DataFrame(res ,columns=['source','title', 'author','language','pubdate','rights','pdf','text','epub'] )\n dfresult['language']=dfresult.language.apply(language)\n print \"Total Results:\",len(dfresult)\n return dfresult\n else:\n print \"No results returned, try again\"\n return False",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": "inputHTML = '''\n<input id=\"book-search\" stype=\"width:400px\">\n <select id=\"book-select\">\n <option value=\"title\">Title</option>\n <option value=\"author\">Author</option>\n </select> \n<input type=\"submit\" id=\"book-submit\" value=\"Search\">'''\n\njs_code = (\"\"\"\n var $body = $(\"body\");\n \n $body.on('click', '#book-submit', function() {\n var $search = $('#book-search'),\n $select = $('#book-select');\n \n var py_code1 = \"queryterm = '\" + $search.val() + \"'\";\n var py_code2 = \"on = '\" + $select.val() + \"'\";\n\n console.log('submit:', $search.val(), $select.val());\n \n IPython.notebook.kernel.execute(py_code1);\n IPython.notebook.kernel.execute(py_code2);\n\n });\n \n\n \"\"\")\n\n\nIPython.core.display.Javascript(js_code)",
"language": "python",
"metadata": {},
"outputs": [
{
"javascript": "\n var $body = $(\"body\");\n \n $body.on('click', '#book-submit', function() {\n var $search = $('#book-search'),\n $select = $('#book-select');\n \n var py_code1 = \"queryterm = '\" + $search.val() + \"'\";\n var py_code2 = \"on = '\" + $select.val() + \"'\";\n\n console.log('submit:', $search.val(), $select.val());\n \n IPython.notebook.kernel.execute(py_code1);\n IPython.notebook.kernel.execute(py_code2);\n\n });\n \n\n ",
"output_type": "pyout",
"prompt_number": 5,
"text": "<IPython.core.display.Javascript at 0x39b3250>"
}
],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": "Search for a Book"
},
{
"cell_type": "code",
"collapsed": false,
"input": "HTML(inputHTML)",
"language": "python",
"metadata": {},
"outputs": [
{
"html": "\n<input id=\"book-search\" stype=\"width:400px\">\n <select id=\"book-select\">\n <option value=\"title\">Title</option>\n <option value=\"author\">Author</option>\n </select> \n<input type=\"submit\" id=\"book-submit\" value=\"Search\">",
"output_type": "pyout",
"prompt_number": 6,
"text": "<IPython.core.display.HTML at 0x39b3050>"
}
],
"prompt_number": 6
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Total search results"
},
{
"cell_type": "code",
"collapsed": false,
"input": "dfresult = searchBook(queryterm, on)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Total Results: 12\n"
}
],
"prompt_number": 17
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Distribution by source"
},
{
"cell_type": "code",
"collapsed": false,
"input": "source = dfresult.groupby('source')\nsource['source'].value_counts().plot(kind=\"bar\", title=\"Count distribution of searched results\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 18,
"text": "<matplotlib.axes.AxesSubplot at 0x3ac8b10>"
},
{
"output_type": "display_data",
"png": "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\nErQ05BMAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 18
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Distribution by language"
},
{
"cell_type": "code",
"collapsed": false,
"input": "\nlbl= dfresult['language'].value_counts().index\n#dfresult.value_counts().plot(kind=\"bar\")\npie(dfresult['language'].value_counts(), labels=lbl, autopct='%1.1f%%')\n#type(dfresult['language'])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 19,
"text": "([<matplotlib.patches.Wedge at 0x3f58990>],\n [<matplotlib.text.Text at 0x3f58e50>],\n [<matplotlib.text.Text at 0x3f58f50>])"
},
{
"output_type": "display_data",
"png": "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\nAlTWIiIW8P+pDFgiGJrXvwAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 19
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Results with direct links to the books"
},
{
"cell_type": "code",
"collapsed": false,
"input": "display(HTML(maketable(dfresult)))",
"language": "python",
"metadata": {},
"outputs": [
{
"html": "<table><thead> <tr><th>Results</th><th>source</th><th>title</th><th>author</th><th>language</th><th>pubdate</th><th>rights</th><th>pdf</th><th>text</th><th>epub</th></tr></thead><tbody><tr><th>0</th><td>Gutenberg</td><td>Moby Dick</td><td>Melville, Herman, 1819-1891</td><td>English</td><td>Unknown</td><td>public domain</td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/dirs/1/15/15.txt' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/cache/epub/15/pg15.epub' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/epub-icon.png' style='height:50px; margin: 0 auto;'/></td></tr><tr><th>1</th><td>Gutenberg</td><td>Moby Dick: or, the White Whale</td><td>Melville, Herman, 1819-1891</td><td>English</td><td>Unknown</td><td>public domain</td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/cache/epub/2489/pg2489.html.utf8' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/cache/epub/2489/pg2489.epub' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/epub-icon.png' style='height:50px; margin: 0 auto;'/></td></tr><tr><th>2</th><td>Gutenberg</td><td>Moby Dick, or, the whale</td><td>Melville, Herman, 1819-1891</td><td>English</td><td>Unknown</td><td>public domain</td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/dirs/2/7/0/2701/2701-h/2701-h.htm' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/cache/epub/2701/pg2701.epub' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/epub-icon.png' style='height:50px; margin: 0 auto;'/></td></tr><tr><th>3</th><td>Gutenberg</td><td>Moby Dick</td><td>Melville, Herman, 1819-1891</td><td>English</td><td>Unknown</td><td>public domain</td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/dirs/2/8/7/9/28794/28794_index.html' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td></tr><tr><th>4</th><td>Gutenberg</td><td>Moby Dick</td><td>Melville, Herman, 1819-1891</td><td>English</td><td>Unknown</td><td>public domain</td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='word-break:break-word;'><a href='http://www.gutenberg.org/dirs/9/1/4/9147/9147-index.htm' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td></tr><tr><th>5</th><td>Hathitrust</td><td>The meaning of Moby Dick, by William S. Gleim.</td><td>Unknown</td><td>English</td><td>1938</td><td>public domain</td><td style='word-break:break-word;'><a href='http://hdl.handle.net/2027/uc1.32106018399292' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/pdf-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td></tr><tr><th>6</th><td>Hathitrust</td><td>The meaning of Moby Dick.</td><td>Unknown</td><td>English</td><td>1962</td><td>public domain</td><td style='word-break:break-word;'><a href='http://hdl.handle.net/2027/mdp.39015000517709' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/pdf-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td></tr><tr><th>7</th><td>Hathitrust</td><td>Moby Dick,</td><td>Unknown</td><td>English</td><td>1929</td><td>public domain</td><td style='word-break:break-word;'><a href='http://hdl.handle.net/2027/mdp.39015066056998' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/pdf-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td></tr><tr><th>8</th><td>Hathitrust</td><td>Moby Dick,</td><td>Unknown</td><td>English</td><td>1929</td><td>public domain</td><td style='word-break:break-word;'><a href='http://hdl.handle.net/2027/mdp.39015038910694' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/pdf-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td><td style='text-align:center'><img src='http://fchasen.com/cal/open-data/icons/none-icon.png' style='height:30px; margin: 10px auto;'/></td></tr><tr><th>9</th><td>OpenLibrary</td><td>Moby Dick With Readers Guide (R 89 ALP)</td><td>None</td><td>English</td><td>June 1970</td><td>Unknown</td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydickwithread00melv/mobydickwithread00melv.pdf' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/pdf-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydickwithread00melv/mobydickwithread00melv_djvu.txt' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydickwithread00melv/mobydickwithread00melv.epub' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/epub-icon.png' style='height:50px; margin: 0 auto;'/></td></tr><tr><th>10</th><td>OpenLibrary</td><td>Moby Dick</td><td>None</td><td>English</td><td>1966</td><td>Unknown</td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydicknotes00robe/mobydicknotes00robe.pdf' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/pdf-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydicknotes00robe/mobydicknotes00robe_djvu.txt' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydicknotes00robe/mobydicknotes00robe.epub' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/epub-icon.png' style='height:50px; margin: 0 auto;'/></td></tr><tr><th>11</th><td>OpenLibrary</td><td>Moby Dick</td><td>None</td><td>English</td><td>1988</td><td>Unknown</td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydick00seld/mobydick00seld.pdf' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/pdf-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydick00seld/mobydick00seld_djvu.txt' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/text-icon.png' style='height:50px; margin: 0 auto;'/></td><td style='word-break:break-word;'><a href='http://www.archive.org/download/mobydick00seld/mobydick00seld.epub' target='_blank' style='word-break:break-word;'><img src='http://fchasen.com/cal/open-data/icons/epub-icon.png' style='height:50px; margin: 0 auto;'/></td></tr></tbody></table>",
"output_type": "display_data",
"text": "<IPython.core.display.HTML at 0x3f3ad50>"
}
],
"prompt_number": 20
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "APPENDIX"
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": "Hathitrust results"
},
{
"cell_type": "code",
"collapsed": false,
"input": "if on == \"title\":\n h = \"Title\"\n \nif on == \"author\":\n h = \"Imprint\"#Fetching books only from hathitrust\n\n\nquery = \"\".join([\"select Title as title, 'Unknown' as subtitle, 'Unknown' as author,\",\n\"lang as language, PubDate as pubdate, Access as rights, concat('http://hdl.handle.net/2027/',VolumeID) as link,\",\n\"'pdf' as format from ht_books where \"+h+\" like '%\" ,\nqueryterm,\n\"%'\"])\nquery\ncursor.execute(query)\nhtres = list(cursor.fetchall())\ndfht= pd.DataFrame(htres , columns=['title','subtitle','author','language','pubdate','rights','link','format'])",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": "#dislaying results from hathitrust\ndisplay(HTML(dfht.to_html()))",
"language": "python",
"metadata": {},
"outputs": [
{
"html": "<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>title</th>\n <th>subtitle</th>\n <th>author</th>\n <th>language</th>\n <th>pubdate</th>\n <th>rights</th>\n <th>link</th>\n <th>format</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> The hound of the Baskervilles : another advent...</td>\n <td> Unknown</td>\n <td> Unknown</td>\n <td> eng</td>\n <td> 1921</td>\n <td> allow</td>\n <td> http://hdl.handle.net/2027/mdp.39015062324325</td>\n <td> pdf</td>\n </tr>\n </tbody>\n</table>",
"output_type": "display_data",
"text": "<IPython.core.display.HTML at 0x3ba4390>"
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": "dfht.pubdate.apply(returnnumber).value_counts().plot(kind=\"barh\", title = \"number of books published per year for the queries book\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 35,
"text": "<matplotlib.axes.AxesSubplot at 0x3fefa50>"
},
{
"output_type": "display_data",
"png": "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\nRK5CYII=\n"
}
],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": "dfht.language.apply(language)\nlbl = dfht.language.apply(language).value_counts().index\npie(dfht.language.apply(language).value_counts(), labels=lbl, autopct='%1.1f%%')\n",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 36,
"text": "([<matplotlib.patches.Wedge at 0x487b410>,\n <matplotlib.patches.Wedge at 0x487ba50>,\n <matplotlib.patches.Wedge at 0x487bfd0>,\n <matplotlib.patches.Wedge at 0x487d5d0>,\n <matplotlib.patches.Wedge at 0x487db90>,\n <matplotlib.patches.Wedge at 0x4882190>,\n <matplotlib.patches.Wedge at 0x4882750>],\n [<matplotlib.text.Text at 0x487b8d0>,\n <matplotlib.text.Text at 0x487bf10>,\n <matplotlib.text.Text at 0x487d510>,\n <matplotlib.text.Text at 0x487dad0>,\n <matplotlib.text.Text at 0x487dfd0>,\n <matplotlib.text.Text at 0x4882690>,\n <matplotlib.text.Text at 0x4882c50>],\n [<matplotlib.text.Text at 0x487b9d0>,\n <matplotlib.text.Text at 0x487bad0>,\n <matplotlib.text.Text at 0x487d090>,\n <matplotlib.text.Text at 0x487d650>,\n <matplotlib.text.Text at 0x487dc10>,\n <matplotlib.text.Text at 0x4882210>,\n <matplotlib.text.Text at 0x48827d0>])"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 36
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Analyis of Hathitrust's non digitized data. This consists of volume of books before 1923\nhttps://ec2-54-225-70-191.compute-1.amazonaws.com:80/25162c63-57c0-4c4d-b809-5c6a8f55b11b"
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment