{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 3rd Party Embeddings" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Using 3rd party embeddings as features to the model" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import Utils as model_helpers\n", "import numpy as np\n", "import pandas as pd\n", "from sklearn.preprocessing import StandardScaler" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Computing Features" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "half_enantiomer_data = pd.read_csv(\"half_enantiomer_data.csv\")" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# Loads in embeddings from 3rd party model to use as features\n", "gme = np.load('../data/thirdparty/enantiomer-embeddings-for-rick.npz', allow_pickle=True) # Load the file\n", "gme = gme['embeddings'].item() # Extract the data\n", "gme = {k: v.squeeze() for k, v in gme.items()} # Flatten the arrays\n", "gme_df = pd.DataFrame(gme).T # Turn into a dataframe" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...246247248249250251252253254255
CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C23.3615830.3828130.0000000.0000002.1530111.4101332.3767040.00.7657960.000000...0.0000000.3311220.2514790.6975810.5695530.7851930.0000003.1348343.3442080.000000
CCCC[C@H](C(C)C)[C@H](O)CC1.5915730.0000000.4289401.4125350.3042374.0569732.0678440.00.0000000.145670...0.0000000.0000000.0000000.6645561.2747690.0000000.2003472.1169290.0000000.557281
CCCCCCCC[C@@H](C)O0.2229260.0000000.2231720.0000000.0000005.7102482.7402400.01.2300710.000000...0.8019220.0000000.0000000.0000000.0000000.0000000.0000001.2915540.5258112.257053
CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O2.2821840.9120730.0000000.0000002.8901870.1764122.2568180.00.5696610.000000...0.1019280.0000000.3403071.9824420.9417300.1645280.0000003.0657822.0765390.000000
C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O3.5618100.0000000.2718603.1116730.0000000.7421942.0713930.00.0000000.158586...0.7715860.0000000.0000000.3821870.0000001.0918241.3218330.0000000.2895150.716665
\n", "

5 rows × 256 columns

\n", "
" ], "text/plain": [ " 0 1 2 \\\n", "CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C2 3.361583 0.382813 0.000000 \n", "CCCC[C@H](C(C)C)[C@H](O)CC 1.591573 0.000000 0.428940 \n", "CCCCCCCC[C@@H](C)O 0.222926 0.000000 0.223172 \n", "CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O 2.282184 0.912073 0.000000 \n", "C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O 3.561810 0.000000 0.271860 \n", "\n", " 3 4 5 \\\n", "CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C2 0.000000 2.153011 1.410133 \n", "CCCC[C@H](C(C)C)[C@H](O)CC 1.412535 0.304237 4.056973 \n", "CCCCCCCC[C@@H](C)O 0.000000 0.000000 5.710248 \n", "CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O 0.000000 2.890187 0.176412 \n", "C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O 3.111673 0.000000 0.742194 \n", "\n", " 6 7 8 9 \\\n", "CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C2 2.376704 0.0 0.765796 0.000000 \n", "CCCC[C@H](C(C)C)[C@H](O)CC 2.067844 0.0 0.000000 0.145670 \n", "CCCCCCCC[C@@H](C)O 2.740240 0.0 1.230071 0.000000 \n", "CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O 2.256818 0.0 0.569661 0.000000 \n", "C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O 2.071393 0.0 0.000000 0.158586 \n", "\n", " ... 246 247 248 \\\n", "CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C2 ... 0.000000 0.331122 0.251479 \n", "CCCC[C@H](C(C)C)[C@H](O)CC ... 0.000000 0.000000 0.000000 \n", "CCCCCCCC[C@@H](C)O ... 0.801922 0.000000 0.000000 \n", "CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O ... 0.101928 0.000000 0.340307 \n", "C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O ... 0.771586 0.000000 0.000000 \n", "\n", " 249 250 251 \\\n", "CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C2 0.697581 0.569553 0.785193 \n", "CCCC[C@H](C(C)C)[C@H](O)CC 0.664556 1.274769 0.000000 \n", "CCCCCCCC[C@@H](C)O 0.000000 0.000000 0.000000 \n", "CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O 1.982442 0.941730 0.164528 \n", "C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O 0.382187 0.000000 1.091824 \n", "\n", " 252 253 254 \\\n", "CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C2 0.000000 3.134834 3.344208 \n", "CCCC[C@H](C(C)C)[C@H](O)CC 0.200347 2.116929 0.000000 \n", "CCCCCCCC[C@@H](C)O 0.000000 1.291554 0.525811 \n", "CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O 0.000000 3.065782 2.076539 \n", "C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O 1.321833 0.000000 0.289515 \n", "\n", " 255 \n", "CC1(C)[C@H]2CC[C@H](CO)[C@@H]1C2 0.000000 \n", "CCCC[C@H](C(C)C)[C@H](O)CC 0.557281 \n", "CCCCCCCC[C@@H](C)O 2.257053 \n", "CC1(C)[C@H]2CC[C@](C)(C2)[C@H]1O 0.000000 \n", "C=C1CC[C@@H](C)C(C)(C)[C@@H]1/C=C/C(C)=O 0.716665 \n", "\n", "[5 rows x 256 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gme_df.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Make copy of original data and set the index to match that of the gme model\n", "half_enantiomer_data_copy = half_enantiomer_data\n", "half_enantiomer_data_copy = half_enantiomer_data_copy.set_index(\"SMILES String\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Keep the columns in the gme df that match the index names in original dataset\n", "common_index = half_enantiomer_data_copy.index.intersection(gme_df.index)\n", "half_enantiomer_data_copy = half_enantiomer_data_copy.loc[common_index]\n", "gme_df = gme_df.loc[common_index]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Combine original dataset with gme df\n", "g_model_embeddings = half_enantiomer_data_copy.join(gme_df, how=\"inner\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Reset the index to be \"Moecule Name\"\n", "g_model_embeddings = g_model_embeddings.set_index(\"Molecule Name\")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0Unnamed: 0.1Pubchem ID #NoteOther SMILESMethodContributorDetection ThresholdDetection UnitsNormalized Detection Threshold...246247248249250251252253254255
Molecule Name
(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone20207160826NaNNaNNaNNaN6.10E+01ppb61.00...0.0000000.0000000.2452070.0000000.0000000.0000002.0030860.0000002.4175000.000000
(S)-(+)-2-methylbutanal42426971249NaNNaNNaNNaN1.00E+01ppm in air10000.00...0.0000000.8660841.1896041.2033952.9652210.0000000.0000002.6328490.0000000.000000
( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene6464440968Changed from PubChem ID 6654CC1=CC[C@H]2C[C@@H]1C2(C)CDifferent PubChem IDDW1.00E-01ppb0.10...1.3486830.0000000.6854280.2902080.0000000.0000000.0000000.9557233.7632130.000000
(1R,3S,4S)-(+)-neomenthol9696439263NaNCC(C)[C@@H]1CC[C@@H](C)C[C@@H]1OChemDraw + CactusDW8.10E-01ppb0.81...0.0000000.0000000.2041141.3038332.6143920.2499960.0000003.9426421.8463980.000000
(3S)-(-)-dihydrocitronellol10610692283029NaNCC(C)CCC[C@@H](C)CCOChemDraw + CactusDW2.50E+02ppb250.00...1.6379070.0000000.0000000.0000000.0000000.0000000.0000001.0839491.5560272.074914
\n", "

5 rows × 271 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 Unnamed: 0.1 \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 20 20 \n", "(S)-(+)-2-methylbutanal 42 42 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 64 64 \n", "(1R,3S,4S)-(+)-neomenthol 96 96 \n", "(3S)-(-)-dihydrocitronellol 106 106 \n", "\n", " Pubchem ID # \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 7160826 \n", "(S)-(+)-2-methylbutanal 6971249 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 440968 \n", "(1R,3S,4S)-(+)-neomenthol 439263 \n", "(3S)-(-)-dihydrocitronellol 92283029 \n", "\n", " Note \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone NaN \n", "(S)-(+)-2-methylbutanal NaN \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene Changed from PubChem ID 6654 \n", "(1R,3S,4S)-(+)-neomenthol NaN \n", "(3S)-(-)-dihydrocitronellol NaN \n", "\n", " Other SMILES \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone NaN \n", "(S)-(+)-2-methylbutanal NaN \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene CC1=CC[C@H]2C[C@@H]1C2(C)C \n", "(1R,3S,4S)-(+)-neomenthol CC(C)[C@@H]1CC[C@@H](C)C[C@@H]1O \n", "(3S)-(-)-dihydrocitronellol CC(C)CCC[C@@H](C)CCO \n", "\n", " Method \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone NaN \n", "(S)-(+)-2-methylbutanal NaN \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene Different PubChem ID \n", "(1R,3S,4S)-(+)-neomenthol ChemDraw + Cactus \n", "(3S)-(-)-dihydrocitronellol ChemDraw + Cactus \n", "\n", " Contributor \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone NaN \n", "(S)-(+)-2-methylbutanal NaN \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene DW \n", "(1R,3S,4S)-(+)-neomenthol DW \n", "(3S)-(-)-dihydrocitronellol DW \n", "\n", " Detection Threshold \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 6.10E+01 \n", "(S)-(+)-2-methylbutanal 1.00E+01 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 1.00E-01 \n", "(1R,3S,4S)-(+)-neomenthol 8.10E-01 \n", "(3S)-(-)-dihydrocitronellol 2.50E+02 \n", "\n", " Detection Units \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone ppb \n", "(S)-(+)-2-methylbutanal ppm in air \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene ppb \n", "(1R,3S,4S)-(+)-neomenthol ppb \n", "(3S)-(-)-dihydrocitronellol ppb \n", "\n", " Normalized Detection Threshold \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 61.00 \n", "(S)-(+)-2-methylbutanal 10000.00 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 0.10 \n", "(1R,3S,4S)-(+)-neomenthol 0.81 \n", "(3S)-(-)-dihydrocitronellol 250.00 \n", "\n", " ... 246 247 \\\n", "Molecule Name ... \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone ... 0.000000 0.000000 \n", "(S)-(+)-2-methylbutanal ... 0.000000 0.866084 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene ... 1.348683 0.000000 \n", "(1R,3S,4S)-(+)-neomenthol ... 0.000000 0.000000 \n", "(3S)-(-)-dihydrocitronellol ... 1.637907 0.000000 \n", "\n", " 248 249 \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 0.245207 0.000000 \n", "(S)-(+)-2-methylbutanal 1.189604 1.203395 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 0.685428 0.290208 \n", "(1R,3S,4S)-(+)-neomenthol 0.204114 1.303833 \n", "(3S)-(-)-dihydrocitronellol 0.000000 0.000000 \n", "\n", " 250 251 \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 0.000000 0.000000 \n", "(S)-(+)-2-methylbutanal 2.965221 0.000000 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 0.000000 0.000000 \n", "(1R,3S,4S)-(+)-neomenthol 2.614392 0.249996 \n", "(3S)-(-)-dihydrocitronellol 0.000000 0.000000 \n", "\n", " 252 253 \\\n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 2.003086 0.000000 \n", "(S)-(+)-2-methylbutanal 0.000000 2.632849 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 0.000000 0.955723 \n", "(1R,3S,4S)-(+)-neomenthol 0.000000 3.942642 \n", "(3S)-(-)-dihydrocitronellol 0.000000 1.083949 \n", "\n", " 254 255 \n", "Molecule Name \n", "(R)-(-)- muscone/(R)--3-methyl cyclopentadecanone 2.417500 0.000000 \n", "(S)-(+)-2-methylbutanal 0.000000 0.000000 \n", " ( 1S,5S)-(-)-\\\\xce\\\\xb1-Pinene 3.763213 0.000000 \n", "(1R,3S,4S)-(+)-neomenthol 1.846398 0.000000 \n", "(3S)-(-)-dihydrocitronellol 1.556027 2.074914 \n", "\n", "[5 rows x 271 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g_model_embeddings.head()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "assert ((g_model_embeddings.iloc[:,15:].var() <= 0).sum() == 0), \"This should be 0 if not, get rid of columns with 0 varience\"" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Model" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Illustrate the magnitude differences across enantiomeric pairs in the dataset\n", "model_helpers.fold_difference_of_enantiomers(half_enantiomer_data)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "x_gme = g_model_embeddings.iloc[:,15:]\n", "y_gme = g_model_embeddings[\"log_abs\"]\n", "Xn_gme = pd.DataFrame(StandardScaler().fit_transform(x_gme), index=x_gme.index, columns=x_gme.columns)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 13/13 [00:02<00:00, 4.60it/s]\n" ] }, { "data": { "image/png": "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TU0NlpaWSExMLNY+1dXVP/s/YUn0UV4w14qpsuRaWfIEmKsylOuLnJo3bw4NDQ2EhoZK227evAlra2uoqcmmVqdOHURHR8u0xcbGokGDBqoIlYiIKplyXWB1dXXh7u4OPz8/3LlzB+fOnUNwcDC8vb0B5I5mMzIyAABffPEF9u3bh8OHDyMuLg4rV65EYmIiBg4cWJopEBFRBVWuDxEDgK+vL/z8/DBixAjo6+tj0qRJ6NWrFwDAyckJS5YsgYeHB1xcXPD+/Xts2LABz549Q/PmzbF9+/ZiXeBERERUVOW+wOrq6mLZsmVYtmyZ3LLIyEiZx0OGDMGQIUNUFRoREVVi5foQMRERUVnFAktERKQELLBERERKwAJLRESkBCywRERESsACS0REpAQssERERErAAktERKQELLBERERKwAJLRESkBCywRERESsACS0REpAQssERERErAAktERKQELLBERERKwAJLRESkBCywRERESsACS0REpAQssERERErAAktERKQELLBERERKwAJLRESkBCywRERESsACS0REpAQssERERErAAktERKQELLBERERKwAJLRESkBCywRERESsACS0REpAQssERERErAAktERKQELLBERERKwAJLRESkBCywRERESsACS0REpAQssERERErAAktERKQEGqre4aNHj3D58mXcvXsXr1+/hkgkQu3atdGiRQt07twZxsbGqg6JiIioxKlsBPvPP/9g5MiRcHNzw4kTJ6CpqQkLCws0bdoUEokEBw4cQJ8+fTBq1ChcvXpVVWEREREphUpGsNOnT8fz588xdOhQrFmzBvr6+vmul5aWhtOnT+PHH3+EsbEx/vvf/6oiPCIiohKnkgLr4eGBDh06fHI9PT09DBw4EAMHDsTly5dVEBkREZFyqOQQcVGK68ecnJyUEAkREZFqqGQE6+vrW+R1lyxZosRIiIiIVEPlX9NJT0/HoUOHEBUVBV1dXVSrVg2PHz/Gb7/9BjU1fmuIiIgqBpWMYD8clU6dOhU+Pj7w8fGRWWfz5s34+++/VREOERGR0ql8yHjx4kW4urrKtXfv3h03btxQdThERERKofICa2ZmhgMHDsi0CYKAXbt2wcLCQtXhEBERKYXK7+Q0Z84cTJgwAWfOnJEW1Lt37yIjIwObN29WdThERERKofIC6+joiDNnzuDkyZOIjo4GAIwZMwb9+vVDtWrVVB0OERGRUqi8wAKAgYEBBgwYgPj4eDRp0gTZ2dkF3t2JiIioPFL5OdjMzEzMmTMHbdq0weDBg/HixQvMmjULo0ePRkpKiqrDISIiUgqVF9gVK1YgOjoahw4dgra2NgBg0qRJePPmDQICAlQdDhERkVKovMCeOXMGc+bMkbli2MLCAv7+/vjzzz9VHQ4REZFSqLzAvn//Hrq6unLtEokEYrFY1eEQEREphcoLrLOzM1atWoXU1FRpW0JCAgICAtClSxdVh0NERKQUKi+w8+fPh5qaGtq0aYP09HQMGjQIvXr1QrVq1TBv3jxVh0NERKQUKv+aTtWqVREUFIT4+HjExMQgJycHZmZmaNKkiapDISIiUhqVF9hRo0ahX79+6NmzJ7p27arq3RMREamEyg8Rt2zZEps2bULHjh0xYcIE/Pbbb3j//r2qwyAiIlIqlRfYadOm4dSpU9i/fz+srKywadMmdOjQAZMnT8apU6dUHQ4REZFSlMqtEoHc775aWFhg5MiR2L17N9avX4+zZ8+iT58+pRUSERFRiSmVAvv69WucP38eZ86cwdWrV9G0aVNMmDAB/fr1K41wiIiISpzKC6yXlxdu3boFU1NTuLi4wNfXF40bN1Z1GEREREql8gJbs2ZNHDhwAJaWlqreNRERkcqo/CKnmzdvIicnp8T6y8zMxOzZs+Ho6AgnJycEBwcXuG5kZCSGDh0KGxsbuLm54erVqyUWBxER0YdUXmANDQ3x6tWrEutv+fLlCA8Px/bt27FgwQKsWbMm36uR3717h1GjRqFp06Y4evQoevbsCR8fnxKNhYiIKI/KDxG3aNECX3/9NaytrWFsbAwtLS2Z5UuWLClyX2lpaQgJCcGmTZtgZWUFKysrPHz4ELt27ZK7GvnQoUPQ09ODn58f1NXVMXnyZPzxxx8IDw/nPZCJiKjElcpVxP379y+RfiIiIpCTkwN7e3tpm4ODA9avXw+JRAI1tf8N0K9fv47u3btDXV1d2nbgwIESiYOIiOhjKi+wxRmhfkpSUhJq1qwpMwo2NDREZmYmkpOTYWBgIG1PSEiAjY0N5s2bhwsXLsDY2BgzZ86Eg4NDsfb5OVPq5W1bGablY64VU2XJtbLkCTBXRfsoilIZwd68eRPbt29HXFwc1q9fj6NHj8LY2LjY34NNT0+XO8Sc9zgrK0umPS0tDRs3boS3tzc2bdqE48ePY/To0Th58iTq1atX5H2GhYUVK0Zl9VFeMNeKqbLkWlnyBJirMqi8wJ45cwa+vr744osvcPHiReTk5EBDQwOzZs1CSkoKhg0bVuS+tLW15Qpp3mMdHR2ZdnV1dTRv3hyTJ08GkHsu+K+//sKRI0cwYcKEIu/T2tpa5jBzcYjFYoSFhX1WH+UFc62YKkuulSVPgLkq2kdRqLzArlmzBn5+fnBzc8OePXsA5M6wU7t2baxevbpYBdbIyAhv3ryRFmkg97Cxjo4OqlWrJrNu7dq15W5o0ahRIzx9+rRY8aurq3/2f8KS6KO8YK4VU2XJtbLkCTBXZVD513Ti4uJgZ2cn125jY4Pnz58Xq6/mzZtDQ0MDoaGh0rabN2/C2tpa5gInALCzs0NkZKRMW0xMDIyNjYu1TyIioqJQeYFt2rQpLl26JNd+6NAhNG3atFh96erqwt3dHX5+frhz5w7OnTuH4OBgeHt7A8gdzWZkZAAAPD09ERkZiaCgIMTFxeGnn35CQkICBgwY8PlJERERfUTlh4h9fX0xYcIEXL16FdnZ2Vi/fj3i4uIQHh6OdevWKdSfn58fRowYAX19fUyaNAm9evUCADg5OWHJkiXw8PCAsbExNm/ejMDAQGzcuBFNmjTBxo0bYWRkVNIpEhERqb7AOjo64uTJk/j1118BAMnJybCzs8Py5ctRv379Yvenq6uLZcuWYdmyZXLLPj4k7ODggIMHDyoWOBERUTEoXGBTU1MRFRWFnJwcCIIgs6x169aFblu7dm1MmTIFAJCRkYEHDx6gatWqioZCRERU5ihUYI8cOQI/Pz+kp6fLLROJRLh//36B20ZFRWH27NmYNWsWmjZtiv/85z+IjY2Frq4u1q1bh3bt2ikSEhERUZmiUIFdtWoVhgwZgsmTJ0NfX79Y2y5cuBAmJiZo1KgR9u/fj3fv3uHy5cs4cOAAli1bhkOHDikSEhERUZmi0FXEycnJ8Pb2LnZxBYA7d+5g6tSpMDAwwLlz59CzZ08YGhrC1dUVMTExioRDRERU5ihUYLt164YzZ84otMOqVavi5cuXePr0KUJDQ9G1a1cAwP3791GrVi2F+iQiIiprFDpEbGRkhFWrVuHkyZMwNTWFpqamzPLCbujv4eGBiRMnQktLCw0aNICTkxN2796N5cuXSy98IiIiKu8UKrApKSlwdXVVaIfTpk2DtbU1njx5AldXV6irq6N+/fr44Ycf0K1bN4X6JCIiKmsUKrCfO+Vcz549kZaWhvj4eKSkpKBdu3bQ1tb+rD6JiIjKEoW/B3vu3Dls3rwZMTExEIvFMDMzw5dffgl3d/dCt3v37h0WL16Mo0ePIicnB0DuFHOenp6YPn263PRzRERE5ZFCBXbPnj1YtmwZvvzyS4wbNw4SiQS3bt3CwoULkZ2djSFDhhS47bx58xAbG4utW7eiRYsWEAQBt2/fRmBgINLT0+Hv769wMkRERGWFQgV28+bNWLBggcxotUePHmjWrBnWr19faIG9ePEifv31V7Ro0ULa1rFjRyxevBijRo1igSUiogpBoa/pvHr1Kt8p5+zt7T85v6qRkRFev34t156eno4aNWooEg4REVGZo9AItnnz5jh8+DCmTp0q017QlHP//POP9Hc3NzfMnDkTPj4+0lnlIyMj8eOPP2LkyJGKhENERFTmKFRgv//+e4wcORLXrl2Dra0tACA0NBQRERFYv3693PpeXl5ybQsXLpRrW7ZsGYssERFVCAoVWHt7exw8eBD79u1DdHQ0tLW10bp1a6xatQr16tWTWz8iIuKzAyUiIipPFP6aTpMmTeDr66vQthkZGfjtt98QHR0NsViMxo0bw8XFhedgiYiowihygfX29saaNWtQrVo1eHl5QSQSFbjujh07Clz24MEDjBkzBurq6mjZsiXEYjHOnj2LoKAg7Ny5M99zuEREROVNkQtsmzZtpPccbtu2rcI7DAwMRMeOHeHv7w8Njdzd5+TkYO7cuVi8eDGCg4MV7puIiKisKHKB9fHxkf7eoEEDuLi4yN11KS0tDfv37y+0n9DQUCxYsEBaXAFAQ0MDY8eOxeDBg4saDhERUZlW5AL7+vVrZGRkAAB8fX3RrFkz1KxZU2adiIgIrFy5Et7e3gX2U7t2bcTHx6Nx48Yy7fHx8ahSpUpxYiciIiqzilxgr1+/jqlTp0rPvX482hQEAQDQv3//Qvvx9PTE3LlzMWXKFNjY2AAAbt++jdWrVxd6BygiIqLypMgFtk+fPrhw4QIkEgl69OiBkJAQGBgYSJeLRCLo6urKjWo/Nnr0aKSnp2PlypVISUkBABgaGmLkyJEYNWqUgmkQERGVLcX6mk79+vUBFP691uzsbLkJ2D8kEokwadIkTJo0Ca9evYK2tjb09fWLEwYREVGZp9D3YF++fIkNGzYgKioKYrEYQO4h4uzsbERHR8vcGrEwtWrVUmT3REREZZ5CN/ufPXs2Ll26BGtra9y6dQu2trYwMDDAnTt3MGnSpJKOkYiIqNxRaAT7zz//IDg4GPb29vjrr7/QtWtXODg4YOPGjfjzzz8LvYqYiIioMlBoBCsIAoyMjAAATZs2xb179wAAffv2RVhYWMlFR0REVE4pVGBbtGiBI0eOAMiduu6vv/4CADx+/PiT26ampmLlypWIiYmBRCLBjBkzYGdnh2HDhuHJkyeKhENERFTmKFRgv/vuOwQHB2Pbtm0YMGAAwsPD4ebmBh8fH7i4uBS67cKFC/HHH39AJBLh6NGjOHPmDBYvXgxDQ8N8p7AjIiIqjxQ6B+vg4IDff/8dGRkZqFmzJg4cOIBz586hRo0a6Nu3b6Hb/vHHH9ixYwfMzMywYsUKdOvWDS4uLmjRogUGDhyoUBJERERljcLT1enr60u/v2pkZIThw4cXaTtBEKCpqYmMjAz8/fffWLBgAQAgJSUFenp6ioZDRERUphS5wFpaWhY6Rd2H7t+/X+Cydu3aYd68edDT04Oamhp69OiBv//+G/7+/nB2di5qOERERGVakQtsYXO8FsfixYvx008/ITExET///DP09fURGRmJLl26YOrUqSWyDyIiotJWrPlgP5aamor4+Hg0bdoUWVlZRbrl4cOHDzF37lyZtpEjRxY1DCIionJBoauIs7KyMHfuXLRp0waDBw/G8+fPMWvWLIwePVp6A/+CjBw5Et26dcPy5ctx9+5dhYImIiIq6xQqsMuXL0dUVBQOHToEbW1tAMCkSZPw5s0bBAQEFLrt33//je+++w6PHz/Gl19+iV69emHVqlWIjIxUJBQiIqIySaGriM+cOYOff/4ZFhYW0jYLCwv4+/t/csq5KlWqwNXVFa6ursjIyMCff/6Jc+fOYdiwYahXrx6OHTumSEhERERlikIj2Pfv30NXV1euXSKRSGfXKYoHDx7g9u3buHv3LtTU1GBtba1IOERERGWOQiNYZ2dnrFq1CsuWLZO2JSQkICAgAF26dCl02+vXr+PMmTM4d+4cUlJS0K1bN3z77bfo3LkztLS0FAmHiIiozFGowM6fPx+zZ89GmzZtIJFIMGjQILx79w5OTk6YN29eoduOGTMGnTt3xowZM9CtW7d8R8JERETlnUIF9s2bNwgKCkJCQgKio6ORk5MDMzMzNGnS5JPbXrlypUhf5yEiIirPFCqwQ4cOxYYNG9CyZUuYmJgUa1sWVyIiqgwUusjJ0NAQr169KulYiIiIKgyFRrAtWrTA119/DWtraxgbG8tdnLRkyZISCY6IiKi8Ung2nf79+5dkHERERBWKQgW2SZMmcHV1Rd26dYu0vpeXV5Fn4impSQWIiIhKk0LnYNevX4/s7Owir9+2bVu0adMGbdq0QbNmzXDr1i0YGBigS5cu6NGjB4yNjXH79m20bNlSkXCIiIjKHIVGsK6urli3bh3GjRuH+vXrf/IGET4+PtLfR44cidmzZ2PYsGEy67Ru3Rp79+5VJBwiIqIyR6EC++effyIxMRGHDh3Kd3lhE66HhoZiwYIFcu22trZYtGiRIuEQERGVOQoV2KVLlyq8wxYtWmDjxo3w8/OTzsSTmpqK1atXw87OTuF+iYiIyhKFCmze5OuPHj1CdHQ0JBIJzMzM0LRp009u6+/vj3HjxqFjx44wNTWFIAh49OgR6tevjw0bNigSDhERUZmjUIF9+/YtfH19cf78eVSvXh1isRjv379H69at8fPPP6Nq1aoFbtukSROcPHkSV65cQXR0NACgWbNm6NChAzQ0FP7WEBERUZmi0FXEAQEBePbsGU6cOIFr167hxo0bOHr0KNLS0op0kwktLS0YGxujYcOG8PT0hJmZGdTV1RUJhYiIqExSaMh44cIFbN26FY0bN5a2NW3aFPPnz8fYsWML3TYlJQVTpkzB9evXAQCnT59GYGAgEhISsHHjRhgbGysSEhERUZmi0AhWW1sbamrym4pEok9OuB4QEABdXV1cvXpVepFTYGAg6tati4CAAEXCISIiKnMUKrDOzs5YuHAh4uPjpW2PHj0q0oTrly5dwrRp01CtWjVpW61ateDr64t//vlHkXCIiIjKHIUOEX///ff45ptv0Lt3b2mhTElJQefOnT854ToAZGZmyrW9fv2aFzkREVGFUeyKFhcXh/r162Pnzp2IjIxEdHQ0tLW10ahRoyJNuO7q6orAwEAsWrQIIpEIaWlpuHr1KhYsWAAXFxeFkiAiIiprinyIWBAEBAQEoG/fvvj3338BABYWFnBxccGBAwfg6uqKpUuXQhCEQvuZMWMGbG1t4eHhgbS0NLi7u2PMmDFo3749ZsyY8XnZEBERlRFFHsHu2LEDJ06cwM8//yy90USetWvX4sKFC/D19UXDhg3l7jP8IS0tLcyaNQtTp05FQkICxGIxTExMUKVKFbx+/Ro6OjqKZ0NERFRGFHkEu2/fPsybNw/dunXLd7mzszOmT5+O3bt3F9pP8+bNpYW0WbNmsLS0RJUqVfDkyRN07969eNETERGVUUUewT558gQ2NjaFrtOuXTsEBgbKtR8+fBgHDx4EkHuo+ZtvvoGmpqbMOi9evEDt2rWLGg4REVGZVuQCW6tWLTx58qTQG0E8e/YMNWrUkGvv2bMnHj9+DAC4fv067OzsUKVKFZl19PT00LNnz6KGQ0REVKYVucD27NkTQUFBCA4Olht9AkBOTg7WrFkDJycnuWVVqlSRzglrbGyMfv36AYB0HtnExETUr19foQSIiIjKoiKfg/3666/x/PlzeHh4YN++fbh37x4SEhIQHh6OvXv3YuDAgUhISMCkSZMK7ad169YYNmwYfvrpJ2nboEGD8J///AfPnj1TPBMiIqIypMgFtlq1ati3bx9sbW2xdOlSDBo0CL169cLgwYOxcuVKtGrVCvv27YORkVGh/fj5+cHY2BijRo2Stp04cQJGRkZYuHBhsRPIzMzE7Nmz4ejoCCcnJwQHB39ym8ePH8Pe3h7Xrl0r9v6IiIiKolg3mqhRowYCAgIwf/58JCQk4O3bt6hRowYaNmxY5Nlwbt68iSNHjqBWrVrStpo1a+Lbb7/FoEGDihc9gOXLlyM8PBzbt29HYmIiZs6cifr166NPnz4FbuPn54e0tLRi74uIiKioFLo3oZaWVpHu2pSfmjVr4t69e2jYsKFMe0xMDPT19YvVV1paGkJCQrBp0yZYWVnBysoKDx8+xK5duwossL/99hvev3+vUOxERERFpfKb/3p5eWHevHmIjo6GlZUVACAiIgLbtm2TOWxcFBEREcjJyYG9vb20zcHBAevXr4dEIpGb8efNmzdYsWIFgoOD4erq+vnJEBERFUDlBfarr76Crq4u9u3bh82bN0NDQwOmpqbw9fXFgAEDitVXUlISatasKb0aGQAMDQ2RmZmJ5ORkGBgYyKy/dOlSDBw4EM2aNVM4/k9Nx1eUbT+nj/KCuVZMlSXXypInwFwV7aMoSmX6Gk9PT3h6en52P+np6TLFFfjfV3+ysrJk2q9cuYKbN2/i2LFjn7XPsLCwz9q+pPooL5hrxVRZcq0seQLMVRlUUmDXrFmD0aNHQ1dXF2vWrCl03bzvyxaFtra2XCHNe/zhPY0zMjIwf/58LFiw4LPvdWxtbV3kC7o+JhaLERYW9ll9lBfMtWKqLLlWljwB5qpoH0WhkgJ77do1eHt7Q1dXt9CvxohEomL1a2RkhDdv3iAnJ0c6l2xSUhJ0dHRkJnS/c+cOEhISMHnyZJntx44dC3d3dyxatKjI+1RXV//s/4Ql0Ud5wVwrpsqSa2XJE2CuyqCSArtz5858f/9czZs3h4aGBkJDQ+Ho6Agg92tA1tbWMhc42djY4MyZMzLb9urVCwEBAejYsWOJxUNERJRHJQX28OHDRV7X3d29yOvq6urC3d0dfn5+WLx4MV68eIHg4GAsWbIEQO5otmrVqtDR0YGpqanc9kZGRjLfxyUiIiopKimwq1evlnn89OlTaGlpwcTEBJqamoiLi0NmZiYsLS2LVWABwNfXF35+fhgxYgT09fUxadIk9OrVCwDg5OSEJUuWwMPDo6RSISIiKhKVFNgLFy5If1+3bh3CwsKwePFi6cw7qampmD9/PgwNDYvdt66uLpYtW4Zly5bJLYuMjCxwu8KWERERfa4i34u4pGzZsgXfffedzLR2+vr68PHxwf79+1UdDhERkVKovMBWrVoV9+7dk2u/efOm3I0hiIiIyiuV32hi/PjxmDNnDq5du4bmzZtDEASEhYXh5MmT0ouTiIiIyjuVF1hPT08YGxtj//792L17NwCgWbNmCA4Oln7VhoiIqLwrlVsldurUCZ06dSqNXRMREamEys/BArlTxnl4eMDR0REJCQlYvHgxNm7cWBqhEBERKYXKC+yvv/6K5cuXw8PDA9nZ2QAAKysrbNmy5ZP3KSYiIiovVF5gd+7ciYCAAHz55ZfS2xkOGDAAy5cvR0hIiKrDISIiUgqVF9jExEQ0adJErt3ExATJycmqDoeIiEgpVF5gbW1t5e5NLAgCgoODYWNjo+pwiIiIlELlVxHPnTsX48aNw8WLF5GVlYWFCxfi0aNHyMjIwKZNm1QdDhERkVKovMCam5vj9OnTOHr0KKKjoyEWi9G9e3f0798fVapUUXU4RERESqHyAuvh4YElS5Zg8ODBqt41ERGRyqj8HOyLFy9UMpM8ERFRaVL5CNbd3R1jxoxB//79YWxsDG1tbbnlRERE5Z3KC+yJEyegpqaGY8eOyS0TiUQssEREVCGovMB+OPk6ERFRRVUqN/uPjo7GgQMHEBMTA5FIBEtLSwwePBjGxsalEQ4REVGJU/lFThcuXMCAAQMQFhYGMzMzmJiY4Nq1a+jXrx/++ecfVYdDRESkFCofwa5YsQJTpkzB2LFjZdrXrVuHwMBAubs8ERERlUcqH8E+ffoU3bt3l2vv06cPYmNjVR0OERGRUqi8wPbt2xebN2+WTlWXJyQkBC4uLqoOh4iISClUfog4MzMTZ86cwZ9//omWLVtCU1MTkZGRSEhIgK2tLby9vaXr7tixQ9XhERERlQiVF9jGjRtjwoQJMm0WFhaqDoOIiEipVFJgxWKx9PaIPj4+RdomJydHmSEREREplUrOwQ4ZMgSHDx+WO++an8zMTISEhGDIkCEqiIyIiEg5VDKC3bx5M1asWIElS5bAyckJHTp0QJMmTVCzZk2IxWIkJycjMjISN2/exJ9//okuXbpg48aNqgiNiIhIKVRSYA0MDLBkyRI8fvwY+/btwy+//ILIyEhIJBIAgLq6OiwsLNCpUyccOHAAJiYmqgiLiIhIaVR6kVODBg0wbdo0TJs2DWKxGCkpKQCAmjVrQiQSqTIUIiIipSqVexEDuaNWAwOD0to9ERGRUqn8RhNERESVAQssERGRErDAEhERKQELLBERkRKwwBIRESkBCywREZESsMASEREpAQssERGRErDAEhERKQELLBERkRKwwBIRESkBCywREZESsMASEREpAQssERGRErDAEhERKQELLBERkRKwwBIRESkBCywREZESsMASEREpAQssERGRErDAEhERKQELLBERkRKwwBIRESkBCywREZESsMASEREpAQssERGRErDAEhERKQELLBERkRKwwBIRESkBCywREZESsMASEREpAQssERGRErDAEhERKQELLBERkRKwwBIRESlBuS6wmZmZmD17NhwdHeHk5ITg4OAC17148SIGDBgAe3t7uLm54fz58yqMlIiIKptyXWCXL1+O8PBwbN++HQsWLMCaNWtw6tQpufUiIiLg4+ODQYMG4fDhw/D09MSUKVMQERFRClETEVFloFHaASgqLS0NISEh2LRpE6ysrGBlZYWHDx9i165d6NOnj8y6x44d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WFtbo23btti+fXuh6xOVVyywSiIIAtKy0+R+0nPS820viZ/iTu179+5dCIIAa2vrfJc7ODggIiJC+oFakKCgINStWxezZ8/GnDlz5JZnZWVhxIgRSE9Px86dO/Hjjz/i4sWLWL58OQBg//790u3379+f7z7u3buH5cuXY8GCBTh58iQcHR0xdepUSCQSvHv3DuPHj0fHjh1x7NgxbNmyBfHx8di4caN0+40bN2Lt2rXw9/fHzp074ePjg++++w5btmxBaGio3H7XrFmDVatWYc2aNThz5gyCgoLkYhIEAT4+PqhVqxZ+/fVXLFmyBEePHsX69esLfK4+1e+tW7dw4MABeHt7y/R/6NAhmf6zsrIwbtw4mJiY4ODBg+jduzf27t2b7z4zMzMxatQoVKlSBfv27cP8+fOxatUq/P7774W+dvm9bn/88Qd++uknmfXWr1+PH374Ab/88gvCwsKwdevWAvP/448/4OPjg2HDhuG3336Dp6cnlixZwnO+VCHxELESCIIA75PeCE0KVel+7evYY3uf7UWeCDslJQUAUK1atXyX57XnrVeQGjVqQF1dHVWrVkXVqlXlll+6dAnPnz/Hvn37UL16dQDA/PnzMXHiRHz77bcwMDCQbm9gYJDvPp48eQKRSIT69eujQYMGmDp1Krp16waJRIKMjAx8/fXX+OqrryASiWBiYoJevXrhzp070u2//vprWFpawtLSEosXL0a/fv3QsWNHAED79u0RExMjs7/vv/8ejo6OAIApU6Zg5cqVmDp1qsw6V69eRWJiIvbt24eMjAzo6elh5syZ8PX1xTfffJNvHp/qd8SIEWjYsCEA4O+//0ZiYiJCQkKgpqaGxo0bS/u3srJCcnIy/Pz8oKenhyZNmuD69et4/fq13D4vX76M169fY/HixdDX10ezZs0wd+5cqKmpyb12H77Whb1u06dPl643efJk2NjYAADc3NwQFhaWb+6ZmZmYP38+5syZAzc3N+m2O3bswI0bN9CgQYN8tyMqr1hglaSoRa405X1ovnz5EnXr1pVb/uLFC5n1imr9+vXYsGEDBEGASCTC6NGj0ahRI5l+WrVqhZycHMTHx6N58+b5bp9n06ZNcHJygrm5Odzc3NCiRQt0794dQ4YMgYaGBmrXrg13d3ds27YN9+/fR1RUFCIjI9GqVStpHyYmJtLfdXR0ZM716ujoyI3SP9y2ZcuWeP36tcwhWACIjo5GcnIyHB0dpbnmFfw3b96gZs2acs/Np/r9MK68/h0cHKRtef0/ePAAjRo1gp6ennSZtbU1/vjjD7l9xsbGwszMDPr6+tK2QYMGya33sejoaLnXzd7eXvq65f0BZmpqKl2ur6+P7OzsfPu7evUqMjIy4OLiIm1TV1eHSCSClpbWJ+MhKm9YYJVAJBJhe5/tSM9Jl2kXBAHp6enQ1dVVSgHW1Shev9bW1lBXV0d4eHi+BTY8PBwWFhbQ1taWW1bYV3g8PT3Rp08faa75fejnnUfM73ylp6cn+vbtK31sZGQEHR0dhISE4Pr16/j9999x8OBB7N69GwcPHgSQWzCsrKzQoUMHfPHFF7h48SJu374t7ePjc8xqaoWfHdHU1JT+nncl9cfPbU5ODho3boyff/5Z7nXNbyRflH4/fK7z+l+7dq1cP2fPnpU7JfBh3x/S0FDsbZ7f657f61bQfj929epVNG/eXOa1iIuLw/v37+X+yCKqCFhglUQkEkFPU0+mTRAEIBvQ09QrEyNcAwMD9OjRA2vXrkW3bt1kPviePn2K/fv3Y8aMGdIP0Pfv30uXF3bOrEaNGqhevTrS0tKgp6cHMzMzPHr0CMnJyahRowYAIDQ0FBoaGtLDoR9vn7denn///RdXr17FxIkT0a5dO3z33Xfo0KEDbt68idevX6N69eoyo96dO3cW+5z0h+7fv482bdoAyP1Do06dOqhZs6bMc2BmZobExETpIW49PT1cuXIFBw8elJ5fVqTf/PrPK9h//fUXDh48CDc3Nzx69Ajv3r2TLrt//36++2zUqBHi4uKkfwQAwLJly5CdnY25c+cW+Bx86nV79+5dYU9hvrl/PLr99ddfYWVlBTMzs2L1RVQe8CKnSm7OnDlISUnB2LFjcePGDSQmJuLs2bPw9vZGmzZtMGzYMBgaGqJevXrYsmULEhIScPDgQVy8eFGmHz09PcTExOR7BWnHjh1hYmKCGTNmIDIyElevXoW/vz9cXV0LPP/7MR0dHfz8888ICQnB48ePcfz4caSlpcHCwgI1atRAYmIi/v77byQkJGDjxo04c+bMJy/OKkxgYCDCwsJw5coV/PTTT/l+VcnJyQnGxsb4/vvv8fDhQ9y4cQPz5s2Drq6u3Ii5OP3m139kZKRM/x07dkS9evUwZ84cREdH4+DBgzhx4kSB/RgaGmL+/PmIjo7G+fPnsWfPHjg5OQEo+LXL73ULCAhAnz59ivy6fej+/ft4+PAhDh8+jJiYGKxduxa7d+9GQEBAsfsiKg84gq3kjIyMsG/fPqxduxbTp0/H69evYWJiAk9PT4wYMUJ6KDUwMBD+/v5wcXFB+/btMWHCBPz555/SfoYOHYqVK1fi0aNHWLNmjcw+1NXVpVfwfvHFF6hSpQrc3Nwwbdq0IsfZvHlzBAYGYu3atVi0aBHq16+PFStWoEmTJmjUqBH++ecfTJ48GSKRCNbW1pg5cyaCgoIULrIuLi4YP348JBIJhg4dinHjxsmto66ujnXr1sHf3x8jRoyAnp4e+vTpg5kzZ35Wv/n1/8UXX8j0r6mpiQ0bNmDu3LkYOHAgLCwsMHz4cISHh8v1o6GhIX3eBg4cCENDQ8yYMQNdu3YFIPvaffg1q/xeN1dXV0yYMKEYz2SuxMREJCcnY8OGDfjvf/+L2NhYWFhYYPPmzWjRokWx+yMqFwQqkpycHOHGjRtCTk6O3LL09HTh3r17Qnp6eqF9SCQSITU1VZBIJMoKs8wor7kmJCQI5ubmQkJCQpG3KUquivRbFin6up47d05o06aNQvss6vurJBX2fq9omKvy+uAhYiJSuvv378Pc3Ly0wyBSKRZYIlK6e/fuwcLCorTDIFIpnoMl+kCDBg0QGRlZbvotL/L7qhFRRccRLBERkRKwwBIRESkBCywREZESsMASEREpAQtsCcq7tywRlRy+r6i84lXEJUBLSwtqampITExE7dq1oaWlle+9hgVBQGZmJtTU1MrEvYiViblWTKrMVRAEZGVlISkpCWpqapxxh8odFtgSoKamBjMzMzx9+hSJiYkFricIArKzs6GpqVkpPoiZa8VTGrnq6emhYcOGn5wBiaisYYEtIVpaWmjYsCFycnLynYINyJ3iKyIiAk2bNi3wZvAVBXOtmFSdq7q6OjQ0NCr8Hy5UMZXrApuZmYmFCxfizJkz0NHRwahRozBq1Kh817137x4WLFiABw8eoGnTpli4cCFatmxZovGIRCJoamoWOD9mXuHV0dGpFB/EAHOtaCpTrkSfq1wfc1m+fDnCw8Oxfft2LFiwAGvWrMGpU6fk1ktLS8O4cePg6OiIgwcPwt7eHuPHj0daWlopRE1ERJVBuS2waWlpCAkJwZw5c2BlZYWePXtizJgx2LVrl9y6J06cgLa2NmbMmIEmTZpgzpw5qFKlSr7FmIiIqCSU2wIbERGBnJwc2NvbS9scHBxw+/Ztucv6b9++DQcHB+l5HJFIhFatWiE0NFSVIRMRUSVSbs/BJiUloWbNmjKX7hsaGiIzMxPJyckwMDCQWbdp06Yy29eqVQsPHz4s8v4EQQAAZGVlKXzuKe/81ef0UV4w14qpsuRaWfIEmKuifeTVhMKU2wKbnp4u9724vMdZWVlFWvfj9QqTNyq+d++eIuHKKIk+ygvmWjFVllwrS54Acy2uotwApdwWWG1tbbkCmfdYR0enSOt+vF5hNDQ0YG1tXSluJkBERPkTBAESiQQaGp8un+W2wBoZGeHNmzfIycmRJpqUlAQdHR1Uq1ZNbt2XL1/KtL18+RJ16tQp8v54JxkiIiqOcnuRU/PmzaGhoSFzodLNmzelo8wP2dra4t9//5UeMxcEAbdu3YKtra0qQyYiokqk3BZYXV1duLu7w8/PD3fu3MG5c+cQHBwMb29vALmj2YyMDABAnz598PbtWwQGBiIqKgqBgYFIT09H3759SzMFIiKqwERCUS6FKqPS09Ph5+eHM2fOQF9fH6NHj8bIkSMBABYWFliyZAk8PDwAAHfu3MGCBQsQHR0NCwsLLFy4EC1atCjF6ImIqCIr1wWWiIiorCq3h4iJiIjKMhZYIiIiJWCBJSIiUgIWWCIiIiUotzeaqKiys7Mxc+ZMPHv2DLq6ulixYoXMfZUrkszMTMyYMQOvXr1CVlYWZs+eDTs7u9IOS6nOnTuH8+fPY8mSJaUdSomRSCSYM2cOYmNjUaVKFSxfvhy1atUq7bCUriK+lh+qLO9PZX7mcgRbxpw4cQJGRkb49ddf0a9fP2zatKm0Q1Ka/fv3o3Hjxvjll1+wdOnSCvtBlWfZsmVYuXJlkW4SXp6cPXsWOjo62LNnDwYNGoQNGzaUdkhKV1Ffyw9VlvenMj9zOYItYwYMGIB+/foBAJ49e4bq1auXckTKM2DAAOl9ncViMTQ1NUs5IuWysbFBly5dcPjw4dIOpUTdunULHTt2BAB06tQJGzduLOWIlK+ivpYfqizvT2V+5rLAlpK9e/di586dMm1btmyBkZERNDQ0MG7cOISFhWHr1q2lFGHJKSxXAHj9+jVmzJiBGTNmlEZ4JaqwXPv27Ytr166VUmTKk5qaCn19fQBAlSpV8P79+1KOSPkq6mv5obzXtCK9PwuitM9cgcqsR48eCb169SrtMJQqJiZGcHV1Fc6fP1/aoajE1atXhZkzZ5Z2GCVq8eLFwrlz5wRBEIS3b98KAwcOLOWIVKMivpYfq2zvz5L+zOU52DJm7969+OWXXwAAenp6chMXVCRPnz7FxIkTERgYCGdn59IOhxRkZ2eHv/76CwDw559/wt7evpQjopJQWd6fyvzMrbif3iqWlZUFV1dXmcNGmZmZmD17NhwdHeHk5ITg4OBP9tO3b19cvnwZX375JaZMmQJ/f39lhq2Qksp17dq1SEtLw4oVK+Dl5YXJkycrM2yFlFSu5Ulxc+7VqxfS09Ph6emJPXv2YMKECaURtsIqy2tc3DzLw/szP8XNU6mfuSU2Fq7EMjIyhG+++UYwNzcXrl69Km1ftGiR4ObmJoSHhwtnzpwR7O3thZMnT5ZipJ+PuVbMXPNUtpwrS77Ms3Ty5EVOnykqKgrfffed3OX6aWlpCAkJwaZNm2BlZQUrKys8fPgQu3btQp8+fUop2s/DXCtmrnkqW86VJV/mWXp58hDxZ7p+/Tratm2LvXv3yrRHREQgJydH5nyUg4MDbt++DYlEouowSwRzrZi55qlsOVeWfJln6eXJEexnGjZsWL7tSUlJqFmzJrS0tKRthoaGyMzMRHJycrm8OxNzrZi55qlsOVeWfJln6eXJEaySpKeny7ygAKSPs7KySiMkpWGuFTPXPJUt58qSL/NUfp4ssEqira0t9+LlPdbR0SmNkJSGuVbMXPNUtpwrS77MU/l5ssAqiZGREd68eYOcnBxpW1JSEnR0dFCtWrVSjKzkMdeKmWueypZzZcmXeSo/TxZYJWnevDk0NDQQGhoqbbt58yasra0r3M0jmGvFzDVPZcu5suTLPJWfZ8V5FssYXV1duLu7w8/PD3fu3MG5c+cQHBwMb2/v0g6txDHXiplrnsqWc2XJl3mqIE+lf9O2Evn4y81paWnCjBkzBDs7O8HJyUnYunVr6QVXwphrxcw1T2XLubLkyzxVm6dIECrwhIZERESlhIeIiYiIlIAFloiISAlYYImIiJSABZaIiEgJWGCJiIiUgAWWiIhICVhgiYiIlIAFloiISAlYYIkApKSkYOnSpXB2doatrS369u2Lbdu2fXJC5levXsHDwwPZ2dkAgLi4OEyaNAmtW7eGra0tBg0ahGPHjgEABEFA165dsWrVqnz7WrduHVxcXAAAXl5esLCwkPlp1aoVvL298eDBgwLjsbCwwLVr1xR5CugDf//9N6KjoxXe3svLC1FRUSUYEZVHLLBU6b158wZDhgxBeHg4AgMDcezYMUyaNAkbNmxAYGBgoduuWLECw4cPh6amJtLT0+Ht7Y1atWph165d+O233+Dh4YGZM2fi9OnTEIlEcHFxwZkzZ/Lt6+TJk3B1dZU+HjVqFC5fvozLly/j0qVL2LRpE1JTU+Hj4/PJwk+fZ+TIkXj58qXC23/zzTdYuHBhCUZE5RELLFV6//3vf6GlpYUtW7agffv2MDExgYuLCwIDA7Fr1y7Exsbmu93jx49x/vx5uLm5AQCuXLmCtLQ0+Pn5wdzcHKamphg+fDjc3d2xb98+AICrqytiYmLkRjcxMTGIjIyU9gUAenp6qF27NmrXro06derAwcEBc+bMQVxcXKGjWCp97dq1w8uXL3Hjxo3SDoVKEQssVWpZWVk4fvw4hg8fDm1tbZll3bp1w7Zt22BsbJzvtnv37oWTkxO0tLQAAGpqanj//r3MtFgA8N133yEgIAAA0KJFCzRu3FhuFHvy5EnY2trCxMSk0Hjz9qWurl7gOjdu3ICbmxusra3x5Zdf4smTJwCAr776ShpHngkTJuDHH3/EtWvX0LlzZ+zYsQNt27ZFhw4dsG7dOpl19+zZA2dnZ9jb28PLywuRkZHSZc7OzlixYgWcnJzg7u6Oq1evFtpfVlYWlixZgk6dOsHKygrOzs7Yu3dvgf0JgoDz58/D3d0d1tbWcHR0xLRp0/D+/XsAQFBQEGbMmAF/f3/Y29vD2dkZly9fxi+//IIOHTqgXbt22LFjh7T/t2/f4vvvv0erVq3g5OQEf39/ZGRkSPcNAN7e3ggKCpI+px4eHrCxsYGbmxtOnz4t7WvWrFmYNWsW+vfvj/bt2+PRo0fSfnbv3l3Yy0kVnUqmFCAqox4+fCiYm5sLYWFhxd52wIABwr59+6SPMzIyBBcXF8HCwkLw9PQUgoKChNDQULntgoKChAEDBsi0ubq6Ctu3b5c+/vLLL4XVq1fLrPP8+XNh1KhRQr9+/YScnJx8YzI3Nxe6dOkiXL16VYiIiBBcXV2FqVOnCoIgCCEhIUKnTp0EiUQiCIIgvH37VrCyshIePHggXL16VWjRooUwcOBAITw8XDh79qzQqlUrYe/evYIgCML58+eFjh07ChcuXBBiY2OFVatWCW3atBGSk5MFQRCEbt26CZ06dRIiIiKE+/fvf7K/oKAgoVevXsK///4rxMfHCz/99JNgZWUlJCUl5dtfXFycYGVlJezdu1dISEgQLl26JLRt21YIDg4WBEEQVq9eLVhZWQmrVq0S4uLihClTpggODg7C+PHjhaioKGHNmjVCixYthFevXgmCIAg+Pj7C+PHjhYiICOH27dvCkCFDBF9fX0EQBOHVq1eCubm5cPr0aSE1NVV48eKF0KpVK2Hnzp3Co0ePhMOHDwt2dnbCP//8IwiCIMycOVOwtLQUzp8/L9y+fVv6Wvz1119CmzZtpM83VT4ssFSp3bx5UzA3NxcePXpUrO2ys7MFS0tL4ebNmzLtycnJwtKlS4WuXbsK5ubmgrm5ueDu7i7ExsZK13n06JFgbm4uxMfHC4IgCFFRUULz5s2lxUUQcguslZWVYGdnJ9jZ2QnW1taCtbW1MH78eOHx48cFxmVubi7s2bNH+njbtm1Cnz59BEEQhJSUFMHKykq4ceOGIAiCcPDgQcHV1VUQBEG4evWqYG5uLty/f1+67U8//SQMHDhQEARBGDp0qLBjxw6ZfQ0cOFDa1q1bN2HFihXSZZ/q7+zZs9ICJQiCkJmZKZibm0vbPu4vNjZW2L17t8z+v/32W2lRXL16teDk5CQtZhcvXpR5jtPT0wVzc3Ph1q1bQlxcnGBpaSm8fftW2ldERIRM24fTna1atUrw8fGR2feSJUukbTNnzhSGDBkifOzZs2eCubm5kJCQILeMKgeN0h5BE5WmGjVqAMi9irg4UlJSIJFIULNmTZn26tWrY+bMmZg5cyYePHiA8+fPY+vWrZg8eTJ+++03AICpqSlatmyJM2fOYPTo0Th58iTat28PQ0NDmb48PT3h5eWFrKwsbN++HVeuXMG3335b4CHrPA0bNpT+XrVqVWRmZgIAqlWrhs6dO+PUqVNwcHDAyZMnpVctA7nnfC0tLaWPW7ZsieDgYABAdHQ0VqxYgR9++EG6PDMzU3o4FIBcXIX116NHD/z1119YunQpYmJicO/ePQCAWCzOt79GjRpBS0sL69atw8OHD/Hw4UNERUVhwIAB0nUaNGgAkUgEANDR0ZHpI+9xVlYWoqOjIZFI0LlzZ5l4JRIJ4uLi0LJlS5n2mJgY/P7777C3t5e2ZWdnw8zMrMDcAUj/b7x+/RoNGjSQW04VHwssVWoNGzZE1apVcffuXdjY2MgtnzhxIry8vNChQweZ9rwP8g+v5t23bx/09fWlRcvc3Bzm5uawsrLC2LFj8fr1axgYGAAA3NzccOrUKWmBHTNmjNy+q1evDlNTUwCAv78/xo4di/Hjx+Po0aOoWrVqgTmpqRV8aYWrqyuWLVuGSZMm4cqVK5g7d650mYaG7MeBRCKR5ikWizF79my0b99eZh19fX3p7x+fwy6sv1WrViEkJAQeHh5wd3fHggULpOc+8+svIiICQ4cOhbOzMxwdHTFy5Ehs37690P0B+T8XYrEYVatWxYEDB+SWGRkZybXl5OTAzc0NEyZMKHB/H+eely/wv/8rVPnwIieq1DQ0NODi4oJdu3YhKytLZtmFCxdw4cIF1KlTR267GjVqQF1dHW/evJG2PXjwAJs2bZL7Ck21atWgpaUlU4z69u2LsLAw3LhxAwkJCejZs2ehcYpEIixatAgpKSn473//q0iqAHIvvHn79i22bNkCCwsLmdHu27dv8fjxY+njsLAwWFhYAADMzMzw7NkzmJqaSn/Wr18vd0HXhwrrb8+ePZg3bx6mT58OFxcXpKenA8j9rnB+jhw5gtatW+O///0vhg0bBhsbG8TFxRW4fmHMzMzw7t07iEQiaS4ZGRlYvny53P+BvPXj4uJkcj9//jyOHj1a6H7y/m/Url272DFSxcACS5XepEmTkJqaitGjR+P69euIj49HSEgIZs2aBW9vbzRt2lRuGzU1NVhaWspcSevt7Y2EhAT4+Pjg5s2bSEhIwO+//4558+Zh+PDh0iuAgdyRkoODAwICAtC1a1eZ4luQ+vXrY/z48di7dy/u37+vUK46Ojro3r07tm7din79+sktnzdvHh48eIDTp09j586dGD58OIDcK5C3b9+Ow4cPIz4+HitWrMDJkyfRpEmTQvdXUH81atTA77//joSEBNy4cQMzZswAgHwLXN76kZGRuHPnDmJjY7F06VKEhYUVuH5hmjRpgk6dOmH69Om4c+cO7t69C19fX6SlpaFatWoAcg9vP3z4EO/evcOwYcMQHh6OVatW4dGjRzh69Ch++OEH1K9fv9D9REZGwtDQMN9RMVUOPERMlV7t2rWxe/duBAUFYfr06UhOTkbDhg0xefJkDB06tMDtOnXqhFu3bkmLRsOGDbF792789NNP8PHxwbt371C/fn0MHjwYo0ePltve1dUV8+bNwzfffFPkWEeNGoUDBw7A398fv/76a/GTBeDi4oJjx47JnH/N07lzZwwbNgx6enqYNm2a9Hu5Li4uePnyJVavXo2XL1+iadOmWLduHRo1alTovgrqb/HixfDz80O/fv1gZGSEIUOGQF1dHffv35c7Nwrk3hnp3r17GDlyJLS1tdG6dWt88803OH78uELPwfLlyxEQEICRI0dCQ0MDnTp1kjlc7uXlheXLlyM+Ph6zZ8/G+vXrsXLlSmzZsgVGRkbSr+UU5ubNm3BycuIh4kpMJChyjIWIEB8fDw8PD1y6dAm6urqlHU6R7du3D7/99ht++eUXadu1a9fg7e0tMyL/HCXdX3kjCAJ69OiBZcuWwdHRsbTDoVLCQ8RECmrYsCG6dOnyyXNxZUVcXByOHz+OdevWYciQIaUdToX2119/oU6dOiyulRwLLNFnmDlzZr4XSJVFjx8/xpw5c9CqVSuZWzJSyVu3bh38/PxKOwwqZTxETEREpAQcwRIRESkBCywREZESsMASEREpAQssERGRErDAEhERKQELLBERkRKwwBIRESkBCywREZESsMASEREpwf8BZD7uAjYbsvoAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model_helpers.create_model(Xn_gme, y_gme)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "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.3" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "f48e850f9ba95f784ffa8abe9e192013ea9f7c58fba7063fff0218a6f7b5b546" } } }, "nbformat": 4, "nbformat_minor": 2 }