Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C>A</td>\n",
" <td>ACA</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>C>A</td>\n",
" <td>ACC</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2 rows × 9693 columns</p>\n",
"</div>"
],
"text/plain": [
" Mutation type Trinucleotide ALL::TARGET-10-PAIXPH-03A-01D \\\n",
"0 C>A ACA 0 \n",
"1 C>A ACC 0 \n",
"\n",
" ALL::TARGET-10-PAKHZT-03A-01R ALL::TARGET-10-PAKMVD-09A-01D \\\n",
"0 0 0 \n",
"1 0 0 \n",
"\n",
" ALL::TARGET-10-PAKSWW-03A-01D ALL::TARGET-10-PALETF-03A-01D \\\n",
"0 1 0 \n",
"1 1 0 \n",
"\n",
" ALL::TARGET-10-PALLSD-09A-01D ALL::TARGET-10-PAMDKS-03A-01D \\\n",
"0 0 0 \n",
"1 0 0 \n",
"\n",
" ALL::TARGET-10-PAPJIB-04A-01D ... Head-SCC::V-109 Head-SCC::V-112 \\\n",
"0 2 ... 0 0 \n",
"1 0 ... 1 0 \n",
"\n",
" Head-SCC::V-116 Head-SCC::V-119 Head-SCC::V-123 Head-SCC::V-124 \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"\n",
" Head-SCC::V-125 Head-SCC::V-14 Head-SCC::V-29 Head-SCC::V-98 \n",
"0 0 0 0 1 \n",
"1 0 1 0 0 \n",
"\n",
"[2 rows x 9693 columns]"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"other_wes_mut = pd.read_csv(\"./project_data/catalogs/WES/WES_Other.96.csv\")\n",
"other_wes_mut.head(2)"
]
},
{
"cell_type": "code",
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Cancer Types</th>\n",
" <th>Sample Names</th>\n",
" <th>Accuracy</th>\n",
" <th>SBS1</th>\n",
" <th>SBS2</th>\n",
" <th>SBS3</th>\n",
" <th>SBS4</th>\n",
" <th>SBS5</th>\n",
" <th>SBS6</th>\n",
" <th>SBS7a</th>\n",
" <th>...</th>\n",
" <th>SBS51</th>\n",
" <th>SBS52</th>\n",
" <th>SBS53</th>\n",
" <th>SBS54</th>\n",
" <th>SBS55</th>\n",
" <th>SBS56</th>\n",
" <th>SBS57</th>\n",
" <th>SBS58</th>\n",
" <th>SBS59</th>\n",
" <th>SBS60</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>ALL</td>\n",
" <td>TARGET-10-PAIXPH-03A-01D</td>\n",
" <td>0.529</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>ALL</td>\n",
" <td>TARGET-10-PAKHZT-03A-01R</td>\n",
" <td>0.696</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2 rows × 68 columns</p>\n",
"</div>"
],
"text/plain": [
" Cancer Types Sample Names Accuracy SBS1 SBS2 SBS3 SBS4 \\\n",
"0 ALL TARGET-10-PAIXPH-03A-01D 0.529 0 0 0 0 \n",
"1 ALL TARGET-10-PAKHZT-03A-01R 0.696 0 0 0 0 \n",
"\n",
" SBS5 SBS6 SBS7a ... SBS51 SBS52 SBS53 SBS54 SBS55 SBS56 SBS57 \\\n",
"0 0 0 0 ... 0 0 0 1 0 0 0 \n",
"1 0 0 0 ... 0 0 0 1 0 0 0 \n",
"\n",
" SBS58 SBS59 SBS60 \n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"\n",
"[2 rows x 68 columns]"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"other_wes_act = pd.read_csv(\"./project_data/activities/WES/WES_Other.activities.csv\")\n",
"other_wes_act.head(2)"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import sklearn\n",
"from sklearn.decomposition import PCA\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import torch \n",
"from sklearn.model_selection import cross_val_score\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.model_selection import KFold\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.metrics import accuracy_score\n",
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
"from sklearn.metrics import roc_auc_score\n",
"from sklearn.metrics import roc_curve\n",
"\n",
"# These ones are work in progress\n",
"def plot_roc_auc(y_pred, y_test):\n",
" auc = roc_auc_score(y_test, y_pred)\n",
"\n",
" fp_rate, tp_rate, thresholds = roc_curve(y_test, y_pred)\n",
" plt.figure(figsize=(7,6))\n",
" plt.axis('scaled')\n",
" plt.xlim([0,1])\n",
" plt.ylim([0,1])\n",
" plt.title(\"AUC & ROC\")\n",
" plt.plot(fp_rate, tp_rate, 'g')\n",
" plt.fill_between(fp_rate, tp_rate, facecolor = \"green\", alpha = 0.7)\n",
" plt.text(0.95, 0.05, f'AUC = {auc}', ha='right', fontsize=12, weight='bold', color='blue')\n",
" plt.xlabel(\"False Positive Rate\")\n",
" plt.ylabel(\"True Positive Rate\")\n",
"\n",
"def plot_confusion_mat(y_pred, y_test):\n",
" cm = sklearn.metrics.confusion_matrix(y_pred, y_test)\n",
" plt.figure(figsize=(7,6))\n",
" sns.heatmap(cm, annot=True, fmt='d', cmap='viridis')\n",
" plt.xlabel('Predicted')\n",
" plt.ylabel('True')\n",
" plt.ylim(0, 2)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dataset preprocess, combine profile data to a single data frame\n",
"\n",
"From all profile sets, a combined data frame is made, which has samples in the rows and features in the columns."
]
},
{
"cell_type": "code",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Missing entries in profile mutations: 0\n",
"The shape of the all mutations data frame (23829, 97)\n",
"Checking normalization: sum of some rows:\n",
" Biliary-AdenoCA::SP117655 1.0\n",
"Biliary-AdenoCA::SP117556 1.0\n",
"Biliary-AdenoCA::SP117627 1.0\n",
"Biliary-AdenoCA::SP117775 1.0\n",
"Biliary-AdenoCA::SP117332 1.0\n",
"dtype: float64\n",
"Some tumor counts:\n",
" Breast-cancer 1637\n",
"Liver-HCC 1318\n",
"ColoRect-AdenoCA 1185\n",
"Prost-AdenoCA 1091\n",
"Skin-Melanoma 1070\n",
"Name: tumor_types, dtype: int64\n",
"Unique tumor types\n",
"['ALL', 'AML', 'Adrenal-neoplasm', 'Biliary-AdenoCA', 'Bladder-TCC', 'Blood-CMDI', 'Bone-Benign', 'Bone-Epith', 'Bone-Osteosarc', 'Bone-cancer', 'Breast-AdenoCA', 'Breast-DCIS', 'Breast-Fibroadenoma', 'Breast-LobularCA', 'Breast-cancer', 'CNS-GBM', 'CNS-LGG', 'CNS-Medullo', 'CNS-Oligo', 'CNS-PiloAstro', 'CNS-glioma-NOS', 'Cervix-AdenoCA', 'Cervix-CA', 'Cervix-SCC', 'ColoRect-AdenoCA', 'ColoRect-Adenoma', 'DLBC', 'Eso-AdenoCA', 'Eso-SCC', 'Ewings', 'Eye-Melanoma', 'Eye-RB', 'Head-SCC', 'Kidney-ChRCC', 'Kidney-NOS', 'Kidney-Papillary', 'Kidney-RCC', 'Kidney-Wilms', 'Liver-Benign', 'Liver-HCC', 'Lung-AdenoCA', 'Lung-CArcinoid', 'Lung-NOS', 'Lung-SCC', 'Lung-Small', 'Lymph-BNHL', 'Lymph-CLL', 'Lymph-NOS', 'Lymph-TNHL', 'Lymph-cHL', 'Meninges-Meningioma', 'Mesothelium-Mesothelioma', 'Myeloid-AML', 'Myeloid-MDS', 'Myeloid-MPN', 'Neuroblastoma', 'Oral-SCC', 'Ovary-AdenoCA', 'Panc-AdenoCA', 'Panc-Endocrine', 'Panc-Other', 'Para-AdenoCA', 'Para-Adenoma', 'Pheochromocytoma', 'Pit-All', 'Prost-AdenoCA', 'Prost-Adenoma', 'Sarcoma', 'Sarcoma-bone', 'Skin-BCC', 'Skin-Melanoma', 'Skin-SCC', 'Small-Intestine-carcinoid', 'SoftTissue-Leiomyo', 'SoftTissue-Liposarc', 'Stomach-AdenoCA', 'Testis-CA', 'Thy-AdenoCA', 'Thymoma', 'Transitional-cell-carcinoma', 'UCS', 'Uterus-AdenoCA']\n",
"Some content from the full set\n"
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>mut_tri</th>\n",
" <th>C>A_ACA</th>\n",
" <th>C>A_ACC</th>\n",
" <th>C>A_ACG</th>\n",
" <th>C>A_ACT</th>\n",
" <th>C>A_CCA</th>\n",
" <th>C>A_CCC</th>\n",
" <th>C>A_CCG</th>\n",
" <th>C>A_CCT</th>\n",
" <th>C>A_GCA</th>\n",
" <th>C>A_GCC</th>\n",
" <th>...</th>\n",
" <th>T>G_CTT</th>\n",
" <th>T>G_GTA</th>\n",
" <th>T>G_GTC</th>\n",
" <th>T>G_GTG</th>\n",
" <th>T>G_GTT</th>\n",
" <th>T>G_TTA</th>\n",
" <th>T>G_TTC</th>\n",
" <th>T>G_TTG</th>\n",
" <th>T>G_TTT</th>\n",
" <th>tumor_types</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Biliary-AdenoCA::SP117655</th>\n",
" <td>0.018054</td>\n",
" <td>0.009933</td>\n",
" <td>0.001678</td>\n",
" <td>0.010336</td>\n",
" <td>0.014430</td>\n",
" <td>0.009933</td>\n",
" <td>0.001812</td>\n",
" <td>0.012081</td>\n",
" <td>0.011074</td>\n",
" <td>0.005101</td>\n",
" <td>0.017987</td>\n",
" <td>0.001275</td>\n",
" <td>0.001141</td>\n",
" <td>0.002886</td>\n",
" <td>0.005973</td>\n",
" <td>0.005570</td>\n",
" <td>0.003221</td>\n",
" <td>0.004228</td>\n",
" <td>0.013221</td>\n",
" <td>Biliary-AdenoCA</td>\n",
" <th>Biliary-AdenoCA::SP117556</th>\n",
" <td>0.022406</td>\n",
" <td>0.011006</td>\n",
" <td>0.002555</td>\n",
" <td>0.013758</td>\n",
" <td>0.012382</td>\n",
" <td>0.009631</td>\n",
" <td>0.001376</td>\n",
" <td>0.013561</td>\n",
" <td>0.015920</td>\n",
" <td>0.007272</td>\n",
" <td>0.010417</td>\n",
" <td>0.001572</td>\n",
" <td>0.000983</td>\n",
" <td>0.003931</td>\n",
" <td>0.002948</td>\n",
" <td>0.005110</td>\n",
" <td>0.001965</td>\n",
" <td>0.006093</td>\n",
" <td>0.012579</td>\n",
" <td>Biliary-AdenoCA</td>\n",
" <th>Biliary-AdenoCA::SP117627</th>\n",
" <td>0.017728</td>\n",
" <td>0.011987</td>\n",
" <td>0.002195</td>\n",
" <td>0.012325</td>\n",
" <td>0.011987</td>\n",
" <td>0.009286</td>\n",
" <td>0.001351</td>\n",
" <td>0.010299</td>\n",
" <td>0.010299</td>\n",
" <td>0.008442</td>\n",
" <td>0.007429</td>\n",
" <td>0.001182</td>\n",
" <td>0.001013</td>\n",
" <td>0.002364</td>\n",
" <td>0.002364</td>\n",
" <td>0.002701</td>\n",
" <td>0.001351</td>\n",
" <td>0.002533</td>\n",
" <td>0.008779</td>\n",
" <td>Biliary-AdenoCA</td>\n",
" <th>Biliary-AdenoCA::SP117775</th>\n",
" <td>0.017484</td>\n",
" <td>0.009911</td>\n",
" <td>0.002337</td>\n",
" <td>0.010152</td>\n",
" <td>0.010394</td>\n",
" <td>0.006607</td>\n",
" <td>0.002095</td>\n",
" <td>0.011522</td>\n",
" <td>0.013053</td>\n",
" <td>0.006768</td>\n",
" <td>0.010636</td>\n",
" <td>0.001692</td>\n",
" <td>0.000564</td>\n",
" <td>0.002256</td>\n",
" <td>0.002740</td>\n",
" <td>0.003062</td>\n",
" <td>0.002417</td>\n",
" <td>0.004270</td>\n",
" <td>0.009830</td>\n",
" <td>Biliary-AdenoCA</td>\n",
" <th>Biliary-AdenoCA::SP117332</th>\n",
" <td>0.015046</td>\n",
" <td>0.010417</td>\n",
" <td>0.002315</td>\n",
" <td>0.008970</td>\n",
" <td>0.008681</td>\n",
" <td>0.006366</td>\n",
" <td>0.002894</td>\n",
" <td>0.010995</td>\n",
" <td>0.006076</td>\n",
" <td>0.007234</td>\n",
" <td>0.005208</td>\n",
" <td>0.000579</td>\n",
" <td>0.001157</td>\n",
" <td>0.002025</td>\n",
" <td>0.002025</td>\n",
" <td>0.004340</td>\n",
" <td>0.002315</td>\n",
" <td>0.004630</td>\n",
" <td>0.010995</td>\n",
" <td>Biliary-AdenoCA</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 97 columns</p>\n",
"</div>"
],
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
"mut_tri C>A_ACA C>A_ACC C>A_ACG C>A_ACT C>A_CCA \\\n",
"Biliary-AdenoCA::SP117655 0.018054 0.009933 0.001678 0.010336 0.014430 \n",
"Biliary-AdenoCA::SP117556 0.022406 0.011006 0.002555 0.013758 0.012382 \n",
"Biliary-AdenoCA::SP117627 0.017728 0.011987 0.002195 0.012325 0.011987 \n",
"Biliary-AdenoCA::SP117775 0.017484 0.009911 0.002337 0.010152 0.010394 \n",
"Biliary-AdenoCA::SP117332 0.015046 0.010417 0.002315 0.008970 0.008681 \n",
"\n",
"mut_tri C>A_CCC C>A_CCG C>A_CCT C>A_GCA C>A_GCC \\\n",
"Biliary-AdenoCA::SP117655 0.009933 0.001812 0.012081 0.011074 0.005101 \n",
"Biliary-AdenoCA::SP117556 0.009631 0.001376 0.013561 0.015920 0.007272 \n",
"Biliary-AdenoCA::SP117627 0.009286 0.001351 0.010299 0.010299 0.008442 \n",
"Biliary-AdenoCA::SP117775 0.006607 0.002095 0.011522 0.013053 0.006768 \n",
"Biliary-AdenoCA::SP117332 0.006366 0.002894 0.010995 0.006076 0.007234 \n",
"\n",
"mut_tri ... T>G_CTT T>G_GTA T>G_GTC T>G_GTG \\\n",
"Biliary-AdenoCA::SP117655 ... 0.017987 0.001275 0.001141 0.002886 \n",
"Biliary-AdenoCA::SP117556 ... 0.010417 0.001572 0.000983 0.003931 \n",
"Biliary-AdenoCA::SP117627 ... 0.007429 0.001182 0.001013 0.002364 \n",
"Biliary-AdenoCA::SP117775 ... 0.010636 0.001692 0.000564 0.002256 \n",
"Biliary-AdenoCA::SP117332 ... 0.005208 0.000579 0.001157 0.002025 \n",
"\n",
"mut_tri T>G_GTT T>G_TTA T>G_TTC T>G_TTG T>G_TTT \\\n",
"Biliary-AdenoCA::SP117655 0.005973 0.005570 0.003221 0.004228 0.013221 \n",
"Biliary-AdenoCA::SP117556 0.002948 0.005110 0.001965 0.006093 0.012579 \n",
"Biliary-AdenoCA::SP117627 0.002364 0.002701 0.001351 0.002533 0.008779 \n",
"Biliary-AdenoCA::SP117775 0.002740 0.003062 0.002417 0.004270 0.009830 \n",
"Biliary-AdenoCA::SP117332 0.002025 0.004340 0.002315 0.004630 0.010995 \n",
"\n",
"mut_tri tumor_types \n",
"Biliary-AdenoCA::SP117655 Biliary-AdenoCA \n",
"Biliary-AdenoCA::SP117556 Biliary-AdenoCA \n",
"Biliary-AdenoCA::SP117627 Biliary-AdenoCA \n",
"Biliary-AdenoCA::SP117775 Biliary-AdenoCA \n",
"Biliary-AdenoCA::SP117332 Biliary-AdenoCA \n",
"\n",
"[5 rows x 97 columns]"
]
},
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"def prepare_profile_mut_df(raw_mutation_dfs):\n",
"\n",
" mutations_all = pd.DataFrame()\n",
"\n",
" for df in raw_mutation_dfs:\n",
" # Make a copy of the original data frame and start processing from there\n",
" mutations = df.copy()\n",
" mutations['mut_tri'] = mutations.apply(lambda a: '{}_{}'.format(a['Mutation type'], a['Trinucleotide']), axis=1)\n",
" mutations = mutations.set_index('mut_tri').drop(['Mutation type', 'Trinucleotide'], axis=1)\n",
" mutations = mutations.T\n",
" # Rename some index names\n",
" renamed_items = list(mutations.index)\n",
" index_items = list(mutations.index)\n",
" for i in range(len(index_items)):\n",
" #result = re.sub(r'BC::', \"CA::\", items[i])\n",
" renamed_items[i] = index_items[i].replace('Ca', 'CA')\n",
" mutations.rename(index=dict(zip(index_items, renamed_items)), inplace = True)\n",
" # Normalize \n",
" row_sums = mutations.sum(axis=1)\n",
" mutations = mutations.divide(row_sums, axis = 0)\n",
" mutations_all = pd.concat([mutations_all, mutations])\n",
"\n",
" # Do we need to renormalize after obtaining the full dataframe?\n",
" \n",
" # Figure out tumor types based on the first part of the index\n",
" tumor_types = [a.split(':')[0] for a in mutations_all.index]\n",
"\n",
" unique_tumor_types = list(sorted(set(mutations_all)))\n",
"\n",
" # Attach this back to the frame\n",
" mutations_all[\"tumor_types\"] = tumor_types\n",
"\n",
" # Prepare a list with all the types appearing only once\n",
" unique_tumor_types = sorted(list(set(tumor_types)))\n",
" return (mutations_all, unique_tumor_types)\n",
"\n",
"profile_raw_data_sets = [PCAWG_wgs_mut, TCGA_wes_mut, nonPCAWG_wgs_mut, other_wes_mut]\n",
"\n",
"profile_mut_all, unique_tumor_types = prepare_profile_mut_df(profile_raw_data_sets)\n",
"\n",
"\n",
"# Check if the data frame is ok\n",
"print(\"Missing entries in profile mutations:\", profile_mut_all.isnull().sum().sum())\n",
"print(\"The shape of the all mutations data frame\", profile_mut_all.shape)\n",
"\n",
"# Check to see if the rows are normalized to one\n",
"print(\"Checking normalization: sum of some rows:\\n\", profile_mut_all.iloc[:,0:-1].sum(axis=1).head(5))\n",
"\n",
"# Check some counts of tumor types\n",
"print(\"Some tumor counts:\\n\", profile_mut_all[\"tumor_types\"].value_counts().head(5))\n",
"print(\"Unique tumor types\")\n",
"print(unique_tumor_types)\n",
"\n",
"# Data matrix X for fitting, omit the tumor labeling from there, use that information in constructing true y\n",
"# Note: this contains profile data only\n",
"X_prf = profile_mut_all.drop(\"tumor_types\", axis=1)\n",
"\n",
"print(\"Some content from the full set:\")\n",
"profile_mut_all.head(5)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Check data content"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the plots below, we see that at the moment there are tumor types with not that big sample size. How to combine them?"
]
},
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABa8AAAG9CAYAAAASrIoTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAADunUlEQVR4nOzdd5wlRdX/8e/ZXXJQkAWRrIAKKAorIqKCwoMBBQMSRFERXB4eATMYMWBAFAGFFYkqURFBFCRIlLjkLAgIKBJElJ+ICpzfH6d6p+funZmq7p6ZC/t5v17z2r09t2rqhu6uPl11ytxdAAAAAAAAAAAMkimT3QAAAAAAAAAAAHoRvAYAAAAAAAAADByC1wAAAAAAAACAgUPwGgAAAAAAAAAwcAheAwAAAAAAAAAGDsFrAAAAAAAAAMDAmTbZDRgvSy21lK+88sqT3QwAAAAAAAAAwCiuvPLKh9x9eu/2Z2zweuWVV9bs2bMnuxkAAAAAAAAAgFGY2R/7bSdtCAAAAAAAAABg4BC8BgAAAAAAAAAMHILXAAAAAAAAAICBQ/AaAAAAAAAAADBwCF4DAAAAAAAAAAYOwWsAAAAAAAAAwMAheA0AAAAAAAAAGDgErwEAAAAAAAAAA4fgNQAAAAAAAABg4BC8BgAAAAAAAAAMHILXAAAAAAAAAICBM22yGwAAAACgzMyLZzcqN2uDGR23BAAAABg/jLwGAAAAAAAAAAyccQtem9kRZvaAmd3Qs/0jZnarmd1oZvvWtu9lZren321W276umV2ffnegmdl4tRkAAAAAAAAAMBjGc+T1UZLeWN9gZhtL2kLSS919TUn7pe1rSNpG0pqpzMFmNjUVO0TSzpJWSz/D6gQAAAAAAAAAPPOMW/Da3S+Q9HDP5l0kfcPd/52e80DavoWk49393+5+p6TbJa1nZstKWtzdL3F3l/QjSVuOV5sBAAAAAAAAAINhonNery7pNWZ2mZmdb2avSNuXk3RP7Xn3pm3Lpf/3bgcAAAAAAAAAPINNm4S/t4Sk9SW9QtKJZvZ8Sf3yWPso2/sys50VKUa04oortm4sAAAAAAAAAGByTPTI63sl/dzD5ZKekrRU2r5C7XnLS/pz2r58n+19ufuh7j7D3WdMnz6988YDAAAAAAAAACbGRAevfyHp9ZJkZqtLml/SQ5JOlbSNmS1gZqsoFma83N3vk/Soma1vZibpfZJOmeA2AwAAAAAAAAAm2LilDTGz4yRtJGkpM7tX0hclHSHpCDO7QdJ/JO2QFmK80cxOlHSTpCck7eruT6aqdpF0lKSFJJ2efgAAAAAAAAAAz2DjFrx2921H+NX2Izx/H0n79Nk+W9JaHTYNAAAAAAAAADDgJjptCAAAAAAAAAAAYyJ4DQAAAAAAAAAYOASvAQAAAAAAAAADh+A1AAAAAAAAAGDgELwGAAAAAAAAAAwcgtcAAAAAAAAAgIFD8BoAAAAAAAAAMHAIXgMAAAAAAAAABg7BawAAAAAAAADAwCF4DQAAAAAAAAAYOASvAQAAAAAAAAADh+A1AAAAAAAAAGDgELwGAAAAAAAAAAwcgtcAAAAAAAAAgIFD8BoAAAAAAAAAMHAIXgMAAAAAAAAABg7BawAAAAAAAADAwCF4DQAAAAAAAAAYOASvAQAAAAAAAAADh+A1AAAAAAAAAGDgELwGAAAAAAAAAAwcgtcAAAAAAAAAgIFD8BoAAAAAAAAAMHDGLXhtZkeY2QNmdkOf333CzNzMlqpt28vMbjezW81ss9r2dc3s+vS7A83MxqvNAAAAAAAAAIDBMJ4jr4+S9MbejWa2gqRNJd1d27aGpG0krZnKHGxmU9OvD5G0s6TV0s9cdQIAAAAAAAAAnlnGLXjt7hdIerjPr/aX9ClJXtu2haTj3f3f7n6npNslrWdmy0pa3N0vcXeX9CNJW45XmwEAAAAAAAAAg2FCc16b2dsk/cndr+351XKS7qk9vjdtWy79v3f7SPXvbGazzWz2gw8+2FGrAQAAAAAAAAATbcKC12a2sKTPSvpCv1/32eajbO/L3Q919xnuPmP69OnNGgoAAAAAAAAAmHTTJvBvvUDSKpKuTWsuLi/pKjNbTzGieoXac5eX9Oe0ffk+2wEAAAAAAAAAz2ATNvLa3a9396XdfWV3X1kRmF7H3f8i6VRJ25jZAma2imJhxsvd/T5Jj5rZ+hYR7/dJOmWi2gwAAAAAAAAAmBzjFrw2s+MkXSLphWZ2r5ntONJz3f1GSSdKuknSGZJ2dfcn0693kXSYYhHHP0g6fbzaDAAAAAAAAAAYDOOWNsTdtx3j9yv3PN5H0j59njdb0lqdNg4AAAAAAAAAMNAmLG0IAAAAAAAAAAC5CF4DAAAAAAAAAAYOwWsAAAAAAAAAwMAheA0AAAAAAAAAGDgErwEAAAAAAAAAA4fgNQAAAAAAAABg4BC8BgAAAAAAAAAMnGmT3QAAwPibefHs4jKzNpgxDi0BAAAAAADIw8hrAAAAAAAAAMDAIXgNAAAAAAAAABg4BK8BAAAAAAAAAAOH4DUAAAAAAAAAYOAQvAYAAAAAAAAADByC1wAAAAAAAACAgUPwGgAAAAAAAAAwcAheAwAAAAAAAAAGDsFrAAAAAAAAAMDAIXgNAAAAAAAAABg4BK8BAAAAAAAAAAOH4DUAAAAAAAAAYOAQvAYAAAAAAAAADByC1wAAAAAAAACAgTNuwWszO8LMHjCzG2rbvmVmt5jZdWZ2spk9u/a7vczsdjO71cw2q21f18yuT7870MxsvNoMAAAAAAAAABgM4zny+ihJb+zZdpaktdz9pZJ+L2kvSTKzNSRtI2nNVOZgM5uayhwiaWdJq6Wf3joBAAAAAAAAAM8w4xa8dvcLJD3cs+1Md38iPbxU0vLp/1tIOt7d/+3ud0q6XdJ6ZraspMXd/RJ3d0k/krTleLUZAAAAAAAAADAYJjPn9QclnZ7+v5yke2q/uzdtWy79v3c7AAAAAAAAAOAZbFKC12b2WUlPSDqm2tTnaT7K9pHq3dnMZpvZ7AcffLB9QwEAAAAAAAAAk2LCg9dmtoOkzSW9J6UCkWJE9Qq1py0v6c9p+/J9tvfl7oe6+wx3nzF9+vRuGw4AAAAAAAAAmDDTJvKPmdkbJX1a0uvc/bHar06VdKyZfUfS8xQLM17u7k+a2aNmtr6kyyS9T9JBE9lmABNv9m4zi8vMOHDWOLQEAAAAAAAAk2XcgtdmdpykjSQtZWb3SvqipL0kLSDpLDOTpEvdfaa732hmJ0q6SZFOZFd3fzJVtYukoyQtpMiRfboAAAAAAAAAAM9o4xa8dvdt+2w+fJTn7yNpnz7bZ0taq8OmAQAAAAAAAAAG3KQs2AgAAAAAAAAAwGgIXgMAAAAAAAAABg7BawAAAAAAAADAwCF4DQAAAAAAAAAYOASvAQAAAAAAAAADh+A1AAAAAAAAAGDgELwGAAAAAAAAAAwcgtcAAAAAAAAAgIFD8BoAAAAAAAAAMHAIXgMAAAAAAAAABg7BawAAAAAAAADAwCF4DQAAAAAAAAAYONMmuwEAAABdmb3bzOIyMw6cNQ4tAQAAAAC0xchrAAAAAAAAAMDAIXgNAAAAAAAAABg4BK8BAAAAAAAAAAOHnNcAAAA1My+eXVxm1gYzxqElAAAAADBvY+Q1AAAAAAAAAGDgELwGAAAAAAAAAAwcgtcAAAAAAAAAgIFD8BoAAAAAAAAAMHAIXgMAAAAAAAAABg7BawAAAAAAAADAwBm34LWZHWFmD5jZDbVtS5rZWWZ2W/p3idrv9jKz283sVjPbrLZ9XTO7Pv3uQDOz8WozAAAAAAAAAGAwjOfI66MkvbFn256SznH31SSdkx7LzNaQtI2kNVOZg81saipziKSdJa2WfnrrBAAAAAAAAAA8w4xb8NrdL5D0cM/mLSQdnf5/tKQta9uPd/d/u/udkm6XtJ6ZLStpcXe/xN1d0o9qZQAAAAAAAAAAz1DTJvjvLePu90mSu99nZkun7ctJurT2vHvTtv+m//duBwAAA2T2bjOLy8w4cNY4tAQAAAAA8EwxKAs29stj7aNs71+J2c5mNtvMZj/44IOdNQ4AAAAAAAAAMLEmOnh9f0oFovTvA2n7vZJWqD1veUl/TtuX77O9L3c/1N1nuPuM6dOnd9pwAAAAAAAAAMDEmejg9amSdkj/30HSKbXt25jZAma2imJhxstTipFHzWx9MzNJ76uVAQAAAAAAAAA8Q41bzmszO07SRpKWMrN7JX1R0jcknWhmO0q6W9JWkuTuN5rZiZJukvSEpF3d/clU1S6SjpK0kKTT0w8AAAAAAAAA4Bls3ILX7r7tCL96wwjP30fSPn22z5a0VodNAwAAAAAAAAAMuEFZsBEAAAAAAAAAgDkIXgMAAAAAAAAABg7BawAAAAAAAADAwCF4DQAAAAAAAAAYOASvAQAAAAAAAAADJyt4bWbn5GwDAAAAAAAAAKAL00b7pZktKGlhSUuZ2RKSLP1qcUnPG+e2AQAAAAAAAADmUaMGryV9WNIeikD1lRoKXv9D0vfHr1kAgEEze7eZxWVmHDhrHFoCAAAAAADmBaMGr939AEkHmNlH3P2gCWoTAAAAAAAAAGAeN9bIa0mSux9kZhtIWrlext1/NE7tAgAAAAAAAADMw7KC12b2Y0kvkHSNpCfTZpdE8BoAAAAAAAAA0Lms4LWkGZLWcHcfz8YAAAAAAAAAACBJUzKfd4Ok545nQwAAAAAAAAAAqOSOvF5K0k1mdrmkf1cb3f1t49IqAAAAAAAAAMA8LTd4vfd4NgIAAAAAAAAAgLqs4LW7nz/eDQEAAAAAAAAAoJIVvDazRyVVizXOL2k+Sf9098XHq2EAAAAAAAAAgHlX7sjrxeqPzWxLSeuNR4MAAAAAAAAAAJjSpJC7/0LS67ttCgAAAAAAAAAAITdtyDtqD6dImqGhNCIAAAAAAAAAAHQqK3gt6a21/z8h6S5JW3TeGgAAAAAAAAAAlJ/z+gPj3RAAAAAAAAAAACpZOa/NbHkzO9nMHjCz+83sJDNbvukfNbOPmtmNZnaDmR1nZgua2ZJmdpaZ3Zb+XaL2/L3M7HYzu9XMNmv6dwEAAAAAAAAATw+5aUOOlHSspK3S4+3Ttk1L/6CZLSdpN0lruPu/zOxESdtIWkPSOe7+DTPbU9Kekj5tZmuk368p6XmSzjaz1d39ydK/DQB4+pu928ziMjMOnDUOLQEAAAAAAOMpa+S1pOnufqS7P5F+jpI0vcXfnSZpITObJmlhSX9W5NA+Ov3+aElbpv9vIel4d/+3u98p6XZJ67X42wAAAAAAAACAAZcbvH7IzLY3s6npZ3tJf23yB939T5L2k3S3pPsk/d3dz5S0jLvfl55zn6SlU5HlJN1Tq+LetA0AAAAAAAAA8AyVG7z+oKR3S/qLIuD8LkmNFnFMuay3kLSKIg3IIikYPmKRPtt8hLp3NrPZZjb7wQcfbNI8AAAAAAAAAMAAyM15/RVJO7j73yTJzJZUjJ7+YIO/uYmkO939wVTXzyVtIOl+M1vW3e8zs2UlPZCef6+kFWrll1ekGZmLux8q6VBJmjFjRt8ANwDkIrcyAAAAAADA5Mkdef3SKnAtSe7+sKSXN/ybd0ta38wWNjOT9AZJN0s6VdIO6Tk7SDol/f9USduY2QJmtoqk1SRd3vBvAwAAAAAAAACeBnJHXk8xsyV6Rl7nlh3G3S8zs59JukrSE5KuVoyWXlTSiWa2oyLAvVV6/o1mdqKkm9Lzd3X3J5v8bQAAAAAAAADA00NuAPrbki5OQWdX5L/ep+kfdfcvSvpiz+Z/K0Zh93v+Pm3+HgA8nZG+BAAAAAAAzIuygtfu/iMzmy3p9YoFFN/h7jeNa8sAAAAAAAAAAPOs7NQfKVhNwBoAAAAAAAAAMO5yF2wEAAAAAAAAAGDCELwGAAAAAAAAAAwcgtcAAAAAAAAAgIFD8BoAAAAAAAAAMHAIXgMAAAAAAAAABg7BawAAAAAAAADAwCF4DQAAAAAAAAAYOASvAQAAAAAAAAADh+A1AAAAAAAAAGDgELwGAAAAAAAAAAwcgtcAAAAAAAAAgIFD8BoAAAAAAAAAMHAIXgMAAAAAAAAABg7BawAAAAAAAADAwJk22Q0AAADA+Ji928ziMjMOnDUOLQEAAACAcoy8BgAAAAAAAAAMHILXAAAAAAAAAICBQ/AaAAAAAAAAADBwCF4DAAAAAAAAAAYOwWsAAAAAAAAAwMAheA0AAAAAAAAAGDiTErw2s2eb2c/M7BYzu9nMXmVmS5rZWWZ2W/p3idrz9zKz283sVjPbbDLaDAAAAAAAAACYOJM18voASWe4+4skrS3pZkl7SjrH3VeTdE56LDNbQ9I2ktaU9EZJB5vZ1ElpNQAAAAAAAABgQkx48NrMFpf0WkmHS5K7/8fdH5G0haSj09OOlrRl+v8Wko5393+7+52Sbpe03kS2GQAAAAAAAAAwsaZNwt98vqQHJR1pZmtLulLS7pKWcff7JMnd7zOzpdPzl5N0aa38vWkb0Mrs3WY2KjfjwFkdtwQAAAAAAABAr8kIXk+TtI6kj7j7ZWZ2gFKKkBFYn23e94lmO0vaWZJWXHHFtu0EAHRs5sWzi8vM2mDGOLQEAAAA6AYDowBg/ExGzut7Jd3r7pelxz9TBLPvN7NlJSn9+0Dt+SvUyi8v6c/9Knb3Q919hrvPmD59+rg0HgAAAAAAAAAw/iY8eO3uf5F0j5m9MG16g6SbJJ0qaYe0bQdJp6T/nyppGzNbwMxWkbSapMsnsMkAAAAAAAAAgAk2GWlDJOkjko4xs/kl3SHpA4pA+olmtqOkuyVtJUnufqOZnagIcD8haVd3f3Jymg0AAAAAAAAAmAiTErx292sk9Uti+oYRnr+PpH3Gs00AAAAAAAAAgMExGTmvAQAAAAAAAAAY1WSlDQEAAMDTwMyLZxeXmbVBvwl2AAAAAFCG4DXQEhf1AACMP863AAAAwLyH4DUAAPM4goIYb7N3m1lcZsaBs8ahJQAAAACeTsh5DQAAAAAAAAAYOASvAQAAAAAAAAADh+A1AAAAAAAAAGDgELwGAAAAAAAAAAwcgtcAAAAAAAAAgIEzbbIbAAAAAMxLZu82s7jMjANnjUNLAAAAgMHGyGsAAAAAAAAAwMAheA0AAAAAAAAAGDgErwEAAAAAAAAAA+cZnfO6ST5BiZyCwDPBzItnF5eZtcGMcWgJAAAAAAAAmmDkNQAAAAAAAABg4BC8BgAAAAAAAAAMHILXAAAAAAAAAICBQ/AaAAAAAAAAADBwCF4DAAAAAAAAAAYOwWsAAAAAAAAAwMAheA0AAAAAAAAAGDgErwEAAAAAAAAAA4fgNQAAAAAAAABg4Exa8NrMpprZ1WZ2Wnq8pJmdZWa3pX+XqD13LzO73cxuNbPNJqvNAAAAAAAAAICJMZkjr3eXdHPt8Z6SznH31SSdkx7LzNaQtI2kNSW9UdLBZjZ1gtsKAAAAAAAAAJhAkxK8NrPlJb1F0mG1zVtIOjr9/2hJW9a2H+/u/3b3OyXdLmm9CWoqAAAAAAAAAGASTNbI6+9K+pSkp2rblnH3+yQp/bt02r6cpHtqz7s3bQMAAAAAAAAAPENNePDazDaX9IC7X5lbpM82H6Hunc1stpnNfvDBBxu3EQAAAAAAAAAwuaZNwt98taS3mdmbJS0oaXEz+4mk+81sWXe/z8yWlfRAev69klaolV9e0p/7Vezuh0o6VJJmzJjRN8ANAAAANDXz4tnFZWZtMGMcWgIAAAA88034yGt338vdl3f3lRULMf7W3beXdKqkHdLTdpB0Svr/qZK2MbMFzGwVSatJunyCmw0AAAAAAAAAmECTMfJ6JN+QdKKZ7SjpbklbSZK732hmJ0q6SdITknZ19ycnr5kAAAAAAMy7Zu82s1G5GQfO6rglAIBnukkNXrv7eZLOS///q6Q3jPC8fSTtM2ENAwAAAAAAAABMqglPGwIAAAAAAAAAwFgGKW0IAAAAAAAYAek6AADzGkZeAwAAAAAAAAAGDiOvAQAAAMzzGNEKAAAweBh5DQAAAAAAAAAYOASvAQAAAAAAAAADh7QhAAAAAACMgrQyAABMDkZeAwAAAAAAAAAGDsFrAAAAAAAAAMDAIW0IAAAAAKBzMy+e3ajcrA1mdNwSAADwdEXwGgAwz2lyMc2FNAAAAAAAE4vgNQAAAIBGGFkLAACA8UTOawAAAAAAAADAwCF4DQAAAAAAAAAYOKQNAQAAAABgnJFmBwCAcgSvAQAAgHnQ7N1mNio348BZHbcEAAAA6I+0IQAAAAAAAACAgUPwGgAAAAAAAAAwcAheAwAAAAAAAAAGDjmvAQAAME9okuOZ/M4AAADA5GHkNQAAAAAAAABg4BC8BgAAAAAAAAAMnAkPXpvZCmZ2rpndbGY3mtnuafuSZnaWmd2W/l2iVmYvM7vdzG41s80mus0AAAAAAAAAgIk1GSOvn5D0cXd/saT1Je1qZmtI2lPSOe6+mqRz0mOl320jaU1Jb5R0sJlNnYR2AwAAAAAAAAAmyIQHr939Pne/Kv3/UUk3S1pO0haSjk5PO1rSlun/W0g63t3/7e53Srpd0noT2mgAAAAAAAAAwISa1JzXZraypJdLukzSMu5+nxQBbklLp6ctJ+meWrF70zYAAAAAAAAAwDPUtMn6w2a2qKSTJO3h7v8wsxGf2mebj1DnzpJ2lqQVV1yxi2aix8yLZzcqN2uDGR23BAAAAABQims6AMDTyaSMvDaz+RSB62Pc/edp8/1mtmz6/bKSHkjb75W0Qq348pL+3K9edz/U3We4+4zp06ePT+MBAAAAAAAAAONuwkdeWwyxPlzSze7+ndqvTpW0g6RvpH9PqW0/1sy+I+l5klaTdPnEtRgAAAAAxsaIVgAAgG5NRtqQV0t6r6TrzeyatO0ziqD1iWa2o6S7JW0lSe5+o5mdKOkmSU9I2tXdn5zwVgMAAAAYSASNAQAAnpkmPHjt7hepfx5rSXrDCGX2kbTPuDUKAAAAAAAAADBQJm3BxqcLRnEAAAAAAAAAwMQjeA0AAAAAGGb2bjMblZtx4KyOWwIAAOZlUya7AQAAAAAAAAAA9CJ4DQAAAAAAAAAYOKQNAYBx1CRvPjnzAQAAAAAAGHkNAAAAAAAAABhAjLwGAAAAAAAAADTWZOa5NPbsc4LXAAAAADAgZu82s1G5GQfO6rglzxzjdTENdInvKQD0R9oQAAAAAAAAAMDAYeQ1AAAYCCxwCsybGGkMAACAkTDyGgAAAAAAAAAwcAheAwAAAAAAAAAGDsFrAAAAAAAAAMDAIec18AxBrlgAAAAAAAA8kzDyGgAAAAAAAAAwcAheAwAAAAAAAAAGDmlDAAAAAADAPKlJ+kWJFIyYN7G/YDIQvAYAAAAAAACACTZ7t5mNys04cFbHLRlcBK8BAHgaa9LZmZc6OgAwL2JkHAAAeKYgeA0AAAAAAAAAT0PP9JvWBK8BAAAAAMDTDtPth3smvR/P9GBcKd4PzMsIXs9DnkknMgAAAAAAADy9EJsaTIP8uRC8BgAAAAAAAMbBoAQFB6UdQKkpk92AXGb2RjO71cxuN7M9J7s9AAAAAAAAAIDx87QYeW1mUyV9X9Kmku6VdIWZneruN01uy/JwdwtjafIdGdTvR5NcXOThAvBM08VxneMpAAAAMLdByQE+KO14pntaBK8lrSfpdne/Q5LM7HhJW0h6WgSvu8AOMRzvB4DJ9ky66QQAAABIz6xr7S4GEj6T3g8Mx0DTp4+nS/B6OUn31B7fK+mVk9QWtMQBYnARjAMmFiNrAQAYHdcOz1wEBZ+52G8BdMncfbLbMCYz20rSZu7+ofT4vZLWc/eP9DxvZ0k7p4cvlHTrKNUuJemhlk2jDuqgDuqgDuoYjzoGqS3UQR3UQR3UQR3UQR3UQR3UQR3UQR3jXcdK7j59rq3uPvA/kl4l6Te1x3tJ2qtlnbM7aBd1UAd1UAd1UEfndQxSW6iDOqiDOqiDOqiDOqiDOqiDOqiDOiarjil6erhC0mpmtoqZzS9pG0mnTnKbAAAAAAAAAADj5GmR89rdnzCz/5P0G0lTJR3h7jdOcrMAAAAAAAAAAOPkaRG8liR3/7WkX3dY5aHUQR3UQR3UQR0DWkdX9VAHdVAHdVAHdVAHdVAHdVAHdVAHdTxt63haLNgIAAAAAAAAAJi3PF1yXgMAAAAAAAAA5iEErwEAAAAAAAAAA2eeD16b2XyT3Qbg6cLMXjHZbZAkM1tmEOrAcINyPDWzd3ZQxys7qON5besYFF3tL4PyHcGQtsd1M3u1mX2/q/Y8XZnZ0ma2YvUz2e3B4DGzRcxsezP71WS3BQAA4OnkabNgY5fMzCRtLGk7SW+VNOZFuZltJmkxd/9Zz/b3SHrA3c8aj7aOJzNbX9KN7v5oeryYpDXc/bIWdb5a0nbuvmtHzWzajgUlvdXdfzqZ7WjCzJ4laW9Jr0mbzpf0ZXf/e4O6FpPk7v7/WrRnDUnbSNpW0t8lzcgo8zFJf3f3w3u2f0TSVHf/boN2PEvSOxX77YslLTcRdZjZdEnT3f2mnu1rKvb9BzPqeIWkpdz99J7tb5P0J3e/coLa0bqOPnUO4vF0f0kntazjp5LaBqAuza3DzBaW9F93/296/EJJb5b0R3f/eWYdXxjl1+7uX8mpp1Zf630u1VP8Hekp+x5Jz3f3L6eg4HPd/fImbUl1Tsr5wczml7R6enhr9VkXlN9V0jHu/kh6vISkbd394AZtKT6u95R/meLzfLekOyVlfUfHqLN1/8HM7nb3CQ0cp+P4tyU9T9IDklaSdLOkNTPLryppGXf/Xc/210j6s7v/IbOeqZJ2c/f9C5o/Wn0vUHw/tnH3tQrLzpZ0pKRj3f1vXbTn6Srt929W7C9vVJybZhXWMV3SpyWtIWnBaru7vz6z/E6SznP329Ix9QjFsf0uSe9396tK2tM1M/udu7+64PlTJR3t7ts3+FuvkHSPu/8lPX6f4r34o6S93f3hjDoWV+yzt6XHW0laKP36N+5+f2GbtpJ0hrs/amafk7SOpK9OxudiZitJWs3dzzazhSRNq64TC+tZWsO/q3d32MzR/u5Kkh6prpnMbGNJWyo+3++5+38mqB3bK9YW+3HP9p0k/dPdjx2j/L6S7nD3WT3bP6roA326QZuWU5yf5sR/3P2C0np66izddxeUtKPi/Fj/fnywwd9+jqTXSro75zoqo74J7z+kv/sWzf1+fHmi21FrzxKKfah4YbxUdjUNfy1Z37F0XP+Gu3+y9O+Ot5LrBjM7SNKI752779Zl20ZpR+u+pZm9Y7Tf51yfdhED6f2j88yPpFdKOkDS3ZL+n6QdJC2RWfZSRdCnd/tzJV1S2I7VJf1Q0pmSflv9TEIdVyst2pkeT5F0VYP39WWS9lV0gs+V9JHMcjspOkiSZIoLnX9Iuk7SOg3aMVXSmyT9SNL9kn6WWe7R9Hern0fr/xa2YXlJJ0t6MLXhJEnLF9ZxkqQvSXp++vmipJ8X1vGS9Pn+MX3fr5S0VkH5lSTtKenaVPYhSSsXlL9B0vx9ti8g6bqCehaStLWkUyTdI+kRSRtJmjJRdUg6XtLr+mzfTHFhnlPHef3eP0mr5u63HbWjdR21MgNxPB2h/nuebnVIuqB2PFxV0sOSDpJ0jqSvZ9bx8T4/n0/Hgf+XWUfrfa6L70itjkMkfV/SzenxEpKuaNCWRueHVHY1ST+TdJOkO6qfwr+/Ufoczk+f9Z2SXltYxzV9tl1dUL7tcX11SV9QBGYvkvQRxc2VNvvIy9Sg/zBKfUX7raTNFefKh9X8vH+tpOdUn4XiRs2hBeVPk/TSPttnSPplYVvOa/n+LStpD0mXS3pc0f94SYN6VpW0j6TbFeedzVTrb2bWMV3SfpJ+reb93PUlXZGOP/+R9GTJ56u4AN9V0sGKgO8Rko7ILLtpev6fJP1EcePuroafy5mKgM/Nkl6X6v1mQfkbJM2X/r9d2v+fI2kTSRcWtqX18bBPncXnW0m/UZ9+Zka5qyQtmf7/Wkl/VgSvv6L864ZDFUH/6vHtivP1YZJmNWjTdenfDSVdKGkLSZdllq1fwzyqdtcwO6X95Q+1z/qcwjreJuk2Sf9UnOeeUgyUyim7VDrm7CZpUcX5/wZFf2TVzDouk/S89P+XKc5zH5d0tKTDGrync10fZtZxtWKQRu/2xSRdmVH+JvXpdymu1W9o8B37puI8+2tJv0w/p5bW06fe0nPuT9O+9gdFn/BMSQdklj1N6VpWca66L72OmyTtMQmvZV9Ji0uaT9FXf0jS9oV1zFL0S+9J3/3rJR2eWfZ6Rcyk709mHV+Q9KL0/wUU/bCHFTfiNyl8LR9KbfpbqudfKj9n/1aFfYU+dbTuO6R6msaVdhjtZ6JeizroWypic0dK+lX6XE9KPw8rMzalDmIgw8q1+XI8XX4UHejb0oHlQ4oO252FdYx4EMg9QNSef62kXSStJ2nd6mcS6rim6WtRBxex6qgzreh8zlIc+E+S9BdJCxeU/4UimPYpSSu2/K6dJekDirva0yS9X9JZHXwuc20bo46LJW1ce7yRpIsLyt6oCHpVwbQ7C//+9U1+1/O8Y9JnerjiInBqg3Z0UceInW5ldiDHeD+uncB2dFHHQB1PR6jj7qdbHfXviKJj//30//lz95me+haT9DnFxeM3JS2dUab1/tLVd6RW11Xp36tr27L2mfTcVueHVMdFkt6guCBYSTEz5kuFdVwp6YW1x6sr4wK2p47rNPyG89TR9umesl0c159SBN9XrW0rDlppHILgtbqL9ltF0OmlanGxJGl29b1UCjZIuryg/IjH3tJ9P+1731PM3Fqn+skot5Piouj3kr6a3pOi78cI9U5RBLP+lPbBLykFDjPKtgrYVp+N4gLp6rS/fEDSPgXl2wRaqv1lldq2RkHe6lih2vlR0vkF5a+p/f9YSbvXHhcNWunieNinzuLzraQfKAKtn5f0seono9y1tf9/XzHaeq73aYw6ru45Fl9df38avJar079fV8w+GVbnRP1IukbR56i/ntJjUOObeWn/+priRsBNkj4p6UXp+HReZh31fWQ/Sfum/09RB/3LgvehVT9Xo/fXs877PWVulbTAOLzO0nNu9b2obtjMp/xg3I21/39G0o/S/xfr4rNt8FquSf++XXFzZEkV9E973ofq30UlnZlZdqX0s2/6eUn6+YakL+S+p9WxTNLOiqDzVMVsy+x+TCp/veKGb/W+vEjSCYV1fFvSqZLeK+kd1U9hHW1v9ra+bujqp81rUbd9y9MkLVt7vKzyg9etYyD1n3klbcjOioP2IZJOc/fHzcwL61jQzKa5+xP1jSl/50IjlBnJE+5+SGGZ8ajjDjPbTfG+SNL/KkZQ5LhFMTrgre5+uzRnKlOJJ3xo2vTmipPQXyWdnaZLjcnM7lWM6jtE0ic9ptzd6e6P5TbC3bdM0+PfIemHaWrICZKO94zpgz2mu/uRtcdHmdkehXX8y8w2dPeLpDlTqf9VWMci7n5u9cDdzzOzRTLLPqgYQb6M4o7fbRpl+stIzGwZ75k6WZg3dy3FXb6bJd3i7k822G+7qGO0HL25+XtHO0bkfi5dtKOLOgbieGpm16v/99KUmZbCzH45Sh3PyaxjpOlhJunZOXUk9TpeL+lbkuTu/zGzp3IrMbMlFRfx71F0ptfx/Gn7XewvUjffkcp/01RCl+ZMn896P7o4PyQLufs5Zmbu/kdJe5vZhYpRMrnmc/dbqwfu/nsrz/99pqQTzWyW4v2YKemMzLJdHNffqUg1cq6ZnaEYUWuFdUgt+w8pLVXfXyku/Erco+jgN/1+StIjZraoYkT9MWb2gKQnxihTt+AovyvtX26Q/q1POXbFMWU035d0iSJwNluSWuyzSuVfqggWv1lxAXiMYmTpbxUjIsfyHHc/3Mx2d/fzJZ1vZueXtsPdbzezqe7+pKQjzeziguKruvtWZraFux9tZscqRvzmWFexv5xtZnco9pepZa2fo+or35emmP9ZsT/nesrMllUc39+guMlRKf2ONToejjL92Bq0QYr34M+KoORiBeWm1vofb1Ccryq518XTeo4Z7639/9kFban8ycx+oBi8800zW0CF61KZ2UsUwSJJusndb2zQjn+nPkdV5zSVnyf+6+5/NbMpZjbF3c81s29mll3G3T+TUtv80d2/lbbfktJm5aifk14vaS9Jcvenqtc1ZgXRjxpR5rXhfGa2iLv/s6fuxRQ3CMbymJmt5ik1Ta38aiq/JpTi+n4+Sf8uLdjxvlsdyx4xs7UUgcGVC8tKse/+UJJS3y63X9hl/6Hqw71Z0nHu/nDud6ym+iwfs1gn56+SVskpmI6/MrNX+/DULXua2e80vB8wkv/UjmWbKWIfT0q6Oe3/JR5P/X2Z2QLufotFCsQSSyreg3qfxVWWmq5x36GL64ZRri0lSe7+tty61K4f1GXfcmV3v6/2+H4NpUEcSxcxkDnmleD1cyX9jyJ333fN7FxJC/ULnozi54rA5v9VJ6IUDDxQ5bkef2lm/6tILzHnJJJzMqydUBvXUTNT0f7PKXayczS8EzeaLi5iu+hMn6TIZba1pCfN7BQ1CLR65EY70syOTnUdpNjpv1NY1UMWec6OS4+3VRyES+wi6egUUDfF1Iz3F9Zxh5l9XlKVa217xQjMMbn7FjaU6/ZLKWfSs81sPc/PM/stSb8ys48rpmhKcSG3r2IkRE471jazFylG5Z+dAgKLmdlzPeUqnIg6JN1mZm9291/XN5rZm5R/s+dsM9tH0ufqFzxm9iXFhfxEtaOLOgbleLp55vNGM9p3Met7qhjZ1+R3va4zs/0UIxRXVQQqZWbPzq3AzL6luAl3qGKqf1Gu+472F6mb70jlQMV5bum0D71Lcc7K0cn5QdLjZjZFsf/8n+IzWrqwjtlmdriGjsnvUYzGLvFJSR9WnCNM8R05LKdgF8d1dz9Z0slpX91S0kclLWNmh0g62d3PzHwdbfsPowWqDiioR4oZV79OFwP1vlTJuX8LRYqNjyo+12cp76KxcoWZ7eTuP6xvNLMdVfgdcfeNS55f8zxJW0n6jsVN5hOVf0NzLmZ2pSLl0OGS9nT36r29zOKGfI62AVspAgLzS7rGYlDEfSq7WGocaHH3qxUjdD+dXvO2kuY3s9MV+8uhBe34atp/P67ony6u+L7l+oLifDRVkSrgRkkys9cp/9xfaXo8fOsovzutsA1y9y9J0XfoDRCO4ThFAOAhReDowlTPqor8/zmeqp8X3f2GVMdyyry52uPdinzo+7n7I+naKCvva/penKJYX+NaxbH0JWZ2t6Qt3P0fBe0438w+ozhfb6oY1PTLgvJSu5t5T0qxQEf6fOpy39ffmtmJin19CaU+dnpPc/NdX6noK/Q7L7kipeNYDpf0MzPbxd3vSm1YWXGj8PBRylW+IOl0M/uqhs4DMxTB+D0yyvd6THEcPEfDz3U5+Xe73HcPtciL/HnFCNtFFa81xz0Wayfdq5hVdIYkWeRmzz1fddl/+KWZ3aI4jvyvxeCKxwvrOC3187+luF52Zfbrahax4YPeNlD+ee7f6dx2v2KWxCdqv1u4sB33ptfyC0lnmdnfFOftbO7+gcK/2U+bvkMX1w2514852ryWzvqWks4zs98ozp+u1IfPLNtFDGSIT8IQ+Mn8UQQk36X4ct6v/Fyx0xTTMB5SfOBXKkYyfUMp9UVBG+7s85M1lbB6bps6Uj1TJf2kg/dzEcXF2mmKE+Mhkv4ns+zmik7vXyT9sLb9dZJ+VdAGU9yh+2Gq71FFR3DRgjo2UFwQXKM05bbh+7Gi4mT8oCJf1C8krdSwrsUlLd6w7BKKoM9V6ee7Ksw1W6tracW07otVlsP3TYops39N+835kt7U4rs2QzGd6G5lpkDpog7FncXfSzoqvQ8fUYxo/b2k1TPrWERxwP+DhvJFVblAs76nHbWjdR099U368XS8flQ41a2Dv7eQIh/xAZLWrm3fQNJ7M+t4StGJ7pvHv0GbutjnGn1Heup4kSLv7P9JenFh2S7OD69QXGAtr8j99nNJ6xe2YwHFiPifK4LxH1XBFF41zHM5Sn2Njut96llScdO7ST7Bxv2HDt+HM9Nn8iXFyNEvSvpiw7oWT+/HkspMjZHKLZM+h/PS/vZtxfnyEsXCXCVtWEYRGDk9PV5D0o6FdSyvuIC9UjEL42uF5adI+kwHn83mihsBaykukq6U9LbCOlZKx9bF02f7HWXmzk3lP6ToT1VB3gckzWzxmqYobuxl5c3u8kdx3l2iZ9vCJcfCVKb18bBPne9sUOZVitQSd6fHa0s6OLPs+oqp/ovUtq2uzPV2FANCrlBML18s/bwubcs6X/fUt2Sfn6y+kKKvv59q+ZHT92xfSQc1+H7upEiX87P0/9Jc9YsorjGnKVLt7KYYPZhT9hHFNdQva/+vHv8tsw5TBFY+Kmm52vaXS9qszfe0wec6U7HWRXUd9EdJuxSUX0vRR6/6yUerwRoEqa4d+v1M5PvRwfu5tCKdwymq9RWUgq6T1KYlJE1N/19YhefsnroWkPSsBuXWVdy4uiv9XFNwLHulYjbcXyV9vra9Gk3e9LW8TpEyrGhdgnQcPkepv6tIYfa5wjpa9R3UwXXDCPWuoBjNPSGvRR32LVN975C0f/p5e0G51jGQ+k+V42aeZDF15x3ufnRBmYUUo+Ik6XZ3bzJ1pzUzW9DdHx9r2xh1/EYxbbeTlZfTqPB3KVamz10BfZpiQYu/1bYtougsFY0aTGXnU4xe2FZxYlsqo8xdik7S8Yo7QMNGCPgEr/Zt/ac0/V2R8/CajPJTFaudb9Lw7y+o+Ewe7Nm+jOKC/OYm9XbFzEyx0Fnx9OGmdVhM4dxOcfKQIkfYsSX7W6rn+YoVpaXI3VY04qmLdnT1WvrUO6HHUzN7VCOn63B3Xzy3rhHqz1p13MxOHe33XjY9rKpzeir74FjPnQhd7HOpnuLvSCo3VdEJmzNbzN3vbvD3i88PXTGzzSX92t2bjMqr6jhG0l4NX3vr47p1vWL48Dqy+w9mduBov/eCldzNbLa7z8h9/gh1fFgx0vpfihtI1TEoZ3RevZ6NVTsuu3vxiJQ0qvdISZ/1mEkxTZFj9CWldaX6Vpe0radRrgXlLnD31zb5m88UZraZYp/7Wc/290h6wN3PKqhrFcXNppU1/DiYdX6xmBFo7v7jnu07Sfqnux+b25bxkHu+7SlzmeKYcaq7vzxtu8Hd1xq95JzyGyv6Y65Is3Fu4d9/oyLvbtWnu0HSN3qPj5l13aUIbPxNQynH7lPcLNlptGOrmd2kWJSrNw3bNEWu0ReXtqcLZra4hn9Xc2YXv26035f0QdI+U32+N5f2t2v1LKFYuHLOFHx3v6CwjkUV+9+jBWVGOmcvrRiM0KrPXmKE69I5vGCmUhqZ+z7NfSzLPm+nehaNYkWzLrruP0yV9BbN/VpK3o/WddTqWlzxPcudQdK5tL+soOGvJTuOYjEL7pOSftDkuN61ttcNZraUYlbbtpKWU8y6+sTopbrVRd+yo3a0ioFU5om0Iemg+3d3752m835l5p/r6fhdX9te3PGz/rmj/q7oZDyQWc3FiikzY20bzV2SfpeCL3MO/jkHzH4XsR65nv6i/Klu76j9v99TxkwfkII80939ptSG/yqm8dypGMWY4y5F52YzxYiYemNcY+eKlI2c91apXSUn5Rnpp5qq9xbFaI6ZZvZTdx81H7hHntrHzOxZDU9gByqmYvW+/5so8lXuMlYFFtNz73D3WT3bP6q42/fppnUopss9V3H3cCLqWFWRh+/Inu2vMbM/u/sfMuqoX8TeUduefRHbUTu6qGMgjqfuPmfqn5ldXXVyJsGrFHlzj1Osct8kB3AVIP6CYnTxFElTzOwJxciprBQE6WJnpuKGwHWK0X3ZaTq62F9SPa2/I7W6PqIYMXm/YkqxKY61L80o28X5QWY2Q9JnFaM46x3yMdtQs42kA8zsJElHNrwJuKykG83scg0/Z+cEsFof1xXTWt/fZ/tNilQ1uTet2/YfZioCRScqplA22ueSs83sfzw/5Uk/n5C0prv3TnPPlgJN53nkh11B0ivN7GU5N6x7LOXuJ5pZlef1CTN7MuPv9w1uKkZP3danyFjOMrNPKNYPqX9Xs1PbtQ3Ypjo2Vyy4WO27RTc3WwZavqT+0+3PUcy+yA5eK2bxHa7oFza5AfZxxSjhXscrRmWVXMN0cTycq9omhdz9np7rh5zv+nKK4+DjilFsJundFnmZ3+7uf8r822cof82BsZyhCGr8JrXxfxQBkxMlHawYHTmS//Q7z6d9vyi/sUV6m7019/6SfSNupJt5yki1MVpw2jLTDaUA3mEaGo1qkta2SGW0oxekUTGzD0naXTHL4BrFiP1LlHddOKcf5LXBWKlPM9XdvztGFSOdszdV/jm73p5+68T8XZFO6Ksea06NpJ5q48OKxVKb+rWkSxV9/+JjmZntokidskg8tEcVC9gdnFlF/UZQNeOqqV8qjiONXkvbOsxse3f/Se/NheqYmBsAt0gb8knVbuYpUhhdP2rBuev5iqKPeIeGXktWHKVmYXe/vOe4XpRusE3foYvrBouBOm9XDBRbXXG+f767l6Y9a/ta6n3tc2vb3yrpz6PdFK099yJ339DmHjCW3ZfqIgYyjLcY/v50+VFc5Mw1bUExPSNrdVpF3rrF+mxfXGkV8IL2/EqRx7gaOv/XtO02jTHdTBFAWFcxlfPlGlpNfiPFAlsl7fhiv5/Msucpkrf3bl9V+asGHznKT9aUSkXH+3V9tm+mBtPTW3zH+k7HUoNpWYrFgBatPV5U0YFZSDE6JKeOExVT/Q9XdIAOlHRgZtkR/4YyV7hWnPim9NmePfV9gOo4TTGqpXf7DEm/zKzjUsXJsHf7cyVdMoHt6KKOgTqepnJXlZZJ5dYZ4WddSfdl1jFVcZF5dHpdX1UEskrb8lFFMGOV2rbnp+PBRzPrOEHSTxQXF7+QdEBhG1rvL119R2plblfmlOM+ZTs5PygWn3ybYhGdlaqfBu1ZPH02lyougHfutx+MUv51/X5yP9tRfpd7XO9kxXC17D8oFlOdqeiMn6WU2qHhd+RRDaXbaZRiR3F+brwSvWJq/sOKc/ZOijROx6fv3acL6zovvT9XpcfrSzo/o9xIx+TF1OyYfGefn+zUdtV3SpFyYOPS73utjtsVN7qKUh/Uyl+sSDXyARX26UY71jU4Dl7W9Ps1Dm3p5HjYU+fdDcr8TJFW6yrFAnifUCw2Nla5kyW9v8/290k6JfNvr6na1G3FNOoj0k/WdP2e+maPtE3SNWOUvUXDrwfr/ZibC9txiyLl39LpOPIcFZ5/FdeySzX8HkxVjFD8hKS10rbN0354dWYdRykC8PU0KtXggB8Vtud6xYjra9LjFykzpZxa9oPUwTm7p8y+kr4u6SXpZx9JX5P0aWX2/1M9WZ/DKOUb9ddT2c8pgt/Pr217viIAXJRaoqPXUnTs7LoOSR9O/36x309mHVukffaDinPl2un/tyly5pe059Z+3/nCOk6X9AIN9WHepZQGraCOxn0HdXDdoOhPni/pNdKcLBdF/Z+OXst5ahmr6+JHHcRA6j/zxMhrxZ2BuVJjuPu/bYQhv31M9T7Tfdz9H2lKQYmnFHk775dUTds9RHFn/QINLejUz2aKu1rLa/higo8qpq9l88JpoD2e42kBip46bzez52T+/S6S8r/E+9ypd/ffmNm3cysxs5UUIz4fMrP1FXe1b3f3X+SU98Jp8GNYUcMXFfmv4sLgXwWjKH6Vfuo8s+xo+0Tu6ufufabHe6z2nbvPDUodK7v7dX3qmG2x+EqOhb1PCgh3/4tFmpyJakcXdQza8bSN0Y4Rt+RU4LEq9xmSzrBIybKtYmGLL7v7QQVteZ+kTb02etPd70gjIs9UXByPZQ1P6QEsFgfMXWC19idb7y9VPW2/I5V7lL+IVq9Ozg+SHnT3UdPD5Ejf75MUNyL3UIzM+KSZHZjzXen3Wgp0cVzvasXwVv0HjxFisyTNSqMot1WMSP+0zz1yeKy6Rlu8Kddeki62SGNQuhCWFN+FFygCxTcrzvcPmdnCillX3yxoy8cUOWJfYGa/kzRdcfE3lpGOyY82OSa7+yqlZfp43N1HneKd4R7Fjbfc/k+vBd191Cnzo5W1PovUpvczd1HyygFm9kXFuaD+Hcudjj2f9VnYMI0Qm7+wLY2OhyOM/JTi2LRMaX2KG1gHKKZi36t4b3bNKLeGu7+9d6O7/8jMPpv5t7+hCARWNlMsQLewIki6ZWY9lYfN7NOKwIkUi4X9zSKlwFijMf+ikReXL1loWYqRwsVpT3r8QbGGQROHK1IOXC7pQDP7o2J2256512OSXu3u769vSPv/l82sdBbJ4+7+uJnJzBZw91vM7IWZZdv2g7o4Z9e92t3ro9evN7PfufurUz8zV9NjaeXHaZblaRp+LMuZlfNexZowc1KmpH7yuxVBvq8WtqXtazm9g5lbjetw9x+kf9vEc76suPa4q7btWjP7rSK3+CkFdd2gSHmUm0Wgn10VM/leZGZ/Utz4Lvl+Su36Dl1cN3xGMdvyEEnHmtkJDdsitXstrWN1dWa2tiIgL0kX9IsnjKCLGMgc80rwWma2TBUsrm8rqKLLjt/KPW15QLFY2sNm9t+RCklzgqRHm9k73f2kwr87TJoa8SnFCIJ6Lq+c6R2tL2JthKnlBVOqpNFXF8664DKzLyhG07iZHa+YRn2epLeY2UbuvkdGHb/U6GlDSvLeHivpUosVbqWYdnpc2sFvyqzj2e5+QE8bd88s+4CZrefuwwJfafpJbg7ex8xsNXcf1lE0s9UUdySfTnUsOMrvci9Au7iI7aQdHdQxEMdTG55+6dk9j+XuY6YdcveNc/5WRlsWUKT32VYxtetAZaQ96jGf90k74O4PFgSP5pw/PKYMFzahk/2lKtP2O1K5Q3Ez4FcafqGTMx2y9fkh+aKZHaaY7l9vQ/ZnnKbpfVARpPyxpPXc/YEUoLxZsWDwWHWsn573YsV+MlVx0zUnBUIXx/WuVgzvJAhuZuso9rlNFaN1inNuW0xFv8bd/5ku4NeR9F0vyyv+A8Xrbzp1+D8e6378zcxur44D7v6YmRWtSeLuV1nkjX2hIvhxq8e017F02cetyq6lWDCy3r/8UUEVbQO2UvRxf22RR7P0+CG1C7T8XNIPzez/qvc19eOanB9eogjcvF7NpmMfLulnZrZLdTGbblh/P/2uRNPj4eZ9tpliME7R4Jv09x5SLPhaqm/qKjObMtLv+ljW3S+uPf5HdU1mkTaj1HaK0ZK/ULwnF6VtUxULhY3I3Tdq8PdGcq6ZfUvx/Wy6z7W5mTdDMTvwKYs0aA8pFlgtCcK3SSPV616L1EG/UKRC+psiVVVeQ9r1g7o4Z9ctamavdPfLUj3rKWb2SoVpGVr6jyIF2Wc1dN3sykgrI0neJ9e3x+CuxuuJtHCppJPTseO/KkxL1VUdZra8om/4asV7eZGk3d393ozi840Q4LyrwY3rr0u62sxu0PB9PzsG4pEHeZN0rpzS76Z6hjZ9h9bXDe6+v6T9LXI8b6s4fjwv3aA82d1/n1NP0ua1dDXgpIoh7aShvssxZnao5w3S6vJG/jwTvP6WpF+Z2ccV08ukmE61r2KF5hxddvwuNLPTFKs5S9I7JV2QdtRHRitoKb+RpJWtzwIKBR1ySTpGMc18c8UIhh00sRexH1T/HN2HKkYbfTejjtvM7M3u/uv6RjN7k2p5dcawjSIYsLBi2u5z00XjNEWOsxy536MxuftXzOzXitHfpljZfnb6dW5HfQfFiJS69/fZ1s8nJZ1oZkdpKBgwQzEydJvMv/8Fxd3kr/bUsZdilNnTqY4rzGwnd/9hfaOZ7aj8YEkXF7FdtKOLOgbleFrPJXp+z2NXXs781otYmdnRioUwTpf0JXe/IaPt/YwWpMoNYK1tZlU+R5O0UHqc2xnuYn+RuvmOVO5OP/OrPIjWxflBipQBL1J0XOuBo5IA1FaS9veehZ7SueaDmXV8T3EM/qmGjsmrZZbt4rj+cUUu0dvN7Jq07WWK8/WHMuuQWvYf0vM2VwT9j1csYtn04vsQxX6ztiLQebji5sLrCup4wpuPzpViP325YjTd/On/ln5Gu+E4FzPbVdIx7n5jeryEmW3rY+cD7bKPq3SxtZEieP1rRSqCiySVBK/bBmylmBr//xTvY5MgfJtAy+cUIwH/aDGCVIqZdYcrRumWeLtiqnyjBdbdfT+LnJXnW1roTJGL/BvufkhhdY2Oh+5evQcys5cpgrPvVoysKx6Mk869u7v7I+nxEpK+7e5jHU9/aWY/lLRHT39sf8V3NcewGRvuvn7t4dKZddTLP6TIa9rP7aOV7b1x36fukvNUlVu7voht6T7X5mbefzzN/vIY8fz7wsC1FGs5fUHSV3rOL59XBAqz+dAI/b3N7FxJz1J+nvO2/aAuztl1H5J0RNr/TZEm60Ppu//10Qra0KwJU8zqqUZcVn3Lknz3H1PckGiyRsS9ZvYGdz+np32vVyxwOiYbnrt34Z4+c2ng+duKmQHX179rhbqo40jFwLet0uPt07ZNM8r+18xW7L1hbzEjvbRfdbRipljjHOAWg4HeqZTj2Ybyd2et/ZO06Tt0dd1QBeL3kbSPmb1EEciu0qLkavNauhpwIkk7Snpl7Zz5TUX6w5zgdZc38ufkYXnGS1+6PTW02mbRqtApkPkhxUV8q46fxZ74TsUdsuoO+0k5By0z+7C7/yBdGMzFC6aOmNmV7r6umV1XnXjM7Hx3H/OiLX3pDpO0noYCvC9Tuoj12uIUo9Rxvacp7iW/63ne6ooRMRdr+Mn9VZI2z7m7ZWZXufs66f9Xe23ht/rvxpuZLe4xrXzJfr/PGeljZtsqLgg2lHRh7VeLKy6wN8lsy9KKqTtzVqeV9D3PX1C0vgBEfZ8rWgBiEOqwGCVxsuIitv4dm1+xuM+YHet0/Piq4hhSv4g9QtJncwIvHbWjdR2pnlbH01THTA0dT6UIMDS5kG7MzK6W9NreO/sWC/6c6+7rZtTxlIYWJKsfw0sXBnuyVs+wXymmrk9IOpUu9rlUT+vvSFtdnB9SPVnno8y6FtfwRVdyRnBWZWe7+4yec/bF7r5BZvnWx/VUT6sVw9v2H9I+d4eGZgNU+51Jesrd1y5oy1Xuvk4KdvzJ3Q8vPe+ni4M/KvJulo7OVQqKjMQ9bzZcVdc17v6ynm3D+jWjlK0fk9sEN6tgx9qKnKJrp3PPYe7ebwHDkeq4RTEKs1HANtUx291njP3MEcv/QXHB1mYxzoUUOSalSEdXNIsl1XGCpI+U7qu18tXNFVOMdJqiWKz8Qne/s7CuRsfDdDzeRnEB/1fF4JlPuPtKpXWl+ub6Xud81y1Ge31dMaCj3h87WtJncr5vaZ/d09Mo1tr29RX7zEa5ryOVW12R53llDT8/5CwM+JTiOHpNtan2a88I5neq5JzUp+xjGgrWmyLIc7sKgqTpHHu4YnDUNYpj2csVef139MKF7NNNkRU0/HPJGoneQeyh95x9g6TvNz0OpDqfpYj/PFJQZtR9tH5jKqOuUyVt4+7FqWXMbE1FGouLFH06l/QKRTxlC083bSeKmf1G0pu8T7q9Ca6j33l/rm0jlN1ScUPlaxr+nu6pWHPjFwXtyIohjVHHGYpUgVeqtgCvu5ekgm3cd+jquqFPvXu7+94NyrV5La1jdbW6rpf0Ck8zHyxmxlyRGavrjYGY4ph6uKTPe97swKH65pXgdVs9Ac5FFe9dk6kMA8PMLnX39dOB80DFVKifuXv2HaE2F7FpR9jE+0+pOju3c5zu0m2n4Rfkx3qfqUUjlL9D0Wk0xQH8k9WvJO1b+H7cqT7pQzxjpW4zO83dN+9TR9Vpy6ljJcUiOl/X8FVxH1UsClG6Yu/8iunHrvzpxyPVtYSkR3Ju0oxQfnFFYCL7YNtlHWa2sWrfMXcvvWvZ9yLWzF7t7r9r0w7rM927tI7csl1rejw1s/eN8mv3jNy39SBgye8G1Ug3violgdJUX+t9rikz+66772EjpGTyzGmIbc8PqY4fKkZN56Zt6lfHzpK+ogi4zhnBmXNcr9VxgSKt1WGKXKb3KRYeyw7WpnpaH9fN7G2SXpsenufupzWoo1H/YYQL6TnpB9z9zQVtOF8xku4DitfzoCKNSHZwLp2zexV9tqPUPWead+bzr1PkBPX0eKri3L/m6CWH1dG6j2tml7v7emZ2paSNFX2QGwrb0Spgm+r4hmJhokY5SdsEWkao71B337lBufMUi2ldoQbTsa3/gJclFbma93b34/v8fqS6Gh0PU5D1QkUA8fa07Y6m+4mZXStpI4+UO9X57/yCa4eqP2aK/lj2Z2yRcuEExeKA9VG1O0ja2ntSPWTUd60ij39vwGbMGXFm9nZFjuxVFYG946r3t1QKbH5RQ8f28yV9uSTg2+ZmXsdB0hcoZn6Y4vzyh9yytTq+orjJcYdqox5zbip0LZ2311TcZC0ZSLS9u//E+szWlspmbJvZKorFzKsA1kKSlvE+aSdGqeNkxes4Vw3WiEhBs+1SHabo0x1T0qfrisWo+OcrRtM2SUvVVR1nK45Fx6VN20r6gLu/IbP82oqZdfX3dD93vza3Dame7yhew6lqmHbIzG5w97XGfuaodbS92dv6uqFPnY0GQ3bUD2o14CTV8THF+e3ktGlLSUd5Xorfqo7WN/KleSx4bZET6EDFqNSinEA5d/Mz6rjI3Te04VNWJDXKb/R8RQqI9VNdl0j6aGHweHNFR3IFxbD/xRXT3osWYml6EZuCT7spDpi9U6q+75mLIKaLs9945qjiPuWPHO33XrCwpA1PgL+gYgrPku7+hSZtayrdbfuXR9641RVTPE8vCVJY5M38kWJ0TnWXbAfvmfY+QtkvSDrRY3GTBRQn5ZcppiBt5+5nF7RjLcU07iow91BqR3Z6hjZ1WOSk/W/13lks1vJmSXe5+8mjFh6qo8pbuJykM9z9hrT/fUbSQrnHFovFyZZVBCP+YzEqYw9FAOt5GeU7C262PJ6+VfEa/pgef0ExG+WPqY4xR4KZWb+pSqZIH7Kcu4+ZFsvMbpY0ozfwb5Hn9Qp3f9FYdYxQ7yKKE/t27v6WzDKtP5sUHLhXQ1P9ekdgZQUJutjnUj1tviPruvuV6Tg0Fy9cvDDdFF0vtePywou/mxUjwO5UdMiLp8paLBT1Km83gnMlSfcrZkp8VDGF+eCSQEWb43qtjq8r3stj0qZtJc12971y66jV1SoIbn3SD7j79wrKPzeVv8LdLzSzFRUBsZL0FuPGzO529xULnv8txejNWYrv+kxJ97j7xxv87dPcvV+e4pyyB2to0aKPK2bWXFPYnzpPLQK2qY5HFbkd/6OhNQGy+9ttAy196mt6AdvJcbBPvUsqBouUzDRodDxMQdZtJG2guGF0vGI0fqPFPdM1xF6SfpY2bSVpHx/jxrWZvXa03+ceC1P/6/9UCwoorl3uH7nUiHVd6RkzvcaoYxFJWygC2c9RzOorPU+epBjdW11/VQvkjZqapKeOTm/mmdnmJeeFdAwfkResZ2BmtyoWcGsy6nEnxTnttvT4CA31c98/VkDPzGZJOsjdb0w3FS5R3NhYUjFj4bjRytfq6XLG9mxJG1TvRwqo/87dX1FQxw4jtCPrmr+tWgxmWP9YMbJ+/pxrh1pdXbynXdSxoiKt3KsUr+ViRV87+2ZPF6z/LLKimz1mdqjie18027OnjvPUsu+Q6ml83dCnrkZxxDavJV0zPOLp5qPFwLUtFceg75Ue18xsXQ1ljbjA3a8uKPs6SX9z9+ssFlh9rWJx34Pd/d+jl+6pax4LXp+lyAlUdWy2l/Qedx8zJ5CZ3auRV3MuzTXdmpldqshFWJ28tlHcmXnlyKXGpR2tLmKto6nlFqNj3uuF08EmQnXTIuN5o148jNXR6anrSsWKsEsocrzNlvSYu2cvbpPq2M7db02PV1eM6MhJpXCjpLXc3S1GHG4n6Q2SVpd0tLuvV9COixWd8HPT440kfc0LpiW2qcNitOOO7n6bma2qWAX9GMWIjstzvuvpznq1gvorFSeOohXUzWwPRd7N2yUtoLh59R1FIGpfdx8z35sNjeo3RRC8Wngme3R/ra42x9PrJK3vke938/Q6tlVM7dzK3TfLbUeqzxT54D+tWNR0H89YBdnMPqH4XvbL83qeu3+roA3zK25qbCfpjYocnj93919mlm8deDazAxR5Zn+nODdc5A1O8l3sc6lc4+9IKj9VcbwoXWm8t553K/JPnqd4X18j6ZPu/rPRytXK9x0NVnJhYDEV8h3e3QjOJSStkPM97ynX+Lheq+M6SS/zNM01fU5XlwTzU7lG/QfrOP1AWxZpCHZRLQgv6QfeYqZSre573H2FgudPkfRhxXHNFIv8HObuT45asH9djS62+tSzsqTFG3xXxyVgW9iGTgMtZnaGu7+xYdllFNO5pZYX0j31Fn3ObY+HtZu72yrydh6tWMSqeHS8RRqBjRXf9XM8YzS4xWyeXq5Ic7O8u+cu2jhS/Se4+9aFZfaW9IBiVFtx6qFUx1RF32MbxTXVnu7+m8J2NE4/MF5Kb/jY8PzMFZc0XdLSJZ9vCubv0mRfs1i07uXu/l8z205xE+9/FP3cL7r7a8Yof6OnmSqp/7+Ru2+Zbrie3sWxudQI349rvdnsr9XTw+zZXzbC7ObEvWCmdK3OxST9r+K8ebI3uNHbhdQO9wme6WgxgG+093THCWpHtd9OU6zlcoeaDxZp3Xdoe92Q6pgzs9rMpngMKCydbd34tVgsmvt2d/+zxUCPsxUz81+qGJRXslZNdY5ZRsNTKI15M9DMvp/+5oKSblWkpjtDcSN7aklsSpr3gtdtcgLdp1jYx/r9vuQOWaqv0RegVv6y3kC1pTQgBXXsq8hB8y/Fl2htxQImPymoo5OL2LbM7ETFKPSzVMsb6xmjYyxGB67s7helxx/TUB7eY71sVFu9gzVFkSdpl5wT+wh3LCvuZXcuqzyeH1GM7N23wQXKXGkT+m0boeycv5U6f2e6+w/qbStox1wdo9LOUps6rJbf0WIK4ZLuvmvqfF3pefmeblDLFdTN7CZJG7r7wxZ32W9X5GsuWoCmVl+rwETL4+mc995iNMqt7v7N9Dj7+2GRR+v9iouCyyR9vQrKFbyOVnlezWxTxUX4ZorReScoRg2sXNiOrgLPlurZVhEYPFPSIV6Q17SLfS6VaX0hbJHW6q3eLu/ttZI2rS5AzWy6YrRhyTFkbUXnVYo8saXTKV+uWEDnMjUcwWkxAuNtin7DNYoUF+d7wWKBbY7r9ecrLqQfTo+XVNzsKQ1eN+o/WIfpByxy1B6kWLR5fklTJf0/d39WQR2HKRavq49WfLL0wmCEuotGXnfJzI7wwny51uFN+FRf64CttR/d3yjQMkJdUyQt6u7/GPPJw8u1vpAeod7XKxZzKkqD0PZ4WKtnScWI6a1L25DKt7qWSnVsqBgYsITixnfWDedR6iveZ63FaGWL0XTV+f5sScf70CLvRczsEsX3qroeerUifcCrCuro9GZeB33VlRUDGzaRdKC75ywwVpWdoUjFcoPKRz3O6euY2bGSLnP3A9LjMfu5PddRv5L0U3c/qvd3Ba9luqSdNHde9exjvMWAhIM8zdA2sy0k7eaZ6SlSmY0U58q7pOJZvc/p2TRFMevqE5Kucvd3FrTj2YqZq+9TDLLY393/mlm2bzq7Ss73o1ZXv5mO7/OC/N1tPlsz6/eerah4b6a6+/IF7Wicdsg6TBmU6mvVd+joumGu/bw0BpLKNHotNnx9nP0UaSA/lfoh1xT2+z+i+GzvV8wAyb6pYGY3ufsaKf7xJ8VNxCfT9ep1OXGUuuypEc8QD5nZ9hqeEyjrQKXI8VSy0umIer4Ac3JoKe5K5DrXzPZUTLtzxTSxX6WOYO7d+v9JX+K3K0b8baUIvmQHr5NnS6r+XvYFnzSn0/V/irQWknSzYirDeYVt+FX6aeJbGhr5JcXd10MlLSzpS4oRnbnqCwo8oTg5vzunoLtvXPB3xmJm9ipF26u7pqX7+2wzO1xDoybfo6HFC8by73RCvl/SxoqORWXhwnbcYbFKeH30ZnYgroM66h2U1yu+L/JI25G7wEYXK6g/Xu3X7n53qqNR4Dppe+eyzfHULPKqPqYYIXhw7XcLZlawq6TdJZ0j6Y2lHZuKu8+SNMua53n9jSKQtmEVIE6B6NJ27F4LPL9X0kFmVhx4TgHvcy0Wo9xGkWf5Nkk/LGhOF/uc1O47UrlL0u8sZtfUb0yWzHaa0tPZ+6vioieLme2uuDD4edr0E4vctdkXwZJ+oFjdu/Eq7JKe5bGo74ckHenuX0wB4BJtjuuVr0u62uKGqykuVIpThiTPVnn/4Z2K7/a5FiPaj9cIAwsyfC/V9VPFzeb3KUb9lHhFzwXNb9OFT5ZRLoRNMf0/Wwo27S1pJcU5v2hWjZktXe0r1YWvmb2w4KbgaIsqueIcmqVPwPYgMysd+fQNxUVf1cfb3cw2dPc9RylWL7+RegItZpYVaKnVcawifcuTin3tWWb2HS+Y2aMIrr6i90JaQykzxmpDNaqtbknF7KvR1o/oV1cXx0NJc65VfpB+iox0Ma3Maykze4Okz6cyX3P3s0rb0BVvmDolOUfSdYq0XAtIep/V1gQpuUGqCDofnYJQpjg29519MIpDFDfzqn7de9O2pjfzPtykkJmtpthvXqk4Lu3WIIB+tKRvqtl5+ykzW1bS3xT93H1qv1soo/wjFjMT/6SYqr+jNGfQRk75Xqco+qpnq5ZXvdBMSceY2fcU3497FJ9viW8r4g/DZn8p0oaOqgoup+DbexVrVF0j6S2emYPfzJZSDHjZWtIRitHxpbO29yt8/mgOlfQxHz7T8YeKUam5Gn+27n5S9X+LlLSfUfTpvqFYUK/EEYobPVXc472KQRtjph3yoTSSP3b3Yd8pM/uxCr5nXfQd1OK6IcVfNpA03Ybnml9cMUAiW8vXUu8Xv16pn+4xkK6kGVJcb78w9wZPj8fT333czP7oaSagu7uZFd/UnNeC1x9UXKjsr6GcQLl3HOf6lK0wD1dNmy9ApZqS1ntS/6DiteVcqMyX/n2zYtrwww2+zI0vYs3sLYrP48vpxxSrQx9hZv/n7r/ObYS3y5X1wp7P8TFPq9qa2YUlFbUNQNvQytJrKj7Hm9RsZendFZ/DyR750p6vuDFRYpfUlt0Un80FGh5kHOvv/0wxTW//WlDvzYoVv0t8UHET4ee1dmTnzeygjuvSHcs/KRYaOFOac9c+14tqQSaT9IL0uGQ61PJmdmDt8dL1x4UXKF1oczz9rqLD+Q9JN1ejhCxGp46Z/iQ5SDHNdkNJv6wdu4qnmCkK/L/UhtI8r+sqgl9nWyz+erwKOye1NrQKPNvwnJfTFd/3ddz9nsKmdLHPVfU0/Y5U/px+pkharEEbJOkMixHcVRB9a0nZ5xfFReMrPeVGN7NvKvJPlgRrnvCCEdIjmJYuht+tuChvos1xXZLk7sdZjAJ/Rarj0w1uxkkN+w8eaw2cbEPpBz4qaRkzO0QN0g+4++1mNjV1qI+0SJtT4kkze4GnBcHS+bbkAnK0C+HSi+TDFe/HsIXfClxoZp939xMlycw+rvj+r5FTuOOb8K0CtsmbNXx0/9GKPkhW8FotAi01a6SbTu9RHHc+rfh8SoLXrW7ASeo9p7mkv3rBQs81XRwPu9DoWipde3xW0t8V6bGyp3DX6hhp5Jxp6Noqp57Xeyy63Te44+4/77e9R3Xd15q7XyNpbYvFmuWFMwSSVjfzJMlirZmPS1rR3XdKgejea7WRyq6l+HzXVKyhtKM3SJuUPOTuB479tL6+oEjZOFXSqZ5G0lqkAchZn+rDijVDnquYFV2dY9+gZoO1Fnb3TzcoN0c6x63fYrCHJM1Xvxnq7r+3GK0/pvS8DyrOcRdJ2sLLF+L8o2LW2pGKATQ71mMfOQMjvNvUVYtUgetU93mpb1Oi1WdrZi9W7DMvV5yXZrr7E6OX6usFPnz0+5fM7JrCOoYt6mwxu6Z0PYAu+g5trhvmV8zmnabh1y3/kPSugjZI7V7Lby0yE9ynmFn021THsop1QErcozhnNrF0CuJb7f9Kj6eXVjZPpQ1pw8yW9J7RzNZ84ZVzFVMRmhwYOpNGpGypSBuynmIE1GlemDc77QTVRexluRex6eJ3d++ZbmhmL1VMS+qb52eEulZTXAivodrIzZzRRpamM9Qez/mse383Sh2jBiVyToZpxNSxihWDr9RQMH8HRZ7Y4g52re4FFVPvf9q0jnmVxeq4uytyRB9RfV/NbAPFiXrUxYHSc1tPh7IRcm/W6hjzBk7P9/Rj6snjn/M97YrF4pNLS7q2FlhYVtGxzcmh1ekUs1q9V3vDKappH95WMTL0GkUg7dDMsv0CzyeUBJ7N7J+KYPdxirQyw07wmRfCz0gWUyPrC42cXFD2ekXn8fH0eEHFAn/ZU93MbB/FRdMv1Tyn6VaKkYK/c/ddUpD0W14wVbYraf+tRvdKyl/orKeeRv2HPvU0Sj9gsabBJpIOk/QXRSf//V42NfQNigvhOxSvYyVJH6hfkBbUNV2S3P3B0rKp/Fwp5QrLL6sYCfa4Ih3DzZI+7pl5OEcKwlVKjkFWS9mVHk9RnC9K9rtWKW6smzQ7NyoWrD5WMbPwfCtPffYtxYji+oX09e7+qdw6utLF8bCjdjS6lrKh9SWuVZ+gr+elhBh13869iWNmX/KYQXNk/2qypv0vKGmx3mNGGgzzj+pzymzPcxSj2euLLH+55AaBmV2lWLukfjPvZyXXy2Z2guI66H3uvlbqh1/ieWnpnlQEWn6lPjfwSgZ6mNl3FOfrUzX8vJ2V/shilPRi7v632rZFFPGXic5t/FVJF3vBwLAx6mu0oK9FqkDX8Nlf0zxjMV+L9ceeUAyAmes6Ief8YiMskFirY8w0sGZ2oru/2/rPaFHh+eFkSVdp+EzHGe6+ZUEdjT9bM6tmne0n6UT17DOFfdTGaYfMbC/FqO+FFHGpyn8kHeoFC4J30XdI5RpfN6TyKzW9Fq3V0fi1WNyV2VoRvzjR3f+Utr9ckboje00EixmbL1QcV+vHwpz4Vut9blh981Lw2jrI99RTX6MgR8svwKfcfd/0/63qwUgz+5q7f6awLUsoOjdPpjvdi5dePDa9iDWzW9z9RaW/G+H5Fyk6XPtLeqtilKC5+6g7TCp7mWKxx9/3bH+RpB95xuKCtR3zhYoL8VPT47cqDnhjTpezWIRzF+9ZvdUiyf4PGtxUmKpYHKTKx3uhu2ff8bO5px9LyrshMEJ9TTs6qyvSjqzc046SAEXrOnrqWye38zqezOy5JftrlyeQcTie7u3uezcpW6tjKcVossYnNmuQ57VPHVMkbSppm5wOeSrTOvBssTDoSK8960I41dPJ/tLFd8Qix+JW7v5IeryEIqdn0aKebaSbPjsoFtOS4qbvUe7+3YI6Guc07VIXx3WLkZZbS7pRtdRnOUGfPnV1EgRvKt0Ee0AxWvKjitQlB3vBWhepngUU53+TdIuXrp4ex+aPpPJTFBfoB3lhujqLQQlTFTe/ioMtqY5dFSPgn5K0rZctLtQvCFdrRtG+3y9ge50XjDAzs20V05/ro/s/4+7HjVpwqHzjQEutjt0Uo62vlfQWRT7Rn/gYC7b1qafVhXRXujgedtSORtdSNsICWLXyXY6qHHdmdqikM3r7CBYj/Td0910K6jpLMRunSh/5HsXNn00K6uh3M++D7v7bgjpmu/sMG573OXedmtYDPWp19btJ4S2uHQ51952blE3lGw2aS2UflbSIIhj4H2nOLMXFG9bXNAaygGL214apDRcozrljnjO76ONazOz+Xn6L+9axrLvfZ90s5r2EYqZj/f3Yu37DI6OO6rP9t6T/quCzNbO7NPSeVv9WQ9GL+qgpXnG0oh9VpR16vxesiWBmXy8JVI9QR+u+Q8u//11338NGSAlX0lfu+rVYw6wRI8UPSgPPbdshzXvB64sVOYGGTaf0Wr6fMcpPlfSb6iRuZuu5++UN2tH4C1A/cfWexEpPajb3ohrnS5rlBTnB2lzEmtmV7t53Kshovxvt+TZ8cb0Lcy4OzOyNiqlZ+yjufkoxReUzipHhpxe040xJ7/Q0lcpi9eCfesbq8jbKKO/Rftfnua+VtJ3iIulyxcXO8939scyXUdVzi/pMP/aG6W5adHSulTSrTzuy87R2UUdPfU1nXbxDkT9vacWJvW3nsXFHtq22x9M+9ZUev9ZXBCUeVqTX+LGkpRSBn/e5+xlN2tGFJjdqugo8d6Gr/aWL74j1X/Sx6FjSxX5nZutqeOCoNP1RaxaLCx+U2lGNitvd3e8tqKP1cd3MblUsQFsUoO1TT2dB8MlmMRNnZQ0Pwv8os+xHFektdvahFFvPV+SJPcPd9y9oR6tgSwpe3adIK7O8IoflBe7+iVELjpMuArbWYnR/m0DLGPVO8wazLy3SOdS/Y9mj4ro0IMfDzi6muxiQ0CYwaWZ/kHSp4nx5gWfm701lR7t2uNHd1+z3uxGeP9e1VxVILqhjgfTfOTfzJKlkn0l9hzcoZhmtY2YvUKS3HHMw0Qj1FQ30GC9t++xNr6PGQxcDPSZDF9dNZnaKov91sWLWSeMFxZ+JrGHaIYvFkbdXzKKvUqce0+T9bdt3aHPdYGbruvuVI90oLb1B2uWN68mMG3TVjnkt53WrnEAeo5MfM7NnufvfmwSuUz1fkiQzW8TL883ZCP/v93gsXSyqsaUiD1mTjvwLLBbh6mXKy9ld97jFaMfbzOz/lFYzzSno7mekg9SnFBdsUiw48A53v6GwHStqeB6h/yguaHOYmS3Re7fVYppr7iIB9yqmUh2imLrzqJndWRq4Tv5eErjP0PTi5gl3P6Tl3+6ijrri5PDJvor0LTdPcjuGKmh+AmmdP6+3KYXP/57iBtOzFHm83uTul1rMmDhOUnbw2louctbHcqUF3P39Df/WqJoE0tXd/tLFd+RJM1vRUyqZNNKl9K57F/vdNYqg3rTUjjltytHnZvF5ihk1JYuVHKlIPbBVerx92rZpQR1dHNfvUPQdWgXw1K7/0IqNMN234mXTfn8s6QWK70h1Q8AlZQWvFQvmberuD9X+/h0Wi52eqZhRlsXb55z+vrv/Iv3/kRSUL5muu727/8RGSKXmhamp0o2uRjdEU3vOcfc3aGg2XH1bjmmSDqjanQaxLDB6kTl/Z9T3Qj1pu8ao68OKtWH+pbjRY8pf32Y8XKMWx8MuNAlSj+IwRZq+NrIDvH2soVhY8DWS9kv9mGvd/e0ZZUfrO5XkRZdizY1tFOkDpMjPWppf+ZLUp6zWeZFFKpGS93dvRR9uBTM7RhG4eX9hO+p+XfL3zeytitGNf0yPv6BIB/dHxcKPdzVsR+n6Rb2a5LqWFBeYipH0q7j7V8xsBUnLtohlNJ1lORCzeluqFlTcR9JL06CA3ymC2Re7+/25FVmLmY5m9iJ3v8VGyMHf9IacFc6EHelcZymXeM5538zWUJynf6eh1KkbSfqsmW3hKWd8rrZ9B7W7brjRzPZQrJN1vaTDm9ysrnTwWuqKrrWtw1HkbdpRN68Fr08zszd7u3xPj0u6Po1OmRN49rIcWq9SLKqzqKQVzWxtSR929//NKO4j/L/f47G0XlRD7S5itxjld6WLFO0haWFF8PkrilVVR506VpeC1EUrro/gx5Iut8hh5ZLervwL2P0lnWlmn9DwEeDfVP7F60mKgMDWiqDPKWq+kMu5FtNV2kw/XtrTIgNVR8fMXui1xToy/NLM/lcxRbVRrtiO6qhretF0f4eBaylzIb8xND2BdHE8rStdkGOap4XZzOzL7n6pJKWOXOnfbrvIWa9ORqF11CkvDqSru/2li+/IZyVdZGbVSIXXSiod3dZqvzOzjyjSUt2v+H5UgaOSRUG7uFk83d3raRmOSh3kEq2P64pFjq4xs3N66ihdNLarIHgTXV7szlAsytf0XDtfPXBdcfcHLXMhqzqLBenW1PD1P7LSj9QC19XjJxR9qlzVQlNNF1eVmV3k7htaTIWuv6clI58WVPQJl7KYll2dFBaX9LyC5pyjyIle5addSHFDYYOMsqO9F6XflU9IWrPf92SidXQ87KId0xWDTnq/601SOrQeCKB2gcknFdP9n1TcnLi/oL4HrM9MYDN7hWJhujHV9jVTrIfy4/T/KYrvfk4Kxucq+hsLWeRUre9zC+e9lODuZ5rZlZLWT/Xs3vK7X/r57pP+tsxsc8WN4m0VC9r9QJGKsZhnzMIdo/znWhQ/WPHder3imP7/JH1fMSslS0cDPbrub5f2cV9qZv1GBGefXzzSHZwmzbmh+XJFoPVbklZR2aLtP1XMdDxM5e/HxxT94W/3a6bis27ibYrPOVfr875iVuEu7n5WfaOZbaIYrJR9Y77NqOmaNtcNRyuO5xdKepPi5uTuTSrq6LXUfbjw+VXKtNK4XNftmGNeSxvSOt+TjZBLy8tyaF2muJt9qg/l8rrB3dfKKPukImhuik50NaLWJC3o7iWrXHexqMZJktZWdPDbXMRW9Q1KLuE20//WUYyekAqnU6ZOUtUZr6bMfMvdf1lQhykO8tsqpiIvrlgd/tdesECIdZDrzWJ6+efd/cT0+OOKlb+zUqCkMq1zxbapY6Q72rVKxvy+2tAiVq9TrBz+Cw3fX0oWsTpJMZX7dE8LHZZIHa3dPE1FN7OvNukQd3Q8PbDP5r9Lmu3up4xRtssUSq0WORsv1sEUUWswtbOLfS7V00mORYtc5uunh5eWXsSa2QFqsd+Z2e2SXukNUyalOubK19lv2xh1nK1Y0LfKfbetYmHA3FGkXR3XW/eDUj2d9h+aSkGX9RTn3Cu8fN2PnyqOqfc1/PsjHq8aHMtmKQJFGysuht8l6XJ333GMcq0DxoPEzHZXDGp4nqQ/1371D0k/9Mycp9Y/bdFc28ao49Xekze837Yx6jhDMRuwySy6TnVxPOyoHWdKOkER2J+pGLDyoDeY7WNmW/beuGlQxxKSHmlyE8vMHlOM0PuOpLNL3lszW08xUvooRUBQihtq71Osu3FZaXuaSOeF96e/fYWGAsaPKnKil/Rzf6bo557RpJ/bp77/dfeDx37mnOfPOTdb5L2/1d2/mR6XHpOrdF8bKoLHWem++hyL5/xKzfpRV3mkYJnTr2zQB+ki7Vin/e3SPm4X/epUz1KKm5gbKPqnCypmpFxSGBMqSpM6Ebp6jwr/5mjroN3s7i8uqOt2tZxt2ea6wYansJ2m6IM1zVXf+rWkehqntkvlF5H0r+p4nGIJC5T2Sdq2Q5rHgtddsVj1eEUvGz1aL3+Zu7+yzQmkC9Z/UY0PuHu/i9uR6ujkIrZWX2mnoO80hlo7Gk1nKG1HT9kNJa3m7kemkSGLespjOdHSqK03KoIc/+PuS03w319W0qGKGQvLSLpZ0sdLguiTrRbsWVDRKb9Wsb+8VJE/c8OMOrpcxGoTxYKk6yvu2B/l7rfklk91nOfuG5WUGQ8WCw29SPE6pJiWeaOkFSTd4e57jFK234286mIp60Ze7cbEu9VwkTPrMP1An7qfljkFu2Zmb1Mt3YYXLvIxwv6Xvd+lY8Cm3mLaX0c3i1dUjECpVm7/neIiOHtxoK607QelOjrtPzRsw4ckfUGResgUNxi/7O5HFNRxrqSXKdaYqB8/svoftWPZXL9S+aCE69z9pbV/F5X0c3f/n9w6upC+3wcozlMu6RJJH3X3OzLKLjna771gBoiZfcTdD8p9fp/yv5P0kepcYJHr+Xvu/qrRSw6rY67+ZIO+7ssV/fXLNIk3elJbWh8PO2pHtdbNddV51szOd/dRF2TsqWMJSatp+MjtMReMtUgjcaLHTK8FFCku1lYstLqdu59d+Fq2UAQ311Pc6L1YMfjlnMzySytys1eDoG5QpABqPBrcGi6ibWbv9IZrn9Tq6KKf23igh5ldpwhKPibpTsVaRrPT77LXIErPP0uR7qsawbi9pPe4e0m6r9YsBs5toLhBu066Pj2zJEjZReDZOlhUuOXfbx2YNbPbFANtTlLkqr+i6XWtme2tmGXReKajxSLLx/jwhc23Lblh01PflCY3jazdgKTfS3qJ96SRs5hFdb27r1bQjt+5+6tznz9CHY2vG3rP7y1jSl28lr6p7Ur6D2Z2qaRNqu956lue6e45s9A6a4c0jwWvzdrne7LIg7WfpPndfRWLlVW/XBIkTXeUv6O4CF1fkepihrtvk/9qhtW3s7sf2rDsAqotqtF70Miso/VFbK2uopOKjdOq4WZ2hjeY3mWxgMwMRR7P1c3seYoFGxsdeKzdCPD5Ja2eHt6qSLPwr4Lyy0j6mqTnufubLPJRvcrdDy9sx66KnJlPKU6m2aONUvmFFVOjVnT3nc1sNcX7mx3A6qiO4yXt4+7Xp8drSfqEj1Ou4oz2PEtxU+Kzku5RpBD5iWfk0DWzfRS5ok/Q8PRHJSlhujie/lZxU+WJ9HiaYkr2porOSvYFQhPWfxRqxT0v51y12viu6d/qAuU9kh7zzOn6XegqkN7F/pLq6eI78g3FtNZj0qZtFR3hVquRlzCzwxXnyV9p+MVFSc7a1jeLu9DFcb2LflCtrs76D01YzA7awNPIMTN7jiJn5QsL6uhkUZ4u2NDgiEslvUPSXyXdkHvhZzHa6Hh3v6RlOy5VTEmvZglsowgCjxn4sJj5UaUw6OVeNutqtiKAdWx1YV/CzGYozpPV6O1lJW3tGYvXWqQI3EAxArye+m1xSW/3shGPlytGbF6vocVNJ/RGT60trY+HHbXjUndf38x+o1h0/c+KG4IvyCz/IcVU7uUVF9PrK0ZN5pz3b5S0lru7me2sOC9touhzH+3NFxZ8kWKa+R6Slnb3hRrW08UClE0XJt9dca57VNEvXUfSnp7SvBXW1aaf2zgAbmYfVKyp8g9JD1TXg+km0n5eNtup9eyNVGZpDb/JUpRj3szeo0gpuY4ircG7JH3O3X86akF1M9CjVlcXs78apy8xs8+4+9d6thWl6DOzvRTfq+Uk/V5xc/YSSVe7e1HqD+tmdnEXC5s3DjzX6mgzIOlzivf0/zzllDezlRXH9tkl11LWcrZlWzZ8QELvACv3shnKrV+Lmd2sdqntOjmOddEOad7Led0635PiYLmeYrElufs1ZrZKYTtmKkakLCfpXkWwZtdRS4xdX3HwuhagWMnddzKz1SzyEZcE9OZcxEpqdRGbFOUSHseLw23NzBrsYG9X5L66SpLc/c9m1iYHVKMFYMxsI0Xn5C7FwXIFxZTKMUeU1Byl6IB+Nj3+veIiriTIcZZiUZ+1FBcIR5jZBe7+iYJ2HKmYolbd3btXcWIsCaR1UceLqsC1FHnS0/d9TGa2r+LEPatn+0clPdcLp7mmAMv2iry5VysCexsqPuONMqqo3od6Z6A0P1oXx9PlFGkl/p4eL6IIqj1pZk1upBV1QL394mbyoQV9Xt1zk2pPi1F7WR2ujgLP1WvvG0jPaUfSxf4idfMdebOkl/nQVLWjFd/5kkXkVlfkl17G3dcys5dKepu7fzWzirvTz/zpp5i7n1PdBFDDm8XWYjRrzVFqeVxXN/2g8eg/NHGvIshSeVQRJMk2GUHqUZxmZs9W5N68SvE9Oayg/FWSPp/2mZMlneBpxGEhc/cf1x7/xGIx7TG5e/F3aRTbKAJYs1Mg+0jFaKEx+3YW02Jfo7gYr++3uYuszq9Y22aahucC/YcicFTiCXcfaeHHidb6eNiRr6bg5scVaRkWV6Q0yLW74lx0qbtvnALHudcg/6l9hzZT3PB5UtLN6SZ8EYtRwi+TdLsiT+r7FKPsm+piAcqmecA/6O4HmNlmijytH1Da74r+eMt+rsfo97NrAfCzzCwrAO7uR6SbIksrZltW/pJeT4mHLBbfraf7Kkmz8TZFTuPnKUborqSYxbpmSSPc/RiLPOJvUHy2W3p+KoLenMr1a9Oia4cu+t1qkTe7N3CdFOXNdvevV/9P58oNJO0k6TVm9qAXzP7o6Hw3pR6zSOeu0mPzguofeN7RzDYeLfBcs6qk1/vQgKRDVBuQNFpBd/9q6iNckOJTUgSA9/Py2VOLK6556jPOXHHTJUub6wZ3L8l5PpbWr0UxE+e5inhMU/+s3xS1mIWWPSCyw3ZI7j7P/Ei6Kv17dW3btYV1XNanjusm+XVd3bDcCYr8yjekxwtJuqawjisVIzjr78f1hXWck7NtjDruVIxoG/aTWfYLisCkFKvInyvpYUUnYZPCdlze811bpM33Q5HvrUm5KxUjJavHq0u6srCOK3q/Xw2+H1v2PJ6myIFdUsfsPu0o3W+7qOM4xQXBRoqp5T+UdFxm2ZskTemzfUq1/xW04+epvr0Uo1jnep0T8dPR8XTHtO8eqQiq3aFYwG4RRa730jZdXVomlXuO4u7+VWnfOUDScwrruEbShrXHG5TsL4oLkpUUK1zvK+kl6ecbkr5Q2Jbf5WwbpXzr/aXD78h1kpasPV6y9Jgq6XxFsLXejqL9rumPoiMvxSjYuX4K67pUcSE/Lf1sr9QnKaiji+N6J/0gddB/6ODz+ZEiMLK3YlGyqxSLJ31M0sfGKHtR+vdRRUCy+nlU0j8m8nWM0L4FJD2rYdklFRfj50i6rUH5b0jaU5HbcCVFX/Pzqd4lM+uw9B3/fHq8oqT1Gr6eKYpFqP6kuDnxpZx2KNIUtf0cVuppx+IN6thHsTDXstV7mPs+8jPie1odC69R5O7MPhamY/FakqYrrhdWqf3ulgZteYWkqR2+tqs7qGOuPmtmuevSvwcoZhgUt0cd9XMVfbvdJc2WdKpi5PFBTfZrSXs3fD9WTH/7wfTzi/oxIaP8tel1XJ0ebyzp0Baf68KK4PP0rr5vhX9/GUXw+fT0eA3FWkgldRT1ezLqO6Jhueenc9Qh6XN6UNJpDT6Pz1WfqSKN0eaFdeynCDq/QXEj4URJ3y6s47eKGdrV42lp21RJN2XWcatqfQ5F/+6W9P+rC9qymKTFxvu7OEYbJu26YRxey7mS/ibpN+lYdKpi3b2SOmZI+oPi5uqFihut6050O9x9nht5/d90Nyp6xZHvqTSnzw1mtp2kqWkU1W6K3GRjssjbs7Xig/ulpE8q8nj+QdJXvPlKym9tWO4F7r61mW0rSe7+LzMrvdP+hLv/vaeY5xS07laDl4bfBV5Q0laKzn2OrRWjAqW4oy9Fh3R1xejlktx1J5rZDyQ928x2kvRBRZCzqaYjwOfz2jRsd/+9Rf7rEv9MIx+q/WV9DY2QzeI9C+B43I39Sv9nj+g/FlPLq3a8QLWpMxNYxwck7aKhFYMvUHRYcrj3yR/m7k812Oe+5+6/HeGPZI3Ut25SwrQ+nrr74Wb2a0UHwSR9xt2r6dmfLKkrubpBGUk6XvF5vjM9fo/i5t4mBXXsqJhZ8Kz0+BHF/p/FOxrBnSxiZhu6+0Wpzg00tBp4ji72F6mbc+7XJV2dppqa4pxZmjJkYXe/vGdXy87XmtpdLaRbn7abM9rodYoLgH7naVfZ6InGo1lrWh/X1aIf1KNx/6FDf0g/lWp67Jgzpjytd+DubWZXdcpquS/d/d9mtrAVLlaWrKoYhbWyIohUauv0b++K8h9UfMY5U6J7Z248qsgxWjJzQ2nE1AcUszhO0tAIzt8qRruO5ndm9j21SLEl6etmNlMxQvBKSc8ys++4+7cK6tgu/Vs/9uW+j51qeTzssh1HK3L+P5IeL6EI2OSed+9NsxR+oRiV+zcNX9xzNHtI+pniWmF/T+vamNmbVdAPMbNPufu+7n6FmW2loVGPMrOvuftncuvqUTSLtfY3F1T0ZdaUtGB1bC54TyXpSovFNFeRtFeafVp63u+in/tzxTHsx4oFz6rRfiekWRil3qa4yVnEI71Hm9lE/3X3v5rZFItcxOea2TdzC6eR2wcqbrJ8TjH77X5JK5vZp71sccHnKG7ybqg4/lykmC1VsnjrUWo4+8uG0peca2bfUkd5swu/3zKzkxUz4P6umAH3O0kHuXuTc+WRaj/T8ZOKc+0uin7ymSqbcSV1MxN2X0nXmNl5Guqvf81isb/sWIq7PypJ1jzvftvZllLL64audPRa9m7Zhraz0DppxxyTeSdgon8UAYlTFQeGfRR3iLYqrGPhVPYKxZ3cfRQL6uSUPVHRaf6F4o7O9xWL6X1V5XfqurhzebFitHU1Ou4FSiOHC+o4XNGpvk5xt/AgSbMyy+6uGHX5b8WIyzvTz7WKnEdtP++LMp93de3/J0n6cO3xVQ3+7qaKKbv7KRa1yS3X5QjwI9Jns1H6+aGkIwvrWEdxQv57+vf3kl5a8t6rgxFp6f08X3FH+xhFKpSNJrqOlt/FKxSLePZuX02Fo6XVzV360xW5665Nj6epfMZE6+Npqmc5RafttdXPRH0utTbMNSuh9HOplVtcDUc7pvLXqMUI7lRm3XQcvSv9XCNpnYLynewvHX5HllVc/G2hSLNTWv50xfmtOte9S+ncmVn+TMUF/c2KYPQRkr45Ud/PWju6GM3a+Lheq6NxP6innsb9h3F4bxdTLK7cpOz6qo0SUqSKeOUkvY5r+my7uqD8NyXdpliA7gOSnj0ZryO1pYuZG1cqRo9vpzS6tva7n2eUP7fPz2+bfCbpePgdSfNpkmdstvxcBuV4eHXOtsy6XpfOMfNP8Gu4qt//+z0epY51RvspbM9PFTeK/qAYzHOmpAMK65iS/vaz0+Pn5J5jJH2q9v+ten73tcJ2vH68v2+Z5fZV9AvnS8eihyRtX1D+7HROOUgxA/QAxboMueWvVQzGeoUiddvz0/alVd7vP0vR51gl/XxO0tmFdTSe/TXC8bjpcfnV6fX8XkMxiNwZ22+TtFTPtuK+aSrXaqajGszgHaGeTmbCKvrrW0jaUhH8btOm4hhMKtd61LRaXjd09dPFa+moHedN9N8c6WeeWrBRmrMYRpXv6RzPz/fUxd++weOuyTRJ97r7c2u/u9bLFm85XenOpbuvneq82t1fUlDH/yjufK6h6KC8WoULSKW8RJ9V5OIxxVSAr7j74wV1tFoNPtVRz+02RTESe5ec99RiYaEPKe5E36qYBnFn+t0t7v6iNm3LZR0uAGOxEOeuirvjphhVerCX51idpqG7bLd6+V22TqS7/eundlzqDWYptK0jjTD8umJ/qY82ylkg5E2KjudXFRfTUnxH95K0h7v/uqAdJ6Q63peOJwspFhl6WUEdV7j7K6y2oIc1W0Cm1fE0jR7ZWpFXrRqZ4162AG7jhVtqdeynCMKdmDa9S9Ka7v7FjLLbu/tPzKxvPlIvXMQq5RE7QjHdTkojuL3BiBIzW1wxWrd0ZG0n+1yqp9F3pOeYPpeS98MiV/ShihsBf1N00Lf3tChMRvkr3X1dM7vOU+5xMzvfC/IadjHbwfov7FPJ/s4P0HG9df+hgzaspRiZV83UekhxbL2xoI6rFUEiT4+nKC5I2+acLWZm10lau9aWqYpA6Zj5UdMsoM9JOqTp/t5T31qa+3z5o4Lylyn22SvcfZ004vdML1uE6vlelhO+c6lv9zJJxypGlJ7foM/fauHJLnVxPOyoHdcqbqr+LT1eUtL5hddBSyjWhJkzEznn3GJm7xvl1+7DZ8iMVk+9D3Z1/bvd+3iUOqprtgUV/cprFcfTlyrSK2yY05b636w+W4sZm7/xwlH16X1dTcP3/THX3LHaIpHWs2Bk7+OMujpZeLpW3xTvM4Myo9w17v4yM3u7IqD3UUnn5u7/adTqvxTXtu9R9A2P8czRzj3fsevr+0fud6z2/Cvdfd2ebbM9czR8ev55ilmOZ6Xj+vqKm18Tffy4RX3yZue+r33qa7rA6cWKPvLv0vvxAkVKypJr/mMk7eWFi3j2qWdZDc2EvdyHZsKW1LGchq7HJOXt+yPUVfT9rJVrfY3b9rqhK21ei5ld5O4bmtmjGj6rscnCkfsojj3Fs9C6bIc0jyzYmDo0lQc0tGiCzGxJd384o45favTFtHKCLf9Jz33CzHoPCEULDiju+J1oseJtVWfpogVnWizeUAUodi+9YHH3xxQXn58d67mj+IuZLebuj1qsNruOpK8WBmvqi0k8oRgp+O7Msnuo5fS/PjvknF8pf8fsbAEYjyD1d9JPETN7xwi/Wt3M5GUr3B6geB2XNGhHbyegmvK3opmtmHnAbF1HzZGK6XL7S9pYMSotK+WHu59uZlsqpnZ9JG2+QdI7vbYIZKYu0v00Th3QxfG0ZkvFxUSTlBSVxgu31HxYcZHzk/R4iuI9+pjG3n+rdBydpA5w9yslrd0k8DxSIN2Gpv6Oejzoan/p6DtSHdP7XpArbsxlScGrTdJF4BRPUxILVMHd+8zsLYqp5csX1nGUWi6U6C0W9uniuN5RP6j+/C76D20dqshtfa4kmdlGiplKG4xSptew1F4e6aAmq3/9G0X6slmKz2qmYhT1mNzdzWxLdy9N7TUXM/uiYtbXGpJ+LelNiinm2cFrxVT3kyUtnS6c3qUIrpf4kJnt68NTS3zc3bPrSft8b4qMkjROP1D0Sa9VLEa1kmImWonGC0+Ogy6Oh134tqSLzexn6fFWilkgWczsK5LerxhhOOfmufIWn+uXusYU6aGW09BiyWPxEf7f73H/CtICeGZ2vKSdqz5lunlUsji6NPTZPpLK/0Ux0yebmX1IMbN2ecWsr/UVqRVy3lcb4f/9Ho/lSLVMx2BmB/Y8lqKvPNvdT+lbaG5VysY3K4KSD+d22dPNx1PcfRPFdzQ7xUfNlHTcmyLpKRuepnNKYV3nmtk2Gj7Q41eFdXxMMSPvBRYp8aarcAFb6yZ9yd/d/fSSvztWsxqW+6LiHL1CCkK/WnFcKrGspBvN7HINDyyWpquZophxOU3Sqma2akng2UYYkKQYQNfEumM/pa+H0k2A6hr3XSpcJLCD64auNH4t3m1qu+o4Wu/7ZJ0vO27HvDHy2mK0kisOLCsq7qCYpGdLujvngtDMqjuC71CslFkFObaVdJdn5CUzswcUuVVNsXMfX/1K0rvdfZnMl9TJnUszO8fd3zDWthHKdnYRW7vDv6FiZOt+ity3r8ytY7KZ2S8U34ufK4K1xXc/rYMR4GZ2vUb/XF6aUceR6b9LKw5WVd65jRXTRkYKgvSrawfFd311xUXoCe6elWvOOhhN0kUdtbqq0UZzRi6Y2YXu/prcOnrqe667/6VBuS7u0q+rCAyspQiiT5f0Lne/LqNs6+Npra7TFVND/19umT51XPZ0OlaMZKTAc2WswHOq48Pu/oMUOOpXx6h5MLvaXzr+jhwvaZ/eC3J3f39G2b7vZSXnPU31bK5YoGQFxQyKxSV9yd1PzSmf6mgzeuL17v7bkQLQmYHn1sf1LvpBqZ5Og+BtWJ8RsP22jVHHzyWdp6E1EP5X0sbuvmVX7SxoyxTFwn6bSEO5L9ON8Jzy35d0lLtf0bId10taWzEjcG2LmQeHuXvRGi3WfnbPnP2tti17hFy6CbCwYj85TBFkudzddyxpR596p3msAVJaboqkzRXftacUo7EPKLxp3EoXx8MO27KG4uK5+n5k55w1s1slvcTd/9OyDaYYEftpRX74fXL6Uqnsk4pgkynSOD5W/UqRiil7rZp+55Pcc0zt+R9SpE98qSL4u6hiwehZBXVcrwjuX+ox4vhFiu/H1mMUHbZv9u6nJfttev5sd5/Rc84tPbYfqsjzWuUif6ciMLeCIsXEHhl1fEMxUONfilGtz1akCs3qt5rZqZLeWzKQoaf8XYpjRb/gqnvZLMVHFQM2qsDkFA0FS8ca6FGvp9XsLzM7SxEQrfog71HMwhhznZraII13KxYj7CRvtjVbW6Iq23ZmcN/Yj7ufX1BHFzNhb1WkCGo8IMnar2XQatR0V9cNXWnzWmp17Og9szzN7BvuvmeXbZ2odswTI6+rC+XUCT3V0xR9i6n8WQtyVQcAM/uKu7+29qtfmlnuHaX6AmS9AbzSxSMa37m0bhZK3C/92/ciNrOOSnVR9RbFdNVTzGzvkgra3IW1Dqb/ufuWFgu1vUPSD9N7fIIikJ17UbGH2i8As3nm80bk7h9If/c0SWt4WuTEYjrR9wvrOlrS0RYjMd8p6ZsWIzhXyyjbejRJF3XUPJ4uHG+zWCTtT4pAUFO/VswyKNX6Lr27X5k6O8Wdxy6OpzWPKRb3OEfDO4+7jVXQOl64xWIRjJU1fKpbySyD5RUX8q/W0DFod3e/N7OK1iO43f0H6d9Rg9SjlO9kf+n4O/Iir81OcPcbzOxlmWWr9/KFiovpKrjyVhWMBPGhacZ/VwSxmmizUOLr1HLRxy6O6x31g6Ru+w9t3WFmn9fQSMntFRcHJWYqbgZ+TvF5nKMIIE84j2ntsyTNMrN1GlyIbyxpZgp4VEE194wb3z3+5TEC/QmLWSQPqNnigrcpRilPk6TUfygZHDDVzBaoLqYt0mwtUFB+A4/BFde5+5fM7NsqW2RVNkLKIBXMukj1tFl4sjMdHQ+7astNkm4ys51LAtfJDYpA4gNN/nYKwL1f0scVs4He5bWF0nO4+9Qmf3sEN5vZYYrjqSuOZUU3e9y9WuTtfDVfDPRxd3/czJT2vVvM7IWZZdc2s38oBfPT/5UeLzhysb66WHh6VUXu7CdSHYcobghuKilr1qS775kCg//wWPzuMUVO4FyPS7o+BWzro2rH7Cen561c8LfGqqtx/9Q6nNWrWOOjPkPoqxazW3N8u+dxPeVJ7swLSZKZnaS4gXh6aeDaOpwZ3BuktkinuJ1iP861pdrPhL1DMdOgTR0v9VpqLHf/m5kVpQ7xdqOmO7lu6ErL11J5l5k97u7HSJKZHazy46ms/Sy0TtoxTwSva17h7jOrBx5T+UunR063Wg49M1tFEWwck/dZ0Td1uA4tbIPc/aqmwSfFFPk9FIHqKzUUvP6HJv4iVpL+ZGY/UAQ1vmmRr7l0KtPxioPKO9Pj9yiCxzmBkk6m/6W74kemu4ZbKwJZCyozdYe7X6q4w9+7/deKQGdOHX/MeV6mlX1odW4pRoSv3rCuVRWvbWXFyJQSbYJXXdaxh+Kmz26KBW02Vixo01SjKWbufpaZXaUW6X4sckWeoBgJ/4cm7VA3x9NTNdQxKNVlB/QIxUij3qluJZ3pIxU5TbdKj7dP2zbNKdw28FzXQSC9i/1F6uY70viCvHovzexMRU7iOSuYa2gk1YjM7CCNPkI46+IxaXzD2VPu9SoA3dPGd85dYlRdHNcb94OkzvsPbX1Q0pc0tK9foAgQZrGY1v0dd99mHNrW1mEqv0H6po7+9mwze7YiBcuVioXCLi+pwMw+orhZe79ikIMp9seSQPpPJJ1jMfPAFZ93ydT7f6V/HzOz5ykW0S5N33OUWqYMskjx90gqs2ctwHBZClSMu46Ph12bqRidVuLrkq42sxs0/Mb3mCMNzWxXRWqMcyS9seO+d1MfkLSLol1SHMsOGfnpc0v77Ps09438ks/23lTPLySdZWZ/U6SWGVPHwfwu0jEspxhYUN1oXkRxE+pJMxs1QGdmn3L3fdPDTdz9p5Lk7v80s89KypqppFiM8EJF3/RJDR2TGrOG+ZlT2aYDPaqb731nf6msv904fUk1SKMjhyj2uwPN7KeKWUu3ZJbtLDWeJKU++naKEeV3Km5wlugi8Nx4QFLNFDNbwoevZZAVr7QRRk1bZurE9JxW1w1d6eK11LxD0qlm9pSij/ewu/9vYXv6zkIrqaOLdkiaN9KGVMzsN4oTQP0i+LXuvllBHW9UdJCqBWBWlvRhd/9Nwza1OYFsoLlPICWL4XSxUOLNkt7ScxH7a3d/cUEdC0t6o2LV49vSSLCXuPuZBXW0XkQilWkz/W8Dxcix1yiCRSe4+4UFf7v1CHDrNjn/9xQLrhyX6tpW0m3u/pFRCw6v45uKg9UfFBdrJ3vhYkNmdpxitEF9v13U3bedyDpqdS3i7v8c+5lj1tNmilmrBTEscm5unX6eUnw2J5aMaOvieDoozOwmd1+jZR2tp+ymMm0Dz9WUymM1fDTpe9w9K5De1f7S0Tl3QcUFeRXkvEAxQ6dkUeBbFIvYVaMvF1Cs5j5qKiaLtEcj6ndDeoz6hk2VlfQ2dy+9wOit8253X7Hg+V0c1zvpB3XRf+iKmS3qDdMXpe/5W71l+oGuWfPFjjaUtJq7H2mxSOKinmaCZZafrjg/3e7uj5jZypIWz+1L1eq5XdIrveECWrV63qihgQxnlXxPLUblH6S4GVoN7jjM3T+fUXaax3o0nSwe5ZO/8GSnx8MuNfmuWyyk+QPFCNo5C/F5xlT7dPH9gCI/7FwX0l4+U6ETZja/4hzjapaO4WJJl2ru96TRZ5sGWT1L0hmTcXy09ukYdlTMqDkv1fFaxSyK4yTt7e6fHKVsqxQoqb/wNcUNtz8qBnWtoLgR9pnSz7an7qbnhr4DPbwspcNpknbyntlfXpaSsnX6Eusmb3ZV17MUfanPSrpHcdP2JzmfkbVLjbe6Yj2EbSX9VXEt9wl3X6nBazhJkeqrceB5pHNEyfEjxUL2UsxEl9JaBpkxkCplYt9R0+7+oYJ2NLpu6EoXr8WGrz+0mKRTFN/zL0iSF6Qbs6EUv9W/i0r6ubv/z0S2Q5r3gtdLKg5U1UXw+Yo8XH8rrGcBDY2QvcXb5fZpegL5saQXKBbDqNJueOFBZitFh6LxQoldBvPNbGkNn4pQEkjbT5F6pX4Xdk1PI9YyyvdO//u6F0z/s5hi+4hiBPhvFYtGzpHznlqMaplrs9IIcHef8JkSFqtjzwkaufvJBWVN0ek7pLTD2FNPv+DVwSX7XUd1VNN8F3X3Fc1sbcV3PfuuoQ2fYvbUWM8foY7Wecl66ltN0ucVwc3sUS9dHE9tKDfyMF6Wg691B9TMDlfkVCudFVCv42zFCLtqccJtJX3AM9YQ6KmnVeA51dEqkN7F/pLq6eSc25bFKKd3K/Luu6S3K27WfK2wnk5uXNXqKwo8j1DHPe6+QmGZxsf1Wh3D+kGSnu3u9xfW0elggCbSTefD1O64/gNF/+lUDZ/WPaG5EXtZLL74i8IyX1SMAnuhu69uMdr4p+6eNbrXImfu1xQ3rFdRpB9qNLvGIgf/pt4gN3RPPcsocs26Il/1mGkizOwVku7xtC5FuqDeXvFd3zvnYqsKUFk3a9QskOpYWcNvWpdM2e1U18fDNsxseS+4wZvKnF/yGfSUXU3SMopAVd1Kkv7s7rc3qbcNM9tIMavgLsW1wwqSdvCygQ1tBlQtOdrvSwMUXbCWAz1SHcsqjh+mOH5kjSLvuVk17Fo/59rfzPZXBHo+6kOjPxdXpN16zDPybdfqmippN3ffPz3+qhcsWlurp4uBHje4+1q1x1MkXVffNhGsRd7snnqeozg3vFcxw6BK5/QSd98oo3zj/nq6iXahpB2rY46Z3VFyDVWrq3XguStmtqakjaXytQxS+TMlvbO23yym6Me8saCOTq4b2mrzWmz4+kP1fyUVX2tf5u6vtFif7R2KmyU3eEYa2C7bIc1jweteZraipK3d/VsZzx31jqCX5Wqq11vc4UrlblbkrWz8AVpHCyW2vYg1s7cpps88TzGSYUXFTYE1M8pWI4xNc9+F/X+Zd1/r0/++4Q2m/6WLk+qzqNpTcXfPTmGQ6ms0Ajx1qPdT3Ni4TtIn3f1PJX97hHoXURy4t3X3txSUm2tEfAdt2TC1Y9eJrMPMLlPcFDm11iEd1gnLqGMTxRSz9RXTj0qmmFV1tF4QI9WzsuLEvLXiBtgJ7t6biqOkvuzjaa3Mc2oPF1TcYV/S3b9QUEfrDqiZvVbSLyX9RTHioDjPa3r931PkMnVJFytGTBcdT9oGntPzOwmk1+prvc+lepp8R14taW/NfQFa1tmJ/ILV4qoXuHvuOgKd3Lgaod7iwHOfOhoHwJse12vln6UIqG0n6cXuvlyDOloHwdvo6Lje9ya5d5ACqJS1WIg7PfcaSS+XdFXt/bgu91hokYJhY3d/0GKhoWPc/VWFr6GaLrumYtTRrzR8JFj2TQEze7ekb2lo5ORrFP2in41R7irFVP+H0/nheEkfUeSWfrG7j5nypwpQpWPPQWqwQHKtrjMUqQuu1NCAFbU5Zzc1XsfDBu3om0vcexaEGqX8dxTfq1NVuF6GxejRz/R+hmY2Q9IXvXBh0i5YpJbZztPAG4tRmceV9MHN7KOKFD+nafh7knOzph6g6OVNAmptWEcDPZoGwK39yOvbJK3ee52fAtG35ASNesqdlxNMHaOOLgZ69M7+2kYxSyd79leqp+06Na1nbFss1vwixWCTo7yWki23Lmsx09FiIMI2ijQsZyjOU4d5waLoXTCzE9393RaLtbaeiZK+48to+GdbMqCxk1HTba4butLmtZjZeoqb8NUshx0Uffa7lHkTvlZXNQvtDYpZaK78WWidtUOa93Jey8yWUgRItlXkssodcdSbq+kcxQm6OFdT2w5XcoNioaP7xnriKFovlChJ7v5vi5HH71QEoV+seG9zfUURzDs7dfQ3Vnw+OX+78eIRNQcpguYbKnJu9v6NMQ+6bTsEFWu/AMwRkn6kCOa9TfHasqdi9bRlfsXCQNsp0rqcpFgIqsSlZvYKd7+iSRtqbXmZ4juxtSKXV/HNoi7qcPd7er4fT4703BHKny3pbBuaYnaWmRVNMVMHeclSwGY+RQB9K284HbnF8VSS5HOPjv6umc2ZSpSpzcItlSMUoyaGTZUtkTpWjUa/93jIzLbX8MBz6TTGDyoC6ftrKJCePa1T6mZ/SfW0+o4ogiQfVU/QplQKSFxlsWjTtmb244IA5XclbaY0bc/dr00Brbaybj6PdEGg6IMsU/IH2x7XLRbAelsqv45iZNiWariQTQf9h9Y6OK5PeJC6l3WzELck/cfd3cw81bvIWAX6lH9Qktz9jnShVarq192dfuZPP1LmPlPzWUXu/QckySKlydkampI8kqm1C6qtJR3qkeLnpBTgzzG9Fog/WbF2iSnO3ZsoBhjkWt4LRo2Ns+9qfI6HpY5Su1zi1cjX9WvbctfLWLnfzQd3n50GBkyG+erXC+7+ezObr7CO/yhu9nxWwwfkjBl4nuiAWYYt1XIBupEC4Mo737VdfNJ7A9dp45PV8bnQ71Lg+AQNnyGUPdtaMbL/EjNrPNDD3f/PYkBgFRQ81Atnf1k369Q0zptd8z13/22/XxQEwfvlqs9KKZnet5PTeXpLRV95GYuFRU/2svSrbWbCVm3fPPfvjdKOLta6+LGky82sPmo6O61upeV1Q1favJZZSinT0jn66xq6CX+oMtfdkaTadfZJ6ebtgh5rvU1oO6R5JHhtMcT+7YqLrdUVncjnu/vyuXV4WigpfWBreE+upsImHaWWi7dIWkqxwvblKlxopKbVQokdXsT+193/amZTzGyKu5+bOgxFLEZwVx3o83xoRfSxvFCjTP8rbUetPYe6+84Fz+9iAZjF3P2H6f/fSqOHipjZpopA02aKhUJ+LGk977NYWIaNJc1MwYl/qqCjY/1zeZkXLLbRRR0191hMMfcUANpNhSu5pzbVp5hdraEpZjtI2iijii4WxNjBC0d8V7o4ntbqqo88maKYrl56Q6qLDujd3nxqe9eLWLUOPDcNpHe1v3T5HZH0d3c/vUG5enuWVVyAbqfoAH9dmTdIK00DnB0Fnru4IGh9XLdY9Oq1ks5UfEd/qxgxdV6D9nQaBG+h9XE9BUQ/pblXYS+acdVS64W4kxNTv/DZZraT4tjzwzHK1C1vZgeO9DjneOhDCyZt5WmRs4pFursSU3x4mpC/Kq+fO9VSzmrFSKN6Xy732mmqpEU190jUhTPL111sZi/x2kK6k6ntDZ+OLOXuJ5rZXqlNT5hZdjsa9gMrowUfF2pRbxuzLUbGVinH3qM4FpT4mKRVvUWqP0lKwckqlduFXpi+qCOtB3qoRQDc2y8+eZOZvc971rJKgxua9N83SP/WUw3l3qyptB7oIc0ZId1oQESyvrdMX6I4Z35MQ7M2p0j6Z7rh6J63RtSlFmlXV3T3nS1mP7+wIP4gj/Vb9k8/1UzH70jKnunokb7pGEnHWKTveZekPRV9tVz1YPucmbCZf/++9G8XC9furngPG6914e77mNnpGrpB8oHSUdNdXDd0oeVr6eImvKQ5Mapj3P2RNOhkYctfu6uzdkjzSPBaMar2ckX+3YvSqJK3N6xrZa9NC1HcGVq9sI5WHa5k78Ln9/Nuxcir/TwW1VlW0oiLT9R1eREr6RGLxO8XKg68D6gnZ3RGe76hSGh/TNq0u5lt6O57ZhTfXzH9b9hBN12Q7q+hUfelihaLVAcjwCUtaGYv19DF0kL1x5l32KtF1jb0tEiTmR2Q9Qrm9qaG5aTonF2oWAiryuX10UmoozJT0gGKUYH3Kr77RWkUbPgUs7fWjiUnmNnszGpO1dDCDUXMbHt3/4mkN5vZm3t/73nTsbs8ntanPD+hGOFbGpzoogN6i5kdq0gdUr8hkNO5zv3csjQNPEudBNK72l+6/I6ca2bfUlzolE7t3knR2VxecXPjQ5JO8fKRsm0CnK0Dz/0uCMxs85ILJHVzXF9L0t8Ur/2WpiPAOu4/tNX6uK7od5yg+KxnKm5EPthhG8fk7gdIOsAaLsRtZqtKWsbd90s3Ov6huLF/umLEcK7ePmRp8KxuL8XsoLG2jeYMiwU1q5ksWyte01iOk3S+mT0k6V+Kfad6n3JHG93nLXNSW6RheUpxvfYBM7tDDUc8dqiTG/kd+GcaDFDNElhf+Z+NLGbA9a7J8OXM0WRXmNlOtcEiVZ07qt13vo1dFMeu3RTfj+wRnDU3KgZINGZmB0taVUP73Ewz29Rbph1roIuBHl0EwJvaVdLPzeyDiu+UK65zF1IMDijS8mZNpfFAj0raTw9SzLKaX3GT75+ZffXKJWa2hrdIX+LdzNw+UvHZVDcG7lWcn0r6Zo1nOlqszbBUfYCHR6qrvygznlMr13ombLpp9U1FlgLT0Hmq5LO9RwXH8ZE0HTXd4XVDZ1qMAO/iJnxlJ3efMxDC3f+W3qus4HWH7ZhngtefUYwmO0TSsWZ2Qou6zqt1hKtcTecW1tGqwyVJ7n6+RfqRV6RNWYvQ9HilYpTOsha5t89VfhqSTi5iky0UFwd7KEYKPEvD7wzneLOkl/3/9s483t6x3P/vz5dMFSVNFMqQSqZQoVEq6kiDHA1KneYTmqU6pOEodVKaiFBJJTo0kDFCyDw7FZUG9YtEhPD5/XE967vXXt+1936mvZ61977er9d+7b2etZ97XXvt9dzPfV/D53LRBE/SEURWaxnn9WyV/1X9f7SRAf4nImLb48a+x2Uj7E8mPtenFBulbxOLi8rY/m0RRV7H9mFFQOABJU9/WWHH6Qq9x2+zZAbTKMYAoMhEeVWdc/toXGLmZs0zeiXgwxZtZa/f1ubTYYtpSXsQ1Shlx2hjAbo8sTnp75pcqgRx8P+hmk2sWnA8Q3NHelvXS5v33F4Phv7ro+xc9kXg54QO6AUANe9TtR2cLTmeh7Ev1TZIjed12xtKWo/IRDmlCDQ/UNIjXDS2K0mb64dGtDSvP8T2oZJ2t30G4fQ8owXz6nCjpAe6eiPuA4jrFtsnAycDPQ3fAygZxB92f6r6+ZC0LbGmW02Ts7hXpGJig+33SnoZsCUxl5UqUS+ynU4FHgmcZC8u319ElLuWodZaY4DViNLacaKNgE8bvIsI5K8l6WwKLfEK53+NkGB8RfH4NYQzqozU3h5EuX5/dvOmhDOubqC2EUU23BeIa9fAtS4nRdfPvYTD93TqO3yfCazfu2aK/VgXFQO1Ez36aMMBXgtHv6KnSHoOUdUjotn7qXXGUzuSpU0SPXp8gViLHE1cM7sQwY4qNJYvARrrZgNr2d5J0s7Fuf/UYObZ1K/dRqXj/oTU6CBXEXIMpbPq1U4l7KeI5JcmwczrCF9bk14XTbKm29o3tELDv6WNIHyPRZLUN68vxYSc2yjtWFgNGxXNY3YmJot1iIj7922XdpQU4/RrNZ1ZZiE8cH4bzVtqNaEpzl2NcMrcyUR56SYU0VyXbPDXt4ndiXDUrkd0162yie2NtQbh4DxF0gpEicFtFc6/jGjSdnPxeGVCOqSMPMWvbA+9cU73XIlxHwzc4pIXmcazAcyWxDXzMuAS4no5uML5exM3wMfZXlfSqkSX3C0rjNHT8tqZuBEfQXUtr9pjtORU7I21ArHhqlxipqnlB3p2NMrAkrSH7QMq/H4r8+mQcSs3oGu6AJW0sis2jBgyRqMmVpqi03ePOkGLBo70xtdcMc6sfEYqvH6/3vbDiSyK17lhk8QW7JqxWVOJMS520VCvxrmN5vW+cTYtxtkR+L3tLWY4pf/c1tYPTSgCqm9kyfmjtFSPpHNtP7VIbPg8EWz+nu21Wja3jC21GnFrmiaVki63/aQGNlX6vBdz50ZEgKY/6+s24HTbf6thw4pM/v82mu9LvmYb95XGc8V8RtEn5nHEPqaSs1btNEd+NrGXA7hyquSEUSDpWcS9+jfE+/FoQiKutBTTVOuQKusPRYXhO3uB22J/t59LNKAbN9p4P8YFhfTAYcAHi0D00sDFVeZ2SYcNOeyK98sLbG+qvkbAks6puH74FbGXmiRfMixZYJoxhupmV/xbziEySc+2vYkiM/Yo25uXOPc+won3Bk9UOl7nCo1Np7s3S7rU9oYVxupPxOxVwn66ynpd0tlV9vdTjLH3sOMukfmsJbOmv0tkTZfW4x+XfUMbf0sxzlOZCMLfXhxbl9irlpaWVVTArknoV5sIYt9g+92jtAMWmPO6H0lPoijR6GiDUXvBVZx/KbCNB5rQlJmoFKLvx9k+fOD4LsDLbL+4ii3FuU02sW8kSghWtr1W4dD7iu2tK4yxM7AfkQUvogzwA7a/XeLco4DTPLz873m2dyoxxn8B37V9jUI7/ERgQ+IG8EpHo76ZxpiVzaMqam9PMcYiYBvg311NI/USoinORT1HS/+CpYYdKxOfsZ1cU0+06hgDi9ePEA64xVRc1H+HCBjtYnt9he7rz8tslooNAExkOPXrGt7h5uXJlZ3Gfee2Np9KuqHKIqGlBegvCSfeYURmSx0phPOIrK/j+z7rU17TJcar5Xguzm3kSB8Yq/E1V4xT6TMi6QDbexQ/7+6QReg9d7jt11V8/UcxkeWyAuGw3WuGcz4/3fNVAlcD49Z2PPeNsbnt8xuOUWteHxhjE6LK6RmOrOM6Y9RePzSl2Hz+jIGGoA49vrJjvKgY49FEYsKKwEfcsLy6Dr3PlqT/Bi63/a0ynzfNUhC/36Ya592PWM/1pPnqrJXfTDjB/0ncH3oZeqUdBF0i6fdMrqabhCtko7Vgy6zMh01QyJesyeTARKlmVpJ+TiT9nFU83pJw1jxtFkyddSRdSOw3ri0er0s40p5ccZxlqHHNSfoB4dRYiagK7t2fNgfOsf3cKnbURbOc6DFXkfQL25v1z8c1gjVtBOTOJHptHUJUB/+JcA5WcbSe1mQ9WoxxlRvqZisktj4EPIGoQNmS+Ft+WuLclxBr0i0In8G3gUMqOlpn7b5djFE1qelzwCOA/6V+Zn5tJN1NZE2/2xNZ05UCAgPjVd43tEXbf0sL9iwifHXPJdZRJxGf15H3u1jIzut9bO9T47w2tJoaLbiK8yc5M4sP1aVlHJySrrX9uKrPlRi31ia2cHBuDpzXd0Ot7KxVlFZsRlxU5wFr2D6vxHkPJxqK3c2Q8j+XyASTdCVFmZykNxET3XOJBeARLheFna0M8Day/H5ou7J2q6TzbW/es0GR0fnzBs7rNhzxtcdo6nTSRMZB/+KxanR8ich2S9HuSk7jgXNrzadTjFXJid7SAlTE9fp6Yi76DnC4q2UcnGf7KU3+t8U5jR3PbTrS27jminEqfUb6563BOazpnCbpcYTDdtpMjmLxeAWR8fBHmCwD4JrZV3Udz4rKjXcTlRtvVI3mQAPj1ZrXB8ZoJTO0DSd4zdettHkfdxQVXH8g5rMnE07b82eah9RCEH+ascs29Rk875nA12mWSfpLojS+UQO6rpD0J0J+aWgp+kxzWMu2zMp82MCebwBrEYHn3gbaZZ3oCp3ZIwhnq4CbCcfTpa0bOwI0JDFk2LEZxngWNbO3i+t1SkY1r6vFRA9J1zPEET5Xgl/9SPopUW11crEfeyrwSdvT/t8Gxmgj0WMNol/YMsA7ievvSy6yj0uO8SXgQTSQL1E0N/2MG+hmF+M8BHgqcb2cW/Veo2aVwV8hJEc+1P+/kPQR4JEt7Jer7sfayMyv3QBbs5g1XXbf0Baz+bc0RdImrpgt3SYLRfN6GNtTr+lhY62mqRZcxCK9LMOa0JRtqjNU57JwgDfpjnxIsYmtukC5y/bdKmSiFFnplW+IjuZ3izOdJJ0PzDjp2v4zsIUml//9yNXK/+7uu3E8H/h2EY26uvh7yjBbDWCqam8PY7Wa531X0kHAgxQZ9q8HvjrDOdNRtQlm22M0jfbdrci27mlGrUX1RjD3VzQj7WULbcGElnUTmvxtleZTSbdN8Xoi5Iuq0EbjFhM6kScX88A3gbcXgbU9bf+8xDBtNbE6gJhDji9su1TSM6Y9Ywi2b9Bk6b260fE2rjmofs/VFD83os/ZWmYB+kiKrHOiiuY7wDGuJ1vQhuO51xyolxlYqzlQH3Xn9X7a+t/UXT805YeStrNdpSnhJBSarrvbvqV4/GBiU1x6w9YidRtx70GLGr6SjiE0hU+o47gu+B/CcT4pk5Rwypfl1zRsQNcxjZs+tkhr82FLbAo8oY4DDcD2JcCGCkkZbN/aom1dcEHhkOt31lbdO3yGmtdcv3NazXsy1cYTciVbDiR17KnQRq9yPfWvf5YjPv8rN7eyE95NM414iISsXqLHgYpq0kqJHo5eSMsQ+/NjqKfNXrtPTR+t6GYTn4u/ET61J0iiSoDVUWF5JHCkJiod9yQyW2fi3UQG+6+K/QqE5NYviEaDTam0vnPNCr4BajfALgIHXwa+rIms6b9IupoGWdMV9w2tMFt/S0scQsgNd8JCdl7X3nDZ/pWkpQrn5GGKstMqNFpwFTa8V6G9vRWUb0JT8ANJXwX28ITuzP2Bz1Ktq/wgdd/TMyTtBSyvKMF5GxFNbUrVSfd0qjff7HGXpPWJaPKzgff0PbdCyTH2YHYawOwsTYjs1+TiKr+sEOF/uO1PF//TWwmZnBNo9hlrYwE8skX0EPYmysMeLelIihKzimO8AfiapJWKx7cQC8kZadlpPHh+adxOk8UejRegRebEq4mGTX8mGnIdTywCjwbKlPG11sSqBcdzW450aO96qXp/WFQ4ARf1/dwbo0mQtbQdju7rXwG+ougVsTNwpaT32/7G9GcvQRuO59rNgaag0rw+BW0t5lsLUFRkd2AvSXcx0QzQrlZNt0HPcV2c/DdJjWRh6mL7DuBYSQ+T1AveX1PivDaC+P18GdgV+LykowkHx4x2DHC/nhOtsPH/FFIiVfgAcI6iGmWkDddaoqvrYglang/b4AqiRL1so3kAJL3a9jclvWvgODBaKZaWeSux5tiN+NycCVQNHDW+5rRkT6YDJZXqydQyjRM9is98PwdIOovJWvxzAtsXFtnxtSVL20j0GJbdL6lUdn8f73bzvgVfI9b8k3SzqyDpk0Qwb5JsIXHt1WG/Ilv6oDK/XPhwdlb0l3licfhK29fVfP0lXqLKLxfBri8T+//1Ff2Itrf9sQrDtNIA2/bviZ4fn+5lTVcdo49O78Mt/y1t0On7saCc15LWt31F8bCSBlgfdxTOgEskfYpYNFXNeqy14BqkKI85tigtGLzBTsf7iEY+v5X0W2JyWoO4mTSJ5NTdxL6fiBBeDryZcG4e0sCOHqPUxNkD+B4Ryf6s7esBJG1HSQdBG5tHTaO9LamU9nbfWA/rZUv0MsgkPa5/YTsNB1B8lmyfTCx2UGibHgCUbj4paUfbRxdjvWDwWFV6Y1R4/X6H7wqSetk5PSdpaSeH7ZMlXcREidnurlhiZvtCJrKFZPvvFc5t02ncT935tA0aL0AJXbFvADsUiwRUaL0pyvLKcJ/tV9V8/X7acDw3cqQrNHx/bPu+qtfLNFT9jKzERENhgP4StSZz+4+qnqCQtNiZ0Ic+gXqVMG04ntuo3FhM3cxgSRcQzvhv2f7fuq8/wMgyWvppaU5cJOnBvQzUInuqk/W1pO2J7MlVicDT6oTz+onTndejYRC/f5xTgFOKIOvOhLPjBqLy6pslnSaDmaSvpvq1dxBwGs3uD11SuvfLqGhpPmyDVYCrFFWW/YGJ7Wc4r7dnm631UCfYvouoVmjifG8je/uDwGYe6MlE7JFGSe1Ejx7FZ73HIiKhaE5+bhS9sr4DfMf2r2uO0UaiR+3s/j7OKxzmteVLgN+5eV+KHYgKutrrsAFqVToWzurrACTtQ3eVsF8lKr0OKuy6TNK3gCrO697a4E+SXkhIVD2qoh2LaSlruvK+YTboIgN8Cjp9/QWleV1ES5cBDic2XbfUGGMNYkNwP+prNZ1OTPRVF1woNKr2I7TZPkosMFYhbqq72D6xgh3LE5InAn5VZOxUQtKpHmisOOzYNOcvAi5z/aZmvQYhSzwFPMd2G3IKcwa1oL3dN9a1wIdtf7d4/G6iK/KM+sJqsfmkhmiqDjs2wxiPIrTqtyI2sGcRjuPflx2jLYqMpTWYrHdfRk9waLZQ3xgjzRbS8OZNfwcusH3cCO1oo3HLEpUJqq711tMC/BpwYs3FdE/n7HNMboqx+5AMoOnGaNRUR9I3iQzhY4DDbNfK2taYyClI+qTt9890bMh5HyFKF68mmumcaPue6c6ZZqzaXen7xqjdHKhvjC2JjU1vDqrcwE5RWbMrkXHUc2SfVPUzX9hyie3bJb2aKEP8nIuy71Gj+r1QdiEyfHvOmR2Bj7uDbNTCQfEcooH3xkUwfGe3oFtfw5Z+R8cfiXLgrYAn2X5WifOXJYJuvQrDM4n1dmlHgaRzPMIGoPOZNufDluwZqtXrEWrmjwNqsUFhS9dc7Z5Ms0GdRI++c/sDefcA1xOSTKVlMsaFwn+xU/F1H+HI/q7t31UY4/8Iv8NhQxI93m/7kyXGaEObvY0+NW3oZp8A7Gj7H2XPmWG8E5smjFTdH7eJ2mkK2moDbLXQIH1c6PJvKa65VwGPtb2vorLvEW7YOL6WLQvJeQ2g0Jl8PbG5OJ+YgE8esQ21F1xFxtNehNP8YGBb2+dKWo/YCNf6UEt6k+2DK/z+coQcxunAs5jIjluRiII+vsJYRwIfqHID7Tt3XBqE7DK9GaPZxA7cMI4hHAoHFY+rOnwfSXzG7iSaBVxNlGrNeJNWC80nJW0LbEdoeH6n76kVCdmdKk6fk4FvMTmD61W2tyk7RhtoihKzkoGrN9s+SNLeQ562R6yLKelgYD0i2wKiEcyVxILjOtt7jMiOxgvQKcat1MCyjcV0MU4b3dwbO9KLDd/OhJPShIPyKNu3VRhjiYVWk8VXA+fisADYjJslSfcR2Sz/LA713sc60jSNHc/FOE2bA11DBN4vpE+OpkpwpG+sRYQz68vEfPY1wvlc6vMr6TKiMmgDoufH14CXukIDqTZpsumT9ATCaSzgVDdsAlUXTTQFvhTY2PZ9Khonj9iOY4n7wzeIefBPfc9dYLtShpkim/1Rti+reN7Hgd+y5P2hacn5gqPN+bBFmyprK08ReF+M546kDLDYKTklVYKBCgnJOx2ymEhaCljWFZKbJO1PzOn9PZkumylY3BaznejRc9Y2GaNrCl/Ih4l9UGkZtpYSPQ4j1gv92f1Lu6ZesibkSx5ArHvLype00VzwGGINcyo1Zak0pJJ42LEK43Xp4DwB+E/g6CJJ4+VE0tu2Jc5djqgaXZuolDq0jeCopI/Z/lCN855KOM8fTyS+LgXc7mqScq1S929p6bV76/zn2H58kYx0ku3NZji1fVsWmvMaFt+MdwA+T2jxCthrOmdHm5HtYrxazSz6I1iSru53Ejd0ClR1bO5OSGWsSnS27zmvbwW+avsLFcY6jXgvzgdu7x0v49CbYryRd0GVdOCww4Q8xmq2R1JCLOlcQoLlz8C1wJM9IWFyje31Ko73diKj7D4ie+vskucdBZzm4c0nn2d7pxJjbEhUKOzLZH2524DTXaFJ0LDIb9VocBsostk3cI0SM0mP8hSZ4pL+zXYbOvFV7DmN+F/eUzxemnDKbQNc7hIZ+i3Z0XgBOsW4lRbkA+f2FtP3By6lfNPHthzPbTnSVyECPXsQwau1gc/bHjbfDTv/UuBZniyncIZrZmDVuE+9leih8FiicVuPBxIZ0K+e4fzWnALFeE0dz0Mbd7qCVqSk82w/pcrrTjHOBkRgYzvgJ0xk1b6m7Lza+38q5K7+4NA57DJrqPGmr2oiQNtIOoVY3+4HPISoFNzMI84+lvQc19fL7o3xU6LR69LEnPj/iPljqFNqijGuH3LYrlBpkARtz4dN0ZLayk8HZtRWlvTa6Z63fURbNnZFce++qer6odhDPNdFkoqkBxAOilLzR7H2eBSxp1ucve3yPZkaM9uJHk3Whl0jaU0iIWgnInj9HdufaThm1USPNrL7B+VLDqVPvsT2jPIlLSWKDJ1LqswhUyRXNAmkL7LdiUSWQnv7YGALoonl9cCrbf+mxLnfISRDfgZsC/zW9u6zZ+2M9lxAaEsfTci57AKsbfuDI7ajVuXoLNjRW68vXidLutT2hqO0AxaY87pvs/VCQoP3UNsXSVoV+LntKRdmLUe2ay24inMXT2iDk1vDya7Wpk3SO8o6MqYZo9XSvy43v8Xr90or3g9cRZQPV8oWavDaTyVkcR4KHGD7o8Xx7Qinws4VxjqZ0GXfjViMfo1YhL5n2hNZHJz5PnA3Q5pP2r6xgh0rEtHOJpkgpxDvSy8TZGdgV5eUt2kLNSgxKxzfzx9cBEjaFfiQ7bXasbKSPZu7KMVU6AqeZ3u9UUb+myxANYPWW5WgUxuL6WKcVhzPfeNVdqQrdHN3BdYismOOsP0XSSsAV093rxwYp1U5haqfq+Iz+WCix8OefU/d1uAz8yLbVZos9s5rw/HcH6Bajvh8XOgSsjma0O58BZFBciyTM4VKB3wlXUjohx4KHNO/6ZR0rO2XlhznDKIvw67AMwjn5CV1gxtNaWPTNwbrj/sTmbGLiHXISsCRrpFZ39COFYB3AavbfpMi0+9xVa6d3vUu6T+AR9veWxXLy5PZpe582NJrXwps4wFt5S42012iduUkGyd6SLrQdmd9UGY70aOqs3ZcUDStvR/hjPuOW2rqV8WZr4ZSoX3jtCFf0ksUaaKbXRu1W108FjKOffbcH1jkapWai+WGimSo8xv4tBpnTWuiim3xmkMdyJBNEdwY+TqomD+2AH5ROLEfSgQ2R57lv6AaNgJfIMTk97LdK3vD9h8lTZuGP8w5XTeyTbNmFhsqGsYJWF6Tm8ctV9GOfko30BvgRkkPtH1b8R5uAnysyka430nd4D3tp5MuqMVk+zrg3cB5wMtdrrlha9g+lyjVHTz+Y6IRZhW+6IlmXLcomsh9oKQdjZtP9nES4czrOXyXL45VuYG8nrj+P1s8PpuKjVta4g6i2WudErN3Ek2vtrP9SwBJHwBeCXRRZv8p4m/5KXHNPQP4RLFoKd0YtAVqN25xuw0sl2j6WHCByjd9nKqb+9uKjXrZcsimTXVeRjSeneRYtX2HpNLXje2vF47OZxOfkZe6mZxCpQ1xEVj5e3FvutH2XZKeBWwg6euu0feCqASp46x5b9/Pix3PhNREKWxPuk9LejRxHZZhMLuqX7bBVewgAnBDN75lHdcFOxHz1xts36jQ0Nu/wvm1UVRLLTFXqOihWXJOHjp0A7Ma49APXwNYx/YRhRO5dFl4ixxGfL579+nfE3NPlWtnaYV82SuIdXNlJN0PeCtxf4JIGjnI5RpGJjNTdz5sg0WeXLV6E+GwLYWG98z5O6Hjf5DtO5ubOBK+wISc5GkMyEkSAcKy3K6+6lVJT2ZCJqYs50razPYvKp7XFqdKmjLRg5AQasJczfp7re1r6pw4U6JH2XEcMlaXSlrdNaRC+3jckLX+u4ikrRkd1wXrMpEocqAi87dUoojaqcb/IzHXbM/kpqi3Efu9KizHcBnHN0h6tmdZxlFTSPT0rafKSPUsvifbvkeV+5lP4gsMyZquOMYdkpYh9rmfIpL5RtZHTX2VowqJvR4PJHwYo+bzRFLiwxRybC8n5tORs2Ayr4tsza/bflXN89uMbI9FMwtFduwngFVtb6vQbHya7UMrjHGZ7Q0kbUVkt32aCA7MWJbc5ns6MO4OfU7XkaCQ19id0L3ab1iwY0R2jIX2dpu0kQkyLqhhiZmkrYkuzjsQ8jCbAS9yBQmVNikcC5sTC9jzbf+xAxtazVRuYkcbmRtDHM91yiGXyErpe27arJTiXvkT28+t/UcsOd7DmdygtEqDoMZNH4vgxqbAmoTExfHE5me7smP0jXVxG5kGPcezK1TDDBlDRBbTqNcOyxKbozWZ/H8dqe5+E6aai3uUnZOHjDtl1t8okPRG4E3AyrbXUmQ8f8WjrzLqZS0tvl5UscRU0o6ELuvZtt+qKEne3/bLKoxxCJFt2Pt/vga41/Z/lP5jkilpaz6s+dqNtJUlfY6oUuw//0bCGbei7de0a/HsoBblJCVtSqyhemu5RwI72b5w6rOWGOMqwjH4W0IKcqSa6IpK088BwxI9ti0zP8/krPWIpCDbQOPX7L1VqdC+cWtnxKuibrYmqvHfXnzv1+++o8paSO1UF3cq46joh3AJcAKRmDXJ82z7IyXGuJeJz0MvKHIHE/PHSLOmi//xn4nM7XcSwcEv2f5V2TGaoFmoHG3BpvWIxvO93i5Xd2HHnJl8m2L7XkkPkbSM7btrDNFmZPtEST9h8oKpalZsGxxOZMf0Mlr+j1i0lHZeM9Hw6YXAl20fJ2mfkue29p5KOrW3Oes5rvuPjYADCW3JrYAfDEYMR7VoY0JHvZ/F2ttM3GCnRNJZtrcasnirfANpicaZIEXU9GPFeScSDTb2sP3Nto2djroOkb7zT5X0OiJ77Bxg646zgxYRpf5LA2tLWtsVZBDaoHAYD2Yqv71wWJbWmq6LpOP7fh5mX9UFeRsZ3MOyUnr2TJuVUtwr75C0kgtJmLpIegewN7EAvJdiDiEcDmXZwH0Z0rb/Jqmqs+S+IpPjpURmzoGSLq44Ro831zxvkN8zUZVSCk3OFl5EBDQurTjGJwin+S3F4wcTjXirZFAcR2QoXkhfBUlVBu4xyxBOxn/YXqnumGVpOhdDa9lGbfN2Ioh3XmHDLyU9rAM77pa0PMX/V9JaVPysOBpWHd33+DoiaFKFzQYc5qcpqliSdmhrPqyM7fcWc3pPO/dgV9NW3th2v5zTDySdafsZkq5s1djZpV/qaHBtXDqgXjjNnk5kcD6OeE+vcfUqhRmbs80mtn8s6S7gBEk7MJHo8YyyiR5utyqva3rZosP+pi4yGGd0ZNakqr577QrFXoKapC1tb9n31J6SziYqUsrSRnXxasT/ubdmvz+RmHhvcS3MNpsQmc4vJNaFRxHOzSqVsG1WiDXKmi7mwo87+uLcyex9ZqfEs1M52pRfEr3tlgZQ8wqKWiwY53XBb4GzC2dDf7SvzAZjadsnAUja1yHPgO1rhjkspqOFBVdbrGL7u0VEulemce9MJw3wB0kHERPvJ4uMrLJle43fU0V32hWAVYpNeO/EFYlmkqPicUR24Q0Dx9dgIoNh1rH9jt7PRVZeT3v7XODjJcfYqvg+Lou3PYCjJU3KBKk4xvNsv0/SSwin0Y7A6YSjc9ZRCyVmfY4eAcsS0c+/FP/nkQcVJH2S+D9cycTmyUTzlVHa0VQioylPI677owiHUVPZgNqO5xYd6XcClyt07/vvlVWlFHYn/p4meruLJD3Yk5s+Vl27/EvSzkTpYE96435VBlDIJq1JSBmsByGLUuH8xo5nosS0xz3AUS7ZRLePbW3v1XtQBAO2o1r536Nsv6Di6y7B4D2mcDSU1nlsA4Vs2/uBJ9AnveYSOuIMdwZ0zV227+5d/0UGVhcOir2JQPGjJR0JbEnIqpVG0rrAl4GH215f0bdme9sfqzDMvZLWsv3rYszHMpF0kdRAIUXzbkLP/I2qoWfeFraPBY5VITlY8fSH9m++FbJFqxTP1Uly6opW5CQLR9eLbX8WuKKBPZ2XdI9hokdn2D6o+L6EA07SHh3Yc4akRxD3ehMauqX6IM2UEV/RlCUSRTShm102UeT+krayfVZx/hZUl5ZYzn19kGz/o5hjq9CpjKPtSygy1ov3YGdCiuX9to+f7txZ4jXEOvs/iazpR1Mh8F3MhQ9tkPDaJscAm0pam4lK3G8Reukjo6VkpFZYaM7rPxZfi6i+6Wglsr34hGYLrra4vXD89DJjnspE1K4srwBeAHza9i0KGYH3znBOjzbe0zcTzs1ViWhfz2NzK/DFkmO0wWcJuZRJciHFxviz1NcUr4xa0t5WlFR+e7YzV2fC9i8KZ1GTTJCeo2o7wuFzc9WgU0NeVHwfWmJWZoAxCib02IHYsI4iqj8dbSxAm/AIojRvZ6Is9UfEZ6xS5lZLjue2HOk/Kr6acgPV7ymDfAY4R9Kkpo8Vx9gVeAuRSXG9pMdQIXAl6RtE88pLmHB8GSjtvKYFx3N/tnARrK1TIruUpGV7122RHbtsxTHOkfQk25fXeP0psf2/kvac+Tdb5Uii4uyFxGfktUQ1yYwMcwaMAWdI2otwYm1DaCY21XitjO2TJV0EPJWYh3a3/deKw3yVWE/2nC+XSfoWUUVVlvcAp0u6rrBjDWI+SOrT0zN/WvG4jp55bTSN5KCkKpKD7wbOkvRr4rPxGKK/xP2ZkJkZe1rOWDxb0heIObE/cF26jxGxduglWixHvK/XAk9s0c4pGbdEjzHnXcABo3xBRQPe/yIqrkU4Ofe1/bWZzm15H9SGbvYbgK8pJB4gGllX7afUuLrY9qGSfsyEjONenpBxLOuTaUzh89gYeBJxX/jL9GfMig1tZU3/hvoJr23SZuVoE9pIRmqFBaN53RRNaPH06/BQPF7O9oxZXNMtuGig8VwXSZsQchfrE1H2hxKOzsumPXH4WA9jctbSjGUEbbynfWO9w/aBlYxuEUlXeIruyRrQOJ9lO1rT3lZogu5EaNd9n+hOfcH0Z7VPEYF+F7BG3SwfSfsRztZ/Ejf3BwE/dAlt9jaRdPZAidnQY3MBSScQjdv+MeMvz64dS2hNq0L385ZtWZZwYu8P7FtlTpL0/5jG8ey+xrbTjLEUE470DajpSG8LSYcSQacfMblBaaXFn6QnwuKmj6e6RtNHRQnhusXDa6sEwCRdTXR/b2XB1HM8V73XFlk12xOJB5cQTtYzbA+Vr5hijPcVYxxGbPBfDxxve8bGj5KuIILOSwPrANcxoW/oMhUkA+P1N3dcROiSP9P206Y4pXUkXWj7yZqsjXiG7Rmb4Er6/HTP16hUaEzhoPkP4HnE/+UnwCFtfXYr2rIa4Szu10UvXZkj6Re2N9Nk3ezS/S6K+XA34EtMDn53HXCd06gFPfOmr8+E5ODBDEgOuprG87KETEbvs7Egs3N7SDp9yGGXrESZasxNgDfb7kxiJhmOGuhEN3jNa4Etek6wIonuHNuPG6Udw6j7fih0q+UaUnuSNgO+TQOd+WKcRvfbJiiaoe5E+IG+B3zXk5vpjhSFNO+/NcmalrT3sOOjTlqQdB4RYPog8TddP53PaRbtOB3YxoWuepcsqMzrIiL0PiL6W6k8tKXIdpu62Y2xfZGkZzKxqK+0oQeQtD2RGbcqEWFbHbiGEhH2lrMFbpT0QNu3KfSBNgE+VjFboAnTleZVLWVqQmva20WW3xGKMv2XEbIwq9tep0V7y9A4y8f2ngqZi1uLcqA7gBe3bunMtFFiNi7cQZSpncpkx+RIHTZTOGVGmlZfbIBfSDiN1yS6Mh9bcZjGGdyOhi8nEn0Veo70nxZZLVUc6esQTUIGpRQeW3aMgt8VX8sUX3W5BvgbNXXWFDpxRxCZFCKkDF5bYWF/BfH/+VN5k5ew4acMOJ4LJ2lpxzOwku1bi8ylw2zvrcldyGfE9qcUMka9pisftf2TkqevRsidtEV/RdI9xP9n1PNyb83zJ0kvJDaQjyp5bqXN5WyjaP59WbGp+WrHtrQhK/VXhVZ2rzrw5VS4Bot7/fYOGYTKSRnJlDTWM29ImzKOdwGXSjrY9pvaN3VuYfvZszDmRYWDLhk/ushg/D1wW9/j21hScrMrSr0fmqIJpmr0u3AL1cUt3W+bcChwObHefz7wvP652A2bcdbgNzTMmh61k3oaGlWOtsh1xH6yUTJSGywo5zUT5aEvomJ5aEu0tuBqkc0pdDyBTSRV0vEkMsifCpxie2NFw7Sd2zdzRj5s+2hJWxET56cJrcRRZdb+QtIbbU/aMEp6A6Pd4M6G9vbaRGbKmkDljMcWWMv2TgrNWmz/UyUvGEnv68sofK6jARS2b5f0QSKYNEraKDEbF44vvsaRkS3IJR1BVK+cAHzEdi2tyBYdz2040g8jtM0+S2Q870qNgEAbiz+1o7P2GUL3/tpizHWJgPGTS56/CnCVpPOZvGirsiBv7Hgm9LYfSch1fXCmX54K2ycQn9eqXO8G1Tz9FFmxlxWOxS75WDEfv5sI/q5IaCTOiAeaPkq6v+3bp/r92cb2fZIurRrcmSV2oLms1NuJzNr1JP0BuJ7ob1CFc9RcBiGZzD401DNvSKsyjgWb1jxv3lEE8QaTvEo3oBtw6C0ikolGuddO+lC7OtFN7Oh9Lv4AnCfpuMKuFwPnj9CONt6P1ppgakh1saSqPQR2oFsZx9aDXg1pIhMMNEt4bRPbV0l6D7CupPWJRNP9RmlDQVvJSI1ZaM7rhzh0gXZ3lGCfIWnGUuwWmY0FV23Ujo7nv2zfJGmRpEW2Ty8igKOmZ/8LgS/bPk7SPiN8/T2A70t6FRPO6k2JC/wlI7SjNe3t4v/4UuDXxMbvo+6mu22TLJ9/JxpZAHyAyNju8QJG7LwuysA2bFJiNi4MOm5GzbgsyInGILcTkhS79cVVKusrNnU8t+VIB5Z3NDxSMZfsI+lnhBO5NC0t/trQWbuf+3T/bf+fpCoNG/dp8No92nA870vIQJxVZOs8luj+XRqFfNmBwOOJ+9NSwO0lP6cPG8w06qdiVsu9ReVWp87rvg3i36m5AZP0NCLz6AHA6pI2JMrk39aOlZV4JHBlEWjpd9aOOvPpOqLXRO3NtO3rgOcqNIgX2b5tpnOGsEXxvd/5ZmCkG9D5hO2TJF1IMz3zJrTSoHCAzkrcxwlFn5AViLnwEODlVHcs9juL7iGqyI5pxcCkMh6ffjk9O35dfPU4bpRGtPR+/KgYa1gTzKo9rtroIdD4ftsED5E1VJ+Odwf2tJE13XXCK9BK5WgrjFEm+oJzXjcpD22D2VhwNWFTmut43iLpAcDPgCMl/YVYrIyaP0g6CHguIW+xLBFxGwm2/wxsUWSe93SIfmT7tFHZULCmh+io2r5A0pplBykym/8BPG3Em5Jh7E39LB9N8fOwx7NGmyVm44Kk6xniPK4hLVGLcVmQ225lnmnJ8dyWI/3OQoLgl5L+k8iUeVgNe9pY/LXR9PFChf52f6PU0hUxwxbmNWjseC4qR47ue3wdFTqoF3yBCOodTawBdiGqa8qwFOGgbWvu7DwrtgiwvJGJCrSeDVUqYg4gKr6OL869VNIz2rOyEuOywagtKzVVgKRmSfa4ZYTNeRTNc78GnGD7vpl+v23cruRgj52LYO1CbwS1he0NFD0APiLpM1Ss3Oo5ObquREnGi3FyfrXAqZKeb/s3/QcV2s8folqT5NrVxX2MhYzjAIcQVRcjp6XEma4TXns0rRxthKQDbO8h6QcM3/OPOjFiwTmva5eHtsEsLbia0FjHkyj3+SeRefwqQs+7dHlZi7yCyKT9tO1bigy3kXXY7WH7dGBYw5NR0Yr2tm1L2sH2R1uwqRG2T5Z0EX1ZPpTXifYUPw97PJu0VmI2RvSX2S4H7Ais3JEt84HGjue2HOnEfL4C0ezso0QW1mtrjNPG4q8NnbW3EBIEuxHv55lEE7dpkXSW7a2GZPlXzqpvw/Es6VPAx4h77onAhsAetivp39n+laSlHFI1h0k6p+Spf6pSPl6CcciKPY4Ivp/CRAVXZWzfMLDfrD1WE/oDLZJWAW7qyCHXRFbq00RF4AlMNAStRZHI8DKWDE50sU6dL3yFkJI6UNLRwOG2r+nYptJI+i+iodg1xeejN5feI+mVtk/p1sJO6VUF3yFpVeBm4DFVBhizSpRkTBhHJ1gD3gmcLGk7278EkPQBol/NjM2eB2ijh8A4yjh2podLO4kzXSe89mhaOdqUXtLPp0f4mtOyoJzXbZSHzjMa63g6tIPXANaxfYRCu2nkTnrbdwDHSnqYpNWLw3NmMd0ibWpvnytpM9u/aM+8ahSL4NWAM23/SNIGhJTC04EyHaHHpdqhzRKzsWCIjMMBks4C/qsLe+Y6LTqe2+Ae2/8gqi92bTBOG4u/RjprRQb5hY4mdpUqHGxvVXxvnOXfkuP5ebbfJ+klRGnpjkSwtMoYd0hahsjS+RQRvC4bDGx1MzImWbEr2H5/wzFuUDTfdfHe7gZc3dy08hRyMPsRzqaPEhuOVYBFknaxPeqG4E1kpTYhqgNeSKxbjgJOremEP45Y819IRyXV843CuXtKkQy0M+HEuYFoEvpNV2w21gE7EdcITARlH0oEjo8gAlkLlR9KehAht9fbMxxScYwDGJ9KlGR86EmSjo0TrC62fyzpLuAESTsA/wFsBjzD9t8qDtekurhnT6cyjlPQZaZ9G4kznSa89tGocrQpDrlTgI1sf67/OUm7AyPPRtdCqJBS0bRN0oEMj/Z1WVbRGZKGRgerlEhLeiPwJmBl22tJWgf4iu2tWzKzrB3bE6UVqxLadasTHXufOEo7ukbSw4HvA3czRHvb9o0VxrqKaAD5GyIjtJdtWKVRWm0k7U9ETS8hytp/CLwN+ARwkO07R2FHG0i6FpiyxMz2Wp0Y1gBJ/eVgi4jP2Vttb9iRSUlLSDqd0M49Gvi27StrjvMiIqv10Uws/j5ie6QZIsWG4AOu2cRO0htsHzpwbD/be1YY4xLbGxWO5x2IRfDpVa4XSVfafqKkrwLH2D5R0qUVx1iDuEfer7BhJeBLtn9V4tyVbd9c9rVKjPdwYj5f1fa2kp5ASFUdOsOprSHpY8A5tn/cYIxVgM8RsmUCTiJ0gJvotFe14QKih8NKRJPDbW2fK2k94CjbG4/IjsuZppqo6vqhCArsTLy37686d0i6oghcJS0i6SFE88zXEEHJI4GtgCfZflaHps2IpIt714OkY4CTbB9UPL7Idiel7l0iaTPght4eQdIuxP/3GmCfKvO+pPNsP2Xgfa50n0rmH5JOsv284ucP2P7vrm1qiqStgP8FzgFeUXdfWsynveric4H7u0JzbHUs49hnx5bAJUVi46uJQPTnqvwtLdlxru2nSvoJkfD2R+B7ZfbakpYjsrXXBi4HDrXdhRxuz55licrRreirHPWIm3MOuzf2z/GjZKFkXvcyYC7o1Ioxw/YZxeZxs+LQ+barNi15O7A5cF4x5i8l1dFGbcpHiYn/FNsbK7Snd+7Ajk5xu9rb27ZnWS1eCGxs+05JDyZuPhv0SrTmGG2WmI0Ln+n7+R7geiITNJnj2H62pEcQckwHKxqMfsf2x8qcP7D4W41Y/NVthteGdl3TJnYvl3Sn7SMLm75E9cqNXpnfdoQz8WZVljXkB5KuIbK331a8N5U2S32biH9SMTOmTcd1weFEs6JeA8v/I0o9R+a8JmSo9pJ0NxH0rSMJ81ciG6ZLlrZ9EoCkfW2fC1BII4zSjhcV399efO/PFrqjykDF53tj4ElEpUGdpnrnSHqS7ctrnJsMQdKxwHrE//bfbPekB79TBFHGnbskrQ/8majCfU/fcyt0Y1Ln9HoGUWRJ7we8A9iICIa9vMJYnVeiJGPJQ/t+3hGYs85rTUjJCVgW2Br4i+JmW3r90EJ1cY9xkXH8MlHxvCEh3fo1IuN+1PvcJlnTRxBVoz8j/CBPINaJI6dJ5WiLNuxM+CoeI6k/eWBFYGQJGv0sCOe17R8U38exrKIzJL0C2B/4KTEBHyjpvba/V2GYu2zf3dscSVqabjR8/2X7JkmLJC2yfbqkT3Zgx1jgFrS3bf+2iCqvY/uwYiP5gFYMLMc/e1Fs23+TdO0cdVy3XWI2FgxzRkrag3BAJXOcIgPr80UW9vsIOZhSzmvaXfy1oV3XtHzxpcDxku4j/p6bXV2/sw3H857Ffe1W2/dKup3oO1GaIhv+o8AaxBqwsrO2RVax/d0ikIfteySNVCva7UjCHEFkWt9SPH4w8BlXa/rYlP7Gef8ceG5ka7JecETSlra37HtqT0lnU6InSlGRtBOxCf8ekdFWyXHdlwG+NLCrpOuY0M8eWQXZPOULUyVE2N502PExYw/ic/VQ4LO2rweQtB1wcYd2dclSfcHJnYCDbR8DHCPpkopjvYWoRFmNCDqdxEQwK1m4zJtS/5bWDf3Vxe+X1F9dXGntMKTKqysZx3tsW9KLgc87pDvq9MupRUuJM0+w/aRivEOB89u1sjy275N0qaTV61aOtsA5hLzgKkxOWrsNuKwLgxaKbMjQ5gA9KmRfzSskXQps09sUFJvpUyqWIH8KuAXYhYjSvw24yvYHpzuvbSSdQpRi7wc8hMjQ2cz2FtOdl0yNpL2JaO7jbK+raN5y9MCGdDZf/xaiPAZiw/n0vsdz8rptq8RsXJH0O9urz/ybyTgj6fHEBvblRGT9O0TJXSkHkqTL+xZ/SxNVPbVKsSVdaPvJki7rOZwknWF7xkyOpuV/kvozVx5I6Ocu3hBUzUQunJo9x/MKwIouIeUk6Tm2T5P00mHP2z62gg2/Ipzxl7vjBaCknxLN9E62vYlCt/mTZf63LdogIiv4MbY/KunRwCNtl96wDCudHHU5ZeH078l7Lc9ElrOA5WyPssEPhcPrP22fVTzegih13ajEufcR12tvszbpc1rm3q+Qx5mSUZcxzwdUSDAWP+/oaELbe+4TtvfqzrqkCZKuIDRN7ymCrG+yfWbvOaf0TtKQvj3dEvs5mJt7uiYopDk3aaO6WGMi46jQlT6RcL4/nUg0uaS3HxjB63+HyYkzv7VdKXFGA/IYg49HjaTTiGS3upWjbdlxfyKp8D5J6xLVVye4gx4XCyLzmnnQHGCWWDTgjLiJmPSq8H4ii/Ry4M3Aj6ne3KMNXkxkG+1BbERXokSGTzItLyFKdi8CsP1HSY2jzRUYzCics9dxWyVmc4Auu0sn7XE4oTH/VuAXNYIsixczxWa4iS1Nmj42zQC/kInrtvd9u+ILYEY9wWGO54H3o4zj+RnAacCw5q4uOUaPG4ArunZcF7yLaOq1VpGV+1BGLz30JSJr+TlERvo/gC8yIadWhkWSHtyroimCHiNdX9seeaPsGXgD8LWidBciyaFsNlnjRp59GeBPBa60fVvx+IHEPJDO6+r8O9HID+ADRE+EHi8gNNfHHoWe81TY9jemeX6+chTR1OyvxF7qZwCS1iYans6IpOmyPG37o9M8n8x/+vd0c3Y/1yJtVhePi4zjToTExOtt3yhpdaLCf1S0kTW9oaRbi58FLF887mq/3mXjy37OBJ5eBFpOJaSYd6IDybwF4bx2hQaEC4wTFWL2RxWPdyKcz6UotHguKyLyX50F+0rjaA6wBiFxcUSR1TZum7m5xt1F+Y9hcdRtZPRftwrdvHWLh9d2EelrQhslZnOEcXCIJTUpsqQ/AaxFBK9eCjxK0mHABytcd20u/ppo1zVdyO5ENLH6UzHGa4lM4d8A+5Qcow3H8zIAtnct+ZrT8T7gx0WGzOKGL7a70NO7ktBCfBzx2biW6gH0pjylyPq+GBZvIpepOMZnCG3lnuTajsDH2zRyruHoUL+hQi9ftks5wIpzl1izS9rE9kU1TPky0TSqx+1DjiXl0BQ/D3s8zgwLTImYo1djQqd9wWD745JOJfpDnNQX3FxEVNWW4fYhx+5PBLIeQgQHkwVKy/P6fGAtTWgIC1iz73GlzNph0hjqQMaxcFgfA6xTHPor8P0RmtA4cWZcEgGaVo7Ohkm275D0BuBA25/qrZtHzYJwXkv6ru1XaIou6F6g2ne231tkg/U6mB5su/QkMyZaPABIeiPwJqJBwVrEAvQrRIZrUo/vSjoIeFDx/r6eDoIUkp5FZFD+hvicPlrSa3sljclo6csiX+Ipolw9mbvsT8hjPKYvU3FFIkvm05TMWm5j8deSdl3ThexXmNzE6r+p3sSqDcdzm1mNHyeyi5ejsK1Dfl6UY17ZOyDpIkbrWPyXpKUo5rRCPu2+6U+ZjO2vKxrVPYeYB19q+6rWLZ0DSHq17W9KetfAcaBRkOQQ6n0u1F9lUKxbF8TeZxbwFD8Pezy22F7sjO2TDXo/cC4LOOjkosnrwLHSzi/bi7M/iwqH3YFdgW8zOTM0SXrUndfnA7NdXfwu4ICWx5yWMfDFjFvWdBPGpnFkgRQNRl9FBCShIz/yQlnA9f7ZL5r2txYghVbmsZJWoV7X0EcCV0rqVIuHaAayOXBe8fq/lPSwEdswLyjKBB9u+9OStgFuJTLjTqBCZn6LfAZ4nu1rC/vWJaoFntyBLQueBZRFvhB5EbDugLPnVklvBa5htAunNhZuTReybTSxasPxvFRRqjfU++5q2tsr235eQ3saIekRxKZm+QGtxhWBFUZszueJzKCHSfo4EZD4UNVBCmf1VZLetFAd1wW9Cq1h94kmDs66mb3XSdqNyLaG6MtyXQM7FjIb9s2fyw/Mrct1Z1Z1igDG64iKnvOAl/fWmEl9CsmkdxEOjiMITd852ZQ8GQlzqWKjVUZQXdzFe9upL2ZcsqZbYmwaRxbsQciFfd/2lZIeC5zehSELwnndK/l1X4OWnrN2THQfR0qhAbgfcDNRxvUNoovoIkm72D6xwnDjosVzl+27e9k9xcJ0wf1vW+IACmeL7ZOBkwEkbVo8N6z8fTa5X/+mwvb/SRpp86kkWSB42D3R0WBw1PNp44VbCwvZpSQtXZTqbU1klPQou35qw/G8HqG/PWwMU0J7u49TJD3P9kkVzmmb5xOOo0cxOdvoNkaom1tIn11PSKlsTby/O9i+usGwbyGy8hcqPwKwvcTaUFKTtUPdteZbiABFLyBxCpOv46Qk88UxIOntRCD0VOAFzuadrSBpf0Jq7GDgSbb/0bFJyfgzLj6EzpjF6uIufCDpi2mPNnsHNaYItpzRk5C1fR2wWxe2aCH4bqdz1gJVnbVznqK8dS+iqeHBwLa2z5W0HnCU7Y1rjttZQEDSp4iGQLsQZd1vA66y/cFR2zLX0TSdxSVd7hF1De57za8RN7+eDuGrgKVb0n9NkqRA0v8Cx9r++sDxVwOvGGVFjcag47ekDxLNGf8KrE5kkbmoTjnC9pYlxrgL+ANTOJ5tl2n6eHHd+/KQsW4jsmPvZmJxPNJySknvHjhkoiv9WbavH5UdhS0/t/20Fsdr7X81F5F0LfB8278ZOL4r8CHba1UcbwNgTfqCRUXFYJLUQtJ9wF+IOSelJFuieF/vIhrG9b+vc7FkP5klJJ1qe+uZji0UJF0IvHKwutj2jNXFM8k42h5pkmr6YtpD0r1MKBr0ZDnvoKP5tJAMORR4gO3VJW0IvNn220ZpBywc5/WsOGvnKpIusb1R8fPVth/f91ypjde4BQQK3br/AJ5HXNg/AQ5ZiJn1TZH0K9trV31uFu1ZlihF6mmznwl8yfZd056YJEklJK1GNBD8J5Hpa6K51fLAS2z/YYS2jMXCrbjX9ZpY3V4cW5dYwM3YaKgNZ+Z8c4hK2nvI4ZWJjOx9bH97hLZ8BLiMCNo0Xi9IepTt3ze3bG4iaTvgc8B2tn9ZHPsA8Epi7V36vSkC1xsQmug9HXLbfn2FMR5FNHrdkpjPzgJ2X8j/o4WOpHWAhwM3DDy1BvBH278avVVJMr8p+pisQEgNPIuJgP6KwAn9voiFhKTLBgNmw47NBYpqtjeQvph5h6TzCFm943v7kemSHWfVloXweWrDWTuf6M9gq5vdNk4BgWKyvKyLC2g+Iuko4DTbXx04/gZCe3qnbixLkmQUSHoO8ERi8Xml7VM7NmnO0pLz+nW2D5e0o+2jB55b4liJ8bYHnlE8/KntHzaxry0KvdRTRplh35eJfg9wJxWCIxpoSjiI6zcnnNNI2ho4CNiBSCrYDHiRK2rfSrrK9hMa2nIy8C0mKrdeDbzK9jZNxk3mLpJ+COxl+7KB45sCe9setTReksx7JO1O6OauyuRqtFuBr9r+QkemdUpWFydzAUnn2X5K/55G0qW2Nxy1LQtC85rJneP/OfDc/PfeL0kbTVeWdqGZKWlfF12qbV8zal0eR/f4SyWtbvt3I33x+ckewPclvYrIvgTYFFgGeMmojJB0OdNcn3MxKp0kcwHbpwGndW3HPOFzMNzJXNbxbPvw4scPAIO/P+zYlEjaj3AmHlkc2l3SVrb3LDvGbGH7Zo14AeFmDWizee0QbJ8q6XXAT4FzgK1t31ljqJ9LeoKbNcB8qO3D+h4fLmmPBuMlc581Bx3XALYvkLRmB/YkybzH9ueAz0l6h+0Du7ZnjHgrUV28G33VxZ1aVJMp9u1/By4APmb7ptFblbTEDZK2AKxoMLob0KQ/TG0WSuZ1r/y4v/SY4vFytrP5W0XayN5u2Z7TiA35+UyUmuMRarTONyQ9G+hls19ZOLRG+fprTPe8s8lOkiRzhGH3xQqVTtsS2tuvAL7T99SKRGPLzSvYcRmwke37isdLARePQzCwyPj/kO3njOC1pn3fy0jCJEvSp8EpYFlCV/1easj9SHoG8APgRkJLtzdG6c+qpFOAw4GjikM7A7suVH3VZPyk8ZJkISFpR+BE27dJ+hCwCeHYzHvuHKfQvL6XqHYC+Pfi+63AVlnVMndR9LX7HPBcYi12ErCbyzWdb5UFkXntedIhe8xoI3u7TRZ8x+K2sX06oU3W1esvdk5LejgRnAA43/ZfurEqSZKkPH2O59Ukfb7vqRUJqYoy3ExkrmzPRDUMwG3AO2uY9aBiTAjpr5EyRXbOysAfiUY/o+AzxffliMqiS4n1ywbAeUSPhVIUWp5vIKR2Fq9/qmgzzxcaZrIP8jXgNcDlTK6grMLrgS8AnyU+c+cUx5KFyy8kvXEKabwLpzgnSZJ2+LDtoyVtRfS5+DTwZeAp3Zo1WuZpdfGWntzI/HJJZ9veUtH4PZm7PM72q/oPSNoSOHvUhiwI53XSPuMWELB9Ru/nIjp0UzYImB9IegWwP1GCLOBASe+1/b1ODUuSJJmZNhzPX7a9iaTn2z6ioT3/DVws6XRiPn0G0b9ilLxo4LGJe/btw355NrD9bABJ3wbeZPvy4vH6wHsqDvcN4BpiI74voVnZSTnlPON3to9vMkAhJZcVeEk/ezAG0nhJskC5t/j+QmJtc5ykfTq0pysG10HzgQdIeort8wAkbQ48oHiubLJGMp4cSFRJzHRs1lkQsiHJ/EXSU4H9CAfBR4lN5CrAImAX2yd2aF7SApIuBbbpZVtLeijR1GvkTQKSJEmq0JMGkfQt26+sOcYVRADvv4D3Dj5v+9iK4z2SqGQRcJ7tG+vYNR/ob+g93bEZxrjY9saSLrO9gaT7AT8ZhfzJfEbSl4gqgR8QsiFAtc+7pHWJrL6H215f0gbA9rY/1rK5yRyja2m8JFmIFA1T/0DIDzyZ6EV2/kLe082X6mJJmxEVUw8g1pe3Ek2brwReaPu7HZqX1EDS04AtiKDvZ/ueWhF4STZsTJLqfIHIGluJaDC2re1zJa1HaBym83rus2jgRn4TEZxIkiQZd5aR9FrgKZJeOvhkSUfcW4hs3gcBg5qBBqo4804t9H6PH3JsIXK1pEOAbxLv5auBqg0C/1V8v6XI3L4RWLM1CxcuyxNO6+f1Hav0eQe+SgR8DgKwfZmkbwHpvF7gdC2NlyQLlFcALwA+bfuWIpi+RFB+oTCfqott/wJ4kqSViATZW/qeTsf13GQZIhixNJOblN8KvLwLg9J5ncx1lrZ9EoCkfW2fC2D7GkndWpa0xYmSfsJEw6WdgB93aE+SJElZGjuebZ8FnCXpAtuH1jGi0GVeAVhF0oOJTRJE9sSqdcacJ+wKvJXonC7gIqo7ng8u3tMPE0GBBxBZ8kkDbO/awjAr2D5/YD2Y5ctJkiQdYPsO4FhJD5O0enH4mi5t6pgPApsNVhcDc855LWlZ4GXEGmrp3n3X9r4dmpU0oJDlPUPS4f29yLokndfJXKe/ic8/B55LTZw5jKS1iVLf9xYZi1sRzoWfA0d2alySJEkJ2nA89/ENSbsROtUAZwBfsf2vac7p8Wai7G9VltTe/mJDu+Ystu8s9L8fSQRGH0zFTaPtQ4ofzwAe266FCxdJhzFkHVexEeZfJa3VG0fSy4E/tWNhkiRJUgVJ2xMNk1cF/gKsTjivn9ilXR0yn6qLjwP+Tqwx75rhd5O5xbKSDqYITPQOdiGPl5rXyZxG0r3A7YRTc3ngjt5TwHK279eVbUkzCl20vWxfNnB8U2Bv24NZjEmSJGOJpGWILOw6jufeGIcA9wN6TRtfA9xr+z9KnLsZ8Hvg5bYPLKRMXgb8BtjH9s1l7ZgPFFrI/w7sTGwWvwO8x/YaNcaalG3UO57ZRs2Q9LK+h8sRzfT+aHu3CmM8FjiY0Gz8G3A98Grbv2nR1CRJkqQERR+j5xC9izYutOd3tv2mjk3rBEn7Axswubr4Mtvv786qeki6wvb6M/9mMtcortuvEIGJXtNVbF845UmzZUs6r5MkGUemuwlKutz2k0ZtU5IkSR2aOJ77xrh0sDnKsGNTnHsR8FzbN0t6BvBt4B3ARsDjbXeiXdcVku4Dfga8wfavimPX2a6cOS3pRCayjfoX9Z9pydwEkLSIcHhUzvSRdH8iw+229i1LkiRJylBUoW1aOMM2tn2fpPNtb961baOkr7r47IHq4r8BR9r+dacG1qDIzD3Q9uVd25K0i6QLbT+5azsgZUOSJBlflpvmueVHZkWSJElzNhtwMp9WbN6qcK+ktXqbmiKr9N4ZzumxVF929U7AwbaPAY6RdElFO+YDLyMyr08vnM/fZkIHvCqPsv2C1ixLpmIdosS8NKnBmSRJMlbcIukBRPD4SEl/YWH2ITgA2AsWN+4+FhZXFx/Akj1S5gJbAa+TdD0hGyLAtjfo1qykBX4g6W3A9+mThOmiajOd10mSjCu/kPRG21/tPyjpDUzWbE2SJBl3mjiee7yXcLZeVzxek2g4WIalJC1t+x5ga6C/RHfBrQVtfx/4fpGRuwPwTuDhkr4MfL/XCLok50h6UmYbtYuk2witahXfbwSqllKnBmeSJMn48GKiR9UeRDPrlYCFGExcc1AWE8D2BZLW7MCeNti2awOSWeO1xff39h0zHfR5SdmQJEnGEkkPJyJ8dzPhrN4UWAZ4ie0bu7ItSZKkCpK2Bg4DJjmebZ9e4tzNgBts31hkkr4ZeC7hzNuzTOaDpA8C2wF/JbJXN7HtonT1CNtb1viz5hWSVgZ2BHaqIk0h6SpgbUJPObONxojU4EySJBkvJK0BrGP7FEkrEJVhC0rSSdKvbK9d9blxRNKKtm8t1lBLsNB6qiSzSzqvkyQZa4pmHr3N55W2T+vSniRJkrK05HhuRa9a0lOBRwIn2b69OLYu8ADbF1X/6xJYvBFfAtu/HbUt8wFJ69m+RtImw56v8llNDc4kSZLxQdIbicqvlW2vJWkdonn11h2bNlIkHQWcNkV18fNs79SNZdWR9EPbLyrkQnrVUj1cp5dIMh4UeuxTUkjejJR0XidJkiRJkswCbTie+5sySvoi8P9s71M8vsT2RrNkflISSRsCTy8e/sx2VT3zpEDSV22/UdKwqgSXyYqXdDmxiV6a0Mq+jsyKT5Ik6ZSix8bmwHm2Ny6OXW77SZ0aNmKyujiZC0g6bJqnbfv1IzOmYMHpHCZJkiRJkoyINholpl71GCNpd+CNFA2XgG9KOtj2gR2aNWex/cbi+7MbDPOilsxJkiRJ2uMu23f3mudKWpoINC4obP8Z2GKguvhHc726WNJqwBr0rU1tn9mdRUkTbJftqzMyctOTJEmSJEkyO7TheD4KOEPSX4lGRz8DKPSq/96msUkt3gA8pU+K5ZPAz4F0XtegpTLVPwNvIbTILwcOLa7BJEmSpDvOkLQXsLykbYC3AT/o2KbOKPqezNj7ZC5QrH12Aq5ioiG5gXRezyN6MjFdvX46r5MkSZIkSWaHxo5n2x+XdCoTetW9LKVFhARJ0i1iYqNG8bOm+N1kZv5tmufMRIb7dBwB/Iu43rYFngDs3ty0JEmSpAHvB/6DCCq+GfgxcEinFiVtsQPwONt3dW1IMqus1uWLp+Z1kiRJkiTJLJGNEuc3kt4FvJbQr4TYwB1u+4CubFro9GuoFmXp59se2gAySZIkmX0kLQIus73+jL+czDkknQDsaPsfXduSzB6SvtaF1nWPzLxOkiRJkiSZJWyfO+TY/3VhS9I+tv9H0k+BrYiM611tX9ytVXOfoqHVJ4BVbW8r6QnA02wfWuL0f/V+sH1PT181SZIk6Qbb90m6VNLqtn/XtT1J69wBXFJUCi7Ovra9W3cmJW3TpeMaMvM6SZIkSZIkSSohaUXbt0paedjzfY06kxoUWVyHAR+0vWGRQX1xL6N6hnPvBW7vPQSWJzbWAmx7xVkyO0mSJJkCSacBmwHnMzFHY3v7zoxKWkHSa4cdt33EqG1J2kHS5QxvqNpbS20wYpPSeZ0kSZIkSZIkVeg1rZF0PZMX971F/WM7Mm1eIOkXtjeTdLHtjYtjl9jeqGPTkiRJkhpIeuaw47bPGLUtSftIWh5Y3fa1XduSNEfSGtM9b/u3o7KlR8qGJEmSJEmSJEkFet3WbT+ma1vmKbdLeghFYKDQji/V5DRJkiQZP/qd1JJWAW5yZlLOCyT9G/BpYBngMZI2AvbNrPq5SxfO6ZlY1LUBSZIkSZIkSTIXKfQdZzyWVOZdwPHAWpLOBr4OvKNbk5IkSZKqSHqqpJ9KOlbSxpKuAK4A/izpBV3bl7TCPsDmwC0Ati8BMrg/h5F0m6Rbh3zdJunWLmzKzOskSZIkSZIkqYCk5YAVgFUkPZiQCwFYEVi1M8PmCbYvKkrMH0e8t9fa/tcMpyVJkiTjxxeAvYCVgNOAbW2fK2k94CjgxC6NS1rhHtt/H2iQnFn1cxjbD+zahkHSeZ0kSZIkSZIk1XgzsAfhqL6o7/itwBe7MGgesjmwJrFf2UQStr/erUlJkiRJRZa2fRKApH1tnwtg+5oBZ2cyd7lC0iuBpSStA+wGnNOxTUmLSHoYsFzvse3fjdyGlBlKkiRJkiRJkupIeoftA7u2Y74h6RvAWsAlwL3FYdverTOjkiRJkspIusj2JoM/D3uczE0krQB8EHgeUS31E+Cjtu/s1LCkMZK2Bz5DJGv8BVgDuNr2E0duSzqvkyRJkiRJkqQ8kp5j+zRJLx32vO1jR23TfELS1cATsplXkiTJ3EbSvcDthFNzeeCO3lPAcrbv15VtSZJMj6RLgecAp9jeWNKzgZ1tv2nUtqRsSJIkSZIkSZJU45mEdue/DXnOQDqvm3EF8AjgT10bkiRJktTH9lJd25DMDpKOn+5529uPypZk1viX7ZskLZK0yPbpkj7ZhSHpvE6SJEmSJEmSCtjeu/i+a9e2zCck/YBw/j8QuErS+cBdvedzI5wkSZIkY8PTgBuIxpvnMdG8Opk/3CLpAcCZwJGS/gLc04UhKRuSJEmSJEmSJDWQtDtwGHAb8FVgE2DPXnOqpBqSnjnd87bPGJUtSZIkSZJMjaSlgG2AnYENgB8BR9m+slPDktaQdH/gTiIw8SpgJeBI2zeN3JZ0XidJkiRJkiRJdSRdantDSc8H3g58GDgsG1A1Q9Inbb9/pmNJkiRJknSPpGUJJ/b+wL7ZzHp+IWlF+pQ7bN88ahsWjfoFkyRJkiRJkmSe0CuR3Y5wWl9Kls22wTZDjm07ciuSJEmSJJkSScsWzau/SQTxP0/2/Zg3SHqzpD8DlwEXABcW30dOal4nSZIkSZIkST0ulHQS8BjgA5IeCNzXsU1zFklvBd4GPFbSZX1PPRA4uxurkiRJkiQZRNIRwPrACcBHbF/RsUlJ+7wHeKLtv3ZtSMqGJEmSJEmSJEkNJC0CNgKus32LpIcAq9m+bPozk2FIWgl4MPDfwJ59T93WRYlqkiRJkiTDkXQfcHvxsN+xKMC2Vxy9VUmbSDoReKntOzq3JZ3XSZIkSZIkSVIPSasBazBZC/DM7iyaH0jaEHh68fBnhSRLkiRJkiRJMgIkbUw0Jj8PuKt33PZuo7YlZUOSJEmSJEmSpAaSPgnsBFwF3FscNpDO6wZI2g14ExO6md+UdHA2gEqSJEmSJBkZBwGnAZfTsSxeZl4nSZIkSZIkSQ0kXQtsYPuuGX85KU2hd/0027cXj+8P/Nz2Bt1aliRJkiRJsjCQdI7tLbq2A2BR1wYkSZIkSZIkyRzlOuB+XRsxDxETmewUP6sjW5IkSZIkSRYip0t6k6RHSlq599WFISkbkiRJkiRJkiT1uAO4RNKpdKwFOM84DDhP0vcJp/WLgUO7NSlJkiRJkmRB8cri+54Dxx87akNSNiRJkiRJkiRJaiDptcOO2z5i1LbMNyRtAmxFOK/PtH1xxyYlSZIkSZLMeyRtBtxg+8bi8WuBlwG/AfaxffPIbUrndZIkSZIkSZIk44KktYDf275L0rOADYCv276lS7uSJEmSJEnmO5IuAp5r+2ZJzwC+DbwD2Ah4vO2Xj9qm1LxOkiRJkiRJkhpIWkfS9yRdJem63lfXds0DjgHulbQ2cAjwGOBb3ZqUJEmSJEmyIFiqL7t6J+Bg28fY/jCwdhcGpfM6SZIkSZIkSepxGPBl4B7g2cDXgW90atH84D7b9wAvBT5n+53AIzu2KUmSJEmSZCGwlKRej8StgdP6nuukd2I6r5MkSZIkSZKkHsvbPpWQ4vut7X2A53Rs03zgX5J2BnYBflgcu1+H9iRJkiRJkiwUjgLOkHQc8E/gZwBFRdzfuzCoE495kiRJkiRJkswD7pS0CPilpP8E/gA8rGOb5gO7Am8BPm77ekmPAb7ZsU1JkiRJkiTzHtsfl3QqUfV2kieaJS4itK9HTjZsTJIkSZIkSZIaFN3YrwYeBHwUWBHY3/a5Xdo1H5C0PLC67Wu7tiVJkiRJkiTpjpQNSZIkSZIkSZKKSFoKeIXtf9j+ve1dbb8sHdfNkfRvwCXAicXjjSQd36lRSZIkSZIkSSek8zpJkiRJkiRJKiBpadv3Ak+WpK7tmYfsA2wO3AJg+xLgMd2ZkyRJkiRJknRFal4nSZIkSZIkSTXOBzYBLgaOk3Q0cHvvSdvHdmXYPOEe238fiAuk1mGSJEmSJMkCJJ3XSZIkSZIkSVKPlYGbgOcQzlUV39N53YwrJL0SWErSOsBuwDkd25QkSZIkSZJ0QDZsTJIkSZIkSZIKSPo98D9MOKv7U4Rt+386MWyeIGkF4IPA84j39ifAR23f2alhSZIkSZIkychJ53WSJEmSJEmSVEDSn4AvM9lp3cO29x2xSUmSJEmSJEkyL0nndZIkSZIkSZJUQNJFtjfp2o75hqTjp3ve9vajsiVJkiRJkiQZD1LzOkmSJEmSJEmqMSzjOmnO04AbgKOA88j3OUmSJEmSZMGTmddJkiRJkiRJUgFJK9u+uWs75huSlgK2AXYGNgB+BBxl+8pODUuSJEmSJEk6I53XSZIkSZIkSZKMFZKWJZzY+wP72j6wY5OSJEmSJEmSDkjZkCRJkiRJkiRJxoLCaf1CwnG9JvB54NgubUqSJEmSJEm6IzOvkyRJkiRJkiTpHElHAOsDJwDftn1FxyYlSZIkSZIkHZPO6yRJkiRJkiRJOkfSfcDtxcP+TYoA215x9FYlSZIkSZIkXZLO6yRJkiRJkiRJkiRJkiRJkmTsWNS1AUmSJEmSJEmSJEmSJEmSJEkySDqvkyRJkiRJkqQCkh4k6W1pR5IkSZIkSZLMLum8TpIkSZIkSZJqPAgYmdNY0lLjYEeSJEmSJEmSjJp0XidJkiRJkiRJNfYD1pJ0iaRfSPph7wlJX5D0uuLn30j6hKSfS7pA0iaSfiLp15LeUvyOJO0v6QpJl0vaqTj+LEmnS/oWcHkJO/aX9A1JL+6z5UhJ20t6naTjJJ0o6VpJe/f9zqslnV+McZCkpYqvw/tsemfr72CSJEmSJEmSlGDprg1IkiRJkiRJkjnGnsD6tjeS9CzgPdP87g22nybps8DhwJbAcsCVwFeAlwIbARsCqwC/kHRmce7mxetcP5MdAJKeCbwTOE7SSsAWwGuBV/fGAu4oXuNHwO3ATsCWtv8l6UvAqwrbVrO9fjHug8q+MUmSJEmSJEnSJum8TpIkSZIkSZLZ4/ji++XAA2zfBtwm6c7CKbwVcJTte4E/SzoD2Ay4FTh/Gsf1Etg+Q9IXJT2McIofY/seSQAn274JQNKxxeveAzyZcGYDLA/8BfgB8FhJBwI/Ak5q9A4kSZIkSZIkSU3SeZ0kSZIkSZIk9bmHyVJ8yw08f1fx/b6+n3uPlwY0zdi317DnG0T29L8Dr+877oHfc/HaR9j+wOAgkjYEng+8HXjFwFhJkiRJkiRJMhJS8zpJkiRJkiRJqnEb8MDi598CT5C0bCHVsXXFsc4Edip0ph8KPAM4v4YdPQ4H9gCwfWXf8W0krSxpeWAH4GzgVODlRaY2xfNrSFoFWGT7GODDwCYV/6YkSZIkSZIkaYXMvE6SJEmSJEmSCti+SdLZkq4ATgC+C1wG/BK4uOJw3weeBlxKZEO/z/aNktaraoft99r+s6Srgf8d+PWziKzstYFv2b4AQNKHgJMkLQL+RWRa/xM4rDgGsERmdpIkSZIkSZKMAtmDFYRJkiRJkiRJksxFJK1A6GtvYvvvxbHXAZva/s8ubUuSJEmSJEmSqqRsSJIkSZIkSZLMAyQ9F7gGOLDnuE6SJEmSJEmSuUxmXidJkiRJkiTJGCPpIYQ+9SBb275p1PYkSZIkSZIkyahI53WSJEmSJEmSJEmSJEmSJEkydqRsSJIkSZIkSZIkSZIkSZIkSTJ2pPM6SZIkSZIkSZIkSZIkSZIkGTvSeZ0kSZIkSZIkSZIkSZIkSZKMHem8TpIkSZIkSZIkSZIkSZIkScaOdF4nSZIkSZIkSZIkSZIkSZIkY0c6r5MkSZIkSZIkSZIkSZIkSZKx4/8DhUzDhXXxN60AAAAASUVORK5CYII=",
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.countplot(x=mutations_TCGA[\"tumor_types\"], \n",
" palette=sns.hls_palette(2),\n",
" ax=ax[0])\n",
"ax[0].tick_params(axis=\"x\", rotation=90)\n",
"sns.countplot(x=mutations_PCWGA[\"tumor_types\"], \n",
" palette=sns.hls_palette(2),\n",
" ax=ax[1])\n",
"ax[1].tick_params(axis=\"x\", rotation=90)\n",
"sns.countplot(x=mutations_all[\"tumor_types\"], \n",
" palette=sns.hls_palette(2),\n",
" ax=ax[2])\n",
"ax[2].tick_params(axis=\"x\", rotation=90)\n",
"\n",
"plt.figure(figsize=(25, 5))\n",
"sns.countplot(x=profile_mut_all[\"tumor_types\"], palette=sns.hls_palette(2))\n",
"plt.xticks(rotation=90);\n"
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Testing with a single RandomForest binary classifier"
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dimension of the training data (16680, 96) and test data (7149, 96)\n",
"Accuracy: 0.9795775632955658\n"
"image/png": "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",
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
"# For binary classification, construct y vector for a sigle selected tumor type\n",
"\n",
"target_type = \"Biliary-AdenoCA\"\n",
"\n",
"y_prf_bin = [1 if tumor_type == target_type else 0 for tumor_type in profile_mut_all[\"tumor_types\"]]\n",
"\n",
"# Split the data for fitting and prediction, use simple splitting here\n",
"X_prf_train, X_prf_test, y_prf_train, y_prf_test = train_test_split(X_prf, y_prf_bin, test_size = 0.3, random_state=1)\n",
"\n",
"\n",
"print(f\"Dimension of the training data {X_prf_train.shape} and test data {X_prf_test.shape}\")\n",
"\n",
"# Make a model\n",
"model = RandomForestClassifier(n_estimators=100, random_state=0)\n",
"# Fit the model \n",
"model.fit(X_prf_train, y_prf_train)\n",
"\n",
"# Predict with unused (test) data \n",
"y_prf_pred = model.predict(X_prf_test)\n",
"\n",
"print(f\"Accuracy:\", accuracy_score(y_prf_test, y_prf_pred))\n",
"\n",
"# Plot some results\n",
"plot_confusion_mat(y_prf_pred, y_prf_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Multiple models experiment, but still binary classification\n",
"\n",
"Note: this takes quite a while to compute"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
"Accuracy score for ALL: 0.9875507063925024\n",
"Accuracy score for AML: 0.9790180444817457\n",
"Accuracy score for Adrenal-neoplasm: 0.9889495034270528\n",
"Accuracy score for Biliary-AdenoCA: 0.9795775632955658\n",
"Accuracy score for Bladder-TCC: 0.9934256539376136\n",
"Accuracy score for Blood-CMDI: 0.9896489019443279\n",
"Accuracy score for Bone-Benign: 0.9994404811861799\n",
"Accuracy score for Bone-Epith: 0.9995803608896349\n",
"Accuracy score for Bone-Osteosarc: 0.9980416841516296\n",
"Accuracy score for Bone-cancer: 0.99972024059309\n",
"Accuracy score for Breast-AdenoCA: 0.9913274583857882\n",
"Accuracy score for Breast-DCIS: 0.9998601202965449\n",
"Accuracy score for Breast-Fibroadenoma: 0.9994404811861799\n",
"Accuracy score for Breast-LobularCA: 0.9994404811861799\n",
"Accuracy score for Breast-cancer: 0.9328577423415862\n",
"Accuracy score for CNS-GBM: 0.9739823751573646\n",
"Accuracy score for CNS-LGG: 0.9862917890614072\n",
"Accuracy score for CNS-Medullo: 0.9749615330815499\n",
"Accuracy score for CNS-Oligo: 0.9991607217792698\n",
"Accuracy score for CNS-PiloAstro: 0.995244090082529\n",
"Accuracy score for CNS-glioma-NOS: 0.9938452930479788\n",
"Accuracy score for Cervix-AdenoCA: 1.0\n",
"Accuracy score for Cervix-CA: 0.9895090222408729\n",
"Accuracy score for Cervix-SCC: 0.9990208420758148\n",
"Accuracy score for ColoRect-AdenoCA: 0.9585956077773116\n",
"Accuracy score for ColoRect-Adenoma: 0.9984613232619947\n",
"Accuracy score for DLBC: 0.9785984053713807\n",
"Accuracy score for Eso-AdenoCA: 0.9811162400335711\n",
"Accuracy score for Eso-SCC: 0.9783186459644706\n",
"Accuracy score for Ewings: 0.9847531123234019\n",
"Accuracy score for Eye-Melanoma: 0.995244090082529\n",
"Accuracy score for Eye-RB: 0.99972024059309\n",
"Accuracy score for Head-SCC: 0.9657294726535179\n",
"Accuracy score for Kidney-ChRCC: 0.9930060148272486\n",
"Accuracy score for Kidney-NOS: 0.9983214435585397\n",
"Accuracy score for Kidney-Papillary: 0.9878304657994125\n",
"Accuracy score for Kidney-RCC: 0.9734228563435445\n",
"Accuracy score for Kidney-Wilms: 0.9988809623723598\n",
"Accuracy score for Liver-Benign: 0.9984613232619947\n",
"Accuracy score for Liver-HCC: 0.9650300741362429\n",
"Accuracy score for Lung-AdenoCA: 0.970625262274444\n",
"Accuracy score for Lung-CArcinoid: 0.9979018044481746\n",
"Accuracy score for Lung-NOS: 0.9984613232619947\n",
"Accuracy score for Lung-SCC: 0.975660931598825\n",
"Accuracy score for Lung-Small: 0.9965030074136243\n",
"Accuracy score for Lymph-BNHL: 0.9690865855364387\n",
"Accuracy score for Lymph-CLL: 0.990068541054693\n",
"Accuracy score for Lymph-NOS: 0.9983214435585397\n",
"Accuracy score for Lymph-TNHL: 0.9995803608896349\n",
"Accuracy score for Lymph-cHL: 0.9993006014827248\n",
"Accuracy score for Meninges-Meningioma: 0.9969226465239893\n",
"Accuracy score for Mesothelium-Mesothelioma: 0.9934256539376136\n",
"Accuracy score for Myeloid-AML: 0.99972024059309\n",
"Accuracy score for Myeloid-MDS: 1.0\n",
"Accuracy score for Myeloid-MPN: 0.9981815638550846\n",
"Accuracy score for Neuroblastoma: 0.9840537138061267\n",
"Accuracy score for Oral-SCC: 0.9941250524548888\n",
"Accuracy score for Ovary-AdenoCA: 0.9783186459644706\n",
"Accuracy score for Panc-AdenoCA: 0.960973562736047\n",
"Accuracy score for Panc-Endocrine: 0.9953839697859841\n",
"Accuracy score for Panc-Other: 0.9984613232619947\n",
"Accuracy score for Para-AdenoCA: 0.9998601202965449\n",
"Accuracy score for Para-Adenoma: 0.9998601202965449\n",
"Accuracy score for Pheochromocytoma: 0.9930060148272486\n",
"Accuracy score for Pit-All: 0.9988809623723598\n",
"Accuracy score for Prost-AdenoCA: 0.960833683032592\n",
"Accuracy score for Prost-Adenoma: 0.9969226465239893\n",
"Accuracy score for Sarcoma: 0.9879703455028676\n",
"Accuracy score for Sarcoma-bone: 0.9885298643166877\n",
"Accuracy score for Skin-BCC: 0.9974821653378095\n",
"Accuracy score for Skin-Melanoma: 0.9832144355853966\n",
"Accuracy score for Skin-SCC: 0.9986012029654497\n",
"Accuracy score for Small-Intestine-carcinoid: 0.9980416841516296\n",
"Accuracy score for SoftTissue-Leiomyo: 0.9991607217792698\n",
"Accuracy score for SoftTissue-Liposarc: 0.9993006014827248\n",
"Accuracy score for Stomach-AdenoCA: 0.9732829766400896\n",
"Accuracy score for Testis-CA: 0.9918869771996084\n",
"Accuracy score for Thy-AdenoCA: 0.9778990068541055\n",
"Accuracy score for Thymoma: 0.9953839697859841\n",
"Accuracy score for Transitional-cell-carcinoma: 0.9841935935095818\n",
"Accuracy score for UCS: 0.9974821653378095\n",
"Accuracy score for Uterus-AdenoCA: 0.9801370821093859\n"
"for tgt_tumor_type in unique_tumor_types:\n",
" y_prf = [1 if tumor_type == tgt_tumor_type else 0 for tumor_type in profile_mut_all[\"tumor_types\"]]\n",
" X_prf_train, X_prf_test, y_prf_train, y_prf_test = train_test_split(X_prf, y_prf, test_size = 0.3, random_state=1)\n",
" model = RandomForestClassifier(n_estimators=100, random_state=0)\n",
" model.fit(X_prf_train, y_prf_train)\n",
" y_prf_pred = model.predict(X_prf_test)\n",
" print(f\"Accuracy score for {tgt_tumor_type}: {accuracy_score(y_prf_test, y_prf_pred)}\")\n"
}
],
"metadata": {
"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",
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}