{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Training with missing data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us load a data set and have a look" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_0feature_1feature_2feature_3target_0target_1target_2target_3
00.472986NaN0.242439-1.7007366.4651631.2477671.5623350.563148
10.753143-1.534721NaN-0.120228NaN1.4611331.682604-1.078739
2-0.8069822.871819NaN0.472457-2.545614NaN-3.3103120.749930
3NaNNaN1.342356-0.122150NaN1.0495690.504198NaN
41.012515-0.913869-1.0295301.209796NaNNaN1.132657-0.651620
...........................
950.078516-0.8372451.094795NaN3.8677491.2552170.865133NaN
960.959965-1.167800-0.3340900.8274240.5440132.263673NaN-0.057245
970.865017-0.8554050.071817-1.1259555.4172941.3490001.6000920.322496
98-0.2063090.421580NaN1.481052-3.5663681.444973-0.434093-1.330253
990.495926NaN-0.565377-0.1318051.5553371.5825800.6225290.949257
\n", "

100 rows × 8 columns

\n", "
" ], "text/plain": [ " feature_0 feature_1 feature_2 feature_3 target_0 target_1 target_2 \\\n", "0 0.472986 NaN 0.242439 -1.700736 6.465163 1.247767 1.562335 \n", "1 0.753143 -1.534721 NaN -0.120228 NaN 1.461133 1.682604 \n", "2 -0.806982 2.871819 NaN 0.472457 -2.545614 NaN -3.310312 \n", "3 NaN NaN 1.342356 -0.122150 NaN 1.049569 0.504198 \n", "4 1.012515 -0.913869 -1.029530 1.209796 NaN NaN 1.132657 \n", ".. ... ... ... ... ... ... ... \n", "95 0.078516 -0.837245 1.094795 NaN 3.867749 1.255217 0.865133 \n", "96 0.959965 -1.167800 -0.334090 0.827424 0.544013 2.263673 NaN \n", "97 0.865017 -0.855405 0.071817 -1.125955 5.417294 1.349000 1.600092 \n", "98 -0.206309 0.421580 NaN 1.481052 -3.566368 1.444973 -0.434093 \n", "99 0.495926 NaN -0.565377 -0.131805 1.555337 1.582580 0.622529 \n", "\n", " target_3 \n", "0 0.563148 \n", "1 -1.078739 \n", "2 0.749930 \n", "3 NaN \n", "4 -0.651620 \n", ".. ... \n", "95 NaN \n", "96 -0.057245 \n", "97 0.322496 \n", "98 -1.330253 \n", "99 0.949257 \n", "\n", "[100 rows x 8 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "x_train = pd.read_csv(\"training_data_input.csv\")\n", "y_train = pd.read_csv(\"training_data_output.csv\")\n", "\n", "display(pd.concat([x_train, y_train], axis=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that we have a data set with 4 features and 4 targets. There seem to be lots of missing entries in both the features and the targets." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "missing entries in input data: 28%\n", "missing entries in output data: 30%\n" ] } ], "source": [ "print(\"missing entries in input data:\", \"{}%\".format(int(np.round(x_train.isna().mean().mean()*100))))\n", "print(\"missing entries in output data:\", \"{}%\".format(int(np.round(y_train.isna().mean().mean()*100))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### We want to train a linear regression. What can we do about the missing entries?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Method 1: Mean imputation\n", "Fill all the missing entries with the mean value of their respective column" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_0feature_1feature_2feature_3target_0target_1target_2target_3
00.472986-0.0718680.242439-1.7007366.4651631.2477671.5623350.563148
10.753143-1.534721-0.183861-0.1202281.6559261.4611331.682604-1.078739
2-0.8069822.871819-0.1838610.472457-2.5456141.605148-3.3103120.749930
30.064623-0.0718681.342356-0.1221501.6559261.0495690.504198-0.312009
41.012515-0.913869-1.0295301.2097961.6559261.6051481.132657-0.651620
...........................
950.078516-0.8372451.094795-0.0939393.8677491.2552170.865133-0.312009
960.959965-1.167800-0.3340900.8274240.5440132.2636730.136459-0.057245
970.865017-0.8554050.071817-1.1259555.4172941.3490001.6000920.322496
98-0.2063090.421580-0.1838611.481052-3.5663681.444973-0.434093-1.330253
990.495926-0.071868-0.565377-0.1318051.5553371.5825800.6225290.949257
\n", "

100 rows × 8 columns

\n", "
" ], "text/plain": [ " feature_0 feature_1 feature_2 feature_3 target_0 target_1 target_2 \\\n", "0 0.472986 -0.071868 0.242439 -1.700736 6.465163 1.247767 1.562335 \n", "1 0.753143 -1.534721 -0.183861 -0.120228 1.655926 1.461133 1.682604 \n", "2 -0.806982 2.871819 -0.183861 0.472457 -2.545614 1.605148 -3.310312 \n", "3 0.064623 -0.071868 1.342356 -0.122150 1.655926 1.049569 0.504198 \n", "4 1.012515 -0.913869 -1.029530 1.209796 1.655926 1.605148 1.132657 \n", ".. ... ... ... ... ... ... ... \n", "95 0.078516 -0.837245 1.094795 -0.093939 3.867749 1.255217 0.865133 \n", "96 0.959965 -1.167800 -0.334090 0.827424 0.544013 2.263673 0.136459 \n", "97 0.865017 -0.855405 0.071817 -1.125955 5.417294 1.349000 1.600092 \n", "98 -0.206309 0.421580 -0.183861 1.481052 -3.566368 1.444973 -0.434093 \n", "99 0.495926 -0.071868 -0.565377 -0.131805 1.555337 1.582580 0.622529 \n", "\n", " target_3 \n", "0 0.563148 \n", "1 -1.078739 \n", "2 0.749930 \n", "3 -0.312009 \n", "4 -0.651620 \n", ".. ... \n", "95 -0.312009 \n", "96 -0.057245 \n", "97 0.322496 \n", "98 -1.330253 \n", "99 0.949257 \n", "\n", "[100 rows x 8 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_train_imputed = x_train.fillna(value=x_train.mean())\n", "y_train_imputed = y_train.fillna(value=y_train.mean())\n", "\n", "display(pd.concat([x_train_imputed, y_train_imputed], axis=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and train a regressor with the imputed data" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression()" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "imputed_linear_regression = LinearRegression()\n", "imputed_linear_regression.fit(x_train_imputed, y_train_imputed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Method 2: Deletion\n", "Remove all examples which are missing entries" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_0feature_1feature_2feature_3target_0target_1target_2target_3
500.507523-0.6183710.790793-0.8344053.2306410.8858570.816932-0.239825
54-0.8096700.500495-0.193510-0.6642030.7849971.141402-1.039911-0.013783
67-1.556314-0.6933151.624609-0.120666-2.2478480.721211-0.982030-4.287106
68-2.3485820.1672571.6999651.168899-7.5525320.995456-3.366157-5.583932
70-0.4888211.632122-0.4012251.009360-3.4508921.750701-2.670395-0.953182
92-1.160888-0.5793290.279841-0.4096020.2514551.572128-0.305981-1.609754
970.865017-0.8554050.071817-1.1259555.4172941.3490001.6000920.322496
\n", "
" ], "text/plain": [ " feature_0 feature_1 feature_2 feature_3 target_0 target_1 target_2 \\\n", "50 0.507523 -0.618371 0.790793 -0.834405 3.230641 0.885857 0.816932 \n", "54 -0.809670 0.500495 -0.193510 -0.664203 0.784997 1.141402 -1.039911 \n", "67 -1.556314 -0.693315 1.624609 -0.120666 -2.247848 0.721211 -0.982030 \n", "68 -2.348582 0.167257 1.699965 1.168899 -7.552532 0.995456 -3.366157 \n", "70 -0.488821 1.632122 -0.401225 1.009360 -3.450892 1.750701 -2.670395 \n", "92 -1.160888 -0.579329 0.279841 -0.409602 0.251455 1.572128 -0.305981 \n", "97 0.865017 -0.855405 0.071817 -1.125955 5.417294 1.349000 1.600092 \n", "\n", " target_3 \n", "50 -0.239825 \n", "54 -0.013783 \n", "67 -4.287106 \n", "68 -5.583932 \n", "70 -0.953182 \n", "92 -1.609754 \n", "97 0.322496 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "joint_dropped = pd.concat([x_train, y_train], axis=1).dropna(how=\"any\")\n", "x_train_dropped = joint_dropped[x_train.columns]\n", "y_train_dropped = joint_dropped[y_train.columns]\n", "\n", "display(pd.concat([x_train_dropped, y_train_dropped], axis=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and train a regressor with the remaining data" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression()" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dropped_linear_regression = LinearRegression()\n", "dropped_linear_regression.fit(x_train_dropped, y_train_dropped)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Method 3: Bayesian model\n", "A Bayesian model can just treat the missing entries as unknowns " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "import halerium.core as hal\n", "from halerium.core.regression import connect_via_regression\n", "\n", "g = hal.Graph(\"g\")\n", "with g:\n", " x = hal.Variable(\"x\", shape=(4,), mean=0, variance=1)\n", " y = hal.Variable(\"y\", shape=(4,), variance=0.1)\n", " connect_via_regression(\"reg\", inputs=[x], outputs=[y], order=1)\n", "\n", "# run this to show the graph in the online platform\n", "# hal.show(g)\n", "\n", "bayesian_train_model = hal.get_posterior_model(g, data={g.x: x_train, g.y: y_train}, method=\"MAP\")\n", "bayesian_post_graph = bayesian_train_model.get_posterior_graph()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Bayesian model will actually calculate an estimate for each missing entry (or rather a probability distribution)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_0feature_1feature_2feature_3
00.472986NaN0.242439-1.700736
10.753143-1.534721NaN-0.120228
2-0.8069822.871819NaN0.472457
3NaNNaN1.342356-0.122150
41.012515-0.913869-1.0295301.209796
50.5018720.1388460.640761NaN
6-1.154360NaN-1.681757-1.788094
7-2.218535-0.647431NaN-0.039209
8NaNNaN-0.2539040.073252
9-0.997204-0.713856NaN-0.677945
10-0.571881-0.105862NaN0.318665
11-0.337595NaN-0.1149202.241818
12NaN0.5351360.2324900.867612
13-1.148213NaN1.000943NaN
14NaNNaN0.050523NaN
150.9435750.357644-0.0834490.677806
16NaN0.222719-1.5289851.029211
17-1.166259-1.009562-0.1052680.512022
181.407728NaN1.471234NaN
19-0.461395NaN-0.571817-0.603299
20-1.339389-1.689653NaN0.257773
211.828821-1.001002-2.0916910.146560
22-0.466351NaNNaN-1.259224
23NaN0.8026300.272391-0.969176
240.871968-1.446359NaN0.197921
25-1.365640NaN0.015935-0.080043
26-0.250803-0.565143NaN-0.782282
273.041686-0.626081NaN-0.587336
28NaN1.2320450.450889-0.641410
29NaN0.965746-1.284003-1.274572
301.5228421.4618820.037656-0.246197
31NaNNaNNaN-1.513087
32NaN0.249203NaNNaN
33NaN1.6892920.1777500.032006
341.933216-1.062095-0.7326290.842741
351.076740NaN-2.6194930.739046
360.667501NaNNaN1.407948
370.051149-0.935975-1.839109NaN
38NaN-0.561885-1.1324690.274291
390.7359120.434319-1.1200410.889095
40NaN-2.4880040.595909-2.035862
41NaN1.0576420.652769NaN
42-0.8834620.345692NaN0.410710
43NaN0.734148-0.125496NaN
440.202231NaN-1.421277-1.163588
45NaN0.0500220.765430-0.028515
46-1.205646NaN0.566844NaN
47-0.9403590.283607-0.390320-2.154124
48NaN-0.566221-0.517709NaN
49-0.603695NaN-0.959012-1.595297
500.507523-0.6183710.790793-0.834405
511.309470-1.238742NaN0.696147
521.778984-0.796317NaNNaN
530.789916NaN-2.184060-1.567268
54-0.8096700.500495-0.193510-0.664203
55NaN-1.658425NaNNaN
561.2698590.150519NaNNaN
57NaN0.164989NaN-0.115399
58NaNNaN0.4755142.639046
590.6911081.111236-0.257684-1.195951
60NaN-1.163467-3.015915NaN
610.331393-1.072815NaN-0.085521
62-0.476624-0.9637151.153983-0.444866
63NaN-0.474993-0.791428-1.693119
64-0.741163NaNNaNNaN
65NaNNaN-0.818418-0.177300
660.032502NaNNaN0.210377
67-1.556314-0.6933151.624609-0.120666
68-2.3485820.1672571.6999651.168899
690.0553380.217881NaN-0.158261
70-0.4888211.632122-0.4012251.009360
71-1.577518-0.788323-1.1564470.410545
72-0.633212-0.650858-0.9250590.143164
730.975512-0.5997550.607099-0.018603
74-0.6215600.3466101.337491NaN
750.695248NaNNaN0.763436
760.9769370.5176060.2491711.304453
771.116544NaN0.662984-0.904909
78-0.158939NaN-0.043852-0.666356
79NaNNaNNaN-1.300151
80-0.511364-0.692839NaN1.682377
81NaN0.2009620.376479-0.193338
82-0.536373NaN-0.405771NaN
83NaNNaN0.331393NaN
840.980989NaNNaNNaN
85-0.0774960.4104310.2752770.525207
86NaN2.193451-0.159283NaN
870.1682981.370530-0.728801NaN
881.2292950.7795500.215736NaN
891.2908190.455251-0.571328-0.465401
90-0.6325711.413624-0.167273NaN
91-0.5796591.1212770.619558NaN
92-1.160888-0.5793290.279841-0.409602
93NaN0.020903-0.576144-1.103720
94NaN-0.939964-0.7222520.251525
950.078516-0.8372451.094795NaN
960.959965-1.167800-0.3340900.827424
970.865017-0.8554050.071817-1.125955
98-0.2063090.421580NaN1.481052
990.495926NaN-0.565377-0.131805
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_0feature_1feature_2feature_3
00.472986-0.7592070.242439-1.700736
10.753143-1.5347210.360400-0.120228
2-0.8069822.871819-0.9019170.472457
30.533772-1.1794731.342356-0.122150
41.012515-0.913869-1.0295301.209796
50.5018720.1388460.6407610.462867
6-1.1543600.000016-1.681757-1.788094
7-2.218535-0.647431-0.350765-0.039209
80.180386-0.439187-0.2539040.073252
9-0.997204-0.7138560.246540-0.677945
10-0.571881-0.1058621.4474960.318665
11-0.337595-1.091010-0.1149202.241818
12-2.7362050.5351360.2324900.867612
13-1.1482131.2405101.0009430.583911
14-0.133397-0.8198230.050523-0.434769
150.9435750.357644-0.0834490.677806
160.3941970.222719-1.5289851.029211
17-1.166259-1.009562-0.1052680.512022
181.407728-1.5508611.4712341.608291
19-0.461395-0.631948-0.571817-0.603299
20-1.339389-1.689653-0.1189970.257773
211.828821-1.001002-2.0916910.146560
22-0.4663510.2082420.408953-1.259224
23-0.4104070.8026300.272391-0.969176
240.871968-1.446359-0.2593020.197921
25-1.365640-1.6126850.015935-0.080043
26-0.250803-0.565143-0.917229-0.782282
273.041686-0.6260811.193158-0.587336
281.0737911.2320450.450889-0.641410
29-1.0035970.965746-1.284003-1.274572
301.5228421.4618820.037656-0.246197
31-0.7065640.145486-0.472127-1.513087
320.4186050.249203-1.133117-0.512646
330.4369801.6892920.1777500.032006
341.933216-1.062095-0.7326290.842741
351.0767400.069814-2.6194930.739046
360.667501-0.2194590.6354131.407948
370.051149-0.935975-1.839109-0.060533
38-0.575251-0.561885-1.1324690.274291
390.7359120.434319-1.1200410.889095
400.044935-2.4880040.595909-2.035862
41-0.0018711.0576420.6527690.003109
42-0.8834620.345692-1.6797390.410710
430.1097910.734148-0.125496-0.897293
440.202231-0.035420-1.421277-1.163588
45-1.2914950.0500220.765430-0.028515
46-1.205646-0.2075000.5668440.835726
47-0.9403590.283607-0.390320-2.154124
48-0.443188-0.566221-0.5177090.358158
49-0.6036950.184274-0.959012-1.595297
500.507523-0.6183710.790793-0.834405
511.309470-1.238742-1.1575200.696147
521.778984-0.7963170.9263921.833046
530.789916-0.119241-2.184060-1.567268
54-0.8096700.500495-0.193510-0.664203
550.654011-1.6584250.240789-0.615273
561.2698590.150519-1.137418-0.680453
57-1.3761120.164989-1.365167-0.115399
580.8946410.0949430.4755142.639046
590.6911081.111236-0.257684-1.195951
60-0.217195-1.163467-3.0159150.357342
610.331393-1.0728151.607594-0.085521
62-0.476624-0.9637151.153983-0.444866
63-0.220168-0.474993-0.791428-1.693119
64-0.741163-0.6664930.601783-1.320586
650.498025-0.692433-0.818418-0.177300
660.032502-0.3805470.5085120.210377
67-1.556314-0.6933151.624609-0.120666
68-2.3485820.1672571.6999651.168899
690.0553380.2178810.491295-0.158261
70-0.4888211.632122-0.4012251.009360
71-1.577518-0.788323-1.1564470.410545
72-0.633212-0.650858-0.9250590.143164
730.975512-0.5997550.607099-0.018603
74-0.6215600.3466101.337491-2.588218
750.6952480.5988830.7394680.763436
760.9769370.5176060.2491711.304453
771.1165440.1336070.662984-0.904909
78-0.1589390.230231-0.043852-0.666356
791.1259590.7130620.539098-1.300151
80-0.511364-0.692839-0.7472521.682377
812.3971690.2009620.376479-0.193338
82-0.5363731.193916-0.405771-1.085892
830.728069-0.0426540.3313930.364764
840.9809890.7354670.5192230.578556
85-0.0774960.4104310.2752770.525207
86-0.0140282.193451-0.1592830.273037
870.1682981.370530-0.728801-1.226624
881.2292950.7795500.215736-0.646722
891.2908190.455251-0.571328-0.465401
90-0.6325711.413624-0.167273-1.041896
91-0.5796591.1212770.619558-0.399106
92-1.160888-0.5793290.279841-0.409602
93-0.3648790.020903-0.576144-1.103720
94-0.851016-0.939964-0.7222520.251525
950.078516-0.8372451.094795-1.177459
960.959965-1.167800-0.3340900.827424
970.865017-0.8554050.071817-1.125955
98-0.2063090.421580-0.7047931.481052
990.4959260.324680-0.565377-0.131805
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_train_bayesian_imputed = bayesian_train_model.get_means(g.x)\n", "x_train_bayesian_imputed = pd.DataFrame(data=x_train_bayesian_imputed, columns=x_train.columns)\n", "\n", "from plots import display_side_by_side\n", "display_side_by_side(x_train, x_train_bayesian_imputed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Compare the performance on test data" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "x_test = pd.read_csv(\"testing_data_input.csv\").values\n", "y_test = pd.read_csv(\"testing_data_output.csv\").values\n", "\n", "imputed_prediction = imputed_linear_regression.predict(x_test)\n", "\n", "dropped_prediction = dropped_linear_regression.predict(x_test)\n", "\n", "bayesian_prediction_model = hal.get_generative_model(bayesian_post_graph, data={g.x: x_test})\n", "bayesian_prediction = bayesian_prediction_model.get_means(g.y)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Bayesian model')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAALJCAYAAACk6aWUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACi7UlEQVR4nOzdeXxcdfX/8dfJZGnSpluaFmhpWhYLlC5gAQVZalEQCoiyiAVbUMu+iopW/brVFQR+7FWhAaKIAooFUrCGHYECXSxYhdKUlBbSlq5J2iyf3x93Jp0ks9wks2Xm/Xw8YjMzd+49k+Inp597PudjzjlERERERCS2vHQHICIiIiLSFyhxFhERERHxQYmziIiIiIgPSpxFRERERHxQ4iwiIiIi4oMSZxERERERH5Q4S1RmdqeZfT/RxyaDmR1tZitjvD7GzJyZ5fs8X1o/T2+Y2WozO97nsbPM7PlkxySS63J5PO3B9VeY2XG9eP8TZjYzcRFlru6M9+lkZvPN7KfpjiMRkvIfvaSfma0Gvuac+0dPz+GcuygZxyaDc+45YFzocW8/f7o+T/CXxf3OuVHpuH4sZvZDYD/n3LnpjkUklTSe9v7zd/P643v5/s8lKhaRzjTjnKOSNVMgIpJrNJ7mpkz/e8/0+PoqJc5ZyMzuA0YDfzez7Wb2rbBba181szXAP4PH/tnM1pvZFjN71szGh52n/daKmR1nZnVm9g0z+9DM1pnZ+T08tszM/m5mW83sVTP7abRyATOrNLNvBL8fGfwMlwQf72dmm8xznJnVRfv8YaecYWZrzGyDmc2J8TOM9Hm+FfZ5Pm9mJ5nZf4MxfDfsvT80s7+Y2Z/MbJuZvW5mk8Jed2a2X+drmVl/4Algr2Dc281sLzPLM7PrzOwdM9toZg+a2dCw959nZrXB16J+prCf/aPBn/0rwL6dXr/ZzN4Lvv6amR0dfP5E4LvA2cG4lgafP9/M3gp+zlVmdmGs64v0NRpPEzae3m5eCcV2M3vBzPYws5vM7CMz+4+ZHRJ2fHv5gZkdbmaLg5/vAzP7TfD5fmZ2f3Dc2xz87COCrz1tZl8Lfj/LzJ43s+uD13rXzD4Xdq2xwb+rbWb2DzO7zczuj/I5Qn8X3zaz9cA9ZlYU/BzvB79uMrOi4PHPmNkXg99/KvjzPin4+HgzWxL2s38m+N/NBjP7U4yfZdTx3nb/7rnfzLYCs8z7HfJo8O/2bTP7eoTjo/2uWm1m3zGzN4M/u3vMrF/Y69PNbEnw5/+imU0Me+2Q4Pm2BT9P+/v6OiXOWcg5dx6wBjjFOTfAOfersJePBQ4ETgg+fgLYHxgOvA5UxTj1HsAgYCTwVeA2MxvSg2NvA3YEj5kZ/IrmGeC4sNhXBf8EOAZ4znXaNz7O5/8U3i3IacAPzOzAGNfu/Hn6BT/PD4DfAucCHweODp5rn7DjTwP+DAwF/gD81cwKYl3AObcD+BzwfjDuAc6594ErgM8HP/dewEd4P0PM7CDgDuC84GtlQKwyj9uAJmBP4ILgV7hXgclhcf/ZzPo556qBnwF/CsYVGlw/BKYDA4HzgRvN7NBYn1OkL9F4mrDx9Czge8AwYCfwEt7PaBjwF+A3Ud53M3Czc24g3j/0Hww+PxPvZ7I33rh3EdAY5RxHACuD1/oV8Hszs+BrfwBeCZ7jh3hjaSx74I2PFcBsYA7wCbxxcxJwePBzQsef9zF0/Xk/E/z+J8CTwBC88fuWSBf2Od6fhvfzHIz3398fgbrg8WcAPzOzaZ2Oj/W7agbef9/7Ah8LfbbgOH83cGEwjruAR4P/kCgE/grcFzzvn4EvRvpMfZES59zzQ+fcDudcI4Bz7m7n3Dbn3E68QWOSmQ2K8t5m4MfOuWbn3OPAdsLq4Pwca2YBvP8D/Z9zrsE59yZQGSPeZ4CjzSwPb6D5FXBU8LVj2T3w+PUj51yjc24psBRvoPOjGZjrnGsGHsAbgG8O/uxWACuAiWHHv+ac+0vw+N/gJd2f6GasIRcCc5xzdWF/T2eYdxvuDGCBc+7Z4GvfB9oinSTsZ/+D4H8D/6bTz945d79zbqNzrsU5dwNQRPS/Y5xzjznn3nGeZ/AG/6N7+DlF+hqNp/7H00ecc68555qAR4Am59y9zrlW4E/AIVHe1wzsZ2bDnHPbnXP/Cnu+DG/dRWvw3FujnKPWOffb4LUq8SYORpjZaOAwvDFxl3PueeDROJ+5De/nvTP49z4D7+/mQ+dcPfAjdiffz9AxUf552OPwn3czXiK+l3OuKRhHJH7G+5ecc391zrXh/Z76FPDt4HmXAL+j4z8O4v2uutU5955zbhMwFzgn+PzXgbuccy8Hf/6VeP8g+kTwqwC4Kfjf7F/wJmWyghLn3PNe6BszC5jZL8wrAdgKrA6+NCzKezc651rCHjcAA7p5bDneotT3wl4L/74D59w7eL8kJuMlZAuA981sHD0b6Nf7jL+zjcFBF3bPanwQ9npjp3O1f6bgABb6F39PVACPBG+HbQbeAlqBEcFzhl9rB7Axynki/exrww8w73bwW8FbhpvxZnSi/feAmX3OzP4VvA24GTgp1vEiWUbjqb/4oet4GWv8DPdVvJnO/wTLMaYHn78PWAg8ECyR+FWMu3rtcTrnGoLfDsAbPzeFPQcxfn5B9cHkP2QvOo6jtewe618CPmZeCclk4F5gbzMbhjcz/WzwuG8BBrxiXkeRzncCw68Vb7x/r9Pxm5xz2zrFNzLS8VF+V3X+fRF6rQL4Ruj3UnD83zv4+l7A2k53Lzr8runLlDhnL+fj+S/j3aY5Hi9BGhN83kieeqCFjreX9o7znmfw/qVd6JxbG3z8FbzbWkuivCfa50+V9s8UnN0ZBbwffKoBKAk7do+w7yPF/R7wOefc4LCvfsGfxbpO1yrBm4WJJPSzD/95jw5779HAt/FuqQ5xzg0GtrD7v4cOsQXr+B4CrgdGBI9/nOT+9yOSDhpP08Q59z/n3Dl45S+/BP5iZv2DM5k/cs4dBByJVzL2lW6efh0wNDhuhsT7+XX+WbyPl0SGjA4+F0rSXwOuBP7tnNsFvAhcA7zjnNsQPG69c+7rzrm98O4w3m5h62A6xRtvvA+P7/3g5yvtFN/asMexfld1eD38s+H9Xprb6fdSiXPuj8E4R4aVw4TemxWUOGevD4B94hxTindrZSNeIvezZAcVnLV9GPihmZWY2QHEH+yeAS5j97/OnwYuB54PmwXuzM/nT6aPm9kXguUUV+H9nEO3GJcAXw7OUJ3I7lt34MVd1un27p3AXDOrADCzcjM7LfjaX4Dp5i08KQR+TJT/X0f42R9Ex3rIUrxfwvVAvpn9AK92OTy2McHBFaAQr5SjHmgxb8HNZ338bET6Go2naRpPzexcMysPzoZuDj7damZTzWxCsFxlK165Q7T4I3LO1QKL8X5+hWb2SeCUbob4R+B7wXF5GN4amPDFhaGfd2g2/+lOjzGzM80s9I+fj/CS30ifxfd4H/x87+El6j83bzHlRLwZ/PDa+1i/qwAuNbNR5i1I/y5eWQ1463wuMrMjzNPfzE4OJukv4f0uucLM8s3sC3gz7FlBiXP2+jne/5k3m9m1UY65F+/2yVrgTTr+nyWZLsObkVmPd7vtj3j/Z43mGbxfSqGB/nm8X0zPRn2Hv8+fTH8DzsYbBM8DvhCsIQNv9uEUvF8CM/AWUQDgnPsP3s9jVTD2vfAWxzwKPGlm2/D+no4IHr8CuBRvUce64PXqYsR1Gd4tyvXAfOCesNcW4i1u+i/efxdNdLxN9+fgnxvN7PXg7b8r8BbrfIQ34xavPlCkL9J4mr7x9ERghZltxxsLvxQsldgDL5Hcile+9gwdE1a/ZgCfxPsHz0/xEsNYP7/OfoqXfC8DluMteAzf6KPzz7vzY/DqrF8OfsZHgSudc+92vlAPxnvwapLH4M0UP4JXn/1U2OuxflcRvNaTeAsbV4U+m3NuMV6d863B974NzAq+tgv4QvDxR8HzPxwnzj7DOpagiKSemf0S2MM5lxU7PZk2ChGRNMm28TTVzGud9h/n3P+lO5Zki/e7ylK88U1foRlnSTkzO8DMJgZv7xyOd+vokXTHJSLS12g87R0zO8zM9jWvX/6JeHXqf01zWJLBtKuMpEMp3u3EvfD6AN+Ad7tIRES6R+Np7+yBV0ZQhlf2cLFz7o30hiSZTKUaIiIiIiI+qFRDRERERMSHrCjVGDZsmBszZky6wxARiei1117b4JwrT3ccmUTjtohkqlhjdlYkzmPGjGHx4sXpDkNEJCIzy5pdsxJF47aIZKpYY7ZKNUREREREfFDiLCIiIiLigxJnEREREREflDiLiIiIiPigxFlERERExAclziIiIiIiPihxFhERERHxQYmziIiIiIgPSpxFRERERHxQ4iwiIiIi4oMSZxERERERH5Q4i4iIiEhWqaqrYcyiWeQtmM6YRbOoqqtJyHnzE3IWEZEs1traSiAQSHcYIiLiw321/+CiN2+noXUnALWN9cxefgsAM0ZN7dW5NeMsIhLDwoULOeSQQ3j//ffTHYqISEZJ1qxub7z77rt89ZgzaFi2rsPzDa07mbOystfn14yziEgMpaWlDB06lH79+qU7FBGRjFFVV8Ps5bckZVa3N4qLi2kekAfFXVPcNY0ben1+zTiLiETw4YcfAnDkkUdSU1PD0KFD0xyRiEjmmLOysj1pDknUrG5P1NfX45xjjz32YPTNp8A+A7scM7p4WK+vo8RZRKSTF198kbFjx7JgwQIAzCzNEYmIZJZos7eJmNXtrg0bNvDxj3+c733vewD87IBZlASKOhxTEihi7riZvb6WEmcRkU4mTZrErFmzOPLII9MdiohIRoo2e5uIWd3uKisr4/zzz+fMM88EvFKReRMup6K4HMOoKC5n3oTLE1JCYs65Xp8k3aZMmeIWL16c7jBEpI975ZVXmDx5MoWFhQk9r5m95pybktCT9nEat0X6ts41zuDN6iYqQfVj1apV9OvXj7322iuh5401ZmvGWUQEqKur49hjj22/1SciItElc1bXj9bWVk499VTOOOMMUjkJrK4aIiLAqFGjuOeee/jsZz+b7lBERPqEGaOmpq2DRiAQYN68eZSUlKR0HYpmnEUkpy1cuJDly5cD8KUvfUndM0REMtiqVat4+OGHAa/r0eTJk1N6fSXOIpKzdu3axaWXXsq1116b7lBERMSHH/zgB1x88cVs27YtLddXqYaI5KzCwkIWLlzIkCFD0h2KiIjgLTqcs7KSNY0bGF08jLnjZnYoB7nrrruora2ltLQ0LfFpxllEck51dTW/+tWvANh3331VniEikgFCnTpqG+txuPbdCG98oYqLL76YXbt20b9/fw466KC0xajEWURyzp///GceeOABmpqa0h2KiIgERduNcO4jt/PnP/+Z1atXpyewMCrVEJGc4ZzDzJg3bx7bt2+nX79+6Q5JRESCuuw66ByYsem4IWz47n8z4u6gZpxFJCdUV1dz7LHHsnnzZgKBAIMGDUp3SCIiEqbDroPrG+CaF6B2G6OLh2VE0gxpTpzN7G4z+9DM/h323FAze8rM/hf8U6t2RKTXmpubaW5upq2tLd2h9Fkas0UkmeaOm0lJoMh70OagxdHP5TN33Mz0BhYm3TPO84ETOz13HbDIObc/sCj4WESkR7Zs2QLAKaecwgsvvJAxsxZ91Hw0ZotIkswYNZWbKs73diPcawCj553O7z7//bRtshJJWhNn59yzwKZOT58GVAa/rwQ+n8qYRCR7PP3004wZM4bnn38egLy8dM8V9G0as0Ukmd5//31+cuKlXP3vQ2ibvoDaz1RmVNIM6Z9xjmSEc24dQPDP4WmOR0T6qPHjxzN9+vS0ti7KARqzRSQhhg8fzvTp0zn22GPTHUpUmZg4+2Jms81ssZktrq+vT3c4IpJBli9fTltbG+Xl5dx3330qz8gQGrdFJJLVq1ezZcsW8vPzuf3221O+jXZ3ZGLi/IGZ7QkQ/PPDSAc55+Y556Y456aUl5enNEARyVz//e9/Oeyww/jlL3+Z7lByha8xGzRui0hXu3bt4vjjj+ecc85Jdyi+ZGIf50eBmcAvgn/+Lb3hiEhfsv/++/Ob3/yGL33pS+kOJVdozBaRHissLOTGG29k7733TncovqS7Hd0fgZeAcWZWZ2ZfxRt8P2Nm/wM+E3wsIhLTokWLWLNmDWbGJZdcovKMJNCYLSIhVXU1jFk0i7wF0xmzaBZVdTXdev+qVauY8+cbGbNoFqfZXXx+403dPkc6pHXG2TkXbV5+WkoDEZE+raGhgRkzZnDkkUfy8MMPpzucrKUxW0TAS5pnL7+lfXvs2sZ6Zi+/BcB3F4wvfP3LLFu2DDfvGCgI9Ogc6ZCJNc4iIt1SUlLCE088we9+97t0hyIikvXmrKxsT5pDGlp3MmdlZZR3dLXxkjG4H3wcCgI9Pkc6KHEWkT6rurqaykpvkD3kkENUniEikgJrGjd06/mQVatW8b3vfY+2tjbWFm2HsQO7fY50U+IsIn2Sc47bb7+dW265hZaWlnSHIyKS9UJ1zQ4X8fXRxcNivv8vf/kLd9xxB++9917UY+OdI92UOItIn2Rm/OlPf+LJJ58kPz8TGwSJiGSPUF1zbWPkHuwlgSLmjpsZ8xzf/OY3Wb58ORUVFcwdN5OSQFG3z5FuSpxFpE+prq7mC1/4Ak1NTRQXF6s8Q0QkBSLVNYdUFJczb8LlERf1rVq1iqlTp7Z3Pdprr70AbwHgvAmXU1FcjmExz5FJNE0jIn3K+++/T21tLY2NjfTr1y/d4YiI9FlVdTXMWVnJmsYNjC4extxxM6Mmrj2tPd64cSNr1qzho48+YvTo0R1emzFqasYnyp1pxllE+oTGxkYALrjgAv71r38xZMiQNEckItJ3hZdeOFx7O7hovZRj1R5Hem9ozD7ssMP4z3/+w6RJkxL7AdJEibOIZLx//OMf7LfffixbtgyAgoKCNEckItK3dbelXKSa5GjvXbNmDQcddBB/+MMfgOwas5U4i0jG23fffTn88MMZNWpUukMREckK8VrKdd4ZEGivSY53zmHDhnH44Ydz0EEHJTboDKDEWUQy1ttvvw3A2LFjeeSRR7QQUEQkQWK1g4tWxgGwetr8qMnzXtuKaWpqoqSkhD/96U9Mnjw5WeGnjRJnEclIS5cu5eCDD+auu+5KdygiIlknVju4eGUckd5b3Bxg57ee4+tf/3pyA08zddUQkYw0YcIEvve973HmmWemOxQRkawT6mYRqavGeUtuiPieUClGxPdOnknzT2qzcpY5nDkXefeXvmTKlClu8eLF6Q5DRBLgmWee4eCDD6asrCzdoSSMmb3mnJuS7jgyicZtkcw1ZtGsiBudVBSXs3ra/A7PrVq1iq1bt2ZVwhxrzFaphohkjM2bN3PaaafxjW98I92hdNB5kUy0dk0iItnA765+zjlmzpzJWWedRUtLSypDTBuVaohIxhg8eDB/+9vfmDBhQrpDaRdaJBOq9wtfJNPXGveLiPgRqRTjpPLDmLOykvOW3NChrKOyspJt27aRn58bKaVKNUQk7aqrq3HO8bnPfS7doXTRnVuW0ahUoyuN2yJ9R+cJBNY3UPDqRu75/s1ZOYEQa8zOjX8eiEjGcs7xk5/8BOccJ554ImaW7pA6iNfrVEQkG4Vvx51nRqtr2/1i9Rqan3yPy4+7iRnnZF/iHIsSZxFJKzPj73//e/v3mWZ08bCIM86xtp8VEenLOs8wt3auTjhvHJw4mo9KW6iqq8nKWedotDhQRNKiurqaCy+8kNbWVoYOHZqxm5v4XSQjIpJsqVqoHKmPM+sb4KevwbZdEDDYo6T92FyixFlE0uL111/n1VdfZfv27ekOJaYZo6a2bzNrGBXF5cybcHlOzbCISPpF283PT/Lc3YQ7Yinauh3wv82waWf8Y7OYFgeKSEo1NzdTUFAAQGNjI8XFxWmOKPm0OLArjdsi3dPThcpdFvbh3TWLNQHQ4VotbZAfnGfd2QpFgQ7HlhWUsuGEB7r3YTKc+jiLSEZYuHAhBx98MKtXrwbIiaRZRCQRerpQOd722ZG0l6itb4BLn4XXg0l0p6TZk3lrU5JJiwNFJGVGjBjB6NGjGThwYLpDERHpU3q6ULknCXdoJvq6pnnUDS8mb0g/2qIcu7F5a8zrZxvNOItI0r3//vsATJ48maeeeipjFwKKiGSqni5UjpZYjy4eFrX2ef369Zyz17H84rDZlPzsGNrGlkY9v0FO7aaqxFlEkurll19m33335c9//nO6QxER6bM6L1QuKxhIcV4h5y25IeaCv2gJ90nlh0VcbDjv349y+OGH841vfCNyd41OHLnVWUOJs4gk1aRJk7jkkkuYNm1aukMREenTZoyayupp87lv8jdobNvJxuZtMTtshDYxaWjdScC8lC/UGejx+lcj1j7/7IOHueyyy5g5c6bvjhm51FlDibOIJMVLL71EQ0MD/fr144YbblB5hohIgvhZ8Bfevg6g1bW1zzTPWVnZtV56fQOsb2BN4wa+9a1vMXnyZEryOs5URzO0YEDvPlAfosRZRBJu/fr1TJs2jeuuuy7doaRswwARkVTxs+AvWnJ955rHuybNbQ5+/jr84nWG5PcH4JJlt7GjrclXPNtaGnNmbFVXDRFJuD322IM//vGPHH300WmNo3P/0tDtTEAbmIhIn+Wnw0a05Dri7h15BldMADO2tzZRVVfDvPeqfcezy7Vw7pLrmbOykrnjZmb1+KoZZxFJmIULF/LKK68AcNppp6W8PKPz7PKVK+Z1u3+piEimi7Tgz/AmB0J31oYWRO+E0W59Azy91vt+30Gwz0B2uRZmLv0NrS5aA7rourObYV+lGWcRSYiWlhauueYahg8fzj//+U/MUtsUP9LscjS5tJBFRLJPaEY3VKts7J5Jrm2s54KlN9HiWuOf6MG34eUPYcpwGFDQ/nRPkuaQ0OREts46a8ZZRBIiPz+f6upqHnrooZQnzRC5ni+aeBsGiIhkulCHjYri8i7lF7tcC20RijIKye84U33RePjlJzokzfFMGzqpy2x3Z7WN9Vm7rkSJs4j0SnV1NT/4wQ9wzrH33nunrXuG31lkPxsGiIj0Fd25g7aLFk53k+h/60rY2QaFARjlryNGHsbFo0/iH0f+rL2fdCyx2uT1ZUqcRaRXHn/8cRYsWEBDQ0Na44g2i1xWUNq+YUCof2m23kIUkdwQvp4jr5t3+Ba++E9KXt/Kmwf9Jm7yG27v4mHcPvFSYPds9/2Tr407+5xt60pU4ywiPdLW1kZeXh433XQTO3bsoH///r06X6hR/5rGDYwuHtbtldlzx83sUOMM3uzyzeMvVKIsIn1CrHEw9FrnmuZWF7FPRldtDvKMjZ8o5aNv/o8F215ne4u/8jaIPLMdXmu9pnEDLnLPjqxaV6LEWUS6rbq6mu9///s89thjDB8+nNJSH6u3o6iqq+HKFfPY2Ly1/bnaxnrOX3oj4L9tXOcBvCfJt4hIusRqnwl0eM1nqrzb+gaY+xpcPoHRk/ZnwbbXu0w0xBPtrt6MUVPbx9kxi2bFbZPX1ylxFpFuKygooKioiPz83g0hnX9RhGt2rVy54q5uJb7hA7iISF8SbzfA7iS5XeQZFOTRr9Bb4xFtMXXA8mh1bR1mtCHy2pBIs+PR7vxl07oS1TiLiG+bNm0CYNq0aTz33HO9XggYrxPGxuZtvTq/iEhfEa2cobaxPmZ7zZi27iIPw4aXMPr20/jd57/PjFFTo16rzTnc9Me4b/K1MdeGhG/nHb4IEGhfOJit60o04ywivjz33HOcfPLJPPzwwxx//PEJaTmXTXVvIiI9EZq5jVYf3Hn217ePdsI1L9B24mjcfSs7vBRv58F4d+9izY6vnjY/qxLlzjTjLCK+TJw4kbPPPptDDz00IeerqquJuxo8D8uqNkYiIuHCZ24j6XHSDDCoEI7ekz0/Na7LS5F2HuxOSUW0SY9cmAxR4iwiMb3++uu0tLQwaNAgfvvb3yakT3Pol0W83anacJy/9EaGLTwna5vpi0juilWuFmljE1/WN8CWXZBnlHx9Mr8++eouh8wYNbVXJRXRFvtl0yLAaJQ4i0hU7777LkceeSQ//vGPE3re7uzy1+xa2di8NWub6YtI7oo2Q2tY+66A3dLaBj98FX71BnkYM0dOi5gMJ6L9Z+cZawNOKj+se/H2QUqcRSSqsWPHcscdd3DVVVcl9Ly9uZ2Xbc30RSR3xZu57XYiGsiDi8fDVw+kDcfv33uSYQu/1OGOXbSFfd2ZkJgxaiozR04jvNjOAZVrF2X9xIYSZxHp4sknn+S///0vAOeff37E8ozwnau6W0LR29t5uVBHJyJ9R0/Hw3i1xo/Xv+ovgPUNsPhD7/tJw2CfgQDsci1sbN7WniB/ZckNXLliXsy2d349Xv9ql1KSXJjYUFcNEelg586dfO1rX2PixIksWLAg4jGxGvV3vt0XaYOT3sqFOjoR6Ru6Mx52Fm3jJoi+mUhEd78FKzfDXcdBv0DUw9pwUcfi7k5I5OoCQSXOItJBUVER1dXV7LHHHlGPidWKqHOvzwuW3sQu19KjWAwosPwO78+2Zvoi0rf5HQ+j6dz6LdbGUFFdMRE2NsVMmuPp7oREvJZ22UqlGiICeNto33777QAcdNBBMbtnxGrUH3678sJlt/Y4aQa4aPRJ3D3pqqxupi8ifVu8mdfulnH4Xjy9vgF+/xa0OhhQABWlvmPu3Ai0JxMSvW1p11dpxllEAJg/fz7//e9/+drXvkZhYWHMY6PNNADtz/d4p6swj9e/yu0TL1WiLCIZK9bMa0/KOHyXOrz2ISyqg5NGw579uxWzY3eP6Iri8m531YDoZSbZPl6bcz1urZ0xpkyZ4hYvXpzuMET6JOccZsauXbvYsWMHQ4YMifueS5bdxp1rHu95Y36fDKNteuQ6677EzF5zzk1JdxyZROO2ZItIpRUlgSLmTbicOSsrIybVAcujzbmIyWbc2mbnILR51OadMLgo4mEH9d+bN3e8FzP2UNKca8lvPLHGbJVqiOSw6upqPve5z7Fjxw4KCwvjJs1VdTUMW/gl7khB0gzZXysnIn1frM1Eos0et7q2qK3gIpVAtFvfAN96Cd7f4T2OkjQDrG76kMI4hQWh6/emNV2uUamGSA7bsmULGzduZOfOnfTvH/tWX48WrPRCLtTKiUh26LzALyRWWVtIQ+tOZi79DectuYHRxcM4qfwwivOKIo+1TS2wvRmaWuPG5GesDlherxY25iLNOIvkoO3btwNw9tln869//cvXNtrd2e2vt7QIUESyQczZ4zDhM9B3rHm8a8u4xuAi6zED4dZj2vs090ZJoIhW1xbxtWxvKdcbSpxFcsw///lP9tlnH1591WusHwj4a1+UiMV+flQUl7N62nwlzSLSp4W2tW5o3UnAvHQr9Ge3bGiES5+FhWsInsT3W8sKSiMm7mUFA9vLSyJRmVx0KtUQyTEHHHAAU6dOZd99921/LjTAJ3NxSGgFdywqzxCRvip8HB1aUMrm5m20Bke90MzucUMm8NKW/3Tv7t2gIphYBvsPjnpIv7wCmtqaOzxXEiji5vEXArE7X0Ra2KhxODpfXTXMrBgY7ZxbmfyQ2q+5GtgGtAItsVaka3W2SHxvvfUWBxxwAGYdZysi1S4XWICB+f3Z2LyVgOVFvZ3XHfdPvhboOICfVH4Yj9e/mvWruVPdVSPTx2zQuC3ZJSlrQD5shIEF0C/yHGeoc8cLm97s0uXI8Prg3z7x0riXScXESV8Ta8yOO+NsZqcA1wOFwFgzmwz82Dl3akKjjGyqc06FNiK99Oabb3LooYfy85//nKuvvrrDa5Fql5tda3uNXSKS5oDltQ/EuT4gJ5vGbJHUS/gakF2t8N1/ebXM3/14l5f75/XjrgmX8cKmN7ljzeNdXnd4ffD9iLawUSLzU6rxQ+Bw4GkA59wSMxuTvJBEJNEOPPBAfvrTnzJzZtfbb6moXU5E8i2+/RCN2SIplfDFdIUBmHkAjIzc7WhHWxP3rHmKf25amrqYBPC3OLDFObcl6ZF05YAnzew1M5vd+UUzm21mi81scX19ahYtifQ1//znP1m/fj1mxrXXXtule0ZVXU2XrVd7It7Cl2gLUCQpMnLMBo3bkr0StphufQP85yPv+6P3jNk9Y9GmpTHXjWiBX3L4SZz/bWZfBgJmtr+Z3QK8mOS4AI5yzh0KfA641MyOCX/ROTfPOTfFOTelvFy/lEU627ZtG2eddVaX0oyQqroaZi79Ta83Mrl/8rW0nPx33PTHmL33iV0ScS00SbmMHLNB47ZkvkuW3Ub+Y6dgC04m/7FTuGTZbV2OqaqrYcyiWeQtmM6YRbOoqqvhpPLDEhPArcvh10ugpfd36RIWk3TgJ3G+HBgP7AT+CGwFrkpiTAA4594P/vkh8AjerUcR8am0tJTHHnuM227rOPCHdv87d8n1vS6hGBDo114bV1VXQ+XaRV0WqMwcOU31c6mlMVukBy5Zdht3rHm8fVxsdW3csebxDslzVV0N5y+9scNOe+cvvZEH1z2fmCCungTf+zjk975b8L11/+z2eyL9o0A6ilvj7JxrAOYEv1LCzPoDec65bcHvPwv8OFXXF+nLqqur2b59O2eccQZHHHGEt2L6jUpqG+vJw2hL4GbZRXkF7d9HWhzTnQUqkhgas0V6Zt571VGfP2roQcxZWRlxTUj4YuoeWd8Az74PZ+4LZf28Lx8itaALt6Otiaq6Gt8TF507g4S23wYt6g7np6tGDRHarzrnPp2UiDwjgEeCbbPygT845yL/Fy0i7Zxz3HDDDWzZsoXTTz+dB9Y922EgTGTSDLCpeXv799EWomiBSmppzBbpmWh34FpdG+ctuT7Bo2eYmrXw99Xw6ZEwrLjLyyWBIj456AD+2ammuamtmXzLoyXGncPubJ0dafJD22935aerxrVh3/cDvgi0JCccj3NuFTApmdcQyUZmxsMPP0xzczOBQIArV8xL6jbZ4YtPRhcPizgbowUqKacxW6QHYvWs95M0+9nkKaIv7QfTRkVMmssKBnLz+NnMGDWVMYtmdRljW1xbzOuGT1zE69esyQ9/4hbROOdeC/t6wTl3DXBECmITEZ+qq6uZMWMGzc3NlJaWMnToUKrqanp3+zCOzov+5o6b2WVrVy0MTD2N2SI9M3vvE3v83rKCgVw0+iT/XYrWN8D/vQIf7QQzGN41aQbY2LyVC5fdQt6C6VFbh/rprBEqwwivzZ69/JYONczRJjk0+dFR3MTZzIaGfQ0zsxOAPVIQm4j49N///pe33nqLHTt2cMmy2wgsmM65S65P+HX65xVhGBXF5cybcHmH2YoZo6Yyb8LlVBSXRz1Gkk9jtkjP3D7xUi4efVLc9pqdFVo+N4+fzVFDD6KAQMRj8jqn1Bub4L3tsDn+HcEdbTtxMdLjiuJyLo6QtIdPXMQqwwjR5Ic/cbfcNrN38f5BY3i3+97F24UqQUtIe09bt0qu2rlzJ0VFRe3fX73ydxF3kUqE/nlFbD/p4aScO9ulcsvtvjBmg8Zt6RsilUeEqygub08sv7LkhojrSDqUUjS3QkEwuW5ug4Ledc8Ibbs9Y9TUmKUYeQumR0y+DaNt+oL2x9p+29OrLbedc2MTH5KI9NaTTz7J17/+dRYuXMhrA9Zx5Yq72Ni8LWnXa2jblbRzS+JozBaJz2+COHfczA4LrMFLhC8afRK3T7y0/bkxi2ZFXXzd/uwHDfC9V+CCA+CTe/QqaTasS9yxts72uwZF22/HFzVxNrMvxHqjc05TTyIpFj7YD1rv2DGimQPfuBxKC5N+bdW5ZTaN2SL+dKftWuhxvCTb1wK60kIYPQBGlPQq/rKCgWw44Y/dek+kfwCoDKNnYs04nxLjNQdoEBZJoaq6Gi5YehO7PtgGw4vZvAfwg0NSdn0NsBlPY7ZIDFV1NVHvzDW07mTm0t8AkZPneLOwQwsGRL/jt7EJBhVCST58PxEVW93v3eH3HwASX9TE2Tl3fioDEZHYLlp+K7v+txG+9RJcdjB8elTKrl1WUKoBNsNpzBaJLrTjX7NrjXpMq2vrMvMcqaQD6JCAlxUMpKk1ykYkDc1w7YtwaDlcPiEhn2Vj8zbGLJrV7cRXZRiJ4aePM2Z2Mt4Wru3b2TjntCuUSIpU1dWwvbUJxpbC6WPhsOEpu3ZJoIibx1+YsutJ72nMFulozsrKmElzSEPrTs5dcj1zVlayX/FeHTYdqW2s54KlN9HiWjvUM8ds+1lSAGfsCwcO6eUn6Ei7+qWPn3Z0dwJnA5fj1cSfCVQkOS6RnFRVV8OYRbPIWzCdMYtmtffYvORPP/VmLgJ5cN64pNU0GzBt6CS1lOvDNGaLdNXdTTxqG+tZ1GmnPoBdrsXfDqzrG7x2cwAnV8A+A7t1fT86t5OT1PAz43ykc26imS1zzv3IzG5AtXIiCRdpwcq5S67n3Gd+Bt9/Bo7ZCy5LzK2+SMJ3qJI+TWO2SFCo1CJWH+SEcw5+/QY0tcItR0Oe721Ruk27+qWen8S5Mfhng5ntBWwE1O5IpBci1c1FalAPeItKrjsU9h+UlFiUMGcdjdkidJ2MSBkzuGqS16c5iUkzqNtROvhJnBeY2WDg18DreMs5f5vMoESyWaSZ5YiLVl6rh8I8mFDmLSxJoM5N7yWraMwWIfJueUm1vgGWboATRsPeA5J+ObWTSw8/G6D8JPjtQ2a2AOjnnNuS3LBEslekwbxL0tzm4L6VUBSAX3zCm8FIIM1SZC+N2SKelJcx/O1deOZ9+MQe3p3CJIm0+YmkTtzE2cyWAn8C/uScewdI8T0PkexRVVcTc/vWdnkG/3cY5FvCk2bNUmQ3jdkinmi75SXNVw+EU8YkNWmuKC5n9bT5STu/xOdnv8dTgRbgQTN71cyuNbPRSY5LJOuESjRieq0efvemt7hkSFHCu2eUFQxUl4zspzFbBG/TppJAUXIvsr4BfvUGNLRAfh7s1T+pl9uveK+InZckdeImzs65Wufcr5xzHwe+DEwE3k16ZCJZ5soVd8Wvt1uxCZZvgsb4/UZ7YsMJf1TSnOU0Zot4ZoyaysyR0wiYnznCHqrdBss3Qn1j/GMT4J+bllLbWI/DtfdyVvKcWn43QBkDnIXXG7QV+FYSYxLJOlV1NdG3YwVodRAwOO9jcNa+0M/X/zW7paI4sQsMJXNpzBbxxt3KtYtodW2JP3lozD5iBEwqS+iYXWCBqJu1dG6qF+rlrAmR1PGzAcrLeD1A84AznXOHO+duSHpkIlkkZpP61+vhyudgY5NXz5yEpFl1zblDY7aIJ2ldNdY3wOXPwb83eY+7OWb3z+tHtJUrZQUDuWfS1d2aJVcv59Ty8zcz0zl3qHPuF865VUmPSCTLXLLsttgLVEryvVrmwt7dTgzf7e/i0Sdp97/cpTFbhCQmlEUBKC3wxu5uKiso5a6Jl5FvgS6vFVp+e0/9yknXUGj+zq8uSanlpx3df1IRiEg2umTZbdyx5vHIL27eCYOL4IAh8LMjetU9QyutJURjtuSqzhtLDS0oZWPz1sRdYPNOr2PGkKJetQm9csVdEUsxSvOLO0xw+NntUHcTUy/x94RFclD4gD20YABgbGreFn3ge+sj+P4r8K3JcPiIXiXNGjhFJNdF2liqwAIUWj67XEvvL7BlF1z9AkwdCV8Z1+MxO9Zal03N29u/n7OyMmqds+HVOlcUl6uXcxr46eNc5JzbGe85kVzVecCOuQgwZGwpHD8KDhzSo2uWFQxkU/M2NcGXLjRmSy7ytbFUbwwsgM+M8jY3SZLwkotYZSahpFl3GdPDz4zzS8ChPp4TySlVdTVcuWJe924F/nczjB3oLSa5aHyPrnvx6JO4feKlPXqv5ASN2ZJzklbPvL4BCvKgrB98+WPJuQZd7xzG27xFCwLTJ2ribGZ7ACOBYjM7BNoXgQ4ESlIQm0jGqqqr4YKlN3XvFuDGJvjOv+DkCrjgwB5dV0mzRKMxW3JJ53rmkrwidrQ1JfYirQ5+shiK8+HXn0z4Lq55GA4i3jmcO25mhzuZnWlBYPrEmnE+AZgFjAJ+E/b8NuC7SYxJJOPNWVnZ/bq5sn5w5UQ4pOcDnpJmiUFjtuSESPXMSREwuHwCFAYSnjQDtOG4f/K1EUvtQs9dueKuLuV/WteSXlETZ+dcJVBpZl90zj2UwphEMl63BurX671V2GMHwjF79fia2sBEYtGYLdmq8+Lrj5q30+aj40SPrW+Ad7bAUXt6XY+SKNbmJTNGTWXGqKldZte1riW9/NQ4H2xmXYoxnXM/TkI8Ihnv+Be7MXnX0gZ3roA9SuDHh/f4mpphkG7QmC1Zo0eLr3t90f/Ckg1wSHmPejV3h59a5VACLZnBz38R28O+7wdMB95KTjgimSPSv/Jf2PQmizYt9X+S/DwvYe7f88G3rGBge1N8ER80ZkvWSNruf7FcejDUNyU9aQbVKvdFfjZA6bBVq5ldDzyatIhEMkDnxX+1jfWcu+R6/yd4rR5Wb4Uv7uvNNvuUh7XfgiwrKOXm8RcqYZZu0Zgt2SRl3SPWN8DDq+DrB3ldj/YekPRL6k5i39STf06VAPskOhCRTFFVV8N5S67vXQXdC+vgna1wyhhvYYkPJYEibY0tyaAxW/qseG3ZEubfm+D5dXDaGBiZvKQ5VicN6Rv8bICyHNpziABQDqhWTrLGJctuY9571bS6tt6fzDlv9fWlE6CpxXfSrB2gJFE0Zks2ideWrddCY/bxo+CI4VBamJzrhC4HtE1fkNRrSHL5mXGeHvZ9C/CBc4nYv1Ik/S5Zdht3rHk8MSd7rR7+/DZ8bwoMKID+BXHfollmSQKN2ZI1QmPjzKW/SczkRrj1DfDL1702oWMGJj1pBtU0ZwM/Nc61ZnYo8Cm8fyw9D7yR7MBEkiV80Z9LZEuj1jZocd4Mhg+aZZZk0Jgt2SY0RiZ85rnNeWN2gvPxaAw4qfyw1FxMkiYv3gFm9gOgEigDhgHzzex7yQ5MJBlCrY1qG+sTlzTvaPb+PHwE/OqTvmYtKorLWT1tvpJmSTiN2ZKNZoyayrwJlyemn31ozN6rP9z8KdhnYO/P6YMDKtcuoqquJiXXk+TwU6pxDnCIc64JwMx+AbwO/DSZgYkkw5Ur7krsjMXyjTD3Nfj+FBg/FPL87S6lldSSRBqzJaPF29Cj84YnYGxq3sbo4mGcVH5Y79akbGyCa1+Ez4+F08b6HrMTpaF1Z8xNTyTz+UmcV+P1Ag1tAl8EvJOsgER6K9qgfMmy2xLfPH90qTfTPNr/KuyyglINmpJMq9GYLRmoqq6GC5fdwo623ZMXtY31zF5+C0D7OH3nmsfb7weGj9m1jfW9X5MyuBAOHw4Tynp3nl5IWYs9SQo/ifNOYIWZPYV3p+EzwPNm9v8AnHNXJDE+kW7pvMtUaFB+YdOb3JmoRYAA726FilIYVAjXTPL9tpJAETePvzBxcYh0pTFbMk5VXQ3nL72RZtfa5bXQLCzQIWlOqA8avAXbAwrg4oOTcQXftECwb/OTOD8S/Ap5OjmhiPRepF2mGlp3Jq5zBsDa7fCNF+FL+8FZ+/l+mxYDSopozJaMM2dlZcSkOWRN4wbmrKxMTtLc3Abff8Wraf5h6hbnFVgAw9o30gJtepIN/CTOg51zN4c/YWZXdn5OJJWilWOkpFH+Xv3hqwfCMXv6Olwt5yTFNGZLxok3Nid1o5OCPPjagTCsODnnjyA0UQLErOeWvsdP4jwT6DzgzorwnEhKxCrHMEjOjAXA0g2wZ38YXgwnV8Q8NBSHZpklDTRmS8YJWF7UBX2hNm0JL9NY3wD1jV498+EjEnnmqAoswD2Tru4w5mv8zy5RE2czOwf4MjDWzB4Ne6kU2JjswESiiVaOMe+96uQlzU2tcMNSOGAwfPfjEQ9RkizppDFbMlmsLhgXjT6JB9c9n/jx+64VsHob3HWs711ce8OgS9Is2SfWjPOLwDq8PqA3hD2/DViWzKBEYom2Ijnhu0qF6xfwauPK+0V8+f7J12qwlHTTmC0Zq6K4PGIpRlnBQI4aelBi16GEXDURPtqZ0KS5JFAUo6Wp6fdADoi6AYpzrtY597Rz7pPOuWfCvl7X9q2STildkfxaPSyq877fJ/KWrGUFAzVYStppzJZMNnfcTEoCRR2eM+CsPT/V3lEjIdY3wH0rvV0BBxV5W2knSFnBwJibsKhbRm7ws3PgNjPbGvxqMrNWM9uaiuBEIok0ACfNE7WwYLW3nXYEXnu52amJRcQHjdmSiWaMmsrMkdMI324ktJNeQhcFvrgenljj1TYnSMC8VGlAvvd7J9LvIHXLyB1xFwc650rDH5vZ54HDkxWQSDShThq1jfWkbK+nbx4Cu1ohEPnfmOqWIZlGY7ZkqsfrX+1Sx5zQnVwBTh8Lx+4FZZHL6noiVAYYWog+b8LlzJtwubpl5Cg/XTU6cM791cyuS0YwIp2FJ8vhkrYIELzyjOo18M3JUBTwviKoKC7XQCkZT2O2ZIqk7Zi3vgH+3zK4apLX9SiBSXNnoc1aVk+br/E/R8VNnM3sC2EP84ApJDlvEYGubedSZlOTd5tvVxsX73cKRw09qEscui0nmUpjtmSiqrqa5LUL3bYLNjTBjmYg+b2atWV2bvMz43xK2PctwGrgtKREIxImUtu5pNrZ6s0uf2ZvmDqSitIR3D7x0g7x6Lac9AEasyUjRLtjmDChMXv/wXDHMVFL6vzqn9ePYUWl7eP89pYmNjZv63KcFgHmNj81zuenIhCRzlKyC2DIkg1w41Kv5dzYgVh+XocZ5RmjpipRlj5BY7akS1VdDVeuuCtisplwHzbCd/4F530MjhvZ66QZYEdbEzsamzrs+qe7jdKZn64ao8zsETP70Mw+MLOHzGxUKoKT3FRVV8OYRbNSe9E9S+Bjg2GYVxvn0G5P0jdpzJZUq6qrYdjCczh3yfWpSZoBBhXCuMEwujTuod1V21jP+UtvBGhvP2cYFcXlWhAuvko17gH+AJwZfHxu8LnPJCsoyV1VdTWcv/RGml1rai74/g7Yqz+MKIE5u3cEjNanU6QP0JgtKZPytSj1jV7SXBSAbx2StMs0u1auXHEXG054QImydODn3ka5c+4e51xL8Gs+oKxCfAvNIOctmM6YRbOoqquJeuyVK+5KXdL87la47Dmv52cY3YqTPk5jtqTMlSvuSl3S3NQK1/0LblmeksulbPZc+hQ/ifMGMzvXzALBr3OBjckOTLJDaDaitrEeh2vvgxkteU7pQFVRCmfvB5/agwGBfroVJ9lCY7akRFVdTWrH7H4B+PL+cPo+KbtkvMkeyT1+SjUuAG4FbsQr/Xwx+FxSmdmJwM1AAPidc+4Xyb6mJF6kzhihPpih10MrmPcr3is1QS3f6CXNAwuxs/fjotEndeieIdLHacyWlEjoVtmxrG/wWs3tOwimpbZcPzTZA1r3Ih4/XTXWAKemIJZ2ZhYAbsOryasDXjWzR51zb6YyDum9aP0uaxvrOXfJ9R0ep6SLxvZmmPsadsQe3Fd5rwZCyToasyVVUtLP2Dm4aSl8tBNu733LuZ4ITfbo94WAv1KNdDgceNs5t8o5twt4APUh7ZMyrt/lgAKKfvBJ7rjpVg2CIomjMTsHpWR8N/N2BPz2oWlJmkO06YmEZGriPBJ4L+xxXfC5dmY228wWm9ni+voU9vuVbpk7biaF1u2d3ROmf14RAHmvb4DFH1JRXM7vv/wjLpyg3+kiCRR3zAaN29kmqYuo1zfA3971vt+jBPYZmLxr+ZBxk0CSNunLaGKzCM912KnTOTcPmAcwZcoUbSebQUK7Ra1p3MDQglJ2uZaUxxCwPConXcOMUVNxznH0L46mtbWVF35wN3l5mfrvRZE+K+6YDRq3+7qOY/sAIv+1J0j1GnjyPThmLxhSlLzrhCkrKOWsPY+mcu0ibXoiUUVNnM3smlhvdM79JvHhtKsD9g57PAp4P4nXk17oPJhua2lsT5Y3Nm9NeTyFls/dk65qL8UwM/7+97/jnFPSLFlLY7b0RucJD3BsbN5GwPJodW2UFZR2GtuT3E3jK+PgxNFJT5oNuiwQP2roQR0Wrs8dN1OlfdIu1oxzaDueccBhwKPBx6cAzyYzKOBVYH8zGwusBb4EfDnJ15Qe6Nz8Ph19L/vnFbGjzbt+WcFAbh4/mxmjplJdXc3DDz/MHXfcwZAhQ1Iel0iKacyWbgkly7WN9Ri7bxGET3i0urbgcykY29c3wO/egisnQGmhV6KRZA54vP7VDs/NGDVVibJEFTVxds79CMDMngQOdc5tCz7+IfDnZAblnGsxs8uAhXitje52zq1I5jWlZ1La/D6Cg/rvzYqpd0Z87Y033mDx4sVs376dQYMGpTgykdTSmC3d0XnSIyPqZtY3wP82w6adXuKcIlr4J93hp8Z5NLAr7PEuYExSognjnHsceDzZ15GeS3nz+06mDZ3EP478WZfnm5ubKSgo4Dvf+Q5XXXUVxcXFaYhOJG00ZktckXrsp01LG+TnweRhMO84bzvtFNLCP+kOPwWf9wGvmNkPzez/gJeBe5MblvQFKWt+30lZwUDc9MciJs0LFy5k/PjxvPuutxpbSbPkII3ZElfGzLKub4BLn4XXg11Wkpg052EEOi1o1MI/6S4/G6DMNbMngKODT53vnHsjuWFJX5COgbfQ8rl5/Oyor48YMYKKigqVZkjO0pgtfowuHpaaTafi6Z8Pw4thcHIWAYZ3WIKOiyC18E96wpyLX9lkZp8C9nfO3WNm5cAA59y7SY/OpylTprjFixenO4ycM2bRrJQOvAMC/bhzwmURB7m1a9cycmSXtrEiGcHMXnPOTUnh9TJ6zAaN2+nWucYZaF8gWFYwkM5dNRJuUxMMKoJA8lraFViAgfn92dS8TUmydEusMTvujHPwVt8UvJXa9wAFwP3AUYkMUvqWqroatrc0peRa/fOKuGvi5VEHvJdffpnjjjuOe++9lzPPPDMlMYlkKo3ZEk9o1rWhdWd7YlxRXB41scxbMB2XyOWD25vhGy/CkXvA1w9K3Hk7cbj2DiG1jfXMXn4LgJJn6RU/Nc6nA6cCOwCcc++zu+2R5JiquhqGLTyHc5dcn7KFgcOKBsYc6CZPnsyll17KtGnTUhKPSIbTmC1RhWaaQ3cLW11be51vtHE24YvnBhTAKWNg2qjEnreTlk4z5Q2tO9O2Nkeyh5+uGrucc87MHICZ9U9yTJIBItWBAV1u7aVCtFrql156iUmTJlFSUsL111+f0phEMpjGbIkqUjeNhtadnLfkes5d4o2j/fP60S9Q2F7icFL5YdyxJgENU9Y3eH/uUQJf2Kf35+uBjFkUKX2Wn8T5QTO7CxhsZl8HLgB+l9ywJJ0uWXYbd655vP3GXOgWV2tbKzvTsH12pNmODz74gOOPP54LLriAW265JeUxiWQwjdkSVbTEMbwQY0dbEzvavFK82sZ6Ktcuon9ev/bnesQ5+Pnr3vc3HQXW89rmPIy2HpaOqPWc9JafrhrXm9lngK14NXM/cM49lfTIJC2q6mo6JM0h6er3WWj5EVsFjRgxgj/84Q8cffTREd4lkrs0ZkssPemm0dC6k7KCgb1LnM3gignen71ImoEeJ81qPSeJELfG2cx+6Zx7yjn3Tefctc65p8zsl6kITlKrqq6GmUt/kxk7SOF10bh70lUd6u4WLlzIyy+/DMBpp53G0KFD0xWeSEbSmC2xzB03k5JA91u/berpmpb1DVCz1vt+30Gwz8CenaeXApbHvAnRF5mL+OVnceBnIjz3uUQHIqlTVVfDmEWzyFswnTGLZlFVV9O+YCQpbYd8Cs1BVBSXc//ka9n2uYc6DHItLS1cc801XHfddfhpoyiSozRmS1QzRk1l3oTLqSguxzAC5icN8Gaq8+jBTPGf34HfveV10kiTkkBRh17OIr0RtVTDzC4GLgH2NbNlYS+VAi8mOzBJjs69O2sb67lg6U00u5a0zjTHaoUUkp+fz8KFCykpKcF6eatPJNtozBa/Zoya2mFDkPOX3kiza416fKjE4YVNb3Z/keCFB8HpY71OGilQEihi5shpPF7/qjY5kaSIVeP8B+AJ4OfAdWHPb3PObUpqVJI0kVZU70rDgr9whrF62vyor1dXV/Piiy/yox/9iFGjktu+SKQP05gt3RLqntTsWts3P4GuXTXCE8976/4Zv9Z5fQP88X9w8cHQLwCjBiT1c4T4mYAR6a2oibNzbguwxcxuBjY557YBmFmpmR3hnHs5VUFK4mRiK554q5yrq6t59tln+fa3v03//uqsJRKJxmzpLNb20p3vPjq82dpodcDtx7f5WCj+v83wWj3UN8LeyU+aY8Utkmhxt9w2szeAQ13wQDPLAxY75w5NQXy+aOtW/1K9TXY8sQa8trY28vLyaGtrY8eOHZSWag8H6ZtSueV2XxizQeN2skXaUjt8C+o8s6hrWjrP3IYWjsddA9PmIC9YRtfQDCXJL88IWJ7qlyXhYo3ZflYFmAvLrp1zbfjr/ywZqKcrqhMpfBFgtKS5urqaI444gg8//JC8vDwlzSL+acyWiGV5za6Vjc1bcbiYSXCod/8ly25r3yk2btK8vgGufB7+u9l7nIKk2YDZe5+opFlSyk/ivMrMrjCzguDXlcCqZAcmyTFj1FRmjkz91tShldsVxeXcN/la3PTHWD1tftQBr7CwkKKiIvLz9ftepJs0Zkuvy/IaWndyx5rH2di81d8b8gwK8iDfX5eORHBA5dpFVNXVpOyaIn6ykouA/wd8D++/00XA7GQGJcn1eP2rKbuWYbRNX+D7+I0bN1JWVsanP/1ppk6dqu4ZIt2nMVt6tNFJj2zdBaUFMLwYbjiy15ubdFdD607mrKzUrLOkTNx/GjrnPnTOfck5N9w5N8I592Xn3IepCE4So3Pf5mQMphXF5RGf7872ps899xxjx47lqae8Tc6UNIt0n8ZsAVKzQ95HO73yjAff8R4ncMzun1dEofm745iJi94le8Xq4/wt59yvzOwW6Nri1zl3RVIjk16rqqvhyhV3sTFsx6dkzUDMHTezy0KU7m5vOnHiRM4++2w+/vGPJyNEkaymMVtSblAhHLMXHDY8YacMX+xXVVfDuUuuj/ue7kzQiPRWrH/OvRX8U8ue+6BIK6qTpaK4vP02WbTWR7G8/vrrTJw4kUGDBvHb3/422eGKZCuN2Tmsc+u57S1xei33xvoGKA7AoCI4/4CEnrrNufbfGzNGTWXOysqYEz7dnaAR6a1YfZz/HvyzMnXhiF+x+nMCXLliXkqS5vBBK3w3Kr9Wr17NkUceyTe/+U1+8pOfJCNEkZygMTt3RdoRNmla2+CHr8LQIph7RMJrmocWdOygFOluZmizloDltdc4A6pzlpSIVarxdyLc7gtxzp2alIgkrkiD5OzltwC0397yvRK6m6YNncTbje8nbCvTMWPGcOedd3LqqfrPSaQ3NGbnrkit55ImkAcXj4fSwiQtBOz4n3Cku5knlR9G5dpFUX8HiiRTrFKNUGHRF4A9gPuDj88BVicxJokj0iAZvrI49K/vREr0VqZPPfUUFRUVfOxjH2PWrFkJOadIjtOYnaNSsjhufQPUbYcpw2FS72qKA5YXtS/0pubtEe+orp42v/2YMYtmxfwdKJJMsUo1ngEws584544Je+nvZvZs0iOTqKINkqHnuzuIhm57RVNWMLDDoNVbO3fu5Ktf/SoTJ05kwQL/repEJDqN2bkrWuu5PIy2mKN7N9zzH3jrI5h3HPQL9Pg0JYEiZo6cxp1rHo8Y2dCCATHvqEL834EiyeSnU3m5me0TemBmY4HIvcckJaKtIHY48h87hZK8Qt/nqigup236Y9w/+VrKCgZ2eb3Q8rl5fGJbwBYVFbFw4ULuvffehJ5XRACN2Tmjqq6GYQvPiZg0lwSKEpc0A1wxAX5yeK+SZoBPDjqAo4YeRP9Avy6vebvaWtTZ5JBovwPVXUNSwU/ifDXwtJk9bWZPAzXAVckMSmKLtW12q2tjR5u/WrfOC/s2nPBH7p98LRXF5RhGRXE5d0+6KmG3vqqrq7ntttsAOPDAAxk6dGhCzisiHWjMzgFVdTVcsPSmiOtZygpKmTfhcso6LbTrtvUN8Ns3vQWB/QugopfnAxZtWsp5S65ne2vHrh+hmDeFtU8NFz6bHOl3oLprSKrE7S7unKs2s/2BUM+Z/zjnUrQKQSIJXyzR3dXTFvzfaAv7etIZw697772XlStX8vWvf53CQv+z4iLin8bs3DBnZSW7XEvE1wbk92PGqKlcuWJe7y7y2odQsxamV8Ce/Xt3rjCR5sFDMUf7vRY+m9yb9qcivRU3cTazEuAaoMI593Uz29/MxjnnVJyaRqEE1xac3M13dm8L7ERwzmFmzJ8/n4aGBiXNIkmkMTs3xJo0Cc3ORpu9jcs5r2PGyWPgU3t6/ZqTLBSz3820kjnJIxKLn1KNe4BdwCeDj+uAnyYtIkmqVNeAVVdXc8IJJ7B9+3YKCwsZPHhwSq8vkoM0Zme5qroaYjWCC43zQwsGdP/k6xvgWy/B+zu8xylImmF3zDNGTWXehMs7lAzOm3C5kmTJGH42gt/XOXe2mZ0D4JxrNEtK80bpJN4mJ1V1NTHf37lbRjpqwLZu3crmzZvZtWtXSq8rksM0Zmep0O+EWLPNBRYIG+d78Ne+sxW2N0NTa8+C7IHOv5s0myyZzE/ivMvMignmYGa2L6B6uSTzs8lJ6HE0jt3Jc6L7MMezfft2BgwYwFlnncUXv/hFAoHercQWEd80Zmehzr8Torln0tXt43y3SjUaW6A431sAeOsxEOjdv7VKAkUU5xWyMU4Mqf7dJNJbfhLn/wOqgb3NrAo4CpiVzKAk+iYnM5f+JurrkYSS5kT2YY7nn//8J2effTaPPfYYhx9+uJJmkdTSmJ2F/Iz5FcXlHRLQoQWl/naR3dDolWectR+cOLrXSTPAvAmXA3D+0htpdl1nry8efRK3T7y019cRSbWYibOZ5QFD8Hai+gTeBOaVzjl1GU+yaI3cW12br1kHP+dKlgMOOIBPf/rT7Lfffim9rkiu05idveJ1UOpc7lBVV8NmvzPOg4pgYhl8bHAvItytcwJ/5Yq72meeywoGcvP42Zphlj4rZuLsnGszs8uccw8Cj6UoJiH6TlDgzTzH2rI00rlS4c033+TAAw9kr7324k9/+lNKrikiu2nMzk6hxYCxtjP55KADOiWr82iNtwHKh40wsAD65cNVkxISq0HC6pXjrfMRSQc/XTWeMrNrzWxvMxsa+kp6ZDku1iYnQNSkOdBpMUiqFgS++eabHHroodx0001Jv5aIxKQxO8vMWVkZdw/Af25a2mHBeNwSjV2t8N1/wW+W9j7AMA4SktyGarprG+txuPZ1PvEWxYskm58a5wuCf4YXIzlgnwjHSoKEBp6ZS38TMUmONuM8uKCUAflFKf8X+oEHHsjPfvYzZs7Uzk0iaaYxO8v4KbdzeAl2aPF4XIUBmHUA7JW4jU3AK9NIhGjrfEKfUSRd/OwcODYVgUhXocEhUjP4aDXOm5q3seGEP6YkPvAWAh544IHsueeeXHPNNSm7rohEpjE783W3BCFW6V642sb69nNHtb4BNu+EA4Z4m5skUCLvcEb7x0Kq1+yIdBa3VMPM+pnZNWb2sJk9ZGZXmVm/VAQn0ZvBR/tXfSo3ONm+fTtnnXUWV199dcquKSKxaczObD0pQYhXuhfu3CXXx06yb1sOv14Czf7WyPgVsLyEblQS7XdZqjfxEunMT6nGvcA2INQ0+BzgPuDMZAUlHUVbXOFnW9JkGjBgAI899hj7779/yq4pInFpzM5gPSlBCD0fmqUuyStiR1tTzwK4ahJs3QUFfpY4+dfmXEJLKPxuvS2San4S53HOufDltjVmltjVBNJtnQfSVNYzV1dXs23bNs4880yOOOKIpF9PRLpFY3YG62kJQucJlEuW3cYdax73d9H1DfDM+3DWvlDWz/tKsETPBKfzd5xILH4S5zfM7BPOuX8BmNkRwAvJDUv8SMe2pM45brjhBrZs2cIXvvAFbW4iknk0ZmewaPXKfhPPqroarlwxz9/GJiE1a+Hvq2HaSBhW7P99EUwbOomXtvwnJTPB2npbMpGfezVHAC+a2WozWw28BBxrZsvNbFlSo+sDqupqGLNoFnkLpjNm0aysb5VjZjz88MNUV1craRbJTBqzM1ikemW/iWeoPrpbSTPAl/aDmz/V66QZ4O3G9yOuu1GCK7nCz4zziUmPoo8KDWKhf3mHFnlAYvpYZpLq6mruu+8+5s+fT2lpabrDEZHoNGZnMD8lCOFdN4YWlAKOTc3byTPzvfEV6xvgjn97Nc1DiqC890kzeCUlmgmWXOanHV1tKgLpi3Kpz+Tbb7/NW2+9xY4dOxg8eHC6wxGRKDRmZ75YiWfnCZnw2eVWF28blDAbm+C97V7ruSHeDHe83Qf9UFcLyXWJXVabY3Khz+TOnd7gfdlll/Gvf/1LSbOISBJFmpDpluZW78/xQ+Gu42DswPaXups0W6fH6mohosS5V7K9z+RTTz3Fxz72Mf7zn/8AUFhYmOaIRESyW68mXj5shEuegxfXe4972XLuotEnqZZZpBM/Nc4SRXf6THZ3p6hMMHr0aA4++GCGDx+e7lBERHLC0ILS7i/+CxlQABUDYI+SXsdRVlDK7RMvjX+gSI7RjHMvRNvVr3NC3JOdotKpttYrkRw3bhyPPfYYQ4cOTXNEIiLZ75Jlt/Usad7YBC1tUJIP35sC+wxs/53UEyWBIm4ef2GP3iuS7ZQ490B4C7o5KyuZO24mbdMXsHra/IizyLEWEWaa1157jXHjxlFZmXmxiYhkq6q6Gu6MsqGJAYYRsAi/shta4Jsvwh0r2p+qKC5v/50UL3muKC7n/snXqiRDxCeVavjQsTXQALa1NLLLtQD+WtD1pUWEkyZN4tprr+WUU05JdygiIlkpUunenJWVMRbvGW3TF5C3YHrXl0ry4Yx94YAhABRYoEO5YKSSwva3BksL1V5OxD/NOMfRucxiY/O29qQ5JN7scV9YRPjcc8+xdetW8vPz+elPf6ryDBGRJKiqq+GCpTd1KN0LPY5maMEAxiyahQtPrdc3eO3mAE6qgH287hkD8/t3SIJnjJrKzJHTusxWa2ZZpGeUOMfhtzVQrNnj3uwUlQobN27kpJNO4tprr013KCIiWe3KFfO6TL7sci3kdWn+ttu2lsaOibVz8Os34OevQ2vHeepNzds6PK6qq6Fy7aIOG6cUWIDtLTs5b8kNObHjrUgiqVQjDr/lFLFmj/3sFJVOZWVlPPTQQ0yZMiXdoYiIZLVoi//acJQEijpM1BjQP9CP7a1NHQ8283YEbG6DQMeEu/PvokiTP82utT2ObN7xViQZMm7G2cx+aGZrzWxJ8OukdMbjp5zCz+zxjFFTWT1tfsxFhKlWXV3N008/DcBnP/tZlWeISLdl2pjdl4WXVAQsj4tGn8SO8KR3fQNUr/G+33sAJft3XPgX6XeRn8mfTF2sLpKJMi5xDrrROTc5+BV5mXGKRCqzKLAAZQUD+/QK5La2NubMmcP3v/99XHe2cRUR6SpjxuxMV1ZQGvH5/nn9OpRUtLo2KtcuYmj48X97F+5dCVt2tf/uidcNw+9amkxcrC6SiVSqEUeml1n0VF5eHk888QT5+fmYRa+tExGRxLl5/IWcv/RGml1r+3MFFqBfoICNneqTG1p3UpxXuLuE46sHwiljKBla6rsbRqyuGuEyabG6SCbL1Bnny8xsmZndbWZDIh1gZrPNbLGZLa6vj74aOREyscyip6qrq7n66qtxzjF8+HCVZ4hIIsQdsyG143ammjFqKl/b+4QOJRlf2/sENjVvj3j8xvc+ZMLtHzFkVz/Iz4O9+lOcVxTxWOi4z8CYRbMAOsxMlxWUUmgd58wyabG6SKazdNymN7N/AHtEeGkO8C9gA+CAnwB7OucuiHW+KVOmuMWLFyc8zmw0Z84cnnjiCZ555hlKSyPfMhSRxDKz15xzfXb1baLHbMi9cTvUu7m2sR6DDj2bSwJFFOcVdplxBihf0sSu//cGO398KE2jdifMBRagKK+gfeFg/7x+gGNHW8eZ5ZJAUZcSjkh9pPvyhJBIosUas9OSOPtlZmOABc65g2Mdl2sDcE+0trYSCARwztHQ0ED//v3THZJIzujribNffsdsyK1xO7QfQKxyibKCgTS27dx9TKujpLAf8yZczneW/I732Nzj61cUl7N62vwev18k18QaszOuVMPM9gx7eDrw73TFki0WLlzI5MmTWbt2LWampFlEEkZjdnx+9gPY1LytvaSC9Y0UXPEiV28/hhmjplLHll5dXwv/RBInExcH/srMJuPdyVoNXJjWaLLAoEGDKCsro7i4ON2hiEj20Zgdh5/EdXTxsPbFfh988AFn3nsmZ+x/XPtrsXYW9HNuEUmMjEucnXPnJfsauVLf9eGHHzJ8+HA+8YlPUFNTo+4ZIpJwqRiz+7p4iW9ocd6HH35IeXk5I0aM4Jlnnmkfs/12xoh1bhFJjIwr1Ui2UK1ZbWM9Dte+a1K2bTn64osvMnbsWB599FEAJc0iImkSL3GdN+FyTug3gSlTpjBnzhyg45g9Y9TULp0x8i3+r++ygoF9cp8BkUyWc4lzpFqzbNw1adKkSZx//vl86lOfSncoIiI5oXMruNCEzIxRUxkQ6BfxPWUFA5kxaiplZWVccMEFnHXWWRGPC2+LuuGEB5g/6RrKCga2v94/rx9lBaXtm6HcP/laNpzwRyXNIgmWcaUayRat1ixbFk+88sorTJo0if79+3PrrbemOxwRkZzQuXNG6G4meElveOu4cK3rtrF27VpGjhzJD3/4Q9/X87P5iYgkXs7NOEdbJJENiyfWrl3Lsccey/e+9710hyIiklPi3c2MuMFJm2Pz/z3DGWecQW9bw0ab7RaRxMq5xHnuuJmUBDruupQtiydGjhzJ/Pnz+c53vpPuUEREckq8u5kRJ2fyjIFXHUHtrHICj53S44Q3V9buiGSCnEucOy+yqCgu7/OLJ5588kmWLVsGwNlnn61ttEVEUize3cwOkzbrG+CFdRRYgKaP9WfdyNZeJby5snZHJBPkXOIMHRdZrJ42v08nzc3NzVx66aVce+216Q5FRCRnRbqbaXi1zmMWzQLYvcFJ1f/Iu/MtSncVssu1dHhPTxLebF+7I5JJcjJxziYFBQUsXLiQBx54IN2hiIjkrPC7meAlzaGq5fCFgqunzed3d81jxA0nsKmgMeK5ahvru1WrnM1rd0QyjRLnPqq6uppf/OIXAOyzzz4qzxARSbPQ3cyK4nI6L/VrWPsRF118EZWrnuSKd37HuuHNMc/VndKNbF67I5JplDj3UQ899BAPPvggTU1d2xuJiEj6RCyR+Pcmtj/zLt997o5u7QDop3QjG9fuiGSqnOvj3Nc55zAz7rzzTrZv306/fpGb6ouISHp02GLbOTCD40cx6tiDWFuwrdvn81OrrL7OIqmhGec+pLq6mmOOOYaPPvqIQCDAoEGD0h2SiIh00l46sb4Brn4B3t1KSaCIXxw2O2rdcUVxeXt9dGeqVRbJHJpx7kNaW1tpaWnpdaN8ERFJntDM77fqb+H9NtizcAi/DiudCN9hEDrWI8d6TUTST4lzH7BlyxYGDRrEySefzOc+9zny8nSjQEQkU23evNkrnfjKVNrObeswZoeS5zkrK1nTuIHRxcOYO25mhzKLWK+JSHopA8twzzzzDGPGjOG5554DUNIsIpLB1q1bx8SJE7nxxhuB7o/Z2bTPgEg20oxzhjv44IM59dRTGT9+fLpDERGROIYPH86pp57K1KmRE97Q9tihcozwHs9KkkUyn6YvM9SyZctoa2ujrKyMyspK9WkWEclgq1evZvPmzQQCAW699VYmT54c8Thtjy3StylxzkD/+9//OPzww/n5z3+e7lBERCSOXbt28ZnPfIZzzjkn7rHaHlukb1OpRgbab7/9uPHGGzn77LPTHYqISNapqqtJ6AK8wsJCbrrpJkaOHBn32A49njs9LyKZTzPOGeQf//gHq1evxsy4+OKLVZ4hIpJgoRrj2sb6bm1rHcmqVauoqfHed/LJJ0ctzwin7bFF+jYlzhmioaGB8847j6uvvjrdoYiIZK1E1hhfccUVfOUrX6Gpqcn3e7Q9tkjfplKNDFFSUsITTzzB6NGj0x2KiEjWSmSN8fz581m3bh39+vXr1vu0PbZI36UZ5zSrrq5m/vz5AEyePFnlGSIiSRStlthvjfGqVauYM2cObW1tDBs2jAkTJiQyPBHJcEqc0+yOO+7g1ltvpaWlJd2hiIhkpaq6GsYsmkXegulsb9lJgQU6vN6dGuOHH36YO++8kzVr1iQjVBHJcCrVSLMHHniApqYm8vP1VyEikmidNxzZ2LyVQsunrKCUTc3bu91V4xvf+AYzZsxgzz33TGbYIpKhNOOcBtXV1Zx++uk0NTVRXFzMkCFD0h2SiEhWirQYcJdrYUB+P9/bWq9atYrjjjuO2tpazExJs0gOU+KcBuvWreO9996jsbEx3aGIiGS1RCwG/Oijj6irq2Pz5s0JikpE+irVB6RQY2MjxcXFnH/++Zx33nkqzxARSZLQJicOF/H1eIsBq+pq+M6y31PXtpnRxcP48T/uZNKYSckIVUT6EM04p8g//vEP9t13X5YtWwagpFlEJEnCNzmJJN5iwKq6Gr626Je8d/7DuJo6ahvrufit23u0SYqIZBclzimy3377ccQRRzBq1Kh0hyIiktUi1TWH+NlwZM7KSpoGAOMGQ0Up0PNNUkQku2jaM8nefvtt9t13X8aMGcMjjzyS7nBERLJetPplw1g9bX7M97733nvUbvkAigLwrUN8nVdEcodmnJNo2bJlHHzwwdx5553pDkVEJGf0dJOThoYGjj76aEpuW9mj94tI9lPinEQHH3ww3//+9zn77LPTHYqISM6YO24mJYGiDs/52eSkpKSEH/3oR8z51nd69H4RyX4q1UiCZ555hoMPPpiysjLmzJmT7nBERHJKqH55zspK1jRuiLvJyapVq9iyZQuHHHIIM2d6yXFF3X6+3y8iucOci9yqpy+ZMmWKW7x4cbrDAGDz5s2MHTuWU089lcpKLSQRETCz15xzU9IdRybJlHHbOcexxx7LunXreOutt9TxSERijtkaIRJs8ODB/O1vf+Pggw9OdygiIhKHmXHvvfeyZcsWJc0iEpdqnBOkurqaxx57DIBjjjmGoUOHpjkiERGJZtWqVdx4440AjBkzhkmTtLmJiMSnxDkBnHPMnTuXn/70p7S1taU7HBERiWPevHn89Kc/Zf369ekORUT6EN2XSgAz49FHH8U5R16e/i0iIpLpfvazn3HhhReyxx57pDsUEelDlOX1QnV1NV//+tdpbW1lyJAhKs8QEclgq1at4rTTTmPjxo3k5eUxduzYdIckIn2MEudeWLJkCa+99hrbt29PdygiIhLHqlWreO2113j//ffTHYqI9FFqR9cDzc3NFBQUANDU1ES/fv1Sdm0R6XvUjq6rVI7bGrNFpDtijdmace6mhQsXctBBB7Fq1SoADcAiIhns3XffZfz48TzxxBOAxmwR6R0lzt20xx57MHbsWAYPHpzuUEREJI7BgwczduxY9txzz3SHIiJZQF01fFq7di0jR45k0qRJPPnkk+kOR0REYli3bh3Dhw9nyJAhLFy4MN3hiEiW0IyzD6+88gr77bcfDz74YLpDERGRODZv3swRRxzBNddck+5QRCTLaMbZh0mTJnHZZZdx/PHHpzsUERGJY/DgwVxxxRUas0Uk4ZQ4x/Diiy8yefJkSkpK+PWvf53ucEREJIbQou199tmHa6+9Ns3RiEg2UqlGFB988AGf+cxn+Pa3v53uUEREJA7nHGeccQZf/OIXyYY2qyKSmTTjHMWIESN44IEHOOqoo9IdioiIxGFm3H333e3fi4gkg2acO1m4cCEvv/wyAKeccoq20RYRyWCrVq3ivvvuA2Dy5MlMnjw5vQGJSFZT4hymtbWVb3zjG1x33XW61Sci0gf84he/4JprrmHz5s3pDkVEcoAS5zCBQIDq6moeeugh3eoTEckQVXU1jFk0i7wF0xmzaBZVdTXtr91yyy08//zz2pRKRFIiLYmzmZ1pZivMrM3MpnR67Ttm9raZrTSzE1IRT3V1Nd/73vdwzjFq1CiVZ4iIdJKucbuqrobZy2+htrEeh6O2sZ6vPfkLjj7zBBoaGigqKmLcuHGJvKSISFTpmnH+N/AF4NnwJ83sIOBLwHjgROB2MwskO5jq6moef/xxGhoakn0pEZG+Ki3j9pyVlTS07uzwXNPKel78x7PU1tYm6jIiIr6kpauGc+4tiLjy+TTgAefcTuBdM3sbOBx4KRlxtLW1kZeXx4033sj27dvp379/Mi4jItLnpWvcXtO4YfeDNgd5BkfvSdvHyznwwAMTcQkREd8yrcZ5JPBe2OO64HNdmNlsM1tsZovr6+u7faHq6moOP/xwPvzwQ8yM0tLSnkUsIpLbkjpujy4e5n2zvgGufB7+uxmAirI9ex6xiEgPJS1xNrN/mNm/I3ydFuttEZ6L2N7COTfPOTfFOTelvLy82/EVFRXRr18/8vPVylpEBDJz3J47biYlgSIIGBTmQX4eJYEi5o6b6ev9IiKJlLSs0Tl3fA/eVgfsHfZ4FPB+YiLqaOrUqTz33HPqniEiEpSJ4/aMUVMBmFNYSe31xVSUlDN33Mz250VEUinTplsfBf5gZr8B9gL2B15J1sWUNIuI9FrSx+0Zo6YqURaRjJCudnSnm1kd8EngMTNbCOCcWwE8CLwJVAOXOuda0xGjiIjspnFbRCR9XTUeAR6J8tpcYG5qIxIRkVg0bouIZF5XDRERERGRjKTEWURERETEByXOIiIiIiI+KHEWEREREfFBibOIiIiIiA9KnEVEREREfFDiLCIiIiLigxJnEREREREflDiLiIiIiPhgzrl0x9BrZlYP1Pbw7cOADQkMp6/Q5849ufrZM+FzVzjnytMcQ0bRuN0j+ty5RZ87faKO2VmROPeGmS12zk1Jdxypps+de3L1s+fq585mufp3qs+dW/S5M5NKNUREREREfFDiLCIiIiLigxJnmJfuANJEnzv35Opnz9XPnc1y9e9Unzu36HNnoJyvcRYRERER8UMzziIiIiIiPihxFhERERHxIWcTZzM708xWmFmbmU3p9Np3zOxtM1tpZiekK8ZkM7MfmtlaM1sS/Dop3TElk5mdGPw7fdvMrkt3PKliZqvNbHnw73hxuuNJFjO728w+NLN/hz031MyeMrP/Bf8cks4Ypec0ZmvMTnc8qZIrYzb0zXE7ZxNn4N/AF4Bnw580s4OALwHjgROB280skPrwUuZG59zk4Nfj6Q4mWYJ/h7cBnwMOAs4J/l3niqnBv+OM7Y2ZAPPx/j8b7jpgkXNuf2BR8LH0TRqzPRqzc0MujNnQB8ftnE2cnXNvOedWRnjpNOAB59xO59y7wNvA4amNTpLgcOBt59wq59wu4AG8v2vJEs65Z4FNnZ4+DagMfl8JfD6VMUniaMzOORqzc0BfHLdzNnGOYSTwXtjjuuBz2eoyM1sWvF2SUbdDEizX/l7DOeBJM3vNzGanO5gUG+GcWwcQ/HN4muORxMu1/29rzM5+uTxmQ4aP2/npDiCZzOwfwB4RXprjnPtbtLdFeK7P9uyL9TMA7gB+gvf5fgLcAFyQuuhSKqv+XrvpKOfc+2Y2HHjKzP4T/Fe+SEbRmK0xO0xW/b12k8bsDJbVibNz7vgevK0O2Dvs8Sjg/cRElHp+fwZm9ltgQZLDSaes+nvtDufc+8E/PzSzR/BugebKIPyBme3pnFtnZnsCH6Y7IIlOY7bG7DBZ9ffaHTk+ZkOGj9sq1ejqUeBLZlZkZmOB/YFX0hxTUgT/gww5HW/xTbZ6FdjfzMaaWSHeYqJH0xxT0plZfzMrDX0PfJbs/nvu7FFgZvD7mUC0WUvpuzRmZyeN2bk5ZkOGj9tZPeMci5mdDtwClAOPmdkS59wJzrkVZvYg8CbQAlzqnGtNZ6xJ9Cszm4x3+2s1cGFao0ki51yLmV0GLAQCwN3OuRVpDisVRgCPmBl4/3//g3OuOr0hJYeZ/RE4DhhmZnXA/wG/AB40s68Ca4Az0xeh9IbGbEBjtsbsLNMXx21tuS0iIiIi4oNKNUREREREfFDiLCIiIiLigxJnEREREREflDiLiIiIiPigxFlERERExAclztKnmNlqMxuWgPN83swO6sX7B5vZJb2NI+x82xN1LhGRTKExW7KNEmdJC/Ok87+/zwM9HoSBwUDCBmERkUymMVvEo8RZUsbMxpjZW2Z2O/A6sLeZfdPMXjWzZWb2o7Bj/2pmr5nZCjOb7ePc55jZcjP7t5n9Muz57WHfn2Fm883sSOBU4NdmtsTM9jWzp83sJjN7MXiOw4Pv+aGZXRt2jn+b2Ri8Bu37Bt//606x/DJ8ZiN4jm+Y2QAzW2RmrwdjPS3C5zjOzBaEPb7VzGYFv/+4mT0T/Lks7LSLmIhIQmnM1pgtXSlxllQbB9zrnDsk+P3+wOHAZODjZnZM8LgLnHMfB6YAV5hZWbQTmtlewC+BTwfPc5iZfT7a8c65F/G29Pymc26yc+6d4Ev9nXNH4s1K3B3nc1wHvBN8/zc7vfYAcHbY47OAPwNNwOnOuUOBqcANZt72UPGYWQHermlnBH8udwNz/bxXRKQXNGZrzJYwObvltqRNrXPuX8HvPxv8eiP4eADeoPws3sB7evD5vYPPb4xyzsOAp51z9QBmVgUcA/y1m7H9EcA596yZDTSzwd18P8H3v2Fmw4O/HMqBj5xza4ID6c+Cv2jagJF426uu93HaccDBwFPBcTsArOtJfCIi3aAxW2O2hFHiLKm2I+x7A37unLsr/AAzOw44Hvikc67BzJ4G+sU4Z6wZgPA95WOdo/OxocctdLwzE+8cIX8BzgD2wJvNAJiBNyh/3DnXbGarI5wv2vUMWOGc+6TP64uIJILGbI3ZEkalGpJOC4ELzGwAgJmNNLPhwCC8f/E3mNkBwCfinOdl4FgzG2ZmAeAc4Jngax+Y2YHmLWo5Pew924DSTuc5OxjHp4AtzrktwGrg0ODzhwJjY7w/3APAl/AG4r8EnxsEfBgcgKcCFRHeVwscZGZFZjYImBZ8fiVQbmafDMZSYGbjY1xfRCTRNGZ3pTE7x2jGWdLGOfekmR0IvBS8lbUdOBeoBi4ys2V4g8+/op8FnHPrzOw7QA3ev/Ifd879LfjydcAC4D3g33i3FsEbJH9rZlfgDZQAH5nZi8BA4ILgcw8BXzGzJcCrwH+D19xoZi+Y2b+BJzrXzDnnVphZKbDWORe6PVcF/N3MFgNLgP9E+CzvmdmDwDLgfwRviTrndpnZGcD/Cw7O+cBNwIpYPxsRkUTRmK0xW8Cc63ynQyT3BG8tXuucW5zuWEREJDaN2ZIuKtUQEREREfFBM84iIiIiIj5oxllERERExAclziIiIiIiPihxFhERERHxQYmziIiIiIgPSpxFRERERHxQ4iwiIiIi4oMSZxERERERH5Q4i4iIiIj4oMRZRERERMQHJc4iIiIiIj4ocRYRERER8UGJs4hIH2ZmR5vZynTH0V1mNt/Mfurz2NVmdnyyYxIRiUeJs4hINwSTuEYz225mH5nZY2a2d7ricc4955wbl67ri4jkEiXOIiLdd4pzbgCwJ/ABcEua4xERkRRQ4iwi0kPOuSbgL8BBoefM7GQze8PMtprZe2b2w7DXHjOzy8PPYWbLzOzzwe8PMLOnzGyTma00s7PCjjvJzN40s21mttbMrg0+f5yZ1YUdd52ZvRM87k0zOz3stVlm9ryZXR+cLX/XzD4X7fMFZ9e/GYxxh5n93sxGmNkTwfP/w8yGhB1/qpmtMLPNZva0mR0Y9tohZvZ68H1/Avp1utZ0M1sSfO+LZjbR11+CiEgKKXEWEekhMysBzgb+Ffb0DuArwGDgZODiUGIMVALnhr1/EjASeNzM+gNPAX8AhgPnALeb2fjg4b8HLnTOlQIHA/+MEtY7wNHAIOBHwP1mtmfY60cAK4FhwK+A35uZxfiYXwQ+A3wMOAV4Avhu8P15wBXBz/Ix4I/AVUA58DjwdzMrNLNC4K/AfcBQ4M/B84Z+DocCdwMXAmXAXcCjZlYUIy4RkZRT4iwi0n1/NbPNwFa8pPLXoRecc08755Y759qcc8vwksljgy//DdjfzPYPPj4P+JNzbhcwHVjtnLvHOdfinHsdeAg4I3hsM3CQmQ10zn0UfL0L59yfnXPvB6//J+B/wOFhh9Q6537rnGvFS+T3BEbE+Ky3OOc+cM6tBZ4DXnbOveGc2wk8AhwSPO5s4DHn3FPOuWbgeqAYOBL4BFAA3OSca3bO/QV4NewaXwfucs697Jxrdc5VAjuD7xMRyRhKnEVEuu/zzrnBQBFwGfCMme0BYGZHmFmNmdWb2RbgIrzZWYLJ5oPAuWaWhzerfF/wnBXAEcFShc3BxHwGsEfw9S8CJwG1ZvaMmX0yUmBm9pWwkofNeLPTw8IOWR/6xjnXEPx2QIzP+kHY940RHofeuxdQG3buNuA9vBn1vYC1zjkX9t7asO8rgG90+ux7B98nIpIxlDiLiPRQcHb0YaAV+FTw6T8AjwJ7O+cGAXcC4aUQlXgJ8TSgwTn3UvD594BnnHODw74GOOcuDl7rVefcaXhlHH/FS8A7MLMK4Ld4yXxZMLn/d6frJ8v7eAlwKBbDS37XAuuAkZ1KQkaHff8eMLfTZy9xzv0xBXGLiPimxFlEpIfMcxowBHgr+HQpsMk512RmhwNfDn9PMFFuA25g92wzwALgY2Z2npkVBL8OM7MDg3XCM8xsULAMYitest5Zf8AB9cH4zsebcU6FB4GTzWyamRUA38Art3gReAloAa4ws3wz+wIdy0d+C1wUnK03M+sfXGRZmqLYRUR8UeIsItJ9fzez7XgJ7FxgpnNuRfC1S4Afm9k24AdEmBkG7gUmAPeHnnDObQM+C3wJb/Z2PfBLvHIQ8OqhV5vZVrzyj3PpxDn3Jl5C/hJeScUE4IVefVKfnHMrgzHdAmzAW0h4inNuV7CG+wvALOAjvHroh8PeuxivzvnW4OtvB48VEcko1rHkTEREks3MvgLMds59Ku7BIiKSMTTjLCKSQsEWdpcA89Idi4iIdI8SZxGRFDGzE/Dqjz/AW0QoIiJ9iEo1RERERER80IyziIiIiIgP+ekOQET8GzZsmBszZky6wxCRHPTaa69tcM6VpzsOkXRS4izSh4wZM4bFixenOwwRyUFmVhv/KJHsplINEREREREflDiLiIiIiPigxFlERERExAclziIiIiIiPihxFhERERHxQYmziIiIiIgPSpxFRERERHxQ4iwiIiIi4oMSZxERERERH5Q4i4iI5IiquhrGLJpF3oLpjFk0i6q6mnSHJNKnaMttERGRHFBVV8Ps5bfQ0LoTgNrGemYvvwWAGaOmpjM0kT5DM84iIiI5YM7KyvakOaShdSdzVlamKSKRvkeJs4iISA5Y07ihW8+LSFdKnEVERHLA6OJh3jf1jdDc1vV5EYlLibOIiEgOmDtuJsUUwPdfgduWA1ASKGLuuJlpjkyk79DiQBERkRwQWgD4jasb+aCwkYricuaOm6mFgSLdoMRZREQky73zzjv85z//YcbJJzPjG0qURXpKibOIiEiWu+6663j++ed55513KCkpSXc4In2WEmcREZEs97vf/Y66ujolzSK9pMWBIiIiWeidd97hqquuoqWlhUGDBjF+/Ph0hyTS5ylxFhERyUJPPvkk999/P7W1tekORSRrKHEWERHJIs45AC6++GLeeust9t133zRHJJI9lDiLiIhkiXfeeYcjjzyS//73vwCUl5enOSKR7KLEWUREJEs0NTWxZcsWGhsb0x2KSFZSVw0REZE+btu2bZSWljJ+/HiWL19OIBBId0giWUkzziIiIn1YXV0d48ePZ968eQBKmkWSSImziIhIH1BVV8OYRbPIWzCdMYtmUVVXA8Dw4cP5zGc+wxFHHJHmCEWyn0o1REREMlxVXQ2zl99CQ+tOAGob6/naP35J0ycb+eq4k/j973+f5ghFcoNmnEVERDLcnJWV7UkzALtaabruWS7/2sXpC0okB2nGWUREJMOtadzQ8YnCAJx/AI17DUhPQCI5SjPOIklmZneb2Ydm9u+w54aa2VNm9r/gn0PSGaOIZJ7wmuY8M+/JdTvgrY+874/ak4qD9klfgCI5SImzSPLNB07s9Nx1wCLn3P7AouBjERFgd01zbWM9Dkera/NeuP3fcP0SaG6jJFDE3HEz0xqnSK5RqYZIkjnnnjWzMZ2ePg04Lvh9JfA08O3URSUimaxLTXNQ3tWH0LZlJxUDRzB33ExmjJqahuhEcpcSZ5H0GOGcWwfgnFtnZsOjHWhms4HZAKNHj05ReCKSTh1qmtftgGfXwVn74oYW4b7yVPoCE8lxKtUQyXDOuXnOuSnOuSnl5eXpDkdEUmB08bDdD55+H/72Lmxs6vi8iKScEmeR9PjAzPYECP75YZrjEZEMMnfcTEoCRd6DL+0HN3+KkhGDVdMskmZKnEXS41Eg9BtwJvC3NMYiIhnmEztHs8/P1zCyoT9meVSMHs28CZerplkkzVTjLJJkZvZHvIWAw8ysDvg/4BfAg2b2VWANcGb6IhSRTLN+/Xq2rdnA4wfczcSJE9MdjogEmXMu3TGIiE9TpkxxixcvTncYIpIkO3fupKjIK9HYtWsXhYWFaY5oNzN7zTk3Jd1xiKSTSjVEREQywOrVqznwwAN5+OGHATIqaRYRjxJnERGRDFBWVsbEiRPZd9990x2KiEShxFlERCTBwrfLHrNoFlV1NVGPrauro7m5mdLSUv76178yadKkFEYqIt2hxFlERCSBOm+XXdtYz+zlt0RMnrdt28aRRx7JxRdfnIZIRaS7lDiLiIgkUKTtshtadzJnZWWXY0tLS/nud7/L5ZdfnqrwRKQX1I5OREQkgTpslx3l+XfeeYedO3dy0EEHcdFFF6UqNBHpJSXOIiIiCTS6eBi1jfURnwdwzvHlL3+Z7du3s2zZMgKBQKpDFJEeUuIsIiKSIFV1NWxv2dnl+ULLb98u28y49957aWpqUtIs0scocRYREUmA0KLAzvXNALtcC5c9dQPz3rmL2qn9WNO4gdHFw5hbN1PbaIv0IUqcRUREEiDSosBwmx9ZwbNPr4UDj4VBhe3dNgAlzyJ9hLpqiIiIJEC0RYHtvnoAXH8kDNq9I2C0bhsikpmUOIuIiPRSVV0NeWZdX1i3A37xOjQ0QyAP9urf5ZC4CbeIZAwlziIiIr0Qqm1udW1dX3xvO7z5EWxoivr+ULcNEcl8qnEWERHphYi1za1t3gzz4SNgXhn0i/zrtiRQ1N5tQ0Qyn2acRUREeqFLqcX6BrjsOVi+0XscljT3zyuiorgcw6goLmfehMu1MFCkD9GMs4iISC902fCkKACDimBAQZdjG9p2sXra/NQFJyIJpRlnERGRHqiqq2HMolnUNtZjAB/tBOdgSBH8/AgYO7DLe1TPLNK3KXEWERHpptCCwNBMs9uyC655Ae5d6R0QocNGgQVUzyzSx6lUQ0REpJuuXHFXxwWBAwvgs3vDJ0ZEPL6soJSbx1+oemaRPk6Js4iIiE9VdTVcueIuNjZv855Y3wD5BsOK4Zz9I76norhcdc0iWUKlGiIiIj6EyjPak+Y2Bz9ZDL94w6ttjkIbnIhkD804i4iIRFBVV8OclZWsadzA6OJhbG9p6liekWdw+QSvi0akXQODtCBQJHsocRYREekkNLscSpQ7tJtbtwNWbYWj9oQDhsQ9lxYEimQPJc4iIpLTOs8szx03M/JugCF/+B8s2QCHlENJ7F+j/fP6aUGgSBZR4iwiIjkr0sxy+OOILp0A9Y1xk+YCC3DXxMsSGa6IpJkWB4qISM6KNLMcMWletwNuXQ7NrdAvAHsPiHrO0Hba90y6WrPNIllGM84iIpKzfHe8eOsjeOkDOH0sjIyeNKv1nEh2U+IsIiI5a2hBKRubt0Y/wDmvY8anR8HhI2BAQdRDSwJFWggokuVUqiEiIjmpqq6GrS07oh+wbgdc9QK8G0ysYyTNActj3oTLVZohkuWUOIuISE6as7KSZtca/QBHzI1NQkoCRVROukZJs0gOUKmGiIjkpKj1zdubvdnlvfrDTZ/yNjrpJGB5tLo2KorLmTtuppJmkRyhxFlERHLS0IIBu7fPDtnYBNe+CKeNgc/vEzFpvnj0Sdw+8dLUBCkiGUWlGiIiknOq6mr4qHl71xcGF8EnRsCk6NtkP17/ahIjE5FMphlnERHJOVeumEcbYfXL6xu88owBBXDh+Jjv9d3CTkSyjmacRUQkZ1TV1TBm0ayOLeia2+AHr8Cvl/g6x+ji6LPRIpLdNOMsIiJZr6quhitX3NW1phmgIA9mHwRl/eKep8AC6tUsksOUOIuISNaJmSiHrNsBHzZ69cxThsc9Z1lBKTePv1AdNERymBJnERHJClV1NcxZWUltY72/N/z2LVi1FeYdC4WB9qcLyae0oIRNzdsYXTxM7eZEpJ0SZxER6fOq6mqYvfwWGlp3+n/TlRNh884OSfO0oZP4x5E/S0KEIpINtDhQRET6vDkrK/0lzet2wL0roc3BoEKoKO3w8tuN7ycpQhHJBkqcRUSkz/PdIu5fH0D1Gqhv7N15RCQnqVRDRET6vNHFw2LXNjsHZvD5sXDsXjA0cgcNtZoTkVg04ywiIn3e3HEzKQkURX5x3Q74zsteBw2zqElzSaBIreZEJCYlziIi0qeFumk0tO7EIh2wowU2NcGO5i4vBSwPw6goLmfehMvVPUNEYlKphoiI9Eler+Z5HXYBdOEHNLVCvwDsNwjuOAYCXeeKKiddo2RZRHxT4iwiIn1KpIS5iw8b4Tv/ghkfg0+PjJg0A0qaRaRblDiLiEif4btf86BCOGAwjC2NekhFcXligxORrKfEWURE+owrV8yLnTR/2AiDC6EoAN88JOphhZavhYAi0m1aHCgiIn1CVV1N7PKMplavPOP/LY97rq/u/VmVaYhIt2nGWURE+oQ5KytjH9Av4NU0xyjPCHm8/tUERSUiuUSJs4iI9AlRd/Vbt8NrObffIG8hYG/OJSISg0o1REQko12y7DYCC6bjOjab8zgHNy+DX70BrW2+z6kdAkWkJzTjLBLGzIqB0c65lSm63mpgG9AKtDjnpqTiuiJ9xSXLbuOONY9HP8AMrp4EDS0RW84Vkk9+INBhQaF2CBSRntKMs0iQmZ0CLAGqg48nm9mjKbj0VOfcZCXNkuuq6moYs2gWeQumM2bRLKrqarhrzRORD163Ax5Z5c04jyiBsQMjHtZMK/MmXE5Fcbl2CBSRXtOMs8huPwQOB54GcM4tMbMxaYxHJOuFtsuubazH2L3zX21jPecvvZG2SOUZAE++Bwvfg+NGwpCiqOcfWlDKjFFTlSiLSEJoxllktxbn3JYUX9MBT5rZa2Y2O9IBZjbbzBab2eL6+voUhyeSPKHNTGobvf+uO6fIza41+pvPGwc3HhUzaQbY2rKDqrqaXkYqIuJR4iyy27/N7MtAwMz2N7NbgBeTfM2jnHOHAp8DLjWzYzof4Jyb55yb4pybUl6unc4ke8xZWRl/B8Bw63bATxbD1l2QZ16JRhzNrjV+GzsREZ+UOIvsdjkwHtgJ/BHYClyVzAs6594P/vkh8AheqYhITuh2S7gPG+GdrfBRN5LtnlxHRCQK1TiLBDnnGoA5wa+kM7P+QJ5zblvw+88CP07FtUUyQf9AEdtbm+If2NIG+XkwaRjMOxYKA926jlrPiUiiKHEWCTKzGrqWWeKc+3SSLjkCeMTMwPv/4h+cc9VJupZIxtnhJ2le3wA/eAVmHwRThnc7aVbrORFJJCXOIrtdG/Z9P+CLQEuyLuacWwVMStb5RTJdlH4ZHQ0ogD1LoKyfr3MOCPSjKK+ATc3bGV08jLnjZqqjhogkjBJnkSDn3GudnnrBzJ5JSzAiWS5up4uNTTC4yEucfxS79H/a0En848ifJTA6EZHIlDiLBJnZ0LCHecDHgT3SFI5I1gq1oYtqezNc+yJ8YgRcOD7u+d5ufD+B0YmIRKfEWWS31/DuHhteica7wFfTGpFIlgjf6CSuAQVw6hiY7G9Rn7pmiEiqKHEWCXLOjU13DCLZKDTDHLdn87od3p979ofT9/F9fnXNEJFUUeIsOc/MvhDrdefcw6mKRSQbXbnirvhJs3Pwize87286CrxuM3Gpa4aIpJISZxE4JcZrDlDiLNJDVXU1bGzeFv9AM7hq4u7vfSgrGMjN42era4aIpIwSZ8l5zrnz0x2DSDYJ1TOvadxAXrwkeN0OeOsj+PQoGDvQ1/nLCkq5efyFSphFJOWUOIuEMbOT8bbdbm8a65zTbn4iMYQnykMLStnasoNm1wpAq4vTrfmhVfDSB3D4CG9RYBwVxeWsnjY/AVGLiHSfEmeRIDO7EygBpgK/A84AXklrUCIZrvPCv43NW7t3ggsPgtPH+kqaCyygemYRSau8dAcgkkGOdM59BfjIOfcj4JPA3mmOSSSjzVlZGX/hX2frdsBvlkJTKxQEYOSAuG8pKyjlnklXqzxDRNJKM84iuzUG/2wws72AjYBa1InE0KMeyu9shdfrob4R9o6dNJcEipg34XIlzCKSEZQ4i+y2wMwGA78GXsfrqPHbtEYkkuFGFw/zt6kJQJuDPINP7QmHDoOS2OUZActT0iwiGUWlGiJBzrmfOOc2O+ceAiqAA5xzP0h3XCKZzHfN8foGuOI5WLnZexwnaS60fConXaOkWUQyihJnkSAzW2pm3zWzfZ1zO51zW9Idk0hfkIePvssBg375UOjv105pfrGSZhHJOEqcRXY7FWgBHjSzV83sWjMbne6gRDJVqKNGGzFazm3Z5e0KWF4Mv/6k717Nm5q3JyhKEZHEUeIsEuScq3XO/co593Hgy8BE4N00hyWSkarqapi59DexO2p8tBOueh7+9Lb32OeOgODVTouIZBotDhQJY2ZjgLOAs4FW4FtpDUgkA4VmmltdW+wDBxXCsXvBESNiHlZo+exyLe2PSwJF6tcsIhlJM84iQWb2MvAw3v8vznTOHe6cuyHNYYlknLi9m9c3wOadXgeNWQfELc+4e9JVVBSXYxgVxeXqpCEiGUszziK7zXTO/SfdQYhkupjt51rb4IevwpAi+NkRvssztI22iPQFmnEWCVLSLBJbVV0NwxZ+KfZBgTy49GCYfZDvpHnOysoERCciknyacRYRkbhCdc1RSzTW7YC6HXDYcJhQ1q1z92j3QRGRNFDiLBJkZkXOuZ3xnhPJFVV1NcxZWcmaxg3kmcVeDFi5Et78COYd6/Vr7gZ10BCRvkKJs8huLwGH+nhOJOt1nmFudTF6NQNcPgE2NHU7aVYHDRHpS5Q4S84zsz2AkUCxmR0C7dugDQRK0haYSJpcsuw27ljzePwD1+2ABbVwwQHQv8D78iFgebQ5x+jiYcwdN1MdNESkz1DiLAInALOAUcBvwp7fBnw3HQGJpIvvpBngjQ1QsxamV8Ce/X29pdDyuXvSVUqWRaRPUuIsOc85VwlUmtkXnXMPpTsekXSa9151/IOc8zpmnFQBR+0Bg4qiHmrQviF3WcFAbh4/W0mziPRZSpxFdjvYzMZ3ftI59+N0BCOSDnF3A1y3A25YCldNhFEDYibNJYEibWYiIllFfZxFdtsO7Ah+tQKfA8akMyCRVDr+RR+VSc1t0NDi/RlHQ+tO9WgWkayiGWeRoM7ba5vZ9cCjaQpHJKWq6mpYtGlp9AMaWqAkH0aXwi1HQ8Df5ibq0Swi2UQzziLRlQD7pDsIkVS4csVd0V/c0AiXPgtP1HqPfSbNoB7NIpJdNOMsEmRmy9m9jikAlAOqb5asE76xyejiYZxUfhgbm7dFf8PgIjhkGBwwpFvXUY9mEck25uI1tRfJEWZWEfawBfjAOdeSrngimTJlilu8eHG6w5A+rKquhguW3sQuP/9pf9AAAwuh2N8cS77lMSi/P5uat6tHcxYys9ecc1PSHYdIOmnGWSTIOVdrZocCn8KbeX4eeCO9UYkk1kXLb/WXNO9qhTkvw9iBMOfjvs49KL8/G054oJcRiohkLtU4iwSZ2Q+ASqAMGAbMN7PvpTcqkcSpqqthe2uTv4MLA3D+AfDl/X2ff1Pz9h5GJiLSN2jGWWS3c4BDnHNNAGb2C+B14KdpjUqkhzrXMm9v2Rn/Tet2wOZdcOAQOGrPbl1PCwFFJNspcRbZbTXQDwhNyRUB76QtGpFeqKqrYfbyW2ho9ZLl2sZ6f2+8fQW8vwPuPBYK/N+U1EJAEckFSpxFdtsJrDCzp/BqnD8DPG9m/w/AOXdFOoMT6Y45Kyvbk+ZuuXoibNnVraQZ0A6BIpITlDiL7PZI8Cvk6TTFIdJrvmeYwSvPeOZ9OHs/GNrP++qGiuJyJc0ikhOUOIvsNtg5d3P4E2Z2ZefnRPqCgOXR6uJviw14SfOjq+H4UTCsuFvXUYmGiOQSddUQ2S3Sb/9ZqQ5CJBF8J83gzTT/v091O2kOWJ5KNEQkp2jGWXKemZ0DfBkYa2aPhr1UCmxMT1Qi3RfeRSMPo40YG1yt2+EtBLx6olea0c2kGaDNOSXNIpJTlDiLwIvAOrzezTeEPb8NWJaWiES6qaquhvOX3kizawWIlTJ7Nu/yumds2dXtmuYQtZ8TkVyjxFlynnOuFqgFPpnuWER66soVd7UnzTHtavU2NzlwSLdazuVbHi1h5R+qbRaRXKQaZ5EgM9tmZluDX01m1mpmW9Mdl4gfG5u3xT/ogwa45Fl4YZ332EfSXBIo4v7J1zJ/0jVUFJdjGBXF5aptFpGcpBlnkSDnXGn4YzP7PHB4eqIRSYKBhTB2IOzV3/dbwhNkJcoikus04ywShXPur8Cn0x2HSCxVdTUMePwLsQ/a0AgtbVCcD3M+7iXPPvTPK1KyLCISRjPOIkFmFp595AFT8LHGSiRVwrtmjC4exknlh/G79xbGrm1uaIFvvgSHDIMrJvq+Vh7GXRMvT0DUIiLZQ4mzyG6nhH3fAqwGTktPKCIdVdXVMHv5Le3baNc21nPnmsfj/8uuJB/O2hcOGBL3Gob3L8WK4nLmjpup2WYRkU6UOIsEOefOT3cMIuE69GU267KpScyked0O2NUGFaXwuQpf12ub/ljPgxURyQGqcRYJMrNRZvaImX1oZh+Y2UNmNirdcUluCs0w1zbW43Dd2wnQObhhKfzyDWj1V20UMP06EBGJRzPOIrvdA/wBODP4+Nzgc59JW0SSs+asrGwvy+g2M7hqIjS3QcB8vWX23if27FoiIjlEUwwiu5U75+5xzrUEv+YD5cm8oJmdaGYrzextM7sumdeSvmVN44buv2ndDni81vt+1ABf3TPyMC4efRK3T7y0+9cTEckxmnEW2W2DmZ0L/DH4+BxgY7IuZmYB4Da8Ge064FUze9Q592ayril9x+jiYdQ21nfvTQtqoWYtHLUHDCqKeWhZQSkbTnigFxGKiOQezTiL7HYBcBawHlgHnBF8LlkOB952zq1yzu0CHkBdPCRo7riZFFige2+64AC44ci4STPAzeMv7GFkIiK5SzPOIkHOuTXAqSm85EjgvbDHdcARnQ8ys9nAbIDRo0enJjJJq6q6Gi5cdmvs/swh63ZA5Uq4fAL0L4A9/e0KqFZzIiLdpxlnkfSJtGqrSwsE59w859wU59yU8vKkllxLBqiqq+GCpTexo63J3xvqdsCbH8EGn8fj9WkWEZHu04yzSPrUAXuHPR4FvJ+mWCRDzFlZyS7XEv/A1jYI5MFhw2HesdDP33BeaPnMHTezl1GKiOQmzTiLpM+rwP5mNtbMCoEvAY+mOSZJM1/dNNY3wKXPwbLg2lWfSXMext2TrlKZhohID2nGWXKemV0T63Xn3G+ScV3nXIuZXQYsBALA3c65Fcm4lvQdvrpp9AvA4CIoLejWuR2qbRYR6Q3NOItAafBrCnAx3qK9kcBFwEHJvLBz7nHn3Mecc/s65+Ym81rSN8Qso/hop7cr4OAi+PkRvvo0hxtdPKyX0YmI5DbNOEvOc879CMDMngQOdc5tCz7+IfDnNIYmOaCqroYrV9zFxuZtAFjENaPAll1wzQtw7F4w6wBvd8BuKAkUqbZZRKSXlDiL7DYa2BX2eBcwJj2hSDarqqthzsrKiCUZrmtjFc/AAvjs3vCJEd2+XkVxOXPHzVSZhohILylxFtntPuAVM3sErxz0dODe9IYk2aaqrobZy2+hoXWnvzesb4B8g2HFcM7+3b7e/ZOvVcIsIpIgSpxFgpxzc83sCeDo4FPnO+feSGdMkn3mrKz0nzS3OfjpYq9rxq8/2e3yDNBiQBGRRFLiLNJRCbDVOXePmZWb2Vjn3LvpDkqyh692cyF5BpdPhMK8HiXN2uhERCSx1FVDJMjM/g/4NvCd4FMFwP3pi0iyka/OFut2wPPrvO/HDe529wyAAgtoMaCISIIpcRbZ7XTgVGAHgHPufbw2dSIJ4yuZ/ePbcOcKaGju0TXKCkq5Z9LVKtMQEUkwlWqI7LbLOefMzAGYWf90ByTZJdRNI65LDob6Rijxt8FJWUEpN4+/UImyiEiSKXEW2e1BM7sLGGxmXwcuAH6X5pgkS8TtprFuBzy0Ci48yNsZcO8Bcc/ppj+W4ChFRCQWlWqIBDnnrgf+AjwEjAN+4Jz7f+mNSrJF3G4ab30EL30AHzb6Op8W/omIpJ5mnEWCzOyXzrlvA09FeE6kR7ydAeexsXlr5AOc8zpmfHoUHD4CBvgrzzip/LAERikiIn5oxllkt89EeO5zKY9CskZVXQ0XLL0petK8bgdc9QK8G3zdZ9IM8Hj9qwmIUEREukMzzpLzzOxi4BJgXzNbFvZSKfBieqKSvqyqroYLl93KjrampF2jW/2gRUQkIf5/e/ceXXV553v8/U0IuRQQJcGiXIdRrA5gbapWe6yM7eh02qo9dUYXdeB41oRab51z2i5duKb1OMxM7zqc0wvt8kjPSXU5djltbacXWWntGcdp0aJIbZRYgtGIAR1FCAjJc/7YOyRALhvIzi/Jfr/Wytr7d3v298de6Icnz+95DM4SfAf4F+DvgZv77N+ZUnolm5I0VjW2NbFsw5foIg180hv7cr3LM94Cd5x/VIubFDQftCRpWDlUQyUvpfRaSmkLcCfwSkqpNaXUCuyLiHOyrU5jzU2bvjF4aN6xB274JTzwXG67gNB86Bk15ZUubiJJGTA4S72+BrzRZ3tXfp9UkMa2Jnbs2zn4SVMr4dwT4czCeoxryiv52Oz3M6e6jiCYU13HmoU3OGezJGXAoRpSr0gpHegqTCl1R4R/R1SwQRc3eWl3bnjGpApYcUZB7U2rmMKdZzQYkiVplDAUSL2ei4gb6e1l/jjwXIb1aAwYcro5gP3d8De/ghk1cNvZA55WHmV0p8Ts6lpWLVhmYJakUcbgLPX6GPCPwK1AAtYBDZlWpFGtZ7q5N9P+wU+cUAYNp8O0qkFP60rdrgYoSaOYwVnKSym9DFyZdR0aO1Y2rx08NLfvyq0EuLgW6qcP2V55+NiJJI1mBmeVvIj4dErp8xGxGg6fDiGldGMGZWkMGHIu5W89DS2vw5r3wMTyIdvrSt3DVJkkqRgMzhI8nX9dn2kVGnNOqJg8+NjmmxbBq3sLCs0Ac6rrhqkySVIxGJxV8lJKP8i/DjIlgkpdY1sTK5vX0trZMfiJ7bvgp8/D1QtgysTcTwGcm1mSRj+Ds0peRPyAfoZo9EgpfWgEy9Eo1NjWRMPG1ezu2jv0yf++DX7yPFwyG06sKah9p52TpLHB4CzBF/OvHwbeCvzf/PZVwJYsCtLo0djWxLInvjz0+OOUcqsAXjoP3nMyHF85ZNsBfGz2+/nqouuGp1hJUlEZnFXyUkq/AIiI21NKF/Q59IOIeDijsjQK9PQ0Dxma23fBnRvhrxflepkLCM2Q+zXHjzp+feyFSpJGhHMfSb3qIuIPejYiYh7g01ol7KZN3yhseMau/fDKHtg9xHzO/RhyZg5J0qhhj7PU66+Bn0dEz2qBc4EV2ZWjLDW2NbFj387BT9rTBVXl8IfHwdcugPIj74uYXV17lBVKkkaawVnKSyn9OCJOAU7L7/pdSqmA7kaNFz0zZ2zt3E5ZxOAnv9wJtzwKS0+FPz65oNBcU155UA+2M2lI0tjiUA0pLyJqgE8B16eUngBmR8QHMi5LI6RnPHNrZweJNPS45qkT4W3Hw7zJBbVfHmWsWXgDc6rrCII51XWsWXiDM2lI0hhij7PU638DjwHvym+3Af8EPJhZRRoxK5vXFjae+eXOXGieWA6fPLPg9htmXcLSmUsMypI0htnjLPWan1L6PLAPIKXUSW7GMJWAIRc2gdyY5lsehTufLLjdMoJrnXJOksYFe5ylXm9GRDX5xVAiYj7gGOcS0NjWRDDIKjg9qspzY5oLHJ4BMKu61tAsSeOEwVnq9Rngx8CsiGgEzgeWZ1qRRsTK5rWDh+b2Xbkp5/7wuNyDgEfA6eYkafwwOEtARJQBx5NbPfBcckM0bkopmXpKwKDhNqXc4iav7DmqKeecbk6Sxg+DswSklLoj4vqU0n3AD7OuRyPrhIrJ7Nj3ev8HI+C/LYZd+444NDvdnCSNLz4cKPX6WUR8MiJmRcQJPT9ZF6Xiamxr4vX9uw4/0L4LHngu1+M8vRrmTSmovfIoc7o5SRqn7HGWel2Tf+37JFcC/qCfczVOrGxey77UdfiBn7XBj7fCe06CE6oKamtiTOCuxZ8wLEvSOGVwlvJSSvOyrkHF1djWxE2b1hwYljGtYvLAy2p/9FS4eFbBoXlaxRTuPKPB0CxJ45jBWcqLiCrg48C7yfU0/xL4ekppT6aF6aj1LKHd2tlBGUH3IXNnHBaa23fBN5+GmxbBcRPhxJohP2NOdR1bLrp7GKuWJI1WBmep17eBncDq/PZVwP8BrsisIh21niW0e1YDPDQ09+vlTnjudfiPvbngXAAf/pOk0mFwlnotSCkt7rPdFBFPZFaNjlpjWxPLnvgyXam7sAv2dUNFGSyuhTXvyS2nXSCHZkhS6XBWDanXbyLi3J6NiDgH+NcM69FR6OlpLjg0v7QbrnsY1r+c2z6C0Dynuu4oKpQkjVX2OEu9zgH+MiK25rdnA09HxEYgpZQWZVeaCrWyee2B4RkFmVQBM94C0wp7CLCHczRLUukxOEu9Lsm6AB27gpe43rEHplbmgvNt7zyiz3AGDUkqTQZnKS+l1Jp1DTp2J1RMGniKuR5v7INPPgLnnggrziio3SCYXV3LqgXLDMySVKIMzpLGmRj6lEkVcOnc3MOABXDKOUkSGJwljTOvDNbb3L4rN0P3SW+BywpfENKxzJIkMDhLGgd6FjrZ2rmdsgi6Uj9zNqcE//Cb3Osd74ayAnqm8xyaIUkCg7OkMe7QhU76Dc0AEfCJ/MQoRxCanXJOktTDeZwljWlDTj/XvgvWteXez5uS+ymQU85JkvoyOEsZiIjPRsQLEbEh//P+rGsaq4acfu67z8Fdv8vNpFGgIJhTXceahTc4TEOSdIBDNaTsfCWl9MWsixjrZlfX0trZMfAJK06Hy+flZtIogDNoSJIGYo+zpDGrsa2JN/bvOfxA+y740gbY0wUV5XDypILac2iGJGkwBmcpO9dHxJMRcVdEHJ91MWNNY1sT/+WJr/S/2EnL67BhO3R0DtlOeZQ5NEOSVJBIAz2BLumYRMRDwFv7ObQSeBTYTm5W4duBGSmlawZopwFoAJg9e/Y7WltLY4HDvlPM9bdi36Qf/Wd2dR/S29ydemfM2L0fagYfjVZTXmlYlgoUEY+llOqzrkPKkmOcpSJJKb23kPMi4pvAg4O0swZYA1BfX18S/9I9dIq51s4OGjauBnJzKje2NR0eml/aDbevhxsWwmnHDxmay6PM0CxJOiIO1ZAyEBEz+mxeDjyVVS2jUX9TzO3u2svK5rUHjh9mQkD1BKgsL+gzulMyNEuSjog9zlI2Ph8RZ5IbqrEFWJFpNaPMQFPMtXZ2MHfd8oNn0XjtTZhSAbXV8IV35RY66aM8yuhK3Ye1Nbu6dlhrliSNf/Y4SxlIKV2dUlqYUlqUUvpQSqk965pGk8FC7UGh+dW98In/B/duzm0fEppryitpmHUJNeWVh+139gxJ0pEyOEsadVYtWHZY2O3X1Ilw4Ulw7okEcNEJi5lTXXfQLBlfXXQdaxbecNh+h2lIko6Us2pIY0h9fX1av3591mWMiJ5ZNfpd3OSl3VBVzpwZMwecdUPS8HJWDcngLI0ppRSce8SDf3bwjq5uuP6XcFwl3Ru3E4cMz5BUHAZnyYcDJY015WXw8T+CSRWGZknSiHKMs6RRraqsIvemfRf8alvu/cJpVM2fRmNbE3PXLafswQ8wd91yGtuasitUkjTu2eMsaVTb070v92ZtM/z2VVgzDaomsKd736CLpEiSNNzscZY0Nty4EP72bKjq/ff+YIukSJI03AzOkkatlpYWqr71bO6BwJoKmD15yGsGWjxFkqRjZXCWNGo99NBDTHh4GxM63iz4GlcElCQVi8FZ0qjTM03mihUr+P0zLdx9ya3Mqa4b8jpXBJQkFZPBWdKo0tLSwrnnnssXfrGWueuWM/3R5axsXsuqBcsIBp5+zhUBJUnF5qwakjLTszpg39X/3r73RF74j238zVPfZs+cKiA3Y8bVG77IQMs1zamuY8tFd49Y3ZKk0mSPs6RMNLY10bBxNa2dHSQSrTvaadi4mt9M2Ub56gsOhOYeA4Vmh2dIkkaKPc6SMrGyeW3vdHLbO+FT/8buP5/Psu4v05W6C2pjTnUdqxYsc3iGJGlEGJwlZeKgaeOmVsLba+G04+lK3QQD9zD3CMLhGZKkEeVQDUmZmF1dC9t2w+79MKEMblwE86YAQ4fmA9dLkjSCDM6SMvHZuVcRt/4KvvzEEV/ruGZJUhYMzpIysXz+xdz4Pz5N2dIF/R6fVjGZmvLKfvc77ZwkKQuOcZY0olpaWnjppZc4//zzueOvPsM72y6gYePq3gcFyfUo33nGCoDDpqszMEuSsmJwljSirr32Wp555hmeeeYZJk6ceCAIDxSQDcqSpNEiepa2lTT61dfXp/Xr12ddxjFpb2+no6ODRYsWZV2KpCMQEY+llOqzrkPKkmOcJRVdS0sLt99+OyklZsyYYWiWJI1JBmdJRXfPPfdwxx130NbWlnUpkiQdNYdqSGPIWB2qkVLihRdeYObMmVmXIukoOVRDssdZUpG0tLTwvve9jxdffJGIMDRLksY8g7Okoti2bRubN29m+/btQ58sSdIY4HR0kobVnj17qKqq4rzzzqO5uZmJEydmXZIkScPCHmdJw2bLli2cfvrp3H///QCGZknSuGJwljRsamtrWbx4MaecckrWpUiSNOwcqiHpmLW1tTF9+nQmTZrEAw88kHU5kiQVhT3OkobU2NbE3HXLKXvwA8xdt5zGtqYDx3bu3Ml5553Htddem2GFkiQVnz3OkgbV2NZEw8bV7O7aC0BrZwcNG1cDsHTmEiZPnsytt97KOeeck2WZkiQVnT3Okga1snntgdDcY3fXXj7dtJpNmzYB0NDQwOLFiwftmZYkaawzOEsa1NbOfuZhTokXVzVxxRVX0NXVBfT2TLd2dpBIB3qmDc+SpPHC4CxpULOraw/fGcFJt1zIPffcQ3l5OTBwz/TK5rUjUaYkSUVncJY0qFULllFTXpnbaN8FP2ylprySz190I4sXLz5wXr8904PslyRprDE4SxrU0plLWLPwBuZU18GDrZR9ZzNfPOlqls5cctB5/fZMD7JfkqSxxuAsqV99H/Rb2byWVQuWse+7z/LM45u4dvHlh51/UM90Xk15JasWLBupkiVJKiqno5ME5ILyyua1bO3czgkVk9i5v5M3035o30Xr2sf4q0/sgHNh6fwl/V7f0wPd08bs6lpWLVh2WM+0JEljlcFZ0mFzNe/Yt7P3YNsu+O2rdG57jZXNawcNwktnLjEoS5LGLYOzpH5nxKCrG8rL4J3TYc2FUFXug36SpJLmGGdJhwfil3bDdb+EJ3fktqtyU875oJ8kqZQZnCUdHoiryuGESphccWCXD/pJkkqdwVlS74wYr+6F7gRTK5nwd+cx7dSZBMGc6jrWLLzB8cuSpJLmGGdJLJ25hJ2vvMb1yz5K1wUnMufa/+SMGJIkHcLgLAmAFQsvZfuNN/PBD37woBUBJUlSjsFZKnHPPfccFRUVzJo1i1tvvTXrciRJGrUMzlIJ6+7u5tJLL6WmpoZHH32UiMi6JEmSRi2Ds1TCysrK+Na3vkVVVZWhWZKkITirhlSCWlpauO+++wA455xzHNMsSVIBDM5SCbrtttu4/vrref3117MuRZKkMcOhGlIJ+vrXv87WrVuZMmVK1qVIkjRm2OMsFVFEXBERmyKiOyLqDzl2S0RsjojmiLi42LW0tLTQ0NDA3r17qamp4bTTTiv2R0qSNK4YnKXiegr4MPBw350RcTpwJXAGcAnw1YgoL2YhjzzyCA888ACtra3F/BhJksYtg7NURCmlp1NKzf0cuhS4N6W0N6X0e2AzcHaRagDg6quv5tlnn+XUU08txsdIkjTuGZylbJwMPN9nuy2/7zAR0RAR6yNifUdHxxF9SEtLC2eddRZPPPEEAFOnTj26aiVJkg8HSscqIh4C3trPoZUppe8NdFk/+1J/J6aU1gBrAOrr6/s9R5IkFZ/BWTpGKaX3HsVlbcCsPtszgReHp6Je8+fP5/HHH3dxE0mShoFDNaRsfB+4MiIqI2IecArwq+H8gMa2JuauW075Dz/I3HXLaWxrGs7mJUkqOfY4S0UUEZcDq4E64IcRsSGldHFKaVNE3Af8FtgPXJdS6hquz21sa6Jh42p2d+0FoLWzg4aNqwFYOnPJcH2MJEklJXqeuJc0+tXX16f169cPed7cdctp7Tz8QcI51XVsuejuIlQmabyLiMdSSvVDnymNXw7VkMahrZ3bj2i/JEkamsFZGodmV9ce0X5JkjQ0g7M0Dq1asIya8sqD9tWUV7JqwbKMKpIkaezz4UBpHOp5AHBl81q2dm5ndnUtqxYs88FASZKOgcFZGqeWzlxiUJYkaRg5VEOSJEkqgMFZkiRJKoDBWZIkSSqAwVmSJEkqgMFZkiRJKoDBWZIkSSqAwVmSJEkqgMFZkiRJKoDBWZIkSSpApJSyrkFSgSKiA2g9iktrge3DXM5oV2r3XGr3C6V3z1nf75yUUl2Gny9lzuAslYCIWJ9Sqs+6jpFUavdcavcLpXfPpXa/0mjkUA1JkiSpAAZnSZIkqQAGZ6k0rMm6gAyU2j2X2v1C6d1zqd2vNOo4xlmSJEkqgD3OkiRJUgEMzpIkSVIBDM7SOBYRV0TEpojojoj6Q47dEhGbI6I5Ii7OqsZiiojPRsQLEbEh//P+rGsqhoi4JP89bo6Im7Oup9giYktEbMx/p+uzrqcYIuKuiHg5Ip7qs++EiPhZRDybfz0+yxqlUmRwlsa3p4APAw/33RkRpwNXAmcAlwBfjYjykS9vRHwlpXRm/udHWRcz3PLf2/8C/hQ4Hbgq//2Od0vy3+l4ndf4bnJ/N/u6GViXUjoFWJffljSCDM7SOJZSejql1NzPoUuBe1NKe1NKvwc2A2ePbHUaJmcDm1NKz6WU3gTuJff9agxLKT0MvHLI7kuBtfn3a4HLRrImSQZnqVSdDDzfZ7stv288uj4insz/6ns8/mq7lL7LHgn4aUQ8FhENWRczgk5MKbUD5F+nZ1yPVHImZF2ApGMTEQ8Bb+3n0MqU0vcGuqyffWNybsrB7h/4GnA7uXu7HfgScM3IVTcixs13eQTOTym9GBHTgZ9FxO/yPbSSVFQGZ2mMSym99yguawNm9dmeCbw4PBWNrELvPyK+CTxY5HKyMG6+y0KllF7Mv74cEQ+QG65SCsF5W0TMSCm1R8QM4OWsC5JKjUM1pNL0feDKiKiMiHnAKcCvMq5p2OXDRY/LyT0sOd78GjglIuZFxERyD31+P+OaiiYi3hIRk3veA3/C+Pxe+/N9YFn+/TJgoN8oSSoSe5ylcSwiLgdWA3XADyNiQ0rp4pTSpoi4D/gtsB+4LqXUlWWtRfL5iDiT3NCFLcCKTKspgpTS/oi4HvgJUA7clVLalHFZxXQi8EBEQO7/Yd9JKf0425KGX0TcA1wI1EZEG/AZ4B+A+yLivwJbgSuyq1AqTS65LUmSJBXAoRqSJElSAQzOkiRJUgEMzpIkSVIBDM6SJElSAQzOkiRJUgEMzpI0CkTEloioHYZ2LouI04/h+qkR8fFjraNPe28MV1uSlDWDsyQNo8jJ8r+tlwFHHZyBqcCwBWdJGk8MzpJ0jCJibkQ8HRFfBR4HZkXEpyLi1xHxZETc1ufcf46IxyJiU0Q0FND2VRGxMSKeiojP9dn/Rp/3H4mIuyPiPOBDwBciYkNEzI+In0fEHRHxSL6Ns/PXfDYiPtmnjaciYi65RTbm56//wiG1fK5vb3S+jf8eEZMiYl1EPJ6v9dJ+7uPCiHiwz/b/jIjl+ffviIhf5P9cfnLIio+SNGoYnCVpeCwAvp1Senv+/SnA2cCZwDsi4oL8edeklN4B1AM3RsS0gRqMiJOAzwF/nG/nnRFx2UDnp5QeIbcs86dSSmemlFryh96SUjqPXE/yXUPcx81AS/76Tx1y7F7gL/ps/znwT8Ae4PKU0lnAEuBLkV/abygRUUFudcuP5P9c7gJWFXKtJI00l9yWpOHRmlJ6NP/+T/I/v8lvTyIXpB8mF5Yvz++fld+/Y4A23wn8PKXUARARjcAFwD8fYW33AKSUHo6IKREx9QivJ3/9byJiej7Q1wGvppS25sPv3+X/cdANnExuaeyXCmh2AfBHwM/yWbscaD+a+iSp2AzOkjQ8dvV5H8Dfp5S+0feEiLgQeC/wrpTS7oj4OVA1SJuD9dqmPu8Ha+PQc3u293Pwbx2HaqPH/cBHgLeS64EGWEouSL8jpbQvIrb0095AnxfAppTSuwr8fEnKjEM1JGn4/QS4JiImAUTEyRExHTiOXC/t7og4DTh3iHb+HXhPRNRGRDlwFfCL/LFtEfG2/IOIl/e5Zicw+ZB2/iJfx7uB11JKrwFbgLPy+88C5g1yfV/3AleSC8/35/cdB7ycD81LgDn9XNcKnB4RlRFxHHBRfn8zUBcR78rXUhERZwzy+ZKUGXucJWmYpZR+GhFvA/4tP/zgDeCjwI+Bj0XEk+QC46MDtwIppfaIuAVoItcz+6OU0vfyh28GHgSeB54iNxwEcsH2mxFxI7lwC/BqRDwCTAGuye/7LvCXEbEB+DXwTP4zd0TEv0bEU8C/HDrOOaW0KSImAy+klHqGVDQCP4iI9cAG4Hf93MvzEXEf8CTwLPlhLCmlNyPiI8A/5gP1BOAOYNNgfzaSlIVI6dDf4EmSxov8cJBPppTWZ12LJI11DtWQJEmSCmCPsyRJklQAe5wlSZKkAhicJUmSpAIYnCVJkqQCGJwlSZKkAhicJUmSpAL8fyBH0U51XqIrAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import pylab as pl\n", "\n", "pl.figure(figsize=(12, 12))\n", "\n", "dark_erium_green = '#00b34a'\n", "erium_blue = '#002a43'\n", "\n", "ax = pl.subplot(2,2,1)\n", "ax.set_aspect(\"equal\")\n", "ax.scatter(y_test[:,0], imputed_prediction[:,0], color='#00b34a')\n", "ax.plot([np.min(y_test[:,0]),np.max(y_test[:,0])], [np.min(y_test[:,0]),np.max(y_test[:,0])], ls=\":\", color=\"k\")\n", "ax.set_xlabel(\"real output value\")\n", "ax.set_ylabel(\"predicted output value\")\n", "ax.set_title(\"training with imputed data\")\n", "\n", "ax = pl.subplot(2,2,2)\n", "ax.set_aspect(\"equal\")\n", "ax.scatter(y_test[:,0], dropped_prediction[:,0], color='#00b34a')\n", "ax.plot([np.min(y_test[:,0]),np.max(y_test[:,0])], [np.min(y_test[:,0]),np.max(y_test[:,0])], ls=\":\", color=\"k\")\n", "ax.set_xlabel(\"real output value\")\n", "ax.set_ylabel(\"predicted output value\")\n", "ax.set_title(\"training with missing rows dropped\")\n", "\n", "ax = pl.subplot(2,1,2)\n", "ax.set_aspect(\"equal\")\n", "ax.scatter(y_test[:,0], bayesian_prediction[:,0], color='#00b34a')\n", "ax.plot([np.min(y_test[:,0]),np.max(y_test[:,0])], [np.min(y_test[:,0]),np.max(y_test[:,0])], ls=\":\", color=\"k\")\n", "ax.set_xlabel(\"real output value\")\n", "ax.set_ylabel(\"predicted output value\")\n", "ax.set_title(\"Bayesian model\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, Bayesian models offer interesting advantages when dealing with missing data. Missing data often occur in industrial environments, e.g. when a sensor output could not be recorded or the output was corrupted." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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", "version": "3.7.9" } }, "nbformat": 4, "nbformat_minor": 4 }