UniTO/anno3/altro_muovi/marco/.ipynb_checkpoints/coverage_plots-checkpoint.ipynb
2020-07-03 22:38:33 +02:00

493 lines
87 KiB
Text

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Coverage plots"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us consider the following function which applies a linear model to the given data. \n",
"Specifically, given a \"model\" vector containing the model coefficients $(a,b)$ and a $n \\times 2$ \"data\" matrix containing the data points to be classified, the function outputs a vector $\\mathbf{z}$, $|\\mathbf{z}| = n$ of booleans where $z_i$ is `True` if $a \\cdot x_{i,1} + b \\cdot x_{i,2} \\geq 0$, it is `False` otherwise."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def apply_linear_model(model, data):\n",
" return np.dot(data, np.transpose(model)) > 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us define `data` by generating $1000$ points drawn uniformly from $\\mathcal{X} = [-100,100]^2$."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/user/.local/lib/python3.7/site-packages/ipykernel_launcher.py:1: DeprecationWarning: This function is deprecated. Please call randint(-100, 100 + 1) instead\n",
" \"\"\"Entry point for launching an IPython kernel.\n"
]
},
{
"data": {
"text/plain": [
"array([[ 63, 42],\n",
" [ 77, -65],\n",
" [ 24, -27],\n",
" ...,\n",
" [ 47, 20],\n",
" [-55, -72],\n",
" [-58, -23]])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = np.random.random_integers(-100,100,[1000,2])\n",
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and let target_labels be the labeling output by applying `apply_linear_model` with our target model: $4x -y > 0$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"target_model = [4.,-1.]\n",
"target_labels = apply_linear_model(target_model, data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By using matplotlib.pyplot module it is easy to plot the generated points onto a 2D plot:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f9753a8a510>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD4CAYAAAAEhuazAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOxdZ5gUxdqtyR1mdslZRMkqQURJBjCgmEWMmDAAKhdQQAx4RQETil4DZhREQTFhQsRMEIElCJIlJ2HdQFg2zdT342zd7ump6q6emXW5H3Oepx+W3ZkO1VVvvfG8HkopySCDDDLI4OiCt6pvIIMMMsggg38eGeGfQQYZZHAUIiP8M8gggwyOQmSEfwYZZJDBUYiM8M8ggwwyOArhr+obkEGtWrVokyZNqvo2Msgggwz+p5CTk5NLKa3N+9v/hPBv0qQJWbJkSVXfRgYZZJDB/xQ8Hs9W0d8ybp8MMsggg6MQGeGfQQYZZHAUIiP8M8gggwyOQmSEfwYZZJDBUYiM8P8fAKWErFhByIIFhJSUVPXd/P/G5s2E/PILIX//Hf/7Xbvw+927q+a+qgQFBYTMnUvIxo1VfScZVALSIvw9Hs8kj8ez1+PxrDL9robH45nj8Xg2VPxbveL3Ho/H84LH49no8Xh+93g8HdJxD//fEIsRsngxIe+/T0izZoR060ZIr16E1K5NyIcfVu29rVtHyE8/EZKfX7X3YcXu3YT8+CMhW4X5DWIcOEBIz56EnHACIZdeSkjDhoSMGEFIaSkhffsS0rQpfn/88YTccAMhZWXpv/8jBpQS8uijhNSvT8jFFxPSti0hZ5xBSF5eVd9ZBukEpTTlgxByJiGkAyFklel3TxNC7q/4+X5CyFMVP19ICJlFCPEQQjoTQn5zOv8pp5xCjyYsXUppgwaU6jqlHg+lWI3GoaqU/vEH/7uHDlH6ww+ULl5MaSyW3vvat4/Szp0p1TRKs7MpVRRK//1v5+vs2EHpnDmUbtqU3vthKC+n9NZbKQ2FjPu65BJKi4rkz3HVVfi+eZw1jdILLsB4W8f//vsp/fVXSn/6idLDhyldtAjjfuhQ5TzjP4oPP8TkMz90IEBpz574+/79lH7/PSbqwYN48EWL0j/h/imYn+d/9RkEIIQsoSK5LfqD24MQ0sQi/NcRQupX/FyfELKu4ufXCCHX8T4nOo4m4X/4MKXVqycKfPPh81E6eHDid995BwIrK4vScJjSJk0oXbMmfffWowdkgPledJ3SGTP4ny8ro/TmmyGMmVC+8MLkBWRREdbovHkQ+AyPP47nNt+XolB6xx0Q0HPmQEaJsH8/pcEgf6y9Xv7vPR5KIxGMs8eD62VlYTzefTe55zti0KkT/6FDIUqfeAK7X1YW/u/xYBDCYUqPPZbS1aur+u7d4eWXjefRdUpbtKD0zz/Td/68PEpnz6Z02bIq2ViqSvgXmH72sP8TQr4khJxu+tv3hJCOnPP1J4QsIYQsady4cSUPUWrYs4fSr76idMoUSmfNojQ/P/Ez+/dT+s03lM6fT2k0yj9PSQmlo0cnapq846qr4r+7fHmiAPR4YEGYBWWy2LUrUTNmR+fO/O+MGycWym4xYwbkS1YWhG7dupQuWYK/1a8vHif2HU3D5sjDzp24L6cxlz1UldLff3f/jEcMjj9e/GBOA1WnDibc4cOUfvcdpT/+SGlpaVU/ER/z5iVOUK+X0mbN0iOox43DeEUi+Ldx4398YlS58K/4fz51IfzNR7Ka/86dlH7xBaU5OZWz6cZilN5zD7RG5p7xevGen3/e+NzrrxvKRSRCacOGlK5cGX+uH36gtFo1OSGk65ROnhz//YEDYRFYPxuJ4NypYvVqCFLe/TRrxv9OvXr8zyuKuw1pwwb+xlO9OmSMdf2KDk2jdMWKxPPHYngnPK2/Zk33wt/no3TQoOTGef16Sj//HP9WGe6+O9HEYw/G80Naj1NPxcTLysJRvTr8Y0cS9u6l9Iwz+PcfDlP6/vt4Edu2JXf+r75KdJ0xjWz06PQ+iw2OOrdPLEbpv/4FgcGsuXbtoKGnE++8I9aGNQ2KRU4OXzjVq2cIwLw8/jwRKV/t21NaXBx/L1dcwf98JELpRx+l/qxlZXx3VCDAd0FRKhbKPp+8Pz43V6zZZ2VR+sknlPbqJSeTvF5K77qLf53p0+M38WAQ53/gAYy532+cQ+Y99enjbnwPH4ZLjCkJqkrpRRfh9/84du2CBm+d3LIPLxKoBQVV8DAc/Pvf0EB42hKboEx4KAoCSiJzXYSePe0X8RdfVM6zWVBVwn+8JeD7dMXPF1kCvouczu1W+E+enChM/X5KzzrL/eCJkJNjCATe4fFQet11lPbvz18zkQj815RS+sYb9sI/GITg7dwZFgXPZz5pEt9qUJT0bXrTp0OgMwEZCmETM5//4EHM66+/pvT88/lC+aST5K950UVimaPrlL75JqySrCxDWbXbCLKyINvMmDgR46TreKd+P6W1a+P5VBXnPe44Sjt2pPSaa8TxAfN9TZnibmwHD058f4pC6dCh7s6TNvz1FyyA+vVTE/rmQXnrrap5lrIyBH4+/RQavaymxQ5No/TFF91ds0MH+3Oed17lPKsFlS78CSHTCCG7CSFlhJAdhJDbCCE1K1w6Gwgh3xFCalR81kMIeZkQ8ichZKWTy4cmIfxPPpk/3qEQpbt3JzmKJpSWUlqrlvOcOfdcSnv3FgshppE//TTfyiYEbsLXX0c8QIQdOxCnsq5RTZO3MDdsoPSDDyhduNDeRbZoEaXXXktply6UPvwwMoAYPvrICDgzP7umGcLS78e6mz9f7p4KCuwFraIYGURbt1I6ZAg2yOuusw/gnn66cY0lS+TcRl4vpaNG4Tuid8rGvGNH+/fFg8ilFom4O48j9u+n9LPPKH3hBexQPB90LEbpnXdiwYi0Y7dHMEjpM8+k+WEkkJODnZxNymQ3MpFvU4THHrOfvCefXDnPa8E/ovlX5uFW+IviVbqeHl/qrFmYR07KwiuvYH3xFA1FgduRUiQC8ASQrKDs3Dlxjfp8lA4f7vzdsjJos4oCARQKIWnDbZbQ9u38QLWiQIHs1o3SAQMoXbdO/py7doljIB4P4i0ijB4tXueKYmj/IstMNH8OHoRA5m0Op50GKyIZV42dB8IR5eUwI6dNo3TLFkp//hk/W7NWZszASzJfLBSi9Oyz483Jt9921o59PvjMeYPBO6oiCi6rpbEX2K2bWAurW9fdtfPzYS6KJuCYMdhk58+HNbJ2baUMwVEn/IcO5W+6deu6d93x8MEH9nM+FKK0bVv4tUtKIBTMwl3TkAhgRr9+8etN15HRY6eFl5VR+t574vnasaPzs4wfz994vF5KJ0yQH5OnnuKPOXPNJINYDBsRT/D37OkcxBfFCnTd2IT69JGTDey6onfv91P64IP8+9i+Hemfjz+OONGGDfh9bi5caZ9+CrnDu2b37g6DtH49pY0a4abYBAoEjAwT5q8W7c6E4MXdfbdxTieXBSHQfoqLkdGjacaGoig4n/lauk7pbbfJvPL0YvZsZy3NfAwahPxo3svt18/99QsLYSabtQtVpbRpU0yCk06CxsXe1VVXYVGnEUed8N+7F+uBzT+fD/Pzyy9dnUaIv/7iB3o9HkqbN4f2Zw5oFhdDAPbsSenVVyP7zYpYDELgkkvg5/7wQ/uNau1aCDc7Ba15c+dnESknbJ4uWiQ3Jg89xPe1h0Jym8iffyJWM2tW/Pz//nu8OxZfURTEInfudD7nsGH8DalWLWNs33tP3gXs9yM+I3ITXXcdnmHOHCOY/9BDRjo8myPBIKy1UMhIitH1eBcZCzhbs8LiEItR2rKlfZCD+drHj7d3Q+i6cd6mTcWf83hwo++9Z3x+zRqkm51+OqVXXonJPnkyJvJll8HNVBXFUzNmyFsmbAxGj+ZPuFWroKGPGweT/rff5J9pyRJKb7qJ0nPOwWLYvx8BMavWpmnwAacRR53wpxRW19NPQ+AOHCiuiE0WTzwRH/zUdUrPPDPtGzcXsRgEu92aD4VQheqEOnXE5/B64aqRwbx5fCGqqvZ1P7EY3g9zO0UiCCKbreB166CUnXce1t7ff8vdU24uYibWjToQMLT00lLILHbvHo94XHv1gleF54ry+3Fe9gzHHstPPHCSPffcg+ccORKxHFv88YdcwOLkkxGgsZswZv/S0KH8bIZgEBrw0qWJ9/Lyy0ZOO6t+mzNH7kVVFvbt478sq+vLfPToAWuKTbixY42MALMGHwphB9+/3/192QWzjj8+rUNwVAp/J5SVwRJ44w1s6m6Rk0PpiBHYzC+5hNKpU/+5WpaVK+2FiqZBo//7b2i4P/yAoDFPWbntNnuf97XXyt1TLEbp9dcnuq6c8t2nT098Fo8HAex0KIt5eXzlT9fhFaAU7+3dd/Eeb7wRiquuG/LB76e0Rg1KN2/G5x96KDHryTqGXi/qNmQFPyG4z+nTXTzcokVymm3z5ih1tps0556Lc86di3OaNwqvFw88axb/Plat4ruUdJ3SAwfcv7SSEkpnzsTidBMk4uGZZxK1tA4dxON24olInfvwQ8RBtmwRu8v8fkpvuMH9PYlcB4RA80kjMsLfgg0bUPkaiWBeqCqEnEzhUUkJ+F5YJkskgs3a7IYoLqb0448pffXV9NIrMCxcKHZlVquGRI4DB+D+atUKSpiqQtlo2TJeo9y9G7EQkSb60Ud4nk8+cX6eaBR1MVdfjY1g9mxnAS6qs9G09Fhr8+aJ13nv3uLvbdsGy+nii6H8mbOaKIXr7oYb4OXgxSWYzHQj/HUdckcaJSXgzbA7aSgEMycWw85mFWQ+HybN2rV40bwdy++Hy0OEESPEFYbTprl4IIqNpHbt+MV5222paQILFsBiufxyPMehQ/Y7s6oaFsyAAc65va5eGjVMd+t5AoF4U/vvv2E+TpqEDSMJZIS/BW3b8tMiX33V+btjxvDXzznn4O+//46qUPPc7dfP/dzNy0Nw8LXXEKszo6SEL9BUldJnnzU+d+mlfOvd74diw1BQgHVhLuDUdVi9y5al53lEEMUWQyG4eFIlSvv2W/FGyXjKeCgvBx3HSy9BGbZ73mbN+OcPBsUKHu9QFAlXjxWffBLvo7buJk2bGnwjsRgqT6+4AlWP3bpR+uijhmD56iv+YHk89gHbu+7iP5Db3P5YjJ+qp+v2m08y+OQTuZcj8xlVdc9auGABtDK2sWgaysxZ0cz06Tgv401SFJjvLpER/iZs3iy24tq3d/5+48bihZ6fz9cCdd2dAjRzpvHeNQ3vffx4/C0apbRv30RlhFX+MmFZXCzOAmKftyoTixfD/37dddD4y8r4yQ/pXIvjx4vfRzgMxXbhwuTPf+iQOI327bf539mzBwI9EsG96Trcu5s2wRPx2mvxlt6DD/JlRMOG+J7V7RwK4dmYF4Z5VR5/nH8/LCPwP//B3EhwL65ZAz/9+ecjwHrBBRDwr77qbvf8+GOxmWTn/5szh+9SCoXc7WZ2/swzz5Q/jyzOPttZsMscgYD45dlh2zZMnj59YK4XFuL3e/bwF4Wquiadywh/E9auFc+vVq2cvy/iqwkG4QoQFeuceioW76RJfOI3hvx8vrBSVfDSiIKItWsjv3ztWlzn1Vft63NkLJ0VKyp/LR46hE3Lzh1du3Zq5HRTp8ZTNITDcDeJCrEuvjhRkQ4EMJ4sK0dREAekFJZTixbGMwSD+Jlxmk2fDiusY0dQOLz5JuoFvvwSSSADByIew8Phw6hM13UjO6hRI7ii/4tYDO4CRrzG2OwWLHA3UHl5/ACprkNTFiEWQ7GIdTd74gnna8Zi2N2few4CVLT5nHqqu2eRgR0Fg5vD6wVlRLowcSJfCCSxyWSEvwkiEi9FgQXshLvu4mvUJ51kH39jtL+6jkOUCPHuu/wNxOeDa7VrV7EwP/10CK1gEP+38zkrCjYJO9g9T6dO7sdehJISCGjeeyEE9zBvXmrXWL0aqZ833WRYNTw4WUzmw+9H1e/GjRDSkyYhDjBqFCgunnkGRX52dNJOeOSRRHns88VXKdPPPuPvnroOM0U2PYpSfN6cDRMOYzd02n1jMfjJbr0VUf7Fi42/7dyJbKAXXkApNkNpKVKodB2TlvFj8zQfM1Mi++6nn8J0nD07uQKed95xT/UgWnw5Oe6vL8Lzz/NNSa8XE8IFMsK/AoWFWKADBhi1KGx+n3SSXGJCbi4yadicYTzuOTkQKDVqyM2XSIRfCfrWW2IywMGDoT2mQ1lRFGcLUvQ8moZ1fPgw3FlPPol8/FTjAOedx7/XrKz0MJPKoKjIHaOB34+xZDQa5eUIJLOcfea6YvTTlMaP23ff2Y+bnZsxL6/iQxdfbP+iNQ2CWRarVmGnvO02xAFSqYycNAmCLBDAEQpBy6cUQo6n4bJiCLY4TzstfrHs3An/aiRi5Ne2a2e4TWRRWgrXD9O2ZNgBzYLY48Fi/de/kh8fHjZu5FtgmsZPs7VBRvhTI0MmHMZ80TRKW7eGovL+++64WIqK4C++/XZUtjKaBkqxxqx8NiKB9tVX+E5pKdyt48ZB+Iss77lzsV5k+P7Nm8yJJ+I+PB7DIh8zRu5Zrc8TDoPXZ9Uq1AhEIjh3OAz/tpvuWVaIXFqRSCKLaWWiWzd3coAQvJOcHMg6njw75hgI+Q0bEsetU6d41/yWLZCPzzwDl5dI+P83A0nGfREOJ/9yYjGYXo8/Dp+VLDvnjh18M8rvRwrniSfy7zUUAlHTHXegUMtqpvXqlbhDh0LJ8WiXlyNF7ZZbsKE4pWj5fPDdDR2K66Vqkorw6KOG+c4WbRIsf0e98I9G+aX+ui5u8LF2LQT7M88Y+d2y2LYN7+7OO2Gei4T/zJmI7TRpAoHPXEM1auBfJrA1DesgFoMC1KWLoaw4ZaGx6yxYgLkzfLhr5YFu2waeqjvvhOu3rAzKmHWdKApqiZJFWRnkmPnZVBVeDTcoLwer6GOPwe3iNmNo7Vq8AybEZYnfhg3DuxFtDitWQNDzxo2Rxr3yCv4fChm8ajx51Lat6YbffdfZfZGVBSHnFmVlsCxY4YOu41wyUfgxY8T3M3Qo8o5Fwp9xYFhRXCzWqKpXd/98lCJFTxSssx7mjJzKxtKlWLBDh6JOIwkc9cJ/6VLxu43znVZg7FiDyjcYxGJ85ZXkrv355/x1qWlwM4ks9nPOQSLAvfdCuTC7BsrLIRAHDYLAsbME2HXSiX37xJuOXdO18nL4wh95BJYTzxcejaKWaPBgCO+4wKYEDhxAQStzH4fDoHNwUyu0YgWE8RVXIEbw9tvYzFVVbBF4PFBWRXQZHg9cPHbjtn073+pjCgB7n9nZlqY0ZWWG79xO+H/6qbvBpBSaPm/3a9jQ2R105ZXi+zn7bCw00QNfc03i+Q8cQExC9BKys43Pbt0KzW3sWH4HHwZGkeEk9H0+1EmkYtpWAY564b9kiThw2bVr/GdFxYqKkphvL4NoFKmT5kwQVQVBWCwmnsder9z5YzF+OiY7x1VXwYIxWy/r1sHFNGZMcoVUe/eKhVijRvzv7N8PtyzbhMNh1A+km8xw5MjEWJnHA0uFYd8+0LOPGpXoc7/3XoOnjPH5s65pv/8OJYwXE9B1WFd2XEmiZAE2bi+8IKaOuPpqbC4vvGDy9ZsRjaKo4Yor+BdJVgsQmTLhMIpA7PDvf9sPxqFDlJ5yCv/vuh5fjLJmDSaMSIsLBIxahHfeMaoa/X78PGwY/x43bbLXngIBTJ6BA3E/brm6qxhHvfAvL+dz2Gga8rbNGD2av7hVFQU/ySAWg79+5Ei4TZk2G42K5xwh8uefPNn+PMx6eecd8Eoxl5LPh+eSyXKyon37xI0rFMIz8jBiBF8oyzCPuoEoYygYRNLLL78YFc9Mhp13HuIu8+fzlVxFQaCfgbXlDAQMd+yQIfjbaaeJ34OZ4M36+/vuQ/YVT/j7fLCCpMAqeRmlAdM2zILUDTp3Fgt/J//hli38xeT3G5wq338vFr69ehnnOuUU+0BMIACtRsTno2l814mT8GcbESHQIJs3x2QoKUHUfuRIBOpSSemqRBz1wp9SUJxbF/3558cXzCxcCDeQKNuMCf+SEqylYcOQkmuXt2+HdGn+dtqmVcjwMshU1Z0FEIthw7FmTLVrJ+a5atBALJTNgjVV2An/vXv5VBaaBm/C4MH89xEOJ3bm+vNPWE8PPxyf5ffqq84xArMbxzxuW7eKecjsyPESEItB0D30EMy+ZPvQUoqB4T1Q/fpyWUAsbZFlx4RC8R2GfvpJXIJ94YX4jJ2f0byh3H47JibPOmB+Od5Y8agW7DaZvn1ROW0OTmmafL/UWAxayMiRmERug4ouUGXCnxDSkhCy3HTsJ4QMJYSMJoTsNP3+QrvzpCvVc+VKFNucdho0cJZEwGpk7BYtc/vk5xt8OUxwVKsmJof76y+4HocMQUaPNXHhoov417v8crln2rBBvoE5s4Ktv/f55LN/olEUezIhxTKIRoywTwUXcesHAu7S0J1g5/bJyRF7DVq3FneAC4cRUzVjzRoI/uHD4e5hrqPSUigVdu73SATfGzUKwXjzuDHXTyBgpJGOHZu+8XGN0lJUDOu6sWtFIvLt2CgFS+YTT/D9jCUlfJ4ds9snN9dZ+BMCn/+UKWLhz7JlWPBp6FBsjt9+i++a+yHYBYBZ2qr1914vsiLscnfNDIgeD86jqumnr6jAEaH5E0J8hJA9hJBjK4T/cNnvpkP4z5mDecsEQziMKtWSEigfosXKXCasGnbIEP48bNYs8Z0z+g4mKMNhWK/m7JPdu5Fhxj6jKNDkZXmcNmyQWxeEGOnWvLksWzj42Wd8Sz4QsGe3FdUnaJrcdWVx4AD4gswB39q14RFYtkxs4TPFlPc3VY33s7/8slExzOThgAHG+4/FUN0rUigjEViiImzcCJn0xBOV1uDJHdgDPfooMh+4QYcU8N13Ruk0a75x3XXxlgUvvcx6VK8OTYL3kjUNVYvFxTDvmXAPhfC3zz+HD3j0aBBkucmntl5n7lzxs375pTgDxG2dggSOFOHfkxAyv+Lnf1T4l5UhVsQb74kTEXviLfxgEHPQnHEi0mAJgfbIOF/Kyvg52oqS2MWrtBTpzGPGwHKUpYYuK4O/WjYnXVH4gtvnk29vKWLhJMSev0jEHBoIJDJmpgqWMTRmTHyqZ2mpu/x9RYEMMD/X7t32dRhmfPQRf53XqJHmvg8st3jAACMX938NublYjOPG8TsIrV+PwJ1IIw8GsZAphRatqkZgRlWNBg4vvsg3lWvVMkwwkf9P9rCrN7j+ev53srLsKTSSxJEi/CcRQgZV/DyaELKFEPJ7xe+rcz7fnxCyhBCypLFd/qAE7GgKOneGNs9TKiKRRGusUSNngfHzz+I4GSFyHEIysKtOZ3OXzX1VRXMbnvD3epFN8sMPzlW6IvpiQuBiFuGYY8TCnymSW7YgQeT22/m1Pali8WJ5F1kohPtgvX4ZJk0SV2BbCz1jMaSKahqeU9chu+y0fteYPTuxCq9zZ7lGwosWYfLffXc8dekXX0DTbt0aO6jbF8EyHO6+G+eXbQfnhKIidBAbOdKgfWaVcm3bxhef7doFQT9+fLz5JIrIRyJGGfawYck3evd67ZtL33ILf2NJtg7DAVUu/AkhQUJILiGkbsX/61a4gbyEkHGEkEl2309V81+2TKwwnHmmWChoWmIx46hRztwvNWrYKw5xBTo2OHQImSU33QS/r7W2RESHEAggZXHhQliwEyeCOMypDkjXcS27DUB0TULs08hvuy1x42E9sylFUZZVhlmr+mVhHbfdu/H75cvla3kUhR+/E3Eveb3w4/OwdClkkJviWCmI+DdU1Zm46eGHjQpSM03BTTclnq9ePfsNYPdubBI33QTXycCBhk+bpUOlUv3Hw65dyGrq0AEav+zAiqoudd2oB8jJkdcSeELDjufnu+/4GlgoVCk1BEeC8L+MEPKt4G9NCCGr7L6fqvCPxfiap66DUIxSWM2KYpCvhUJobjRgQHxsq6iI0hNOsH//Tu0VZVJG9+2Dlm3mEIpE4vmyRAVivHjc+efLWbKMjVKEadP4SpGmiQX1k08mulD9fmQAbdkCd0z16vxzOskw3rg1acIft1hMzJXDO5o0ScxEys8Xu5Sd0t7TjsWLk2PBXLdOTBksGgxRT9BFi+IDW6xUnbebyvoWnbBqFQK07H41Df5YGfroKVP4WtCxx8ZrPawAjQkEu4nC0uhkovOffsrPuggEkk8btMGRIPynE0L6mf5f3/TzPYSQ6XbfT0fAd+lSCJhIxPDl3nBDfExp0yZkW5xxhrHxs4AecxlSCs0y2XhQmzZyVvTAgXwLo3Vr4zMiMsc6deIzSGIxebIynvuC4fvvcT1eI5zvv+d/R1S1GgoZbRTt3HLm4iwZ3Hmn/bgtW4Z5wOSVqmIzF8V8eO7bTz81eP4Zi/KTT7q7z7Tg99+T49yeMIGf82unHYhcr61ayU0sM6FbqujUKfFefT4E6JzAGmKwFxeJwHpavjzxs5s3Q1N7801UHFszK4JB+EvffBOf27wZ2iH7/MiRiU1err2WPz5ZWfKpoi5QpcKfEKITQv4mhGSbfvcuIWRlhc//c/NmwDvSlepZVARu9RdfxLrhYeFC/nqyKi7ff8/PsvF67TcGu0QAM0QBUjOhVywGtyrz6UciUIh43PA8ASw6Bg5M/L6IH8nvR5qnCCJ2AI/HEKx2Muyss+TGi8Gu3wIj4LPOgz17xBlT9evzr/P33/D/T5wYz1L8j0JU5KHr8I2LMHEif5La+bmbN088j10vWuuhqqg+7t0bgR1rMEUWdrSrkYj8eVasgKY3fbqcu2XJksTr+nzxpnh+PsbJnDKqaXD1MNx6q7jSb8YM+fuXRJVr/qkeldHAff16pPlefjlS91iB3kMPia1WK6V4Xh5SGAMBQ4lo0AB1MTzLrmZN+aYkosBqMJiYEbZuHdbz9OliErObb5ZPCdW0xD4gdk1wWrQQP8d774n7E5x3HsZ/yBB+IN1tBzRKxQF5v1/sFs7LE4/Ncce5u74VJSWoO+rdGy7EtLuGVq5EpgrrswrYF30AACAASURBVBkKwZS57LL4iW2GqFOUnYbAOteYkZ8vP6nM52ddaZIZjJIScdCtVi3355OFKNjFGt9TKm7pZi6ImzdPHE+oXz/tpHEZ4W8BCy4yAa1paB2al4d8dxE1iqiF5ooVqAP44gu4dGIxBPyDQaNOoFq1+DjQtm2wCi+6CNltVt/yuHF8PznrFewG0SiylqpXNzhrdB1CW6REtWgR7wIVVZ8SguIoEQoLxdkx7Hxs88zOhkxg7hTGZOoGIo4uVbU/V48eiWOhqsi3TxaHD0M5YM/P6DTc9vt2RHEx0gT/9S+Du4NN2uOO4+flz5iR2CP27bdhDlkH7+yzxdfmDRyrUGPnFk2yOnWS48q58srERcqIrNLVXNoKEZOoz2d8RlTYoevxzIKPPsr/HCHwRacRGeFvgojnJxSi9IEHxFQfquqehmDTJrg9Pvkkno9+8eL43s2KAqXFXOVdUoKArqZh7jBaEbfWciwWTyxHCK7bpw/+xhsLNh7mPgWUIrGC5+936is9e7bxDEwW8DwM9erBn/7mm8nFBh98ULymgkF+4dwffyBO0KMH3gHrratpqAaXrbng4ZVXxMFhV1Qwf/8NreSCC2AmbdiAQEm/ftAe3nwTJp/oZXbrBs21ZUvsRo8+ipebn4+Mh8mT44st9u2D9tKvn3Oa5s6dRsNjNnCXXIKJOnkyzm+XYlW7tvtU0txcdF+ybiq6nhynvwxE2rq5SrF9e/5nrKyQe/aIx0NV03rbGeFvwurVzu6LKVMMHzqzpr/4Im23QNu1S7w2U1ysWLECvFE//JBcQ6V58/jPy/h87GILVvfS5s1GAyXGk3TTTXL3deAAqvWnTBGzkFoVJDfYvNnea8GYMS+4AFba4cN4p6yolK3ROnWQQXjGGdggv/02ufuhFPEK0cYqauOZgB078JLYLmLuiMV2UF2Hq0c2PdHnQ5DTZTNwIaJRBMHeeosfTBN1pGGHLLeIGfPmiYmQRFwrqaB//0SXTiiE3zMMH86PC1gzr9avF4+FLKmXJDLC34Rt28RCwswwmZcHf/OMGenlwz94UGxBuolXyeLBB8WZLI0b8//m90NI8lBeDsE1eXLymXt2ChKrkHaLN96wl31m+gZNwwZcq1bi5xjdinlDuu++5O6Jt8mzQ7qep18/8YSxCj2Zz5kHpHNnaOkXXYSAUSrtGu3w4IP2weQTT3R/zocfFk/sZ59N/zMcOIAaAVapp+v4PxMOjz+eaOZ5vXC7WTMCCgvFmVU1aqT1tjPC34LTTuNbjIy3vTJRUiKOkdWrl/7rPfWUu5gcIdDMrS6fdIKXAeTzJfZWcIPp08XporzD55OXlYrijnixsBDV1Hbp4TVrSo6xyDTjHSJ2TJlD1xGVrgyfeXGxfWl4ly7uzzl+PD+4quuJPO1WFBbi+927g26Blx4nQk4OKv3MAby//uJrlIqSyAjIcPbZ/En59NPy9yKBjPC3YPt2+M/DYawXRUF6Y2XFiqy49trEeevzIVNl0KDE1OBUsH27+5qEO+9M3/V5iEZhLSuK0Ve5ZUu5Gh0RDh7kC3+/37lGR0YuvvWW3H3k50PZcxpzv1/cXyQOTZvK3+jFFyNqnsqDyuYiu8W+feLrfv21+/OJJram2RPPWV8QK+R5+23na27ahAXatWv8Qp0xQ6x59OkTf46cHAR1TzsNPkZWSMaIxGTTASWREf4csJ7UH374z+dpFxRg/ui6IZjMXDwyTZLc4OOPjdarTsqh32/0k61sbNmC8Z8/36CD6d0biuDYsXIFjyyT6eyzkXXEGIezsvDzI4/IUzqIjkBAvv5m9Gj51PemTSVO+Nxzcr58TQM97eLF8jdgPTyeyn35EycmujvuuCP5833ySfzEjkScgzSslN/67F4vNk9zTr4ZrBcs8wmyhbp0Ka7JE/4+H/J7GT76yKDUIAT3UbMmcsM3bkx+HGyQEf4SKC5GkV7XrkjdnTGj8i2B5csRZOatwzPOcHeuX3+FknHqqXCxWl0KBw8iwDlrljgphM3HSpqHQvz9N9ad2S2sKPAUOLEHX3ttvGav61CqPvsMFNOxmL3HQfb4/XdY8GedBVfvwIHIEOraFen0LJtL1BOAd9gxMFBKcfPTp8MfyHJjNQ2ZLg0aGLucosS7C1gRV1aWsRHIEJUpCqp/eS/okUdww5dfnhoz3YED8I8/+KD7AM/SpXDTdOyIbKQdO4yJ/fXXckRQHTrYj4GmwSVkRdeu/M937YpsJVGrQNbtTEQtHAiARbSScFQK/927EXzv0AGFhdaiJTPKyhD7MitYup5+98fixcjoOflkZOxt2yZek+b0YSe8957RtY8QrPc6dcRpoawZufWafj9kzT+J3Fxxly9FgSa9eDEyddi4saw5ESGflZ9o7VpxkF+Udmo+QqH4fH3eGu/WDRa7HfGd9R7tinAppdAarTm67dphwkajMJVmzkzshnPwIDJomjfHApg6FYUjTsEfTUucNLm58EeaB1DTjAYX/xS++ipeaw4GUbji1kfas6fzy1GURLNTVKvAsnNWrECRFtuQVRUaPaVI1eveXTzRgkFsAMk0CXfAUSf8d+xAJgeb68yt98ADyGJp3x6KB8vb/+gjvmtAUZBSnQ7MnBkvoAMBzF2RQKlWDe6ou+4CC+iVV/JTrktL+Y2Q7BSK0lK4F1lhVSgEwVqZQV4RnFhSmzblj9uff0JBE33XSiL5+ef8Dl/mjEk7megkN8Nh1CjwenUwyg9dx3grChQTW8tSRL7GLiTC4cOwDMzf1XWQStntbllZELAMu3ZBu65Thz9A4XClsFByEYvx+3N6vbAE3OCrr5yDQFlZBvEUg8hfmpVlfKa8HO0Zv/7a6Gw0caKc2y4QwEJOs9l91An/AQOcMzlCIcyn3FzwtvM+4ybQZ8Y338B11KYN0gT37OHz4ni94MWyrnFW3ZqdbQg3toFZUwRXrxb7tGvWhFDv2hX59dZMvi1bsBaSza1PB5z6D/Pc12zNv/WWmIeJxwbKiBqzsjCeVvezaCMxV4PbHcy9y67DOgOedBIUkuXLIRekurSxLvF2F+JBNCiiQ1FAzmSuQty+HTus3a6YlQUirGQRi1H6wQfwobVrh0Ezt4LLy8MO3rYtJrDo5dSp4/7a48YZvTJFC59x+zP07cv/rN3mc+iQu3fh9cKPuWoVtLMGDbCITzgBPERJVEMfdcJfVETEEyyjRoHPh6fZRSLQ2N1gwoT4jT4YNIL6vHuoWxdaPRMWigIXR+/e/LXXoEG8xrh7tzi+ZxZuHg8KMatS0Juxfbu4taNZLonWZ926CJzz4myqijXZujViCWZ667w8bPa8MQsEIG+Y5c64mkaPdg4aB4Nwi5uvM3s2BL5T7Ki4GPOmfXu0+XzlFUrLZ3wi3nHsgrK9e8sLGzbJrf03b7jB+XuqGq+lHjoEatO2bRF0mTTJvm5gyJB4wch6Cnz9NV7sscfKBa6T7YyUl4dguvUaXm8itwmleDG863foIL7GwoXu02+rVeNbCqEQAk4uazGOOuEvatbDO045RUzpUKuWu832wAH+eezmcLNm+O7GjWDobN0aFoPIUlQUozkJw7nnuiNt47HXVhb++ANKTIsWoEtYtAjuLJ6ryroGx44Vyz82bvPnY3Nl1dhs7ZhdtJoWn63Tvbv4mi1bIuvvxx+xdqNRpIU7rWFNQy3Ahx8iW6lVK1h969ZBsW7VCgqsNZEgGkVw3zxvNI3SQWcupzHRxXgkawyDBsnzdxPCD4Y57XRebzzXdmkpTEyrq0nEU7Ntm3hRMO4RmfxkTXPO6bdDQUFiIwkRp7nICrKryP3zT/d51nYLORxOdEc54KgT/jNmyFtbPXviO59/Ds2b5Z0fe6yY9lmE+fPFQkJU0HfqqRAG558fL/BFnw+FDF6YTz+FQDnuOLiVmPXgtPbNRIR22LkTMYdmzRDQdGsF5eTE8/8z19UFF9h7FJhSGY2KZYS5Gru8HIJ6wQIE93nnNhMr9u1rT12v60Y7WIZff0XSDaP7YH78rCxsOF9+iTiSNT7r8yVWDJvbXc6axZe1dwdfo+VBgblophSw4o8/5AVOo0b8czhp3JFIvAbywQf8h1BV+CWt+OAD+4o80cvx+zGYzEQeNszerFq/HlwdTZsiEm/tUvTUU2J2U2tjaZG2Uq2a+PqUIpPEqsGw3sKyG4L5eOAB++tZcNQJf0qNjBYW0BSNpbn/Q2kpBMiyZcmleW7cKF53ImFXp46Yf4c3J5ky9fjj8d8JBFAZ/tlnYAu1m1vhsPOz7NoFy8c8bzXNXQGiSMN28p93747v79ghdpfVrs2/Jo+ygY0dS2T57TfnGJyiJNZ/RKPIMJo/HzGFZs0gPx980JlbSCRbHniA/5nevs9ocYgjID0eaKv33SfOg/3wQyP3XdchoKyLQFVhip1wAsySsWMRwI1GxU0R2PVvvDH+ev378z8rYv376Sd35djs0HUEqX7+2ZllcfVqXMNqApqbcvfowb9OdjYCd2awtpfW53Oqi9izB81nmKagaZQ+9lhytRiqCtZVFzgqhT+lMNfnz4fJL5prdi67ZCBqVC462rSBAmInEINBzJVLL4XWv38/f5MJBiH4t261V/6OPdb5OYYN41ugmibPdZRsG1RFofSJJ3Ad0Ro56ST+NUUFsYFAfK+Dd94x+n/zPh+JQIby0Lt3/LOxmgTZ4lpzMsmLL/LfVXW9hBZl1RFrwcEgeMhF9KAlJTCHVq1CBtA11xjtBj0ePLj54RUFk9EpYKZp2AE//xxm57HHImArCprxSIyiUffFFz4f7k9WK7viCv7Y1aljmIA33sjXynQ90TdaVoZGLObgXL9+8oykGzZAGB08iCMZ4R8OJ1okDqjqTl5bKrp2LWc3QgipQQiZQwjZUPFvdbtzpFrkZed6u/zylE4dh8JCdx2zWK73lCn2btZAAD7z4mIkcxx/vFgmsM1s9mz+vWianPIgIiVzk+Qh2ghDIWfPhKpC+N9wQ+JzaJrRe5khJwf8ZCKLR1ESY2XFxZCJPDdZJMJnOlixgr+pqar8etZ1w6WYm8tXTKpXp7QoZzVy9UWDpWn2/n8zysvFQlrm8Hpxo1OnohrSPAg8AerxICov4sTetMndBtC2rTz/R2mp2JRWVaO4bMkSPslU27biTWbvXvgAU82LvukmeWHh88EamzfP9WWOBOFfy/K7pwkh91f8fD8h5Cm7c6Sjwvf00xPnvaall8rEzudvFeaqCusvFoMi4BQADYcRF7BzD3k88ZtZUREEYjBoFIKOGCGnPImaw/PcISK88ELi2lJVSu+9F8SLvH7A7GCbzKFDRjYUq5159NH4Z1i4ML4WgHeEQnD7xGKo1G3bFpk8l12WuAZ9PlgQvHF67TWxRVOzprNLy+9HVo8ZCxbAfcToPo4/3qR4xmIYLNFFe/eWexlffJEaz0WPHrAmiov5u5XXi4EMh3GvrVqhus6M0lL4DZs1g2YwbJhcZhEhGJirr5ZLV7vsMvFkUJR4E3DaNCy+SASTq1On5FtMusGhQwhss4ktCtT5fKi3SJJx9UgU/utY315CSH1CyDq7c6RD+OfmYv6ydovZ2XJcTk5YvRrrr25dZOrIKFaNGsW7TmIxCAQ74cXWl93fNY2vHOzbB83Yys9vh59/TpQ3waC7TmKxGFzTZqaBW281lMFDh9BnXGaT2bMHz8BzOXXr5jzmbM1bXbc+H+RVjRpGj4JTThFvcF98wZd9igL/fdeuhgysXh2tQs0N47t1S8zWYmO1ahWla9ZwNp25c/mCOxBAtRilyJ295RZoiK1aoQLXLDBEwQWZIxAwWOiYL533ueOOg0kj4vpm3YnME6pFC7hzZDKUmPVhV3m5fLl4o/T54KqxorQUgb4tW8TnTRc+/BCLvW5dCI65czGxRRxO4bBEKbgYVS38NxNClhJCcggh/St+V2D6u8f8f9Pv+xNClhBCljRu3Djph7dixw6Y7sl0j7Ni3TrMRbPQ9nqd53GPHvHn+eEHuTxykVvB54PyMmWKcc7cXKSO1q8P63rsWLlnXrUKsYXatVEEp2m4t1AIlocT1w4PhYVYk1YWAkox93mbjGxGEqXOsQVWNFdQwLe0g0Gkna9c6bz+y8pgMVg34nDYUBi3bYMMZJtcaSn+v22b/DPFIRaD+4c3scJhcIawHp1mTeDuu41zyFaa8g6PBwKrdm0Ia5F5c9ZZ4mdYulQs3F58EfmuMn4zny8x4GzG66+Ln9PjMdxksRh8qK1b47muvjr5cv6lSynt1QvZBiefLK7AfvbZRO2QdTDKz+e7DWrUSKmSuqqFf8OKf+sQQlYQQs60CntCSL7dOf4JYrdkcN11fG2c9cnlrVVNSyQefPJJZ3eBpoldhI0aweVw/PFwtRw8CCXMPM9UFfPTDmvWYC2aNzNVhXKZ5r7ScZgyBZsX22QuvNCe0bOgAMK6Xj0IYjtXWzAI92pxMdxyoqCs1RVjh40b8XnGs9a4cVLuWHfYvt2+OwzvCIUMMyM/PzW6Z+sEt05uTUvMkDHDzl/GUld37kSRhNMmcNxx4ut8/bV9JlGNGoh/PPhgYtwiO9v9Dr1sGT8LiPH6MBw+LHYLXHIJtIpmzeJ/7/HYxx8kcMRk+xBCRhNChleF26cyYJcY0bAh5lfv3pjL4TAEHK8m5f33xZo/o/xw6oRnnnfdu/NjA16vPV2FaDMLh+UIE1NBaSk2H6c4WmkpshPN68jv5/cW7t8/3lIRNaH3eBJp12WwbRuURbdr84MP0LyqWjVQUTu1yf0vrr9ejp2THdaUxaVLobmrKgaCxzkie3i9eAlsYjs1chYJZUWB9sNQUABhaOc/tZrOZpSV2afcsf6lvIkQCLjvAdyrF/861avHZwItWya+J12HtcATAuEwWmQmiSoT/oQQnRASMf28gBByASFkvCXg+7TdedIp/DduhEDOzsYcGT8emmfLltAgzzrLaOwzaxayZ7Ky4Ae2FteJerSaBdCIERBA69eLEx+KiiDcrT7/7Gz42N1kELF1KfpbICBm5BVtZuEwBPORABEJXzBo+NpVFZYBry/G+ecnKpaa5q6ZUyp4+WW+omilkuHCiQiJJ+isRVaxGHxb27en1uWGbSx2E9uM8nL4H60WQyTCNytzc5GtwHtZdg2Qf/pJ3CeUjcmPP4qtoHbtJF6ECSKtTFXjs5N+/VV8Tz4fcrR5f/P7kQueJKpS+B9f4epZQQj5gxDyUMXvaxJCvq9I9fyOEFLD7jzpEv67diXyVQUCfAv22Wf5hGtffmmcb84cuWKh33+HSzErC66KRx5J9L+vW4eNhqVit2mDilq31eHsmnZFXp068cdHVPMSCsk1VsnNhW+9enW4oQYPTqSNSRa7d8PVK1IIAwHUBmzcKE59pxT3c+WVeCZNQ9q3bKMWHkpKEESuWxfv95prxJ6DsjJxVtf550tc7Jxz3E2E00+3P1+ygp9NMrcUxFu3IiIeCuH7LVrY77pFRXjp7GXVqGH0Wv34Y5iA4TDK5H/4AULdbsFoGjT77dvTZwKK+gOoaryvPi9PrJWxmApvM45EYComiSPG7ZPskS7hP3KkOw4c3u+tPFJTpiDOI8rUycqCkmF+76oqri/Ys8cIHL7/fnKFkMwXLfq7qML3++/5qZk33+w8tiUlcFmaNx1GFZ1qX/CDBxHXsIuLsBT0e+7BxhOJgMZBlLVXUAAFONV7u+SSeHnj82FD4QXGd+wQyyYpckreCxIdDRo4R+eTpRgIhZC5kyz27sVgyPrL9u/Hy2JulMmT+eZTy5bie1ZVcHYwK+Xii/lWxeLF7p6FcbVbz8PjB7r+erGgYHQE1uyRunXjGVddIiP8K3DGGcnNdfPBa7JSXo4gpejzPCVDVRPToK1YuNC9ZR4KQYP/7TexotGyJc5/4ADmaLVquM6116J+p3Zto7XoHXfIzT0RvUs4bG+ly+C11+zHweuF+7pLl/ix9vsRe7GzBGSRn48YAmP7vPlmBHlFRH5Nm+Jv9esjtT0aRdxEJPzNPGm2eO89aBtO5EgyfiQRLYPTccUV6RnUZBCLiekn7Doj8VrbXX+9YYU0aMCvRpbBG2/AKlFVHP/6F98VZtfIPhKBu6FDB2iowSB4gf78M7l7qkBG+Fegf395wkORUtSwIf/cn3zC/7xIUcvKAgGdHVj+v5OC5vEY8berrjLy+UUdu7p3h1JoTazw+bAG9u+HxmyuhXGCyGUZCFD6zDPy5+HhttvEz+7zQTkSxUUYFU0qLTnLy5ERaJYtHg9ksEzdlDnr8p57+Iqi2Z3oiGgUL2jPHgiHG24w/IXHHOPuZG76TrIXOnKkq/FLKw4cEJuAIq06O1ts4h08iLFM1QQsL0e2klNmxKhR/GwmXTci/7m5/LzoJJAR/hVYuzZRg+S18WOLVSaDi6FfP3HaJ0946zpqO5yQm2skPwQC4LR56ilsQizI2a8f3KlWYR2NIuPIuiaCQcQOedq0rjsnbvAg6iESidg3npLBM8/wNzFdh6xzcuX5fPy2rE7YvRs+fLvNV1aZUBS8y7IypM5qapSGvCW0DvmLTgndjqbAqQRIiorQJcbtLvfdd2KzSqRJM+a9qkA0Kg6c1K/PX7TjxlXd/VqxfXuixhAIIKOkEpqGZ4Q/xaJ7+GFj3D0ejHnfvqjC1HUIkfr1YVnHYhA61aoZ7UKfe078fkRd8ljVuFX4ioKuIhw6FB90jcUgTKwumVgMjJP16kEwNWrEVzRCIbHQFDEGR6MIqtaujXN36GDQYxw4gN+b5YXPB+2Y1Scdc0xyndFycxPdoX6/QYkgI3yzsuSSUhgOH0b+vkwHL5kjOxsJH5RSSgsLaUnthnSfpzaNElPj5U6d+BNs9mzs+j4fJugLL8gLii1b4N8OBjFYt98eX+odjcIPKOv/9/vdp0OminXrQMkcCGBBde6cuKg0Db7H114zerhGIgaHypGExYuRvx8I4D57906bpm9FRvhTVL7zlAJGFVJWBleIdZ6Ul+P3vLRBM669lq8ohUJYu+3bY90Eg8j8scueyc/H/SoKvnPhhaAMlsGYMXIC0c5lLKJtvvde/hguXYq/b9gAugZGGGnt78E+/8orcs9ixqpVkI2M0v3SS8GLLyt8zXxeMnjvvdSocKyHz2fKaHz5ZbHZZW47RilSF+202dJSDES1anipp55qMO8VFiKSbDZPWDd680T/6y+Yl+aeoaIH0fW095m1xd690LzM96QoqGhkfU5r16b0zTeNZ4pG5RatW8Ri6d1ICgsrvYDmqBf+e/bwtV+fD/5kJ8jMIR7bI2snyHDwoDPFAvPzm7Vyrxdr2MkrUFIiL7BUVbzGn3028dz794uz4664Iv6zRUWY0yJrqHbt5NfQoUOGtfPgg/LCNxx2R+lx//3y53biZGLv8L8xR1EQw8x//+GH9lWEkQgeiKfV6DoKM6zsm+a/80qSFy8WR6RZtSmv8xeleKHpFraUgpeEt3hVFZwhhYXg527UCL9v1Aj/Tye2b4e2wTSPPn0kGzFXPeyEv5ccBdi4kRBFSfx9NErI0qXi7731FiENGhDi9xPSsCEh77wj/mzbtoQ8+SQhoZDxu9atCXn9deP/uk5IMJj43fJy3AshhPzyC+63tNT4eyxGyKFDhEydKr4+IYTs3YvPOsHvx72Y79WMdesSf7dtGyGBQOLvKSVkxYr436kqxnvjRv758/MJKSpyvk+G8nLjuTTNuO9wWO77mkbIPffwx16EFi3kz+/18ueXGeEwIX/+WfGftm1xU7wTNWtGyOefE3LLLYRs2SI+YXk5IWvXEjJtWuJgFhcT8tRThCxbxh9oSgn544/E3//5JyYHD5dcghfdpUv872MxXKtmTXy3WTNCvvhCfN9uMX8+ISUlib8vLcXzz5xJyF13EbJjB36/Ywf+P2VKeq5fXExIp06EfPUVxrysDNfs1g3//1+GaFc4ko5UNf/du/laq4jkj1L0n+ZZ22byNDNWruRr/jfdJL6vzZvRRtLng1Jx2WWodBcpXwMG2D9ncbGz5u/zocbgk0/4n9U0eCWsEPUq8HigFPFw4oni+8jOhlJnl2SxYgXcu14vlL+bb463fmbO5HtPQiGjYrp6dXQ9k03mWLcOldtuWBQ8HsQUrNQs5kNRTMpifj6KEazpQ+wFyZhv4TBKtUXERu3bgzBNRKb2yy+JD//ss3wzRlHgO+dB1OEqBUqCONiV0X/wAQIzvL81apQeF8277/Lfh6hRjROKiyvHQhKAHO1uH0qR7mcVqsw65qFhQ/6cOuaYREESi8GPzxMYcYvehEOHkKJodsf6/Yjn8eaarsv17Rg9WhykVFUjWykWS+zt4fVCaIqonwcPdkdN8Nln9jVJmgbZwcOuXYmC3evFZsBQVoZ8evPz+nx4d4cPwx3uZv3n5SFd2yz/2M9+PyqD771X/CwvvghPBK8y/JZbLBfbsAEVu252GfPFHn0UE0v0/csvRyWbtSYgGEQwxjowduXq2dn8SVxcLA4wdesmP/A8LFxoT2Tn81E6fbq9z616daR5pbIJiKiw/X53PU3Z8zBN5vbb/5FaiYzwpxAEI0dCUfJ4EPMSdaSKxeznVLVqeO+xGPjd7Vyz2dn867z9Nn/dhMOIZVkzcTwe3H9+vn3nuFgM6553L9Z4Yn6+UT3v86Gx+qZN4nOXl0MBZPG3Nm0Se2Jbceed9vJN5Iu/5x7+571ecGQx7N2L2oZg0LCeRBQPJSX2cZPnnxe7yNlzvvqq2DJjWVILFiATilkEDzxgk2nEMzHtjlq1kIYWi8GkFQ3uJZfg/H/+Ce4IRjV7003x2QZFRdBEunQRD7i1pSGDXcmyqMmyDDZudM5aUFXwpji1ndR1d0LaClHkPxKRq6eIxfjMn4oiyemRGjLC34TiYmRVOSkDTh3mAgEINhluH16vaTsepzFjkNlm/RsrpTtwvQAAIABJREFU5tI0CEeRQCkoQIDYvIGFQqgi5T13MkkMMp//4AM5rn1eFk6LFuLvmEkgzfeze7fRytHvR3bQqlUQ+IwXyO8HJQwv3ikTh503T2yZWbOYpMZUNrKsqtBiCwvxginFLmPn9rHejPmGtm1D0wSWmmVnLorSpEpLxfwjqdQCDBpkn2OrKEZXoWnTnCdZ9erJF3Hxcn4DAaTHOrlv5syBaSraoFU1+R4CksgIfwrlpl8/g/Ts+OMTWTrNkJlTMp21Bg7kn3/iRPH3PvsMGXtOssAuBrBli1EcpuvQStNFsiYLO6oVdojy71u3Fn+Hl40UjWLDMKerezywvDp3TkwY0fXEdTdxojgDkyW5xGJ4N9bK6Lp15Rvbx2HaNP5uoijwW/t88EVFIsaE83gQUPn2W3Ew64YbxLtPSQn8lzIVak4FEk88wQ92ffFF8r5tOz8/o08wk6ZNn44FLfqO35/ky6nA7t0wL1nz6RtvRMCObcI88LR93tjyKiALCtK2WDPCnyIoyWsELrJoKYXmahfEsztq1EBAUzT/7VqX3ncf4oFO11AU+/lX1ZBhJK1bl0/sKMrh93oTWYophZLlJi/f749vdEUp1hsrjmOfC4XgETHL0f37salHIngHvXun0KWruBjl1mbNMhhEUVc0CteCSIiEw5hIvL8Hg+Dq4FGWfvyxHGOgpjmXRsdiMHkaNcLOy7g2QiH4R5Mprb7vPr7mHwrZD7SIYbNOnfTl52/YEF9w0qkTn6RLVPhjPQIBaGm5ucg26NQJvwsEQEaWYmvJo174ixhcvV74x50sQpk8buuaceLF6dRJ/P1LLxXTK5uPSMSZHK6ywNwsdpuPLG1MOJzIDpybm1jFz+ISPLz6qvsuhbyeINu3I41b02A1DBr0D8Tl/voLQlzX8VJvv93wy3fsKH6AYBDFDo8/DqHr9fK5SqwNHJ56SuxWqVcPQrZxY/i63AjNxx7jv4Tmze2DSVb8/DP/3pyoT3lBa01LrqzcilgM/lieMKhZM9GysOspwNsA2rbFecznZ2RbKfScPeqF/7x5Yteox4M5NW2a+PtutH9NQ8aNE4YOFZ/jqadABeAkzGQ2mcrA3LlwZTKKiAsu4Hfg+vZbOe0/GISmb8WmTSggU1VYUg88IGYY/fVXdwyooRDOxxCLIX4pYkEuLgZ/kgzDaX4+NpG0KJu1atk/SO/e+Fxenrj94XnnxZ9z9mxxENOJbVCEaNS+n2b9+vJCbMAAceqck7bz7bdGj80WLewXth0OHcILZ9kVL7wgHl9dR4WxGQMHuuMGYeyi6XwnlFaN8CeEHEMI+ZEQspqgkcuQit+PJoTsJIQsrzgudDpXqsI/N1fOP//TT/zvf/edXB+AJk2ggcos+gMH+HQqqmrMt7lzDZpiq8LBsv3+aWzenChkAwFksfGee84ccFZpGpQY0WZw5ZWJ3/35Z7hyFcVo6r5sGT/rMBaDlSzT9czrRQyQtbe1Xue884xrxGJovqPrRjP70aP5z5qXZ9DEqyo8IXZxJSmce674QRTFoEz94w+xK+f44+PPGY3CLDMLs2AQGrobAiQz7Ng23Qoxkc/f2payMlBaCt5/RcFLrFYNbq26de0nlVmToBSaSyQSv3A1DVoT7/siAeM2pdSCqhL+9QkhHSp+jhBC1hNCTqgQ/sPdnCtV4b91q1xsy6ogmfHDD/ZBWEUxhIksli3DuvR4jGY+onPk5Bi9eY87DhTiVcFXNWKEmKXUqRXimjV84a9plE6YEP/ZTZv4mrzHA5nVtSveqxlFRXAX16ghfk+hEJRlRk/Du04ggDRWRu7H8yRY75dSbNTWNaxpkMtJY9EiexPwmmuMdE3e57xeNGe2Yv9+9LqsWRMDNmBAIrlYaSkGSqaNWyxm3xM4EJD3/z/0EF/LVhR3BE2UwtrYsEFcvGLFwIGJwiIYtPf9hsOIo1jxxx8g5opEkD74n//wJxQbH57mkmJDjCPC7UMImUkIOa8qhL+d28d8NG3qfC5eCiYhWD+yyQ1lZfAls56z4TDctnbC/I03jKYroRA4g8wJD+lESQliTzwXyGWX8Z9ftttc797xG4DfDzezNXYg2mTY4fNhPbEx37YNsTE2htbrsKNPn3hXmeg64TBcSaIWrXXrxt/vqlX863m9YpZUaSxcCMY83o0qiiHcx43j71TJNGB+6634CXfttc4+xvfeE2uwbhqR79mDBWU21zVNjojLjP/8BxNT1zFOt95q73oqKhJriXZWTevWsHzWrnXOwMjPx4Q3n4/lcDMt0KypdOyYUq+BKhf+hJAmhJBthJCsCuG/hRDyOyFkEiGkuuA7/QkhSwghSxo3bpz0w1MKIebkDvD5kMHlhCVL+OvLDQf+iBHu4lKzZvFrRK69Nv5z+/YhEyaF+BB97TVY1+Ew5t7VV8eveV5vY3Y/MmSPpaXY6Bo3htJ5yy18ZU5UqGbdcF57DYkxzEpv0QIso6WlOLdVYVMUKMtO19F1bGYihc/rjb/fr78WuxZPPTW5d5GA7t35FwiFjOKVyZORxunxGM0kTj7ZXUeob77hTzjzwInw2WeJi01RxHTVImzejE2tRg2Yus89Zy8E9++Hpr1/P3x2993HL7W2y4/euFE82ViBjfX3l16KtD6mxTEeErvg0M6dmJxWtlLzRlC3LgRFitkGVSr8CSFhQkgOIaR3xf/rEkJ8hBAvIWQcIWSS0znSkep5333igKDHA0Gyfr3cuZYsgQVQsyZcNW6alZSXi++jUSO+dSpqPxkKYWM7cACB0VAIz5GVhdiDW3z9NX/NX3218ZmCgsR0SE2LZy9NByZMkCsQ0/XE9ZOdjfs880x7WUmpmBnU44G3QFRv0LRpvGX0ww/i+zz55DQNynHH8S8QDhva/caN/IHzeOR9xyKfu3ng7FBQgIyGWrWQTXH//ZWXmRCNUjpsGCYqbzLwtBSRybxtm/h7wSBecteu2JC6dMH/eZWMqoqMLSc88YQ4yPvVV2kZnioT/oSQACFkNiHkXsHfmxBCVjmdJx3CPxaDZt2gQbyVxfjyk7GMk8H+/c7Fi0OHxis5ogr2cBiWJhP85r9pGiwGGWzYALfF6afbr/n9+6HosK5irJXhhAnp56oqLLR3IbODN5aahs1PRlbefbf4vPPnI2DLk6Wahnd1881wy0+bJvZ4VKvm3EvdFuwF9e3Ld0uEwwYv/LBhYn9ZKISCKCfYDRyvyMKKRYswaTXNaKy+cmUKA2CDxx93l+NrFzew08zOPJP/nbZtxddx2vBEPZTtWga6RFUFfD2EkCmEkOctv69v+vkeQsh0p3Oli94hJydxnrAOapWJHTsQDF2wAIdT4oCmYU4z3Hgj36UQiSClUJSBdtZZ9ve1di2oDpgGLXJ3sk3m0kv5m8zXX1fOuC1bJt8m0XqMGiUet3DYsMqvuIL//UgElPqUggDzrLPwPd75gkGMi0jp9Pn4NQWOWLcu/gXVro0Bt/rCn3/e+I7ogdjRtq3zdW+8kT/wkYhzrmteHj/rqEaNytH+7aL7og3QqqmUlMBXuHkzegFYJ7mqgmKWhzp1+NeR6R40daqYWteu+tQFqkr4n04IoRW+/f+mdRJC3iWErKz4/efmzUB0pEv4i4SBplWOYlJQgBx4qyImUzRWqxbOsWkTnyZB09Cr448/xJWtdgHskhJsQjL3kpWFDUy0yYiUomSweTN6ihQVYY06pbmLNqsvv4QHJCsr8Z2rqqEAi1iPFSWxe5qIPdgs5EV/UxSXxZqlpYkETezmL7kEJmzHjuDmNuOll+yLK5wKpSg1Bs7q23vhBfvvlZcj5VGUtfLeey4GQBJuJ4ffj02oqAgT7cUX8ayaZrTSnDoVnCD162Mz/eknaG888+3SS/mLqFYtZ3O4uJjSVq3iF5amIasibcNzBGT7pHKkS/iLfMDZ2agNSTcuvNA+Y8VO8Pp8cP0ce2yi8PJ6DZ9+cTFf0fL77ZMjZs4Up4VbU5MnTrRPI5fJknLC3r1gAVYUrMVwGM84ZYq7WhlFAYEdW3fr1+P9Wj+nabAEDxyAh8LsstF1/tjJFKyJjqwsMYtsAqJRCBXeiUIhBBhFYA8kerGXXy53Dxs2IJDTqBEE4syZ9p//9ltYJqIJ7ybV0w3cmoaqCmbAcFjs4mnVCn7i4mKMQSiESaQoYFQ0+2RXrUo0CTUNfQBkUFCAmEiTJrjuhAn2tL0ukRH+FRgzhq+UiJg3U8GePXIFRyJt+pRTQCMsEuz33mtc67nnEonGqlWz7/trR4fQvDk2nW7dDNZau03mjjvcjU0sBkvr11+NzKQuXRKFvKZhDHr1sh/Dpk2xbpo3h1w0exeWLeOvca8X/npK8e6HD0fNRdu2SKu1JpYsXix+V+aDJdjwZI40t9iECfZVhU65o7m5oDc17+JeL16gyGcfi8HV8Ntv7gu9tm1z9rub2fHSCbfcK9WqOe/iHg8mzqBB/CbUzz0Xfw9r1iATqnFj+AdFeflFRRiDfyrASGlG+DPk5aHRh3ldaRoozlesSG/R1KpVctxZ1avjHtgc9njw/7lzEUQUnaNPH1znrbegeDBXMGsQ79TwfeVK/hoIhw1ftxWvvBK/xv1+3L8bd8b69UjH1HVow1lZsLxF6/Hii8XEl0yosgbyPMyaxdf8CTH88Bs2oMpXVMu0f7/4HNajdm1Y/OYNQNNcFmmyfrS8IxyWK6igFNko55yDAG7fvogh8MB48Rm3UPXq7gI5o0fbb1aaBv9nZVQlisjczJue+T5kOXfsJmWjRrj2X3/BJcTI5tgGOm9eYmP2SZPw7piLqU2bFNgA5ZER/ibs3YuEiObNwdmjKEYdSPPm8umeTigpcS4s83ohqHNy4Fps2hT/smYlW7fyrQdGJcLj//H5wPYrs86uuy5eK1ZVpCXaKX7ffIN082bNoIBaq2ztUF6OdWNV1oJBsXA/+WSMZbt28WvR44F14lQ9u28ffwxVFTLr9NPxM7PqeZQZ77wjvj+ri2zGDMT5Bg3CGJ1xhrPHJAF2WnTbtslTMPBQXMwPrGia/K4uylrxeKBt/ec/6b1nM+bNiw+Cs3z8uXOxmG+6CQurZ08Ialm2wXffFbuUNA31AopiTJxzz4XpyLSaSMQILC1cyF+orVtXepl+RvhbsH8/THurGe/x8Ns0Jos33xQrD4xr3mmzufvueAGtKJgzRUUo8uJZvboe3+1KhPJyjMMpp2DDePzxymWw/P57OWuIHaEQ8vApxX2NG4f77NgRFo/sexo1Kn4MQyFsHN27Jyqsup7Igvz002JXdrt2sGR69YK8kca6dXAP8IiKzjmHf7GaNdP/gj79lP9SgkE5hkJKEWQWvURRlkw6sXw5TOEWLfCvXabM/fc7++98PrjOmjfn/71ZM7n0UpZJ0reveKHm5FTq0GSEvwksGUJkpUYiYoK3ZPD991jLtWvj3NnZUIbuuMPZNUMpFIP330dtSZs2iFuwPg+iWpysLLHb8eef4Rdngqq8HMrT998nWqrpxvTp9sLf2mq2fn1o7k4oLcVz/fgjv7o5FkNSzJlnYvMYNQqub5EMMPcJphRucFHLTVvalVgMPqnZs+Fz/P133EiXLvHmxqBB8RrgihU4OdM8mTb73Xf2A1FQgMDr4sXyGuXrr4sFmV01rBmi5gt+v7sKyH8Ce/eiStGOSG3ECHz2u+/irQqfD+9FlN7J20QGDRLzs2dlVTpRXUb4V2DuXLnmOrz+F24Qi2H9ff11+gPJsRjcPbNmgT5dRLVg9V8XFmLOmz9Xq5axKTFL1cpPtW8fnmPJktQtVFFfBXYEAtDG27ZFm0seTbQVP/+MVG8WP5Alfly9Wi5F9vBhCPhu3eLnjqbB0heOyfbtyNHXdVzI4zH6S1ovGApR+vLL8d9fvx5cNCedBN+gXWCDUqRhqqqRKtWsmRzfxtq14uAPj6yMh+uuE7/UiRPlziGLVatQ/bpjh9znd+zA51etMn63dy8mWJs2EMxXXokxYJtsKARKALZ5X3013sOtt+K9uOka1Lu3PSdKStV/zsgI/wpcfbVc9bdbdk4ztm5FXj6L7YRC0NbTgXXrEJdj51YUeALMAlXXUTVuhVNcjB2qatDAjB5tpF7qOtxNLEZVUIA19csv7qp7hw0TvwNdT6RrLywUXyc/X1wjs2eP/X2UlSGuyduA/vUvfObLL41NJRLBeU88EZmPr7zi4MZu395dGqLXm7yW/MsviVqN14sNQGbHvv32eNNG02D+yKYc9ukjfq6XXkrumazIy4PFpGnGwurfX+z7i0bxdzaBNQ3mM0/Ydu+euCnrOkxuHnr1kssy0nVK334bpjoLMJr/Nm5cesbGBhnhXwG71qCEGI2RUkGbNolrXtdTr4KNxSD4eTU/t98OP3ivXmKtV1YGBYOU/vvflH7+eaKrw+dDvOzVVw0lMxKBe0bWtRuLof6Bt3bCYcgxJq+crvPmm3x3jKIkZuPx8N578ZlWoRAs+t27EbQVKcSOrTNF2rTMceWV7oOjIq0mHIYJ6oRYDD65Hj2ws734olzXGoY77uA/i9+PoFI6wHhFrLu8aHN56aXEDTEYxHnM2L1b7ALq2JF/7tWrMSFZIIjl95qFu6oiIMR8qQUFEPYdOyLzSZZ7JUVkhH8FJkywdzv4fKlVVa9ZI3YrnX++8bmCAmSAzJ4tz8C5cCFfy/V4Etk9rYhG3cmfO+8UxxxDIb6vvE4deUVx1y58nhdEDQbhdhG1rjVfZ/x4/rr1eCh9+GF8bs4cKNQi63rhQvTmPu00uK6Zq+nZZ/nPqevI2hMiFkMBQTKCnw3AY4/JDSSDnU+5MqoXKTX8jx9/DAEv2oVlXE9OKCwUC+jmzfnfEQVrg8H45uhr14rpWFk19PLl8AWbU2W3bIE//9RTKe3XD26lL76AYO/SBZQbVdFmz4KM8K/AgQOJfWFTEWJmlJUho02k8LFHePttQ5vNyoLrYf585/PPmiVOHT3nHOfvy7opGTWCKB3a7+crmZGIu54Te/bYt9a00rnzrrN0KX+D0HXIo1q1jHFWFMOtHo0iOPzhh2LXsYjtMxjExiDEp5+6byZsPerVkx9ISuHv511TVRHJ/+ADFDOkCzt2oKrO7H+sXz/+HnTd8J+lil27xFqbiK5CRKClKDgfw/bt4vdQqxZcRczVpKqokJbR2MrLETCeMcPZB1mJyAj/Cnz3nXPVbSTinFRhxcqVmGsiAasoSKNcvZq/OWRlIXXzr7+QiTZiRGJD84ICcRcsmZja9On8ezNrt7qOjaS8HAWLbuSV20D5r7/aZ/6I3OXW69x0U7zSqeugRuHxfWka6OYbN8a1IxG8m+HDE13jP//MV2ZVFUk7Qpx9tvNg2XF+sEnoBgcPIrjMhK/Hgxtt0ACTkj3oddeJAzSHD8PXN2OGcxCyS5fEF6RpCIj26IHq4pkz05fDznyevEnSrx//O7fcwp9ETZrE39fatfa9ea0Wh6rCrLRi3TrECObPh0CoVy9+krm15tKEjPCvgBPhIRMuoiSH5ctR+/Hrr8b8iUaRuik6n6oi1lNYiAQCXrJHJMKPmd1zT/z1mYLHNG9NQ2aMbEevuXPhs8/ORgB4/nxYqpddhv4E77xjuJtF9M4+nzhxQSYtk2H2bPsiOEXhb9ShUHwWUCyG93XRRbC4p01DgJh3bo8Hlp/VctH1xFhrNIoYkXVzdKRpF0XWAwH4/rp3RwbAWWfxTRuvFxPVLQ4ehK++Rw/s3KedxufL4PWf/PFHI7DChNUbbyCzZepUVAqzwOrOnWINqkMH9/ctC5Z2yZ5JUZCqZtWSGLZvx9+Z8GYT16rZlZfz27UFAs7uIEph8l91Fc4diWCz5S1yXXevVaYBGeFfAZFr1Cp0rOmZhw9DOLIG3roON05eHgSoSIOtUweuP8bpIiqEtIsNLloE4f7pp1iHn30Grqlzz0XGSSqtHHNyIPDnzUtU0kSFkJEIgtpMK2Z0FE895e7ahYX2z52Vhdij9TpPPul87g8/lCOtMx9myuW//8bzs6w/jwf3M3myhDI7dixfOGZlxbsLysqQTuXzxUecq1dP3U9eUCD2kVtZ+A4c4JusPh/uh1kOTZoglW3tWjEhWrNmqd23E9asQUDq7LNRim2nbZSVgRvE7zcCsscfz0/l++ILvGxmKagqNDo7jnOG8ePl3Xy9ezs/Y14eNJgPPpDvO2yDjPCvwMsv278nTUN/ZStGjEhczz4fNOZvvhFrsD17xp/nyy/FJGOie+raFZo6S99WFPeC1oqiIqwfTTPS0Nu3h7L00UfYEO67jy/DqlWDvHj7bWQXXX89MnR4yM+HJTx1Kr8B1Cuv8DcAVUUmzuefg13zjDPsr2PF3r1yJGzmw+83qqL79OHLTr8fm68tCgtRacomms+Hn0VNVDZvBkvfeechzSod/mG7DBZrPMGp8s484U87DRYAr8iJ5cYfKXj66cTF7vdjnBlKSyH4J01COl7//li048djA+VpQF4vMrIYjj9efpKdfbb4fmMxZBwEArhvllucYpFcRvhTKCwTJ0LxYXOCEaG1awffsSjwWrOm+H2KNn5eT95oFGmOZm1WVe0FFU/50DRUnSaL4cP5m5nfb1iuoRDiXWYZpqpwCcvgo48MS5h5EiZPTvzcokWU3nADkjMaNoRF89ln4ABinEuqCuHvpp7AjULGjgYNYOXZueRVVcK9dfAgNI0LL4RA+ScoDswYM4Zv4vj9iVW7b70l1uSth6JAQ2D9Ppl7Q9NgGci0eHSLsjL48d54w13TDVE3smAQgn31amxi5gbv/fvHm3Y5OVgMbCNlhTWbNhmfsVZOig677ly5ufymHWzCyVQ7CnBUC/9oFDEhVTXcNpEINuH+/Z0LJym1XxuqalTaMkGt63BZ8FKly8shQK+8Es1levVybuvIUz6cWH3tYLeZWddJz54Yq7vuii+StMNff/E1+mAwft1QirV2663G+4lEMB5WayiZznYLFkD+yvYDiETg/rarzUpjhz0gGkU65iuvQPtINUg6f75416tfP9HtsW2bHPc4e3iW7rh2LaWDByNv/sUX49Mn04WNG6ERMC1YVVHTIKMFiIRyKIQxaNaMH/wxW2g7dsCCuOQSBJTGjUvc+U87TW7szDn/DOXl2EhPPlls/msa5kaSOCKFPyHkAkLIOkLIRkLI/XafTUX4v/UWn8CteXP5ddanj32Lvvvvh8tg4EAI9alT5fP37bR+a/ac+XDK7beDm+p0v9/oKyw7XhMniv35tWvHKzLvvSeveLZv7/5Zv/3WmV2VHVlZiMm1ayf+TCgkV0Amhb/+gsYXiRitGrt1Sy0//NZb+ZNVUcRm22OPxWcS8HZfQiCI08V6KIP27flagEx628CBfBOuZUtoMaJJd+qpELasiQvzi2oav6n6Mcc4T6xQKNFq2b4d7IJOizEUcsgttscRJ/wJIT5CyJ+EkOMJIUFCyApCyAmizycr/BcsEGtxuu5MB8ywbZt9AFE2nbm0FC68//wHClo0al8l3q0b//fhsL0r0Hodq9C++mr3DZB0nT/3ebDrRWJNZhFlFfGOli3lrm/GoUPy7h9dx+ftKsEVRUyLL43SUvi2Tjwx8UUoSnynHrcQ5ejapbFRiolyxx1goHz/fWhHTEAGg0az5mnTkHbGXFkbNqCa9p13JEqfXUDEZ06IXB/ivXshmNkzsOD1r7+i6tluQYuuq2lGEDYWM7KknCZWgwYY0xdeMKpIzzxTbhGqaiLniQscicK/CyFktun/DxBCHhB9PhnhX1Zm3/81EuGzqZaVIUV5wgTUxzDBuWqVOIPrxx+d72fzZsOCZQqFU/aRyOVz0UViBYx3ne7d411Q27ejLoEJRVmrXzYDcd06+0yeQMBIKT3lFLlrh0KIhyaDqVPj3XKiTWnaNFhsdj7/Bx5I7h7+iy1bjBckughr4JwMPvlEXG0r6lbDQ1ER/OzXXYeH/uorZCKxAI6mgexJUTC4LA0uXemM69eLd+0WLeI/W16OKsgJE/AvcwsdOIDYyzXXIDefpYWWlblv/E6I0Yf4wAFYCGbmVdHBmlUoimFGX3mlnC+SuRVSwJEo/PsQQt40/f9GQshLls/0J4QsIYQsady4seuH/ukn+02Z1195504UACkKxl1RkLrMUjWffNIg/2OC/8Yb5dwhXbvyG4m77ULn99vH1UTXsdaYFBZCEenbF0Rw48fHPxvvuOAC+fEXVciyOX34MFJML71ULGyZSywcRg2T2a28ZQvu/+WX8d6csHo1nlW05tq0weeKiuytxZTRrZv9IBOC9C4nFBQgS+XZZ+MDyuXlSHFk7gQWqX/9dXf3GYvhBT3zDASeXXcx8xGJpJZ/bL4+z6WiKPFaQG4uNiEWmA2H8X8nOl0WtGYmqowwZtweQ4bIp5PxPufz2W8afr9RkZgi/ieFv/lIRvOfM0cs/L1eFBlZ0b07//Osf3VZGayFIUMQcJ0zR07w5+aK3SBu+b+CQWNeFxZiLg4eDJqRCRPEgvTYY53vc+VKnEtk4cj2pGbo2TNxc/N4sEGddx7Oaa2lYR6Gd99FGny/fmjibrZcGEcTUzoVxYFvpwIihU/TsJEwdO2aeN9+Pzb6lPD33/btDmUv9PPPhqYdDGIQbr01vvLwq69QkTZ8uHyknqGkBC+PvSA3aVNZWUifTAd++QX3wASorsNVZtYC+vZNnPSBAH7vhE2bkF7Zrx9eutOzBQIIAidjNfAWMk8wtWoFjSZNAfQjUfhXutunqIgfSwkE4Au34vBhey08EoEb1E0VK8OePWJFoV49dwFY5u787TcjM4b9zU6ZaNhQ/n5Zmiabn7oOWeCW82jXLlyXeSE0Detm5Ej+ple9OqWPPGLfGlJEmKkochbAN98YxVuEYOy7dInfXNasMXors+dv1Cg1qm9KKfzQdsJf5kKlpXzhYy1TXr6vIxmvAAAgAElEQVQcpupLL6G0++mnMfFlBunZZ5PnJ8rKguspXdi5E4Vzd9zBz6QQLaxQyN11eDS2PIHdpo18BoHdwQi+2GQOh5GHnuZ02SNR+PsJIZsIIceZAr4nij6fbMD344/jhVg4jNRKnhDLy3N+X7IKBQ8nncSfn8OGwe0isjrZvWsavAErVkCxa9BAfp6x67jBn3/Cur77biiRySZ5HDwI6uUBAyB78vNhlYvWg1Pb2DFj+GOlqon9UETYtg3nufNOyCnefNi1Cwp4x44YgzQUWwJt2iTevN+P37/5pnOmz88/i+MF558P7f/OOzEggYChETB/s6KIeeoZTjghNaFmHaxNm+A+euqpNETLLRCZuoGAu/NEo6Bp0HWj8Q5PGwwGkXlgva5b/212NrSs8eOxOKZMqZRWekec8Mc9kQsJIesrsn4esvtsKqmemzfD3z14MFw9IiFWVCT3/hQluftYvhzvmylUzDVZUABBywu6smreu+8GTQRTCpYulcsQs14nnVi0COP63HPxJIkysKtnYY1kRGCMCLyxMrtuUsGsWfG1PWwM09J0acWKxInQqpX8C/rhB7Hm6fNhh3XSYFU1UcPcuhUCeuxYPoma08HcT1Onxp/35ZcNDSwQwM+PP56GgazA5ZcnTgifD793i1gM4ztkCNxBIlM6O9voqkQIxrtmTbm0T/MRDqN8vRL7px6Rwt/Nke4G7iKceqrz+3JrTZqRlwcBNWQIqDvMFiwLJjMqElVFr1keliyxTxaJRJB+yrtOqmBFWay1KfO7u6lCHzuW77o57jiMz6hRSBrhxVN+/53vkVAUZ6tBBvfey4/HBoNIHU8L2EQYOhRFRewFHT6M4OpDD+FfnlAoLrZ3O8gEkcJhaJoM77xjCGhW6i1bGccG59ZbE3duUbqm3w+NRqbC0gk7dhjspezZGjQQE77JorjYXvgfPowxHDoUXYcKC1EExht/j0cc5FdVuOQqCRnhL4mNG5EFJHIj+v2wDCsLf/wBV8uoUfZNZcrLxXTlhIB/J50C34yvv+YrlroOF48M/v6bf45QKN4Fet55/KZWo0YZPFx+P77DI6t0C7viWEIQB6g07NwJf79ZiB1zDMyq0lL4MEeORHnxRx+JhYmM0A6HDa6NffvEOcXsZZgLwHhHVpaR73zwICorR45EUxtRHjFj6hs6NPWxKyrCBjZ8OP61us62boV29eCD7qqoe/RIHOdAQEztWlSE7BD2DlkfgNmz7S2J1q1Te34bZIS/C7C5e801mLfMtRcOIw005aBfmsASIcxzk/WfrqzmTZSi8FG0/mfOlDvHuHFytQV2VAq//w4X0Jgx8jUw0Sg2r+HD4eGwcqgNHmwv41IS/vv2wXc3fDhS+KyBhiuuSBQOfj9yYU88Md7FUL262C8v4sK2foaljE2eLA5CX3IJcvzvv9/elZSdDW1j40aUcLN7DQadfam6jmrMysIHHxhWjcfjLj978+b4Rh0s68MujbS4GNpJp06gBmBNdDZtEltlGeF/ZAh/SjHXmVvD68UavP56d21N/wnk5sJ7cPPNmM/PPw/GgMpE375i4f/55/bfLSlBIRWvcbroqFcPSm8y3dWs1z7rLGMdK0pigd6QIWKF2udLwe3DUrPMZs0pp8RrqKLApdfL5yc55hi+mdKgAahQ7fhIzC6fl14SD/7VV+Mzy5aJg0xer5HzfPLJ7gOfHg923crA/v3iVm+y5epFRdggR40CPYZdf+VDh/Be2VgxZsPffsP4tGiReC8Zt8+RI/yXLROnEm7e/I/dxhGL2bP5SmA4bJ+okpeHue8mrdV87g4dUqO8efFFvhxgSiul6Ocrcvu0bOmuQPa/EHWhUlUEPxic8v+tRyAAClRm/uk6BM2vv8LKEG0mVkpnO+F/zTX4jCi9LBiExsECQXb3K3J5eL3pcf3w8OmnYm37+uvTf70xY/hWF+setmIFfLLsnbGAbyVqlRnh7wIPP8yfpz4fisB+/dX5HFu3wiUxcGCi1sooQQYNAv25G5ZaO+zahSSKAQMMmoLKgDWTUNPEnFdmDBniXr5ZN1+zrHQLu2B+u3bG+nvgAePZgkFYfcOHu6OT/i+2boVWKxJ8rVoZn732Wn6xkmg3CgYRPPnlFwzM668bGUN2xWTWavl33+UHuTye+PzghQth3uk6BkXX4ZIqK0P6qV2wJBIR5+hqGrh2ksWCBZhcw4YhE8IMUe9SQuy59ZNFq1b8a2ma4f45cAAViWPHirMa0oiM8DehvBwKwR13IP5j7Wv92GPimBmLUTHerVWrIBgGDEB6YDSKf81V4+EwpZ07Q7js3g2iQnZ+FlPjFZ3JYPNmbFYXX4z1a07vbNPGoKWoDPxfe9cdJkWRvr+eHHdJCwKSxRwQ0RMED0UFIydiOMVTDGCA01O8n4ooeigHKOqpJ6gEQQURA4JyCIICKkrOcATJWZLLxpnu3x/vlN3TU9VdPTO7i7fzPk8/uzvb011dXfXVV194v+XLEYb673/L0Y3Xry+eh263XqzGKlglPx9FZNJhD7BK4AwEsDNgWLsW4devveY8jPU3sGwyK6KgM8/Uz9+3DzTDLHOP2ZcfeSRVm3S5kJlmhQsvTLVhBQKp9WcPHhQXhzYL0yNH4BAbPBhClwmuPn2szT2Mi2fiRNyL2eCDwfQJmzQNOwbmjGYOr4ED9f9PmCBuk7F0m6ZhAbr0UrT1/vvTS+zgJfOwfs9GKFoayAn/BMrKku2+LOzYyHRrR0pGpIdhstBMJnCvu45vzw6FUA1MdN1AwHkBpy++SF5keNd89lmcy3YbvXsjwk5m92KFeBz2/bvugmyS2b1YhUD7fCi9ePQohK6VvAyHUTxJJhFyxQrUQb77bvy08oNecEFmfZIEGeKwUCh11S8vR8cOGYKfsRhWunbtMMC8XiwK9eunFkYwY9MmnBeN4nuRCHiFeCvnRx/pBRX8/uTBIwNRfKxxdR8+HAvNnj3QGIYPB3lbuliyRBzzyzQ6Vp6R16YWLfRt+Wuv8QelTDa0Ea++mno/RYHDvoqQE/4JjBrFHwuRSHJI9Suv6CR8orHM28kzpUYkjK0E2tix8s9RVibnNGUUyPfdpycuMgVJlENgh1gsuRqZLG/Y009bC3WjCdYux8jns/cRjhiRzOQpKjzPjosvTq8/uPjpJ/vSiJ07685DVQWF7D33YIWePz/5eqoKpsIXX0SYJ8+mV16OFfT22yGM16zBeR99hO998421iWHfPoRWvfqq8xrCS5bYa0yhEBKh7LL4ZPHMM/wFx1hwobjY+j1EInjxooWrQwdnbSor0yeH3497FxRgK1lFyAn/BDp14r/jvDwk9hmxfTv8XTyB5fGINW6RedeON+iDDzA/774bPFNWpHEseMRO+LdqBTnEW/D8fti3b7oJpi7ZncfkyXyHbzBo7RAtLhbvihUFuwhNE5eINR/164vv9csv8jTVbPF9/32555fC8uXWoZHhMIQ9w733plaqZ1S+P/wAFsHbb0cRaGOKekkJIlG6d4dDlr1olvyQ1YeyweDB9mylLpczalgrvPACf3Kai73MmoW+Fb0Pq4HilCJC0zBpf/wReQ5XXokJNmGCdZRQBSIn/BO49lqx8OWFGu/aJS5HyItaURT+58ZypyJZ8OCDunbOPhOValyxwj6Dn82Bp54SLzxs7gQCWABXrLDvwxtv5F9Lhs+rqIjf7lBIV3bXr5er7NWsmfg+kydbL46KokdeBoOo32ym/di5E7uVbt0QieeI2kFVxTVk2YBjBaN//FFsvjDatIkwuG68EdcvLATLn90ik0mIlFMsWgRN14ru2OOxv86aNXDidu8O5ygv03nTJv7kDAZTNZkjRyCMnWgE7B04RWGhpt15Z/JCGA6nsgdWEnLCP4GpU/lzpX59MefPhAnJtSoCAeyO8/P5Qmz8eGQJs7Kjfj/ycWrXFtfUZiYK3vV4gRCqCrs3b7wyP9qNN8JEI1KQeIeM3btnT/5z5OUhgWraNASu9OiRvHv59lvkI3TsiD5klfECgWQfnVUBJ+OcHDxY3MZp0+wZEF57DYsjj+146VK9GA47v6DAmm00BStXihtxwgl6+NCAAWI+CRG39syZWJHsTC2sLmVlIhZDarZV51uBsTGyZw+HsWXkpY+//baesMGiBYw1eI2YP1+sEYh2LE5rpR48KJ6YoRCI+yoZOeGfgKrqjj8WFl2zJr+ilxG//ILd9ZgxemQLI1eMRvVFgYUilpRAC+7bN9l3oCh6lTifD2aZAwdgkhXRez/zDL9Nq1ZBILFFJhCAGXnECGjwsRhMwJ07y5dsdLvtlZP58/mKao0aKPpkXFzDYShwAwak7mratIGfgCdQrepZE0EoW1G37N5tvYAEAqCEEaF1a37fsJwnaRQXIwqAmWHYgDNG0QwezH/5Pp/YtvjAA3Il0ERb2orEDz+InaxW1AiaBh8FT6uySoTauxcTc9w46yiAWIxf1N3jwQ7LPEkaNZKLl54zB5pOt26a1rWr9Rb/ssuQjt6nD0L0Xn21YgrfG5AT/iZs3gzn76efZrYTKyyEgB09OlWYxGJ827XXC1Pg0qX6uW++yZ8vLhfCUUUoLQWlwjvvJAdOxOPJTlnjva3MIV6vXCbtoEF6SdRoFPN1xAj+rsrl4u8UwmF+QR1Nw46+USNcX7Rb6t2b/91duzDHRZYHtxsx/yIcOyZeLKNR+77hgg24Tz5JHXBbtvA1eBahw3v4//s/ceUh49GgQeUWXNc0rPQiO2PjxtbC7qefxLulbMiAJUuw+Bo1C+Zjee89RDj95S/yFbQYyZTxWlbvo127ZBtwKIToBruqYxkgJ/yzBFVF+Hb37li4P/hALCzXrBGbY80lSPftE+/gw2HnOTAjR/IVEK8XCZ0PP5yqGft8ekKnDHbswG7ok09gy+/f33lm/wMPiK8fi6F/RYqUOVFV0/B+Onfmt4P5Y5o2tQ65LisTm8nq1pXvH2ls3oxGu1x4CeEwhMKHH/KFfyCAhKazz7YvBWjFDpguioqgrXTuDI3XHDc8ZAh/x8LspVZYvVo8acxx+eniH//gty8vz1lm5MKFzphPAwFsj82f+3yIA68g5IQ/B8uWIcLk0ktB+GeXur9rF2ziZj9Oly585Wr7drHpoU2b1PM//1w8l1u3ln+ur78Wj0lWgrS4GJW5QiHdl9GmTZr0BQmI5ryVbLLa1WgaElZF1zzppNTz+/Wzvt9HH8kpwjfdlHpfK4ptaZSUYJt2+eVwyrzxhh6/z1bncBiDc9cuxL+63fqi4PdDc5Whbe7YMfX+sRhs4lddheiHTz91lmFaVIRFh2m7TGs2Rtds2yZ2YNlpuKqKLFnz6h0Ow4uvadC2xo3D4nP99XA0OXkGkbmMcfDIYONGZ5XOFAWJY6KFrUUL+fY7RE74m/DxxzpxG5vYJ54oLtG4fr3YXBKJYPzxcMEFqQI9HNbZdM0QjQ1W8JzhyBGYQC++GPKBjVlVxc5aNAbdbtjTP/5Ypxp57z1k7meaZS6a86IjGJRj4+zcOXUxC4X0UG4GUUEco4Ila149dAimIeYXCgY17eqrDRYbVUX0wDXXwI47Zox9KF9pKZgejS+Zt0VxubA41Kih267cbvzerZvcCuvxIMpg0CDdDq6q+L7ZKXP33XKdomnYNvKEXjCY3LkffqjTGTNKCNEkMWPDBtj8mEPN70fegqpi8WJ8RsZnYCn3Mrj0Un6fhULiePxYDGGzV1yBhfP888XbXEXB+2IDp149mLN27hTbIp1odw5R6cKfiIYR0ToiWkFEnxJRjcTnTYmomIiWJY4RMtfLpvAvL0fkjbn/vV68244d8X4//1wXiFdfbT3XHnyQf6/t23Uys2gUwql3bzg62X2mTNHvI4pv9/v14JCDB2G6YIKWKV/vvovxJRPNFg4jaifb+Ogj66xj9izBYHJS2+HDiEq66CJo3UYf5b59ekQj68Pbbkvl2nnrLbEy5nKhr51AVbGznzAB1ogk/PWvqQKoUydrAqDx4+ViWJmwF5UQFAmccDh19Q0EYPffuxcRCqIEjeXL5TpFJDjz8lJ5xI8ehU3wk0+gqV9xBfpo3Dh7oqRYDIk3Eycme/Y//1xsCpNNHvv009R+cLmwWPKgqnDkyr67QAARVhMmgHfJqFW1a8fXBseMkWt7GqgK4X8FEXkSvw8hoiGaLvxXOb1eNoX/6tViZknjfGORKppmvcPzelPpUoxQVUTITJqE8dmhAz8iRtNwHfP89fvhg2J4+mm+AhGNYo7Lml5CIfk57wTz5okVHJ8Pfk8jbcrBg5rWpIm+aLHFbPTo5D5csAAKpSj5dNIk8e7shBOy6FPbsIG/wkYi2A2IcMklci/GPBBlDp9PzMvv9cLJ07+/+Lsvvij37KIkj0hEbDLp0SN1wF97bXpbzfvuEw/mt9+Wu4aqIruRJbdEo8jJENFlfPONvOAnsk7V37kTi0wkgnv7/XB8VSC5W5WafYjoeiJ6P/F7lQv/HTusc1B4CoVVxmkwKJ8N/8kn/HHE7lNaqmk33KCPy1AIOwTjjrpVK3478vKwu7z6arm4fp9P0156KWvd+hsuvJB/P5eLz/dvtZg5KW167Bg/StDvT5NCZtUqrLpt2iA0j3mJrbYY99/Pv9aHH8rH2waDYmHD2DTNn7VrZ82JUacO/i8Kuxo1Sq5PvvmGz13TrBlfgC1eLObTnz0bA6JzZwya4cPtE9L69+cP7mgUq//48SDvat8evhWr0LXdu2H/nDfPWvg+9ZTce/N45PICmCbz8ceZl5qUQFUL/6lE1CPxe1MiOkZES4noWyLqYPG9XkS0iIgWNTbT0GaI9u3lHPVsXjz7LN+e7fFgXsvi3nut78OwcSN2p7wEJBFFRTAIpfSXX2BaZiZXj4cfMx+JZH+3qarWxVB4sFrM7Pxv69bBfNWqFZz3EydCzhlNzaKcH0swIccEtteLC65eDdsWb4sh2gKWl1sTMbHEj0AAv9epg+Lj5t2F348sub/9Db/n5+MBzzkH/BxWGo3VTiISkS8er2nQGIxac5Mm4tVVlMBChIxX40IWDOJZrFb8DRv4E7FGDWhN5h1Gly6Za9XDh/N3em433nl+PsbKJZfI0+gWFoLB8PzzMaHNjvd16zCgW7XCAJctVcdBhQh/IppFRKs4R1fDOf0TNn8l8befiGonfj+PiLYTUZ7dvbLt8N2zB/1qV5o0GsV7KSvDos7GvM8HH40MlbERTz4pVlxkC6DziArd7tQw6OXLoVgtWsRXvqLR9FhrzSgqgjw47zwsqqK5Honwvy9KBvV4sJMR4ccfMb+NxG2sIuCcOaDWTpvZ4JRT+AL0yivxwLyQvWCQb3des8a6go3Ph84zCu9QCE7PQADCJRhER7Es1927MRCWLIHQ6NBBfH0rzaZmTfgCnOLgQaRRf/+9dfjU6NHiYs28nRALR7PCpEm62SQvD5mO774r3mHYZTgfOgTt7txz4UyeNg2Dq1s3OJvuvFNs5mOTbM0a+b4rLgbfunERC4cRqqZpGPS8gS0biWRClWj+RHQnEf1ARCGLc74hojZ216qoOP8ZM6xt5LVqJefkbNkCKuWvvwbvzhlnwBe0YIHc/TZu5Csu5vvYYdAgXS6EwxhLVhmr06fjXKas1a6dShyZDsrKoLzIRPkwIjZVhTbevj0Uvb/8hT9vFQW+SlEElqg4yx/+kOFDFRaKt4VsBVu4EFEc0ajeqR9/zL/e7t3WWnkwyP9/KAQB/8UXCDezwjnnOBP8fj+ETUWTjR0+zN8l+f1i01ZeHnZQVmRKRUVwMM+dC+ew1Q6jf3/xdY4cgcnKKNz9frx/phWy8FvjglO7Nu6dDkaNEtt+d+xAiCDvOawyEy1QFQ7fLkS0hogKTJ8XEJE78XtzItpJRLXsrldRwv/IEbEp1u1GFm55OcKYW7fGbuHJJ/V6G0xIhULySYEff5wsMxo2TM721TQoU6NGYRycfTZi6M1a7MGDWLyWLZPb2ZaWQiOeNy/zergMTAmTkTcuF77Tt2/y2A8EYOngfcfng1J75pkwa0+YgGdNx7xkxoEDIM484wzc4zdSuvJycchUw4b6BWIxkLN9/bW9c6JTJ/EWUyS0rByxqoqB1KEDHqBePXHH8xYyJ1vNTDF/vk52lZeH3caQIdap5n4/fBSyW9OxY8VRQFaVkoYNk9NcXC5kds6ZA6GfyQS64Qb+PaJR2JBFA5tNIIeoCuG/MWHSSQrpJKIbiGh14rMlRHStzPUqSvjH42Kl7PzzMceuuipZMxUtFg0a6EL4888Rg3/KKYjk2b07+b4lJTAr//gjf9d8662p5tDzzqsyVlgh7rlHTvATwVIiIm1TFLGT2hyBxXj8ec5ddh87HDqEfAjju1cU9PG2bRq2deaGhkIQFungwAG+dq4oyfH8xiMSESeEPPVU8gARCQzmSzB/Xru2vtVcswYDrmVL8BClaV7gYtkyCLuTTkLkAsuHWL/ePknKSWHzo0f5tBDhMELgRHASgVVQkJUu0fr25QuRaBROcJ5JkQgDPg1U2yQvVYW2eMEFGNv9+iWbEVauFO/w69WD0iIb5eX1wmxYp07yNb1eRAuZx+D338OE3Lw5aBVYLPnKlXxlJBJJrjh2POCZZ+RCS1l27MSJcnUIrA6/HwKa1drl3ccOPXqIFfH8fE3btr5Id7rm5+PnffdlzpPz8ssQeowNsGVL0CPwBll+Pt+BuH+/XDKH242wwqlTIVBYnczGjXXu7sWLkxn32ILUo0fmNUDnzUt2qrEt8vvv4/ntuP+J+FnKIixYoFcuY7bNceNQB6F5c/hM5sxJ/k6PHnLtYBP5ppv4URhOsHo1f4KfeCLGV//+/IFtlw4vQLUV/o89ljyvfD708aFDGNtW0XH16onNEU4Pn0+vzaFp8CkZFR+XC+1cvBgEaSKl6L770uqGCsOWLfzIP8Zamp8PYX3nndgpz5mTufBnUX1lZfAXsMAX432sYFdzxOUy1FHYtg0OUSvt0SlKSqBVLF+ubxW/+UanaI1EsI0UETqNHSveJrlceozwOefooYRlZdA2mIOYQaT5KgocSU64bsw491z+tfPz5QSuywXB7QTxOPptwQJoUdFospYdCoEwioFX6YhR74raFA6n1jZ2gsLCVDOdouhhouXliOoyDuy//CXtbX+1FP579vB308EguHxEmersXchy4MseLINbVcWLzqWXwncg8pE9/7zjbqhw/Oc/cFgzZfakk6Dc7NkDGWesqxGPIzLQar77/XqIKm8ORiLw9T37LBTnFi2QJ7Ntm31bjx6VM/E2b15BnXXgAEjZmjWDcB05Ut9NxGIQXEuWiHcYmzeLnSwuF1Kfv/9evmyglenF5cL2Kl3IatSiQ1TMQgbl5ehf3nXr1k3u39dew2RnQr9xY0T9+P3iRUB2R7JtG2yjTZrAjjxpEkjxRA7fn3/Wv8ubQGmgWgr/L78U24U7dcKuXjTu7PJxfD497NPrlcsZ6NoV7Tp61DqYpLQU45PHbWUV0VOVKC+HMrRqlb3zWVSAiS1wCxfC7Lx0aapscrkgN887L9nyEQzindrd+/vvxWPCeDgt3SoFttU02slCIb1+pQx69hQL1WDQvjCFGVZEUEQYqOPHO7smg6iAvVWd00BAdwy/915699U0EL6JnikYhMbfsyd2WOZEGMYVtGGDuK9DIfs27NwJ05NxsofDMMWJJn9aSSnWqJbCf+lS/gLrdmO+PfQQXwhbCXKfD+HXCxYgEGHhQhRVsvMLBIMwgWoaBKVI4WKlCdeuhbOYsW7Wq5daY7gqsXcvtO2GDUHC+Prr9nQtRnz+OZ/G4vrrU8+rXVvnyGrVCombPOU3HIZZaehQ7D5OPBE7KfZ7nz54X3bm8lAI0ZVCLFyI5KH69bFKGGvx8rBjB8jT8vP5mqRZ47OCVWnIdNK1X3vNPt29Th1nL5fhuedSB3oohKgZ8+eBAEwdmzZBi3BqbvruO6z+9evDwWf1TD4fIo6sNLxAAKyqouvw+MTNeOQRvkPMKrGoAjh+qqXwV1WYPXmMkMuX8wMO3G5o3SJG2mHDUrVLVRVnqbLDnPj58MOp9wiHsSM0Xnf9epguK7seRzyO8NZTTsE479lT33UcOQJhajSLhULJ/EMyeOWVZMK7667js26WlyNohOVPPfEEv4+9Xk077TTxrsLrxcJ90UX8OclKdf7rXxaN/v57vkATFS/evx+2fCuNgjkxZCBK5vL50iMvUlVrHmzWMTt3Or92LIYVl22RAwH8XV4OJkRGXqcoSPooKnJ+D02D9iVLJ8uc4HY23fx8JMeIHFQyFMx2QkHU11km3KqWwl/TEGLZvr1eM7ZOneR5+uWXEPasDOMf/oBACN47r11bHM69e7d4lxsIJNujDxyA45aNV2ZCeuqpCuV3coT770+WcR4PZNj+/RDaonrjssSKDEVFGOtOzJr//jf//nZsouycIUNAMMkqkdWoAQV4+XIJLqG2bfkXbtKE//Keftp+qxGJ6MXc7fDll3ytuXt3+Q7kYelSsUD0etMXzJqG6Iply3QKiWXLUrfKTojZzDjjDHnhes45cglxLhdMMFYmNhFWr4aN10lxC+Nx8smZOdpNqLbCn2HnTrwT3u41HkeoszEwwlyDWVEQvGAlnOfN45syrrhCP6eoCDt347gwn1MVWLgQPq5ataA98+RAIAAna9eu4nFbqxaKsWdSGtMOBw+mhnSzKl0yCuANN+A6u3djTDgKohDZ69xuPpfExRdbN8btht3MOLAKC1GmsX59bLseeiiZe+fNN/WwTSb4ecXN7cDu06AB7lNQwG+jkU9cBl98geiGWrVAsmZe2K66im/6qFUrPfOSrGNZUXAPOz+HcVG2s8+asW6duPaok6NzZ+f9IEC1F/5OMHky36YciSAizwrvvYfxxYouXXcd7OEnn58um2oAACAASURBVAwz45lnik1KS5ak197Nm8G0W7Mm/IkvvyxnJpo7F1mz0aj8WL3kElgJrHbNwWDFL2aLF6NPg0HIv7PPRoisXRipzwd5lzZENvdolN/pd90lti37fNiWGk0qqgqbtZlu4IwzkmNYS0vhGEqXp5p3H9ERCMibfT74IFVgBoPJVAii+OlgMDmiYfNmxNWzgf3SS/zFQbRoMYFvDt2UZVdlJiKeme+tt/jPf+ut4sXI65VfqEIh5857AXLC3wH+/nfxXJWhPS8vB8nhgQPweckkiaW76929O7UedSiE6DIrzJnjrAodmwu9emFO2j2T3w+FNi8PkTmiQu2ZQFWRZ8B2bOXlUOqs5nY4LO9b5eKdd/gmiw4doEHXqAEBwBq1cmVqR3u90Ix5tq5Zs8SaRzbpGET3EQllGbOPqqIPeNe48EKcU1QkpqIw3mfPHmhR5oHNi4x68UXng1m29m7TpkgpZw6hSATx1iITgJVDvn791DA1K4HwyitgcC0ogM35vvus+Y4EyAl/Bxgxgi/colFnGbbHjsmPyWg0tRCSDJ54QhyQUFCADFye+bBNG2dzhY1HRl44Zw7M3E4o6q3qnGQLW7diN+P36xXDWL6AomD+jRyZgW9FVZEkwpIagkE4/4wTmkUNsILIX36JsChG4Hb11XppRTOGDBELJiuCMqewuo/5pffpI77O1q3Qzhm7plVopKoiPl7kbTfep39//sDm7UJUFREV4bCz3AKZc91uDKhZs8DKKMPhZDcRTjsNz2HV/5EIkliMfeD1YrvrMNmr2gv/5cvxXkIhRKq8+CKcfI0b47M//lFP2jtyBNq0cafockFwOPHDsARDmXHo8+nC/6uv4F8IhaA9Wy04dky+wSDyGcyQ5bJizujGjVMXJ1YQSbYwzimnWPdXPI5oqoYN8eyXX44+TAf79sGCwFO8w2H4JbT16yGIw2HYvAcNkiPsmjkTkRyBAFZAnjALBBBjyrb6Xi9eFo9KddIkPa63WTP+ywmHsetgKC/HtvKEE/C/a66xZ/4031OUSRgMoi3BIKJyRMLm4EFxlIP5aNlS5+Dm/b9jR/0+8Xiq040d+fnIKmTPcNJJENAs81ZWG/H58F0ZLZwI/SFD3Tt7tr3GxyIjeFxE7KhXj78zc6qBalr1Fv4bNqT2o8eTuvCGwzptx6pVEMA+H4527cRV3kQ4eFA8tkTKz5AhfBOjqDJcr172451XKP2kk+zH+iOPwM+4Y4dYU963z3oMGw87ts0HH0x99mjUeQSREd278/0ZzQM7NTXPFHcfDNrTCcyc6dzEYH4gY9m30aP51zNqpYqCbb+Ra+e225K/pygQjEwr3rwZq34ohO/+3/8le+FLSqDN8O5z6BDC0+yKIQwcKPfMoRCcYSNHivvu3nv16/bpI9aK2WAeMyaz9xCJ4Dq33ooFLxDA9aycWZddJjXmtA8+4GdpsiM/n5/oYjwaNRL3gcOs62ot/O++W04hcLmwgzXiwAE5M1tpKXaqtWtjLF1+Ofxxd9zB52gSFXYSjedQCObkYBBKHhOIa9fazwGesjB+PP97brcu+GVZa5csQSa9z4e5I4pwa9BAfI39+/k7CI/HwLOTBkQ0GsO9f9fiXoHGbsUT0bq1/UCyOowPpKri+qCRiN6hbdok0zVs28bXKvx+EEgdOICBaBTsgUBqBfvNm/XqO7z72EGUqUqkbxlr1NATJ2bO5GuzjL3zqaesdxIuF3YIqmpNYc2bPCefrGtyp56KfA2GwkIsmsOHW9drtWL1nDMHY4NlgY4YgWgPnmmJaf5WE9fvFxenkS25mUC1Fv4iig/Rcc459kmbZnTvnizkmSK2eTNi5hnRWYMGELyZ8Aa5XJjbLNBjzhxo8iITJiOMM+ONN7AI+f1YIJ55BkmNJSVYzB5/XI9aUxSc+49/iKPxfvkFSVqvv873iY4YIe6/774T0y60auXsXRhxxRX8a85VBCGYRrMCD5lom+YH+vVXsXYXCmHbxfwGRrDKPLzvdeyoaS+8wNcqg0GdOvbDD+Gr8HhgYkkns/Tkk8XP+NxzcNoaNYh4HN8xP7OiIFzLzhZZowZsslb9RgQNhvlX2MCOx/E9UXTU44/LvdvTTkt1Xn33HX+7/te/8nMyunXD9/r1E2ulTNsz/t/lQqSUQ7bVai38b77ZOcdUKCSfd/Pzz3xFzBhWWFKCcaeqGIeiuSubF8JMRAyqiuQ0s9D1+awrW8Vi0LrNZt0bbhCT4vXubd0fqoqovBo19Ez64cOtnaw7d/Lvx7jK0gVjFTa/29mnP8AXIKwQsgi88o5MgHk8WNVFfOzmB4rHxeeedpq4Df/9L19Qer0wmYhIq6JRJC5NnMhnsjQKz2uu0QvWi/DQQ+JnFLFe7tmDyB8nk5Fd89Zb7fuNPefkyfyBzUNhoXyGMBsjHTvqC4wodDUaRc5Ds2a6AFIUELz99BMm32WXib87YQL4SZiN+qKLxLWSLVBVZRwHJip1sYIuVxn+90Si4Mt6Iupsd61MhP+yZXwaBztT0KWXyl3/iy/EwvySS/jfGTyYL5QeeUReuWQKhBGLFkGx9HggeG+6ia88WmHzZms/WCAgLq1oRCwGk5ls3s6NN6bOwVBIp55PF59/Dr+sx6P3cdnq/6aulIGAfXLN44/bCymr+HnGLcLwz3/yt0mTJ1u344orUu8RDkM4dOzIv7eiYFtmxWNuPLduXetKWjt38hcR0Vz9+GPsNpwKfl6/DR0q9pU0aeIsImb16sx5xkWLBON14nG5rF2LCWKOLmE8JSxv5NixjGorVKXw78f5/HQiWp4o5t6MiDax0o6iI9Non1mzsONkO8L77+fz6xiPunXlrm2liD38MP87LGKwRg0IpRNO0Is2jR4Nk6bHgzEpCiZ57jlxmwoL088Q//JLaydufr58zWInKC4GWVwwiPd0yin2ZHbxuFxCm6rCJFX+7Xfw5LPCIgUFuJnfjxhyu0xZGRsiSzc2xnwrCgag+YFUFVs440AQefeNOHAAAsIoHMeMQVy41aAOBuUz+kIh2AatsGQJfAVuNwbqn/+cnI3MMHWqM+3aeJgHgqrCnDR0KAaqsVjMlVfqiWKyWseRI/JRP04Pxk1u/tztRvEJTcMicNFF+Mzrxc5t3z65tkvgeBP+TxDRE4a/ZxBRW6trZSL8y8p0k8OxY8ljwioW3wmtb5cuqeMnEhEnFKkqSovWro1zGzeGGdb4/8JCCLa2bVMXgPx8ez4cVU1vARAVmTcuPKy2SXl59knnYjH7QJOtWzHP3W7MrW7dJPiBVq9O1bKDQZhhZL3bstuyQAAOkmPH8BLsHigexwuXTUC47jq+5i8Td+uEc8YYhWOF4mLrPnTqeGMTiPkoNE3XmFi0RPPmSHwrLMT92WCfMEGncCgogMPZrl/79MmOP8fJUbt2cvJccTF/xxKLpUd7kUBVCv8tRLSCiEYTUc3E568TUQ/DeaOIqDvn+72IaBERLWrcuLHjh54+HY5QRYEG3b8/vw+feopvgjFXfLPCsWOwhQcCuF+bNtbFfl56iX/PKVNSzz1yBIyZPh92te3aWce/x+OQO4xBuGlT+eLymgZ/p2geMObd5cvhS2DFV+64g8/IWREoKkKUotFs5/HAomCUP6qKc39bnHr04Nv6jKuZHZyQiJn5qbOFTZv4mqrXKxdJEInInRcKwUyUDcjU62XZr2wC/fRT8jWefpo/aYzRGZ99xk/sGD7cun2xGAREuuYfK9u/6HC5kGciwu7dWOQ9Hozbyy+398NwUGHCn4hmEdEqztGViOoRkZuIXET0PBGN1hwIf+PhVPMXMe/27Zt6bjwOhYJFmbVsiTKL6YDtSK1g5a866yzr75WVQdGxUgSefNJ+jojA6zfj0bo1zFxms5Dfj6jBysDYseL8l88/xzkffYSIO7cbbX32WU2LnyVgc8zPRx1dGdjFZxsXlEGDKqYDpk8X2+VkTDodOiASxe7cOnX4Jpx0YKX516oF05eqiidQSYmYjuKii/TzROGntWrJbVG3b3duAnK7sRtp1MjZ99iiZ8z7YCgvh9nQaDJyu2EWtNtFmlDl0T5E1JSIViV+r3CzT+fO/L72+8WZ9ZpWObz5R46IFa9wWPy9qVOhxXs8OK9fv9R5UlIiFt7GOSJCly72Y/XMM/nWhXAYznUnUFX0h6zVRdPEPlevFxnCM2bwF78nz5oi1vxlPNgMkyZZa86KgtU9i3bbJFiFl513nvXqHQyiJnEsBi1HFPVwxRWZZdeZMW0a35v/2mty39+xQ7zo1qmjnyd6do9HzmlaWiqn/TMfh8eD6KV0fQasboAZolqukYicT8iAqjL71Df8/jcimpj4/QyTw3dzth2+VjkgPh9MNLbc7RWEeFy8Q2R1fs0QhSyaC7pv3y4e/zIObJlAEFHYbF5est/CDp99BtOs14s2P/ywXJDG+++LNf8vv4Q5ite+cDCulYRqpnairF2b4euvrevoXnZZakq1GYcPZ8aRf8MNqcIwGoVZ4IUXMMAUBVwZjPnv9NOxMqoqqF9r1NC1f5cLjkZjOndRUfY0f01DIQ2WkNKwIZ/JsLiYH55WViYWysZ6uqICKgUF8v6UF16wN1O1aqXvVOxCV0MhmLFEkRtGU055ObTTIUPECsbjjzvq9qoS/uOJaGXC5v+5aTHon4jyWU9EV9pdy6nwt2J5ZX1+442OLikNVYUiabW4vPkmX5iL2C8vv1z8HMZoPCvFpVMn+7Zff729NcDvF9NTMOI3O8ydy2f+lcnmLSnRQzeNC/rpp0OhFTIGu0u0Ay7TP1u3dh5GN2KEWAu1e4Aff8TWiaVCX389YmudtqG0FPSzLErokkvkiZB41XBCIdAvaBqEz/XX65m/Z56Zan/PBuJx7I5KS+EwuvVW/Z4nn4wdihH//Ce/3Ua+pOnTU4Wm15tcIs8OqoodCaO/ME+IYDBZW7cSNrVrQ5Bv3ZocmcSuw4RQPA7bJAvvi0b52+tIBA5tB6hys0+mh1PhX7++tQBjx5gxiBLJlrln2jRosz4f3t2dd4oVvDFjIMS8XvgRv/xSfF2RRh6Npmbk8+ZIMJic0S4Cr2g6T/ibFxiXC4tLaSn8VEYzzqFDqRQZVouZjLK5Zw+iCoNBmJt69tTvcckl/GtfTN9oKu9hWHUXWcybJ14hrRyL27aJdwweD0wtu3Y5a0thIZzVTmhKRZOjQQNcp3XrVAEaieg01dnA2LFYpRmNQaNGqRpFOJxMVqeqEOKshmirVqmOrA8+SBWaXm8qt5ETvPsuJqDXCw3DWOB51y4xJUVenh5quGcPIkAuuwzPWasWnHMsQmnQIH7OhDmqoWlTx89R7YS/jAZr1BoLChyb0lKwcKF1Nncm6NaN/zyhUKr/R1WhxDVujHnQpo19ERojfvgBO1mfL/WeoRAie8zP6XLB1BYK6ZQuzzyDyCSm5BqpY5wsZgxFRbBKxGLYVe3YwTcTcZ39VKitIwEdASvWzQPvRjNmiG1fgweLO/bJJ63DLD0emEVkNJHDh/U0bL8fzkFZThLRxHC5oOHzmDd9vuxRSk+bJhdW6fEgIccKJSXJ78eKciIYhG3RiYPJCvv3o995fpNgENTB06ZhsWLvqUeP1FwSq5T/vDydPrxHD/moNAOqnfBfvjy9sN0LLkjfTydikPT7nSt0Ms/zGzVxBigtxY5UtDtZtgyZzsEgFMNhw6BEyYaKG/vDSE7ZvTtffobDqYtZWRnCsFnVLr8fC0owiDnz8sup7f72Wz3Rtlm9Y9rowH3iRvKy1mIxmFUYtbHxRumafUS0C+YOmDnT/sV16JD6EkIhOWK2li35927ZEtQPIrthNrQYTXNWTMJozzciHk9+P3l52HXZTfpQCLQUmWDTJjiWRPxCigJzjkgbvPba5OsVFlpzPGWIaif8NQ19/8c/OktqVBQQu6VT7EMUzZaXB1NvpmDPEw5D4RgxIv2iJCyxNBrF+AqFNO3RR0FrY2d+tqrhKyPbRo2CeZrHavDss6n3e/BB6+jKUEjTxo2zaPD27dbJT4FAql1qwAC+ffndd8W89OEw0rNFGDbMPkxUUawZ8DQNjhXeddzu1AgAHj77jE81O2UKHNUiUjiZMnYykI2H9/vFu41nnuG/H6tKWsZnSTfao6QEW1w7srB77sECwBM8gUCyCU1Vxaa4889Pr50GVEvhb8R338mTu4XD6fm3evfmL+CBgHN+nUygqvAhWu0Q33mHryR5vWhv797i7GAZGWZ1PPUUrrN4MXYV0SgStN5+O3UxKyqSu9dJJ9l0yh138MPxgkGsekbEYmLt96ST9IpUxut5vXDgWEXwHDyIkCs7Uim7xCo7Vk8ZfPklbOaRCOgujA7MP/0pudPNlckyhYhq1Xi4XIhS2r079ftW74dVArIT/rI1ic348EP7UFCmBIgij/LyUvNK3nuP76hzkmkqQLUX/poGQi+ZcNy8PIRyO8XPP6c69EMh7E4rC7NmwcQYCkFxuvhivsnJTkFiRZx4OHRI5x5yKvhFpWj37kXymDl5bft2OeFvlR+haRouPGwYNCzGvtmoEbhrzCvO0aP22/DiYhTVOOEEOO/uvlvOHrt9O2y3IruZyyUuDs6wc6eYz3/AAPs22KGsDCniLEy0R4/kwuqZYtEivtZ+/fVwVNWoAa1ZlGdgR4U9e7a1XbJmTdj9y8vhUHaS4zF0qHWOh1EJ6NOHr3H6/fyFdMoUUFvn5YHTxRztlCZywl/DHG/b1l6QsFoL6WDdOihONWtCSWSmmf37sVtPl2xN0zD/1q8X+wM3bkydUx4PAhTM8k02SVW0O96xQ6eccCL8zzwz2d+2bx+0f78fArxuXT1LV9NwrqjwjfFo1y79fk2BqkLwiVZF2XhWK4wZwxfggQDI0uzQq1fyy3a74VBJwyFYJVi4EOFhNWtiUDgpTaiq0HB476dtW+xiRNq5x4NJ+f77WLRZ0ZyLL9adffE4JhpvwZs9mx+xpSgQ2r166df55BN+G5o2zbz/HCAn/BOwq3kbCum04dnAr79CoWHhkdGovUnXjG3bdOclKzfLK/b+6KN8pSQSSd1lylCqu938XbcRN9wgL/hr105lCD7vvFQlzkzjPHKk9SITCMjXXpDGhx/yV0hFgc06kwQtTYN2IYoOkIlGicdBWNaiBdrTowc899UFkybxdw/z5iFsUrTFv/xyfvEVtjA89pheFzkQgGPXbJ9v2zb5+n4/HH7m9yYKOQwEKvVd5YR/Ak8/Lfb9NW2KgIEMCPRS8Kc/pd4vFLIuFmVEPI75bTYTh0KpuxOrGh5mxWr+fLloKDvn7x13yAn+YDA1iEUUkeV2w4pixKRJ/AWgdu3sONO5EG3b00i0ScHzz/MHIktT/r1g926EhGW6GKaDGTOgxRQUYBfx3nsI9RQJ/nAYkQFOIhbcbkRB7d+PJJgjR/CsAwbAbNiwIRYMXt0DJzb/CkRO+Cewbx/GilHbZNQC2ca+feKFRtYv9+23/B2s14sxZ8Srr/KFaSDAp5b+6Sfw/YjGvddrr/mPG8e/J4vrr1cPSVfGJEwGK78lrwjOwYN4TyeeiAVxyBBnNTsc44knxB2TaeTLPffwrx0K2dv8ZbB4MYShnT1bVWHGWrnSWejY0aNgpPT7IcwiEU175ZXM2pwJjh2zrv/r92Nh2LLFeQw4q4yUl4fJ9Pe/J/eVqsLeu3x5sub48MN8577fb10kJ8vICX8DduyAaa5hQ+zWRo1KP2TSCqtWiU2PLVrIXWPCBPE1undPPvfoUT272ChLevbkX7u01JoDqaDAPt+opAS1NoyLHPPd2WHPHnEAjpEQs6wMPkJjsmeFIxZDXD9PUASDsNlnkhY+fry4mHkmpcu2b9eLRLCja1f+uUuXwvMfDuNo2BAZckeOYDtlFRFz7bX8La25vm1l4b33xLb4mjWhKR08iDhu2bhv0WEkpFu3DhMgFML969ZF1IWmoXIZ7/tp0NNngpzwrwKUlPAFt8eTatYQQVRSMRTi05Xs3w+Fo0kT+NFGjODLqHgcippICfJ64ROTweHDSPxq1kzTTj0VMlM2ifKRR5JD5r1eBOQw5tVPP8XcZfkIZ56JPqlQzJgBOzqrXm8WJi4XGlO7trNCCUaUlKASl3nVdEo1YUbduvwXyuJrGQoL+bTQPh8GHNNyu3ZNzbqz2tJWFq+3GcOGiaNwnnwS5yxbxs/PSOdo3BhaSb16/DT47duxQPK+GwxWwiDWkRP+VYQ33kgNyqhRw1lNhrvvTh6zfj92Dg5pvX/DTz9BybPKe7KqMZEO9u2DL84cQHHoEMynZ5yBxeOvf9Urcq1Zw6eRaNq0Aqm3t251bha4+mpQK2zdCq15/ny5yX3kCJKYWrRAB7z6KjTvxYvTe8A1a8RtDIX0RLbycvvIB3YEAnAmm+8j2o42b+683dnAd9/xBXskovtQ/vMfsZ2RLeyy7zwUQlgarx/8fmQrnnsu/7vRaM7m7+T4vQp/TQMPVIcOEG533SUu7ShCPA7T1LnnInz08cfTy7cpL8eO1E75iUTSy3PgIRZD0mkggHkXCMBcVVyMGsTs82AQ2cvGRNs+ffgm02g0jRDoQ4fwpQ0brM975hnn8atEOre7ywWtmfdAVvjmG9jZolG8gAYNnGcaTp1qL8j//ndowjKVvIzCzMhHU1rK3zUoinN67HRRWgqBv3ixTq3cpUvywh0MIjKHLaT79/M1HkWBv0AmO5gdl14K34xIUbj2WmxrRWNpyJDK6SctJ/yzingcJtF58zKL269MfP01rBR2SW7BIBaZbDlShw5NnR8+HyLuzIuQz4f5y3D99fw2RqMOFidVBQGScZVp2xbmmlWrUs+/917ngt9qQTA+kAh79/JX5Px8Z1TPv/5q3ybGvOfkOXjEd6JylqI45lgM2u78+ZkPrqlTsX1mjuZGjWDSKStD+OtZZ6F9Q4emJqr075+6jW7UCMrByJFizYjtCtxunLNkiZhmg02kcBiDVcTIOHUqFBK2gFUQcsI/S1i8GEpZNIqxl5+fXR9XeTnmx9y52RPAe/bImToLCkBKma45iYcGDZzJGb9fz1MaOVIcvSSdcMqLB2eTOBTCSmcUbB9+mD27sPmBRHjlFb5AjkTAJeQEPXtmr+3sqF8/2Qy1Z4/YZnjhhalt+v57+CLYpKlVS3eKOsXPP/MFbl4eErDsnE2qqmmTJyPM7bTT4Kz69lvEIe/cCeet8V2Ew8g27toV/7vttmTyvNtvtx4vfr+YV4bVGI1EsOuQIeVLAznhnwUUF/OzTYPBtOoqp2DuXGjnbI7UrGlN8PjLLzBjLl1qrTi8/LK9sheJpD8freDUfB6J6EWwioowP81z8W9/c9CACy6wvqHHg5hUhrIyZJ5lGhHCeyARRCGlPl96IaVW8bt2R16eHgetKHiBjI+DDbjJk8V1CcxhbEeO8O3ioVB62chPPy02pQSDcNTz4op52LkTu4RwWLdJDhwIaouzzkLa+IQJ1pMrHgcX/GmniceMjIlNUaApZTPJKIFKF/5E9CERLUscW4hoWeLzpkRUbPjfCJnrHQ/Cf/Jk/jj2+TKnVj50iD+fRHPkH//QLRnhMKJgRNqwSLYY73H55envPFeuBG05LzJQVLRFdNSqlay8HT2KqnqtWiED/6OPHLazeXP7m5qLaBcVgdkuG8Kf8chYYeZM8ctftMjBwybQrZu1kBH9z+WCFnP//TCbdOiAXcnRo3rWLBOSvOt4PKmEUKNH85+NCdpp0/jmNxFk3ks0KhdHf955qU6lcDi9JLuJE8V9K6tIRKPyNRkcoEo1fyJ6iYieTvz+WyF3J8fxIPxFZggiTXvggcyu/c47/N1jIIAgECOmTk091+0W1/+dNYs//1wuPRw0HRPTL79glx8K6TKhd+9kC8HKldZRRWxHzJTMDz5w3g5LPPCAveYl4txetgxbfqvver18kjH2QDLxsvE4Vknj4AqHNe2mm9J75jFjxKaI/HzEuvP+x0w2K1YgHIxtQUV1O40Hq4hk1gBefNGaxC4/H8/drp2cc/yTT8S7DmPfWVFraxpYBEWTuXNn530+caJ1m2SFv5Mi2JKoMuFPRAoRbSeilom/f7fCf/16sWl2yhTx91QVsuXTT8XauYgsUFGw0zWiUyf+2AkG+cEsqorxbJQH4TDKIDrF/v141rlzNe2aa/j1RMyMxLNm8aN2WDLYeedBWU03+m3tWsgErsl01y4IJasVKBKx5ncXESG1a4d47ocfxsrbtSvY7tJ5oLIyRI+0aweNe9y49ONZi4sh4I22cZcL3PA7doBULRLRFy2PB38vWoRdiihXQCTAW7SA7ZzF6BqxeLGc7c/n07TrrrN/tvJymLWsriljLluwgB+xRAQ/kFOI+EecHNmo+sRBVQr/i403Twj/Y0S0lIi+JaIOFt/tRUSLiGhR40rOihPhvvuShWgohIg+kalu506wakYiet5M376ppgseyy0RzjeHNYooQ6JRcXRgWRnCRTt0QJTa++87ly2DB+v5P1bK18knp373/vtTFx+rfpNBUREWNVbIKRhEcE0KzczevQhvbN0aJ7FJyrTzd96xvtHixXxhKcO+WVU4dgxbxrZt0SnmqIT//hdp7uefj59Ma/jqK3u+evNx+eXWbbn11uSXLzKD+HwwMdmhpAQZjmeeKdYqrN5NLIZEPhEtdjo23N27rRUMuyMczl6ZTBMqRPgT0SwiWsU5uhrOeZOIHjX87Sei2onfz0vsCvLs7pUNzX/7dizQ33zjXPAdO4acjk8/hX+ndWuYRf/1L+twz7Zt+WbF995LPfe221IXALcbyqDRhCkip4tG069RbYevv5Z33p5wQur3VRXaeefOsN2//XbmYbJ9+qTO30DApkrfoUOwX7dtC5OOLB3oxo1YwS68EKakdDm/j3dMmuRc+IvsjQzxOMwiaHG/uAAAHc9JREFUl10GUivR9QMBezIpI1QV8fRmreL228XfWbNGD9czDx6fDxmEsrkZZgwcKLfIGQ+XC5OiAsn8qkTzJyIPEe0lohMtzvmGiNrYXSsT4a+qyLfw+/G+AwFkZ8vO3y+/1DV3JgCDQYyfYFBc+H37dnGUTfPmqVw18TisBebIMFb3meHQIUSGsWszBdaylKEAK1diF/DTT9aOVCsfovHweJDIlil27YK8mDFD7C8VmbWj0czvX20hIlwSCbJAIJmIyQ7ffisuxNK0qfOog1gMmtRll0GIfvSRWLOLxzHxrQZwq1aZpY/PmAHzX8eOfP4j8w7lX/9K/16SqCrh34WIvjV9VkBE7sTvzYloJxHVsrtWJsJ/0iT+eGvZ0v67+/fLVYXjkY6tWSM2jygK5s3NNycLt4IC/vk+n36eqsL85Hbj8HhgprVLXjWiuFhPiIxGIUjPP1+cOXzJJfaCPxBA+zMt+jRgQHL9g7p1sUgZoarW4dM5ZIBBg1Kdz+efj52SsdODQdj7Dx+Wu25hoXVSVDYiXX79FWF5kyalDuYFC+S2r488knk7NA39ctJJ+jO7XHDsnXYanPlz52bnPjaoKuE/lojuM312AxGtToR5LiGia2WulYnwP+008Xu2C8F+80378eLxwKRcWgrT0LhxKMASi4mFuXHxf+kl/X4ibdbt1n2SH3zAV86aNJFXnB5/nL/rFTmBX3/dOlcgHAZtw+jRyUwATjFjBr8PTjwRCtm+fdipTJ4MDjEe79qll3IuvG4dEqZmzkx2NHz/PUKUBgxwlk37e4Ox42Re0OzZEFCdO8NZxOyJCxfCqd2pkx4GKouxY8UDyExRmw6mTtW1GbYtf/99aA5jx4JSQcYUoyigZ84Gjh5FP3XqhH5buDA713WAap3kZZWA16WLtcAcNkzOiX/TTYhRZ9QsgQAWBDYerYrHG7mw/vQn/rksD2nJEuvauS1byu1a69Thf9/r5ZtZiorA2GnVB8wU5iRhbPVqLBj/+Q+iday4sPr1Q79GIvrcZrWKiXRq+aQqi7EYnCnGdPsmTUC89oc/pE76iRPlGm7GsWMQrGPHZrfebTqIxdCho0ejM954I7njKiqjzw69eokHTzoRNkbs38/fVbhceo1Qmdql7GjQoALZAyWgqlBMRo3CzwzoH6q18K9fX/yOAwHr8qErV9qPmXAYVCO8z7/6CgLujjvEC4Ci6GUZN29Gli+7p8+H+bp4Meb0CSfYj1uZDFiROcrlwoLFi8I5dkzeF+j3I4hG5DuLxTTtllvwnMGgHuYq6iNWapW34Dz2mKZdeSVYi1Mi5UaM4FODingnXC55PmqGefOw6jDB6vejUldVYNMmcNUwW57fz4+ICYcrf6czdKh4wFx7bWbXtkrCSecIBJBJmck2VgYs8uittxDyN3s2orROPx3PEwrpZrc0C8BUa+H/7LPW75lrJjCgTx/x7iEcRvSKSJgyenZVhfnPaqyxubh/P8yu11yD7FxWQnTePDnhW6OGfZ/ccANf0LpcuEfz5vyM3enT+bJEtAAEgzC/zp8PE9rMmVCo/v1vZ3OVEWaaP49GbZT1s892PvFHjrTvQIaSEj5NcCgEja2yce651ttM6Y6rAGzbxh88brd8XVMRhg/PLNSSd7CtrGMKWUns2IGJxraxiqI78sxt8fnki4CYUK2F/6+/IpBA9I4vuCD5/FgMQu711yFw43EIrdtvR8jy0KGadued0Fw/+wznivJFjMmC8+dbC05R1BDDjBni+5gXJDts2QJ/hEgAu938UoqaBlOZkznEap8Eg1gkTz3V2g9j/m4wiAVa9Kxjxlg8qNWKKzqGDrXvQIZp08T0xmlO1rSxbZs8Y6dMFmxFgPF4s3YEAsj0y5TVcu1aZ2YdNhGtbKjsyM+vmBjqjh3lNSm2GKWBai38NQ1+F56gC4WSS4/u3o0ABhYGHA4jJFy0+2NMsLzs3HA4VaBb2c3vv9/6GQoL5QgnRVX7zDh4ED4N0QLg8/EDOT76KDPiS69X7vseD6KhVqyAWYz3Hb/futqg9uSTfI3QatthV/fWCBHhExG0g0ygqroZ4Isv7DPirCgLzEcgYNNxFYjvvwd19m23IUIiW7b1fv3w/Myp6/HwHbxNmyLT8uabEZ3Rtq31gMzLQ/+ni2XLENI5caKegXjokPOMYI8nrdtXe+GvaaAlCIV0QR2JIBPfmBF69dWpyoDfr2mPPpp6PSaQIhH9mmysRSLIYDVz5ogquxHJ1b9+7z0oACKFJRjUSyAylJfj2YcPRzSdWckS+RF8Pr4cjMWg/dtRrFgdLpf92DeSvJWUINnNnJxrq6QfPgwvONM2GZXzF1/wNfa+fe1fghEHD/K17XBYZ8NMB0ePwsvPfAjRKLQSqyQoVUVYFK+zjU6VUEjT/vnP9Nt2vMA4sGfNwiIydy4Wlp49sTA3aqS/H48H78XM41RWBk6dJk34AzEaRT1ep4jHYSpgNRSiURD9LV2K6Csnwt/lkqsNwUFO+CewYQPCHP/yF4RMGrNMi4vFHGB16iRf59gxvvDzeGDq+fhjvt9w5kyx2ZPN63gcJtBhwyA/yso07cAB+IRefhkO2UcfxTMMHIiglebN4Zsw+/B27oSiE41irLEFzxih9+CD/HF4xhnifozFMO/uvBMZtQMHIttextzMnvfkk3WFy6ig+XyYLyzpcdMmOO2jUfSvx4O/pZJzy8pAP8B41X0+rCpr1+KF9+uHzmvTJlm727ABq/Gbb9pTD48ciVWXvdhIBKt8JhrtXXelrvAeDxxBVvjmG93Ry9py6qkYkHfdhUGSjXDDZcsQozx6tDjOf8sWaLxvvJH9XcauXch0NA7s1q2TB3ZRETQG47uvVw9tHz0a7V+2TD//00/5O4BgML3SeePG8a/HYrJPP11usrB60WlmleeEvwSOHRNr1Pn5yedOmSI29VpluKoqdrtGZdHvh1DXNMyjs8/WdxMsySkQ0MMag0H5PJQuXVIXG78ftXIZDhzAPGLjlPm5Fi+Wu8fTT6N9fn9y/7lcuDcvFr99e8jeceOgpA0YADncpg3kpjGp68ILUxeVYFCSgmX48FRTiKJgpRLhmWf0B2LOismTre+zciUe4N57sYhkIvjfeUcsCDweewrW7dvROT17atr48dm1V6sqrhsKQZiyra85YWn4cD2dPhjEz2z6GK66ir9FN+7c2MA0a9AuF9rNtIyePfFcv/6KBYRpQm432j5qVOr9t2/Hwvbyy+J6ze3b899hJII8gsWLdY3GfI7fD6Fz441QQtJZfBLICX8Ofv0VzsIXXoDCpKpQFMzCyuvF+DDCytTbqpW1cqWqML888ADkhTGf5P775Wo/hMOaNmeO9fOVlIgXs9q1k88tKkJf3H03cmH27ZPrw59+EhfKuu8+OMMbNtQXllAIircxuW7PHix4Xq9eJS8/H3144IB4d9ykiUQDRdpVMIiC67IPlK72x8OyZTC7vPFG6q5ixw5rp63bXXEETjL45BO+Nmu00a1fz3e+ZsvPUFIiniS1aunn2VE5GCfTyy/ju5GInjbfpEnyzoDhrbf0hY1xxvBYREWFhKJRvU7DV1/xJ6nHAwd+FpAT/iYsW4aQSPauIxFEt6xYgTHA5n8kgjFgnqOHD4uDC5hZuUcPuSCGdesgcF98Ud6OrigwuVihqEgcTBCJpN11SXjoIb5PLRLRyesKC6E89e4NZckoQ7/+WizcTzwR/S6K4GvYUKKBp5zC/3IoxN9GP/ww33ZlfKB0wXg5mNOGZakZGTdfe806auXii9O/f3ExMl6few5hak7zGTQNTjGRQGMhkYMG8QVaMJjK953uc4gGtnGL3rCh3GRiCwCvvWahLlqcg8FUuoDXX+crEgUFuvP+b38Tj7d0yLo4sBL+Lqpm0DSi7t2JDh8mKiwkisfxc8EColmziFavxv/PP5+oZ0+ilSuJ6tZNvkZ+PtHIkUTBIJHHk/y/eJyoqIjok0+IPvvMui3PP0907rlETz1F9OSTaIfsM8Ri1ucEg0Tt2hG5OG+4sJDo1lvl7mWFeJz/eVkZ0eefE23aRBQOE911F9GIEUR9+xLVqKGfc8MN+MnD4cNEe/YQnXJK6v/8nhj9+eqj9g3s0YMoEOBcwE/0n/8QHTyY/Hkshs7lQfSwPGga0Zw5RM8+S/Tmm7jPzJlE48cTFRfjPsXFGCi33IKf7B6i+xMRPfecfBuM2LqVqHlzot69iZ55huj224nOPpvo0CFn1xENOkXR+0f0DJrmrA9FCASI2rdPHdheL1G3bvrft9yC9yyD4mL+Z6NHJ3/22Wd4VjPKy4k++ij5s3vvJTrvPKJIRG93KEQ0cSKR243PrN53NvrKDqJV4Xg6sqn5b9wojohr3hw+IaaBRyJQHkWZqps2QQMXmVes/HOrVjkLTTYrKjJ5MRs2WOcGiPj/ZTFvnrgvFQVa+2uv8b87Z4512yIRBEasWIFdWshTgs/pqHY6rdKOBOraFzg/dgwebvZCjVoW44Exeo7nzRPHlL75JjjX33/fuvgLczIzDZHFtnbuzH/QYBAhj5qGAuUis4/LZc+dL0KnTqnass+H7Zgddu+GWWTAANjRef2Tn69HT6xYwR/YXq89mZYsNm6EBs3awoqgG+2Vhw/rxTTY+xb1v2j7eeqpyff917/478fjQTapGbEYfEB/+xtC08zRWt99Jy7kIWt7tQHlzD46NmywDoc278J8PuzWRZg+XXwtK6rzgQPlckyM44uFON55p3xejMjvRAR/kgz27sX8f/xxJJsxf6aqIoDEGF7NazfPfDl7trXwr19fv8/hGQu0f/se0vrRUG0yddPKyKNPkgMHrBvPQpMuv5xvKzbeSFXhNGSETF4v7lGzZrJG0KgRIk7KyuAA+r//A5XEkSPY7vO28lYv21i+76WXrAeB00IIJSViM4ldOvj06XqoIht89evrQpdFIkyfnvy9AQP4zIGs37KBX3+Fc7xfP4Tu8Xwh7P3064fFe/Jk/XmI8BzXXYcwWt6iMHhw8vW2bBGbfZzUIjbir39NHm/BIApeZAk54W+AqsrV9TYeNWuKr5eu8H/2WWfC//nnMad++MFe8B86BH/io48iZDMT4c+iB5kyF4lAkTQGnSxaBAVbdB+eUlRaymdGYDJl/nzDyX37ip0LsrZRM5Gb8RpLlyafu2gRtNwXXsCiYRaeHg+ExhlnJGuWNWuKeYOsDnPtVlE0QbrCXzTQrAa2FXXF008jge6ll8TCvFOn1Hfm8eicJ1bYswf29n79EPObTZK1XbvQ7ief1CM9Fi9OLtgRiSD5i7fDe+UVDFBWv1k69MwCbLw9/3zWCwXlhL8JixfLRdWwwxhEYMbs2eKdhJXZZ/VqebOPEz/f8uV6XWwmSEXXtQv5FtFSh0JQpIzo2FF8H9Ei89VXejSlouCdtG7N2fE+9JDYMTZ+vFzHiGrxRiL8qA5Ng2AQDRTGGGn8TFHkkx3YYTT7MPTqlWqKcLuzb/YRbWk3bgQbocgccuWV9vcUfdfns/7e7NnQNtjAjUQwATIt/WaHw4exexswwH7B+e9/sSsYNAgT2Qn27cPi89BD2Imk43h3gJzw5+DGG+Xmps8HyubHHoMmbU4QLC0Vs3p+8on4/ocOYXHgxcIbj2jUWdTXWWelXoN3/Vtvtb/WokViJbRt2+Rz+/YVP4MVyeW+ffALPPecxa5GVIgjGJQvu/f22/xrNGwo3kqpauaFuc3t5Q2UY8eS73vwIAiQolGdba9BA354qgy2bsX3IxFcLxLB9Y2hV6tWgUmwSxc8s9UidvXV9vcULZp+v/g7paV8W2AohK3s7x0//IC+N26jW7WqUPbQain8S0vhm+vdG7t3s69FxBejKMkhoHXr4l25XLrZ87HHkq/19de4ViiEnWAohAxckUxZuxY7biaLRCZZtxvMsrKwCo2sUwe5MdddB7+mDJYuFYeftm+f+kw864Ki8P18paUw1bL3Y2sKfuIJ3TnHuKAnTJB7EE2DhsVqvrJU/7y81NXcjFtuSRVkXq81Kx5PcBYUILmDcVizLc+0aeL2TpmCAfDuu1i8evWC4zAdZ2BJCfrrH//AdY1cQSzEVMYOGQ7b0x08+ih/UHu94opBJSXWLKxmBsbfG1SVTyERCEDzqSBUmPAnohsJlblUMtXiJaIniGgjEa0nos6Gz7skPttIRI/L3Mep8D96NNkcy0jajIEdzFnJ5AkT3lOmwAQ7eDDyOUS8YOZiP7/8gkz/f/7TPjuWl0wmUhSdlGc8cEA8f088Uf46DPE4P1yaR1qnaTDTmuWkz4cFdMsW/byjR5Fky94Pq7eRZOfnYe1a8F689lp6jkNVxSAYPBjJBzIc6fv2gR2UZWNGo+ALeuQRfgbphReiKk8gAAHIqswwG9uKFUjs+Pe/5YT4L7/AIck6i6VgL1ni/Pl52L1bjg2U8QLdcYe102npUvHC2LSpmDhPFEkj0jZ+b7AKMzz55Aq7bUUK/9OI6BQyFWInotOJaDkR+YmoGRFtIiJ34thEqN/rS5xzut19nAp/VgfW3Me8UoerVkFojRyZGjgiogl3u9NfrIuKrBUsptQGAiB0dAqRH+HCC9Nr78KF8CGwgiqhEMxgIpNox46pC5vbnez/4GXei97PcYHyctjlhwzBz1hM545hHRONIhJm82Y8xIIF0NLHjs2scErfvs7Jl5xgzBg5mtU2bVId4zwMHMjf+Xi9yTVLzRBlxDLtzS6s93jH1q3ixc2KbiRDWAl/U4qS4xyBtURESmriQ1cimqhpWikR/awoykYiuiDxv42apm1OfG9i4tw1mbTDjAkTiEpLUz/fv59o82aiFi30z844AwcPXi8/Scrtls8fMcPl4ueJEBHVrEk0aBCRqhJ17UrUqJGza+/dK84N2brV2bUY2rQh2rmT6NNPifbtI/rjH5G7woOmEc2fj59GxONEM2bof0+YQFRSkvr9/fuRGHbSSem1tcLg8RBdey0OhmAQDzt3LtGiRURNm+L/Ph/+/4c/4MgUkyfzM+E2bECHFRRkdn2vVzwgGcJhohdfJGrVSu56bjcGsfnzYFD8PdZvPHTsiIS93zMaNyZq2ZJo1arkCRIKEfXqVTVtEq0KTg5K1fxfJ6Iehr9HEVH3xPGO4fPbieh1wTV7EdEiIlrUuHFjR6udKLwxENArY8lg1y5xWK+Iz0kGPOroQIBPHe0Ev/wi9k82a5bZtWWgqmLlxliL4swzxe8nS5Qm/zsQUQ37fNnhGzp8WGyOYNw1Tzwhf72NG/nbz2AQIZwijB/P34E0aHCcbgfTwPr1sIGygiGhEPxQFRjxQ5nQOyiKMktRlFWco2u2FyIjNE17S9O0NpqmtSlwqN3cdx8WVCNcLqLTTyc68UT569SvT/TOO8jMjkSgAAUCRK++StSsmaMmJWHUKHw/GoUyFA6D5uHZZ9O/JhFRrVpQNln2OEMwSHTPPZldWwaKQnTzzalKnM9H9Oc/63/37s1/P6ed5ny38z+Pe+5J1ZjdbqK2bXWujEyQn0/04Yd4IZEIfvr9oEcYPhya6gsvyF+vRQuil1/GRAmHcc1AAIO+Xj3x9269FXwfwSCOaJSodm2i6dPtdya/F5x8MtH27URjxxING0b07bfgQTFzxFQSFM28R0/nIoryDRH10zRtUeLvJ4iINE0bnPh7BhENTJw+UNO0zrzzRGjTpo22aNEi6fbEYkQ33aSbGtxujKV580Bx4hQHDhBNnYqd7DXXWI9hWagq6F42bwbNSrt22Rnj27cTdegAOplYDNe8+GKiKVOsd9bZwuHDRJdcQrRxI8w9bjfG/OzZkDNEaNfNN4Neh0h/P3PnJpvkciDYL6+7DiYmInRW7doYzE40GTscPoxBXlJCdOWVmV97zx6iL75Ae6+9Fm2WwerVGAh162KypWtfzYGIiBRFWaxpWhvu/ypI+J9BRB8Q7PwNiOhrImpJRAoR/ZeIOhHRTiJaSES3apq22ur6ToU/w/LlRD/+SNSwIVHnzlW2wFY64nEsLFu3wmYvstFXFDQN83fdOuy22rfnL2wrVoBQr0EDoi5dqs/7SQuLFhEtXgzfwmWXpW7vcsiBgwoT/oqiXE9ErxFRAREdJqJlBq2+PxHdRUQxInpY07Tpic+vIqJXCJE/ozVNe97uPukK/xxyyCGH6owK1/wrGjnhn0MOOeTgHFbCv9rx+eeQQw455JAT/jnkkEMO1RI54Z9DDjnkUA2RE/455JBDDtUQvwuHr6Io+4koHYKCOkR0IMvNyQaO13YRHb9ty7XLGY7XdhEdv237X2xXE03TuFmyvwvhny4URVkk8nRXJY7XdhEdv23LtcsZjtd2ER2/batu7cqZfXLIIYccqiFywj+HHHLIoRrif134v1XVDRDgeG0X0fHbtly7nOF4bRfR8du2atWu/2mbfw455JBDDnz8r2v+OeSQQw45cJAT/jnkkEMO1RD/M8JfUZQbFUVZrSiKqihKG9P/nlAUZaOiKOsVRels+LxL4rONiqI8Xglt/FBRlGWJY4uiKMsSnzdVFKXY8L8RFd0WU7sGKoqy03D/qwz/4/ZdJbVrmKIo6xRFWaEoyqeKotRIfF6l/WVoX6WOH4t2NFIUZY6iKGsSc+ChxOfC91qJbduiKMrKxP0Z5XstRVFmKoqyIfGzZiW36RRDnyxTFOWooigPV1V/KYoyWlGUfYqirDJ8xu0jBfhXYsytUBSlddo3FpX4+r0dVEnF5LPY3peI6OnE702JaFUV9t1AQj0G8+fcvqvEdl1BRJ7E70OIaMjx0F+JNlTp+DG1pT4RtU78HiXUzDhd9F4ruW1biKiO6bOhRPR44vfH2Xutwve4h4iaVFV/EdHFRNTaOKZFfUREVxHRdEJtlAuJ6Md07/s/o/lrmrZW07T1nH/9Vkxe07SfiYgVk7+AEsXkNU0rIyJWTL7CoaDi/U1ENKEy7pcBRH1XKdA07StN02KJPxcQURZLV2WMKhs/ZmiatlvTtCWJ338lorVE1LAq2iKJrkT0buL3d4noT1XYlk5EtEnTtHQYBLICTdPmEtFB08eiPupKROM0YAER1VAUpX469/2fEf4WaEhE2w1/70h8Jvq8MtCBiPZqmrbB8FkzRVGWKoryraIoHSqpHUb0SWwjRxu24VXZR2bcRdB4GKq6v46nvvkNiqI0JaJziejHxEe891qZ0IjoK0VRFiuK0ivxWT1N03Ynft9DRFkojJo2bqFkJayq+4tB1EdZG3e/K+GvVFExeSeQbOOfKXnA7SaixpqmnUtEjxDRB4qi5FViu94kohZE1CrRlpeyee8M2sXO6U+oCPd+4qMK76/fIxRFiRDRx4TKeUepCt+rAe01TWtNRFcS0YOKolxs/KcGW0aVxJsriuIjouuI6KPER8dDf6Wgovrod1U1VdO0y9L42k4iamT4+8TEZ2Txedqwa6OiKB4i6kZEv1XW1TStlIhKE78vVhRlExGdTERZK18m23eKorxNRNMSf1r1XaW0S1GUO4noGiLqlJgEldJfEqjwvnECRVG8BMH/vqZpnxARaZq21/B/43utNGiatjPxc5+iKJ8SzGV7FUWpr2na7oTJYl9ltyuBK4loCeun46G/DBD1UdbG3e9K808TnxPRLYqi+BVFaUYoJP8ToXh8S0VRmiU0gFsS51Y0LiOidZqm7WAfKIpSoCiKO/F780QbN1dCW9j9jTbD64mIRR2I+q6y2tWFiP5ORNdpmlZk+LxK+yuBqho/KUj4kEYR0VpN04YbPhe918pqV1hRlCj7neDAX0XopzsSp91BRFMqs10GJO3Aq7q/TBD10edE9JdE1M+FRHTEYB5yhsr2bFegx/x6gv2rlIj2EtEMw//6EyIz1hPRlYbPryJERmwiov6V1M6xRHSf6bMbiGg1ES0joiVEdG0l9914IlpJRCsSg6u+Xd9VUrs2EuybyxLHiOOhv6py/Aja0Z5gFlhh6KurrN5rJbWrOSEKanniffVPfF6biL4mog1ENIuIalVBn4WJ6Bciyjd8ViX9RViAdhNReUKG3S3qI0KUzxuJMbeSDJGNTo8cvUMOOeSQQzVEdTD75JBDDjnkYEJO+OeQQw45VEPkhH8OOeSQQzVETvjnkEMOOVRD5IR/DjnkkEM1RE7455BDDjlUQ+SEfw455JBDNcT/A618eBccsYL9AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"colors = ['r' if l else 'b' for l in target_labels]\n",
"plt.scatter(data[:,0], data[:,1], color=colors)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally let us now generate at random 100 linear models with coefficients in $[-5,5]$:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[-3.56708359, 4.2173679 ],\n",
" [-2.24819841, -4.78033511],\n",
" [-2.65217433, -0.6063707 ],\n",
" [ 2.22522724, -1.3737868 ],\n",
" [ 1.14192194, -2.89068754],\n",
" [-2.57784496, -0.48320328],\n",
" [-1.98567784, -4.32466545],\n",
" [ 0.18087823, 3.4818154 ],\n",
" [-1.29875835, 1.51557613],\n",
" [ 4.81972953, -0.42049176],\n",
" [ 0.50982555, 4.85988498],\n",
" [-4.65192691, 4.7090496 ],\n",
" [ 1.76978104, -1.68074194],\n",
" [ 3.27116811, -2.24224267],\n",
" [-4.23830139, -3.18612366],\n",
" [-3.8511695 , -3.53659876],\n",
" [ 4.17130749, -3.99493944],\n",
" [-1.77612232, -2.98547622],\n",
" [ 2.60284283, -3.54389893],\n",
" [ 1.94474263, 0.87574031],\n",
" [-0.77056305, 0.69232701],\n",
" [ 3.34291539, 4.50561588],\n",
" [-2.72563297, 3.53671823],\n",
" [ 4.90984365, 1.68029481],\n",
" [ 3.19955049, 3.70221394],\n",
" [ 1.92131467, 3.118134 ],\n",
" [-1.3720329 , -2.8185771 ],\n",
" [-2.10756157, -3.29110329],\n",
" [ 1.23355252, -4.78030807],\n",
" [-1.43163348, -2.53721308],\n",
" [ 2.31520897, -1.3516775 ],\n",
" [-3.76663448, 0.31355621],\n",
" [ 4.85577408, 0.71145002],\n",
" [-4.3294729 , 1.68046326],\n",
" [-2.59917913, 4.08500999],\n",
" [ 3.67943457, 1.29892268],\n",
" [ 1.20118785, -0.04765288],\n",
" [-3.00013655, -4.55005222],\n",
" [ 4.2866447 , -0.31240087],\n",
" [-1.22791008, -2.15250488],\n",
" [-3.95873121, 2.13560657],\n",
" [ 1.40466773, 1.03243411],\n",
" [ 3.40406949, -0.88692212],\n",
" [ 0.62708997, 3.38264686],\n",
" [-3.48823227, -0.89532811],\n",
" [-4.34004124, 4.93494885],\n",
" [ 3.30806754, -3.92628874],\n",
" [-2.67753461, 0.36983349],\n",
" [-4.17195968, -1.85452959],\n",
" [-4.77495175, -3.33001656],\n",
" [-1.56106315, 4.34240146],\n",
" [ 4.10238174, -4.49656149],\n",
" [ 3.49311758, -1.39028564],\n",
" [-0.40272994, 4.22102051],\n",
" [ 4.50566149, 1.10356814],\n",
" [-2.3856706 , -3.97857028],\n",
" [ 3.72462319, 3.22213904],\n",
" [ 4.25264231, -1.68128306],\n",
" [ 0.73249504, -3.71816993],\n",
" [ 1.81677967, 4.73196931],\n",
" [-1.21442479, -2.84759613],\n",
" [-1.31382345, -4.09759844],\n",
" [-4.77299951, 4.85379267],\n",
" [-3.55287405, 0.95910989],\n",
" [ 0.18951388, 4.43661861],\n",
" [ 4.72987013, -4.09163053],\n",
" [ 0.8149054 , 4.31898901],\n",
" [-0.87583647, 1.16675956],\n",
" [-0.64637859, 3.40167131],\n",
" [-0.62658074, 4.58651024],\n",
" [-1.78645632, 3.85215258],\n",
" [ 1.15926923, -1.75726543],\n",
" [-2.00600541, 4.92990747],\n",
" [ 1.35433823, -2.32709303],\n",
" [-2.73621106, -4.0425546 ],\n",
" [ 3.83111626, 1.8644197 ],\n",
" [-1.22410301, 0.86166692],\n",
" [-1.51047856, -0.90824993],\n",
" [ 4.89797894, -2.64889207],\n",
" [-2.59993126, 4.9208619 ],\n",
" [-4.23181733, 2.23064469],\n",
" [-4.76666042, -3.66915997],\n",
" [-4.88905088, -0.44233631],\n",
" [-2.44930748, 0.56878184],\n",
" [-1.09013812, -2.24695652],\n",
" [ 0.49901451, -2.84495088],\n",
" [ 0.46975656, -0.99109978],\n",
" [-3.190664 , 2.63920782],\n",
" [-2.79980528, -4.23234307],\n",
" [ 0.13665919, -2.78904176],\n",
" [-3.56727479, 0.55472856],\n",
" [-3.59152304, 0.07804187],\n",
" [ 4.38128857, -3.87300022],\n",
" [ 3.84261658, 1.82166838],\n",
" [-3.44899234, -3.68102876],\n",
" [ 1.03133548, 3.09634947],\n",
" [-2.30690512, 0.22837024],\n",
" [ 1.35170795, -0.80041915],\n",
" [-2.70097645, 2.7137504 ],\n",
" [ 4.12379905, 4.98983271]])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"models = (np.random.rand(100,2) - 0.5) * 10\n",
"models"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Write a function that, taken two list of labellings build the corresponding confusion matrix [[1](#hint1)];\n",
"1. For each model in `models` plot the [FP,TP] pairs on a scatter plot;\n",
"1. Just looking at the plot: which is the best model in the pool?\n",
"1. Find the model with the best accuracy [[2](#hint2)] and compare it with the target model, is it close? Is it the model you would have picked up visually from the scatter plot?\n",
"1. If everything is ok, you should have found a pretty good model for our data. It fits the data quite well and it is quite close to the target model. Did you expect this? If so, why? If not so, why not?\n",
"\n",
"<a name=\"hint1\">Hint 1:</a> it may be helpful to have a way to map TRUE to 0, FALSE to 1 and to use these values as indices in the confusion matrix. \n",
"\n",
"<a name=\"hint2\">Hint 2:</a> one way to proceed is to build a function `accuracy`, use the `map` function to calculate the accuracies of all the models, and then apply the `numpy.argmax` to retrieve the index of the best model."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Es. 1"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def build_confusion_matrix(labels1, labels2):\n",
" confusion_matrix = np.zeros((2,2))\n",
" for i in range(len(labels1)):\n",
" confusion_matrix[1 - labels1[i], 1 - labels2[i]] += 1\n",
" return confusion_matrix"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[124. 372.]\n",
" [386. 118.]]\n"
]
}
],
"source": [
"print(build_confusion_matrix(apply_linear_model(target_model, data), apply_linear_model(models[0], data)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Es. 2\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f977f72ad50>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fp = []\n",
"tp = []\n",
"\n",
"for model in models:\n",
" confusion = build_confusion_matrix(target_labels, apply_linear_model(model, data))\n",
" fp.append(confusion[1,0])\n",
" tp.append(confusion[0,0])\n",
"plt.scatter(fp, tp)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Es. 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il modello migliore è quello in alto a sinistra (max TP/FP)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 3.40406949, -0.88692212])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"models[np.argmax([t / f for t, f in zip(tp, fp)])]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Es. 4\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def accuracy(tp, tn, total):\n",
" return (tp + tn) / total"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model: [ 3.40406949 -0.88692212] accuracy: 0.998\n"
]
}
],
"source": [
"accuracies = []\n",
"\n",
"for model in models:\n",
" confusion = build_confusion_matrix(target_labels, apply_linear_model(model, data))\n",
" accuracies.append(accuracy(confusion[0,0], confusion[1,1], 1000))\n",
"\n",
"print(\"model: \", models[np.argmax(accuracies)], \" accuracy: \", accuracies[np.argmax(accuracies)])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il modello è lo stesso predetto dalla plot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Es. 5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mi aspettavo di trovare un modello con un'accuracy alta ma non come quella trovata (0.995), perchè su 100 modelli, con due variabili comprese tra 5 e -5, generati con una funzione random uniforme mi aspetto dei valori vicini a quelli target."
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 1
}