Skip to content

Instantly share code, notes, and snippets.

@dalejung
Created August 16, 2012 03:59
Show Gist options
  • Save dalejung/3366583 to your computer and use it in GitHub Desktop.
Save dalejung/3366583 to your computer and use it in GitHub Desktop.
Pandas Stuff #notebook-project #inactive
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "modifying series, frames, panels.ipynb",
"notebook_path": "https://gist.github.com/3366583/modifying series, frames, panels.ipynb"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"import numpy as np"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import time \n",
" \n",
"class Timer: \n",
" \"\"\" \n",
" Usage: \n",
" \n",
" with Timer() as t: \n",
" ret = func(df) \n",
" print(t.interval) \n",
" \"\"\" \n",
" def __init__(self):\n",
" self.interval = None\n",
" \n",
" def __enter__(self): \n",
" self.start = time.clock() \n",
" return self \n",
" \n",
" def __exit__(self, *args): \n",
" self.end = time.clock() \n",
" self.interval = self.end - self.start \n",
" \n",
" def __str__(self):\n",
" return \"Timer.interval = {0}\".format(self.interval)\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def append_many(start_size=1000, nrows=1000):\n",
" df = pd.DataFrame([range(10)]*start_size)\n",
" with Timer() as t:\n",
" for x in xrange(nrows):\n",
" df = df.append([range(10)], ignore_index=True)\n",
" \treturn t \n",
"print append_many()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Timer.interval = 1.952251\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def append_many_list(start_size=1000, nrows=1000):\n",
" df = pd.DataFrame([range(10)]*start_size)\n",
" rows = []\n",
" with Timer() as t:\n",
" for x in xrange(nrows):\n",
" rows.append(range(10))\n",
" df.append(rows, ignore_index=True)\n",
" return t \n",
"print append_many_list() "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Timer.interval = 0.005098\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import itertools\n",
"\n",
"start_range = np.arange(1, 5) * 10000 \n",
"nrows = np.arange(1, 5) * 1000\n",
"\n",
"test_cases = list(itertools.product(start_range, nrows))\n",
"\n",
"results = []\n",
"for start, nrows in test_cases:\n",
" t = append_many(start, nrows)\n",
" results.append((start, nrows, t.interval))\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"test_results = pd.DataFrame(results, columns=['start', 'nrows', 'time'])\n",
"test_results"
],
"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>start</th>\n",
" <th>nrows</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td><strong>0</strong></td>\n",
" <td> 10000</td>\n",
" <td> 1000</td>\n",
" <td> 2.148895</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>1</strong></td>\n",
" <td> 10000</td>\n",
" <td> 2000</td>\n",
" <td> 4.483919</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>2</strong></td>\n",
" <td> 10000</td>\n",
" <td> 3000</td>\n",
" <td> 6.400522</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>3</strong></td>\n",
" <td> 10000</td>\n",
" <td> 4000</td>\n",
" <td> 8.776699</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>4</strong></td>\n",
" <td> 20000</td>\n",
" <td> 1000</td>\n",
" <td> 2.338080</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>5</strong></td>\n",
" <td> 20000</td>\n",
" <td> 2000</td>\n",
" <td> 4.708480</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>6</strong></td>\n",
" <td> 20000</td>\n",
" <td> 3000</td>\n",
" <td> 7.142558</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7</strong></td>\n",
" <td> 20000</td>\n",
" <td> 4000</td>\n",
" <td> 9.696720</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8</strong></td>\n",
" <td> 30000</td>\n",
" <td> 1000</td>\n",
" <td> 2.639786</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>9</strong></td>\n",
" <td> 30000</td>\n",
" <td> 2000</td>\n",
" <td> 5.572692</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>10</strong></td>\n",
" <td> 30000</td>\n",
" <td> 3000</td>\n",
" <td> 8.245117</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>11</strong></td>\n",
" <td> 30000</td>\n",
" <td> 4000</td>\n",
" <td> 10.862880</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>12</strong></td>\n",
" <td> 40000</td>\n",
" <td> 1000</td>\n",
" <td> 3.382203</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>13</strong></td>\n",
" <td> 40000</td>\n",
" <td> 2000</td>\n",
" <td> 6.395405</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>14</strong></td>\n",
" <td> 40000</td>\n",
" <td> 3000</td>\n",
" <td> 9.968548</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>15</strong></td>\n",
" <td> 40000</td>\n",
" <td> 4000</td>\n",
" <td> 13.417624</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 7,
"text": [
" start nrows time\n",
"0 10000 1000 2.148895\n",
"1 10000 2000 4.483919\n",
"2 10000 3000 6.400522\n",
"3 10000 4000 8.776699\n",
"4 20000 1000 2.338080\n",
"5 20000 2000 4.708480\n",
"6 20000 3000 7.142558\n",
"7 20000 4000 9.696720\n",
"8 30000 1000 2.639786\n",
"9 30000 2000 5.572692\n",
"10 30000 3000 8.245117\n",
"11 30000 4000 10.862880\n",
"12 40000 1000 3.382203\n",
"13 40000 2000 6.395405\n",
"14 40000 3000 9.968548\n",
"15 40000 4000 13.417624"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from mpl_toolkits.mplot3d import Axes3D\n",
"from matplotlib import cm\n",
"from matplotlib.ticker import LinearLocator, FormatStrFormatter\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca(projection='3d')\n",
"X = test_results.start\n",
"Y = test_results.nrows\n",
"X, Y = np.meshgrid(X, Y)\n",
"R = test_results.time \n",
"surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,\n",
" linewidth=0, antialiased=False)\n",
"ax.set_zlim(0, 10.01)\n",
"\n",
"ax.zaxis.set_major_locator(LinearLocator(10))\n",
"ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))\n",
"\n",
"fig.colorbar(surf, shrink=1.5, aspect=5)\n",
"\n",
"plt.show()\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 51
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "modifying series, frames, panels.ipynb",
"notebook_path": "https://gist.github.com/3366583/modifying series, frames, panels.ipynb"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"import numpy as np"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import time \n",
" \n",
"class Timer: \n",
" \"\"\" \n",
" Usage: \n",
" \n",
" with Timer() as t: \n",
" ret = func(df) \n",
" print(t.interval) \n",
" \"\"\" \n",
" def __init__(self):\n",
" self.interval = None\n",
" \n",
" def __enter__(self): \n",
" self.start = time.clock() \n",
" return self \n",
" \n",
" def __exit__(self, *args): \n",
" self.end = time.clock() \n",
" self.interval = self.end - self.start \n",
" \n",
" def __str__(self):\n",
" return \"Timer.interval = {0}\".format(self.interval)\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def append_many(start_size=1000, nrows=1000):\n",
" df = pd.DataFrame([range(10)]*start_size)\n",
" with Timer() as t:\n",
" for x in xrange(nrows):\n",
" df = df.append([range(10)], ignore_index=True)\n",
" \treturn t \n",
"print append_many()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Timer.interval = 1.952251\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def append_many_list(start_size=1000, nrows=1000):\n",
" df = pd.DataFrame([range(10)]*start_size)\n",
" rows = []\n",
" with Timer() as t:\n",
" for x in xrange(nrows):\n",
" rows.append(range(10))\n",
" df.append(rows, ignore_index=True)\n",
" return t \n",
"print append_many_list() "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Timer.interval = 0.005098\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import itertools\n",
"\n",
"start_range = np.arange(1, 5) * 10000 \n",
"nrows = np.arange(1, 5) * 1000\n",
"\n",
"test_cases = list(itertools.product(start_range, nrows))\n",
"\n",
"results = []\n",
"for start, nrows in test_cases:\n",
" t = append_many(start, nrows)\n",
" results.append((start, nrows, t.interval))\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"test_results = pd.DataFrame(results, columns=['start', 'nrows', 'time'])\n",
"test_results"
],
"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>start</th>\n",
" <th>nrows</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td><strong>0</strong></td>\n",
" <td> 10000</td>\n",
" <td> 1000</td>\n",
" <td> 2.148895</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>1</strong></td>\n",
" <td> 10000</td>\n",
" <td> 2000</td>\n",
" <td> 4.483919</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>2</strong></td>\n",
" <td> 10000</td>\n",
" <td> 3000</td>\n",
" <td> 6.400522</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>3</strong></td>\n",
" <td> 10000</td>\n",
" <td> 4000</td>\n",
" <td> 8.776699</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>4</strong></td>\n",
" <td> 20000</td>\n",
" <td> 1000</td>\n",
" <td> 2.338080</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>5</strong></td>\n",
" <td> 20000</td>\n",
" <td> 2000</td>\n",
" <td> 4.708480</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>6</strong></td>\n",
" <td> 20000</td>\n",
" <td> 3000</td>\n",
" <td> 7.142558</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>7</strong></td>\n",
" <td> 20000</td>\n",
" <td> 4000</td>\n",
" <td> 9.696720</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>8</strong></td>\n",
" <td> 30000</td>\n",
" <td> 1000</td>\n",
" <td> 2.639786</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>9</strong></td>\n",
" <td> 30000</td>\n",
" <td> 2000</td>\n",
" <td> 5.572692</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>10</strong></td>\n",
" <td> 30000</td>\n",
" <td> 3000</td>\n",
" <td> 8.245117</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>11</strong></td>\n",
" <td> 30000</td>\n",
" <td> 4000</td>\n",
" <td> 10.862880</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>12</strong></td>\n",
" <td> 40000</td>\n",
" <td> 1000</td>\n",
" <td> 3.382203</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>13</strong></td>\n",
" <td> 40000</td>\n",
" <td> 2000</td>\n",
" <td> 6.395405</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>14</strong></td>\n",
" <td> 40000</td>\n",
" <td> 3000</td>\n",
" <td> 9.968548</td>\n",
" </tr>\n",
" <tr>\n",
" <td><strong>15</strong></td>\n",
" <td> 40000</td>\n",
" <td> 4000</td>\n",
" <td> 13.417624</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 7,
"text": [
" start nrows time\n",
"0 10000 1000 2.148895\n",
"1 10000 2000 4.483919\n",
"2 10000 3000 6.400522\n",
"3 10000 4000 8.776699\n",
"4 20000 1000 2.338080\n",
"5 20000 2000 4.708480\n",
"6 20000 3000 7.142558\n",
"7 20000 4000 9.696720\n",
"8 30000 1000 2.639786\n",
"9 30000 2000 5.572692\n",
"10 30000 3000 8.245117\n",
"11 30000 4000 10.862880\n",
"12 40000 1000 3.382203\n",
"13 40000 2000 6.395405\n",
"14 40000 3000 9.968548\n",
"15 40000 4000 13.417624"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from mpl_toolkits.mplot3d import Axes3D\n",
"from matplotlib import cm\n",
"from matplotlib.ticker import LinearLocator, FormatStrFormatter\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca(projection='3d')\n",
"X = test_results.start\n",
"Y = test_results.nrows\n",
"X, Y = np.meshgrid(X, Y)\n",
"R = test_results.time \n",
"surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,\n",
" linewidth=0, antialiased=False)\n",
"ax.set_zlim(0, 10.01)\n",
"\n",
"ax.zaxis.set_major_locator(LinearLocator(10))\n",
"ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))\n",
"\n",
"fig.colorbar(surf, shrink=1.5, aspect=5)\n",
"\n",
"plt.show()\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEJCAYAAABv6GdPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXl8E3X+/1+TJmmSXhyFIi2KHFpQhCoIfFcXPDj9igi6\noqwil67Keu/W1f3u4SrgqruyIruuiuLB5YmuUBUFZFUOBeHngYBSKbdY2uZqk0zy+6O+h0+mcyaT\nZBLm+XjkAU1nPvOZafKa97w+78/7w8VisRgsLCwsLHIKW6Y7YGFhYWFhPJa4W1hYWOQglrhbWFhY\n5CCWuFtYWFjkIJa4W1hYWOQglrhbWFhY5CD2THfAwsLCgvBwHIKZ7oQBtG/fHvX19RntA2fluVtY\nWJgFjuPwQKY7YQC/B5BpabUidwsLC1PhyHQHcgRL3C0sLEyFJUrGYF1HCwsLU2FF7sZgibuFhYWp\nsETJGKzraGFhYSqsyN0YLHG3sLAwFZYoGYN1HS0sLEyFFbkbgyXuFhYWpsISJWOwrqOFhYWpsCJ3\nY7DE3cLCwlRY4m4MlrhbWFiYCkuUjMG6jhYWFqbCityNwRJ3CwsLU2GJkjFY19HCwsJUWJG7MVji\nbmFhYSosUTIG6zpaWFiYCityNwZL3C0sLEyFJUrGYK2hamFhYSocOfCSoqamBpWVlejduzceeuih\nNr8/evQoRo8ejQEDBuDMM8/Ec889p+u6ibGW2bOwsDANHMdhZ6Y7YQCnIX6ZPZ7ncfrpp2P16tUo\nLy/HoEGDsGTJEvTp00fY5k9/+hNaWlowZ84cHD16FKeffjoOHz4Muz2xZxnrCcjCwsJU5KLnvmnT\nJvTq1Qvdu3cHAEyaNAkrVqyIE/eTTjoJ27dvBwA0NTWhY8eOCQs7YIm7hYWFychFcd+/fz+6desm\n/FxRUYGNGzfGbTNz5kxceOGF6Nq1K7xeL5YvX57UMS1xt7CwMBXZKEof//SSg+M41TZmz56NAQMG\nYO3atfj2228xYsQIbNu2DUVFRQn1KRuvo4WFRQ7jyEJVGvbTi3gkEv/78vJy1NXVCT/X1dWhoqIi\nbpuPP/4Y9913HwCgZ8+eOPXUU/HNN99g4MCBCfUpCy+jhYVFLpOEzWweROI+cOBA7Nq1C7W1teja\ntSuWLVuGJUuWxG1TWVmJ1atX42c/+xkOHz6Mb775Bj169Ei4C7lwGS0sLHIIR16me2A8drsd8+fP\nx6hRo8DzPKZPn44+ffrgySefBADceOONuPfeezF16lT0798f0WgUf/3rX9GhQ4eEj2mlQuYgPM8j\nFoshLy9Pk9dnYWEWOI5DqCTTvUgeZ2N8KmQmsCL3HCIWi4HnebS0tKClpQU2W+sctfz8fNjtdkHs\nLcG3MDPZ6LmbEesy5gjRaBThcBiNjY3weDyCkPv9fsRiMUHQOY4ThN5ut8Nmswk3AQsLU5CDtkwm\nsMQ9y4nFYohEIohEWkdweJ5HIBAAz/OCaEejUdjtdkHgI5EIQqGQ8LPNZhMEn15WdG+RMSxVMgTr\nMmYpsVhMiNbJ2wsGgwAAh8OB/Px8xGIxBINB8DwvbJeXlwebzdbGogmFQnHt0zZ2u12I8C3Bt0gL\nlioZgnUZsxAS9Wg0CgAIh8MIBAJwOp3gOA4OhwPRaFQQ5Pz8fNhsNsGTp/15ngfHcYKQ079A683D\n6/XC4XAI7+Xl5Qk/W/69RcqwVMkQrMuYRYgtmGg0ikAggFgshsLCQjgcDoTDYdn9yW9n22MFPxQK\nIRqNguM4QdBJ/Ol4zc3Nbdqz/HsLQ7E8d0OwxD0LIAvG7/cL3nlzczNaWlrgdruRn5+fUARNkTcr\nyHSsaDQqePOUeSO2dABp/57E3vLvLRLCUiVDsC6jyYnFYoKF4vf7UVhYiEAgALvdjpKSkjaRcrJW\nCUXteXl5CIfDgqUTjUbB8zx4nkcoFFL078kmosieBmxJ8C3/3kIRS5UMwbqMJoXsErJZaNA0EAig\noKAADod87Tx28gTHcUlPpmAFn6Donvoo9u8p/ZK8/lAoFDdoa/n3FrLkZ7oDuYEl7iZEPGDa0tIi\neN3FxcWm8LXJXycPX+zfs5E+a+ko+ffi7BwznKdFBrBUyRCsy2gi2AFTjuOEnHWbzYbi4mI0NTVl\nuouySPn3QGtNDTbCpyweKf+e53lEIhHhOuTn51v+/YmINaBqCJa4mwApCyYQCCASicDj8cDhcGSl\nqLF2DtlINGBLQi7n3/M8D6DVv2czgCz//gTAUiVDsC5jholGowgGg0LmSygUQjAYRH5+PkpKSnQL\nl9mFTqt/DwDNzc3CtvREIOffi+0cs18HCwUsVTIE6zJmCNaCoYwYsmOKiook107UOjhKUTENbJod\nsX/P8zyCwaBg6bS0tAh2jpx/T8XSgNZra7PZBFvHGrDNMixVMgTrMqYZsmBI1GOxGJqbmxGNRlFQ\nUCDMMk20bZrYRKmMsVgMLS0tcRFwNgxU2my2uIwgNv9ezb9vaWlpcyOktEzLv88CLM/dECxxTyNy\nZQPITsjPTzwHLBKJCBUgPR6PEKmS0HMcF3dsEsNs8a31+Pd07uJzkyuYZvn3JsNSJUOwLmMaUCob\nQIvf+v1+zW2xkGcfCoXg8XiE2aS0HZtiSPuzKYtqloeZkfPvm5ubhZsZ5d+z0b2af89m6FiCnwEs\nVTIE6zKmELEFA0CybACtnKQGKzLk0/v9fjidTmG2KkWvSm3IlRwQz0AFIFg72SL47E3K4XDovplR\nmQen0ym8J2XnWIKfQnLUlqmpqcHtt98OnucxY8YMVFdXt9lm7dq1uOOOOxAOh1FaWoq1a9cmfDxL\n3FMEWTBUWdFmsymWDdAD5b9Ho1GhYFgySEXAlI4JQHIGqlpUyy4QkknU6uewNzO2KiYAYR+6QbNt\nWv59CslBVeJ5HrNmzcLq1atRXl6OQYMGYdy4cejTp4+wTUNDA2655Ra88847qKiowNGjR5M6Zg5e\nxswitmBoQDMWi8mWDdCaBUNthUIhuFwuuFyulIkKCSKJmJ4ImF31yYzI+fd0bmTXiAeiWeFn/XvK\n07f8e4PIQVXatGkTevXqhe7duwMAJk2ahBUrVsSJ++LFizFx4kRUVFQAAEpLS5M6Zg5exswgtXhG\nS0sLIpEIHA4HCgsLk/qy02BoJBJBcXFxnNCwpFLstdo5eXl5wsAt63GbGbYccjgchtvtBoC47Bzy\n8qX8ewCCfx8KheBwOASxt/LvdZKDtsz+/fvRrVs34eeKigps3Lgxbptdu3YhHA7jggsugNfrxW23\n3YZrr7024WNa4m4AFOlRLXSq4JiXlwen0xm3xJ1e2AFTm80Gt9stK+zpRs7OoUW6yT6SEsRUipxR\nlpBa/Ry5pxee5+F0OoVt6KYAWAXTNJGFqrT2YOtLDi1/43A4jC1btuD9999HIBDA0KFDMWTIEPTu\n3TuhPmXhZTQPUhYMWzbA6XRqyoKRsmXohkErLJWUlMDn82n6kGTS76YImCZRkaWjJIhikcu0Xy93\nfK1PLwAES0dcP8da8EQDWahKw7u1vog/b4n/fXl5Oerq6oSf6+rqBPuF6NatG0pLS+F2u+F2u/Hz\nn/8c27Zts8Q93VB0yq5BKlU2IJGSuxT5U6okRY6JtGVEyd9k0GvnsGmK2YDU04vP5xMid3H9HLHg\nU4DA5t/HYjE4HI42Ef4JQw6q0sCBA7Fr1y7U1taia9euWLZsGZYsWRK3zWWXXYZZs2YJ2rJx40bc\neeedCR8zBy9jaqEURDalkawHJS9cC+xjfDIrLJkdJTuHXpSSmE47xwjopsTOLQDa1s9R8u+DwaAg\n+sQJlX9vDtfRUOx2O+bPn49Ro0aB53lMnz4dffr0wZNPPgkAuPHGG1FZWYnRo0fjrLPOgs1mw8yZ\nM9G3b9+Ej8nFsiVEyjDiyo00uxSAYMFIfdnoi+rxeBTbr6+vF77kHo9H8ibh9XqRn58Pp9Mp247P\n5xOEgSYzkfevVwyCwaAwMKgXKvqVSJomRbIulytO7OXKDYjPK5l+x2Ix+P1+FBQUJCSetH9hYaHq\ndqxdRf/SqldOp7PNkwy9ctm/5zgOsbsy3Yvk4R7N/NOnFblrQFw2gCwYAGjXrl1SXyiarQpAiNbl\nULNYIpEIwuEwOI4T2qGMnXA4rJi2aDbIymFrzKjZOSRyRnj2qb4uSnZVMBgUAgk2/14cseesf2+p\nkiFYl1EB8eIZrBB7PJ64LAg5aD+ptmnAlIQ40clINJAbCoXi8q0BxA1sSk3cEQujWcUe0FYumMSO\nrkW6LYxkbix0fgCEOQxsdC9VG0jKv2fXr33iiScwc+ZMdO7c2bBzTDk5aMtkAkvcJZAqG0DiSRYM\nTXZJBPoCsgOmVK5WL3SDoJmvwWBQNtNDbuKOnA9MNoCZkUpXpNWraEBTq51jRtj8e+C4PaPk37Pr\n137yySe44YYbMngGCWCpkiFk4TNbaqHcbHokDofDaGxsBACUlJQkNchJwuP1euF0OlFcXKzbFyax\njUaj8Pl8woLZhYWFuiNUEo78/Hy43W4UFBQIefQUEbe0tCAQCAj2jtRTiJkg0bbb7XC5XPB4PCgo\nKBD+bpFIBMFgEH6/X1gkhb2JmyENUwl25rDc342mupeWluKDDz7Aa6+9hi+++AI//PADRowYgdNO\nOw0jR45EQ0OD5DFqampQWVmJ3r1746GHHhLef/nll3HGGWcgLy8PW7ZskdzXEOw58DIBlrj/BAl5\nS0sLmpqaBPFsbm5GYWEhCgoK4vxLrSmGtF0oFEJjYyOi0ShKSkralA7Q0h5t09zcjMbGRthsNpSU\nlKjaOVqjbxIOh8MBl8uFvLw8YQCXqiwGAgFBGEOhkOaiZ+lE3B+Kap1OpyCGtHwhAKEAm9/vF0pF\nJHpeRt0c9N6k2b+b3W7H5MmTMW/ePADAhx9+iAkTJuBXv/oVRowYgZ07d+Kiiy7C3Llz27RFN4aa\nmhp89dVXWLJkCb7++msAQL9+/fD666/j5z//edLnp0imhTlHxN0k3cgcUhYM0JqZYkQ6IlkD7MSm\nZNqiAVO51ZqA44/uRlgPcraA1KQk1vZIRvDTMSAqZeewg7Vy55UNdk4sFsN5552H/fv3g+M4vPji\ni+A4DpWVlViwYAEAYMqUKRg+fHgbgVeqgVJZWZmeE7A8d0M4ocWdHaSiR3YaMFXLWVeLtKnIVzAY\nFCJsJVFQao+i9XA4bEidmmRQm5TETtqhl3iWphlhBzNtNhs8Ho/seUlNRiKSvTEZaQuJP0+HDx9G\nWVkZAKCsrAyHDx9us4+WGigp54RWJeM4IS+jVNkAv98PnudRUFAAr9erOYVM6stIqyJxHAe32y1k\n2yQCWQZkkaj56pmYkSqVxUIDu2zdnWxKxQS0Z+ewg5lA5vObxZ9JpVIKUu9nnBNSlYznhLqMUhYM\nzQh1uVxCREyipCaiUu3TIB1ZMJRjrhe2YBiVCqbcei1k+ktKgqc3Rz3T/VZDzs5hz40GzhOxc4yI\n3OXaKCsrw6FDh9ClSxccPHhQMj1SSw2UlGPZMoZwwog7WwuG4zghK8Zms7WxYPQOlnIc1yYlUe/k\nEWqLBnbFKyxlO2olB9gomISJ5/mEovt0ZryIU0zD4bBQ5pmtLQNI56anEhqfIcaNG4dFixahuroa\nixYtwvjx49vso6UGCpDip5MTRpVSS85fRrJgKKWxpKQkrnKjw+FIesCUtXTEmSt6bBLK0OF5XnKF\nJa1tkRWSCYtGDzRYK46CaeUn8aAma+ekCqMGc5Vy09ny0OLzMipynz59OtavX49AIIBu3brh/vvv\nxz333INf/OIXeOaZZ9C9e3csX74cAHDgwAHMnDkTb7/9tmwNFAB4/fXXceutt+Lo0aO45JJLUFVV\nhVWrViXVV0lyXpXSQ87WlmGFgr5cjY2NwtR8t9st+yVqbGxEQUGBYg56LBYT8oSVVkUi/72kpESx\nLUqTdLvdsm2p1amJxWLw+XwIh8NxpXaB44Wn9MzYzFRtGRJ3l8vVpv6KluX+fD5fwrVhKBCgxTqS\n6bsSYjuH/k99ptoyerNz2No4e/fuxQMPPIClS5cmdC6ZgOM4xJ7NdC+Sh5ua+bGXnLxHkrVBQkDR\nNQDFFEJxG3KQYMdiMRQWFiqmN6pFz2xbHo9HVRTkoHMkS4CtLUPetlLqollT/BJJxaTtMnE+Wo8r\nN2OY5g4ka+dwHAe/34+ioqLkTigT5KQqpZ+cuoxSWTA0KOnxeOD3+zU90st9edhBTo/HI6Q5JtpX\nGnx1u93CSktq/RLPEGVTLmkCC7sNnQsbQUul+AFoEw3TtulGSSC1pGICEAY09YpiJmeo0nnFYjHh\nqYW9kSnZOVJ99vl8qtUpTUlOqVLmyJnLSB9+EiOaTckOSpKtoYY42pYb5GQr8mlti/rm9/vjBl/F\nk6i0ILWoh9Y+sYObctEwCyv4ZoM9H7Il3G63cE7pTMU0Ms9d6UYmLgAnvoGRRWeJ+4lL1l9GKQtG\nXJQrGSirJhqNthnk1DtgSX1LdrYqTWoyalEPORGhG4VSdG9GKweAcOOSm4Eql4ppduTsHLox05PL\nY489hnXr1sHtdmPmzJn473//C7vdjn79+uHZZ5+NKy197NgxTJs2Dd999x1cLhcWLlyIM844A0Br\nnZnbb78dPM9jxowZqK6uTv1Jmv/PkBWYMxTTAFkwPp9PGNgMBoOKRbn0pDiSBdPU1AS73Y7i4uKE\nBgfpmC0tLcKAbklJScLCHo1G0dTUhHA4jOLi4oRq1GjtN/ndbrcbHo8HbrdbGKhtaWmB3+/PmqJi\nJIpOpxMulwsFBQVx2U30NEULe1PAkG5bKpHIn/5OTqdTuNFfeeWVGDhwIOrr6/HCCy/g9NNPx//7\nf/8PPM+3GWCdPXs2zj77bGzbtg3PP/88brvtNgDKdWZSSqbrwuRIbZmsFHeyYCiPlwRPrigXoSeV\nMBgMIhKJoLi4WDazRkt7lK3S3NyMoqIi2SwOLeUMwuEwwuEwXC4XioqK0hppUmRPg7XiaotsUbHm\n5mbBOsh0xoASJIpsdUVa5IJSMfXewDLp2dPxbTYbKioqUFZWhmuvvRannHIKFi5cKJTXKC8vj9vn\n66+/xgUXXAAAOP3001FbW4sjR47E1ZlxOBxCnZmUk2lhTpG4y1XbFLN582bY7Xa89tprGi+YNCa5\nx2iDHTBlo2vKWlGLrNUElNoLh8NwOp0Jp9NRX8k6AVqzdBL1rCmq5DguLhNGiXTkuCt59zS4SStA\npStPPRnYAU26xqzlwdp/qVrblcTZCPx+P0499VTcddddOOWUU+B2uzFq1ChcfPHFcdv1798fr732\nGs477zxs2rQJ33//Pfbt25e5OjM5aMvQU9Dq1atRXl6OQYMGYdy4ccIcAna76upqjB49Ounvrzm/\nZSJI1Cl6AlojYa/XK1gvia5iRO2TbQIA+fn5mrIr5AQ0EonEWSe0rd62KL3R7/cLaZJm9biB+Oie\nLJCCggLJksHNzc0pKRlsdOTMWh7i2ulS9hSdT6aeWNjz9/v98Hq9eOyxx1BbW4sDBw7A5/PhpZde\nitvnnnvuQUNDA6qqqjB//nxUVVVlthREpqPuFETuWp+CHn/8cVxxxRXo1KlTAhcuHtNH7uLKjZQh\nkpeXh+LiYs1ZK4C0gEplnNCArN72qKYIu2JTol8QKmfgcDiE82SzgbT0ib7omfDCqQ9KeeoU3Ytn\noWbSylG7OailYlKuOvvEkqmqmD6fD3v37sX//M//oGPHjgCACRMm4OOPP8bkyZOF7YqKirBw4ULh\n51NPPRU9e/ZEMBjMTJ0Z06uSfrQ8Be3fvx8rVqzABx98gM2bNyf9eTHtZZTKWZfKNBELmRJi4ZPL\nOEnE0lCqLUPtafljsRk1UuUMtGKGRTTkxhbYCB+Qtj7o/VRYH0bD2lM8z8PhcAjL/MmlYspNHDMy\nldLv96NPnz5YunSpMA9i9erVOPfcc+P2aWxshNvthtPpxFNPPYVhw4ahsLBQc50Zw8lCW2bt1taX\nHFr+prfffjvmzp0r6EWy31/TiTt90VmPORQKIRgMIj8/v01ddPqC6PlSsGV0peq2a412aTufz5e0\nGAOtdk5zc7PkeWqFvSmy0TMtGG1GkRRH91RAjAY2paJ7s3r39DlUWwwkHamYPp8PgwYNwnXXXYeB\nAwfCZrPh7LPPxsyZM/Hkk08CAG688UZ89dVXuP7668FxHM4880w888wzAKBYZyalmE6V1Bk+qPVF\n/Hlh/O+1VNv87LPPMGnSJADA0aNHsWrVKjgcDowbNy6hPpmutgx98GmglAawCgoKZD/8x44d01Q9\nkabn01R/uXTE5uZmoRCYHLFYDF6vF5FIBC6XS7FWTUNDg2J2C8/z8Hq9qrn54XAYwWBQ8PHFhEIh\n4abo8XjiImGKJKPRqOYyu8nUh0mmLg1V72T/Pmx0z9aYEQ9sUqaT0t9OiWTOGWidGUtjNmqIa8uw\ndYAoa0fvzZi9dr/4xS/w0ksvoUOHDgmdSybgOA6xTzPdi+ThBsbP7o5EIjj99NPx/vvvo2vXrjj3\n3HOxZMkS2Zvl1KlTcemll2LChAkJ98F090gS6EgkIgismnetJY0wFAqhpaUFeXl5Sa2KBBz36Xme\nh9PplC3kpQZbOsBut7eJYLXCWjkul0tIERVPZ6djSpXZZQuLSdkFmUaPd09PL2aN7gmp6J7KUNPf\nR+8TC5tt4/f7rRmqJkHuKYh9gjL8mIa3mCQcx8Hn8wnRR7Jpf5Tby9brSDQLRuzTax2olGqPXa2p\nuLg4zmvWA0XrZOWoLQ5CIim32ARrF9C1ynTuthRy3j3NBUhH2qIUyVwr2o88e2ov0VRMnueTnqGd\nEbLQc9fCmDFjMGbMmLj35ET92WeTL41pyr98SUkJgsGgZrGTEk96PKfCXPn5+UKqWiJI+fRk3+hB\nql+UJqgGe55sHXktOf5KbYqns5PYU+qpXOaHGQU/Ly8PkUhEqC2jlplj9uhe6YlFqioma8HR/lmH\nKVUp+zDlp5odJNW6PbttKBQS6qOzM1a1tikloj6fDx6PB4WFhboHvqi9cDiMpqYm8DzfZiatntmz\nlJNPFpOSsCeS+UNWAZurTjehSCSCYDCIQCAgVMg0Q2aOFGxk73K5hFm1cnn3ZIMkg5HZLlKw5yQ1\nUzgWi6Gurg69evXCDz/8gDvvvBO9e/fGgAEDUFVVhZKSEvzjH/+Ia/ORRx5BVVUVqqqq0K9fP9jt\ndqGkx7x589CvXz+ceeaZmDdvXsLnpYtM56inaIZqujFJN+LRK+6EWhqhnjapxIHScnd6BLm5uTmu\nX4kIAEXUVMpA6ZHb6Ik8ajNRzZSrroRUJCwe2KQnlmxZ25X9+0QiEZx88slYs2YNrr/+ethsNnTu\n3Bkvv/wyunTpgvLyclx++eVx+9999924++67AQD/+c9/8Nhjj6Fdu3b44osv8PTTT2Pz5s1wOBwY\nPXo0/vd//xc9e/ZM7QnlqC2Tbkwp7oD+iFPsPScbPdGNIhnLA0CcT6qW0SN3vuzAK3n0cueXyE1R\nL1py1VmRTGWJXTF6I2exLcUObssNOsudS7LXnU1dTQabzYZu3brB5XLh0UcfFd5/99130bNnz7jJ\nNGIWL16Mq6++GkBrzZnBgwcLg/HDhg3Da6+9ht/85jdJ9U8V06pSdmHay6hVpNhaM1qiWbWsGlZE\nk8mqYZ8i8vLy4HK5FIVd7jjsDNqCggIEAgFTRpHiiJgmdJFIsgO1arM2jayvohd24pSWQWepHPVM\n/n3o5tbS0tImGWHp0qW45pprZPcNBAJ45513sGDBAgBAv3798Pvf/x719fVwuVx4++2320yASgmm\nVaXswpSXUYstww5M0hdRLTNALauGsle0iqjcQC7NVqWnCJ/Pp9iOFOyNhtZoNXNJXTEU2dvt9jYD\ntWqzNs2G1KCzXEopAGEAWu+TihFZSdSG1+uNW2IvFArhrbfeUqxG+NZbb+G8885Du3btAACVlZWo\nrq7GyJEjUVBQgKqqqvTcdE2pStmHaS+jkhCLp/rTOqGJtMneJGhiU6JTf2nwNRqNxj1FaHkKYbeh\naB2A5AxaLRgxfdlolGZtsguC0O/SZeUkglxKKWV5yUX36ToXcY77qlWrcM455ygWpFq6dKlgyRDT\npk3DtGnTAAD33nsvTj755NR0mCFmee6GkFXiTqsi0eSmZLxwQHq5O0LPzUIqyk7kS0w3GrkVlrRa\nVVQSgY0EyR7S269U3iDkBmqbm5uFa5otqYv0tMlxnOYJY+KblxGZNoR4ib0lS5a0EW6WxsZGfPjh\nh1i8eHHc+0eOHEHnzp2xd+9evP7662kp+RtKbI14CxGmFHf2A04fWFY8CwsL24ie1low7GCp2nJ3\nWr5sVIYAkI+ytYgyKwKJRuvsEoMFBQVC+iXlquudjZruiJkdqCULRGkST6oE0qjz1jNhjM7BiJsp\n2TIk7n6/H6tXr8ZTTz0lbCOeGfnGG29g1KhRcLvdcW1dccUV+PHHH+FwOLBgwQLZ0hdGEskz381b\nP5m3UE0p7gDiIk7yv5MRTyIWi6GxsVExq0bLl5uNLF0uV8LrmLKzXmlQOJHomqwqp9MJnueFCS12\nux08zwuTesTFqwBzr4uqNIlHSiBpm0ygJUddybunukc0WU5vlhF7fNaWKSgowNGjR+O2Fc+MnDJl\nCqZMmdKmzQ8//FD1uEbDZ+Os2jaE1DdJMaa9ihSJ0+QhpfoyWiNj8rH1rNokdUx28JV9DFdrS64d\nm82GgoICIUtHTztin58m58jtL87sEOd3szYI/d9MKKVhsgJJNVrMXC8HiI/uadwhPz9fNTNH7Vz8\nfn/cgGo2wRtcHfNExZTizvO8sCpSssvnsZGxy+VCJBJJuN6GePDVbrejqakp6XacTqfu9UbFWTlk\nVeltR+xhszYIO9hp5sJirEDabDZEIhHhCUYqDVPpCcVIW0YvdGy5chBq3j3bd7Hnnk3w1iwmQzCl\nuOfl5aGoqEiIjhNFXJyL6sFo+QKLbxhSg6+JFA6LRCLw+XxC6YBEImO5rBwjYG0Q6jNZO+mycpIR\nWDZPXetVL5nWAAAgAElEQVQTilEDtUbcGKT211obngR+9+7daGhowCmnnIKGhgbMmDEDX375JTiO\nw8KFCzFkyJC49teuXYs77rgD4XAYpaWlWLt2Lb755huhtjgAfPfdd/jLX/6CW2+9Nanz00LEEndD\nMKW4k8Bo9dLF29FjudRyd3r9eXbRbPHgq962aJ3NRJfgo2PRmIF4YJnFyEFBvUJp9KITRiD1hMJG\nwzRQC7TeyM04/kDI/U1o8Pzpp5/Gc889h9LSUvzxj3/E+PHj8corrwjBDktDQwNuueUWvPPOO6io\nqBC8+dNPPx1bt24V2pYqW5AqeHPKUtZhyquoV4jZ7ZSWu9PbB3oEptoycl90tYiN6tQ4HA7ZPqmd\nK0XrgDarKpUoWTl0zdjfmdXKEadh0o08Go0K9XL0eN2ZzNRhJ4PNnTsXTqcTp5xyCh544AEMGzYM\nAITvBMvixYsxceJEYVWg0tLSNm2vXr1atWyBkVi2jDGYa7RMhB5xp9zuQCCAgoICFBYWJiSiQHyB\nrsLCQhQUFCSUVUOZD7TEnVyf1Npgq0ACULVh0p0tQk9aTqcTbrcbBQUFQtTL8zyCwSD8fr+pq0jS\nIC2AuAqSdBMlW05cQdJs50E0NzejU6dO6NmzJ1599VVheb1AIBC33a5du1BfX48LLrgAAwcOxAsv\nvNCmLbWyBUbDIy/rX2bAlJE7oL0yJA0sAq3RSzL1YNhBSgCaJkrJZdWwHr3b7RYW+lY7FxYpb52N\niuX6I9W/dEJ/OzbHW4uVY6bIHtCXp06VMJO51kZG/lREb8uWLZg/fz4GDRokLMB8//33C/uEw2Fs\n2bIF77//PgKBAIYOHYohQ4agd+/eALSVLTAas4hjtpPVkTutPdrS0gIAiuuYqkFtaSmnqwQ9Qfj9\nfuEJQkufxBO32Gi9uLhYVykDasNMUaVUDXK2rjobFZOAJtL/VGa7kJVD9eELCgrg8XiEyVa0NCSN\nrWQyuvf5fOjZsycqKiowaFDrys1XXHEFtmzZErddt27dMHLkSLjdbnTs2BE///nPsW3bNuH3WsoW\nGE0EeVn/kqKmpgaVlZXo3bu35M3ypZdeQv/+/XHWWWfhZz/7GbZv357UdTRt5A7I2x5seiNN0z92\n7JjmNsWDr2yqZDILe4jrvycyiGtUJozP52uzpqiZomOpyUnilD+ys9I1wSqRGwObyUL2oMPhaFMv\nR8uyeJTxYkT//X4/evTogW7dumHnzp047bTTsHr1apxxxhlx+1x22WWYNWsWeJ5HS0sLNm7ciDvv\nvFP4vVrZglSQiwOqPM9j1qxZWL16NcrLyzFo0CCMGzcuboHsHj164MMPP0RJSQlqampwww03YMOG\nDQkf07RXkZ1OzsIud8cOTipNOhK3y6YlilMlE4EG4iKRSMKDnXoyYZTaIEuJJlbRl5YGOsXL5Zll\nkhI7wBmJRIR1RLPRytG7sEkqzoPGnh5//HFMnjwZoVAIPXv2xMKFC+NKD1RWVmL06NE466yzYLPZ\nMHPmTPTt2xeAdNmCdJCLtsymTZvQq1cvdO/eHQAwadIkrFixIk7chw4dKvx/8ODB2LdvX1LHNK24\nA/E1Y0hAQ6GQ5GpGegdf1dIS9UTbPp8vqUVC9GTCKM129fl8QjRMMx5JOMTlB8RRZToX1NACDXCq\nZeWwYkq+d6YnIbEozagVnweR6N+Bjfwp06d///7YvHlz3Hbi0gPsSkwsUmUL0kEuivv+/fvjso0q\nKioUi7A988wzGDt2bFLHzApxV1vujrbVIsbUnpZUSS2pidFoFB6PR7EEgVzfxLNMw+GwbhtGPNs1\nPz8f9fX1sv1QiirFA4SZKj8gd93VrBzqP4miXisnXTcGufOg8QaaaKdlYROWTN7YjCQbJzF9ttaP\nLWv9sr/X83dZs2YNFi5ciI8++iipPplW3EkQ6TE22dxusizC4TCcTqfq1Gwlv58VZIqQ9CLlrVNd\neq0fBLY2TSI5/VJRpXg9URJ+M1oh7M2K+k/1eWhQOp1WTqKeOZ0Hx3HIz88XbqxSC5uIxV7Ouzfb\nvAI9ZKPnPmB4CQYMPz6H4Kk/H4n7fXl5Oerq6oSf6+rqhLkFLNu3b8fMmTNRU1OD9u3bJ9Un017F\n5uZmTWuGEkqROzuxSa3Il1J7UoKspbYM25ZcTRitsE8zzc3NirZSIoinugMQxIb17c1alIvNaAG0\nWTlm6j+hdWET9u8QjUZNdx6JkIu2zMCBA7Fr1y7U1taia9euWLZsGZYsWRK3zd69ezFhwgS8+OKL\n6NWrV9LHNK245+XlwePxtPEj5ZATY6rbTj59MBjUnZpGUaDUYhyJZMLwPC+ZCaM1r1+tBLLeNtX2\nl7IQxLVmxIO0ZrEItFo5JPJkVWWi70rHVbLUaMA5Fovh22+/xcKFCwEAhw4dwpAhQ4TPicPhwKZN\nm+LaXbt2LS677DL06NEDADBx4kT8/ve/BwBNdWlSQS6Ku91ux/z58zFq1CjwPI/p06ejT58+cYPb\n999/P44dO4abbroJACT/XrqOaUjPU4De5e6UomNxWqLWhT1IAGiB6mTz35PNhGHrxyvl9Kdy4pKa\nbx8Oh4Vj0//NbuWQ2FN/yerSW1QsnTcF1lIjfD4f3G43CgsLsXfvXvTt2xderxcbN25EWVmZbFvD\nhg3Dm2++2eb92267DWPHjpWtS5MqclHcAWDMmDEYM2ZM3Hvs4PbTTz+Np59+2rDjmVbcAX0iRdvS\nJBK5PHE9bUYiETQ1NSkunafWHrs6EjsZSQ9sLXoSJTOJpVQ2CKVkiv1is/n2QNtaOS6XS3H1p1RZ\nOcneHDiOQ3l5OaZPn47du3fj5ZdfximnnJJQuYrGxkasX78eixYtAiBdlyZVZOOAqhnJGXGPxVqX\nlFNbx1RLmzzPCxkLataHUnstLS3C6kha6siL25Kyg2hJv3SQ6BMACZ/D4RDSE5XqkRsplkZEz3qs\nHDa6z7QVRcen2dF0w7344ouRl5eHG2+8ETNnzozbh+M4fPzxx+jfvz/Ky8vxyCOPoG/fvtizZw86\ndeqEqVOnYtu2bTjnnHMwb948eDyelJ9HNg6omhHTXkX2S6L2pSHRSHYyEjtb1eFwJJ0JQ966zWYT\nvGmtsHZQIueUSe9YjJSVo7TcX6ZKJ8hdLyUrhyaJkdVH1o7e+vDJni+7v8/nE1Zh+uijj3DSSSfh\nhx9+wIgRI1BZWYnzzz9f2Pbss89GXV0dPB4PVq1ahfHjx2Pnzp2IRCKqdWlSRa7aMunGHNMTZdCS\n1xsMBtHU1AS73S5Eimptyk0CampqEhaozs/P19xHtj22JkxJSYnuuvQ0ONbU1ASHw5HwzYqqMJI9\nYqYqhiSWTqdTqMDodrtht9uFPlK2VCgUEpbOMxOUycLWyqHPazgcRiAQSKiCpBFPHewqTCeddBIA\noFOnTrj88svbDNAVFRUJ0fiYMWMQDodRX1+PiooK1bo0qSLTFR2tqpBpgoRR/KFnc7yLi4sFb1Rr\newQbrVOdGq2DrixqmTBaoL4oDd4q3SjoZheLxeIW7A4Gg6ZeEFvs2/v9frhcLmEMRcq3N2LlJCOh\na+h0OgWLRouVY9S1Z78jJO6BQED4PPr9frz77rv44x//GLff4cOH0blzZ3Ach02bNiEWi6FDhw4A\noFqXJlVYnrsxmFbc5VINxTMyKcc7kehOfINgI2Q90XYkEkFzc7NqJoySTUJ1zp1Op2z9eK3nQn43\ne4Nib1rizJZ0FufSCkX3UnneSoOcyWDk04FWK0fr7FM9kC1z+PBhYfWkSCSCyZMnY+TIkXHpd6+8\n8gr++c9/wm63w+PxYOnSpUI74ro0zz77rGF9VMLy3I3B9FeRFVmpdUwTaU9LbRkt0GQitQqOSm2z\nufhkVejpC/vkQedCi4tLHZsiXvEkHynBMZMVIufbiyNj2paeBPT+XVN5Y1ObmARAKIqnd6BZKnI/\n9dRT8fnnn7fZlk2/u+WWW3DLLbdItilVlyYdmMXWyHayQtypRnokEmmzjim7nRYxolWAeJ5XvEGo\ntUf1bigyS8SGoTYoF9/n86nuw/aLTZFknzz0CBRlhrCCQ2JP1yoQCJiukqRcZEy2FN2o2H6nOgVT\n7wC2+MmDyk4na+UEAgF07tw52dPJGJa4G4NpxZ0+wDSpRG0dUzUxZu0cAKoTieTaYyPtwsJCQQS1\nnA99+cVt6K2ZQ+IVCAQU0z4TgRV76itbn7ylpSUtOd+JQMLndDqFJw/WgjJzyWNAv5XDjj2II3fK\nlslGLM/dGEwr7rFYDF6vFzzPCxkVSiiJO2vnFBcXx9kWehBH2iR+euwL6gstls2KopanDxJ2AIpW\nkFGWihY7BGg7SGsGpJ5KWBtEfKNKpjaLEamMUsdWsnLYsQf67Bw6dAher1fIluF5HgMHDkRFRQXe\neustyWNv3rwZQ4cOxbJlyzBx4kQAQPfu3RXLFqQSy3M3BtNeRY7jhEFALWIhJYxkKVANeCk7R0t7\nSpG2nok+4jo3egmFQkJZ4KKiooxEy3LRpVz5AQCmG6SVK51AvjfZOYkMMKf6POVutiT0v/71r/HJ\nJ5/gs88+w5gxY+D1eoUyBFLwPI/q6mqMHj26zXHWrl0rZM6kE8uWMQbTijsAocZ5IigNvsqlV0pB\n9kcyi3GQ4NGEJL0+P1lTtEKRWvkBNpJLB1KDtJRfn0jZ3WQmX+nZV5yCSU9EeXl5sjZIqnz7RM+Z\nxJ4i+JdffhkzZswQ1kL99NNP8eijj+Jvf/ub5P6PP/44rrjiCsmB00wNqFvibgymFndAX0oiRTHB\nYBDhcDjhCBk4/sEOBoOKvriWvPOWlhbYbDa43W7dloXYxiHR1Nr/TECiyZYfyAbvmwYvpQaY1Uoe\nm2U2MNBaLnvixIlYu3YtnnnmGdmy1Pv378eKFSvwwQcfYPPmzW0sQqWyBanEEndjMLW464lAabvG\nxsakB1/JWwdafe1EZojSsnc0U1VvTRj2xsBaSlqvB1klZhAfvd43bWMGsaS+E+K+s2MOdCNIdIm8\nZM6X3d/v9+Ojjz5C586dUVVVhbVr10ruQyUF6PPBfq7UyhakEmtA1RhMLe6AthK95IkD0OSta82E\n8fl8ql84rZOstIgybZPsCkv09MJxnGA1tLS0wG63myJKVhukBVqfmMw2kxaQ9+3J8xYvkZeJvgeD\nQXz66ad48803sXLlSjQ3N6OpqQnXXXcdnn/+eWG7zz77DJMmTQIAHD16FKtWrYLD4cC4ceMkyxak\nS9ytAVVjMP1V1BplUy0YLfnmUm1KZcLo9a2TFWUSdqUVltT2p3LHrAVEfZJaFNsMqYziQVqfzxeX\n7232mbQU3fM8D4/HozgxTM63NyJyZz9vs2fPxpw5cwAA69atwyOPPBIn7ADw3XffCf+fOnUqLr30\nUowbN05T2YJUYtkyxmBqcVcSWLaWC3niFKXqIdlMGHqyCAaDqsveKbVFIgZAsViYnACQDUT2B3nd\nrP9N1gErPnIrKWVaOKkvWmbSGuV9G2UFKdlQciWPjTq2XDv0Hlt6QI5Dhw5hwoQJAOLLFqSLXBX3\nmpoa3H777eB5HjNmzEB1dXWbbW699VasWrUKHo8Hzz33HKqqqhI+nqnFHZC2PeTWINXrz0tF63qh\nWZxUTTKR0rxUs91utwuCpbYP+38qP0CWlNfrlb0O4gwRsdizUTJ7jEyLvZRgSg3SAhBKOaTTflK6\nRnI2FHuDZSPvRG6w7PHFfRk2bBiGDRsGQF7U2boxPXr0kCxbkC5y0XPneR6zZs3C6tWrUV5ejkGD\nBmHcuHHo06ePsM3KlSuxe/du7Nq1Cxs3bsRNN92EDRs2JHzMrBJ3qQWq5bZVg6apJ5MJQ6IMQDXv\nXKot9nyKi4vj6qNogS0/kEytHVbsqV9s3RxxvRMzRPZy0XEwGDT9TFopsadoPhqNIhKJtMm115M+\naoZzTIZc9Nw3bdqEXr16oXv37gCASZMmYcWKFXHi/uabb2LKlCkAgMGDB6OhoQGHDx9WXCJRCVNf\nRfoyRqNRob53sqsssROBiouLdQsyEC+qWgdexUiVD9AyeAwcF4NgMBhXpljMK8WtC+2O9T+qq2+U\n6kezb51Op24POVESTeEkwQRal8kD4qfua7GfMvWEQseUezLRU/KYMqSymVy0Zfbv349u3boJP1dU\nVGDjxo2q2+zbty83xR2AIDAtLS2qddKVxJ311rVMBJKCjdZJlOl9rfuz/Ui07ns4HFbcn+M4QdgB\nYGWXuwAAV3r/pftY1J4e4TFCXBIRWfbvIB6kVbKfWN87UYy+Maj59uKSxxQUeL1eFBQUGNaPTJCN\n4v792lrsXfu97O+1fjbEn8FkPlOmFveWlhahUqJalE1IfUHJW6f8d7Jk1JCzhFhvnX6v9uXmOA48\nzwsrLCXi8YdCIcFbVroeKzreKvn+y0W/AqBP5KWuk5YBQ+pvJtIv5Z7q5OwneiKhm3eqZ6Pq6Tf7\nO7X00XXr1mHBggXwer0444wzYLfbEQ6HcdlllwmZM8SKFSvwhz/8QXgCePjhh3HhhRcKv9dSkyZV\nZKO4VwzviYrhPYWf1//5w7jfl5eXo66uTvi5rq4OFRUVitvs27cP5eXlCfcp89MCFXA6nbqq24m/\nHFQqOBAIoLCwUFgEQ483T8veNTY2ClYOG5lqveGEw2Ghxo3cYhxy/aLyA7TYNlVslOKl/Gmq/Xm5\n6FeC0CuhVdhIeJxOJ9xud9x1jkQiCS85l2rES+XRTQs4PjOY6v6TDy6HEamMeqBr7nA4hCfIs846\nCyNGjBDGSHiex/bt27FmzRr897//jdv/4osvxrZt27B161Y899xzuOGGG+J+P2/ePPTt2zcjNlUE\neVn/EjNw4EDs2rULtbW1CIVCWLZsGcaNGxe3zbhx44R01Q0bNqBdu3YJWzKAySN3thqeFlhxFEfr\niX5IyatVW4xD7stNKYpAa60cveUQ2BRHWk5Qrt6OFmFnSSSS1wKbfkl2h5z/bbbBTspYArSv/pTp\nftNnvmPHjhg4cCD27t2Lf/zjHwiFQsIKX+ICYKx14/P5UFpaKvy8b98+rFy5Evfdd59sTZpUkosD\nqna7HfPnz8eoUaPA8zymT5+OPn36xKWmjh07FitXrkSvXr1QUFCQ9MpXWXEVteYv04AkLewhlwmj\nZeCSvhiJVmAUlw+IRCKa+s/aPOwKS2oLdusVdhY2ijda6AF1/1u8KAVgnvRLLeWO2Tz1RPttxPly\n3PHFsaPRKM4991x8++23uOmmm9C3b98227/xxhv43e9+h4MHD+Ldd98V3r/jjjvw8MMPy9akSTXZ\naMtoYcyYMRgzZkzce+LU1Pnz5xt2PFOLu978dUrfU8tb1zrwSos+6BFloNWv9Pl8cTNVKR9eC3pS\nHJMRdSlSFc2zyPnf7MIniaRfpvqGoHSTohsU5dhnKm3U7/cLlUc///xzNDY2YtSoUVi7di2GDx8e\nt+348eMxfvx4rF+/Htdeey127NiBt99+W7UmTarJVXFPN6YWd0JN3EmQw+EwHA6HpmwBLQOvVCdE\nK2w2jVKKotL+0WgUTU1Nsvuz18JoYWfplu8H8oFdjen5orGLUlDNe3H6JZvGmIrBTr03B/YmRQt9\n2O12xZWT5Ppt1MxacbZMSUkJLrnkEnz66adtxJ04//zzEYlE8OOPP+Ljjz9WrUmTanJxElMmyHpx\nZwWZ6pFoaY+FarKEw+E4K0dr3jllwkitZ8puo9QWDdzyPI/i4mLVsYZUCvudoeN58b1LeAB+1LXo\nS69LdsA0E+mXRiC1cpJcuWOjIntW3P1+PziOQ0NDA9q1a4dgMIj33nuvTW2Yb7/9Fj169ADHcdiy\nZQsAoLS0FLNnz8bs2bMByNekSTW56LlnAlNfRSVbRqomDImjlnapPaVl77RA0bbf7094PVO6QVHa\noJqwv1l6m6729cAKO0u3fL/wf61Cb6T3LCf2bJ11+rtGIhHZST6pQly4S6nfUoO0wPGyCckM0tLn\n8MILLxTGB6699lpcdNFFcYN3r776Kp5//nk4HA4UFhZi6dKlku1lYtzDsmWMgYuZISdNgVAohKam\nJjidTmFQkY3WKYWN3qfJTkpQBorD4UA4HBaKfYlpaWkRonkpSNSpDUpJk0KqLfaJgR6lA4EASkpK\nkF8f31ZLh9bc8XRF7FpQEnm/35/Q4iRUQkDvRBwSdcpTl8psUeoLpZvKpamq0dzcHFfoTE+/6Zyp\nsiSgr5BbJBJBOByG2+3G7NmzMXz4cIwaNUr3OZgBjuNwbezfme5G0rzA3ZDxdF9TR+4EfbCVKjjS\ndlouKOUsx2KJLXsHxJcIJj9YD+IURyrJK0d+vQsLT7pG1zH0oFfYgePR/B5/fton/Igh75tWvGIj\nZD2ljo3wvfX2m14ul0vTTFolsac5HdmMFbkbQ9aIO02GUctbVxJ3Nj2R47iEvgQU4bE3GKUqjOw5\n0BdXLcVRHLWbTdTFnFpwvNTy7qbj5YYziVQao9i3B+IjZDOgZSateLyBBnOB1px1PRP/zIg1oGoM\nphd3mt2pVsERUI662IU0ioqKNC17J47c5fx5rRFbLBYTjis36CoWxUSEfdoli1v3fVt5XyOEXUyv\n4ggaXy/FgZ8fFKyGTEzlFyMWTakIGWitFpruNEa1qF9pkJYGlwHgiSeeQGNjI77//nvcdtttOHLk\nCDiOww033IBbb40vSfHSSy/hr3/9K2KxGIqKivDPf/4TZ511Furq6nDdddcp7ptqQlCe02GhDdOL\nu9frFWY7qvmZUuIojpTJW9eb4ii1nql4G6X9I5EIIpEI3G634qBrWbSL8H+9wk6iLvWzWOhTIeyN\nrx/ve9cPW5dpWzDp+Hne9D5w9KwfFKsapgux2JPl53A42qRfahH7dE66Eg/SUl9jsRh27NiByZMn\no3379li8eDH69++Pc845ByNGjIgrL9ujRw98+OGHKCkpQU1NDW644QZs2LABDocDf//73zFgwAD4\nfD7JfVONZcsYg+nFvbi4GMFgUHcWDCC/7J2eYl+Ud660dJ7apChaMSovLw9ut1v1PIDkhV3p9+1e\nP6irbS2wws5y89Lj1+UmcCjd3gk1Fw5H/4OLdQ14pgOl9MtUljo24saQl5eHWbNm4Z133sHGjRux\ne/dudOvWDYWFhejTpw8OHDgQJ9BDhw4V/j948GDs27cPANClSxd06dL6t5TbN9VYtowxmF7cKcLS\nU8VRKlpnvzxavkg0ISkajQrRut4vYDgchs/nQ35+PvLz84WFPZT6Dxgv7CzpFHYx3A8/3VQ/4FBz\n4TUY0vC6MOBJ4yC0FCAJqR7SUXZXLtfeLMXQKGumf//+AIDa2lps3boVgwcPlt3nmWeewdixY9u8\nr2XfVGDluRuD6a+iHnEnmpqawHGc6lqkcmJAE5Lo92p1XcT9k5oUpZQJQyxxzwDcuSnsLNwPMWAZ\nsOqqCwAAQxpeF34XiUTA87xwI0xXkS6ttYvkctYBxE1QYv814thq+7PHYQdXr7jiCsybN082eWDN\nmjVYuHAhPvroo7j3teybKixbxhhML+6AthRHirQBCLNVE5mQxJYPcDgcuosnkRWUl5enmGYpJpH8\n9WwUdpYxy9YI//9xRL3wf0oLpJm/Zq0kydpK4XBYmOcgfhpJ5w2KCIfDmDhxIn75y19i/Pjxkttv\n374dM2fORE1NDdq3b69r31RiibsxmF7c6YugJO7s1H8Ammq6iG8YUotxkMWjpY80EUXJCpJr60QU\ndjEd32stSXvg5weFWi2E3W4XVs6SE3uyc9LNU8XFcT/PbGrSVEWSFXsjInfx/tOnT0ffvn1x++23\nS+6zd+9eTJgwAS+++CJ69eoV15bavqnG8tyNwfTiDsh75GykTVP/GxsbdfnzQPyEpMLCQt1fNKpG\nSdG6npxpvcKuR9SB7BD24w0DXd9qzbI5cvkPcdeRxD4Wi8FutwsZS+KywQCEv0WqUxnFwi71Hom9\nXKljgm5cyfbZZrPho48+wosvvoizzjoLVVVVAIDZs2dj7969AFrLD9x///04duwYbrqpdTlGh8OB\nTZs2Se47Z84cjB49OuE+6cXy3I3B9OUHKFPB6/WiXbt2wvtspF1QUCD4oI2NjXE/y9HU1ASXy4VQ\nKCRMSJLap76+Hu3bt5f8wsViMeHGQMIu98WMRqNobGyMe/zVLewbGWG/X337rBH2RuVfH7j0YBtb\ng32qorRKqtXClljWmsrITuHXgpSwa2GmyOajgnF0LnrSL4lAIID8/HxEIhFceeWVWLNmjeL2Zobj\nOJwbW5fpbiTNJm5YxgfYs+IWyUbZJKiBQEC2UJfW2u/JrNREedE8zwvTxvW0kZSwq5A1og6oCjtw\nPJoHgEOXHY4TQBrToCJiAITInrVF9Oaty5GoqMvtP/OnNFuO44Q+S5U6Zgdp5fpMC3VkO5bnbgym\nF3c2UuN5HoFAANFoVHbZO7UvK2WyRKNRuFwueDwe1eOLhZudqVpcXIxQKCS79J24Hb2ifgSdcc/G\nx9r+4g+QjN5zTdjFdFlxfE3JoxN/jKusGIvF4uwagq20SZ8jsXDS75RIVtjF3Hk/gMeKUQTgx5uP\nAkis1DF9PnOh9ABw4ol7fX09rrrqKnz//ffo3r07li9fHudSAEho5rCpF8gmSFibfvIvleqdKw1c\nRiIRwZOn9T21HJt9avD7/fD5fHELXWtN1Vx10t2q27DICjvxh/gfc13YxZS+2hFlb3RG17dOEiJf\nnufR3NyMSCQiiB4bwZNVk5+fL2REUYkLGhQnq479m6ZE2Bk6LiiV3I7EnhbxZudcUJBBM1Pfeecd\nfPrppygrK0O/fv0k29uxYweGDh0Kl8uFRx+Nn6U8bdo0xX3TRaYXt07FAtlKzJ07FyNGjMDOnTtx\n0UUXYe7cuW22oZnDX375JTZs2IAnnngCX3/9tWK7phd3WhMVaF3Uly3xK4VcCYJgMAiv1wu3253Q\noMAuleMAACAASURBVGkkEkFTUxOi0ShKSkp0l3Zd7Jqua3tVYSd+EvgTTdjFdGnpiFJ/CQoLC1Fc\nXCxkTD3Z/n50ONAx7tV+fwe029ce7Ra2F3LEaWFsEnsaS9ldNDjlwk4UPaZ+HBJ7p9MJt9stlEb+\n8ccf8dZbb6G2thYejwdHjhyR3L9jx454/PHHcffdbQONqVOnoqamRvuJpAge9qx/6eHNN9/ElClT\nAABTpkzBG2+80WabLl26YMCAAQDiZw4rYXpbBoDgSeqNtAHp9UyltlOiubkZoVBIMsVRra1YLKZL\n2I+gMwBoE3biD+qb6CVrhH10/OSwgqNU9ycfc07+De75QuE6jgQ6HOgo++u/pSCAlRN2ouixYnhv\n178w9XnnnYdwOIzzzjsPQ4cOxaxZsyS369SpEzp16oS33367ze/OP/981NbW6j620Zxotszhw4dR\nVtZqN5aVleHw4cOK22udOWx6cc/Ly4PH4xEqQ6rBZlIorWeqRdwp4yISiehOcQRao/1lBTdo3j4h\nYf+Jhq0noV2VMdF7JjJiEmK08qzf3+19GL8rfhixJn1PWYDxwq4m6iyJCDx57sXFxTjjjDOyemA1\nG8U9uHYzgms3y/5+xIgROHToUJv3H3zwwbif1Sa56Zk5bHpxJ/RE2tFoVLG0LrWnREtLCwKBADiO\ng9vtVhR2qfIDLS0teLXkZk39BZITdsIIgc8VYWfhilsHu7WKfCaFndAq8Oxgv9/vz2pRJ7JxEpNj\n+BA4hg8Rfj725wVxv3/vvfdk9y0rK8OhQ4fQpUsXHDx4EJ07d5bcTu/MYdOLux5vnDILKF9ZrQSB\n1M2CXe2pqKhItdiX1P5L3DMA+RX32mCEsBPJCHwuCjsLiTwgLfRbz+yDNZzyIJVeEhH2RPH5fLLC\nkE2caJOYxo0bh0WLFqG6uhqLFi2SFO5EZg6bfkAV0FY8jAZeI5EIHA4H3G637oHXcDgsFB0rKSmJ\nS0dT6x8Nwi1xz9B8XkfQWRD2nvgWnj718PSpV9krNWSFsI+OJCzsYrjicJzY/60fTCfsWgZY2chd\nT557pifYKMEjL+tferjnnnvw3nvv4bTTTsMHH3yAe+65BwBw4MABXHLJJQAgzBxes2YNqqqqUFVV\npTr4bfoZqkDrdHKv1wuHwyFZoZEtH0Brkap9yNkFq9nFOMSrPdFC2kqVISmTRk+q4xF0Rk98K/w8\npWlRm20CX3fQ3J4YrdF7tg6cGsmjp+j35NUwMmJXsmfYmbUPPPAANm/ejB07duDo0aMoKyvDn//8\nZ2EOxo033ohDhw5h0KBBwhoFRUVF+Oqrr1BYWIirr74a69atw48//ojOnTvj/vvvx9SpU407EQ1w\nHIfOse/TesxUcIQ7JeM30Kx5/pFLcRSX1mVrjGhBbkEPpeOK9/f5fJqFnUS9COrL/FEUn4jIa7Fn\nTnRh33LyWYZH64DxVoxW/93v92POnDmKWRRdunRBXV2d5O+WLFmScB+NhI9mn+duRrJC3KVsGZrA\nYbfbEyofALQKs9frlU1xVIJdEGRll7tUtycxlxJ1qaidhbVq9Ai9ksBnjQ2TIlIh7Kn014seK0bj\nrQ1tsikStWXMTCRiibsRZIW4A/EpjkrrmWpNcWxubhYmJKllwmwpGSP8fBTHZxJ6XcpTvcXWixHo\njealBP5EFnYSdaNLa6Vj4LTkH+1waObBuPID7Gfd7/fnRvmBSNbIkqnJigFV4HhJ1KamJvA8j5KS\nEsmFqtXEvaWlRShjwNYVEfNx/gX4OP8CfN7+krj3S3FU+H8RvG1e7PtahF0tapdDz+Brw9bjhbcs\nYTe/DaNEl6dOgt1uRzQaFSbX8TyPJUuWIBwOw+PxoKamBpWVlejduzceeughyXZuvfVW9O7dG/37\n98fWrVuF97Xsm2r4SF7Wv8xA1twiw+EwwuGw6nqmcuIuTnEEELfAB9Aq6FooxdG4CJ5Fi5duJFoj\n+YatJ4GrTcEAj0HC/osbWm9yy/dONqZBhi0nnwXA+GwYIL3CTnR4oiOOzaqH0+kUCqd9+umn2LBh\nA3r06AGe5/Gf//wH5513HgYNGoRx48bFLXC9cuVK7N69G7t27cLGjRtx0003YcOGDeB5HrNmzcLq\n1atRXl4uuW86MIs4ZjtZIe5Ut50KKCkhl+JIVRzJn6fZpwAQyKca6wM090lJ4DMB97vWc3G/cSzu\n/WQyblRJUthJ0IHUiDqQe8JOtJ/fAT/efFSoiPnQQw/hiy++wL333ov/+7//w4ABA+BwODBp0iSs\nWLEiTqDZWiaDBw9GQ0MDDh06hD179qBXr17o3r07AEjumw4iYUvcjSArxN3j8cBmswlrpGpFyZ/n\nOA7OslMRSKJfyQp8opaMmOD49nH/ZwWetW7cfVrfD646vn3CJCHsrKgDVrSeKB0XlOLrK77C4cOH\n4fV6sXfvXvj9fgwcOFBYFKaiogIbN26M22///v3o1q2b8HNFRQX279+PAwcOtHlfvG86iPJZIUum\nJyuuotZV5IHjkbtaimOzu23BqAH4HJ/riN4B80XwQFuBF+Mecyw5gU9A2MWCTljCnhy1tbWYNWsW\n9u3bh+HDh+P999/XtF+mc7AVsWwZQ8iqAVU9H0iv1wuXy4XCwsI4YQ/kt2dsmLYMwOe6+8YOsmol\nFVG7+H253wGtAu8eI38DkKQR+oX9PQDdgeXvTol7e/neyYYL+5aTzzqhhN17exPWrVuHoUOHYufO\nnZgxYwaKi4vj8tjr6upQUVERt195eXncNvv27UNFRUWb96X2TQuRvOx/mYCcEne2YFhhYWFcJUg1\nUWdJl8CnAyWBB3SIfCKi/h6AmcffIoFPpagDJ4aw/3jzUUyfPh1utxvPP/88TjnlFFx55ZWYO3cu\ndu3ahdraWoRCISxbtgzjxo2L23fcuHF4/vnnAQAbNmxAu3btUFZWhoEDB6rumxYiXPa/TEBW2DJa\nastQFUeXyyUskkxoFfVk0WrRpDpql9pOyaYBVKwaPcIuX/wOwE8CX9ma6rjk5CsBAFfvfVnHAeJh\nRR04MYS99to9mDJhAm644QZcc801cZljdrsd8+fPx6hRo8DzPKZPn44+ffrgySefBNBagmDs2LFY\nuXIlevXqhYKCAjz77LOK+6ad1M1dO6HIitoy0WgUoVAIx44dQ4cOHdr8jlIcCwsLYbfb0dDQgKKi\nIpT9NFy613NyQsfV678TagKfbnFnURN5QDTgqkXY5QR9psz7AGLgsHTk8ep3egX+RBR13x1e7Nix\nAzfffDMeffRRnH/++ZnukuFwHAdsM70kqdNfn42cCrLGliHEJQikqjiKo/yTA3sTOlYi9gygbNFk\nUti17idYNWrCTtaLTsTCDhyP4rVwIgq7/04fPvjgA/z617/G4sWLc1LYBSI58DIBWRO5h8NhHDt2\nTMhTVypB0NTUBLfbjZNszXHvmyGCz7S4E2oRfHBpe8Tu5cDNlvh4aBF0mahdSthZlCJ4sagDJ4aw\n/6bpbnAch61bt2L58uVCmmMuwnEcsMH0kqTOECty1wR5ihzHCeV11UoQiIU9GYyK4M0i7NSGVDvB\npe0FYQeA2L2c8P9EI3UiBvWBJrkI/kQV9q+v+Arfffcdli5dik8++QQTJ05ENBrNdLdSC58DLxOQ\nFeIOQCgaRnXbxSmOLHKlCRK1Z5LBrFk0RNwEqJ9EXRBzBqn3ZJGI2knYlaJ2KcSZMECrqOe6sDfe\n2oAjNx5GdXU1Bg8ejNraWhw6dAizZ89u87mfN28e+vXrhzPPPBPz5s0DANTX12PEiBE47bTTMHLk\nSDQ0NAjbz5kzB71790ZlZSXefffdtJ6XJjJtqVi2TPrgeR7Hjh0TasuolSAo5ZXru6TbngGAS5ra\nrjafKEZE7nEMAbALiK3RJuDcBQofmUcjwI74JKxEhP3qvS+fsNG69/YmHDp0CNdffz3uuusuXH75\n5bIByxdffIGrr74amzdvhsPhwOjRo/Gvf/0LTz75JEpLS/Hb3/4WDz30EI4dO4a5c+fiq6++wjXX\nXIPNmzdj//79uPjii7Fz507NkwRTDcdxwPumlyR1LrJsGU3YbDY4HA5dM1WVSPcAKwAES/IQLEl+\nckNKhB3ahV1xWwVh14uUPXMiCPvd//cXbN++Hddccw3+/ve/Y8KECYrrDOzYsQODBw+Gy+VCXl4e\nhg0bhldffTWufsyUKVPwxhtvAABWrFiBq6++Gg6HA927d0evXr2wadOmtJybZjIddac5cld6yhLD\n8zyqqqpw6aWXqrabFeLOcRzcbjdsNpvq3VAtaifSKfAXcsfXOjRK5A1hCBD7N4fYv/ULcGwNFy/y\nj7b9RLPCrteOAYBvcLrw/xNF2M9dfhqqq6vx2muv4dxzz1Xd58wzz8T69etRX1+PQCCAlStXYt++\nfTh8+DDKysoAAGVlZTh8+DCA1nU52VmnVFfGVGRamNMs7nPnzsWIESOwc+dOXHTRRZg7d67stvPm\nzUPfvn01LSyUFZOYCL0lCFKF1ho0rKiLIYF3N2offTE6ak9E1Nu0sYYDFgMcwnFRe7LCTnyD03GA\neyOpPkphJmG/+//+Ivz/pZdewsqVK1FcrL44NgBUVlaiuroaI0eOREFBAQYMGNBmjQLx6k1iElnF\nLKWYxLNOF2+++SbWrVsHoPUpa/jw4ZICv2/fPqxcuRL33Xcf/va3v6m2m1PirjVqJ04O7E3Yf1dD\nSdhZEhF5AIhVJPmFLABwOoDEJ4ce5xogBge4xa1/m0StGDm6xsYbKvBmFfbD136DV155JW6Bdi1M\nmzYN06ZNAwDcd999qKioQFlZGQ4dOoQuXbrg4MGD6Ny5MwDpujLl5eUGnImBnGDiLveUJeaOO+7A\nww8/jKYm9fV0gSwSd7USBIlG9IkKvFL0rlXYWVirRkro2ajdEGEnWGs7SaGPXfNTvxYffy+ZqN1o\nzCTqQLywA8D69evRt29f7Ny5U1c0feTIEXTu3Bl79+7Fa6+9hg0bNmDPnj1YtGgRqqursWjRIowf\n3/p3GDduHK655hrceeed2L9/P3bt2qXJ/kkr4Ux3IAG+Wtv6kmHEiBE4dOhQm/cffPDBuJ/lnrL+\n85//oHPnzqiqqsLatfLHYckacQfkI3ee54VSA4lgpMAnIuxi5KL52z+Yi79f97vkGi9Q+B0JfbLR\n/DWIE3gjSDZ6N7uwA63le48cOdLmyz1nzhy8+OKLsNls6NevH5599ln4/X5cddVV+P777/HDDz+g\nS5cuyM/Px4IFC7BgwQK88sorOHz4MB5//HH07dsXy5cvBwD07dsXv/jFL9C3b1/Y7XYsWLDAfLaM\nSfLEdXH68NYX8cqf43793nvyE0TknrJYPv74Y7z55ptYuXIlmpub0dTUhOuuu04oACdFVqRCAq2l\nBgKBAHieR0FBq0LFYjGEQiEEAgH0Lk7+PpVMiqQRoi7LBcWpF3YpDLBslh41NnJPRODNJOzcnhju\nWvhAm/cfwe8lt6+trcWFF16Ir7/+Gvn5+bjqqqswduxYfPnll1mZ6qgGx3HAoqyQJGWmaB8f/O1v\nf4uOHTuiuroac+fORUNDg+Kg6rp16/DII4/grbfeUmw3O/7iOD7oQxcsGo3C7/ejubnZEGFPhmRS\nJNW4PbYAsQoueWFPhCuZl1Y2x78m7TF2MLRrTN/NwmzCrpfi4mI4HA6hOF4gEEDXrl2zO9VRjUxn\nuqQ5W+aee+7Be++9h9NOOw0ffPAB7rnnHgCtmU2XXHKJ5D5anrayJnKnD3Y4HEZ+fr6wJqrb7Ubn\nmF+9AY3ojd47jBXZQau0DXaocXtsAQAYJ+p6o3Y5pKL5zeq7LT01/RG8mYWdjd7lonbi3//+N+66\n6y643W6MGjUKL7zwAtq3b49jx1rrA8ViMXTo0AHHjh3Dr3/9awwZMgSTJ7fWzJ8xYwbGjBmDiRMn\nGnxGqYHjOODJrJAkZW7MfGZf1kTuRCQSgc/ng8fjgcvlMlTYAe357x3GBtoKOwCMKT7+ShDTCjsQ\nH8lThK4BoyN4Je683zzCzu2JSUbsj05TFnTi22+/xWOPPYba2locOHAAPp8PL774Yvwxsi3VUY1M\nR91pjtxTRdYMqPI8j2AwiFgshuLiYsRisdYCSim4PSkNsEoKuhyswGuI6EnUAZMK+0/EHgTADPJz\nGhfzmLTnDcMieLkBVrOIOqBuwzw67feILVRu49NPP8X//M//oGPH1jV/J0yYgE8++QRdunTJ3lRH\nNUwijtlO1tgyfr8fLS0tCIVCKCwsBABDKz9KIRZ4XcKuBCv0v24b4Xd8rO2MwaPXV+g/TqqEXQGt\nQm+EyF9d/Doe9R6PSrNJ2Ak1cd+2bRsmT56MzZs3w+Vy4frrr8e5556L77//XnIQjgZUN23aJAyo\n7t69O2uid47jgEezQpKUuSvztkzWRO5Op1PIjvH7/a0fgsL0uEqGiHov5v8Sgq5G6XP74n5OSOzT\nQKwk/mc5sU82ir+6+HUAwF1FP02c+o15xIv7Qx2An/5eU4//naLPxNDQ0BBXj/2bb77BpEmThJ+/\n++47/OUvf8Evf/lLIdURAM4++2zY7XacffbZOHbsWHanOqqRjXnuJiRrIvfq6mrs2bMHP/vZz1Bb\nW4vLL78clwzsm9Jj+grU10OV5deJ7SYVtWuhjdhnIGpXQ0roExF4EnYpMinyraIezw8/uFBaqu1z\nFI1GUV5ejk2bNuHxxx/PyVRHNTiOAx7MCklS5r7MR+5Z84mYM2cOrrrqKjz44INYv359Tgp7MpQ+\nt094/ev56w1vP1lhB1qjenoRegdalYQdALiHM/OFkhL25uZOmoUdAFavXo1evXqhW7duuZ3qqEam\nB0OtAdX0YrPZsHfvXjzxxBO48sorEQ6HsXHjRow5uzLTXTOMRKN2lgdsrVkY//rn9QCAX930XNJt\nGiHsLA92uAvo0Pb9XvhWcT81YSdI4NMVxUsJO8931R1NL126FFdffTUA+XojBw4cwJAhQ4R9TFnV\nMVlMIo7ZTtaIO9BaOIdwOBw477zz4AVQFDB2taNsi9qVMFLkU81u9JR8vxe+1SzsLOkQeSlhj0bL\ndfvcoVAIb731Fh566KG2x8i1VEc1gpnuQG6QVeIuh9fTKsZGiHxSwp4ERkbtUpDIA/qEPiVRu052\noyf+0nR33Ht6BJ97OGa4wEuJOgDEYokNdK9atQrnnHMOOnXqBEC+3khOpDqqkY21ZUxI1njuWiCR\nT5Skhd1kUbsc//rn9XFiL4cZhF2KV3EFHkI1BjRtkHxJwT0cM8yPlxP24uIz8MILLyTU5pIlSwRL\nBmit3rhoUeuC6uKqjkuXLkUoFMKePXvMWdUxWTLtl1ueuznxekqxEJNxW2Cerv2yXdiVonY5lCwb\no4U9ncgJPABwxclZNUoR+w8/7JbMkGhoaMCMGTPw5ZdfguM4PPvss+jdu7eQ6titWzd8/vnneOqp\npwC0Jg/kdKqjGiYRx2wna1IhE0GrTWOIFZOEuKfaktEKiXwqhN3IqN0otv5lqK7tE7VipkyZgmHD\nhmHatGmIRCLw+/148MEHT8hURzU4jgNm5IAkPZ35VMicFndAXeAzLexA8uJuhLCLubH+OUPbM5u4\n34vZAIBfcHcm0UovVWFvbGxEVVUVvvvuu7j3KysrsW7dOsFbHz58OHbs2IE5c+bAZrOhuroaADB6\n9Gj86U9/isuQyWU4jgOm5oAkPZt5cc85W0aM0mBrpgZPWYyI2o3iV3XPxf0cM2gilFHCngqWx/6W\nsMBrGTzds2cPOnXqhKlTp2Lbtm0455xz8Nhjj53YqY5qWLaMIWTkWW/atGkoKytDv379hPfq6+sx\nYsQInHbaaRg5ciQaGhqE382ZMwe9e/dGZWUl3n33XeH9zz77DP369UPv3r1x2223KR5TPNhqmLBn\nodcuhVjYAYDzt77MgpGWTLLEYsM1bReJRLBlyxbcfPPN2LJlCwoKCtosxHDCpTqqkenB0BwZUM2I\nuE+dOhU1NfErF82dOxcjRozAzp07cdFFFwlfgK+++grLli3DV199hZqaGtx8883C485NN92EZ555\nBrt27cKuXbvatCnG6ylNOqMmjhywY35V95yksLMkI/JmjNrJkiGWx9RXkmfRKuxAa+RdUVGBQYMG\nAQCuuOIKbNmyRajqCODES3VUI5wDLxOQEXE///zz44onAdA13Xrjxo04ePAgvF6vkAZ23XXXCfuo\n4fWUIrdHGtTRIupi9Aq8kcKe6qhdr8BrpUuXLujWrRt27twJoLXEwBlnnIFLL730xE11VIPPgZcJ\nMI3nrteDdDgcqKg47nmWl5fr9iZZgdf95JvFdoxeUReIHC/+Ja7+eKIgFbV3794dxcXFyMvLg8Ph\nwKZNm1BfXy+kOnbs2BGTJk0Cz/Po2bMn+vXrhxdeeOHETXVUwyS2RrpgPyvdu3fH8uXL0a5duzbb\niVNqFy5cqDjQbsr8KjUPMhXEYvGvVJOJgVQ90Xp9wY84kn8YB+0HcCT/MOoLfkRTx+NlHbnG4y8p\nzGjHAG0tGRa16F3OjuE4DmvXrsXWrVuFIl6szTh+/HiMHDkS27ZtwwMPPIAVK1bgm2++wZdffgmX\ny4Wampq4L/O9996L3bt3Y8eOHRg1apT+k8x2Mu2Xp9lzl7Okxdx2220YO3Ysvv76a2zfvh19+vRR\nbNc04k4pYYC8B1lXV4fXX38dv/nNbzB58mRs374dQOud7+abb8b69esNG4xVFPosjdr/1e16BDr6\n27y87Zpw2HkIP3qOwt/Bh0BHP1wuFwoLC1FcXIz8/HzEYjEEg0EcdB3AD4VH4tpVE/pkSedAqpzA\nq/ns4rS3E7qqY7Jk2i9Ps+cu91lhaWxsxPr16zFt2jQAgN1uR0mJ8uOzacRdy3TrgwcPwu1249tv\nv8Wnn36KpqYmLF26FHPnzkU4HMbSpUtTMhjLCn1Jy6GkzzWdUft1gSfiXmJo8ZP8/Hy43e42T0wc\nxwkLkf//9s4+qsnz7uPfOyQIUYqIIg5aZAqhKgJKoWtZcbzIi1odTJ0wmVqrxz5KXXcKiu70VB95\nma5Tca6drbrJedRtx7MiaCtqUR7kTbTUWq1A8eCKVV6FEEJI8nv+yJN7BAgkGEiC1+ec+xy9X0Lu\nnJxvfvf3+l6/y8HBAQ4ODhCJRGhyaMQP9g/7vZ5W5HfW/WHE7mmk6SvwQwk7x3GIiIhAYGAgP8t0\nMJuxt534TEYdh8Lcfvkoe+76viu96R2pnTdvHt58803IZIMvImQWz33VqlW4cuUKmpqa8Pzzz2PX\nrl3Ytm0bVqxYgU8++YT3nYD+HuQnn3wCjuMwYcIEBAcHY/v27fj++++RlJSE6Oho+Pv7Y8GCBcjM\nzNQ7GOvh4THgYGx0dPSQ773N1hU4qLuPSzb5R6SXoar2gQR8IIgIcrkcPT09GD9+PGxsbAy6TiAQ\nwNbWll8Zq2N8O5RKJZza+vfw7S3w/+05PJtmpGakdmxtR2dnJ4pcNwx6jSHJmOLiYkybNg2NjY2I\njIyEj49uG2oWdTQSa/Tc2wqBJ4V6D0dGRvLORG/27NGdDq7vu6KN1B46dAgvvfQStm7diszMTOza\npX9tSbOI+8mTJwfcf/HixQH3p6WlIS0tTWff/fv3UVdXh6+//hovvPACPv74YwCjNxjbG+or9qcB\nFA/75QxmU/0RtDh0QKlUQqlUQiAQoEvYBZFIBBsbG72ioVar0dWl6as6YcKEYU9t5zgONjY2sLGx\nQaeLFF1dXZjcMWXAc3fW/QE7PH8HALCHidaiHSaPNz6CSiqFTCZDjPR/kJWVherqasSf+s/7MmZy\n07Rp0wAAU6ZMwc9//nOUl5c/210dnxZrFPcJCzSblvr3dQ4XFBTovVTfd6U3A0Vq9XnzWizGljEG\nqVSK+Ph4HDhwAA4ODjrHBquSlEoltm3bhoSEBJSUlGD79u0AgPb2dpSWlppsAhWt1Ah+702LoZZM\n88duaBK4oaZ9PLJPX0WTQPP/jXQUYfe2Q3loPl7fEo/Y2Fjs2rULZWVl/L3L5XK0t7fzi4qrVCre\njlKpVJBKpRAIBBCLxSbpWaJWq9HZ2QkiQqeLFLKpA2cm99TtBgB0QfzUf3O4tPxXM1QqFQQCAaKi\noiCRSHDu3DnEx8dj4ZMTWI5cfjOkapfJZOjo6ACgWcT9woUL8PX1fba7Oj4t5vbLR9lz1/dd6Y2+\nSO1gWF1vmZ6eHixevBgxMTHYunUrAE2fjsLCQv6X72c/+xnu3r3L/7Jt27YNgKZPx/bt2yGRSLBg\nwQJMnDgR+/btQ1ZWFhobG1FaWjpkE6fq6mpwHIegoCAcOnQIQUFBiI2NRXJyskG2zkh8HmVlZfj8\n889x9epV2Nra4rXXXkNkZCQkEgnUajV6ejTfNoFAAJVKBTs7O4wbN84kf1+lUqGzsxO2trYYN26c\nzg+r+NHA/QsMreBNacn8b6cv5HI5lEolxGIxWlpasHbtWkRERMDW1haXL1/G1q1bsXDhwn7XqlQq\nBAYGwt3dHWfPntWJrk2dOhVtbW2wsbGBUqmEm5sb30fGwcEBUqm0X7wtPT0dR48ehVAoxIEDB57N\nRIweOI4DAqxKkgbmpuG9ZVpaWrBixQrU19frfFcaGhrw5ptvIj8/HwBQVVWF9evXQ6FQYMaMGTh2\n7Nigg6pWJe5EhF//+tdwdnbGH//4R35/SkoKnJ2dkZqaiszMTLS1temIc3l5OS/ONTU14DgOgYGB\nkMlk+Pvf/46XX34ZR44cwapVqwxq4uTh4YGwsDDcuXMHgGZ5tMLCQnz44Ydm+Vy0EBFaW1tx6dIl\nFBQU4KuvvoKHhwdCQ0NRW1uLhQsXIiAggK9chULhkBbOYCgUCsjlctjb20MkEuk9byCR1wo8oF/k\nTSnuFxpngIgwfvx4fPvtt9i0aROysrKwYMGCIa/94IMPUFlZiY6ODuTm5iIlJYV1dBwhOI4DtK/r\nKAAAEFRJREFUfK1GkvRzizUOM4ri4mLk5ORg7ty5CAgIAKCxTQwdjD18+DCICAEBAaiuroZYLMay\nZcugVCr5hRLM4dmbCo7jMGnSJCxfvhzLly8HEaGkpARJSUmwsbFBRUUF/Pz8EBYWhldffZW3cFQq\nFYRCIb8JBIJBxd7YwVitTdNb5PfU7eYFvgvifgJv6vgjx3EQi8W4evUq3n//fZw4cQLe3t5DXvfv\nf/8b586dw44dO/DBB5oUTW5uLq5cuQJAE10bbAC/vLz8menoaDKs0XO3QKxK3ENCQqBWqwc8Zsxg\n7JdffoknT54gKioKGRkZiIuL448NlWxQqVRITExEc3MzAM0j1TvvvIM7d+5g4cKFOo/fGRkZOHr0\nKGxsbHDw4EH+kb+yshJr1qyBXC5HbGwsDhwwbmERQ+E4DjU1NUhMTMR7770HlUrFWzj79+8f0MKR\nyWQgon5ir4WI+HOMHYyVTe00SuBNxeVWCUR2Ivztb3/DmTNnkJ+fD2dnZ4Ou/c1vfoO9e/eivb2d\n38c6Oo4wFtKbxdqxKnE3JY6Ojli0aBEqKyuNSjYUFxdj9uzZ/OBqZmYmvLy8MH/+fHh6eiIzM5N/\nRNdm7Pv69dqMvdav/+yzz0bMr09KSuL/LRAIEBISgpCQEB0L5+jRo7yFExYWhvDwcDg7O6Onpwdd\nXV28hSMQCNDd3Q2RSAQ7O7thWTl9q/i+Ag+YPk0jFArx3nvvobm5GXl5eQaPN+Tl5cHFxQUBAQEo\nLCwc8BwWcxwBLKQ3i7XzTJmBTU1NfBKmq6sLBQUFCAgIMDjZcOfOHdy+fRubN2+GUChEWVkZcnNz\n8ejRIyxbtmzEG56Zkt4Wzl/+8heUlJRg9+7d6OnpwW9/+1s+hVNaWgqO41BdXY0nT56AiKBWq6FQ\nKHRSOMYim9oJ6RRNykSbotFi6jTNmjVrMGnSJBw9etSogeRr164hNzcXnp6eWLVqFS5fvozVq1cb\nNJsaYDHHYWPu1gGs5a/18fDhQ4SFhcHf3x/BwcFYsmQJwsPDsW3bNhQUFMDb2xuXL1/m0zW9PfuY\nmBh4eHhg7969EAgE8PX1xfr161FdXY3Zs2cjOjraoJmIffdbkl/v7e2NzZs349NPP8XVq1excuVK\nVFZWIjg4GIsXL8ZHH32Euro6CIVC3sLp6OiATCaDQqHQa5kNhDaS2eLYjE4XaT+Bj8U5k9yXKCgZ\nK1asQFpamtEDm+np6Xjw4AHq6upw6tQphIWF4cSJEyzmONKYW5jHiLg/U7aMr68vbty40W//pEmT\nhvTs8/LycP78ef4R3dHREVevXoWTkxMOHtQE2Yd6RN+0aRMcHR3x6NEjBAUFoby8XCdj3zcyZ07P\nXiQSISQkBMXFxZg6dSry8vLwzTff4Pjx43otHLlcDo7jdPz6gT4Prd1jZ2cHW1tbAJpKfk/deJ0U\njVbgzyF22PdRW1uLHTt2QC6X8/07hov2XowZwGe2zDBgnrtJsKoopDlJS0vDiRMnIBQK+UlCcXFx\nqKioMDhj/9VXX+HSpUuIi4vjY5RLliyx6Ix9W1sb7OzsYGdnx+8jIlRXV+PChQu4ePEiHj9+jPnz\n5/MpHKFQCKVSCZVKxbfB1Qq9QqGAQqGAWCyGUDhwbbFH3H/m3XAF/gYF4+uvv4aNjQ1mzZqlc0wu\nlyM0NBTd3d1QKBRYunQpMjIyBm3Bqu8Hl2EaOI4DnMaAJLWaPwrJxH0YXLlyBfv27cPZs2eNytir\n1Wpcv34dsbGxOHjwIIKCguDg4GD1GXt9E6nCw8Px4osv8h49EUEgEGDcuHEQiURD2iRPK/I3MXQE\nUSaTQSwWQ6lUIiQkBPv27UNubi7LsZsJjuMAhzEgSR3mF/dnypYxJcN5RN+0aRMiIiLQ3d2NuLg4\n2Nvbj4mMvdbC6ZvC0Vo4Li4uqKurw/r167F69WqoVCp0d3cPaeHskG3j/60V+liceyqbpi9isWbw\nVjtA7OTkxHLs5sZCPGtrh4n7MAgNDUVoaCgAw/x6LX27B2ZnZ+P111/nj5tjkRJT03ci1Y0bN7B4\n8WIEBwfj8uXLOH36tI6Fw3Ecuru7IZPJYGNjw8+a7TuRSiv0e8SZJvHitajVasybNw+1tbXYtGkT\nZs+ezXLs5oZ57iaBifso8jTdA+vq6vCnP/0JDx48QH19PcrKyuDl5YW33noLDx48sLgJVFqEQiGy\ns7MRHx8PQNfC6T2RqreFM9hEqrTOVP44XA7xf6ev0BtiyQCa7H/vSW1ffPGFznGWYzcDLOduEphZ\nOEo8bffA8vJyJCYmorq6Gn5+fpBKpSO+SIkpmDt3Li/swH8snN27d6OwsBCnT5+Gj48Pjh8/jpiY\nGLz11lv417/+BalUyjfjkkqlfORSKpXyPWKiiyJREKR5/7E491TxyYEmtQEsx24WaAxslgAxRoXv\nvvuO/Pz8yM/Pj2bPnk3p6elERNTc3Ezh4eHk5eVFkZGR1Nrayl+zZ88emjFjBs2cOZNcXV35/dev\nX6c5c+aQSCSiN954g4iIHj58SBKJhIiI0tPTKTMzkz8/KiqKSkpKqKGhgXx8fPj9J0+epI0bN47o\nfRuDWq2mb7/9lrKzs2np0qX0k5/8hDZv3kxnzpyh4uJi+uc//0kPHz6k6OhoCgwMJA8PD8rPzyel\nUklERP5UQmn0O/KnEoP+XmNjI/95y2Qy+ulPf0oXL16kd999l//8MjIyKDU1lYiIbt++TX5+ftTd\n3U3fffcd/fjHPya1Wj0Cn8SzC4A+qxlb62Z+aWVpGSvgyy+/xMaNGzFr1ixUVVVh/vz52L9/P9zd\n3dHa2gpAE0+cNGkSWltbsWXLFrz88stITEwEAKxfvx4xMTGYPn06P2ELAIqKivD73/8eZ8+eNdu9\nDYbWwsnOzsbZs2f5lbYaGxtRX18Pd3d3FBYWIjY2Fnv37tW59sGDB0hKSsLjx4/BcRw2bNiA5ORk\nnZijs7MzZDIZOI6DWq2Gm5sbampqALB2veZCY3ONBUkyf1rG/D8vjCGpqKggoVBI5eXlRET09ttv\n086dO2nixIk65zk5ORER0ebNmyknJ4ffHx8fT9OnTyeJREIODg703HPP0YEDBygvL48mT5484FND\neno6zZw5kyQSCX3++ef8fu1Tw8yZMyk5OXkkb5uINE8k06dPp5KSEmpubqacnBxasWIFX60TEfX0\n9Ax43c2bN4mIqKOjg7y9vembb76hd999l7KysoiIKDMzs19VrlAoqK6ujmbMmEEqlWrE74+hC1jl\nbrrP0txvgDE0WoHTUlRURLGxseTj40MPHz4kIqKGhgbelsnIyKCMjAz+/KioKCotLeWtG1dXV6qv\nr6fFixdTcHAwEQ0tdFr74aWXXqKysjIiIoqJiaHz58+P+P3L5fKnfo2lS5dSQUEBSSQS+uGHH4jI\nMCuLMbpoxF0xBjbzSysbULUC9C2xtWTJEqN6nLi6ugLQxPvc3d3xxRdf8EsEWnLTs6ddNer+/fu4\nefMmgoODB405DtQLiGEOzN0YZmw0l2FRSCshOzsbiYmJOktsqVQqo3ucSCQSVFRUwMvLa0xMoBqK\n4a63qz3OMAfPVtB9sHYXvcnIyEBOTg7fuPDYsWODFj6scrcS/Pz8UFFRgaqqKpw5cwaOjo78BKp7\n9+7hwoULOl+ItLQ01NTU4O7du/ygn0KhwLVr11BVVYWamhrY29vz54+FCVR96enpQXx8PFavXs0/\n1bCYozVg7qp7dCv3zMxMREZG4t69ezqR5t7cv38fR44cwY0bN3Dr1i2oVCqcOnVq0Ndl4v4Mcf78\necyfPx9TpkwBYJzQXbp0CQkJCSgqKkJCQgK6u7tx9+5d3Lx5E97e3li4cCHfKx/QVBleXl7w8fHh\nFzYBNJOofH194eXlxVtCIwER4Y033sCsWbP4hdQB/SvNs3a9lkTPGNgMJzc3l+9Y2tse7c1zzz0H\nkUgEmUwGpVIJmUw2dPFhbtOfMXqsXLmSjh8/zv/f0Dz3888/T56eniSXyykoKIjCw8Pp2LFj5Onp\nSevWrSMiyxuQLSoqIo7jyM/Pj/z9/cnf35/Onz9v0LwCiURCn3322Yi8L8bgACDgwRjYDJfW3qk3\ntVrdLwWn5aOPPqIJEybQlClT6Fe/+tXQn6XB74Bh1UilUnJ2dqb29nZ+n6FC949//IO8vb2ppaWF\nSktLycHBgaZNm0ZOTk5GJU9MNYlq7dq15OLiQnPmzNG5l4iICKNinQzLQyPudVa4nSTg7V6brrRG\nRETQnDlz+m2ffvqp3khzb2pqaujFF1+kpqYm6unpoWXLlunEnQeCDag+I4wfPx5NTU06+4xpetbS\n0oIXXngB9vb2WLp0KU6cOAEnJyejGmyZakB27dq12LJli876sFrfUtumd7C1bFmbXkvHGgdU5///\npkW3Z5N24uBA6Osv1Zvr16/jlVde4Rd2j4uLw7Vr1/iJigPBvuGMIamtrcX+/ftx//59NDQ0QCqV\nIicnR+ccQwZkT548iZKSEsyZM4dvWKZQKBAZGWmUby8Wi/HLX/4S9+7d4317fb6lvja9DEvG3IOh\nozugqm8cqDc+Pj4oLS1FV1cXiAgXL17st/hMX5i4M4akd9UgFAoRFxeHkpISuLq6Gjwg293djfz8\nfLi5uaGqqgp5eXmorKzEo0ePBkwKDNX8LCsrC97e3nzzM5ZfH0uYezB0dAdU9a3h3NDQgEWLFgHQ\npOWSkpIQGBiIuXPnAgA2bNgw6OsycWcMib6qwZhJVCKRCK+++iomTpyI69ev47XXXsOHH36I5uZm\ngyvu3hOp/P39AQw8kYrl160dc1fdo1u564s0/+hHP0J+fj5/XkpKCm7fvo1bt27hr3/9K0Qi0aCv\nyzx3xpD0rhoEAgHmzZuHDRs2oKOjw+BJVB4eHti5cyf+/Oc/Y926daitrYVEIjF6YQx9vr2hffFZ\nft0asEbP3fJg4s4wiJSUFKSkpOjsM2ZAFgBSU1ORkpKCyZMnIzQ0FOPGjcPx48f5408zkUrrW6am\npvZ7ikhISMA777yD77//nuXXrQLjKl/GwDBxZ4wa69atw7p16wAAO3bsgLu7u1EVt7u7O9zc3FBW\nVoZXXnkFTU1NWLZsGXx9fY1ay5bZMpYOq9xNAevnzhg1Hj9+DBcXF9TX1yMqKgqlpaXYs2cPnJ2d\nkZqaiszMTLS1tfERxoSEBJSXl/MRxpqaGnAch+DgYBw8eBBBQUFYtGgRkpOTER0dbe7bY5gAzQ+v\n/tig9RBp9n7urHJnjBq/+MUv0NzcDJFIhMOHD8PR0XFYFffhw4exZs0adHV1ITY2lgn7mINV7qaA\nVe4MBsNi0PyA55r7bZiA11nlzmAwGLrIzP0GxgRM3BkMhoXB0jKmgIk7g8GwMJjnbgqYuDMYDAuD\nVe6mgIk7g8GwMFjlbgqYuDMYDAuDVe6mgIk7g8GwMFjlbgqYuDMYDAuDVe6mgIk7g8GwMFjlbgqY\nuDMYDAuDVe6mgLUfYDAYFsNY6djp5OSElpYWs74HVrkzGAyLgdWapoMts8dgMBhjECbuDAaDMQZh\n4s5gMBhjECbuDAaDMQZh4s5gMBhjkP8DQpX6EJSUmkkAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 51
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment