diff --git a/module3/exo3/exercice_fr.ipynb b/module3/exo3/exercice_fr.ipynb
index 0bbbe371b01e359e381e43239412d77bf53fb1fb..872294e192291c0cc3421df630894c9668266314 100644
--- a/module3/exo3/exercice_fr.ipynb
+++ b/module3/exo3/exercice_fr.ipynb
@@ -1,5 +1,1057 @@
{
- "cells": [],
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import statsmodels.api as sm\n",
+ "import statsmodels.formula.api as smf"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pd.set_option('display.precision', 3)\n",
+ "sns.set(style=\"whitegrid\", palette=\"pastel\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "url = \"https://gitlab.inria.fr/learninglab/mooc-rr/mooc-rr-ressources/-/raw/master/module3/Practical_session/Subject6_smoking.csv\"\n",
+ "data = pd.read_csv(url)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Aperçu du jeu de données :\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Smoker | \n",
+ " Status | \n",
+ " Age | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Yes | \n",
+ " Alive | \n",
+ " 21.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Yes | \n",
+ " Alive | \n",
+ " 19.3 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " No | \n",
+ " Dead | \n",
+ " 57.5 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " No | \n",
+ " Alive | \n",
+ " 47.1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " Yes | \n",
+ " Alive | \n",
+ " 81.4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Smoker Status Age\n",
+ "0 Yes Alive 21.0\n",
+ "1 Yes Alive 19.3\n",
+ "2 No Dead 57.5\n",
+ "3 No Alive 47.1\n",
+ "4 Yes Alive 81.4"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "print(\"Aperçu du jeu de données :\")\n",
+ "display(data.head())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Informations sur les variables :\n",
+ "\n",
+ "RangeIndex: 1314 entries, 0 to 1313\n",
+ "Data columns (total 3 columns):\n",
+ "Smoker 1314 non-null object\n",
+ "Status 1314 non-null object\n",
+ "Age 1314 non-null float64\n",
+ "dtypes: float64(1), object(2)\n",
+ "memory usage: 30.9+ KB\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "None"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "print(\"\\nInformations sur les variables :\")\n",
+ "display(data.info())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Valeurs uniques dans chaque variable :\n",
+ "Smoker: ['Yes' 'No']\n",
+ "Status: ['Alive' 'Dead']\n",
+ "Age: [21. 19.3 57.5 47.1 81.4 36.8 23.8 24.8 49.5 30. 66. 49.2 58.4 60.6\n",
+ " 25.1 43.5 27.1 58.3 65.7 73.2 38.3 33.4 62.3 18. 56.2 59.2 25.8 36.9\n",
+ " 20.2 34.6 51.9 49.9 19.4 56.9 46.7 44.4 29.5 33. 35.6 39.1 69.7 35.7\n",
+ " 75.8 25.3 83. 44.3 18.5 37.5 22.1 82.8 45. 73.3 39. 28.4 73.7 40.1\n",
+ " 51.2 22.9 41.9 58.1 37.3 41.7 36.3 80.7 38.6 27.9 47.6 77.6 26.2 45.4\n",
+ " 62.4 62.5 39.5 27.6 31.4 85. 18.9 35.3 25.4 72.8 27.3 55.9 32.8 53.6\n",
+ " 48. 56.1 18.3 62.8 18.6 46.3 36. 55.5 76.5 61. 26.8 70.5 81.8 32.5\n",
+ " 23. 83.7 45.9 59.9 66.5 47.5 89.3 57.2 21.3 34. 59.5 50.1 30.6 63.8\n",
+ " 27.4 22.5 24.2 56.8 28.9 87.8 88.4 33.7 63.6 71.7 48.5 82. 40.8 31.3\n",
+ " 24.4 32.2 53.1 26.3 41. 86.8 49.7 50.5 63.5 33.1 30.7 59.4 67.2 20.7\n",
+ " 41.6 37.7 89.7 45.2 55.4 44.8 76.7 48.4 82.7 27. 30.9 82.9 40.5 26.5\n",
+ " 29.9 75. 66.3 87. 79.5 51.7 78.2 80. 62.9 78.3 49.8 36.5 60.1 62.\n",
+ " 19. 87.6 24.3 22.2 68.4 89.2 44.5 43.3 57.4 45.6 18.1 63.4 67. 55.6\n",
+ " 23.3 57.6 38.4 35.2 60.3 48.7 23.7 46.9 65.8 83.1 23.2 66.7 58.8 56.7\n",
+ " 21.5 51.5 57.8 47.8 53.9 45.5 63.9 20.6 46.1 49.6 25.9 46.8 81. 84.3\n",
+ " 30.8 52.4 20.1 58.9 72.1 19.6 52.6 35. 35.4 55.1 49.1 39.7 66.4 58.6\n",
+ " 36.2 38.8 47.9 55.3 87.7 74.1 59.3 39.8 55. 42.8 34.2 81.7 61.3 58.5\n",
+ " 52.9 38.5 38.7 49.3 31.9 57.7 21.1 22.7 19.7 67.6 37. 79.9 56.3 31.1\n",
+ " 40.9 24.5 34.3 20.5 29. 43.6 42.3 63.2 53.2 53.7 62.7 39.3 47. 35.8\n",
+ " 49.4 51.3 85.2 25.2 79.4 31.6 74.6 81.3 71.4 56.4 59.1 61.8 36.1 33.5\n",
+ " 24.1 72.5 58.7 40.7 75.6 34.7 22. 61.2 37.2 25.7 88.8 65.6 58. 20.4\n",
+ " 46.2 29.7 43.7 61.1 78. 63. 82.3 36.7 67.5 86.2 79.1 75.1 52. 40.3\n",
+ " 75.9 35.5 76.2 21.7 50.6 42.2 33.6 61.6 23.6 57.1 21.8 43.2 26.6 45.7\n",
+ " 73.9 80.8 52.8 80.5 59. 42.5 76.9 33.3 80.2 30.5 19.8 84.5 56. 50.3\n",
+ " 60.7 32.9 86.9 41.5 45.3 77.2 69.4 49. 44.7 27.7 70.7 38. 32.3 24.9\n",
+ " 63.1 35.9 24. 88.5 82.4 87.4 69.5 59.6 56.6 34.5 48.3 88.7 25.5 21.2\n",
+ " 35.1 87.9 76.1 53.3 82.6 86.3 88.1 71. 62.1 52.2 25.6 75.3 77.5 75.2\n",
+ " 83.9 53. 50.9 29.8 50.7 66.1 27.2 38.1 66.8 55.2 51.6 41.4 65.4 67.7\n",
+ " 37.8 23.9 34.8 28.2 79.3 51.8 23.4 56.5 83.5 43.8 47.2 23.5 68.5 43.4\n",
+ " 19.5 62.2 19.2 61.9 30.2 29.4 29.6 29.3 40. 81.6 42.7 40.4 85.7 55.8\n",
+ " 28.8 31.8 78.4 43. 88.3 52.7 81.9 71.8 46.6 57.9 22.6 60.2 39.6 42.6\n",
+ " 72.6 44.1 26. 47.3 24.6 85.5 42.1 67.4 21.4 74. 42. 68.1 78.7 31.\n",
+ " 66.6 52.1 30.4 23.1 46.5 48.1 32.4 45.1 41.8 84.9 50.2 32.7 59.8 22.3\n",
+ " 47.7 18.7 30.3 43.1 59.7 18.8 27.5 86. 85.8 28.7 61.4 19.9 32.6 82.5\n",
+ " 76.8 26.4 50.8 69.6 21.9 33.9 77.1 37.1 83.4 24.7 38.2 77.8 42.4 28.5\n",
+ " 71.5 44.9 33.8 69. 60.5 44. 36.6 84.4 47.4 20.3 44.6 84.8 26.9 77.4\n",
+ " 41.3 53.4 82.2 64. 25. 19.1 52.3 51.1 73.8 65.3 28.3 74.8 51. 32.1\n",
+ " 55.7 58.2 60. 84.7 85.1 65.2 83.6 38.9 40.6 48.6 78.1 71.3 61.5 62.6\n",
+ " 53.8 41.1 42.9 29.1 80.9 31.5 33.2 81.1 88.6 48.9 89.9 30.1 63.3 65.\n",
+ " 89.5 39.2 28. 71.1 88. 34.9 83.8 86.7 71.6 52.5 34.1 20. 83.3 67.8\n",
+ " 28.1 79. 65.1 46. 40.2 48.8 27.8 26.7 74.4 41.2 20.9 34.4 60.8 31.2\n",
+ " 60.9]\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"\\nValeurs uniques dans chaque variable :\")\n",
+ "for col in data.columns:\n",
+ " print(f\"{col}: {data[col].unique()}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "KeyError",
+ "evalue": "'smoker'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2524\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2525\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2526\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;31mKeyError\u001b[0m: 'smoker'",
+ "\nDuring handling of the above exception, another exception occurred:\n",
+ "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtable_smoking\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcrosstab\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'smoker'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'outcome'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Tableau de contingence (nombre de femmes vivantes et décédées) :\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtable_smoking\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2137\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2138\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2139\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_column\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2140\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2141\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_getitem_column\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_getitem_column\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2144\u001b[0m \u001b[0;31m# get column\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2145\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_unique\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2146\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_item_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2147\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2148\u001b[0m \u001b[0;31m# duplicate columns & possible reduce dimensionality\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m_get_item_cache\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m 1840\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1841\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1842\u001b[0;31m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1843\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_box_item_values\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1844\u001b[0m \u001b[0mcache\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, item, fastpath)\u001b[0m\n\u001b[1;32m 3841\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3842\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3843\u001b[0;31m \u001b[0mloc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3844\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3845\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0misna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2525\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2526\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2527\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2528\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2529\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
+ "\u001b[0;31mKeyError\u001b[0m: 'smoker'"
+ ]
+ }
+ ],
+ "source": [
+ "table_smoking = pd.crosstab(data['smoker'], data['outcome'])\n",
+ "print(\"Tableau de contingence (nombre de femmes vivantes et décédées) :\")\n",
+ "display(table_smoking)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Colonnes du DataFrame : ['Smoker', 'Status', 'Age']\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"Colonnes du DataFrame :\", list(data.columns))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "candidates_smoker = [c for c in data.columns if any(k in c.lower() for k in ['smok', 'tabag', 'cigs', 'cig'])]\n",
+ "candidates_outcome = [c for c in data.columns if any(k in c.lower() for k in ['outcome', 'status', 'dead', 'alive', 'death'])]\n",
+ "candidates_age = [c for c in data.columns if 'age' in c.lower()]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Candidats possibles pour 'smoker' : ['Smoker']\n",
+ "Candidats possibles pour 'outcome' : ['Status']\n",
+ "Candidats possibles pour 'age' : ['Age']\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"\\nCandidats possibles pour 'smoker' :\", candidates_smoker)\n",
+ "print(\"Candidats possibles pour 'outcome' :\", candidates_outcome)\n",
+ "print(\"Candidats possibles pour 'age' :\", candidates_age)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Utilisation de : smoker_col = 'Smoker', outcome_col = 'Status', age_col = 'Age'\n"
+ ]
+ }
+ ],
+ "source": [
+ "if len(candidates_smoker) == 0 or len(candidates_outcome) == 0 or len(candidates_age) == 0:\n",
+ " raise ValueError(\"Impossible de détecter automatiquement les colonnes smoker/outcome/age. \"\n",
+ " \"Regardez la liste des colonnes ci-dessus et remplacez manuellement les noms dans le code.\")\n",
+ "smoker_col = candidates_smoker[0]\n",
+ "outcome_col = candidates_outcome[0]\n",
+ "age_col = candidates_age[0]\n",
+ "\n",
+ "print(f\"\\nUtilisation de : smoker_col = '{smoker_col}', outcome_col = '{outcome_col}', age_col = '{age_col}'\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Valeurs uniques (extrait) :\n",
+ " - Smoker: ['Yes' 'No']\n",
+ " - Status: ['Alive' 'Dead']\n",
+ " - Age: [21. 19.3 57.5 47.1 81.4 36.8 23.8 24.8 49.5 30. 66. 49.2 58.4 60.6\n",
+ " 25.1 43.5 27.1 58.3 65.7 73.2]\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(\"\\nValeurs uniques (extrait) :\")\n",
+ "for col in [smoker_col, outcome_col, age_col]:\n",
+ " try:\n",
+ " print(f\" - {col}: {pd.unique(data[col])[:20]}\")\n",
+ " except Exception as e:\n",
+ " print(f\" - {col}: erreur lors de l'accès -> {e}\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def map_smoker(val):\n",
+ " if pd.isna(val): \n",
+ " return np.nan\n",
+ " s = str(val).strip().lower()\n",
+ " # cas fréquents\n",
+ " if s in ('yes','y','current','smoker','smokes','smoking','yes (current)'):\n",
+ " return 'Yes'\n",
+ " if s in ('no','n','never','non','never smoked','never smoked'):\n",
+ " return 'No'\n",
+ " # si la modalité contient 'never' ou 'no'\n",
+ " if 'never' in s or 'no' in s:\n",
+ " return 'No'\n",
+ " if 'current' in s or 'smok' in s or 'yes' in s:\n",
+ " return 'Yes'\n",
+ " return s.capitalize()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def map_outcome(val):\n",
+ " if pd.isna(val):\n",
+ " return np.nan\n",
+ " s = str(val).strip().lower()\n",
+ " if any(k in s for k in ['dead','died','death','deceased']):\n",
+ " return 'Dead'\n",
+ " if any(k in s for k in ['alive','living','alive']):\n",
+ " return 'Alive'\n",
+ " # parfois on a 0/1\n",
+ " if s in ('1', '0'):\n",
+ " return 'Dead' if s == '1' else 'Alive'\n",
+ " return s.capitalize()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data['smoker_std'] = data[smoker_col].apply(map_smoker)\n",
+ "data['outcome_std'] = data[outcome_col].apply(map_outcome)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data['age_num'] = pd.to_numeric(data[age_col], errors='coerce')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Après standardisation — exemples :\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Smoker | \n",
+ " smoker_std | \n",
+ " Status | \n",
+ " outcome_std | \n",
+ " Age | \n",
+ " age_num | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Yes | \n",
+ " Yes | \n",
+ " Alive | \n",
+ " Alive | \n",
+ " 21.0 | \n",
+ " 21.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Yes | \n",
+ " Yes | \n",
+ " Alive | \n",
+ " Alive | \n",
+ " 19.3 | \n",
+ " 19.3 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " No | \n",
+ " No | \n",
+ " Dead | \n",
+ " Dead | \n",
+ " 57.5 | \n",
+ " 57.5 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " No | \n",
+ " No | \n",
+ " Alive | \n",
+ " Alive | \n",
+ " 47.1 | \n",
+ " 47.1 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " Yes | \n",
+ " Yes | \n",
+ " Alive | \n",
+ " Alive | \n",
+ " 81.4 | \n",
+ " 81.4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Smoker smoker_std Status outcome_std Age age_num\n",
+ "0 Yes Yes Alive Alive 21.0 21.0\n",
+ "1 Yes Yes Alive Alive 19.3 19.3\n",
+ "2 No No Dead Dead 57.5 57.5\n",
+ "3 No No Alive Alive 47.1 47.1\n",
+ "4 Yes Yes Alive Alive 81.4 81.4"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "print(\"\\nAprès standardisation — exemples :\")\n",
+ "display(data[[smoker_col, 'smoker_std', outcome_col, 'outcome_std', age_col, 'age_num']].head())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Comptes des valeurs manquantes :\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "smoker_std 0\n",
+ "outcome_std 0\n",
+ "age_num 0\n",
+ "dtype: int64"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "print(\"\\nComptes des valeurs manquantes :\")\n",
+ "display(data[['smoker_std','outcome_std','age_num']].isna().sum())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Taille après filtrage (Yes/No, Alive/Dead, age notna) : 1314 lignes\n"
+ ]
+ }
+ ],
+ "source": [
+ "data_filtered = data[data['smoker_std'].isin(['Yes','No']) & data['outcome_std'].isin(['Alive','Dead']) & data['age_num'].notna()].copy()\n",
+ "print(f\"\\nTaille après filtrage (Yes/No, Alive/Dead, age notna) : {len(data_filtered)} lignes\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Tableau de contingence (nombre de femmes vivantes et décédées) :\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | outcome_std | \n",
+ " Alive | \n",
+ " Dead | \n",
+ " total | \n",
+ " taux_mortalite | \n",
+ "
\n",
+ " \n",
+ " | smoker_std | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | No | \n",
+ " 502 | \n",
+ " 230 | \n",
+ " 732 | \n",
+ " 0.314 | \n",
+ "
\n",
+ " \n",
+ " | Yes | \n",
+ " 443 | \n",
+ " 139 | \n",
+ " 582 | \n",
+ " 0.239 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "outcome_std Alive Dead total taux_mortalite\n",
+ "smoker_std \n",
+ "No 502 230 732 0.314\n",
+ "Yes 443 139 582 0.239"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "table_smoking = pd.crosstab(data_filtered['smoker_std'], data_filtered['outcome_std'])\n",
+ "table_smoking['total'] = table_smoking.sum(axis=1)\n",
+ "table_smoking['taux_mortalite'] = table_smoking.get('Dead', 0) / table_smoking['total']\n",
+ "print(\"\\nTableau de contingence (nombre de femmes vivantes et décédées) :\")\n",
+ "display(table_smoking)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(6,4))\n",
+ "sns.barplot(x=table_smoking.index, y=table_smoking['taux_mortalite'].values)\n",
+ "plt.title(\"Taux de mortalité selon le tabagisme (standardisé)\")\n",
+ "plt.ylabel(\"Taux de mortalité\")\n",
+ "plt.xlabel(\"Statut tabagique\")\n",
+ "plt.ylim(0, table_smoking['taux_mortalite'].max()*1.15)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "bins = [18, 34, 54, 64, 120]\n",
+ "labels = ['18-34', '35-54', '55-64', '65+']\n",
+ "data_filtered['age_class'] = pd.cut(data_filtered['age_num'], bins=bins, labels=labels, right=True)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Tableau par classe d'âge et tabagisme :\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " outcome_std | \n",
+ " Alive | \n",
+ " Dead | \n",
+ " total | \n",
+ " taux_mortalite | \n",
+ "
\n",
+ " \n",
+ " | age_class | \n",
+ " smoker_std | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 18-34 | \n",
+ " No | \n",
+ " 212 | \n",
+ " 6 | \n",
+ " 218 | \n",
+ " 0.028 | \n",
+ "
\n",
+ " \n",
+ " | Yes | \n",
+ " 172 | \n",
+ " 5 | \n",
+ " 177 | \n",
+ " 0.028 | \n",
+ "
\n",
+ " \n",
+ " | 35-54 | \n",
+ " No | \n",
+ " 180 | \n",
+ " 19 | \n",
+ " 199 | \n",
+ " 0.095 | \n",
+ "
\n",
+ " \n",
+ " | Yes | \n",
+ " 196 | \n",
+ " 41 | \n",
+ " 237 | \n",
+ " 0.173 | \n",
+ "
\n",
+ " \n",
+ " | 55-64 | \n",
+ " No | \n",
+ " 81 | \n",
+ " 40 | \n",
+ " 121 | \n",
+ " 0.331 | \n",
+ "
\n",
+ " \n",
+ " | Yes | \n",
+ " 64 | \n",
+ " 51 | \n",
+ " 115 | \n",
+ " 0.443 | \n",
+ "
\n",
+ " \n",
+ " | 65+ | \n",
+ " No | \n",
+ " 28 | \n",
+ " 165 | \n",
+ " 193 | \n",
+ " 0.855 | \n",
+ "
\n",
+ " \n",
+ " | Yes | \n",
+ " 7 | \n",
+ " 42 | \n",
+ " 49 | \n",
+ " 0.857 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "outcome_std Alive Dead total taux_mortalite\n",
+ "age_class smoker_std \n",
+ "18-34 No 212 6 218 0.028\n",
+ " Yes 172 5 177 0.028\n",
+ "35-54 No 180 19 199 0.095\n",
+ " Yes 196 41 237 0.173\n",
+ "55-64 No 81 40 121 0.331\n",
+ " Yes 64 51 115 0.443\n",
+ "65+ No 28 165 193 0.855\n",
+ " Yes 7 42 49 0.857"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "table_age = data_filtered.groupby(['age_class','smoker_std','outcome_std']).size().unstack(fill_value=0)\n",
+ "table_age['total'] = table_age.sum(axis=1)\n",
+ "table_age['taux_mortalite'] = table_age.get('Dead', 0) / table_age['total']\n",
+ "print(\"\\nTableau par classe d'âge et tabagisme :\")\n",
+ "display(table_age)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(8,5))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
+ " return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "data_filtered['dead_bin'] = (data_filtered['outcome_std']=='Dead').astype(int)\n",
+ "sns.barplot(data=data_filtered, x='age_class', y='dead_bin', hue='smoker_std', estimator=np.mean)\n",
+ "plt.title(\"Taux de mortalité par tranche d'âge et tabagisme\")\n",
+ "plt.ylabel(\"Taux de mortalité\")\n",
+ "plt.xlabel(\"Classe d'âge\")\n",
+ "plt.ylim(0, None)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import statsmodels.formula.api as smf\n",
+ "data_filtered['Death'] = data_filtered['dead_bin']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Résumé du modèle : Death ~ age\n",
+ " Logit Regression Results \n",
+ "==============================================================================\n",
+ "Dep. Variable: Death No. Observations: 1314\n",
+ "Model: Logit Df Residuals: 1312\n",
+ "Method: MLE Df Model: 1\n",
+ "Date: Mon, 10 Nov 2025 Pseudo R-squ.: 0.3560\n",
+ "Time: 09:38:47 Log-Likelihood: -502.39\n",
+ "converged: True LL-Null: -780.16\n",
+ " LLR p-value: 7.883e-123\n",
+ "==============================================================================\n",
+ " coef std err z P>|z| [0.025 0.975]\n",
+ "------------------------------------------------------------------------------\n",
+ "Intercept -6.1045 0.321 -18.992 0.000 -6.735 -5.475\n",
+ "age_num 0.0977 0.006 17.578 0.000 0.087 0.109\n",
+ "==============================================================================\n"
+ ]
+ }
+ ],
+ "source": [
+ "model_age = smf.logit(\"Death ~ age_num\", data=data_filtered).fit(disp=False)\n",
+ "print(\"\\nRésumé du modèle : Death ~ age\")\n",
+ "print(model_age.summary())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Résumé du modèle : Death ~ age + tabagisme (C(smoker_std))\n",
+ " Logit Regression Results \n",
+ "==============================================================================\n",
+ "Dep. Variable: Death No. Observations: 1314\n",
+ "Model: Logit Df Residuals: 1311\n",
+ "Method: MLE Df Model: 2\n",
+ "Date: Mon, 10 Nov 2025 Pseudo R-squ.: 0.3579\n",
+ "Time: 09:38:54 Log-Likelihood: -500.95\n",
+ "converged: True LL-Null: -780.16\n",
+ " LLR p-value: 5.534e-122\n",
+ "========================================================================================\n",
+ " coef std err z P>|z| [0.025 0.975]\n",
+ "----------------------------------------------------------------------------------------\n",
+ "Intercept -6.3519 0.360 -17.637 0.000 -7.058 -5.646\n",
+ "C(smoker_std)[T.Yes] 0.2787 0.165 1.689 0.091 -0.045 0.602\n",
+ "age_num 0.0998 0.006 17.290 0.000 0.089 0.111\n",
+ "========================================================================================\n"
+ ]
+ }
+ ],
+ "source": [
+ "model_age_smoke = smf.logit(\"Death ~ age_num + C(smoker_std)\", data=data_filtered).fit(disp=False)\n",
+ "print(\"\\nRésumé du modèle : Death ~ age + tabagisme (C(smoker_std))\")\n",
+ "print(model_age_smoke.summary())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfIAAAFPCAYAAAC2xUx7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4U2X7wPFv2iSdjJZRaIvsPQsdjJayp2UICogLRV5xoL7qDxeouLeC4BbldYsoKktFoSDIEiggsxRaOqEtHWmb+fz+CEQKHQk2hZb7c11cNDnnOec+yUnuPOc8Q6OUUgghhBCiRvK41AEIIYQQ4uJJIhdCCCFqMEnkQgghRA0miVwIIYSowSSRCyGEEDWYJHIhhBCiBpNEXs0WLFjAgw8+eFFlly1bxpQpU8pdPn36dL777rsy1w0LCyMlJaXSfZSUlDB58mTWr19/UTFWJicnh7Fjx7J3795y17nY2C9GZa+pK8p7b48dO0ZcXJzTx7Bnzx7Gjx9Pbm7uRcdiMpmYOHEi69atu+ht1Ebt27fn+PHjVb7dQYMGsWnTpnKXv/TSSwwbNgyTyVTl+64qlR1DVXLX+7B9+3aGDx9e5du93Ekid8KgQYPo1q0bYWFh9O3bl0ceeQSDwXCpw7rABx98wPjx48tctnPnTpo1awbAww8/zOuvv17menPnzuXWW28lNja2yuMzm83Mnj2bJ554gi5dujhdztnYL0cFBQXMmTOH+fPnO46hMl27duXxxx/n4Ycfxmw2X9R+9Xo9b775Jq+99hoFBQUVrrtr1y6mTZtGZGQkvXv3ZtasWWRlZTmWK6V4+eWXiYqKIioqipdeegkZfqJ8CxYsYMGCBY7HycnJ7Nmzh5tvvpmPP/74ksV0sRWIymzZsoX+/fu7ZduuCg8PZ82aNZc6jGonidxJ77zzDjt37uS7775jz549vP322xeso5TCZrNdguiqztmaQ1WxWCyOv3U6He+//z49e/assu1f7urUqcP//vc/WrZs6VK5Xr168e6776LT6S563yEhIcydO5fExMQK18vLy+O6667jt99+4/fff8fPz49HHnnEsfyrr77i119/Zfny5fzwww+sW7eOL7/88qLjutKkpKQwb948rr/+eurUqXOpwxG1kCRyFwUFBRETE8Phw4cBuPHGG3n99deZPHky3bt3JyUlhczMTO644w4iIyMZOnQoX3/9daltmEwm7rvvPsLCwhg/fjwHDhxwLHvvvfcYMmQIYWFhjBo1il9++aVUWaUUTz/9NL169WLEiBFs3rzZsezGG2/km2++KTPus5eyvvrqK3788Uc+/PBDwsLCuOOOOwDIzMzknnvuoXfv3gwaNIglS5aU+xo8/PDDzJ07l2nTphEWFsYNN9xAampqqX199tlnDBs2zPGjIDEx0VHrGz58OCtXrnSsn5ubyx133EHPnj2ZOHEiycnJbou9sn1VFOf5UlJSuOGGGwgLC2PatGkXXArftWsXkydPJjw8nDFjxrBlyxbHstOnT/PII48QHR1NREQEd955p2PZ77//ztixYwkPD2fSpEns37/fsey9994jJiaGsLAwhg8fXur9P9e6desYN24cM2bM4N577y1VQzxfbGwsI0eOxN/fHx8fH2644Qb++usvx/Lvv/+eW2+9lSZNmhAUFMS0adMct3DKMmvWLPr160evXr2YOnWq47MC9nPnqaeeYsaMGYSFhXHttdc63gOlFM899xx9+vShV69exMXFcejQoTL3sWzZMgYPHkxYWBiDBg3ihx9+cCxbunQpI0eOJCIigttuu63UuXmugoIC/u///o/evXszcOBAFi1a5PghfvaWy4svvkhERASDBg26qNtNeXl5LFmyhClTphAZGcm6devIyMhwLE9JSWHq1KmEhYVxyy238NRTT5WqOVd0Dp2vvM9BfHw87777LqtWrSIsLIwxY8ZUGrfNZnN8F0VFRXHvvfdy+vTpC9YrKiri9ttvJysri7CwMMLCwsjMzCQhIYFJkyYRHh5OdHQ08+bNu+C2wvr16xk8eDBRUVG8+OKLjtc+OTmZm266yXEF6IEHHiA/P99Rbt++fYwbN46wsDBmzZrFfffd57hKd/7VgfI+LwsWLGDWrFk8+OCDhIWFERcXR1JSEu+++y59+vQhNjaWjRs3OrZTUFDAo48+SnR0NDExMbz++utYrdZKX8dqo0SlBg4cqP744w+llFJpaWlq1KhR6vXXX1dKKXXDDTeo2NhYdejQIWU2m5XJZFJTp05VTzzxhCopKVF///23ioqKUps2bVJKKTV//nzVqVMntWrVKmUymdQHH3ygBg4cqEwmk1JKqZUrV6qMjAxltVrVihUrVPfu3VVmZqZSSqlvv/1WdezYUS1evFiZTCa1YsUK1bNnT5Wbm+uI5euvv3asO3nyZMcxtGvXTh07dkwppdTs2bPVa6+95lhmtVrV+PHj1YIFC5TRaFTJyclq0KBBKj4+vszXY/bs2apHjx5q69atymg0qqeffvqCfd1yyy0qNzdXFRcXK4PBoPr376+WLl2qzGaz2rt3r4qMjFSHDh1SSil13333qVmzZimDwaAOHjyooqOj3RZ7RfuqLM7zXXfddeq5555TRqNRbd26VfXo0UM98MADSimlMjIyVGRkpFq3bp2yWq1q48aNKjIyUmVnZyullLr99tvVvffeq06fPq1MJpPasmWLUkqpvXv3qqioKPXXX38pi8WivvnmGxUbG6tKSkpUYmKi6t+/v8rIyFBKKZWSkqKOHz9eZmx//vmnOnDggLJarWr//v2qT58+6pdffilz3fMtXrxYXXvttY7HPXv2VLt27XI8TkhIUD169Ci3/DfffKMKCgqU0WhUzzzzjBozZoxj2ezZs1VERITavXu3MpvN6r///a+67777lFJKxcfHq/Hjx6u8vDxls9nUkSNHHOf+uQwGgwoLC1OJiYlKKaUyMzMd79Evv/yihgwZoo4cOaLMZrNauHChmjRpkqPsuefSQw89pO644w5VUFCgUlJS1LBhw0p9fjp16qS++uorZbFY1Geffab69eunbDZbmcd87nfEuXJyctTq1atVUVGRKigoUPfcc4+aOXOmY/l1112nXnjhBWU0GtW2bdtUWFiY0+fQuSr7HMyfP9+x3fKcewxnz4H09HRlNBrVnDlz1P33319muT///FPFxMSUem7Pnj1q586dymw2q5SUFDVixAi1ePFix/J27dqpG264QeXm5qrU1NRSr/2xY8fUxo0bldFoVNnZ2er6669XzzzzjFJKKaPRqAYMGKA+/vhjZTKZ1Jo1a1Tnzp0d3wnnxlLR52X+/PmqS5cuKj4+XpnNZvXQQw+pgQMHqkWLFimTyaS++uorNXDgQEe8M2fOVHPmzFEGg0GdOnVKTZgwQX3xxRcVvp7VSWrkTrrrrrsIDw/n+uuvJyIiwlEbBBg/fjxt27ZFq9Vy6tQpduzYwYMPPoiXlxcdO3bk2muvZfny5Y71O3fuzIgRI9DpdEybNg2TycTu3bsBGDlyJEFBQXh4eDBq1CiaN29OQkKCo2xgYCA333wzOp2OUaNG0bJly3/doGnPnj3k5ORw9913o9fradasGdddd12FtdEBAwYQERGBXq/n/vvvZ9euXaSnpzuWz5gxg/r16+Pt7c26desICQlhwoQJaLVaOnfuzPDhw1mzZg1Wq5Wff/6ZWbNm4evrS7t27cq9z/9vY69sXxXFeb60tDT27NnDvffei16vd9Tazlq+fDn9+/cnNjYWDw8P+vXrR5cuXVi/fj1ZWVnEx8fz1FNPUa9ePXQ6HZGRkQB8/fXXTJo0ibCwMDw9PZk4cSJeXl7s2rULT09PTCYTiYmJmM1mQkNDueqqq8p8XaKiomjfvj0eHh506NCB0aNHs3Xr1kpfzwMHDrBo0SL+7//+z/FcUVER/v7+jsd16tShqKio3PvkEydOxN/fH71ezz333MOBAwdK3acfOnQo3bp1Q6vVMmbMGMcVB61Wi8Fg4OjRoyilaN26NY0bNy5zHx4eHhw+fJiSkhIaN25M27ZtAfjyyy+ZMWMGrVu3RqvVcscdd7B///4LauVWq5WVK1fywAMP4O/vT2hoKNOmTStVsw8ODua6667D09OT8ePHc/LkSU6dOlXpa3iugIAAhg8fjo+PD/7+/sycOZNt27YB/5xDs2bNQq/XEx4e7vQ5dL6L+QxX5KuvvuL++++nSZMm6PV67r77btasWVPqVllFunTpQo8ePdBqtYSGhjJp0iTHcZ91++23U79+fYKDg7npppv46aefAGjevDn9+vVDr9cTGBjItGnTHGV3796NxWLhpptuQqfTMWzYMLp27VpmDJV9XsLDw4mJiUGr1TJixAhyc3OZMWOG47s1NTWV/Px8Tp06RXx8PI8++ii+vr40aNCAW265hRUrVlzMS+sW2ksdQE2xcOFC+vbtW+aypk2bOv7OysqiXr16pb74goODS7XSbtKkieNvDw8PgoKCHI2Lvv/+exYvXuz44ikqKip1yTYoKAiNRlNq2+c2TLoYqampZGVlER4e7njOarWWeny+c4/Bz8+PevXqkZWV5Xgtzn1NUlNTSUhIuGD7Y8aMIScnB4vFUmr94OBgt8Re2b4qivN8WVlZ1K1bF19f31LbOvtjJi0tjdWrV/P77787llssFqKiosjIyKBevXrUq1fvgu2mpaWxdu3aUj8eDAYD2dnZREVF8eijj7JgwQKOHDlCdHQ0Dz/8MEFBQRdsZ/fu3bzyyiscPnwYs9mMyWRixIgRF76A5zh+/Di33347jz76aKnXwNfXt1TjzsLCQnx9fUudh+e+Xq+//jqrV68mJycHDw97XSE3N9dxf7hhw4aO9b29vSkqKgKgT58+TJ06lXnz5pGWlsbQoUOZPXt2qc/S2Xhef/11PvroIx577DF69uzJ7Nmzad26NWlpaTz33HO8+OKLjvWVUmRmZhISEuJ4Ljc3F7PZXOr9Dw4OJjMz0/H43Dh9fHwAHLE6q7i4mOeff54NGzaQl5cH2N9Pq9Xq+K44u22wf26cOYfOdzGf4YqkpaVx1113Od4/sH9XZWdnl3m+nS8pKYkXXniBvXv3UlxcjNVqpXPnzqXWOfdzGBIS4vgey87O5plnnmH79u0YDAaUUtStWxewf+7O/w48dzvnat68eYWflwYNGjjW9fb2JiAgAE9PT8djsL/fWVlZWCwWoqOjHevbbLZy93spSCKvAueeVI0bNyYvL4/CwkLHF1B6enqpk//ce2Q2m43MzEwaN25Mamoqjz/+OB9//LGjRjZ27NhS+8rMzEQp5dhnenp6qV/xrsYL9g9CaGgoP//8s9PbOPcYDAYDeXl5pWpP53/QIiIiWLx48QXbsVqtaLVa0tPTad26NUCpmn1Vxh4YGFjhviqK83yNGjUiPz+foqIiRzJPS0tzxNe0aVPGjh3LM888c0HZrKws8vLyyM/Pd3xBnRtDjx49uOuuu8rcb1xcHHFxcRQWFjJ37lxeeeUVXn755QvWe+CBB7jhhhv44IMP8PLy4tlnn62wO1tqairTpk3jzjvvZNy4caWWtW3blgMHDtCtWzfAXms/WwM+348//sjatWtZvHgxoaGhFBQUEBER4XQr95tuuombbrqJ7Oxs7rvvPj744APuu+++C9aLiYkhJiaGkpIS3njjDebMmcPnn39O06ZNueOOOyq9DxwQEIBOpyMtLY02bdoAF35Oq8JHH31EUlISX3/9NY0aNWL//v2MGzcOpRSNGjUiLy+P4uJiRzI//3ws7xw6X2Wfg7J+dFWkSZMmPPfcc/Tq1avSdcva9pNPPkmnTp149dVX8ff35+OPP77gylZ6errjPEpLS3N8f7z66qtoNBp++OEHAgIC+PXXX5k3bx5g/9yV9R1YXo8QZz8vFTl7VeLPP/9Eq708U6ZcWq9iTZs2JSwsjNdeew2j0ciBAwdYunQpcXFxjnX27dvHzz//jMVi4ZNPPkGv19O9e3eKi4vRaDQEBgYC8O2335ZqKAT2WuWSJUswm82sWrWKxMREl7uKNWjQgBMnTjged+vWDX9/f9577z1KSkqwWq0cOnSo1CX9861fv57t27djMpl488036d69e7m/UAcMGMCxY8f4/vvvMZvNmM1mEhISSExMxNPTk6FDh/LWW29RXFzMkSNHKmxI9W9ir2xfFcV5vpCQELp06cKCBQswmUxs3769VM1pzJgx/P7772zYsAGr1YrRaGTLli1kZGTQuHFj+vfvz1NPPUVeXh5ms9lx6fDaa6/lyy+/ZOfOndhsNoqKili3bh2FhYUcPXqUzZs3YzKZ0Ov1eHl5OWoQ5zMYDNSrVw8vLy8SEhIcly3LkpmZyc0338z1119fZp/6sWPHsnjxYjIzM8nMzGTx4sXl3v4wGAzo9XoCAgIoLi7mtddeK3e/50tISGD37t2YzWZ8fHzQ6/VlHt+pU6dYu3YtRUVF6PV6fH19HetNnjyZ9957z/G5KSgoYNWqVRdsw9PTkxEjRvD6669TWFhIamoqixcvdqohmCsMBgNeXl7UrVuX06dP89ZbbzmWnX8O7dy50+lz6HyVfQ4aNGhAamqq071qpkyZwhtvvOG4MpiTk8Ovv/5a5roNGjTg9OnTpW6fGAwG/Pz88PPzIzExkS+++OKCch9++CF5eXmkp6ezZMkSRo0a5Sjr6+tL3bp1yczM5IMPPnCU6dGjB56ennz66adYLBZ+/fVX9uzZU2ZcrnxeKtK4cWP69evHCy+8QGFhITabjeTkZKduVVUXSeRu8Nprr5GamkpMTAx3330399xzD/369XMsHzx4MCtXriQiIoLly5ezYMECdDodbdq04dZbb2Xy5Mn07duXQ4cOXdBVq1u3bhw/fpzevXvzxhtvMH/+fAICAlyKb+LEiRw5coTw8HDuvPNOPD09efvttzlw4ACDBw+md+/ePP744xQWFpa7jauvvpqFCxcSFRXFvn37KvyV6+/vz4cffsjKlSuJiYkhOjqaV155xdGKde7cuRQVFdGvXz8efvhhrrnmGrfFXtG+KovzfK+++iq7d+8mKiqKhQsXlqrJNm3alEWLFpVqBfvhhx86vkhfeukltFotI0eOpG/fvnzyySeAvQ/5s88+yzPPPENkZCTDhg1j2bJlgL23w6uvvkpUVBTR0dHk5ORw//33lxnbE088wfz58wkLC2PhwoWMHDmy3Nf0m2++ISUlhYULFzpaHoeFhTmWT548mYEDBzpqN7GxsUyePLnMbY0bN47g4GBiYmIYPXo0PXr0KHe/5zMYDDz++ONERkYycOBA6tevz6233nrBejabjcWLFxMTE0NkZCTbtm3jiSeeAOz336dPn85///tfevbsydVXX018fHyZ+5szZw4+Pj4MGTKE66+/nquvvpoJEyY4Ha8zbr75ZoxGI71792bSpEnExMSUWv7KK6+wa9cuoqKieOONNxg1ahR6vR6o/Bw6V2Wfg7O3VaKiopxqg3LTTTcxaNAgbr31VsLCwrjuuuvK/WHfunVrRo8ezZAhQwgPDyczM5PZs2fz008/0bNnT+bMmeNI0ucaPHgw11xzDePGjWPAgAFMnDgRgLvvvpu///6b8PBwZsyYUao7rF6vZ8GCBSxdupSIiAh++OEHBgwY4HjNzuXK56UyL730EmazmVGjRhEREcGsWbM4efLkRW3LHTTK2WteQpxx9j7TxX4ohBBlu++++2jVqhWzZs261KHUGNdeey2TJ0+u8h9hNYnUyIUQ4hJJSEggOTkZm81GfHw8a9euZciQIZc6rMva1q1bOXnyJBaLhe+++46DBw9ecKXjSnN53rkXQogrwKlTp7jnnns4ffo0TZo0cTQSE+VLSkrivvvuo6ioiGbNmjF//vxyuyleKeTSuhBCCFGDyaV1IYQQogaTRC6EEELUYDXyHvmOHTsudQhCCCFEtSpvgJ4amcih/ANytx07dlyyfVeX2n6Mtf34oPYfoxxfzVfbj7Gqj6+iCqxcWhdCCCFqMEnkQgghRA0miVwIIYSowSSRCyGEEDWYJHIhhBCiBpNELoQQQtRgksiFEEKIGkwSeRVq3749L7zwguPxhx9+yIIFC6pk20uWLGHkyJE88MADVbI9IYQQtYMk8iqk1+v5+eefycnJqfJtf/7557z33nu8+uqrVb5tIYQQNVeNHdntcqTVapk0aRKffPIJ999/f6llqampPProo+Tk5BAYGMjzzz9PcHAwDz/8MP7+/uzdu5eTJ0/y0EMPMWLEiFJl586dy4kTJ7jzzjuZMGECBQUF+Pr6cttttwFw9dVX88477wAwffp0evXqxe7du2nfvj0TJkxg/vz55OTk8Morr9CtWzeKiop4+umnOXToEFarlbvvvpshQ4awbNky9u7dy+jRowH4z3/+w6233kp4eDiPPfYYe/fuRaPRMGHCBG655RaSk5N56qmnyM3Nxdvbm6effprWrVuzatUqFi5ciIeHB3Xq1OGzzz6rhldfCCEuLYuyctKaQ5Y1l2K9qdr2K4m8ik2dOpUxY8Ywffr0Us8//fTTjBs3jvHjx7N06VKeeeYZFi1aBEBWVhaff/45R48eZebMmRck8nnz5rFx40Y++eQTAgMDK7xcn5yczJtvvknbtm2ZOHEiP/74I1988QVr167lnXfeYdGiRbzzzjv07t2b559/nvz8fK699lr69u1b7jb3799PZmYmP/30EwD5+fkAzJkzh6eeeooWLVqwe/dunnrqKZYsWcKiRYv48MMPCQoKcqwrhBC1jVlZyLBkk2bNIt1yipPWHKzYAGhct261xVFrE/nHf5X9fM9g6NbE/vfPhyGt4MJ1mvjDiHb2v/dmwvZUuKWnc/v19/dn7NixLFmyBG9vb8fzO3fudCTgsWPH8vLLLzuWDRkyBA8PD9q0acOpU6ec21E5QkNDad++PQBt2rShT58+aDQa2rdvT2pqKgAbN27kt99+46OPPgLAaDSSnp5e7jabNWtGSkoKTz/9NLGxsURHR2MwGNi5cyf33nuvYz2Tyf4LNCwsjIcffpiRI0cydOjQf3U8QghxubAqG5nWbFItmaRassiy5mBDAaABGnjUp4m2IU21jchJTIfm1RNXrU3kl9LNN9/MNddcwzXXXFPuOhqNxvG3Xq93afuenp7YbDbHY6PRWOa2PDw8HI81Gg1Wq9WxbP78+bRq1arUdvfu3VvmduvVq8fy5cvZuHEjn3/+OatWreKxxx6jbt26LF++/IL45s2bx+7du1m3bh3jxo3j+++/JyAgwKVjFEKIy8FpawEplgxSLJmkWbKwYP8e1QANPQMI9mxMiLYRTbQN0Wt0/5RTmdUWY61N5M7UoIe1rXydLkH2f66oX78+I0aMYOnSpUyYMAGw11JXrFjBuHHj+PHHH//VrDghISGsW7cOgH379nHixAmXykdHR/Ppp58yZ84cNBoNf//9N506dSIkJIQvvviC0aNHk56eTkJCAgA5OTno9XqGDx/OVVdd5bivHxoayqpVqxg5ciRKKQ4ePEiHDh1ITk6me/fudO/end9//52MjAxJ5EKIGsGirKRZTpJsSSfZkk6+zeBYVt+jDqHaIEK1QTTVNsLrnMR9KdXaRH6p3XrrraUaeT3++OM8+uijfPjhh47Gbhdr+PDhLF++nLFjx9K1a1datGjhUvk777yT5557jjFjxqCUIiQkhHfffZdevXoREhLC7Nmz6datG507dwbs9/AfeeQRR239v//9LwAvv/wyTz75JG+//TYWi4VRo0bRoUMHXnrpJY4fP45Sit69e9OhQ4eLPlYhhHC3YpuRZEs6x8xppFgyHLVuHVpaaUNopmtKM20Q/h6+ZZY/XQxJuVBkhn7VdDn9XBqllKr+3f47l3Ie29o+hy7U/mOs7ccHtf8Y5fhqvkt9jAZbMUnmVI6aT5BuPcnZRFjPw58W2mCu0jWliWdDPDUX9tJWCrKLIDEHErMhu9j+vKcGZkSA1tM985GXtz2pkQshhLgiGGzFJJpPkGhOIdOa7Xg+yLMBLXTBtNAGE+BZeWvzvZmwLsn+t6cGWgZAq0BoUd+exKubJHIhhBC1VonNxFHLCY6YkkmzngTsDdWCPRvRShdKC10I/h4+5ZbPK4FDpyAlD8Z1Ag8NXFUf2jSA1oHQIgD0lyB5n0sSuRBCiFrFqmykWDI4ZDrGMUs6tjN9u5t4NqCN7ipa6ULx9fAut3yJBY5kw4GTkH6mi7KnBnKKoKEf1POGke2q40icI4lcCCFErZBtzeOAKYnD5uOUKPu4FgEedWmnb04bXTPqePhVuo1TBvh6D1jP3DQPrQsdGtlr3/rLNGNepmEJIYQQlTMpM4nmFPabksiy2ue58NF40VXflvb65jTwqF9q3I7zFRrh7yx7sq7rDQ18IaQuhNSD9g2hjld1HcnFk0QuhBCixsm25rHPlMhh03HMWNAAV2mb0lHfkqu0TctsbX6WUpCcB3sy4FguKMAG9G4GGg2M7VRdR1E1JJFXoY4dO9Ku3T83ThYuXEhoaOgljEgIIWoPq7KRZE5ln+kI6Vb7cNb+Gh966NvTXt+i3H7e59qdbv+Xd2ZAzMZ+9kG/2jZ0Z+TuJYm8Cnl7e5c5ZKkQQoiLV2Izsd98lL3GIxiUvdN2qDaIzvrWNNc2xaOC2jeA1QaeZ1ZJy4dCE3RsBF2bQJC/u6N3P5mP3M2WLVvGvHnzHI//85//sGXLFsA+bOvLL7/MNddcwy233EJCQgI33ngjgwcPZu3atQBYrVZefPFFJkyYQFxcHF9++SUAW7Zs4T//+Y9ju/PmzWPZsmUAvPLKK4waNYq4uDhefPFFwD7M6j333MOECROYMGECO3bsAGDr1q2MHTuWsWPHMm7cOAoLC93/ogghhBPyrIXEF//FpwU/saVkD0Zloou+DZP9R3C1X39a6kLKTeJKQWo+/HQAVhz85/l+LWBaLxjSpnYkcZAaeZUqKSlh7NixgH0WsoULF1a4flFREZGRkTz00EPcddddvPHGG3z00UckJiYye/ZsBg8ezNKlS6lTpw7ffvstJpOJyZMn069fv3K3efr0aX755Rf/ALBFAAAgAElEQVRWr16NRqNxTCP67LPPcvPNNxMeHk5aWhq33XYbq1at4qOPPmLu3Ln06tULg8GAl1cNaNkhhKjVTlpz2Wk8QJL5BArw1/jS1astHfQt8NJUPMmUTUFSDvyVBhln6iVN/MFiA60H1K2FX3G1MpFvLt5Notm1iUQq01oXSh+f7hWu4+qldZ1OR//+/QFo164der0enU5Hu3btHFOO/vHHHxw8eJA1a9YAUFBQwPHjx9Hpyh6s39/fHy8vLx577DEGDBjAgAEDANi0aRNHjhxxrFdYWEhhYSE9e/bkhRdeIC4ujmHDhuHnV3n3DCGEqGpKKdKsJ/mrZD+p1iwAGnrUp4dXB1pVUPM+V1YhrDkMp0vsj1sG2KeuDq6+qcEviVqZyC8nFU05qtPpHN0izp1y1MPDwzHlqFKKxx9/nJiYmFLb3b59e5nb1Wq1LF26lM2bN7NixQo+/fRTlixZgs1m46uvvio1RzrAjBkziI2NZf369Vx33XUsXry4Co9eCCEqppTihCWLHca/yTjTgC3EszE9vDoQqm1cYdcxsN//1mjsI67V8YJis/3+d89gCKy87VutUCsTeR+f7pXWnqvL2alBbTYbmZmZjqlBnRUdHc0XX3xB79690el0JCUlERQUREhICImJiZhMJoxGI5s3b3ZcHi8pKSE2Npbu3bszbNgwx3Y+/fRTpk+fDsD+/fvp2LEjycnJtG/fnvbt27Nr1y6SkpJkylEhhNspFCnmTLYb95J5pv93c21Tenp1IkgbWGl5q80+8tq2E9C3ObRrCD46uKXXpR8ytbrVykR+OTk7NWhcXBxt27Z1TA3qrGuvvZbU1FSuueYalFIEBASwaNEimjZtyogRI4iLi6NFixZ06mTv+GgwGLjzzjsdNfRHHnkEgMcee4x58+YRFxeH1WolPDycefPm8cknn7BlyxY8PDxo06YN/fv3Z8+ePVX7IgghxDnSLac4GJLO9iL7zCMttMH08u5EI8/KKxE2ZR/7fGuKvQuZpwYMpn+WX2lJHGQa0xq17+pS24+xth8f1P5jlOOrmU5Zc9lSspcUSwZgH8Al0rszDZ1I4ADHT8PGY5BTbL+U3rkxhIeCf8Xt3y4JmcZUCCFErVFgM7CtZB+HzMcB+8xjdY/rGNC5/B44Zckvgdxi6NQIIprVzhboF0MSuRBCCLcwKhN/lRxgr+kwVmw08KhHb+9uNNM1YUfJjkrLny6G7anQv6X9knmnxvYx0APLn3X0iiSJXAghRJWyKcUB01G2GvdSokz4a3yI9O5KW91VlbZCBzBa7I3YdmfY74k3qWMfRtXTQ5J4WSSRCyGEqDKpliw2Fe8i25aHDi1RXl3p6tUWrabyVmg2ZZ+J7M9kKLbYu5P1aw5tKm/EfkWTRC6EEOJfK7QVsal4N0ct9sG42utaEOndBT8P56vQaxPtXcp0HtDnKujR1D4am6iYJHIhhBAXzaps7DEdZnvJPixYCfJsQD/vHjR2oi84lJ7QpEuQfYz0fs3B7zJsiX65kkQuhBDioqRbThJf/Be5tny8NXqivcNor2vh1H1wpWBfJmxJgWs6Q30faFrH/k+4RhK5EEIIlxiViT9L9rDfdBSAjvpWRHl1wdvDuf5gucWwz9KO/KP2y+jZxfZELi6OJHIhhBBOUUqRZEllY/FOilQJgR51ifUJJ0jbwKnyVpt9VrJtJ8Cq6tAyAGJb2hu1iYsniVwIIUSlimwlbCj+iyRLKp54EOHVhR5e7fF0YlayszYnw8508NNBqEpkaPvWOHEVXlRCErkQQohyKaU4Yk5hY8lOjMpEU8+GxPqEU9/TuZvZNmUfThXsM5LZFEQ1g727T0sSryKSyIUQQpTp3Fq4Fk+ivcPorG/tVGM2sM8P/usRe1eyloHgq7eP0iaqliRyIYQQF0gyp7K+eDslZ2rhA3wiqOfp71RZm4IdqbD1hP3vzEJ7IhfuIYlcCCGEg0mZ2VS8iwPmY3jiQV/vHnTVt3G6Fp5XAj8fhoxC+73wIW3gqvpuDvoKJ4lcCCEEABmWbH4r3kK+zUADj/oM9o0i0LOu8+UL4Pu/wWyDtg1gQEvw1rkxYAG4OZHHx8fz7LPPYrPZuPbaa5kxY0ap5QUFBTz00EOkpaVhtVq59dZbmTBhgjtDEkIIcR6bUuw07me7cR8KCPPqQLhXZ5dapAM08rMP6NKxMbRr6J5YxYXclsitVivz5s1j8eLFBAUFMXHiRAYNGkSbNm0c63z22We0bt2ad955h5ycHEaMGEFcXBx6vYzNJ4QQ1cFgK2Zt0RbSrCfx0/gw2DeKYG0jp8unF0BOEXQ+MzvZmI5Ia/Rq5rZEnpCQQPPmzWnWrBkAo0ePZu3ataUSuUajwWAwoJTCYDBQr149tFq52i+EENXhuDmd34u3UqJMtNAGM8AnAm8P5ypSSsGONPtMZR4aaBFgHx9dknj10yillDs2vHr1ajZs2MCzzz4LwPfff09CQgJz5851rFNYWMjMmTNJSkrCYDDw+uuvM2DAgEq3vWNH5RPSCyGEKJtCcaJBLhkBp9HYNDTLDqRxXl00OJeFzcqTw5aWnFb10GOirTaJeh6Fbo5a9OrVq8zn3Vb9Lev3wfmtHjdu3EjHjh1ZsmQJycnJTJs2jfDwcPz9K+/iUN4BuduOHTsu2b6rS20/xtp+fFD7j1GO7+IV2Ur4pehPMqynqevhzzD/PjQMcL5ZeUYBrD4EBQquqgfD2urx0bV3OQ55D13fXnncNtNrkyZNyMjIcDzOzMykcePGpdZZtmwZw4YNQ6PR0Lx5c0JDQzl69Ki7QhJCiCtamuUkSwt/Id16kpbaECb4D6Ghp2t9wxIyoNAEvZvZ74f7SKv0S85tibxr164cO3aMlJQUTCYTK1asYNCgQaXWadq0KZs3bwbg1KlTJCUlERoa6q6QhBDiiqSUYrfxED8a1lGijPTx7s4w3z54aZzLwlbbP38PaAXjO0NEqNwPv1y47dK6Vqtl7ty5TJ8+HavVyoQJE2jbti1ffPEFAFOmTOHOO+/kkUceIS4uDqUUDz74IIGBMvyPEEJUFbOysL54O0fMKfhqvBnq24emWuf7huWVwMqDEBYMHRqB3hNCnO9aLqqBW5uIx8bGEhsbW+q5KVOmOP4OCgrio48+cmcIQghxxcq3FbLGsIlsWx5Bng0Y5tsHPw/nJ/5OPg1rDkOJxT5uegfne6WJaiR9vYQQohY6Ycnkl6LNGJWZTvpW9PMOc3qAF6VgVzr8cdx++XxQK3s/cXF5kkQuhBC1zF7jEf4o2YUGiPXpRUd9K6fLWm2w7ij8fRJ8dTC6PTRxbsZScYk49fNs27ZtGAwGAL755hvmzp1LSkqKWwMTQgjhGquyEV/8FxtLduKl0RPnN8ClJA72GniBCRr7waSuksRrAqcS+bx58/D19eXw4cMsXryY4OBgHnvsMXfHJoQQwkklNhMrDRv425RIA496TPAf7FKjNqPF/r+HBka2g2s6g7+Xm4IVVcqpRK7VatFoNMTHxzNlyhTuuOMO8vPz3R2bEEIIJ+RZC/ne8Bup1ixaaIMZ5z+IOh5+Tpc/fho++QuScu2PvbSg83RTsKLKOZXILRYLO3bsYM2aNfTu3RuwT4oihBDi0sqwZPOdYS2nbQV017dnuG9fdBrnmz/tzYQf94PFZv8nah6n3u17772XefPm0bt3b9q2bUtSUhLNmzd3d2xCCCEqkGhO4beirdhQ9PfpRScX7ocrZW+VvjMdvLVwdQf7FKSi5nEqkQ8ZMoQhQ4Y4Hrds2ZK33nrLbUEJIYQon1KKBNMhNpckoEPLCN8+NNM1cbq81QY/H4Ej2RDgA3EdoJ63GwMWbuXUpfXs7GweeOABpk2bBsD+/fsdI7QJIYSoPkopNpXsZnNJAn4aH8b5D3QpiQPYFBQY7TXwiZ0lidd0TiXyxx9/nJ49e2I0GgFo3bo1n3/+uVsDE0IIUZpFWfm1+E/2mA4T4FGX8f6DaODCpCdnx0zXedpr4eM6gbdMelLjVZjIv//+e8A+c9nUqVPx9LQ3Y9Tr9Xh4uG2+FSGEEOcxKhMrDBtINJ+gqWdDxvkPxN/D1+ny2UXw2S5IPdPhyEcHWvkarxXKvUe+bt06kpKSABwJ/Kz8/Pwy5xsXQghR9YpsJawwxJNty6OVNoRBvlFoNc73D0svsLdMN1rhlEEmPaltyk3kgYGB3H///QAMHz6cuXPnkpeXx7Jly/j888+ZMGFCtQUphBBXqnybgZ8M68m3Geikb0W0d088XJg/9HgurDxkv6w+pDV0bOzGYMUlUW4i79atm+Pv6dOn88MPP5Cfn8/69eu58cYbGTt2bLUEKIQQV6psax4rDPEUqRJ6enUkwqszGheS+KFT8MsR0ACj2kMrmSW6VnJ61IAxY8YwZswYd8YihBDijAxLNisNGzBhpq93d7p5tXOpvNUG207Y74Nf3UEup9dmTjV1uOeeezh9+rTjcW5uLvfee6/bghJCiCtZvk8xPxnWY8bCQJ8Il5M4gKcHjO1oHzNdknjt5lQiT0lJoX79f7o4BAQEkJyc7LaghBDiSnXcnM6hphnYUAzz7UN7fQunyyoF21PhpH2ySvy9oJHzQ66LGsqpRG61WkuNrW42mzGZTG4LSgghrkSJ5hOsKfoDDTDStx8tdSFOl1UKNh6Hzcn2+cSlY9GVw6l75NHR0dx///3cdNNNACxZsoSYmBi3BiaEEFeSg6ZjrCvehhYtrdMa0ayz86O1KQXrkuwToAT6wMj29nnFxZXBqUT+3//+l3fffZcXXngBpRQDBw5kxowZ7o5NCCGuCPtNSawv3o6XRsco3/6cKElyuqxS8NtR+DsLGvraR2vzkdHarihOJXKdTsfdd9/N3Xff7e54hBDiivK36SjxxTvw1ui52i+Whp71OYHzifyP4/Yk3tjP3rhNhly98jg9acqDDz7I1KlTAThw4IBMmiKEEP/SXuORM0ncizi/ATR0Ydz0szoFQcsAGTf9SlZuIl+9ejWFhYWAfdKUXr16kZ9vH6S3VatWMmmKEEL8C3uMh9lYshMfjRdj/GJp4FnP6bI2BUVn2hsH+tj7iXs5PSqIqG3KTeQtWrRg7ty5gH3SlClTpsikKUIIUQX2Go/wR8kufDXejPEbQKCLSfznw/DNXvtUpEKUm407dOjA7bffDoBWW/qnnkyaIoQQF2ev8QgbS3biq/Emzi+WAE/nR2uxKfuQq4ezwU8vtXBhV+Fp0LFjRwCGDRvG3LlzMRgMMmmKEEJcpL+NiY7L6ReTxH89Yh8/vWkdGNMR9M5PgCZqMad+z8mkKUII8e/8bTpKfMlfjoZtriRxpWBtIhw8BU38YUwHSeLiHzJpihBCuNlB0zFHF7MxfrEEupDEAXJLIDEbgvzP1MTlkro4R4Wnw6xZsyqcMu/NN9+s8oCEEKI2OWJKYV3xNrw0Oq72i3WpYdtZgT72yU/qest9cXGhCpueDxw4kAEDBhAYGMiJEyfo2bMnPXv2JC0tjdDQ0OqKUQghaqQkcypri7egQ8to3/4u9RNXCnanQ4nZ/rixP3hLEhdlqPC0GD9+PADLly/ns88+w9vbG4BJkyYxc+ZM90cnhBA1VLI5nV+KNuOJB6P8YmisDXSp/JYT9vnE0wpgpOuzmIoriFO/7zIyMtDr9Y7HOp2O9PR0twUlhBA1WaolizVFm9CgYaRfNE20DV0rbw3i+Amo6wUxzd0UpKg1nErkkZGR3H777aVq6JGRkW4NTAghaqJMSw6rDX+gUIzwjSZE29il8nsz4bg1FH89jO9kn1NciIo4lcjnzJnDV199xZo1a1BKMWDAAK677jp3xyaEEDVKtjWPlUXxWLAw1LcPV+mcn4oU4OBJ+P0oaDEzrpOOut5uClTUKk7PfnbDDTdwww03uDseIYSokfKshfxkWI9RmRnoE0ErnesNgj097FOQtlOHCfDp5IYoRW0kbSCFEOJfKrQV8aNhPcXKSD/vHrTXt7io7bRpAM3rQ8Ku4qoNUNRqMvOJEEL8C8U2IysM8RSqIiK8utDVq61L5TMLYdUhMFvtj3UyYptwkSRyIYS4SCZlZmXRBnJtBXTTt6OnVweXyucUwQ/77aO2ZRS6KUhR6zmdyDdv3synn34KwKlTp0hKSnJbUEIIcbmzKitrijZx0ppLO11z+nh3q3AkzPMVGGH5fiixwMBW0Mz1Ad+EAJxM5O+99x5vvfUWS5YsAcBisfDoo4+6NTAhhLhc2ZRibdFWUi1ZtNAGM8An3KUkXmyG7/+GQhP0uwo6B7kxWFHrOZXIf/rpJz7++GN8fX0BaNKkCYWFch1ICHHlUUqxoeQvjlpO0NSzIUN8e+Ohcf4updVmv5x+ugR6BkPPEDcGK64ITrVa9/b2RqfTlXrOlV+fQghRW2w3/s1+01EaeNRjhF80Wo1rrdM8Pew18IaF0PcqNwUprihOJfImTZqwfft2NBoNNpuNd955h7ZtXWuZKYQQNd0+YyI7jH9TR+PHaL/+eGl0lRc6Qyn7/xoNdAmy/xOiKjh1PWjOnDksWrSIw4cP0717d7Zt2+bUPfL4+HiGDx/O0KFDee+998pcZ8uWLYwdO5bRo0fLgDNCiMtWovkEG0r+wkfjxdV+/fH1cH7YNaVgwzH45Yj90roQVcmpGnmjRo346KOPKC4uxmaz4efnV2kZq9XKvHnzWLx4MUFBQUycOJFBgwbRpk0bxzr5+fk89dRTfPDBBwQHB5OdnX3xRyKEEG6SaslibZF9OtJRfjHU8/R3qfxfabA7wz6vuNlmv7wuRFWpMJGvX7++wsKxsbHlLktISKB58+Y0a9YMgNGjR7N27dpSifzHH39k6NChBAcHA9CgQQOnAxdCiOqQbc1jjeEPQDHcry+NPANcKn/gJGxKBn89jO0oc4qLqlfhKfXBBx8AYDKZ2LNnD+3a2SfFPXToED169KgwkWdmZtKkyT8TBgQFBZGQkFBqnWPHjmGxWLjxxhsxGAzcdNNNjBs37qIPRgghqlKBrYgVhnhMWBjiE0Wo1rUb28dPw9pE8PKEMR1lJjPhHhUm8v/9738APPTQQzz66KN0794dsNe2ly5dWuGG1dmWHec4v6W71Wpl3759fPzxx5SUlDB58mS6d+9Oy5YtKw18x44dla7jLpdy39Wlth9jbT8+qP3H6O7js3hY2R+aRoneTLNTgeSdPskOTjpd3qh07DR3RqGhreYQx/YbOObC/mv7+we1/xir6/icusiTmJjoSOIA3bp148knn6ywTJMmTcjIyHA8zszMpHHjxhesExAQgK+vL76+voSHh3PgwAGnEnmvXr2cCb3K7dix45Ltu7rU9mOs7ccHtf8Y3X18FmXlJ0M8JVYz3fRt6du6h8vbUAr0aVDfG9o0cG3o1tr+/kHtP8aqPr6KfhQ41eRCq9WyfPlyx+MffvgBrbbi3wBdu3bl2LFjpKSkYDKZWLFiBYMGDSq1zuDBg9m+fTsWi4Xi4mISEhJo3bq1MyEJIYRb2Edt20KG9RStdc3o49298kLnsFjtSVyjgfAQ+4xmQriTUzXy559/noceeog5c+ag0Who27YtL774YsUb1mqZO3cu06dPx2q1MmHCBNq2bcsXX3wBwJQpU2jdujUxMTGMGTMGDw8PJk6c6LgPL4QQ1U0pxaaSXSRZUgn2bMQgnwiXBr8yW+1Drwb5Q0wLezIXwt2cSuStW7dm2bJljmFZ/f2d63oRGxt7QYO4KVOmlHo8ffp0pk+f7tT2hBDCnRJMh9lrOkKAR12G+/XF04VR22wKfj5sn8WsnvNdzIX411zqCOFsAhdCiJrmiCmFzSW78dV4M8ovBi+N3umySkF8EhzNhdC6MLi11MZF9ZFhCYQQV7x0y0l+K97qGPCljoevS+V3psOeTGjgC6Pay4AvonrJ6SaEuKLlWvNZXWQf8GWYb18aetZ3qXxaPvxxHPz0MKYDeMmAL6KauXTK5eTkEBgY6K5YhBCiWhXZSlhp2IhRmRngE0EzneszmTSt80/rdBnwRVwKTtXId+/ezcCBAxk/fjwAe/bsYc6cOW4NTAgh3MmsLKwq2kiBMtDLqxMd9C1cKm+y2v/XaKDPVdCo8ikohHALpxL5888/z/vvv09AgH2M4a5du/LXX3+5NTAhhHCXs33FT1pzaadrTrhXJ5fKF5nhy92w9YSbAhTCBU4lcrPZXGqyEwCdzvl5eIUQ4nKyqWQXxyxphHg2JtYn3KW+4hYr/HQA8oz2LmdCXGpOJXK9Xo/BYHCc7EeOHMHLS24GCSFqngSjva94oEddhvn1xVPjfJtfpeDnI5BZCO0bQlSoGwMVwklONXa74447uO2228jKyuLhhx9mw4YNvPzyy+6OTQghqlSSOZVNJbvw1Xgz0i8GL41rVxb/OA6JORAifcXFZcSpRB4bG0urVq3YsGEDSilmzpxJ8+bN3R2bEEJUmSxLDmuLtqDFk5F+0S73FU/MsfcXD/CRvuLi8uLUqfj+++/TrFkzrr/+eqZOnUrz5s15//333R2bEEJUiXybgVVFG7FiZahvbxp5Bri8jRb1oUdTiOsA3tJXXFxGnErkK1eudOo5IYS43BiViVWGjRQrI/28w2iuC3apvPlMNzNPD/tEKDKOurjcVPi78o8//mDjxo1kZWXx0ksvOZ4/O3mKEEJczqzKxs+GzeTa8ummb0sXrzaVFzpHgRGW7oVeIdCtiZuCFOJfqjCR63Q6/Pz80Gg0+Pr+cz+pcePGzJgxw+3BCSHExVJKEV+8g1RrFi20wfR2cV5xkxV+PACFJrDY3BSkEFWgwkQeGRlJZGQkw4YNk3nChRA1yk7jAQ6aj9HIM4DBvlF4uNDE3KZg1SHILoIuQRDW1I2BCvEvVZjIV61axciRI9m2bRvbtm27YPnUqVPdFpgQQlysI6Zkthr34q/xZaRvNDqN863Tzk5JmnwamteH2JbSzUxc3io8uw8fPszIkSPZu3dvdcUjhBD/SrrlFL8Vb0OPllF+0fh6uNY67eCpf6YkHdEOPCSJi8tchYl81qxZgH2sdSGEuNzlWQtZU/QHCsVQ374EetZzeRutAyE9CCJCQO/phiCFqGIVJvLPPvuswsJyaV0IcbkosZlYWbSBEmWiv08vl6cktdrsXcx0njCwlZuCFMINKkzkZy+p5+bmsnXrVvr06QPA5s2biY6OlkQuhLgsWJWNNUWbyLMV0kPfnk561zJxgRG+3Qd9mkH7Rm4KUgg3qTCRn72kftddd7F8+XKaNWsGQEpKCq+99pr7oxNCiEoopVhfvJ1060laaUOI8u7qUnmjBX7cb0/mJRY3BSmEGzk1sltqaqojiQM0a9aMpKQktwUlhBDO+su4n0Pm4zT2DGSQb5RLU5JabbD6EGQX2wd86S7dzEQN5FQir1+/PgsXLiQrK4usrCzefvtt6tev7+7YhBCiQodMx9lm3EcdjS8jfPuh1TjfOk0piD8GyXnQIsA+/KoQNZFTifzFF1/k4MGDxMXFERcXx4EDB3jxxRfdHZsQQpQr3XKSdcXb0aNjpF+My93M/s6CvZnQ0BeGt5VuZqLmcmqUhKCgIObPn+/uWIQQwiklOjOrizYBimF+fQj0rOvyNlo3gNR86HuVdDMTNZtTNfLi4mLeeOMNHnjgAQASExP59ddf3RqYEEKUpcRm5FDTDIzKRIxPL0K1rnczA/tUpMPagr+XG4IUohqVm8g3bdqE2WwG4Mknn8RisXDgwAEAmjRpwltvvVU9EQohxBlWZWV10SaMejNhXh3oqG/pUvn8EvhsFxzLdVOAQlwC5SZyrVbL008/DcChQ4d48MEH0el0APj5+WGzyXRAQojqo5Ti9+LtZFhPEVDgR6RXF5fKGy322czyjJBvdFOQQlwC5d4jj4yMxGQyATgS+FlGoxGllHsjE0KIc2w37uOIOZkgzwaEZtVBE+paN7OVhyCnGHo0lbnFRe1S4T3y6OhoAMLDw3nnnXcwmUxs2bKFe++9l0GDBlVLgEIIcdB0jB3G/dT18GOEbz88lFPNewB7N7N1SXAiD1oGQL/mbgxUiEvAqU/D/fffj1IKPz8/Xn75Zbp168Y999zj7tiEEIJUSxbri7fjpdExyjcGHw/XWqclZNi7mjXyk25monaqtPuZ1Wpl2bJlzJw5k5kzZ1ZHTEIIAUCuNZ81hk0ADPPtS33POi5vo00DOJEPA1raJ0QRoraptEbu6enJ8uXLqyMWIYRwKLKVsNKwARNmBvhEEKJt7FJ525lmPH56GN3e/r8QtZFTl9b79u3L6tWr3R2LEEIAYFYWVhVtpEAVEe7VmXZ6125s5xbbu5ml5bspQCEuI06N7Pbpp59y+vRpvL298fHxQSmFRqNh8+bN7o5PCHGFsSnFb0VbOWnNpZ2uOb28OrpUvth8pptZCZwugWDXB30TokZxKpF/++237o5DCCEA+LNkN0mWVII9GxHrE+7SbGYWK/x0JomHh0An167GC1EjOZXIQ0JCMJvNJCUlodFoaNmyJVqtU0WFEMJpe4yHSTAdJsCjDsP9+uKpca2b2c9HIKMQ2jeE3s0qLyNEbeBUNt6+fTsPPPAA3t7eKKUwmUy89tpr9OzZ093xCSGuEEnmVP4o2YWPxouRfjF4aVxrnbb1BCTmQEhdGNwaXKjIC1GjOZXI582bxyuvvEJERARgT+xPPvkkP/zwg1uDE0JcGTItOawt2oIWT0b6RlPXw8/lbXRoBKcMMLgNeDpfkReixnMqkXt5eTmSONhHevP2dm3uXyGEKEu+rZBVRRuxYmWEbz8aawNdKm9T9kFe6nnD6A5uClKIy5hTv1vDw8NL1b5//PFH+vfv77aghBBXhmKbkRWGDZQoI/28w2iuC3apfEaBvZvZKYObAhSiBnCqRv7dd9+xePFiHn/8cQBMJhP169fn008/lZuQvz0AACAASURBVG5oQoiLYlFWVhf9QZ6tkB5e7eni1cal8nkl9hbqJRYoMEFD16/GC1ErSPczIUS1synF2qItZFqzaaNrRpRXV5fKm5WW5fuh2GIferVlgJsCFaIGcLr7mRBCVAWlFJtKdjn6ig/0iXCpr7jZCvstrSk0Q68Q6CpTkoornFvbdsbHxzN8+HCGDh3Ke++9V+56CQkJdOzYUYaBFeIKkGA6xF7TEQI86p7pK+7aTCa/H4VC5U/7htBH+ooL4b5EbrVamTdvHh988AErVqzgp59+4siRI2Wu98orrzjmPhdC1F6HTclsLknAV+PN6IvoKw7QMxgaeWRLX3EhznBbIk9ISKB58+Y0a9YMvV7P6NGjWbt27QXr/e9//2P48OE0aNDAXaEIIS4DqZYsfi/eih4to/364+/x/+3deXhU9b3H8ffsM1nIRjIBEiAJhH2THUEkFWoFBAtqud4+Xr1o9WnLrVsVtS5YUKvV1l5b1F6356L2oiwiVSkgiwsUgoKUTRIDSSCJkH0y+/ndPw6MhCXMKJNl+L6eZ57MmZlz5vdlmHzyO8vvFxfR+gFN/9k5HnqbS+RacSFOCOur4Ha7efbZZ7nrrrsAKCoqYu3atS2uU1lZSWbmtwevnE4nlZWVZ7xm7dq1/OQnP4m03UKIDuRYsJYPXZ8ABn4YfylppqSI1t9bBW/u1M9UF0I0d86T3T799FNGjhyJxWLhkUceIT09nX379gGQmZnJXXfdxRVXXHHODSulznjs9BNaFi5cyN13343JFNkxMoDCwsKI17lQ2vK9W0us1xjr9UH7qdFr9rM36wh+c5C8igwqGkupoDTs9Wu0TuwN9MJMkF279xNn0NO8vdQXLbFeH8R+ja1V3zmD3Gw289hjj7FgwQIOHDjAk08+yccffwxAfHw8mqa1uOHMzEwqKipCy5WVlWRkNJ+KaPfu3dx5550A1NTUsHHjRsxmc4t/IJw0fPjw874mGgoLC9vsvVtLrNcY6/VB+6nRrXlZ6foIvxZknH0Ig/vkR7R+RQP8cw+YDDCjv5munQYA7ae+aIn1+iD2a7zQ9bX0R8E5g3zUqFH4fD4ALBZLs+e8Xu9Ze9ynGjRoECUlJZSWluJ0Olm9ejW///3vm71m/fr1ofv33Xcfl19+eVghLoRo//wqwPtNH1OrNTDEms9gW2QhXuPW5xUPanBVH5lXXIhzafE68pNnko8YMYLFixfj8/nYunUrr7zyCgUFBS1v2GzmoYceYu7cuQSDQWbNmkXv3r158803AZgzZ84FKkEI0d4Elcaaps+oClaTb+nBGPvgiNbXFKzer4/aVpALuZENvy7ERSWsAWHuuOMO/vrXvxIfH89TTz1FQUEBP/vZz8673sSJE5k4cWKzx84V4E888UQ4TRFCtHNKKTa6t1MaqCDbnMlEx4iIBnwBfRKUH+Tpu9YHOKPUUCFiRFhBfvjwYW6//XZuv/320GNFRUXk5eVFrWFCiI5HKcUWzy4O+A/hNKUyJW4sJkP414n5g6AUWM3QJVG/CSFaFtY37O677w7rMSHExe0L3352+g6QbEzkR3HjsRjC6isA+rHwD76CZXvA7Y9iI4WIMS1+y6qrq6mursbr9VJUVBQ6wa2hoYGmpqZWaaAQomPY4ytmq+dLEgwOpsVfht1oC3tdpWBdEZTUQPcksEZ+RaoQF60Wg3zVqlW89tprVFVVccstt4QeT0xMZO7cuVFvnBCiYyj2l7HZXYjdYGVa/MSIRm1TCj4+BPuPgTMBftQHGbVNiAi0GOQ33ngjN954I4sXL+a2225rrTYJITqQskAla5u2Yj4x9GqyKbID29vL4YujkOKA6X2lNy5EpFoMcp/Ph9Vq5cYbb8Ttdp/xvMPhiFrDhBDtX2XgOB+4PgHgyvhLSTdFNjF4rRv+WQaJNpjZDxyW868jhGiuxSC//vrrWb58OcOGDcNgMDQbBMZgMLB3796oN1AI0T4dD9ay2rWZIBpT4sbSzZxx/pVOk+yAqX0g2Q4J4R9SF0KcosUgX758OUBojHUhhACoDTbwnmsTPvwUOEaRY+kW0fpH6iEjAcxG6BlZJ14IcRo5pUQIEZEGrYn3XBtxKy/j7cPIt/aIaP3DtbB8D3xwIEoNFOIi02KPfMyYMWcdkUkphcFg4LPPPotaw4QQ7U+T5uE910YalZvRtkEMtPWKaP3yen3oVQMwpEt02ijExabFIH/nnXdaqx1CiHbOrXlZ5dpIndbIMFtfhtn7RrR+RQOs2quPo35VH8iObEpyIcQ5tBjk3bpFdtxLCBGbvMrHe65N1Gj1DLL2ZpRtYETrf+OCd/dCQIMf5kOOHBcX4oJpMcjvuecennrqKWbNmnXWXexvv/121BomhGgffMrPatdmjmu19LfmMs4+JOJJUKoawReEK3pB77QoNVSIi9R5B4QBuPfee1ulMUKI9sWvArzv+jg0HekE+yURhzjoM5h17aQP+iKEuLBaDPKBA/XdZ6NGjQLA5XIBEB8fH+VmCSHa2skQPxo8Rq4li8sjnI601g1fVsKlPfRpSSXEhYiOsC4/KyoqYtasWYwZM4axY8cye/ZsioqKot02IUQb8asAH7g+4UjwG3LM3fiBYzTGCKYjrfPol5h9cVS/3EwIET1hfTPnz5/PT3/6U3bt2sXOnTv56U9/yvz586PdNiFEGwioIB80fUJ5sIqe5q5cETcmojnF6z2w/F/Q6NN74zLgixDRFda3MxAIMHPmTAwGAwaDgRkzZhAIBKLdNiFEKwuoIB82fUJ5oIoe5i5MjhsbUYjXefT5xBt8MLY7XNI1io0VQgBhBnmfPn3Yvn17aLmwsJChQ4dGrVFCiNZ3sideGqiku7kLUyIMcY9f74k3eGFMNoyQq1eFaBUtnux28rIzv9/P8uXL6dFDH4rx0KFD9O/fv1UaKISIvpPHxMuDek9cD/HI5hO1maFPOlhMEuJCtKYWg1wuOxMi9p08O/1I8Bt6mrtGvDvd7Qe7GQwGfXe6EKJ1tRjkJy87E0LEJp/yf3uJmbkbP4jwxLbqJlixB/qmw7jI5k4RQlwgLQb5SQ0NDbz00kvs3bsXr9cbevz111+PWsOEENHlVT5WuzZTFawmz5JFgWN0RCH+jUsPcU8A4qxRbKgQokVhfWvvv/9+jEYjJSUlXHfddZhMJgYPHhzttgkhosSteXi3cUNoxLYfRBjiFQ36iW2eAEzKhaEyk5kQbSasb+6hQ4f41a9+hd1uZ9q0abzwwgvs3r072m0TQkRBo+ZmpWsDx7U6+ltzmeQYGdFgL+X1sGKvPnb65F4w0BnFxgohziusb6/Vqu83s1gs1NbWYrFYqKioiGrDhBAXXr3m4l3XR9RqDQyx5n+nsdMPHofgiVnM+qZHqaFCiLCFdYy8Z8+e1NbWMn36dK6//noSExPp169ftNsmhLiAqoN1vOfaRJPyMNzWnxG2/t9pApQJPfUAdyZc+DYKISIXVpA//fTTANx0000MGjSIhoYGLrvssqg2TAhx4VQGjvP3ps14lZ9x9iEMtuVHtP7uSr0XPqSLPgGKhLgQ7UdYQQ5QXV3Nzp07MRgMDBkyBJMpssEihBBto9RfyYdNnxBEY5JjJH2sPcNeVykoPAKfHQaHRe+J28L+rSGEaA1hfSXXrFnDb37zGwYOHIimaezbt4/HHnuMK664ItrtE0J8Dwd9pax3b8WAgSlxY8mxhD/kmlLw8SF9BrMEK8zoLyEuRHsU1tfy2Wef5a233iInJweAkpISbr/9dglyIdqxXd4DfOrZiQUzV8ZfSjdzRtjrBjX4x0H46jikOuDqfpBoi2JjhRDfWVhBnpSUFApx0E9+S05OjlqjhBDfnVKK0rTjVHiKiTPYuSp+Ap1NkX1fPz+qh3iXRJjWB+yWKDVWCPG9tRjkbrcbgPHjx/OXv/yF2bNno5Ri2bJlTJ48uVUaKIQIX1BpbHBvoyKljmRjIlfFT6CTMT7i7QztovfKh3cFs5wOI0S71mKQDxs2DIPBgFIKgD/+8Y+h5wwGAzfffHN0WyeECJtX+Vjj+ozyYBXxHhsz0ifhMIa/P/x4k37L7wxmI4zOjmJjhRAXTItBvm/fvtZqhxDie6jXXLzv+pgarZ6e5q6klltxOMMP8dI6+Pt+CGiQmQid5Hi4EB1G2Oeg1tTUNLv8TI6RC9E+VAWqeb/pY9zKyyBrb8bah/C52hH2+nurYH2xfv+KPAlxITqasIJ88+bN3HPPPaHR3Pbv389TTz3FpZdeGtXGCSFa9rW/nHVNWwkS5FL7UAbZeoe9rlKwpRS2l4PNBFP7QrdOUWysECIqwr78bMmSJeTl5QFQVFTEPffcI0EuRBtRSvG5dx//9O7GjIkfxl1KT0vXiLbx+RE9xJNsMK2ffpmZEKLjCSvIA4FAKMQB8vLyCAQCUWuUEOLcAirIBvd2DvoPk2BwcGX8+IgvLwMYmAl1XhiTrY/aJoTomMKa/Sw1NZVly5aFlpcvX05qamrUGiWEOLsmzcO7rg0c9B/GaUrjxwlXRBTiFQ1QXK3ft5r0ucQlxIXo2MLqkS9YsIC7776bRx55BIB+/fqFJlIRQrSOysBx1jR9hku5ybf04DLHcMyG8C/y/lclbPgaTEa4cZgEuBCx4rxBrmkaTU1N/N///R8ulwulFAkJMvWREK1pn+9rNrl3oNAYbR/EUGufsKcgDWqwuQS+rNRParsyX0JciFhy3l3rRqORBx54AID4+HgJcSFaUVBpbHLvYIN7OxaDiaviJjDM1jfsEG/ywYo9eoinxcH1g6G7XDkqREwJa9d6Xl4eZWVlZGVlRbs9QogTGjU3/2j6jMrgcVKNSVwZP45Oxsj+kN58CI40QK80/Rpxiwy3KkTMCSvIq6urufrqqxk+fDhxcXGhx08dsvVsNm3axMKFC9E0jWuvvZZbb7212fPvvvsuL730EqD39h955BH69u0baQ1CxJyyQCVrm7biUV56WbKZ6BiBxRD5HKITekJmAgzOhDA78UKIDias3wxTp05l6tSpEW04GAyyYMECXnnlFZxOJ7Nnz6agoIBevXqFXpOVlcX//u//kpSUxMaNG/nNb37D0qVLI6tAiBiilGKHdy/bvP/CiIHx9mEMsOaFvSvdF9BHaTNr+sgucRYY0iWaLRZCtLXzBnltbS29e/emZ8+eER0f37VrFz169CA7W595YerUqaxbt65ZkF9yySWh+0OHDqWioiKStgsRU9yah/XubZQGKkgwOJgcNxanOS3s9asa4YOvoM4DqYbOUWypEKI9aTHI//73vzN//nzi4+Px+Xz86U9/YuzYsWFtuLKykszMzNCy0+lk165d53z922+/zWWXXRZms6GwsDDs115obfnerSXWa2xv9dU73BQ7q/Cbg3RyOcitzKBMK6GMkvOuqxRUaOmUBLNQGOlmrCDbVE47K/GCa2+f4YUW6/VB7NfYWvW1GOR/+ctfeOutt+jXrx9btmzh+eefDzvIT059eqpz7R7csmULb7/9Nm+88UZY2wYYPnx42K+9kAoLC9vsvVtLrNfYnurTlMZ27x72e4sxYmCMfTBDOuVj6Br+rvR/HISva8Bhhsm9oEdKJoWF5e2mxmhoT59hNMR6fRD7NV7o+lr6o6DFy8+MRmNoopQxY8bQ2NgY9ptmZmY221VeWVlJRkbGGa/bt28fDz74IH/+859JSUkJe/tCdHT1mot3XRvY4d1LoiGOGfGTGGoL//pw0Ad3afBBVif4yRDoIV8hIS46LfbI/X4/RUVFod611+tttnzq8e7TDRo0iJKSEkpLS3E6naxevZrf//73zV5z5MgRfvnLX/K73/2OnJyc71uLEB2CUooD/kN87P4cPwHyLFlc5hiBzRDeKC1BDY42QFaSHuRX9wW7BYxyVroQF6UWg9zj8XDLLbc0e+zkssFgYN26defesNnMQw89xNy5cwkGg8yaNYvevXvz5ptvAjBnzhyef/55amtrefTRRwEwmUzNxnQXItZ4NC+b3DsoDpRhwUyBYxS9Ld3D7oUfb4I1X0G1G64bBOnxEGeNcqOFEO1ai0G+fv3677XxiRMnMnHixGaPzZkzJ3R/4cKFLFy48Hu9hxAdxSH/UTa6t9OkPHQxdWZS3Cg6GePDWldT+rSjW0r1+wMyIMke5QYLITqEyEeYEEJExKt8fOreyX5/CUYMjLINZKitL8Ywe+E1blh7ECoa9evCJ+VCrkw+KIQ4QYJciCgq9Vewwb0dl3LT2ZjMpLhRpJmSItrGjiN6iPdOg4k5MuGJEKI5CXIhosCjefnUs5MD/kMYMTDSNoChtr6YDOedpwiAeg8k2vRhVS/tAT2S9fHShRDidBLkQlxASikO+kv5xPM5HuUj3ZTCRMcIOpvCm3IsqMG2cigshym9oHdnsJslxIUQ5yZBLsQFUq+52OzeQWmgAjMmxtoHM8jaG2OYvfCyOtjwtX5MPMEKNvl2CiHCIL8qhPiegirIF9797PDuJYhGltnJZY5Lwp5ytMkHHx+C/cf05UFOGNcDrDLlqBAiDBLkQnwPpf5KPvbsoE5rxGGwMc4+lF6W7IhGZztYrYd4RjxcngvOyKYcF0Jc5CTIhfgO6jUXn7l38nWgHAMw0NqLkfaBYY/OVl6vD+ZiNcFAJ9hM+vFwGZ1NCBEpCXIhIuBXAXZ497LLe4AgGk5TGhMcw+hsCm+Q8wavvhv94HEY0Q3GdtfDu096lBsuhIhZEuRChEE7MT76Pz1f0qQ8xBscjLEPDns3ui8AhUfgi6MQ0PTd5zkywYkQ4gKQIBeiBUopygKVbPHs4rhWhwkjw239GWrrg8UQ3ten6Dh8VAzuAMRb4PIc6JuuXyMuhBDflwS5EOfwTbCGLZ5dlAeqAOhj6clI+wASjHERbcdu0XvhY7JhaBewyNnoQogLSIJciNNUB+vZ7tlNcaAcgGyzk9H2wWEN6qIUHK6DraUwuRekOKBbJ7hpuFwXLoSIDvnVIsQJdcFGCr17OOA/BECGKZVR9oFkmZ1hrV92IsCPNOjLh2v1IAcJcSFE9MivF3HRqw02sMO7l6/8h1Eo0oxJjLQPpIe5S1gnspXVwT/L9EvKAHqm6LvR08OboVQIIb4XCXJx0aoJ1rPDu5eD/sMoIMXYieG2/uRZsiIa0GX/MT3EeyTDqCzITIxem4UQ4nQS5OKi02j38IHrE0oCRwBIMyYx3N6fHHO38wa4pvRrwEtroSBPP/N8VJY+qIuMyCaEaAsS5OKioJTicKCCL7z7OJp1DALgNKUy1NaXnuau5w1wfxD2fQOfH4U6DxiAoV0hLU6fbjTR1jp1CCHE6STIRUzzqwD7fSV86fuKOq0RgCSXg4kZo+li6nzeAPcGYMcR2F0JnoA+CtuADLikKyQ7WqMCIYRomQS5iEn1mos93iL2+ovxKj9GjPSx9GSwrTclB4vo2vXcY6IqBQo9tI0GPcQBRnaDQZkQb22dGoQQIhwS5CJmKKUoDVSw21fE4cBRABwGGyNs/elvzSPOaAeg5Bzr+4Nw4BjsqoD+GTDkxOAtV/eDNAeYZSAXIUQ7JEEuOjyX5ma/r4S9vq9pUC4AnKY0BljzyLVkYTa0nMDfuOBflfrZ576gfvy7wfvt83ISmxCiPZMgFx1SUGmUBirY6yvmcOAoCjBjoq8lhwG2PNLDnI1sQzF8eWLXebwFhmTqZ6AnyMlrQogOQoJcdBhKKY5ptRzwHeIr/2E8Su82p5tS6GfNpZclG2sL84FrSr9s7Gjw2+Pj3TpBg08/ga1niswHLoToeCTIRbtXr7k46DvMQf9hqjV9+DS7wcpAay/6WnNaHANdKahs1I99f3UcmvxgIAtvQB82tXdn/SaEEB2VBLlolxo1N1/7y/jKf5iqYDUARozkmLvRx9qTbHMmJoOxxW2U18O6g1B34ni33QyDnMDx/VhN/aJcgRBCtA4JctFuNGguiv3lFPvLqAweB/QTz7qZM+ht6U6OpRs2w9mv/VIKjjXB19UwIkvfRR5vAZcf8jvrt+5JYDJCYU2TzAUuhIgZEuSizSilOK7VUeI/Qom/nGNaLaCHd1dTOrmWLHItWaHLxk4X1PSZxoqr9QBv8OmPd0vSj30nO+CWEXLZmBAitkmQi1blVwGOBL7hcOAoh/xHaVRNABgxkGV2kmvJIsfcFcc5wvukWjf835fgDerLVpPe685LhYxTZh2TEBdCxDoJchFVSilqtAbKApWUBio4EqgiiAaAFQu9LNn0NHcj25KJ7SxnnGsKKhrgcJ0+v/cVvSDVAZ3s+q1LIuSk6D1wU8uHzIUQIiZJkIsLzqW5KQ9UUR6ooixQiUu5Q8+lGpPobsmku7kLTlPaWU9Y8wVhb5U+z3dZvb4M+i73Yy49yI0G+MngVipICCHaMQly8b01am4qAt9wJPgN5YGq0OQkoF8m1suSTZbZSZbZSYIxrtm6SkGNWz/DPDdVH8fcCHx8SO+NJ9mgT2fonqz3um3yP1YIIZqRX4siIvqu8noqgsepCBzjaOBYaFhUAAtmupsz6WrOoJs5g87G5GYzjAU1qHLB0QY4Wq+frOYJnFjXBH3T9ePaV/XRe95JLR8qF0KIi54EuWiRW/NSFaymKlhNZfA4VYFqfPhDz9sMFnqYu5Bp7kxXUzrpphSMJ3aXKwX1Xn1Alu5JYLdAQIO3d3+7/UQb9EiGrp0gq9O3j+eEN8KqEEJc9CTIRYhb83IsWMvR5FrWNH3GN4FqGk6cVX5SkjGBnqauOE1pZJo7k2rsFOpx+4L6pWDfuPRed1Xjt73taX0gJ1XfNT4mW+9pd0nUg1wIIcR3J0F+EdKUol5r5LhWx/Fg7YlbXehSMDoD/mrsBivdzZmkm1LJOHFzGG0ENP24dlUd7GmCUVl6QPsC8P6Bb9+nkw2yk/TZw1JPOTQ+MqtVyxVCiJgmQR7DNKVo0FzUavXUaA1UB+uoDtZRo9WHLgE7Kc5gJ9ucSbophfqSakblDydOxWE26b3t4036TGHH3fo13OqUdXNT9RPR4q0wvgekxUF6PDjOPX+JEEKIC0SCPAZ4lY/aYCN1WgO1WoP+M6jfPz2wTRhJMXYixdSJNFMyacZkEkiiqclOTaMe0hW1tazcGU+DF3426tvrsw9W6wOvZCbqYX0ysNNP9LYNBhjWtZWLF0KIi5wEeQegKYVLuWnQXNRrjTRoLupO3K/TGvEq3xnrmDGFAjvJ0AmblojJn0TAk0C9x4DRCEO766/dXQkfFZ+6djL2AGQkgDcAcVZIccBNl+i9bhmnXAgh2g8J8nbAp/w0am5cWhONqolGzU2j1kSD5qJBa8KlmtCa7czWGTHQyZhAuiENm4rHEkzE6E+kszmRfikODAYDm0vgs6NnvqfdDONOBHlmAlzSVQ/rFAcc2v8FY0YMbf5eBkiQE9OEEKLdkSCPIr8K4FYemjQPTcqDS3PTdGK5UTXRpLlxaW58BM65DTt2kkjFosVhCsSTaYsnKy6BRGM8H+2Po7zOwDenZXxOCvRP1e8n2fXj14k2/X6nU36e1Dlev510xBC8gP8KQgghokmCPAIBFcRnCnAsWItHeXFrXjxKv7lPLLuVhyblxa158LcQ0ABmZcGi4kkIOjAGHPRMjCPVEodDOVi9O46gPw6/MtFwyjpZ3fVgBr1XnRan7+5OsOphnWjTe9UnDc7Ub0IIIWLTRR/kjVoTFYHj+JQPr/LjVb7QzRN6zItH+QgQhBzY2Xj43BtUBkzKijEYjyVgRwXsGIJ2RmbaiTM4cLntbPrKAQE7fmXGfcqqEwdAtxM9Y6cNbPEQZzlxs+qBnX7KZVw/7B2VfxIhhBAdSFSDfNOmTSxcuBBN07j22mu59dZbmz2vlGLhwoVs3LgRu93OE088wYABA6LZpDN86PqMb7Tqcz5vwYzNYAVfIprPBkErKmiDgA2CNjrbrIzPtuEw2Nl/1Mb2Uit+vj0bzG7Wr7Ee2F0/ztygoL6zfmmWw6z/tJv1sD51cJRZA6NZtRBCiFgRtSAPBoMsWLCAV155BafTyezZsykoKKBXr16h12zatImSkhLWrFnDzp07eeSRR1i6dGm0mnRWlzqG8c7BalTQCprlRFDrP0d3tTIqS7/26qNi/Vpqd2Md6alJ2M1gteoDnXQ78a84MB1yk8Fm0ocjtZnOPMM70QYTerZqiUIIIWJY1IJ8165d9OjRg+zsbACmTp3KunXrmgX5unXrmDlzJgaDgaFDh1JfX09VVRUZGRnRatYZMs2pTHWmYjHqk3ZYTPq10lYTmE+ZYXNSrv6zsPAgw/OHn3VbJ49RCyGEEK3lzMmgL5DKykoyM789y8rpdFJZWdniazIzM894TWvomQLdkvTrplMc+rFoy1l600IIIUR7E7UeuVJnXvdsOC0Zw3nNuRQWFn63hl0AbfnerSXWa4z1+iD2a5T6Or5Yr7G16otakGdmZlJRURFarqysPGOX+emvqaioCHu3+vDhZ9+9HW2FhYVt9t6tJdZrjPX6IPZrlPo6vliv8ULX19IfBVHbtT5o0CBKSkooLS3F5/OxevVqCgoKmr2moKCAFStWoJTiiy++IDExsVWPjwshhBAdXdR65GazmYceeoi5c+cSDAaZNWsWvXv35s033wRgzpw5TJw4kY0bNzJ58mQcDgeLFi2KVnOEEEKImBTV68gnTpzIxIkTmz02Z86c0H2DwcDDDz8czSYIIYQQMS1qu9aFEEIIEX0S5EIIIUQHJkEuhBBCdGAS5EIIIUQHJkEuhBBCdGAGdbbh1dq5WB8NSAghhDjduQaY6ZBBLoQQQgid7FoXQgghOjAJciGEEKIDkyAXQgghOjAJciGEEKIDkyAXQgghOrCoTprS0R09epRf//rXHDt2DKPRyHXXXceNN95IbW0td9xxB+Xl5XTr1o0//OEPJCUltXVzI+b1ernhhhvwml50uAAADTRJREFU+XwEg0F++MMfMm/evJip76STs+85nU5eeOGFmKuvoKCA+Ph4jEYjJpOJZcuWxVSN9fX1PPjggxw4cACDwcCiRYvIycmJmfqKi4u54447QsulpaXMmzePmTNnxkyNr776KkuXLsVgMJCfn8/jjz+O2+2OmfoAXnvtNZYuXYpSimuvvZb/+I//aLXvofTIW2Aymbjvvvt4//33+dvf/sYbb7zBwYMHefHFFxk7dixr1qxh7NixvPjii23d1O/EarXy2muv8e6777JixQo2b97MF198ETP1nfT666+Tl5cXWo61+kD/JbJy5UqWLVsGxFaNCxcuZMKECXzwwQesXLmSvLy8mKovNzeXlStXhj4/h8PB5MmTY6bGyspKXn/9dd555x3ee+89gsEgq1evjpn6AA4cOMDSpUtZunQpK1euZMOGDZSUlLRajRLkLcjIyGDAgAEAJCQkkJubS2VlJevWrWPmzJkAzJw5k7Vr17ZlM78zg8FAfHw8AIFAgEAggMFgiJn6ACoqKtiwYQOzZ88OPRZL9Z1LrNTY2NjItm3bQp+f1WqlU6dOMVPf6T777DOys7Pp1q1bTNUYDAbxeDwEAgE8Hg8ZGRkxVV9RURFDhgzB4XBgNpsZOXIk//jHP1qtRgnyMJWVlbF3716GDBnC8ePHycjIAPSwr66ubuPWfXfBYJAZM2Ywbtw4xo0bF3P1LVq0iHvuuQej8dv/6rFU30n/+Z//yY9//GP+9re/AbFTY2lpKampqcyfP5+ZM2fywAMP0NTUFDP1nW716tVMmzYNiJ3P0Ol0cvPNNzNp0iTGjx9PQkIC48ePj5n6APLz89m+fTs1NTW43W42bdpERUVFq9UoQR4Gl8vFvHnzuP/++0lISGjr5lxQJpOJlStXsnHjRnbt2sWBAwfaukkXzEcffURqaioDBw5s66ZE1Ztvvsny5ct56aWXWLJkCdu2bWvrJl0wgUCAPXv2MGfOHFasWIHD4ejQu2Bb4vP5WL9+PVdeeWVbN+WCqqurY926daxbt47NmzfjdrtZuXJlWzfrgsrLy2Pu3LncfPPNzJ07lz59+mAymVrt/SXIz8Pv9zNv3jymT5/OlClTAEhLS6OqqgqAqqoqUlNT27KJF0SnTp0YPXo0mzdvjpn6duzYwfr16ykoKODOO+9ky5Yt3H333TFT30lOpxPQ/19OnjyZXbt2xUyNmZmZZGZmMmTIEACuvPJK9uzZEzP1nWrTpk0MGDCAzp07A7Hze+bTTz8lKyuL1NRULBYLU6ZM4fPPP4+Z+k669tprWb58OUuWLCE5OZkePXq0Wo0S5C1QSvHAAw+Qm5vLTTfdFHq8oKCAFStWALBixQp+8IMftFUTv5fq6mrq6+sB8Hg8fPrpp+Tm5sZMfXfddRebNm1i/fr1PPPMM4wZM4ann346ZuoDaGpqorGxMXT/k08+oXfv3jFTY3p6OpmZmRQXFwP6MeS8vLyYqe9Uq1evZurUqaHlWKmxa9eu7Ny5E7fbjVIqZj/D48ePA3DkyBHWrFnDtGnTWq1GmTSlBdu3b+eGG24gPz8/dIz1zjvvZPDgwfzqV7/i6NGjdOnShT/+8Y8kJye3cWsjt2/fPu677z6CwSBKKa688kp+8YtfUFNTExP1nWrr1q28/PLLvPDCCzFVX2lpKT//+c8B/XyHadOmcfvtt8dUjXv37uWBBx7A7/eTnZ3N448/jqZpMVMfgNvt5vLLL2ft2rUkJiYCxNRn+Nxzz/H3v/8ds9lMv379WLhwIS6XK2bqA/i3f/s3amtrMZvNzJ8/n7Fjx7baZyhBLoQQQnRgsmtdCCGE6MAkyIUQQogOTIJcCCGE6MAkyIUQQogOTIJcCCGE6MAkyIUI08GDB7nhhhuYP39+WzdFCCFCJMiFCNOBAwd44YUX+NGPfkRlZWVbN+c78/l8vPrqq7hcrrZuygURa/UIESkJciHCdOmllzJ27Fg2b94cGha1vevTp0+zgPP5fNx///0MGDAgNPNdWVkZo0ePjnjbZWVloUlawrFs2TLmzZsX8fucWkNBQUGz585WT319PS+99FLE73NSQUFBTM05IGKfBLkQYVq1ahVDhw5l9erV+Hy+tm7Od2K1Wnn66acZOXLk995WeXl5REEeDWerp76+nr/+9a9t2CohWpe5rRsgREfxzjvv8Otf/5oXXnih2SxVDQ0N3H///Xz11Vc4nU6cTidpaWnce++9+Hw+nn32WbZt24bf7yc/P59HHnkk1Hs8KRAI8LOf/Yyamhq8Xi+DBw/m0UcfxWq18qc//YmmpibuvfdegDOWT7VmzRqeeeYZkpOTueyyy5o9t3PnTp5++ulQ73bevHlcfvnloeeffPJJtm3bhtfr5eGHH2bEiBFs3bqVJ598kmXLlgE0W16wYAFlZWXMmDGDHj168NxzzzV7P5/Px29/+1u2bt2K0+kkNze32fMvvfQSH374IcFgEKfTyWOPPUZ6enqLn0FKSsp561mwYAENDQ3MmDEDh8PBW2+9RUFBAYsXLyY/Px+g2fL27dt59NFHsdlsDB06lFMHuywuLmbRokXU1NTg9/u58cYbmTVrVottFKLVKSHEee3du1dNmjRJaZqmVq5cqebOnRt67vHHH1f333+/UkqpmpoaNWnSJPXEE08opZR6/vnn1fPPPx967e9+9zv1zDPPnLF9TdNUdXV16P4999yj3njjDaWUUs8991xoe2dbPunYsWNq1KhRqqioSCml1Isvvqjy8/NVY2OjqqurUzNmzFCVlZVKKaUqKyvVhAkTVF1dnSotLVX5+flq+fLlSimltm7dqiZMmKC8Xq/asmWLuuaaa0Lvcery6c+d7vXXX1c33XST8vl8qqmpSV1zzTXql7/8pVJKqRUrVqgHH3xQBYNBpZRSS5YsUXfeeedZt3OyhlOdr55Ro0Y1e/2kSZPU/v37z1j2er1q/PjxasuWLUoppVavXq3y8/PV/v37ld/vV9dcc406ePCgUkqphoYGNWXKlNCyEO2F9MiFCMPbb7/NjBkzMBgMTJkyhd/+9rdUVlbidDrZunUrDz74IADJyclcccUVofXWr19PY2MjH374IaD3Uvv27XvG9jVN4+WXX2bTpk1omkZdXR12uz2iNn7xxRf0798/1PO9/vrrefrppwH4/PPPKSsr45Zbbgm93mAwcOjQIVJSUrBYLFx99dUAjBo1CrvdHppx7LvaunUrM2fOxGKxhLa/Y8cOQP932b17N9dccw2gT/iSkJAQ9rbPV0+4iouLcTgcoXMErrrqKh566CEASkpKKCoq4s477wy93u/3U1xcTF5eXtjvIUS0SZALcR4+n49Vq1Zhs9lYuXIloP9CX758ObfddhtKKQwGw1nXVUrx8MMPM3bs2BbfY9WqVRQWFrJkyRISEhJYvHgxJSUlAJhMJjRNC73W6/We873ORSlFnz59WLJkyRnPlZWVnfX1BoMBk8nUbLvneu/v0p7bb7+d2bNnh72909ePpJ5w/w1Pf4+UlJTQZy5EeyUnuwlxHmvXriU3Nzc0t/n69et5+eWXQ8eNR48eHZpzuK6ujnXr1oXWLSgo4NVXX8Xj8QDQ2NhIUVHRGe/R0NBASkoKCQkJNDQ08N5774We6969O//617/QNI3GxkY2bNhw1nYOGzaMPXv2hP4AWLp0abPnDh06xJYtW0KP7dq1KxS2fr+fVatWAfr0vV6vl5ycHLKzsyktLaWurg6lFKtXrw6tn5CQEJoL/WzGjh3LypUrCQQCeDyeZjUVFBTwxhtvUFdXB+h/LO3bt++c2zpbreeqJyEhAY/HQyAQCD3XvXt3vvzyS0Cf0/zYsWMA5Obm4vF42LZtGwAffPABDQ0NAOTk5GC320OfLUBRUVGLNQvRFqRHLsR5LFu2jOnTpzd7bNiwYWiaxrZt2/j5z3/O/PnzmTp1Kt26deOSSy4J7Sa+9dZb+e///m9mz56NwWDAYDDwi1/84oxdszNnzmTdunVMnToVp9PJ8OHDQ73GKVOm8P777zN16lR69OjBgAEDztrOtLQ0HnvsMW677TaSk5NDJ+MBJCUl8ec//5mnnnqKRYsWheb2Xrx4MaAfEjh06BDXXnstHo+HZ555BqvVitPp5KabbuLHP/4xWVlZDBo0iK+++grQLwvLyclh2rRp5ObmnnGy23XXXcf+/fuZOnUqmZmZjBw5kvLy8lC9tbW1/Pu//zug937nzJlz1sMOZ9NSPcnJyUyfPp3p06eTlJTEW2+9xX/9139x3333sXTpUi655BK6du0K6Ge9P/PMM6GT3caMGRN6zmw2s3jxYhYtWsT//M//oGkaaWlp/OEPfwirjUK0FpmPXIjvye/3o2kaNpuNxsZG5syZw/z58xk3blxbN00IcRGQHrkQ31N9fT233HILwWAQr9fLtGnTJMSFEK1GeuRCCCFEByYnuwkhhBAdmAS5EEII0YFJkAshhBAdmAS5EEII0YFJkAshhBAdmAS5EEII0YH9P441ROOlBzdJAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Interprétation rapide :\n",
+ "- Vérifiez le tableau de contingence : si le taux global semble plus bas chez les fumeuses,\n",
+ " c'est probablement parce que les fumeuses sont en moyenne plus jeunes (paradoxe de Simpson).\n",
+ "- Après ajustement sur l'âge (régression logistique), le tabagisme montre en général un effet de risque positif.\n"
+ ]
+ }
+ ],
+ "source": [
+ "age_range = np.linspace(data_filtered['age_num'].min(), data_filtered['age_num'].max(), 100)\n",
+ "pred_df_no = pd.DataFrame({'age_num': age_range, 'smoker_std':'No'})\n",
+ "pred_df_yes = pd.DataFrame({'age_num': age_range, 'smoker_std':'Yes'})\n",
+ "\n",
+ "pred_no = model_age_smoke.predict(pred_df_no)\n",
+ "pred_yes = model_age_smoke.predict(pred_df_yes)\n",
+ "\n",
+ "plt.figure(figsize=(8,5))\n",
+ "plt.plot(age_range, pred_no, label='Non fumeuses', linestyle='--')\n",
+ "plt.plot(age_range, pred_yes, label='Fumeuses', linestyle='-')\n",
+ "plt.title(\"Probabilité prédite de décès à 20 ans selon l'âge et le tabagisme\")\n",
+ "plt.xlabel(\"Âge au début de l'étude\")\n",
+ "plt.ylabel(\"Probabilité prédite de décès\")\n",
+ "plt.legend()\n",
+ "plt.show()\n",
+ "\n",
+ "print(\"\\nInterprétation rapide :\")\n",
+ "print(\"- Vérifiez le tableau de contingence : si le taux global semble plus bas chez les fumeuses,\")\n",
+ "print(\" c'est probablement parce que les fumeuses sont en moyenne plus jeunes (paradoxe de Simpson).\")\n",
+ "print(\"- Après ajustement sur l'âge (régression logistique), le tabagisme montre en général un effet de risque positif.\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
@@ -16,10 +1068,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.6.3"
+ "version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
-