{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "8078f245-817e-4f42-b3de-a6d132816b31",
   "metadata": {},
   "source": [
    "1. Setup Your Notebook\n",
    "Start by importing the required libraries. You’ll need:\n",
    "\n",
    "NumPy and Pandas for data manipulation.\n",
    "\n",
    "Matplotlib for plotting.\n",
    "\n",
    "scikit-learn for building and evaluating the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "execution_state": "idle",
   "id": "8908c8fc-3f0f-462f-93c0-6aa16c2a4732",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import classification_report, confusion_matrix, roc_curve, auc\n",
    "import boto3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e761f133-3a8a-4d4d-9536-3c04bcbe3a57",
   "metadata": {},
   "source": [
    "2. Create or Load Your Data\n",
    "For demonstration purposes, we’ll create a synthetic dataset with two features and a binary outcome. The outcome (denoted as treatment) represents the event of interest."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "execution_state": "idle",
   "id": "92f29216-32db-4ad2-91a6-ef1f8aa2e0d5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         age        income  treatment\n",
      "0  44.967142  80990.331549          1\n",
      "1  38.617357  73869.505244          1\n",
      "2  46.476885  60894.455549          1\n",
      "3  55.230299  50295.948334          1\n",
      "4  37.658466  70473.349704          1\n"
     ]
    }
   ],
   "source": [
    "# Setting a seed for reproducibility\n",
    "np.random.seed(42)\n",
    "\n",
    "# Generate 1000 samples\n",
    "n_samples = 1000\n",
    "\n",
    "# Create two features (e.g., age and income)\n",
    "age = np.random.normal(40, 10, n_samples)   # Normally distributed around 40\n",
    "income = np.random.normal(60000, 15000, n_samples)  # Normally distributed around 60k\n",
    "\n",
    "# Generate an outcome with some relationship to age and income\n",
    "# Using a logistic function: P(treatment) = 1 / (1 + exp(-(β0 + β1*age + β2*income)))\n",
    "# Here, we define coefficients for simulation purposes.\n",
    "beta0 = -15\n",
    "beta1 = 0.2\n",
    "beta2 = 0.0001\n",
    "\n",
    "# Calculate probabilities\n",
    "linear_combination = beta0 + beta1 * age + beta2 * income\n",
    "probability = 1 / (1 + np.exp(-linear_combination))\n",
    "\n",
    "# Generate binary outcome (treatment) based on the probability\n",
    "treatment = np.random.binomial(1, probability)\n",
    "\n",
    "# Create a DataFrame\n",
    "data = pd.DataFrame({\n",
    "    'age': age,\n",
    "    'income': income,\n",
    "    'treatment': treatment\n",
    "})\n",
    "\n",
    "print(data.head())\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7df6dc31-68ac-4388-ba02-48f5d3ecabb4",
   "metadata": {},
   "source": [
    "3. Split the Data for Training and Testing\n",
    "To evaluate your model’s performance, split the data into training and testing sets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "execution_state": "idle",
   "id": "2a1eca95-87b6-4a1f-b697-b85441f56464",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data[['age', 'income']]  # Predictors\n",
    "y = data['treatment']        # Outcome\n",
    "\n",
    "# Split data: 70% for training and 30% for testing\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0e83b14-d0ab-47fe-98e3-98768fac1b0d",
   "metadata": {},
   "source": [
    "4. Build the Propensity Model (Logistic Regression)\n",
    "Instantiate the logistic regression model, fit it on the training data, and then predict probabilities on the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "execution_state": "idle",
   "id": "b52f9dcd-2fe7-43a9-a224-c13d1d97e411",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Initialize logistic regression model\n",
    "model = LogisticRegression(solver='liblinear')\n",
    "\n",
    "# Fit the model on the training data\n",
    "model.fit(X_train, y_train)\n",
    "\n",
    "# Get predicted probabilities for the test set (propensity scores)\n",
    "y_proba = model.predict_proba(X_test)[:, 1]\n",
    "\n",
    "# Convert the probabilities to a binary prediction (using 0.5 as the threshold)\n",
    "y_pred = (y_proba >= 0.5).astype(int)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "755c0494-01a5-4acc-95d8-8bf9c23b5ca6",
   "metadata": {},
   "source": [
    "5. Evaluate the Model\n",
    "Evaluate the model by looking at a confusion matrix, a classification report, and by plotting an ROC curve."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "execution_state": "idle",
   "id": "785aa539-e868-4c2a-b101-f00f6dc1eea4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion Matrix:\n",
      "[[147  47]\n",
      " [ 83  23]]\n",
      "\n",
      "Classification Report:\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.64      0.76      0.69       194\n",
      "           1       0.33      0.22      0.26       106\n",
      "\n",
      "    accuracy                           0.57       300\n",
      "   macro avg       0.48      0.49      0.48       300\n",
      "weighted avg       0.53      0.57      0.54       300\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAIjCAYAAAAQgZNYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACKH0lEQVR4nOzdd1hT59sH8G8IhCVLGSKiqHUvnNSJgxZtXb9WwY3bWhx1b3Fr3Vr3RJy4a6vVuvdEcU/cC0GULSN53j98SY0EJBAIge/nunK1OXnOc+4kBm6e3Oc+EiGEABERERGRHjLQdQBERERERJnFZJaIiIiI9BaTWSIiIiLSW0xmiYiIiEhvMZklIiIiIr3FZJaIiIiI9BaTWSIiIiLSW0xmiYiIiEhvMZklIiIiIr3FZJYoD3JxcUG3bt10HUa+06hRIzRq1EjXYXzVxIkTIZFIEB4erutQch2JRIKJEydqZa4nT55AIpHA399fK/MBwMWLFyGTyfD06VOtzalt7du3h5eXl67DoHyEySyRhvz9/SGRSJQ3Q0NDODk5oVu3bnj58qWuw8vVYmNjMWXKFFSpUgVmZmawsrJCgwYNEBAQAH25svbt27cxceJEPHnyRNehpCKXy7Fu3To0atQIBQsWhLGxMVxcXNC9e3dcvnxZ1+FpxebNm7FgwQJdh6EiJ2MaO3YsOnTogOLFiyu3NWrUSOVnkqmpKapUqYIFCxZAoVConefdu3cYPnw4ypYtCxMTExQsWBCenp74+++/0zx2VFQUJk2ahKpVq6JAgQIwNTVFpUqVMHLkSLx69Uo5buTIkdi5cyeuXbumvSdOlA6J0JffIES5hL+/P7p3747JkyejRIkS+PjxI86fPw9/f3+4uLjg5s2bMDEx0WmMCQkJMDAwgJGRkU7j+FxoaCiaNm2KO3fuoH379nB3d8fHjx+xc+dOnDx5Et7e3ti0aROkUqmuQ03Xjh070K5dOxw7dizVKmxiYiIAQCaT5Xhc8fHx+Omnn3DgwAE0bNgQLVu2RMGCBfHkyRNs27YN9+/fx7Nnz1C0aFFMnDgRkyZNQlhYGGxtbXM81qxo0aIFbt68mW1/THz8+BGGhoYwNDTMckxCCCQkJMDIyEgr/66Dg4NRrVo1nD17FnXq1FFub9SoEUJCQjBjxgwAQHh4ODZv3oxLly5hzJgxmDZtmso89+7dQ9OmTREWFobu3bujZs2a+PDhAzZt2oTg4GAMGzYMs2fPVtnn0aNH8PDwwLNnz9CuXTvUr18fMpkM169fx5YtW1CwYEHcv39fOd7NzQ1ly5ZFQEBAlp830VcJItLIunXrBABx6dIlle0jR44UAERgYKCOItOt+Ph4IZfL03zc09NTGBgYiD///DPVY8OGDRMAxMyZM7MzRLViYmI0Gr99+3YBQBw7dix7AsokX19fAUDMnz8/1WPJycli9uzZ4vnz50IIIfz8/AQAERYWlm3xKBQKERcXp/V5f/zxR1G8eHGtzimXy0V8fHym98+OmNQZOHCgKFasmFAoFCrb3d3dRcWKFVW2xcfHi+LFiwsLCwuRnJys3J6YmCgqVaokzMzMxPnz51X2SU5OFt7e3gKA2Lp1q3J7UlKSqFq1qjAzMxOnTp1KFVdkZKQYM2aMyrY5c+YIc3NzER0dnennS5RRTGaJNJRWMvv3338LAGL69Okq2+/cuSN+/vlnYWNjI4yNjUWNGjXUJnTv378Xv/32myhevLiQyWTCyclJdOnSRSXh+Pjxo5gwYYIoVaqUkMlkomjRomL48OHi48ePKnMVL15c+Pj4CCGEuHTpkgAg/P39Ux3zwIEDAoD466+/lNtevHghunfvLuzt7YVMJhMVKlQQa9asUdnv2LFjAoDYsmWLGDt2rChSpIiQSCTi/fv3al+zc+fOCQCiR48eah9PSkoSpUuXFjY2NsoE6PHjxwKAmD17tpg3b54oVqyYMDExEQ0bNhQ3btxINUdGXueU9+748eOiX79+ws7OTlhbWwshhHjy5Ino16+fKFOmjDAxMREFCxYUbdu2FY8fP061/5e3lMTW3d1duLu7p3qdAgMDxdSpU4WTk5MwNjYWTZo0EQ8ePEj1HBYvXixKlCghTExMRK1atcTJkydTzanO8+fPhaGhofjuu+/SHZciJZl98OCB8PHxEVZWVsLS0lJ069ZNxMbGqoxdu3ataNy4sbCzsxMymUyUL19eLF26NNWcxYsXFz/++KM4cOCAqFGjhjA2NlYm1hmdQwgh9u/fLxo2bCgKFCggLCwsRM2aNcWmTZuEEJ9e3y9f+8+TyIx+PgAIX19fsXHjRlGhQgVhaGgodu/erXzMz89POTYqKkoMGjRI+bm0s7MTHh4eIigo6KsxpfwbXrduncrx79y5I9q1aydsbW2FiYmJKFOmTKpkUJ1ixYqJbt26pdquLpkVQoi2bdsKAOLVq1fKbVu2bBEAxOTJk9Ue48OHD8La2lqUK1dOuW3r1q0CgJg2bdpXY0xx7do1AUDs2rUrw/sQZVbGv0chonSlfMVoY2Oj3Hbr1i3Uq1cPTk5OGDVqFMzNzbFt2za0adMGO3fuxP/+9z8AQExMDBo0aIA7d+6gR48eqF69OsLDw7F37168ePECtra2UCgUaNWqFU6fPo0+ffqgfPnyuHHjBubPn4/79+9jz549auOqWbMmSpYsiW3btsHHx0flscDAQNjY2MDT0xPAp1KAb7/9FhKJBP3794ednR3++ecf9OzZE1FRUfjtt99U9p8yZQpkMhmGDRuGhISENL9e/+uvvwAAXbt2Vfu4oaEhOnbsiEmTJuHMmTPw8PBQPhYQEIDo6Gj4+vri48ePWLhwIZo0aYIbN27AwcFBo9c5xa+//go7OztMmDABsbGxAIBLly7h7NmzaN++PYoWLYonT55g2bJlaNSoEW7fvg0zMzM0bNgQAwcOxKJFizBmzBiUL18eAJT/TcvMmTNhYGCAYcOGITIyErNmzUKnTp1w4cIF5Zhly5ahf//+aNCgAQYPHownT56gTZs2sLGxQdGiRdOd/59//kFycjK6dOmS7rgveXl5oUSJEpgxYwauXLmC1atXw97eHr///rtKXBUrVkSrVq1gaGiIv/76C7/++isUCgV8fX1V5rt37x46dOiAvn37onfv3ihbtqxGc/j7+6NHjx6oWLEiRo8eDWtra1y9ehUHDhxAx44dMXbsWERGRuLFixeYP38+AKBAgQIAoPHn4+jRo9i2bRv69+8PW1tbuLi4qH2NfvnlF+zYsQP9+/dHhQoV8O7dO5w+fRp37txB9erV041JnevXr6NBgwYwMjJCnz594OLigpCQEPz111+pygE+9/LlSzx79gzVq1dPc8yXUk5As7a2Vm772mfRysoKrVu3xvr16/Hw4UN888032Lt3LwBo9O+rQoUKMDU1xZkzZ1J9/oi0TtfZNJG+SVmdO3z4sAgLCxPPnz8XO3bsEHZ2dsLY2Fj5Va4QQjRt2lRUrlxZZWVIoVCIunXritKlSyu3TZgwIc1VjJSvFDds2CAMDAxSfc23fPlyAUCcOXNGue3zlVkhhBg9erQwMjISERERym0JCQnC2tpaZbW0Z8+ewtHRUYSHh6sco3379sLKykq5apqy4liyZMkMfZXcpk0bASDNlVshhNi1a5cAIBYtWiSE+G9Vy9TUVLx48UI57sKFCwKAGDx4sHJbRl/nlPeufv36Kl+9CiHUPo+UFeWAgADltvTKDNJamS1fvrxISEhQbl+4cKEAoFxhTkhIEIUKFRK1atUSSUlJynH+/v4CwFdXZgcPHiwAiKtXr6Y7LkXKyuyXK+X/+9//RKFChVS2qXtdPD09RcmSJVW2FS9eXAAQBw4cSDU+I3N8+PBBWFhYCDc3t1Rf+X/+tXpaX+lr8vkAIAwMDMStW7dSzYMvVmatrKyEr69vqnGfSysmdSuzDRs2FBYWFuLp06dpPkd1Dh8+nOpblBTu7u6iXLlyIiwsTISFhYm7d++K4cOHCwDixx9/VBnr6uoqrKys0j3WvHnzBACxd+9eIYQQ1apV++o+6pQpU0Y0b95c4/2INMVuBkSZ5OHhATs7Ozg7O6Nt27YwNzfH3r17latoEREROHr0KLy8vBAdHY3w8HCEh4fj3bt38PT0xIMHD5TdD3bu3ImqVauqXcGQSCQAgO3bt6N8+fIoV66ccq7w8HA0adIEAHDs2LE0Y/X29kZSUhJ27dql3Pbvv//iw4cP8Pb2BvDpZJWdO3eiZcuWEEKoHMPT0xORkZG4cuWKyrw+Pj4wNTX96msVHR0NALCwsEhzTMpjUVFRKtvbtGkDJycn5f3atWvDzc0N+/fvB6DZ65yid+/eqU7I+fx5JCUl4d27d/jmm29gbW2d6nlrqnv37iqr1g0aNADw6aQaALh8+TLevXuH3r17q5x41KlTJ5WV/rSkvGbpvb7q/PLLLyr3GzRogHfv3qm8B5+/LpGRkQgPD4e7uzsePXqEyMhIlf1LlCihXOX/XEbmOHToEKKjozFq1KhUJ1CmfAbSo+nnw93dHRUqVPjqvNbW1rhw4YLK2fqZFRYWhpMnT6JHjx4oVqyYymNfe47v3r0DgDT/Pdy9exd2dnaws7NDuXLlMHv2bLRq1SpVW7Do6Oiv/jv58rMYFRWl8b+tlFjZ/o1yAssMiDJpyZIlKFOmDCIjI7F27VqcPHkSxsbGyscfPnwIIQTGjx+P8ePHq53j7du3cHJyQkhICH7++ed0j/fgwQPcuXMHdnZ2ac6VlqpVq6JcuXIIDAxEz549AXwqMbC1tVX+sg8LC8OHDx+wcuVKrFy5MkPHKFGiRLoxp0j5RRgdHa3ylefn0kp4S5cunWpsmTJlsG3bNgCavc7pxR0fH48ZM2Zg3bp1ePnypUqrsC+TNk19mbikJCTv378HAGXP0G+++UZlnKGhYZpff3/O0tISwH+voTbiSpnzzJkz8PPzw7lz5xAXF6cyPjIyElZWVsr7af17yMgcISEhAIBKlSpp9BxSaPr5yOi/3VmzZsHHxwfOzs6oUaMGfvjhB3Tt2hUlS5bUOMaUP14y+xwBpNnCzsXFBatWrYJCoUBISAimTZuGsLCwVH8YWFhYfDXB/PKzaGlpqYxd01gz8ocIUVYxmSXKpNq1a6NmzZoAPq0e1q9fHx07dsS9e/dQoEABZX/HYcOGqV2tAlInL+lRKBSoXLky5s2bp/ZxZ2fndPf39vbGtGnTEB4eDgsLC+zduxcdOnRQrgSmxNu5c+dUtbUpqlSponI/I6uywKea0j179uD69eto2LCh2jHXr18HgAytln0uM6+zurgHDBiAdevW4bfffkOdOnVgZWUFiUSC9u3bp9mrM6PSasuUVmKiqXLlygEAbty4AVdX1wzv97W4QkJC0LRpU5QrVw7z5s2Ds7MzZDIZ9u/fj/nz56d6XdS9rprOkVmafj4y+m/Xy8sLDRo0wO7du/Hvv/9i9uzZ+P3337Fr1y40b948y3FnVKFChQD89wfQl8zNzVVqzevVq4fq1atjzJgxWLRokXJ7+fLlERwcjGfPnqX6YybFl5/FcuXK4erVq3j+/PlXf8587v3792r/GCXSNiazRFoglUoxY8YMNG7cGIsXL8aoUaOUKzdGRkYqv2TUKVWqFG7evPnVMdeuXUPTpk0ztdrh7e2NSZMmYefOnXBwcEBUVBTat2+vfNzOzg4WFhaQy+VfjVdTLVq0wIwZMxAQEKA2mZXL5di8eTNsbGxQr149lccePHiQavz9+/eVK5aavM7p2bFjB3x8fDB37lzlto8fP+LDhw8q47JjpSmlAf7Dhw/RuHFj5fbk5GQ8efIk1R8RX2revDmkUik2btyo8Ulg6fnrr7+QkJCAvXv3qiQ+6ZW0ZHaOUqVKAQBu3ryZ7h95ab3+Wf18pMfR0RG//vorfv31V7x9+xbVq1fHtGnTlMlsRo+X8m/1a591dVL+YHn8+HGGxlepUgWdO3fGihUrMGzYMOVr36JFC2zZsgUBAQEYN25cqv2ioqLw559/oly5csr3oWXLltiyZQs2btyI0aNHZ+j4ycnJeP78OVq1apWh8URZwZpZIi1p1KgRateujQULFuDjx4+wt7dHo0aNsGLFCrx+/TrV+LCwMOX///zzz7h27Rp2796dalzKKpmXlxdevnyJVatWpRoTHx+vPCs/LeXLl0flypURGBiIwMBAODo6qiSWUqkUP//8M3bu3Kn2l+3n8Wqqbt268PDwwLp169ReYWjs2LG4f/8+RowYkWrFbM+ePSo1rxcvXsSFCxeUiYQmr3N6pFJpqpXSP/74A3K5XGWbubk5AKRKcrOiZs2aKFSoEFatWoXk5GTl9k2bNqW5Evc5Z2dn9O7dG//++y/++OOPVI8rFArMnTsXL1680CiulJXbL0su1q1bp/U5vv/+e1hYWGDGjBn4+PGjymOf72tubq627COrnw915HJ5qmPZ29ujSJEiSEhI+GpMX7Kzs0PDhg2xdu1aPHv2TOWxr63SOzk5wdnZWaMruY0YMQJJSUkqq9Vt27ZFhQoVMHPmzFRzKRQK9OvXD+/fv4efn5/KPpUrV8a0adNw7ty5VMeJjo7G2LFjVbbdvn0bHz9+RN26dTMcL1FmcWWWSIuGDx+Odu3awd/fH7/88guWLFmC+vXro3LlyujduzdKliyJ0NBQnDt3Di9evFBe7nH48OHKK0v16NEDNWrUQEREBPbu3Yvly5ejatWq6NKlC7Zt24ZffvkFx44dQ7169SCXy3H37l1s27YNBw8eVJY9pMXb2xsTJkyAiYkJevbsCQMD1b9nZ86ciWPHjsHNzQ29e/dGhQoVEBERgStXruDw4cOIiIjI9GsTEBCApk2bonXr1ujYsSMaNGiAhIQE7Nq1C8ePH4e3tzeGDx+ear9vvvkG9evXR79+/ZCQkIAFCxagUKFCGDFihHJMRl/n9LRo0QIbNmyAlZUVKlSogHPnzuHw4cPKr3dTuLq6QiqV4vfff0dkZCSMjY3RpEkT2NvbZ/q1kclkmDhxIgYMGIAmTZrAy8sLT548gb+/P0qVKpWhlb+5c+ciJCQEAwcOxK5du9CiRQvY2Njg2bNn2L59O+7evauyEp8R33//PWQyGVq2bIm+ffsiJiYGq1atgr29vdo/HLIyh6WlJebPn49evXqhVq1a6NixI2xsbHDt2jXExcVh/fr1AIAaNWogMDAQQ4YMQa1atVCgQAG0bNlSK5+PL0VHR6No0aJo27at8hKuhw8fxqVLl1RW8NOKSZ1Fixahfv36qF69Ovr06YMSJUrgyZMn2LdvH4KDg9ONp3Xr1ti9e3eGa1ErVKiAH374AatXr8b48eNRqFAhyGQy7NixA02bNkX9+vVVrgC2efNmXLlyBUOHDlX5t2JkZIRdu3bBw8MDDRs2hJeXF+rVqwcjIyPcunVL+a3K563FDh06BDMzM3z33XdfjZMoy3K+gQKRfkvroglCfLqSUKlSpUSpUqWUrZ9CQkJE165dReHChYWRkZFwcnISLVq0EDt27FDZ9927d6J///7CyclJ2fDdx8dHpU1WYmKi+P3330XFihWFsbGxsLGxETVq1BCTJk0SkZGRynFftuZK8eDBA2Vj99OnT6t9fqGhocLX11c4OzsLIyMjUbhwYdG0aVOxcuVK5ZiUllPbt2/X6LWLjo4WEydOFBUrVhSmpqbCwsJC1KtXT/j7+6dqTfT5RRPmzp0rnJ2dhbGxsWjQoIG4du1aqrkz8jqn9969f/9edO/eXdja2ooCBQoIT09PcffuXbWv5apVq0TJkiWFVCrN0EUTvnyd0mqmv2jRIlG8eHFhbGwsateuLc6cOSNq1KghmjVrloFX99MVnFavXi0aNGggrKyshJGRkShevLjo3r27StuutK4AlvL6fH6hiL1794oqVaoIExMT4eLiIn7//Xexdu3aVONSLpqgTkbnSBlbt25dYWpqKiwtLUXt2rXFli1blI/HxMSIjh07Cmtr61QXTcjo5wP/f9EEdfBZa66EhAQxfPhwUbVqVWFhYSHMzc1F1apVU13wIa2Y0nqfb968Kf73v/8Ja2trYWJiIsqWLSvGjx+vNp7PXblyRQBI1X4srYsmCCHE8ePHU7UbE0KIt2/fiiFDhohvvvlGGBsbC2tra+Hh4aFsx6XO+/fvxYQJE0TlypWFmZmZMDExEZUqVRKjR48Wr1+/Vhnr5uYmOnfu/NXnRKQNEiG0dAYCEZEWPXnyBCVKlMDs2bMxbNgwXYejEwqFAnZ2dvjpp5/Ufn1O+U/Tpk1RpEgRbNiwQdehpCk4OBjVq1fHlStXNDohkSizWDNLRJQLfPz4MVXdZEBAACIiItCoUSPdBEW5zvTp0xEYGKhs55YbzZw5E23btmUiSzmGNbNERLnA+fPnMXjwYLRr1w6FChXClStXsGbNGlSqVAnt2rXTdXiUS7i5uSExMVHXYaRr69atug6B8hkms0REuYCLiwucnZ2xaNEiREREoGDBgujatStmzpypcvUwIiJSxZpZIiIiItJbrJklIiIiIr3FZJaIiIiI9Fa+q5lVKBR49eoVLCwssuWylERERESUNUIIREdHo0iRIqku8POlfJfMvnr1Cs7OzroOg4iIiIi+4vnz5yhatGi6Y/JdMmthYQHg04tjaWmp42iIiIiI6EtRUVFwdnZW5m3pyXfJbEppgaWlJZNZIiIiolwsIyWhPAGMiIiIiPQWk1kiIiIi0ltMZomIiIhIbzGZJSIiIiK9xWSWiIiIiPQWk1kiIiIi0ltMZomIiIhIbzGZJSIiIiK9xWSWiIiIiPQWk1kiIiIi0ltMZomIiIhIbzGZJSIiIiK9xWSWiIiIiPQWk1kiIiIi0ls6TWZPnjyJli1bokiRIpBIJNizZ89X9zl+/DiqV68OY2NjfPPNN/D398/2OImIiIgod9JpMhsbG4uqVatiyZIlGRr/+PFj/Pjjj2jcuDGCg4Px22+/oVevXjh48GA2R0pEREREuZGhLg/evHlzNG/ePMPjly9fjhIlSmDu3LkAgPLly+P06dOYP38+PD09sytMIiIionxHCIH4JDkAIDk5GYaGhjA1kkIikeg4MlV6VTN77tw5eHh4qGzz9PTEuXPn0twnISEBUVFRKjciIiIiSpsQAm2Xn0P58Qfg3HoIbIuVRbkRO5XJbW6iV8nsmzdv4ODgoLLNwcEBUVFRiI+PV7vPjBkzYGVlpbw5OzvnRKhEREREeis+SY5L918i/K85iDjwB5LePUP01f26DkstvUpmM2P06NGIjIxU3p4/f67rkIiIiIhytWvXgvF6/W+Iu3MCUqkUk6dNx/ODq2BqJNV1aKnotGZWU4ULF0ZoaKjKttDQUFhaWsLU1FTtPsbGxjA2Ns6J8IiIiIhync9rXzMydvXKFRg5fBiSExIgtbDDv3/tQBP3htkcZebpVTJbp04d7N+vusR96NAh1KlTR0cREREREeVeKbWvQU/fZ2h8UsRLvFozGFAkw/Sb2ij0w2/4tk7dbI4ya3SazMbExODhw4fK+48fP0ZwcDAKFiyIYsWKYfTo0Xj58iUCAgIAAL/88gsWL16MESNGoEePHjh69Ci2bduGffv26eopEBEREeVa8UnyDCeyAGBU0Ak2TXoCCjksarZGLZeCubK04HM6TWYvX76Mxo0bK+8PGTIEAODj4wN/f3+8fv0az549Uz5eokQJ7Nu3D4MHD8bChQtRtGhRrF69mm25iIiIiL7i8jgPmMlUE1MhBJYvXYK69eujalXX/9/6X16VG1txfUkihBC6DiInRUVFwcrKCpGRkbC0tNR1OERERERaoa42Ni5RjppTDwMAbk/2hJnsv3XM9+/fo2fPnti9ezdKly6Nq1evwtzcPEdjTosm+Zpe1cwSERERUWqa1sZeuHAB3t7eePr0KWQyGQYOHAgzM7NsjjJ75PnWXERERER53ddqY2sWt4GpkRRCCMydOxf169fH06dPUapUKZw9exb9+/fP9eUEaeHKLBEREVEeoq421tRIitjYWHTo0AF///03AMDLywurVq3S+7JLJrNEREREeYiZTKpSG6vcbmaGhIQEGBsbY+HChejTp4/ersZ+jsksERERUR6lUCiQlJQEY2NjGBgYYMOGDXjz5g2qVq2q69C0hjWzRERERHnQ27dv8cMPP2DAgAHKbQ4ODnkqkQWYzBIRERHlOSdOnICrqysOHjyIjRs34vHjx7oOKdswmSUiIiLSU0IIxCUmIy7xU39ZoZBj5vRpaNKkCV6/fo3y5cvj4sWLKFGihI4jzT6smSUiIiLSQ1/2lpXHvEf433Mw5ek1AEC3bt2wePHiXHMhhOzCZJaIiIhID33eW1YIBUIDxyIp/BnMzMywbNkydO3aVccR5gyWGRARERHpuaDx32Prqj9QpUoVBAUF5ZtEFmAyS0RERKRXUupkHz19jo/PbwL41Fv2pzatEBQUhHLlyuk4wpzFMgMiIiIiPZFSJ3v62GGE75sHyJPh2P0P5eOGhvkvtct/z5iIiIhIT0XHJ+BwwHxEnd8BADCyL4lKjuYwNZJ+Zc+8i8ksERERUSYJIRCfJM+RY714/hxdOndC1PlzAIDuvftizpw5sLEwzxOXpc0sJrNEREREmfBla6zsFBdyCe/+ngfFx2hIZGYo1HwgFi+eAjMZUzm+AkRERESZ8HlrrGw/VsglKD5GQ1a4NGxbj0SdquXzdWnB55jMEhEREWXR5XEeMJNlX3L5cYw7li5eDN8BA2BsbAxTI2m+Li34HJNZIiIiIjW+Vg+bcglZ4FNrLG1+5b9nzx5s3LgRgYGBkEqlMJMVwLgxo7Q2f17CZJaIiIjoCzlZD/u5hIQEjBgxAosWLQIArFmzBn369MnRGPQNk1kiIiKiL2hSD1uzuI1W6ldDQkLg7e2NoKAgAMCwYcPQvXv3LM+b1zGZJSIiIkrH1+phtVG/un37dvTq1QtRUVEoWLAgAgIC8OOPP2ZpzvyCySwRERHlaZnpBZud9bBfmjFjBsaMGQMAqFevHrZs2QJnZ+dsO15ew2SWiIiI8ixd1b5qokWLFpg6dSoGDRqEyZMn58tL0mYFXy0iIiLKs7LaC1Zb9bBfun//PsqUKQMAqFy5Mh4+fAhHR0etHyc/YDJLRERE+UJmesFqu59rfHw8Bg0ahHXr1uHUqVP49ttvAYCJbBYwmSUiIiK9pctesJq6c+cOvLy8cPPmTUgkEly8eFGZzFLmMZklIiIivaQP9bAp1q9fj19//RVxcXFwcHDApk2b0LRpU12HlScY6DoAIiIioszQRS9YTcXGxqJbt27o1q0b4uLi0LRpUwQHBzOR1SKuzBIREZHey4lesJmxdetWrF+/HgYGBpg0aRJGjx4NqTTnk+q8jMksERER6ZWUOtncVA+blh49euDixYvo2LEj3N3ddR1OnpT73nUiIiKiNOT2Otno6GhMmTIF48ePh4WFBSQSCVasWKHrsPI0JrNERESkN9TVyeqqHvZL165dg5eXF+7fv4/Q0FCsX79e1yHlC0xmiYiISC+l1Mnqqh42hRACK1aswG+//YaEhAQULVoUffr00Vk8+Q2TWSIiIsr1cmudbGRkJPr06YNt27YB+HRpWn9/fxQqVEinceUnTGaJiIgoV8utdbK3bt1C69atERISAkNDQ/z+++8YPHiwTleJ8yMms0RERJSr5dY6WVtbW8TExKB48eIIDAyEm5ubTuPJr5jMEhERkd7QdZ1sfHw8TE1NAQAODg7Yv38/SpQoARsbmxyPhT7hFcCIiIhIb6TUyeoikb1w4QLKly+PrVu3KrdVr16diayOMZklIiIiSocQAvPmzUP9+vXx9OlT/P7771AoFLoOi/4fk1kiIiKiNLx79w6tWrXC0KFDkZycjHbt2uH48eMwMGAKlVvwnSAiIiJS4+zZs6hWrRr+/vtvGBsbY9myZQgMDISVlZWuQ6PP8AQwIiIiypXU9ZbNKY8fP4a7uzuSk5NRunRpbNu2Da6urjkeB30dk1kiIiLKdXTdW7ZEiRIYNGgQXr9+jeXLl8PCwkIncdDXMZklIiKiXEcXvWVPnDiBEiVKoFixYgCA33//HQYGBrwIQi7HZJaIiIhytezuLSuXyzF9+nRMnDgRbm5uOHHiBIyMjCCV6vaiDJQxTGaJiIgoV0vpLZsdQkND0alTJxw5cgQAUKZMGSQlJcHIyChbjkfax2SWiIiI8qWjR4+iY8eOCA0NhZmZGZYuXQofHx9dh0UaYmsuIiIiylfkcjn8/Pzg4eGB0NBQVKpUCZcuXWIiq6eYzBIREVG+kpSUhD179kAIgV69euHChQuoUKGCrsOiTGKZAREREelESh9ZdbKzt6yJiQm2bduGoKAgdOzYMduOQzmDySwRERHluJzsI5ucnIzx48fD3Nwc48aNAwCULVsWZcuWzfZjU/ZjMktEREQ5Tl0fWXWy2lv2+fPn6NChA86cOQMDAwN4e3ujdOnSmZ6Pch8ms0RERKRTKX1k1clKb9l9+/aha9euiIiIgKWlJVatWsVENg9iMktEREQ5JqVO9vOaWG33kU1KSsKYMWMwZ84cAECNGjUQGBiIUqVKae0YlHswmSUiIqIckRN1skIIeHp64tixYwCAgQMHYtasWTA2Ns62Y5JusTUXERER5Qh1dbJZrYn9kkQigbe3N6ytrbFr1y4sXLiQiWwex5VZIiIiynEpdbJZqYlNkZCQgBcvXijLCPr06YM2bdrAwcFBG6FSLseVWSIiIspxKXWyWU1kHz16hHr16qFp06Z4//7Tqq9EImEim48wmSUiIiK9tGPHDlSrVg1BQUGIjo7G/fv3dR0S6QCTWSIiItIrHz9+hK+vL9q1a4eoqCjUq1cPwcHBcHNz03VopANMZomIiEhvPHjwAHXq1MHSpUsBAKNGjcKxY8fg7Oys48hIV3gCGBEREWldSj/Zz33eWzazJkyYgODgYNja2mLDhg1o1qxZluck/cZkloiIiLQqO/vJLl68GBKJBLNnz4aTk5PW5yf9wzIDIiIi0ip1/WQ/p0lv2Tt37sDPzw9CCABAoUKFsHnzZiaypMSVWSIiIso2Kf1kP5fR3rIBAQHo168f4uLiUKpUKXTt2jW7wiQ9xmSWiIiIsk1KP1lNxMbGon///vD39wcANGnSBN9//302REd5AcsMiIiIKNe4efMmatWqBX9/fxgYGGDy5Mn4999/UbhwYV2HRrkUV2aJiIgoV9iyZQt69uyJ+Ph4ODo6YvPmzWjUqJGuw6JcjiuzRERElCvY29vj48eP+P777xEcHMxEljKEK7NERESkEXU9ZD+nST/Z2NhYmJubAwCaNm2KEydOoF69ejAw4HobZQyTWSIiIsowbfWQFUJgxYoVmDBhAs6ePYtvvvkGANCgQQNthEn5CP/sISIiogz7Wg/Zz6XVTzYqKgrt27dHv379EBYWhhUrVmg7TMpHdL4yu2TJEsyePRtv3rxB1apV8ccff6B27dppjl+wYAGWLVuGZ8+ewdbWFm3btsWMGTNgYmKSg1ETERGRuh6yn1PXTzYoKAje3t4ICQmBoaEhZs6cicGDB2d3qJSH6TSZDQwMxJAhQ7B8+XK4ublhwYIF8PT0xL1792Bvb59q/ObNmzFq1CisXbsWdevWxf3799GtWzdIJBLMmzdPB8+AiIhIf32t9lWdz+thNekhK4TA4sWLMWzYMCQmJqJ48eLYunUrvv32W42OT/QlnSaz8+bNQ+/evdG9e3cAwPLly7Fv3z6sXbsWo0aNSjX+7NmzqFevHjp27AgAcHFxQYcOHXDhwoUcjZuIiEjfaav2NaP8/f0xcOBAAECbNm2wdu1a2NjY5MixKW/TWc1sYmIigoKC4OHh8V8wBgbw8PDAuXPn1O5Tt25dBAUF4eLFiwCAR48eYf/+/fjhhx/SPE5CQgKioqJUbkRERPmdJrWv6qRVD5uWTp06oX79+li4cCF27drFRJa0Rmcrs+Hh4ZDL5XBwcFDZ7uDggLt376rdp2PHjggPD0f9+vUhhEBycjJ++eUXjBkzJs3jzJgxA5MmTdJq7ERERHnJ12pf1VFXD/s5IQQ2b94MLy8vGBkZQSaT4cSJE2y5RVqnV/+ijh8/junTp2Pp0qW4cuUKdu3ahX379mHKlClp7jN69GhERkYqb8+fP8/BiImIiHK/lNpXTW7pJbIRERFo3bo1OnfujAkTJii3M5Gl7KCzlVlbW1tIpVKEhoaqbA8NDU3z+svjx49Hly5d0KtXLwBA5cqVERsbiz59+mDs2LFqPyTGxsYwNjbW/hMgIiKiVM6ePYv27dvj+fPnkMlkKFasmK5DojxOZ38iyWQy1KhRA0eOHFFuUygUOHLkCOrUqaN2n7i4uFQJq1T66WsRIUT2BUtERETpUigU+P3339GwYUM8f/4cpUuXxoULF9CvXz9dh0Z5nE67GQwZMgQ+Pj6oWbMmateujQULFiA2NlbZ3aBr165wcnLCjBkzAAAtW7bEvHnzUK1aNbi5ueHhw4cYP348WrZsqUxqiYiIKGeFhYXBx8cH//zzDwCgQ4cOWLFiBSwsLHQcGeUHOk1mvb29ERYWhgkTJuDNmzdwdXXFgQMHlCeFPXv2TGUldty4cZBIJBg3bhxevnwJOzs7tGzZEtOmTdPVUyAiItIrKb1lP+8Xm1URERE4efIkTExM8Mcff6Bnz57p1tQSaZNE5LPv56OiomBlZYXIyEhYWlrqOhwiIqIck1Zv2duTPTN88YO0/PnnnyhZsiQqV66cpXmIAM3yNZ5WSERElE+o6y2rab9Y4NPJ2s2aNcPJkyeV21q3bs1ElnRCp2UGREREpBspvWW/1i/2S0eOHEGnTp0QGhqKR48e4c6dOzxvhXSKK7NERER5nBACcYnJKnWyKb1lM5rIyuVy+Pn54bvvvkNoaCgqVqyIPXv2MJElnePKLBERUR6WVp2sJl69eoVOnTrh+PHjAICePXti0aJFMDMz01KURJnHZJaIiCgPy2qd7PPnz1GjRg2EhYXB3NwcK1asQKdOnbIjVKJMYTJLRESUT2SmTrZo0aJo3Lgx7t27h23btqFMmTLZHCWRZpjMEhER5RMpdbJf8+LFCxQoUADW1taQSCRYvXo1DA0NYWpqmgNREmmGJ4ARERGR0r59++Dq6opevXopLxVvYWHBRJZyLSazREREhKSkJAwfPhwtWrTAu3fv8PjxY0RGRuo6LKKvYjJLRESUzz19+hQNGzbEnDlzAAADBgzA2bNnYW1trdvAiDKANbNERER5kBAC8Ulyld6y6uzZswfdu3fHhw8fYGVlhbVr1+Knn37KoSiJso7JLBERUR6T0d6y8fHxGDhwID58+IDatWtj69atKFGiRA5FSaQdLDMgIiLKYzLaW9bU1BRbtmzB0KFDcerUKSaypJe4MktERJSHfdlbdseOHUhISFBe+KBevXqoV6+ejqMkyjwms0RERHmEujrZlN6yHz9+xNChQ7F06VKYmpqiVq1avAAC5QlMZomIiPKA9OpkHzx4AG9vb1y9ehUAMHDgQJYUUJ7BZJaIiCgPSKtO9s+d29GnTx/ExMTA1tYWAQEBaN68uY6iJNI+JrNERER5zOVxHjA1MsDQQQPQccUKAECDBg2wZcsWODk56Tg6Iu1iNwMiIqI8xkwmhbmxEezs7CCRSDBu3DgcPXqUiSzlSVyZJSIiykMUifHK//fz88MPP/yAOnXq6DAiouzFlVkiIqI8IDY2FuH7FyB0y2gkJCQAAAwNDZnIUp7HZJaIiEjP3bp1C+716iL2xmEkhj7CyRMndB0SUY5hmQEREVEuktIrNqNjA9b7Y+hvgxAfHw9pgYKwbTkM333/fTZHSZR7MJklIiLKJdLrFfslRUIcIv5ditjbxwEAJi7VYNtiKKTm1tkbJFEuw2SWiIgol1DXKzYt7w4uQdydE4DEANYNOsPy27aQSAxQs7gNTI2k2RwpUe7BZJaIiCgXujzOA2aytJPSx91Ko93PP2HR4sWoW6++crupkRQSiSQnQiTKFZjMEhER5UJmMinMZP/9mo6KisKBAwfg5eUFAKhYrgxu3rgOAwOey035G5NZIiKiXO7KlSvw8vJCSEgIrKys4OnpCQBMZInA1lxERES5lhACixcvRp06dRASEoJixYrByspK12ER5SpcmSUiIsqFPnz4gC79+mLXrl0AgFatWmHdunUoWLCgjiMjyl2YzBIREeUyCa/vo57bADx58hhGRkaYPXs2Bg4cyBO7iNRgMktERJTLJL17jjdPHqNEiRIIDAxErVq1dB0SUa7FZJaIiCgXEEIo/79ApaYY71kSPl06w9raWndBEekBngBGRESkY2fPnkW9evUQHh6u3Na77y9MZIkygMksERGRjigUCsyaNQsNGzbEuXPnMNlvgq5DItI7TGaJiIh0ICwsDC1atMDIkSMhl8vRvn17TJ0xU9dhEekdJrNEREQ57OTJk3B1dcU///wDExMTrFy5Eps3b4alpaWuQyPSOzwBjIiIKAft3r0bbdu2hUKhQJkyZRGweTMqV66C+CQ54hLlug6PSO8wmSUiIsohQgise2wOA0t7mDqVR/z3v8J7+2tg+2tdh0akt5jMEhERZbPr16+jcuXKiE+S4/rbJBTuOg8GJhZpXgShZnEbmBpJczhKIv3EZJaIiCibyOVyTJkyBZMnT8bixYvRrVcfAIDU1BKXx3nATKY+YTU1kvJqX0QZxGSWiIgoG7x+/RqdOnXCsWPHAADB166r1MSayaQwk/HXMFFW8VNERESkZYcOHULnzp3x9u1bmJubo3zbofjXpjb+nXpY16ER5TlszUVERKQlycnJGDduHDw9PfH27VtUqVIFp86eR1jh2irjWBNLpD1cmSUiItKS69evY+bMmRBCoG/fvpg/fz6E1AjAUwBQ1smyJpZIe5jMEhERaUn16tUxe/ZsFClSBF5eXql6x7JOlkj7+IkiIiLKpKSkJPj5+aFLly4oX748AGDw4MEQQqDt8nMIevpexxES5X2smSUiIsqEZ8+ewd3dHTNmzICXlxeSkpKUj8UnyVMlsqyTJcoeXJklIiLS0N69e9GtWze8f/8eVlZWmDhxIoyMjNSOZZ0sUfbiyiwREVEGJSYmYvDgwWjdujXev3+PGjVr4uyFS2jesjXiEpM/u6Wuk2UiS5Q9uDJLRESUAWFhYfjxxx9x6dIlAIBFzdYIa9QNP6y7D+C+boMjyseYzBIREWWAjY0NTExMYGNjA8PG/WFW2u2r+7BOlij7MZklIiJKQ0JCAiQSCWQyGQwNDbFlyxZEx31EszV3AfxXD5sW1skSZT/WzBIREanx8OFD1KlTByNHjlRuc3JyQrHixZX3U+ph07oxkSXKfkxmiYiIvhAYGIjq1avj6tWr2LhxI8LDw3UdEhGlgcksERHR/4uPj0ffvn3Rvn17REdHo0GDBrh69SpsbW11HRoRpYHJLBEREYC7d+/Czc0NK1euhEQiwdixY3H06FEULVpU16ERUTp4AhgREeV7CQkJ8PDwwMuXL2Fvb4+NGzfiu+++03VYRJQBWVqZ/fjxo7biICIi0hljY2PMnz8fjRs3RnBwMBNZIj2icTKrUCgwZcoUODk5oUCBAnj06BEAYPz48VizZo3WAyQiIsoOt27dwsmTJ5X327VrhyNHjsDR0VGHURGRpjROZqdOnQp/f3/MmjULMplMub1SpUpYvXq1VoMjIiLSNiEE1q1bh1q1aqFt27Z4/fq18jG20iLSPxonswEBAVi5ciU6deoEqfS/RtFVq1bF3bt3tRocERGRNsXExMDHxwc9evRAfHw8XF1dVX6XEZH+0TiZffnyJb755ptU2xUKBZKSkrQSFBERkbZdv34dNWvWxIYNG2BgYIBp06bhwIEDsLe313VoRJQFGiezFSpUwKlTp1Jt37FjB6pVq6aVoIiIiLRFCIGVK1fCzc0N9+7dg5OTE44fP44xY8bAwIAdKon0ncatuSZMmAAfHx+8fPkSCoUCu3btwr179xAQEIC///47O2IkIiLKNIlEgjNnzuDjx49o3rw5AgICeBEEojxE42S2devW+OuvvzB58mSYm5tjwoQJqF69Ov766y+2MiEiolxDCKE8oWvx4sWoWdsN3Xv2goGBAeISkzM9b1yiXFshEpEWSIQQQtdB5KSoqChYWVkhMjISlpaWug6HiIi0TAiBpUuX4ujRo9i+fTskEgnaLj+HoKfvtX6s25M9YSbj9YeItE2TfE3jYqGSJUvi3bt3qbZ/+PABJUuW1HQ6IiIirfnw4QO8vLzQv39/7Nq1C7t370Z8kjxbEtmaxW1gasROCES6pvGfk0+ePIFcnvorloSEBLx8+VIrQREREWnq0qVL8Pb2xuPHj2FkZIRZs2bhp59+QnzSf7+zLo/zgJlMOwmoqZGUfWmJcoEMJ7N79+5V/v/BgwdhZWWlvC+Xy3HkyBG4uLhoNTgiIqKvEUJg4cKFGDFiBJKSklC8uAs2bN6MGjVrIT5JrlLjaiaTsiyAKI/J8Ce6TZs2AD6dFerj46PymJGREVxcXDB37lytBkdERPQ1AwcOxOLFiwEARVzdoXDvhy57I4C9B3UcGRHlhAzXzCoUCigUChQrVgxv375V3lcoFEhISMC9e/fQokWL7IyViIgola5du6JAgQKYt2AhDL8fBgOTAmrHscaVKG9iNwMiItIrCoUC169fh6urq3JbREQETApYosKET6ux6mpjWeNKpD+ytZsBAMTGxmL//v1Yvnw5Fi1apHLT1JIlS+Di4gITExO4ubnh4sWL6Y7/8OEDfH194ejoCGNjY5QpUwb79+/PzNMgIiI9Ex4ejpYtW+Lbb79FcHCwcnvBggVVxqXUxn5+YyJLlDdpXAV/9epV/PDDD4iLi0NsbCwKFiyI8PBwmJmZwd7eHgMHDszwXIGBgRgyZAiWL18ONzc3LFiwAJ6enrh3757aa2UnJibiu+++g729PXbs2AEnJyc8ffoU1tbWmj4NIiLSM6dOnUKHDh3w8uVLGBsb4969eyqrs0SUP2m8Mjt48GC0bNkS79+/h6mpKc6fP4+nT5+iRo0amDNnjkZzzZs3D71790b37t1RoUIFLF++HGZmZli7dq3a8WvXrkVERAT27NmDevXqwcXFBe7u7qhataqmT4OIiPSEQqHA9OnT0bhxY7x8+RJlypTBxYsX4e3trevQiCgX0DiZDQ4OxtChQ2FgYACpVIqEhAQ4Oztj1qxZGDNmTIbnSUxMRFBQEDw8PP4LxsAAHh4eOHfunNp99u7dizp16sDX1xcODg6oVKkSpk+frrbvbYqEhARERUWp3IiISD+8ffsWzZs3x9ixYyGXy9G5c2cEBQWhSpUqug6NiHIJjZNZIyMjGBh82s3e3h7Pnj0DAFhZWeH58+cZnic8PBxyuRwODg4q2x0cHPDmzRu1+zx69Ag7duyAXC7H/v37MX78eMydOxdTp05N8zgzZsyAlZWV8ubs7JzhGImISLc2btyIf//9F6ampli7di0CAgJQoID6bgVElD9pXDNbrVo1XLp0CaVLl4a7uzsmTJiA8PBwbNiwAZUqVcqOGJUUCgXs7e2xcuVKSKVS1KhRAy9fvsTs2bPh5+endp/Ro0djyJAhyvtRUVFMaImI9MRvv/2GkJAQ/Prrr6hYsaKuwyGiXEjjldnp06fD0dERADBt2jTY2NigX79+CAsLw4oVKzI8j62tLaRSKUJDQ1W2h4aGonDhwmr3cXR0RJkyZSCV/tdupXz58njz5g0SExPV7mNsbAxLS0uVGxER5U6vX79Gv379EB8fD+BT+dmSJUuYyBJRmjRema1Zs6by/+3t7XHgwIFMHVgmk6FGjRo4cuSI8upiCoUCR44cQf/+/dXuU69ePWzevBkKhUJZ6nD//n04OjpCJpNlKg4iIsodDh06hM6dO+Pt27cwNDTEH3/8oeuQiEgPZKrPrDpXrlzR+ApgQ4YMwapVq7B+/XrcuXMH/fr1Q2xsLLp37w7g01VdRo8erRzfr18/REREYNCgQbh//z727duH6dOnw9fXV1tPg4iIclhycjLGjRsHT09PvH37FpUrV9bo57oQAnGJyYhLTPtkYCLKuzRamT148CAOHToEmUyGXr16oWTJkrh79y5GjRqFv/76C56enhod3NvbG2FhYZgwYQLevHkDV1dXHDhwQHlS2LNnz5QrsADg7OyMgwcPYvDgwahSpQqcnJwwaNAgjBw5UqPjEhFR7vDy5Ut06NABp06dAgD06dMHCxYsgKmpaYb2F0Kg7fJzCHr6PjvDJKJcLMOXs12zZg169+6NggUL4v379yhUqBDmzZuHAQMGwNvbG4MGDUL58uWzO94s4+VsiYhyhzNnzqBNmzYIDw9HgQIFsGrVKrRv316jOeISk5WXsE1Rs7gNtv9Sh1f8ItJjmuRrGV6ZXbhwIX7//XcMHz4cO3fuRLt27bB06VLcuHEDRYsWzXLQRESUvxQrVgwKhQLVqlVDYGAgSpcunaX5Lo/zgJlMClMjKRNZonwkw8lsSEgI2rVrBwD46aefYGhoiNmzZzORJSKiDIuMjISVlRWAT6VjR48eRdmyZWFiYgIhBOKTNKt7/bxO1kwmhZlM4/OaiUjPZfhTHx8fDzMzMwCARCKBsbGxskUXERHR1/z111/o1q0b1q1bh1atWgGA8nLkrH0loszS6E/Y1atXK6+8kpycDH9/f9ja2qqMGThwoPaiIyIivZeYmIjRo0dj3rx5AIClS5cqk9kU8UnyLCWyNYvbwNRI+vWBRJTnZPgEMBcXl6/WIEkkEjx69EgrgWUXngBGRJRzHj9+jPbt2+PixYsAPl3R6/fff0/VG/zzE7lSal81wTpZorwlW04Ae/LkSVbjIiKifGTXrl3o0aMHIiMjYW1tjRWr1qBFq1ZIBpCcmKwylrWvRJRZ/GlBRERad/XqVfz8888AgG+//RbWPw7HiMvGGHH54Ff2JCLSjNauAEZERJSiWrVq6NevH4YPH44Dh4/iToxxhvZj7SsRaYors0REpBU7duxA/fr1UbhwYQDAkiVLIJFIEPdZScHX6mFZ+0pEmuLKLBERZUl8fDx++eUXtGvXDp06dYJc/l/9a1xistp62LRuTGSJSFNcmSUioky7d+8evLy8cP36dUgkEnz77bcQQrBvLBHlmEytzIaEhGDcuHHo0KED3r59CwD4559/cOvWLa0GR0REudemTZtQo0YNXL9+HXZ2djhw4ACmTZsGQ0NDtX1jWQ9LRNlB42T2xIkTqFy5Mi5cuIBdu3YhJiYGAHDt2jX4+flpPUAiIspd4uLi0KtXL3Tu3BmxsbFo1KgRgoOD8f3336sdf3mcB25P9sT2X+qwjICItE7jZHbUqFGYOnUqDh06pNL0ukmTJjh//rxWgyMiopwjhPj/Gtf0bzEfE3H69BlIJBKMGTcee/cfgLWt/RfjUtfJMpElouygcc3sjRs3sHnz5lTb7e3tER4erpWgiIgoZ2WkxlUIoUxIE+v1h53rB2xKcsWmSYdzKkwiolQ0Xpm1trbG69evU22/evUqnJyctBIUERHlLHU1rikUifEI3zcP0Zf2KLfJ7Fxg6uL61XlZJ0tE2U3jldn27dtj5MiR2L59OyQSCRQKBc6cOYNhw4aha9eu2REjERHloM97wd68eQNdO3bE83t3ITcxQdD6SXBwcMjwXOwbS0TZTeNkdvr06fD19YWzszPkcjkqVKgAuVyOjh07Yty4cdkRIxER5SAzmRSmRlKsXr0aAwcOxMePH1GkSBFs2bIFJZz5DRwR5S4aJ7MymQyrVq3C+PHjcfPmTcTExKBatWooXbp0dsRHREQ5LCoqCj0H+GLr1q0AgGbNmiEgIAB2dnY6joyIKDWNk9nTp0+jfv36KFasGIoVK5YdMRERkY4IeTKaNGyAO3duQyqVYvr06Rg2bBgMDHjBSCLKnTT+6dSkSROUKFECY8aMwe3bt7MjJiIi0hGJ1BBdu3WDs7MzTp48iREjRjCRJaJcTeOfUK9evcLQoUNx4sQJVKpUCa6urpg9ezZevHiRHfEREZGWfdlP9nXYO9y4fU/5+IBBv+HGjRuoW7euDqMkIsoYiRBCZHbnx48fY/PmzdiyZQvu3r2Lhg0b4ujRo9qMT+uioqJgZWWFyMhIWFpa6jocIqIc9WU/2YTXDxD+50xAagjHrvNhYGyG25M9YSbTuAqNiEhrNMnXsvTTqkSJEhg1ahSqVq2K8ePH48SJE1mZjoiIsllKP1khBKKD9uL9sXWAIhlSKwfIY96hdhkn9oUlIr2S6WT2zJkz2LRpE3bs2IGPHz+idevWmDFjhjZjIyKibCD/GIN3+xcg/sGnS5C3at0Gy1augrW1NfvCEpHe0TiZHT16NLZu3YpXr17hu+++w8KFC9G6dWuYmZllR3xERKQBIQTik+RpPn7y9Fm8XjcQ8qi3kMlkmDt3Lnx9fZnAEpHe0jiZPXnyJIYPHw4vLy/Y2tpmR0xERJQJX9bDqhO63Q/yqLcwtHbE0X92o963bjkYIRGR9mmczJ45cyY74iAioixKqYdNj23z3/DhzGY06TIYdd1q51BkRETZJ0PJ7N69e9G8eXMYGRlh79696Y5t1aqVVgIjIqLMuzzOA2YyKc6eOY0jhw9jvN/Ezx5tz9pYIsozMpTMtmnTBm/evIG9vT3atGmT5jiJRAK5PO1aLSIi0r6UOtm4xP9+/poYSrBw7myMHz8ecrkcbrVqpvvzm4hIX2UomVUoFGr/n4iIdEtdnaw89gPatGyBI4cPAQA6d+4MDw8PXYVIRJStNL4CWEBAABISElJtT0xMREBAgFaCIiKijPmyTvbjs+sI3zAIRw4fgqmpKdasWYOAgAAUKFBAh1ESEWUfjZPZ7t27IzIyMtX26OhodO/eXStBERGR5npZ30ZY4Dh8jHyH8uXL49KlS+jRowdrY4koT9M4mRVCqP3B+OLFC1hZWWklKCIi0ly5MqWhUCjQrVs3XLp0CRUrVtR1SERE2S7DrbmqVasGiUQCiUSCpk2bwtDwv13lcjkeP36MZs2aZUuQRESk3ocPH5T//0OLFrh06RJq1qypu4CIiHJYhpPZlLNgg4OD4enpqVJ/JZPJ4OLigp9//lnrARIRUWrJycmYNGkSli9fDuN2s2BoaQ8ATGSJKN/JcDLr5+cHAHBxcYG3tzdMTEyyLSgiIkrby5cv0bFjR5w8eRIAYHP3DCxr/0/HURER6YbGNbM+Pj5MZImIdOTAgQNwdXXFyZMnUaBAAfhv2MhElojytQwlswULFkR4eDgAwMbGBgULFkzzRkRE2peUlITRo0ejefPmCA8Ph6urK65cuYJ2Xt66Do2ISKcyVGYwf/58WFhYKP+fbV6IiHLWwoULMXPmTACAr68v5syZAxMTE8QlJus4MiIi3ZIIIYSug8hJUVFRsLKyQmRkJCwtLXUdDhFRhsTHx8PT0xMDBw5E27ZtldvjEpNRYcJBAMDtyZ4wk2X4VAgiolxLk3xN45rZK1eu4MaNG8r7f/75J9q0aYMxY8YgMTFR82iJiCiVxMRELF++HHK5HABgamqK48eP44dWbRCXmPzZTa7jSImIdEvjP+H79u2LUaNGoXLlynj06BG8vb3x008/Yfv27YiLi8OCBQuyIUwiovzjyZMn8Pb2xsWLFxEWFobx48dDCIF2K86rXLqWiIgysTJ7//59uLq6AgC2b98Od3d3bN68Gf7+/ti5c6e24yMiyld2796NatWq4eLFi7C2tkaVKlUAAPFJ8nQT2ZrFbWBqJM2pMImIcg2NV2aFEFAoFACAw4cPo0WLFgAAZ2dnZccDIiLSTEJCAoYPH44//vgDAPDtt99i69atKF68eKqxl8d5wEymmriaGkl5ci4R5UsaJ7M1a9bE1KlT4eHhgRMnTmDZsmUAgMePH8PBwUHrARIR5XUhISHw9vZGUFAQAGDYsGGYPn06jIyM1I43k0l5ohcR0f/T+KfhggUL0KlTJ+zZswdjx47FN998AwDYsWMH6tatq/UAiYjyupiYGNy8eRMFCxZEQEAAfvzxR12HRESkNzROZqtUqaLSzSDF7NmzIZWyXouIKCOEEMqygKpVqyIwMBDVq1eHs7OzjiMjItIvGp8AliIoKAgbN27Exo0bceXKFZiYmKT5lRgREf3n/v37cHNzw8WLF5XbWrduzUSWiCgTNF6Zffv2Lby9vXHixAlYW1sDAD58+IDGjRtj69atsLOz03aMRER5xubNm9G3b1/ExMRgwIABOH/+PE/cIiLKAo1XZgcMGICYmBjcunULERERiIiIwM2bNxEVFYWBAwdmR4xERHovLi4OvXr1QqdOnRATE4NGjRphz549TGSJiLJI45XZAwcO4PDhwyhfvrxyW4UKFbBkyRJ8//33Wg2OiCgvuHPnDry8vHDz5k1IJBJMmDAB48eP53kGRERaoHEyq1Ao1NbGGhkZKfvPEhHRJ7du3ULt2rURFxcHBwcHbN68GU2aNNF1WEREeYbGyWyTJk0waNAgbNmyBUWKFAEAvHz5EoMHD0bTpk21HiARkT6rUKECmjRpgvj4eGzcuBGFCxdWeVwIgfgk+VfniUv8+hgiovxI42R28eLFaNWqFVxcXJRn3j5//hyVKlXCxo0btR4gEZG+uXXrFooXL44CBQpAIpFgy5YtMDU1TVVWIIRA2+Xn0r1MLRERpU/jZNbZ2RlXrlzBkSNHcOfOHQBA+fLl4eHhofXgiIj0iRACa9aswYABA9C2bVsEBARAIpGgQIECasfHJ8k1TmRrFreBqRFrbYmIUmiUzAYGBmLv3r1ITExE06ZNMWDAgOyKi4hIbwgh8DbiAwb2/xXbtm4FAIS+DcP76FiYmJikud/npQOXx3nATPb1JNXUSMoOCEREn8lwMrts2TL4+vqidOnSMDU1xa5duxASEoLZs2dnZ3xERLmaEAIeY9fj5PKxSH7/CpAYwNq9K+65/oTq009keB4zmRRmMo2/LCMiyvcy3Gd28eLF8PPzw7179xAcHIz169dj6dKl2RkbEVGuJoTAosVLcHRWHyS/fwWphR0cOv4OK7e2kEgy3sabpQNERJknEUKIjAw0NTXFnTt34OLiAuBTiy5TU1M8efIEjo6O2RmjVkVFRcHKygqRkZGwtLTUdThEpMciIiJQrnx5hL19C9NvaiP48G4UdbTXeB6WDhARqdIkX8vwd1oJCQkwNzdX3jcwMIBMJkN8fHzmIyUi0mMFCxbEWv8AdJ2zAxY1W6Oooz1LBYiIcphGP3XHjx8PMzMz5f3ExERMmzYNVlZWym3z5s3TXnRERLmIEAJ//PEHihQpgrZt2wIAmjRtCssTyTqOjIgo/8pwMtuwYUPcu3dPZVvdunXx6NEj5X1+TUZEedX79+/Ro0cP7NmzBxYWFqhTpw6cnJx0HRYRUb6X4WT2+PHj2RgGEVHudeHCBXh7e+Pp06eQyWSYPn268gqIRESkWxk/3ZaIKJ9RKBSYO3cu6tevj6dPn6JUqVI4e/Ys+vfvDwCIS0zmZWaJiHSMZyoQEamRnJyMn376CX/99RcAwMvLC6tWrYKlpSUvQ0tElItwZZaISA1DQ0N88803MDY2xvLly7F161Zlexh1l6Flr1giIt3gyiwR0f9TKBSIioqCtbU1AGDmzJno1asXKlSokOY+KZehZa9YIiLd4MosERGAsLAw/Pjjj2jRogWSkpIAADKZLN1EFvjvMrRMZImIdCNTyeypU6fQuXNn1KlTBy9fvgQAbNiwAadPn9ZqcEREOeHEiRNwdXXFgQMHcOXKFVy9elXXIRERUQZpnMzu3LkTnp6eMDU1xdWrV5GQkAAAiIyMxPTp07UeIBFRdpHL5ZgyZQqaNGmCV69eoXz58rh48SJq166t69CIiCiDNE5mp06diuXLl2PVqlUwMjJSbq9Xrx6uXLmi1eCIiLLLmzdv4OnpiQkTJkChUKBbt264dOkSKlWqpOvQiIhIAxqfAHbv3j00bNgw1XYrKyt8+PBBGzEREWW7rl274siRIzAzM8OyZcvQtWvXDO0nhGBvWSKiXETjldnChQvj4cOHqbafPn0aJUuWzFQQS5YsgYuLC0xMTODm5oaLFy9maL+tW7dCIpGgTZs2mTouEeVfixYtQp06dRAUFKRRItt2+TnUnHo4m6MjIqKM0jiZ7d27NwYNGoQLFy5AIpHg1atX2LRpE4YNG4Z+/fppHEBgYCCGDBkCPz8/XLlyBVWrVoWnpyfevn2b7n5PnjzBsGHD0KBBA42PSUT5z6tXr7B582bl/XLlyuHMmTMoV65chuf4sr8se8sSEemexmUGo0aNgkKhQNOmTREXF4eGDRvC2NgYw4YNw4ABAzQOYN68eejduze6d+8OAFi+fDn27duHtWvXYtSoUWr3kcvl6NSpEyZNmoRTp06xvIGI0nXw4EF07twZERERKFq0qLJUKivttC6P80AhcxlbchER6ZjGK7MSiQRjx45FREQEbt68ifPnzyMsLAxTpkzR+OCJiYkICgqCh4fHfwEZGMDDwwPnzp1Lc7/JkyfD3t4ePXv2/OoxEhISEBUVpXIjovwhOTkZo0ePRrNmzRAeHo4qVaqgcOHCWpnbTMaLJBAR5QaZvgJYRpqJf014eDjkcjkcHBxUtjs4OODu3btq9zl9+jTWrFmD4ODgDB1jxowZmDRpUpbiJCL98/z5c3To0AFnzpwBAPz666+YO3cuTExMdBwZERFpk8bJbOPGjdNdjTh69GiWAkpPdHQ0unTpglWrVsHW1jZD+4wePRpDhgxR3o+KioKzs3N2hUhEucC+ffvQtWtXREREwNLSEqtXr0a7du10HRYREWUDjZNZV1dXlftJSUkIDg7GzZs34ePjo9Fctra2kEqlCA0NVdkeGhqq9qvAkJAQPHnyBC1btlRuUygUAABDQ0Pcu3cPpUqVUtnH2NgYxsbGGsVFRPrt2bNniIiIQI0aNRAYGJjq5wIREeUdGiez8+fPV7t94sSJiImJ0WgumUyGGjVq4MiRI8r2WgqFAkeOHEH//v1TjS9Xrhxu3Lihsm3cuHGIjo7GwoULueJKlI8JIZTfGv3yyy8wNTVFhw4dtPLHrBAC8Uly9pclIsqFMl0z+6XOnTujdu3amDNnjkb7DRkyBD4+PqhZsyZq166NBQsWIDY2VtndoGvXrnBycsKMGTNgYmKS6uo81tbWAMCr9hDlY3v27MGUKVNw5MgRWFtbQyKRoFu3blqZO6W37OctuYiIKPfQWjJ77ty5TJ1Y4e3tjbCwMEyYMAFv3ryBq6srDhw4oDwp7NmzZzAw0LjpAhHlAwkJCRg5ciQWLlwIAJg7d26mOquk58vesgD7yxIR5SYSIYTQZIeffvpJ5b4QAq9fv8bly5cxfvx4+Pn5aTVAbYuKioKVlRUiIyNhaWmp63CIKJNCQkLg7e2NoKAgAMCwYcMwffp0GBkZafU4cYnJqDDhIIBPvWXNZFKYGrEtFxFRdtIkX9N4ZdbKykrlvoGBAcqWLYvJkyfj+++/13Q6IiKNbd++Hb169UJUVBQKFSqE9evX48cff8zw/ik1sBnxeZ2smUwKM5nWvtAiIiIt0OinslwuR/fu3VG5cmXY2NhkV0xERGlauXIl+vbtCwCoV68etm7diqJFi2Z4f9bAEhHlLRoVo0qlUnz//fe8fCwR6cxPP/0EZ2dnjB49GsePH9cokQXU18BmBOtkiYhyJ42/L6tUqRIePXqEEiVKZEc8RESpnDt3DnXq1AHwqT/1rVu3YGFhkeV5U2pgM4J1skREuZPGbQKmTp2KYcOG4e+//8br168RFRWlciMi0pb4+Hj07t0bdevWhb+/v3K7NhJZ4L8a2IzcmMgSEeVOGV6ZnTx5MoYOHYoffvgBANCqVSuVH+4pDcvlcjYVJ6Ksu3PnDry8vHDz5k1IJBK8fv1a1yEREVEulOFkdtKkSfjll19w7Nix7IyHiAgBAQHo168f4uLi4ODggE2bNqFp06a6DouIiHKhDCezKe1o3d3dsy0YIsrfYmNj0b9/f2VJgYeHBzZu3Ki8iAoREdGXNDoBjDVjRJSdLl++jPXr18PAwACTJk3C6NGjIZVq1kHgaz1kP+8bS0RE+k+jZLZMmTJfTWgjIiKyFBAR5V/u7u6YM2cOatSokalvgdhDlogo/9EomZ00aVKqK4AREWVWdHQ0hg0bhhEjRqBUqVIAgCFDhmR6Pk16yLJvLBFR3qBRMtu+fXvY29tnVyxElI9cu3YNXl5euH//Pq5fv46zZ89qtZTpaz1k2TeWiChvyHAyyx/6RKQNQgisWLECv/32GxISElC0aFHMmTMnSz9jUupkP6+HTekhS0REeZvG3QyIiDIrMjISffr0wbZt2wAALVq0gL+/PwoVKpTpOVknS0SUv2U4mVUoFNkZBxHlcY8fP8Z3332HkJAQGBoa4vfff8fgwYOz/K2PujpZ1sMSEeUf/A6OiHKEk5MTbGxsULx4cQQGBsLNzU3rx0ipk2U9LBFR/sFkloiyzYcPH1CgQAEYGhpCJpNh165dKFCgAGxsbL6679f6xaZgnSwRUf7Gn/pElC0uXrwIb29vdOzYEdOmTQMAODs7Z2hf1sESEVFGGeg6ACLKW4QQmDdvHurVq4cnT55g27ZtiI2N1WgOTfrFpmCdLBFR/sSVWSLSmoiICHTr1g1//fUXAKBdu3ZYtWoVzM3NMz3n1/rFpmCdLBFR/sRkloi04uzZs2jfvj2eP38OY2NjLFiwAH379lUmmBmtgQVYB0tERBnH3xBElGWRkZH44YcfEBkZidKlS2Pbtm1wdXVVPs4aWCIiyi5MZokoy6ysrLBw4UL8+++/WL58OSwsLFQez0wNLMA6WCIi+joms0SUKSdPnoShoSHq1q0LAPDx8UHXrl2/Wrea0RpYgHWwRET0dUxmiUgjcrkcM2bMgJ+fHxwdHREcHAxbW1sAyFDiyRpYIiLSJv5GIaIMCw0NRefOnXH48GEAgIeHB0xNTXUcFRER5WdMZokoQ44ePYqOHTsiNDQUZmZmWLp0KXx8fHQdFhER5XO8aAIRpUuhUMDPzw8eHh4IDQ1FpUqVcPnyZSayRESUKzCZJaJ0SSQS3L59G0II9OrVCxcuXED58uXTHC+EQFxi8he3jPWXJSIi0hTLDIhILYVCAQMDA0gkEqxevRre3t5o27ZtuvuwnywREeU0rswSkYrk5GSMHj0a7du3hxACwKc+sl9LZIGv95Nl31giItI2rswSkdLz58/RoUMHnDlzBgDg6+sLd3f3TM2lrp8s+8YSEZG2MZklIgDAvn370LVrV0RERMDS0hKrV6/OdCILsJ8sERHlDJYZEOVzSUlJGD58OFq0aIGIiAjUqFEDV65cQbt27XQdGhER0Vdx2YQon+vQoQN27twJABg4cCBmzZoFY2NjHUdFRESUMVyZJcrnBg0aBFtbW+zevRsLFy5kIktERHqFK7NE+UxCQgKCg4Ph5uYGAGjQoAGePHkCc3NzHUdGRESkOa7MEuUjjx49Qr169dCkSRPcuXNHuZ2JLBER6Ssms0T5xI4dO1CtWjUEBQXBxMQEr1+/1nVIREREWcZkliiP+/jxI3x9fdGuXTtERUWhbt26CA4ORpMmTXQdGhERUZYxmSXKwx48eIA6depg6dKlAIBRo0bh+PHjcHZ21nFkRERE2sETwIjysI0bNyI4OBi2trbYsGEDmjVrpuuQiIiItIrJLFEeNn78eERHR2Po0KFwcnLSdThERERaxzIDojzk7t278PHxQUJCAgDA0NAQ8+bNYyJLRER5FldmifKIgIAA9OvXD3FxcXB2dsbUqVNz7NhCCMQnyRGXKM+xYxIREQFMZon0XmxsLPr37w9/f38AQNOmTdG/f/8cO74QAm2Xn0PQ0/c5dkwiIqIULDMg0mO3bt1C7dq14e/vDwMDA0yePBkHDx5E4cKFcyyG+CR5qkS2ZnEbmBpJcywGIiLKv7gyS6Sn/vzzT3To0AHx8fFwdHTEli1b4O7urtOYLo/zgJlMClMjKSQSiU5jISKi/IHJLJGeqlSpEoyMjNCwYUMEBATA3t4+U/Ok1Ltm1ud1smYyKcxk/LFCREQ5h791iPTI27dvlUlrqVKlcP78eZQtWxYGBpmrGGK9KxER6TvWzBLpASEEli9fDhcXFxw6dEi5vXz58plOZAH19a6ZxTpZIiLSBa7MEuVykZGR6NOnD7Zt2wYA2Lx5M7777jutHyel3jWzWCdLRES6wGSWKBcLCgqCt7c3QkJCYGhoiJkzZ2Lw4MHp7qNJDSzrXYmISN/xNxdRLiSEwOLFizFs2DAkJiaiePHi2Lp1K7799tuv7scaWCIiyk9YM0uUCx09ehQDBw5EYmIi2rRpg6tXr341kQUyXwPLelciItJXXJklyoWaNm2K3r17o1KlShgwYECmalE1qYFlvSsREekrJrNEuYAQAsuWLYOXlxdsbW0BACtWrEB8klyjHrCsgSUiovyGv+mIdOzdu3fo1q0b/v77b+zfvx979+6FRCJh7SsREVEGMJkl0qGzZ8+iffv2eP78OYyNjfHjjz9CIpFkuf8ra2CJiCi/YDJLpAMKhQKzZ8/G2LFjIZfLUbp0aWzbtg2urq6pxmam/ytrYImIKL9gMkuUw969e4fOnTvjwIEDAIAOHTpgxYoVsLCwUDueta9ERERpY2suohwmlUpx7949mJiYYNWqVdi0aVOaiSwRERGlj8s9RDlAoVBAIpFAIpHA2toaO3bsgJGRESpXrqzr0IiIiPQaV2aJslloaCg8PT2xfPly5bbq1aszkSUiItICrswSZaOjR4+iY8eOCA0NxZUrV9C5c+dUJQVCiFS9ZD/vF0tERERpYzJLlA3kcjkmT56MKVOmQAiBihUrYtu2bWoTWfaTJSIiyjwms0Ra9urVK3Tq1AnHjx8HAPTs2ROLFi2CmZlZqrFf6yfLfrFERETpYzJLpEUxMTGoWbMmXr9+DXNzc6xYsQKdOnXK0L7q+smyXywREVH6eAIYkRYVKFAAvr6+qFq1Kq5cuZLhRBb4r5/s5zcmskREROljMkuURS9evMCDBw+U90eNGoXz58+jTJkyOoyKiIgof2AyS5QF+/btg6urK37++WfEx8cD+HRRBBMTEx1HRkRElD8wmSXKhKSkJAwfPhwtWrTAu3fvYGRkhIiICF2HRURElO8wmSXS0NOnT9GwYUPMmTMHADBgwACcPXsWTk5OGZ5DCIG4xGT2kyUiIsqiXJHMLlmyBC4uLjAxMYGbmxsuXryY5thVq1ahQYMGsLGxgY2NDTw8PNIdT6RNf/75J1xdXXH+/HlYWVlh586dWLRoEYyNjTM8R0pv2QoTDqLm1MPZGC0REVHep/NkNjAwEEOGDIGfnx+uXLmCqlWrwtPTE2/fvlU7/vjx4+jQoQOOHTuGc+fOwdnZGd9//z1evnyZw5FTfqNQKDBnzhx8+PABtWrVwtWrV/HTTz9pPI+63rLsJ0tERJQ5EiGE0GUAbm5uqFWrFhYvXgzgU8Lg7OyMAQMGYNSoUV/dXy6Xw8bGBosXL0bXrl2/Oj4qKgpWVlaIjIyEpaVlluOn/OX58+dYvnw5/Pz8IJPJMjVHXGIyKkw4COC/3rLsJ0tERPQfTfI1na7MJiYmIigoCB4eHsptBgYG8PDwwLlz5zI0R1xcHJKSklCwYEG1jyckJCAqKkrlRpRRO3bswIQJE5T3nZ2dMW3atEwnsl9K6S3LRJaIiChzdJrMhoeHQy6Xw8HBQWW7g4MD3rx5k6E5Ro4ciSJFiqgkxJ+bMWMGrKyslDdnZ+csx01538ePH+Hr64t27dphypQpOHbsmK5DIiIiIjV0XjObFTNnzsTWrVuxe/fuNPt6jh49GpGRkcrb8+fPczhK0jcPHjxA3bp1sXTpUgCf/mCqX7++jqMiIiIidQx1eXBbW1tIpVKEhoaqbA8NDUXhwoXT3XfOnDmYOXMmDh8+jCpVqqQ5ztjYWKMzzSl/27JlC/r06YOYmBjY2tpiw4YNaNasWabnE0IgPkm1/RbbcREREWmPTpNZmUyGGjVq4MiRI2jTpg2ATyeAHTlyBP37909zv1mzZmHatGk4ePAgatasmUPRUl43dOhQzJs3DwDQsGFDbN68WaPesV9KacH1ZecCIiIi0h6dlxkMGTIEq1atwvr163Hnzh3069cPsbGx6N69OwCga9euGD16tHL877//jvHjx2Pt2rVwcXHBmzdv8ObNG8TExOjqKVAe4ebmBolEgnHjxuHIkSNZSmQB9S24Psd2XERERFmn05VZAPD29kZYWBgmTJiAN2/ewNXVFQcOHFCeFPbs2TMYGPyXcy9btgyJiYlo27atyjx+fn6YOHFiToZOeUBoaKjy35qXlxeqVKmCcuXKaf04KS24Psd2XERERFmn8z6zOY19ZgkAYmNj0b9/f/zzzz8IDg7+ao12ZnzeT/b2ZE+YyXT+tyMREZFe0Js+s0S6cOvWLdSuXRv+/v4ICwvDkSNHdB0SERERZRKTWco3hBBYu3YtatWqhdu3b8PR0RFHjhxBp06ddB0aERERZRK/96R8ISYmBr/88gs2bdoEAPj++++xYcMG2Nvb6zgyIiIiygquzFK+MHXqVGzatAlSqRTTp0/HP//8o9VEVgiBuMTkL27sJ0tERJTduDJL+cK4ceMQFBQEPz8/rV/Ni/1kiYiIdIcrs5QnRUVFYe7cuUhp1lGgQAEcOnQoWy5Ly36yREREusOVWcpzrly5Am9vbzx8+BDApyt75RT2kyUiIspZTGYpzxBCYMmSJRg6dCgSExNRrFgx1KtXL1uOE5/0Xz3s57WxZjIp+8kSERHlIP7WpTzhw4cP6NmzJ3bt2gUAaN26NdauXYuCBQtq9TisjyUiIspdWDNLeu/y5cuoVq0adu3aBSMjIyxYsAC7d+/WeiILpF8fy9pYIiKinMeVWdJ7CoUCL168QIkSJRAYGIhatWrlyHG/rI9lbSwREVHOYzJLekkul0Mq/ZRI1q5dG7t370b9+vVhbW2dpXm/rIf9EutjiYiIchf+Jia9c/bsWXTv3h3btm1D1apVAQAtWrTI8ryshyUiItI/rJklvaFQKDBr1iw0bNgQ9+/fx5gxY7Q6/9f6xX6O9bFERES5A1dmSS+EhYXBx8cH//zzDwCgffv2WLFiRbYdT12/2M+xPpaIiCh3YDJLud6pU6fQvn17vHr1CiYmJli0aBF69eqltWQypU6W9bBERET6h7+tKVc7ffo0GjVqBIVCgbJly2Lbtm2oUqWK1uZnnSwREZF+YzJLuVqdOnXQuHFjFClSBEuXLkWBAgW0Or+6OlnWwxIREekPJrOU65w5cwbVq1eHqakppFIp/vrrL5iammb7cVPqZFkPS0REpD/YzYByDblcjokTJ6JBgwYYPHiwcnt2JLJCCMQlJqutk2UiS0REpD+4Mku5wuvXr9GxY0ccP34cAJCUlKRyYQRtYp0sERFR3sGVWdK5f//9F1WrVsXx48dhbm6ODRs2YM2aNdmSyAKskyUiIspLuDJLOpOcnAw/Pz/MmDEDQghUqVIFgYGBKFeuXI7FwDpZIiIi/cZklnTm7du3WL58OYQQ6Nu3L+bPn6+V+tiUvrFpYT9ZIiKivIO/xUlnihQpgoCAAERHR6N9+/ZamZP1sERERPkLk1nKMUlJSRg3bhzq16+Pli1bAgB+/PFHrR5DXT1sWlgnS0REpP+YzFKOePbsGdq3b49z585h9erVCAkJgbW1dbYeM6UeNi2skyUiItJ/TGYp2+3duxfdunXD+/fvYWVlhVWrVmUpkU2vJpb1sERERPkLf9NTtklMTMTIkSOxYMECAECtWrUQGBiIEiVKZHpO1sQSERHR55jMUraIi4tDo0aNcOnSJQDA4MGDMXPmTMhksizNm9GaWNbDEhER5Q9MZilbmJmZoVq1anj48CH8/f3RqlUrrR8jvZpY1sMSERHlD7wCGGnNx48fERERoby/YMECBAcHayWRFUIgLjFZbU2suhsTWSIiovyBK7OkFQ8fPoSXlxcKFiyIgwcPQiqVwtTUFMWKFcvy3KyTJSIiorRwZZaybOvWrahevTquXr2K4OBghISEaHV+dXWyrIklIiIigCuzlAXx8fH47bffsHLlSgBA/fr1sWXLFhQtWjTbjplSJ8uaWCIiIgK4MkuZdO/ePXz77bdYuXIlJBIJxo4di2PHjmVrIgv8VyfLRJaIiIgArsxSJggh0KlTJ1y/fh12dnbYtGkTvvvuO12HRURERPkQV2ZJYxKJBGvWrEHz5s1x7do1JrJERESkM0xmKUNu3bqFjRs3Ku9XrVoV+/fvh6Ojow6jIiIiovyOZQaULiEE/P394evri+TkZJQpUwa1a9fO1uPFJ8lVtn3eW5aIiIjoc0xmKU0xMTH49ddfsWHDBgDAd999BxcXl2w7HvvJEhERkaZYZkBqXb9+HTVr1sSGDRtgYGCAadOm4cCBA7C3t8+2Y6rrJ/s59pYlIiKiL3FlllJZvXo1+vfvj4SEBDg5OWHLli1o0KBBjsaQ0k/2c+wtS0RERF9iMkupREZGIiEhAc2bN0dAQABsbW012l9d3WtGfF4bm9JPloiIiCg9zBYIAJCcnAxDw0//HIYMGYJixYrh559/hoGBZpUorHslIiKinMSa2XxOCIElS5agZs2aiImJAfCpj2y7du00TmSBr9e9ZgRrY4mIiCijuDKbj3348AG9evXCzp07AQBr1qzBoEGDtDa/urrXjGBtLBEREWUUk9l86uLFi/D2bo8nTx7DyMgIU6fPQK9ffkVcYnKW5mXdKxEREeUkZhr5jBACCxYswNDhIyDkyZBaOaBQ65FYGl4GS/3+1XV4RERERBphMpvPTJ06FRMmTAAAmJWpi0LNB8LApIDWj8O6VyIiIsoJEiGE0HUQOSkqKgpWVlaIjIyEpaWlrsPJcW/evEFtNzfElv0BBar9iKDx32WqrvVrWPdKREREmaVJvsaV2TxOLpdj/8FDaOrhAQCwLGiLs0HXUX/OaQCsayUiIiL9xiwmDwsLC0Plxq0ReuscbFuNhHn5nL2KFxEREVF2Y5/ZPOrUqVNwrVYNobfOAVIjiOSEVGNY10pERET6jiuzeYxCocDMmTMxYcIEyOVyGBZ0gl3rUbi+qHeq2ljWtRIREZG+YzKbh4SGhqJjp844euQwAKBd+w447/gTDGSmrI0lIiKiPInZTR4hhMD/JgXg3JHDkBgao+B3v+BCMQ8YcOWViIiI8jAms3lEfJIcrywrwKZxT5iUqA6ZXXHlY6yNJSIioryKyawee/36NQYMGID58+ejkIMjAMCy9v9weZyHSn0sa2OJiIgor2Iyq6cOHTqEzp074+3bt4iJicGuvX8rH2N9LBEREeUXbM2lZ5KTkzFu3Dh4enri7du3qFy5MhYsWKDrsIiIiIh0gst3euTFixfo2LEjTp06BQDo06cPFixYAFNTU8QlJus4OiIiIqKcx2RWTwQHB8PDwwPv3r1DgQIFsGrVKrRv317XYRERERHpFJNZPVGmTBk4OjqiWLFiCAwMROnSpXUdEhEREZHOMZnNxV6/fg0HBwcYGBjAzMwM+/fvh52dHUxMTHQdGhEREVGuwGQ2l9q7dy+6deuGoUOHYuzYsQAAZ2dnHUdFRJR/CCGQnJwMuVyu61CI8iQjIyNIpVnvg89kNpdJTEzEqFGjMH/+fADA33//jZEjR8LQkG8VEVFOSUxMxOvXrxEXF6frUIjyLIlEgqJFi6JAgQJZmocZUi7y+PFjtG/fHhcvXgQADBo0CBOnTkeiAkj8SreCuESuHBARaYNCocDjx48hlUpRpEgRyGQyXniGSMuEEAgLC8OLFy9QunTpLK3QMpnNJXbt2oUePXogMjIS1tbWWLduHTa8tofr1GO6Do2IKF9JTEyEQqGAs7MzzMzMdB0OUZ5lZ2eHJ0+eICkpKUvJLC+akAu8evUKHTt2RGRkJL799lsEBwfj+x9aIOjpe43nqlncBqZGWa8/ISLK7wwM+CuSKDtp6xsPrszmAkWKFMGCBQsQEhKC6dOnw8jISOUiCJfHecBMlrEE1dRIyq/DiIiIKN9gMqsj27ZtQ4kSJVCrVi0IIdC1Ry8AQJIAkhKTVWpgzWRSmMn4VhERERF9iRlSDouPj8fgwYOxYsUKlChRAleuXEHPLbczVVJARERE2nHv3j24u7vjwYMHsLCw0HU4ecK3336L4cOH4+eff87W4+SKgqAlS5bAxcUFJiYmcHNzU57Nn5bt27ejXLlyMDExQeXKlbF///4cijRr7t27h2+//RYrVqyARCJBhw4dYCAzSTeRZQ0sERFlVLdu3SCRSCCRSGBkZIQSJUpgxIgR+PjxY6qxf//9N9zd3WFhYQEzMzPUqlUL/v7+aufduXMnGjVqBCsrKxQoUABVqlTB5MmTERERkc3PKOeMHj0aAwYMUJvIlitXDsbGxnjz5k2qx1xcXLBgwYJU2ydOnAhXV1eVbW/evMGAAQNQsmRJGBsbw9nZGS1btsSRI0e09TTUykredObMGRgaGqZ6LtHR0fjtt99QvHhxmJqaom7durh06ZLKmHHjxmHUqFFQKBTaeBppEzq2detWIZPJxNq1a8WtW7dE7969hbW1tQgNDVU7/syZM0IqlYpZs2aJ27dvi3HjxgkjIyNx48aNDB0vMjJSABCRkZHafBpftWHDBmFubi4ACDs7O3Hw4EEhhBCxCUmi+Mi/RfGRf4uw6I8iNiFJ5aZQKHI0TiKi/C4+Pl7cvn1bxMfH6zoUjfn4+IhmzZqJ169fi2fPnondu3cLS0tLMWLECJVxixYtEgYGBmL06NHi1q1b4sGDB2LOnDnC2NhYDB06VGXsmDFjhFQqFcOGDRNnzpwRjx8/Fv/++6/46aefxIIFC3LsuSUkJGTb3E+fPhVGRkbixYsXqR47deqUKFasmOjYsaOYOXNmqseLFy8u5s+fn2q7n5+fqFq1qvL+48ePRZEiRUSFChXEjh07xL1798TNmzfF3LlzRdmyZbX5dFRkJW96//69KFmypPj+++9VnosQQnh5eYkKFSqIEydOiAcPHgg/Pz9haWmp8homJycLBwcH8ffff6udP73Pmib5ms6T2dq1awtfX1/lfblcLooUKSJmzJihdryXl5f48ccfVba5ubmJvn37Zuh4OZnMKhQKEREVI7p26yYACACiobu7ePjkmTJZDYv+qExmYxOSsj0mIiJKn7pfsAqFItViQ07cNF3Q8PHxEa1bt1bZ9tNPP4lq1aop7z979kwYGRmJIUOGpNp/0aJFAoA4f/68EEKICxcuCABpJq3v379PM5bnz5+L9u3bCxsbG2FmZiZq1KihnFddnIMGDRLu7u7K++7u7sLX11cMGjRIFCpUSDRq1Eh06NBBeHl5qeyXmJgoChUqJNavXy+E+JRHTJ8+Xbi4uAgTExNRpUoVsX379jTjFEKI2bNni5o1a6p9rFu3bmLUqFHin3/+EWXKlEn1eEaT2ebNmwsnJycRExOTamx6r2NWZSVv8vb2FuPGjUv1XOLi4oRUKk2VpFavXl2MHTtWZVv37t1F586d1c6vrWRWpzWziYmJCAoKwujRo5XbDAwM4OHhgXPnzqnd59y5cxgyZIjKNk9PT+zZs0ft+ISEBCQkJCjvR0VFZT3wDIpPksN16lGEnbwJQAKreu3xpHZ7NF12HcD1HIuDiIiyJj5JjgoTDub4cW9P9szSCcA3b97E2bNnUbx4ceW2HTt2ICkpCcOGDUs1vm/fvhgzZgy2bNkCNzc3bNq0CQUKFMCvv/6qdn5ra2u122NiYuDu7g4nJyfs3bsXhQsXxpUrVzT+unn9+vXo168fzpw5AwB4+PAh2rVrh5iYGOVVow4ePIi4uDj873//AwDMmDEDGzduxPLly1G6dGmcPHkSnTt3hp2dHdzd3dUe59SpU6hZs2aq7dHR0di+fTsuXLiAcuXKITIyEqdOnUKDBg00eh4RERE4cOAApk2bBnNz81SPp/U6AsCmTZvQt2/fdOf/559/0oxJ07wpxbp16/Do0SNs3LgRU6dOVXks5TLPJiYmKttNTU1x+vRplW21a9fGzJkz0z1WVuk0mQ0PD4dcLoeDg4PKdgcHB9y9e1ftPm/evFE7Xl0dC/DpH/WkSZO0E3AmSCQGKPTjYCSFP4VJsSppjmNtLBERacPff/+NAgUKIDk5GQkJCTAwMMDixYuVj9+/fx9WVlZwdHRMta9MJkPJkiVx//59AMCDBw9QsmRJGBkZaRTD5s2bERYWhkuXLqFgwYIAgG+++Ubj51K6dGnMmjVLeb9UqVIwNzfH7t270aVLF+WxWrVqBQsLCyQkJGD69Ok4fPgw6tSpAwAoWbIkTp8+jRUrVqSZzD59+lRtMrt161aULl0aFStWBAC0b98ea9as0TiZffjwIYQQKFeunEb7AUCrVq3g5uaW7hgnJ6c0H9M0bwI+ve+jRo3CqVOnYGiYOlW0sLBAnTp1MGXKFJQvXx4ODg7YsmULzp07l+p9LlKkCJ4/fw6FQpFtvZvzfDeD0aNHq/xFEhUVBWdn5xw5tqmRFLcne2Z4LPvDEhHlTpr8PNf2cTXVuHFjLFu2DLGxsZg/fz4MDQ0zfTa5ECJT+wUHB6NatWrKRDazatSooXLf0NAQXl5e2LRpE7p06YLY2Fj8+eef2Lp1K4BPSWNcXBy+++47lf0SExNRrVq1NI8THx+fapURANauXYvOnTsr73fu3Bnu7u74448/NOp4kNnXEfiUOOZkdwW5XI6OHTti0qRJKFOmTJrjNmzYgB49esDJyQlSqRTVq1dHhw4dEBQUpDLO1NQUCoUCCQkJMDU1zZaYdZrM2traQiqVIjQ0VGV7aGgoChcurHafwoULazTe2NgYxsbG2glYQxKJhP1hiYjyAH36eW5ubq5cHVu7di2qVq2KNWvWoGfPngCAMmXKIDIyEq9evUKRIkVU9k1MTERISAgaN26sHHv69GkkJSVptDr7taTFwMAgVYKXlJSk9rl8qVOnTnB3d8fbt29x6NAhmJqaolmzZgA+lTcAwL59+1KtVqaXC9ja2uL9e9XOQrdv38b58+dx8eJFjBw5UrldLpdj69at6N27NwDA0tISkZGRqeb88OEDrKysAHxaYZZIJGl+65yerJYZaJo3RUdH4/Lly7h69Sr69+8PAFAoFBBCwNDQEP/++y+aNGmCUqVK4cSJE4iNjUVUVBQcHR3h7e2NkiVLqswXEREBc3PzbEtkAR235pLJZKhRo4ZKSwqFQoEjR44ovx74Up06dVK1sDh06FCa44mIiPIrAwMDjBkzBuPGjUN8fDwA4Oeff4aRkRHmzp2bavzy5csRGxuLDh06AAA6duyImJgYLF26VO38Hz58ULu9SpUqCA4OTrN1l52dHV6/fq2yLTg4OEPPqW7dunB2dkZgYCA2bdqEdu3aKRPtChUqwNjYGM+ePcM333yjckvvW9lq1arh9u3bKtvWrFmDhg0b4tq1awgODlbehgwZgjVr1ijHlS1bNtVqJABcuXJFubJZsGBBeHp6YsmSJYiNjU01Nq3XEfhUZvD58dXd1JVIpNA0b7K0tMSNGzdU5v/ll19QtmxZBAcHpyp5MDc3h6OjI96/f4+DBw+idevWKo/fvHkz3VVxrfjqKWLZbOvWrcLY2Fj4+/uL27dviz59+ghra2vx5s0bIYQQXbp0EaNGjVKOP3PmjDA0NBRz5swRd+7cEX5+fnrRmouIiPSDvrfm+rJLQFJSknBychKzZ89Wbps/f74wMDAQY8aMEXfu3BEPHz4Uc+fOVduaa8SIEUIqlYrhw4eLs2fPiidPnojDhw+Ltm3bptnlICEhQZQpU0Y0aNBAnD59WoSEhIgdO3aIs2fPCiGEOHDggJBIJGL9+vXi/v37YsKECcLS0jJVN4NBgwapnX/s2LGiQoUKwtDQUJw6dSrVY4UKFRL+/v7i4cOHIigoSCxatEj4+/un+brt3btX2Nvbi+TkZCHEpw4JdnZ2YtmyZanG3r59WwAQN2/eFEJ8yksMDAzE1KlTxe3bt8WNGzfEmDFjhKGhoUpuEhISIgoXLqxszXX//n1x+/ZtsXDhQlGuXLk0Y8uqjORNo0aNEl26dElzji+7GQjx6T38559/xKNHj8S///4rqlatKtzc3ERiYqLKOHd3dzF58mS18+aZ1lxCCPHHH3+IYsWKCZlMJmrXrq1s3SHEpxfBx8dHZfy2bdtEmTJlhEwmExUrVhT79u3L8LGYzBIRUXryWjIrhBAzZswQdnZ2Km2h/vzzT9GgQQNhbm4uTExMRI0aNcTatWvVzhsYGCgaNmwoLCwshLm5uahSpYqYPHlyui2lnjx5In7++WdhaWkpzMzMRM2aNcWFCxeUj0+YMEE4ODgIKysrMXjwYNG/f/8MJ7MpCWXx4sVTtS9TKBRiwYIFomzZssLIyEjY2dkJT09PceLEiTRjTUpKEkWKFBEHDhwQQgixY8cOYWBgoFxY+1L58uXF4MGDlfcPHjwo6tWrJ2xsbJRtxNQd79WrV8LX11cUL15cyGQy4eTkJFq1aiWOHTuWZmza8LW8ycfHR+W1/5K6ZDYwMFCULFlSyGQyUbhwYeHr6ys+fPigMubFixfCyMhIPH/+XO282kpmJUJkoSpZD0VFRcHKygqRkZGwtLTUdThERJTLfPz4EY8fP0aJEiXUnhREedOSJUuwd+9eHDyY8y3Y8qqRI0fi/fv3WLlypdrH0/usaZKv6Uc1OxEREVE26tu3Lz58+IDo6Ogc7R6Ql9nb26fqcZsdmMwSERFRvmdoaIixY8fqOow8ZejQoTlyHJ12MyAiIiIiygoms0RERESkt5jMEhERqZHPzo8mynHa+owxmSUiIvpMSgP+uLg4HUdClLclJiYCAKRSzS/b/DmeAEZERPQZqVQKa2trvH37FgBgZmYGiUSi46iI8haFQoGwsDCYmZnB0DBr6SiTWSIioi+kXLc+JaElIu0zMDBAsWLFsvzHIpNZIiKiL0gkEjg6OsLe3h5JSUm6DocoT5LJZDAwyHrFK5NZIiKiNEil0izX8xFR9uIJYERERESkt5jMEhEREZHeYjJLRERERHor39XMpjTojYqK0nEkRERERKROSp6WkQsr5LtkNjo6GgDg7Oys40iIiIiIKD3R0dGwsrJKd4xE5LPr9SkUCrx69QoWFhY50gQ7KioKzs7OeP78OSwtLbP9eKR9fA/1H99D/cf3UL/x/dN/Of0eCiEQHR2NIkWKfLV9V75bmTUwMEDRokVz/LiWlpb8AOs5vof6j++h/uN7qN/4/um/nHwPv7Yim4IngBERERGR3mIyS0RERER6i8lsNjM2Noafnx+MjY11HQplEt9D/cf3UP/xPdRvfP/0X25+D/PdCWBERERElHdwZZaIiIiI9BaTWSIiIiLSW0xmiYiIiEhvMZklIiIiIr3FZFYLlixZAhcXF5iYmMDNzQ0XL15Md/z27dtRrlw5mJiYoHLlyti/f38ORUpp0eQ9XLVqFRo0aAAbGxvY2NjAw8Pjq+85ZT9NP4cptm7dColEgjZt2mRvgPRVmr6HHz58gK+vLxwdHWFsbIwyZcrw56kOafr+LViwAGXLloWpqSmcnZ0xePBgfPz4MYeipS+dPHkSLVu2RJEiRSCRSLBnz56v7nP8+HFUr14dxsbG+Oabb+Dv75/tcaolKEu2bt0qZDKZWLt2rbh165bo3bu3sLa2FqGhoWrHnzlzRkilUjFr1ixx+/ZtMW7cOGFkZCRu3LiRw5FTCk3fw44dO4olS5aIq1evijt37ohu3boJKysr8eLFixyOnFJo+h6mePz4sXBychINGjQQrVu3zplgSS1N38OEhARRs2ZN8cMPP4jTp0+Lx48fi+PHj4vg4OAcjpyE0Pz927RpkzA2NhabNm0Sjx8/FgcPHhSOjo5i8ODBORw5pdi/f78YO3as2LVrlwAgdu/ene74R48eCTMzMzFkyBBx+/Zt8ccffwipVCoOHDiQMwF/hslsFtWuXVv4+voq78vlclGkSBExY8YMteO9vLzEjz/+qLLNzc1N9O3bN1vjpLRp+h5+KTk5WVhYWIj169dnV4j0FZl5D5OTk0XdunXF6tWrhY+PD5NZHdP0PVy2bJkoWbKkSExMzKkQKR2avn++vr6iSZMmKtuGDBki6tWrl61xUsZkJJkdMWKEqFixoso2b29v4enpmY2RqccygyxITExEUFAQPDw8lNsMDAzg4eGBc+fOqd3n3LlzKuMBwNPTM83xlL0y8x5+KS4uDklJSShYsGB2hUnpyOx7OHnyZNjb26Nnz545ESalIzPv4d69e1GnTh34+vrCwcEBlSpVwvTp0yGXy3MqbPp/mXn/6tati6CgIGUpwqNHj7B//3788MMPORIzZV1uymcMc/yIeUh4eDjkcjkcHBxUtjs4OODu3btq93nz5o3a8W/evMm2OCltmXkPvzRy5EgUKVIk1YeackZm3sPTp09jzZo1CA4OzoEI6Wsy8x4+evQIR48eRadOnbB//348fPgQv/76K5KSkuDn55cTYdP/y8z717FjR4SHh6N+/foQQiA5ORm//PILxowZkxMhkxaklc9ERUUhPj4epqamORYLV2aJsmDmzJnYunUrdu/eDRMTE12HQxkQHR2NLl26YNWqVbC1tdV1OJRJCoUC9vb2WLlyJWrUqAFvb2+MHTsWy5cv13VolAHHjx/H9OnTsXTpUly5cgW7du3Cvn37MGXKFF2HRnqIK7NZYGtrC6lUitDQUJXtoaGhKFy4sNp9ChcurNF4yl6ZeQ9TzJkzBzNnzsThw4dRpUqV7AyT0qHpexgSEoInT56gZcuWym0KhQIAYGhoiHv37qFUqVLZGzSpyMzn0NHREUZGRpBKpcpt5cuXx5s3b5CYmAiZTJatMdN/MvP+jR8/Hl26dEGvXr0AAJUrV0ZsbCz69OmDsWPHwsCAa225XVr5jKWlZY6uygJcmc0SmUyGGjVq4MiRI8ptCoUCR44cQZ06ddTuU6dOHZXxAHDo0KE0x1P2ysx7CACzZs3ClClTcODAAdSsWTMnQqU0aPoelitXDjdu3EBwcLDy1qpVKzRu3BjBwcFwdnbOyfAJmfsc1qtXDw8fPlT+IQIA9+/fh6OjIxPZHJaZ9y8uLi5Vwpryh4kQIvuCJa3JVflMjp9ylsds3bpVGBsbC39/f3H79m3Rp08fYW1tLd68eSOEEKJLly5i1KhRyvFnzpwRhoaGYs6cOeLOnTvCz8+Prbl0TNP3cObMmUImk4kdO3aI169fK2/R0dG6egr5nqbv4ZfYzUD3NH0Pnz17JiwsLET//v3FvXv3xN9//y3s7e3F1KlTdfUU8jVN3z8/Pz9hYWEhtmzZIh49eiT+/fdfUapUKeHl5aWrp5DvRUdHi6tXr4qrV68KAGLevHni6tWr4unTp0IIIUaNGiW6dOmiHJ/Smmv48OHizp07YsmSJWzNpc/++OMPUaxYMSGTyUTt2rXF+fPnlY+5u7sLHx8flfHbtm0TZcqUETKZTFSsWFHs27cvhyOmL2nyHhYvXlwASHXz8/PL+cBJSdPP4eeYzOYOmr6HZ8+eFW5ubsLY2FiULFlSTJs2TSQnJ+dw1JRCk/cvKSlJTJw4UZQqVUqYmJgIZ2dn8euvv4r379/nfOAkhBDi2LFjan+3pbxvPj4+wt3dPdU+rq6uQiaTiZIlS4p169bleNxCCCERguv5RERERKSfWDNLRERERHqLySwRERER6S0ms0RERESkt5jMEhEREZHeYjJLRERERHqLySwRERER6S0ms0RERESkt5jMEhEREZHeYjJLRATA398f1tbWug4j0yQSCfbs2ZPumG7duqFNmzY5Eg8RUU5hMktEeUa3bt0gkUhS3R4+fKjr0ODv76+Mx8DAAEWLFkX37t3x9u1brcz/+vVrNG/eHADw5MkTSCQSBAcHq4xZuHAh/P39tXK8tEycOFH5PKVSKZydndGnTx9ERERoNA8TbyLKKENdB0BEpE3NmjXDunXrVLbZ2dnpKBpVlpaWuHfvHhQKBa5du4bu3bvj1atXOHjwYJbnLly48FfHWFlZZfk4GVGxYkUcPnwYcrkcd+7cQY8ePRAZGYnAwMAcOT4R5S9cmSWiPMXY2BiFCxdWuUmlUsybNw+VK1eGubk5nJ2d8euvvyImJibNea5du4bGjRvDwsIClpaWqFGjBi5fvqx8/PTp02jQoAFMTU3h7OyMgQMHIjY2Nt3YJBIJChcujCJFiqB58+YYOHAgDh8+jPj4eCgUCkyePBlFixaFsbExXF1dceDAAeW+iYmJ6N+/PxwdHWFiYoLixYtjxowZKnOnlBmUKFECAFCtWjVIJBI0atQIgOpq58qVK1GkSBEoFAqVGFu3bo0ePXoo7//555+oXr06TExMULJkSUyaNAnJycnpPk9DQ0MULlwYTk5O8PDwQLt27XDo0CHl43K5HD179kSJEiVgamqKsmXLYuHChcrHJ06ciPXr1+PPP/9UrvIeP34cAPD8+XN4eXnB2toaBQsWROvWrfHkyZN04yGivI3JLBHlCwYGBli0aBFu3bqF9evX4+jRoxgxYkSa4zt16oSiRYvi0qVLCAoKwqhRo2BkZAQACAkJQbNmzfDzzz/j+vXrCAwMxOnTp9G/f3+NYjI1NYVCoUBycjIWLlyIuXPnYs6cObh+/To8PT3RqlUrPHjwAACwaNEi7N27F9u2bcO9e/ewadMmuLi4qJ334sWLAIDDhw/j9evX2LVrV6ox7dq1w7t373Ds2DHltoiICBw4cACdOnUCAJw6dQpdu3bFoEGDcPv2baxYsQL+/v6YNm1ahp/jkydPcPDgQchkMuU2hUKBokWLYvv27bh9+zYmTJiAMWPGYNu2bQCAYcOGwcvLC82aNcPr16/x+vVr1K1bF0lJSfD09ISFhQVOnTqFM2fOoECBAmjWrBkSExMzHBMR5TGCiCiP8PHxEVKpVJibmytvbdu2VTt2+/btolChQsr769atE1ZWVsr7FhYWwt/fX+2+PXv2FH369FHZdurUKWFgYCDi4+PV7vPl/Pfv3xdlypQRNWvWFEIIUaRIETFt2jSVfWrVqiV+/fVXIYQQAwYMEE2aNBEKhULt/ADE7t27hRBCPH78WAAQV69eVRnj4+MjWrdurbzfunVr0aNHD+X9FStWiCJFigi5XC6EEKJp06Zi+vTpKnNs2LBBODo6qo1BCCH8/PyEgYGBMDc3FyYmJgKAACDmzZuX5j5CCOHr6yt+/vnnNGNNOXbZsmVVXoOEhARhamoqDh48mO78RJR3sWaWiPKUxo0bY9myZcr75ubmAD6tUs6YMQN3795FVFQUkpOT8fH/2ru/kKbXOI7j72Nhas0LKSkvLEg3hLJarjKLQPpjZIgjXCl0YyKGLbSiLswaUWShQlEUiEE2mtRNkmnRhWULwgoV+jOzZn8IggwUyaHozkU0zjINO3DOmefzuvz9nuf3+z6/3Xz27Hl+8/n4+vUrUVFRY65TWlrKrl27qKurC/xUvnDhQuDbEoTOzk6cTmegvd/vZ3R0FK/XS1JS0k9r6+vrY9asWYyOjuLz+VizZg01NTX09/fz8eNH0tLSgtqnpaXR0dEBfFsisGHDBkwmExkZGWRmZrJx48a/9azy8vIoKCjg/PnzzJgxA6fTyfbt2wkLCwuM0+12B83EjoyMTPjcAEwmEw0NDfh8Pq5cuUJ7ezt79uwJanPu3Dlqa2t59+4dg4ODDA0NsXTp0gnr7ejooLu7G4PBEHTc5/Px+vXr33gCIjIVKMyKyJQyc+ZMEhISgo719PSQmZlJUVERx48fJyYmhgcPHpCfn8/Q0NBPQ9nRo0fJzc2lsbGRpqYmjhw5gsvlIjs7m4GBAQoLC7Hb7WP6xcfHj1ubwWDg6dOnhIWFMW/ePCIjIwHo7+//5bjMZjNer5empibu3r1LTk4O69ev5/r167/sO56tW7fi9/tpbGzEYrHQ2tpKdXV14PzAwAAOhwOr1Tqmb0RExLjXDQ8PD3wGJ0+eZMuWLTgcDo4dOwaAy+Vi//79VFZWkpqaisFg4PTp0zx69GjCegcGBli+fHnQl4jv/iub/ETkn6cwKyJT3pMnTxgdHaWysjIw6/h9feZEjEYjRqORkpISduzYwaVLl8jOzsZsNvP8+fMxoflXwsLCftonOjqauLg43G4369atCxx3u92sWLEiqJ3NZsNms7Ft2zYyMjL48uULMTExQdf7vj51ZGRkwnoiIiKwWq04nU66u7sxmUyYzebAebPZjMfjmfQ4f1RWVkZ6ejpFRUWBca5evZrdu3cH2vw4sxoeHj6mfrPZTH19PbGxsURHR/+tmkRk6tAGMBGZ8hISEhgeHubs2bO8efOGuro6Lly4MG77wcFBiouLaWlp4e3bt7jdbtra2gLLBw4ePMjDhw8pLi6mvb2dV69ecePGjUlvAPurAwcOUFFRQX19PR6Ph0OHDtHe3s7evXsBqKqq4urVq7x8+ZKuri6uXbvG3Llzf/pHD7GxsURGRtLc3MynT5/o6+sb9755eXk0NjZSW1sb2Pj1XXl5OZcvX8bhcPDs2TNevHiBy+WirKxsUmNLTU0lOTmZEydOAJCYmMjjx4+5ffs2XV1dHD58mLa2tqA+CxYsoLOzE4/Hw+fPnxkeHiYvL4/Zs2eTlZVFa2srXq+XlpYW7HY7Hz58mFRNIjJ1KMyKyJS3ZMkSqqqqqKioYNGiRTidzqDXWv1o2rRp9Pb2snPnToxGIzk5OWzevBmHwwFAcnIy9+7do6uri7Vr17Js2TLKy8uJi4v77RrtdjulpaXs27ePxYsX09zcTENDA4mJicC3JQqnTp0iJSUFi8VCT08Pt27dCsw0/9X06dM5c+YMFy9eJC4ujqysrHHvm56eTkxMDB6Ph9zc3KBzmzZt4ubNm9y5cweLxcKqVauorq5m/vz5kx5fSUkJNTU1vH//nsLCQqxWKzabjZUrV9Lb2xs0SwtQUFCAyWQiJSWFOXPm4Ha7iYqK4v79+8THx2O1WklKSiI/Px+fz6eZWpH/sT/8fr//3y5CREREROR3aGZWREREREKWwqyIiIiIhCyFWREREREJWQqzIiIiIhKyFGZFREREJGQpzIqIiIhIyFKYFREREZGQpTArIiIiIiFLYVZEREREQpbCrIiIiIiELIVZEREREQlZfwJVrbQZLckeEAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Confusion Matrix and Classification Report\n",
    "cm = confusion_matrix(y_test, y_pred)\n",
    "print(\"Confusion Matrix:\")\n",
    "print(cm)\n",
    "print(\"\\nClassification Report:\")\n",
    "print(classification_report(y_test, y_pred))\n",
    "\n",
    "# ROC Curve and AUC\n",
    "fpr, tpr, thresholds = roc_curve(y_test, y_proba)\n",
    "roc_auc = auc(fpr, tpr)\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(fpr, tpr, label=f'ROC curve (AUC = {roc_auc:0.2f})')\n",
    "plt.plot([0, 1], [0, 1], 'k--')\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Receiver Operating Characteristic (ROC)')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72cfbd88-8d92-4fa0-9686-65302b285271",
   "metadata": {},
   "source": [
    "6. Interpreting Your Propensity Scores\n",
    "The model estimates the probability that a given observation belongs to the positive class (e.g., receiving a treatment or converting). These probabilities can be used for further analysis, such as:\n",
    "\n",
    "Propensity score matching: Pairing units with similar scores from treatment and control groups.\n",
    "\n",
    "Weighting: Using these scores for inverse probability weighting to control for confounding factors.\n",
    "\n",
    "For example, you can inspect the first few propensity scores along with the features and actual outcomes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "execution_state": "idle",
   "id": "59762b7b-b003-42da-ac1f-f5ced0e5489f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           age        income  Actual_Treatment  Propensity_Score\n",
      "31   58.522782  34971.238892                 0          0.587480\n",
      "425  53.686316  30504.651159                 0          0.584693\n",
      "351  54.753562  32970.293436                 0          0.581095\n",
      "753  50.536418  32540.506547                 1          0.568729\n",
      "101  35.793547  16556.169327                 0          0.566944\n",
      "816  42.670503  27722.768980                 0          0.557082\n",
      "836  55.505005  42844.106890                 1          0.555158\n",
      "826  55.795721  43644.013838                 0          0.553791\n",
      "97   42.610553  30026.989732                 0          0.550217\n",
      "65   53.562400  43204.951581                 0          0.547774\n"
     ]
    }
   ],
   "source": [
    "# Create a DataFrame with test set results\n",
    "results = X_test.copy()\n",
    "results['Actual_Treatment'] = y_test.values\n",
    "results['Propensity_Score'] = y_proba\n",
    "results.sort_values(by='Propensity_Score', ascending=False, inplace=True)\n",
    "\n",
    "print(results.head(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "execution_state": "idle",
   "id": "9e9faf73-9ccc-47c6-a672-4ab5bd9932b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Saved local CSV: /tmp/propensity_model_results.csv\n",
      "Uploaded to: s3://syntasa-qa-01/user-notebooks/propensity_results.csv\n"
     ]
    }
   ],
   "source": [
    "#  Save to CSV using Pandas Data Frame \n",
    "local_path = \"/tmp/propensity_model_results.csv\"\n",
    "results.to_csv(local_path, index=False)\n",
    "print(f\"\\nSaved local CSV: {local_path}\")\n",
    "\n",
    "# Upload to S3\n",
    "s3 = boto3.client('s3')\n",
    "bucket_name = 'YOUR_BUCKET'  # ⬅️ Replace with your actual bucket name\n",
    "ouput_path  = 'PATH/TO/YOUR/FILE/propensity_results.csv' # ⬅️ Replace with your actual output path /file name\n",
    "try:\n",
    "    s3.upload_file(local_path, bucket_name,ouput_path )\n",
    "    print(f\"Uploaded to: s3://{bucket_name}/{ouput_path}\")\n",
    "except Exception as e:\n",
    "    print(\"Failed to upload to S3:\", e)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.9 (Recommended)",
   "language": "python",
   "name": "syntasa_kernel_python_39"
  },
  "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.9.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
