Skip to content

Instantly share code, notes, and snippets.

@Hamid264
Created July 9, 2020 08:44
Show Gist options
  • Save Hamid264/14dd5d73ce32506cf0585c5a4338bbb8 to your computer and use it in GitHub Desktop.
Save Hamid264/14dd5d73ce32506cf0585c5a4338bbb8 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 4: Model Development</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>In this section, we will develop several models that will predict the price of the car using the variables or features. This is just an estimate but should give us an objective idea of how much the car should cost.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some questions we want to ask in this module\n",
"<ul>\n",
" <li>do I know if the dealer is offering fair value for my trade-in?</li>\n",
" <li>do I know if I put a fair value on my car?</li>\n",
"</ul>\n",
"<p>Data Analytics, we often use <b>Model Development</b> to help us predict future observations from the data we have.</p>\n",
"\n",
"<p>A Model will help us understand the exact relationship between different variables and how these variables are used to predict the result.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Setup</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"load data and store in dataframe df:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>make</th>\n",
" <th>aspiration</th>\n",
" <th>num-of-doors</th>\n",
" <th>body-style</th>\n",
" <th>drive-wheels</th>\n",
" <th>engine-location</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>...</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>horsepower-binned</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>convertible</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>alfa-romero</td>\n",
" <td>std</td>\n",
" <td>two</td>\n",
" <td>hatchback</td>\n",
" <td>rwd</td>\n",
" <td>front</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>...</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>fwd</td>\n",
" <td>front</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>audi</td>\n",
" <td>std</td>\n",
" <td>four</td>\n",
" <td>sedan</td>\n",
" <td>4wd</td>\n",
" <td>front</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>...</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>Medium</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" symboling normalized-losses make aspiration num-of-doors \\\n",
"0 3 122 alfa-romero std two \n",
"1 3 122 alfa-romero std two \n",
"2 1 122 alfa-romero std two \n",
"3 2 164 audi std four \n",
"4 2 164 audi std four \n",
"\n",
" body-style drive-wheels engine-location wheel-base length ... \\\n",
"0 convertible rwd front 88.6 0.811148 ... \n",
"1 convertible rwd front 88.6 0.811148 ... \n",
"2 hatchback rwd front 94.5 0.822681 ... \n",
"3 sedan fwd front 99.8 0.848630 ... \n",
"4 sedan 4wd front 99.4 0.848630 ... \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km horsepower-binned diesel gas \n",
"0 11.190476 Medium 0 1 \n",
"1 11.190476 Medium 0 1 \n",
"2 12.368421 Medium 0 1 \n",
"3 9.791667 Medium 0 1 \n",
"4 13.055556 Medium 0 1 \n",
"\n",
"[5 rows x 29 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# path of data \n",
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'\n",
"df = pd.read_csv(path)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>1. Linear Regression and Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"<p>One example of a Data Model that we will be using is</p>\n",
"<b>Simple Linear Regression</b>.\n",
"\n",
"<br>\n",
"<p>Simple Linear Regression is a method to help us understand the relationship between two variables:</p>\n",
"<ul>\n",
" <li>The predictor/independent variable (X)</li>\n",
" <li>The response/dependent variable (that we want to predict)(Y)</li>\n",
"</ul>\n",
"\n",
"<p>The result of Linear Regression is a <b>linear function</b> that predicts the response (dependent) variable as a function of the predictor (independent) variable.</p>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
" Y: Response \\ Variable\\\\\n",
" X: Predictor \\ Variables\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <b>Linear function:</b>\n",
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li>a refers to the <b>intercept</b> of the regression line0, in other words: the value of Y when X is 0</li>\n",
" <li>b refers to the <b>slope</b> of the regression line, in other words: the value with which Y changes when X increases by 1 unit</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Lets load the modules for linear regression</h4>"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Create the linear regression object</h4>"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm = LinearRegression()\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>How could Highway-mpg help us predict car price?</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For this example, we want to look at how highway-mpg can help us predict car price.\n",
"Using simple linear regression, we will create a linear function with \"highway-mpg\" as the predictor variable and the \"price\" as the response variable."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"X = df[['highway-mpg']]\n",
"Y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using highway-mpg."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X,Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can output a prediction "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([16236.50464347, 16236.50464347, 17058.23802179, 13771.3045085 ,\n",
" 20345.17153508])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Yhat=lm.predict(X)\n",
"Yhat[0:5] "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the intercept (a)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"38423.3058581574"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>What is the value of the Slope (b)?</h4>"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-821.73337832])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>What is the final estimated linear model we get?</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear model with the structure:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b X\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plugging in the actual values we get:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>price</b> = 38423.31 - 821.73 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 a): </h1>\n",
"\n",
"<b>Create a linear regression object?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"to=LinearRegression()\n",
"to"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1 = LinearRegression()\n",
"lm1 \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1 b): </h1>\n",
"\n",
"<b>Train the model using 'engine-size' as the independent variable and 'price' as the dependent variable?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"indi_vari = df[['engine-size']]\n",
"depen_vari = df[['price']]\n",
"to.fit(indi_vari, depen_vari)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm1.fit(df[['highway-mpg']], df[['price']])\n",
"lm1\n",
"\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 c):</h1>\n",
"\n",
"<b>Find the slope and intercept of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Slope</h4>"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[166.86001569]])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"to.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Intercept</h4>"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7963.33890628])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"to.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# Slope \n",
"lm1.coef_\n",
"# Intercept\n",
"lm1.intercept_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #1 d): </h1>\n",
"\n",
"<b>What is the equation of the predicted line. You can use x and yhat or 'engine-size' or 'price'?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# You can type you answer here\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# using X and Y \n",
"Yhat=-7963.34 + 166.86*X\n",
"\n",
"Price=-7963.34 + 166.86*engine-size\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Multiple Linear Regression</h4>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>What if we want to predict car price using more than one variable?</p>\n",
"\n",
"<p>If we want to use more variables in our model to predict car price, we can use <b>Multiple Linear Regression</b>.\n",
"Multiple Linear Regression is very similar to Simple Linear Regression, but this method is used to explain the relationship between one continuous response (dependent) variable and <b>two or more</b> predictor (independent) variables.\n",
"Most of the real-world regression models involve multiple predictors. We will illustrate the structure by using four predictor variables, but these results can generalize to any integer:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Y: Response \\ Variable\\\\\n",
"X_1 :Predictor\\ Variable \\ 1\\\\\n",
"X_2: Predictor\\ Variable \\ 2\\\\\n",
"X_3: Predictor\\ Variable \\ 3\\\\\n",
"X_4: Predictor\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"a: intercept\\\\\n",
"b_1 :coefficients \\ of\\ Variable \\ 1\\\\\n",
"b_2: coefficients \\ of\\ Variable \\ 2\\\\\n",
"b_3: coefficients \\ of\\ Variable \\ 3\\\\\n",
"b_4: coefficients \\ of\\ Variable \\ 4\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equation is given by"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>From the previous section we know that other good predictors of price could be:</p>\n",
"<ul>\n",
" <li>Horsepower</li>\n",
" <li>Curb-weight</li>\n",
" <li>Engine-size</li>\n",
" <li>Highway-mpg</li>\n",
"</ul>\n",
"Let's develop a model using these variables as the predictor variables."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"Z = df[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the linear model using the four above-mentioned variables."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(Z, df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the value of the intercept(a)?"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-15806.62462632922"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.intercept_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What are the values of the coefficients (b1, b2, b3, b4)?"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([53.49574423, 4.70770099, 81.53026382, 36.05748882])"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" What is the final estimated linear model that we get?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we saw above, we should get a final linear function with the structure:\n",
"\n",
"$$\n",
"Yhat = a + b_1 X_1 + b_2 X_2 + b_3 X_3 + b_4 X_4\n",
"$$\n",
"\n",
"What is the linear function we get in this example?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Price</b> = -15678.742628061467 + 52.65851272 x <b>horsepower</b> + 4.69878948 x <b>curb-weight</b> + 81.95906216 x <b>engine-size</b> + 33.58258185 x <b>highway-mpg</b>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2 a): </h1>\n",
"Create and train a Multiple Linear Regression model \"lm2\" where the response variable is price, and the predictor variable is 'normalized-losses' and 'highway-mpg'.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2 = LinearRegression()\n",
"lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2 = LinearRegression()\n",
"lm2.fit(df[['normalized-losses' , 'highway-mpg']],df['price'])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #2 b): </h1>\n",
"<b>Find the coefficient of the model?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1.49789586, -820.45434016])"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"lm2.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"lm2.coef_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>2) Model Evaluation using Visualization</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we've developed some models, how do we evaluate our models and how do we choose the best one? One way to do this is by using visualization."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"import the visualization package: seaborn"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"# import the visualization package: seaborn\n",
"import seaborn as sns\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Regression Plot</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When it comes to simple linear regression, an excellent way to visualize the fit of our model is by using <b>regression plots</b>.</p>\n",
"\n",
"<p>This plot will show a combination of a scattered data points (a <b>scatter plot</b>), as well as the fitted <b>linear regression</b> line going through the data. This will give us a reasonable estimate of the relationship between the two variables, the strength of the correlation, as well as the direction (positive or negative correlation).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's visualize Horsepower as potential predictor variable of price:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 48288.38946510512)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAJNCAYAAABwXMA5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXic1Xn//8+ZfUa7bMmbZGzZBoMTzGI7EIhjyMY332DSlgSTBQgU3ISkadO0adqGtqTfX5MuWZpAYlr2LIaSzUlLWggIJ2HxAhhiENiWjSVvsrVLs89zfn/MCGzjRZY0zyx6v67L18iP9cycAXPxmaP73Lex1goAAACAOzyFXgAAAAAwmRDAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAX+Qq9ALdNnTrVzpkzp9DLAAAAQJnbvHnzIWttw9HXJ10AnzNnjjZt2lToZQAAAKDMGWNeO9Z1SlAAAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAFxHAAQAAABcRwAEAAAAXEcABAAAAF/kKvYDJoLWtS2vWt6ujN6rmuohWL2/RioWNhV4WAAAACoAd8DxrbevSLeu2qmswrtqwX12Dcd2ybqta27oKvTQAAAAUAAE8z9asb5ffaxQJ+GRM9tHvNVqzvr3QSwMAAEABEMDzrKM3qrDfe8S1sN+rzt5ogVYEAACAQiKA51lzXUSxVOaIa7FURk11kQKtCAAAAIVEAM+z1ctblMpYRZNpWZt9TGWsVi9vKfTSAAAAUAAE8DxbsbBRt65cpMaqkPpjKTVWhXTrykV0QQEAAJikaEPoghULGwncAAAAkMQOOAAAAOAqAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIgI4AAAA4CICOAAAAOAiAjgAAADgIl+hFwDkW2tbl9asb1dHb1TNdRGtXt6iFQsbC70sAAAwSbEDjrLW2talW9ZtVddgXLVhv7oG47pl3Va1tnUVemkAAGCSIoCjrK1Z3y6/1ygS8MmY7KPfa7RmfXuhlwYAACYpAjjKWkdvVGG/94hrYb9Xnb3RAq0IAABMdtSAu4Aa5MJprouoazCuSOCNv+qxVEZNdZECrgoAAExm7IDnGTXIhbV6eYtSGatoMi1rs4+pjNXq5S2FXhoAAJikCOB5Rg1yYa1Y2KhbVy5SY1VI/bGUGqtCunXlIn4CAQAACoYSlDzr6I2qNuw/4ho1yO5asbCRwA0AAIoGO+B51lwXUSyVOeIaNcgAAACTFwE8z6hBBgAAwOEI4HlGDTIAAAAORw24C6hBBgAAwAh2wAEAAAAXEcABAAAAF+U9gBtjvMaY54wxv8j9vt4Y84gxZlvuse6w7/2iMWa7MeYVY8z7Drt+vjHmxdyf/ZsxxuSuB40xD+SuP2OMmZPv9wMAAACMhxs74J+V9PJhv/9LSb+y1i6Q9Kvc72WMOUvSKkmLJF0m6XZjjDd3z3ck3SRpQe7XZbnrN0jqtdbOl/R1SV/N71sBAAAAxievAdwY0yTp/0r6j8MuXyHp3tzX90r64GHX11prE9banZK2S1pmjJkhqdpa+5S11kq676h7Rp7rIUnvGtkdBwAAAIpRvnfAvyHpLyQ5h12bZq3dJ0m5x5H2ILMkdRz2fZ25a7NyXx99/Yh7rLVpSf2SpkzsWwAAAAAmTt4CuDHmA5K6rLWbR3vLMa7ZE1w/0T1Hr+UmY8wmY8ymgwcPjnI5AAAAwMTL5w74RZJWGmN2SVor6VJjzPckHciVlSj32JX7/k5JzYfd3yRpb+560zGuH3GPMcYnqUZSz9ELsdbeYa1dYq1d0tDQMDHvDgAAABiDvAVwa+0XrbVN1to5yh6ufMxa+zFJ6yRdm/u2ayX9LPf1Okmrcp1N5ip72HJDrkxl0BhzQa6++5qj7hl5ritzr/GmHXAAAACgWBRiEuZXJD1ojLlB0m5JH5Ika+1WY8yDkl6SlJZ0s7U2k7vnk5LukRSW9HDulyTdKel+Y8x2ZXe+V7n1JgAAAICxMJNtw3jJkiV206ZNhV4GAAAAypwxZrO1dsnR15mECQAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALjIV+gFADix1rYurVnfro7eqJrrIlq9vEUrFjYWelkAAGCM2AEHilhrW5duWbdVXYNx1Yb96hqM65Z1W9Xa1lXopQEAgDFiBxx5xw7u2K1Z3y6/1ygSyP6nGgn4FE2mtWZ9O/8MAQAoUeyAI6/YwR2fjt6own7vEdfCfq86e6MFWhEAABgvAjjy6vAdXGOyj36v0Zr17YVeWklorosolsoccS2WyqipLlKgFQEAgPEigCOv2MEdn9XLW5TKWEWTaVmbfUxlrFYvbyn00gAAwBgRwJFX7OCOz4qFjbp15SI1VoXUH0upsSqkW1cuov4bAIASxiFM5NXq5S26Zd1WRZNphf1exVIZdnBP0YqFjQRuAADKCDvgyCt2cAEAAI7EDjjyjh1cAACAN7ADDgAAALiIAA4AAAC4iBKUEsAkSQAAgPLBDniRY5IkAABAeSGAFzkmSQIAAJQXAniRY5IkAABAeSGAFzkmSQIAAJQXAniRW728RamMVTSZlrXZR7cnSba2denqO57WxV99TFff8TT15wAAAONAAC9yhZ4kySFQAACAiUUbwhJQyEmShx8ClaRIwKdoMq0169tphQgAADAG7IDjhDgECgAAMLEI4DghDoECAABMLAL4JDCeQ5TFcAgUAACgnBDAy9x4D1EW+hAoAABAueEQZpmbiEOUhTwECgAAUG7YAS9zHKIEAAAoLgTwMschSgAAgOJCAC9zHKIEAAAoLgTwMschSgAAgOLCIcxJgEOUAAAAxYMdcAAAAMBFBHAAAADARZSgTAKtbV1as75dHb1RNddFtHp5CyUpAAAABcIOeJkb7yRMAAAATCx2wMvcREzCRGHxEwwAAMoLO+BljkmYpY2fYAAAUH4I4GWOSZil7fCfYBiTffR7jdasby/00gAAwBgRwMsckzBLGz/BAACg/BDAyxyTMEsbP8EAAKD8cAhzEmASZulavbxFt6zbqmgyrbDfq1gqw08wAAAoceyAA0WMn2AAAFB+2AEHihw/wQAAoLywAw4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiIAA4AAAC4iAAOAAAAuIgADgAAALiISZhAkWtt69Ka9e3q6I2quS6i1ctbmIwJAEAJYwccKGKtbV26Zd1WdQ3GVRv2q2swrlvWbVVrW1ehlwYAAMaIAA4UsTXr2+X3GkUCPhmTffR7jdasby/00gAAwBhRgoKTogSicDp6o6oN+4+4FvZ71dkbLdCKAADAeLEDjhOiBKKwmusiiqUyR1yLpTJqqosUaEUAAGC8COA4IUogCmv18halMlbRZFrWZh9TGavVy1sKvTQAADBGBHCcUEdvVGG/94hrlEC4Z8XCRt26cpEaq0Lqj6XUWBXSrSsXUQIEAEAJowYcJ9RcF1HXYFyRwBt/VSiBcNeKhY0EbgAAygg74DghSiAAAAAmFgEcJ0QJBAAAwMSiBAUnRQlEYdEGEgCA8sIOOFDEaAMJAED5IYADRYw2kAAAlB8COFDEaAMJAED5IYADRYxJmAAAlB8COFDEaAMJAED5IYADRYw2kAAAlB/aEAJFjjaQAACUF3bAAQAAABcRwAEAAAAXUYKCssckSQAAUEzYAUdZY5IkAAAoNgRwlDUmSQIAgGJDAEdZY5IkAAAoNgRwlDUmSQIAgGJDAEdZY5IkAAAoNgRwlDUmSQIAgGKTtzaExpiQpPWSgrnXecha+7fGmHpJD0iaI2mXpA9ba3tz93xR0g2SMpL+2Fr7P7nr50u6R1JY0n9L+qy11hpjgpLuk3S+pG5JV1lrd+XrPaE0MUkSAAAUk3zugCckXWqtXSzpHEmXGWMukPSXkn5lrV0g6Ve538sYc5akVZIWSbpM0u3GmJHTc9+RdJOkBblfl+Wu3yCp11o7X9LXJX01j+8HAAAAGLe8BXCbNZT7rT/3y0q6QtK9uev3Svpg7usrJK211iastTslbZe0zBgzQ1K1tfYpa61Vdsf78HtGnushSe8yxpgTr2v87w0AAAAYq7zWgBtjvMaY5yV1SXrEWvuMpGnW2n2SlHscqQ2YJanjsNs7c9dm5b4++voR91hr05L6JU050ZpSGUeHhhKyJHEAAAAUQF4DuLU2Y609R1KTsrvZbznBtx9r59qe4PqJ7jnyiY25yRizyRizqaf7kAZiKXX2xhQ/qj0dAAAAkG+udEGx1vZJalW2dvtArqxEuceRmeCdkpoPu61J0t7c9aZjXD/iHmOMT1KNpJ5jvP4d1tol1tol9VOmSsruhO/ti6lnOMluOAAAAFyTtwBujGkwxtTmvg5LerekNknrJF2b+7ZrJf0s9/U6SauMMUFjzFxlD1tuyJWpDBpjLsjVd19z1D0jz3WlpMfsKabpvmhSe/piSqadMb1PAAAA4FTkrQ2hpBmS7s11MvFIetBa+wtjzFOSHjTG3CBpt6QPSZK1dqsx5kFJL0lKS7rZWjtSI/JJvdGG8OHcL0m6U9L9xpjtyu58rxrLQpNpR3v6YqqPBFQT8Y/lKQAAAIBRMZOt/OLsc86zP31k/XH/PBzwqqEyKJ+XGUUAAAAYO2PMZmvtkqOvkzKPEktmtKcvpuFEutBLAQAAQBkigB9DxrE6MBBX12BcjjO5fkIAAACA/CKAn8BQPK09fbQrBAAAwMQhgJ9EKuNoX39cvcPJQi8FAAAAZYAAPgrWWvVGk9rbF1M6Q7tCAAAAjB0B/BTEU9kDmkMc0AQAAMAYEcBPUcax6hqI6+BgggOaAAAAOGUE8DEajKe0py+mRJoDmgAAABg9Avg4pDKO9vbF1R9NFXopAAAAKBEE8HGy1qp7OKH9/XFlKEkBAADASRDAJ0g0mVZnb1TRJAc0AQAAcHwE8AmUcaz298fVPZSQteyGAwAA4M18hV5AOeqPpRRLZdRYFVLAx2ccjE9rW5fWrG9XR29UzXURrV7eohULGwu9LAAAMEakwzxJph3t6YtpIM4BTYxda1uXPv/QFj3X0asDA3E919Grzz+0Ra1tXYVeGgAAGCMCeB5Za3VoMKEDAxzQxNh85eGX1RdNyTqS1xhZR+qLpvSVh18u9NIAAMAYUYLiguFEWomUo4aqoMIBb6GXgxKyszsqj5E8HiNJMkayjtXO7miBVwYAAMaKHXCXpB1H+/pjHNAEAACY5AjgLuuPZSdoJtNOoZeCEtAytUKOlRxrZWXlWCvHZq8DAIDSRAAvgJEDmv0xDmjixL5w2ULVRfwyktIZR0ZSXcSvL1y2sNBLAwAAY0QALxBrrbqHEtrXH1M6w244jm3Fwkb985WLde7sOs2oCevc2XX65ysX04YQAIASxiHMAoslM9rTF9PUyqAqgvzrwJutWNhI4AYAoIywA14EMo7VgYG4ugbjcmhXCAAAUNYI4EVkKJ7Wnr6Y4qlMoZcCAACAPCGAF5lUxtHePtoVAgAAlCsCeJEaaVeYSLMbDgAAUE4I4EUsmXa0ty+uvmiy0EsBAADABCGAFzlrrXqGk9rbF1OKdoUAAAAljwBeIuKpjPb0xjQQZ3gPAABAKSOAlxDHWh0aTGh/f5zhPQAAACVq0gXwg0MJxZKlfbAxmkyrszemQXbDAQAASs6kC+A9w0ldc9cG/e/W/XJKuM2fY60OshsOAABQciZdADeSuoeT+sovX9Gnf/CcXt43UOgljUs0mR3eM5RIF3opAAAAGIVJF8DnTq3QJWc0SJLa9g/q5h88p398uE2HhhIFXtnYZRyrroG4ugbiyjDKHgAAoKhNugDu93r0pQ+cpW9ctVjzGyslSY+8dEDX3LVB33/mNSXTpVvOMZRIq7M3qmF2wwEAAIrWpAvgI85uqtV3Pnqe/uw9p6s27Fc85ejO3+zSdXdv1PptB0t2DHzGsTowEFfXYFwOu+EAAABFx5Rq0Byrs885z/70kfVHXBtKpHX/U6/px8/teb2E49zZtbp5xTy1NFQWYpkTwufxqKEqqHDAW+ilAAAATDrGmM3W2iVHX5+0O+CHqwz69MkV83TntUt0QUu9JOm53X266f7N+saj29QfLc12f2nH0b7+mA4NJUp2Rx8AAKDcsAN+DBt29uj21h3a3ROVlA3o1739NK1cPFM+b2l+Zgn4PGqsCingK831AwAAlBp2wE/Bsrn1+o9rztfNl8xTRdCroURa3358h268b7M27uop9PLGJJl2tKePUfYAAACFRgA/Dp/Xoz84r0n3X79Ml589Qx4jvdYT1Rd+9KL++ie/U2dvtNBLPGU2N8r+AO0KAQAACoYAfhK1kYD+9D2na83Hztc5zTWSpKfau3X9PZv03Sd2lOQAnOFEWnt6Y4olM4VeCgAAwKRDDfgpsNbq19sO6btPtGv/QFySVBfx64aL5+p9i6bL6zETuVRX1EYCqov4ZUzprR0AAKCYHa8GnAA+BolURv+5uVM/eGa34rnBPQsaK/XpS+brrU01E7FMV3FAs7i1tnVpzfp2dfRG1VwX0erlLVqxsLHQywIAACdBAM+ZiAA+4uBgQv/+63Y9+nLX69cuOaNBq5e3qLE6NCGv4RZjjOorAqoJ+wu9FBymta1Lt6zbKr/XKOz3KpbKKJWxunXlIkI4AABFji4oedBQFdRfvf9Mfevqc3TG9CpJ0uOvHNS1d2/UvU/uUjxVOjXW1lp1DyW0v58DmsVkzfp2+b1GkYBPxmQf/V6jNevbC700AAAwRgTwCbBoZo1u+8i5+sJlZ6i+IqBE2tG9T72m6+7eqMfbukpqCE40mVZnb1TRZOkdLi1HHb1Rhf1HTjIN+70l2YUHAABkEcAniMcYvW/RdN13/VJdvaxZfq9R12BCX/6vl/UnDzyvVw8MFnqJo5ZxrPb3x3VwMCGH3fCCaq6LKHbUT1JiqYya6iIFWhEAABgvAvgEiwR8uvEdLbrruqW6aP4USdKLewb0ye89q3/531fUG00WeIWjNxhPaU9frKRKacrN6uUtSmWsosm0rM0+pjJWq5e3FHppAABgjDiEmWebX+vVbY9v167ubMlARcCrj194mn7v3Fnyl9BY+5qwX/UVAdoVFsBIF5TO3qia6IICAEDJoAtKjtsBXMqWdPzihb26+7e7NBDP1lY31YX1qRXz9La59SUTagM+jxqqggr6vCf/ZgAAgElu3F1QjDGnGWPenfs6bIypmsgFljOvx+iKc2bpvuuX6ffOnSWPkTp7Y/qrn/xOX/zxi3qte7jQSxyVZNrR3r64+kqojAYAAKDYjCqAG2NulPSQpDW5S02SfpqvRZWr6rBfn7l0vv7j2iU6/7Q6SdKGXb36w/s267bHt2swnirwCk/OWque4aT29sWUyjiFXg4AAEDJGe0O+M2SLpI0IEnW2m2SKEIdozlTKvRPf/BWffmKRZpZG1LGsfrRs3t0zV0b9fMte0uiD3c8ldGe3pj6Y8X/oQEAAKCY+Eb5fQlrbXKkVtkY45NU/CmxiBljdNH8qVo6p14/frZT9z+9W/2xlL7+6Db9bMteffqS+TqnubbQyzwhJze8J5bMaGplQL4SOlRaShhFDwBAeRltYnrCGPNXksLGmPdI+k9JP8/fsiaPgM+jVctm6/4blumyRdMlSe0Hh/W5B7fo79Zt1b7+WIFXeHLRZFp7+mIaSjC8Z6KNjKLvGoyrNuxX12Bct6zbqta2rkIvDQAAjNFoA/hfSjoo6UVJqyX9t6S/ydeiJqP6ioD+4rIzdPtHz9VZM6olSeu3HdJ1d2/Unb/ZqViyuHtxZxyrroG4ugYYZT+RGEUPAED5GW0AD0u6y1r7IWvtlZLuyl3DBFs4vVrfuvoc/fX7F2pqZUCpjNX3n9mta+7eoEdeOiCnyNtGDiXS2tMbY5T9BGEUPQAA5We0AfxXOjJwhyU9OvHLgZStD3/XmdN07/XL9PELZivg86h7KKl/fLhNf/zD5/TyvoFCL/GE0o7DKPsJwih6AADKz2gDeMhaOzTym9zXJIA8C/u9+sRFc3XPJ5bqnac3SJJe2jeom3/wnL76yzZ1DyUKvMITY5T9+DGKHgCA8jPaAD5sjDlv5DfGmPMlFf/pwDIxvTqkv738LH39qsWa31ApSfqfrQd0zV0b9YNndiuZLt5+3KmMo719MfUMJzXZpq5OhBULG3XrykVqrAqpP5ZSY1VIt65cRBcUAABK2KhG0RtjlkpaK2lv7tIMSVdZazfncW15UYhR9BMp41g9/Lv9uvM3O1/vwT2jJqRPvnOeLpo/pajH2jPKHgAATCbHG0U/qgCeewK/pDMkGUlt1tqSnMBS6gF8xFA8rfuffk0/fm7P611Hzptdq5svma+5UysKvLojbWjv0dqNHdo3ENOMmrD+8OK5+sDimYVeFgAAQF6NKYAbYy611j5mjPn9Y/25tfbHE7hGV5RLAB+xuyeq21t3aMPOHkmSx0iXL56p694+RzVhf4FXlw3f33xsm3weo5Dfo3jKUdqx+vx7T9fKc2bJz/AeAABQpo4XwE82CfOdkh6TdPkx/sxKKrkAXm5m10f0ld9/q55u79Z3Wneoozemnz2/V4+1dem6t8/RysUz5fUUrixl7cYO+Tzm9VZ6Yb9XsVRG9z+1W+efVq/6yoCqQ4X/oAAAAOCWEwZwa+3fGmM8kh621j7o0powBhe0TNH5p9Xpp8/v1X1P7dJgPK1vPbZdP9+yVzdfMl/nn1ZXkHXtG4ipOnTkX7OQ36P9AzE51urQ4Mgo+2BBPygAAAC45aQ//7fWOpI+7cJaXFHMhxTHy+/16EPnN+m+65fpA2fPkJG0qzuqP3/oBX3pp7/Tnl73G9fMqA4rnjqyS0s85Wh69Rtt5Ydzw3uKfdonAADARBhtAe4jxpjPG2OajTH1I7/yurI88XuNZtWFVRnylW0Yr4sE9Ln3nK41Hz9fZzfVSJJ+u6Nb19+7UXesb3d1SuWqpc1KO1axVEZW2ce0Y7VqafMR35d2HO3rj6l7KEG7QgAAUNZG24Zwp7I130ew1pbcNJAlS5bYTZs2SZLSGUcD8bQGYqmiH/E+VtZard92SN99YocODGQH99RXBPSHF8/VexdNk8eFDyEjXVD2D8Q0vTqsVUubtazl+J/fgn6vGiqDCvg4oAkAAErXuNoQGmPCkj4l6WJlg/ivJX3XWltyw3gOD+AjHMdqMJ7WQDylVKZ4h9qMRyKV0YObO/XDZ3Yrnhvcc8a0Kt18yTy9ZVZNgVf3Zh5jOKAJAABK2ngD+IOSBiR9P3fpakm11toPT+gqXXCsAH64oURa/bGUEmU6Pv3gYEL//ut2Pfpy1+vX3rWwUTctb1FDVbCAKzu2iqCPA5oAAKAkjTeAb7HWLj7ZtVJwsgA+Ip7KaCCW0lDCvXppN/1uT79ue3yHXjkwKEkK+Ty6etlsfXhJk4L+4ppU6fN4NLUqoEjgZF0zAQAAisfxAvhoi2yfM8ZccNiTvU3SbydqccUo5PeqsTqk5vqIasL+sjuw+ZZZNbrto+fqL953huoifsXTju5+cpeuu2ejWl85WFQHIdOOo/39cR0cTMhximddAAAAYzHaHfCXlR1Dvzt3abaklyU5kqy19uy8rXCCjXYH/GgZx6o/lirLA5vDibS+/8xu/ejZTqUy2fd2dlONPn3JfM1vrCzw6o7k93rUUBVUqMh26QEAAI423hKU007059ba18axNleNNYCPyDhWA7GU+sswiO/pjem7T+zQb3d0S5KMpPe/dYauv3iO6iKBwi7uKLWRgOoi5feTCQAAUD7GFcDLyXgD+AjHsRqIZ4N4pszKIjbt6tFtrTv0WndUklQR8OqaC0/TB8+dJb+3eFoDBnzZ3fCgj91wAABQfAjgORMVwEeMtDDsiyXLKohnHKt1W/bqniezY+0lqakurE+tmKcLWqYUeHVvMMaoNuxXbRnvhre2dWnN+nZ19EbVXBfR6uUtWrGwsdDLAgAAJ0EAz5noAD7CWquBWLaFYdopn17i/bGU7nlyl36+Za9GPl8sm1uvT71znmZPiRR2cYcp193w1rYu3bJuq/xeo7Dfq1gqo1TG6taViwjhAAAUOQJ4Tr4C+AhrrQbiafVHyyuItx8c0m2tO/Tc7j5Jktdj9HvnztQ1F8xRZag42gMaY1QT9pdVbfjVdzytrsH4ES0Yo8m0GqtC+uFNF5zgzonDDjwAAGMz3jaEGKWRENhcH9bUqmBR1UyPR0tDpf7lyrN168pFmlETUsaxemjzHn38rg36xQt7i6L8xlqrvmhSe/piSqTLY5BSR29U4aM6voT9XnX2Rl15/ZEd+K7BuGrDfnUNxnXLuq1qbes6+c0AAOCYyiMdFiFjjKpDfjXXR9RYHVLAV/r/qI0xunjBVN193XKzEvAAACAASURBVFL94cVzFfJ71B9L6WuPbNMnv/estnT2FXqJkqRk2tHevrj6oslCL2Xcmusiih01lTWWyqipzp3ynzXr2+X3GkUCPhmTffR7jdasb3fl9QEAKEelnwpLQGXQp6a6iKbXhBQOlH6NcsDn0UfeNlv3Xb9M71s0TZK0/eCQ/vSBLfr7n7+k/QPxAq8wuxveM5zU3r6YUpnSLQVavbxFqYxVNJmWtdnHVMZq9fIWV16/0DvwAACUIwK4iyIBn2bUhDWzNqyKYHHUTY/H1MqgvnDZQt32kXN11owqSdITrx7UdXdv1D2/3fWmndtCiKcy2tMb00A8VeiljMmKhY26deUiNVaF1B9LqbEq5OoBzELvwAMAUI44hFlAybSjvlhSw4lMUY1+HwvHWj2WO6zXPZQt/WioDOqm5XN16cLGojgUGQn4NLUyIF+Z1OW7obWtS3/+0BYNxtNKO458Ho+qQj7985WLOYgJAMBJcAizCAV8HjVWhdRcF1ZN2C9PEYTUsfIYo3efOU33fWKZPnbBbPm9RgeHEvp//92mP177vF7ZP1joJSqaTGtPX0xDiXShl1JSrCSZ7BkAmdzvAQDAmLEDXkRGxtwPxEt/uua+/pjWrG/X+lcPScqOtX/foun6w3fMVX1F4cfaVwZ9mloZlMdTuh963FAMbRABAChV7ICXAK/HqK4ioOa6iOorAvKWcDicURPW312+SF/78GK1NFTISvrl1v265q4NWrtht5Lpwh6MHEqk1dkbUyxZ+Dr1YsYhTAAAJh4BvAh5PEa1kWwQn1IRLOkgfk5zrdZ87Hz96bsXqDrkUzSZ0R2/3qnr792o324/VNDa97TjaF9/TIeGEnJK/CcO+cIhTAAAJh4BvIh5PEY1Eb9m12eDuM9Tmv+6vB6jyxfP1P03LNMfnDdLXo/R3r64vvSzrfqLH72onYeGC7q+gVhKe/piihdB15ZiU+g2iAAAlCNqwEuItVaDieyY+1Lubf1a97Bub92hjbt6JUkeI11xzixde+Fpqg77C7q2ukhAdUfVqE/2Uewj77+zN6qmSfj+AQAYq+PVgBPAS9RwIq2+WEqJEt21tdbq6fYefeeJHersjUmSqkM+Xff2Obp88cyClt2E/F41VgXl83peH8Xu9xqF/V7FUhmlMtbVXtwAAKA0cQizzFQEfZpVmx3qc3iHilJhjNGF86bozmuX6I/e2aKKgFcD8bT+7bHtuun+zXr2td6CrS2eyqizN9uukFHsAABgohHAS1zI79X0mpBm1YVVWYLTNf1ejz68pFn3Xr9M73/rdBlJOw8N6/MPvaAv/ex32tMXK8i6HGvVNRDXru5hhXxH/mdCFxAAADAepZfYcExBn1eN1V7VZRz1x1IajKdLarpmfUVAn3/vGVq5eKZue3y7XtwzoN9u79aGnT268vwmffRtswuy0z+tKqSeaEJVoTcGJdEF5NRM9hp6AACOxg54mfF7PZpaGdTs+ohqI4GSm655+rQqfeOqc/Sl/3umGquCSmWsfrihQ9fctVH/s3W/HJc/VKxa2qxUJjsgKZVx6AJyikZq6LsG46oN+9U1GNct67aqta2r0EsDAKBgOIRZ5hzHajCeVn8spbRTWp1T4qmMHtjYobUbO5TIDe45Y3qVPnPJfJ01s9q1dWxo79HajR3aPxDTzNqwbl4xX+86a5prr1/Krr7jae3qHtJALK1kxlHA61F12Kc5UyqZpAkAKHt0QcmZbAF8RCm3MDwwENcd69v1+CsHX7/27jMbdeM7WtRQFXR9PV6P0dTKoCpKsObebUv+4RH1R1PyeIyMkazNfiisifi16W/eU+jlAQCQV3RBmeSMMaoO+dVcH1FDVVABX+n8q59WHdKXPnCWvnnVOVrQWClJevTlLl171wbd//RrrrdizDhWBwbiOjSUKKk6+0JIph3JSB5jZGSyJVEmdx0AgEmqdFIYJkxVyK+muoim14QU9HsLvZxRe2tTjW7/6Hn6/HtPV13Er3ja0d2/3aVP3LNJT7x60PUwPBBLqbM3pkS6NHuxu8HvzZ5BcBwra60cJ/vvKOAtrbMJAABMJAL4JBYJlF4vca/H6P1vnaH7rl+mq5Y0yecx2j8Q19///CV97sEt2tE15Op6UhlHe/viGoinXH3dUnH6tGpNqQjI5zXKWCuf12hKRUALprlXww8AQLEhgKMke4lXBH1a/c55uuu6JbqwZYokaUtnv1Z/b7O+/sir6osmXVuLtVaHBhM6MBBXxqEk5XCrl7co4Mv+/TpjWpWm14QU8HnpIgMAmNQ4hIk3SZVgL/GNu3p0++M79FpPdkBORdCray+cow+eM1M+r3ufM30ejxqrgwqVUGlPvo30Ae/sjaqJPuAAgEmELig5BPDRyzjZ/tcD8VRJ7OymM45+tmWv7n3yNQ0l0pKk2fURfWrFPC2bW+/qWuorAqqNBFx9TQAAUFwI4DkE8FNXar3E+6Mp3f3kLv3ihb0a+dxwQUu9PvnOeWqud2+CZTjg1dTKoPwu7sADAIDiQQDPIYCPnbVWQ4lsEC+FNnI7Dg7ptse36/mOfknZA5y/f+4sffzC01yrdfcYo7qKgGrCfldeDwAAFA/X+4AbY5qNMY8bY142xmw1xnw2d73eGPOIMWZb7rHusHu+aIzZbox5xRjzvsOun2+MeTH3Z/9mTHa+ujEmaIx5IHf9GWPMnHy9H2R7iR/ewrDY65znNVTqXz+0WH+38ixNrw4p41j95+ZOXXPnBv3XC/tcKatxrFX3UEL7+mMlNwAJAADkRz5/Np6W9GfW2jMlXSDpZmPMWZL+UtKvrLULJP0q93vl/myVpEWSLpN0uzFmJOF9R9JNkhbkfl2Wu36DpF5r7XxJX5f01Ty+HxwmEvBpZq6FYTFPhDTGaPmCBt3ziaW64eI5Cvk96oul9K+PvKpPfv9ZvdDZ58o6YsmM9vTGaFcIAADyF8Cttfustc/mvh6U9LKkWZKukHRv7tvulfTB3NdXSFprrU1Ya3dK2i5pmTFmhqRqa+1TNlsvc99R94w810OS3jWyOw53hPxeTasOqakuosqQT8X6jz/g8+ijbztN935imd5z1jRJ0vauIf3JA1v05V+8pAMD8byvwcm1K2Q3HACAyc2V02G50pBzJT0jaZq1dp+UDemSRvqRzZLUcdhtnblrs3JfH339iHustWlJ/ZKm5OM94MQCPo8aq0JqrgurJuzPjhwvQg1VQX3x/yzUbR85VwunV0mSHn/loK69e6PueXKX4i6MtWc3HACAyS3vtQPGmEpJP5L0J9bagRPskB7rD+wJrp/onqPXcJOyJSyaPXv2yZaMcfB5PZpSGVRtJFDULQzPnFGtb3/kXD360gH9+693qns4qfueek0Pv7hfNy1v0aULG17fzd/Q3qO1Gzu0byCmGdVhrVrarGUt42trOLIbPpxIq6Ey6GqvcgAAUFh5/b++McavbPj+vrX2x7nLB3JlJco9duWud0pqPuz2Jkl7c9ebjnH9iHuMMT5JNZJ6jl6HtfYOa+0Sa+2ShoaGiXhrOAmvJ9v9Y3Z9RFMqgvJ5ii9geozRexdN133XL9NH3zZbfq/RwaGE/t9/v6zPrn1erx4Y1Ib2Hn3zsW3qHk6oOuRT93BC33xsmza0v+mv2ZjEkhl1shsOAMCkks8uKEbSnZJettZ+7bA/Wifp2tzX10r62WHXV+U6m8xV9rDlhlyZyqAx5oLcc15z1D0jz3WlpMfsZOurWOSMMaqJ+NVcH1ZDVXH2xA4HvLrh4rm6+7qleseCqZKk3+0d0Ce/96z+6X9ekZEU9ntlZBT2e+XzGK3d2HHiJz0Fh9eGp6kNBwCg7OWzBOUiSR+X9KIx5vnctb+S9BVJDxpjbpC0W9KHJMlau9UY86Ckl5TtoHKztXakIPeTku6RFJb0cO6XlA349xtjtiu7870qj+8H4zDSwrAq5NdwIq2+WEoJF+qtT8XM2rD+fuUiPbu7V7c/vkPth4bVE03KY6T6SEB1Eb+MMQr5Pdo/EJvw1x/ZDa+vDKg6RN9wAADKFYN4UDCxZEb9sZSiyXShl/ImGcfqFy/s07cf3/56Dbvfa9RQGZTHSFMrQ/raVYvz9voVQZ+mVgbl9RTnYVYAAHByxxvEU7wNnFH2wgGvwgGvEumM+qMpDSWKJ4h7PUZXnDNTNSGf/uWRVxVNZpTKWO3tjyvo8+jD5zef/EnGYTiRVjyV0dTKYFH3WQcAAKeO/7Oj4II+rxqrvapNO+qPZYN4sfxkZsXCRkUCPt3z5C61HxpSMmOVSDv6xmPbtKs3qmsvPE1VeSoXyThWBwbiqgz5NLUiKA+74QAAlAVKUFB00plsEB+Mp+UU0d9Pa62eau/Wd1rbtacvWwNeHfLpExfN1QfOnpG3cpEN7T16YFOHugbjml1fodXLW7RiYePJbwQAAAV1vBIUAjiKVsaxE9JLfKL7eCfTjn783B597+nXFE1mD5K2TK3QzZfM07mz68b8vMcy0gbR58ke/kxlrDKO1ZeveAshHACAIkcAzyGAlx7HsRqMp9UfSyntnFqbvqMDbDzlKO1YffbSBeMeptMznNSdv9mpX/5u/+vTn96xYKr+6J0tmlETHtdzj/jcA1u0p29YQ4mMUhlHfq9HlSGfWqZW6oHVF07IawAAgPw4XgAvvqbMwFE8nrH3El+7sUM+j8lLH+/6ioD+/H1n6PaPnqdFM6slSb/edkjX3b1Rd/5mp2LJ8bdZfK1nWL3DKaUdK4/HKO1Y9Q4l9eqBQfXHGN4DAEApIoCjZIz0Em+uj2hadUhBv/ek9+wbiCnkP/Kv+UT38T5jepX+bdU5+uv3n6mGyqBSGavvP7Nb19y1Qf+7df+46tiTaUcy2amdRkYeYySTvd49lND+/vi4ynMAAID76IKCklQR9Kki6FMsmVFfLHnc3eYZ1WF1DycUPiysx1OOpldPTInICGOM3nVmo94+f4oe2NChtZs61D2c1Fd++Yp+tmWvPn3JfJ05o/qUn9fvNUqks2U4xkgjWT7gzR74jCbT6uzNqKEqqEjg2P85t7Z1ac36dnX0RtVcF+EQJwAABcYOOEpaOODVjJqwZtWFVXmMftmrljYr7VjFUhlZZR/TjtWqpfnp4x32e3XdRXN0zyeW6p2nN0iSXt43qJt/8Jy+8nCbDg0lTun55kypVG3YL5/XyLFWPq9Rbdiv06ZUvv49Gcdqf39cXYNv3g1vbevSLeu2qmswrtqwX12Dcd2ybqta27rG/2YBAMCYEMBRFrK9xENqro+oKpQdGS9Jy1rqddlZ09QznNSOg8PqGU7qsrOmjfsA5slMrw7pby8/S1+/arHmN2TD8v++dEDX3LVBP3hmd7a0ZBRWLW2W3+fV1Mqg5k6t0NTKoPw+7zE/QAzF0+rsjWow/kZt+Jr17fJ7jSIBn4zJPvq9RmvWt0/MGwUAAKeMAI6y4vd61FAVVHNdWLWRgDbu7NEvXzqg+oqA5jVUqL4ioF++dEAb2ntcWc/iplp952Pn6XPvOV21Yb/iKUf/8Zud+sQ9G/XrbYdOOnDoVD9AZByrg4PZ2vBUxlFHb/SI8hspu0vf2RudsPcIlLPWti5dfcfTuvirj+nqO57mp0cAJgQBHGXJ5/WoviKgnzy3R0GfJ7sDPMFdUEbL6zH6wNkzdN8Ny/Sh85vk9Rjt64/rb9dt1Z/95wtqPzh03Hs3tI/tA0Q0mdae3phmVIcUSx1ZHx9LZdRUFxn1+gkgmKwo4QKQLwRwlLXOvpgqg9myC5/XI2PMhHdBOZkN7T363ANbdON9m7TtwJD+5NIFuiC3g/18R59uun+zvvHoNvVH39xWcDxtFB1r9QfnNal3OKlX9w/o5X392nZgUAOxlFYvbxnV2gkgmMwo4QKQLwRwlLXmuohiqYyMMfJ6jAI+j9IZq5kTNCjnZEYGAXUPJ1Qd8ql7OKEfbNytDy6epX/8/beouS4sx0rrtuzVx+/aoB8/26l05o368Iloo2glWZP7jZFOpWkhAQSTGSVcAPKFAI6ytnp5i1IZq2gyLWuzjxkr/fG7Fmh6TUjhwMl7iY/HiXaw3zZ3iu68dok+tWKeKoJeDSXS+vbjO3TjfZu1cVe2xGRGdVjx1JEHNk+ljeLajR2qDPo0p75CLVMrdVp9hapDvlEHaAIIJrORD/CHO9USLgA4FgI4ytqKhY26deUiNVaF1B9LqbEqpFtXLtKKhY2KBHyaURPWzNqwKo7RwnAinGwH2+f16Mrzm3T/9ct0+dkz5DHSaz1RfeFHL+qvf/I7vfvMxnG1UTz69a218nqMdncPj+p+AkjhUYNfOMf6AJ/K2FGXcAHA8TCIB2VvxcLGEw6eCfm9Cvm9SqYd9cWSGk5kTtqdZLRGOwioNhLQn77ndK1cPFPffny7tnT266n2bm3c1aO3z5ui3uGUDg7FNb06rFVLm0fdRvF4r99QFdLevpimVgYV8B3/c/jq5S26Zd1WRZNphf1exVIZAoiLRmrw/bn+7yM1+LdKDFNywYqFjbpV2VKszt6omhhkBWCCEMCBnIDPo8aqkNIRR/2xlAbj6XGNkZeyfby/+dg2xVIZhfwexVPOCXew5zVW6msfXqxfbzuk7zyxQwcGElq/7ZB8HqNIwHvKHwxO9PrxVEZ7+mKqjwRUE/Ef834CSGEdXoMvSZGAT9FkWmvWt/PvwCUn+wAPAGNhJmqnr1QsWbLEbtq0qdDLQAnIOFYDsZQG4qk3TZg8FRvae7R2Y4f2D8ROaQc7kcroa49s06MvH3j94KTfa1Qd8uvP33vGqHfBR/P6Qb9XDSfZDS9VrW1dWrO+XR29UTWX2AeIi7/6mGrDbwyWkrJlRP2xlH79hUsLuDIAwGgYYzZba5ccfZ0dcOA4vB6juoqAaiN+DcTTGoillMqMboLl4Za11I9p8mbQ79XBwYSm14Q0FE9rMJGtP+0eTuorv2zTdz92nhqrQxPy+oncbnhdxK/aSOCU11qsSr2Eo7kuoq7B+Os74BI1+ABQDspvuws4yngPsRljVBP2q7k+osbqkKu7xPsGYqoMejWjJqTmurCCudfui6V07d0bdd9TuxQ/6pDkWFlr1TOc1J6+mJLpU/+gUYxKvY0ihwABoDwRwFHWJnqQTGXQp6a6iGbUhPPewlA6sg1h2O/V7Lqw6iN++TxGibSje558TdfdvVGtr3RN2MHRkd3wvmhyQp6vkEq9jeKJuvgAAEoXJSgoa/k6xBYOeBUOhBVPZTQQS2kokZ6oJR/hTYco046Cfq++dOkCtXUN6qHNneoaTOjWX7yst87aq09fMk8LplWN+3VHdsOjyYwaqoLye0vzs3o5lHBwCBAAyk9p/l8VGKV874CG/F41VofUVBdRZch3xGG5ibCspV6XnTVNPcNJ7Tg4rJ7hpC47a5recUaDbnxHi+66bqkumj9FkvTinn790fee1b/+76vqnaDd63gqoz29MQ3EUxPyfG6jhAMAUIwI4Chrbg2SGWlh2FwXVs1RXSvGY0N7j3750gHVVwQ0r6FC9RUB/fKlA9rQnp2UOas2rC9f8Rb985Vna86UiKyk/3pxn665c4P+c1PHmA6NHs2xVocGE9rfH1d6Ap7PTZRwAACKEW0IUdYO74Jx+CCZfIewiWph+LkHtqizd1jDyYxSGUd+r0cVAa+a6ir0tasWv+k1f75lr+5+cpcG49mSmKa6sD61Yp4uaJkyrvczwusxmlIZVGWeJocCAFBOaEOISalQg2RGWhjWhP0ajKfVH0sp7Zz67vGu7iENJdIyMvIYo3TGqi+WUsYZOuZrfvDcWbpkYaPufXKX1m3Zq87emP7qJ7/Tsjl1+tSK+Zo9ZXw7/xnHqmsgrmjQpymVQXk9E1tycyyl3McbAIBjYQcccIG1VoOJtPqjp9ZL/PJv/UaJdEZezxvVYhnHUdDn1c8/c/EJ7915aFi3P75dm3f3ScoF9HNm6toL56gyNP7P3j6PR1OrAkcccDyW8QToQv0Eo5jwAQQAStfxdsCpAQdcYEx2guWp9hIP+DySzdZhW1k51kpWo7p/7tQK/dOVZ+vLVyzSzNqQMo7Vj57do4/ftUE/37J3XKUxkpR2HO3vj+vQUOK4LRDH2way1Pt4j9dEt9EEABQHAjiQZ0cPAtq0s2fUvcRPq69QXUW277fjWPk8RnUVfp1WXzGq1zbG6KL5U3XXtUt14zvmKuz3qj+W0tcf3abV39us5zv6xv3+BmIpdfbGjjkQaLwButT7eI/XZP8AAgDligAO5FFrW5c+88Nn9czObnX2xvTMzm595ofPqrWtS+GAVzNqwppZGz7uocZVS5vl83o1tTKouVMrNLUyKJ/Xq1VLm09pHQGfR1cvm637rl+qyxZNlyS1HxzW5x7cor9bt1X7+mPjep+pjKO9fTH1DCeP2A0fb4B2q4tNsZrsH0AAoFxxCBPIo7/5yQsaTLwRIB0rDSYy+pufvKDffPHdkrK9xEN+r2rTjvpzQ31GQuyylnp9Vgu0dmOH9g/ENL06rFVLm7WspX7Ua9jQ3qO1Gzu0byCmGbn7V54zQ99+bIde2jeg9dsO6an2bn14SbM+8rbZbwp8x7r/eK/fF00qmkyroSqooM+r5rqIdnUPaSCWVjLjKOD1qDrs05wplaNa++rlLbpl3VZFk+kjasAnSx/vchgkBAB4M3bAgTza058Y9fWAz6OGqqCa68KqjQTkyfUSX9ZSr69dtVg/uPECfe2qxaccvr/52DZ1DydUHfKpezihbz62TQPRtL519Tn66/cv1NTKgFIZq+8/s1vX3rVBj7584PUPAMe7f6QP+bEk04729sXVH03pwpZ6dQ0mlcw48hgpmXHUNZjUhaN8DysWNurK82bp4GBCL+8f1MHBhK48b9akOYTIICEAKE8EcCCPjnfM8UTHH31ej+orAppdH1F9RWBcrf7WbuyQz5PtIGKUffR5jNZu7JAxRu86c5ruvX6ZPn7BbAV8Hh0aSur/++82feaHz6tt/8AJ7z/h+7ZW3cMJtb56UFMr/Ap4PXKsFPB61FAZ0FMnCPCHa23r0kPP7lFDVVBnTq9SQ1VQDz27Z9IcQmSQEACUJ0pQgDwyOnbYHk2k9niMaiPZXuID8bQGYqfWwlCS9g3EVH1Uy8GQ36P9A2/UfIf9Xn3iorn6P2+doTueaFfrqwf10r4Bfer7zynk92hGdfCE95/Inr6YqsMBTan0vP5Bwlo76hrmww8hSlIk4FM0mdaa9e2TJoSuWNg4ad4rAEwW7IADeTSrJnhK14/FGKOacLaFYUNVUH7v6P+znVEdVjx1ZGiPpxxNrw6/6XunV4d0y+Vn6etXLdb8hsrXv3dXd/ZwpZMrSzne/cd//YzSGUepjCNr7SnVMHMIEQBQjgjgQB79w++draqgVyNVJB4jVQW9+offO3tMz1d1ir3EVy1tVtrJhl6r7GPasSfsorK4qVbf+dh5+tx7Fqgi4JWVdGg4qde6o+oeTiqVcUbdheXw1884jgbiKSXSzqhrmCd7FxQAQHkigAN5tGJho258R4sqgz55PUaVQZ9ufMf4JxlWBn1qqoto2kmC+LKWen320gWaUhHUYDytKRVBffbSBSc9yOn1GH3g7Jn64Y0X6OJ5UyRJKceqezipiqBPU6sCo1rnspZ6XXbWNPUMJ7Xj4LC6h5J6z8JGnTWrWs4oBgFxCBEAUI4YRQ/kkVuj1KPJtHqjKSWOMQxnIuzujur2J3Zow87s4UmPkS5fPFPXvX2OasL+49430kXF5zEK+T2KpxylHavPXrpAb58/VQ1VwZMOIxoZxd7ZG1UTo9gBACXkeKPoCeBAHl19x9PaeWhIg/E3+mBXhXyaO7VSP7zpggl/vXwH8afbu3V76w519mYPYVaFfLru7XO0cvHMY3Zr+dwDW9Q9nDiijjuWymhKRVBfu2qxJKk67NeUioCMGXu3FwAAitHxAjhdUIA8evXAgPpiKTlOthtKOpNRPJ09lJgPkYBPkYBPsWRGvdHkMcfDj8cFLVN0/ml1+unze3Xfk7s0GE/rW49t18+37NXNl8zX+afVHfH9o+nCMhD7/9m78/i46uvg/5/vvXNnk2a02bJsSV5kG2z2xTZLHGPISpKSNKEJTsJOIQk0ebVNHtL2Ce3D0/YXuj2lhRAcAhiSQBKStmQjCbGNMdh4AQwYDLZlG8m2rG2k2Ze7/P6YkZBsSxppJM1IPu/XS6+Rr32Xsa2Zc8+c7zkZEmmLmQEPXmP4bLgQQggxHUgALsQI+kogWkJxGkdZApFI2wyMtR3AsiGenpgAvI/PreNzZzuQhOJpEunxC8QNXeNPLmzgg0treeSFg/zqtaMc7Irzjade430La/jSZQupr8p2SZkd9J2QAT9ZF5W+UfZBn0G1341WQO9zIYQQotTJIkwhhtFXw90eSVLpM2iPJLnr6d15D4JJDZHpHmr7ePMaOrMrfMyp9FHmGd/77Sq/m7/40Gl894sXcHZ9BQAv7O/ipnXbWbupmXja5JrljURTJge7YuzviHKwK0Y0ZQ7ZRSWcyHC4JzGuNwxCCCFEqZEAXIhhDBwEo1T20dAVD25qzmt/e4g1FkNtnyheQ2dW0EtDlZ9y7/gG4otnBfj3z53LXZ9YSm3AQ8ZyeHJ7C9c9vJ0dh0LZsfYKlCKvCUQZy+Zob4L2SDKvTilCCCHEVCMBuBDDKHQQjD5EwDnU9onmdmnUBrw0VvsJeI1xW/iolGL16bWsu3E5N146H49LozuW5qmXW4mlLWYFvDTNKGd+dRnlHteIo+wBokmT1lCCWMocl2sUQgghSoXUgAsxjMYqP+2RZP8odBjdIJhFM8t551gUh2z9d18SuG/SZD4KqUEfiqFrzAx4qPIb9CYyRJLmuGTlPYbOtZfM4yNnzuJ7zx/gD3vayVgOLaEEAY+LGeXuUY2yN22bY+Ekn6+VQwAAIABJREFU5R4XNeWek3ZaEUIIIaYayYALMYxCB8F888qlVJe78Rgahq7wGBrV5W6+eeXSvPYvtAZ9JC5do6bcQ2O1nyq/e9wC3Nqgl7/5+FIWzSzHyKX7IymTg11xjoVT1Aa8ozpeNGXSGooTSWbG5fqEEEKIYpIAXIhhrF5Sy91XnUltwEtvIkNtwDuqITqrl9TyL1efy/mNVdQFvZzfWMW/XH1u3vsXWoOeL11TVJW5aazyU102foH4LSsXUObW+0tuHCCcNHk3FGfj2x2MZg6BZTt0RFK09SYnrI2jEEIIMRmkBEWIEaxeUltQyUch+7eE4lQeN2lyNDXoo6Vpikq/mwqfQThpEk5kyBQY7Cql0HUFloMD2A70xDPc/cs3OaehgjsuX8Si2vxLcuJpk9aQRXW5m6B36CmcQgghRKmSAFyICVZIDXehNehjpZSiwmcQ9LqIpkx64mMLxJ/c3kK5x8XMck//tnAyQzxtEU6avNbay22P7+RjZ8/m5pXzqfS78zqu7Th0RlJEkiYzyt14XDLARwghxNQhJShCTKBCa7gLrUEvlFKKgNegsdpPbdCL2zW6l4yj4QReY/A+Aa8Lv1vnnz5zNvNq/DjAr14/yrUPb+OnO1tHFeinMhaHQwk6oylpWSiEEGLKkABciAlUaA13oTXo46nc46Khyk9dhTfvkfGzgz6SmcEBdd8kzGXzq3noumXccfkiAl4XsZTFAxv3c8u6Hbx0oGtU1xZOZGiRRZpCCCGmCDWaRVDTwbJly5wdO3YU+zLEKWLlPeup9A3ut+04Dr2JDM/feUURr6xwyYxFTzxDPD10n+5tzd3cu34vLk3hNTSSGRvTdvjaFYtZ0VTd/+d6ExkeffEgv9h1hL5E9kULqvny6oXMrR5duY3X0KmRshQhhBAlQCm103GcZcdvlwy4EBOoscpPIjN4rPpk1HBPBq+hU1fhHXbM/Yqmar52xWJqyjxEkiY1ZZ4Tgm+ACp/B1z6wmLXXXsj5cysBeOlANzev28EDG/cTTeY/jCeZsTjSkyQUS4+qy4oQQggxWSQDLsQE2rinna8/tYtoysSyHXRNUe5xjaoV4VSRNm16EmliKaugwNdxHF7Y18UDz+3naG8SgEqfwU0rF3DlWXWjapHodmUHDkk2XAghRDEMlQGXLihi2puISZKjoQCcbGCJo5iusxz7xtxn/Hb/dM2xBOJKKVYunsGKBdU8tbOVH7x0iJ5Ehn/7/Ts8/eoRbr9iIec2VOZ1rLRpc6QnSYXPoMo/uBRICCGEKBbJgItpra8LiaErfIZOImORsZxJW8i4Zu3WE9oIxtMmtQEvT9x68YSfv5hMyx6XMfed0RTf33yA3+4+1r9t9WkzufWyJuqC+U/UNPRsNjzfBaRCCCFEoaQGXJySJmuS5FBaQnF8xwV8EzlIp5SM15j7GeUe7vzoEu7//PmcMTsAwMZ3Orjhke088sKBE2rsh5KxbI70JOiSloVCCCGKTAJwMa0VOwCezosw8zVeY+6Xzg7yH2vO568/toSacjdp0+bxre9yw8Pb+cNbx/Iud+lNZGgNJYil8l/YKYQQQownCcDFtFbsALjYg3RKSd+Y+8YqPzVlnjEF4ppSfHDpLB67cQVfuGguhq7oiKb4h1/v4atPvsrbbZG8jmPaNsfCSY6Fk5hjmPAphBBCFEJqwMW0Vuwa8L5reHBTM62hOA1FWARaqhzHIZww6U1kMO2xBcFHexM8uKmZTe90AtkFrx85s45b3r+A6rLsWPttzd08ub2Fo+EEs4M+rlneOKgNoqYUVX43FX6j4OckhBBCDDRUDbgE4GLam+oBcLG7uEw0x3EIJ01642MPxF9t6eG+Dfto7ogB4HfrfPGiucyt8nP/c/tHHAQE2S4uM8plkeZ0M91/foQQpU0C8BwJwMVUUgoZ/MnSlxHvSaSxxrBI0rIdfvX6UR7efIBwbnCPW9cIel2DWhAmMhY1ZR7+7XPnnvQ42ZaFbrQx1qqL0nEq/fwIIUqTdEERYow27mlnzdqtrLxnPWvWbmXjnvZJO3exu7hMJqUUFX6DudVjW6ypa4qrzp3D4zev4DMX1KNrirRl0xlLc7gnScrMrgXwGhpt4cSQx+lbpBlPyyLNqe5U+vkRQkwtEoALMYy+DFp7JEmlz6A9kuSup3dPWhBe7C4uxaDUe4s1xxKIB7wGt1++iIeuu5CAJ9t/PZ6xONSdoD2SIpayqAv6hj2Gadu09coizanuVPz5EUJMDTIJU0x7hdSADsygAfjdLuJpkwc3NU/KR9iNVX4OdkUJJ0zSlp0tqfC5mF9TPuHn7lOsGtq+rilBr0E4maE3kRlVacq8mjL++sol/NPv3iaSNDFth55Eht5khuXzq7FsZ8TgPpYySaQtqsrcVPhkkeZU01jlP2EQ1qnWBlQIUZokAy6mtUIz2MXOoF3SVE17JE3astEUpC2b9kiaS45bQDhRxuMTgEJLeAa2LxxtRvyihTXc+ZElnDE7SMCjoylwHPifXUe49fGdvHwoNOIxbMehK5qiNRQnkc5v6I8oDdIGVAhRqiQDLqa1QjPY45FBKySDvKW5m5nlbiLJ9zLgAa+LLc3dfDXvKxi7Qv/+Bi6CGxjA3w2jzqKPNSO+oqm6v+NJdyzNwy8c4Devt3GgM8bXn3qNlYtm8KXLmphTOXxZStq0OdqboMzjorrMjaFL/qLUrV5Sy90wpbsgCSGmJwnAxbTWEopTeVzpwGgy2LetauKup3cTT5uDuijkm0ErNABtCcWZUe5hZsDbv81xnEnLwBf69zcRJTwDA/HeRDYQt/Ps5lRd5ubrHz6dq86dw/0b9vH64TCb93Xy0oEu/uTCBj5/0dxBN1snE0uZxNMWFT6DSp8x4d1SpI1eYVYvqZW/LyFEyZEUjpjWCp2EuXpJLXdfdSa1AS+9iQy1Ae+oWpgV2oWh2JM8Cz3/RJbwaH0j7qv9VPjeazOYj9NmBfj3z53Htz6+lNqAh4zl8KNtLVz/8HZ+t7ttxIDecRx64mlaQwkiyUyhT2VIxV4ELIQQYmJIAC6mtfGoAV29pJYnbr2Y5++8giduvXhU2bRCA9Bi17AWev7JuIHQNUVNuYfGKh/BUQTiSikuX1LLozcu5/pL5uFxaXTF0nz7mbe540ev8OaR8IjHMG2bjki2PjyZGf/6cGmjJ4QQ05ME4GJaKzSDXajGKj9dsRTNHVH2tIVp7ojSFUtNWga+UIWe/7ZVTXRGU7xxuJfXD/fyxuFeOqOpCbmBcOnZSZYNVT7KvflX13kNnesvnc+jNy7n8tNnArCnLcIdT7zCP/76LToiqRGPkTZtjvQkOBZOkhnHtoXFXgQshBBiYkgNuJj2ilkDeklTNdsOdqMpBnUxWbM8/y4mxa5hLeT8r7X2EE4MHmgTTpi81tozYc/J0DVqA14qfBahWCbvgTqzgl6+9Ykz+NR5vdy3YR9726M8+1Y7m/d2suaiuXz2wgY8I4yp76sPz07fLHyaprTRE0KI6Uky4EJMoC3N3QQ8OpbtkDIdLNsh4NHZ0txd7EubFA9tPoBLV3gNHZ+h4zV0XLrioc0HJvzcHpdOXYWXOZU+vCMEzgOd3VDBd75wAd/48GlU+Q2Sps0jLxzkxkd3sOmdDpw86sN7ExlaQnHCBdaHF7sESQghxMSQAFyICfTOsTCxtIWhaXhdGoamEUtb7D02cn3xdBBLWxyfBNZUdvtk8Ro6cyp91FV4cbvye8nTNcWVZ8/msZtW8LllDbg0RVs4yd/94k3+8qe72N8eHfEYlu3QGUlxpCdByhzb8y12CZIQQoiJISUoQkygjOVg2w4WDo4DSoEC0lb+Ex2nsjJ3tnXjwCDcdrLbJ5vf7cLvdhFJZgjFMpj2yLXaZR4Xt122kI+fM5sHNjazpbmLV1t6ue0HO/n4ObO58dL5VPrdwx4jmbE40pMcc1lKsUuQhBBCjD/JgAsxwSwnO30Rso+nSOwNwC0rF2A72W4htmPnHrPbiyXgNWis9lFd5kbLs2NKQ5Wff/jjs7jnM2czr9qP7cAvdh3luoe387OXWzFHWHjZV5bSGkoQS+VXky6EEGL6kgBciAmmKXB472uC57aUlK9+8DS+dsUifIaOaWc7eHztikV89YOnFfW6lMqNtx9lD/Hl86v53nUXcsflCyn3uIimTO7fsJ9bHtvJ9oMj1/Wbts2xcHLcu6UIIYSYWtRIC4qmm2XLljk7duwo9mWIU8RZf/sboqkTA62AR+P1/3NlEa5InEzGsgnF0kRPkp3e1tzNk9tbOBpOMDvo45rljaxoqqY3nuHhFw/wq9eOYudeRi9uqubLly2ksXrkLiVKKar8xqiHCAkhhJg6lFI7HcdZdvx2yYALMYE0pfW3IFTw3vdKfvRKiaFr1AazHVMGthrc1tzNvev30hVLEfS66IqluHf9XrY1d1PhN/jzD57Gg9deyHmNFQBsbe7m5nU7+O5z+08azA/kOA7dsew0zcQkLkoVQghRfBIFCDGB3C4NXSkMXcNjaBh69tf5duOYDjbuaWfN2q2svGc9a9ZuLekx6l5Dp77Sx8yAB5em8eT2FlyawmfoKLKPLk3x5PaW/n0WziznX//kXP7uqjOoC3oxbYef7Gjl+oe38avXjmLZw3/KmLFsjvZmh/iMVEsuhBBiejh1ogAhimBxbYAZATcuTWHZDi5NMSPgZnFtoNiXNik27mnnrqd30x5JUukzaI8kuevp3SUdhEN2oWZDlY9jkSReY/DLpNfQaAsnBm1TSrFq8UwevXE5t6xcgNfQCMUz/Ovv3+ErP3yZ11t7RzxnLGXSGkrQE0+P2GtcCCHE1CYBuBAT6LZVTRh6diDM6bMC1FV4MXT9lBmk8uCmZgxd4Xe7UCr7aOiKBzc1F/vSRqRpivk1ZVi2M6h1YDJjUxf0nXQft0vj8xfN5bGbVvChM2YBsLc9ytd+/Cr/95dvciycHPac9oCylHwneAohhJh6JAAXYgSFlFCsXlLL1RfU0xFJ8VZbhI5IiqsvqD9l+jq3hOKYlk1zR5Q9bWGaO6KYlk1rKF7sS8vLbauaMO1smYhLV6RMC9N2uGZ547D7zSj38FdXLuH+z5/Pkrrspx0b3u7ghke28+iLB0lmhq/5zlg2bb1J2nqTpE0pSxFCiOlGAnAhhlFoCcXGPe089fJhZgY8LK0LMDPg4amXD5d8CcZ4CXhcHO5JYtoOuqYwbYfDPUnKPVNjBtjASZSRpMmcSj9/94kzWHnajLz2Xzo7yH2fP59vXrmEmjI3KdPmsS2HuP7h7azf0z5iqUk8bXK4J0FXNIU9Qi25EEKIqWNqvAsKUSQPbmombVp0RU3Slo1b1wh4XTy4qTmvLPbAEgzITmOMp82895/q+gPMvtjROW77FDDUJMp8J2pqSvHhM2bx/kUz+NG2d/nJjhY6oin+/ldv8d+vHOaOKxZx2qyh1wT0DfGJpkyqytwEvUbBz0kIIURxSQAuxDDeORYmnDTRUOhKYVoOXbE0phXOa/+WUJxK3+CAyWfoU6YEo1DRtEV9pZfOaLr/Bqau3ENsFG33Nu5p58FNzbSE4jRW+bltVVNJ3LwEvAblHhfhhEkonsYe4abC59a5eeUCrjyrju8+18zmfZ28cSTMl3/wMh89q46bVy6gumzosfaW7dAZSRFOZKguc/ff1AkhhJh65BVciGFkcnPj+xbhKQW27ZDOc558Y5Wf9khyULCUyFg0VI08qGU66Hv+TTPL+7fF0ya1AW9e+/eVABm6GlQCdDfkHYRPZACvlKLCb1Dm0emOp4kmR144OafSx92fPJOX3w1x/4b9HOiM8Zs32njunQ6+ePE8Pn1+/bBtKtNmtj7c59ap8rvxDuhbLoQQYmqQGnAhhuF2aeBku1M4ONksp0PefbxvW9VExnKIp00cJ/uYsZxTpgtKoc+/0C4qk9UG0aVr1AZOHOQznAvmVrH22gv52gcWE/S6iKct1m5q5uZ1O3hxf+eIZTqJtMWRngTtMtZeCCGmHAnAhRhGoX28By7i601kqA14ufuqM0uihGIyFPr8W0JxfMcFtKMp4ZnsNoh9g3xmBDzo2sjj5XVN8cnz5vDYTSv49Pn1aAoO9yT43/+9m2/+/HUOdcVGPEY01z+8K5oaceiPEEKI0iAlKEIM47ZVTdz19G7qKlz4DJ1Exhp1BnuoRXynikKef2OVn4NdUcKJ9xbBBn0u5teUj7wzxavBD3oNyt0uQvE0963fy092tJLIWPgMnc9e2MC1l84f/Od9BndcsYhPnDub+zfsZ+ehENsPhrh53Q4+dX49118yj8Awiy/7FmpGkiZVfjdBX/aGQwghRGmSDLgQwzjVM9jFdklTNe2R7AJOTUHasmmPpLmkqTqv/Rur/HTFUoP6kHfFUpNSg69pih9uPcS6LYdImRa6BinTYt3WQzz+4sGT7jO/pox/+szZ/P2nzqS+0oftwM9fPsy139/G07uOjJjhth2HrliK1lCCSDIzAc9KCCHEeJAMuBAjONUz2MW0pbmboFenN2GScUBTUOFzsaW5m6/msf8lTdVsO9iNphgUwK9Znl8AX6iHNh9A1xQuTcNxHBwF2DY/2dl6Qha8j1KKSxfOYNm8an7+ymF+sPUQ4aTJvz+7l6d3HeH21Qs5f27VsOfNWDYdkRThpEm1343PLQs1hRCilEgGXAhRsva2R4gmLQxdw2toGLpGNGmxtz2S1/5bmruZWe7GrWvYDrh1jZnlbrY0d0/wlWfF0hZ9peBKKRTZG4HECJMwIbvQ95rljTx20wquPKsOBTR3xPjLn77G3z69m6O9iRGPkcpYHO1NcEwWagohREmRDLgQIyjVPtSngrRpg8oOs4FcG0jl5D2evSUUZ0a5h5kD2h46jjNpfdjL3DqxlImDheNkr1/ltgd9BuHEyGUi1WVuvvGR0/nkeXO4b/0+3jgS5vm9nWxt7uKzyxr5/Iq5I2a4YymTeNqiwmdQ6TP622oKIYQoDsmACzGMyWpjJ07O0LOBom07OI7TP47drecXQDZW+U/INk9mH/YPLJmJ5YCd7V6J7YDlwAeX1jKj3DOqtoWnzQpw7zXn8b8/vpSZ5R4ylsMPX3qX6x7exu92t404CMhxHHriaVpDCaKpkfuVi+lh45521qzdysp71rNm7VZ57RKiREgALsQwJruNnRjstFlBasrcuHSF5Ti4dEVNmZvFs4J57V/sPuxt4TRVfld/GYqmoMrvoi2cBvJrW7ituZu/+PEu1nxvK3/5k9cod7t49KblXHfJPNwuja5Ymm8/8zZ3/OgV3jo68oRW07ZpDyc50pMgZeY/kVRMPZJAEKJ0SQAuxDAK7UMtCnPbqibcLp26Ci+nzwpQV+HF7dLzDqCL3cWmJRSnvtLPmXMqOLu+gjPnVFBf6T/h/0/Qa9BQ5T+h1eC25m7uXb+XrliKoNdFVyzFvev38npLLzdcOp9Hb1zO5afPBGBPW4Tbf/QK/99v9tAZTY14bcmMxeFQgvZIElPqw6clSSAIUbqkBlyIYZzqo+SLbfWSWu4mG0i0huI0jKEGv5hdbEbTx1zXFDMDHgJeF53RFGnT5sntLbg01X8T2NeL/sntLaxoqqYu6OVbnziDT57Xw30b9rOvPcrv3zzG83s7+OJF87j6woYRp7ZGkyaxlNSHT0fF6oMvhBiZBOBCDKNvEE88bY55EI8ozFRuAzmWNoh9ZSm9iQxHwwmCXtdxv6/RFh7cAeWchkoe+MIFPPNGG9/ffICeRIaHNh/gV68f5UuXLWTlopphB/P01YdHkhkq/W4qfEMP/RFThyQQhChdUoIixDCKXcIgiq+QRWxjbYOolKLS72Z+TdkJHV+SGZu6oO+EfXRN8fFzZvPYzSv4kwsb0DXF0d4kf/v0bv7yp6+xvyM64vVatkNXNEVLd5x4WhZqTnXFXgMhhBiackZYOT/dLFu2zNmxY0exL0MIMQX0LWIzdDXoE5B8b8JW3rMeXUFnNN1fgjKj3I3twPN3XpHX+b/x1C7CiQym7aBrijKPizs/soQVI0wDfbc7znef28/WXLCvKfjEOXO48dL5VPjzy3B7DZ3qMjfePDu1iNLT10Z1rCVcQojCKKV2Oo6z7PjtUoIihBBDeHBTM2nToiv6Xg13wOviwU3NeQUx5W6dfR0xdKXQlcK0HA73JFk0syzva3AApSmU4zBMFckJ5lb7+cc/PpuXDnTxnQ37aQkleHrXEdbvaeeGS+dx1blzcOnDfwiazFgc6UlQ7nFR6XePWE8uSs9ULuESYjqbsFdTpdTDSql2pdQbA7ZVK6V+r5Tam3usGvB7f6WU2qeUelsp9ZEB2y9USr2e+73/ULlCRqWURyn149z2l5RS8yfquQghTk3vHAvTFUtjWk5/AN0VS7P32Mjt/oD36q7VgK+B20fw4KZmKnwGi2sDLJ1dwWmzglT6DX68oyXv53DRghq+f/0yvrJ6IWUenWjK5L4N+/nTx3ey42B+E0GjKZPDPQk6oyks+9T61FQIISbCRKYzHgU+ety2bwJ/cBxnMfCH3K9RSp0BXAOcmdvnO0qpvs88HwBuBRbnvvqOeTMQchxnEfD/gHsm7JkIIYqm0EEiheyfsbLBpqYplFL9HULSVn5BaCRl4jcUKdMmmbFJmTZ+Q+U9COdkbTDL3C46Ikmq/O68A3mXrnH1hQ08ftMK/uic2SjgUFec//Wz1/mb/3ojr64YjuMQTmRo6Y4TiqX7hyIJIYQYvQkLwB3H2QQcn175JLAu9/064FMDtj/pOE7KcZwDwD5ghVJqNhB0HGeLky1Wf+y4ffqO9RTwAZXvu5EQYkoodJBIXw31K++GaOtN8Mq7Ib7x1K6893e7NGzbIWlaJDMWSdPCtp38SzFsm3Bq8CLKcMrGsfPruz3UJM/G6jKqytzUV/pGVZ9d6Xfz5x86jQevvZBzGyoA2NLcxU2P7uDB5/YTy+PGwHYcQvE0LaE4vfEMp9o6IiGEGA+TXdA3y3GcowC5x77CtHpg4Geqrblt9bnvj98+aB/HcUygF6iZsCsXQky6QgeJ3PPMHkLxDA7ZLLADhOIZ7nlmT177zyz3ZL/JjZLHOW77CDpimVFtP95IXSzcLo05uUma2ijyD4tqy/m3z57LXZ84g1lBD6bt8OMdrVz38DZ+8/rREcfaQ65jSixFS3eCcDK/5yOEECKrVFbUnOydwxlm+3D7nHhwpW5VSu1QSu3o6OgY4yUKISZboZNImztjuR7cCoVCUwpNZbfnw3EclFK4dQ2vS8Otayil8s76psyTZ7qH2n68fNtgZidp+gb1ex6JUorVp8/k0RuWc+P75uN1aYTiGf75d+/wlR++zBuHe/M6jmnbdEayrQvzyaALIYSY/C4ox5RSsx3HOZorL+n7HLgVaBzw5xqAI7ntDSfZPnCfVqWUC6jgxJIXABzHWQushWwbwnF6LkKICTYeg0Rsx8E0LRwHVG4gjp5ntjiatqiv9A5qI1hX7iGWtkbemez5+s7b5/hfjyTfLhYuXaOuwkskmaErms4riw3gMXSuvXgeHz2zju8938yzb7XzzrEoX33yVS4/fSa3rWqiNugd8TgZy+ZYOInH0Kn2u/G5pXWhEEIMZbIz4E8D1+e+vx74nwHbr8l1NllAdrHltlyZSkQpdXGuvvu64/bpO9bVwHpHihGFmFZuW9VEOJFh77EIbx3tZe+xCOFEJu9BIjPLDEwb7FwJie2AaWe356Oxyo9L12iaWc6SuiBNM8tx6VreNwD1wWypiuO89zVw+0QIHJcN39bczV/8eBdrvreVv/jxLrYNMQRoZsDDX39sKf9xzXmcPisAwIa3O7j+ke2se/EgyUx+Nx2pjMXR3gRHexN57yOEEKeaiWxD+ASwBThdKdWqlLoZ+DbwIaXUXuBDuV/jOM5u4CfAm8AzwO2O4/S9cn8ZeIjswsz9wG9y278P1Cil9gF/Qa6jihBienEAVK51nxqizmwIAZ8bjfcyzkplX/QCPnde+xc6SfDv//gcAh6dXPMUNAUBj87f//E5o3gWo9eXDX/7aIR71++lK5Yi6HXRFUtx7/q9QwbhAGfVV3D/F87nzo+eTnWZm5Rps27LIW54ZDsb9rTnXX6TSGd7iB8LJ0+Y5ikmT6FdhIQQE0MmYQohStaatVtPKEGJp01qA16euPXiEfcvdBIlFD5JsJiTCNes3cqxcAK3S+9vG5jIWNSUefi3z5074v7xtMkPX3qXp3a29rdkPLs+yO2XL+K0XJY8XwGvQZXfGHH4jxg/hU5yFUIUTiZhCiGmnJZQHF1Bc0d0UACd7yLMxio/b7eFSWQsbAcs2yKSNDm9LjjqaxlrqqKYkwhbQnEqfQZKKSzlYNo2XkOjLZzIa3+/28Wfvr+Jj509m+8+t58X9nXx+uEwX/7By1x5dh03r1xAlT+/TxMiyQzRlEnQm52qqWvSNXaiDewiBNl/z3jazHuSqxBi4kgALkSJ68ugtoTiNE5yBrXYAh4Xe9uj6JpC1xSmnR3lvri2PK/964JutjS/1yLPdqA7nqEumF/QODCDOLAP+d0wJf4NGqv8HOiMEkmapC0bQ1OUeVzUV+a/iBWgvtLH//3kWew8FOL+Dfs42BXn16+38dzbHVx3yTw+dX49Rh6Zbcdx6E1kiCRNKnwGFT6jf7iRGH99N2ADjaaLkBBi4shngUKUsEIH0Ux1/SVyzoCvgdtH8Ic9Hbk2hNm+pX3f/2FPfu1IC+1DPh4KqeG9pKmajlz5jaYgYzt0xzO8f3FNXgHz8S6cV8X3rlvGV69YRMDrIpa2eOC5Zm5et4OtzV15H0eG+UyOoQY5jaaLkBBiYkgALkQJK4UAsJj62gC6dIXlOLh0RX2lN+82gLG0haErPC4dr6HjcekYusp7/0L7kBeq0BuwLc3d1AbcuHUN2wG3rlEbcLNrTf4hAAAgAElEQVTjUA8NVT4qfPl1gxlI1xSfOr+ex25awafOm4OmoDWU4K//6w2++bPXeLcr/7+bgcN8ehMSiI+3QhcRCyEmjgTgQpSwYgeAxVZoG8Ayt07adEhkrP6vtOlQlmeP6mJnEAu9AWsJxTEtu3/xXSJjYVo2raE4Silqyj3MqfThdo3+raDCZ/DVDyzme9ct44K5lQBsOxji5sd2cP+GfUST+Q/lMW2bruh7UzUlEB8f+Q5yEkJMPqkBF6KEjccgmqnstlVN3PX0buJpc1AXh3wzeGfODrDlQGjQNie3fTLOD4XV8Be6CBXHoSM6uAa+I5qhofK9GxCvoVNf6aM3kSE0hnKQBTPK+Oerz+HF/V18Z+N+jvYm+dnLh3n2rXZuet98Pnb27LwXXPZN1eyNZ6j0GwS8o8/Qi8GKuQhYCDE0yYALUcJO9Y+QC83g7T4aOeFFTsttn4zzb9zTztef2sUrLSGOhZO80hLi60/tyruEpNytc7gniWk56EphWtlFqPlm8Ltj2eBbDfgauL2PUopKv5v6Sh9eY/QTLJVSvG/RDB65YTl/+v4F+Ayd3kSG//fsXr70g53saukZ1fEylk1Hbrx9VMbbCyGmIcmAC1HCVi+p5W4oWh/pUlBIBi+WtjBcCk29F4bbjp13DXih5//2b96iJ55BVwpdKRwbeuIZvv2bt/I6puqfIMR70bMzYPsIUpaNoYGVm8KpFLhUdvvJuF0ac/qy4bH8x9kP3H/Nirl8+IxZfH/zQZ7Z3cb+jhh//pNdrDptBl9atZC6ipHH2vfJWDbt4SQ9Lo0qv5syj7xlCSGmB3k1E6LEyUfIY1fm1omlTRzH6g9AlYIy9+S89B3oimc7r+RKMJQCx3Y4kOdCxUjKpL7SO2iQUF3Qk3dWuMydLZvxDOh4Yto2ZSNkuSt8Bn63Tmc0RWIUNyt9aso9/K+Pns5V583mvvX7efNomE3vdLJlfxefW97ImhVzT1jbMJy0aXMsnMRj6FT5jUElWUIIMRVJCYoQYtr6wJKZWHa29tmB3DCe7PbJYlqDF4GaVv5Z5UIXod6ycgGm5ZDMnTuZO/8tKxeMuK+ha8yu8FFT5sk74368JXVB/nPNefzNx5Ywo9xNxnL4wdZ3uf7hbTz71rFR15unMhZtvUkO9yTGdGMghBClQgJwIcS01RZO4zcGv8z5DY22cHpSzh/wuji+2MPObc9HoWsAzmmoJOgbfK6gz8U5DZV57Q9Q4Teor/ThGUNtOGTLZT6wdBbrblrBtRfPxe3S6Iym+cdf7+HPnniVPW3hUR8zlbE42pvgaG+CZEYCcSHE1CMBuBBi2nrnWJiM7eDRNbwuDY+ukbEd9h4bfdA3FrEhSkWG2n68QheBPripGb9bx+/Wc+0Ms9+Pto+826VRX+mjusw95my4z9C58X0LePSG5Vx2WvYTiDePhvnKD1/hnmf20BVNjfqYibTFkR4JxIUQU48U0gkhpq1MrtxjYA22bTukR1EGUoi05eDSciUwuRp0TTGq8xeyBmBveyS7mBLAAdPOlqFkxvj8K/1ufG6djkiKtHnyhZwjqavw8rd/dAa7Wnq4b8M+9nfE+O3uY2x6p5MvXDSXqy9sGNSXfFtzN09ub+FoOMHsoI9rljeyoql60DETaYtEOoHf7aKqzMDjGlu2XgghJotkwIUQ05bbpYGTHX3u4GS7ejiMafDMWJS5dezjYl3bIe82goWKp6z+DigO2UfLyW4fK48r2ze8yj/2bDjAuY2VfPeLF/LnH1xMhc8gkbF4aPMBbnx0O5v3duI4Dtuau7l3/V66YimCXhddsRT3rt/Ltubukx4znjY5HEpwLJwkZUpGXAhRuiQAF0JMW4trA8wIuHFpCst2cGmKGQE3i2vzG8RTqA8smYntDF4EajuTtwh0qLKMQss1lFJUlbmZU+kt6GZG1xR/dO4cHr9pBVdfWI+uKY72Jrnr6d1846nXeOTFg7g0hc/QUWQfXZriye0twx43lpJAXAhR2qQERQhR0gqZJHnbqia+9uNXiKctHMC0LFy6mrRBRm3hNNV+g55EBtvJlp9U+oxJWwQ6VKHJeBXg9GXDQ/EMPfGxP6dyr4uvrF7EJ86ew3c27mPbwRAvv5sd3uN3a9i2g2k7GLpGld+gLZzI67ixlEksZeJ3u6j0G2MaMiSmtkJeP4SYSBKACyFK1sY97dz19G4MXVHpM2iPZLOjd0Neb6KvtfYQTgxe8BhOmLzW2jMpb8ItoTgBr4uUaff38Q54XfmPkqewAGKiA3DIZsOry9z4c7XhmeOG/ORTw91nbo2fb3/mHLY2Z8fat4YSxNPZ4+ladjDPsXCKeTVlo7rGeNoknpZA/FRT6OuHEBNJSlCEECXrwU3Nue4dLpTKPhq6yruLx0ObD+DSFV5Dx2foeA0dl654aPOBCb7yrEJHyRc6yn6oCu2xV24PzWvoNFT5qPAZ/dtGW8Pd5+KmGr5//TKq/e8dy7LBzPV0Z5T9w/vE0yZHehIc6Unk3YlGTF0PbmomY2V7x799LEJbb5KMZY2qC9DGPe2sWbuVlfesZ83arXn/7AkxEgnAhRAlqyUUP2Fios/Q884gx9IWOA4pM9v9I2Vmfz2aUfSFOGGUvDpu+wj6Rtk7NieMss+HPsQr/FDbC6WUoqbcw5xKH4au8eT2ljHVcEN2ENDJwmwHaOlJcLgnvzKUk0lmLI6Fk7R0xwknM6MeCCSmhr3tETojaUzbQdcUpu3QGUmztz2S1/6F3gALMRwpQRFClKzGKj/tkeSg0eOJjJX3JEiPrhHPWP0ZX8eBjMMJw3mGU0gJSKGj5AsdZb+4NsDbbREc9V4bROUw4YtQvUa2NvxYJEm5Rz/u97S8a7jTpo1LA13TsB0H03JwyLaXvOnR7Xzmgga+ePHcYUfTP/7iQX6ys5VExsJn6Hz2wgauvXQ+kC1p6YykCMXSBL0GQZ+Brk3E5wOiGNKmDQo0NaANqXLybqHZdwOsK3XCDbCUsIhCSQZcCFGyCp0EWV2WLWFwBnwN3D6SvhrS9khyUA1pvhmwQkfJF+rOjy6hptyNR9dwadkbkppyN3d+dMmEn1vTFPNryjBtZ1DGP5mxqQv68jqGoStsB1KmTSYXfCuyi1kzlsOT21u47uHtPPNGW7bF5HEef/Eg67YeImVa6BqkTIt1Ww/x+IsHB/05y3YIxdO0dMezfdOP7x0ppiRDz/6/s20Hx3H6/13den43WQNvgJVSaJpCU+R9AyzEcCQAF0KUrEInQaIUM8sN+pKamoKZ5UbeJSCF1qDftqqJcCLD3mMR3jray95jEcKJTN43EE0zynKtC9/rY2472e35WL2kln+++lzOn1vF7Aof58+t4p+vPnfSsne3rWrCsiFjWSiV/fTCtB2uWd6Y1/7VfvdJy73nVvm44dJ5eFwa3bE0//Tbt7n9h6+w+0jvoD/3k52taCqbQdeUlnvMbj8Z28kF4qE4vXEpTZnqTpsVpKbMjUtXWI6DS1fUlLlZPCtY7EsTQkpQhBClrZBJkH0lLHUV72Wc42mT2oA3r/1bQnEqfYOz5aOpQYdc1l3l6r7V6DqQ3PnRJXzjqV1EkiamZePSsm34RpPBLuTvr1Crl9RyN9kbmdZQnNkVPq6+oJ5lC07eBeUESqEY/HemAE3TuO6S+Xz0zDq+9/wB/rCnnbePRfizJ17lg0tr+dP3NzEz4CGRsdDIliL0Zc/13I3AcCzboSuWojeRobLMIOBxFTR0SBTHbauauOvp3dRVuPAZOoncFNjR3ADvbY+iHCdb/pXr47945ui68AhxMhKACyGmrb434HjaHNMbcKE16A9uaqbCZzC74r2Si3ja5MFNzXkFxX0Z7L4AtmEMfYz/49l3eGjzAWJpizK3zi0rF/DVD56W9/6FOv4GwLRsOqIpEnkshA3F0xxfrWvntgPUBr38zceX8snz5nDfhn28cyzKs2+1s3lvJ2tWzMXQFCnrvfDdAUwHvHkODzLtbI14bzxDpd+gXALxKeX4G8DR/vyMxw2wEEORAFwIMW0V+gZcaAA/Hhn0QjLY//HsO9y7fh+aApeWvXm4d/0+gEkNwgdy6RqzK3z0xNOERijzGCpIP377WfUVfOcLF/Db3cd46PlmQvEMj7x4kKHWU1b4RvfWl7FsOiIpeuIZKvySEZ9KCvn5GY8bYCGGIgG4EGJaK/QN+OrWnhMyyPker9AMeqGy/c6dbA/tvi4oKru9WAF4n0q/G59bpz184vCePqkhulWcbLumFFeeVceqxTP44Uvv8tTOVszjFlMqoNI/9uC5r2tKTywbiAe9EohPd8Us4RoPMgm0dMkiTCGEGMLGPe089fJhZgY8LK0LMDPg4amXD+fdBaXQRZiFiqZMLDs3tyZXw2rZ5N0GcaJ5XNnhPQHvybvSjGWSZ5nHxa2rmnj4hmUEvYNzTEGvC5/hyrsLy1BM26YrmuLd7jg9cemaIkpToV2cxMSSAFwIIYZQaBcUKGwRZqEGDQIa8FhKWVulFDMDHmZXZIf3jJeGKj9/feVSqv0GrlwtSm/S5Ghvkvoq35BZ99GwbIfuWLZrSiiWxpJAXJSQ8Xj9EhNHSlCEECWtmB+hFlrDXegizEL5DEU05ZzQys9vlE4A3sfnzg7v6YqliSQzACd0QOmT79WvaKrmgrmV/GFPR/82B/jV60d5rbWHr1y+kIsW1BR66f19xHsTGQJeFxU+A9dEjRsVIk/jsQZFTBx5hRBClKxif4TaWOU/oWXdaGq4W0JxfMbgSZCT+QZ4dn0VlT7XoD7olT4XZ9VXTcr5R0vTBmfDx1KCMtDjLx7k2T0dJ/x5BbSEEvzVz9/gr37+Ou92j8+/h+049CYytIQSdERSeU9cFGIiFPr6JSaWBOBCiJJV7I9QC53EWew3wNtWNRH0uVkwo4yz5gRZMKOMoM89aTXoY9WXDS/Uui2Hhvy98+dWAvDSgW5uXreDBzbuJ5ocn9p4x3GIJDO0huK0R5ISiIuiKPT1S0wsCcCFECWr2BnkQidxFvsNcPWSWq6+oJ6OSIq32iJ0RFJcfUH9lOiCoGkq71KToQwV9jrAv1x9DndfdSazK7xYtsNPd7Zy3cPb+OVrR8e1ljuaNPsD8fGoO59sG/e0s2btVlbes541a7fKAr4ppOBJwmJCSQ24EKJkFbuNHxTexrCQPuSFGtjFZW6uj/lTLx/mnIbKKfEm7NIgc5KY1TUOJexKKVYunsGKBdU8tbOVH7x0iJ5Ehn/7/Ts8/eoRbr9iIec2VBZ+opxo0iSWsijz6FT53eO64HSi9JWAGboaVAJ2N0yJ/z9i6rdRLFQpt2Es/VcAIcQpq9gZ5PGwekktT9x6Mc/feQVP3HrxpL74F7uEp1BB38nbEwa845c7crs0Pn/RXB6/aQUfOXMWAPs6ovz5j3dx9y/epC2cHLdzOY6Ty4hna8RLPSM+1f//iFNbsdcQjUQCcCFEyZKPUAtT7BKeQp02K0hd0EOZW8fQFWVunVkBN00zA3ntP1Si/GTba8o93PnRJdz/+fNZOjt7/I3vdHDDI9t59IWDJ9TyF6KvRrylu7RrxFtCcUzLprkjyp62MM0dUUzLnjL/f8SprdRvIKUERQhR0k71j1ALUQolPIW4bVUTdz29m7oKF75cCU3GcvizKxYxM+ChK5rGHmaU/Vi6qCydHeQ/15zPH95qZ+3zzXRF0zy29RC/fuMot61q4ooltePaRz2aNIkmTco9Lir8Bh6XPvJOkyTgcbG3PYquKXRNYdoOh3uSLK4tL/alCTGiUm/DKBlwIYSYpqZ6Cc9wn4AEvAYNVb5BNxfjRVOKD50xi8duXMEXLpqLoSs6o2n+4dd7+OqTr/J2W2TczxlNmRwOJTgWTpIcx2x7IZy+mxtnwNfA7UKUsGJ3oRqJZMCFEGKaKvYi0PEw3CcgLl2jrsJLOJmhe4Rs+Fj43Do3r1zAx86u48Hnmtm0t5PdR8J85Ycv85Ez67jl/QuoLnOP6zljKZNYysTn1qn0ufG5i5cRj6Yt6iu9dEbTpC0bt65RV+4hli6NGwQhhtP3CVo8bQ76BK1UEhASgAshxDR2KpTwBL0GPkOnI5KakOzx7Aoff3fVmbzyboj7N+6nuSPGM7vb2LS3gy9eNJdPX9CA2zW+Hygn0haJdAKPoVPpMyjzTP7bdV8JU9PM90pO4mmT2oB30q9FiNEq9QSEBOBCCCGmPEPXmFPpozeeoTuenpAyifPnVvHgFy/kV68f5eHNBwgnTdY+f4Bfvn6UL1+2kEsX1oxrfThAKmNxLGNh6BqVfoNyj2vczzGUUs8gCjGSUk5ASA24EEKIaaPCbzCn0ovbpVE5RLvCobbnQ9cUV507h8dvXsGnL6hHU3CkJ8m3/mc3/+tnr3OwKzbmYw8nY9l0RFK0dCfojWewx3FY0FCkC5EQE0edaospli1b5uzYsaPYlyGEEGICOY7Dr3Yd5S9/+gqpAVUpHh3+z1Vns6KpelzOc6grxnc27mf7wRAAmoJPnlfP9ZfMG7KP+XjQNUXQaxD0Geja5GTEhRCjp5Ta6TjOshO2SwAuhBBiuvrdG2088Nx+jvYmqAv6uGZ547gF330cx+GlA918Z+N+WkMJAIJeFze+bz6fOGdOQQHy4y8e5Cc7W0lkLHyGzmcvbODaS+f3/75SioDXRaXPwDUFpmsKcaqRADxHAnAhhJg6xmOUtOM4dMfS9CYyE3SVWRnL5r9eOczjWw71dwpZMKOM2y9fyAVzq0Z9vMdfPMi6rYfQFCgFjgO2A9dfPG9QEA7ZQLzc46LSb0yJMfdCnCokAM+RAFwIIaaGvlHShq4GLQIcax1yIm3RGZ34EfDdsTQPv3CA37ze1j/0Z+WiGXzpsibmVPryPs4f/edmEmmrvwW3yn353Dq/+LOVJ91HKUWZR6fK78bQtXG5gRFCjN1QAbh0QRFCCFGSBo6SBvC7XcTTJg9uah5TEOlz69RX+uiMpoimzLz22dbczZPbWzgaTjA7zxKW6jI3X//w6Vx17hzu37CP1w+H2byvk5cOdHH1hQ184aK5eQ0QiueC7z59gXh8mD7cjuMQTZrEUha73u3hX3//dnZBqs+gPZLkrqd3czdIEC5EkcnnVEIIMYyNe9pZs3YrK+9Zz5q1W9m4p73Yl3TKaAnF8RmDB9EUOkpa0xS1QS8zAp4R2/lta+7m3vV76YqlCHpddMVS3Lt+L9uau/M612mzAvz7587jWx9fSm3AQ8ZyeGJbC9c9vJ3f7m4bcXDQUJeXTxdCx3F49MWDAP0lKX63C0NXPLipOa/rF0JMHMmACyHEEAaWQEgGcWwKKYHoGwQzMFs8XqOkg14Dr0unPZIkbZ68JOXJ7S24NNV/E9BXBvPk9pa8F3Iqpbh8SS2XLKzhx9tbeHJ7C92xNPc88zb//eoR/uzyRZwxJ3jSfX0ujVjmxGvz5Tn052g4QdDrwrYd0raDpim8Lq2gGxghJtN0LqGSDLgQQgxhYAmEUkoyiKPUdwPTHkkOuoHJ91OE21Y1kbEc4mkTx8k+jucgGLdLo77SN2S7wKPhBF5j8Nuk19BoCydGfS6voXP9pfNZd+NyLj99JgBvt0W444lX+Mdfv0VHJHXCPotnBQl6dfoS3goIenUWzzp5wH682UEfyQEBvG07hJPZSZZD3XQIUSoKff0odRKACyHEECaiBOJUUugNzGQMglFKMaPcw6yg94R2gccHsADJjE1dMP+FlMerDXr51ifO4N7Pncei2uyI92ffauf6h7fxg62HBgXG1yxvpMxj0FDlY3FtGQ1VPso8Btcsb8zrXNcsb8S0HRIZC4fso2k7/MmFDbSG4sNm/4UotumeAJESFCGEGMJElkCcClpCcSqPyy6P9gZmskZJl3lceFwandE08XR2geY1yxu5d/1eEhkLr6GRzNiYtpN3ADycsxsqeOALF/Db3W18f/MBQvEMD79wkF+/3saXLmvi/YtnsKKpmq+xmCe3t9AWHn0f85H2jyZNokkTv9tFhc/A59ZHOKIQk2c8Xj9KmQTgQggxhNtWNXHX07uJp81BbfDGqwRiuptqNzAuXaOuwks4maE7mi44AB6Jrik+dvZsVp02kx9sPcTPXz5MWzjJ3/3iTc5rrOD2yxexoqm6oPPls388bRJPm7hdGhU+g3KPa8QFqkJMtKn2+jFa0gdcCCGG0bcIqDUUp2GaLQKaaOPdx3syZSyb9kiKVGboln/jraU7zgPP7WdrrsuKpuDj58zmpksXUOGfuLH2x3NpGkGfi4BXxtyL4pnKrx8DySCeHAnAhRBi8kz1G5ieeJpQPMNkvlduy421f7c7+1F7ucfF9ZfO45PnzpnUcfOaUgR9BhU+CcRFcUz11w+QALyfBOBCCCFGI2VadERSk7pg0bRsnt51hEdfPNQ/NGhutZ/bL1/I8vnjUwKTL6UUAa+LSp8xqTcAQkwHEoDnSAAuhBBitBzHIRTP0BNPT+p5e+MZHnnxIL987Qh27u364qZqvnzZQhqrJ7cWVilFucdFpd/oH+4jhBieBOA5EoALIYQYq2Qmmw3PWJPbvm9/R5T7N+zn1ZYeAFya4tMX1PPFi+dR7pn8fgrlHhdBn4HXkM4pQgxHAvAcCcCFEEIUwnEcumJpwonMpJ/3+X2dfHdjM23hJABVfoObVy7gI2fWFaVO22voVPqNQZ0qhBDvkQA8RwJwIYQQ4yGRtuiMTn42PG3a/HRnCz986d3+QUGLasu54/KFnNNQOanX0sfQNSr8BgFpYSjEIBKA50gALoQQYrzYdjYbHklObjYcoCOS4qHNB/j9m8f6t11++kxuXdXErKB30q8Hsi0MK/wGQa8E4kKABOD9JAAXQggx3uJpk85IGtOe/NHubx4Jc9+GfexpiwDgcWl8bnkj1yxvLFqNtgTiQmRJAJ4jAbgQQoiJYNkOXdFUf9vAyWQ7Ds++eYy1zx+gO5bt1FIb8HDrqiYuP31m0YJgCcTFqU4C8BwJwIUQQkykaMqkK5rCsif//TWeNvnRS+/y052tZKzs+c+aE+SOKxZx2qzApF9PHwnExalKAvAcCcCFEEJMNMt26IymiBUhGw5wpCfBd59rZvO+TgAUcOVZddy0cgHVZe6iXBNIIC5OPRKA50gALoQQYrJEkhm6omnsIr3XvnwoxP0b93OgMwaA361z7cXz+PQF9UUdpuPSNCp8BkGfBOJiepMAPEcCcCGEEJPJtGw6oikSaaso57dsh1++doRHXjhIOJnNyDdU+fjyZQu5uKm6qAGwBOJiupMAPEcCcCGEEMXQm8gQihUvGx5OZFi35RD/8+rh/rH2y+dX8ZXVC5lXU1aUa+qja4qg1yDoM4oyUEiIiSIBeI4E4EIIIYolY9l0RFIkM8XJhgMc7Ipx/4b97DwUAkBT8Knz67n+knkEvEbRrgtAKUXA66LCZxS1REaI8SIBeI4E4EIIIYqtN56hO56mWO/BjuOwpbmLBzY2c7gnAUDQ6+LG9y3gE+fMLoksdLnHRdBnFK2XuRDjQQLwHAnAhRBClIK0ma0NTxUxG542bX7+ymF+sPUQ8VyNetOMMm6/fCHnz60q2nUN5HPrVPgM/G5XsS9FiFGTADxHAnAhhBClwnEceuIZehKZomXDAbpjab6/+QDPvNFG31W8f/EMvnRZE7MrfEW7roHcLo1Kv5tyjwTiYuqQADxHAnAhhBClJmVatIdTZKzJH2U/0NttEe7bsI/dR8IAGLris8sa+fyKufjcpVEKYugaQZ/0EhdTgwTgORKACyGEKEWO49AdS9ObyBT9OtbvaWftpgN0RFMA1JS5+dNVTXxwaS1aiQS90jlFTAUSgOdIAC6EEKKUJTPZbLhpFzcbnshY/HhbC0/uaCFtZq9l6ewAd1y+iKWzg0W9toGkc4ooZRKA50gALoQQotRZtkNHJEU8XZxR9gO1hZOsfa6Zje909G/78BmzuOX9C5hR7inilZ2o3OOiwm/gcZVGuYwQEoDnSAAuhBBiquhNZOiOFa9d4UC7Wnu4f/1+9nVEAfAaGl+8aB5XX9iA21VamWefW6fS5y6ZunVx6pIAPEcCcCGEEFNJqSzQhGxm/jdvtPHw5gP05GrVZ1d4+dJlC1m5qKbkFkVK5xRRbBKA50gALoQQYqqxbYfOWIposvglKQDRpMnjWw/x81cOY+Xm2p8/t5LbVy+kaWZ5ka/uRNI5RRSLBOA5EoALIYSYqiLJDF3RNHaJvHe/2x3nu8/tZ2tzN5Ada/9H58zhhvfNp8JX3LH2J6NrigqfQdBroEnnFDEJJADPkQBcCCHEVJY2bdojyf7OJKXgpQNdfGfDflpC2bH2Aa+L6y+Zz1XnzsZVgp1JJBAXk0UC8BwJwIUQQkx1juPQGU0TSRa3Z/hApmXz368eYd2Wg8RS2bH282r8fGX1QpbPry7uxQ1BAnEx0SQAz5EAXAghxHQRTZl0RlIlU5IC0BNP88gLB/nla0f7x9pf0lTDl1c30VDlL+q1DUXXFJU+N0Gf1IiL8SUBeI4E4EIIIaaTUixJAdjXHuX+DfvY1doLgEtTfOaCer548TzKSrQriWTExXiTADxHAnAhhBDTjeM4hOIZeuLpYl/KII7jsGlvJ999bj/Hwtmx9lV+g1tWLuAjZ9WVzFj742lKEfQZVMiYe1EgCcBzJAAXQggxXSUzFh2R0ugZPlAqY/GTna088dK7JHOZ+tNmlXPH5Ys4q76iyFc3NG3AmPtSXEwqSp8E4DkSgAshhJjOHMehO5amN1E6CzT7dERSfO/5Zp59q71/2xVLarn1/QuoDXqLeGXDU0pR5tEJeg28hkzXFPmTADxHAnAhhBCnglLNhgO8cbiX+zfs5+1jEQA8Lo01Kxr57LLGkg9wPYZOhc+gzK3Lgk0xIgnAcyQAF0IIcaqwbYfueJpwCWbDbcfhd7uP8SHGBRgAAA1YSURBVL3nmwnFs9dXG/DwpcuauOy0mSUf3Lo0jaDPRcArdeJiaBKA50gALoQQ4lSTSGez4aZdetnwWMrkhy+9y89ebiVjZWOSs+sruOPyhSyeFSjy1Y2srzylwmfgcZV29l5MPgnAcyQAF0IIcSqybYfOWIpo0iz2pZzU4VCC7z63nxf2dwGggI+dPZubVs6nyu8u7sXlyefOBuJ+d2m2WRSTTwLwHAnAhRBCnMpiKZPOaArLLs33/52HQty/YR8Hu+IAlLl1rrtkHp86vx5jinQiMXSNoM8g4HFJP/FTnATgORKACyGEONVZtkNXNEU0VZrZcMt2+MWuIzz64kHCuYx9Q5WPr6xeyMVNNUW+uvzpmiLoNQhKP/FTlgTgORKACyGEEFnRlElXCWfDexMZ1r14kKd3HaHvElfMr+LLqxcyr6asuBc3CtJP/NQlAXiOBOBCCCHEeyzboTOa+v/bu/cgK+v7juPvD8suu7DAqhCDikExHasmJYq0Bkpi7ppMLm2isU3VJtHayDSd1KZp01bsTGcymbZJG40xUaPmgrU15GKtiROkhGoSrlFREhEQEXQDLgvL3ne//eP8YLbrOcuznN1zzgOf18zOnud3znOe737nC3z57e88Pw7W6Gw4wLY9B7nlkS2s37EPKMwsv3/eKVx50WuY2lhf5eiyk0TzpIm0TK7PzXIaK48b8MQNuJmZ2Ssd6O7j5YO9NTsbHhE8+uxevrzyWXa3dwMwvamejy6cw6Wvm5W7JR7NkyYyfbLvnHKscwOeuAE3MzMrrn9gkD0dvXT21u5seG//IPev38k3f7qDrr4BAObOnML1F5/FvNktVY5u9CY3FGbEa30DIjs6bsATN+BmZmYjO9Ddx96OXgZruEfY29HD7au38cNNLx0eW/wbM7hu8VxePb12t7UvpbG+jpbJvoXhscYNeOIG3MzM7Mj6BwZpPdBDd5plrlWbX9zPzSu28NTuwrb29XXi8gtnc8WC02nK4axyw8QJtExuoHmSG/FjgRvwxA24mZlZdvs6e2nr7KOW+4WI4MebW7lt1Vb2dvQCMKO5gWsXn8lbz35VzW9rX0x93QSmTy7cSzyP8VuBG/DEDbiZmdno9PQP0Lq/h76B2tvKfqiu3gGWrdnBv695/vC29ufMmsaSt8zl7FdPq3J0R2fihAlMb6pnaqM39ckjN+CJG3AzM7PRiwj2Huxlf1dftUM5ohfbu/nKqmdZ9as9h8feee7JfHzRGZzUPKmKkR09b+qTT27AEzfgZmZmR6+zt589B3rpH6zt2XCAjc/v4+ZHtrD11wcBaKqv4w9/+3Q+eMFpNEzM5324valPvrgBT9yAm5mZlScPm/ccMjAYPPjEbu5Yve3wtvantDRy3eK5LDzrpNyur/amPvngBjxxA25mZjY29qfbFeahlzjQ3cfdjz3H9zbuOrzZ0Pmnt3D9xWdxxoz8bGtfjDf1qV2lGvDc/5dJ0rsk/VLSFkmfqXY8ZmZmx4tpjfWc2tLEpBzc7m9qYz1LLj6L26+8gAvnnADA+h37uOaetfzrj5+hPQdr20vp6OnnhbYuXtrfXfO3jbSCXM+AS6oDfgW8HdgJrAGuiIinSp3jGXAzM7OxFRG0dfaxr7O32qFkEhH8bNvLfHnls+xs6wJgauNErn7jHN77W6fk/kOOTQ11tDQ10NRQ+/8xOtYdqzPgC4AtEbE1InqBe4H3VTkmMzOz44okTpzSwCktTblYjyyJ3znzJO64aj5/+qYzmdJQx4Hufr60YgvX3LOWdc+1VTvEsnT1DrC7vYsX9nXR2Vv76/SPR7X/p2RkpwLPDznemcbMzMyswhrr6zi1pYnmxnzs4lhfN4EPzZ/NPR9bwLtfNwsB2/d28pf/+Th/990neSHNjudVT98AL7Z3s7Otk44cfGD2eJKPPyGlFfsd0SvW1Ei6Frg2HXZI+uVRXm8GsOeIr7JSnL/yOH/lcf7K4/yVx/krT8Xz9xzw7UpecHy5/spTTv5eU2ww7w34TmD2kOPTgF3DXxQRXwW+Wu7FJK0tto7HsnH+yuP8lcf5K4/zVx7nrzzOX3mcv/KMR/7yvgRlDfBaSWdIagA+DHy/yjGZmZmZmZWU6xnwiOiXtAT4IVAH3BkRm6oclpmZmZlZSbluwAEi4kHgwQpdruxlLMc55688zl95nL/yOH/lcf7K4/yVx/krz5jnL9f3ATczMzMzy5u8rwE3MzMzM8sVN+BFSLpTUqukJ4eMLZX0gqSN6evSasZYyyTNlvSIpKclbZL0yTR+oqSHJT2Tvp9Q7Vhr0Qj5cw1mIKlR0s8l/SLl76Y07vrLYIT8uf5GQVKdpA2SHkjHrr9RKJI/119GkrZLeiLlaW0ac/1lVCJ/Y15/XoJShKTFQAdwT0Scl8aWAh0R8U/VjC0PJM0CZkXEeklTgXXA+4GrgZcj4nOSPgOcEBF/VcVQa9II+bsM1+ARSRIwJSI6JNUDq4FPAr+H6++IRsjfu3D9ZSbpU8B8YFpEvEfS53H9ZVYkf0tx/WUiaTswPyL2DBlz/WVUIn9LGeP68wx4ERGxCni52nHkVUTsjoj16fEB4GkKO5S+D7g7vexuCk2lDTNC/iyDKOhIh/XpK3D9ZTJC/iwjSacB7wZuHzLs+suoRP6sPK6/GuMGfHSWSHo8LVHxr28ykDQHeAPwM+DkiNgNhSYTeFX1IsuHYfkD12Am6dfXG4FW4OGIcP2NQon8gesvqy8CnwYGh4y5/rIrlj9w/WUVwI8krVNhJ3Bw/Y1GsfzBGNefG/DsbgXmAvOA3cA/Vzec2iepGbgf+POI2F/tePKmSP5cgxlFxEBEzKOwO+4CSedVO6Y8KZE/118Gkt4DtEbEumrHkkcj5M/1l93CiDgfuAS4Pi2rteyK5W/M688NeEYR8VL6R2kQ+BqwoNox1bK0dvR+4FsR8Z00/FJa33xonXNrteKrdcXy5xocvYjYB6yksH7Z9TdKQ/Pn+stsIfDetI70XuAtkr6J6y+rovlz/WUXEbvS91ZgOYVcuf4yKpa/8ag/N+AZHSrc5APAk6Vee7xLH+K6A3g6Iv5lyFPfB65Kj68Cvlfp2PKgVP5cg9lImimpJT1uAt4GbMb1l0mp/Ln+somIv46I0yJiDvBhYEVEfATXXyal8uf6y0bSlPThfSRNAd5BIVeuvwxK5W886i/3O2GOB0nLgDcDMyTtBG4E3ixpHoW1QduBP6lagLVvIfBHwBNpHSnA3wCfA+6T9DFgB/ChKsVX60rl7wrXYCazgLsl1VGYZLgvIh6Q9BiuvyxK5e8brr+y+O+/8nze9ZfJycDywjwOE4FvR8RDktbg+suiVP7G/O8/34bQzMzMzKyCvATFzMzMzKyC3ICbmZmZmVWQG3AzMzMzswpyA25mZmZmVkFuwM3MzMzMKsgNuJlZjZM0R9Ir7jsr6R8kve0I5y6VdMP4RWdmZqPl+4CbmeVURPx9tWMwM7PR8wy4mVk+1En6mqRNkn4kqUnSXZI+CCDpUkmbJa2W9G+SHhhy7jmSVkraKunP0us/PeTxFyStSI/fmrZOR9Ktktama9405Pnlh95Y0tslfWd4sJKulvRdST+QtE3SEkmfkrRB0k8lnZhet1LSFyU9KulJSQvS+ExJD0taL+k2Sc9JmjEumTUzqzA34GZm+fBa4JaIOBfYB/z+oSckNQK3AZdExCJg5rBzzwbeCSwAbpRUD6wCfjc9Px9oTuOLgJ+k8c9GxHzg9cCbJL0eWAH8pqRD1/hj4OslYj4P+IN03X8EOiPiDcBjwJVDXjclIt4IfAK4M43dSGEb8vOB5cDpR8iPmVluuAE3M8uHbRGxMT1eB8wZ8tzZwNaI2JaOlw07978ioici9gCtFLZbXgdcIGkq0EOhKZ5PoSk/1IBfJmk9sAE4FzgnCtsnfwP4iKQW4CLgv0vE/EhEHIiIXwPtwA/S+BPD4l8GEBGrgGnpfRcB96bxh4C2EXJjZpYrXgNuZpYPPUMeDwBNQ441ynMnRkSfpO0UZrAfBR4HLgbmAk9LOgO4AbgwItok3QU0pvf4OoVmuhv4j4jol/QBCrPWAB8vct3BIceD/P9/f2JYvJHhZzIzyy3PgJuZ5d9m4ExJc9Lx5RnPW0WhyV5FYdb7OmBjmuWeBhwE2iWdDFxy6KSI2AXsAv4WuCuNLY+Ieelr7SjjvxxA0iKgPSLagdXAZWn8HcAJo3xPM7Oa5RlwM7Oci4guSZ8AHpK0B/h5xlN/AnwWeCwiDkrqTmNExC8kbQA2AVuB/x127reAmRHx1Bj8CG2SHqXQ9H80jd0ELJN0OfA/wG7gwBhcy8ys6lSY6DAzszyT1BwRHZIE3AI8ExFfGMfr3QxsiIg7ynyflcANw2fNJU0CBtLylouAWyNiXjnXMjOrFZ4BNzM7Nlwj6SqggcKHJm8brwtJWkdhecpfjNc1KNz15D5JE4Be4JpxvJaZWUV5BtzMzMzMrIL8IUwzMzMzswpyA25mZmZmVkFuwM3MzMzMKsgNuJmZmZlZBbkBNzMzMzOrIDfgZmZmZmYV9H/mzbcerAQf6wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"sns.regplot(x=\"highway-mpg\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see from this plot that price is negatively correlated to highway-mpg, since the regression slope is negative.\n",
"One thing to keep in mind when looking at a regression plot is to pay attention to how scattered the data points are around the regression line. This will give you a good indication of the variance of the data, and whether a linear model would be the best fit or not. If the data is too far off from the line, this linear model might not be the best model for this data. Let's compare this plot to the regression plot of \"peak-rpm\".</p>"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 47422.919330307624)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"sns.regplot(x=\"peak-rpm\", y=\"price\", data=df)\n",
"plt.ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing the regression plot of \"peak-rpm\" and \"highway-mpg\" we see that the points for \"highway-mpg\" are much closer to the generated line and on the average decrease. The points for \"peak-rpm\" have more spread around the predicted line, and it is much harder to determine if the points are decreasing or increasing as the \"highway-mpg\" increases.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #3:</h1>\n",
"<b>Given the regression plots above is \"peak-rpm\" or \"highway-mpg\" more strongly correlated with \"price\". Use the method \".corr()\" to verify your answer.</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>peak-rpm</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>peak-rpm</th>\n",
" <td>1.000000</td>\n",
" <td>-0.058598</td>\n",
" <td>-0.101616</td>\n",
" </tr>\n",
" <tr>\n",
" <th>highway-mpg</th>\n",
" <td>-0.058598</td>\n",
" <td>1.000000</td>\n",
" <td>-0.704692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>price</th>\n",
" <td>-0.101616</td>\n",
" <td>-0.704692</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" peak-rpm highway-mpg price\n",
"peak-rpm 1.000000 -0.058598 -0.101616\n",
"highway-mpg -0.058598 1.000000 -0.704692\n",
"price -0.101616 -0.704692 1.000000"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The variable \"highway-mpg\" has a stronger correlation with \"price\", it is approximate -0.704692 compared to \"peak-rpm\" which is approximate -0.101616. You can verify it using the following command:\n",
"df[[\"peak-rpm\",\"highway-mpg\",\"price\"]].corr()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Residual Plot</h3>\n",
"\n",
"<p>A good way to visualize the variance of the data is to use a residual plot.</p>\n",
"\n",
"<p>What is a <b>residual</b>?</p>\n",
"\n",
"<p>The difference between the observed value (y) and the predicted value (Yhat) is called the residual (e). When we look at a regression plot, the residual is the distance from the data point to the fitted regression line.</p>\n",
"\n",
"<p>So what is a <b>residual plot</b>?</p>\n",
"\n",
"<p>A residual plot is a graph that shows the residuals on the vertical y-axis and the independent variable on the horizontal x-axis.</p>\n",
"\n",
"<p>What do we pay attention to when looking at a residual plot?</p>\n",
"\n",
"<p>We look at the spread of the residuals:</p>\n",
"\n",
"<p>- If the points in a residual plot are <b>randomly spread out around the x-axis</b>, then a <b>linear model is appropriate</b> for the data. Why is that? Randomly spread out residuals means that the variance is constant, and thus the linear model is a good fit for this data.</p>"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"sns.residplot(df['highway-mpg'], df['price'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>What is this plot telling us?</i>\n",
"\n",
"<p>We can see from this residual plot that the residuals are not randomly spread around the x-axis, which leads us to believe that maybe a non-linear model is more appropriate for this data.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>How do we visualize a model for Multiple Linear Regression? This gets a bit more complicated because you can't visualize it with regression or residual plot.</p>\n",
"\n",
"<p>One way to look at the fit of the model is by looking at the <b>distribution plot</b>: We can look at the distribution of the fitted values that result from the model and compare it to the distribution of the actual values.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First lets make a prediction "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Y_hat = lm.predict(Z)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuoAAAJcCAYAAACv9IHOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXxU5d3//9cHwr7IIosGISi4AwECiitKVQQV3KFWcam71dYuapeffqve7W3tcttava17VdBiUe6KWkURUBECIpsgKEQhIAGEIjvh+v1xnYEAyWSSzJkzy/v5eMzjJDNn+UziA99z5XOuy5xziIiIiIhIeqkXdQEiIiIiIrI/BXURERERkTSkoC4iIiIikoYU1EVERERE0pCCuoiIiIhIGlJQFxERERFJQwrqIiIhMbOBZrY8wuvPN7OBIZ7/SjObmmnnjnPNDmY22cw2mtnvU3nt4Ponm9miVF9XRNKXgrqIZC0zm2Rm35hZowT3LzAzZ2Z5YdeWLGb2tJltN7NvKzwuBXDOHeOcmxTsd4+ZPbfPsZPM7Psh1NTYzNab2emVvPZHMxub7GsmyXXAGqClc+7HdT1Z8GGjPPid/MfMZpvZOVXt75yb4pw7oq7XFZHsoaAuIlnJzAqAkwEHnBdpMeF7wDnXvMLjxSiLcc5tBV4Erqj4vJnVB0YCz0RRVwK6AAtcLVYCjPPh7kPnXHOgFfAE8JKZtanB8SKSwxTURSRbXQFMA54GRlV8wcyamNnvzazEzDaY2VQzawJMDnZZH4yCDth3JHrfUXczu8rMPg3aJb4ws+sTKc7MHjWzB/d57lUzuz34+g4zWxGcd5GZDarpD8DMlpnZd8xsMPBz4NLgfX1iZvfjP8j8JXjuL8ExR5rZW2a2LrjuJRXO19bMxgejw9OBw+Jc/hngQjNrWuG5s/D/33k9ON+dZvZ58B4XmNn5VbyP/f7Sse9fA8zs6uD38I2ZvWlmXYLnLRjFXx38rueY2bGVXONp/H8nPwt+Ht8xs0Zm9iczKw0ef4r9dSbW1hT8nlYBT8X5WeCc2wU8CTQBDq3seNunVcrMDjGzf5pZmZmtjf2O4r1fEckuCuoikq2uAJ4PHmeZWYcKrz0I9AVOANoAPwN2AacEr7cKRqY/TOA6q4FzgJbAVcAfzaxPAse9gA/OBmBmrYEzgTFmdgRwC9DPOdcCH3CXJXDOSjnn3gD+C3gxeF+9nHO/AKYAtwTP3WJmzYC3gtra40e//2pmxwSnehjYChwEXB08qrrmB8BK4IIKT18OvOCc2xl8/zn+w8IBwP8DnjOzg2r6/sxsOP6DyAVAu+B9jQ5ePhP/ez0cP6p9KbC2knqvxP+3EvvrxNvAL4DjgUKgF9Af+GWFwzri//vpgm+biVdjHvB94FtgcXXHB399+BdQAhQA+cCYBN6viGQRBXURyTpmdhI+/LzknJuJD4TfDV6rhw+YtznnVjjnyp1zHzjnttXmWs6515xznzvvPeDf+PBZnSn4tpzYvhfh2yRKgXKgEXC0mTVwzi1zzn0e51w/Md8Tvt7M1tTmfQTOAZY5555yzu10zs0CXgYuCoLjhcD/55zb5JybR/UtLM8StL+YWUtgWMVjnHP/cM6VOud2Be06i/FhuKauB37jnPs0+BDwX0BhMMq8A2gBHAlYsM/KBM97GfBr59xq51wZ/sPE5RVe3wXc7Zzb5pzbUsU5jjez9cAq/Aef851zGxI4vj9wMPDT4Oe91TkXu7k23vsVkSyioC4i2WgU8G/nXCy0vsCe9pcDgcb48F5nZna2mU0LWkXWA0OCa8QV9EGPwYc38B8kng9eWwL8ELgHWG1mY8zs4Dine9A51yp4VHvtOLoAx1UI/evxYbUjfuQ2D/iqwv4l1ZzvWeA0M8vHfxBZ4pz7OPaimV1h/gbL2LWOJYGfXRV1/0+F86wDDMh3zr0D/AX/14Cvzeyx4ENDIg5m7/dYEjwXUxb048czLfZ7cc4dH4zUJ3L8IUBJhb8+VFTl+62mFhHJMArqIpJVzPeaXwKcamargv7fHwG9zKwXflaPrVTeX13ZTYSbgIp91h0rXKsRfsT5QaCDc64VMAEfmhIxGj9a3QU4LjiXL8S5F5xzsb8MOOC/EzxnVSp7b/s+9xXwXoXQH2sBuhEoA3biA2RM57gXdO5L/F8OLsOPRD8bey14z3/Dt/i0DX5286j8Z7cp2Fb6ewjqvn6fupsE7Tc45x5yzvUFjsG3wPw0Xt0VlOJ//jGdg+d2v8UEz1OVeMd/BXS2ym8yjft+RSR7KKiLSLYZjm8dORrfW1wIHIUPjFdUuKnvD2Z2sJnVN3/TaCN8GN0FHFrhfLOBU8yss5kdANxV4bWG+BaVMmCnmZ2N74lOSDC6XAY8DrzpnFsPYGZHmNnpQU1bgS3Be6qLr4GCoPWn4nMV3+u/gMPN7HIzaxA8+pnZUc65cuCfwD1m1tTMjmafm3Sr8Aw+jJ9I8BeDQDN8UC0Df1MufkR9P0HbyQrge8Hv62r2/qD1KHBXrJfezA4ws4uDr/uZ2XFm1gAf+LeS+M9yNPBLM2tnZgcC/x/wXDXHJMt0fI//b82smfkpL08MXqvy/YpIdlFQF5FsMwp4yjn3pXNuVeyBb3+4LBih/AkwF5iBbxv4b6Cec24zcD/wftBWcLxz7i38VINzgJn4MAuAc24jcCvwEvANvn1lfA3rHQ18B9+eE9MI+C1+9H8V/sbOn9fwvPv6R7Bda2azgq//Bz+i/42ZPRS8nzOBEfiR41X4n01sHvpbgObB809TzUwngbFAa2Bixd5w59wC4PfAh/gPDD2A9+Oc51r8SPha/Mj47tFj59y4oM4xZvYf/Mj82cHLLfEj99/gW1fW4v8Ckoj7gGL8734uMCt4LnTBB6NzgW7Al8By/I2w1b1fEckiVovpYkVEREREJGQaURcRERERSUMK6iIiIiIiaUhBXUREREQkDSmoi4iIiIikocrmZxXgwAMPdAUFBVGXISIiIiJZbObMmWucc+0qe01BvQoFBQUUFxdHXYaIiIiIZDEzq3KVZ7W+iIiIiIikIQV1EREREZE0pKAuIiIiIpKG1KMuIiIikoV27NjB8uXL2bp1a9SlCNC4cWM6depEgwYNEj5GQV1EREQkCy1fvpwWLVpQUFCAmUVdTk5zzrF27VqWL19O165dEz5OrS8iIiIiWWjr1q20bdtWIT0NmBlt27at8V83FNRFREREspRCevqoze9CQV1EREREJA0pqIuIiIhIaMaNG4eZsXDhwmr3ffrppyktLa31tSZNmsQ555yz13ObNm2ibdu2bNiwYa/nhw8fzksvvVSjc6WagrqIiIiIhGb06NGcdNJJjBkzptp96xrUK9OsWTPOPPNMXnnlld3PbdiwgalTp0YexKujoC4iIiIiofj22295//33eeKJJ/YL6g888AA9evSgV69e3HnnnYwdO5bi4mIuu+wyCgsL2bJlCwUFBaxZswaA4uJiBg4cCMD06dM54YQT6N27NyeccAKLFi2KW8fIkSP3uv64ceMYPHgwTZs2Tehc99xzDw8++ODu74899liWLVsGwHPPPUf//v0pLCzk+uuvp7y8vDY/qkppekYRERGRbPfDH8Ls2ck9Z2Eh/OlPcXd55ZVXGDx4MIcffjht2rRh1qxZ9OnTh9dff51XXnmFjz76iKZNm7Ju3TratGnDX/7yFx588EGKiorinvfII49k8uTJ5OXl8fbbb/Pzn/+cl19+ucr9Bw8ezPe//33Wrl1L27ZtGTNmDD/4wQ9qda6KPv30U1588UXef/99GjRowE033cTzzz/PFVdckdDx1VFQFxEREZFQjB49mh/+8IcAjBgxgtGjR9OnTx/efvttrrrqKpo2bQpAmzZtanTeDRs2MGrUKBYvXoyZsWPHjrj7N2zYkPPOO4+xY8dy4YUXMnv2bM4888xanauiiRMnMnPmTPr16wfAli1baN++fY3eSzwK6iIiIiLZrpqR7zCsXbuWd955h3nz5mFmlJeXY2Y88MADOOcSmq4wLy+PXbt2Aew1B/mvfvUrTjvtNMaNG8eyZct2t8TEM3LkSO677z6ccwwbNmz3CqGJnKtiHRVrcc4xatQofvOb31R7/dpQj7qIiIiIJN3YsWO54oorKCkpYdmyZXz11Vd07dqVqVOncuaZZ/Lkk0+yefNmANatWwdAixYt2Lhx4+5zFBQUMHPmTIC92lE2bNhAfn4+4G9ATcRpp53G4sWLefjhhxk5cmSNzlVQUMCsWbMAmDVrFkuXLgVg0KBBjB07ltWrV+9+HyUlJQnVkwgFdRERERFJutGjR3P++efv9dyFF17ICy+8wODBgznvvPMoKiqisLBw942aV155JTfccMPum0nvvvtubrvtNk4++WTq16+/+zw/+9nPuOuuuzjxxBMTvnmzXr16XHjhhaxdu5ZTTjmlRue68MILWbduHYWFhTzyyCMcfvjhABx99NHcd999nHnmmfTs2ZMzzjiDlStX1ujnFI8555J2smxSVFTkiouLoy5DREREpFY+/fRTjjrqqKjLkAoq+52Y2UznXKV3z2pEXUREREQkDSmoi4iIiIikIQV1EREREZE0pKAuIiIiIpKGFNRFRERERNKQgrqIiIiISBpSUBeR1Pv4Y7jpJpgwAWqwVLOIiGSW+vXrU1hYuPuxbNkyiouLufXWWwGYNGkSH3zwwe79X3nlFRYsWFDj6zRv3ny/5wYOHMibb76513N/+tOfuOmmm2p8rqgoqItIajkH110HjzwCQ4fCQQfBDTfAe+9BheWZRUQk8zVp0oTZs2fvfhQUFFBUVMRDDz0EJC+oV2bkyJGMGTNmr+fGjBmz16qk6U5BXURSa9w4KC6GRx+FV1+FM86Av/8dBg6EggKYOzfqCkVEJESTJk3inHPOYdmyZTz66KP88Y9/pLCwkPfee4/x48fz05/+lMLCQj7//HM+//xzBg8eTN++fTn55JNZuHAhAEuXLmXAgAH069ePX/3qV5Ve56KLLuJf//oX27ZtA2DZsmWUlpZy0kkn8e233zJo0CD69OlDjx49ePXVV6usM+aWW27h6aefBmDmzJmceuqp9O3bl7POOmv3aqQPPfQQRx99ND179mTEiBF1/lnl1fkMIiKJKi+HX/4SjjwSrrkG8vLgvPNg0yYYP963w/z61/CPf0RdqYhIVvnhD2H27OSes7AQ/vSn+Pts2bKFwsJCALp27cq4ceN2v1ZQUMANN9xA8+bN+clPfgLAeeedxznnnMNFF10EwKBBg3j00Ufp3r07H330ETfddBPvvPMOt912GzfeeCNXXHEFDz/8cKXXbtu2Lf379+eNN95g2LBhjBkzhksvvRQzo3HjxowbN46WLVuyZs0ajj/+eM477zzMrNr3vWPHDn7wgx/w6quv0q5dO1588UV+8Ytf8OSTT/Lb3/6WpUuX0qhRI9avX5/IjzEuBXURSZ3nn4dPP/VBPK/CPz/NmsHIkb53/Q9/gC+/hM6do6tTRESSItb6UhvffvstH3zwARdffPHu52Kj4++//z4vv/wyAJdffjl33HFHpeeItb/EgvqTTz4JgHOOn//850yePJl69eqxYsUKvv76azp27FhtXYsWLWLevHmcccYZAJSXl3PQQQcB0LNnTy677DKGDx/O8OHDa/W+K1JQF5HU2L4d7r4b+vaFCy+sfJ+bb4bf/973r//mN6mtT0Qki1U38p2Odu3aRatWraoM+omMfg8fPpzbb7+dWbNmsWXLFvr06QPA888/T1lZGTNnzqRBgwYUFBSwdevWvY7Ny8tjV4V7p2KvO+c45phj+PDDD/e73muvvcbkyZMZP3489957L/Pnzycvr/ZxWz3qIpIajz8Oy5bB/fdDVf+4dukCw4fDY4/B5s0pLU9ERFKvRYsWbNy4sdLvW7ZsSdeuXflH0A7pnOOTTz4B4MQTT9x9o+jzzz9f5fmbN2/OwIEDufrqq/e6iXTDhg20b9+eBg0a8O6771JSUrLfsV26dGHBggVs27aNDRs2MHHiRACOOOIIysrKdgf1HTt2MH/+fHbt2sVXX33FaaedxgMPPMD69ev59ttv6/LjUVAXkRTYvBnuvRdOOQXOPDP+vrfeCuvWwQsvpKY2ERGJzLnnnsu4ceMoLCxkypQpjBgxgt/97nf07t2bzz//nOeff54nnniCXr16ccwxx+y+6fN//ud/ePjhh+nXrx8bNmyIe42RI0fyySef7HVz52WXXUZxcTFFRUU8//zzHHnkkfsdd8ghh3DJJZfsbmfp3bs3AA0bNmTs2LHccccd9OrVi8LCQj744APKy8v53ve+R48ePejduzc/+tGPaNWqVZ1+Puacq9MJslVRUZErLi6OugyR7PDf/w133glTpsBJJ8Xf1zno3dvfeDpnTtWj7yIiEtenn37KUUcdFXUZUkFlvxMzm+mcK6psf42oi0i41q/3QX3IkOpDOvhgfuutMG8eTJoUenkiIiLpSkFdRML1+9/DN9/43vREffe7cOCBECyIISIikosU1EUkPM7BU0/5udKDeXQT0rixX7301Vdh6dLw6hMRyXJqcU4ftfldKKiLSHiWLYMVK+Css2p+7I03Qr16UMVCFiIiEl/jxo1Zu3atwnoacM6xdu1aGjduXKPjNI+6iIRn6lS/TaQ3fV+dOsFFF/lpHe+5B5o3T2ppIiLZrlOnTixfvpyysrKoSxH8B6dOnTrV6BgFdREJz5QpcMABcOyxtTv+1lvhxRfh73/3I+wiIpKwBg0a0LVr16jLkDpQ64uIhGfqVDjxRN/CUhsDBkCvXhBnMQsREZFspaAuIuFYswY+/RROPrn25zCDs8+Gjz6COq7uJiIikmkU1EUkHO+/77e16U+vaNAg2LnTt9GIiIjkEAV1EQnH1KnQsCEUVbrYWuJOOMGf5513klOXiIhIhlBQF5FwTJkC/fv7OdHromlT36uuoC4iIjlGQV1Ekm/zZpg5s+5tLzGDBsHHH8O6dck5n4iISAZQUBeR5Js+3feVJyuon366X+V00qTknE9ERCQDKKiLSPJNmeJnbDnhhOScr18/aNZM7S8iIpJTFNRFJPmmTvWLHLVunZzzNWzop3mcODE55xMREckACuoiklw7d8IHH9Rt/vTKDBoECxdCaWlyzysiIpKmFNRFJLnmzPGLEyWrPz3m9NP99t13k3teERGRNKWgLiLJNXWq3yY7qPfq5Vtp1KcuIiI5QkFdRJJryhTo0gUOOSS5561fH047zfepO5fcc4uIiKQhBXURSR7n/Ih6skfTY04/HUpKYOnScM4vIiKSRhTURSR5vvgCVq0KN6iD2l9ERCQnhBrUzWywmS0ysyVmdmclr5uZPRS8PsfM+lR3rJm1MbO3zGxxsG1d4bW7gv0XmdlZwXMtzGx2hccaM/tTmO9bJGdNmeK3yZ7xJebII+GggzRNo4iI5ITQgrqZ1QceBs4GjgZGmtnR++x2NtA9eFwHPJLAsXcCE51z3YGJwfcEr48AjgEGA381s/rOuY3OucLYAygB/hnS2xbJbVOn+hs+jzoqnPOb+VH1d95Rn7qIiGS9MEfU+wNLnHNfOOe2A2OAYfvsMwx41nnTgFZmdlA1xw4Dngm+fgYYXuH5Mc65bc65pcCS4Dy7mVl3oD0wJZlvVEQCsf70eiH+03L66bB6NSxYEN41RERE0kCYQT0f+KrC98uD5xLZJ96xHZxzKwGCbfsaXG8k8KJzlQ/Fmdl1ZlZsZsVlZWVx3pqI7KesDBYtCq8/PSbWp672FxERyXJhBnWr5Ll9A3JV+yRybG2uNwIYXdUJnHOPOeeKnHNF7dq1q+ZyIrKXuXP9tk+f+PvVVUEBdO2qG0pFRCTrhRnUlwMVJ1LuBOy79ndV+8Q79uugPYZguzqR65lZLyDPOTezNm9GRKqxcKHfhtWfXtGgQTBpEpSXh38tERGRiIQZ1GcA3c2sq5k1xI9mj99nn/HAFcHsL8cDG4J2lnjHjgdGBV+PAl6t8PwIM2tkZl3xN6hOr3CtkcQZTReROlq0CJo3h4MPDv9aJ50EGzb4a4qIiGSpvLBO7JzbaWa3AG8C9YEnnXPzzeyG4PVHgQnAEPyNn5uBq+IdG5z6t8BLZnYN8CVwcXDMfDN7CVgA7ARuds5VHG67JLiWiIRh4UI/faJV1oWWZP36+e2MGXD0vpNJiYiIZAer4r7KnFdUVOSKi4ujLkMkc3Tp4udPf+658K9VXg4HHABXXQV//nP41xMREQmJmc10zhVV9ppWJhWRutu0Cb780o+op0L9+v6mVX2YFhGRLKagLiJ199lnfpuqoA6+/WX2bNixI3XXFBERSSEFdRGpu9iML6kM6kVFsHUrzJ9f/b4iIiIZSEFdROpu4UK/Gmm3bqm7ZlHQzqf2FxERyVIK6iJSdwsX+kWIGjdO3TW7dfM3lCqoi4hIllJQF5G6W7QotW0v4KeBLCryUzSKiIhkIQV1EambXbt8UD/iiNRfu6gI5s71veoiIiJZRkFdROrmyy99UE71iDr4oL5jhw/rIiIiWUZBXUTqJooZX2JiK5SqT11ERLKQgrqI1E2UQb1zZzjwQPWpi4hIVlJQF5G6WbgQ2rTxgTnVYjeUakRdRESykIK6iNTNwoV+NN0smuv36+cXPdq8OZrri4iIhERBXUTqJhbUo1JU5Gee+fjjUC+zZAncfDO0aAFDhvh7aEVERMKkoC4itbd+PXz9dTRTM8aEvELpRx/B+efD4YfD44/DWWfB5MlwzDHw8MP+M4KIiEgYFNRFpPYWLfLbKEfUDz7YP0II6nPmwIkn+mD+i19ASQmMHQvz5sEJJ8Att8Cpp/rnRUREki0v6gJEJINFOeNLRSHcUOqcb3Vp3dq/zbZt97xWUABvvAHPPgu33goXXwwffAB5+hdVRESSSCPqIlJ7CxdCgwbQtWu0dRQV+dH9//wnaad87jmYOhV++9u9Q3qMGYwaBX/7m58d8sEHk3ZpERERQEFdROpi4ULo1s2H9SgVFfkh8FmzknK6DRvgpz+F446Dq66Kv+8ll8BFF8Hdd/vJZ0RERJJFQV1Eai/qGV9iknxD6T33wOrV/mbRegn8K/nww9CyJVx5JezcmZQSREREFNRFpJZ27PBzFqZDUG/XDrp0ScoKpXPnwp//DNdfD337JnZM+/bw17/6zwkPPFDnEkRERAAFdRGprS++8MPHUU7NWFESbih1zs/k0qoV3H9/zY69+GL/uOcePyuMiIhIXSmoi0jtpMPUjBX16+c/PKxbV+tTzJjhp2K85x5o06bmx8daYH7841qXICIispuCuojUTmxqxnQaUYc6jaqPHg0NG8L3vle749u1gzvvhH//20/XKCIiUhcK6iJSOwsXQseOvk8kHfTp47cff1yrw8vLYcwYGDq0bm/pxht9z/rdd9f+HCIiIqCgLiK1lS4zvsS0bg2dO8Mnn9Tq8Pfeg1WrYOTIupXRrBnccQe8/TZMmVK3c4mISG5TUBeRmnMu/YI6QK9eMHt2rQ594QVo3hzOOafuZdxwA3TooFF1ERGpGwV1Eam5sjL45pv0DOqLFsGWLTU6bNs2GDsWLrgAmjSpexlNm/pe9Xff9SP1IiIitaGgLiI1l243ksYUFsKuXTVeIvSNN/xqpHVte6no+uvhoIM0qi4iIrWnoC4iNRcL6uk4og417lN/4QU/Y8ugQckrpUkTuOsuP6L+zjvJO6+IiOQOBXURqbklS/w8hp07R13J3g491Dea16BPfeNGGD8eLrkEGjRIbjnXXgsHHwz33pvc84qISG5QUBeRmisp8SG9Xpr9E1KvHvTsWaMR9Vdfha1bk9v2EtO4MfzsZzBpEkydmvzzi4hIdkuz/8uKSEYoKYEuXaKuonK9evmg7lxCu7/wgn8rAwaEU8611/q2mvvvD+f8IiKSvRTURaTm0j2o/+c/sGxZtbuuWwdvvQUjRoT3x4GmTeHHP/Y3rNZh0VQREclBCuoiUjNbt/qVgdI1qBcW+m0C7S+TJsHOnXDuueGWdOONfj0mjaqLiEhNKKiLSM189ZXfpmtQP/ZYMEsoqE+c6FcS7d8/3JJatoTbboNXXoG5c8O9loiIZA8FdRGpmZISv03XoN6sGXTvntDML++8A6eckvzZXirzgx9AixbwX/8V/rVERCQ7KKiLSM2ke1CHPTeUxrFihZ8OPplzp8fTpg3cdBO8+KJfPFVERKQ6CuoiUjPLlvk7Lzt1irqSqhUWwtKl/qbSKrz7rt+efnqKagJuv91P2fjrX6fumiIikrkU1EWkZkpKID8/Nf0itRVboXTOnCp3mTgR2rbds2sqtG8PP/qRnxJyxozUXVdERDKTgrqI1Ew6T80YE0vfVfSpO+f70087LfVrNt15pw/st9+e8FTvIiKSoxTURaRmMiGo5+f74fIq+tQ//xy+/DK1bS8xLVrAfff5lUr/+c/UX19ERDKHgrqIJG7nTli+PP2DulncG0rfecdvU3Uj6b6uvhp69ICf/Qy2bYumBhERSX8K6iKSuNJSKC9P/6AOPqjPnes/XOxj4kQ/6N69ewR1AfXrw+9/D198AX/5SzQ1iIhI+lNQF5HEZcLUjDG9evlVVBcv3uvpXbv8jC+DBvmB96iccQYMGQL33gtr1kRXh4iIpC8FdRFJXCYF9cJCv92n/WXePCgri6Y/fV+/+x18+y385Ce6sVRERPanoC4iiYsF9c6do60jEUcd5aeQ3Gfml4kT/TYdgvrRR8PPfw7PPAOPPBJ1NSIikm4U1EUkcSUl0K4dNG0adSXVa9jQh/V9RtTfecf3ph9ySER17eOee+Ccc+C222Dy5KirERGRdKKgLiKJy4SpGSsqLNwrqO/cCe+9F91sL5WpVw+eew4OOwwuushPGykiIgIK6iJSEyUlUFAQdRWJ69ULVq6E1asB3wWzcSMMHBhtWfs64AB49VU/VeP558OWLVFXJCIi6UBBXUQS41zmjajHVigNRtWnTfPfnnBCRPXEccQR8MIL8PHHfjaYpUujrkhERKKmoC4iiVm92k93mMFB/cMP/fzp6dKfvq+hQ+Gpp2DmTDj2WPjDH/y09fD2ZMgAACAASURBVCIikpsU1EUkMZk0NWPMgQf6ZB7M/PLhh3D88RHXVI1Ro2D+fN9H/+Mf+3onTID166OuTEREUk1BXUQSk4lBHfyo+pw5fP21bycZMCDqgqp3yCG+Z/2ll/zNpUOHQuvWfjrHa66Bxx7zLTI7dkRdqYiIhElBXUQSk8lB/dNPmTbFp9pMCOrgV029+GL/4WLiRLjvPjj0UB/gr78e+vSBFi38iPsf/+hXXBURkeySF3UBIpIhSkqgZUto1SrqSmqmZ0/YuZMPX1tHgwYd6NMn6oJqpmlTvzhTbIEm5+CLL6C4GGbMgKlT4fbb4Y034NlnoUOHaOsVEZHk0Yi6iCQm02Z8iQluKP3wQ0fv3tC4ccT11JGZn3P90kvhwQd93/3//q9fLKmwcM/KqyIikvkU1EUkMZka1Lt3Z2ejZsz4vE3GtL3UhBlcdx1Mn+7/2HHGGb4VRkREMp+CuogkJtMWO4rJy2POocPZsrNh2s/4Uhc9evh2mHPOgTvu0DzsIiLZQEFdRKq3YYN/ZOKIOvDhAYMBGHC8i7iScDVrBo88Anl58KtfRV2NiIjUlYK6iFQvU2d8CUzbWcRBlNK5wcqoSwldfj788Ifw/PN+CkcREclcoQZ1MxtsZovMbImZ3VnJ62ZmDwWvzzGzPtUda2ZtzOwtM1scbFtXeO2uYP9FZnZWhecbmtljZvaZmS00swvDfN8iWSfDg/qHpV04nmnY3DlRl5ISd9wBbdrAnfv9qysiIpkktKBuZvWBh4GzgaOBkWZ29D67nQ10Dx7XAY8kcOydwETnXHdgYvA9wesjgGOAwcBfg/MA/AJY7Zw7PDjfe0l/wyLZbNkyv83AoL56NXxe2oQBfAiffBJ1OSlxwAHwy1/Cv/8Nb78ddTUiIlJbYY6o9weWOOe+cM5tB8YAw/bZZxjwrPOmAa3M7KBqjh0GPBN8/QwwvMLzY5xz25xzS4ElwXkArgZ+A+Cc2+WcW5PsNyuS1UpK/LyG7dtHXUmNffSR3w5o/0XOBHWAm27yn6vuuEOLIYmIZKowg3o+8FWF75cHzyWyT7xjOzjnVgIE21hyqPQYM4utznKvmc0ys3+YWaVLgpjZdWZWbGbFZWVlibxHkdxQUgKdO/u5ADPMhx/6myv79gXm5EbrC0CjRn4101mz4KWXoq5GRERqI8ygXtn/0fedcqGqfRI5NtHr5QGdgPedc32AD4EHKzuBc+4x51yRc66oXbt21VxOJIdk6hzq+KBeWAhN+hwFCxfC1q1Rl5Qy3/2uX5j1N7+JuhIREamNMIP6cuCQCt93AkoT3CfesV8H7TEE29XVnGstsBkYFzz/DyDDFhEXiViGBvWdO/1CQAMG4BNreTksWBB1WSlTrx5cfrn/Q8KXX0ZdjYiI1FSYQX0G0N3MuppZQ/yNnuP32Wc8cEUw+8vxwIagnSXeseOBUcHXo4BXKzw/wswamVlX/A2q051zDvg/YGCw3yAgd/5PLVJXW7b4OzIzcLGj+fNh82b8Qke9evknc6hPHWDoUL+dMCHaOkREpObywjqxc26nmd0CvAnUB550zs03sxuC1x8FJgBD8Dd+bgauindscOrfAi+Z2TXAl8DFwTHzzewlfAjfCdzsnCsPjrkD+LuZ/Qkoi11HRBIQG4rNwBH16dP99rjjgIJu0KRJTvWpAxx5JHTtCq+9BjfcEHU1IiJSE6EFdQDn3AR8GK/43KMVvnbAzYkeGzy/Fj8qXtkx9wP3V/J8CXBKTWoXkUAGz6E+fbqfT/zQQwGrDz165NyIupkfVX/iCd+e37hx1BWJiEiitDKpiMSXwUF9xgzo16/CZDU9e/qg7qq7Nz27DBniO5gmTYq6EhERqQkFdRGJr6QE6teHgw+OupIa2bQJ5s2D/v0rPNmrF6xbBytWRFZXFAYO9F0/r70WdSUiIlITCuoiEl9JCXTq5CcjzyAff+wneenXr8KTsRtKc6xPvUkTGDTIB/Uc+2OCiEhGU1AXkfgydGrGGTP8dq+g3qOH3+ZYnzr4PvWlS/1U8iIikhkU1EUkvq++8quSZpjp0+GQQ6BjxwpPtmrlP3TkYFAfMsRv1f4iIpI5FNRFpGrOQWkp5OdHXUmNTZ++T396TK9eORnUO3f2f1DQfOoiIplDQV1EqrZmDWzfnnFBfe1a+OKLOEH9s8/8NCg5ZsgQmDIFNmyIuhIREUmEgrqIVC02O0qGBfVK+9NjevaEXbv8sqU5ZuhQ2LkT3nor6kpERCQRCuoiUrUMDerTp/u50/v2reTF2MwvOdj+MmAAtG6tPnURkUyhoC4iVcvQoD5jBhx1FLRsWcmLhx0GzZrlZFDPy/PTNL77btSViIhIIhTURaRqK1b4oekOHaKuJGHO+RH1StteAOrV83dV5thc6jFFRX7GzXXroq5ERESqo6AuIlVbscKH9AYNoq4kYV9+CatXV3EjaUzPnn5EPQdX/+nd229nz462DhERqZ6CuohUbcWKjGx7gTgj6gCFhbB+vU/1OSYW1D/+ONo6RESkegrqIlK1DAzq06dDw4Z+0LxKOZxW27Xzv9IcfOsiIhlHQV1EqpahQb2wEBo1irNTz56+V33WrJTVlU5691ZQFxHJBArqIlK5LVv8HYcZFNTLy2HmzGraXgCaNoUjj8zZtNq7NyxcCJs3R12JiIjEo6AuIpUrLfXbDArqn34K336bQFCHnB5W7t3br/k0d27UlYiISDwK6iJSuQycQ/2jj/z2+OMT2LlPH/8eV68OtaZ0lMMt+iIiGUVBXUQql6FBvVUr6N49gZ1zOK126eJXKM3Bty4iklEU1EWkchkY1KdNg+OO8/eJVquw0G9zMK2a+befg29dRCSjKKiLSOVWrIBmzaBly6grScjGjTB/vg/qCWndGrp2zemZX+bOhZ07o65ERESqoqAuIpWLTc1oFnUlCSku9jdIJtSfHpPjN5Ru3epnfxERkfSkoC4ilSstzai2l9iNpP371+Cg3r1hyRL4z39CqSmd5XCLvohIxlBQF5HKZdhiRx995G8ibdu2Bgf16eO3s2eHUlM6O+IIaNxYQV1EJJ0pqIvI/pzLqBF15/bcSFojOTysnJfnF2jNwbcuIpIxFNRFZH9r1sD27RkT1L/6ClatqmF/OsBBB0HHjjmbVnv39n9McC7qSkREpDIK6iKyv9jUjAcfHG0dCZo2zW9rPKIOPq3m8Mwv69fDsmVRVyIiIpVRUBeR/WXYHOoffeT7rXv2rMXBvXvDggV+CpQck8OdPyIiGUFBXUT2l2FBfdo0f19ow4a1OLhPHygvh3nzkl5XuuvRA+rXV1AXEUlXCuoisr8VK/z86R07Rl1JtbZv950rNe5Pj4kNK+dg+0uTJnDkkQrqIiLpSkFdRPa3YgV06AANGkRdSbXmzPFdK7XqTwe/OukBB+RsWu3Vy69QKiIi6UdBXUT2l0FzqMcWOqr1iLpZTq9QevjhftacHGzRFxFJewrqIrK/DArq06b5Dp1DDqnDSXr3hk8+gZ07k1ZXpuje3U/P+PnnUVciIiL7UlAXkf1lUFD/6CM/mm5Wh5P06eOHlBctSlpdmaJbN79dsiTaOkREZH8K6iKyty1bYN26jAjqa9fC4sV16E+PyeF5Crt399vFi6OtQ0RE9qegLiJ7Ky312wwI6h9+6LcDBtTxREcc4Sdiz8GZX1q3hrZtFdRFRNKRgrqI7C2D5lCfPNnPnd6/fx1PlJfnpz/JwRF18KPqCuoiIulHQV1E9pZhQb1/fz8feJ3FZn5xLgknyyzduqlHXUQkHSmoi8jeMiSof/stzJwJp5ySpBP26QMbNsDSpUk6Yebo3t1P0bhlS9SViIhIRQrqIrK3FSugWTNo2TLqSuKaNs3Pppi0oJ7DK5TGbijVFI0iIulFQV1E9habmrFO8x2Gb/JkqFcPTjghSSfs0cM3vM+YkaQTZo5YUFf7i4hIelFQF5G9lZamfdsL+KDepw+0aJGkEzZqBIWFe5Y6zSGxudR1Q6mISHpRUBeRva1YAQcfHHUVcW3d6ltfktb2EnPccVBcDOXlST5xemvVCg48UEFdRCTdKKiLyB7OZcSI+owZsG1bSEF90yaYPz/JJ05/mqJRRCT9KKiLyB5r1sD27Wkf1CdP9tuTTkryiWNLnOZo+4t61EVE0ouCuojskSFTM06eDMce61fUTKrDDoM2bXIyqHfvDsuXw+bNUVciIiIxCuoiskcGBPWdO+H990NoewE/003//jkb1EFTNIqIpBMFdRHZIwOC+scf+zbyUII6+PaX+fNh48aQLpCeYkFdfeoiIulDQV1E9lixwo8qd+wYdSVVivWnhxrUnfPLnuaQ2BSN6lMXEUkfCuoisseKFdChAzRoEHUlVXrvPT/6e9BBIV2gf3+/zbH2lwMOgHbtNKIuIpJOFNRFZI/YqqRpatcumDIlxNF08HeoduuWc0EdNEWjiEi6UVAXkT3SPKjPnQvr14cc1MG3vyioi4hIxBTURWSPNA/qb77pt6efHvKFjjvOL/y0fHnIF0ov3br5t71pU9SViIgIKKiLSMyWLbBuXVoH9QkToGdP6NQp5Avl6MJHmqJRRCS9KKiLiFda6rdpGtQ3bICpU2HIkBRcrFcvaNgwZ4O62l9ERNKDgrqIeCtX+u3BB0dbRxXefhvKy1MU1Bs1gsLCnAvqmqJRRCS9KKiLiBcbUQ9t3sO6mTDBTyE4YECKLnjccVBc7JdCzREtW0L79hpRFxFJFwrqIuLFRtTTMKg754P6WWdBXl6KLnrccbB5s1+lNIdo5hcRkfShoC4i3sqVfqGjtm2jrmQ/s2fDqlVw9tkpvGjshtLp01N40eh166abSUVE0oWCuoh4K1f60XSzqCvZz+uv++3gwSm86GGH+Q8tOdan3qWL74Lavj3qSkREREFdRLxYUE9DEyZA377QsWMKL2oG/fvnZFB3LuemkBcRSUuhBnUzG2xmi8xsiZndWcnrZmYPBa/PMbM+1R1rZm3M7C0zWxxsW1d47a5g/0VmdlaF5ycFz80OHu3DfN8iGam0NC2D+rp18OGHKZrtZV/HHed71DdujODi0ejSxW+//DLaOkREJMSgbmb1gYeBs4GjgZFmdvQ+u50NdA8e1wGPJHDsncBE51x3YGLwPcHrI4BjgMHAX4PzxFzmnCsMHquT/X5FMl6ajqj/+9+wa1eEQd05P/tLjujc2W9LSqKtQ0REwh1R7w8scc594ZzbDowBhu2zzzDgWedNA1qZ2UHVHDsMeCb4+hlgeIXnxzjntjnnlgJLgvOISHW2bfND12k4h/rrr/tW8X79Irh4/+CfkBxqfznkEL/ViLqISPTCDOr5wFcVvl8ePJfIPvGO7eCcWwkQbGNtLNVd76mg7eVXZpXfLWdm15lZsZkVl5WVVff+RLLHqlV+m2Yj6rt2+aA+eDDUr1/9/knXpo2fBmXatAguHo3GjaFDB42oi4ikgzCDemVh2CW4TyLH1uR6lznnegAnB4/LKzuBc+4x51yRc66oXbt21VxOJIuk6WJHxcVQVpbiaRn3dfLJMGWK/9SQI7p0UVAXEUkHYQb15cAhFb7vBJQmuE+8Y78O2mMItrF+8yqPcc6tCLYbgRdQS4zI3tJ0saMXX/RTu0fSnx5z6qm+LSiHFj7q0kWtLyIi6SDMoD4D6G5mXc2sIf5Gz/H77DMeuCKY/eV4YEPQzhLv2PHAqODrUcCrFZ4fYWaNzKwr/gbV6WaWZ2YHAphZA+AcYF4Yb1gkY8WCehr1qJeXw5gxfjS9devq9w/Nqaf67aRJERaRWp07+6Duqvs7poiIhCq0oO6c2wncArwJfAq85Jybb2Y3mNkNwW4TgC/wN37+Dbgp3rHBMb8FzjCzxcAZwfcEr78ELADeAG52zpUDjYA3zWwOMBtYEVxLRGJWrvRN4GnU8jVliu/IGTky4kIKCvwQ83vvRVxI6nTpAlu3+rYjERGJTl6YJ3fOTcCH8YrPPVrhawfcnOixwfNrgUFVHHM/cP8+z20C+ta0dpGcUlrq7yCslz5roI0eDc2awbnnRl0JflR9wgQ/xJyGK7cmW8UpGttr1QkRkcikz/+VRSQ6aTaH+vbtMHYsDBvmw3rkBg6ENWtgwYKoK0mJ2KJHuqFURCRaCuoiknZB/a23/P2bkbe9xORYn3psRF03lIqIREtBXUR8UE+jG0lHj/Y3kJ55ZtSVBLp29SsB5UifeuvW0Ly5RtRFRKKmoC6S63bs8HcNpsmI+ubN8MorcNFF0LBh1NUEzPyo+nvv5cRUKGaaolFEJB0oqIvkuq+/9uEzTYL6v/4FmzalUdtLzMCBsHo1LFwYdSUp0bmzRtRFRKKmoC6S69JssaMXXvClnHJK1JXsI9anniPtLxpRFxGJnoK6SK5Lo8WO1q+H11+HSy/107qnlcMOg/z8nLqhdO1a/9cNERGJhoK6SK5LoxH1l17yUzN+97tRV1KJHOtT1xSNIiLRU1AXyXWlpT6EdugQdSX87W/QowcUFUVdSRVOPRVWrYLPPou6ktDFgrraX0REoqOgLpLrVq6Edu0gL9SFiqs1ezYUF8O116bx4p8DB/ptDvSpV1ydVEREoqGgLpLr0mQO9ccfh0aN4LLLoq4kju7doWPHnOhTP/hgf5+ARtRFRKKjoC6S69JgVdLNm+G55/zc6W3aRFpKfGZ+VD0H+tTr14dOnTSiLiISJQV1kVxXWhp5UH/5ZdiwAb7//UjLSMypp/qf2ZIlUVcSui5dFNRFRKKkoC6Sy8rL/YJHEQf1v/0NunXbM1V5WsuxPnW1voiIREdBXSSXlZXBrl2RBvVFi2DKFD+anrY3kVZ0xBF+hpwc6FPv0gVWrICdO6OuREQkNymoi+SyNFjs6PHH/YQzo0ZFVkLN5NB86l26+D+6lJZGXYmISG5SUBfJZbEEFtGI+vbt8MwzcO65fjKVjHHaabB8uf9zQBbTFI0iItFSUBfJZRGvSvp//+e7bzLiJtKKzj7bb197Ldo6QqbVSUVEoqWgLpLLYkE9ouHsJ5+E/Hw466xILl97XbrAMcfAhAlRVxKqQw7xW91QKiISDQV1kVy2ciW0betXGkqx0lJ44w3fm16/fsovX3dDh8LkyfCf/0RdSWiaNYMDD9SIuohIVBTURXJZhIsdPfusn3DmyisjuXzdDR3qp0N5662oKwlVly4aURcRiYqCukgui2ixI+fgqafg5JOhe/eUXz45TjgBWrXK+j71zp01oi4iEhUFdZFcFtGI+gcfwGefwVVXpfzSyZOX55vrJ0zwfxrIUrFFj7J8JkoRkbSkoC6Sq5yDVasimUP9qad8//PFF6f80sk1dKhf2XXWrKgrCU2nTrBpU1a34ouIpC0FdZFctXYt7NiR8hH1TZvgxRfhkkugefOUXjr5Bg/2CyBlcftLp05+u3x5tHWIiOQiBXWRXBXRYkdjx8K338LVV6f0suFo1w7698/qoJ6f77crVkRbh4hILqo2qJtZMzOrF3x9uJmdZ2YNwi9NREIV0WJHTz7pbyA98cSUXjY8Q4fCjBm+BSYLaURdRCQ6iYyoTwYam1k+MBG4Cng6zKJEJAViQT2FPeqff+6nHr/ySt8xkhWGDvXbN96Ito6QxP7zUFAXEUm9RIK6Oec2AxcAf3bOnQ8cHW5ZIhK6CEbUx4zx28svT9klw9e7t/8ZZmn7S6NGvsNHrS8iIqmXUFA3swHAZUDs/0R54ZUkIilRWgoHHABNmqTskuPGwfHH71maPiuYwZAh8Oab/ubcLNSpk0bURUSikEhQvw24CxjnnJtvZocC74ZbloiELsVzqJeUwMyZcP75Kbtk6gwd6ucvfP/9qCsJhYK6iEg04gZ1M6sPnOucO885998AzrkvnHO3pqQ6EQlPioP6uHF+m5VB/TvfgQYNsrb9RUFdRCQacYO6c64c6JuiWkQklVauTOmNpOPGwbHH+hlfsk6LFnDqqVkb1PPzYd062LIl6kpERHJLIq0vH5vZeDO73MwuiD1Cr0xEwuNcSkfUV6+GKVPggmz+l2PoUPj0U1i6NOpKki42RaNuKBURSa1EgnobYC1wOnBu8DgnzKJEJGTr18PWrSkL6uPH+88GWR/Uwb/ZLKO51EVEolHt7C3OuatSUYiIpFCKp2b85z+ha1fo2TMll4tG9+7Qqxe8+CLcdlvU1SSVRtRFRKJRbVA3s8bANcAxQOPY8865bFgAXCQ3pXCxow0bYOJE+MEPsmiRo6qMGAF33QXLlkFBQdTVJE1+vt9qRF1EJLUSaX35O9AROAt4D+gEbAyzKBEJWQpH1CdMgO3bs7ztJebSS/32pZeirSPJmjf3U+4rqIuIpFYiQb2bc+5XwCbn3DPAUKBHuGWJSKhKS/02BUF93Djo2NEvdJT1unaF447bswRrFtEUjSIiqZdIUI8ttbfezI4FDgAKQqtIRMK3ciU0a+anFQzRli1+RH34cKiXyL822WDECPj4Y1i0KOpKkio/Xz3qIiKplsj/Oh8zs9bAL4HxwALggVCrEpFwpWgO9YkTYdOmLF3kqCoXX+yb8V98MepKkkoj6iIiqVdtUHfOPe6c+8Y5N9k5d6hzrr1z7tFUFCciIUnRHOpvvw1Nmvi1gHJGfj6ccgqMHu3npMwSnTrBqlWwY0f1+4qISHJUGdTN7HYzu6aS539gZj8MtywRCVVpaUqC+qRJcMIJ0KhR6JdKLyNGwMKFMHdu1JUkTadOe9bJEhGR1Ig3on41fsaXfT0WvCYimSoFI+pr18Inn8Bpp4V6mfR04YVQv35W3VQam6JRfeoiIqkTL6g759z2Sp7cBmT7bMgi2WvjRt84HnKP+uTJfjtwYKiXSU/t2sF3vuODepa0v2h1UhGR1Ivbo25mHRJ5TkQySIrmUJ80CZo2hX79Qr1M+hoxApYuhRkzoq4kKRTURURSL15Q/x3wmpmdamYtgsdA4P+AB1NSnYgkX4qC+rvvwoknQsOGoV4mfQ0f7t98lrS/tG7tbwxW64uISOpUGdSdc88CvwJ+DSwDlgL/D7g7WPhIRDJRChY7WrPG30eZk20vMa1awdln+2kad+2Kupo6M/N96hpRFxFJnbitL865151zpzrn2jrnDgy+fj1VxYlICFIwov7ee36b00EdfPtLaSlMnRp1JUmhudRFRFIrV9YKFJGYlSuhcWM/4huSnO9Pjzn3XP+DGD066kqSQkFdRCS1FNRFck1sakYLb/KmSZPgpJOgQYPQLpEZmjXzvepjxsCWLVFXU2edOvk/EGRBJ4+ISEaIt+DRbcH2xNSVIyKhC3mxo7IymDdPbS+7ff/7sH49/POfUVdSZ/n5fmXSsrKoKxERyQ3xRtSvCrZ/TkUhIpIiIS92FOtPz8mFjipz6qlw2GHw+ONRV1JnmqJRRCS14gX1T81sGXCEmc2p8JhrZnNSVJ+IJNvKlaEudjRpku/46Ns3tEtklnr14Jpr/A9m8eKoq6mTWFDXFI0iIqkRb3rGkcDxwBLg3AqPc4KtiGSazZthw4ZQR9TffVf96fsZNQrq14cnn4y6kjrJz/dbjaiLiKRGddMzrnLO9QJWAi2CR6lzriQVxYlIkoU8NePq1bBggdpe9nPwwTB0KDz9tG/yzlDt20NenoK6iEiqVDvri5mdCiwGHgb+CnxmZqeEXZiIhCDkoK750+O45hpYtQomTIi6klqrX99/5lBQFxFJjUSmZ/wDcGaw2NEpwFnAH8MtS0RCEQvqIfWof/QRNGoEvXuHcvrMNmSI/4D0xBNRV1InnTqpR11EJFUSCeoNnHOLYt845z4D1H0qkolCHlGfORN69YKGDUM5fWbLy4Mrr4TXXsvopJufrxF1EZFUSSSoF5vZE2Y2MHj8DZgZdmEiEoKVK/1dnm3bJv3Uu3b5oF5UlPRTZ4+rr/Y/qGeeibqSWoutTupc1JWIiGS/RIL6jcB84FbgNmABcEMiJzezwWa2yMyWmNmdlbxuZvZQ8PocM+tT3bFm1sbM3jKzxcG2dYXX7gr2X2RmZ1VyvfFmNi+R2kWyUmkpdOwYyqqkixfDxo0K6nF16+bvtH3iiYxd3jM/f8/kQSIiEq5qg7pzbptz7g/OuQucc+c75/7onNtW3XFmVh9/A+rZwNHASDM7ep/dzga6B4/rgEcSOPZOYKJzrjswMfie4PURwDHAYOCvwXli9VwAfFtd3SJZLcTFjoqL/Vbzp1fj+9+HL77w86pnoNgUjRncvSMikjESGVGvrf7AEufcF8657cAYYNg++wwDnnXeNKCVmR1UzbHDgNjfjZ8Bhld4fkzwwWIpfv73/gBm1hy4HbgvjDcqkjFCXOxo5kxo3BiO3vfjuOztggugdeuMXalUQV1EJHXCDOr5wFcVvl8ePJfIPvGO7eCcWwkQbNsncL17gd8Dm+MVbGbXmVmxmRWXlZXF21UkM4U8ot67t79nUuJo3Bi+9z14+WVYsybqampMQV1EJHXCDOqVNcHue/tRVfskcmxC1zOzQqCbc25cNcfjnHvMOVfknCtq165ddbuLZJZt22Dt2lCCenk5zJql/vSEXXcdbN8OTz0VdSU1FvuDjIK6iEj4Elnw6HAz+5uZ/dvM3ok9Ejj3cuCQCt93AkoT3CfesV8H7TEE29XVnGsA0NfMlgFTgcPNbFIC9Ytkl1Wr/DaEoL5oEWzapKCesGOPhVNOgUceybibShs39pMGKaiLiIQvkRH1fwCzgF8CP63wqM4MoLuZdTWzhvgbPcfvs8944Ipg9pfjgQ1BO0u8Y8cDo4KvRwGvVnh+hJk1MrOu+BtUpzvnHnHOHeycKwBOAj5zzg1MoH6R7BLiYkczgwlbdSNpDdx8MyxdCm+8EXUlNZafr6AuIpIKiXST7nTOPVLTEzvndprZLcCbQH3gSefcfDO7IXj9UWACMAR/4+dm4Kp4xwan/i3wkpldA3wJL4SmLwAAIABJREFUXBwcM9/MXsJPH7kTuNk5V17TukWyVoiLHRUXQ9OmcOSRST919ho+3E+V+de/+lVLM4iCuohIaiQS1P/PzG4CxgG7p2V0zq2r7kDn3AR8GK/43KMVvnbAzYkeGzy/FhhUxTH3A/fHqWcZcGx1dYtkpdKgeyykoN6nD9SvX/2+EmjYEK69Fu67z4+sd+0adUUJy8/39ySIiEi4Eml9GYVvdfkAvyLpTKA4zKJEJAQrV0K9epDkG6V37oSPP1Z/eq1cd53/nTz6aPX7ppH8fPj6a38/rIiIhCeRBY+6VvI4NBXFiUgSrVzpWy2SPOy9cCFs2aL+9Frp1AmGDfMrlW7dGnU1CYtN0RjrphIRkXAkMutLAzO71czGBo9bzKxBKooTkSQKaQ712IqkGlGvpZtu8tNm/uMfUVeSMM2lLiKSGom0vjwC9AX+Gjz6Bs+JSCYpLQ0tqDdvDocfnvRT54bTT4cjjvA3lWYIBXURkdRIJKj3c86Ncs69EzyuAvqFXZiIJFmII+p9+/pWa6kFMz+qPm1axtyh2amT3yqoi4iEK5H/tZab2WGxb8zsUEDTHopkkp07oaws6UF9xw745BO1vdTZFVf4+S0zZFS9TRto1EhBXUQkbIkE9Z8C75rZJDN7D3gH+HG4ZYlIUn39NTiX9MWOFizw90DqRtI6atUKLrsMXngBvvkm6mqqZaa51EVEUiGRWV8m4lf5vDV4HOGcezfswkQkiUJa7EgrkibRzTf76XOefjrqShKioC4iEr4qg7qZnR5sLwCGAt2Aw4ChwXMikilCWuxozhzfsdGtW1JPm5t69YIBA+B//9f/9SPNKaiLiIQv3oj6qcH23Eoe54Rcl4gkU0gj6vPmwTHH6EbSpLnhBli0CN5N/z9axoJ6BnymEBHJWHlVveCcuzv48tfOuaUVXzOzzFnrWkR8UDeDDh2Setp582DIkKSeMrddcgn86EfwyCN+2sY0lp/v70/45ht/c6mIiCRfIuNgL1fy3NhkFyIiIVq5Etq1gwbJW6usrMzfo3rssUk7pTRuDFddBa+8kvbLfmoudRGR8MXrUT/SzC4EDjCzCyo8rgQap6xCEam7EBY7mj/fb3v0SOpp5frr/XSaTzwRdSVxKaiLiIQv3oj6Efhe9Fbs3Z/eB7g2/NJEJGlCWOxo3jy/1Yh6knXvDt/5Djz2GJSn75IVCuoiIuGL16P+qpn9C7jDOfdfKaxJRJJt5Uo/q0gSzZvne5M7dkzqaQXgxhvhwgvhtdfgvPOirqZSsSn5FdRFRMITt0fdOVcOnJGiWkQkDOXlvpk8hBH1Y4/196hKkp13nk/CjzwSdSVVatjQ3/agoC4iEp5Ebib9wMz+YmYnm1mf2CP0ykQkOcrKfFhPYlB3bk9QlxDk5cG118Kbb8IXX0RdTZU0l7qISLgSCeonwP/f3p3HSVGd+x//PAw7yiogArIrggsqosaYuGDYVPCqCd4YjUuMGqPebFezmMRc8zOJWTQajRrjEiMa40IURVyiguygsgsDCAMoKIgoyDKc3x9PdRhxZujpruptvu/Xq141011VfaYYZr5z+pzn0B+4HvhttN2UZKNEJEYJ1FBftQo2blRQT9TFF3uB+jvvzHdLatS5M1RU5LsVIiKlq8Yx6ikhhBNz0RARSUgCQV0TSXOgSxc47TSv/vLzn0OTJvlu0Wd07gxTp+a7FSIipWuPPepm1srMfmdmM6Ltt2bWKheNE5EYpIJ6avZfDFJBvX//2C4p1bnsMnjvPfhndctZ5F/nzt68rVvz3RIRkdKUztCXe4BNwJej7UPgr0k2SkRilArqMZZnmTvXc79WpEzY4MHQqxf8+c/5bkm1UiUaV6/ObztEREpVOkG9VwjhpyGEpdH2c6Bn0g0TkZisXu2JOsahE5pImiMNGsBFF8Err8CSJfluzWd06eJ7TSgVEUlGOkF9i5l9PvWJmR0HbEmuSSISq5gXO6qshPnzFdRz5rzzPLDfe2++W/IZWvRIRCRZ6QT1y4DbzGy5mb0N3Ap8M9lmiUhs1qyJdXz6smWwZYuCes507gxDhsB99xXcSqUK6iIiydpjUA8hvB5COAw4FDgkhHB4COHN5JsmIrFYvVoVX4rdBRd4HcTnn893Sz6ldWto1kxBXUQkKelUfWlnZrcA/wZeMrObzaxd4i0Tkezt3Ok96qmuzxikgnq/frFdUvbk9NN9nsFfC2sev5kWPRIRSVI6Q1/GAOuAM4Gzoo8fTrJRIhKTtWthx47Yg3rPntCiRWyXlD1p0gS++lV4/HFYvz7frfkUBXURkeSkE9TbhhB+EUJYFm3/B7ROumEiEoNU3byYg7qGveTBhRfCtm3w0EP5bsmnKKiLiCQnnaD+kpmNNrMG0fZl4OmkGyYiMUglqJgmk27bBosWKajnxYABvt1zT75b8impoB5CvlsiIlJ60gnq3wT+DmyLtjHAd8xsk5l9mGTjRCRLqaAeU4/6okU+kkZBPU8uvBBmzYI3C2c+f5cu/gfce+/luyUiIqUnnaove4cQGoQQGkZbg+ixvUMILXPRSBHJ0OrVXoO7Y8dYLqeKL3n23/8NjRsX1KTSrl19X1GR33aIiJSidHrUMbPTzeymaDs16UaJSExWrfKQ3rBhLJebPx/KyuCAA2K5nNRVu3ZeAeZvf/Nu7AKQWp105cr8tkNEpBSlU57xRuAqYH60XRU9JiKFbtWqWCeSLlzoFV+aNIntklJXF17o40yeeirfLQF2BXX1qIuIxC+dHvXhwCkhhHtCCPcAQ6PHRKTQJRDU+/aN7XKSiS99yScHF8ik0g4d/A0bBXURkfilNfSFT5djbJVEQ0QkAatXxxbUKyvhrbcU1POurAzOPx+eeQbeeSffraGszP9uUFAXEYlfOkH9/wGzzexeM7sPmAn8MtlmiUjWtmzxxXFiKs24fLkPi1ZQLwDnnuurzj76aL5bAvjwFwV1EZH41RrUzcyAicAxwGPRdmwIYUwO2iYi2Yh5saOFC32voF4A+vWDQw6BMYXxo7hrVwV1EZEk1BrUQwgBeCKEsCaEMDaE8GQIIf/vtYrIniUU1A88MJbLSbZGj4ZJk2DFiny3hC5dvOqLFj0SEYlXOkNfppjZUYm3RETiFfOqpAsXQvv2XiFQCsBXvuL7hx/ObzvwoP7JJz7SSkRE4pNOUD8RD+vlZvammc0xs8JZFk9EqhfzqqSq+FJgevWCQYMKYviLSjSKiCQjnaA+DOgJnAScBpwa7UWkkK1aBc2bQ6t4CjUpqBeg0aNh1iwvx5NHCuoiIsmoMaibWVMzuxr4Pl47fVUI4e3UlrMWikhmUqUZzbK+1Hvv+aagXmC+/GX/981zr7qCuohIMmrrUb8PGAjMwXvVf5uTFolIPFatim18+qJFvj/ooFguJ3Hp3Bm+8AV46KG8zuTs1MnrqSuoi4jEq7ag3i+EcG4I4c/AWcDxOWqTiMQhxlVJVZqxgI0e7f9Ac+bkrQllZR7WV67MWxNEREpSbUF9e+qDEMKOHLRFROISQqyrki5cCE2bwv77x3I5idOZZ3pSfuihvDZDix6JiMSvtqB+mJl9GG2bgENTH5vZh7lqoIhkYP162Lo11tKMBxzgeVAKTPv2MHiwj1PP4/AXBXURkfjVGNRDCGUhhJbRtncIoWGVj1vmspEiUkcqzVi/nHMOLF8O06blrQmpoK5Fj0RE4pNOeUYRKTYxBvWtW2HpUgX1gjZqFDRunNfhL127wscfw8aNeWuCiEjJUVAXKUWrV/s+hqC+ZAns3KmgXtBatYLhw+GRR6CyMi9NSJVo1IRSEZH4KKiLlKJUj3qnTllfShVfisQ558CaNfDKK3l5edVSFxGJn4K6SClatconGTZunPWlUkH9gAOyvpQk6dRToVkzeOyxvLy8grqISPwU1EVKUcw11PffH1q0iOVykpTmzWHIEHjiibzM6OzUyRdJVVAXEYmPgrpIKVq9OtbSjBr2UiRGjfKkPHNmzl+6USPYd18FdRGROCmoi5SimHrUQ1BQLyqnnurF7p94Ii8v37WrgrqISJwU1EVKzbZtsHZtLEF99Wr46CMF9aLRrh184Qvw+ON5efkuXVT1RUQkTgrqIqXmnXd8H0NQX7DA9wrqRWTUKJg/H956K+cvrdVJRUTipaAuUmpSpRljGKOu0oxFaORI3z/5ZM5fuksX2LQJPvww5y8tIlKSFNRFSk2Mq5IuWgR77+2TBKVIdOsGhx+el3HqKtEoIhIvBXWRUhNzUD/wQC+7J0XkjDNg8uRdw6ByREFdRCReCuoipWb1al/oqF27rC+VCupSZEaN8pI9Y8fm9GW7dvW9grqISDwU1EVKzapVPj49y27wzZthxQoF9aJ08MHQs2fOh7+kpkWo8ouISDwSDepmNtTMFpnZEjO7pprnzcxuiZ5/08yO2NO5ZtbWzCaY2eJo36bKc9dGxy8ysyFVHn/WzN4ws3lmdoeZlSX5dYvkVUw11Bcv9r2CehEy8+EvL7yQ05mdjRtDx47qURcRiUtiQT0Kw7cBw4B+wDlm1m+3w4YBfaLtEuD2NM69BnghhNAHeCH6nOj50UB/YCjwpyqB/MshhMOAg4H2wNmxf8EihSKmoL5oke8V1IvUqFFeU/+ZZ3L6sirRKCISnyR71AcBS0IIS0MI24AxwMjdjhkJ3B/cFKC1mXXaw7kjgfuij+8DRlV5fEwIYWsIYRmwJLoOIYRUl1JDoDEQYv5aRQpDCD5GPYbSjKmg3qdP1peSfDj2WGjfPufDXxTURUTik2RQ7wxUHalYET2WzjG1ndsxhLAGINp3SOf1zGw8sBbYBDxaXYPN7BIzm2FmM9atW7enr0+k8Hz4IXz8cWw96vvvD82bx9Auyb2yMq+p/vTTsHVrzl5Wq5OKiMQnyaBe3Uy23XuyazomnXPr9HohhCFAJ6AJcFJ1Fwgh3BlCGBhCGNi+ffs9vJxIAUqgNKMUsVGjfAWil17K2Ut27QobN2rRIxGROCQZ1CuArlU+7wKsTvOY2s59NxoeQ7Rfm+7rhRA+Acby2SE4IqVhdfQtn+XQlxAU1EvCySdDixbw+OM5e8lu3Xz/9ts5e0kRkZKVZFCfDvQxsx5m1hif6Ll7Ud+xwHlR9ZdjgI3RcJbazh0LnB99fD7wZJXHR5tZEzPrgU9QnWZme1UJ9g2B4cDCJL5gkbyLqUf9nXe8I1ZBvcg1bQpDh8JTT/lfXzmgoC4iEp/EgnoIYQdwBTAeWAA8EkKYZ2aXmtml0WHjgKX4xM+7gMtrOzc650bgFDNbDJwSfU70/CPAfOBZ4FshhEqgBTDWzN4E3sB74O9I6usWyauYgnpqIukBB2TZHsm/ESP8nZY33sjJy3Xv7nsFdRGR7DVM8uIhhHF4GK/62B1VPg7At9I9N3r8feDkGs65Abhht8feBY6qa9tFitKqVdCmDTRrltVlVJqxhAwb5vtx42DAgMRfrmNHr6euoC4ikj2tTCpSSmIszdis2a4l4aWI7bsvHHmkV3/JgQYNvFqQgrqISPYU1EVKSYyLHfXp46FLSsCIETBlCrz/fk5erls3BXURkTjo17BIKYkxqGvYSwkZPhx27oTx43PycgrqIiLxUFAXKRWVlV6uJcuhL1u3wrJlCuol5aijfJXSHA1/6dbNvxU/+SQnLyciUrIU1EVKxbvveq9plj3q5eV+GQX1EtKggU8qffZZ/4MuYakSjVqhVEQkOwrqIqWiosL3WQb1t97yvYJ6iRk+HNavh6lTE38p1VIXEYmHgrpIqVixwveplJQhlWYsUUOGQFlZToa/KKiLiMRDQV2kVKTGGWRZU3HRIq/o17JlDG2SwtG6NRx3XE6CepcuPtpGQV1EJDsK6iKlYsUKaNHCFzzKgiq+lLDhw32F0tQKtglp1MjnNC9fnujLiIiUPAV1kVKxYoWvNGOW1WUU1EvYiBG+H/eZRZ9jpxKNIiLZU1AXKRWpoJ6F99/37YADYmqTFJb+/X1oVA6Gv3TvrqAuIpItBXWRUhFDUNdE0hJn5r3qzz/vBfMT1K2bFyLasSPRlxERKWkK6iKl4JNPYO3aWCaSgoJ6SRsxAj7+GF55JdGX6dbNS7avXp3oy4iIlDQFdZFSkKqhHkOPeqNG0KNHDG2SwnTiidCkSeLDX1SiUUQkewrqIqUgVUM9y6C+cCH06QMNG8bQJilMLVp4WE94QqmCuohI9hTURUpBjEG9b98Y2iOFbcQIWLzYt4SkvhUV1EVEMqegLlIKUkG9S5eML7FtGyxZoqBeLwwd6vvx4xN7iebNoX17BXURkWwoqIuUghUrfDnRJk0yvkR5uU/+U1CvB3r3hl69Eg3qoFrqIiLZUlAXKQUrV2Zd8WXhQt8fdFAM7ZHCN2QIvPhiomUaFdRFRLKjoC5SCmKooZ4K6irNWE8MHQqbN8PEiYm9RLdu/q0ZQmIvISJS0hTURYpdCLEF9c6dYe+9Y2qXFLYTT/RanAkOf+nWDbZsgXXrEnsJEZGSpqAuUuzWr/eeUVV8kbrYay84/nh49tnEXkIlGkVEsqOgLlLsYijNGAIsWKCgXu8MGQJz5sCqVYlcvnt33y9fnsjlRURKnoK6SLFbudL3WQT1NWtg0yZNJK13Ei7TqB51EZHsKKiLFLtUj3oWVV9SE0nVo17PHHIIdOqUWFBv3RpatlRQFxHJlIK6SLFbscLrp7dvn/ElFNTrKTPvVZ8wAXbsSOQlVKJRRCRzCuoixW7FCu9Nb5D5f+eFC31u4X77xdguKQ5DhsCGDTB9eiKXV1AXEcmcgrpIsYuhNGNqIqlZTG2S4jF4sP+Rl1D1FwV1EZHMKaiLFLuYaqhrImk91a4dDBqU2Dj17t1h40bvtBcRkbpRUBcpZtu3e8mWLCaSbtoEFRUan16vDR0K06bB++/HfunevX1fXh77pUVESp6CukgxW70adu7Mqkf9rbd8r6Bejw0d6sX0J0yI/dKpoL5kSeyXFhEpeQrqIsUshsWOVPFFGDgQ2rZNZPhLz56+V1AXEak7BXWRYhZTUC8r29XzKfVQWRmccopPKA0h1ks3bw6dOyuoi4hkQkFdpJjFsNjRggXQqxc0bhxTm6Q4DR0K77wDb74Z+6V791ZQFxHJhIK6SDFbudKrdrRokfElFi7UsBfB66lDImUaFdRFRDKjoC5SzFKLHWVoxw5YvFhBXYBOneDQQxMZp967N7z7rlcYEhGR9CmoixSzLGuoL18O27YpqEtk6FCYODH2RK0SjSIimVFQFylmWQZ1VXyRTxkyxGvzv/RSrJft08f3Gv4iIlI3CuoixWrjRt+yCOoLFvheQV0AOO44n+8Q8/CXXr18r6AuIlI3CuoixWrlSt9nEdTnz4eOHaFNm5jaJMWtSRM46aTYJ5TutRfsu6+CuohIXSmoixSrGIL63LlwyCExtUdKw5AhsHRp7KlalV9EROpOQV2kWGVZQ33nTu9RP/jgGNskxW/oUN/H3KuuoC4iUncK6iLFasUKX1GyU6eMTl++HDZvVlCX3fTq5ak6gaC+apV/z4mISHoU1EWK1YoV0KWLh/UMzJ3r+/79Y2yTlIYhQ7zyy9atsV0yVaJx6dLYLikiUvIU1EWKVZalGVNBvV+/mNojpWPoUO/6njgxtkumgrqGv4iIpE9BXaRYrVyZdVDv1g1atoyxTVIaTjgBGjWKtUyjSjSKiNSdgrpIMaqshIqKjCeSggd1jU+Xau21Fxx/fKzj1Fu3hn32UVAXEakLBXWRYvTuu76CZIY96tu3+6qkCupSo6FDYc4cnwEaE1V+ERGpGwV1kWKUKs2YYVBfvNjDuoK61GjIEN8/91xsl1RQFxGpGwV1kWKUZVCfN8/3CupSo0MO8dKfMQ5/6d3bv3VjLCYjIlLSFNRFilGWQX3uXGjQAPr2jbFNUlrMvFd9wgSfExGD3r0hBFi2LJbLiYiUPAV1kWK0bBm0auVbBubO9dDUtGnM7ZLSMnQobNgA06fHcjmVaBQRqRsFdZFiVF6+q95dBlTxRdIyeLC/9RLT8BcFdRGRulFQFylGS5dmHNS3bPGgpKAue9SuHRx1VGxBvW1bL9OooC4ikh4FdZFiU1kJy5dnHNQXLoSdOxXUJU3Dh8O0abBuXdaXMlPlFxGRulBQFyk2K1d6bcUMg/rcub5XUJe0DB/uM0BjWqVUQV1EJH0K6iLFprzc91kE9caNd40XFqnVEUdAx44wblwsl+vd298Q2r49lsuJiJQ0BXWRYpNlUJ83z8syNmoUY5ukdDVoAMOG+Tj1GMo0HnigX2bx4hjaJiJS4hTURYpNebl3iXfunNHpc+dC//4xt0lK2/DhXqZx6tSsL5UacpUagiUiIjVTUBcpNuXl0KMHlJXV+dQPP4S339b4dKmjU07x77cYhr/07eud9KnVcUVEpGaJBnUzG2pmi8xsiZldU83zZma3RM+/aWZH7OlcM2trZhPMbHG0b1PluWuj4xeZ2ZDoseZm9rSZLTSzeWZ2Y5Jfs0jisqihPn++7xXUpU5at4bjjoOnn876Uk2b+jh1BXURkT1LLKibWRlwGzAM6AecY2b9djtsGNAn2i4Bbk/j3GuAF0IIfYAXos+Jnh8N9AeGAn+KrgNwUwihL3A4cJyZDYv/KxbJgRCyCuqq+CIZGz4cXn8dVq3K+lL9+2voi4hIOpLsUR8ELAkhLA0hbAPGACN3O2YkcH9wU4DWZtZpD+eOBO6LPr4PGFXl8TEhhK0hhGXAEmBQCGFzCOElgOhas4AuSXzBIol77z3YtCnjoD5nDjRvDt27x9ssqQdGjPB9DIsfHXywl2j85JOsLyUiUtKSDOqdgZVVPq+IHkvnmNrO7RhCWAMQ7Tuk+3pm1ho4De+J/wwzu8TMZpjZjHUxLO4hErtUxZeePTM6ffZsGDDAxwiL1En//tC1ayzj1Pv398ovixbF0C4RkRKW5K9rq+axkOYx6Zxbp9czs4bAQ8AtIYSl1V0ghHBnCGFgCGFg+/bt9/ByInmQRWnGnTs9qB9xxJ6PFfkMMx/+MmECbNuW1aVSQ680Tl1EpHZJBvUKoGuVz7sAq9M8prZz342GxxDt16b5encCi0MIf6jzVyJSKFJBvUePOp+6ZAl89JGCumRh+HAfejVpUlaX6dMHGjbUOHURkT1JMqhPB/qYWQ8za4xP9By72zFjgfOi6i/HABuj4Sy1nTsWOD/6+HzgySqPjzazJmbWA5+gOg3AzP4PaAVcncQXKpIz5eVeP71ZszqfOmuW7xXUJWMnneQ1/LOs/tK4sS98pB51EZHaJRbUQwg7gCuA8cAC4JEQwjwzu9TMLo0OGwcsxSd+3gVcXtu50Tk3AqeY2WLglOhzoucfAeYDzwLfCiFUmlkX4Ed49ZhZZva6mV2c1NctkqilSzOeSDprlgekfrvXXhJJ1157wQknxDZOXT3qIiK1a5jkxUMI4/AwXvWxO6p8HIBvpXtu9Pj7wMk1nHMDcMNuj1VQ/fh1keJTXg5Dh2Z06qxZcOih0KhRzG2S+mX4cLj6ali2LKMhWCkHHwz/+Ad8/DG0aBFj+0RESohqP4gUi82bYc2ajHrUQ/CgrmEvkrXhw33/zDNZXaZ/f/++XLAghjaJiJQoBXWRYrE0KlaUQVB/+23YsEFBXWLQp48vLZrl8BdVfhER2TMFdZFikUVpRk0klVgNHw4vvghbtmR8iV69oEkTjVMXEamNgrpIscgyqJeVwSGHxNwmqZ9OPdVD+vPPZ3yJsjLo21c96iIitVFQFykW5eXQujW0bVvnU2fN8jHBTZsm0C6pf774RWjVCp54IqvLHHywetRFRGqjoC5SLMrLM55IOnOmhr1IjBo3hhEj4F//gsrKjC/Tvz+sXAkffhhj20RESoiCukixyDCor1kDa9cqqEvMRo6Edetg8uSML6EJpSIitVNQFykGO3bA8uWaSCqFY+hQ71nPYvhL//6+V1AXEamegrpIMVi50sN6hkHdDA47LIF2Sf3VsiWcdJIH9RAyukT37tC8ucapi4jUREFdpBhkWfHlwAN99XeRWI0a5d+b8+dndHqDBtCvn3rURURqoqAuUgyyDOoa9iKJOP1032cx/EWVX0REaqagLlIMli711WE6d67TaevW+agZBXVJRKdOcPTR8OSTGV/i4IPhnXf8e1VERD5NQV2kGJSXQ48ePlagDmbP9r2CuiRm1CiYPh0qKjI6/cgjfT9jRoxtEhEpEQrqIsWgvBx69qzzaamKL4cfHnN7RFJGjvT92LEZnX7kkT7Zedq0GNskIlIiFNRFCl0IGddQnzrVT2vdOoF2iQD07QsHHJDx8Je99/YJpQrqIiKfpaAuUujeew82bapzUA8BJk2C445LqF0i4N3ho0bBiy/CBx9kdIlBgzyoZ1jlUUSkZCmoixS6DCu+LFniE/QU1CVxI0d6nf9nnsno9KOP9r9Hly+Pt1kiIsVOQV2k0GUY1CdN8r2CuiTu6KOhY8eMh78MGuR7DX8REfk0BXWRQlde7sMLevSo02mTJvnY9IMOSqhdIillZXDaaTBuHGzdWufTDz4YmjZVUBcR2Z2CukihKy/3+ulNm9bptEmT4HOfq3NFR5HMjBrlcylefLHOpzZq5CVEFdRFRD5Nv8JFCl0GFV/efx8WLNCwF8mhk0/2Ei6PPprR6YMGwcyZPtRdREScgrpIoVu0CPr0qdMpr73m+89/PoH2iFSnaVM44wx47LGMhr8MGgRbtsC8eQm0TUSkSCmoixSydeu8HEb//nU6bdIkH05w1FEJtUukOqNHe4nG8ePrfKomlIqIfJaCukghS3UvZhDUjzgCmjVLoE0iNRk8GNq1gzFj6nxqz57Qtq2CuohIVQrqIoUsg6C+dStMn67x6ZIHjRrBWWd5mcaPP67TqWa7Fj4SERGnoC5SyObN8xqLnTqlfcqsWR5h4SToAAAgAElEQVTWFdQlL0aPhs2b4amn6nzqoEEwd26dM76ISMlSUBcpZPPmeW+6WdqnaKEjyavjj/c/LDMY/jJoEOzc6X9sioiIgrpI4QphV1Cvg0mTvJpjx44JtUukNmVl8JWv+OJHGzfW6dTU5GcNfxERcQrqIoVq7VoviN6vX9qnhOBBXb3pklejR8O2bfD443U6rUMH6N5dQV1EJEVBXaRQZTCRdPFir+io+umSV4MGQY8eGQ9/UVAXEXEK6iKFKoOgrvHpUhDMvFf9+ef9L8c6GDQIli+Hd95JpmkiIsVEQV2kUM2bB23awL77pn3Kq6/6KX37JtgukXSMHg2VlfDoo3U67YQTfP/SS/E3SUSk2CioixSqOlZ8CQGeew5OPhka6H+25Nshh/j8ijoOfxkwwBc+ev75hNolIlJE9OtcpBBlUPFl3jxYtQqGDk2wXSLpSg1/efVVqKhI+7SyMjjxRJgwwf8biIjUZwrqIoXonXdgw4Y6BfXx430/ZEhCbRKpq9GjPW0/8kidThs8GFauhCVLEmqXiEiRUFAXKUTz5/u+DkH92Wf98C5dEmqTSF316QNHHgl/+1udThs82Pca/iIi9Z2CukghqmPFl48/hlde0bAXKUBf/zrMnl2n5UZ79YJu3RTURUQU1EUK0bx50K6drwCThn//29eXUVCXgvPVr0LTpnD33WmfYua96i++6IVjRETqKwV1kUI0b55XzEiz4suzz0Lz5lroSApQmzZw9tnw4IP+1k+aBg+GDz6oU0e8iEjJUVAXKTQZVHwZP97rTzdtmlyzRDJ28cXw4Yd1qql+0km+nzAhoTaJiBQBBXWRQrNmjXclphnUy8th8WINe5ECdvzxcMABcNddaZ/SoQMcdpjGqYtI/aagLlJo6jiRNFWWUUFdCpaZ96pPmrSrolEaBg/2UzZvTrBtIiIFTEFdpNDUMag/+yz07Am9eyfYJpFsnX8+NGoEf/lL2qcMHuyTpCdOTLBdIiIFTEFdpNDMmwf77JNWxZetW70yxpAhac87FcmPDh1g5Ei47z7/xk3D8cd7ttfwFxGprxTURQpNHSaSTprkhTQ07EWKwsUXw/vvw5NPpnV4ixZw7LEK6iJSfymoixSSOlZ8efZZ73E88cSE2yUSh1NO8ZWM6jCpdPBgXy9p7doE2yUiUqAU1EUKyapVXsYujaAeAvzzn16Wce+9k2+aSNYaNIALL/Qu8qVL0zrl1FN9n2YnvIhISVFQFykkqYoYaQT16dM965xzTsJtEonTBRd4YL/nnrQOHzAAevWqUwl2EZGSoaAuUkhSFV/69dvjoQ89BI0bwxlnJNwmkTh17eqTKu65B3bs2OPhZnDWWfDCCz68XUSkPlFQFykk8+ZB+/a+1aKyEh5+GIYNg9atc9Q2kbhceqkv7PWPf6R1+Nln+/e8hr+ISH2joC5SSNKcSPrqq55zNOxFitKIEXDggfCb3/hkiz044gjo3j3tXC8iUjIU1EUKRQg+Rj2NoP7QQ166LjXRTqSoNGgA3/uel3N58cU9Hm7mverPPw/r1+egfSIiBUJBXaRQVFSkVfFl2zafWHf66R7WRYrSuedCx47eq56Gs8/2Ie1jxybcLhGRAqKgLlIoZs70/YABtR42YYL3KmrYixS1pk3hyith/Hh44409Hj5woJdg1/AXEalPFNRFCsXUqb560eGH13rYmDHQpg0MGZKjdokk5bLL/G2hm27a46Gp6i8TJsAHH+SgbSIiBUBBXaRQTJkChx3mPY012LwZnngCzjzTSzOKFLU2beAb3/C/Pleu3OPhZ58N27dr+IuI1B8K6iKFoLISZsyAo4+u9bCnn4aPPoLRo3PULpGkXX21T6T+wx/2eOigQV6GXYsfiUh9oaAuUgjmz/cEfswxtR72wAOw775wwgm5aZZI4rp1g698Be68c49jWlLDX8aPh40bc9Q+EZE8UlAXKQRTp/q+lh718nJ46im4+GIoK8tRu0Ry4fvf9z9U//znPR56zjle+eihh3LQLhGRPFNQFykEU6dC27bQu3eNh/zxjx7QL7ssh+0SyYUBA+CUU3z4y9attR46cKAf/uc/p7VWkohIUUs0qJvZUDNbZGZLzOyaap43M7slev5NMztiT+eaWVszm2Bmi6N9myrPXRsdv8jMhlR5/AYzW2lmHyX59YpkbOpUH4BrVu3TH34I99zjIwT22y/HbRPJhe9/H955B+67r9bDzOCSS+D113dVNBURKVWJBXUzKwNuA4YB/YBzzKzfbocNA/pE2yXA7Wmcew3wQgihD/BC9DnR86OB/sBQ4E/RdQD+BQxK4MsUyd6mTTB3bq3DXv76Vz/sqqty2C6RXBo82Odo/PznXt6oFv/939C8uQ9rFxEpZUn2qA8CloQQloYQtgFjgJG7HTMSuD+4KUBrM+u0h3NHAqkul/uAUVUeHxNC2BpCWAYsia5DCGFKCGFNMl+mSJZmzPD38GsI6pWVPuzlc5+Do47KcdtEcsUMfv1rWL0abr651kNbtfLKR3//u/8BKyJSqpIM6p2BqoVxK6LH0jmmtnM7pkJ3tO9Qh9erlZldYmYzzGzGunXr6nKqSOZSE0kHVf+mz9NP+0RS9aZLyTv+eDjtNLjxRnj//VoPveQS+PhjTSoVkdKWZFCvbrDt7lN/ajomnXMzeb1ahRDuDCEMDCEMbN++fV1OFcnc1KnQpw+0a1ft0zffDF26wBln5LhdIvlw441eAeaGG2o9bNAgOPRQDX8RkdKWZFCvALpW+bwLsDrNY2o7991oeAzRfm0dXk+ksITgQb2GYS9vvgkvvghXXAGNGuW4bSL50K8fXHAB3HYbLF9e42FmvqjpzJmaVCoipSvJoD4d6GNmPcysMT7Rc/eFn8cC50XVX44BNkbDWWo7dyxwfvTx+cCTVR4fbWZNzKwHPkF1WlJfnEgsKipgzZoag/rvfgfNmnkgEak3fvYzaNAAfvzjWg8791xo2hTuuis3zRIRybXEgnoIYQdwBTAeWAA8EkKYZ2aXmtml0WHjgKX4xM+7gMtrOzc650bgFDNbDJwSfU70/CPAfOBZ4FshhEoAM/u1mVUAzc2swsx+ltTXLVIntSx0NHeur0T6zW96iXWReqNLF7j6anjwQZg9u8bDWrf2kqUPPuijZURESo0FrRhRrYEDB4YZM2bkuxlS6r73Pbj1Vi+U3rjxp54aPhxee80nktYwfF2kdH3wAfTqBUceCc89V+NhU6d6Vcebb4Yrr8xh+0REYmJmM0MIA6t7TiuTiuTT1KlwxBGfCenPPw/PPAM/+pFCutRTrVv70JcJE3yrwdFHw3HHwe9/Dzt25LB9IiI5oKAuki/bt/ssuN2Gvezc6Ys0dusG3/52ntomUgguv9z/I3z3u7BtW42Hff/7Pu/00Udz1zQRkVxQUBfJl7lzYcuWzwT1v/3Nl0f/5S99opxIvdWkCdxyC8yZA7/6VY2HnXYaHHgg/OY3XkhJRKRUKKiL5Es1E0m3bPHhLgMH+sqLIvXe6af7f4Zf/ALmzav2kAYNfLrHrFlezlREpFQoqIvky9Sp0L49dO/+n4d+/3uv2HjTTR4+RATvVW/ZEi66CCorqz3k3HOhY0fvVRcRKRWKAiL5MmWKl6swX1R33jy4/noYNQq++MU8t02kkLRv72F96lTfV6NpU6/6Mn68LxQmIlIKFNRF8uGDD2Dhwv8Me9m6Fb76Ve80vOOOPLdNpBCdcw6ceqqPDSsvr/aQyy6DFi38HSkRkVKgoC6SD9On+z4K6j/5CbzxBvzlL/72vYjsxgxuvx0aNfKlequZNdqmDVx8MTz0EKxYkYc2iojETEFdJB8mT/bgcdRR/Pvf3gP4zW969QoRqUGXLj4I/aWX4O67qz3kO9/x/1o33pjjtomIJEArk9ZAK5NKoo47DrZv54PnpnHooT6+dvZsf9teRGoRApx8sq9BMHs29Oz5mUMuu8zfnVqyBPbfPw9tFBGpA61MKlJI3n8fpkxh57ARXHwxrF7ttdMV0kXSYOYpvKwM/uu/YPPmzxxy7bW+/+Uvc9w2EZGYKaiL5Npzz8HOnfxgySX885++jsugQflulEgR6dEDHnzQy7tccslnxqvvv7+PVb/nHnj77Ty1UUQkBgrqIrk2bhw3t/ghv/17J664wsfUikgdDRvm9UwffBBuvfUzT197rXe+q1ddRIqZgrpILlVW8s8nG/I/H/+CM86AP/zhP2XURaSufvhDX7n0O9+BV1/91FNdu+7qVV++PD/NExHJloK6SA5NvHshX910O8ce8D4PPujDbEUkQw0awP33+1CYs8/2CR9VXHutH6JedREpVgrqIjny0ksw7MredONtxj7dkGbN8t0ikRLQqhU8/jh89BGcdRZs2/afp7p08ZLrf/0rLFuWxzaKiGRIQV0kB5580ofUdmtQwUsDf0C73m3y3SSR0tG/v6fxyZPh/POhsvI/T117LTRsCNddl8f2iYhkSEFdJGH33w9nngmH9dvGy58MYr8zjs53k0RKz9lnewmlMWPgootg504AOneGq67yOadvvJHnNoqI1JGCukhCQoDf/c47+E44AV645BHasR6GD89300RK0w9+AD//Odx3H1x66X/C+v/+L7Ruvau+umQgBNi0CVasgNdfh4kTvTxmRYXXstfiiSKJaJjvBoiUoq1b4fLLveLEmWd6b16Tr42F/faDww7Ld/NEStdPfuL/AX/5S2jSBG65hTZtjB/+EL7/fZ8rcuKJ+W5kAfvkE5g7F2bN8pVfZ8/2Af7r18OOHTWf17gxtG0LBx0ERx/ti0MMGuRvaYhIxizor+BqDRw4MMyYMSPfzZAi9M47vmDi5MmeGX72M2hQuR3at/e35++6K99NFCltIXgq/+1v4bvfhd/8hk+2Gn36+N/KU6aoLOp/VFb6DRk3Dp591nvJU4G8VSs4/HA44ABo186DeJs2vm/RAj78EDZs8BC/YQOsW+fnv/EGbN/u1+jcGb7wBfjKV2DoUP/jSUQ+xcxmhhAGVvecetRFYjRjBowa5b+z/vEPL0IBwMTJsHGjhr2I5IIZ/OY3XgHmt78FM5r+6ldcf30DLrwQHnvM3+mqtzZtgn/9C55+2sP5+vVeK/Zzn/PhQ4cfDkcc4WUvM/mL5pNPfHjMtGkwdSqMHw8PPeTjj848E845x8cDqj6tyB6pR70G6lGXuggB7rwTrrwSOnXyKi+fGuFyzTU+YP2996Bly7y1U6ReCQGuuAL+9CcYOZLKex/g0OP2ZscOmDfPq8HUG9u3w4QJ8MAD/gNqyxZ/l2/YMBgxAk45xXvLk3rt55/3sJ4qpdmpk//bXHZZcq8rUiRq61FXUK+Bgrqk6+OP/XfNAw/AkCHwt7/BPvvsdtChh/ovxRdeyEsbReqtEODWW+F//gf69mXstycw8tJO3HorfOtb+W5cDsyeDffe6yF53ToftvKVr8BXvwrHHusrQuXSli0+zObuu703v0ULuOQSuPpq2H//3LZFpEAoqGdAQV3SsWiRv5M7f74Xm/jRj6r5vbdypf8CuukmHy8rIrn3wgtw9tkEjJO7LebNlW1ZvLhEO3M3bfIylXfe6ePxmjSB006Dc8/1HvTGjfPdQvfmm/5z8aGH/PNzzoEf/hD69s1vu0RyrLagrvKMIhkaMwYGDoR33/UhmD/5SQ2dU+PG+V7j00Xy5+STYfp0rNO+/P7NwaxfH/jF9SXWUTVrlpel3G8/76X+5BP44x9hzRqfNDNyZOGEdPB3Gu+/H8rL4dvf9skDBx8M3/wmrF6d79aJFAQFdZE6SpVePOccH4c+e7YP76zRuHHQvbt6iUTyrVcvmDyZw0Z04eJwF3+8uZK3xi/Ld6uy89FHPozkqKPgyCM9+J51Frz2mvdYX3FF4b9tsP/+Podn2TIfj/TXv0Lv3vDjH3tlGZF6TEFdpA6WLoXjjoPbb4fvfc9rMnfpUssJ773n4zBPP1314EQKQcuW8MQT/OLXTWkWNvO94fPgF7/wv8CLyZtveqjdbz/4xjd29Z6vXu1B99hji+9nTvv2cPPNsHCh9/7fcIP/cfXHP+4q9yhSzyioi6TpySe9Yll5OTzxhFd/a9RoDyfde6+XiPvGN3LRRBFJR4MGdPz+efz4R/Cvnacy4bpXYMAAeOWVfLesduvXw223ee/5YYfBX/7i9WAnTdrVe966db5bmb2ePX3c+vTpPjzmyiu9ZKQm40s9pKAusgfbt3vv+ahR0KePDwMdOTKNE3fuhD//GT7/eR93KSIF5aqftKRnT/hOt8fYsWU7fPGL/u7Xyy97tZhCsGOHD587++xdJQ137IA//MF7z++/3+ufF1vveToGDvSyjo8/Dps3w+DBPqxn+fJ8t0wkZxTURWpRUeHrcvz2t/4u88SJvgZIWl58EZYs8cldIlJwmjTxd8bmvr03t397vi8jPHmy/6cfNMh7dfMx5OKTT+Cpp+Cii2Dffb3O+b//7XVgZ8/27aqrvNRiqTPzXpL58+H//g+eeQYOOgh++lMP7yIlTuUZa6DyjPLMM3Deef478+67vfRwnZx1lv9yraiApk2TaKKIZCkEX9l+yhQfGt2p9Rbvpf7d7+Ctt3yi48UXe9Wmww9Pru74qlXekz92rK8Y+tFHPp7+1FO9N3348MKq2JIvK1f66qljxvi/ze9/D2ecUZrvKEi9oTrqGVBQr7+2b/diA7/+tQ+PfOQROPDAOl5kzRro2tUXWfnNbxJpp4jEY8kSH512xhm7Snqzc6cH5t/9zv/gBujY0Vc1GzrUSz19ZmWzNG3fDosX+9jyV1/1t+qWRdVnOnTwHuQzzoCTTlI4r8nLL3tJxzlzfEjMLbd4T7tIEVJQz4CCev20YoWXXXztNS/l+/vfQ7NmGVzohhs87b/1lg9sF5GCdv31PpriueeqKbeaWizh2Wd9v369P962rU987NHD9927+w+MnTs/va1f7yWjUtvKlVBZ6dfo0MHnsRx/vO8PPxzKynL5pRevHTu8BNd11/k7EFde6f+ILVvmu2UidaKgngEF9frn4Yd9COiOHXDXXRkMdUmprPRf2gccABMmxNpGEUnG1q1wyCE+FGbOnFpGq1VWejWSV1/10L1sme+XL699PHuHDp8O9b17+yTQPn00bCNb69b5iqZ/+Yu/y/GLX/j4/oYN890ykbQoqGdAQb3+2LDBCyn8/e9w9NHwt7/579CMPf20jyt99FE488zY2ikiyXr+ee9N/9nPvGO2Tiorfcjb9u0+jr3qtvfesNdeSTRZqpo5E77zHS+z2b+/VwEYMiTfrRLZo9qCuqq+SL32wgu7xqFff70PFc0qpAPccYdXajj99FjaKCK5MXiwD3375S991FqdlJX56mc9ekC3bj5HpXNnL6mokJ4bRx7p8wkee8yrAAwd6tvcuflumUjGFNSlXnrnHfja1/wXc4sWXpHtJz+J4Z3St9/2HvWLLkpjNSQRKTS/+53/TPj613cNI5ciYuYTcefP9x71KVO8N+a//xsWLcp360TqTEFd6pXKSrj1Vq/i8sgjPt9z9mxfVyMWd9/te61EKlKU9t3XF/+cPBluuinfrZGMNW7sw2DKy72c45NPQr9+/hfY0qX5bp1I2hTUpV7YuROeeMLfGf32t+GYY3zC2C9+kWFVl+ps3+5Bffhwf+tbRIrS6NG+DMJ11/nPCSli7drBjTd6OL/qKq8acOCB3pmyeHG+WyeyRwrqUtIqK73nfMAAfzf0o4/882ef9aIssfrzn31MzeWXx3xhEcklM/jTn6B1azj/fNi2Ld8tkqx17OjjmsrLfbXo++/3wD5ypE8+VWENKVAK6lKS3n4b/t//83c6v/IV7+x+4AFfefDssxOohrZ2rQ9yHzwYhg2L+eIikmvt28Odd/rQuBtuyHdrJDb77Qd//KP/kvjxj33RqS9+EQYN8tWuaiuxKZIHCupSEkLwdzHvuMN/5nbv7mV1O3TwdzrnzoVzz02wrO6113p3/S23qCaySIkYOdJ71G+4weckSgnZd18v9bVihf/i+PBDn3DatauPaV+wIN8tFAFUR71GqqNeuEKAVat8Av+8ed4h8sorPuoE/N3Mr30NvvpVD+yJmzrVB71///vw61/n4AVFJFc++MAXC92xA2bN8p52KUE7d8Izz/g8o6ee8n/wY4+FCy/0t2X33jvfLZQSpgWPMqCgnj87dsDq1d7RsWKFr7ZdUeH7FSu85/yjj3Yd36WL96J/4Qu+HXhgDju1Kyt9laTVq/0vB/0wFyk5s2f7IqKf+xyMH68FL0veu+/6ynd/+Yv3rDdt6vXYzzrLF7Nr1SrfLZQSo6CeAQX15G3b5r8A58zxkrfz5/vPxIoK79yoqnVrD+Rdu/qK2337eiDv29fXE8nbaJO77oJLLoEHH/S3TUWkJN17L1xwAVxzjc9/kXogBB/z9NBD8M9/eodM48bwpS/5qtPDh/v4SpEsKahnQEE9fpWVXpv4pZd88bjJk2HLFn+uWTM46CDfevaE/ff3rWtX3wpyYb/16710TL9+8PLLGpsuUuIuu8yHMz/2mFeRknpk504P7Y8+6tvKlf4z/8gjvYDAsGE+IbWsLN8tlSKkoJ4BBfV47NwJEyf6hM5HH/XiKGa+UFxquMqAAT6WvOh+vl1+uZdknD3bvyARKWlbt/rPrAULPLP165fvFkle7NzpExaeeca3qVP9sbZt4aST4MQTfevbVx04khYF9QwoqGdnzRrPsHff7RM/mzWDESPgy1+Gk0/2n2dFbdYsX870iiu80ouI1AsrV8JRR/k49YkTczRhXQrb+vXw3HO+QMeLL/o3CXhlmRNO8O3zn/e3jBuo2J58loJ6BhTU6y4EH87yxz967/mOHf5u4Ne+BqedVqDDVzKxapXPKtu2zbvWWrfOd4tEJIfefNPfEdxnH3j1Vc9jIoD/Iiwv9zGeqS1VkqxNG//d8fnPw3HHeWdPbEtjSzFTUM+Agnr6QvDOhP/7P+9hatXKK1pdfjn07p3v1sVswwZ/73v5ch+XfsQR+W6RiOTB5Mm+vlnv3j7npk2bfLdIClIquE+c6NukSb7yHvjbMocd5uV9jznGy0H27KnhMvWQgnoGFNT3LAQYO9YD+owZXpXlBz/wyggl03te1ZYtcMopMH06jBvnY3hEpN6aMMGr9R15pHdWlOTPPYnfe+/Ba6/52PYpU2DatF01h9u187FVgwb5/qijoGPH/LZXEqegngEF9ZqFAP/6F/z0p/D669Crly/M+bWveeWqkrRjB/zXf/lCGA8/DGefne8WiUgBePxxL689YID/XNxvv3y3SIpOZaXXJ5482UP7tGm+ml+qTvH++3tgHzjQtyOP1Fs4JUZBPQMK6p8Vgk9wv+46mDnTA/p113n58JJeACQEuPhiuOceuO02H9MjIhJ5+mkYPdqH/T31lId2kax89JFXFJs61d+ynjHDh9Ck9O7tgT21HXGE5ksVMQX1DCio7xKC//K5/nr/WdGjhwf0c88t8YAO3pP+gx/A738PP/mJ3wQRkd288YYPg9mwwd90GzEi3y2SkrN+vVccmzHDh2DOnAlvv73r+V69Ph3eDz+8BEqs1Q8K6hlQUPd33caO9Ww6e7YH9B/+EM4/Hxo1ynfrcmDxYjjvPB9D+K1veTkbTfIRkRqsWeMVrmbPhh/9yLcmTfLdKilp773ngb3qVjW89+ixq8f98MN9r9VUC46Cegbqc1DfsgUeeMA7kRcu9HfYfvxjH+JSLwJ6CL784Pe+54Pub7/d39cWEdmDjz/2FUwfeMAXRLrnHjj66Hy3SuqV997zvxZnzvQe+JkzYenSXc937rwruKe2/fdXR1QeKahnoD4G9YoKuOsu+NOf/P/5EUfAd7/rixSV/BCXlNWr4aKLfOGKL33Jf8t27pzvVolIkRk3Dr75TV924eqr4ec/h733znerpN764AOv/jBrlof4WbO8Jy41YbVNG59ckdoOO8wXaCrZChGFRUE9A/UlqG/dCk8+CX/9q5cXC8Hfuv3Od7xceL35A/vtt30p1dtv95ty003eLVZvboCIxO3DD+Gaa/zHSps2vpDxt78N7dvnu2UiwObNMGeOB/fUNmcOfPKJP9+okYf1Qw+FQw6Bgw/2rWtX/W6MmYJ6Bko5qH/8sdf/HTvWQ/r69V4D/etf961Xr3y3MEd27vQbcdttXrYB/K+UX/8aDjggv20TkZIxYwb88pdeyrFZM/jGN7y3vV+/fLdMZDeVlT4/6/XXfYb0G2/4UryrVu06Zu+9PbAfdBD07evbQQdB9+716O33eCmoZ6CUgvq2bf4u12uvwYsvwvPPe6dxq1ZemeD8833tnrKyfLc0Bz74wFeGe/VVePRRL3fVvv2u35z775/vFopIiVqwAH71K3jwQS8oddBBcOaZXof90EPVSSkF7IMPYO7cT28LF8K77+46pnFjX1m1Z0/v8UttPXt6L7zGftUob0HdzIYCNwNlwN0hhBt3e96i54cDm4GvhxBm1XaumbUFHga6A8uBL4cQNkTPXQtcBFQCV4YQxkePHwncCzQDxgFXhT184cUY1EOAtWv9l8GCBb5+wuuve29O6p2s3r09nJ9+Ohx/fAlPDg3Bf4AsW+ZhfNo0eOUV7xkIwb/wz30OLrnEf1OqNIOI5MiaNfDYY/DPf8LLL/ube/vs45NOU1v//tCpEzRokO/WitRiwwZYtMhD+4IFsGSJ/84tL9+12mpK69Ye2FNbp06+6uq+++7a77OPL/Fbz/5qzUtQN7My4C3gFKACmA6cE0KYX+WY4cC38aB+NHBzCOHo2s41s18D60MIN5rZNUCbEML/mlk/4CFgELAf8DxwQAih0symAVcBU/CgfksI4Zna2p+PoL51q1dc2bbNP962zQP25s2+ffwxbNrkQ1U2bPD92rX+jlRFhWY/FigAAAt1SURBVG+bN++63l57+btTn/vcrq1Tp5x+Sbm1YAH87//67PZlyz59M5o3h2OP9YH3xx/vvwmbN89fW0VE8J/h//oXTJzoa9ssWLDruaZNvbper16+4uk++/gbgPvs4++I7rUXtGjh+332UdU9KSAhwLp1HtiXLYOVK3dtK1Z4YHnvverPbdjQ67+3beuTO9q08d743bfmzX0sWdWtSRPv2a+6NWrk10xtZWW79g0a7NpSn+fhj4TagnqSg4kGAUtCCEujRowBRgLzqxwzErg/6t2eYmatzawT3lte07kjgROi8+8D/g38b/T4mBDCVmCZmS0BBpnZcqBlCGFydK37gVFArUE9Hy69FO69N/3jmzf3H85duvgk7VNP9ZEbBx3kYx87d65nf5SWlcHy5f62wZe+tOstuB49/LGSfftARIpVhw5eaOqii/zzjRv9XdC33vKMs3Sp76dP91xTWVn9db72Nbj//ty1W6RWZv7N3aGDd5JVZ/t2D/PvvOPbu+/C++97L2TV7Z13fNz8pk3eS797T32cLrjAq70VkCSDemdgZZXPK/Be8z0d03kP53YMIawBCCGsMbNUH0JnvMd892ttjz7e/fHPMLNLgEuiTz8ys0U1fXGFYPNm/8N0xYpPPbwPUMOfqfXEnDn5eFXd99zTPc893fPcS+ueP/CAbxILfZ/nXmHc87/+1bfc61bTE0kG9er6cncfZ1PTMemcm+7rpX2tEMKdwJ17eJ2CZmYzanr7RJKj+557uue5p3uee7rnuad7nnu65zVLcppKBdC1yuddgNVpHlPbue9Gw2OI9mvTuFaXPbRDRERERKSgJBnUpwN9zKyHmTUGRgNjdztmLHCeuWOAjdGwltrOHQucH318PvBklcdHm1kTM+sB9AGmRdfbZGbHRFVmzqtyjoiIiIhIQUps6EsIYYeZXQGMx0ss3hNCmGdml0bP34FXYBkOLMHLM15Q27nRpW8EHjGzi4AVwNnROfPM7BF8wukO4FshhNS0m8vYVZ7xGQpwImmMinroThHTfc893fPc0z3PPd3z3NM9zz3d8xpowSMRERERkQKkpRRERERERAqQgrqIiIiISAFSUC9wZna2mc0zs51mNnC35641syVmtsjMhlR5/EgzmxM9d0s0iZZoou3D0eNTzax7lXPON7PF0XY+khYzGxrd/yXRSrlSB2Z2j5mtNbO5VR5ra2YTou/FCWbWpspzsX3P11dm1tXMXjKzBdHPlquix3XfE2JmTc1smpm9Ed3zn0eP654nyMzKzGy2mT0Vfa77nTAzWx7dr9fNbEb0mO57NkII2gp4Aw4CDsRXYB1Y5fF+wBtAE6AHUA6URc9NA47Fa8g/AwyLHr8cuCP6eDTwcPRxW2BptG8Tfdwm3197oW/4ROdyoCfQOPr36JfvdhXTBnwBOAKYW+WxXwPXRB9fA/wq+ji27/n6vAGdgCOij/cG3orure57cvfcgL2ijxsBU4FjdM8Tv+/fAf4OPBV9rvud/D1fDuyz22O671ls6lEvcCGEBSGE6lZIHQmMCSFsDSEswyvnDDKvLd8yhDA5+Hfy/cCoKufcF338KHBy9FfqEGBCCGF9CGEDMAEYmuCXVSoGAUtCCEtDCNuAMfg9ljSFEF4B1u/2cNXv0/v49PdvXN/z9VYIYU0IYVb08SZgAb5as+57QoJLrXveKNoCuueJMbMuwAjg7ioP637nh+57FhTUi1dnYGWVzyuixzpHH+/++KfOCSHsADYC7Wq5ltRO9y0ZHYOvf0C07xA9Huf3vADR28aH4z28uu8JioZhvI4v0jchhKB7nqw/AD8AdlZ5TPc7eQF4zsxmmtkl0WO671lIrI66pM/Mngf2reapH4UQalqcqbq/IEMtj2d6jtRM9y234vyer/fMbC/gn8DVIYQPa+mU0n2PQfB1PQaYWWvgcTM7uJbDdc+zYGanAmtDCDPN7IR0TqnmMd3vzBwXQlhtZh2ACWa2sJZjdd/ToKBeAEIIgzM4rQLoWuXzLsDq6PEu1Txe9ZwKM2sItMKHHVQAJ+x2zr8zaFN9U9O/gWTnXTPrFEJYE70FujZ6PM7v+XrNzBrhIf3BEMJj0cO67zkQQvjAzP6NDy/UPU/GccDpZjYcaAq0NLO/ofuduBDC6mi/1swex4eI6r5nQUNfitdYYHQ0A7oH0AeYFr2ttMnMjonGbZ0HPFnlnFRFl7OAF6PxX+OBL5lZm2g29peix6R204E+ZtbDzBrjE1vG5rlNpaDq9+n5fPr7N67v+Xorukd/ARaEEH5X5Snd94SYWfuoJx0zawYMBhaie56IEMK1IYQuIYTu+M/lF0MI56L7nSgza2Fme6c+xrPEXHTfs5Pr2ava6rYBZ+B/QW4F3gXGV3nuR/gs6UVEM6Kjxwfi/znKgVvZtQJtU+Af+ISNaUDPKudcGD2+BLgg3193sWzAcLxqRjk+VCnvbSqmDXgIWANsj77PL8LHG74ALI72bascH9v3fH3dgM/jbxW/CbwebcN13xO954cCs6N7Phe4Lnpc9zz5e38Cu6q+6H4ne6974lVc3gDmpX4n6r5nt6W+cBERERERKSAa+iIiIiIiUoAU1EVERERECpCCuoiIiIhIAVJQFxEREREpQArqIiIiIiIFSEFdRKSImFmlmb1uZnPN7B9m1ryG48alandn+XqHm9nd0cenm9k1WVzrZ2b2vT0cc6+ZnRV9/G8zG5jp61W55qlm9vNsryMikmsK6iIixWVLCGFACOFgYBtwadUnzTUIIQwPIXwQw+v9EPgjQAhhbAjhxhiumQgzK6vhqafxlSqr/aNGRKRQKaiLiBSvV4HeZtbdzBaY2Z+AWUBXM1tuZvsAmNl5Zvammb1hZg9Ej7U3s3+a2fRoO273i0erDB4aQngj+vzrZnZr9PG9ZnaLmb1mZktTveDVXONHZrbIzJ4HDqzy+AAzmxK16/FoVeQamdntZjbDzOZV7R2Pvs7rzGwicLaZXWlm86PrjgEIvmDIv4FT076zIiIFoGG+GyAiInVnZg2BYcCz0UMH4qsKXx49nzquP77633EhhPfMrG10/M3A70MIE81sf2A8cNBuL5NaHbAmnfCVTvviS3s/ulsbj8SXcD8c/30zC5gZPX0/8O0Qwstmdj3wU+DqWl7rRyGE9VGv+QtmdmgI4c3ouU9CCJ+PXnM10COEsHW3oT8zgOOBR2p5DRGRgqKgLiJSXJqZ2evRx68CfwH2A94OIUyp5viTgEdDCO8BhBDWR48PBvqlAj3Q0sz2DiFsqnJuJ2BdLW15IoSwE5hvZh2ref544PEQwmYAMxsb7VsBrUMIL0fH3YcvC16bL5vZJfjvrU5APyAV1B+uctybwINm9gTwRJXH1+L3SUSkaCioi4gUly0hhAFVH4jC9sc1HG9AqObxBsCxIYQttb0W0LSW57fu9jrVqe6168TMegDfA44KIWwws3t3a1fVr30E8AXgdOAnZtY/hLAjOr62r1VEpOBojLqISGl7Ae+NbgdQZejLc8AVqYPMbEA15y4Aemfx2q8AZ5hZs2i8+2kAIYSNwAYzOz467mvAyzVcA6AlHsY3Rj33w6o7yMwaAF1DCC8BPwBaA3tFTx9A7cN4REQKjnrURURKWAhhnpndALxsZpXAbODrwJXAbWb2Jv674BV2qyATQlhoZq2qGRKT7mvPMrOHgdeBt/GhOinnA3dElViWAhfUcp03zGw2MC86dlINh5YBf4uG1hg+Bj9V+eZE4Nq6fg0iIvlkPhleRETks8zsf4BNIYS7892WTEW98H8PIZyc77aIiNSFhr6IiEhtbufTY9GL0f7Ad/PdCBGRulKPuoiIiIhIAVKPuoiIiIhIAVJQFxEREREpQArqIiIiIiIFSEFdRERERKQAKaiLiIiIiBSg/w9BRAosdwIKDgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(width, height))\n",
"\n",
"\n",
"ax1 = sns.distplot(df['price'], hist=False, color=\"r\", label=\"Actual Value\")\n",
"sns.distplot(Yhat, hist=False, color=\"b\", label=\"Fitted Values\" , ax=ax1)\n",
"\n",
"\n",
"plt.title('Actual vs Fitted Values for Price')\n",
"plt.xlabel('Price (in dollars)')\n",
"plt.ylabel('Proportion of Cars')\n",
"\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can see that the fitted values are reasonably close to the actual values, since the two distributions overlap a bit. However, there is definitely some room for improvement.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 3: Polynomial Regression and Pipelines</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><b>Polynomial regression</b> is a particular case of the general linear regression model or multiple linear regression models.</p> \n",
"<p>We get non-linear relationships by squaring or setting higher-order terms of the predictor variables.</p>\n",
"\n",
"<p>There are different orders of polynomial regression:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><b>Quadratic - 2nd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 \n",
"$$\n",
"\n",
"\n",
"<center><b>Cubic - 3rd order</b></center>\n",
"$$\n",
"Yhat = a + b_1 X^2 +b_2 X^2 +b_3 X^3\\\\\n",
"$$\n",
"\n",
"\n",
"<center><b>Higher order</b>:</center>\n",
"$$\n",
"Y = a + b_1 X^2 +b_2 X^2 +b_3 X^3 ....\\\\\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We saw earlier that a linear model did not provide the best fit while using highway-mpg as the predictor variable. Let's see if we can try fitting a polynomial model to the data instead.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We will use the following function to plot the data:</p>"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"def PlotPolly(model, independent_variable, dependent_variabble, Name):\n",
" x_new = np.linspace(15, 55, 100)\n",
" y_new = model(x_new)\n",
"\n",
" plt.plot(independent_variable, dependent_variabble, '.', x_new, y_new, '-')\n",
" plt.title('Polynomial Fit with Matplotlib for Price ~ Length')\n",
" ax = plt.gca()\n",
" ax.set_facecolor((0.898, 0.898, 0.898))\n",
" fig = plt.gcf()\n",
" plt.xlabel(Name)\n",
" plt.ylabel('Price of Cars')\n",
"\n",
" plt.show()\n",
" plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets get the variables"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"x = df['highway-mpg']\n",
"y = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's fit the polynomial using the function <b>polyfit</b>, then use the function <b>poly1d</b> to display the polynomial function."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3 2\n",
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n"
]
}
],
"source": [
"# Here we use a polynomial of the 3rd order (cubic) \n",
"f = np.polyfit(x, y, 3)\n",
"p = np.poly1d(f)\n",
"print(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's plot the function "
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEWCAYAAABMoxE0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOyde3xU1bX4v2smT0JCSAANCYrysLwEBCnVXp+1Pq4P5PrWaltbrNWqt+2t0vZeba+26q9qS6320tKK1hf1SVWsVsVHiyKIgoAKiEIkgIRXSCCPmfX74+yBSZhXMpnMJLO+n8/5zNn7nL3POmdm9jp777XXElXFMAzDMDqKL90CGIZhGN0bUySGYRhGUpgiMQzDMJLCFIlhGIaRFKZIDMMwjKQwRWIYhmEkhSmSDEBEbhKRv6RbjnBE5GIReSHBczskv4j8WET+2H7p4tb7exH57xjHM+55R0JEPhGRr3Sw7N57FJGDRGSXiPhder6IfKsddV0pIptcHeUdkScZRGSeiFzW1dfNZNr7HaYaUySdiPvj73Z/uE0i8mcR6Z1uuTqCqj6oql9Nth4ROU5Egu6ZhLa/uWv8QlW/5c4bLCIqIjmdIPt3VPV/w65fneQ9qPs+c8LyckRks4gktBCrM+ToaN2quk5Ve6tqoAN15wJ3Al91ddQmI6urs13/E1U9VVVnJ3vdziAdDXh3ePExRdL5nKGqvYEjgCOBn6ZZnkxgg2uEQtsZ6RaoA2wHTg1LnwZsS5MsXckBQAGwvL0FxSNaGxP3fxKnvJFB2JeUIlT1M2AeMBpARAaKyFwR2Soiq0Xk25HKicizIvK9NnlLRWSK21cR+Y6IrBKRbSLyOxERd8wnIj8VkU/d2/L9ItLHHQu98X9DRNa7st8RkSNd/dtF5O6wa35dRN4IS//GldspIotF5N+SfUZt3rRec5/b3Zvql9qcW+DeYvu59E9FpEVESlz6ZhH5tdu/z6WL8L6DgWG9oYGuyjz3fOpEZLmITIwj7gPApWHpS4H728j4DRFZ6er8WESucPkR5XD3/5iIPOrKvCMiY6M8q3wR+bWIbHDbr11erHsMlY3U2xsiIgtFZIeIPC0iZRGuORz40CW3i8jLLv8oEXnblX1bRI4KKzNfRG4RkX8CDcChsR5qhP/JfuXb9gJE5Nthz3mFiBzh8geKyOMi8rmIrBWRa2Jdu7MRkcki8i/3X3pPRI4LOzZfRP5XRP7p5H4h9Ft2xy91/9taEflvccOaInIK8GPgfPfdvhd2yYOj1dfVmCJJESIyCO+tdYnLehioBgYC5wC/EJETIxSdDVwSVs9YoBJ4Luyc0/He4sYC5wEnu/yvu+14vD9wb+BuWvNFYBhwPvBr4CfAV4BRwHkicmyUW3obGAeUAQ8BfxWRgijndoRj3Gep67UsCD+oqnucDMeGnf8pcHRY+tU2ZerxehHhPaIN7vCZwCNAKTCX/Z9TW54CjhGRUhEpBf4NeLrNOZvxvpsS4BvAXSJyRBw5zgL+yr7n+pR4w0lt+QkwGe87GAtMAn4ap+5YXAp8E+/32ALMaHuCqn6E97sA73s5wSmcZ9355XjDXs9K67mTrwHTgGK87ygqEf4nMcuLyLnATU7+ErzvsVa8nsvfgPfw/i8nAteJyMm0ExHvxaydZSrxnsvNeN/lD4HHRaR/2GkX4f0uBgB57hxEZCRwD3AxUAH0cfeAqj4P/AJ41H23Y+PVlw5MkXQ+T4nIduANvIbtF+7P8mXgelXdo6rvAn/E+8O05WlgmIgMc+mv4f2ImsLOuVVVt6vqOuAVvMYFvB/inar6saruAqYDF7R5E/1fJ8MLQD3wsKpudm+GrwPjI92Uqv5FVWtVtUVV7wDygcMSfCYD3VtaaDsvwXJteRU41t3P4XiN2bFOoR3p5E+UN1T1OTdv8ABe4xyLPXgN1fnABXjKZ0/4Car6rKquUY9XgRfwFE4sFqvqY6rajNcoF+ApjLZcDPzcfVefAz8j8u8nUR5Q1fedIvpvvJcIfwLl/h1YpaoPuN/Cw8AHQPhw5X2qutwdb45Sz37/kwTLfwu4XVXfds95tap+ivf991fVn6tqk6p+DPwB77vaDxGpFJFHXO9uiYhc5/LG4r00tJdLgOfcbyqoqi8Ci/CUZIg/q+pHqrobmMO+/+05wN9U9Q33P/8fIJG5t2j1dTlJT2wa+zFFVf8RnuGGGraqal1Y9qfAfsMpqtooInOAS0TkZ8CFeD+0cDaG7Tfg9TzAe7sMf4P7FO87PiAsb1PY/u4I6YiTniLyA7w/8UC8H3kJkGhXeoOqViV4bixexWtsjwCWAS8Cs/Aa3tWquqUddbV9hgUikqOqLTHK3A/8EhDg+rYHReRU4EZgON5LWi8nZyzWh3ZUNSjepPnACOdF+m4jnZco68P2PwVy8b7PTZFPjypHqHxllLqjsd//JMHyg4A1EfIPxr2whOX5if5ycS5eT/BivAb4KrwhpM/wvuP2cjBwroiEK9RcvBe9ELH+t+G/gwYRScSoIVp9XY4pkq5hA1AmIsVhyuQgvB9tJGbjvSW/ATS0HeaJc52Dw9IH4Q1bbAI63JCLNx9yPd5wwXLX4G3Da1A7i0TewP6F1ws6G3hVVVeIyEF4b8mvRinTme6tX8cbelC872ZI6ICI5AOP4w25PK2qzSLyFPueUTQ5BoXV4cP7niINTYW+29Ck90Fh53XkHgeF7R8ENAOJKOK2v7FQ+efD0sk+81jl1xP23Nvkr1XVYRGORWKGqgbd/mK8Yb5kWI/Xy4s49xmHGsJ69yJSiDdsGCLjXbTb0FYXoKrr8RrBX4o3aXw4cDnwYJTzFwBB4A48hZIoDwP/KSKHiGdOGRpbjfWWnQjFeArpcyBHRP4Hr0fSmXyOd89RJ2dVtQHvT38V+xTHv4AriK5INgHl4owOkkG9mAtnAGfq/vEX8vCG+z4HWlzvJNx8OpocE0Rkqhuuuw5oBN6McPmHgZ+KSH83qfo/QMhQoSP3eImIjBSRXsDPgccSNA9+DhguIheJZwJ9PjASeKYd106GPwI/FJEJ4jFURA4GFgI7ReR6ESkUEb+IjBaRIyNVEqZEOkKO+x+Htly87+IMETnZXbtAPLPsRF7gHnNljxKRPLxhy/CXtE3AYMlgC7aMFawHciEwGO+N7kngRjeOGo37gTHsaywS4U94iuc1YC3eGP73YpZIjL/jWdZ8hDeMsYfEhi8SximJW4B/unmUSPME4CmMXLyGI5QuZp/VV9t6P8BrhD929SYzHIQbu9/PFNb1NK/BG6vehjcROjcBOZ7Gm3fZhjfnMTXKvMLNeGPuS/GGy95xeR29xweA+/CGRwqc7HFRbx3J6cAPgFrgR8Dp7RxW7DCq+le838lDQB3efEaZU4Jn4A1TrcXrXf0Rb+K6s7kXbxg4tP3ZvSyehTc89jne/+O/SKCNdb+n7+EZf9Tg3ddmvJcK8IbgwDMqeKfzbqPzkP1frIxMQEQuBaap6pfTLYuRGkTkJmCoql4S71wje3CjCduBYaq6Nt3yJIL1SDIQN9zwXWBmumUxDCP1iMgZItJLvHVBv8LrdX6SXqkSxxRJhuHs3j/HGxd9KM3iGIbRNZyFN+y9AW+d1wUR5uEyFhvaMgzDMJLCeiSGYRhGUmTdOpKysjIdNGhQ/BMNwzCMvSxdunSLqvaPdCzrFMmgQYOYN29eusUwDMPoVlRWVkb1m2ZDW4ZhGEZSmCIxDMMwksIUiWEYhpEUpkgMwzCMpDBFYhiGYSSFKRLDMAwjKUyRdBLLauq5/+2NLKupT7cohmEYXUrKFYnzzb9ERJ5x6ZtE5DMReddtp4WdO11EVovIh+Gxll3sgWXu2IxQTGURyReRR13+WyIyONX3E4llNfVc8+QqZr5ZwzVPrjJlYhhGVtEVPZJrgZVt8u5S1XFuew5AREbixVceBZwC3BMWQ/peYBqeM7Nh7jh4waG2qepQ4C7gtpTeSRSWVNfRHFCCCs0BZUl1XfxChmEYPYSUKhIXHezf8QLMxOMs4BFVbXQ++FcDk0SkAihR1QXOG+b9wJSwMrPd/mPAiaHeSlcyvqqYXL/gE8j1C+OrirtaBMMwjLSRahcpv8aLoNa2Zb3aBW5aBPxAVbcBlbQOMVrt8prdftt83Od6AFVtEZEdeLGOW0VrE5FpeD0aKisr6WzGVBQx4+xhLKmuY3xVMWMqijr9GoZhGJlKynokInI6sFlVF7c5dC8wBC8kZg1eXHJoHaM4hMbIj1WmdYbqTFWdqKoTy8vLExG/3YypKOLSIw80JWIYRtaRyqGto4EzReQTvFjEJ4jIX1R1k6oGVDUI/AGY5M6vBsLd8lbhBXmpdvtt81uVEZEcvPjMW1NzO0CgKWVVG4ZhdFdSpkhUdbqqVqnqYLxJ9JdV9RI35xHibOB9tz8XuMBZYh2CN6m+UFVrgDoRmezmPy4Fng4rc5nbP8ddIyWRunotf5ADHv4KtOxJRfWGYRjdlnS4kb9dRMbhDUF9AlwBoKrLRWQOsAJoAa5S1YArcyVwH1AIzHMbwCzgARFZjdcTuSBVQrf0HYq/4XMKP36e3cOnxC9gGIaRJWRdqN2xY8dqh+KRqDJgzmkEC0rZctbDnS+YYRhGBlNZWblYVSdGOmYr2xNFhPoR55O36V1yaj9ItzSGYRgZgymSdtAwfArqz6No5aPpFsUwDCNjMEXSDrSglN2HnkrhqrlIk7lBMQzDAFMk7aZ+5Pn4mhsoXPNsukUxDMPICEyRtJPmAeNoLjuMXisegSwzVDAMw4iEKZL2IkL9yPPJq11J7udL0y2NYRhG2jFF0gF2Dz2TYG4RRcsfSrcohmEYaccUSQfQvCJ2DzuLwjXz8O1OnUcWwzCM7oApkg5SP+pCJNhMrw8fT7cohmEYacUUSQdp6TuUxopJ3qR7MBC/gGEYRg/FFEkS1I+6iJxdG8hf/1q6RekwFmveMIxkSYfTxh7DnsEnEOg1gKLlD9F48PHpFqfdhGLNNweUXP9GZpw9zOKpGIbRbqxHkgy+XOpHnEdB9RusWbWi273ZW6x5wzA6A1MkSdIw4jyCksPal/7AzDdruObJVd1GmVisecMwOgNTJEkS7NWfFaXHc7a8Si9t6FZv9qFY89MmV9iwlmEYHcYUSSdQN/oSimU35/hf73Zv9hZr3jCMZEm5IhERv4gsEZFnXLpMRF4UkVXus2/YudNFZLWIfCgiJ4flTxCRZe7YDBdyFxeW91GX/5aIDE71/UTi4BGT2N53DNf0fokZU4ZYo2wYRlbRFT2Sa4GVYekbgJdUdRjwkksjIiPxQuWOAk4B7hERvytzLzANL477MHcc4HJgm6oOBe4CbkvtrURHx19GWWM1E1uWpEsEwzCMtJBSRSIiVcC/A38Myz4LmO32ZwNTwvIfUdVGVV0LrAYmiUgFUKKqC9SLC3x/mzKhuh4DTgz1Vrqa3YecRKBXf4qW/yUdlzcMw0gbqe6R/Br4ERAMyztAVWsA3OcAl18JrA87r9rlVbr9tvmtyqhqC7ADKG8rhIhME5FFIrKotrY22XuKjD+P+pEXULD+dXK2f5yaaxiGYWQgKVMkInI6sFlVFydaJEKexsiPVaZ1hupMVZ2oqhPLy/fTM51Gw4jzvVC8y+5P2TUMwzAyjVT2SI4GzhSRT4BHgBNE5C/AJjdchfvc7M6vBgaFla8CNrj8qgj5rcqISA7QB0ibO95gYTkNQ0+n8KOnkT3b0iWGYRhGl5IyRaKq01W1SlUH402iv6yqlwBzgcvcaZcBT7v9ucAFzhLrELxJ9YVu+KtORCa7+Y9L25QJ1XWOu0ZawxbWj7kMX2APRSv/mk4xDMMwuox0rCO5FThJRFYBJ7k0qrocmAOsAJ4HrlLVkFvdK/Em7FcDa4B5Ln8WUC4iq4Hv4yzA0klL2XD2VB5F0fIHIdCUbnEMwzBSjqT5Bb7LGTt2rM6bNy/+iUmQv+41yp+/gm3H38buYWem9FqGYRhdQWVl5WJVnRjpmK1sTwGNg75Mc+kQipbNhixT1IZhZB+mSFKB+Kgfcyl5W1aQV/N2uqUxDMNIKaZIUkTDsDMJFPSl99I/p1sUwzCMlGKKJFXkFFA/6mIK1s0nZ9vqdEtjGIaRMkyRpJCGURcR9BdQtPS+dItiGIaRMkyRpJBgQV92H3Y2vVbNxdewOX4BwzCMbogpkhSza8xlEGyh6P0H0y1Kl7Kspr7bhR42DKNjmCJJMYE+B7PnkJMoWvEI0tT5jWomNtjLauq55slV3S70sGEYHcMUSRewa+w38TXtpNcHnes2JVMb7CXVdTQHlKDSrUIPG4bRMUyRdAHNA8bSWHEkvZfN7lS3KZnaYI+vKibXL/iEbhd62DCM9mOKpIvYNe7b+Os3Urj6mU6rM1Mb7DEVRcw4exjTJlcw4+xhFnrYMHo4OekWIFtY5B/PuMKhFC2aye5hZ4HPH79QHEIN9pLqOsZXFWdUgz2moiij5DEMI3VYj6QLWFZTzzVPrebmnafSu/5TNr37XKfVPaaiiEuPPNAabcMw0oYpki4gNJfxXGASn+gBHLhiljlzNAyjx2CKpAsIzWWo+JkVPIOKhg/J+2xBwuUz0cTXMAwjRCpjtheIyEIReU9ElovIz1z+TSLymYi867bTwspMF5HVIvKhiJwclj9BRJa5YzNcpERcNMVHXf5bIjI4VfeTDOGTz8ec8Q0CvfpT/O7MhMpmqomvYRhGiFT2SBqBE1R1LDAOOEVEJrtjd6nqOLc9ByAiI/FC8o4CTgHuEZHQjPS9wDS88LvD3HGAy4FtqjoUuAu4LYX3kxShuYxRVWXsOvyb5G94i7yN7wCxexyZauJrGIYRIpUx21VVd7lkrttiTQycBTyiqo2quhYvrO4kEakASlR1gYvHfj8wJazMbLf/GHBiqLeSyTSMOM9zMb/k93F7HJlq4msYhhEipXMkIuIXkXeBzcCLqvqWO3S1iCwVkT+JSF+XVwmsDyte7fIq3X7b/FZlVLUF2AGUR5BjmogsEpFFtbW1nXR3HUdze1E/5usUrH+dDR8titnjsDUZhmFkOilVJKoaUNVxQBVe72I03jDVELzhrhrgDnd6pJ6ExsiPVaatHDNVdaKqTiwv30/PpIX6URcRzCvhtB2Pxu1xmImvYRiZTJdYbanqdmA+cIqqbnIKJgj8AZjkTqsGBoUVqwI2uPyqCPmtyohIDtAH2Jqi2+hUNK839aMv4YCNr/CzCY1MHFTMtcdUmbIwDKPbkUqrrf4iUur2C4GvAB+4OY8QZwPvu/25wAXOEusQvEn1hapaA9SJyGQ3/3Ep8HRYmcvc/jnAy24epVuwa/TXaPH3omTJ71m0vo7fvFbdY6yyzGTZMLKHVLpIqQBmO8srHzBHVZ8RkQdEZBzeENQnwBUAqrpcROYAK4AW4CpVDbi6rgTuAwqBeW4DmAU8ICKr8XoiF6TwfjodLShlYb8pnLLxYYZQzZpAFUuq67p9ryRkQNAcUHL9G21uxzB6OClTJKq6FBgfIf9rMcrcAtwSIX8RMDpC/h7g3OQkTS97xn6T3Ruf4JqcJ/ihXtsjrLIimSybIjGMnoutbE8zXxhcyaZhF3K6/y1mfcXXIxpcM1k2jOzCFEkG0Ouob6O5hUxYd1+6RekUzGTZMLILUyQZQLCgL/WjLqHg4+fJ2boq3eJ0CmaybBjZgymSDKH+8K+juYUUv3NPukUxDMNoF6ZIMoRgQV/qR3+Nwo+fJ6f2g3SLkzRm/msY2YMpkgxi1+HfIJhXTPGi36ZblKQwj8WGkV2YIskgNL8Puw7/BoWfvkzu5qV787vb2715LDaM7MIUSYZRP/pSAgV9KV40A+ieb/dm/msY2UUqV7YbHUDzitg17tv0efN28mreZkn1oG63uC9k/rukuo7xVcUZL69hGMlhPZIMpH7khV4Uxbd/w/jK3vZ2bxhGRmM9kkwkp4C6I75L6Rs/Y2LLImacfWS3ers3X1uGkV1YjyRDafjCf9BSchAlC+9izIGF3Wpxn022G0Z2EVeRiEiRiPjc/nAROVNEclMvWpbjy2XnkdeSu/UjClc/k25p2oVNthtGdpFIj+Q1oEBEKoGXgG/guXQ3UsyeQ0+hqXyEZ8EVaErJNVJhWmy+tgwju0hEkYiqNgBTgd+q6tnAyNSKZQAgPuq++ANy6j6jaOWcTq8+labF5mvLMLKHhBSJiHwJuBh41uXZJH0X0Vh5FI0DJ9P7nXuQpl2dWrfNZRiG0RkkokiuBaYDT7oohocCr8QrJCIFIrJQRN4TkeUi8jOXXyYiL4rIKvfZN6zMdBFZLSIfisjJYfkTRGSZOzbDhdzFheV91OW/JSKD23f73QARdn7xh/j3bKP3u3/s1KptLsMwjM4gpiJxYXLPUNUzVfU2AFX9WFWvSaDuRuAEVR0LjANOEZHJwA3AS6o6DG/O5QZ3rZF4oXJHAacA97jrA9wLTMOL4z7MHQe4HNimqkOBu4DbErvt7kVz/1E0DD2d3svuw7drY6fVa3MZhmF0BjEViYuZPqEjFatHaCwm120KnAXMdvmzgSlu/yzgEVVtVNW1wGpgkohUACWqukBVFbi/TZlQXY8BJ4Z6Kz2NuiOvAw1S4lyndBY2l2EYRrIkMrS1RETmisjXRGRqaEukchHxi8i7wGbgRVV9CzhAVWsA3OcAd3olsD6seLXLq3T7bfNblVHVFmAHUB5BjmkiskhEFtXW1iYiesYRKK703Mx/9FSPcDNvGEbPIRFFUgbUAicAZ7jt9EQqV9WAqo4DqvB6F6NjnB6pJ6Ex8mOVaSvHTFWdqKoTy8v30zPdhrrx09D8Ekre/H+g+92mYRhGWohrfaWq30j2Iqq6XUTm481tbBKRClWtccNWm91p1cCgsGJVwAaXXxUhP7xMtYjkAH2ArcnKm6lofh/qjriSPgtuJX/9qzQedFy6RTIMw0hoZXuBiFwlIveIyJ9CWwLl+otIqdsvBL4CfADMBS5zp10GPO325wIXOEusQ/Am1Re64a86EZns5j8ubVMmVNc5wMtuHqXHUj/yQlr6DKZkwe0QbE63OIZhGAkNbT0AHAicDLyK1yNIZMFBBfCKiCwF3sabI3kGuBU4SURWASe5NKq6HJgDrACeB65yk/0AVwJ/xJuAXwPMc/mzgHIRWQ18H2cB1qPx57Fj8o/I3bGWohWPpFsawzAMJN4LvIgsUdXxIrJUVQ93frb+rqondI2IncvYsWN13rx58U/MZFQpe+5b5G1Zzqbz56EFfeOXMQzDSILKysrFqjox0rFEeiSh8ZPtbrK8DzC4k2QzOoIIO790PdJUR/Hi36Vbmoh0t/DAhmF0nERcncx0q89/ijcn0Rv4n5RKZcSlpWw4DV84l6IVj9Aw4jxayoanW6S9LKup5+onPqIlADn+Gu6eOtzWqRhGDyZuj0RV/6iq21T1NVU9VFUHqOrvu0I4IzZ1R16L5vWmz79+mVHmwPNW1tIc8OywmwNe2jCMnktURSIi3xeRyyPkf09ErkutWEYiBAv6snPi98jf8CYFa19ItzhhtF3e0yOdDRiG4YjVI/kmnsVWW2a6Y0YG0DDifJrLDqPkzduQlt3pFgeAU0eUkesXBM8Z5KkjytItkmEYKSSWIlFV3S+akqo2Yq+YmYMvhx1H/4ScXTX0fvcP6ZYG8Px33T11GFd8qYK7p5ozSMPo6cScbBeRA1R1U9u81IpktJemiiNpGPLv9H5vFg3DpxAoOSjdIjGmosgUiGFkCbF6JP8PeFZEjhWRYrcdB/wN+FWXSGckzM7JP0J9ufT5580ZNfFuGEbPJ2qPRFXvF5HPgZ8Do/GMcJYDN6pqN1/R1/MIFg2gbuL36LPgVgo+eZE9h3w13SIZhpElxBzacgrDlEY3oX7UxfT68En6/OuXNFYdjeba0JJhGKknkZXtRnfBl8P2L9+Iv34jxYvvSbc0hmFkCaZIehjNB46n/rD/oGjZbHJqP0y3OIZhZAGxFiRe6z6P7jpxjM5g5xd/QDC/hNLX/weCgfgFDMMwkiBWjyQU0Oq3XSGI0XloQV92fmk6eZuX0stczRuGkWJiTbavFJFPgP4upkgIwVuseHhKJTOSYvfQ0ylc9TQlb9/FnsEnEux9YJdef1lNPUuq6xhfVWzrSQyjhxO1R6KqFwKT8YJJnUHreO1nxKtYRAaJyCsislJElocNld0kIp+JyLtuOy2szHQRWS0iH4rIyWH5E0RkmTs2w0VKxEVTfNTlvyUigzv0FHoiIuz48o0QDNDnXzd36aWX1dRzzZOrmPlmDdc8ucpcyRtGDyfmZLuqblTVsUANUOy2Dar6aQJ1twA/UNUReArpKhEZ6Y7dparj3PYcgDt2ATAKL7b7PSLid+ffC0zDC787zB0HuBzYpqpDgbuA2xK56WwhUDKIXROuovCTlyj4+O9ddt0l1XU0B5SgQnNAWVKdSEBNwzC6K4nEbD8WWAX8DrgH+EhEjolXTlVrVPUdt18HrAQqYxQ5C3hEVRtVdS1eT2iSiFQAJaq6wMVjvx+YElZmttt/DDgx1FsxPHYdfhlN/UbS55//i+zZ1iXXHF9VTK5f8InntHF8VXGXXNcwjPSQiPnvncBXVfVYVT0GL3b7Xe25iBtyGg+85bKuFpGlIvInFzQLPCWzPqxYtcurdPtt81uVUdUWYAdQHuH600RkkYgsqq3NstgYvly2H3sLvj076LPg1i655JiKIq49poqJg4q59pgqmyMxjB5OIookV1X3LkhQ1Y+A3EQvICK9gceB61R1J94w1RBgHN6Q2R2hUyMU1xj5scq0zlCdqaoTVXViefl+eqbH01L+BXaN/za9Vs0lf92rKb/espp6fvNaNYvW1/Gb16ptjsQwejiJKJJFIjJLRI5z2x+AxYlULiK5eErkQVV9AkBVN6lqQFWDwB+ASe70amBQWPEqYIPLr4qQ36qMiOTgxZPfmohs2Ubd+O/Q3Hcopa/fhDSlds7C5kgMI7tIRJFciees8RrgWmAF8J14hdxcxSxgpareGZZfEXba2cD7bn8ucIGzxDoEb1J9oarWAHUiMtnVeSnwdFiZy9z+OcDLbh7FaIs/zxviaoo8rLwAACAASURBVNhMSYqHuGyOxDCyi5hOG2FvIKs73dYejga+BiwTkXdd3o+BC0VkHN4Q1CfAFe46y0VkDp6iagGuUtXQsuwrgfuAQjwnkiFHkrOAB0RkNV5P5IJ2ytjtac96jeYBh7Nr7Lcpfvf/2DP4KzQefHxKZBpTUcSMs4fZOhLDyBIk217gx44dq/Pm9QyHxqH1Gs0BJdcvzDg7gWiEgSb6P3kuvt1b2XzuXLSgb+zzDcMwgMrKysWqOjHSMXPa2I3p0FyEP49tx92Kb892LwiWYRhGkiSsSETExicyjI7ORbT0G0HdhO/Sa81zFKx5LsVSGobR00lkQeJRIrICb0EhIjJWRCzYRQYQmouYNrkisWGtMHaN+zZNAw6n9PWf4du1MYVSGobR00mkR3IX3iLEWgBVfQ+Iu7Ld6BrGVBRx6ZEHtn9C25fDtuNvh2ALfedPBw2mRkDDMHo8CQ1tqer6NlkW5KIHEOhzMDuPmk7+hjcpWjY7foF2sKymnvvf3miLEQ0jC4hr/gusF5GjABWRPLz1JCtTK5bRVTQc9h/kr5tPycK7aBw4mZZ+I5Kus7U12cZ2D7uF6jDzYcPoHiTSI/kOcBX7fF6Nc2mjJyDCjmP+l2BBKX1f+gHS3JB0lcmubDc39IbRvYirSFR1i6perKoHqOoAVb1EVbPM82HPJljQl23H307Ojk8o+dctSdeX7Mr2JdV1NLU4RdRiLlYMI9NJxGprtoiUhqX7isifUiuW0dU0VU5m17hpFH34BAWrn02qrmSsyQBKCnP2et4MurRhGJlLIv/Qw1V1eyihqttEZHwKZTLSRN3Eq8iveYvS12/k8wGHEygZFL9QFMZUFHV4bmPn7hYvnjOee+edu1s6LIdhGKknkTkSX1jMEESkjMQUkNHd8OWy7YRfgfjp+4//ZHn11rRYXo2vKiYvxxsay8sxp4+GkekkohDuAP4lIo+59LlA8gPpRkYSKK5k+3G/oOyFq/n8mRuZ2fzNDltedZR4Th/NosswMotEvP/eLyKLgBPwRhqmquqKlEtmpI09g0/krQHnc9HmR3lTvsAzgaNYUl3XpY12tKGxZTX1XP3EKloCSo5/I3dP7ToFZxhGZKIObYlIifssAzYCDwEPAhtdntGD2XHkf7JYD+OXuX/gMP+GjBlemrdyK80BRfFMi+ettDhmhpFuYs2RPOQ+FwOLwrZQ2ujBjK7sQ91JdyK5Bfy19HccnjERituGPciuMAiGkYlEVSSqerqLSHisqh4ath2iqod2oYxGmhh+6KE0nPxriuo/pfTVH0MGxK45dUQ5uX5vjDXX76UNw0gvMa22XNjaJztSsYgMEpFXRGSliCwXkWtdfpmIvCgiq9xnuEXYdBFZLSIfisjJYfkTRGSZOzbDKThcWN5HXf5bIjK4I7Ia0WmqnMzOST+gcO0L9H5vVrrFYUxFEXdPHc4VX6rg7qnDbX7EMDKARMx/3xSRIztQdwvwA1UdAUwGrhKRkcANwEuqOgx4yaVxxy4ARgGnAPeIiN/VdS8wDS+O+zB3HOByYJuqDsXzUnxbB+Q04lB/+DfYfegpFL99F/nV/0y3OB33eGwYRkpIRJEcj6dM1ojIUtczWBqvkKrWqOo7br8Oz9FjJXAWEHI1OxuY4vbPAh5R1UZVXQusBiaJSAVQoqoLXA/p/jZlQnU9BpwY6q0YybPXg+/GBrYfezMtpUPo+9IP8O/4NN2iGYaRQSSyjuTUZC/ihpzGA28BB6hqDXjKRkQGuNMqgTfDilW7vGa33zY/VGa9q6tFRHYA5cCWNtefhtejobKyEiM+kTz4jjv5d/R/8lzK/n4VW6Y8jOZlhiWXYRjpJZb5b4GIXAf8F95Q0meq+mloS/QCItIbeBy4TlV3xjo1Qp7GyI9VpnWG6kxVnaiqE8vLbXI2ESJ58A2UDGLrSb8hZ8en9H35vyBoYWkMw4g9tDUbmAgsw+uV3NHeykUkF0+JPKiqT7jsTW64Cve52eVXA+HOnaqADS6/KkJ+qzIikgP0AWxhQScQzYNv08AvsuPoH1Ow7lVKFt6ZZikNw8gEYg1tjVTVMQAiMgtY2J6K3VzFLGClqoa3OHOBy4Bb3efTYfkPicidwEC8SfWFqhoQkToRmYw3NHYp8Ns2dS0AzgFedvMoRoJEczcSy01Jw8gLyd26it5L/0RLn4NpGHHefvU+9f4W5q/eznFDS5kyul+X3IthGOkhliJpDu24+Yf21n008DVgmYi86/J+jKdA5ojI5cA6PN9dqOpyEZkDrMCz+LpKVUNjJ1cC9wGFwDy3gaeoHhCR1Xg9kQvaK2Q2Ey+SYSwPvjuO+jH+umr6vPFzAsWVNFYdvffYU+9v4faXvejMC9d5sURMmRhGzyWWIhkrIqE5DQEKXVrwlpiUxKpYVd8g8hwGwIlRytxCBIeQqroIGB0hfw9OERntJ9I8SMImtb4ctp14J/3mXkzfF69jy1kP0lI2HID5q7e3OnX+6u37KRJzvGgYPYdYK9v9qlritmJVzQnbj6lEjO7B+Kpi/D5BAL+v/e7aNa83W0+5F80poGzed/DVbwLguKGlrc5rm04klO5e02MLs5ty7FkbyZLIOhKjR6NtPhNnWU09f17p462Jv8bXtIPyeVcgTXUMKS/E735Zfh8MKS9sVS5eKF2L2d512LM2OgNTJFnMkuo6AkFPhQSCtCs2engD9I1X/LxzxO3kbFtD2QvfY+m62r1uuVT3rzdeKN1IQ27dge74Zt9dn7WRWZgiyWKimfgmQtsG6B9No9h+7M3kb3iLSz7/Fbk+jTpkFgqlC5FD6SYjVzxS1dh31zf7VD5rI3uwkLlZzJiKIq49pmqvmW57Jr29Bmijs/jyGqDdFWfh272Fird+xY2+ID8JfDNq2byc1mXbyhUrQmJHiWellgxJGS6kkVQ9ayO7MEWSxSyrqec3r1XTHFDe27CLIeWFCTck0Rqg+rGXs2LtZ1y0+WG2am/uDJy/X6OaSOMVy/S4o6SysY+kWLsLqXjWRnZhiiSLSbZhjdYA7Zz0fR5+ehNX5zxNHUWMr/p+wmVTSSobe3uzN7IZUyRZTKoa1jVb9/Cr5m/Smwam5zzEa+8fABXTOqVuiL8GpSOr9Q3D6DimSLKYZBvWaG5Q5q/eThAf/9n8XfJp5qtr72L7ytKIrlTaS7x5jmRW66dSLsPoyZjVVpbT0SBRITcoC9fVcfvL63nq/X2e+0MLEFvI4erma/i0dDJ9Xr+Jwg/3BduMZz0V7Xi8NSjxjqcKM6M1shnrkRgdYs6SzfulQ72S0Geot5L7hd/T+PfvUvrqT0CEhcUndbhXEW8NSrzjqaI7T7YbRrKYIjFSwpTR/VoNd207+W76/v1qSuf/mMBBtTQHjog6yR/LCCC0BiUUqKbtGpR4x1OFzb8Y2YwNbRkd4rzxA2Km26I5hWw9+Xc0Dvoyp637FV/L+UfURXCxFsmNryomx+/5B8uJUjYvxyubl9O1PQOLJW9kK9YjMaISyzpqSHkhPrzhIx/7+9OKSE4BW0/6LWX/uJafrfsTxxyUT8sRl+9Xd/y3++j+waxnYBhdjykSIyLxrJAeXLyRoNsPuvStpw+JX3FOPltPmkHfV67nxI/vpe4AqDvwe9Am3k0066ol1XW0BJx/sAAR177YAjvD6FpSNrQlIn8Skc0i8n5Y3k0i8pmIvOu208KOTReR1SLyoYicHJY/QUSWuWMzXORFRCRfRB51+W+JyOBU3Us2Es8Kad22xpjpmFZZ/jy2nfAr6g+bSvE791Ky4Jegwf3Pi0C6JtMNw4hOKudI7gNOiZB/l6qOc9tzACIyEi+64ShX5h4R8bvz7wWm4YXeHRZW5+XANlUdCtwF3JaqG8lG4jnzO6hvftR0Qg4MfX52HHMzu8ZcRu/3H6D05R9BoCmuXOGT5105mW4YRnRSpkhU9TW88LeJcBbwiKo2qupaYDUwSUQqgBJVXeBisd8PTAkrM9vtPwacGOqtGMkTmmuYNrki4uK6iycciM89bZ946RAJr6kQYefk69k56fv0WvMs5c9fgTTtiilXeA9EsR6JYWQC6bDaulpElrqhr74urxJYH3ZOtcurdPtt81uVUdUWYAdQHumCIjJNRBaJyKLa2trOu5MeTjwrJL8P5yq+dX67XJOLsGvct9l23C/J27CIfn+7FF/95qinx3NBbxhG19PViuReYAgwDqgB7nD5kXoSGiM/Vpn9M1VnqupEVZ1YXh5R12QtHY3PET7p3RJoHbwqXm8mEruHT2HrKffg3/kp/Z86n5zaDyKel07zXsMwItOl4wKquim0LyJ/AJ5xyWpgUNipVcAGl18VIT+8TLWI5AB9SHwozSA5/1Dhk96Rhpg6YjnVOOjf2HLmg5Q//x36zb2YbSfeSeNBx+5Xr5n3GkZm0aU9EjfnEeJsIGTRNRe4wFliHYI3qb5QVWuAOhGZ7OY/LgWeDitzmds/B3jZzaMYCZKMf6jwISYfnTfE1FL+BT6f8igtJQdT9vfvUrT0PmjztdrCP8PILFJp/vswsAA4TESqReRy4HZnyrsUOB74TwBVXQ7MAVYAzwNXqWrAVXUl8Ee8Cfg1wDyXPwsoF5HVwPeBG1J1Lz2VZMKshg8x5UYYYkompG2w6ABqz3yAPQefQJ83b6N0/nRoaYxfMAG6Y1z1ZMnGeza6Fsm2l/ixY8fqvHnz4p+YJcRavd7RuB+th8yk4y7VNUjvd+6lZPHdNPU/nK1fnUGw6ID219PZcnUjsvGejdRQWVm5WFUnRjpmvraMiCSyFiTaEFNnuHJfVlPP/Ys2s2Dg19l60gxytq2m/+NTyfvszaQMBLLN1Xs23rPR9ZgRfhYTa7I9kTC80Xokya4+31+uoxh/9hz6vngN5c9ezrLA+cxsOZ1cv69db9ipdvUerweXDsy9vdEVmCLJYmIpi3gN0LKaeq5+YhUtASXHv5G7p+5r0JN15R5RriOHsGXKHLY/9UN+uP1hxvMBP2q5ol1x5lNp8ZWpERLNys3oCkyRZDGxlEW8Bmjeyq00B7x+R3NAmbdyaysllJfT8bfgaHJpXhHrvvz/mPPU77jB/xeezZvOuoJbgQNjVxhGqhw6JtKDSxfmxNJINaZIsph4yiJWA7S1oSlqOtm34Fjl12zdw59bvsrCwHB+mzuDiQuupH7PNOomfBd8ue26TmdiQ0hGNmOKJMvp+NtqW8cCibmBT1au+au3A7BcB3NG0y38rvRBjlvye/Kr32Db8bcTKD2kw9dMBhtCMrIZs9oyOkhbs/GuMSM/bmjp3v16CllxxM/Y+pXf4N9ZTf/Hp1L0/l8SdkkfiWTWXNhCSSNbsR6J0SHKeuXFTKeKIeWF+H0QCHrOIoeUF7Kn4qs0HTiO0ld/Sp9/3ULB2r+z/ZibCfQ5uF11Z+qEuWFkOtYjMaIS6+381BFl5Dg/8jk+4dQRZV0i05LqOoKuw6HBfc4ig70GsPWU/2Pbsb8gt/ZD+j82haKlf4Zg4hZjtubCMDqGKRIjIp5570f834Iarn7io4jKREQR99lVxFyjIsLuw87mtWPnsKboCPq8eTv9nzyP3M3L9p4SSzkm4zLGMLIZG9oyIjJvZS3NzttZc8BLhw/zLKmuIxB0sdODkWOnp4J4a1SW1dRzzbztNAeu4rScL/Kr+r/Q76nzaRh5IW8O+hbXPLsp6tCVTZgbRsewHokRhdhWWel6e48Xj2SfexbhueYjuWf4n6kfdTG9Vj7Cl146m6n6EmgwquuWeBPmT72/heueWs1T729Jyf0ZRnfEeiRGRE4dUcYzK2ppCWrEOZB0vb3Hu27boa+C3n3YOfonNHzhP2h54UZ+2fJHLvL/g1taLqGkcNB+9cfiqfe3cPvLXiDPhes8JTRldL9kb8kwuj2mSIyoxJsDSdeK6VjX/Wjz7ojplvIvcP+QX1Oz8HF+lPsIj+TdzKr3Xyan6ie0lB6a0HVDa1jC06ZIYpOJ/seMzseGtoyIRJoD6R5EX98yflAJz/u+zFea7uCOwPkc0vAe/f96Bn1e/Qn+XRuIx7D+hTHTFvejNYl4kDZ6BtYjMSLSXV1+nDqinGdX1tISgBy/lw4RPiw2uuq/2FL6PXovmUnRiofptepv1I+8gEUVF/HmloKIb9D1jcGoaVuDsj+Z7H/M6FxSGSHxTyKyWUTeD8srE5EXRWSV++wbdmy6iKwWkQ9F5OSw/AkuquJqEZnhQu7iwvI+6vLfEpHBqbqXbCTU6E6bXNGtGsUxFUXcPXU4V3ypgrunDo/oPyw0mR4sLGfnUdPZfMHzNAw7k17LH+JLL5zJwLd/wc1PLIjwBh29t9MZMVh6GmZOnT2kcmjrPuCUNnk3AC+p6jDgJZdGREYCFwCjXJl7RMTvytwLTMOL4z4srM7LgW2qOhS4C7gtZXeSpfRElx+RrK4CvQey49ibueWgWTwR+DIX+l/mpZzrKJ0/nZxtq/eeN3xAr1Z1haeTjcHSE+muLyNG+0nZr11VX4vQSzgLOM7tzwbmA9e7/EdUtRFY6+KwTxKRT4ASVV0AICL3A1Pw4rafBdzk6noMuFtERLMtdrDRilhDTPGsrlY192dWy7e5u2UK38p5jot2zSf/ry+y56Bj2TX6Ul5Y2dpy7YUPaveWTzYGS0/FXNhnB1092X6AqtYAuM8BLr8SWB92XrXLq3T7bfNblVHVFmAHUE4ERGSaiCwSkUW1tbWddCtGJhJriCmS1VU4Zb2896rP6M/PWi7j54MfYOeEq8ndvIx+z13OHduu4SL/S/RiDwAbdjbvLRtvfQtk52R8Nt5zNpIp/e+2q99g38tdpPxYZfbPVJ0JzAQYO3as9Vh6MLGGmIb1L9zbEwmlwzl1RDl/W1G71yHkMaMPZVfFGHaN/RaFH8+j8M1Z/IJZTM95iKcDR7H9oHP3lo23viUbJ+Oz8Z6zla7ukWwSkQoA97nZ5VcD4avDqoANLr8qQn6rMiKSA/QBtqZMcqNdpOtNNNo6EoD12xpbHWubBvCJ94biC39Nycln9/Ap8LW5/N8hv+EN/yTOz32dqz/+Dv0en0rR+w/g27MtplzhPaWmLJmMNyeY2UNXK5K5wGVu/zLg6bD8C5wl1iF4k+oL3fBXnYhMdtZal7YpE6rrHOBlmx/JDNK7fiC6ZdXn9c2tjrRNx107I8IZJ32Vsd/6PVu+9io7jvoJiNDnX79gwAPHkPv0NDYufIwbnly23z2H95SU7JiMN6ut7CFlv2YReRhvYr2fiFQDNwK3AnNE5HJgHXAugKouF5E5wAqgBbhKVZ3LQK7EswArxJtkn+fyZwEPuIn5rXhWX0YGkM71A7HWkQwqzWflpoZW6XASWTvz1PtbmL96O8cNLWXK6EuoH30JObUfsvb1hxix6R+ckPsODZrPute/SOERZ7LnoGPRvN68+cnOVvW8+cnOHr8q3pxgZg+ptNq6MMqhE6OcfwtwS4T8RcDoCPl7cIrIyCzSuZgxtI4kUuO1vY0lVdt0vIYvmtVXS/lhLB76PS5YdyZHyoec4V/A1Pp3KHr5NdSXS+PALzJ56wg+ltFUa38AtrTpDfVUzGorO+j5/Wujy0n3m2i0xiveZHussgBzlmzeLx1u/gs+FuoIFrWM4LNR0/nWQRspWPsiBevm8909b/DdfFgdHMjrwTH4+/wb0lSF5lkja3R/TJEYKSET30TrGwMx08ngmf+G9cIG9aHpwIE0HXgEO790PX9+fgHBNS/zb75lXOB/hcJ1f0dn30hz/1E0VhxJU8VEmgaMQwtK418sAuYc0UgnpkiMHkf0RjV2jJV4HH1oHz5ZvLlVOsSYiiKuPaZq7/xJ28Z8/tY+rAqcxqzAaeTTxFmla/nvERvJ2/A2vZfdj7w3C4Dm0iE0DxhL04DRNPcfQ3PZcPDnxVQUXjTLVbQElBz/Ru6eama2pli7FlMkRo8i1tqFovzWRopt0/GI1aNZVlPPXa+upyUASz6rY0h5YasG7PNd++ZjGsnjhT0jue5Izz5EWnaTu3kZeZuWkLfxHfLXvUKvj54AQH251PU+hPrtBxIIDmLOokHkn/xvDD/kEPDczjFv5VaaA55NWHNAmbdya1Y3noko1tZGEz3b6KErMEVi9ChiWYwtqd7V5txd+5WP/SYbvUcTLzTx4LIC3t1Q3yodQnMKaRo4iaaBk1yG4q/7jNzPl5Fbu5LP17zH0bKUqTmvecf/cSvB3N60lA6mpc9gjtnUB/GVsE4HsF4HsK2+tXFDtjWa8RSrBSjrfEyRGD2KWBZj/YpyW53bNh1vJfbwAa0n51unYw+bXXl0Jd/560d73TVceXQlUREhUFJFoKSKPUNOZfUgT67egR2M8H/Gj8c3cXBgPf6dn5K38R2m7Kphat6+9TItNTnw8IEEelfwaXMp/o15jNFSPqzuw6Ltw5g8YjDBgr4E80shJz+6HN2W6GuJwAKUpQJTJEaPIpbF2MUTDuCfn+zY6wLl4gkHtCobWn2u7PPTFV4+lmPGU0eUufUrSo5//9DEa2p3t1qQuKZ2d8LDT63vaSKlFUXsCDt+zV/fZ+vGTzlINlMlnzO+eAenHtCEf1cNxVuXcpl/KwXizI1XuM0RzClE84oJ5hejeSUEc4tQtwVze6E5BWhuIeovQP35kJOH+nJRXy743af4wedHxQ/i27spzk0AsncYDlXvCSgIof1gWH4QCaU1CHj7osEI57rPNnyjpJFgzkYCQRCfj8tKq8j/dM1eOS/q30Bw/RaayKWZHM4eWIW/7jPUn+fdb04h+DreNGbj/IwpEqPHEc1ibExFEff8R+Q1JhDfFfz4qmJy/Bv3Kovw3o63fiW6yfMzy2v3S7fnLTiWFVz1LtioA/lYBwLwj0AuXzrBW3p1wzMf89rH2ymhnn6ykxMGBvju+Hx8e7bja9yOb892pKkOX1Mdvsad+Bp3ILs24GuuR5p3Iy27kWD3WvNSBswI/+oWtT4+BZgS3hF7121hqC8Xze3lKda83p5izSsmmN/HU7wFpV6vrqAvgcIygoXlBAv78d62XK55ak3W+RczRWL0OGK9EcZqkBNzBa9tPhOru19RTsx0MjQ0BaOmJw8u4bWPd7CT3uzU3pxz2CD2HNrOYZxgMxJoQgJN0LIHCTYjgWYItnhKRgNIMADBFkAhGPB6G616DmGIEOqleL0WX1iet6+hng3i9SQEd65/X+9GQsYSbYcV21xbA4gqaMteOSXY7O7LuzcCjUigEWnZ4ylPp0R9zfVI0y58Tbvw7a4lZ/tafE2ewo1Ef8nhJX8pG31l1GgZfd4aTK9hQwkUV9FSchCB4krw57Xv+XcDTJEYPYpkPM7utxakzYr8SL64Eq374gkH8sbanQTVcwh58YQD23trUQm2aajD0w8t3tTq2EOLN7V/PsANZWlu575Zd+shoGCL14Pbsw3f7lp8u2vx795C7ebPWPrRxwxgK2N8n3DQlsX4Nu/r0SlCoHggLX0OoaX0EFpKh9BSNozmvkPR/JKkRErn8zRFYvQokvHzFW9FfrKuX/w+0ID32ZkM7VfAuxsaWqVD1NQ1tTq3bTpddPu1L74cgoVlBAvLoO+QvdkFQOGIel5zv6G8Awvx7d6Cf+dn5OxcR87Odfh3fErOjrX0+uAdfC37vreWogqa+42gpXwETf1G0jxgDMFe/RMSJ90u+02RGD2KZBv7WMNTybh+SaY3E48rj67iysc+2tvbufLofZEX8vzC7qC2SmcCPXntS9vfULDXAIK9BtB84PjWJ6rir68hZ+tH5G5dRU7th+TWfkDBuvnOuMAplwGH03TgETQdeATN5V+IaAiQTkepYIrE6GGk2s9XR12/pNKR5ZiKIu49J7IRQSDYetirbTp9xDbRzQpECPQeSKD3QBoPOm5fdnMDObUfkrf5PXI/X0bepncpXPt3AII5vWiqmEBTxSQaKyfTXD4CfP60OkoFUyRGDyQT/XylS8H1zveztSHQKp0JxHL3n+1obi+aDxzfqgfj27WRvE3vkF+ziLwNCylZfwcAgfxSGquOYlLVl/n9aRN56/PctMyRSLbFgho7dqzOmzcv/omG0Y2INtEavoob4EcnDOrUxXfJrJrv1pPtacbX8Dn5G94if/0b5Ff/E//uLShC8wFj2XPQ8ew+5CQCpYd06jUrKysXq+rESMfSokhE5BOgDggALao6UUTKgEeBwcAnwHmqus2dPx243J1/jar+3eVPYF/Qq+eAa+NFSTRFYvQ0Wk+0yn4TrfEa+4426IkoKVMWXYAqubUryP90PgWfvkLeluUANPcdxu5DT2b3kNM6RanEUiTpHNo6XlW3hKVvAF5S1VtF5AaXvl5ERuJFPxwFDAT+ISLDXQTFe4FpwJt4iuQU9kVQNIx2k6kNXyy54k20ThndL2pvIRlrn3iLLNNtSdTTiPobEKG53yia+41i14Sr8O2qoXDtixSsfYHixb+jZPHdNPUbxe6hp7N76GkEew3odNkyaY7kLLzQvACzgfnA9S7/EVVtBNa60LqTXK+mRFUXAIjI/XiLVk2RGB0iUxu+eHIlM9GajLVPPN9l6bYk6km057cZ7F1B/ZhLqR9zKb76zRSueY7C1c/Q583bUH8uDaMu7nT50qVIFHhBRBT4P1WdCRygqjUAqlojIiG1WYnX4whR7fKa3X7b/P0QkWl4PRcqK2M4yzOymkxt+OLJlcxEfjJKKJ7vsnRbEvUkOvrbDBYNoP7wr1N/+Nfxb1/rrXtJAelSJEer6ganLF4UkQ9inBvJ8F1j5O+f6SmqmeDNkbRXWCM7yNSGLxG5OmqplowSiue7LN0hl3sSnfHb7OzJ93DSokhUdYP73CwiTwKTgE0iUuF6IxVAKBRdNTAorHgVsMHlV0XIN4wOkakNX6aujUmkbCaaYndHMvW3GaLLFYmIFAE+Va1z+18Ffg7MBS4DRxc/rwAAB91JREFUbnWfT7sic4GHROROvMn2YcBCVQ2ISJ2ITAbeAi4Fftu1d2P0NDK14ctUuYyuI5N/A+nokRwAPCmeB88c4CFVfV5E3gbmiMjlwDrgXABVXS4ic/CiKLQAVzmLLYAr2Wf+Ow+baDcMw+hyulyRqOrHwNgI+bXAiVHK3ALcEiF/ETC6s2U0DMMwEqeT/ZAahmEY2YYpEsMwDCMpTJEYhmEYSWGKxDAMw0iKrPP+KyKfA592sHg/YEvcs7oek6t9mFztJ1NlM7naRzJyHayqEUM2Zp0iSQYRWRTN+2U6Mbnah8nVfjJVNpOrfaRKLhvaMgzDMJLCFIlhGIaRFKZI2sfMdAsQBZOrfZhc7SdTZTO52kdK5LI5EsMwDCMprEdiGIZhJIUpEsMwDCMpTJFEQUT+JCKbReT9sLybROQzEXnXbaelQa5BIvKKiKwUkeUicq3LLxORF0VklfvsmyFypfWZiUiBiCwUkfecXD9z+el+XtHkSvtvzMnhF5ElIvKMS6f1ecWQK+3PS0Q+EZFl7vqLXF7an1cUuVLyvGyOJAoicgywC7hfVUe7vJuAXar6qzTKVQFUqOo7IlIMLMaLVf91YKuq3ioiNwB9VfX6DJDrPNL4zMSLV1CkqrtEJBd4A7gWmEp6n1c0uU4hzb8xJ9/3gYlAiaqeLiK3k8bnFUOum0j/f/ITYKKqbgnLS/vziiLXTaTgeVmPJAqq+hqwNd1ytEVVa1T1HbdfB6zEi1V/FjDbnTYbrxHPBLnSinrscslctynpf17R5Eo7IlIF/Dvwx7DstD6vGHJlKml/Xl2JKZL2c7WILHVDX2np3ocQkcHAeLwIkQeoag14jTowIEPkgjQ/Mzcc8i5e+OYXVTUjnlcUuSD9v7FfAz8CgmF5aX9eUeSC9D8vBV4QkcUiMs3lZcLziiQXpOB5mSJpH/cCQ4BxQA1wR7oEEZHewOPAdaq6M11ytCWCXGl/ZqoaUNVxQBUwSUQyIhhaFLnS+rxE5HRgs6ou7srrxiOGXGn/fQFHq+oRwKnAVW5YPBOIJFdKnpcpknagqpvcnz8I/AGYlA453Jj648CDqvqEy97k5ilC8xWbM0GuTHlmTpbtwHy8eYi0P69IcmXA8zoaONONrz8CnCAifyH9zyuiXBnwvFDVDe5zM/CkkyHdzyuiXKl6XqZI2kHoh+E4G3g/2rkplEGAWcBKVb0z7NBc4DK3fxnwdCbIle5nJiL9RaTU7RcCXwE+IP3PK6Jc6X5eqjpdVatUdTBwAfCyql5Cmp9XNLnS/bxEpMgZlyAiRcBXnQzp/n1FlCtVz6vLY7Z3F0TkYeA4oJ+IVAM3AseJyDi8scdP+P/t3V9o1WUcx/H3J6WUxItoSDeRQWAaUjYDayFhJnUXlcPoj1aSSHRRo4uMrCCIboxQZIS5EB0saIFFwwtbszYx5yr7IwQbddFFBWuY5Sr9dvE8xx0PO3rGz8NZ9nnB4Pyec57f85yHs33P8ztn3y882YCp3QY8DBzN19cBngdeA7okPQ78CDwwTea1psFrdhXwjqQZpDdOXRHxgaQBGrte1ea1axq8xibT6NdXNa83eL3mAd3pfRQzgT0R0SPpcxq7XtXmVZfXl7/+a2ZmhfjSlpmZFeJAYmZmhTiQmJlZIQ4kZmZWiAOJmZkV4kBiRkrrorJMz2Xtr0i68zx9X5LUVr/ZmU1v/j8Ss3OIiBcbPQez6c47ErMJMyS9pVQfZJ+k2ZI6JN0PIOkeScckfSrpTeWaGNlCSb2ShiU9nR//XNntLZL259srctoRJG2XdFhn1yRZIam7dGJJKyW9RwVJayW9L2mvpBFJT0l6Rqlex0FJV+TH9Up6Q1K/pK8l3ZLbm5RqZRyR1C7pB0lX1mVl7aLmQGI24TpgW0QsAn4D7ivdIWkW0A7cHREtQFNF3wXAKlLuos0571gfcHu+vxmYk9tbgAO5fVNENAOLgeWSFgP7gesllcZYB+ysMucbgAfzuK8Cf0TETcAA8EjZ4y6PiFuBjcDbuW0zKdXIElIupqvPsz5mk3IgMZswEhGl9C6DwDVl9y0AhiNiJB93VvT9MCLGcxGhn0kpKgaBm3POo3HSH/dmUnApBZLVko4AQ8AiYGGkdBO7gIdyPq5lwEdV5vxxRByPiF+AMWBvbj9aMf9OOFNnZ24+bwspASIR0QOMnmNtzKryZyRmE8bLbp8CZpcda4p9Z0bE3zlb7TqgH/gKuIOUxvs7SfOBNmBpRIxK6gBm5XPsJAWFk8C7EfGPpHtJuwiAJyYZ93TZ8WnO/v2uzIUUNTwns5p4R2JWm2PAtUpFuwBaa+zXRwoWfaRdyAbgi7zrmAucAMYkzSPVjQDOpAD/CXgB6Mht3RFxY/45PMX5twJIagHGImKMVN53dW6/C2hooTb77/KOxKwGEfGnpI1Aj6RfgUM1dj0AbAIGIuKEpJO5jYj4UtIQ8A0wDHxW0Xc30BQR316ApzAqqZ8UvB7LbS8DnZJagU9IhY6OX4Cx7H/G2X/NaiRpTkT8nmuvbAO+j4gtdRxvKzAUETsKnqcXaKvcxUi6DDiVL5stA7bnio1mU+IdiVnt1kt6FLiU9OF4e70GkjRIuuz1bL3GIH1Lq0vSJcBfwPo6jmUXMe9IzMysEH/YbmZmhTiQmJlZIQ4kZmZWiAOJmZkV4kBiZmaF/At9GVKj1NFJaAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PlotPolly(p, x, y, 'highway-mpg')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.55663829e+00, 2.04754306e+02, -8.96543312e+03, 1.37923594e+05])"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.polyfit(x, y, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>We can already see from plotting that this polynomial model performs better than the linear model. This is because the generated polynomial function \"hits\" more of the data points.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #4:</h1>\n",
"<b>Create 11 order polynomial model with the variables x and y from above?</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3 2\n",
"-1.557 x + 204.8 x - 8965 x + 1.379e+05\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"# calculate polynomial\n",
"# Here we use a polynomial of the 11rd order (cubic) \n",
"f1 = np.polyfit(x, y, 11)\n",
"p1 = np.poly1d(f1)\n",
"print(p)\n",
"PlotPolly(p1,x,y, 'Highway MPG')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"# calculate polynomial\n",
"# Here we use a polynomial of the 11rd order (cubic) \n",
"f1 = np.polyfit(x, y, 11)\n",
"p1 = np.poly1d(f1)\n",
"print(p)\n",
"PlotPolly(p1,x,y, 'Highway MPG')\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>The analytical expression for Multivariate Polynomial function gets complicated. For example, the expression for a second-order (degree=2)polynomial with two variables is given by:</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"Yhat = a + b_1 X_1 +b_2 X_2 +b_3 X_1 X_2+b_4 X_1^2+b_5 X_2^2\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can perform a polynomial transform on multiple features. First, we import the module:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import PolynomialFeatures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create a <b>PolynomialFeatures</b> object of degree 2: "
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"pr"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"Z_pr=pr.fit_transform(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original data is of 201 samples and 4 features "
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 4)"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"after the transformation, there 201 samples and 15 features"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(201, 15)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Z_pr.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Pipeline</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Data Pipelines simplify the steps of processing the data. We use the module <b>Pipeline</b> to create a pipeline. We also use <b>StandardScaler</b> as a step in our pipeline.</p>"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create the pipeline, by creating a list of tuples including the name of the model or estimator and its corresponding constructor."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Input=[('scale',StandardScaler()), ('polynomial', PolynomialFeatures(include_bias=False)), ('model',LinearRegression())]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we input the list as an argument to the pipeline constructor "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe=Pipeline(Input)\n",
"pipe"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can normalize the data, perform a transform and fit the model simultaneously. "
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n"
]
},
{
"data": {
"text/plain": [
"Pipeline(memory=None,\n",
" steps=[('scale', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomial', PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)), ('model', LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False))])"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe.fit(Z,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Similarly, we can normalize the data, perform a transform and produce a prediction simultaneously"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([13102.74784201, 13102.74784201, 18225.54572197, 10390.29636555])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ypipe=pipe.predict(Z)\n",
"ypipe[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1>Question #5:</h1>\n",
"<b>Create a pipeline that Standardizes the data, then perform prediction using a linear regression model using the features Z and targets y</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/preprocessing/data.py:625: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/base.py:465: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" return self.fit(X, y, **fit_params).transform(X)\n",
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/pipeline.py:331: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\n",
" Xt = transform.transform(Xt)\n"
]
},
{
"data": {
"text/plain": [
"array([13699.11161184, 13699.11161184, 19051.65470233, 10620.36193015,\n",
" 15521.31420211, 13869.66673213, 15456.16196732, 15974.00907672,\n",
" 17612.35917161, 10722.32509097])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n",
"\n",
"pipe=Pipeline(Input)\n",
"\n",
"pipe.fit(Z,y)\n",
"\n",
"ypipe=pipe.predict(Z)\n",
"ypipe[0:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"</div>\n",
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"Input=[('scale',StandardScaler()),('model',LinearRegression())]\n",
"\n",
"pipe=Pipeline(Input)\n",
"\n",
"pipe.fit(Z,y)\n",
"\n",
"ypipe=pipe.predict(Z)\n",
"ypipe[0:10]\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 4: Measures for In-Sample Evaluation</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>When evaluating our models, not only do we want to visualize the results, but we also want a quantitative measure to determine how accurate the model is.</p>\n",
"\n",
"<p>Two very important measures that are often used in Statistics to determine the accuracy of a model are:</p>\n",
"<ul>\n",
" <li><b>R^2 / R-squared</b></li>\n",
" <li><b>Mean Squared Error (MSE)</b></li>\n",
"</ul>\n",
" \n",
"<b>R-squared</b>\n",
"\n",
"<p>R squared, also known as the coefficient of determination, is a measure to indicate how close the data is to the fitted regression line.</p>\n",
" \n",
"<p>The value of the R-squared is the percentage of variation of the response variable (y) that is explained by a linear model.</p>\n",
"\n",
"\n",
"\n",
"<b>Mean Squared Error (MSE)</b>\n",
"\n",
"<p>The Mean Squared Error measures the average of the squares of errors, that is, the difference between actual value (y) and the estimated value (ŷ).</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 1: Simple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.4965911884339176\n"
]
}
],
"source": [
"#highway_mpg_fit\n",
"lm.fit(X, Y)\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(X, Y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 49.659% of the variation of the price is explained by this simple linear model \"horsepower_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can predict the output i.e., \"yhat\" using the predict method, where X is the input variable:"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The output of the first four predicted value is: [16236.50464347 16236.50464347 17058.23802179 13771.3045085 ]\n"
]
}
],
"source": [
"Yhat=lm.predict(X)\n",
"print('The output of the first four predicted value is: ', Yhat[0:4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"lets import the function <b>mean_squared_error</b> from the module <b>metrics</b>"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value is: 31635042.944639888\n"
]
}
],
"source": [
"mse = mean_squared_error(df['price'], Yhat)\n",
"print('The mean square error of price and predicted value is: ', mse)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 2: Multiple Linear Regression</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square is: 0.8093562806577457\n"
]
}
],
"source": [
"# fit the model \n",
"lm.fit(Z, df['price'])\n",
"# Find the R^2\n",
"print('The R-square is: ', lm.score(Z, df['price']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 80.896 % of the variation of price is explained by this multiple linear regression \"multi_fit\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the MSE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we produce a prediction "
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Y_predict_multifit = lm.predict(Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" we compare the predicted results with the actual results "
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean square error of price and predicted value using multifit is: 11980366.87072649\n"
]
}
],
"source": [
"print('The mean square error of price and predicted value using multifit is: ', \\\n",
" mean_squared_error(df['price'], Y_predict_multifit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Model 3: Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's calculate the R^2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"let’s import the function <b>r2_score</b> from the module <b>metrics</b> as we are using a different function"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import r2_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We apply the function to get the value of r^2"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The R-square value is: 0.674194666390652\n"
]
}
],
"source": [
"r_squared = r2_score(y, p(x))\n",
"print('The R-square value is: ', r_squared)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can say that ~ 67.419 % of the variation of price is explained by this polynomial fit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>MSE</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also calculate the MSE: "
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"20474146.426361218"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_squared_error(df['price'], p(x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Part 5: Prediction and Decision Making</h2>\n",
"<h3>Prediction</h3>\n",
"\n",
"<p>In the previous section, we trained the model using the method <b>fit</b>. Now we will use the method <b>predict</b> to produce a prediction. Lets import <b>pyplot</b> for plotting; we will also be using some functions from numpy.</p>"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a new input "
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"new_input=np.arange(1, 100, 1).reshape(-1, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Fit the model "
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm.fit(X, Y)\n",
"lm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Produce a prediction"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([37601.57247984, 36779.83910151, 35958.10572319, 35136.37234487,\n",
" 34314.63896655])"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat=lm.predict(new_input)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can plot the data "
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAD4CAYAAAD//dEpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3xUdfb/8ddJQhVBSkAkaBAQpIjIiCCQ7K40EQEVFRuouFhQKeu6srvfte6uritNKSIWsCFiAQvVktAEAop0CUXpREHERj2/P+byc2AjRJIwyeT9fDzmkTvnzudyPpYc7v3cOdfcHRERkWOJi3YCIiJSOKhgiIhIjqhgiIhIjqhgiIhIjqhgiIhIjiREO4H8UqlSJU9OTo52GiIihcrChQu/dvfE7PblWcEws3ggA9jk7h3NrALwGpAMrAeucvedwWcHAD2BA8Dd7j41iDcBXgBKAe8DfdzdzawEMBZoAnwDXO3u64+WT3JyMhkZGXk1PRGRIsHMvvy1fXl5SaoPsCLi/X3AB+5eG/ggeI+Z1QO6AfWB9sDwoNgAjAB6AbWDV/sg3hPY6e61gEHAY3mYt4iI5ECeFAwzSwIuAUZHhDsDY4LtMUCXiPg4d9/j7uuATKCpmVUFyrr7XA9/m3DsEWMOHWsCcJGZWV7kLiIiOZNXZxiDgXuBgxGxKu6+BSD4WTmIVwM2RHxuYxCrFmwfGT9sjLvvB3YBFY9Mwsx6mVmGmWVkZWXldk4iIhIh1wXDzDoC2919YU6HZBPzo8SPNubwgPsodw+5eygxMds1GxEROU55sejdAuhkZh2AkkBZM3sJ2GZmVd19S3C5aXvw+Y1A9YjxScDmIJ6UTTxyzEYzSwDKATvyIHcREcmhXJ9huPsAd09y92TCi9kfuvv1wCSgR/CxHsDEYHsS0M3MSphZDcKL2/ODy1a7zaxZsD7R/Ygxh47VNfgz1DVRROQEys/vYTwKjDeznsBXwJUA7r7MzMYDy4H9QG93PxCMuZ1fbqudHLwAngVeNLNMwmcW3fIxbxERyYbF6l/UQ6GQH8/3MNydf09eSbfzq3NmYpl8yExEpOAys4XuHspun1qDHGHd1z8wbv5XXDxkJiPT1rD/wMFjDxIRKQJUMI5wZmIZZvRP5Xd1Enl08kq6DJ/N8s3fRTstEZGoU8HIRuWyJRl5fROGX3ceW3f9TKenZvHEtFXs2X/g2INFRGKUCsavMDM6NKzKjP6pdD63Gk9+mEmHITNZ+KXu5hWRokkF4xhOKV2cJ65qxJibm/LzvoN0HTmXByYt44c9+6OdmojICaWCkUOpZyUytV8K3ZudwQtz1tN2UDrpX6j9iIgUHSoYv0GZEgk82LkBr9/WnBLF4uj+3HzueX0xu37cF+3URETynQrGcTg/uQLv392KO35Xk7c+3UTrQWlMWbo12mmJiOQrFYzjVLJYPPe2r8vE3i1ILFOC215ayB0vL2T77p+jnZqISL5QwcilBtXKMfHOFvy5XR1mrNhOm4HpTFi4kVj9Br2IFF0qGHmgWHwcvX9fi/fvbkXtymW45/XF9Hh+ARt3/hjt1ERE8owKRh6qVbkM429tzoOd6pOxfgdtB6UzZs56Dh7U2YaIFH4qGHksLs7ocWEy0/qlEEquwP2TlnH1qLmsyfo+2qmJiOSKCkY+SSpfmjE3nc9/r2zEF9u+5+IhMxn2USb71MxQRAopFYx8ZGZ0bZLE9P4ptD67Mo9PXUXnp2azdNOuaKcmIvKbqWCcAJVPLsnw65ow8vrzyPp+D52HzeaxKSv5eZ+aGYpI4ZHrgmFmJc1svpktNrNlZvZgEK9gZtPNbHXws3zEmAFmlmlmq8ysXUS8iZktCfYNDR7VSvA419eC+DwzS85t3tHQvkFVZvRL5fLG1Rjx8Ro6DJnJgvVqZigihUNenGHsAf7g7o2Ac4H2ZtYMuA/4wN1rAx8E7zGzeoQfsVofaA8MN7P44FgjgF6En/NdO9gP0BPY6e61gEHAY3mQd1SUK12Mx69sxIs9m7L3wEGuenou909cyvdqZigiBVyuC4aHHboFqFjwcqAzMCaIjwG6BNudgXHuvsfd1wGZQFMzqwqUdfe5Hv7W29gjxhw61gTgokNnH4VVq9qJTO2bQo/myYz95EvaDUonTc0MRaQAy5M1DDOLN7PPgO3AdHefB1Rx9y0Awc/KwcerARsihm8MYtWC7SPjh41x9/3ALqBiNnn0MrMMM8vIyir4v3xPKpHAA53qM+G25pQsFkeP5+bTf/xnfPvj3minJiLyP/KkYLj7AXc/F0gifLbQ4Cgfz+7MwI8SP9qYI/MY5e4hdw8lJiYeK+0Co8kZFXjv7lbc9YdaTPpsM60HpvH+ki1qLyIiBUqe3iXl7t8CHxNee9gWXGYi+Lk9+NhGoHrEsCRgcxBPyiZ+2BgzSwDKATG1WlyyWDx/aluHSXe2pGq5Utzx8iJue2kh279TM0MRKRjy4i6pRDM7JdguBbQGVgKTgB7Bx3oAE4PtSUC34M6nGoQXt+cHl612m1mzYH2i+xFjDh2rK/Chx+hfv+udVpa37riQ+y6uy8ersmg9MI3xGRt0tiEiUZcXZxhVgY/M7HNgAeE1jHeBR4E2ZrYaaBO8x92XAeOB5cAUoLe7H/pCwu3AaMIL4WuAyUH8WaCimWUC/QnuuIpVCfFx3JZak8l9WlH31LLcO+Fzbnh2Pht2qJmhiESPxerfXEOhkGdkZEQ7jVw7eNB5ef5XPPr+Chz4c7s6dG+eTHxcob5JTEQKKDNb6O6h7Pbpm94FXFyccUOzM5jWP5WmNSrw4DvLuXLkHFZv2x3t1ESkiFHBKCSqnVKK5288n0FXN2Ld1z9wydBZPPnBajUzFJETRgWjEDEzLmucxPT+qbSpX4Unpn/BpU/OYslGNTMUkfynglEIVSpTgmHXnsfTNzRhxw976TxsFv+evELNDEUkX6lgFGLt6p/K9P6pXBWqztNpa7l4yEzmrf0m2mmJSIxSwSjkypUqxqNXnMPLt1zAgYPO1aM+4e9vL2H3z/uinZqIxBgVjBjRolYlpvRtxS0ta/DKvK9oOyidD1dui3ZaIhJDVDBiSOniCfy9Yz3euP1CypRI4OYXMug77lN2/KBmhiKSeyoYMajx6eV59+6W9LmoNu9+voU2A9N4Z/FmtRcRkVxRwYhRJRLi6dfmLN69uyXVypfirlc/pdeLC9mmZoYicpxUMGJc3VPL8ubtF/LXDnVJ/yLczHDc/K90tiEiv5kKRhGQEB9Hr5SaTO2bQv3TynLfm0u4bvQ8vvzmh2inJiKFiApGEZJc6SReuaUZ/7qsIUs27qLd4HRGz1zLgYM62xCRY1PBKGLi4oxrLzidaf1TaFGzEo+8t4LLR8xh1VY1MxSRo1PBKKKqlivF6B4hhnQ7lw07fqTjkzMZPOML9u5XM0MRyV5ePHGvupl9ZGYrzGyZmfUJ4hXMbLqZrQ5+lo8YM8DMMs1slZm1i4g3MbMlwb6hwZP3CJ7O91oQn2dmybnNW8LNDDufW43p/VLo0LAqg2es5tInZ7F4w7fRTk1ECqC8OMPYD/zJ3c8GmgG9zawe4afifeDutYEPgvcE+7oB9Qk/+3u4mcUHxxoB9CL82NbawX6AnsBOd68FDAIey4O8JVCxTAmGdGvM6O4hdv20j8uGz+af7y3np71qZigiv8h1wXD3Le6+KNjeDawAqgGdgTHBx8YAXYLtzsA4d9/j7usIP461qZlVBcq6+9zged1jjxhz6FgTgIsOnX1I3mldrwrT+qfQrenpPDNzHe2HpDNnzdfRTktECog8XcMILhU1BuYBVdx9C4SLClA5+Fg1YEPEsI1BrFqwfWT8sDHuvh/YBVTM5s/vZWYZZpaRlZWVN5MqYsqWLMa/LmvIq39sBsC1z8xjwJtL+E7NDEWKvDwrGGZWBngD6Ovu3x3to9nE/Cjxo405POA+yt1D7h5KTEw8VspyFM1rVmRKnxR6pZzJawu+os3ANGYsVzNDkaIsTwqGmRUjXCxedvc3g/C24DITwc/tQXwjUD1ieBKwOYgnZRM/bIyZJQDlgB15kbv8ulLF4/lrh7N5644WnFKqOLeMzeDuVz/lm+/3RDs1EYmCvLhLyoBngRXuPjBi1ySgR7DdA5gYEe8W3PlUg/Di9vzgstVuM2sWHLP7EWMOHasr8KGrt8UJ06j6KbxzV0v6tT6LyUu30HpgGhM/26T2IiJFjOX2f3ozawnMBJYAh27i/yvhdYzxwOnAV8CV7r4jGPM34GbCd1j1dffJQTwEvACUAiYDd7m7m1lJ4EXC6yM7gG7uvvZoeYVCIc/IyMjV3OR/fbFtN/dO+JzPNnzLRXUr88hlDaharlS00xKRPGJmC909lO2+WP1bogpG/jlw0Hlhznr+O3UV8XHGgA51ueb804mL041rIoXd0QqGvuktv1l8nNGzZQ2m9k3hnKRy/O2tpVw7+hPWf61mhiKxTAVDjtvpFUvz8i0X8OjlDVm26TvaDU5nVPoa9h9QexGRWKSCIbliZnRrejrT+6fSqnYi/3p/JVeMmMPKrUe7s1pECiMVDMkTp5YryTPdm/DUtY3ZuPMnOg6dxcBpq9izX+1FRGKFCobkGTOj4zmnMaN/Kpc2Oo2hH2bScegsFn21M9qpiUgeUMGQPFf+pOIMuvpcnr/xfH7Ys58rRszhoXeW8+Pe/dFOTURyQQVD8s3v61Zmar8UrrvgdJ6bvY52g9OZnalmhiKFlQqG5KuTSxbjkS4Nea1XMxLi4rhu9Dz+MuFzdv2kZoYihY0KhpwQF5xZkcl9WnFr6plMWLSRNgPTmLZsa7TTEpHfQAVDTpiSxeIZcPHZvH1HCyqWKUGvFxfS+5VFZO1WM0ORwkAFQ064hknlmHRnC+5pexbTl22jzaA03ly0Uc0MRQo4FQyJimLxcdz5h9q836clNRPL0H/8Ym56YQGbvv0p2qmJyK9QwZCoqlX5ZF6/tTkPXFqP+et20HZgGi/OXc/BgzrbECloVDAk6uLijBtbhJsZnndGef5v4jK6jfqEtVnfRzs1EYmggiEFRvUKpRl7c1P+0/UcVm79jvZDZjLiYzUzFCkoVDCkQDEzrgpVZ0b/VP5QpzKPTVlJl+GzWbZ5V7RTEyny8uqZ3s+Z2XYzWxoRq2Bm081sdfCzfMS+AWaWaWarzKxdRLyJmS0J9g0NHtVK8DjX14L4PDNLzou8peCqXLYkI29owvDrzmPrrj10fmo2/526ip/3qZmhSLTk1RnGC0D7I2L3AR+4e23gg+A9ZlYP6AbUD8YMN7P4YMwIoBfh53zXjjhmT2Cnu9cCBgGP5VHeUsB1aFiVGf1T6HxuNZ76KJNLhs5k4Zc7op2WSJGUJwXD3dMJP2s7UmdgTLA9BugSER/n7nvcfR2QCTQ1s6pAWXef6+Eb8sceMebQsSYAFx06+5DYd0rp4jxxVSPG3NyUn/cdpOvIuTwwaRk/7FEzQ5ETKT/XMKq4+xaA4GflIF4N2BDxuY1BrFqwfWT8sDHuvh/YBVQ88g80s15mlmFmGVlZWXk4FSkIUs9KZGq/FLo3O4Mxc9fTdlA66V/o37PIiRKNRe/szgz8KPGjjTk84D7K3UPuHkpMTMxFilJQlSmRwIOdGzD+1uaUKBZH9+fmc8/ri9n1o5oZiuS3/CwY24LLTAQ/twfxjUD1iM8lAZuDeFI28cPGmFkCUI7/vQQmRcj5yRV4/+5W9P59Td76dBOtB6UxZemWaKclEtPys2BMAnoE2z2AiRHxbsGdTzUIL27PDy5b7TazZsH6RPcjxhw6VlfgQ1fjoSKvZLF4/tyuLhN7t6DyySW47aVF3P7SQrbv/jnaqYnEpLy6rfZVYC5Qx8w2mllP4FGgjZmtBtoE73H3ZcB4YDkwBejt7ofulbwdGE14IXwNMDmIPwtUNLNMoD/BHVciAA2qlePt3i24t30dPli5nTYD05mwUM0MRfKaxer/VKFQyDMyMqKdhpxga7K+5y8TPifjy52knJXIvy5rQFL50tFOS6TQMLOF7h7Kbp++6S0xpWZiGcbf2pyHOtdn4fodtB2Uzguz16mZoUgeUMGQmBMXZ3RvnszUfimEkivwwDvLuerpuWRuVzNDkdxQwZCYlVS+NGNuOp8nrmxEZtb3dBgyk2EfZbJPzQxFjosKhsQ0M+OKJklM75dKm3pVeHzqKjo/NZulm9TMUOS3UsGQIiHx5BIMu+48Rl7fhKzv99B52Gwem7JSzQxFfgMVDClS2jc4lRn9Urm8cTVGfLyGDkNmsmC9vgMqkhMqGFLklCtdjMevbMSLPZuy98BBrhw5l/97eynfq5mhyFGpYEiR1ap2IlP7pnBTi2Remvcl7Qal8/Gq7cceKFJEqWBIkXZSiQTuv7Q+E25rTslicdz4/AL6j/+MnT/sjXZqIgWOCoYI0OSMCrx3dyvu/H0tJn22mTaD0njv8y1qLyISQQVDJFCyWDz3tKvDpDtbUrVcKXq/sohbX1zItu/UzFAEVDBE/ke908ry1h0Xct/FdUn7IovWA9MYv2CDzjakyFPBEMlGQnwct6XWZErfFM6uWpZ73/ic65+dx4YdP0Y7NZGoUcEQOYoalU5i3B+b8UiXBizesIu2g9J5btY6DqiZoRRBKhgixxAXZ1zf7Aym9Uuh2ZkVeOjd5XQdOYfV23ZHOzWRE6pQFQwza29mq8ws08z0ECU5oU47pRTP3Xg+g65uxPqvf+CSobN48oPV7N2vZoZSNBSagmFm8cAw4GKgHnCNmdWLblZS1JgZlzVOYnr/VNo1OJUnpn9Bp6dm8fnGb6Odmki+KzQFA2gKZLr7WnffC4wDOkc5JymiKpUpwZPXNOaZ7iF2/riXLsNm8+/3V6iZocS0wlQwqgEbIt5vDGIiUdOmXhWm9Uvl6vOr83T6WtoPTueTtd9EOy2RfFGYCoZlEzvsVhUz62VmGWaWkZWVdYLSkqKuXKli/Pvyc3jllgs46NBt1Cf87a0l7P55X7RTE8lThalgbASqR7xPAjZHfsDdR7l7yN1DiYmJJzQ5kQtrVWJq3xRuaVmDV+d/RdtB6Xy0Us0MJXYUpoKxAKhtZjXMrDjQDZgU5ZxEDlOqeDx/71iPN26/kJNLJnDTCwvoO+5TdqiZocSAQlMw3H0/cCcwFVgBjHf3ZdHNSiR7jU8vzzt3taTPRbV5b8kW2gxMY9LizWovIoWaxep/wKFQyDMyMqKdhggrt37HXyZ8zuKNu2h9dhUe6dKAU8uVjHZaItkys4XuHspuX6E5wxAprOqeWpY372jB3zqczazMLNoMTOPV+V/pbEMKHRUMkRMgPs74Y8qZTOmTQv1qZRnw5hKufWYeX37zQ7RTE8kxFQyREyi50km8cksz/nVZQ5Zu2kW7wemMnrlWzQylUFDBEDnB4uKMay84nWn9U2hRsxKPvLeCy0fMYdVWNTOUgk0FQyRKqpYrxegeIYZe05gNO36k45MzGTzjCzUzlAJLBUMkisyMTo1OY0b/VDo0rMrgGau59MlZLN6gZoZS8KhgiBQAFU4qzpBujXm2R4hdP+3jsuGz+ed7y/lpr5oZSsGhgiFSgFx0dhWm9U+hW9PTeWbmOtoPSWfOmq+jnZYIoIIhUuCULVmMf13WkFf/2AyAa5+Zx4A3l/CdmhlKlKlgiBRQzWtWZEqfFHqlnMlrC76izcA0ZizfFu20pAhTwRApwEoVj+evHc7mrTtaUL50cW4Zm8Fdr37KN9/viXZqUgSpYIgUAo2qn8KkO1vSr/VZTFm6hdYD05j42Sa1F5ETSgVDpJAonhBHn9a1ee/uVpxR8ST6jPuMnmMy2PztT9FOTYoIFQyRQuasKifzxu0X8n8d6zFnzde0HZTOS598yUG1F5F8poIhUgjFxxk9W9ZgWt9UGlUvx9/fXso1z3zCuq/VzFDyjwqGSCF2esXSvNTzAh67oiHLt3xH+8HpPJ22hv0H1F5E8l6uCoaZXWlmy8zsoJmFjtg3wMwyzWyVmbWLiDcxsyXBvqFmZkG8hJm9FsTnmVlyxJgeZrY6ePXITc4iscbMuPr805nRP5XUsxL59+SVXDZ8Diu2fBft1CTG5PYMYylwOZAeGTSzeoSfuV0faA8MN7P4YPcIoBdQO3i1D+I9gZ3uXgsYBDwWHKsCcD9wAdAUuN/Myucyb5GYU6VsSZ6+oQnDrj2PLbt+4tInZzFw2ir27Fd7EckbuSoY7r7C3Vdls6szMM7d97j7OiATaGpmVYGy7j7Xw/cDjgW6RIwZE2xPAC4Kzj7aAdPdfYe77wSm80uREZEIZsYl51Rler9UOp17GkM/zOSSobNY9NXOaKcmMSC/1jCqARsi3m8MYtWC7SPjh41x9/3ALqDiUY71P8ysl5llmFlGVlZWHkxDpHAqf1JxBl51Ls/fdD4/7tnPFSPm8OA7y/hx7/5opyaF2DELhpnNMLOl2bw6H21YNjE/Svx4xxwedB/l7iF3DyUmJh4lPZGi4fd1KjOtfyo3NDuD52evp+2gdGatVjNDOT7HLBju3trdG2TzmniUYRuB6hHvk4DNQTwpm/hhY8wsASgH7DjKsUQkB8qUSOChzg0Yf2tzisfHcf2z8/jLhM/Z9ZOaGcpvk1+XpCYB3YI7n2oQXtye7+5bgN1m1ixYn+gOTIwYc+gOqK7Ah8E6x1SgrZmVDxa72wYxEfkNmtaowPt9WnH772oyYdFG2gxMY+qyrdFOSwqR3N5We5mZbQSaA++Z2VQAd18GjAeWA1OA3u5+6FaN24HRhBfC1wCTg/izQEUzywT6A/cFx9oBPAwsCF4PBTER+Y1KFovnL+3r8vYdLahYpgS3vriQ3q8sImu3mhnKsVmsNi8LhUKekZER7TRECqx9Bw4yKn0tQ2aspnSJeP7RsR6XNa5G8NUoKaLMbKG7h7Lbp296ixRRxeLj6P37WrzfpyU1E8vQf/xibnx+AZvUzFB+hQqGSBFXq/LJjL+1OQ9cWo8F63fQdmAaY+euVzND+R8qGCJCfJxxY4saTO2bwnlnlOcfE5dx9ai5rM36PtqpSQGigiEi/1/1CqUZe3NTHu96Dqu27qb9kJmM+FjNDCVMBUNEDmNmXBmqzow/pfKHOpV5bMpKugyfzbLNu6KdmkSZCoaIZKvyySUZeUMTRlx3Hlt37aHTU7N5fOpKft6nZoZFlQqGiBzVxQ2rMqN/Cpc1rsawj9ZwydCZLPxSX4UqilQwROSYTildnP9e2YgxNzfl530H6TpyLg9MWsYPe9TMsChRwRCRHEs9K5Fp/VLo0TyZMXPDzQzTv1Bn6KJCBUNEfpOTSiTwQKf6vH5rc0oUi6P7c/O55/XF7PpRzQxjnQqGiByXUHIF3r+7Fb1/X5O3Pt1E60FpTFm6JdppST5SwRCR41ayWDx/bleXSXe2oPLJJbjtpUXc/tJCtu/+OdqpST5QwRCRXKt/Wjne7t2Ce9vX4YOV22kzMJ3XMzYQq81NiyoVDBHJE8Xi47jjd7WY3KcVZ1Upw58nfE735+azYceP0U5N8ogKhojkqZqJZXitV3Me7lyfRV/upN3gdF6YvU7NDGNAbh+g9LiZrTSzz83sLTM7JWLfADPLNLNVZtYuIt7EzJYE+4YGT94jeDrfa0F8npklR4zpYWarg1cPRKRAi4szbmiezNR+KZyfXIEH3lnOlU/PJXP77minJrmQ2zOM6UADdz8H+AIYAGBm9YBuQH2gPTDczOKDMSOAXoQf21o72A/QE9jp7rWAQcBjwbEqAPcDFwBNgfuDR7WKSAGXVL40L9x0Pk9c2Yg1Wd/TYcgshn2UyT41MyyUclUw3H2aux/6qucnQFKw3RkY5+573H0d4cexNjWzqkBZd58bPK97LNAlYsyYYHsCcFFw9tEOmO7uO9x9J+EidajIiEgBZ2Zc0SSJ6f1SaVOvCo9PXUWnp2azdJOaGRY2ebmGcTO/PJ+7GrAhYt/GIFYt2D4yftiYoAjtAioe5VgiUogknlyCYdedx8jrm/D193voPGw2j05WM8PC5JgFw8xmmNnSbF6dIz7zN2A/8PKhUDaH8qPEj3fMkbn2MrMMM8vIylK7ApGCqH2DU5nRL5Wu5yUxMm0NHYbMZP46NTMsDI5ZMNy9tbs3yOY1EcIL0kBH4Dr/5abrjUD1iMMkAZuDeFI28cPGmFkCUA7YcZRjZZfrKHcPuXsoMTHxWFMTkSgpV7oYj3U9h5d6XsDeAwe56um5/GPiUr5XM8MCLbd3SbUH/gJ0cvfIm60nAd2CO59qEF7cnu/uW4DdZtYsWJ/oDkyMGHPoDqiuwIdBAZoKtDWz8sFid9sgJiKFXMvalZjWL4WbW9TgxU++pO3AND5atT3aacmvyO0axlPAycB0M/vMzEYCuPsyYDywHJgC9Hb3QxcqbwdGE14IX8Mv6x7PAhXNLBPoD9wXHGsH8DCwIHg9FMREJAaULp7APy6tx4TbLqR0iQRuen4B/V/7jJ0/7I12anIEi9Wv7odCIc/IyIh2GiLyG+zZf4BhH2Yy/OM1lCtVjAc71+eShlUJvq4lJ4CZLXT3UHb79E1vESkwSiTE079tHd65qyWnnVKKO1/5lFtfXMi279TMsCBQwRCRAufsqmV5644L+WuHuqR9kUXrgWm8tuArNTOMMhUMESmQEuLj6JVSkyl9Uzi7aln+8sYSbnh2Pl99o2aG0aKCISIFWo1KJzHuj814pEsDPtvwLe0Gp/PsrHUcUDPDE04FQ0QKvLg44/pmZzCtXwrNzqzAw+8up+vIOazepmaGJ5IKhogUGqedUornbjyfwVefy/qvf6DD0JkM/WA1e/ermeGJoIIhIoWKmdGlcTVm9E+lfYOqDJz+BZ2emsXiDd9GO7WYp4IhIoVSxTIlePKaxjzTPcTOH/dy2fDZ/Pv9Ffy0V80M84sKhogUam3qVWF6/1SuPr86T6ev5eIh6Xyy9ptopxWTVDBEpNArW7IY/778HF655QIOOnQb9Ql/e2sJu3/eF+3UYooKhojEjAtrVWJq3xRuaVmDV+d/RdtB6Xy4clu004oZKhgiElNKFY/n7x3r8eYdLTi5ZAI3v5BB33GfskPNDHru20gAAAyYSURBVHNNBUNEYtK51U/h3bta0eei2ry3ZAttBqbxzuLNai+SCyoYIhKziifE0a/NWbxzV0uSypfirlc/5Y9jF7J1l5oZHg8VDBGJeXVPLcubd7Tg75eczazMLNoMTOPV+Wpm+FupYIhIkRAfZ9zS6kym9k2hQbVyDHhzCdc+M48vv/kh2qkVGrl9ROvDZvZ58LS9aWZ2WsS+AWaWaWarzKxdRLyJmS0J9g0NHtVK8DjX14L4PDNLjhjTw8xWB68eiIgcpzMqnsQrf7yAf1/ekKWbdtFucDqjZ65VM8McyO0ZxuPufo67nwu8C/wDwMzqAd2A+kB7YLiZxQdjRgC9CD/nu3awH6AnsNPdawGDgMeCY1UA7gcuAJoC9wfP9hYROS5mxjVNT2d6/1Ra1qrEI++t4PIRc1i1Vc0MjyZXBcPdv4t4exJwqER3Bsa5+x53X0f4+d1NzawqUNbd53r44uFYoEvEmDHB9gTgouDsox0w3d13uPtOYDq/FBkRkeN2armSPNM9xNBrGrNhx490fHImg6Z/oWaGvyLXaxhm9k8z2wBcR3CGAVQDNkR8bGMQqxZsHxk/bIy77wd2ARWPcqzscullZhlmlpGVlZWbaYlIEWFmdGp0GtP7pdChYVWGfLCaS5+cxWdqZvg/jlkwzGyGmS3N5tUZwN3/5u7VgZeBOw8Ny+ZQfpT48Y45POg+yt1D7h5KTEw82rRERA5TsUwJhnRrzHM3hvju531cPnw2j7y7XM0MIxyzYLh7a3dvkM1r4hEffQW4ItjeCFSP2JcEbA7iSdnEDxtjZglAOWDHUY4lIpLn/lC3CtP6pXBN09MZPWsd7QanMyfz62inVSDk9i6p2hFvOwErg+1JQLfgzqcahBe357v7FmC3mTUL1ie6AxMjxhy6A6or8GGwzjEVaGtm5YPF7rZBTEQkX5xcshj/vKwh43o1I87g2tHzuO+Nz9n1U9FuZpiQy/GPmlkd4CDwJXAbgLsvM7PxwHJgP9Db3Q+d190OvACUAiYHL4BngRfNLJPwmUW34Fg7zOxhYEHwuYfcfUcu8xYROaZmZ1ZkSt8UBs34gmfS1/LRqu080qUhbepViXZqUWGx+k3HUCjkGRkZ0U5DRGLE5xu/5d4Jn7Ny6246nlOVBzrVp1KZEtFOK8+Z2UJ3D2W3T9/0FhHJgXOSTmHSnS3p3+Yspi3bRpuBabz96aYi1V5EBUNEJIeKJ8Rx90W1ee/uliRXOom+r33GzS8sYPO3P0U7tRNCBUNE5DeqXeVkJtx2If/oWI9P1u6g7aB0XvrkSw7GeHsRFQwRkeMQH2fc3LIGU/um0Kh6Of7+9lK6PfMJ676O3WaGKhgiIrlwesXSvNTzAv5zxTms2PId7QenMzJtDfsPxF57ERUMEZFcMjOuOr86M/qnknpWIo9OXsllw+ewfPN3xx5ciKhgiIjkkSplS/L0DU0Ydu15bNn1E52emsUT01axZ39stBdRwRARyUNmxiXnVGV6v1Q6nXsaT36YySVDZ7Hwy53RTi3XVDBERPJB+ZOKM/Cqc3nhpvP5cc9+uo6cw4PvLOPHvfujndpxU8EQEclHv6tTmWn9U7mh2Rk8P3s9bQelM2t14WxmqIIhIpLPypRI4KHODRh/a3OKxcdx/bPzuHfC4kLXzFAFQ0TkBGlaowKT+7Ti9t/V5I1Fm2gzMI2py7ZGO60cU8EQETmBShaL5y/t6zKxdwsqlSnBrS8upPfLi8javSfaqR2TCoaISBQ0qFaOiXe24M/t6jB9+TbaDErjjYUbC3QzQxUMEZEoKRYfR+/f1+L9Pq2omViGP72+mBufX8CmAtrMUAVDRCTKalUuw+u3NueBS+uxYP0O2g5MY+zc9QWumWGeFAwzu8fM3MwqRcQGmFmmma0ys3YR8SZmtiTYNzR4VCvB41xfC+LzzCw5YkwPM1sdvHogIhJj4uKMG1uEmxmed0Z5/jFxGVePmsuarO+jndr/l+uCYWbVgTbAVxGxeoQfsVofaA8MN7P4YPcIoBfh53zXDvYD9AR2unstYBDwWHCsCsD9wAVAU+D+4NneIiIxp3qF0oy9uSmPdz2HVVt3c/GQmQz/OJN9BaCZYV6cYQwC7gUiz506A+PcfY+7rwMygaZmVhUo6+5zPbyyMxboEjFmTLA9AbgoOPtoB0x39x3uvhOYzi9FRkQk5pgZV4aqM+NPqfyhTmX+M2UVXYbNZummXVHNK1cFw8w6AZvcffERu6oBGyLebwxi1YLtI+OHjXH3/cAuoOJRjpVdPr3MLMPMMrKyso5rTiIiBUXlk0sy8oYmjLjuPLZ9t4fOw2bznykr+XlfdJoZJhzrA2Y2Azg1m11/A/4KtM1uWDYxP0r8eMccHnQfBYwCCIVCBWu1SETkOF3csCrNa1bk4XdXMPzjNUxZtpX/XHEOoeQKJzSPY55huHtrd29w5AtYC9QAFpvZeiAJWGRmpxI+C6gecZgkYHMQT8omTuQYM0sAygE7jnIsEZEi45TSxXniqkaMubkpe/Yd5Mqn5/LApGX8sOfENTM87ktS7r7E3Su7e7K7JxP+xX6eu28FJgHdgjufahBe3J7v7luA3WbWLFif6A5MDA45CTh0B1RX4MNgnWMq0NbMygeL3W2DmIhIkZN6ViLT+qXQo3kyY+aGmxmmfXFiLsHny/cw3H0ZMB5YDkwBerv7oYtutwOjCS+ErwEmB/FngYpmlgn0B+4LjrUDeBhYELweCmIiIkXSSSUSeKBTfV6/tTkli8XR47n5/Gn8Yr79cW++/rlWkL+GnhuhUMgzMjKinYaISL76ed8BnvowkxFpayhfujgPd67PxQ2rHvfxzGyhu4ey26dveouIFGIli8VzT7s6TLqzBaeWK8HtLy+i98uL8uVb4se8S0pERAq++qeV4+07WjB61jq+/3k/cXHZ3WCaOyoYIiIxIiE+jttSa+bb8XVJSkREckQFQ0REckQFQ0REckQFQ0REckQFQ0REckQFQ0REckQFQ0REckQFQ0REciRme0mZWRbw5W8cVgn4Oh/SKeg076JF8y5afuu8z3D3xOx2xGzBOB5mlvFrTbdimeZdtGjeRUtezluXpEREJEdUMEREJEdUMA43KtoJRInmXbRo3kVLns1baxgiIpIjOsMQEZEcUcEQEZEcUcEAzKy9ma0ys0wzuy/a+eQXM6tuZh+Z2QozW2ZmfYJ4BTObbmarg5/lo51rfjCzeDP71MzeDd7H/LzN7BQzm2BmK4N/782LyLz7Bf+NLzWzV82sZKzO28yeM7PtZrY0IvarczWzAcHvulVm1u63/FlFvmCYWTwwDLgYqAdcY2b1optVvtkP/MndzwaaAb2Dud4HfODutYEPgvexqA+wIuJ9UZj3EGCKu9cFGhGef0zP28yqAXcDIXdvAMQD3Yjdeb8AtD8ilu1cg//fuwH1gzHDg9+BOVLkCwbQFMh097XuvhcYB3SOck75wt23uPuiYHs34V8e1QjPd0zwsTFAl+hkmH/MLAm4BBgdEY7peZtZWSAFeBbA3fe6+7fE+LwDCUApM0sASgObidF5u3s6sOOI8K/NtTMwzt33uPs6IJPw78AcUcEI/8LcEPF+YxCLaWaWDDQG5gFV3H0LhIsKUDl6meWbwcC9wMGIWKzP+0wgC3g+uBQ32sxOIsbn7e6bgP8CXwFbgF3uPo0Yn/cRfm2uufp9p4IBlk0spu81NrMywBtAX3f/Ltr55Dcz6whsd/eF0c7lBEsAzgNGuHtj4Adi5zLMrwqu13cGagCnASeZ2fXRzarAyNXvOxWMcIWtHvE+ifDpa0wys2KEi8XL7v5mEN5mZlWD/VWB7dHKL5+0ADqZ2XrClxz/YGYvEfvz3ghsdPd5wfsJhAtIrM+7NbDO3bPcfR/wJnAhsT/vSL8211z9vlPBgAVAbTOrYWbFCS8ITYpyTvnCzIzw9ewV7j4wYtckoEew3QOYeKJzy0/uPsDdk9w9mfC/3w/d/Xpif95bgQ1mVicIXQQsJ8bnTfhSVDMzKx38N38R4fW6WJ93pF+b6ySgm5mVMLMaQG1gfk4Pqm96A2bWgfA17njgOXf/Z5RTyhdm1hKYCSzhl2v5fyW8jjEeOJ3w/2xXuvuRi2gxwcx+B9zj7h3NrCIxPm8zO5fwQn9xYC1wE+G/KMb6vB8EriZ8Z+CnwC1AGWJw3mb2KvA7wm3MtwH3A2/zK3M1s78BNxP+Z9PX3Sfn+M9SwRARkZzQJSkREckRFQwREckRFQwREckRFQwREckRFQwREckRFQwREckRFQwREcmR/wdBkqXNpCS67gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(new_input, yhat)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Decision Making: Determining a Good Model Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Now that we have visualized the different models, and generated the R-squared and MSE values for the fits, how do we determine a good model fit?\n",
"<ul>\n",
" <li><i>What is a good R-squared value?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the higher R-squared value is a better fit</b> for the data.\n",
"<ul>\n",
" <li><i>What is a good MSE?</i></li>\n",
"</ul>\n",
"</p>\n",
"\n",
"<p>When comparing models, <b>the model with the smallest MSE value is a better fit</b> for the data.</p>\n",
"\n",
"\n",
"<h4>Let's take a look at the values for the different models.</h4>\n",
"<p>Simple Linear Regression: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.49659118843391759</li>\n",
" <li>MSE: 3.16 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Multiple Linear Regression: Using Horsepower, Curb-weight, Engine-size, and Highway-mpg as Predictor Variables of Price.\n",
"<ul>\n",
" <li>R-squared: 0.80896354913783497</li>\n",
" <li>MSE: 1.2 x10^7</li>\n",
"</ul>\n",
"</p>\n",
" \n",
"<p>Polynomial Fit: Using Highway-mpg as a Predictor Variable of Price.\n",
"<ul>\n",
" <li>R-squared: 0.6741946663906514</li>\n",
" <li>MSE: 2.05 x 10^7</li>\n",
"</ul>\n",
"</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Regression model (SLR) vs Multiple Linear Regression model (MLR)</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Usually, the more variables you have, the better your model is at predicting, but this is not always true. Sometimes you may not have enough data, you may run into numerical problems, or many of the variables may not be useful and or even act as noise. As a result, you should always check the MSE and R^2.</p>\n",
"\n",
"<p>So to be able to compare the results of the MLR vs SLR models, we look at a combination of both the R-squared and MSE to make the best conclusion about the fit of the model.\n",
"<ul>\n",
" <li><b>MSE</b>The MSE of SLR is 3.16x10^7 while MLR has an MSE of 1.2 x10^7. The MSE of MLR is much smaller.</li>\n",
" <li><b>R-squared</b>: In this case, we can also see that there is a big difference between the R-squared of the SLR and the R-squared of the MLR. The R-squared for the SLR (~0.497) is very small compared to the R-squared for the MLR (~0.809).</li>\n",
"</ul>\n",
"</p>\n",
"\n",
"This R-squared in combination with the MSE show that MLR seems like the better model fit in this case, compared to SLR."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Simple Linear Model (SLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: We can see that Polynomial Fit brought down the MSE, since this MSE is smaller than the one from the SLR.</li> \n",
" <li><b>R-squared</b>: The R-squared for the Polyfit is larger than the R-squared for the SLR, so the Polynomial Fit also brought up the R-squared quite a bit.</li>\n",
"</ul>\n",
"<p>Since the Polynomial Fit resulted in a lower MSE and a higher R-squared, we can conclude that this was a better fit model than the simple linear regression for predicting Price with Highway-mpg as a predictor variable.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Multiple Linear Regression (MLR) vs Polynomial Fit</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<ul>\n",
" <li><b>MSE</b>: The MSE for the MLR is smaller than the MSE for the Polynomial Fit.</li>\n",
" <li><b>R-squared</b>: The R-squared for the MLR is also much larger than for the Polynomial Fit.</li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Conclusion:</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing these three models, we conclude that <b>the MLR model is the best model</b> to be able to predict price from our dataset. This result makes sense, since we have 27 variables in total, and we know that more than one of those variables are potential predictors of the final car price.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.6.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment