{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear regression\n", "\n", "we want to solve linear regression \n", "$${\\rm minimize}_w \\|{\\bf X}w-{\\bf y}\\|_2^2$$\n", "first generate input, output data examples\n", "\n", "there is a subtlety (in notations mainly) in how we handle constant\n", "\n", "given data $x=(x[1],x[2],x[3],\\cdots,x[d])$ in $d$-dimensions, \n", "one option is to use **linear predictor** of the form \n", "$$f(x) = w^Tx = w_1x[1] + w_2x[2] + \\cdots, w_dx[d]$$\n", "\n", "anogher option is to use **affine predictor**, by appending a one to the data, i.e. $x=(1,x[1],x[2],x[3],\\cdots,x[d])$\n", "$$f(x) = w^Tx = w_0 + w_1x[1] + \\cdots + w_d x[d]$$\n", "\n", "We will use these notations interchangeably, as it should be clear from the context which one we are using\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# generate training data\n", "import numpy as np\n", "n = 100 # sample size\n", "x = np.random.uniform(-1,1,n) #sample input data\n", "x = np.sort(x)\n", "x[0]=-1\n", "x[n-1]=1\n", "\n", "# ground truth is 5-th order polynomial and we add Gaussian noise to it\n", "y = (x-.99)*(x-.4)*(x-.25)*(x+.6)*(x+.8) + .03*np.random.randn(n)\n", "\n", "# plot the samples and grounstruth\n", "t = np.linspace(-1,1,100)\n", "y0 = (t-.99)*(t-.4)*(t-.25)*(t+.6)*(t+.8)\n", "import matplotlib.pyplot as plt\n", "plt.plot(x,y,'o')\n", "#plt.plot(t,y0,'k-')\n", "plt.show()\n", "\n", "# generate test data\n", "n_ = 100\n", "x_ = np.random.uniform(-1,1,n_)\n", "y_ = (x_-.99)*(x_-.4)*(x_-.25)*(x_+.6)*(x_+.8) + .03*np.random.randn(n_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "next, create **data matrix** ${\\bf X}$\n", "$${\\bf X} = \\begin{bmatrix} (x_1)^T\\\\ (x_2)^T\\\\ \\vdots \\\\ (x_n)^T \\end{bmatrix}$$\n", "- the $i$-th row od ${\\bf X}$ is input raw data of $i$-th sample, transposed\n", "- the $j$-th column of ${\\bf X}$ gives values of $j$-th data entry across $n$ data points \n", "- $X_{ij}$ is the value of $j$-th entry for $i$-th sample data point" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Constant fit example\n", "we are going to ignore any input data and try to fit a constanf function $f(x)=w_1$\n", "\n", "we create a data matrix with $x_i=1$\n", "\n", "data matrix is " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# create a data matrix X\n", "X = np.vstack([np.ones(len(x))]).T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that the least squares solution is \n", "\\begin{eqnarray} \n", "\\hat{w}_{\\rm LS} &=& (X^TX)^{-1}X^T y\\\\ \n", "&=& n^{-1} 1^T y \\\\\n", "&=& \\frac{1}{n}\\sum_{i=1}^n y_i\n", "\\end{eqnarray}\n", "\n", "\n", "which is just the average of the sample outcome data, \n", "and the prediction is \n", "$\\hat{w}_{\\rm LS} = \\frac{1}{n}\\sum_{i=1}^n y_i$ for all data point $x$, \n", "\n", "\n", "$$ \\hat{y} = \\begin{bmatrix} \\hat{y}_1\\\\ \\vdots\\\\ \\hat{y}_n \\end{bmatrix} = \\begin{bmatrix} \\hat{w}_{\\rm LS}^Tx_1 \\\\ \\vdots \\\\ \\hat{w}_{\\rm LS}^T x_n\\end{bmatrix} = \\hat{w}_{\\rm LS} \\begin{bmatrix}1\\\\ \\vdots\\\\ 1\\end{bmatrix}$$\n", "\n", "hence, **the average is the best constant fit** for suqared loss\n", "\n", "and the MSE is the variance of the outcome:\n", "\n", "$$ \\frac1n \\sum_{i=1}^n ({\\rm ave}(y)-y_i)^2$$" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.21437993262875948" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# linear regression with constant feature\n", "w = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh = w*X\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh, 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh)**2)\n", "display(MSE_train)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_))]).T\n", "yh_ = w*X_\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "for **affine** fit, we use $(1,x_i)$ as the input data, and the data matrix ${\\bf X}$ is" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# create a data matrix X\n", "X = np.vstack([np.ones(len(x)),x]).T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "the prediction has the form \n", "$$\\hat{y} = w_1+w_2x$$\n", "this is called **straight-line fit** and if $x$ is time, it is called **trend line**\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# linear regression\n", "p=1\n", "w1 = np.array(2)\n", "w1 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh1= np.matmul(X,w1)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh1, 'g')\n", "plt.plot(x, yh, 'g-.')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh1)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_]).T\n", "yh_= np.matmul(X_,w1)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.array([[1,MSE_train,MSE_test]]) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Polynomial features\n", "\n", "polynomial functions are useful features, as any smooth function can be represented by polynomials of large enough degree using Taylor expansion. \n", "\n", "for degere 2 polynomial, we use $(1,x,x^2)$ as feature vector" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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FditQbqjwOBLvY6MRiObNm3i3nvv9Vga7hACW87u2hOl2AvjSFzzTq1nAbMAUlJSbK/Y4QVsPZDW/fJzc3O589//5rbbbqNbt25uS9fRl+nee+8lNzeXJ598krZt2/Lqq6/We24psZ2/bNy4kWeeeYbvv/+ehIQEXn75ZSZNmkRsbCwA3dyYgY4b1InAvz7EQ19cRtnR7RT8Mof8H96haOO3RF95L1md7PuzXSkw+Fqvoz179nD69GkGDhzosTTcIQQZQFur722ALAfDBDoQt8niyAP5+uuvU1JSwrPPPuv29B19maZOncrhw4f5xz/+Qbt27XjwwQfrPS80novHl0p3niInJ4dp06bxf//3f8TExPDKK68wZcqUc9qGnM2A67s3Y/onmScyVH1IuL03pXvXc/Knj8n5+jni+l5F3tRB1SLkLnyt15GnG4rBPUKwAeislEoGMoHbgNp9IxcBUyxtABcDhVrrbKXUCQfiNlnqeyDz8vL45z//ybhx4zzWyOMISinefvttMjMzeeihh2jXrh2jR4+uM05juXh8rXTnboxGI++99x7PPPMMxcXFTJ06lenTpxMZGenyuR29N9Y1yNAugwnplELJhvmcXPNfevbsyaxZs7jxxhtdtqcKX+t1tHHjRkJDQ93qUaiNy5POaa0rgSnAMmAXMFdrvUMp9Sel1J8swZYCB4B9wAfA/XXFddWmxsLeg5dZUErytCX0u/UhiouLPVIbcBaDwcCcOXNISUlhwoQJbNmyxdsmAbL8oCvs2bOHyy+/nClTppCSksL27duZOXOmW0QAHL83tSfJaxMbwQdvvEzqhg0kJCQwevRo/vznP1NeXu4Wu3xtgZrU1FT69+9vc+oYd+GWJmit9VLMmb31vvestjXwgKNxzxfq6i5qrDhD5toFtOg2lL3lUfRsZNtsERoaysKFC7nwwgu58cYb+e2332jVqpVXbfK10p07MJlMvPXWWzz99NOEhIQwe/ZsJkyY4PLYlNo4c29s1yCT2LBhA9OmTeONN95g48aNfPXVV7Ru3dolu3ypDctoNLJ582YmTZrk0XRkGmoXsLUAfBUle9ahy04T2v+6RindLticydAZK0metoShM1baXcIyMTGRxYsXk5eXx9ixYzlz5ozHbasLXyvducqxY8cYMWIEjz76KMOHDyctLY0777zT7SIA7rk3gYGBvP7663z55Zds3bqVAQMGMOM/ixx6Vu3hS9N07969m5KSEo82FIMIgUvUfiCtOb39R/yjWhHUttc5JShHM21HcXY94/79+zN79mzWr1/P5MmT0TZWw2osbIlpcy3ducqyZcvo27cva9as4f3332fRokUul67rwp33Zty4cfz222+ogGCennQre39b6dLa22P6J7Fm2lUcnHEda6Zd1SxFAGDdunUAXHTRRR5NR4TARawfyCRLSami4BhnDm8jrPdwlPKrUYJyNNN2Riwa4me/6aabeOGFF5g9ezZvvvmmzTDuFixb+FLprqEYjUaeeeYZRo4cSXx8PKmpqUyePNkjtQBr3H1vevToQduJrxPQMpkT37xE0aZvAWkTqouff/6Z+Ph4unTp4tF0ZNI5N1LluyzYvgJQhPcadk4JypGub872pGmon3369Ols3bqVxx9/nF69enH11VdXH2vM3jy+MgitId1k8/LymDBhAsuWLePee+/lX//6FyEhnnGb2bPPnffmRGUQCbf/ndzF/yD/x/cwni4g8pIJHmkTag7dklevXs2ll17qcdEXIXAjY/onYTQaueOfKwhO7k/7du3OefgcybSd7SftzEjg2i/HlEdeYs+ePdx0y610mfwv8g3RtI4KoaS80qf6anuahgjrli1bGDt2LFlZWcyaNcujDYYNFX5nM1vzswotxzxF/rJ/U7j2C7Sxgp6j72sSv6cpceTIEQ4dOsQjjzzi8bTENeRmIk6mU16YwycznrTpu3SkAc7ZEr6jvlxbbqkXvj/Apfe/QkmFie3/mY6xvJTMglJOllRgC+nN0zCcdd/NmzePoUOHUllZyerVqz3ea6Qh7kVn26bg7LOq/AzEjJxCeP9RnPp1HnFpX7i1rao5dEuuWpv4sssu83haIgRu5uOPPyYmJsbugC1HMm1ne2s46su193J8f1gTd+OTVORlkLfkjTpfSOnNUz+22lYcFXetNS+++CK33HILffr0YcOGDS43FDrS1lPXmBh7GXtDMlvrZ9VP+dH71ke5/vbfs3jOhzzyyCNuE4Pm0C35559/JiIigt69e3s8LXENuZGioiK++eYbJk2aZHemT0emb2hIP2lHfLn2XgKj1oR06Ef0lfdycuWHnFr/FZGDz50lVXrz1I89l0RUaIDNWlZkSABDZ6wkq6CUVuEGAte+z8/fLeCuu+5i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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=2\n", "X = np.vstack([np.ones(len(x)),x,x**2]).T\n", "\n", "# degree-2 polynomial linear regression\n", "w2 = np.array(3)\n", "w2 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh2= np.matmul(X,w2)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh2, 'g')\n", "plt.plot(x, yh1, 'g-.')\n", "plt.plot(x, yh, 'g-.')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh2)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2]).T\n", "yh_= np.matmul(X_,w2)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "for p=3 degree polynomial, we use feature vector $(1,x,x^2,x^3)$" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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Ek99d+TIEa655ho6dOjAL7/84tYZPK3RWpOQkcD3x77n+2Pfs/rwerS6CNoXv7xISrYlEnb5nwmOGMZb43u79DuXQOBEK1asYPTo0WzZssUpN6qvLWePE3DW8cvSEO5bQPbylzl2YA/z5s3jL3/5i90NedU1UJcdx5X/a1FRES+88ALz5s2jQ5cehN72DFn+4fhY6aUkVTmet2bNGm699VbGjx/PokWLqpxzng64/V5dy4ncnRT47CT3/Cp0C+P57VvakqZcy7R+45k59G6XdD23FgjqXp/HeuC3337D19eXq666yqPpsNYVzV0TlVV3HA2kGQLxue1F+g29lRkzZjBlyhQKCwvtOkZN88C48n/dv38/ffv2Zd68edx8570E3PEqmf7haKyPT6iPs4U2NLfccguvvPIKX375JfPnz6/wXlkJM8nUiF/WTXfZriS3pe/ZET0J9e1N0+xR6HcLabpxFGFFfyZAdyJHrePlbffTYl4Lxnw5hk92fsLZvLMuT5MEglrYvn07MTExHi92zhjelUD/ivcEcOdEZZaOX1khfujBT/DCCy/wySef0L9/f44ePWrzMaq70LvqfzUYDLz22mtcffXVJCYmsmzZMvJi/0Chrvn+Cw1xtlB3WbYriQFzNxAdt4oBczc4dHF+9tlnGTduHM899xyrV1+ataa6qULcZUzvKF69I4YL+zeALqVpl1tpariZVkWzaHvxC1oVzuaBXg+wM2UnD698mMjXIrn2o2t56aeX2JWyC1fU4kggsFHZSdrh2W/ZsHkrLaN7eDpJ5SdUVEggCmO1hDsbFysf35qU84XMmTOHZcuWceLECfr06cNXX31l0zGsBZvQIH+b/1d7LjC7du2iX79+PP3004wYMYJ9+/YxevRom3L63jhbqLM4O6eulOLTTz+lV69e3HPPPRw4YOzeWVfu+3BLj3Dyd66kUbsr8Q+7dA4rAri82fW8d+t7nJp+it1/3M3LN76Mj/Lhbz/+jT4L+rDk4BKnp0dmH7WBeYNlcXYKJQW57C1qybJdSR5vzHPGDVecdXxr9fllueTRo0eze/duJkyYwIQJE/jmm2946623iIiIqHb/UPu7i9k6+VdOTg6zZ8/m7bffpmXLlnz++efcc8895fXL1kaK+ipFqdbSuOsgV0yQ2KRJE5YvX84111zD7bffzm+//VZn7vvw+eefU3Q+g7a3PllhuXlmQilFr9a96NW6FzMHzeRc3jlWH1nN0I7O7xorJQIbmJ+kRSmHAVCtOrm1OFkf2FJV1a5dO3766SfmzJnDN998Q7du3fjkk08oLS21ut8xvaPYEncTJ+beypa4m+y6MNRUFVBYWMibb75Jp06deOutt5g6dSqHDh1i4sSJFRoZrf1vr43rVat0iYpclVNv27Yty5cvJykpibvuuovpN0V7tDoVjFWP8+bNo3fv3rz19GSbS/QRwRH8ofcfLN5cylESCGxgfjIWphxB+TXCP7y9NAxWYmtVlb+/Py+88AJ79uzhyiuv5OGHHyY2NpY1a9Y4vf7T2neUmJ7DggUL6N69O08++SS9e/cmPj6e999/n5CQkFr/b6J2XNnx4brrruPTTz/lxx9/ZOW7f+OVsT09+j0uX76chIQE4uLiGNvnslpncpxJqoZsYF6cLEo5TEBEJ5SPr1c1DNra5c6eqqquXbuyceNGFi1axF//+ldGjhzJgAEDePbZZxk5ciS+vjU3ztakclWA4UI2eb+v5cKub/ljXhZXX301H3zwATfffHON+/J0NVxD5uo7tE2cOJETJ04wa9Ys2rVrx5aXX3bKfu2ltWbu3Ll06tSJO++80yNpsERKBDYoqxbQhhKKzh0jILKzVzUMurLLnY+PD/feey+HDh3i/fff5+TJk4waNYro6Gheeukljh075tD+ZwzvSiNdzIWDm0n9+kUS37uf7M0L6XllL9avX8/27dttCgLCtdxR4nr++eeZMmUKf//731mwYIHT9muPjRs3sn37dp555hmnZHScRQaU2WjZriRm/98qfn/nj3QeP5N5zz7qNblDd45gLi4uZuXKlXzwwQf88MMPgLHkMHLkSAYOHEhMTAwdO3a0+iPSWpOUlMSBAwfYtm0b69at45dftlJSUoxvcAtaXz2MZx+fyuN33ujUdIv6oaSkhNGjR/Pdd9+xePFit+bKDQYDffv2JSkpiePHj9O4sfvvVSIji51gwYIF/PGPf+To0aN06tTJ7cf3FEdGMDsyivPEiROsXLmS1atX8+OPP5YPRgsMDCQqKoqQkBCaN28OQG5uLufPnycpKYnc3Fxj+pSid+/eDB06lBEjRjBo0KA6lQsTnpGXl8fw4cPZvn0733zzTa1vBmPvuf3WW28xffp0t8wyao0EAieYMmUKS5cuJT093eW3maxLalsicOZEavn5+ezfv599+/axd+9ezp49S3Z2Njk5OWitadasGc2aNSMiIoLu3bvTo0cPYmJiaNGihV3HEd4hJyeHIUOGsG/fPr799lu7Zyu199w+c+YMPXr04Prrr2fVqlUeu35IIHCCXr16ERkZyXfffef2Y3tSbS/onp4UT4jqZGRkMHjwYI4dO8by5csZNmyYzdvac25rrRkzZgzr1q1j//79Hp0VVeYactCFCxfYv3+/19yExlxtG/LqyihOd3LmNAnCtVq0aMG6deu4/PLLufXWW1m8eLHN29pzbi9dupQVK1bw4osvejQIVEe6j9ro999/x2AwEBtbJZjWyNOzHTpDbbpO1pVRnO5i6yhmUXdERESwadMmbr/9diZMmEBaWhp/+tOfatzO1nN7165d/OEPf6BPnz488cQTTku3s0mJwEZ79uwBsPuOW3VhtkNP8fSkeO5WFyY0E/YLCQnh+++/57bbbmPatGlMmzatyiy5lUt6N3ZrWeO5ffz4cW655RZCQ0NZsWIF/v7+bvl/akMCgY327t1Ls2bNaNeunV3befPFwdtG43pjVVhDERgYyNKlS3nqqad477336N+/f/kYFkuZuSU7krjz6iir53ZqairDhw+nuLiYtWvXEhVVt895qRqy0Z49e4iJibG7td/bLw7eNBrX26rCGho/Pz9ee+01brjhBh544AH69OnD3//+dz7P6WIxM7fxUJrFTg9bt25l8uTJJCUlsWHDBrp16+auf6HWpERgA601e/fuJSYmxu5tPX3zGFF79jb8eltVWEM1atQodu3aRWxsLI8//jjxr/2BCwlbqsyDVTkzV1hYSFxcHAMHDqSwsJC1a9fSt29fdya91qREYIPExERycnK48sor7d7W1XOoCNeoTcOvo1Nmi7qjffv2rFu3jtWrV3P3g38ifdmr+Aa3ILDzdQRdfh1+YVFEhgaTmprK9u3bWblyJStWrCAlJYWHH36Y1157jWbNmnn637CZBAIblDUU16ZEIBeH+qm28+N7U1VYQ6eU4tZbb2Xhtz15/JV/kX1gMxf2rSdvl/GOZ8lAxFzjusHBwQwfPpypU6fWy7mrHAoESqkw4CugA3ASGKe1zrKw3qfAbUCq1rqnvdt72t69xpxgbQIByMWhLrC3C6+3t+2IS+68pj2+f/0z89cOJzEtmyaZ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=3\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3]).T\n", "\n", "# degree-p polynomial linear regression\n", "w3 = np.array(p+1)\n", "w3 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh3= np.matmul(X,w3)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh3, 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh3)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3]).T\n", "yh_= np.matmul(X_,w3)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAABICklEQVR4nO3dd1yVZf/A8c/FEEGUIYqIoGjuHChubTjSzByVI60sSzOzJxs+mVqP9ViZPe3pqF9lQ8udI8tRjrREUXHhHgwBByiCzOv3BwcFPAfO4ZzDQc/3/Xrx4nDPi3Puc3+vfSutNUIIIZyXi6MTIIQQwrEkEAghhJOTQCCEEE5OAoEQQjg5CQRCCOHk3BydgLIICAjQ9erVc3QyhBDihrJjx46zWusaxZffkIGgXr16REZGOjoZQghxQ1FKnTS2XKqGhBDCyUkgEEIIJyeBQAghnJxNAoFSqo9SKkYpdUQpNcnIeqWU+siwfo9Sqk2hdSeUUtFKqV1KKan4F0KIcmZ1Y7FSyhX4FOgFxALblVLLtdb7C212N9DQ8NMB+Nzwu8CdWuuz1qZFCCGE5WzRa6g9cERrfQxAKTUfGAAUDgQDgG91/gx325RSvkqpIK11gg3OL4QQN72lUXG8syaG+JQMavt6MrF3YwaGB9vk2LYIBMHA6UJ/x1I0t29qm2AgAdDAb0opDczSWs82dhKl1BhgDEBoaKgNki2EcAR73tBuVkuj4nh5cTQZ2bkAxKVk8PLiaACbvHe2aCNQRpYVn9u6pG26aK3bkF999LRS6jZjJ9Faz9ZaR2itI2rUuG48hBDiBlBwQ4tLyUBz7Ya2NCrO0Umr0N5ZE3M1CBTIyM7lnTUxNjm+LQJBLBBS6O86QLy522itC34nAUvIr2oSQlRAS6Pi6DJjPWGTVtJlxnqLb+D2vqHdrOJTMixabilbBILtQEOlVJhSqhIwDFhebJvlwCOG3kMdgVStdYJSqopSqiqAUqoKcBew1wZpumlY+8UTwlZskZu39w3tZlXb19Oi5ZayOhBorXOA8cAa4ADwk9Z6n1JqrFJqrGGzVcAx4AgwBxhnWB4IbFZK7Qb+AVZqrX+1Nk03CylGi4rEFrl5e9/QblYTezfG0921yDJPd1cm9m5sk+PbZK4hrfUq8m/2hZd9Uei1Bp42st8xoJUt0nAzKumLJ41rorzZIjc/sXfjIo2eYNsb2s2q4PtekXsNCSuU1INCitGiIqnt60mckWvPkty8vW9oN7OB4cF2e58kEDhQaV3CbPHFE8JWbJWbt+cNTZSNzDXkQKXVudq7XlAISwwMD+at+1oQ7OuJAoJ9PXnrvhZyU78JSInAgUqr+pFitKhoJDd/c5JA4EDmVP3IF08IYW9SNeRAjq76kTEKQgiQEoFDObLqx95zlwjbkHl5RHmQQOBgjqr6kTEKFZ8Ea1FeJBA4KRmjUDEVLgG4KEWuLjp/o7MHaykh2YcEAiclYxQqnuIlgOJBoICzBmspIdmPNBY7KUc3VIvrGauuM8ZZg7XMXGo/UiK4gdi6WOzh5nL1i+Xn5c5/7m0uOSsHMien78zBWqoz7UdKBDcIW85EWnCslIzsq8uuZOfZMLWiLErL6bsq5dQjeWXmUvuREkEForVm//79bNq0iU2bNnHixAmqV69OQEAAa0/lkVO3HZVq1Lu6fVkbDqXHUMVkbC6fwvK0durPR2YutR8JBBXE9u3bGTduHJGRkQAEBQXRuHFjTp8+TVRUFLFx8aC/wT2gLlVuvZOq4f1wqVTZomJxQdWSsUZikCK2oxXc5F/4abfRhmJnz/nKlCv2I4HAwc6fP8/kyZOZPXs2tWrV4rPPPuOuu+6ifv36KHXtUc/tpi7i2D9rubx/Iyl/fM2lyF/wu/MxGnbqY9Z5ive4MMbZbzQVQcFNTXK+xsmUK/YhbQQOlJCQQKdOnZg7dy4TJkzg4MGDPPXUUzRo0KBIEACYcn9HanYYQK2HZhI4Yiau3n6c/eV/XFgwiWPHjpV6rtJ6pMiNpuKQWT6FMUeOHKFVq1Zs2rTJ5seWEoGDJCYm0qNHD+Li4tiwYQPdunUrcfsixWKaUf+Zz2mTuZvvP5pO27Zt+fbbb7n33ntN7l9StU+wFLErHMn5iuIiIyPZs2cP1apVs/mxJRDYSUldPc+ePUvPnj05ceIEq1evLjUIFLj+5tCTFx69jwceeID+/fszadIkpk+fjqur63X7mhpAFuzryZZJ3cv0PxojIz9vHvJZViyRkZF4eHjQrFkzmx9bAoGNLY2KY9ryfUW6ZhYeAXlvy1r079+fI0eOsGLFCm6//XarzhcWFsaWLVt49tlnmTFjBkePHmXevHl4eHgU2a48elzIyM+bh70/SwkylouMjKR169a4u7vb/NgSCGyopAbZgu6Zh37/nq1bt/Ldd9/Ro0cPq8939csUNpTHng/i/957jZSUFBYvXoy3t/fVbcujx4V0S634zL0Bm/tZluWGLhkGy+Xl5bFz504efvhhuxxfAoENldYge+JIDK/Me4X77ruP4cOHW3UuY1+m814deWbae3z6+ov07NmT1atX4+fnd3UfS+qdy/IFl5GfFVtJN+C7Gvtx8uRJLly4QHZ2Nkd3bQU3d1yr+ONaxQ+XSpWBop9lWW/okmGw3OHDh7l06RIRERF2Ob5NAoFSqg/wIeAKzNVazyi2XhnW9wXSgUe11jvN2fdGUtINT+flcnHNh1StWpXPPvvsul5BljL1ZdpRpRWLFi1i6NCh9OnTh99//93ixqWyfsFlIruKreCayctMJzPuAJmx+zkTt58hH8SSnXahxH1dvHzxCGpIQFgz1q/35LbbbivzDV0yDJYrGF9UYQOBUsoV+BToBcQC25VSy7XW+wttdjfQ0PDTAfgc6GDmvjcMUzdCgIzIJaTFxvDlggUEBgZafa6SvkwDBw7kp59+4v777+fee+9l9erVeHl5mX3ssn7BZeRnxXXx4kUObVnF5YObyDi+E3JzQLlQKbABHvXb8Z8htxEWFkZAQADu7u5sPXaBL9YdID31HLlp58g+H0f2mcPEroukx9pvqF69OpnBbfFqehuV67YqkrGJS8lgaVScyWtFMgyW27FjB56enjRt2tQux7dFiaA9cERrfQxAKTUfGAAUvpkPAL7VWmtgm1LKVykVBNQzY98bhqkpArzzLnNm6wIGDRrEkCFDbHKu0r5MAwYM4LvvvmP48OEMGjSI5cuXX9eAbEpZc2wy8rPi2bt3Lx9//DHz5s0jIyMD16o1qBp+D54N2uFRuzEulTwJ9vVkSrGeY3feCc3aXF89eGd9b9avX8/ChQtZsGgpaXt+w716KFXbDcC7+Z0ot0oAJZYgJcNguYKGYjc3+9Tm2+KowcDpQn/Hkp/rL22bYDP3BUApNQYYAxAaGmpdiu3E1I1w6/yPeCfzCm+++abNzmXOl2nYsGGkp6fz+OOPM3LkSH744QdcXEofQ2hNjk36v1cMW7ZsYdq0aaxdu5bKlSszYsQIbul6L18fcedKzrXpK0q6AZv6LAcNGsSgQYMY8MxRJsyYxdmtizj/68ekbJyHb9fheLfqTUY2JkuQtsgwOFOvo9zcXHbu3MmoUaPsdg5bBAJjld3FJ0oxtY05++Yv1Ho2MBsgIiLC+BM7HMDYBVm4X/7Zs2d56NNPGTZsGE2aNLHZec39Mo0aNYqzZ8/y0ksvERISwjvvvFPqsSXHduPasWMHU6dO5ddffyUwMJC33nqL0aNHU716dQCa2PAGOqRjAyr951menX8bmaejSdn8A+d/+4xLO1bgd+co4huYrs+2JsPgbL2ODh06xOXLl2nbtq3dzmGLQBALhBT6uw4Qb+Y2lczYt8Iy54J87733SE9P55VXXrH5+c39Mk2cOJGTJ0/yv//9j9DQUJ555plSjwvlV8XjTLk7e0lKSmLSpEn83//9H/7+/rz99tuMHz/+urYhS2/ApX02A8OD8ycyVC0JfLAFGYe3ceGPr0haOI2AVt05N7Hj1SBkK87W68jeDcVgm0CwHWiolAoD4oBhQPG+kcuB8YY2gA5AqtY6QSmVbMa+FVZpF+S5c+f4+OOPGTJkiN0aecyhlOKjjz4iLi6OZ599ltDQUAYMGFDiPuVVxeNsuTtby83N5YsvvmDq1KmkpaUxceJEpkyZgo+Pj9XHNvezKVyC9GrUCc8GEaRvX8yFLT/SvHlzZs+eTf/+/a1OTwFn63W0Y8cOvLy8bFqjUJzVk85prXOA8cAa4ADwk9Z6n1JqrFJqrGGzVcAx4AgwBxhX0r7Wpqm8mLrw4lIyCJu0ktaDnyUtLc0upQFLubq68sMPPxAREcGIESPYtWuXo5MEyOMHrXHo0CFuv/12xo8fT0REBNHR0cycOdMmQQDM/2yKT5JXp3o15rz/FpHbtxMYGMiAAQP417/+RVZWlk3S5WwPqImMjCQ8PNzo1DG2YpMmaK31KvJv9oWXfVHotQaeNnffG0VJ3UVzs68Q99dSqjbpwuEsX5qXc9qM8fLyYtmyZbRr147+/fvzzz//UKtWLYemydlyd7aQl5fHhx9+yOTJk/H09GTevHmMGDHC6rEpxVny2RgvQQazfft2Jk2axPvvv8+OHTv4+eefqV27tlXpcqY2rNzcXKKiohg9erRdzyPTUFvB2APgC6Qf2orOvIxX+D3lkrtdGhVHlxnrCZu0ki4z1pt8hGVQUBC//PIL586dY9CgQVy5csXuaSuJs+XurHXmzBl69+7N888/T8+ePdm7dy8PPfSQzYMA2OazqVSpEu+99x4LFixg9+7dtGnThhlfLzfrWjXFmabpPnjwIOnp6XZtKAYJBFYpfkEWdjn6d9x8a+ERcut1OShzb9rmsvR5xuHh4cybN49t27YxZswYtJGnYZUXY8H0Zs3dWWvNmjW0atWKLVu2MGvWLJYvX2517roktvxshgwZwj///INyr8zk0YM5/M96q569PTA8mC2TunN8xj1smdT9pgwCAFu3bgWgffv2dj2PBAIrFb4ggw05peyUM1w5uYcqLXqilEuRHJS5N21LgkVZ6tnvu+8+Xn/9debNm8cHH3xgdBtbByxjnCl3V1a5ublMnTqVPn36ULNmTSIjIxkzZoxdSgGF2fqzadasGSEj38O9RhjJS97k0s4VgLQJlWTjxo3UrFmTRo0a2fU8MumcDRXUXaZErwMU3rf2uC4HZU7XN0t70pS1nn3KlCns3r2bF198kVtvvZVevXpdXVeevXmcZRBaWbrJnjt3jhEjRrBmzRpGjRrFJ598gqenfarNTKXPlp9Nco4HgQ++wdlf/sf5378g93IKPl1H2KVN6Gbolrxp0ya6detm96AvgcCGBoYHk5uby/CP11E5LJy6oaHXXXzm3LQt7SdtyUjg4l+O8c+9yaFDh7jvgcE0GvMJ5139qO3rSXpWjlP11ba3sgTWXbt2MWjQIOLj45k9e7ZdGwzLGvgtvdnmX6tQY+DLnF/zKal/zUfnZtN8wFMV4v+pSE6dOsWJEyd47rnn7H4uqRqysWoXYshKTeKbGS8Zrbs0pwHO0hy+uXW5xqqlXv/1GN3GvU16dh7RX08hNyuDuJQMLqRnY4z05ikbS6vvFi1aRJcuXcjJyWHTpk127zVSlupFS9um4Nq1qlxc8e8zHu/wvlz8exEBe+fbtK3qZuiWXPBs4ttuu83u55ISgY199dVX+Pv7mxywZU7XN0vn+jF3JLCpL8evJxUB/V8i6adXObfyfQIGvmyyKCq9eUpnLJdsbnDXWjN9+nReffVVOnbsyJIlS6zu4mtOrr2kMTGmZhItywjf4tdqi8HPU71JEL/8OJexNV14fsrzXLhygbSsNDKyM8jIySA3LxcX5YKLcsHDzYNqHtWo5lGN6p7VCaoaRCXXSted52bolrxx40aqVatGixYt7H4uCQQ2dOnSJZYsWcLo0aNNzvRpzk27LP2ki9flaq25knOFjOwMruTkdxE9nRKPxgVFJRQeKEOBMFdrPOu1xu/OUVxYP5eL237Gp9P1s6RKb57SmaqS8PVyN1rK8vF0p8uM9cSnZFDL25VKf81i4+qlPPzww8yePZvKlSvbJT1QtIqkpDExpqpULLnZ5uk8TqWeIuZsDPE5R+kYfpTjKcc5ffE0OyPiUY0Us9VsZn862+L/sYZXDUJ9QmkS0ISmAU1pEdiCAJ8sklOvz7TcSBmZTZs20bVrV7sOJCsggcCG1qxZQ2ZmJoMHDy5xu9Ia4MwJFrl5uRw+f5g9iXs4cv4IR88f5UTqCRLTEklOT+Zc+jlydbGnpRX7DijtgYuuiivVcNE+uHb2wz0glJRj35KXmEPtej3wrRTMmdScG7axrbyZyiV7uLng6e5aZJ27i+JyVg4pGdnkZlwk6vvpZMbu56Hxk/jmozdt0kBobq7d1BTqprYH08Gjhk8W646tY3fibvYk7iE6KZqDZw+Snp1+dZvKbpUJ8w0j1CeUljVbElQ1iHXL17Ft/TYeH/44jw5/FE83T7YcTuWDtUfJzMlFk4smB3f3K4zoGMAttSDuUhzxl+I5duEYf578k++jv796DvfKtaiU25TKeW3wzG2Dt7v/DZORSUpK4sCBA4wcObJczieBwIaWL1+Ov78/nTt3tvpYxYNFWlYavx75lQ3HN7D59GZ2ndlV5IsVWCWQML8wGlZvSOeQzgR4BeBdyZsjiVn8GZNCanoOlSspMnNyyNGZaK6QRwYurpep4ZtJbGoiV3QsuU3PQTO4yA9c5Adcsl2oG1QX3xpN2ZTUhPNRzWkZ2JLmNZrj6X7j5K7Ki6lccmpGNu8PbV0kuKdn5XAhPZvsC/Ek/TyNnIvJBPT/N8eCe9msl4i5ufaCa23Cgl1mH2di78b8e/HfXMyNIdPlEFkuh8h2OcrJrER6zsvfJsg7iBaBLRjTZgxNazSlSUATGvo3pJZ3rev+x9duf43hw4fz5ctf0qF6B0aPHs2/vl1PXnZtijyuPQs27vHkrb5Fn6EAcCnzEnsS97AtdhuL9m5ge8IWLrMBUDTya82JzEc4kzaMWt6OHVFfms2bNwPl0z4AEghsJicnh5UrV9KvXz+bPTziTNoZlhxYwuKDi/njxB/k5OXg7uJOu+B2PBH+BOFB4bSu1Zpb/G/Bu5L3dfsvjYpj3m/R5Gbn4g2Qkf+BuyjI0/n9wgty+QX1yHEpaVTjNEd/mUy1EC8eefYR/oo9yB9H9rLq0O+g8qs3XJQLjao3IrxWOG2C2tAmqA1tg9riU9k289zYWnl1JSypfad4cA+btJLM+BiSFr4GQOCwN6hcp5lN67EtaW+6OpOoie211hw5f4S/Tv/FX6f/YmvsVo647UW75TfyehBE+9rt6d+sK22C2tAqsBU1qtQwO62urq7MmzePS5cuMXbsWIKCgohPMR4QTb1H6/Zf5J01mcSnNKG2bzgL7v2c0FqJrD68miUHl/Dcmud44bcX6FW/F+PajeOehvfg6mL/qhdLbdy4EU9PT7uPKC6gHDmqtKwiIiJ0wdSsFcWff/7JHXfcwcKFC7n//vvLfJzMnEyWxSxjzs45rDu2Do2mUfVGDGw8kJ71e9I5pDNVKlUx61hdZqw3We/r6e5a4uCgTZs20b17d1p1vI20257nSi5ocslRZ1Dup+na9DJX1DGizkRxKvXU1f0aVW9E++D2tK/dno51OtKqViujjXnlqXg9OZT+/5d0rJICiiXnavrIdGJ+nI6rtx81B7+Gu3/++mBfzyLPtLCGpf974e01OWSpY+S5HyAs+DTHL+0k6XISAD4ePnSo04FOdTrRIbgD7YLbEeAVYJM0p6Wlcccdd3DgwAEaPPoOF6vWvW4bX093qni4FfkcgFL/1wPJB/g++nu+2f0NsRdjqe9Xn/HtxjOm7Rizv1floW3btvj4+LB+/XqbHlcptUNrfd181hIIbOT555/n008/5dy5c3h7X587L03S5SQ+3PYhs3fO5mz6Wer61OXR1o8yuNlgmtVoVqaqgrBJK40/5cegtBvO559/zrhx46jW4QH87njU5L5n08+yM2En2+O2E5kQyd+xf5OQlgCAh6sHbYLa0KlOJzqFdKJTnU4EVyvfdgZTAdHSG665N1VzSh+zZs1i3LhxVKp1CwH3vYprFV+Tx7OWuaWh9Ox0/o79m9l/r2D1oT+4mLcPrTIBCPMNo2toV7qGdqVLSBea1miKi7Jf7/PExEQ6derEuQupBAx/h9yq157z7e6iQEF2btEnrVV2dzHaIG/sc87Jy2HJgSV8+PeHbDm9hZpVajK562SejHiSym7WNdBbKzU1FX9/f1555RWmTZtm02NLILAjrTUNGzakUaNGrFpl2USqp1NPM3PLTOZGzSUzJ5MBTQbwZNsn6VW/l9VF1pJKBJD/eLjjM+4BjN8sBrSuTbXwvqTt/pXq/V7Au/mdRvctTmtN7MVY/o77m22x29gWu43I+Egyc/NvKiHVQugc0pnOIZ3pVKcTrWu1xt3V3eixbMFUQCzpfzDGFgFFa820adN4/fXX6du3Lw9P+YCPN552yOjX8xnn2XJqC5tObWLTqU3siN9Bdl42CkXLwJZ0C+1Gt7rd6BraldpV7TenkSmHDh2ic+fOeHj7UGfkeyRluhVpWzFXaZ/zX6f/4pUNr7D++HqCqwbzds+3Gd5iuN1H85qyatUq7rnnHtatW0f37rYpGRYwFQikjcAG9u/fz9GjR5k4caLZ+1zMvMiMzTN4f9v75OTl8HDLh/l3l3/TJMB2D58oqScIXKsnLqmL4a0PTCDqfCznVn+Eu19tPGo3LrKvMUopQnxCCPEJ4YFmDwCQlZvFrjO72Hp6K3/F/sWW01tYsG8BAJ5unkTUjqBTnU50DulMxzodCfQONHl8S1nzDObCLOkuaSyw9msRyFNPPcXcuXMZNWoUs2bNws3NjWGdGxbZ57kFu2weFLTWnEg5wZbTW9hyagubT29mb9JegKvtTi90eoFudbvROaQzvpV9bXJeazRq1IilS5fSo0cPmmz+iM2//oq7uzthk1ZadJzSPufOIZ1Z98g6NhzfwEtrX+KhJQ8xZ+ccPu37Kc1rlv8E8mvWrKFy5cp07Nix3M4pJQIbePPNN5kyZQpxcXGlzgaZp/P4KuorJq+bTHJ6Mg+1fIjpd06nru/19aC2sDQqjmnL95GSUTQHVbgKoqSc7sTejZn43WZOfDUBnZ1JrUfeo2r1WjapvjidepqtsVuvNjxGJUSRnZefznq+9ehYpyMdgjvQPrg94bXCy9xLyVZtBOaWCIydz4NsfLZ+xvaNvzN16lRef/31IjlOW7ZjAGRkZ7AzYSdbY7fm/5zeerW6rmqlqnQO6Uy30Pzcfvvg9hW6B9i3337LyJEjGTNmDF988QVd395g9HPw9XQnMyfPqvcwT+cxd+dcXl73MqlXUpncbTKv3PYK7q7u5dLhoKB2oUmTJqxYscKmxwapGrKrjh07kpeXxz///FPidofPHWb0L6P58+SfdAvtxnu93yOitv2eQ1pYSRdxaVUnS6PieO3bNez+bDxeAcHM+WklD3ax/WyIBTevgiqlrbFbib0YC4CbixstarYgonYEEbUjaBvUlltr3oqHm/GBe8XZ4kts7s26eMDIzbhI0sLXyEo4xKeffMK4ceOuO7Y11U45eTkcSD5AZHwkkfGR/B33N7sTd5OTlwPk1+93CulEl5AudAnpwq01b62QPWVK8vLLLzNjxgzef/996t0+2OTnACWPvzH3Ojibfpbn1zzPvD3zaFe7HSOb/I9Pfku3WaA2JSYmhiZNmvDZZ5/x1FO2nX8JJBDYTXJyMjVr1uT11183+UjKPJ3H+1vfZ+qGqXi4evDuXe8yKnyUw+ogizP3JrR69Wr69etH3759Wbp0abmMeIy/FM/2uO38Hff31RvdhSsXgPzg0LxGc1rXak2rwFa0DGxJi8AW1KxS027pMedGUjiw5qQmkfjTq+SkJlLj3okkLXnD6HHNbce4lHmJvUl7iU6KJiohiqgzUexJ3ENGTv7nV7VSVdoFt6NDcAc6BHeweTWbo+Tl5fHAAw+wbNkyfv31Vy4HNLM4sJel1LVw/0KeXPEkKRmX8csai3duryLrbdnDC+Ddd9/lxRdf5OTJk4SGhtrsuAUkENjJwoULGTx4MFu3bjVap5d8OZlHlj7Cr0d+pX/j/nx+z+cOaXgriSVfkIKeRM888wwfffRReScVrTXHLhxjZ8JOos5EsTNhJ7sTd3Mm7czVbQK8AmheozlNA5rSOKAxjas3plH1RoT6hNq1UbpAQWDNSjpG0s/T0NmZ1Lj/FRq0aGfyplE4GGs0eaSQ7RKPd5VkBrWD/Wf3sz95PydSTlzdx8fDh9a1WhNeK/xqSalh9YZ27c3jSGlpaXTq1Im4uDj++ecfbrnlFov2L2upK+FSAvXfuZsrrrvxzrkH/+wnUIYhbpZ2OChN9+7dSU5OJjo62mbHLEwai+1kw4YNVKlSxejAj40nN/Lgogc5l36Oz/p+xtiIseVeCjAnB2vupHUATz31FEeOHOG9996jfv36TJgwoTz+jauUUjTwb0AD/wYMbn5tKo+ky0nsSdzD3qS97Evax/6z+5m/bz4pV1KubuOqXAn1CSXML4y6PnUJ9QklpFoItavWpnbV2tTyrkV1r+q4uRj/WphbrTCxd2P+9e63nPn5v7hU8iJwxNv41G7AxN6N0VqTlpVG4uVEzqSdIfZiLHEX4/APPsCejP1kcoYcdQat8m9YiTnw8T8eNA5oTIfgDjwR/gQtAlvQomYL6vnWqzClyvLg7e199ZnbAwYMYNu2bVStWtXs/cs6EV1Q1SDCPd9h3+VZXHRfRLY6To2sl3HFz6ZzF6WmprJp0yZeeOEFmx3TXFIisFLz5s0JDQ1l9erVRZbPipzF06uepoF/AxY8sIDWtVqXe9ps3QBZIC8vj8GDB7NkyRLmz5/PkCHXT1DnCFOXRvPj36fJ1RpXpRjWvg4T7goi5lwMh84d4viF4xy9kD/Z2anUUyRcSkAXq5BRKPw8/ajuWR3fyr74VPbBx8OHc5cUu06lk5vnjtLuKFxxd3GnZ7OaNK5VFa01OXk5ZOVmEX0gmjUbfkNV8cSjbkNwz6GqVyaV3DM4l3Hu6iSARc6rPfFQtahEIDqnBgGV6/JQRAceadeRMN+wG65O357WrVtH79696devH4sXL8bFxbwSkDXtMAXfpbN5f3DO/QNctC9186bz7n13m/wuWdouVVC7UDDZnD3YpUSglPIHFgD1gBPAEK31BSPb9QE+BFyBuVrrGYbl04DRQLJh08laa8s64jtQUlIS+/fv55FHHrm6LDcvlxd/e5EP/v6Au2+5m/kPzKeaRzWHpK8s0wSXpuDijq03gqp1DzNixEP4+/vTs2dPWyS5zKYujea7bddGOOdqzfd/n0YpxfSB+QOhisvKzSLuYhwJaQkkXErgTNoZktOTOZt+lrPpZ0m5kkJqZipxF+M4dvY82eoK2jULTTaQByqP+TGAYYp7Nxc3VJ4iOyMbGrnhWtmHPJWG0p5kpNekZb0Q2rQIpWaVmtSsUpNjZ9z4dvMlcrL9UHihUHZpgLzZ9OjRg3fffZcJEybw5ptvMnXqVLP2K8usvgWulZorcTy1FsmVX+Ns5ZeoXbMlUPIIbTDvwTgrV67Ez8+vXLuNFrCqRKCUmgmc11rPUEpNAvy01i8V28YVOAT0AmKB7cCDWuv9hkCQprX+nyXnrSglgp9//pkhQ4awbds2OnToQHp2OkMXDmXFoRU82+FZ/nfX/0xWM5QHWw2kKlD84s67kkbSj5NQl5LYtPFPIiLKpweUMQ1eXkWukWvZVSmOvtXX6uMbey81efnv5Vv9yMnJYdy4ccydO5eAVj3w6jke5Va0PaJ4ztNWI56dkdaaRx55hO+//55ffvmFe+4x73q2VRfQI+eP0Pu73vnzgQ1dwl0N7iqy3tLPNi8vj6CgIHr06MEPP/xgcXrMZapEYG2r0gDgG8Prb4CBRrZpDxzRWh/TWmcB8w37VWjmPLh9w4YNeHt707ZtWy5lXqLv931ZeWgln/b9lA/6fODQIADmPQ3NEsVLGC6VvQkY/DrZlarS6Y6efLTQtvOiWMJYEChpuaWMvWcKF4J9q3Dx4kXuvfde5s6dy5QpU6jS+9nrggDk5woLX08lPQzG1DUn8imlmDVrFq1bt2bEiBEcPnzYrP0GhgezZVJ3js+4x+gTBM11i/8tbBm1hYb+Den/Y39+P/p7kfWWtkfs2LGDpKQkswOarVkbCAK11gkAht/G+u0FA6cL/R1L0bLUeKXUHqXUV0opP1MnUkqNUUpFKqUik5OTTW1mE+Y+gu+PP/6gW7duXMy+SM95Pdl8ajPf3/c949pd30/cEcx9hKW5jF3Ebt7+BA79L1q58vyjD/DJ4j/LdGxruZpoNDW13FKm3suHm1emc+fOrFu3jjlz5jB9+nSC/UxPXlb4evL1Mt2DyZzHPjo7Ly8vFi9ejJubGwMHDiQtLa1cz1/LuxbrHllHk4Am9J/fn/XHr2WELM2ELV68GFdXV/r06WOXtJam1ECglFqrlNpr5MfcXL2xb2JBNu1zoAHQGkgA3jV1EK31bK11hNY6okYN86e2LQtznneamJjIgQMHaH97e7p/051dZ3axaMgiHmzxoF3TZomB4cG8dV8Lgn09UeQXS62pfzZ1Ebv71SZw2BtorXn+0fvNzp3Z0oMdQixabilj7+XDYRm8MmoACQkJ/PbbbzzxxBOA8aBRXEZ2LlpT4nY32jN2HaFevXosWLCAgwcP8thjj9n0ucfmqO5VnbWPrKWhf0P6/dCPP0/kZ4QsyYTl5eXx3Xff0adPH6pXr14u6S6u1ECgte6ptb7VyM8yIFEpFQRg+J1k5BCxQOFvYx0g3nDsRK11rtY6D5hDfjWSw5lTrPvzzz+hEiz0WMiBswdYPmw5A5pUvBovWxWFoeQbnHv1EAKHTSc3J5vu3btz6NChMp+nLKYPbMFDHUOvlgBcleKhjqFMH2i7570Wfi9H+h9h2tih+Pv7s23bNu68884i2xUOGqakZmRf3c6UG+kZu47So0cPZsyYwcKFC3nnnXfK/fwBXgGsfWQtYX5h9J/fnz2Je0rNhBWuem755PvExsby8MMPl3vaC1jbWPwOcK5QY7G/1vrfxbZxI7+xuAcQR35j8XCt9T6lVFBB1ZJS6jmgg9Z6WGnntXdjsTkNPaOfGs3/Zf4f1INFQxY5LAiU1wNXip/P1KymHqmnuLDoPyil+O2332jVqpXNz+2ImToLZGZm8swzzzBnzhx69+7Njz/+iJ+fyRpNwLzrSRqOraO1ZujQoSxatIg1a9Y4pBfb6dTTdPqyEwBbH99KiI/x0mjxThdnV35AxuG/+GHDboZ2smyQnKXs1Vg8A+illDpMfq+ggm6htZVSqwC01jnAeGANcAD4SWu9z7D/TKVUtFJqD3An8JyV6bGJ0op1OXk5zM+ZT27dXL4e+LVDg4A5bRm2VJAr/mBo6/x54YvJ86/Lf2YtpFKlStxxxx389ddfVp9zaVQcrV/7jQkLdpXr/1rc6dOnueOOO5gzZw6TJk1i9PTZ9JsVVWKHAjCvmsDW7TnORinFV199RdOmTRk2bBgnTpwo9zSE+ISwesRqLmVdou8PfYsMZiyscNVzXvYV0g9twatxVz7685TR7cuDVYFAa31Oa91Da93Q8Pu8YXm81rpvoe1Waa0baa0baK3fKLT8Ya11C611S611/4LSgaOVVqwbu2QsaXXSGOA+gIdaPuSwdJrTlmEvA8OD8a58fa+o7FzNDzE5bN68mRo1atCrVy+WLVtW5vMUBLvis6dC+dahr1q1itatW7N3715++uknOgwZz9Rl+80KTOa01di6PccZeXt7s2TJEnJychg4cCDp6eml72RjLQJbsGToEmLOxjD458FXJ/4rrHB1X8bhbeisDKrc2p24lAyHdQ6QkcUW+mz7Zzy96mn4C7b8Z4tNHlRfVrYeJ2Cr8xekIcA1g5Rl0zm6fw8zZ87khRdesHhKBEsermMPWVlZvPLKK8ycOZN6jZrh1+/fXHAPwEUpo11TpSrH8VavXs0999zD0KFD+eGHH6675sqjivHrXV/z2LLHeLHTi7xzV9F2i8LXdOJPr5J9LpbgsXNRysXuAwrtVTXkVH47+hv/Wv0vbsm7BZf1LrRu3dqh6bH1OAFbnR/yu4Ul53ri0u81OvW8h4kTJzJ69GgyMzMtOkdpjaX2/F/37dtHx44dmTlzJnfd/xCV7nuL8+4BaEyPT5DGXce7++67efPNN5k/f/51jcflVZ36aOtHGRcxjv9t/R8L9i4osq6gGjAn7TxXTuzCu/mdKMNEgY7qKSaBwEyHzh1i8M+DaV6zOaH/hNLy1pZ4eXk5NE2Orlc2p5tkJm7oO57llVde4csvv6Rz584cOXLE7HOUdKO31/+am5vLu+++S9u2bYmNjWXp0qWkRTxGpi59vp/yCsI3I3MGcZrrpZdeYsiQIbz88stFHh9bntWp7/d5ny4hXRi1fBTRiddmEy2oBry8bz3oPKrcWrQE6YjMhAQCM2RkZ3DXNwNIz4RzJ55l45/bqRHWzNHJcni9srndJBMuZvL666+zdOlSjh8/Tps2bViwYEEJe1xjKtj4ebmb/b9acoOJioqiU6dOvPjii/Tp04e9e/cyYMAAs76c0rhbdrbOqRc0Hrdq1YoHH3yQ/fv3A2WfgbQsKrlWYuGQhfh4+HDfT/dxKfPS1XV3NwsgfecveIS2xN2/6DXsiMyEBAIz9P9uFCcvHcQ/8wX0hVxyMi4RnVWjQoz6tOU4AWvPb6o/fMGFPWDAAHbt2sWtt97KsGHDGDZsGImJiaUev3iw+2Boa6JevcvsIGDODSY1NZXnnnuOiIgITp06xffff8+SJUuoWbNmkf+hOFelpHHXBuyRU69SpQrLli3D09OTe++9l3PnzpV7dWot71oseGABxy4c41+//uvq8u+//56si+eo2aXozL2OykxIICjFN7u+Ye2p+VTLHopnXluyEvIHSqmaDWTUZzHmVFWFhoby559/8vrrr7NkyRKaNGnCl19+SV5ensnjWhPsSrvBZGZm8sEHH9CgQQM+/PBDxowZw8GDBxk+fHiRRkZT/9u7Q1o5LAjfTOyVUw8JCWHZsmXExcXxwAMPMKF7WLlXp3ar240p3abw9a6vmb93Prm5ucycOZPw8HA+fHFkhegpJoGgBPuT9/PUyqeonNsS35zhAGQmHEa5eeAeUFcaBosxt6rK3d2dV155hT179tCyZUueeOIJIiIiWL16tc2nCDD1GcWeTWX27Nk0bdqU5557jvDwcCIjI/n888/x9fUt8/8mysaeOfUOHTrw1Vdf8ccff/DLJ//hzUG3lvvn+Ortr9KpTifGrhjLnJ/nEBMTw6RJkxjUpo5DS/QFpPuoCVm5WXT6shOnUk9RL+dzklPzL8gz300EFLUemulUXQXt1eUuLy+PH374gVdffZXjx4/TpUsXXnrpJfr27WuTZyJf9yD5yymk7V7D5agVZKddoG3btrz55pvcddddJRxF2Ju9HqJU2BtvvMHUqVOZMmUK06dPt8kxLXH8wnFafdEKfUZTc1VNDh08VC7P/S5Muo9a6L9//pedCTuZ3W82U/p0wtPdFZ2bQ1biUSoFNXSqhkF7drlzcXHhoYce4uDBg3z++eecOHGC/v37ExYWxn//+1+OHj1q1fEn9m6Mh87m8oFNJC18jdhPHyFl0zxubdmKdevWsX37dgkCFUB5lLgmT57M6NGjeeONN5g9e7bNjmuuML8wxtUbR5p/Gu3GtSv3IFASKREYsS12G12+6sLDLR/m64FfA/k3w2n/t5LdHz9Jw6FTmPnSU05TLVCe8+BkZ2fzyy+/8MUXX/D77/lzvDdu3Ji+ffvStWtXWrRoQf369U1+ibTWxMXFsX//fv7++2/Wrl3LX39tJScnG1fv6tRq24uXnhnDM/ffaXR/cXPLyclhwIAB/Prrr/z000/cf//95Xbu3NxcOnTswN6We3Ft4Mrep/YS5hdWbucH0yUCCQTFXM66TPiscDJzM9kzdg8+lX2urps9ezZPPvkkR44coUGDBnY5f0VkzQhma6qUjh8/zi+//MKqVav4448/rg5G8/T0JDg4GF9fX3x88j+fS5cucfHiReLi4rh0Kb+bnlKK8PBwevbsSZ8+fbjtttsqVC5MOEZaWhq9e/dm+/btLFmypMwPg7H02v7www+ZMGECn8z7hJdPv0z74Pb8/vDvFo+2t4YEAjO9sOYF3tv2HusfWc+dYUVzjaNHj2bx4sWcPXu2XD88RytricCW9b7p6ens27ePvXv3Eh0dzZkzZ0hJSSE1NRWtNdWqVaNatWoEBgbStGlTmjVrRosWLRw2v7uo2FJTU+nRowd79+5lxYoVFs9Waum1ffr0aZo1a0a3bt1YuXIls3bM4qmVTzHn3jk80eYJq/8fc0kgMENUQhQRcyJ4IvwJZt0767r1rVq1IigoiF9//dXm567IynpDl6mVRUV27tw57rjjDo4ePcqyZcvo1auX2ftacm1rrRk4cCBr165l37591KtXjzydR/dvuhN1JopD4w8R6B1o9f9jDmksLkVuXi5jVoyhhlcNZvSccd36y5cvs2/fPtq3rxDPzilXZW3IK89RnBWFLadJEPZVvXp11q5dyy233MI999zDTz/9ZPa+llzbixcvZvny5bz22mvUq1cPABflwqx+s8jIzuCltS+VKf225Ninq1cgn/zzCZHxkcy/fz5+ntc/aGT37t3k5uYSEXFdMC1VRXigirUGhgdbnObavp5Gc00363w8xUtOBb2rgBvu83YWgYGBbNy4kXvvvZdhw4aRnJzM008/Xep+5l7bUVFRPPbYY7Rp04Znn322yLrGAY15vtPzvL3lbca0HUPnEMfNZCwlAvKfLDR1w1T63NKHIc2HGN1mz549ABY/ccsRD4+pKBw9KV55c+TzIUTZ+fr68ttvv9GvXz/Gjx/P+PHjr5slt3hJ784mNUq9to8dO8bdd9+Nn58fy5cvx93d/bpzT71tKnWq1eHpVU+Tm5d73fryIoEAmPj7RHLzcvms72cmG4Gjo6OpVq0aoaGhFh3bmW8OzjYa1xmrwm4Wnp6eLF68mOeff55PP/2Uzp07Xx3DYiwzt2hHHPe3DTZ5bSclJdG7d2+ys7NZs2YNwcHGr3nvSt68e9e77Dqzi1k7rm+XLC9OXzW06eQmFuxbwH9u/0+JfXr37NlDixYtLO4t5Ow3h7JUKd2onK0q7Gbj5ubGu+++y+23386jjz5KmzZteOONN/g+tZHRzNyGg8lGOz1s3bqVkSNHEhcXx/r162nSpEmJ5x3cbDCzwmYxZf0UhjYfSnWv8u/p5tQlgjydx4Q1E6hTrQ7/7vJvk9tprYmOjqZFixYWn8PRD48RZWdpw6+zVYXdrPr3709UVBQRERE888wzRL77GJdjtlw3D1bxzFxmZiaTJk2ia9euZGZmsmbNGjp27Fjq+ZRSfNjnQy5mXuTNTW/a9H8xl1MHgq93fc3OhJ283fNtvNxNP2QmNjaW1NRUWrZsafE55OZwYypL246zVYXdzOrWrcvatWtZsWIF7u7unF36FnGfPcq53z4j49gOslPOUF2lkZSUxMqVKxk7dixhYWG8/fbbjBo1iujoaLp162b2+W6teSuPtnqUT7Z/womUE/b7x0xw2nEEFzMv0ujjRtT3q8+WUVtKrPJZuXIl/fr1Y9OmTXTt2tXic90MvYacjYyBEAUWbT/JM29+Rsr+TVw5vhOdff3jVr29venduzdjxowp89xVsRdjafhxQ+5vej/f3fedtck2ytQ4AqvaCJRS/sACoB5wAhiitb5gZLuvgH5Aktb6Vkv3t4eZW2aSeDmRXx78pdR6/+jo/C6AZakaAueqJ6+oLA3Gzt62I665v11dXF/9F++s6U1scgpVzsfQM8yTW2t5kZWVRaNGjbj99tvx8PCw6jx1qtXhuY7P8dbmt3i+0/O0CWpjo/+gdFaVCJRSM4HzWusZSqlJgJ/W+rrREUqp24A04NtigcCs/YuztkRwJu0MDT5qQP/G/fnx/h9L3X748OFs2bKFkydPlvmcwnHKMjLaVIkA8ksFUqoT9pB6JZUGHzWgda3WdpmHyF4jiwcA3xhefwMMNLaR1nojcL6s+9vaGxvfIDMnk9fveN2s7cvaUCwqhrJ04TX1rGRwrrEgwvZK6oTgU9mHV257hXXH17H++PpyS5O1gSBQa50AYPhds5z3t9jxC8eZtWMWj4c/TsPqDUvdPisri4MHD5apoVhUDGWp5inc8GuMs4wFEbZlTieEJyOeJLhqMNP+nGbzJ/aZUmogUEqtVUrtNfIzoDwSWCgdY5RSkUqpyOTk5DIfZ9qf03B1ceXV2181a/uDBw+Sk5MjJYIbWFm78BY8K9lU4VzaC4SlzCmdVnarzORuk9l8anO5lQpKbSzWWpucn1UplaiUCtJaJyilgoAkC89v9v5a69nAbMhvI7DwPADsS9rHvN3zeKHTCwRXM69+19qGYuF4E3s3NtpGYG4XXhkoJoor6HwQl5KBq1Lkam1W25G5pdPHwx/nzU1v8p8//kP3sO52n/be2qqh5cBIw+uRwLJy3t8iM7bMoKpHVSZ1nWT2PtHR0bi7u9O4sfT7v1FZ279fxoKIwgpX7wDkGqpvzGk7Mrd06uHmweRuk9lyegvrjq+zUcpNs7bXUHXgJyAUOAUM1lqfV0rVBuZqrfsatvsRuAMIABKB/2itvzS1f2nnLWuvoQsZF4g6E0X3MPP7gfft25e4uDh2795t8fnEzUPGgogCJfUog5LHmljSgy0zJ5NbPr6FUJ9QNj+22SalAruMI9BanwN6GFkeD/Qt9PeDluxvL36efhYFAcgvEdx+++12SpG4UchYkJuLNYG9tLah0johAGad28PNg8ldJzNu1TjWH19Pj/r2u1U6/aRzJblw4QKxsbHSY0iIm4i1z40w1WZUeH1JLMlUPBb+GK/9+Roz/5pp10Dg1HMNlWbv3r2ANBQLcTMx1XNnwoJdZZ5csICt244qu1VmQscJ/Hb0N3ad2WWz4xYngaAEBw4cAKBZs2YOTokQwlZKqrqxdHJBAFdD3b29JhkcGzEW70rezNwy06bHLUyqhkoQExODp6cnISEhjk6KEMJGSqvaKejXX9IN3VT1TsGoYVt2KvCt7MuTbZ/kg20f8Eb3N0p8bkpZSYmgBDExMTRs2BAXF3mbhLhZlFS1U6AsgwXt+VjaCR0n4KJceG/re1Yfyxi5w5UgJiaGRo0aOToZNxVLH/YihK2VNn0IlG2woD0fS1unWh1GtBzBl1Ffcjb9rNXHK04CgQlZWVkcP35cBpLZkD1zTEJYomD6kA+GtrbZYEF7T10+sfNEXJQL/8T9Y5PjFSaBwIRjx46Rm5srgcCG7JljEqIsbPlUOXs/lrZZjWYkvJBA34Z9S9/YQtJYbEJMTP7NSQKB7cjDXkRFZKvBgtbOaWWOqh5VbXaswqREYIIEAtuzd45JCEe6kZ9ZLSUCE2JiYggMDMTHx8fRSblplEeOSQhHulGnIpFAYEJMTIyUBmzMknlWhBDlRwKBCTExMQwaNMjRybjp3Kg5JiFuZtJGYMT58+c5e/asjCEQQjgFCQRGHDp0CJCGYiGEc5BAYIT0GBJCOBNpIzAiJiYGNzc3wsJsP7mTMJ88FUyI8iGBwIiYmBgaNGiAu7u7o5PitKx9eIgQwnxSNWSEdB11PJmOQojyI4GgmNzcXI4cOSKBwMFkOgohyo8EgmJOnjxJZmamBAIHk+kohCg/EgiKKeg6KmMIHMvYw0NkOgoh7MOqQKCU8ldK/a6UOmz47Wdiu6+UUklKqb3Flk9TSsUppXYZfmw/v6qFjhw5AkDDhg0dnBLndiNP4CXEjcbaXkOTgHVa6xlKqUmGv18yst3XwCfAt0bWva+1/p+V6bCZY8eO4eXlRWBgoKOT4vRkOgohyoe1VUMDgG8Mr78BBhrbSGu9EThv5bnKxfHjxwkLC0Mp5eikCCFEubA2EARqrRMADL9rluEY45VSewzVR0arlgCUUmOUUpFKqcjk5OSyptekgmfprtyyi/i8avL4RCGE0yg1ECil1iql9hr5GWCD838ONABaAwnAu6Y21FrP1lpHaK0jatSoYYNTX1MweCn2Qjo5qYnkeAXIs3SFEE6j1DYCrXVPU+uUUolKqSCtdYJSKghIsuTkWuvEQseaA6ywZH9bKRi8lJdxEZ2VgZtvrauDl6SOWghxs7O2amg5MNLweiSwzJKdDcGjwCBgr6lt7algkFJOyhkA3HxqFVkuhBA3M2sDwQygl1LqMNDL8DdKqdpKqVUFGymlfgS2Ao2VUrFKqccNq2YqpaKVUnuAO4HnrExPmRQMUspJzS+guPkGFlkuhBA3M6u6j2qtzwE9jCyPB/oW+vtBE/s/bM35baXgWbqphUoEMnhJCOEsZPZRrs1m+eSaj3Hx8iWkpp9MeSyEcBoSCAwGhgfzSbVMLrdswpZJ3R2dHCGEKDcy11Ahx44dk4fRCCGcjgQCg5ycHE6dOkX9+vUdnRQhhChXEggMTp8+TW5urpQIhBBORwKBwfHjxwGkRCCEcDoSCAyOHTsGSCAQQjgfCQQGx44dw83NjTp16jg6KUIIUa4kEBgcP36cunXr4urqWvrGQghxE5FAYCBdR4UQzkoCgcHx48elfUAI4ZQkEACXLl0iOTlZSgRCCKckgQDpOiqEcG4SCJBAIIRwbhIIuBYI6tWr59iECCGEA0ggAE6dOoWXlxfVq1d3dFKEEKLcSSAgf56hkJAQlFKOTooQQpQ7CQRcCwRCCOGMJBCQXzUUGhrq6GQIIYRDOH0gyMrK4syZM1IiEEI4LacPBPHx8WitJRAIIZyWVYFAKeWvlPpdKXXY8NvPyDYhSqkNSqkDSql9SqlnLdnf3k6dOgUgVUNCCKdlbYlgErBOa90QWGf4u7gc4AWtdVOgI/C0UqqZBfvb1enTpwGkRCCEcFrWBoIBwDeG198AA4tvoLVO0FrvNLy+BBwAgs3d394kEAghnJ21gSBQa50A+Td8oGZJGyul6gHhwN+W7q+UGqOUilRKRSYnJ1uZ7GtOnTqFv78/VapUsdkxhRDiRuJW2gZKqbVALSOrplhyIqWUN7AImKC1vmjJvgBa69nAbICIiAht6f6myBgCIYSzKzUQaK17mlqnlEpUSgVprROUUkFAkont3MkPAt9rrRcXWmXW/vYkgUAI4eysrRpaDow0vB4JLCu+gcqft+FL4IDW+j1L97c3GUwmhHB2pZYISjED+Ekp9ThwChgMoJSqDczVWvcFugAPA9FKqV2G/SZrrVeZ2t8elkbF8c6aGOJTMqjt68nE3o3p1ciXCxcuSIlACOHUrAoEWutzQA8jy+OBvobXmwGjs7mZ2t/WlkbF8fLiaDKycwGIS8ng5cXRxIZ7AtJjSAjh3JxiZPE7a2KuBoECGdm5fL4iv/OSBAIhhDNzikAQn5JhdHliQhwgo4qFEM7NKQJBbV9Po8s9s1NQShEcHGx0vRBCOAOnCAQTezfG0921yDJPd1caVcmkVq1auLu7OyhlQgjheE4RCAaGB/PWfS0I9vVEAcG+nrx1Xwtc0s9JtZAQwulZ2330hjEwPJiB4UWrgCadPk2LFi0clCIhhKgYnKJEYIzWmlOnTkmPISGE03PaQHD+/HkyMjKkakgI4fScNhDI9NNCCJHPaQNBwZPJJBAIIZyd0waCghKBVA0JIZyd0waC2NhY3N3dqVmzxGfpCCHETc9pA0F8fDxBQUG4uDjtWyCEEIAEAkcnQwghHM6pA0Ht2rUdnQwhhHA4pw0ECQkJEgiEEAInDQQZGRlcuHBBAoEQQuCkgSAhIQFA2giEEAInDQTx8fEAUiIQQgicNBAUlAgkEAghhJMGAikRCCHENVYFAqWUv1Lqd6XUYcNvPyPbhCilNiilDiil9imlni20bppSKk4ptcvw09ea9JgrPj6eSpUq4e/vXx6nE0KICs3aEsEkYJ3WuiGwzvB3cTnAC1rrpkBH4GmlVLNC69/XWrc2/KyyMj1mKRhMppQqj9MJIUSFZm0gGAB8Y3j9DTCw+AZa6wSt9U7D60vAAcChT4uXMQRCCHGNtYEgUGudAPk3fKDEGdyUUvWAcODvQovHK6X2KKW+Mla1ZA8yqlgIIa4pNRAopdYqpfYa+RlgyYmUUt7AImCC1vqiYfHnQAOgNZAAvFvC/mOUUpFKqcjk5GRLTn0dmWdICCGuKfXh9VrrnqbWKaUSlVJBWusEpVQQkGRiO3fyg8D3WuvFhY6dWGibOcCKEtIxG5gNEBERoUtLtynp6emkpqZKiUAIIQysrRpaDow0vB4JLCu+gcpvkf0SOKC1fq/YusLZ8kHAXivTUyoZQyCEEEVZGwhmAL2UUoeBXoa/UUrVVkoV9ADqAjwMdDfSTXSmUipaKbUHuBN4zsr0lErGEAghRFGlVg2VRGt9DuhhZHk80NfwejNgtJ+m1vpha85fFgWBQNoIhBAin9ONLJaqISGEKMrpAkF8fDweHh74+ZVLT1UhhKjwnDIQ1K5dW0YVCyGEgVMGAmkfEEKIa5wuEMj0EkIIUZTTBQKZXkIIIYpyqkCQlpbGxYsXJRAIIUQhThUI5FnFQghxPacMBFIiEEKIa5wqEMj0EkIIcT0JBEII4eScLhBUrlwZHx8fRydFCCEqDKcKBE2aNGH48OEyqlgIIQpRWpf5GS8OExERoSMjIx2dDCGEuKEopXZorSOKL3eqEoEQQojrSSAQQggnJ4FACCGcnAQCIYRwchIIhBDCyUkgEEIIJyeBQAghnJwEAiGEcHI35IAypVQycLKMuwcAZ22YHFuRdFlG0mUZSZdlKmq6wLq01dVa1yi+8IYMBNZQSkUaG1nnaJIuy0i6LCPpskxFTRfYJ21SNSSEEE5OAoEQQjg5ZwwEsx2dABMkXZaRdFlG0mWZipousEPanK6NQAghRFHOWCIQQghRiAQCIYRwcjdlIFBKDVZK7VNK5SmlTHazUkr1UUrFKKWOKKUmFVrur5T6XSl12PDbz0bpKvW4SqnGSqldhX4uKqUmGNZNU0rFFVrXt7zSZdjuhFIq2nDuSEv3t0e6lFIhSqkNSqkDhs/82ULrbPp+mbpeCq1XSqmPDOv3KKXamLuvndM1wpCePUqpv5RSrQqtM/qZllO67lBKpRb6fF41d187p2tioTTtVUrlKqX8Devs8n4ppb5SSiUppfaaWG/fa0trfdP9AE2BxsAfQISJbVyBo0B9oBKwG2hmWDcTmGR4PQl420bpsui4hjSeIX8QCMA04EU7vF9mpQs4AQRY+3/ZMl1AENDG8LoqcKjQ52iz96uk66XQNn2B1YACOgJ/m7uvndPVGfAzvL67IF0lfabllK47gBVl2dee6Sq2/b3A+nJ4v24D2gB7Tay367V1U5YItNYHtNYxpWzWHjiitT6mtc4C5gMDDOsGAN8YXn8DDLRR0iw9bg/gqNa6rKOozWXt/+uw90trnaC13ml4fQk4AATb6PyFlXS9FE7vtzrfNsBXKRVk5r52S5fW+i+t9QXDn9uAOjY6t1XpstO+tj72g8CPNjq3SVrrjcD5Ejax67V1UwYCMwUDpwv9Hcu1G0ig1joB8m80QE0bndPS4w7j+otwvKFo+JWtqmAsSJcGflNK7VBKjSnD/vZKFwBKqXpAOPB3ocW2er9Kul5K28acfe2ZrsIeJz9nWcDUZ1pe6eqklNqtlFqtlGpu4b72TBdKKS+gD7Co0GJ7vV+lseu15WZV0hxIKbUWqGVk1RSt9TJzDmFkmdV9aUtKl4XHqQT0B14utPhz4L/kp/O/wLvAqHJMVxetdbxSqibwu1LqoCEnU2Y2fL+8yf/CTtBaXzQsLvP7ZewURpYVv15MbWOXa62Uc16/oVJ3kh8IuhZabPPP1IJ07SS/2jPN0H6zFGho5r72TFeBe4EtWuvCOXV7vV+lseu1dcMGAq11TysPEQuEFPq7DhBveJ2olArSWicYil9JtkiXUsqS494N7NRaJxY69tXXSqk5wIryTJfWOt7wO0kptYT8YulGHPx+KaXcyQ8C32utFxc6dpnfLyNKul5K26aSGfvaM10opVoCc4G7tdbnCpaX8JnaPV2FAjZa61VKqc+UUgHm7GvPdBVyXYncju9Xaex6bTlz1dB2oKFSKsyQ+x4GLDesWw6MNLweCZhTwjCHJce9rm7ScDMsMAgw2sPAHulSSlVRSlUteA3cVej8Dnu/lFIK+BI4oLV+r9g6W75fJV0vhdP7iKGHR0cg1VClZc6+dkuXUioUWAw8rLU+VGh5SZ9peaSrluHzQynVnvz70Tlz9rVnugzp8QFup9A1Z+f3qzT2vbZs3fpdEX7I/9LHAplAIrDGsLw2sKrQdn3J72VylPwqpYLl1YF1wGHDb38bpcvocY2ky4v8L4RPsf3nAdHAHsOHHVRe6SK/V8Juw8++ivJ+kV/NoQ3vyS7DT197vF/GrhdgLDDW8FoBnxrWR1Oox5qpa81G71Np6ZoLXCj0/kSW9pmWU7rGG867m/xG7M4V4f0y/P0oML/YfnZ7v8jP9CUA2eTfux4vz2tLppgQQggn58xVQ0IIIZBAIIQQTk8CgRBCODkJBEII4eQkEAghhJOTQCCEEE5OAoEQQji5/weZsCY6nJYhQAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=4\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4]).T\n", "\n", "# degree-p polynomial linear regression\n", "w4 = np.array(p+1)\n", "w4 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh4= np.matmul(X,w4)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4]).T,w4), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh4)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4]).T\n", "yh_= np.matmul(X_,w4)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=5\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5]).T\n", "\n", "# degree-p polynomial linear regression\n", "w5 = np.array(p+1)\n", "w5 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh5= np.matmul(X,w5)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5]).T,w5), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh5)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5]).T\n", "yh_= np.matmul(X_,w5)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAABJKklEQVR4nO2dd3iUxdbAf7ObQkggoQYIHZGulFAUVJBeEyxUvaJcsaGinyXXi4ooCmK91wqKVykCV5AuKKIXRZTQexDpSYAkJCQkIWUz3x/ZwCbZTXazu9mEPb/n2Wd333fK2fd9d87MmTNnlNYaQRAEwXsxeFoAQRAEwbOIIhAEQfByRBEIgiB4OaIIBEEQvBxRBIIgCF6Oj6cFKAu1a9fWTZs29bQYgiAIlYodO3Ykaq3rFD1eKRVB06ZN2b59u6fFEARBqFQopU5aOy6mIUEQBC9HFIEgCIKXI4pAEATBy3GJIlBKDVJKxSiljiqloqycV0qpf5nP71VKdbY4d0IptU8ptVspJYZ/QRCEcsbpyWKllBH4EOgPnAGilVKrtNYHLZINBlqaX92Bj83vBfTRWic6K4sgCILgOK7wGuoGHNVaHwNQSi0GIgBLRRABfKXzI9z9rpQKUUrV11rHu6B+QRCEa54Vu2KZvSGGuJRMGoQE8OzAVkR2CnNJ2a5QBGHAaYvvZyjc27eVJgyIBzTwvVJKA59qredYq0QpNQmYBNC4cWMXiC0IgidwZ4N2rbJiVyz/WL6PzBwTALEpmfxj+T4Al1w7V8wRKCvHisa2LilNT611Z/LNR48ppW61VonWeo7WOlxrHV6nTrH1EIIgVAIKGrTYlEw0Vxu0FbtiPS1ahWb2hhjScy5x2bCfPNIByMwxMXtDjEvKd4UiOAM0svjeEIizN43WuuD9PPAt+aYmQRAqICt2xdJz5iaaRa2l58xNDjfgszfEXOnVFuDKBu1aJS4lk2zDCc75R5FlOFTouCtwhSKIBloqpZoppfyAMcCqImlWAX8zew/1AC5qreOVUoFKqWoASqlAYACw3wUyXTM4+8cTBFfhit68rYbLVQ3atUqDkABM6jwARl230HFX4LQi0FrnApOBDcAhYKnW+oBS6mGl1MPmZOuAY8BRYC7wqPl4KPCrUmoPsA1Yq7Ve76xM1woyjBYqEq7ozdtquFzVoF2rPDuwFcqYAICPWREE+Bp5dmArl5TvklhDWut15Df2lsc+sfisgces5DsG3OgKGa5FSvrjyeSaUN64ojf/7MBWhSY9wbUN2rVKZKcwPt6Tw6aTIRipUiG9hgQnKMmDQobRQkWiQUgAsVaePUd68wXPtngNlQGfBDo1aMm2B4e6vmiXlyjYTWkuYa744wmCq3BVbz6yU5g0/GXgRMoJbgx1jwFFYg15kNJsrs8ObEWAr7HQeRlGC54islMYb9zRgbCQABQQFhLAG3d0kEa9HMjTeZxMOUnTkKZuKV9GBB6kNNOPDKOFiob05j3DuUvnyDJliSK4FrHH9CN/PEEQTl7M30+mSXATt5QvpiEP4mnTj6xREITKwYmUEwAyIrgW8aTpx92xSwTXIHF5BLiqCJqEuGdEIIrAw3jK9CNrFCo+oqyFAk6knKB21doE+QW5pXxRBF6KrFGomFiOAAxKYdKF4zd6u7L21hHSiZQTbjMLgcwReC2y1L/iUTSkSFElUIC3KmtvDrkiikBwC56eqBaKY81cZw1vVdbeGrlUa83JiydpGtzUbXWIaagS4ephsb+P4cofq0ZVX14e3s4rhtkVFXt6+t6srL3VnHk+/TyXcy/LiEBw7bC4oKyUzJwrxy7n5LlQWqEslNbTNyrl1St5vdWc6W6PIZARQYVCa83Bgwf55Zdf+OWXXzhx4gS1atWidu3abDyVR26TrvjVaXolfVknDsVjqGJiLZaPJXlae/X98dbIpe5eQwCiCCoM0dHRPProo2zfvh2A+vXr06pVK06fPs2uXbs4ExsH+kt8azchsH0fqnUahsGvikPD4gLTkrXVzHDtD7ErOgWN/P8t3WN1ovha7/mWhreGXLkyInDTqmIQReBxLly4wAsvvMCcOXOoV68eH330EQMGDKB58+YodXWr565Tl3Fs20bSD24m5ef/kLZ9NTX63E/LmwbZVU9Rn3RreHtDUxEoaNS8sedrD94YcuVEyglqBdSimn81t9UhcwQeJD4+nptuuonPPvuMKVOmcPjwYR555BFatGhRSAkA/PPOHtTtHkG9e94kdPybGINqkLj6LZKXRHHs2LFS6yrNI0UamoqDRPkULDlxMd919OjRo9x444388ssvLq9DRgQe4ty5c/Tt25fY2Fh++uknbrnllhLTFxoW05bmj39M56w9LPzXa3Tp0oWvvvqK4cOH28xfktknzEuG2JUJb+z5CtY5mXKStnXasn37dvbu3Uv16tVdXocoAjdRkqtnYmIi/fr148SJE3z33XelKoECijcO/fi/CXdw1113MWLECKKionjttdcwGo3F8tqKdBoWEsCWqNvL9But4a0rP69F5F56Hq01J1JOMKTlELZ/vx1/f3/atm3r8npEEbiYFbtimbbqQCHXTMsYMcNvqMeIESM4evQoa9as4bbbbnOqvmbNmrFlyxaefPJJZs6cyV9//cX8+fPx9/cvlK48PC4kNs61g7vvpSgZ+0jISCAzN5MmwU1Ytn0ZHTt2xNfX1+X1iCJwISVNyBa4Zx75YSFbt25lwYIF9O3b1+n6rvyZmo3m/qfr88U7r5CSksLy5csJCroaoKo8PC7ELbXiY28DbO+9LEuDLh0G+ynwGGoc3JidO3dy7733uqUeUQQupLQJ2RNHY3hx/ovccccdjBs3zqm6rP2ZLlTtwePT3uHD6c/Qr18/vvvuO2rUqHEljyN257L8wb115WdloaQGeECrGpw8eZLk5GRycnL4a/dW8PHFGFgTY2ANlJ+RPC5x8uIZdp+tiZ/Rj/8dvsA7358iOycIhdHuBl06DPbz14W/ADBcNJCWlkZ4eLhb6nGJIlBKDQLeB4zAZ1rrmUXOK/P5IUAGMEFrvdOevJWJkho8nWcidcP7VKtWjY8++qiYV5Cj2Poz7Qi8kWXLljF69GgGDRrEDz/84PDkUll7bPbsuCZ4joJnJi8rg6zYQ2SdOcjZ2IOMeu8MOZeS8xP5Aw2AMKAuEAD4mt/NdPrUolAfwGjAqGvho+vgp1vw7Lq2tG40gVa1Wll9zqXDYD+HEg9hUAaS/kwCqLiKQCllBD4E+gNngGil1Cqt9UGLZIOBluZXd+BjoLudeSsNthpCgMzt33LpTAyfL1lCaGiozTK01sSmxXIw4SBxaXEYlREfgw/V/KvRrk47moQ0waAMJf6ZIiMjWbp0KXfeeSfDhw/nu+++o2rVqnb/jrL22Lx15WdlIDU1lSNb1pF++Bcyj+8EUy4oA771muPT9Tpu7l2Vk34nOZl1Ek3+YjZjTgiGjOqo5CroY7nkJSZjupAMORAUHEROrab4NmyGoXYAJpVErornkvEH0nJX0+bDWTQJbsKw64cx/Prh9G3eFx9DfnMjHQb7OZx4mOY1mrN3514CAgJo06aNW+pxxYigG3BUa30MQCm1GIgALBvzCOArrbUGfldKhSil6gNN7chbabAVIiAoL52zW5cwcuRIRo0aVSxfVm4Wa/9cy1d7vuKnEz+RmpVqs44gvyA61euEDmpDTno3fHW9QucL/kwREREsWLCAcePGMXLkSFatWlVsAtkWZe2xeevKz4rM/v37+fe//838+fPJzMzEWK0OQZ2G4Nu+Hjn1T5Lh9zs56ii/YuTm0JuZ0GwC3Rt2p1tYNzYfzsy/l36ZNGiefy/7NA9i06ZNfPPNNyxZtoKsrP341mpMta4R1Gr3GPgYyVGxaN/DhAbE8MXuL/gw+kMaVGvAAx0f4O+d/y4dBgc4nHiYNrXbsP2/2+nYsSM+Pu6x5rui1DDgtMX3M+T3+ktLE2ZnXgCUUpOASQCNGzd2TmI3Yash3Lr4X8zOuszrr79eKP2l7Eu8/svrfLL9E5IvJ1MvqB5j24/lhtAbaFunLY2qN0Kjyc3LJTkzmf3n97P33F62nN7CSdMcqDIHv7wWVMsdRqCpN1V9qxT6M40ZM4aMjAwmTpzIfffdx6JFizAYSl9D6EyPTfzfKwZbtmxh2rRpbNy4kSpVqjB+/Hga3NSbT07+TLJaxyVDPEr7EaR78FDXcfyz72hCqoQUKiOyk3VT4MiRIxk5ciQRj//FlJmfkrh1GRfW/5uUzfMJ6TWOoBsHonRjfJIjSHpuBeuPrmfuzrnM+GUGM36ZwZj2Y3i0/yQW/5ZX5g6DN3gdmfJMHEk6woAWA/hk5yc88MADbqvLFYrAmrG7aKAUW2nsyZt/UOs5wByA8PBw6zt2eABrD6SlX35iYiL3fPghY8aMoXXr1kC++Wfx/sU888MzxKXFcXfbu5nYaWKh4bM1bmp005XPx5OPM33jFyw9tIAkw/uksYAxbR6if7vCaxIeeOABEhMTef7552nUqBGzZ88u9TdJj63ysmPHDqZOncr69esJDQ3ljTfeoPddvfns4GfM3vcgl42Xqaba4581hhZBtxM1qFOZG9BRPVrg9/KTPLn4VrJO7yPl10Vc+P4j0nasoUafB4hrEU4VnypEto4ksnUkJ1NO8lH0R3wY/SGL9y9mbIexLOjzGs1qNHOoXm/xOjqRcoIsUxYhOSGkp6fTpUsXt9XlihATZ4BGFt8bAnF2prEnb4XFntDQ77zzDhkZGbz44osApFxOYeiioYxbPo76QfXZOnErS+9eysDrBpaoBIrSrEYzvrh7Opde/Iv149dza/NOfHXodVp/2JqFexeiLYKWPfvsszz66KO89dZb/Pvf/y617PIOcbBiVyw9Z26iWdRaes7c5BU7Trma8+fP88ADDxAeHs62bduYNWsW3279lp0tdnLzwptZuG8hf7vhb+x5eA+pL+0jYcY7/P6PYXa5epZ0byI7hdGwRlWqNL6B0LFvUGfkP9F5OZz/ZhqX1r9DUlLSlbRNQpowq/8sjj95nGdvfpYVh1fQ9qO2zNg8g6zcLLt/q7dsUHMo8RAA2XHZgPsmigGUtrEdnt0FKOUDHAH6ArFANDBOa33AIs1QYDL5XkPdgX9prbvZk9ca4eHhuiBKpyfpOXNTiat1k5KSaNq0KUOHDmXx4sUcTz7OsK+HcSTpCO8MeIdHuz6K0VB8FXBZ+fXUr0xZP4Ud8Tu4qeFNfDrsUzqEdgDAZDJx5513smrVKr799lsiIiJcVq8zWFt7EeBrlNg6dmIymfjkk0+YOnUqly5d4qmnnmLMo2OYtX0WSw8spbp/dR7r+hhTekyhbmBdh8q2994UTadNOWRELyd5y9fUrlWLOXPmMGLEiGLln0k9w5T1U1h2aBmtarXi8xGf07Nxz1Llaha11qrZQAHHZw516DdWZN767S2e/eFZHkp5iPlz5pOammo1aoAjKKV2aK2LaRSnRwRa61zyG/kNwCFgqdb6gFLqYaXUw+Zk64BjwFFgLvBoSXmdlam8sDV5GpuSSbOotXS8+0kuXbrEiy++yO9nfqf7Z92JS4vj+3u+5/Huj7tUCQD0atyLbQ9uY96IeRy9cJQuc7rwxi9vkJuXi9FoZNGiRYSHhzN+/Hh2797t0rrLirf07tzBkSNHuO2225g8eTLh4eH8L/p/XLrtEt3nd2fNkTVMvWUqJ6ec5PW+rzusBMD+e1N0BNmwVnXmvvsG26OjCQ0NJSIigieeeILs7OxC+RpWb8g3o75h3bh1ZJmyuPU/t/LKz6+Qm5dbolzeskHN4cTD1A2sy/7o/XTq1MlpJVASTo8IPEFFHxEA5OVc5syH9xHUrCOvfPwyL229g9DAUNaOW0ur2u63tSekJ/Doukf55uA3dA/rzoI7FnBdzeuIj4+na9euGAwGtm3bRr169UovzI14S+/OleTl5fH+++/zwgsvEBAQwLvvv0tKyxRe/vll0nPSeajLQ7x464uEBtl2U7YHV9yb7OxsoqKiePfdd7n55pv573//S4MGDYqlS81K5bF1j7Fg7wJ6Ne7FojsW0Si4kZUSvWcU2XNeT3yUD9snb+fBBx/kvffec7pMt40IvBlrG8AXkHFkKzorHf+uvYj63ziC/YP534T/uU0JFLXlbjmSzdK7lvL1nV9zJOkIXeZ04dtD31K/fn1Wr15NUlISI0eO5PLly26Rx168pXfnKs6ePcvAgQN5+umn6devH19s/IK3Lr3FlA1T6N6wO3sf3ssHQz5wWgmAa+6Nn58f77zzDkuWLGHPnj107tyZmf9ZVWzeobp/deaPnM/8kfPZfXY34XPD2Xp6q9UyvSFMt9aaQwmHCPUJJSMjw60TxSCKwCmKPpCWpO/7AWPdulxstoQcnc668esIq57/oLp6ctTWpPXK3XGMaT+GXQ/tolWtVtyx9A6e+f4Z2t/Qnvnz5/P7778zadIkPDkqtKZMxUPJOhs2bODGG29ky5YtvPvxuzR4qAGRqyNJy0pjxegVrB+/njZ1XLfgyJX3ZtSoUWzbtg3lW4UXHrybP7dtsupgcc8N97Dt79uo5leN3l/2ZsHeBVbLi+wUxpao2zk+cyhbom6/ppQAQGJGIsmXkzEk5TfR3bp1c2t9ogicxPKBDDP3lHJSznL55F7UKB9y1Cla+73MDaE3APZvQu+IsijNltskpAm/3P8Lj3V9jLe3vs3ABQPpPbg306dPZ/78+TaHnOXhzeMNvTtnMZlMTJ06lUGDBlG3bl1mr5rNm+lv8tnOz3i6x9Psf3Q/Ea0jnA5bUhRX35u2bdvS6L538K3TjIRvXydt5xqg+LxDmzpt+OPvf3Bzo5u599t7efmnlz3aWfEEBR5DiYcSqVu3Ltdff71b65Ogcy6kwP8+Zd+P0AVya8cRanqE1wffcyWNPeEbHPWTtmclsL+PPx8M+YDuYd35++q/0/2z7qx6aBV79uzhmWeeoX379vTv3/9K+vL01faWRWhlWQSVlJTE+PHj2bBhA+MnjkcNVkzeMpkbQm9g9djVdGngOpOBLflceW8Scv0JHTuDxNVvceGHTzClpxDca3yxZ7hW1VpsuGcDD695mOmbp5NyOYV3B72LQdnfd63Mi84OJx4GIGZLDLfccovLlXxRRBG4kMhOYZhMJsb+53u4z0Cw6sjHkS8UevjsabQdjfXjyErganm3c71hNgeTXqLDx115/r4PaXfkCHfcdTfXT/qAC8YaNAgJICM7VyJEupCyKNbdu3czcuRI4uLieOrfT7E0eylnD5xl6i1TefG2F/Ez+nlUvoJ8jjS2+c8q1In8Bxc2fMjF3xajTTm0i3ikWFo/ox+fj/ickCohvPv7u6RlpzF3+Fy7vO0q+6KzQwmHCPAJ4MzBMzw76Vm31yemIRdT7cJhcvokUcXfj91PLGNk54aFztszAedorB97bbkFf4601BbUz3oHQ14tXt/xd+rdP5iMnDz2/eefmLIziU3JJDkjB2tIhMiy4aib7LJly+jZsyc5eTncPfdu3k16l2r+1dg6cSuv3v6qS5VAWeQD+82clhQ8q8pgpOagyQR1GkLqH8uovX+xVfOPUoq3B7zNtNum8cXuL7jn23sw5dkO9e7M76lIHE46TF1jXdBw6623ur0+UQQu5p/L/wktYHb/2TQNaVrsvD2NtqPeGvbaci3/HD46lHpZb+Kf15ofUt+k6oSe5CSdIWntuyXaY8Wbp3Ssza3Yq9y11rz66qvcddddtLypJTWeq8HC4wt5JPwRdkzaQdewri6RpzQ5CohNybTZsJelsbV8Vg3KQIe7n2bY2ImsXvQZTz31lE1l8HLvl5nVbxaL9y9m0upJ5Om8kn5ypQ91fTjxMD7JPlSvXp0OHTq4vT4xDbmQE+dPsL3mdhpmN+TR7o9aTWNPhM6yxPqxx5Zb9E9gIIjQ7Okk+r3NpdD1+D/QgYzPfyP19/8SfFPxKKnizVM6tkwSIVV9rY6yggN86TlzE3EpmdQLMuL326ds/m4FPR/pye6Gu6mSXoWVY1YyolXxlbnOyAOFTSQlhVC3ZVJxJkqtZVla387TodV47733CA4O5pVXXin2G/L/L+1oGHQP83bPI8gviPcGvWfTdl6ZQ11n5GRwMuUktf6qRa9evdy6kKwAUQQu5ImlT4AfzOg+o8RJrdIabXeFc7b251D4EZrzPIn6U9IarcXnb/VImf8VvnWb0aD9zQT6+1TKyTZPYauX7O9jIMDXWOicr0GRnp1LSmYOpsxUdi18jaxzB2kR1YEtVbZwS/1b+PrOr6+4HbtSnqJzPbZCqNtKD65rbJVSvPPOO6SlpTF9+nSqVavGM888AxRXZIZLo6nhf4l/bfsXwVWCmd5nutUyK3PgxCNJR9BoEg8lcuvf3G8WAlEELiM+LZ51Cevwi/Fj3FTntqEE13nSWE7mBQf44mtU5JiuDr8DfI3c2aUx3+x4jLM51bjYfDHqnkASl73Jy+PW89jI8nkQrxVs9YYvZubw7uiOhZR7RnYuyRk55CTHcf6/08j1OY/x6dr8VWU/U2+Zysu9X3YoEKEj8hQ9XvCsTVmy2+5yXNnYKqX49NNPSUtL49lnnyU4OJgHH3ywmCJTKKplTcQ3MItXN79K4+DG/L3z34uVV5n3xjiYYN6OJbF85gdAFIHLePV/r2LSJkYEjnDb5hGOUrQ3lZKZb5owKMjT+XMJBX+O8CY1mb3hQQ6lBZHc4jOMo3x5758TGd8nmp+Pp1fKP5Ql5eVKWFIvuahybxa1lqy4GM5/8wq6VQ5quBFtyCY06xVevf1Ft8tTlMhOYczeEONQenBdY2s0Gpk/fz5paWk8/PDD1K9fn7iU4qYfhSIg/WEGts/j4TUP0yS4Cf1b5Ls+V2aX0QJ2xu/EqI34pvu6fUVxARWjxarknEg5wdydc2EXjJ8w3tPiXMGaWQDylUBBz63gT3K1kbqdz3f24MHVD3JUHaVPZASZPZ/jsrmYyuaGB651JSytoXGkl1wlbhcnFr+KGuSD7pKJX14r6mRF0STYdRsvOdprdzS9q9cZ+Pn5sXTpUnr37s3o0aNpMWE2qdWaFEsXElCF5NOPYTDFMHjBSN7uvZIm1VtXapfRAqLjovFP9qd7t+74+bnWO8wW4jXkAqb/bzo6T+O71ZeBAwd6WpwrlDRpV5J3x8TOE1l4x0IMTQzsvm4zcf+bY3feioirXAntcZe014Pr008/JWbFS6j7jeguGVTLHUa9rJlU86nnUju2o6uDK8JK76CgINauXUtoaCgnF72IMe1cofMFcyvnLhqomzUNtD/P/DSOF1dtqdQuo5C/K9mOuB1kHM0oN7MQyIjAaU5dPMVXe74i6HAQN3e7maCgIE+LdIWSPEGgsKIo3tO9lW9GfcMdX99Jms8qfGLCqN5qqNW8FR1XuRLaO/FaUi9Za820adOY/vl0qjxehbwqmiaGKHIye7nNlOFor70irPQODQ1l/fr13HzzzVxeO4OG973D+SyfQnMrAD7Upk7WS5zzf44/TTMI5VUUhb1sKtOzGpMUQ3pOOsTCrf9XfopARgROMmfHHPJ0HhfXX6wwm70UUFJ0VLhq97XV01WXu9Ha91Woo0hu8DEZ56KL5a0MuCrCqSMKxZrvfm5uLpMmTWL6mukY/m6gft36/PHgVo788w2OzxzKswNbMXtDjOzUZub6669nxYoVJMafIejXf3Hk1QFsibqdlCJuuP76OmrmTCbLuJdk33nFyqlMz2p0bP5/zC/Rjx49epRbvaIInCDHlMNnOz/jenU9XIThw4d7WqRCFAzzQwJ8i52ztPuW1NN9Y9gEGmRNhRBFQvVXyboUU2nc8ApwVRRNexWKNcX6/JJoevQbxGdnP4MR0P+6/myftJ2O9TrazFPaKl1voFevXsydO5dNmzYxefJktNZW70OQ6XZqE0maz0ouGX+6ctyVz2p5BGGMjotG5Sj6dexH1apVXV6+LUQROMGKwys4l34OHa3p2rWr1Q03PE1kpzB2vzyA90Z3tGn3LamnG9kpjA/HPsR1Wc9DYB7n/J/noVt9PW46cARX2b3tVShFFaspM5Xjy55hx3U/QjhE9Yxi7bi11AyoaTMPVD77trv429/+RlRUFHPmzOH999+3eR8+HvYu7WvdRLLfv8lRJ6ze57I25uWlqH899is6VjNs6DCXllsaskOZE9z+5e0cTTrK6WdOM/2V6Vc2qK9slLb3cgHv//d9puyYQhVjFbY/sZ12oe3KU8wKgT3uiZY7e+VePM/Zzc9jGpwAVX1ZOnohd7e7u1i5slNbyeTl5XHXXXexcuVK1q9fT3rttlbvw7lL5+j4aUdCqoQQ/WA0QX5X5+yc2dnM3v+IM2Sbsgl8LZDc33I5OfckjRu7znusANmhzMUcTjzMTyd+4paAW0BTKIRzZcPenu6Tdz/JC2EvcDn7Ml0/6srec3vLU8wKgT0bohSYLrLO/0Xc3smY7kzA6F+LG6t8bFUJWOax97i3YTAY+Oqrr2jbti2jR4+mfbVMq/chNCiURXcs4kjSER5Z+0ih2EXOjLrKI3bRgfMHyCWXhoaGblECJSGKoIx8sv0TfA2++B3wIzAwsNwWfjiKPUNhR0wnMx6fwQQmkHkpkx6f9LC5neC1iL1mhWcHtsIUu4OzyU+jB2Tgn92W5oaPmTZ4kM2yZae20gkKCmLlypUopYiIiCAtLc1quj7N+jDttmks2LuAebuuTh4705iXh6Le/NdmAIZ0HOKyMu1F3EfLQGZOJl/u+ZI7297JtsXbuOWWW/D1LT4h62kcWUjliMvg57M+J35cPBtyN9Dniz6sHr/6yspOTzJ1xT6+/uM0Jq0xKsXY7o14LdI1kRsduZan9y7nTMDLcB1UuzSc2j4PMqpLU6vXt2gIkCq+BlIycirtqlh307x5c5YuXcrAgQO59957Wb58OQZD8f7sC7e8wOZTm5n83WR6NOxBu7rtnIqNVJZwGo6ucl69YzVkwj1D77GZxl04NSJQStVUSv2glPrT/F7DRrpBSqkYpdRRpVSUxfFpSqlYpdRu86v8VWEZ+O7od6RcTuGOZndw8OBBevfu7WmRrOKOCcgVu2K55c2fORQ2iaAfWpN1NoshC4fwzcFvnBXXKaau2MeC309hMpsCTFqz4PdTTF2xzyXl23MttdZMfG0iTxx4AuoYqHXpaWoaHyJPG1i2I9bqdqSWE5ApmTlczsnj3dEdr8l9eF1F3759efvtt1m5ciWvv/661TRGg5EFIxdQ3b8645aP43LuZadGXY46HJRlcnnXuV34nPfhpptuKlUeV+OsaSgK+FFr3RL40fy9EEopI/AhMBhoC4xVSrW1SPKu1rqj+bXOSXnKhWWHllEroBamo/kNQ0VVBK62a1o+3MrXnxoDpuG3phGm03mM+u8oPor+yBlxneLrP047dNxRSruWWdlZdPu/bszLmYfRVJX6Oe8TZLw6iWhNAYunUNl54oknuOeee3jppZdYu3at1TShQaF8EfEFe8/tJWpjlNPeY/bMDxXg6L1Nz0rngu8Frg+63iOxypytMQLobf78JfAz8HyRNN2Ao1rrYwBKqcXmfAedrNut2BrWZeVmsTpmNaPajWLz+s0EBQVV2PkBV8dkL/pwG6oEUWfEDOIXP4MefIHH1j3GmdQzzLh9htv3WC2KyYb3m63jjlLStTx57iRdX+9KQs0E2ua1Jc3nZQwqsFja2JRMmkWtvfI8lbQZTM+Zm8Q0VAIF0UoPHDjA+PHjiY6OpmXLlsXSDWk5hCe6PcH7f7zPgBYDiOw0pFyuqaOdsCX/WwIG6N/OMyZWZ0cEoVrreADze10racIAy27ZGfOxAiYrpfYqpebZMi0BKKUmKaW2K6W2JyQkOCl2yZQ0rPvh2A+kZadxZ5s7+fnnn7nlllsqTLTRorh6AtLaQ+wTVJN6d76GWlkNtcePN359gwkrJ5Btyi5THWXFaEPx2DruKLauZa+mf9Hy7ZYkBCcwJngM+6ftp1GN2jbLsXyeQqranleSBWWlU7VqVZYvX46Pjw+RkZFcunTJarpZ/WfRoW4HJqyYwLlL56ymcTWOTi4v2rwIgImDJrpNppIoVREopTYqpfZbedkbT8HaP7Ggm/Yx0ALoCMQDb9sqRGs9R2sdrrUOr1Onjp1Vl42ShnXLDi0j2D+Y9oHtOXToUIU1C4HrA4jZeoh9azSg3ujXYUMAhi0BfLXnK/rP709iRqIT0jvG2O6NHDruKEWvZYNgf5rXXsqbBydhyjXxYZcP+XrK1yilSg3tAfnPkzZHgS0pjZiJSqZp06YsWbKEw4cPc//991vd6rKKTxW+vvNrUrNS+fvqv5e4FaurcKQTlpeXx5b4LVS9XJUOTdy/LaU1Su3Kaq372TqnlDqnlKqvtY5XStUHzltJdgaw/Dc2BOLMZV9Rz0qpucAaewV3J7aH7GkcOpy/beDWX/PdJiuyIgDXBhAraRcr31qNqDdmBue+foGa2QH83vd3un/WndVjV9O2TlsrpbmWAu8gd3kNwdVrefbSWfp+0JetKQcJjAvkpyk/0bV910Lp4GqcflvNjuVmNbaCA1amgGmeom/fvsycOZPnnnuO2bNn89xzzxVL065uO2b1m8WUDVOYu3Muk7pMcqtMpe3VYGl6Dkjaz+V6lxlQd4BbZSoJp1YWK6VmA0la65lmb6CaWuvniqTxAY4AfYFYIBoYp7U+UKBEzOmeArprrceUVq+7VxbbWkUYWP0AB3OeZ8XoFax/fz0LFy7kwoULHjUNlfdGHAX12Wq4/C+eInnZy+TWy8UwzkAOOXwV+RURrZ0PyFcRNh1ZcWAFY5eM5XLeZdqcbsOv7/5KzZo1S8xjz6rU8li5ei2jtWb06NEsW7aMDRs20K9f8f5rns5j4IKB/Hb6N3Y/tJuWtYrPKZQHRV2Rz0W/xOVbd/Jsx094M+Iht9btrpXFM4H+Sqk/gf7m7yilGiil1gForXOBycAG4BCwVGt9wJz/TaXUPqXUXqAP8JST8rgEW8O6hg32EugbyIAWAyrE/IAnApUVeE68N7ojvobiVr+8mk14+dNvCEwOJOejHOr71SdySSRRG6PIzcstU50rdsXS8ZXvmbJkt8eCsqVmpTL267GM/GYklxMuMzFvIq8+vp7hc3bbtcCsNDOBLChzDqUU8+bNo02bNowZM4YTJ04US2NQBv4T8R/8jf7c8+09ZX4encXS9JyXc5nLvnshT7H5YEOPyANOKgKtdZLWuq/WuqX5/YL5eJzWeohFunVa6+u11i201jMsjt+rte6gtb5Baz2iYHTgaazZ1l8b2ZbdiT8w9PqhpF5I5fDhwx43C3nS/TCyUxhBVYorwRyTZlFMLr/++iuhVUI5Ne0UA2sNZNaWWfSf35/YVMca7gJlV7DNpiXl9Vs3HtvIde9cx+LDi/H9w5cFvRcw7O5XmLryoF2KyZ65moqwIUxlJygoiG+//Zbc3FwiIyPJyMgoliasehifDPuEbbHbmLF5hpVS3I+luS/zz9+hWS6+l5tx9iIecw6omO4uFYCitvUtp7ZwPv08d7S+gz/++AOAnj17eko8oHzin5RE0bjwBcSmZNL74/3Uvvt19MrX+P6J7xk9YzSrY1fT4eMOfDrsU5sxd4pia7vNAtz5W8+nn+f/1v8fC/YvgESov6Mp9W6axtRdIRh27ynmmmptk5oC7JmrqQgbwlR2WrZsyddff83QoUOZOHEiixYtKubK7JfdkzqGfkz7eTrLfqvD9MER5XrdLV2R0/5aD10gMPsWMOGxrTUl1pCd/Hj8RxSK/i36s23bNoxGIx07dvSoTJ4OVFZSPRpIMAVgGPYKN/UbypIXljDk1BCuq3Edo74ZxT3L7yEpI6nUOkpr6N3xW015JubumEvL91uycO9C2Ax9z46h2m3vc8G3Nhrb6xNkctfzDB48mNdff53Fixcze/bsQucKRphV0h/EqGtxKGsGzy+PLteeeIEZMPfSBbL88q3kAXn5a5E85SkmisBOfjz+I53qd6JmQE2io6Pp0KFDuW4cYQ1P25XtcZPMwgfd+0lefPFFvvn0G3Ln5PLEDU+weP9iWn3Qinm75pGn82zmL6mhd8dv3XhsI13mdGHSmkmkHU0jZHEIK55YQWaXB8nSJf9WkGihzuDKjV+ef/55Ro0axT/+8Q/WrbsasKBghGkgkNo5T5Gr4oljbrk2vgVmwPQDm6CFxmCqjq9uduW8JzoTogjsICMng99ObeXs+eto+vwaNv2ylTrN3O8SWRqetisXrd8W8alZTJ8+nRUrVnDi2Am+uO8L3mjyBq1rt2biqonc8sUt/H7md6t5bSmbGlV97f6t9jQw0bHRDF44mP7z+3Po+CH4BoZfGM7hXw4TERFh159TJnfLjqsdHwomj2+88UbGjh3LwYP5gQws72OVvBuonjuSSz7rOJq62RU/w24Gt61N+q5V0NJIgA5HWfyDPNGZEEVgB29uWkGuziE3ox05KfHkZqaxL7tOhVj16Uj8E3fXH1aKqSoiIoLdu3fTvn17npvwHGHfh/Fe7/f4M+lPbvr8JoYtGsau+F3Fyi+q7N4b3ZFdLw2wWwnYamC01mw+uZkB8wfQ7bNu/HTkJ9T3ipD5ISz8x0JWfLuCunXrFvoNRTEqJZO7LsAdjg+BgYGsXLmSgIAAhg8fTlJSUrH7GJJ7L755zbjg/z5nL50tc12OsnDhQnICL0AVEwF5na8c91RnQnYos4OGr40lNve/NLq8hMyDv5O4+i3q3/8vml3fTny8LbB3B6icnBxmzpzJa6+9RtWqVXntzde42Ooib219i+TLyQxoMYBHwx9l2PXDMBpKN8eUhDX//DzS8a32G9Vr/4/dZ3dTTVXD9KuJjM0ZPHz/w7zxxhuEhISU6bcJZcOdO7T98ccf3Hbbbdx00008OmseL60uEjPL9wyxfk9ye/M+rB23FoNyb//YZDLRrl07Lna6yLnW5wj3+4aEi/7lsjbG1joC8Rqyg4ScHfjrVhioQlb8nygff3xrN5GJwSKUtpqyAF9fX1588UVGjRrFpEmTmDxpMp06dWLOK3M4VP0Qn+74lMglkTQObsy49uOIaB1Bt7BuZfqDFtyjPNLJNG4nw/A7mcZt6NwsGiU2otbWWiT9mES/3v2Y9dssOnfubLUce3+bUDZcHSDRku7duzNv3jzGjx9Pow9e5vUpr/PW90cs7uMw4nJNPLbuMT7Y9gFPdH/C6TpLYuXKlcQciaH2vbXp17gf3997h1vrswdRBKWQcjmFbMNfBOeMBiA7/gh+oS1QBqNXTQzau6rXERfIVq1a8dNPP7Fo0SJeeukl7h5xNz179uSD5z7A1MLEnF1zeGvrW8zcMpN6QfXo07QPXep3IbxBOK1qt6JO1TrFRgxaay5mXeTUxVMcTDhIVtB/Sco5QLb6C1QuhrxgfGMbY/r5LKePnqZLly4sWruIAQNKX94v7p3uoywbvzjCuHHjOH78OFOnTqVx48Zsee21Que1foTvjn7Hcz88x21NbuPGeje6pN6iaK2ZOXMm9XrV42zuWbeHurAXMQ2VwsrDK/N7p7lvwuXrOf3eKII6DiZs0MNeYxYoD7NIdnY28+bN47XXXiM2NpZGjRrx4IMPMvTOoRw2HWZVzCq2ntnKqYunruQxKAN1A+sS6BuISZsw5ZlIuZxCWvbVLQz9jFUwZjeHhOqYdl0ke9th0JpON/fmrVdfpE+fPuUeMluwjrtDiGiteeihh5g7dy6ffvopkyYVboQT0hO48ZMbCfILYvuk7VT3r+6yugvYtGkTffv2peMbHYnzieP0U6fxM/q5vB5b2DINiSIohSe+e4LPdn7Gl4MOMOPLH9jz74doOfqfvPn8I16hBKB84+Dk5OSwevVqPvnkE3744Qcgf+QwZMgQevXqRYOWDUj0S+RU6inOXjpLfFo8GbkZ+Bh8MCojQX5BBBOMTtFc+PMC+zbt4/ctf5Cbm4MxqBb1uvTn+ccn8fidfVwqt1A5yM3NJSIigvXr17N06VLuvPPOQuc3n9zM7V/ezh1t7mDJXUtc2kkwmUz06NGDU8mnSPpbEs/c/Awz+810Wfn2IIqgjLT/qD1h1cPYcM8G5syZw0MPPcTRo0dp0aJFudRfEXBmIs+ZXt7x48dZvXo169at4+effyYrKwuAgIAAwsLCCAkJITg4GIC0tDRSU1OJjY29sqm5UopOnTrRr18/Bg0axK233orR6Nzks1D5uXTpEgMHDiQ6Oppvv/2WoUMLP8Ozfp1F1I9R/Hvwv5ncbbLNchx9tt9//32mTJnCqA9GsTRxKX8+/ifX1bzOZb/LHkQRlIGzl85S/+36zOw7k+d7Pc+DDz7I8uXLSUxM9CpzQllHBK40KWVkZHDgwAH279/Pvn37OHv2LCkpKVy8eBGtNdWrV6d69eqEhobSpk0b2rZtS4cOHahVq5ZD9QjewcWLF+nbty/79+9nzZo1haKV5uk8IhZHsOHoBjbfv5keDXsUy+/os3369Gnatm1Lr1t6cWjAIa6reR0b/7bRPT+uBMRrqAz8cvIXAPo0yzcjbNu2ja5du3qVEoCyT+SV5BvuqCKoWrUqXbt2pWvXrqUnFoRSCA4OZsOGDfTu3ZsRI0awcuVK+vfP3ybSoAx8GfklXed2JXJxJH/8/Q+ahDQplN+RZ1trzeTJk8nLy2PMP8cwYeME3uz/pnt/oIPIgrISiI6Lxs/oR8d6HUlPT+fAgQN069bN02KVO2VdwezpoHiewJVhEgT3UqtWLTZu3Mh1113H0KFDWbp06ZVzNQNqsmbsGi7nXmbY18NIzUotlNeRZ3v58uWsWrWKl6e9zJyYOdQNrEtk60iX/hZnkRFBCUTHRXNj6I34Gf3Yvmc7JpOJ8PBio6pSqQgbqjhLWVwn3ekbXhEpai4oWMUM5R9NUrCP0NBQNm/ezPDhwxkzZgwJCQk89thjALSp04ZvRn3DoAWDGP3NaFaPXY2PIb/JtPfZ3rVrF/fffz+dO3cm6NYgflv/G19EfFGunkL2ICMCG+TpPHbE7aBrg3xTxN69ewG48UbH/Is9sXlMRcHTQfHKG0/uDyGUnZCQEL7//nuGDRvG5MmTmTx58hXHhH7N+/HR0I9Yf3Q9DWYMpmnUKnrO3ESf1nVKfbaPHTvG4MGDqVGjBp8t/owXfnqB3k17c9+N95Xr77MHUQQ2iEmMIS07ja5h+Ypg3759VK9encaNGztUjjc3Dp4OilfeeKMp7FohICCA5cuX8/TTT/Phhx9y880389dffwFQ1zCU2qb7SMjbSILvbM6kpLFsRyx3dgmz+WyfP3+egQMHkpOTw4YNG5i1ZxaZuZl8MvSTCjnHKKYhG0THRQMUGhF06NDB4Zvo7Y2DN63G9TZT2LWGj48Pb7/9NrfddhsTJkygc+fOzJgxg4UXrycw+25MPj4k+35OgsqhTnYUPx1OsOo1t3XrVu677z5iY2PZtGkTfxn+YsmBJbzS+xVa1a6Yo2EZEdggOjaaQN9AWtdujdaaffv20aFDB4fL8fTmMULZcXTi19tMYdcqI0aMYNeuXYSHh/P444+z/e37SY/ZQrWcSGpmP0Km8Q/O+j/DiYuHCuXLysoiKiqKXr16kZWVxYYNGzhV7RR3//du2tVpx/M9n/fQLyodUQQ22Ba3jS4NumA0GDlz5gwXL17khhtucLgcaRwqJ2WZ2/E2U9i1TJMmTdi4cSNr1qzB19eXxBVvEPvRBLK/O0nwqTHk6vPE+z/JC9+9wKo1q3j44Ydp1qwZs2bN4oEHHmDv3r38aPqR0d+MpnP9zmy6bxP+Pv6e/lk2EdOQFbJN2ew+u5vHuz0OXJ0oLsuIQKJWVk7KugbCm0xh1zpKKYYOHcr8Ne15/PWPSDn4C+n7f0TvyoKqwFB4Q70BGeCT7EOnIZ2YcPsEMmtmcvuS29kZv5MJHSfwydBPKrQSACcVgVKqJrAEaAqcAEZprZOtpJsHDAPOa63bO5q/vNl3bh/Zpuwr8wP79uW7AJZFEYA0DhUBR114vX1uR7jKnV2bYHzpCWZvGMiZhBQCL8TQr1kA7etVZeelnRytfZS9tfcSnRFN9J/RBPgE0KVBFz4c8iGPhD9SISeHi+LsiCAK+FFrPVMpFWX+bs0Q9h/gA+CrMuYvV65MFIddnShu3Ljxlbg2QuWiLP79tiZ+NfkhN2RU512U1pnL03nsObsHgPZ12+Nr9C0v0VyCs3MEEcCX5s9fApHWEmmtNwMXypq/vImOjaZWQC2aheRvKF3WiWKhYlAWF15beyWDd60FEezDoAx0qt+JTvU7laoEKuLqc2cVQajWOh7A/F63nPO7hei4aMIbhKOUIjs7m8OHD5dpolioGJTFzGM58WsNb1kLIriWirrAtFRFoJTaqJTab+UVUR4CWsgxSSm1XSm1PSEhwW31pGencyDhwJX5gcOHD5ObmysjgkpMWV14IzuFsSXqdmxZeGW+QHCUirrAtNQ5Aq11P1vnlFLnlFL1tdbxSqn6wHkH67c7v9Z6DjAH8sNQO1iP3ew6u4s8nVdoRTGUfaJY8DzOboMoC8WEohQ4H8SmZGJUCpPWhFViJwRnTUOrgILAGfcBK8s5v8vZfXY3AF3qdwHyFYGvry+tWonff2XFWf9+WQsiWGJp3gEwmfd0scfMU1EXmDrrNTQTWKqUmgicAu4GUEo1AD7TWg8xf/8a6A3UVkqdAV7WWn9uK78nOXD+ACFVQmhQrQGQ7zHUpk0bfH0rlxeAUBhnXHhlLYhgiTXzTgGlrTVxdnTqLpxSBFrrJKCvleNxwBCL72Mdye9JDiYepG2dtld8f/ft28dtt93mYakETyNrQa4tnAkNX5oZpzQnBKh4nQpZWVyEgwkHiWwVCUBycjJnzpwRjyFBuIZwdt8IW3NGludLoiJ2KiTWkAXn08+TmJFIu7rtANi/fz8gE8WCcC1hy3NnypLdZQ4uWEBFMPOUBRkRWHAw4SAAbeu0BeDQofzogm3btvWYTIIguJaSTDf2jA4szTuOeg1VVEQRWHDg/AEA2tXJHxHExMQQEBBAo0aNPCmWIAgupDTTjjPBBQtWDVck+789iGnIgoMJB6nuX/2Kx1BMTAwtW7bEYJDLJAjXCiWZdgooi19/RV01bA/SwllwIOEA7eq0u+IxFBMTw/XXX+9hqa4tKmKcFcG7KC18CJTNr7+irhq2B1EEFhxMOHhlfiA7O5vjx4/LQjIXUpl7TMK1RUH4kPdGd3TZYsGKumrYHkQRmElITyAhI+GKIjh27Bgmk0kUgQupzD0m4drElbvKVdRVw/Ygk8VmCjyGLCeKAVEELqQy95iEaxdX+fVX1FXD9iAjAjNFXUdFEbieytxjEoTSqMx7VsuIwMyBhANU86tGw+oNgXxFEBoaKruSuZDK3GMSBHuoiKuG7UEUgZmCiWJLjyEZDbiWihpnRRC8HVEEZg4mHGRoy6FXvsfExDBy5EgPSnRtUll7TIJwLSNzBEBSRhLn0s9dmR+4cOECiYmJsoZAEASvQBQBFh5D5mBzR44cAWSiWBAE70AUAVcVQZvabQDxGBIEwbuQOQLg6IWj+Bv9aRScH1wuJiYGHx8fmjVr5mHJvBtnNg8RBMF+RBEAx1KO0axGMwwqf4AUExNDixYtZHtKD+Ls5iGCINiPmIaAY8nHaF6j+ZXv4jrqeSQchSCUH16vCLTW+YogJF8RmEwmjh49KorAw0g4CkEoP7xeEVzIvEBqVuqVEcHJkyfJysoSReBhJByFIJQfXq8IjiUfA7iiCApcR2UNgWextnmIhKMQBPfglCJQStVUSv2glPrT/F7DRrp5SqnzSqn9RY5PU0rFKqV2m19DnJGnLBRVBEePHgWgZcuW5S2KYEFlDuAlCJUNZ72GooAftdYzlVJR5u/PW0n3H+AD4Csr597VWr/lpBxlpkARNKuR7yp67NgxqlatSmhoqKdEEsxIOApBKB+cNQ1FAF+aP38JRFpLpLXeDFxwsi63cCz5GHUD6xLkFwTA8ePHadas2ZXgc4IgCNc6ziqCUK11PID5vW4ZypislNprNh9ZNS0BKKUmKaW2K6W2JyQklFXeYhxLyXcdLdhLd+2W3cTlVZftEwVB8BpKVQRKqY1Kqf1WXhEuqP9joAXQEYgH3raVUGs9R2sdrrUOr1Onjguqzud48nH8dD3+sXwfZ5IzyL14jtyqtWUvXUEQvIZS5wi01v1snVNKnVNK1ddaxyul6gPnHalca33Ooqy5wBpH8jtLjimHUxdPkZPWE2OOibzMVHR2Jj4h9a4sXhIbtSAI1zrOmoZWAfeZP98HrHQks1l5FDAS2G8rrTs4nXoakzaRmVkLgNyUswD4BNcDZPGSIAjegbOKYCbQXyn1J9Df/B2lVAOl1LqCREqpr4GtQCul1Bml1ETzqTeVUvuUUnuBPsBTTsrjEAUeQ/UCmwCQezF/gOITku8xJIuXBEHwBpxyH9VaJwF9rRyPA4ZYfB9rI/+9ztTvLAWKYErvXrz9XRIXLUYEsnhJEARvwatXFh9LPoaf0Y/7e3TmjTs64JeZiKFqCI3q1pDFS4IgeA1eHYb6WPIxmoY0xWgwEtkpjA+qZ5F+Q2u2RN3uadEEQRDKDa8fETQLubr5zLFjx2QzGkEQvA6vVwQFMYZyc3M5deoUzZs3LyWXIAjCtYXXKoLkzGSSLydfUQSnT5/GZDLJiEAQBK/DaxXB8ZTjwNWoo8ePm7/LiEAQBC/DaxVB0fDTx46Zv4siEATBy/B6RVAwWXzs2DF8fHxo2LChJ8USBEEod7xWEZy6eIpg/2CCqwQD+aahJk2aYDQaS8kpCIJwbeG1iiA2LZaG1a/2/sV1VBAEb8V7FUFqLGHVr64cPn78uMwPCILglXitIjiTeoawavmKIC0tjYSEBBkRCILglXilIsjNy+Vc+rkrikBcRwVB8Ga8UhGcvXSWPJ13ZY5AFIEgCN6MVyqC2NT8LSgL5ggKFEHTpk09JZIgCILH8E5FkGZWBGbT0KlTp6hatSq1atXypFiCIAgewSsVwZnUM8DVEcHp06dp1KgRSilPiiUIguARvFIRxKbG4mvwpXbV2sBVRSAIguCNeKciSMtfQ2BQ+T//1KlTNG7c2MNSCYIgeAbvVQTm+YHs7GzOnj0rIwJBELwW71QEFquK4+Li0FqLIhAEwWtxShEopWoqpX5QSv1pfq9hJU0jpdRPSqlDSqkDSqknHcnvarTWhVYVnzp1CkBMQ4IgeC3OjgiigB+11i2BH83fi5IL/J/Wug3QA3hMKdXWgfwuJeVyCpm5mVcWk50+fRpARgSCIHgtziqCCOBL8+cvgciiCbTW8VrrnebPacAhIMze/K6m6BoCUQSCIHg7ziqCUK11POQ3+EDdkhIrpZoCnYA/HM2vlJqklNqulNqekJBQZoGLrio+deoUNWvWJDAwsMxlCoIgVGZ8SkuglNoI1LNy6p+OVKSUCgKWAVO01qmO5AXQWs8B5gCEh4drR/MXYG1EIKMBQRC8mVIVgda6n61zSqlzSqn6Wut4pVR94LyNdL7kK4GFWuvlFqfsyu9KClYVN6jWABBFIAiC4KxpaBVwn/nzfcDKoglUftyGz4FDWut3HM3vamJTY6lTtQ7+Pv6ALCYTBEFwVhHMBPorpf4E+pu/o5RqoJRaZ07TE7gXuF0ptdv8GlJSfnewYlcsPWduYn70LjIyg1mxK5b09HSSk5NlRCAIgldTqmmoJLTWSUBfK8fjgCHmz78CVqO52crvalbsiuUfy/eRmWMi1z8Jn9xa/GP5Ps50CgDEY0gQBO/GK1YWz94QQ2aOCQCTSsKoa5GZY+LjNfnOS6IIBEHwZrxCEcSlZAKgySFPXcSo8/cdOBef70EkcwSCIHgzXqEIGoTkm4ByVRIAPmZFEJCTglKKsLAwm3kFQRCudbxCETw7sBUBvkZMZkVg1LUI8DVyfWAW9erVw9fX18MSCoIgeA6vUASRncJ4444OBAemAVA/KP+7ISNJzEKCIHg9XqEIIF8ZPHR7fnDTn566g8hOYbKYTBAEAS9SBJC/qriqb1VCqoSgtebUqVOiCARB8HqcWkdQ2ege1h1fgy9KKZKSksjMzBTTkCAIXo9XKYLR7Uczuv1oQMJPC4IgFOBVpiFLCnYmE0UgCIK347WKoGBEIKYhQRC8Ha9VBGfOnMHX15e6dUvcS0cQBOGax2sVQVxcHPXr18dg8NpLIAiCAIgi8LQYgiAIHserFUGDBg08LYYgCILH8VpFEB8fL4pAEAQBL1UEmZmZJCcniyIQBEHASxVBfHw8gMwRCIIg4KWKIC4uDkBGBIIgCHipIigYEYgiEARB8FJFICMCQRCEqzilCJRSNZVSPyil/jS/17CSppFS6iel1CGl1AGl1JMW56YppWKVUrvNryHOyGMvcXFx+Pn5UbNmzfKoThAEoULj7IggCvhRa90S+NH8vSi5wP9prdsAPYDHlFJtLc6/q7XuaH6tc1IeuyhYTKaUKo/qBEEQKjTOKoII4Evz5y+ByKIJtNbxWuud5s9pwCHAo7vFyxoCQRCEqzirCEK11vGQ3+ADJUZwU0o1BToBf1gcnqyU2quUmmfNtOQOZFWxIAjCVUpVBEqpjUqp/VZeEY5UpJQKApYBU7TWqebDHwMtgI5APPB2CfknKaW2K6W2JyQkOFJ1MSTOkCAIwlVK3aFMa93P1jml1DmlVH2tdbxSqj5w3kY6X/KVwEKt9XKLss9ZpJkLrClBjjnAHIDw8HBdmty2yMjI4OLFizIiEARBMOOsaWgVcJ/5833AyqIJVP6M7OfAIa31O0XOWXbLRwL7nZSnVGQNgSAIQmGcVQQzgf5KqT+B/ubvKKUaKKUKPIB6AvcCt1txE31TKbVPKbUX6AM85aQ8pSJrCARBEArj1Ob1WuskoK+V43HAEPPnXwGrfppa63udqb8sFCgCmSMQBEHIx+tWFotpSBAEoTBepwji4uLw9/enRo1y8VQVBEGo8HilImjQoIGsKhYEQTDjlYpA5gcEQRCu4nWKQMJLCIIgFMbrFIGElxAEQSiMVymCS5cukZqaKopAEATBAq9SBLJXsSAIQnG8UhHIiEAQBOEqXqUIJLyEIAhCcUQRCIIgeDlepwiqVKlCcHCwp0URBEGoMHiVImjdujXjxo2TVcWCIAgWKK3LvMeLxwgPD9fbt2/3tBiCIAiVCqXUDq11eNHjXjUiEARBEIojikAQBMHLEUUgCILg5YgiEARB8HJEEQiCIHg5oggEQRC8HFEEgiAIXo4oAkEQBC+nUi4oU0olACfLmL02kOhCcVyFyOUYIpdjiFyOUVHlAudka6K1rlP0YKVUBM6glNpubWWdpxG5HEPkcgyRyzEqqlzgHtnENCQIguDliCIQBEHwcrxREczxtAA2ELkcQ+RyDJHLMSqqXOAG2bxujkAQBEEojDeOCARBEAQLRBEIgiB4OdekIlBK3a2UOqCUylNK2XSzUkoNUkrFKKWOKqWiLI7XVEr9oJT60/xew0VylVquUqqVUmq3xStVKTXFfG6aUirW4tyQ8pLLnO6EUmqfue7tjuZ3h1xKqUZKqZ+UUofM9/xJi3MuvV62nheL80op9S/z+b1Kqc725nWzXOPN8uxVSv2mlLrR4pzVe1pOcvVWSl20uD8v2ZvXzXI9ayHTfqWUSSlV03zOLddLKTVPKXVeKbXfxnn3Plta62vuBbQBWgE/A+E20hiBv4DmgB+wB2hrPvcmEGX+HAXMcpFcDpVrlvEs+YtAAKYBz7jhetklF3ACqO3s73KlXEB9oLP5czXgiMV9dNn1Kul5sUgzBPgOUEAP4A9787pZrpuBGubPgwvkKumelpNcvYE1ZcnrTrmKpB8ObCqH63Ur0BnYb+O8W5+ta3JEoLU+pLWOKSVZN+Co1vqY1jobWAxEmM9FAF+aP38JRLpINEfL7Qv8pbUu6ypqe3H293rsemmt47XWO82f04BDQJiL6rekpOfFUt6vdD6/AyFKqfp25nWbXFrr37TWyeavvwMNXVS3U3K5Ka+ryx4LfO2ium2itd4MXCghiVufrWtSEdhJGHDa4vsZrjYgoVrreMhvaIC6LqrT0XLHUPwhnGweGs5zlQnGAbk08L1SaodSalIZ8rtLLgCUUk2BTsAfFodddb1Kel5KS2NPXnfKZclE8nuWBdi6p+Ul101KqT1Kqe+UUu0czOtOuVBKVQUGAcssDrvrepWGW58tH6dE8yBKqY1APSun/qm1XmlPEVaOOe1LW5JcDpbjB4wA/mFx+GPgVfLlfBV4G3igHOXqqbWOU0rVBX5QSh0292TKjAuvVxD5f9gpWutU8+EyXy9rVVg5VvR5sZXGLc9aKXUWT6hUH/IVQS+Lwy6/pw7ItZN8s+cl8/zNCqClnXndKVcBw4EtWmvLnrq7rldpuPXZqrSKQGvdz8kizgCNLL43BOLMn88ppeprrePNw6/zrpBLKeVIuYOBnVrrcxZlX/mslJoLrClPubTWceb380qpb8kflm7Gw9dLKeVLvhJYqLVeblF2ma+XFUp6XkpL42dHXnfKhVLqBuAzYLDWOqngeAn31O1yWShstNbrlFIfKaVq25PXnXJZUGxE7sbrVRpufba82TQUDbRUSjUz977HAKvM51YB95k/3wfYM8KwB0fKLWabNDeGBYwErHoYuEMupVSgUqpawWdggEX9HrteSikFfA4c0lq/U+ScK69XSc+Lpbx/M3t49AAumk1a9uR1m1xKqcbAcuBerfURi+Ml3dPykKue+f6hlOpGfnuUZE9ed8pllicYuA2LZ87N16s03PtsuXr2uyK8yP/TnwGygHPABvPxBsA6i3RDyPcy+Yt8k1LB8VrAj8Cf5veaLpLLarlW5KpK/h8iuEj++cA+YK/5ZtcvL7nI90rYY34dqCjXi3wzhzZfk93m1xB3XC9rzwvwMPCw+bMCPjSf34eFx5qtZ81F16k0uT4Dki2uz/bS7mk5yTXZXO8e8iexb64I18v8fQKwuEg+t10v8jt98UAO+W3XxPJ8tiTEhCAIgpfjzaYhQRAEAVEEgiAIXo8oAkEQBC9HFIEgCIKXI4pAEATByxFFIAiC4OWIIhAEQfBy/h/ETUEpyZwWCwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=10\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5,x**6,x**7,x**8,x**9,x**10]).T\n", "\n", "# degree-p polynomial linear regression\n", "w10 = np.array(p+1)\n", "w10 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh10= np.matmul(X,w10)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5,t**6,t**7,t**8,t**9,t**10]).T,w10), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh10)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5,x_**6,x_**7,x_**8,x_**9,x_**10]).T\n", "yh_= np.matmul(X_,w10)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAABIH0lEQVR4nO2dd3iUxdbAf7PpIZAAoYRApEgVBCR0RRARpYMVvYgdrnKt4IflKogiCogFGwqKHZR6qVIEBBWpEnovKZBASCV95/tjN7CE3WQ3u5tN2PN7nn323fedcvZtZ+bMOTNKa40gCILgvRg8LYAgCILgWUQRCIIgeDmiCARBELwcUQSCIAhejigCQRAEL8fX0wKUhvDwcF2/fn1PiyEIglCh2LZt21mtdY2i+yukIqhfvz5bt271tBiCIAgVCqXUCWv7xTQkCILg5YgiEARB8HJEEQiCIHg5oggEQRC8HJcoAqXU7UqpA0qpw0qpsVaOK6XUh+bju5RSN1gcO66UilFK7VRKyQiwIAhCGeO015BSygf4GOgFxAJblFKLtdZ7LZLdATQ2fzoCn5q/C+mhtT7rrCyCIAiC47jCfbQDcFhrfRRAKfUTMBCwVAQDgW+0aarTv5RSYUqpCK11ggvqFwShArFwRxyTVx4gPiWLOmFBjOndlEFtIz0tVrnHnefNFaahSOCUxe9Y8z5702jgV6XUNqXUE7YqUUo9oZTaqpTampSU5AKxBUEoaxbuiOOl+THEpWShgbiULF6aH8PCHXGeFq1cs3BHHKPn/8bujBnkqjiXnzdXKAJlZV/RRQ6KS9NVa30DJvPRU0qpbtYq0VrP0FpHa62ja9S4IjBOEIQKwOSVB8jKK7hsX1ZeAZNXHvCQRBWDySsPkFEQR5rfHPKVqSHsyvPmCtNQLFDP4nddIN7eNFrrwu9EpdQCTKamDS6QSxAEF+OseSI+Jcuh/YKJ+JQsjIZ0AHx05cv2uwJX9Ai2AI2VUg2UUv7AfcDiImkWAw+avYc6Aala6wSlVCWlVGUApVQl4DZgtwtkumpYuCOOrpPW0mDsUrpOWitdaMFjuMKsUycsyKH9gok6YUEYlUkRGKh82X5X4LQi0FrnA6OAlcA+YK7Weo9SaqRSaqQ52TLgKHAY+AJ40ry/FrBRKfUP8DewVGu9wlmZrhbEniqUJ1xh1hnTuylBfj6X7Qvy82FM76YukfFqZUzvphh8MgEw6BDAtefNJZPOaa2XYXrZW+77zGJbA09ZyXcUaO0KGSoqxXW1i3vwxMtCKGtcYdaxvLfFa8h+BrWN5Lt9Qcw/5IOBICJdfN4q5OyjVwuFLf7Cl31hix9MF17sqUJ5ok5YEHFW7j1HzROD2kbKi78UhFfJo0al6hx/vZ/Ly5YpJjxISV1tsacK5Qkx63iW5KxkqgVVc0vZogg8SEktfnnwhPLEoLaRvD2kFZFhQSggMiyIt4e0ktZ9GeFORSCmIQ9SUldb7KlCeUPMOp4jOSuZyCruOfeiCDzImN5NLxsjgCtb/PLgCYIAJkXQqlYrt5QtisCDeLrFL3O+lH/kGgmFJGclUy1QTENXJZ5q8ZfksSR4HrlGQiF5BXmk56bLYLHgWmTOl/KPXCOhkPPZ5wFksFhwLRKjUD6xNAUVnbmxEG++Rt5qKkvOSgZEEQguxlXBQYLrKGoKsoW3XiNvNpW5WxGIaagC4coJ6Ho0q3HF3OASo+BZrJmCiuLN18ibTWXSIxAA17aGFu6IY962uMtMDwq4s524qnqSkkw+Pkp5dQCXN5szRRF4GVpr9u3bx++//87x48epXr064eHhTPkjmQth16IMlyKNSzsBnbWWlQZ+2y8rv3kSW+a6Qoxae60SAO82Z4oi8BLS0tIYP348s2fP5ty5cwAYDAaMRuPFNIbgUIKb3kjIdT0IiGwGONYaKhxos/Wy8YaWVXnGWoChJd7wwisOewIwr1aSs5JRKEIDQ91SvowReBitNT/88ANNmzZl2rRp3HrrrcycOZODBw+Sn59PamoqR44coem/xhMYdT2ZMas4/d1oEudNIO98vN0vB8u1DWzh7S8aT1M4l09YkN8Vx7zlhVcc3jzXUXJWMlWDqmJQ7nllS4/Ag+Tl5TF06FDmzZtHdHQ0ixcvpn379pelqVKlClWqVGHS84/y0vwOZGakk75jGal/ziFh5pN0HPYE2dldCAwMLLaukgYi5UVTPigMMPRWN8mS8NYpV5Kzkgn1D2XUqFE8+eSTtGjRwqXliyLwEJZKYNKkSYwePRofHx+b6S+bjqLTXVzbpQ9Vdv/Cgq8/oeuuv/jll19o0KCBzfzFmX1cvciF4Dze+sITrJOclYxfnh8ff/wx9913n8vLF0XgJopr0eXn5zNs2DDmzZvHe++9x3PPPWdXmVe+HO5m8eIHePDBB7nhhhv47rvv6Nu3r9W8tgbaIsOC2DT2Fof/ny2kJXv1INey/JCclYwx04jBYKBNmzYuL1/GCFzMwh1xtBn/K8/O2WlzreEnn3ySOXPm8O6779qtBGwxYMAAtm/fToMGDejXrx/Tpk2zmq4s1jaQNZavHtx9LV0ZE+MNJGclcyH5As2bNyckJMTl5UuPwIUUFxla6OppOLWNL774gv/7v/9jzJgxTtdX2GKrNfgtOlebzvPPP8+5c+eYMGECSl0KGSuLmU5ljeXyj72tfHuvZWl6Dd4cIVxakrOSyYnP4dZ2t7qlfFEELqSkAdlTCWcY8cHztG7dmjfeeMOpuoo+TKczjQR2fJJbq4Ty1ltvce7cOaZPn37ZuIMjdufSPODeHPBTEbDnBay1xmg0Enc2DW0wXBa3Apdfy9K+0KXB4BgFxgJSslPQ5zTRN0e7pQ6XKAKl1O3AB4AP8KXWelKR48p8vA9wAXhIa73dnrwViZJeeFnrZ5Jy9izLly/H39/fqbqsPUzZBZDZ/lH+r0kU77zzDnl5ecyYMQODwTELYGkfcG8O+KkIWN4zxpxMcuL2kxK7l0cXxjPBP5Pjx4+TnJx8KYMy4BMciqFSVXzDahFQuzGRTa4nPb0blStXLvULXRoMjpGak4pGQxZER5dTRaCU8gE+BnoBscAWpdRirfVei2R3AI3Nn47Ap0BHO/NWGIqLDM0/8hdn/1nD+PHjXTLYY+uhSUjNZtKkSfj5+fHmm29SqVIl3n///cvMRCVR2gfcmwN+yiNaazLzMknOSiYlO4XDsZvIPhhD1v7t5J06YkqkDPhWrUPNDi3p2LEj4eHh+Pn5cTDxAst3niAn7RwFmefJSzpB1sE/SdkA1We/RK9evThAE4Iad8In8HKbdVxKFgt3xNm8V6TB4BiFUcUqW9G6dWu31OGKHkEH4LDW+iiAUuonYCBg+TIfCHyjtdbAX0qpMKVUBFDfjrwVBluRoaF+mtj1X9C2bVteeukll9RV0sP0xhtvkJmZybRp06hUqRITJ060u+zSttg8veKat5OTn8OvR35l06lNbI7bzJa4LWTmZV5KUMP86Qrk++KbXwM/n2uoHngtj985mDa129AgrMHFRkNR8+DITjWpmRPHqlWr+OWXXzh3Yhn4+BFyXQ8qtx+Ef3jUxaqK60FKg8ExChVBVM0ogoOD3VKHKxRBJHDK4ncsplZ/SWki7cwLgFLqCeAJgKioKGtJPI6tF2HspgX8J+kMP//0A35+V0aNloaSHialFFOnTuXChQu8/fbbVK1a1e7BaWdabOL/XvbsTtzNzO0z+XbXt5zLOoefwY9WNVrRIrcFe//cS+bZTCKrR9KwdXv26TDyAxUF6iz5fgnkG04RX/A3d879DoDQgFBuiLiBGyJuoG3ttnzyUEuahTcjwDfAXFtLevfuzeTJk5n6w3Leeu9jUnetIWPXrwQ2bEfVbsPxr9Xwsh5kZm4mcelxxKfHk5CeQIYxgy5t4lm9L5aMLH9qBNdgWMfW9GxRxe7/7E2urecumKacadmwpdvqcIUisGZzKLqmhq009uQ17dR6BjADIDo62taaHWWOtRvS0i8/JyeHRv0nceONN9KjRw+n60vNTmXlkZVsTtwMNX8nNnkvRm3EoAyE+Afx1YEunMztSa+GvWheozmffPIJKSkpvPjii9StW5ehQ4eWWIe02CoGx84fY+yasczdMxc/gx+Dmg3i3qb3smvRLj4Y+wGpqan069ePZ955hp49e6KUsnq/9m5Zjd2Ju9lxegc7Enaw/fR2pv89nZyCHAB8lA8NqjbgmtBriAqNok7lOlT2r0zlJpX512s9+W5jBDlxu8iO30VC7NP4EoFPRE3is1Kp9k7qxdW1rOIPyfnwyiZ4/U9futTrQu9GvXmg1QNcE3aN1Sze5nV0OO4wADc0v8FtdbhCEcQC9Sx+1wXi7Uzjb0fecos9N+TMmTOJi4vj66+/dshOb0mBsYBVR1cx+5/ZLNy/kOz8bAJ9A7kh4gZGNBxOgG8ARm0kLSeNDSc2sPjAYgB6NezFxJ4TmT17NgkJCQwfPpyIiAi6d+9ebH1lbeLxptadK7iQd4Hx68bz/ub38TX48vrNr/Nk9JMs/mkxI3uO5OzZswwYMIAJEyZw/fXXX5bXVo+tfWR72kdemt4kryCPQ8mH+GrzBn7auYn4xBOcPh/Pdv/dpOQkmgYvCwkBmpo/BQbyMxPIP3+a4MBruK/DfUSFRhFZOZLIKpFEhERQJaAKwX7BBPgGkJqdSmJmIvHp8Ww4sYGVR1byytpXGLduHCPajeDVbq9SK6TWZbJ6m9fRrkO7AOhyQxe31aFMZnsnClDKFzgI9ATigC3A/VrrPRZp+gKjMHkNdQQ+1Fp3sCevNaKjo/XWrVudktsVdJ20ttho3ZycHK699lqioqLYuHGjw4ogJTuFmdtnMn3LdI6nHKdqYFWGthzK/a3up31ke/x9rHseHTt/jF/2/sI7m97hXNY57mpxF693fJ17br+H+Ph4Nm3axHXXXVeq/+xqrMVeBPn5eM1kYo4ScyaGe3+5l31n9zG89XDeuuUtEg4m8NRTT/H3339z4403MnXqVDp06OB0XbauzcTBLbmtZVXSc9PJzs9mzd6zTFp+mJw8HxRB5KecIXX1Z2Qe2Ur37t2ZNWtWsdOfFOVU6ine3PAmM3fMJMA3gPHdx/NC5xcuPj8Nxi61ajZQwLFJ1iPrKzLd/tuN331/J210GpUrVXaqLKXUNq31Fa5HTkcWa63zMb3kVwL7gLla6z1KqZFKqZHmZMuAo8Bh4AvgyeLyOitTWWFr8DQuJYsGY5fS4r6xxMbG8vrrr9utBLTWbI3fyoj/jaDue3UZvWo09arUY85dc0h4IYGP+35M16iuNpUAQIOqDRjTdQxHnznKa91eY9mhZfSY04NXZr5CUFAQ/fr1IympfKw94M2rTjmC1prPt35Ohy87kJyVzKphq/jktk+YOs700j958iTffvstGzZscIkSANvXZsqvB6nkX4naIbWpH1afR7tEM3nITdQLq44BRf36Dfh27gK+/PJLtm3bRqtWrfjhhx/srrdeaD0+7/85+0ftp1fDXoxZNYZhC4aRlWd63myNVV2tXkcnEk9gyDM4rQSKw+kegSco7z0CAG0sIG7GE/iFVOWHxasYfENdm+UYtZGdp3ey6sgqftrzEztP7yTIN4h7W97L0x2epm1EW6fkPHD2AEPmDmFf0j5GNB7BV49+Rfvo9qxevZqAgICSC3Aj3ta6Kw35xnxGLRvF59s+57ZGt/HNoG84/M9hHn74YQ4dOsS///1vJk2aRJUq9g+22oMrrs3Jkyd54IEH2LhxI//5z3+YMmWKQzE0Wmsm/j6RV397lfZ12rPg3gVsOYLX9CK11gTeH4j/tf6kT0h3ujxbPQKJLHYCa4OqRrLIMewnI2MNBf3PoGr58+jSu5hztD6V/SsT4h9C5YDKZOdnk5CRQEJ6AjtP7+Rclskz4IaIG/ikzyfc3+p+hxahKM7O3jS8KZsf28wT/3uCz3Z/xo0Tb2Tj6I2MHDmSWbNmlXrswhWIT3nxZOVlMXTeUBYdWMTYrmMZf/N43hj/BhMnTiQqKoo1a9Zwyy2umzTQEldcm6ioKNauXcuLL77I+++/z7Zt23hs3HS+3HberjEhpRSvdHuFljVb8sD8B7j565v589E/eXtIK68YVzpx4gS5hlxqBdYqObETiCJwgqKDqtlqP4kB4zGqdAgHtAGfoCpk5p9le0IymXmZpOekk5Gbgb+PP7VDahNROYJ+Tfpxa8Nb6dmgJxGVIxyWw55B6xD/EL4f8j0ta7bklbWv0OK/Lfh6wtdcd911jB492jUnpBSIh5JtkrOS6f9jf/489Scf3fER/Wr2o/vN3fnzzz95+OGH+eCDD6hc2X3mAlddGz8/P6ZNm0bHjh156OFH2HL3HdS4exx+1evZ7fEzsNlAVg1bxS3f3MKAnwaw9sG1DGrrHgVYnti8eTMEQUSY4+8FRxDTkItYe2wtvb7pi8FYlbDMBzn7yRQqt+hDtVtHXDHV84LtsUxeeYCE1GybrRlHPGlKGrQuytQ/pjJ61WjqpNUh4aMEli1exu23335FurLy5hGvoStJzU6l5zc9iUmM4fsh3+N/2J/hw4dTUFDA559/bpcbsCtw9bVpPepTdn/1MhjzqTHkVQLrmXzj7Z0Ofd7eedz9890Mbj6YuXfNxcdgew2Pq4FRo0bxieET7rrxLubeM9fp8sQ05Eb+d+B/3P3z3dStXB//869x7p8NkFVAyPW9rmhBLdwRx8sLdhfbenfUT9rRSOAXuryAv48/T694mtCHQrl36L1s2byFJk2aXCZnWflqe0sQmr0v1fScdO74/g7+OfMPv9z9C1u+28Jbb71Fu3btmDt3Lg0bNiwzmV19bdJCoqg9bAqJP7/OmTn/pcaAFwlu0tnueYbubHEnU2+byvO/Ps9La17i3V7vuky28siGDRvwHeBL9eDqbq1HFIGTnEg5wZ1z76RN7TYsf2A5vx/I5l+zXse/ViMaNLnuiofdHh9oR/2kHbHlXnoZNaR+yL85HvkpgbcE0qN3H+oOn0ZitoE6YUFcyM33Kl9td2OvYr2Qd4H+P/bn77i/+fL2L/n02U9ZuXIljz32GB999FGJS5I6K2NpppR2JE+dsCDiqE3tf00m8efxJC18m/D+Y2jS+Ta75Xy207McPHeQyX9Mpnej3vRs2NNl/6c8kZycTExMDIY7DVQLqubWumRhGid5/6/3MWojv9zzC9WDq3MNiWTGH+a9/z7HprG3XHHj2dN6d7SFb++iM0UXG9EZfalmvJPs67OJr3eUmO/fxKiNxKVkcf5CnkMyCMVjj5tsvjGfe3+5lw0nNjCp4yTevP9NfvvtN2bMmMEXX3zhdiXg6EI0pclTeK/6BFWh1r0TCIhsxtn/TaZ9/m67ZVVKMbX3VJpUb8Ijix8hNTvVJbKVNzZu3AgBYMQoiqA8k5Kdwpc7vuS+lqboSYBZs2YREBDA/fffbzWPPT7QjvpJD2obydtDWhEZFoTCZG+15kpn7WUUkjOckILu0FOTVelvUjf+aLWOkmQQLmFt9a2SlLvWmv8s+w9LDi7h39f8mwn3TCAjI4N169bx+OOPu1yeopQmnqM0eSzvVZ+AYNo8/i4t23Xiw9ee5ZtvvrH7PwX7BTN70Gxi02J5fuXzLpGtvPH777/jV8U0N5m7FYGYhpxgxrYZZORm8ELnFwDTgvTff/89gwcPpmrVqlbz2OOJURpvDXtsudZeRgoD1XKfId8/heyB/5A6+0f8DzYguMmV4ezizVMytkxAYcF+VntZoUF+dJ20lr0Z35DiN5tWOV359JFPad26NYsWLXJ6gkV7TVLFBUfamlLamVlqLzOHje7BgAEDePjhh6lUqRJ33nnnFf/BmomnU91OjO06lokbJzKo2SD6N+3vtGzliQ0bNtCyfUt2sEN6BOWV3IJcPtj8Abc0uOViwNeGDRs4f/489913n8189rTe7W3hO4qt1ryv8qdG7lh8dR24z4ekTVPJTTpBWJCfy2W42rHVEtWaK8x3fgZFZm4+B9NXkOI3G9/YOsRM2kSH7r3ZuHGjS2bZtbdlXFxPz5ZJxVURvsHBwSxcuJBOnToxdOhQVqxYcfFYSSae125+jetrXc/IpSPJyM1wuWyeIiMjg23bttH8huYAVA2y3rB0FaIISslPu38iPj2e0Z0v+eAvWrSIwMBAevXqVWzeQW0j2TT2Fo5N6mt1HMHeNPZgaRbIzMnHz+fy4LEgPx+GdqxHJb9Qaua9jgoIhHvySFr6Bi/cXMclMngTtlqcqVl5Vyj3kEBfMoz7Oev3PoYzlcn/Kp4q7YdguPUFKlWq5FZ5iu63Ns5UiC2Tir1jU/YQEhLC0qVLadmyJYMHD+b3338HSlZkAb4BfNb3M+LT43l30yUPIlfK5gn+/PNPCgoKqNGkBgD1qtQrIYdziGmoFGitmfrnVFrUaMHt195+cd+iRYvo1auX2xaPcJSiZoGULJNpwqDAqE0vo8JudvQ11Zi80p+CtFc4U/1VCm5LZPbEZxl64wp8fSv+bVJWHiTFeXAVNYnUe+lrEv3egHSNcXYG1Xo+SeW2fUhIyykTeSwplOvZOTutlmNNobh6ltqwsDBWrlxJt27dGDBgABs3brRLkXWu15n7Wt7H5D8mU8+/H1//nkF8ShahQX4E+hlIuZBX4byGNmzYgI+PD3lheQT7BduckttVVPwn3AP8c+Yfdp3Zxef9Pr84PcOuXbs4efIkr732moelu4S11hSYlEBh66jwwbj0krqFL7aF88SSJ1iTuIaxY8dy4wPPVWg3PFfGRJSkUOwd38nMzeSc3+sYC9LgRz9q9nmVoEamOB9Xmi8cGW8a1DaSySsPODSthKvjDGrUqMGKFSvo1KkTd9xxBzUfmMxZHXJFusKxlcLrMPymZ5m/dwGjf/0/quaYeukpWXkE+fkw7d42Fep+BZMiaNu2LYdTD9MsvBkG5V7jjZiGSsG64+sA6NO4z8V9ixYtQilFv379PCTVlRQ3MFacB8Xj7R7n6Q5PQ2eYunYqT457v0K74bnKg8Qel0R7xne01vSf2Z8sw0kM/wum9m3vXlQCrjZfODreVB5MKtdccw3Lly/n/PnznJs3Hv+C7MuOF46tWF6HaSvOU9U4hDTDOnLU/otpK5qnEJgWs9q8eTPdunVjb9JeWtRo4fY6pUdQCtafWE/Dqg2pW+XSjKKLFy+mU6dO1Krl3smhHMGWWaAQS0VRtKX7fK/n2dtgL6v7rSHh22nUDo0goI7pZVDRAstc5UFib6BfSa3kf834F78l/kb4znDenLiYb3ZnubW35UirvbysO92mTRvmz59Pnz59uO73D6je/1VOp+ddDHYs6oGVlVeAf94QfAJXkOz/BbVzpqDMCyBWJE8hgC1btpCTk0N012jei3mPFuGiCModRm1kw4kNDGw68OK+2NhYtm3bxqRJkzwo2ZVYMwtYUtjdt2Y6eXXhPl7p9z7rDvci/57TnPl+HHUGfIhvFdPgVUV6uFw1w6kjCsWWCenf7/+bH1J+oHpCdfZ+sZcaNWowot/leZ6bs9OjJrjyMuVHr169mDFjBo888gj/vmEhH3/8MUopGoxdajW9gSBC8x4g2X86WYatBBtNK65VFE+hQn799VcMBgPVm1WHGMqkRyCmIQfZk7iH5Kxkul3T7eK+xYtNS0MOHDjQVjaPUGgWCAvyu+KYZXffVkv309/O0CpwEiogGD0kgzNLxmHMNXXTK9LD5Spzh70uidZMSGPn7eL2fw/js8TPCL0QyoF3D1CjRo1i81Q0E5w7ePjhh3nxxRf59NNPmT59OmD7OoQF+VHD0BtfYy1S/X5Ao11q1rInMM8VLF26lM6dOxOXYypfFEE5ZP2J9QDcfM3NF/ctXryYxo0b07Rp+XNNG9Q2kp2v38b797axaScurqX72h09qafHQVUD+bec4OzyKQT6qgrjhgeui8uwV6EUVazaWMCp5e+y0u87An0D2TF2B9VDqxebByqmfdsdvP322wwcOJBnn32W5cuX27wO4wZcx6QhbbnGfxi5hkMEV/7niutc2pd5WSnq+Ph4tm/fTr9+/dibtJcAnwAaVLV/mc/SIqYhB1l/Yj31qtSjflh9wBT4sXbtWp5++mmPLvBSEsV190tyeYShvLgsmUMN3iYr7S+anlzEoLZ9riyoHOMKc4e99nNLxWrMzSbpf2+T3WUbVDWw+tHVNKh25YN9NUTCuguDwcB3333HTTfdxH333cfmzZuLXZim7/UTafbxfCoFLmBgm5cvluOM95ijE0GWlmXLlpn+Q9++jI0ZS9Pwpvga3P+alh6BA2it2XBiAzfXv/niS3/jxo3k5eVZnc+/olBSS3dQ20gOvjKRN7q/Aa1h8ZkZfPrpp54Q1ePYE+hXaLoouJDKmZ9eIbvJNmgI1/q/QNeorlbLreiRsO4mJCSERYsWERAQwMCBA+neoJLN6+Dn48erN73KtoRtLDm45OJ+Z3pdZaWoly5dSr169WjZsmWZeQyBKAKH2H92P4mZiZeZhdatW4efnx+dO3f2oGS2sacrbK/p5NVur/JU9FPQBZ766SmWL19eRv+iYjGmd1N80s9w+rvR5NY7DB2gmnEIk/s8U2weT7ttlneioqKYN28eR48eZejQoRQUWHeCABjWehiNqjZi3PpxFC6+5czLvCwUdU5ODqtWraJfv35cyLvA8ZTjZeIxBGIacghr4wPr1q2jQ4cOLpsSwJU40hW2x3SilOLDPh9yLvMcP/ETg94cxMbwjbRv3949f8BB3B09bG/5dQsSOPP9GAoisuAOTVBBNCPa/tdqWssyK3IkbFlx0003MX36dEaOHMnLL7/MO++8YzWdr8GXV256hUcWP8KKwyu4o/EdTnmPlWYiSEfvxw0bNpCZmUnfvn3Zf9YUC1EhegRKqWpKqVVKqUPmb6szIymlbldKHVBKHVZKjbXYP04pFaeU2mn+lGvD8/oT64kIieDaatcCkJ6eztatW+nRo4eHJbOOOwYgF+9M4PiRhwnMaUPubbl0G92dAwc8P6C5cEccY37+57LBvDE//+OywTx7BwuXLFnCjTd1IzscuEfjp68hPPdFFmw/fUXaomWmZOWRnWdk2r1tZG6nYhgxYgQjR47k3XffZe5c28s3PnD9A9StUpdJm0xu3c70uhx1OCjN4PKSJUsIDAykR48e7E3aC1QQRQCMBdZorRsDa8y/L0Mp5QN8DNwBtACGKqUs/900rXUb82eZk/K4Da0164+vv2J8oKCggO7du3tWOBu42q5ZeHMnpOZR0/g6gVmtyb7lAu2e7khcnGfdHMct3kOe8fL1t/OMmnGL97ikfHuU6ieffMLAgQMx1K0N94NBVaJmzusYCLaqgMVTqPR88MEHdOnShYcffpiYmBirafx9/BndeTQbTmzgj1N/OO095shEkI5eW601S5cupWfPngQHB7M3aS++Bt+LjU5346wiGAjMNm/PBgZZSdMBOKy1Pqq1zgV+Mucr1xS1rX+2cRMJGQkVanzA1XZNy5tb4UdNxhOY0YbMLqnUf6Ils9fsKrWszlI4oZ69+x2lOKVaUFDAmDFjeOqpp+jVvxf5Q40YDVnUzHkdX8Ivpo1LybJrsZq4lCy3+qlfDfj7+/PLL78QGhrKoEGDSE5OtprusRseo3pQdd7e+Dbgull9S8LRRtjBgwc5cuQIffv2BWDf2X00qd4EP58rY4DcgbOKoJbWOgHA/F3TSppI4JTF71jzvkJGKaV2KaVm2TItASilnlBKbVVKbU1KSnJS7OKx1q17a9VKAKLrRF9M99tvv9GpU6dyM9toUVw9AFn0Jlb4UtNnPIGpbcnvkMIjX3Zl1trtpZa3PGNLedYKgiFDhjBlyhQef+pxUvunku8TR43cl/DXVy4yb2kmCAu2/ZBLQFnJREREMG/ePE6dOsX9999vdfC4kn8lnu74NEsOLiHmjPWegztwtBG2aNEigIuKYG/SXpqHN3ePcFYoUREopVYrpXZb+djbqrfmXF/Yh/8UaAS0ARKAqbYK0VrP0FpHa62jLSMy3YG1bl2m8SQAzcKbAZCWlsa2bdvKrVkIXL/AjbWbWOFDTf/xVErsjrFZBo//3JWDcQedlNxxqtp4qdra7yjWlKrvhXOc+X4MS5Ys4b0P3+NYx2P8Hfc3Y6I/oZpP8QPotharKZpGzETF07lzZz766CNWrlxpc+bfUR1GEeIfwjubrA8suwNHGmFaa7799ls6d+5MVFQU2fnZHDl/pMzGB8AORaC1vlVr3dLKZxFwRikVAWD+TrRSRCxguapCXSDeXPYZrXWB1toIfIHJjORxrHXf8tQpfIzhhPibpsT9/fffMRqN5VoRgGu7wrYWL1EYCK88mion78JYPZtWH7Viye4lVkpwH6/3v+6KRXf8fBSv97/OJeUXVaqVzx/i7PcvkHwmjoVLFrK+xnpWH13NrAGzeKfv45eltYXlYjW2kICyknniiSd47LHHmDhxIgsWLLjieLWgaoxoN4Kfdv/EsfPHykSmkhphlqbnts98we7du3nwwQcBOHjuIEZtLF+KoAQWA8PN28OBRVbSbAEaK6UaKKX8gfvM+QqVRyGDgd1OyuMSrLV88wyxhPhcWhxi3bp1+Pv7e3x8oKzmP4HLb25rVK3xEBGxT5CblUv/ef0ZuWAk2fnZVtOWhuL+66C2kUy+q/VlD97ku1q71AY8qG0kG/+vB6PrHWf/rDHUrF6VtRvXMv3cdBYdWMT0O6YzvM3wi2kLFbCt81UYub1p7C3FphGKRynF9OnT6dChAw8++CD79u27Is3znZ/Hx+DDlD+mlJlcthphRU3PR/9chvLxpVKzGwHYFr8NKDuPIXBeEUwCeimlDgG9zL9RStVRSi0D0FrnA6OAlcA+YK7WutCV412lVIxSahfQA3jOSXlcQtGWr0aTr2K5sf71F/etW7eOTp06ERTkuQfVExOVFd7c79/bBj/Dle3dSpEDeanJTHx3+PL5rs9pNb0Vq4+udqrOhTviaDP+V56ds7PEtQDcORCYlZXFo48+yqhRo7j99ttZ9fsqnt7y9MWewFMdnrKazx4zgQSUOUdAQADz5s0jODiYwYMHk5qaetnxOpXr8OD1DzJr5yzOZJzxkJQmLE3P2lhA5r71BDXqwGd/mQwqn2/7nGurXUvLmi3LTCanFIHW+pzWuqfWurH5O9m8P15r3cci3TKtdROtdSOt9VsW+4dprVtpra/XWg8oHHj2NEW7dTVCMzGqLPo0Nw0Up6amsn37do+bhTzpfjiobSQhgVfGI+YVaNan12f9i+sJnh/Msdhj9Pq2F31/6HvRN9oRCpWdNe+fsrSh79+/n44dO/LVV1/x3//+lw9nf0j3H/rw56m/qZ79Il+uvMamArZnrMbV4zneSN26dfn55585cuQI//rXvzAajZcdH9N1DDn5OXyw+QMPSWjC0tyXfWwHxswUKrW8hfiULP6K/YvNcZt5puMzbl+VzBKJLLaBZaTt6qOr6fUtF0fxt2zZgtFo5MYbb/SkiB6fqCzlgnXXzPiULLp0uYVNszdxR/87ON/4POt81tHq01bc2fxOXuj8Ah3rdrSrDlvLbVrW5W6+++47Ro4ciY9fAM0fepsZ+UYmftQGrfOpkftfgoztSpzAzJ7I7fKyDkBFplu3brz//vuMGjWKcePG8cYbb1w81qR6E+5qcRcf/DWdNX93IjHVxyMR3JYRzhl71mIIqkJQw3YYlGLMikmEBoTyUJuHykwekLmG7KIw3LvQY+jvv/8G8PjUCp6eqMxWPQbz4iFPrUhmwheLaZHSgqx3suju351fj/xKp5md6DqrK7N2zCI1O9VqGYWU9KJ3539NTk7m/vvvZ9iwYVzTpCXhD07jdOQhzvj/F4MxlNo50wgytruYXrx8ygdPPvkkjzzyCBMmTGD+/PmXHesY/ggX8tM5mLnAY+s+FJoBjTkXyDr0F5Wa34Ty8SNHJ7Ex9n/cHHnvRaeUskIUgR3sP7ufKgFVqB1SGzApgiZNmhAWFuZRuTxtV7blRVSg9cWHbOqmc7w4fQ4Dbx3I2pfWctvu23in+zskZSbx6OJHqTWlFnfNvYvvdn1HUuaV8SHFvejd+V9//fVXWrVqxc8//8yECRPwH/IEcaGTOe83i2BjJ2rnTMVPX9mKFC+f0uMqxwelFB9//DEdO3bkwQcfZNeuS4GO8zf7E1jQljTfhRjJAcpegReaAbMObETn51LpulsASPc1edrFxnYrLrtbEEVgB/vO7qN2cCNufOc3GoxdyvLfNhJxbdkN5NjC03blovX7WFmPISuvgI82nGLevHlMmDCBeT/O44vHvuDHLj+y+bHNjGg3go0nNzJswTBqTalFxy878vKal1lxeAVpOWk2lU3VYD+7/6sjL5ikpCQeeughevfuTWhoKOs2rUN1U+zMH0me4RjVc58mPPclDFgPIhQvn9LhaseHwMBA5s+fT2hoKAMGDCAx0TQQG5+SRWj+3RhVChk+Ky+mL2sFPqB1BKlbFuJXoz7+EU0wkk2G7wqCjZ1ITg0rU1lAxgjsYmfCHvIvtCInJ4v89LPkpp1jX35NFu6I87hN19N2Zcv6ba0lG5+ShcFg4NVXX+Xmm29m6NChdOnShddee43JYyYz7fZpbE/YzrJDy1hxeAWT/5jM2xvfxqAMtKrZinqNruNoXG2yMuoTVaUp/3f7dXb/Z3tnYDUajXz11Ve8+OKLpKWl8fzY56neuzpDNgwhMTOR6j7dCMp8HB9sBr+Ll48TuGPhlzp16rBo0SK6devGkCFDWLNmjdk+fz0BBS1J8/uZkILeGAgocwW+dOlS8s6epHq/F0BpUvxmY1QZVM4f4JHGhPQISiAtJ43k7DMYCkw3Y26CKWrWUPNasQcXwZ4xi5tuuomdO3cycOBAXn31Vdq1a8fmvzYTXSea125+jT8e/YOU/0th9bDVvHrTq9QOqc3WM8s5kv8e8YFPs72gP29tHcTjix/nw80fsu74Os5eOGtTJns8q1avXk379u157PHHiLwxksGzBvNV2Fe8sv4VWtdqzfqH1vNlvx8I8Qu/rBw/g6JqsJ94+bgAdzk+REdH8/XXX7Np0yZGjhzJ6NuaEOTnQ1j+AxSo82T4rChzBa615u2336ZmnXpUu74rZ/0mk+77Pyrn9yXM53qPNCakR1ACB86aXhh+RlNwdE7CITD44F+rodiDi2DvnO3h4eHMnTuXJUuW8OSTT9K1a1ceeOABxo0bR6NGjajkX4meDXvSs2FPwPTgHEo+xPaE7Rc/C/Yv4MsdX14qMzic5uHNaVq9KQ2qNqB+WH3qVanH8dSDGAjFQCXAgEKhKeBUSgLf/fod7818jx2ndxDUOojKgyoTY4zh6Kmj9G/an2c7PnvJu8kcS+jO9Q68GWfWCiiJe+65h7179zJ+/HgaNWrE20MeZvJKf1IvXE+G/y982ufFMr2OGzdu5M8//2TSh5OYzSQuJP9N1byHaVbpAV68vZlH7ilVuHpPRSI6Olpv3bq1TOr65p9vGL5wOHWyP8NP1+XMT69gzM4g4qEPiAwLYtPYW8pEDk9j7yIbji7GkZGRwZtvvsmHH35IXl4ejzzyCC+++CKNGjUqVh6tNaczTrPrzC72JO1hX9I+9p3dx6HkQyRmWpvppDCjAnXlPd+4WmM6RHZgULNB9Gnch2C/8jmR4NVKURMemBoRruplaa156KGH+Oabb/j6668ZPnw4v5/4nW5fd2PqbVN5vvPzTtdhL3f0uYNNaZsIGBBAWm4a3wz6hntb3lsmdSultmmto6/YL4qgeF5e8zLvbprMtXkLyMrVnPpgKJWad6Nuv6e9xhTg7ocUICEhgYkTJ/L555+Tl5fHbbfdxogRI+jXrx/+/v4OlZWZm8mJ1BPEpsWyYu9Bvt+ymwvpseQmHSXv7HF0ThYhvmHc1XsQ9/W7j071OxEaGOqS/yGUHnevMJebm0vfvn1Zt24dy5Yto1evXtz6za3EJMZw9OmjVPJ3/yqDS/9YSr/P+0FD6BjZkRn9Z3B9retLzugiRBGUkiFzhrD/7H4mdlnFG9+tZsd7D9HoztFMeeVZr1ACAF0nrbXabXdHjyguLo6ZM2fyxRdfEBsbS+XKlenVqxd9+vThxhtvpFGjRvj6Fm/R1FoTHx/P5s2bWb16NQuXriDh5DFQBqo2ac+jjzzM288/WmI5wtVHamoq3bp149ixY6xZs4a82nl0ndWV17q9xvge491a97KDyxj47UDyC/KZ0nsKz3V7rkyjh0EUQalp/nFzmoc3Z/698/n222958MEHiYmJoWVLz7uPlhUNxi7F2l2igGOT+habt7StvPz8fFauXMnixYtZtmwZsbGxgGlOmRYtWhAVFUVoaOjFWI709HTS0tKIjY1l3759pKWlARASEkL37t3p3bs399xzDzVrWlsyQ/Am4uLiuOmmm0hJSeG3335j0uFJLNi3gH1P7aNB1QZ2l2Pvva21ZuLvE/nvb/9FJ2hevvZl3hr9lpUS3Y8tRSBNomLIK8jjcPJhBjcbDJimlqhUqRLNm5fdghHlgdIO5NnrumkNX19f+vbtS9++fdFas2fPHrZt28bu3buJiYnh2LFjpKSkkJqaitaaKlWqUKVKFWrVqsWwYcNo0aIFrVu3pkOHDvj5lc0qT0LFIDIykjVr1nDTTTfRq1cv5iyfw+IDi3n+1+dZcO+V01hbw957O9+Yz/CFw/kh5gcCDwXS7GAzxk93b8+jNIgiKIaj54+Sb8y/OMfQ33//Tbt27fDxsb2YyNWIvd5ARXGVb7hSipYtW3pVL0xwLw0aNGDt2rV069aNB/o/wIjpI5gWM41fj/zKbY1uKzG/Pfd2XkEeQ+cNZd6+eXRI78CWH7fw5d9flkuTpMQRFMPBc6aYgSbVm5Cbm8uOHTvo0KFcrJ1TppQ2gtnTk+IJQnE0adKE1atXU1BQwOyRs6kbXJenlz9NbkFuiXlLurdzC3K555d7mLdvHv9p8h/+nvo3zzz9DO3atbOaz9OUP9VUjjiZalqesn5YfXbv3k1ubm6pJppztzdEWVCaCGZ3+oaXV66Ga+1NtGzZkk2bNtG7d2/ivokj9q5YXl37Ku/2erfYfMXd2zn5Odz1810sObiECZ0n8PmjnxMVFcWECRPc9TecRnoExXAy9SQBPgHUqFSDf/75B4A2bdo4VIYnFo8pL3h6UryyxpuvdUXm2muvZdOmTTTzaYbaqpj8x2Tm7pl7WZqi81X1aFbD6r39zK3XMHjOYJYcXMKU7lP48bkfSU1NZdGiRYSElO2Moo4giqAYTqadpF5oPQzKQExMDEFBQSUGOhXFk4vHeBpPT4pX1njzta7o1K5dm/Xr13M7t8MpuH/O/fx15C/AuoKfty2OO9tFXnZvjxt4LTP3P8mKwyv4uPfHLHhlAYcPH2bRokUONyDLGjENFcPJ1JNEhUYBsGvXLq677jqHB4q93U7u6UnxyhJvv9YVndDQUJYsWsLrU17nzaQ36fZxN+b0msOUf0KtKvjf9iddjKM5nXGae36+h40nNzLlpin8/NLP/PHHH8yZM4cePXp44u84hPQIiuFk6knqVTHNMRQTE0OrVq0cLsPTi8cIpcfR+fHlWld8DAYDE16cwMfdPyavch5DVgxh6y9PkZt47Iq0hQp+3fF1tPmsDVvjtzIifATjB49ny5YtzJ49m7vvvrus/0KpEEVgg7yCPOLT44kKjeLMmTMkJiZy/fWOh4J7m538aqE09n651lcPT/Z9krUPriW0eii5d+wnYfd/SPjxJdK2LiI/9QwA1ULP89Lql+j5TU90lqbJhiZ8Nuoz2rRpw65duxg2bJiH/4X9iGnIBvHp8Ri1kajQKGJiTIEipekRFJpFxJOkYlGaGAi51lcXPRr14PDow9w6cwj/9P2d3Ozd5J6O4fypL6AATgTB9k3AP5C4NJEajWvw4Ycf8tRTT2EwVKw2tigCG5xKOwVgUgTrTYqgND0C8C47eXnFUbfO0tr75VpfXYQHh7N91DpeWPIxP+78leQ6e8ivF0tofhjXZzenfmZ92nVvR78p/WjYsKGnxS01TikCpVQ1YA5QHzgO3KO1Pm8l3SygH5CotW7paH5PUBhDEBUaxY+7fqRWrVrUqFHDw1IJpaE0U13Y8hPXmCbhk5a+92BQBqb1/w/T+v/H06K4DWf7L2OBNVrrxsAa829rfA3c7kT+MqdQEdSrUo+YmJhS9wYEz1Mat05bayWDxAcIzuGoE0JZ4KwiGAjMNm/PBgZZS6S13gAklza/JziZepLqQdUJ9Alkz549pRofEMoHpTHzWMZAWEPiA4TSUF6DDp1VBLW01gkA5m9H5/i1O79S6gml1Fal1NakpKRSC2wvJ1NNwWSHDx8mOztbFEEFprRunYPaRrJp7C0oG8clPkBwlPIadFiiIlBKrVZK7bbyGVgWAhaitZ6htY7WWkeXha2+MJis0GNITEMVF2fdOiU+QChKac075TXosERFoLW+VWvd0spnEXBGKRUBYP4uZrFYqzib322cTD1JVJUodu3ahcFg8Lo1CK4mnJ3qQuIDBEusmXeenbOTtm/8WmGDDp11H10MDAcmmb8XlXF+t5CWk0ZqTipRoVH8EfMHTZo0IShIWn8VGWfcOiU+QLDEmnkH4PyFvBK90Uq7toe7cVYRTALmKqUeBU4CdwMopeoAX2qt+5h//wh0B8KVUrHA61rrmbbye5pTqZdiCD7b9Vm5nUNcKDskPkAopDgzTkUNOnRKEWitzwE9reyPB/pY/B7qSH5PU+g6Gu4fztGjR3n44Yc9LJEgCK7EmXUjbMWYFFIRgw4rVhx0GVGoCDLjM4HSTS0hCEL5xJqN/7k5O6lv58BvcTEm4Hl7f2kQRWCFk6kn8VE+JB01uam2aNHCwxIJguAqrNn4tfnbHr/+QueDsCC/K46VB3t/aRBFYIWTaSepW6Uuhw4ews/PjwYNGnhaJEEQXERJpht7/PoHtY1k5+u38f69bS7zRruzXSSTVx4oV1HD9iCTzlmhMIbgwPoDNGrUCF9fOU2CcLVQko0f7Pfrt7T3l2ZOq/KC9AiscFERHDhA06YVr5tXnimP86wI3kVJNn4onZ2/vEYN24MogiIUGAuITYulbuW6HD58WBSBCymv86wI3kXReaSKTiFSWjt/eY0atgdRBEU4nXGafGM+lfIrkZeXJ4rAhVTkFpNwdVE4j9TxSX2ZVsTO70jUuSXlNWrYHsT4XYTCBWkKzpteWKIIXEdFbjEJVy+u8usvr1HD9iA9giIUjSEQReA6KnKLSRBKwtk5rTyJ9AiKEJsWC8DZI2epVq0a4eHhHpbo6qEit5gEwR7KY9SwPYgiKEJ8ejyBvoEc239MegMuprzOsyII3o4ogiLEp8cTWTmSgwcO0rt3b0+Lc9VRUVtMgnA1I2MERYhLj6NWcC0SEhKkRyAIglcgiqAI8enxhOgQQAaKBUHwDkQRWKC1Ji4tDp8LpqjDJk2aeFgiQRAE9yOKwILUnFSy8rPIS87DYDBw7bXXelokQRAEtyODxRbEpZmmOsiIz6B+/foEBAR4WCLvxpnFQwRBsB9RBBbEp8cDcPbYWRkf8DAVeSZHQahoiGnIgrh0U48gdl+sKAIPI/MSCULZIYrAgsIeQXZitigCDyPzEglC2SGKwIK4tDgq+1aGfHEd9TQyL5EglB1OKQKlVDWl1Cql1CHzd1Ub6WYppRKVUruL7B+nlIpTSu00f/o4I4+zxGdciiFo3LixJ0XxeqwtHiLzEgmCe3C2RzAWWKO1bgysMf+2xtfA7TaOTdNatzF/ljkpj1PEpcURkBNAQEAAderU8aQoXk9FnslRECoaznoNDQS6m7dnA+uA/yuaSGu9QSlV38m63E58ejy+ab7Ur18fg0GsZp5G5iUShLLB2bddLa11AoD5u2YpyhillNplNh9ZNS0BKKWeUEptVUptTUpKKq28Npm3/SRx6QmcOpbKGR0qyycKguA1lKgIlFKrlVK7rXwGuqD+T4FGQBsgAZhqK6HWeobWOlprHV2jRg0XVH2JhTviGLtgI2BEn71AQUgNWUtXEASvoUTTkNb6VlvHlFJnlFIRWusEpVQEkOhI5VrrMxZlfQEscSS/q5i88gAZ+UngC/p8Lr4RtS76rItpQhCEqx1nTUOLgeHm7eHAIkcym5VHIYOB3bbSupP4lCwK1DnTjzTwDat9cb8gCMLVjrOKYBLQSyl1COhl/o1Sqo5S6qIHkFLqR+BPoKlSKlYp9aj50LtKqRil1C6gB/Cck/KUijphQZcUQfolRSA+64IgeANOeQ1prc8BPa3sjwf6WPweaiP/MGfqdxVjejflsYXnQSvI1PiG1hafdUEQvAbxkcTkptimvhFDjj+GgCrUq1VdfNYFQfAaZPZRM75+KYTkB9DkuiZsGnuLp8URBEEoM6RHYCY+PZ6C8wU0bNjQ06IIgiCUKaIIzMSlx5GVmCWKQBAEr0NMQ0B2fjbJWcmQCg0aNPC0OIIgCGWK9Ai4tA4B6UiPQBAEr0MUARaKIE0UgSAI3ocoAi4pApWpqFevnoelEQRBKFtEEQCxabEA1K1SFz8/Pw9LIwiCULaIIgCOnT+GT74PjSIbeVoUQRCEMkcUAXA89TgqRdGooSgCQRC8D1EEwJHkI+SfzZeBYkEQvBKvVwRaa46fPw7nJYZAEATvxOsVQdKFJLIKsiBFXEcFQfBOvF4RHDt/zLSRIj0CQRC8E1EEKSZF4H/BH1evhSwIglAREEVg7hHUC6mHUsrD0giCIJQ9oghSjuGb68s1Edd4WhRBEASPIIog5RgqRREVFeVpUQRBEDyCKILzx8hLypM5hgRB8Fq8WhEUGAs4mXoSziOKQBAEr8UpRaCUqqaUWqWUOmT+rmolTT2l1G9KqX1KqT1KqWccye9O4tPjyTPmwXnENCQIgtfibI9gLLBGa90YWGP+XZR84AWtdXOgE/CUUqqFA/ndRqHrKCnSIxAEwXtxVhEMBGabt2cDg4om0FonaK23m7fTgX1ApL353cnFYDIxDQmC4MU4qwhqaa0TwPTCB2oWl1gpVR9oC2x2NL9S6gml1Fal1NakpCQnxTZxLOUYaAhVoVSuXNklZQqCIFQ0Sly8Xim1Gqht5dArjlSklAoB5gHPaq3THMkLoLWeAcwAiI6O1o7mt8axlGME5gUSVUfGBwRB8F5KVARa61ttHVNKnVFKRWitE5RSEUCijXR+mJTA91rr+RaH7MrvLo6dP4ZPmo+YhQRB8GqcNQ0tBoabt4cDi4omUKZ5G2YC+7TW7zma350cSzlG3tk88RgSBMGrKbFHUAKTgLlKqUeBk8DdAEqpOsCXWus+QFdgGBCjlNppzvey1nqZrfzuYOGOOCavPEB8ShZ1woJ49tb6xKXFoU9r6rWSHoEgCN6LU4pAa30O6GllfzzQx7y9EbA6m5ut/K5m4Y44XpofQ1ZeAQBxKVmMXfQb2ldDisQQCILg3XhFZPHklQfIyisgT50mT50GIKMg3nRQXEcFQfBynDUNVQjiU7IASPP9hQzfFfgaI/DR5iDmFFEEgiB4N17RI6gTFgRAlfwhVM19Aj8dSa7hCIa8AEiHyMjIEkoQBEG4evEKRTCmd1OC/Hzw03WoUjCAmrnjaFwwl277+lK7Zm0CAgI8LaIgCILH8ApFMKhtJG8PaUVkWBAKiAwL4p0h7fBLTxezkCAIXo9XjBGASRkManu5CeilU6e47rrrPCSRIAhC+cAregTW0Fpz6tQp6REIguD1eK0iOH/+PJmZmaIIBEHwerxWEZw6dQqQYDJBEASvVwTSIxAEwdvxWkVw8uRJQHoEgiAIXqsIYmNj8fX1pVatWp4WRRAEwaN4rSKIj48nIiICg8FrT4EgCALg5YqgTp06nhZDEATB43i1IoiIiPC0GIIgCB7HaxVBQkKC9AgEQRDwUkWQnZ1NcnKyKAJBEAS8VBEkJCQAiCIQBEHASxVBfLxpdTIZIxAEQfByRSA9AkEQBC9VBGIaEgRBuIRTikApVU0ptUopdcj8XdVKmnpKqd+UUvuUUnuUUs9YHBunlIpTSu00f/o4I4+9xMfH4+fnR/Xq1cuiOkEQhHKNsz2CscAarXVjYI35d1HygRe01s2BTsBTSqkWFsenaa3bmD/LnJTHLgqDyZRSZVGdIAhCucZZRTAQmG3eng0MKppAa52gtd5u3k4H9gEeXS1egskEQRAu4awiqKW1TgDTCx+oWVxipVR9oC2w2WL3KKXULqXULGumJXcgwWSCIAiXKFERKKVWK6V2W/kMdKQipVQIMA94VmudZt79KdAIaAMkAFOLyf+EUmqrUmprUlKSI1VfgcwzJAiCcIkSF6/XWt9q65hS6oxSKkJrnaCUigASbaTzw6QEvtdaz7co+4xFmi+AJcXIMQOYARAdHa1LktsWFy5cICUlRRSBIAiCGWdNQ4uB4ebt4cCiogmUaUR2JrBPa/1ekWOWhvrBwG4n5SkRcR0VBEG4HGcVwSSgl1LqENDL/BulVB2lVKEHUFdgGHCLFTfRd5VSMUqpXUAP4Dkn5SkRiSoWBEG4nBJNQ8WhtT4H9LSyPx7oY97eCFj109RaD3Om/tIgPQJBEITL8brIYpleQhAE4XK8UhEEBARQtWqZeKoKgiCUe7xSEUREREhUsSAIghmvUwQSTCYIgnA5XqcIJJhMEAThckQRCIIgeDlepQgyMjJIS0sTRSAIgmCBVymCwhgCCSYTBEG4hFcqAukRCIIgXMKrFIEEkwmCIFyJKAJBEAQvx+sUQWBgIKGhoZ4WRRAEodzgVYqgWbNm3H///RJVLAiCYIHSutRrvHiM6OhovXXrVk+LIQiCUKFQSm3TWkcX3e9VPQJBEAThSkQRCIIgeDmiCARBELwcUQSCIAhejigCQRAEL0cUgSAIgpcjikAQBMHLEUUgCILg5VTIgDKlVBJwopTZw4GzLhTHVYhcjiFyOYbI5RjlVS5wTrZrtNY1iu6skIrAGZRSW61F1nkakcsxRC7HELkco7zKBe6RTUxDgiAIXo4oAkEQBC/HGxXBDE8LYAORyzFELscQuRyjvMoFbpDN68YIBEEQhMvxxh6BIAiCYIEoAkEQBC/nqlQESqm7lVJ7lFJGpZRNNyul1O1KqQNKqcNKqbEW+6sppVYppQ6Zv6u6SK4Sy1VKNVVK7bT4pCmlnjUfG6eUirM41qes5DKnO66UijHXvdXR/O6QSylVTyn1m1Jqn/maP2NxzKXny9b9YnFcKaU+NB/fpZS6wd68bpbrAbM8u5RSfyilWlscs3pNy0iu7kqpVIvr85q9ed0s1xgLmXYrpQqUUtXMx9xyvpRSs5RSiUqp3TaOu/fe0lpfdR+gOdAUWAdE20jjAxwBGgL+wD9AC/Oxd4Gx5u2xwDsuksuhcs0ynsYUBAIwDhjthvNll1zAcSDc2f/lSrmACOAG83Zl4KDFdXTZ+SrufrFI0wdYDiigE7DZ3rxulqsLUNW8fUehXMVd0zKSqzuwpDR53SlXkfT9gbVlcL66ATcAu20cd+u9dVX2CLTW+7TWB0pI1gE4rLU+qrXOBX4CBpqPDQRmm7dnA4NcJJqj5fYEjmitSxtFbS/O/l+PnS+tdYLWert5Ox3YB0S6qH5LirtfLOX9Rpv4CwhTSkXYmddtcmmt/9Banzf//Auo66K6nZLLTXldXfZQ4EcX1W0TrfUGILmYJG69t65KRWAnkcApi9+xXHqB1NJaJ4DpRQPUdFGdjpZ7H1fehKPMXcNZrjLBOCCXBn5VSm1TSj1RivzukgsApVR9oC2w2WK3q85XcfdLSWnsyetOuSx5FFPLshBb17Ss5OqslPpHKbVcKXWdg3ndKRdKqWDgdmCexW53na+ScOu95euUaB5EKbUaqG3l0Cta60X2FGFln9O+tMXJ5WA5/sAA4CWL3Z8CEzDJOQGYCjxShnJ11VrHK6VqAquUUvvNLZlS48LzFYLpgX1Wa51m3l3q82WtCiv7it4vttK45V4roc4rEyrVA5MiuNFit8uvqQNybcdk9swwj98sBBrbmdedchXSH9iktbZsqbvrfJWEW++tCqsItNa3OllELFDP4nddIN68fUYpFaG1TjB3vxJdIZdSypFy7wC2a63PWJR9cVsp9QWwpCzl0lrHm78TlVILMHVLN+Dh86WU8sOkBL7XWs+3KLvU58sKxd0vJaXxtyOvO+VCKXU98CVwh9b6XOH+Yq6p2+WyUNhorZcppT5RSoXbk9edcllwRY/cjeerJNx6b3mzaWgL0Fgp1cDc+r4PWGw+thgYbt4eDtjTw7AHR8q9wjZpfhkWMhiw6mHgDrmUUpWUUpULt4HbLOr32PlSSilgJrBPa/1ekWOuPF/F3S+W8j5o9vDoBKSaTVr25HWbXEqpKGA+MExrfdBif3HXtCzkqm2+fiilOmB6H52zJ6875TLLEwrcjMU95+bzVRLuvbdcPfpdHj6YHvpYIAc4A6w0768DLLNI1weTl8kRTCalwv3VgTXAIfN3NRfJZbVcK3IFY3ogQovk/xaIAXaZL3ZEWcmFySvhH/NnT3k5X5jMHNp8TnaaP33ccb6s3S/ASGCkeVsBH5uPx2DhsWbrXnPReSpJri+B8xbnZ2tJ17SM5BplrvcfTIPYXcrD+TL/fgj4qUg+t50vTI2+BCAP07vr0bK8t2SKCUEQBC/Hm01DgiAIAqIIBEEQvB5RBIIgCF6OKAJBEAQvRxSBIAiClyOKQBAEwcsRRSAIguDl/D+KH64qwZV8OQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=15\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5,x**6,x**7,x**8,x**9,x**10,x**11,x**12,x**13,x**14,x**15]).T\n", "\n", "# degree-p polynomial linear regression\n", "w15 = np.array(p+1)\n", "w15 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh15= np.matmul(X,w15)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5,t**6,t**7,t**8,t**9,t**10,t**11,t**12,t**13,t**14,t**15]).T,w15), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh15)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5,x_**6,x_**7,x_**8,x_**9,x_**10,x_**11,x_**12,x_**13,x_**14,x_**15]).T\n", "yh_= np.matmul(X_,w15)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=20\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5,x**6,x**7,x**8,x**9,x**10,x**11,x**12,x**13,x**14,x**15,x**16,x**17,x**18,x**19,x**20]).T\n", "\n", "# degree-p polynomial linear regression\n", "w20 = np.array(p+1)\n", "w20 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh20= np.matmul(X,w20)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5,t**6,t**7,t**8,t**9,t**10,t**11,t**12,t**13,t**14,t**15,t**16,t**17,t**18,t**19,t**20]).T,w20), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh20)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5,x_**6,x_**7,x_**8,x_**9,x_**10,x_**11,x_**12,x_**13,x_**14,x_**15,x_**16,x_**17,x_**18,x_**19,x_**20]).T\n", "yh_= np.matmul(X_,w20)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "feature engineering requires domain knowledge about what are good features for the application\n", "\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.plot(MSE.T[0],MSE.T[1],'o-',label='train error')\n", "plt.plot(MSE.T[0],MSE.T[2],'o-',label='test error')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- the **training error** always decrease as we increase the complexity of the model (which in this example is increasing the degree of the polynomial)\n", "- on the other hand, the **test error** that we compute, which is the average error over fresh drawn samples, has a sweet spot where the test error is minimum\n", "- this corresponds usually to the true complexity of the model, which in this case is degree-5 polynomial\n", "-although we did not know (just frmo the samples) that the ground truth is a degree-5 polynomial, we could use the test error to guess the degree of the model we need to use to fit this data (and this process is known as hyper parameter tuning using test error)\n", "- we will learn much more about it in next couple of weeks" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }