{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom tqdm.notebook import tqdm\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport pickle","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-10-22T18:12:23.785477Z","iopub.execute_input":"2022-10-22T18:12:23.786580Z","iopub.status.idle":"2022-10-22T18:12:24.444592Z","shell.execute_reply.started":"2022-10-22T18:12:23.786231Z","shell.execute_reply":"2022-10-22T18:12:24.442335Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![table.png](attachment:9b705684-b690-4631-b6e6-575ca12c7ce7.png)","metadata":{},"attachments":{"9b705684-b690-4631-b6e6-575ca12c7ce7.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA8QAAAHoCAYAAACPXSaTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAHW3SURBVHhe7d0JfBTl4f/xb7iCQoSABkMQiRobjgYwYgootIJYIljBA+MBWA6poLWIFtF/EWv5UTmsCpbzV1Qw4k/BgkCVo6KAAkYxokSjBBGIBglEDgmE5D+z+yTZkN1kk2wu5vN+vYadeXZ2M8fuMN995nkmKM8iAAAAAAAcpo55BAAAAADAUQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADABxh1z/66b2UQ2YKQFmtuKeNdh3INlMAcHYgEANAJdr1fD+1a9fPTNVuS28L0s03TzVTZWdvi6CgIDNVxb54UX9aFa0e0aGmoOTlWXV/R7X7ZW3Yb/t1s7UOS7fsN9NA5en/7Ot6pFsfMwUAZwcCMQDg7JZ3RONuGKpnFv/NFJTmgBbPT9bOHSupDQM8nXelJgyRHn92rSkAgNqPQAwAvmyeWnqNpj/zVLWauEzVaNfMBO385URdckGwKSnNBbpzeIwiL+tRhtf4UFv3RW1ZbrZvlbti3Dx9MO467c/KMSUAULsRiAEAZ6+c/Xp4wko9/c8/mwL/xD//qXalbjBTAAo0vFwP/76p/jJxsSkAgNqNQAwAOGvtWzxOn1zQQ+0jzjElACrqtxNe0spnh+rkaVMAALUYgRgAcJbK1j+nJOqOP/4/Mw0gIC7+te68UHp+yUemAABqLwIxAKDsTh7Syw/dodBzglxtIc8JCdWwcVN17GSumaEGOPC+lqZIv7/jGlMAIDBCdPvIGL0xc66ZBoDai0AMoMZZeofH7X2yD2jS7zrqHCt0ee2EJi9X29+apT6xbQrmuaRDT72zbbeZwUNett6ZNlJtLwx1zWcPv755pL7P8uhJ+MBatTPPBXV/xFWUP689LN223795/HFyv+4MDwrM7X3KuEzHMz7TM/fdoTYe2yL0wjaa+MxrOp1nZvJhzZZZCm/UTINnJOrwCXfZiaOH9b/TH1Hj4Lrl7pn59E+7NfG2ngUhO/yyjnp5eflroA6ue01pDZuWq2Ms+zNoL0MxgfoMlcEPSSt0a2/rO1Df/Xp/95OtTPu5Cj9DPgV4+/pzLPHr1mjmb5b42S7tWFSG5a7oMpXlGFre792V19+lDz6YZ6YAoBbLA4Aa5pvnbsgbOPDpvH3Z+/IGni/71Lpg8HTq+215Xc943nN4as5GM6cl90TeYx28z2cP3x065Z4vY01eWy/P5w9vbN3n3zyGvS5t295gpjxkZ+QNa6O8yMt65B07mWsKK6AMy5S3babXefKHC1vFmBmLeuNWM0895XWOS7C22XHzTF7e6RM/5f1zcIzr+aZNLzalRdnbwn7em7TEEXlNzd8/c2jbwcv288MbCcq79tqHzFRxJS1P/roWEcjPkF9y85YPvdjre9hDw4ZN82a+uyZvoDX+xode3rOs+7kKPkMlqoTt68+xxOd31JP5m99knDAFRflzLMos43JXZJn8WW9bhb53R611tubblvaTKQCA2okaYgA11pRHuqnhnTOVk5tnn8W5hgI/rFVMqy764EdpyLiZyvr5VME8eadP6as1M/XLdhFmZungkvv1tx3S829s02mP97OCnF56oIfOqW8Ohxf01hf577PpaVdRwftaw8AuLf2bpyR52Xo8NkxvHL5Yn33xrs6tH4Dbr5RlmU5Lgx58WvsPHVeux7awt9vmuSN0Ym+ypi/yXUPUNvoGffzhK2rVtLCjqjrBIRr14nZZAU6HD3+rBW9/ZZ4p3amPZqlzwjyFXtZDX33/k8fynNC6yQlK27FSwx980cztrxzt/Ezq3KOnma64gH6G/LD/1Xt148JvZQVfrdicVvg3c3O197Pl6tz4sMb8+jotNfMXU9b9XIWfIW8qc/uWeCypKD+PRaEB+lyURUnrXeHvXaOWiqwnfZqSbgoAoJayDn4AUKPk19wNHPq0KTnTibzHot21GJ/4WTth1/iVWuNypk1Pu/5GiUqZp3hNj7vWz65FPfTzaVMWYP4sdwnmX6e8rl1HmKlC+bWmSSVt85Nf5sXXs/bdwOL7Ln+/FnU87yG7pjyyR95JH5sj6a89XK/be9jUEPrF+oxcprzH/rHGTBfnfXncvNUQV9pnyCv3drFf66tWMu9Yct611ra25/FaQ1wKX/vZpZI+QyWpjO1b+rHE23fUC5+1sWU/FrmU+bjhRSk1xCWvdyC+d+51L+k7BgC1ATXEAGqsRyeOMmNn+PYdLUiRHvrbcnVqE2IKSxZ3Q4J27lxZ7vatgZGndyf82lXrl/TVl2rasGYegnte10OHD3tv53rhhTG6oqRtXv9yDfyNrG3t5z18v12rxbulx/45T/kVgGe64k/T1dV6fHXldneBXw5q59dSuysuM9MVV6WfoUMfa5W1XYbdt9B3G+hzf6nn/trDTJRdSfu5osrz3pW5fX0eSyqqHMeiquT7GFpZ3zsAqH0IxABqrCt9nGDufXuOvrce7xvRx13gh4g7p+mOC6VLwxpqwtMV6PSnAnY931+/+Z/39E3GiXJ19BRYuUrfvlbTHx2puCs6FnSoYw9Rj7xn5imuW7e7zJhvHbvGuIKNP/L35bDrL3cXeNPoF+pm7budmz43BdWjSj9D32zXTuvh2ttLvuS7fcI4WYtUgvLtZ/8E9r0rc/v6OpZUVHmORVWptGNobfjeAUBlIxADqJHatr3BjBW39V132CpTqKzXUov3n9B7cx7Svx4bpHp1gnT7A1N1LLtqbhM0/9Wpin1gpas9aIsmDUxp9cj54SN1u6CuWna+TuOmzNPWT5ILeosOhGbnX2TGSvf1p5tcj/lByvtwnqZbZ++Hvs9wzeuf5mp7mfTFx1+b6QCoys/QyeOuh8svau569KnlL9TOjJ6pMvdzpbx3JW3fko4lFVWuY1EVKWm9K+97BwC1D4EYgHMEBeuakdOUfvK0kt58WsnzHlHjhnU1/tkVZobKYdeWjkh4RA8lrtGwNofVJba/eaYa5OzXoMvcHQB17p2gT77cp5M5p+3GjAXDN8/5PpE+fPgHM+Zb5o/fmbHSZR44bMZK17DRuWbMH3V1TkPpxOGfzXSAVNNnyKeTP8nrGlZwP5eoMt+7pm3ffFYmD+BvRoFRgWUKzPfuoNK+liJ/0dpMA0DtRCAGUOtc9Wv3yfbn+8oZdoLq6IrfPawvjp/QvFsu1t8fvFH/3lI5bSnzPfbcGj1+e2/NfHeNlLJSjz+/1jxTtQ6+/oSWHnUvz8drXlGny1uqft2i/xVsf9/35c6bNy8wY759+kGy37VyrdvGuB49w5SvYfFLo13z+qee2v5S+uQ9P9syl1Vlf4aahsnK8/rqu4PuaV++/VyfmFFPFd3PJanM9y5QDd/Rkpz86D9KM+OeKnwsqgBfy+SPgHzvju1XWo7UMTrcFABA7UQgBlDrtLr+Xle7yWemvuYuKK+gYA1/bZuGNZaemzDDFAZeZGQPPXV/b/dEi97a+uZD+tsD12nFtqo/wd+wdJ7rsWB5ivlZm7eZUS9OnDhc8i2VTnylV/4rdb6yrykoWWTbONdjZQSKnjeO8CvAV0hlfYaiuqqb9bD+1ZID/X+efdBrLWFF93NJKvO9i6mi72hpbd5fnjXdjBUVsGORF+VdJn8E5Hv36X/1gfVQWe2zAaCqEIgB1D4X99GwaGnBs0P1+sbdprCcgs7ThdYZbXp6iiko7uRpM1KCkuZp2LDoCWPjG6a67tc7uE83HTtVeT0zeV2meubRh13P36rppWzScbf38bHceVrxhz5anyPdPe42U1ay5vEj1dl6vPW3t7oLAqh5r9sUaQX4j3YfMSWVJECfoSLqX6b4X1mf8ReG+ux1+fhnL+q+uT4ufQ3AfrZV1meoTCpj+3pocoH7/r8L/uP9h55jm6dq3GozcaYKHot8LXeFlskPgfjevbt4srp2HWGmAKD2IhADqIWC9dS7a9TWOjG/9ZpIDX14ln46YaWwfLk52rJwnF7xqMlcOrKjXtvwmXJyC4NcbvYRvfzHPvrb19K1Nw42pR4auNvOPflCCZc3+zNPMUHqP2+z4ut9q+uuvdeUBVAJy9TvnomuxxsSnlCWxzazt8Ur4/up/QMr1eMa37fysWu7Q5t+q8su6aQtXx0wpe7Xzx7SyXVLqa5Xj9BvYy4wz5TivCs1adjF2rljpdp17qcPv9gvj12kPGtfpr3/mh4bPcuUlMEF12igFVbe/PcWU1AxlfYZ8qqOHlqwUE2tsfatL9RbH+wu3C55uUp54wldesVQHbr0Ytc8Z6rofq7Mz5AvVbt9C+WHw+F9f6Hlmzy2szmOXNbzEbUdPsI1T3FlPxa5lLLcFVsmP1T4e3dEby09rJvHjDTTAFCL5QFADfPNczfktW17g5ny7fiu5XmdG8o+jfM6PDVno5nzVN5THbzPYw8XtorJO3Yy18zr4eSXefH1zpj3whjzpFHKPCWuy/dr8tpa8z/23BpTECAlLVPuibzHStgWUxZszPvu/ae9LvMbtypv4MCn87bby33G++cPPrelxd4W9jzFWMs0pVvTYu/lOdxx90wzc9nsXZiQZ4V4M1WUz+Wx2Ota9LlK/AyVYNeChLyGHq/1HNp2uCFv+6G0vIHW+Bsf7jOvMCqwn10q6TPkW+VsX3+PJfmfBW9D57iEvB1mO3+TccK8oij/j0WGH5+LiiyTX+tdke/d5wtdn8vsHDMNALUYgRhAjePvSayLdVL3QeLTeXEXF57YRbbvkff21jQzg+FlvuiOPfJeWbXNzODd8Z3L83peWviahg2bmmcKlTRPaeuSf9Lr60S7vEpc7txTeUn2tmhR+HzPgSPyvjtw3P38pqddZWeyQ2LBCXJ2Zt5LYxPympoQ0LTFxXl/m7fc/ZwP+evqS8bna/J+3yum4D3tIa53Qt6bm5LNHOVwal/ewMbKW/1phikoVNLyvJHg/vtFVOJnqCTHfkjO+8utPfIamgB14aUxeS/9O/9vWutnlRULxLZy7ud8lfEZKlElbN+yHEt+3LYk77orLi74AcLbdl69vfjnqIC/xyLDn89FeZepLOtdnu/d6pFN84bdt9BMAUDtFmT/Yx38AAA4K+16vp/uX3OlVi5/wpQAKLefPtIVTbrorcOn1LJJKQ3KAaAWoA0xAOCsdsmYRLX9bJI+ruzOtQAHeO8vtyj+H2sIwwDOGtQQAwDOfl+8qN89+Jn+/c40UwCgzH76SLfEPqTXUyvp/t4AUA2oIQaAGmTpbUEKCirb0K5dP/Nq+NRuiJ6JT9G/t1T9vZ+Bs0OeXh99i57e/I6ZBoCzAzXEAAAAAABHooYYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjhSUZzHjACpgx44dys7ONlMAAMCpwsLCdNFFF5kpADUZgRgIkKSkJIWGhpopAADgVIcOHVJsbKyZAlCTcck0AAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJDrVAgKETrUAAIAt0J1q/XzytBkDnOmcBnXNWOARiIEAIRADAABboAPx4P95RzvTDpgpwHkSekVr7KDK6bmdQAwECIEYAADYAh2Iu4xcrB7d2pspwFlaNT9Xr6zYpm1z7zQlgUUbYgAAAACAI1FDDARIaTXEH+3JNmNwgitbB5uxwEj67qQZA/zX7sL6Oqd+kJmqOD6HcLrYixqYsZJRQwwETmXXEBOIgQApLRD/4Z/Jysw6ZqZwtmvfuon+ckc7M1Vxo+d8ph8PHTVTgH/aXnSenrgzcCfRD877TOkH+RzCufw9thOIgcAhEAO1RGmBeNCUD/jPzCFCz62jf6/9TEvGdzUlFcfnB+Xx3ubP+RwCAXJugyD9590dfn2nCMRA4NCGGAAAAACASkAgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAACgwk4qdV5vzRg2UJv2maJAO5qspJkJmjWys2bcYw3DJijVPIXyIRADAAAAQIVtVeq2g1JumlK3ppmyQNqnpH8M0YakFGWfMkW5J80IyotAXMssvS1IN9881UyV3a7n+ykoKMhMAQAAAAiMqxTVpbmVsCIUGRNpygIoY7U++8Z6bNxL8TO2aOy/PrGGaYpyP4tyIhADAAAAQIU1UNSItRq74C31vNQUBdJ3u5RpPTT77Z8UHdrAXYYKIxBXls1TqYkFLJnLBmrGPQO1Kd0UVKqKtt1ZpxV2e5wX1plpOAf7Hgik1Bfs9o3jaNsIBJK5PLp5WITrEYFBIAZwFqnstjsAAAA4mxCIgdpm2zhXr4IrtplpeKjktjtAWfF9BQBUxOeT9Jx9BZPHVUzuKzDMMJsrmyqKQAzgLFLJbXcAAECJUmfbQc1cLp+1URsm9y4IdKuSXLO4HNu9RBumJWjO6LjCcDeyhxZMnqKU9FJ6Tj51UGmrJyjxzz0Kw+Kofkp8abUy83tfPkNO+mqtn9yv8HZFo3pr0cyXtSfLzBAg7vUvuq42V7m5RVLW9llaMdHaLsPMsgyL05yJ45S086B75grKSV+nTfOGaIHHtn1utLV95r2stEP0Sn0mAnFtdvKQXn7oDoWeE+Rqr3xOSKiGjZuqYydzzQwAAABA1WnewlyhdXSdVjx+v5JSDyrHXaLT+aeoSRM0Z9IUJX2eomPHPQLaqSPKSl2iVY/Ha/3npuwMObtfVuLY3lr22mqlZxwpeG9l71P6fydo4aT5OjPjZr4zRHMmTND21H2FtyvKPqiMpBl6fWyA7xls1rFgXfPZ07knlbFsoBY8O1+pe6ztkj+PVX5szzpteHqAVmw7YgqN9hP1gKs3aWu4r5erKOo+M20Po9xl+dzrOk5bNicry2Pb5hy3ts/mGVo2Ll7LNlTWTZJrp0oJxEvv8Lg1UPYBTfpdR51jBbYzO5k6nvGZnrnvDrW5MNT1nD2EXthGE595TafzzEy+5OVq+1uz1Ce2TcF7X9Khp97ZttvMUNzpn3Zr4m09CwJk+GUd9fLyj8yzAXBgrdqZZQnq/oirKH+97GHptv2usnwVWf81W2YpvFEzDZ6RqMMn3GUnjh7W/05/RI2D62rXgWx3YRlV+jYCAADAWS/t9UlKbdhX8U/l3x7oE/XvYp60gmC9iF6KG5Ooe2cVPj929lsacGOMgnMPavvrLxcLtto3S4v+OkPpR63Xh/fVtRPe0ui5ha9NGNxXTVpGqImZ3ZZjhe/ExGRl14lQ9OAXNWx2/vxL1f830aqXm6YtUyZpz5kBNsDcHWGt05blaVKTqxT3J89lX6r4OPv5I0qdPUE7yncar+xt49zrqgZq1m28Eqbmb9stGv33F3Wt/TesbZu2MEGrkqgpzlcpgbhT1xtcj/tP7tfNrcL0xPJkmcxW6KNZatQiRmP/mahvfzhsCqXDP3yrJ8cOUqvWHU1JcTk/fKRuYXXVuf8Yrfn424L3Tvv8PV1/VaT+NneTKSm0+9WROr9JpJ78v/cKAuT33yRr8O+6qN0v+7kLqlIF1n/p0kfU5+oxCo9N0HeHjisvL881nD7xk/45OMY1T+zlv3A9lkWN20YAAKD2y9qqpJkJhZeqBvjyUNRE67Qj6SrFT5ys6AgvtwfqMlkPPDVN3WOj1ehcj+eDIxQ5YJ56trfGd6/V10UScZo2zZqvTCu4Nuvzou6dPFmdoiIUXN88bb02/DeTNey+vqbAlqJNr662AmKEOo23QudvYtQk2DwVHKmowYm6tY8VEo++qfferuRa07pmPRv3Uv+n5qh7jOeyRyp6VKL62Oudu1Fpye7iMrFet2HBOmtdpfDblmroiEEKPz9/2zZQcFiMOo16S0NvtGvwjyjl1ZlKr+QfAWqLSr1kesoj3dTwzpnKyXUHNnsocFoa9ODT2m8FulyP5/NOn9LmuSN0Ym+ypi/yUjP5w1rFtOqiD36UhoybqayfTxV57VdrZuqX7Yp2RX7KCp+dE+Yp9LIe+ur7nzzmP6F1kxOUtmOlhj/4opm7Ai7orS/y33vT066igr9lDQO7tHSVuZR3/Y220Tfo4w9fUaum55gSa2cGh2jUi9u1fOjFOnz4Wy14+yvzTOmqbBuhfNJnaaFpA1Jahwr+tt2xVXX7nWKOrtOqB63XDRuoLQG6LZOvtjtuJ5W5eYZe92y34+/61mJOb8/lVrF9X6ZtU4bva76q3RY1h9M/mxVtU+jXbe3M53HhsqI97xdue/u7MaXI9nnuwQSt+m+K68TaJfeg9qwep0UPmu1vLZvf351tEzRn7L3akGS9X/72Lrg8tHex5fJU1v3g7+cJVaNRt8GKbmwmyqSBWrZx15aeOO4ucflmmXbYn/Xz71Z8Qozyc22JvlmlFCszKGa4ekR5v29veLwVHK3HjKT1OuYuqlTh/R9VlNftEqIO17gvfz64txx3ykh6012z3Gas4vsWzUKemg2Yrjh7hX9cos92usucrtICsV2LuS9rtBb/Y7Tqersdb9xovfrMwwq3Al2Q5/N16qnriLmadp30xgtzTWG+bD3+6+u0M0f6JO0nLZw6Wuc1rGees1ivjeo9Wjde3cYU2H7Wo7eOUWhkD3355QZFtQgx5ZY6wbr20Ve06a/Wf6rPDrWWt6AVQuUr1/oXWrQi0YydKUj9576jeGuzrJr7b1NWmhq6jVAufrXdsVVx+51ijm7UO5PGKeVIhDr88UX3wTkQzDoWa7tjX4b0gnXyNc86mfJst5O/vhOu0aKVKabw7OL49lwV3fcV2Db+qNptUbPQ1tAeytGmMACCG7rDQcay263vxpIi2ycnK0UpLyVo/gvrlG1fTvrXeL3+2jplZJntby2be9vfXsr2WKf1s1frWN1odRqTWHB56ANTX1TPTs1dc2QuH6J3vOy/8uwHv///Q5VoeZn7qkWfcq39uXmW1s8cogXW97Tghw9rWLiy+A7OStnoCqzNug1QmLuoVPmviep2kzwSQ1FNOqqlfY313l2q/GsWItS6vfuz71WryCKXe5dF+tfbXY+tfz2olPeIVNsu9nflpPZ/xS0qbZVaQ/zoxFFmrOx6XtdDhw8XbXOrb9/RAuuc5aG/LVenNh6hrSTfrtXi3dJj/5yn+j7W9oo/TVdX6/HVle4PUk3gdf2NCy+M0RUlrX/9yzXwN9LOnRtMQSlq6TZylPDRGupqA2INfnSoYCux7Y7NOjmoqvY7xVgnWJum3K8dP4Yoyr5EKMbP73MFZL0zxpxU2u1qJuuu/HWe+57uGnO3whtbJ6WvWyek7tnPSk5tz1XhfV/WbVOG72tNadtW3Zz62ayKNoW+NG5S+LfrtRmk/pPeMx33bNHoSeMV2djKn9tmacO/JmjT7pNq1GmsEmaY7W9v+z7WCbW9Pf4xQxnut/QhUnETE3VtbHTB5aH1zo9R7B+XWfvYPvYf0Y533iz8scJS0f1Q6v9/VWDNpwfVZeTigA21T6SatTKjXrh+rPpjby2aN1/bk5KVdehg4Q8fPmR85w5vza3Q6K+sA+5g7b56wNcwREn2AST7SOFVEZWmQcnpy3qurhktq6PWNrS2ji5o5b0m3FOzVpe4HjPTd7kena5SA/GVpYbWXKVvX6vpj45U3BUdCzpysoeoR94z8xTa+/YcfW893jeij7vAD/mvGXb95e4Cbxr9Qt0utALkpgr8xF8uZVv/fN263WXGfOvYNcYKxCvNVMlq9jZC+ZTSdsdWZe13zmSf3A3Rln12GM4/IapsKdq+xt0gp9mNr2roiL4Ky1/n+iEKi7VO9J4ar9aVekSsbk5tzxWAfV+ubeOPGtS2rVo5uK1hZbcp9Ef4cN31/8YrqnWIqUFroODWgzTggUFqZG3HHRtTFNxlmob+8W6Fh5rltbd9wou6tq01/uN6pZawOZr0fkLd7exdjPV/wLCxirS/e8kb9XVBuK3ofvDj/78qcF3H5to2986ADWeV7HVaPcX9Y5WaRKvTbdOU8Pe1hT8GWYO7nWvFZXteVVKaOtX3eUH1qrTTv7Zt3R1r+eLqGOuCumrZ+TqNmzJPWz9JLujIyZet77oD3iUX+NVqwOXrT90dbOUHTe/DeZpuJcJD35f8G2cglWf9y6LZ+ReZsdLV1G2Eiil/2x1bANvvFHHE1bOhXVvX7MYX1T+uhMuGAinDOpm02xAF36Sev/Pxn2yTQepxvdeztrOGI9tzVfq+97Ft/FED27ZVF6e3Nay0NoV+aH39CDXzdjYY1UXunk+i9avbennZhiFqHWV/p/Yp0/sFbZbmuuyqEi6bDY5XlB2qtUsHf3CVBGQ/VOz/P1S2YxteUqpdFRsxXENnJOravr0UHta88Mcgy8H04p/3sIvcx/CMNP+bNzUOdZ9nFLlKx9ewYLKiXHPXTu4rTg7qwN7SfwTI3OuuGW4W7q4pdrrqqQ/J2a9Bl7k7xurcO0GffLlPJ3NOF3bkZA3fPFdyoPZX5oHCHpxL07DRuWasklVw/Q8fzv9fw7fMH78zY6WrkdsIFVZq2x1bFbTf8ZS5bIjr3nfNblyqoQMC8+uvX77bpUz7scNV7toIH8Jir1UjM342cmR7rkDt+zJuG3/UvLZt1cfZbQ0rr01h6SIVfnkptWJhVyvyfDNeZp2U36zXuwZqHmGve5p1gu4uCcR+8Ov/P1Sb/V+7L3eI6j/a+48xStF+L7//NIm+2nWcznp/id/NFs5r7v6xsywhurZq1raL6zuz590lxZuQFJGmndvsDdxALS+vwnOxGqxaAvHB15/Q0qPSY8+t0cdrXlGny1uqft2ii7L9/ZVmrNBVv3aHxM/3/ex69Efrtu6DomfY9DUsfmm0a97KVt71z7d58wIz5tunHySXWkufryZuI1RUyW13bFXVfidf9ofjlGi3k7NPgFqW++yqfHLdv5Y2Mv8x+tTqElVRnXU1cGh7rgDs+/JsG3/UvLZt1cXpbQ2tQFrS2Zj1XHnbFAZEBf/4Gac3xQQ3PM+MuVV8P5T+/x+qWSmficxlE5RkXyVwpksHqIN9acDRN7XC7qzNj1Dc6Irerh/Fst6ecFZ3UOjSfpA62qdXu2do1WrfK5u57CH3nT3OH6ROdpMMVE8g3rB0nuvxqft7ux6L+1mbt5lRD62uv1cXWo/PTH3NXeCHyLZxrseyhOjKVt71z3fixOGSb6l04iu98l+p85UlteMsVBO3ESpZFbbfcUvT9uXrpC7D1Sn8pFLnDqmZ/zGdOKIA5Jzah/Zcvvd9JW4b2rb5gc9mxVmh4bQZrXpWYC3ll4PsEz+ZMTe+F2e/yA5Xux5TF9k9ge8r6Fk958dkbZ83UIuWp6nJ+d5+xIxU99HDXbXK2dsmaMHjZ/ZCvk9py+7VnGc8OmmzQl9cXIj1PUjTlkkDtWKZR2/plpzjdo/zU7ToQfftz2q3wuYN6a8NdPce/2P+up5UdsZGbbJvdeaqnAhRh6Fjy3W139moWgKx72tg3HY9f6um7zYTni7uo2HRct3+5/WN3mYornn8SHW2Hm/97a3ugip20tv/QuVdfw/jbu+jY6c87utcIE8r/tBH660jwd3jbjNlJavubYSqV5XtdwpYfyth1Ghda/9nZgXkLf+c5erwpkqc6+4s5tjBUlL43l06YEad5Kxuz1XBfV/ebeMPJ7VtKy/aGlZcztfJpVw+WZm2a/+XZtSrkzq4z77oubBWl+/F2a9et7FydaB+1L5XdL+Ce28/9/AQrd9sfZ/bjNaAW6wTfm8iRith/N0Ks44Bxe9T3U/Llm+1jvc/ui67d2ugqJEvqnubBtKpNKUu97iftv03R9v3JF+ijMDf2axaBHeZpruGXq1Gdcz9xR/OX9c4zfrz/dpi39e8TnNFj1rm7rAPLtUSiPvdM9H1eEPCE8o6UdjRfm72Eb0yvp/aP7BSPa7pYUo9Beupd9eorXV2c+s1kRr68Cz95PF65eZoy8JxesWz9vS8KzVp2MXauWOl2nXupw+/2K9cjxyZZ70m7f3X9NjoWaYkQBq429o++cJa16On8q+/W2RkD4U2/VaXXdJJW74qPIWzXz97SCfduPBbdb16hH4bc4F5phTVtY1Qbaqy/Y5bhOL+YP6W/Z/Z4KukffOVOHddkVttVJrLOro7h9mxVWklLHfah6uqZnlqmLO6PVcF9315t40/nNS2rbxoa+iPNGXuMaPFnFTKx1vNeHU4qR3rit5SqYijq5Sy03qsE60w+1JYC98LB6gTqe5P2rdN61XY67/Fvh1Xp8GJGvb/3LXA9mc7y0uHbcFRY3XXrKXqb7++icdVAqb3+KEThxdtd2/9vbiJ72vomOGKal30B7V6TaLVuu943TUjgD+umGNVac0FKkuTns/r3hlz1LNbjJp4bt9z7e1jr+taxVdVp6a1RLXsqga9H9VjHaRVr05S03Pqm16Mg1S34Xm68+8r9cSCjVo8uZ+Z+wwteivpq+Xq3FB6cdoYNfF4fVDd+vrVPdOV9m3R3/n7z/tSU7o11c7tK9W1fYT1Ac3vOTlIdazXXNJjkHYH+pehjtcp3gruf3vguoK/FR7e0fVUhdbf0tkKrcs+XKPQ75P1q1+EFXn9H15K1oWtYrR2/Rwzt3+qZRuhQsp0WdmZSvnmB7L9jpt1QPb4m8E9p7lut5S9ZZJWu+4PW8mCr1HkpdZj9pva8G/v6SU7eZLWb6zANq3NqvDzUOXtuSq678u7bc7g7fvqqLZt5XU2fzYDILiR+7Z1qe+/6bVNs31Z6Qb3bwrVJ3mGj+P8EaW+NMP1g0W9bvEFYYTvRe3XbMBSjf3XUnU3P3J4Vce+bdq0wvvCW8MDU1/Utb+JViP7e99lmqssPtY9ezH1IxVlv/4fRe9Nbt9fvJlH4C3UQM1iR6v/pKJNLh74R6JuuW2QFazNbAEQNcr93mcuu1/bxdzH3mfHo2a7lHpf7SZXKXbEixrmuX1n2dsnsOt6tijlv5pKEhSsp5JPKSnxacW1aGoKpZ4DR+i7A8f15993VytryXzdR/ecyP76+PgJfWC//uLC10e276G3t6bpsZHdTYlh/b0/bzqkjM/X6Pe9YtTUCtP54non6M1NyYHvLKr+5Xr9s+XqeWnh8h0+bH7CreD62z09d2zRW18cy9RLYxMK1qdpi4v1t3nLlf7dpzq3fpC70F/VsY1QPqbN1J4185Tu7QzID1Xafscr+/6TExXd2L4n8Ri/AkXFNFfsgJtc7Woyl9+uhfNWKyM/oJw6qPTV92vhs28qq3GIf7dnOcuc3e25Krbvy79tjJK+r45q21Y+tDUsWX541OeTtMgK/gWfbbN+C2evU/alMe55qkWEtX/s4/wAvb5so46Z7W/vv6RnB7huwac6Mer+O/d+duF7AaCKBeXZXQcDqLCkpCSFhoaaqeIGTflAPboFoMFG9ptadt+kMy7/tE76H1+rnpfaNSYDtXC5FDe5hF8hrRONTX8ZqC0+fn2v12a07vptinUytcvr+2SnztD/TX1ZGfknl2eKGK1hT7kvWSpxefbN0sLH5yvTbh/4pK9LIssm9YXO1kmWXO3PzvwFNXNlgha9nuI9rNuXVD05QpnWiXOq/Qvsfe57f5ZH6Ll19O+1n2nJ+K6mpOIq8vkp9TNRhZ8HF/tE96+3a9PuwpPcYur0Vf8Atg8s976v4LYp7fta2dvivc2f15jPoTdO/2z6dbxOt46TE+ZLPm5X534PH9ft149W94mDlWF9tg+e8frS//Y6rbhnnFLDrePzZOv4bEo95f9tb8db97G4l+KfitSHf7GO80W+A4ZpyxjfxV3TXaCc+8Gv7VkB5zYI0n/e3eHXd+rQoUOKjfVVvVl2XUYuDuh3D6hNWjU/V69YJ3fb5t5pSgIrAKefAKpU8E2K/+PdCg/1aDdj9+R5woz6o6rb7/hinYzeaPcQu2++lvu4nLXMzFHNW9udZjdY6zZxvDpFRahe/vPBzRUWO1a3zLBOoCI8t6mDnO3tuSzl3vcV3Dalfl+rYVvUKg74bFaUfRnmsFGDFB7m7kDOJf+zPTVRceaz/dOP5bz+uE6wzzsv1TWb1GdbyToNVNc6zg+12zPGRhduz/ohahJztwb8fW3xMGzje4FqZP+Yk9/plv/DQG2yb2WEWokaYiBAqqyGGDVeTashhnPV9BpioDahhhioHtQQV4OltxV2KOXv0K6d706wAAAAAAA1D4HYi4Gv5cmuOC/L8MUXb5lXAwAAAABqAy6ZBgKES6YDI79TrLKJrLROVMqDS6YD62z4TFQXLpmuXHw2nYVLpoHqUdmXTBOIgQAhECMfgRg1BYEYCBwCMVA9aEMMAAAAAEAlIBADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAABwpKM9ixgFUQFJSkkJDQ81UcYOmfKAe3dqbKZzNQs+to3+v/UxLxnc1JRXH5wfl8d7mz/kcAgFyboMg/efdHX59pw4dOqTY2FgzVXGT/vWh3vrgGzOF6nDxhefp2+9/MlOoagm9ojV2UOC+U54IxECAEIiRj0CMmoJADAROdQZiAJWHS6YBAAAAAI5EDTEQIP7UEPe6poOZwtmscXBQpdQQ8/lBWZw6nVdpNcT16waZEsA56tcVNcTAWYhADARIaYH4yVe+0Od7ssyUc7RrfZ6+2OO8NjftWzfRX+5oZ6YqzqmfH39EX3SeUr6jXZc3fA7PPs1CGijzyEkzharm73eKQAzUHgRiIEBKC8QAAMAZCMRA7UEbYgAAAACAIxGIAQAAAACORCAGAAAAADgSgRgAAAAA4Eh0qgUEiN2pVlRUlJkCAABO9OOPP9KpFlCLEIiBANm7d69++OEHM4Xa5i+v7tKTt19ipoDya9iwoU6cOGGmADhRixYt1KpVKzMFoCYjEAOApcvIxdo2904zBQAAACegDTEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJGC8ixmHEAF7NixQ9nZ2WYKtc3KpB91Q+z5ZgqoHi1atFCrVq3MFAAAqGwEYiBAkpKSFBoaaqYAoGxCQkK0Z88excbGmhIAAFDZuGQaAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4UlCexYwDqICkpCSFhoaaqeIeWrBDew8cMVMAnKR96yb6yx3tzJR3ISEh2rNnj2JjY01Jxd07fZ0+/vJ7MwU4T0KvaI0dFLjvFICzD4EYCJDSAvGgKR+oR7f2ZgqAU7QLb6DZb3yiJeO7mhLvKiMQdxm5mOMOHOuWrhfpgen/0ba5d5oSACiOS6YBAAAAAI5EIAYAAAAAOBKBGAAAAADgSARiAAAAAIAjEYgBAAAAAI5EIAYAAAAAOBKBGAAAAADgSARiAAAAAIAjEYgBAAAAAI5EIAYAAAAAOBKBGAAAAADgSARiAAAAAIAjEYgBAAAAAI5EIAYAAAAAOBKBGAAAAADgSARiAAAAAIAjEYgBAAAAAI5EIAYAAAAAOBKBGAAAAADgSATiWmzpbUG6+eapZqrsdj3fT0FBQWYKAAAAAJyFQAwAAAAAcKSaEYg3T63+msrKXIaasH4AUIOkvtBZM+4Zp1QzDaCqnFTqvN6aMWygNu0zRYF2NFlJMxM0a6T9PbeGYRP4rgOosaghBgAAcIytSt12UMpNU+rWNFMWSPuU9I8h2pCUouxTpij3pBkBgJqHQAwAAOAYVymqS3PrDDBCkTGRpiyAMlbrs2+sx8a9FD9ji8b+6xNrmKYo97MAUOMQiAEAAByjgaJGrNXYBW+p56WmKJC+26VM66HZb/+k6NAG7jIAqMEIxGeLk4f08kN3KPScIFd75XNCQjVs3FQdO5lrZgAAAKhk5vLo5mERrkcAqOkqJxDnZeudaSPV9sJQVzizh1/fPFLfZ2WbGSwH1qqdeS6o+yOuovx57WHptv2usnzHMz7TM/fdoTYe7xl6YRtNfOY1nc4zM51h6R0etyXKPqBJv+uoc8xrXcq4DGVSBeuXb82WWQpv1EyDZyTq8Al32Ymjh/W/0x9R4+C62nXAY7uXwemfdmvibT0LQnb4ZR318vKPzLMAAAAAULsFPhBbYfjxmIa6/uF5SvnhsCmUNiydp/CmDbX3cI4pKYOPZqlRixiN/WeivvV4z8M/fKsnxw5Sq9YdTUlRnbre4Hrcf3K/bm4VpieWJ8vkxZqlnOtnW7r0EfW5eozCYxP03aHjysvLcw2nT/ykfw6Occ0Te/kvXI9lsfvVkTq/SaSe/L/3CkL2998ka/DvuqjdL/u5CwAgELK2ntEjbZzmTBynpJ0HzQwAarTPJ+k5+7trDy+scxW5e5I3w2x3GQDUREFWeCql/rFsDtpBKmGenn9jm+4bcKXqmMrY3OwjWvxIP8VP/q+aNzojh9u3Jer+iCvIebVllm5/9biemThGFzY5R0H5dzDKzdEHC+5T/Mh5evzlbXrorivNE267nu+nh9/tqYiLZumgHtZLz4xWXV93PyptGSqiktZv6W1Buvn/pLYdbtAXn71lSj3lacU9kbpx4bea/58vNez6y025m719Ln1gZbHlOmUF9LAuYxR6WQ+9vfEtRbUIcT+Rm631f79HN0xI1J1/XKj5/xjiLodLUlKSQkNDzVRxg6Z8oB7d2pupypCmTRMGakud0Rr21GCdTpqnTcuXKW3vQeXYV84HN1dYhwGKu3mEosK9t+tKnd1ZK7b0Un+7A5Ssjdow6wl9mmq93noueswnio91z2fLSV+nLW+9pJTtKco67r5Ert65Ebqg0yD96pZBiiyx7dhJZW6eobf/vVYHfjTLVz9ETdrEK/aOEerUZrv12R2n1C7TNPa+Xu6XWPxdvmO7l+ij199UStouHTPLlv/+3e8Zq2gv61/43pPV3LVsq3Qg44jrves1idZlv5uoXr+JVrA9c+5B7Xn7f/Te2+8rI8t6/zoN1OTSAT7fuyJcy7Wtr/ovmKyw7bP03jKPfWr93UatrtGVtz+q2LbN3S/wkLlsoBYul+ImL1X3cFN4pvRZWjhhvnTjUg0dULSDncrcJvbJ8optvXTtfQ20ZfZqHfPRuqOZl+XylJO+Wu/9a5Z27t7n7tHW9Tkfoh53363WTdzzeCrLZzxQ2lnrP/uNT7RkfFdT4l1ISIj27Nmj2NjALUSXkYsreNzhuHLWHle2FN/+rvLyHG/sQDztTdd6eRVnbfNRhdvcVrF97Z9bul6kB6b/R9vm3mlKAKC4gNcQ2zXBbdveoDEDC8OwrU5wiO5+dkPxMOyPuNF69ZmHFd7UIyza6tRT1xFzNe066Y0X5prCouwa1H1Zo7X4HyWE4epWgfWzLVqRaMbOFKT+c99RfD1p1dx/m7LS/KxHb7XCcGQPffnlhsIwbKsTrGsffUWb/tpDC54dam1Xn//1oTo1zNbXs+O1cOZ8pe4xJzK27IPKSJqvFY/Ha9W2I6awqOYtTPA4us6a734lmZNC22mPwJL5zhDNmTBOWzYnF5zI2HKO71O6ddK3bFy8lm3wcYPL3DRtmXSNFs5bovQMj+U7dURZqUu0flK8Fr22Td4u9Pdr+ZImaM6kKUr6PKXwpNVm3n+Vtf7rPzdlHoIbuk++MpbdbpbNfdJqy8lKUcpLCZr/wjpl28v/13i9/to690mrLfekee/bA39fT3u9rPfPsMLtgmfP2KdW+bE967Th6QHWSaz3fVoRlb9N1mm9HYbrRqvTmESNnmv3RvuJHpj6onp2cp9wZy4fone87C+b+3M4QdtTTRi2uT7nM/T6WO/3WPX3M44zcFw5+44rlmKfeXu6PMeb9hP1gKs3aWswPzZE3Wem7eGMMFyhfQ0AARbwGuJ9L96hVkMT9U3GCV1yges3z9JVsHb266k9deO/QvTFF0VrSfNrQLel/aQr23gEO2+qs4a4FL7Wz64hHv1+jNLTPzUl3i3oE6Tpe2/wuX2KLNe3KxTe5kY95aVGucCxj9StcRfdvHibHrqjaK21k9WYGuLMBqqXbZ1ghPdVn1GP6rLWIaqnk8re874+XDTJOtmzTmTqXKU+z85Rh8bmpYa7RvESdei5VTs+v1rxDz6h6Iiiv9JnbxvnPoFTAzXrNlbXDxig8PPteay/kZGinUsnaP0W+0QmRNFj1io+tujr3X8jzVqG5mrd7wldd/1VanKuNY998rdjntb873ztyTIzn1GT48/yadsEPffvk4odMFyd2l6iRvZ727L3KW3VBK1anqzsNmM1bOLd8qxALFguS702g9T3ntGKLNh2y7Rq6hSlHY1Uh6uDtWNjihp1GqsbBw9SuF2LYb/30vu17B3r9effrbumjlWY650qLvP1flq40pwYNrlKcb//i65sG6Hg+tZ0dppS/nW/Vtnbu87V6vPC8+rgcditaA1xZW4Tdw2xNVInUnFPWstXrP+dI9Y8N7hPvGOsk+0/3WT93UI5dkCZuVrZdSIUfddkde8Woyb2ulvbJHXJBK3+b4pyGt+kW56dqNYev8P69RkKsLLUED8yZ7N27DlqSgIhyDrutDPj5cFxxeUsO67kf//s0Nq/iym0VOR4U8Dal/Zl02e+d76K7uuyoIYYgD8CXkMccec03XGhdGlYQ014uvQOofyXq/TtazX90ZGKu6JjQUdP9hD1yHtmHu9KDcM1QvnWr1u3u8yYbx27xmjnzpVmqmR7356j761Hn2HY1ugX6mbt452bfFTboHpZJ605EcN111OTFe068bI1UHDrXuo5/kXF2cEjd6u2rEpxPVPcOu1IukrxE63Xn3lSmLtRGxbYJzLWefFtVoAaYZ24uU5kbNbfCItRp1FvaeiNdrA6opRXZyq9SA3EVn30tn1yGKKoUct0y4Cr3SetNvvywJjRuuWpaYo644S6qBKWz9Zlsh6w3qN7bHThSastOEKRA+app/2bxO61+jr/5PhM4da2+3/jFVVk2w3SgAcGqZEVDuyT1mDrhHroH+92n7Ta7PdOeFHXtrXGf1yvVHM+GRB1zd9o3Ev9n5qj7jHm5NQWHKnoUYnqY6+TtW/Skt3FAVeJ26RJ7ye8hGGb9RkZNlaR9v9SyRv1dZHPUYo2vWqFYUWo0/iliv+NCcM2a5tEDU7UrX2sNz36pt5729sfLuUzVI3G9G3lOnkP1GA3nQkIjitn13HFl8o+3lR4XwNA4AU8EKteSy3ef0LvzXlI/3pskOrVCdLtD0zVsezyH9FyfvhI3S6oq5adr9O4KfO09ZPkgo6eSmNfvl3TVWT9/NHs/IvMWOm+/nST6zE/jHsfztN0KzUf+j7DNS9qmgbqcNtoNfP27a4Tqe733G2dgElZVsjwde7WqNtgRXs7eUx6UzvsM5k2YxXf12uKcWk2YLri7BrJH5fos53uMpd92/Sd60xokLp38fFDlXUi1veWq8yEdz6Xr1QN1LKNvdxHdOK4u+RMra8f4X3bRXVRS9dItH51Wy93m78iQtQ6yj6J26fMCnRQ70t4/0d9nNCHqMM17tqug3vdNVGBVnnbpLkuu8rd+Z9XwfGKssOAdungD64St29WKeVH6zFmuHpEeQkvlvB460TbesxIWq9j7qIiyv8ZciqOK77V3uOKL5V2vKnovgaASuDt8FxxQcG6ZuQ0pZ88bR37nlbyvEfUuGFdjX92hZmhDHL2a9BlXfSBdfLTuXeCPvlyn07mnHZd5ps/fPNczQ+9PlVw/Q4f9jxL9C7zx+/MWOkyDxT2cl2aho3ONWOoUer0UmQJGUOXdtRF9jd/X4p8/aTR8jLvb5D+9XbXY+tfDypyWWBxkWrbxT6JO6n9X3mcNO1Pc50s17u8i5q5S7yq17bk530tX4Hcg8rYPEvrZw7RgrG9C3svtoaCywG9ilT45d4DVoGwqxV5vhmvMhFq3b54p1kFWkWWsj8qojK3SSflN9/0roGaR9jrnabMve4SW1bKRlfIjepW9DLqIpp0VEt7o+y1wrS7pIhSP0MoiuPKWXhc8aXyjjcV3tcAUAkqJxDnC6qjK373sL44fkLzbrlYf3/wRv17S9l+4jz4+hNaelR67Lk1+njNK+p0eUvVr1t0sbe/79/lwDVRRddv8+YFZsy3Tz9I9rumvHVb9wmBZyD3NSx+abRrXtQwLSJUwqmM5RI1aWFGvYpUs1Zm9AxHD9nRorkuaFXKyZ2lWatLXI+Z6btcj57Oa3KBGfMhLLKEdfC9fLac3S8r8Y+9tWjefG1PSlaWtcwFHS4FQl3zWKWs7V3S0dp6rloWK18F/vgZh7tighueZ8YKZR1whw+7R9z8QFJ8GKIkOyVlH3FdnllUyZ8heMFx5Sw8rvhSecebQO1rAAikUk5FAiQoWMNf26ZhjaXnJswwhf6xe622PXV/b9djcT9rs90xSy1V0fU7ceKwFrz9lZny4sRXeuW/Uucr+5qCkkW2jXM9fr7vZ9cjzlKnzWM1yT7hvTfaAl5DjB+y12n1lBlKt/skahKtTrdNU8Lf1xb0XmwP7rZpKJBbnR8Haz+XsqOzT/xkxgple/byW5o6pZ94I0A4rgAAaqGqCcS2oPN04YVSerqvDjekk97+M/V5PZzbrudv1fTdZiIAvC5DgFTW+o27vY+OnfLWcUqeVvyhj9bnSHePu82Ulax5/Eh1th5v/e2t7gLUPulpyiipyX5uijLtaxqbtFRZm8s1D7PbfB3Ugb2lB5LMve5f9ZuFu3/ld2nW0tXO8NhXn/psZ2jL2bZOe8x4WRzb8JJS7TPeiOEaOiNR1/btpfCw5oWdwlgOWtsHhXK+Ti5xX1Su7dr/pRn16qQO7rNrlIrW3jUOddfzFbmti69hwWRFueZGhXBc4bgSABXe1wBQCQIeiJeO7KjXNnymnNzCgJabfUQv/7GP/va1dO2Ng02phwbutqhPvrDW9eip3z0TXY83JDyhrBP5d+9zv+cr4/up/QMr1eOaHqa0AkpYhgqrxPWLjOyh0Kbf6rJLOmnLVwdMqfv1s4d00o0Lv1XXq0fotzGlXEqW77wrNWnYxdq5Y6Xade6nD7/YL49dqbzcHKW9/5oeGz3LlKDmeV97dphRb5LWKdV+vPgS+fmpKNCsbRfXbzh73l1SSohK085t9gliA7W83KPm5NJ4Rdvt5HbP1HtbfNTmHF2n1Us2momy2W+FO1tUfx+d/yjFbm7oMGnK9JkCTirl461mvDqc1I51bxbcl7WYo6uUYneoUydaYR63jTqvubsznow03z+wItA4rnBcqbgK72sAqAQBDsQ52vlBsgb9OsbVDja/V+K6Dc/T4Ofe04WtYvT0X73UPHa8TvHWEfJvD1xX8Jrw8I6upxr0flSPdZBWvTpJTc+pX+Q97/z7Sj2xYKMWT+7nmrdCSliGCqvE9etshdZlH65R6PfJ+tUvwoq8/g8vJbu2+dr1c8zc/uk/70tN6dZUO7evVNf2Eapbx/2e9lCnbn1d0mOQdpdyZRqqkxUyXpulTG+1Oblp2rRsnWs0skt8aRcoFNd+kDq6TjxnaNVq353IZC57SFvSrZHzB6lTkVsv5/ekelKps29Q4mvrlJF/+eupI8pImqHER8cp1UdPraUq5YiWuWyCkuzeiR0iuJG7x93U99/0eqlo9rYJ2lBZt2ryV/IMrbbvNVzMEaW+NEN7rM9xvW7xRWp5G13R23U/1qy3J2hTVdyKBhaOK7447bhSIRXe1wAQeAEOxPX0WPIJfZD4tOIubmrKrP+qOvbQK6u2Kf27T3Vu/SBT6qH+5Xr9s+XqeWnhaw4fNlUaQcF6KvmUkuz3bFH4fM+BI/TdgeP68++7q5W1Fv7eZ9enkpahoipx/eyenju26K0vjmXqpbEJatrQXd60xcX627zlvrd5Saxl+vOmQ8r4fI1+3yum4D1tcb0T9OamZDrUqun2zdeixycoZc8RU/t2Utl7VmvVnwe6TzIiRqvn1eVpW1l4a5D01wZq4bwlSv8x/9I3629kbNSmp3tr4XL7l/0QdRg61hVcPNn32ky4Jdo6WhxR+upxWjQ6zt0J0sgeWjTzZaUfbaCwX/UqsTdYXyI7XO16TF10v5JS9ynHnLzn/Jis7fMGapG1XE3O932rj7NNfnDU55O0aPbqwpCQvU9py+7VwtnrlH1pTLF9VHUirP1hBd/ZA/T6so06ZjopsvdX0rMDtMIOynVi1P137v1awDpJjouzwr4VxLZMGqgVVhjLyCq8BDPn+D6l/3eKFj04wV1ricDguMJxpcIqvq8BINACHIgtVpj61e0P68Pdhwp6I965fYMS+l5pZvDunOj+evfrwtf8/PMh84wlqJ6usN/z+8Ln331jrlqdf477+W4Pu8rOdMn9b+mLL94yU6UrcRkqqDLWb+BrHj09NwjV3dNf0aGf3a8/9P1uTRje3/2cD/b28fa++S5o11sL1n5a8J728OGaV/S7br80c6BGCrfDQnPlpFsnqhN76DlXj7txmjXROpG1azEaX60+Dw4v14mhzT7xvGvo1WpU56QyN09R4sPmxNP+G3++X1t2HrSOLM0VPWqZ+vj4Zb/ZDYm6b/JkxbaPLmyHVz9ETaIG6dqJq3R7JynTKmoUWraLL+t1G6s4+7z06EZtmNxPzw2zl6uznnt4iNZvtk6w2ozWAOuk2THOv1vxprOfrC0TCkPCqH5atnyrjtWNVvd7bq/EWzaVxvr7rs/iQe1Zfr/mmNvY2Ptrw/b8z9FMxdo1SkU0UNTIF9W9jRW+TqUpdbkVgB7M/xxarx/dT4kvLVEGV7IEDscVjisBEoh9DQCBFPhADKCahajtqFUaOma4olo3V738b3lwhMJ/M1lDZzyvDsUCRtk06fm87p0xRz27xajJuYU1QvXOtf/GeN01Y63irZPnktQL76ue4xILe2qd+56GTRivTm1ClLLRffllme8VWydS3Z98SwNu7KUwz+U6P0adBidq2P+zTthd2yNNWWW7A1yhOsE+bzlS1/zJ0m4lVJWaDViqYaMGKTwspPBS1uDmCosdq1umJlon+u6F/unHClx7XN5tUqeB6kaMtj6T1mcp9owQE3O3Bvzd+hx1cV/2XYy1r+Mmvl/wOffs4Khek2i17mt/DulQK3A4rpxVxxXzXtV1rArEvgaAQAnKK6mKEIDfkpKSFBoaaqaKGzTlA/XoVpk/d6dp04SB2qLhGjp5dLlraqpb9rZxmv/COmUH36QBL0xUZDWdsAGB0i68gWa/8YmWjO9qSrwLCQnRnj17FBsba0oqrsvIxRU87nBcQe11S9eL9MD0/2jb3DtNCQAUx38JpVh6W2GHUv4O7doFoJMv4GyVPkuLxg7R+v8mK8vjfrI5x1OU+ppp12pNhw8czkkrAP9wXAEAlBP/LZTCbqeb337W36Es7ZYBJ8o5lKztLw3Rgvw2rXZ7vNEJWrF6q47lNlBY3xc1sA+d1ADwH8cVAEB5cMk0ECBcMu2/nH3rtGXZfO3YuUvHTG1OvXObq1nbAYq7eYSiwgvblNV2qS901optZsJvkYqbvFTdPe69i9qLS6arBseV0jjvuMIl0wD8QSAGAqT6AzGAmqh2B2Kg9iIQA/AHl0wDAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAAByJQAwAAAAAcCQCMQAAAADAkQjEAAAAAABHIhADAAAAABwpKM9ixgFUQFJSkkJDQ81UcYOmfKAe3dqrcTC/QwFOcTQ7V+3CG2j2G59oyfiuptS7kJAQ7dmzR7Gxsaak4rqMXKy7fneVmQKc5arLmumB6f/Rtrl3mhIAKI5ADARIaYH4yVe+0Od7sswUnOYXrUL05d4jZgpO0751E/3ljnZmyrvKCMQzliQpcV2KmUJV6xwVpk9SM8wUqkNCr2iNHRS47xSAsw+BGAiQ0gIxAJSkMgIxAAAoGdduAgAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAAR6JTLSBA7E61oqOjzRQAlF1KSgqdagEAUIUIxECA7N27Vz/88IOZQm3z0MJUTR8aZaYqR1hYmDIyuAULfGvRooVatWplpgAAQGUjEAOApcvIxdo2904zBQAAACegDTEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARyIQAwAAAAAciUAMAAAAAHAkAjEAAAAAwJEIxAAAAAAARwrKs5hxABWQmpqqn376yUyhthk1J0Wz7402U0D1aNGihVq1amWmAABAZSMQAwGSlJSk0NBQM4XaZtCUD7RkfFczBVS9kJAQ7dmzR7GxsaYEAABUNi6ZBgAAAAA4EoEYAAAAAOBIBGIAAAAAgCMRiAEAAAAAjkQgBgAAAAA4Er1MAwFCL9O1G71Mo7pVRi/T8eOX60DmETMFOE9Cr2iNHUTP7QB8IxADAUIgrt0IxKhulRGIu4xcrB7d2pspwFlu6XqRHpj+H22be6cpAYDiuGQaAAAAAOBI1BADAVJaDfHPp/iq1WRDp3+ohQ/9ykwBgXVO/SAz5hs1xEBgUUMMwB8EYiBASgvEf/hnsjKzjpkpAE7SvnUT/eWOdmbKOwIxEFgEYgD+IBADAVJaILbbqHJiCjhPu/AGmv3GJ6W2UScQA4FFIAbgD9oQAwAAAAAciUAMAADg00mlzuutGcMGatM+U1TjrNOKezprxgvrzDQAwF8EYgAAUKNkLhuoGVbAW7HNFFSrrUrddlDKTVPq1jRTBgA4WxCIAQCAs20bV0IAv0pRXZpbZ0wRioyJNGUeSnwtAKCmIxADAAD41EBRI9Zq7IK31PNSUwQAOGsQiAEAAAAAjkQgBgAAAAA4EoEYAAAAAOBIBGIAAHBWOLZ7iTZMS9Cc0XGujq5cw8geWjB5ilLST5q5jPRZWpg/j7ldUeoLZtoeZhfewih1trtsVZIpKMNr3T1mD9SmdFPgjXm/hct89WJ9UpmbZ+j1ib313DDzN3ytlw856au1fnI/zRppXj+qtxbNfFl7sswMAOBQBGIAAFD7JU3QnElTlPR5io4d9wiJp44oK3WJVj0er/Wfm7KyynU/nDaPVeuIFbZ7a+E8K7zuOaic/GXIX68J12jRyhRT6F3mO0M0Z8IEbU/dp+xTpjD7oDKSrJA9tibfXxkAKh+BGAAA1H5WUKwX0UtxYxJ176wtGvuvT9zD7Lc04MYYBece1PbXX1ZBhWj4aA3Nn+e+Xq6iqPvMtD2Mcpd5VZHXllHWO2O0YtsRa6yBmnWbrLvy123ue7przN0Kb3xSGa/PV6p79mJykiYoMTFZ2XUiFD34RQ2bbZZx9lL1/0206uWmacuUSdpTLWEfAKofgRgAANR+XSbrgaemqXtstBqd28AUWoIjFDlgnnq2t8Z3r9XXteoS4RRtX5PsGmt246saOqKvwvLXrX6IwmLHKuGp8Wrt82wuRZteXa1sRajT+KWK/02MmgSbp4IjFTU4Ubf2iZCOvqn33qaaGIAzEYgBAMBZroFatrGCn47oxHF3Sa2QsVFpP1qPwTep5+8i3WVnajJIPa63182Lb1YpxX59zHD1iPL4kcBDePwghVuPGUnrdcxdBACOQiAGAABnh9yDytg8S+tnDtGCsb0LO5CyO6xaWQtrQL/bpUz7scNViizhjC0s9lo1MuOeslI2ukJuVLebVM9dVFyTjmrZxHrcu0sH3SUA4CgEYgAAUOvl7H5ZiX/srUXz5mt7UrKyDh0s7ECqtsp1dw7WqLmPGuB8rS5RczPqKeuA+0eA/F6yvQ9DlGRfRp59RNmuuQHAWQjEAACgdstep9VTZij9qDXeJFqdbpumhL+v1ei5pgMpaxh6o49LjmuCXOm0GS2XE0fkLftne/a2XZo63i+pBoCzHYEYAADUasc2vKRUu3ozYriGzkjUtX17KTysuYLru5+3HUz3dY/f6pfzdXJh79eezg1xXep87GApl3vv3aUDZtRT41B3vXGRHrB9DQsmK8o1NwA4C4EYAADUavutQGmL6j9azbye2aRof7Xm4TRl7jGjxZxUysdbzfgZLuuolvbjjq1KK+G2SGkfrlKOGfd0nrnUOiOt5PsUA4CTEYiNXc/3U7t2/cyU/1bd31Htfln21znN0tuCdPPNU81U2dn7JygoyEwBAOChlLOZzGUTlGT3tlyKMl1ifAZfrw1uFOJ6TH3/Ta9tdLO3TdAGd54vLvgaRV5qPWa/qQ3/9p7os5Mnaf1G73+70RW9FWY9Zr09QZu4qxIAeEUgrpADWjw/WTt3rNSuA3RFAQBAdYjscLXrMXXR/UpK3accU5ua82Oyts8bqEXL09Tk/BI6pjLtZ/esmaf0sv53Xspr80OpPp+kRbNXKyM/OGfvU9qye7Vw9jplXxrjnqeY5oodcJPsWwdnLr9dC+d5vP7UQaWvvl8Ln31TWY1DXPMUc/4gxcVZgTw3TVsmDdSKZeuUkVUYnnOO71P6f6do0YMTlGrKAMBpKi8Qb57qgBq9C3Tn8BhFXtZDl1zg9b+i2scR+w1nm8xlAzXjnoHalG4KzgonlTqvt2YMs9arymt21mmF3fvsC+vMNFA9Ul84s0dkz6HwO1+v21jF2Xn36EZtmNxPzw1zz/Pcw0O0fnOa1Ga0BtwS7Z7Zm/zbGu2br8RR+e/fWxu+cT9dotJee/7dijcdemVtmaBFo+Pc84zqp2XLt+pY3Wh1v+d22Xc+8qr9RCVYy17POiZkbvZ4/cjeSnzNvq1SpOLGP6rWZvaiGihq5Ivq3sYK7afSlLp8nBV+zeut4bnR/ZT40hJlHDGzA4ADUUNcQfHPf6pdqRvMFAAEylalbjvoqtlJ3VpzOwMCKkPdsnZ4XCdS3Z98SwNu7KWwcwtfXO/8GHUanKhh/2+4aVucpqz9rqeKCr5J8X+8W+Ghnn/4iLJPmFFztlTX21lTaa+1NBuwVMNGDVJ4mLuTLJfg5gqLHatbpiZaYd792p9+9P7rV7MbrHWYOF6doiJUL38Z8l8/Y6m6m9d7ZW2buInva+iY4YpqXbSjsXpNotW673jdNcNbh1oHtX2yOzgvXMYxCMDZKyjPYsYDy65p7P6IKuvtA81uo9rvn9IXX7xlShyqkvab3YZ48emn9cYbD5uSsrH3z6UPrKzRn6ekpCSFhoaaqeIGTflAPbq1N1NnmW3jXLWJdk+m/buYsipk1xAvXC7FTbZODMNNYa1n1xDHa8WHDRU74S31tNsRVhm7hnicUrtM09j7epkylFe78Aaa/cYnWjK+qynxLiQkRHv27FFsbKwpqbguIxefvccdVK7sN/X6qEnao2j1tEJ77PmmvBa5petFemD6f7Rt7p2mBACKo4YYAGqkBooasVZjF1R1GAYAS/JGKwxbYgapYy0MwwDgLwIxqt7JQ3r5oTsUek6Qq73yOSGhGjZuqo6dLOGeEgAAoMqkJb9v/dtAHXrdVHiZNwCchQIbiA+sVTsr4Nghx77s1uYaN8PSbYUNd5be4XEbnuwDmvS7jjrHzHem4xmf6Zn77lCbC0ML3iv0wjaa+MxrOl3aFbR5udr+1iz1iW1T8P6XdOipd7btNjP44eR+3Rke5PX2SvZ6eFtmu/zOwbNc44dS1mpYb2v96rvn9TcAfr/1NfXvVvi6/HU+fsp+3X7dbJUt3eKtMVQZlWG/2SqyP9ZsmaXwRs00eEaiDpv2VSeOHtb/Tn9EjYPrlru37tM/7dbE23oWhOzwyzrq5eUfmWcBAID/7D4MTkqNByg6xhQBwFmq2mqIO3W9wfW43wqbN7cK0xPLk+XR/0Shj2apUYsYjf1nor794bAplA7/8K2eHDtIrVp3NCXF5fzwkbqF1VXn/mO05uNvC94/7fP3dP1Vkfrb3E2mpAQnD2j4LyL0QeMe+ujjFabQg7c74dus8hPHjuvZ5/upWdvr9L/rrPUz8+YHwFYtLtGxU14SZF62/t49VOFxg/TWB4Wvy1/n5uc115Q3N6pwa1ShCuyPpUsfUZ+rxyg8NkHfHTruag9sD6dP/KR/Dnb/jxt7+S9cj2Wx+9WROr9JpJ78v/cKQvb33yRr8O+6cI9oAADK7Cr1mf2Jxj4/3kfv1QBw9ghsIL6gt74wISdv09OuovzQYw8Du7R0lXma8kg3NbxzpnJyC+cr4rQ06MGntd8KULke8+SdPqXNc0foxN5kTV/kpSbwh7WKadVFH/woDRk3U1k/nyry2q/WzNQv25VwT0KbFUwfjw3TG4cv1mdfvKtz6/t/O6KYLj1cAfDBB1bq2lseUuZxz79/Qv9+oIcOH/5Wt908ybyi0K6ZN2v85sO6sFWMPvwyo8h6Z365Rt2aHtajAwZpvZm/wsqy38q7P4y20Tfo4w9fUaum55gS60MYHKJRL27X8qEXu7bJgre/Ms+U7pQV0DsnzFPoZT301fc/eSzPCa2bnKC0HSs1/MEXzdwIqPRZWmhu3ZF/e54it0iZXXjLntTZdtk4930us+zbovTWc2a+VUmuWQoc271EG6YlaE7+rUXsYWQPLZg8RSnphffP9NvRdVr1oPUewwZqi8dtmfy6VZNZR689rJ5KU8pLQ7TAYznzb/Hi63eysnJvt+LbyFU+zH3f0Kzts7RiorU9zW1mZgyL05yJ45S086B7Zq/s27fM0OueryvjNs5JX631k/tp1kjz+lG9tWjmy9qTZWbwkLnS3tadNcv6THjdNt/M0AJ7OSYv0TFTBAAAUBWqtQ2xHRj3ZY3W4n+MVl1fWTNutF595mGFWwEqyHOeOvXUdcRcTbtOeuOFuaYwnxVkf32ddlpnXp+k/aSFU0frvIYeLWCs10b1Hq0br25jCrzJ04rf/0Kz9l6stPRdalSGMGyr0zDE9Thw6NNa93/TFHqO598P1o3Pvqv51rKvWnFmID6kyRNWqmnTi/X1ru2Ku/yCIusdenlvrft2nwZWVwcX5dofhRatSDRjZwpS/7nvKN7aTKvm/tuUleZnPXrrGIVG9tCXX25QVAv3NnextvG1j76iTX+1TvKfHWp9zgIVUVAezVu478Fph9MVj9+vpNSDBcHotGfLgaQJmjNpipI+T9Gx4x7B7NQRZaUu0arH47X+c1Pmj6Mb9c6kcUo5EqEOf3xRcYHqgTo3TZsmDdSq/yYry2M5c35M1vZ5A7VoZYBuHGy2TZFtZLOnc08qwwr1C56dr9Q91vbMn8cqP7ZnnTY8PUArtnm7uegRpb7QWwvnWeHV83X523jCNdbyp5hC7zLfGaI5EyZoe+o+ZZ8yhdkHlZFkheyxxe+b3KzvdNc9YrO3TNI7SWcE7txkbZj9srIUo54jB6mRKQYAAKgK1d6p1qMTR5mx8ul5nV3TekY72m/f0QLrfO6hvy1XpzYeIclveXp3wq9148JvlfTVl2rasPybae7Mh8zYmYI07C/u2tgi7WZ/SNL6o9LoJ+b7DuENWipxoa/3rV5e94dx4YUxuqKk/VH/cg38jbRzp5/3df52rRbvlh775zzV97GLrvjTdNk3Onl15XZ3AQInfLSG/usTjbUHc2se+7ZLrml7GFX8dj1pr09SasO+in9qS8F8RW7TZIWzehG9FDcmUffOKpxn7Gz7/qIxCs49qO2v2+HJD3ZonXK/dvwYoqhRieoTU55jgXfH1j6hLVboC44Zq4Sphcv5wNQXda2V/ILrNzRzVo7mYfbVLeu0ZXma1OQqxf3pLY2em7+tlireTp928J09QTvOaJaf9c4YE5QbqFm3yborfzvPfU93jblb4Y2toP26FbLdsxeTkzRBiYnJyq4ToejBL2qYfVml+bv9fxOtetZ23zJlkvZ4hnj7HrGjR6tZnSNKWfiEUj2WKX3JBCX9aH2cBk2ulbd1CbSZq/e6bpUUqMH+vwYAAPhW7YH4Sr8Ca67St6/V9EdHKu6KjgUdJ9lD1CPvmXkK7X17jr63Hu8b0cddUEa7nu+v3/zPe/om44QuuSDYlJZdZGQPNW9UwiaO6ixTb1bom09kX5zZ+/qS70PZoNsAtTXjVa9s+yNft253mTHfOnaNsQLxSjNVsvz9POz6y90F3jT6hbpdaIXsTWWpVkTlWKcdSVcpfuJkRUc0MGVn6DJZDzw1Td1jo9XoXI95giMUOWCeetq3U929Vl+XmojtMDjECq12GF5mhe7AhWHb/q+TrX8j1el2K0CeX7ic9c6PUadRbymhT3NTUknqmr/ZuJf6PzVH3WPsEO4uUnCkou0fAOxtlbtRafaiFkjR9jXugmY3vqqhI/oqLH871w9RWKwV8J8ar9Y+D1sp2vTqamUrQp3GW8H7NzFqkn+ItP5u1OBE3drHCuNH39R7b59RTRw+XAMGxVjPrdY7/zKXTn8zQ6veseZrP1ED7ddBY/q2ct0zNVCD/QMvAADwrVoDcdu27o61SuLqGOuCumrZ+TqNmzJPWz9JLug4yZet77oDVXnC7PxXpyr2gZVq2LCpWjTxcdLup4bmsmmfrK3vqx6pdfNzzZgPoZHVEojLsz/Kotn5F5mx0n39qbtTtPww7n04T9Ot1Hzo+wzXvKhejboNVnRjM1FmDdSyjbvm88Rxd4l3R5S2MMFVC9rsxhfVPy7w4TQsMtr6N02pH3ppW1yFwvs/qiiv2zNEHa5x19Af3OuxjBlWQP7Regy+ST1/V+znOLcmg9Tjeh/h9JtVSrFfHzNcPaK8Hx/D4wfJvjI9I2l9sfbATfrMdAV1+9Lp9cnmUuk6V6nPqJtU/p8eAQAAyq/aa4hLlLNfgy5zd4zVuXeCPvlyn07mnC7sOMkavnmu9FDtL7tmckTCI3oocY2GtTmsLrH9zTNVL/NYKR3bnDpa9b1MV3B/HD78gxnzLfPH78xY6TIP+L8FGjYq5QcGVImWl/lx/47cg8rYPEvrZw7RgrG9CzttsoaFfrTNzVw2RMs27LPC8FINHeAj9FVQk2uHK7qJ9beWD3S1eU7Z519HVIEVodbtSwj7rSJlLWJR3+1Spv3Y4SpFlnD0D4u91mtb3qyUja6QG9WthPuSNumolvYf3rtLxbv1soL6qMmKCj6iHc8McV0q3XrwNHUo948kQE13Uqnzers69TuzbX3NsU4r7GOs6RwRAJymRgfig68/oaVHpceeW6OP17yiTpe3VP26RRd5+/vFL6+96tfuUPb5vp9dj2Vh/63Hb++tme+ukVJW6vHn15pnqkhEtC60HjZs/NI97cPJd18JXC/Tfirv/si3efMCM+bbpx8k+3XlgK11W3e48gzkvobFL412zYvqFKlmrcyoDzm7X1biH3tr0bz52p6UrKxDBws7bfJD9ofjlGi3q1UDNW9ZiQ1Sg3spfupS9e97lbTH7uwrTs9NGKek5MLOwipfg5KP4NZzdc1ogVx3cG/UvJTLk1tdIm9RO+uA+4w+v/dr74MVdO1L2rOPyOtdxRv3Vfd480NFxGhd2zOwl7OjdnD38t5ZK7aZgrOWfT/fg9Z3L02pW6v3ihIAgHc1OhBvWDrP9fjU/b1dj8X9rM1e/jNtdf29rlD5zNTX3AV+stv8FvytFr219c2H9LcHrrP+w/beSVSluLi37mwjPT7iOh076aPt18n9Srij+O2aKlt590e+EycOl3xLpRNf6ZX/Sp2v7GsKShbZNs71WJ4fPlADZa/T6ikzlH7UGm8SrU63TVPC39cWdhZlDUNvLKnGN03bl6+TugxXp/CTSp07pOI1MrmuO415Vz9SUbfN0b2z12rAbb103o/rtOGZ3nphklmH2uzEEXn7HSLbs+fv0tTx0eTk6GptWmWCwb552rTFW0/YwNniKkV1aW59HyIUGePj+LVtnEN+HACAmqnSA/FJn2eTfvB5TZ7brudv1fTdZsLTxX00LFqu2+28vtHbDN6d2ea38Q1TXffGHdynm46dqqqOSc7RpMVPq6EVHlu1iNS7O/YrN/9P5+Vp344V6hYRoaWVfL201/1W3v3hYdztfXxsyzyt+EMfrc+R7h53mykrWfP4kepsPd7621vdBajVjm14yd37cMRwDZ2RqGv79lJ4WPPCzqIsB9NLqWGxXpswarSuHT1czayAvOWfs5Tp2dtxGeV8nVx6j9b1myuy7zQNnbVU18aEuGq5/+8lH/fbrW7nhri+xscOlvJLwd5dOmBGPTUOddcbF+lN3NewYLKiXHN7yu9lOkTRwyYquvFJpf5rklJq+w8IgE8NFDVirfV9eEs9LzVFAIAapfICcQN3m80nXyj/Jcf97pnoerwh4QllnSg8vczNPqJXxvdT+wdWqsc1PUypp2A99e4atbXO/G69JlJDH56lnzxer9wcbVk4Tq+UVFvpEqT+8zYrvt63uu7ae01Z5WvU7WF9vCBBJw5/q9/8MkJ165gOourUUatf3qhPjjbVQ9OfrpxOtUrYb+XfH252DXxo02912SWdtOWrwtNt+/Wzh3Ry3eaq69Uj9NuYC8wzpTjvSk0adrF27lipdp376cMvPH48sORZ+znt/df02OhZpgQ1mbvnZits9bdvz+MaPUOK9peYhyMU9wfz2ojRShh8lbRvvhLnlhRO05S5x4wWc1IpH281436oH6lOf5ysDsFWkN72mlK8Xi9czS7rqJb2446tSivhh4K0D1d53WbnmUutM9JKvk+xL/n3IQ7uMlG9rr5Jve7qpXrZ67TupXXeL68GAACoZJUXiDteZwVJuS45zu/xNzy8o3nSPw16P6rHOkirXp2kpufUL3ifug3P051/X6knFmzU4sn9zNxnaNFbSV8tV+eG0ovTxqiJx+uD6tbXr+6ZrrRvvdWBnKFeSy3esUaHN86r0vbEkb9/RUez0jTjDwlqarqibtriYv1lxhId/Omg/udKaadV1rpFgNvflbDfKrQ/LJ2t0LrswzUK/T5Zv/pFWJHX/+GlZF3YKkZr188xc/un/7wvNaVbU+3cvlJd23v8eGANdaz9fEmPQdrNFZlVpkyX1J6plKNR5jL3/Wp9K9qmNrjnNNftluwQttp1392ighu5vzup77/pNYxlb5ugDUVuWeSHOhFq5OrJ6oCO+XWz5CoWfI0i7Vqq7De14d/ef13ITp6k9Ru978dGV/RWmPWY9faEsl+Onn+7pca91GdwL1ev0sFxE3Wt3ev0Nisoe9lHAAAAla3yAnH9y/X6Z8vV89KmpsDuZdhnVYx3QcF6KvmUkhKfVlyLwvfpOXCEvjtwXH/+fXe1stbA131rz4nsr4+Pn9AH9usvLnx9ZPseentrmh4b2d2UlMIK1289d4MrJO46cMapcymXEVdE3fPa6E8vvKJDP7s7hjr0/W5N+tNtOrd+Hb301COuefy7j3MZlLTfKrg/7J6eO1rb8otjmXppbNGg/7d5y5X+3afWugW5C/1lLdOfNx1Sxudr9PteMQXvaYvrnaA3NyXToVZVMO1F96yZp/RyVvVFdrja9Zi66H4lpe5TjqnBzPkxWdvnDdSi5Wlqcn5Z7lUboijXZbn2PYnHFAvT+eFOn0/SotmrlZEf5rP3KW3ZvVo4e52yL41xz3OGlBd6a9FLS5SecaSgJtW1nLPv1xb7Dl+Nr1K4txdWu+aKHeC+xVHm8tu1cJ7Hep86qPTV92vhs28qq3GI99sgnT9IcXHWMSc3TVsmDdSKZeuUkVUYnnOO71P6f6do0YMTlGrK3AovlY4aPNHjVlEh6jB0rMLrWPvopf9xXzIPAABQhYKsoFVVjWMRIMc2T1Wr7o/o5vsWav6sIaYU1S0pKUmhoaFmqrhBUz5Qj27tzdRZJvtNLbtv0hmX4Vrh6/G1rnZzdo+yC5dLcZOXqrt9k1pvrJC16S8DtcVHzWO9NqN1129TrKC6q9j7lPj++2Zp4ePzlWm3TX6y6OXY7tf5uA67frS6TxysjMcn6GCRWzjt05bH+/muIa3TXNGjlim+S8V/rEp9wd3Rjt1mt38XU2jxa3umW+s9Yb7k5fZTmSsTtOj1FO+XkteJVNyTI5RprXdql2kae5/7fsYF7DD819u1aXcJVwPU6av+Hm2Is7eM05zZ61TXer/h1vudGbYzX7fWZ2WaguOm6d5RvSrzd8Zq0S68gWa/8YmWjO9qSrwLCQnRnj17FBsba0oqrsvIxTXyuJP/3Tvzs+2PnPR12vLWS0rZnqIs84NOvXMjdEGnQfrVLYMUGVq8Qze7Z/QV29yfy7Dts/TesmVK23vQ/cNbnQZq1OoaXXn7o4ptW9J9y08qc/MMvf3vtTrwo3lt/RA1aROv2DtGqFOb7Vpxz7hi3xvX394iRY/5RPH5u9Z8P123QfPG+i6Mtb4Ltop+393LPVPr316l/fnrbJa7+z1jFR3+vtfl9pSTvlrv/WuWdu7e5+75P7i5wjoMUY+771brYvd3qzlu6XqRHpj+H22be6cpAYDiKq+GGOV3YK2G3jRSaT8csfvRKpB7+me9P3ecLuv5iOsexE9O5gCPGiL4JsX/8W6FFzkRPaLsE2bUH1YQ6/7kWxpwYy+FnVv4PvXOj1GnwYka9v+GmzCbpqyydPweMVo32r1T75uv5WdcJtxswFINGzVI4WHuzqZc7BO92LG6ZWqi4iLcy/HTj57pN0JxE5eqv72cTTyW0zohD+9mvW7G2oCEYRdzhD7j7mYV1uwGa3tOHK9OURGql//e+es9wzrpNuvtlR2YJ76voWOGK6p10U7P6jWJVuu+43XXDI8Otew2wouKXip9pmYDn1Ds+XZwnqT37LYggA+Z7wzRnAnjtGVzckEYtrmuTrDC6rJx8a77kBdjh8Dck8qwwuWCZ+crdY8Jhjar/Nieddrw9AArNPu4dN91VcQ1WjjPvjLE47WnjigrdYnWT4rXote2eW8Lb+Y9nf+aKnVEqS/0tpb7Ze3xXGez3KsmXKNFK0vuE8C9zSdoe6oJw7bsg8pImqHXx9bk+ysDgH+oIa6JrEDcLuw6Vxthbxo2bKotKXsUc3GAL5dGhTi6hhiAT9QQF1eeGuLsbeM0/wW7A7YGatZtrK4fMEDh59s/3pxUdkaKdi6doPWuS0xCFD1mreJjC3/YyXy9nxauNMmtyVWK+/1fdGXbCPcPOtlpSvnX/Vplv7bO1erzwvOuzvE8FVxNUqe5Wvd7Qtddf5Wa2D/cWWE6a8c8rfnf+dqT32/AmTXEPq70KGDfdslaL1/PV6SGOMsKswsS7c4Q7G32hOLvND84WoE4I3me1i18ufA2cV5qiHOSJmjOzNXKrhOh6Lsmq3u3GDWxt421zVKXTNDq/6Yop/FNuuXZiWpdA6tYqCEG4I8aePiCLuitz7L2aebYBF3s0Vb34stjNHPxGh09fshrGF56W2GHUv4O7dr57gQLAIAaIXejNixw90YefpsV+kYMMmHY1kDBYTHqNOotc6/yI0p5dabSPWtk65p5G/dS/6fmqHuMCcO24EhFj0pUH/t3A+vvpBXrTG+rPnrbvrokRFGjlumWAVe7w7CtTgM1iRmtW56a5tE2vqZI0fY17pVpduOr1jbrW3j1Tf0Q1xUhCU+NLyHIpmjTq1YYVoQ6jV+q+N+YMGyztlnU4ETd2idCOvqm3nubamIAtReBuIaqe15LjZ7+inZ/f8jVoZY97P7yU42+o7fq+uh3auBr7vnKMnzxxVvm1QAA1FBJb2qHnYbbjFV8X9+d6zUbMF1xdi3qj0v0mZfLrML7P+ojuIaowzXu2tGDe8/oV2DfNn3nSuKD1N1XcwgraPe95SozUUNkWOHe7kww+Cb1/N2Z7YqNJoPU43of2/ObVUqxXx8zXD2i8n98KCo8fpDszZ2RtF7H3EUAUOsQiAGgktiXSs64p6zDQG1KN28AwCX96+2ux9a/HqSS+3CKVNsudvg7qf1fnRFsFaHW7UvoNKtVpPf33p8m+2roepd3UTN3iVf12pb8fJX7bpe7064OVymyhLO9sNhr1ciMe8pK2egKuVHdbvLd0V2Tjmppb7S9u3TQXQIAtQ6BGAAqid0mcOy/yjqU0E4QcKijh+y41VwXtPJeU+mpWatLXI+Z6btcj4Ws15Z01mM9V9eMenNekwvMmA9hkdYS1iC57k7HGjUv5XZ11vbyttxZB9yXQdu9ZHv/8c4ehijJ/rUg+4j3DsUAoBYgEAMAAJQi+4SPHqjzVWcozJVOm9Eys9Yrv/NoT9kevXiXytyLHgBqIwIxAACo0ZqH2bWcB3Vgb+khLXOvu2a4Wbi7prjCmrV0XVJ87KtPXZdO+5KzbZ32mPGqlvN1cvFlO9d9O7ljB0vp8MraXgfMqKfGoe56Y7+udPG47zgA1DYEYgAAUKM1a9vFFe72vLukxFBq36d85za77XADtbzcR0dSZXVpvKLPtx53z9R7W3zUEh9dp9VLNpqJypCmTJ9p+6RSPt5qxj1c1lEt7ccdW5VWwj2Q0z5cpRwz7uk8c6l1RlrJ9ykGgNqOQAwAAGq29oPU0RVKZ2jVat81npnLHtIWu1O68wepU8BuvxytX93WS8FW8EydfYMSX1unjPzLie37+SbNUOKj45R63F1UXr4uUQ5u5O7ZOvX9N71ekp29bYI2FLtVlCX4GkVeaj1mv6kN/z6zgzG37ORJWr/R+99tdEVvhVmPWW9P0CbuqgTgLEYgBgAANVx+KJXSXxuohfOWKP3H/CB3UtkZG7Xp6d5auNx9v+AOQ8e6wlygBHeZpoRbolVPR5S+epwWjY5zdyo1socWzXxZ6UcbKOxXvcrXy7Rpf7tnzTyle0m8+cFUn0/SotmrC8N49j6lLbtXC2evU/alMV7Wt7liB9zk2maZy2+3tpnHa08dtNbjfi189k1lNQ5xzVPM+YMUF2eF8dw0bZk0UCuWrVNGVmF4zjm+T+n/naJFD05QqikDgNooKM++GS2ACktKSlJoaKiZKm7QlA/Uo1vAqiwA1BLtwhto9hufaMn4rqbEu5CQEO3Zs0exsbGmpOK6jFxcI487mcusUOsKryWJVNzkor2uZ224X6++tFHHfF0CXKe5okcuUXxc0X6T3X9Pxd6viPRZWjhhvnTjUg0d4P1y65z01dq0+CXt+CpF2XZPVPVD1KRNvGLvGKEOB/5Hz72wTo36vKh7E2LcL7DYt19bsc3dFrd/F1PoKftNLbtv0hmXNVth9vG16mnX8FpK3F71o9V94mBlPD5BB70se+bKBC16PcXrZdGqY23jJ0co03ptqhX6x97nvhdzATsM//V2bdrtvRbZpU5f9a+hbYhv6XqRHpj+H22be6cpAYDiqCEGAABVqm45OyVu0vN53Ttjjnp2i1GTcwvfpN65EQr/zXjdNWNtsTAcSPXC+6rnuESNnms6k5r7noZNGK9ObUKUsnGda56WlxWGYRdzplXX1xlX8E2K/+PdCg/13ChHlH3CjFqaDViqYaMGKTzM3VGWS3BzhcWO1S1TExUX4X7tTz8Wv7a52Q2JGjbRWsaoCNXLX4b8185Yqu7mtV7ZgXni+xo6ZriiWjdXcH1TbqnXJFqt+9rbnA61ANRu1BADAUINMQBvqCE++2VvG6f5L6xTthVuB7wwUZFUN9QI1BAD8AeHbAAAgJKkz9KisUO0/r/JyvLo/CrneIpSXzPteK3p8IHDCcMAUMtw2AYAAChFzqFkbX9piBbkd6hlDc+NTtCK1Vt1LLeBwvq+qIF93LcqAgDUHgRiAACAkoSP1l1PTVNcbLQaFWm7bLfFHa7+k9/XXbfFeO+tGQBQoxGIAQAASlEvope6j0nUvbO2uDvUsoYHZq3VXWNGKyq8hI6pAAA1GoEYAAAAAOBIBGIAAAAAgCNx2yUgQLjtEgBvqvu2S7P/3NdMAc5yMieP2y4BKBWBGAgQAjEAb6ozEM9YkqTEdSlmClWtc1SYPknNMFOoDgm9ojV2UOC+UwDOPgRiIEAIxAC8qc5ADAAASkYbYgAAAACAI1FDDARIaTXE4xfuUNr3R8wUnKZ1i8ba88NRMwWnad+6if5yRzsz5R01xAAAVD0CMRAgpQViACgJgRgAgKrHJdMAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEeil2kgQL777jtlZGSYKaC4sLAwPiMoUYsWLdSqVSszBQAAKhuBGAAAAADgSFwyDQAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCRCMQAAAAAAEciEAMAAAAAHIlADAAAAABwJAIxAAAAAMCBpP8P/HFoOH5Ej9kAAAAASUVORK5CYII="}}},{"cell_type":"markdown","source":"This notebook describes joining data frames using a list.\n\n(I did this process to understand the competition data.)\n\nWe can use this table to analyze data for each race.\n* In this notebook, I will briefly examine the outliers in race time using the trakus index.","metadata":{}},{"cell_type":"markdown","source":"# Load table","metadata":{}},{"cell_type":"code","source":"# load table \ntk_table = pd.read_csv(\"../input/big-data-derby-2022/nyra_tracking_table.csv\")\ntk_table = tk_table.sort_values(by=['track_id','race_date','race_number',\n                                    'program_number','trakus_index']).reset_index(drop=True)\n\nprint(f\"tk_table shape: {tk_table.shape}\")\ntk_table.head()","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:25.974240Z","iopub.execute_input":"2022-10-22T18:12:25.974734Z","iopub.status.idle":"2022-10-22T18:12:36.562456Z","shell.execute_reply.started":"2022-10-22T18:12:25.974694Z","shell.execute_reply":"2022-10-22T18:12:36.560669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"st_table = pd.read_csv(\"../input/big-data-derby-2022/nyra_start_table.csv\",\n                   header=None,\n                   names=['track_id','race_date','race_number',\n                          'program_number','weight_carried',\n                          'jockey','odds','position_at_finish'])\n\nst_table = st_table.sort_values(by=['track_id','race_date','race_number','position_at_finish']).reset_index(drop=True)\nprint(f\"st_table shape: {st_table.shape}\")\nst_table.head()","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:36.565266Z","iopub.execute_input":"2022-10-22T18:12:36.565836Z","iopub.status.idle":"2022-10-22T18:12:36.626065Z","shell.execute_reply.started":"2022-10-22T18:12:36.565794Z","shell.execute_reply":"2022-10-22T18:12:36.624255Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rc_table = pd.read_csv(\"../input/big-data-derby-2022/nyra_race_table.csv\")\nrc_table = rc_table.sort_values(by=['track_id','race_date','race_number']).reset_index(drop=True)\nprint(f\"rc_table shape: {rc_table.shape}\")\nrc_table.head()","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:36.628069Z","iopub.execute_input":"2022-10-22T18:12:36.628557Z","iopub.status.idle":"2022-10-22T18:12:36.663556Z","shell.execute_reply.started":"2022-10-22T18:12:36.628515Z","shell.execute_reply":"2022-10-22T18:12:36.661865Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Join table using list","metadata":{}},{"cell_type":"code","source":"# join table (start_table & tracking_table)\ntmp_tk_table = tk_table.groupby(['track_id','race_date','race_number',\n                                 'program_number']).agg(lambda x: x.tolist())\ntmp_st_table = st_table.set_index(['track_id','race_date','race_number',\n                                   'program_number'])\n\nsttk_table = tmp_st_table.join(tmp_tk_table, how='left').reset_index(drop=False)\ndel tmp_tk_table, tmp_st_table\n\nprint(f\"sttk_table shape: {sttk_table.shape}\")\nsttk_table.head()","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:36.665895Z","iopub.execute_input":"2022-10-22T18:12:36.666281Z","iopub.status.idle":"2022-10-22T18:12:40.782031Z","shell.execute_reply.started":"2022-10-22T18:12:36.666249Z","shell.execute_reply":"2022-10-22T18:12:40.780035Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# join table (race_table & start_tracking_table)\ntmp_sttk_table = sttk_table.groupby(['track_id','race_date',\n                                'race_number']).agg(lambda x: x.tolist())\n\ntmp_rc_table = rc_table.set_index(['track_id','race_date','race_number'])\n\n\nrcsttk_table = tmp_rc_table.join(tmp_sttk_table, how='left').reset_index(drop=False)\ndel tmp_sttk_table, tmp_rc_table\n\nprint(f\"rcsttk_table shape: {rcsttk_table.shape}\")\nrcsttk_table.head()","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:40.784035Z","iopub.execute_input":"2022-10-22T18:12:40.784668Z","iopub.status.idle":"2022-10-22T18:12:41.459569Z","shell.execute_reply.started":"2022-10-22T18:12:40.784602Z","shell.execute_reply":"2022-10-22T18:12:41.458514Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"with open(\"rcsttk_table.pkl\", 'wb') as f:\n    pickle.dump(rcsttk_table, f)","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:41.461104Z","iopub.execute_input":"2022-10-22T18:12:41.463095Z","iopub.status.idle":"2022-10-22T18:12:42.342858Z","shell.execute_reply.started":"2022-10-22T18:12:41.463023Z","shell.execute_reply":"2022-10-22T18:12:42.341622Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Race Time outlier analysis using trakus index","metadata":{}},{"cell_type":"code","source":"def get_time(race_trakus, step_size=0.25):\n    match_size_list = []\n    for trakus_index in race_trakus:\n        size = len(trakus_index)*step_size\n        match_size_list.append(size)\n    return match_size_list","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:42.345121Z","iopub.execute_input":"2022-10-22T18:12:42.345649Z","iopub.status.idle":"2022-10-22T18:12:42.354100Z","shell.execute_reply.started":"2022-10-22T18:12:42.345600Z","shell.execute_reply":"2022-10-22T18:12:42.352164Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# race_time values\nrcsttk_table['race_time'] = rcsttk_table['trakus_index'].apply(get_time)\nrcsttk_table['race_time']","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:42.355971Z","iopub.execute_input":"2022-10-22T18:12:42.356460Z","iopub.status.idle":"2022-10-22T18:12:42.384158Z","shell.execute_reply.started":"2022-10-22T18:12:42.356421Z","shell.execute_reply":"2022-10-22T18:12:42.382870Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_ratio(race_time):\n    max_time = np.max(race_time)\n    \n    if max_time == 0:\n        return [0.]*len(race_time)\n    else:    \n        return [cur_time/max_time for cur_time in race_time]","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:42.386147Z","iopub.execute_input":"2022-10-22T18:12:42.386799Z","iopub.status.idle":"2022-10-22T18:12:42.395536Z","shell.execute_reply.started":"2022-10-22T18:12:42.386742Z","shell.execute_reply":"2022-10-22T18:12:42.393633Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# max_ratio values \nrcsttk_table['max_ratio'] = rcsttk_table['race_time'].apply(get_ratio)\nrcsttk_table['max_ratio']","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:42.401256Z","iopub.execute_input":"2022-10-22T18:12:42.401822Z","iopub.status.idle":"2022-10-22T18:12:42.445344Z","shell.execute_reply.started":"2022-10-22T18:12:42.401750Z","shell.execute_reply":"2022-10-22T18:12:42.443413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# max_ratio_min values \nrcsttk_table['max_ratio_min'] = rcsttk_table['max_ratio'].apply(np.min)\nrcsttk_table['max_ratio_min']","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:42.447201Z","iopub.execute_input":"2022-10-22T18:12:42.447641Z","iopub.status.idle":"2022-10-22T18:12:42.481048Z","shell.execute_reply.started":"2022-10-22T18:12:42.447599Z","shell.execute_reply":"2022-10-22T18:12:42.479521Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.histplot(rcsttk_table.max_ratio_min)\nplt.title('max_ratio of time (trakus index length)')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:42.482660Z","iopub.execute_input":"2022-10-22T18:12:42.483241Z","iopub.status.idle":"2022-10-22T18:12:42.805091Z","shell.execute_reply.started":"2022-10-22T18:12:42.483187Z","shell.execute_reply":"2022-10-22T18:12:42.803716Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The trakus index usually have the same size for each race. \n\nHowever, the size is different in the case of not finishing.","metadata":{}},{"cell_type":"code","source":"outlier_th = 0.9\n#sample_size = None\nsample_size = 5\n\ncheck_table = rcsttk_table.loc[rcsttk_table.max_ratio_min < outlier_th].reset_index(drop=True)\n\nif sample_size:\n    check_table = check_table.sample(sample_size).sort_index().reset_index(drop=True)\ncheck_table","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:42.806837Z","iopub.execute_input":"2022-10-22T18:12:42.807360Z","iopub.status.idle":"2022-10-22T18:12:43.010188Z","shell.execute_reply.started":"2022-10-22T18:12:42.807302Z","shell.execute_reply":"2022-10-22T18:12:43.007764Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def check_plot(lat, lng, paf, num_horse, mr, **kwargs):\n    mr = np.round(mr, 3)\n    paf_txt = f\"position_at_finish: {paf}/{num_horse}, max_ratio: {mr}\"\n    plt.scatter(lat, lng, label=paf_txt, **kwargs)","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:43.012033Z","iopub.execute_input":"2022-10-22T18:12:43.013677Z","iopub.status.idle":"2022-10-22T18:12:43.022837Z","shell.execute_reply.started":"2022-10-22T18:12:43.013592Z","shell.execute_reply":"2022-10-22T18:12:43.021152Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"outlier_th = 0.9\nscatter_kwargs = {'alpha':0.8}\n\nfor i, row in check_table.iterrows():\n    mr_list, lat_list, lng_list, paf_list= row[['max_ratio',\n                                                'latitude', \n                                                'longitude', \n                                                'position_at_finish']]\n    \n    time_outlier = []\n    for idx, max_ratio in enumerate(mr_list):\n        if max_ratio < outlier_th:\n            time_outlier.append(idx)\n    \n    N = len(time_outlier)\n    if N == 0:\n        continue\n    \n    else:\n        num_horse = len(paf_list)\n        mr, paf, lat, lng = mr_list[0], paf_list[0], lat_list[0], lng_list[0]\n\n        #plot\n        plt.figure(figsize=(6, 6))\n        check_plot(lat, lng, paf, num_horse, mr, **scatter_kwargs)\n        \n        for j in range(N):\n            idx = time_outlier[j]\n            mr, paf, lat, lng = mr_list[idx], paf_list[idx], lat_list[idx], lng_list[idx]\n            check_plot(lat, lng, paf, num_horse, mr, **scatter_kwargs)\n        plt.legend(bbox_to_anchor=(1.1, 1.05))\n        plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-10-22T18:12:43.024811Z","iopub.execute_input":"2022-10-22T18:12:43.025793Z","iopub.status.idle":"2022-10-22T18:12:44.580767Z","shell.execute_reply.started":"2022-10-22T18:12:43.025744Z","shell.execute_reply":"2022-10-22T18:12:44.578703Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"I analyzed the race time in this notebook based on a joined table.\n* The Trakus index is recorded based on the last position horse. \n* And if the horse does not complete the race, the recording will stop in the middle.\n\nI will analyze the jockey or weight in the near future.\n\nThanks.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}