10_neural_nets_with_keras.ipynb (1)
10_neural_nets_with_keras.ipynb (1)
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Chapter 10 – Introduction to Artificial Neural Networks with Keras**\n",
"\n",
"_This notebook contains all the sample code and solutions to the exercises in
chapter 10._"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<table align=\"left\">\n",
" <td>\n",
" <a href=\"https://colab.research.google.com/github/ageron/handson-ml2/
blob/master/10_neural_nets_with_keras.ipynb\" target=\"_parent\"><img
src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In
Colab\"/></a>\n",
" </td>\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://kaggle.com/kernels/welcome?
src=https://github.com/ageron/handson-ml2/blob/master/
10_neural_nets_with_keras.ipynb\"><img src=\"https://kaggle.com/static/images/open-
in-kaggle.svg\" /></a>\n",
" </td>\n",
"</table>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Setup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, let's import a few common modules, ensure MatplotLib plots figures
inline and prepare a function to save the figures. We also check that Python 3.5 or
later is installed (although Python 2.x may work, it is deprecated so we strongly
recommend you use Python 3 instead), as well as Scikit-Learn ≥0.20 and TensorFlow
≥2.0."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Python ≥3.5 is required\n",
"import sys\n",
"assert sys.version_info >= (3, 5)\n",
"\n",
"# Scikit-Learn ≥0.20 is required\n",
"import sklearn\n",
"assert sklearn.__version__ >= \"0.20\"\n",
"\n",
"try:\n",
" # %tensorflow_version only exists in Colab.\n",
" %tensorflow_version 2.x\n",
"except Exception:\n",
" pass\n",
"\n",
"# TensorFlow ≥2.0 is required\n",
"import tensorflow as tf\n",
"assert tf.__version__ >= \"2.0\"\n",
"\n",
"# Common imports\n",
"import numpy as np\n",
"import os\n",
"\n",
"# to make this notebook's output stable across runs\n",
"np.random.seed(42)\n",
"\n",
"# To plot pretty figures\n",
"%matplotlib inline\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"mpl.rc('axes', labelsize=14)\n",
"mpl.rc('xtick', labelsize=12)\n",
"mpl.rc('ytick', labelsize=12)\n",
"\n",
"# Where to save the figures\n",
"PROJECT_ROOT_DIR = \".\"\n",
"CHAPTER_ID = \"ann\"\n",
"IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID)\n",
"os.makedirs(IMAGES_PATH, exist_ok=True)\n",
"\n",
"def save_fig(fig_id, tight_layout=True, fig_extension=\"png\",
resolution=300):\n",
" path = os.path.join(IMAGES_PATH, fig_id + \".\" + fig_extension)\n",
" print(\"Saving figure\", fig_id)\n",
" if tight_layout:\n",
" plt.tight_layout()\n",
" plt.savefig(path, format=fig_extension, dpi=resolution)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Perceptrons"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Note**: we set `max_iter` and `tol` explicitly to avoid warnings about the
fact that their default value will change in future versions of Scikit-Learn."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from sklearn.datasets import load_iris\n",
"from sklearn.linear_model import Perceptron\n",
"\n",
"iris = load_iris()\n",
"X = iris.data[:, (2, 3)] # petal length, petal width\n",
"y = (iris.target == 0).astype(np.int)\n",
"\n",
"per_clf = Perceptron(max_iter=1000, tol=1e-3, random_state=42)\n",
"per_clf.fit(X, y)\n",
"\n",
"y_pred = per_clf.predict([[2, 0.5]])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure perceptron_iris_plot\n"
]
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAsgAAAEYCAYAAABBfQDEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
ABTyklEQVR4nO3deZzNZRvH8c81iyFM1hlZxr4lkS2tJFuLiOqptPckSXshGbssoSJLEhFlKS1aUKGiEBFZ
8iRLkS2yTIwZcz9/nHHMTLObOWeW7/v1Oi/nXPdvuc7M4JrfuX/
3Zc45RERERETEI8DfCYiIiIiI5CQqkEVEREREElCBLCIiIiKSgApkEREREZEEVCCLiIiIiCSgAllEREREJA
EVyCIiIiIiCfisQDazEDN708x2mtkxM1trZtelsv1TZrbXzI6Y2RQzC0kwVsLMPjCzqPjj3embdyEiIiIie
Z0vryAHAb8DzYDzgUhgjplVSrqhmbUBegHXApWAKsCABJuMA04B4UBnYIKZ1cnG3EVEREQknzB/dtIzs/
XAAOfc+0ni7wA7nHO9419fC8x0zpUxs8LAYeAi59zW+PG3gd3OuV6+fQciIiIiktcE+evEZhYO1AA2JjNcB
/
goweufgHAzKwlEAKfPFMcJxpulcJ4uQBeAkJDCDcPDa2VB9iIiIiLia7t2pTwWEZGefXbg3EFL6zx+KZDNL
BiYCUxzzm1JZpMiwJEEr888L5rM2Jnxosmdyzk3CZgEULFiI9e79+pzyFxERERE/
KVr15THevdOzz6N0nUen69iYWYBwNt45hB3T2Gz40Bogtdnnh9LZuzM+LEsTFNERERE8imfFshmZsCbeG6u
6+Sci0lh041AvQSv6wH7nHN/
AVuBIDOrnmQ8uakaIiIiIpJHhCa9RJpGPK2xlPj0Jj0zmwjUB1o6546nsl1b4C2gBfAn8D6w6sxNeGY2C3D
Af+OP9xlwuXMu1SJZUyxERERE8q+uXW2Ncy7NeRa+XAe5IvAwnoJ2r5kdj390NrOI+OcRAM65BcAIYAmwM/
7RL8HhugGFgP3Au8AjaRXHIiIiIiLp4bOb9JxzO4HU7hoskmT70cDoFI51COiQZcmJiIiIiMRTq2kRERERk
QRUIIuIiIiIJOC3RiEiIiIiItmtRw84evTMq4YN07OPriCLiIiISJ51tjhOPxXIIiIiIiIJqEAWEREREUlA
BbKIiIiISAIqkEVEREREElCBLCIiIiJ5VmhoxvfRMm8iIiIikmeNGHH2edeua9akZx9dQRYRERERSUAFsoi
IiIhIAvmqQP7rr+0cOvS7v9MQERERkRwsX81Bjoo6RL9+NWjR4knatu1FoULn+zslERERkXypa9eUxyZOTD
7+yCPg3L/
jZjBhQtbkBfnsCjJATMxJFi4cRmRkNZYuHcfp0zH+TklERERE0iG54ji1eGblqwL5vPNCvM+PHz/
IrFndGTjwItau/QCX1V9ZEREREcmV8lWBXKtWeaZPf5qKFUt7Y/v2beX11zsyatTVbN++0o/
ZiYiIiEhOkK8KZIDbb7+aDRvGMWzYfZx//nne+K+/
LmP48KZMnnw7Bw785scMRURERMSffFogm1l3M1ttZtFm9lYq2000s+MJHtFmdizB+FIzO5lg/
JeM5FGwYAGefroDW7ZM5PHH2xEcfPZexdWrZ9O/
fy3ee+8ZoqIOZeZtioiIiEgu5usryHuAwcCU1DZyznV1zhU58wDeBeYm2ax7gm1qZiaZkiVDGTnyQdavH0u
nTpd746dPx/
Dll6OJjKzGl1+OJiYmOjOHFxEREZEsZJaxeKbP44+b08xsMFDeOXdfOrYtDOwFbnTOfR0fWwrMcM5Nzsh5G
zas5lasGJXi+IoVW+jZ8y2+/
35LonipUpXp0GEoDRvehmX1d0BEREREfKJrV1vjnGuU1na5YQ5yJ+AA8E2S+FAzO2hmy82seUo7m1mX+Gkd
qw8ePJrqiZo2rcXSpUOZNasH1apd4I0fPLidyZNvZ8SIy/
j112WZfiMiIiIikvPlhgL5XmC6S3ypuydQBSgHTALmm1nV5HZ2zk1yzjVyzjUqVSo0zZOZGR07Xs66dWMYP
fq/
lCxZ1Du2fftKRo68iokTO7Jv39ZzeU8iIiIikkPl6ALZzCoAzYDpCePOuZXOuWPOuWjn3DRgOXB9Vp67QIF
gune/kc2bJ/
DMMzcTEhLsHVu37gMGDKjDu+9259ixA1l5WhERERHxsxw9B9nMXgDaOOeuTmO7z4HPnXNjUtsurTnIqdm5c
z99+87k3Xe/ThQvWLAobds+T4sWT1KgQKFMHVtEREQkO/ToAUeTmWEaGgojRvg+H39I/
DVohHOr07yhzNfLvAWZWUEgEAg0s4JmFpTKLvcAbyU5RjEza3NmXzPrDFwNLMy2xIGKFcOYNu0pvv9+JM2a
XeSNnzx5jA8/7E2/fjVZsWI6cXFx2ZmGiIiISLolVxynFs+LMvNefT3Fog9wAugF3BX/
vI+ZRcSvZxxxZkMzuwwoz7+XdwvGs1TcAeAg8BjQwTmXobWQM6thw2osWjSIefN6U7NmeW/
88OHfeeutexk6tBFbtnzli1REREREJBv4tEB2zvV3zlmSR3/
n3K749Yx3Jdj2e+dcYefcsSTHOOCca+ycK+qcK+aca+qc+8KX78PMuPHGJqxd+yqvvdaVsLDzvWO//
76WV15pyWuv3cCePRt9mZaIiIiIZIEcfZNeThcUFEiXLm3ZvHkizz9/K4UKFfCO/
fzzZwwadDEzZnThyJE//
ZiliIiIiGSECuQsULRoIQYM6MymTRO4775rvc1EnItj2bI36Nu3Op98MoDo6Cg/
ZyoiIiIiaVGBnIXKlSvJpEmP8cMPL9O69SXeeHR0FJ980p+
+fauzbNlk4uJO+zFLERERyS9CU2gBkVI8L8rMe/XLMm/
+ci7LvGXGF1+spVevaWzYsCNRvGzZOnTs+BJ16rRV62oRERERH8lLraZzrVatLmHVqlG88cZjlC1bwhvfs2
cjr712Pa++2orff1/nvwRFRERE5F9UIGezwMBA7r33WjZuHE///ndSpEhB79iWLV/x4osNeOutezl06Hc/
ZikiIiIiZ6hA9pHChQvSu/dtbN48kS5d2hIY6PnSO+dYsWI6/
frV4MMPX+DEiXy0creIiIhIDqQ5yH6yefPv9O49nU8//SFRvGjR0txwQ3+uuuohAgOD/
ZSdiIiI5AW+ajWdW1paaw5yDle7dgU++OAFvvhiEA0aVPXGjx07wKxZjzJw4EWsW/
cR+ekXGBEREclavmo1nddaWqtA9rNmzery3XcvMW3aU0RElPbG9+3bysSJHRg1qhnbt6/
yY4YiIiIi+YsK5BwgICCAO+5oxs8/j2Po0Hs5//zzvGO//votw4dfyuTJd3Dw4HY/
ZikiIiKSP6hAzkEKFizAM8/czObNE+ne/UaCggK9Y6tXz6J//
1q8996zREUd9mOWIiIiInmbCuQcqFSpUEaP/i8//TSWm2++zBuPjT3Fl1+OIjKyKl9+
+TIxMdF+zFJEREQkb1KBnINVr16W2bN78vXXw7j00pre+D//
HOa9955mwIALWb16jm7kExERkWT5qtV0XmtprWXecgnnHPPmfc8LL0zjt9/2JRqrXLkpnTqNpFq1K/
yUnYiIiEjOp2Xe8hgzo1Ony1m//jVGjXqQEiWKese2b1/
ByJFX8vrrndi3739+zFJEREQk91OBnMsUKBDMY4+1Y/
PmCTz9dAcKFAjyjq1dO48BAy5k9uzHOX78oB+zFBEREcm9VCDnUsWLF2HYsPv4+edx3H771d54XFwsS5aMp
U+fqixcOJxTp074MUsRERGR3Menc5DNrDtwH1AXeNc5d18K290HvAkkrO5udM4tjR8vET/
eGjgIPO+ceyet8+fmOchpWbPmV3r2nMo332xMFC9evAIdOrxI48Z3EhCg34dERESyQ05ttdy1a8pjEycmH8
/Me/HV+3/
kEUiudDWDCRPSk1sjnFttaZ3H1xXTHmAwMCUd237vnCuS4LE0wdg44BQQDnQGJphZnSzPNhdp2LAaX3wxmP
ff702NGuW88cOHf2fq1LsZNqwxW7Ys9mOGIiIieVdearWcmffiq/
ef0nXd1K73ZiYHnxbIzrl5zrkPgb8yewwzKwx0AiKdc8edc8uAj4G7sybL3MvMaNeuCWvXvsrYsQ9TuvT53
rFdu37klVeuZdy4G9mzZ5MfsxQRERHJ2XLyZ+6XmNlBM9tqZpFmduZutBrAaefc1gTb/
gQkewXZzLqY2WozW33wYC78NS4TgoODePjh69i8eQK9et1KoUIFvGMbNnzKoEF1mTnzYY4c2evHLEVERERy
ppxaIH8DXASE4blafAfwXPxYEeBIku2PAEVJhnNuknOukXOuUalSuXS16kwKDT2PgQM7s3HjeO65pwVmnik
3zsXx7beT6Nu3Gp9+OpDo6Cg/
ZyoiIiKSc+TIAtk595tzbrtzLs45twEYCNwSP3wcSFrphgLHfJljblK+fCkmT36cVatGc+219bzx6Ogo5s/
vR9++1Vm+/E3i4k77MUsRERGRnCFHFsjJcMCZOw63AkFmVj3BeD1g47/2kkTq1avMZ5/1Z/
78vtSpE+GNHznyJ2+//
V+GDLmEjRsX+jFDERGR3CkvtVrOzHvx1fu3FNafSCme2Rx8vcxbEBAE9APKAw8Bsc652CTbXQf86JzbZ2a1
gPeAuc65AfHjs/
AUzf8F6gOfAZc751ItkvPyMm8Zdfr0ad5+ewn9+s3kzz8PJxqrXbsVnTq9RPny9VLYW0RERCT3yamtpvvgW
du4F3BX/
PM+ZhZhZsfN7MxlzWuB9WYWhaf4nQe8mOA43YBCwH7gXeCRtIpjSSwwMJD77mvJpk0T6NfvDgoXLugd27z5
C4YMuYRp0+7n8OE//JiliIiIiO/59Aqyv+kKcsr27j3MoEGzePPNL4iLi/
PGg4ML0bLl07Ru3YNChXLh50QiIiIi8XLqFWTJocqUKc64cY/
w44+vcv31Z39uYmJO8PnnQ+jbtxpffz2B06dj/
JiliIiISPbTFWRJ1pIl6+nZ8y3WrfstUTw8vCYdO47g4ovbeZeNExER8YWc2s7ZlzLTajmjMvN1PvcW0Ok7
z7nSFWQ5J9dcczErVoxk6tQnqVChlDe+b98vTJjQntGjm7Njxw9+zFBERPKbvNTOObMy02o5ozLzdc7KFtA
54fupAllSFBAQQOfOzfn553EMGXIPoaHnecf+979vGDasCW+
+2ZmDB3f4L0kRERGRLKYCWdJUqFAIzz3Xkc2bJ/DoozcQFBToHfvhh3fo378m77/fg3/++dt/
SYqIiIhkERXIkm6lS5/Pyy8/xLp1Y+jQoak3Hht7ii+
+eInIyKp89dUrxMae8mOWIiIiIudGBbJkWI0a5ZgzpxdLlw6lSZMa3nhU1CHmzn2KAQMuZM2aueSnG0BFRE
Qk71CBLJl2+eW1+fbb4bzzznNUqRLujR84sI033riNl166gm3bvvNjhiIikpfkpXbOmZWZVssZlZmvc1a2g
M4J308t8yZZIjo6hokTP+fFF+dw+PDxRGOXXNKJm28eRlhYNT9lJyIiIqJl3sTHQkKCeeKJm9iyZSJPPdWe
AgWCvGNr175P//
61mT37CY4fP+jHLEVERETSpgJZslTx4kUYPvx+NmwYx223XeWNx8XFsmTJGCIjq7Fw4QhiYk76MUsRERGRl
KlAlmxRuXI4M2Y8w/
LlI7jyygu98RMnjvDBBz3p168mK1fOJC4uzo9ZioiIiPybCmTJVo0b1+Crr4bw3nvPU716WW/
80KFdTJ16F8OGNeGXX5b6L0ERERGRJNJ1k56ZFQSeAK4FwkhSWDvnLs6W7LKYbtLzr5iYWN58cxGDBs3mwI
Ejicbq1r2Rjh1HcMEFtf2UnYiInNGjR/LtfkNDYcQI3+dzLrp2TXls4sTk4488knyLZDOYMMG/
+2T0e5OZ72Ve+v4nldU36Y0HegE7gA+B95M8RNIUHBxE167Xs3nzBHr2vIWCBQt4xzZs+IRBg+oyc2ZXjh7
d58csRUQkueIotXhek9K1w9SuKfpqn4x+bzLzvczv33+AoLQ3AaADcKtz7stszEXyidDQ8xg06C66dGlD//
7vMGPGUpxzxMWd5ttvX2fVqpm0bt2Dli2fJiSksL/TFRERkXwmvVeQ/
wF+z85EJP+pUKE0b775BCtXjqJFi7OzdKKjjzN/fl/
69q3Bd99NJS7utB+zFBERkfwmvQXyCOBpM9NNfZLl6tevwuefD+DjjyO58MIIb/zIkT1Mn/
4AQ4ZcwqZNi/
yYoYiIiOQnKRa8ZvbxmQfQEvgPsN3MPk84Fj+eLmbW3cxWm1m0mb2Vynb3mtkaMztqZn+Y2QgzC0owvtTMT
prZ8fjHL+nNQXImM6Nt24asXv0yEyc+Spkyxb1ju3dvYMyYNowZ04Y//
ljvxyxFREQkP0jtivBfSR4fAIuBvcmMpdceYDAwJY3tzgOeBEoBl+JZPePZJNt0d84ViX/
UzEAOkoMFBQXywAOt2LRpPJGRt1O4cEHv2KZNixgypD7Tpz/A4cO7/ZiliEjeFhqasXheY5axuC/
3yej3JjPfy/z+/Yd0LvOW5Sc1GwyUd87dl87tnwaucc61i3+9FJjhnJuckfNqmbfc588/
DzFw4LtMnfpVoqYiwcGFaNXqGVq37kHBgkX9mKGIiIjkFlm6zJuZLTazYsnEQ81scSbyy6irgY1JYkPN7KC
ZLTez5intaGZd4qd1rD54MB+tT5JHXHBBCSZMeJQ1a17huusaeuMxMSf47LPBREZW45tvJnL6dKwfsxQREZ
G8JL033TUHCiQTLwhclWXZJMPM7gcaASMThHsCVYBywCRgvplVTW5/59wk51wj51yjUqXy0WcDeUydOhF89
FEkCxYMoF69yt74sWP7eeedRxg0qC7r18/HH5+IiIiISN6SaoFsZg3MrEH8y4vPvI5/
NAa6ANk2GdTMOgDDgOuccwfPxJ1zK51zx5xz0c65acBy4PrsykNyjhYt6rFy5SimTHmC8uVLeuN7925h/
PibePnlFuzcucaPGYqIiEhul1ajkNWAi38kt87WCeCxrE4KwMzaAm8ANzjnNqSxuQNSmdIueUlAQAB33XUN
nTpdztixnzB8+HscO3YCgK1blzJ0aCOaNOlM+/ZDKFmyop+zFRGRrJKT2ybntfNkVE7NK7PSmmJRGaiKp/
hsEv/
6zKMcEOqcS2tFCi8zCzKzgkAgEGhmBRMu35ZguxbATKCTc25VkrFiZtbmzL5m1hnPHOWF6c1D8oZChULo0a
MTW7ZMpFu36wkKCvSOrVo1k4EDqzNvXk/++edv/
yUpIiJZJie3Tc5r58monJpXZqVaIDvndjrndjjnApxzq+Nfn3n86ZzLaIuzPniuOvcC7op/
3sfMIuLXMz7TJSISOB/4LMFax5/
HjwXjWSruAHAQzxXsDs45rYWcT5UufT6vvNKFdevG0L59U288OjqGRYtGEBlZjcWLxxAbe8qPWYqIiEhuke
IUCzO7J70Hcc5NT+d2/YH+KQwXSbDdNakc4wDQOL25Sf5Ro0Y55s7txbJlG+nZ8y1++OF/AERF/
cWcOU+wZMlYbr55GJdc0hFLbZFJERERyddSm4M8LsnrAniu3p5ZjDYAiAGigXQVyCK+cOWVdVi2bARz5y6n
T5/p7NixH4ADB35l0qRbqFLlcm65ZSRVqlzm50xFREQkJ0pxioVzruiZB3A7sB7Pkm4FObu82zrgTh/
kKZIhZsZtt13Jhg3jGDHifooX935AwW+/fceIEZczadKt7N//
qx+zFBERkZwovesgjwQed84td87Fxj+W42kHrdZ0kmOFhATz5JPt2bx5Ak8+eRMFCpz90OTHH99jwIALmTP
nSY4fz0jHdBER8Yec3DY5r50no3JqXpmVrlbTZnYCuNQ5tz5JvB6wwjlXKJvyy1JqNS2//
baXyMgZzJ27LFG8UKHzue66F7jmmscIDi7op+xEREQkO2Vpq2lgJTDGzMqdCcQ/
fxlYkbkURXyvSpUyzJz5LMuWjeCKK2p74ydOHGHevB7061eLVaveIS4uLpWjiIiISF6W3gL5QaAksMPMdpj
ZDmAHEAY8lD2piWSfJk1qsHjxi8yd24tq1cp644cO7WTKlM4MH34pW7d+7ccMRURExF/
SVSA757YBFwM3AKPxXDm+HqjrnNNdTpIrmRnt2zflp5/
G8MorD1Gq1NmJUjt3rmb06OaMH9+evXu3+DFLERER8bV0zUHOKzQHWVJz5EgUI0bMY+zY+Zw8ebapSEBAIF
de2YUbb+xPaGiYHzMUkczIay1w84qc3DZa8q70zkFOrVHI08B459zJ+Ocpcs6NzkSOIjnK+ecXZsiQu3n44
bb06zeTmTOXAhAXd5pvvpnAypVv06ZNL1q2fIoCBc7zb7Iikm55rQVuXpGT20aLpDbF4jGgcILnKT26Z2eC
Ir4WEVGaqVOfZOXKUVxzTV1vPDr6OB9/3Ie+fWvw3XdvEReX0U7rIiIikhuk1iiksnPurwTPU3pU8V26Ir5
zySVVWbBgIB991IfatSt443//
vZvp0+9nyJAGbNr0hR8zFBERkeyQrpv0zCwwuxMRyYnMjOuua8SaNa8wYUI3ypQp7h3bvXs9Y8a0ZsyYtuz
evcGPWYqIiEhWSu8yb0fMbKGZPW9ml6lglvwmKCiQBx9szaZN4+nT5z+cd16Id2zTpoUMHlyf6dMf5O+/
9/
gxSxEREckK6S2QbwZ+wLPM21Lg74QFc3YlJ5LTFClSiL5972DTpgk88EArAgI8f4Wci+O776bQt291Pv64L
ydPHvNzpiJyRl5rgZtX5OS20SIZXubNzAoBVwCdgbuAAOdcrriirGXeJKv9/
PNOeveexoIFPyaKh4aG067dQC6//
AECA1NcLEZERER8KKtbTWNm4Wb2HzyNQsYBtwPLgYGZzlIkl7vooop8/
HFfPv98ABdfXMkbP3p0HzNnPsygQRezYcOn5Kf1xkVERHK79N6ktxH4DegK7AUeBoo555o75wZkY34iucK1
19Zj5cpRTJ78OOXKlfTG9+7dzLhxN/LKK9eya9ePqRxBREREcor0XkE+HzgN/
ANEAceAU6nuIZLPBAYGcs89Ldi4cTwDB3amaNFC3rFfflnCiy82ZOrUuzl0aJcfsxQREZG0pHsOsplVA5rH
P5oBRYBvgSXOuZfTeYzuwH1AXeBd59x9qWz7FNATKAS8DzzinIuOHysBvAm0Bg4Czzvn3knr/
JqDLL60f//
fDB48mzfeWMjp03HeeFBQCNde+yRt2z5PoULn+zFDEfGnRx6B5P4LNoMJE3LfeXJqG2i1tJaEsnwOsnPuV+
fcZOBe4DbgQ+A6YGQG8toDDAampLaRmbUBegHXApWAKkDCqRzj8FzBDsdzs+AEM6uTgTxEsl1YWDHGjHmYd
evG0q5dE288NjaahQuH06dPVZYsGUtsrD6MEcmPUro+ldW3LPjqPDm1DbRaWktmpHcOcmMz62FmnwOH8Sz1
VhsYBVyf3pM55+Y55z4E/kpj03uBN51zG51zh4FBeK48Y2aFgU5ApHPuuHNuGfAxcHd68xDxpZo1y/H+
+7356qshNGpU3RuPivqL2bMfZ8CAOqxdO0838omIiOQQ6b2CvBzPWsg/
4bl6XMI519Q518s5tzAb8qoTf64zfgLCzawkUAM47ZzbmmQ82SvIZtbFzFab2eqDB/Wrn/
jPVVfVYdmy4bz99jNUqhTmjR848Cuvv96JkSOv4rffVvgxQxEREYH0F8jFnXOXxRfEC5xzUdmalWd+85EEr
888L5rM2JnxoskdyDk3yTnXyDnXqFQprSQu/hUQEMB//nMVGzaMY/
jw+yhWrLB3bNu25YwYcRlvvPEfDhz4zY9ZioiI5G/pKpB9UBAndRxIWM2eeX4smbEz42pdJrlGSEg
wTz3Vgc2bJ/
DEEzcRHHy2mciaNXPo378Wc+c+TVTUIT9mKSIikj+l+yY9H9sI1Evwuh6wzzn3F7AVCDKz6knGN/
owP5EsUbJkKC+99ADr14/
llluu8MZPn47hq69eJjKyKosWjSQm5qQfsxSR7GCWsXhOP09ObQOtltaSGRluNX1OJzMLAoKAfkB54CEg1j
kXm2S7tsBbQAvgTzzLvK1yzvWKH58FOOC/
QH3gM+By51yqRbKWeZOcbsWKLfTs+Rbff78lUbxkyUp06PAiDRv+h4CAnPp7rYiISM6W5cu8ZZE+wAk8S7j
dFf+8j5lFmNlxM4sAcM4tAEYAS4Cd8Y9+CY7TDc/6yPuBd/GskawryJLrNW1ai6VLhzJ7dk+qVbvAG//
rrx28+eadDB/elP/97xs/ZigiIpL3+fQKsr/pCrLkJqdOxfDGGwsZPHg2f/
2VeIp9vXrtufnm4ZQpU9NP2YmIiOQ+6b2CnGKBbGZPp/dkzrnRGcjNb1QgS2505EgUw4e/
z9ix84mOjvHGAwMDuPLKrtxwQz9CQ8NSOYKIiIhA1hTI29N5Luecq5KR5PxFBbLkZjt37qdfv5m8887XieI
FCxalTZteXHvtkxQocJ6fshMREcn5zrlAzotUIEte8OOPv9Kr1zSWLt2QKF68eHluumkwl156t27kExERSU
ZOvUlPRM5RgwbVWLhwIB9+2Idatcp744cP/8G0afcxdGhDNm/
+0o8ZioiI5G7pvoJsZiWAtkAEUCDhmHNuYNanlvV0BVnymtjY00yd+iUDB77Lvn1/
JxqrU+c6OnYcQblyF/
knORERkRwmS6dYmFlT4FMgGigN7AYuiH+9wzl38bml6xsqkCWvOnbsBKNGfcDLL3/IiROnvHGzAC6//
H7atRtIsWJl/ZihiIiI/
2X1FIuXgJlAOeAkngYeEcBqYHhmkxSRrFG0aCH697+TTZsmcN9912LxLbKci2P58jfp27c68+f35+TJ437O
VEREJOdLb4F8MfCa81xuPg2EOOf2AT2B/tmUm4hkULlyJZk06TFWr36ZNm0aeOOnTv3Dp58OoG/
f6nz77RucPh2bylFERETyt/QWyKcSPN8HVIx/fhzQ57YiOUzdupWYP78vn33Wn7p1K3njR4/
uZebMLgweXI8NGz4jP61iIyIikl7pLZB/BBrHP18KDDaze4ExwPpsyEtEskDLlvVZtWoUkyc/
RrlyJb3xP//cxLhxN/DKKy3ZtWutHzMUERHJedJbIL8A7Il/
3gc4AIwFigMPZ0NeIpJFAgMDueeea9m4cTwDBnSmSJGC3rFfflnM0KENmTr1Hg4d+t2PWYqIiOQcahQiks/
s2/
c3gwfPYvLkRZw+HeeNBwcXpEWLJ2nbtheFCp3vxwxFRESyR5auYmFmi82sWDLxUDNbnIn8RMRPwsOLMXZsV
9auHcONNzbxxmNiTrJw4TAiI6uxZMlrnD4d48csRURE/
Ce9Uyyak6Q5SLyCwFVZlo2I+EytWuWZN683X345mIYNq3njx48fZPbsxxgwoA5r136gG/
lERCTfSbVANrMGZnZmraiLz7yOfzQGuuBpGiIiudTVV1/E8uUjmDbtKSpWLO2N79//P15/
vSOjRl3N9u0r/ZihiIiIb6U6B9nM4oAzG1gym5wAHnPOTcmG3LKc5iCLpO7kyVOMH/
8ZQ4fO4ciRfxKNNWr0H9q3f5HSpav4KTsREZFzk1VzkCsDVfEUx03iX595lANCc0txLCJpK1iwAE8/3YEtW
yby+OPtCA4O8o6tXj2b/v1r8d57zxAVdciPWYqIiGSvVAtk59xO59wO51yAc251/
Oszjz+dc6d9laiI+E7JkqGMHPkgP/00lo4dL/
fGT5+O4csvRxMZWY0vvxxNTEy0H7MUERHJHum9SQ8zu87MPjGzTWZWIT72XzO7NgPHKGFmH5hZlJntNLM7U
9huopkdT/CINrNjCcaXmtnJBOO/pDcHEUm/atUuYNasHnz99TCaNq3pjf/
zz2Hee+8ZBgyozerVs3Ujn4iI5CnpXeatMzAH+B+e6RXB8UOBQI8MnG8cnrbV4UBnYIKZ1Um6kXOuq3OuyJ
kH8C4wN8lm3RNsUzPpMUQk61x2WS2+/noYs2b1oGrVMt74wYPbmTz5doYPb8r//
vetHzMUERHJOum9gtwDeMg59xQQmyC+AqifngOYWWGgExDpnDvunFsGfAzcnc79pqUzVxHJBmZGx46X89NP
Yxk9+r+UKFHUO7ZjxypGjbqaCRNuZt+
+rX7MUkRE5Nylt0CuDnyfTPw4EJrOY9QATjvnEv7v+RPwryvISXTC09r6myTxoWZ20MyWm1nzlHY2sy5mtt
rMVh88eDSdqYpISgoUCKZ79xvZsmUCzzxzMyEhwd6xn376kAED6vDuu905duyAH7MUERHJvPQWyHvwFLhJX
Q1sS+cxigBHksSOAEWT2Tahe4HpLvEkx55AFTwraUwC5ptZ1eR2ds5Ncs41cs41KlUqvbW8iKSlWLEiDB16
Lz//
PI477mjmjcfFxfL11+OIjKzKggVDOXXqhB+zFBERybj0FsiTgDFmdkX86wpmdi8wApiQzmMkd7U5FDiWzLY
AxN8M2AyYnjDunFvpnDvmnIt2zk0DlgPXpzMPEclCFSuGMW3aU3z//
UiaNbvIGz958hgfftibfv1qsmLFdOLi4vyYpYiISPqlq0B2zo0A5gFfAIWBJcBEYKJzblw6z7UVCDKz6gli
9YCNqexzD/Cdc+63tFIk+UYmIuIjDRtWY9GiQcyb15uaNct744cP/
85bb93L0KGN2LLlKz9mKCIikj7pXubNOfcCUApPw5CmQGnnXGQG9o/
CU2QPNLPC8Vej2wNvp7LbPcBbCQNmVszM2phZQTMLil9h42pgYXpzEZHsYWbceGMT1q59ldde60pY2Pnesd
9/X8srr7TktdduYM+e1H4vFhER8a9UC2QzO8/
MxpnZbjPbD0wGdjjnVjnnjmfifN2AQsB+PEu3PeKc22hmEfHrGUckOPdlQHn+vbxbMDAYz417B4HHgA7OOa
2FLJJDBAUF0qVLWzZvnsjzz99KoUIFvGM///wZgwZdzIwZXThy5E8/
ZikiIpI8S22BfzN7CU9ROxM4CdwBLHXO3eqb9LJWw4bV3IoVo/ydhki+s3v3X/Tv/
w7Tpy9O1FQkJKQwrVo9R8uWz1CwYBE/
ZigiIvlB1662xjnXKK3t0ppi0RF40DnXxTn3OHAD0MHMArMiSRHJH8qVK8kbbzzGqlWjadWqvjceHR3FJ5/
0p2/f6ixbNpm4OHWvFxER/0urQK4AeNtjOedW4WkUUjY7kxKRvKlevcp8+ml/
PvmkHxddVNEbP3p0LzNmPMTgwfX4+efP1bpaRET8Kq0CORBPa+iEYoGg7ElHRPKD1q0v4YcfRjNpUnfKli3
hje/Zs5HXXrueV19txe+/r/NfgiIikq+lNQc5Ds/SbtEJwtcBXwP/
nAk4527KrgSzkuYgi+Q8UVEneeWVjxg16gOOHz/
pjZsZl156NzfdNJgSJSr4MUMREckrsmoO8jQ8XfT+SvCYAfyeJCYikimFCxfkhRf+w+bNE+nSpS2BgZ5/
lpxzrFgxnX79avDhhy9w4oRaxYuIiG+kegU5r9EVZJGcb/
Pm3+ndezqffvpDonjRoqW54Yb+XHXVQwQGBvspOxERyc2y6gqyiIhP1a5dgQ8+eIEvvhhEgwZVvfFjxw4wa
9ajDBx4EevWfaQb+UREJNuoQBaRZO3f/zWrVz/E8uU3s3r1Q+zf/7VPz9+sWV2+++4l3nrrKSIiSnvj+/
ZtZeLEDowa1Yzt21f5NCcREckfVCCLyL/
s3/8127aNJzr6AOCIjj7Atm3jfV4kBwQEcOedzfj553G8+OI9hIae5x379ddvGT78UiZPvoODB7f7NC8REc
nbVCCLyL/s2jWDuLjoRLG4uGh27Zrhl3wKFizAs892ZMuWiXTvfiNBQWd7Fa1ePYuBA2vw3nvPEhV12C/
5iYhI3qICWUT+JTr6YIbivlKqVCijR/
+Xn34ay803X+aNnzoVy5dfjiIysipffvkyMTHRqRxFREQkdSqQReRfQkJKZSjua9Wrl2X27J4sXTqUSy+t6
Y3/889h3nvvaQYMuJDVq+foRj4REckUFcgi8i8REXcREBCSKBYQEEJExF1+yih5l19em2++Gca77/
agSpVwb/zgwd+YPPk/jBhxOb/+utyPGYqISG6kAllE/iUsrBlVq3YjJKQ0YISElKZq1W6EhTXzd2r/
YmZ06nQ569e/xqhRD1KiRFHv2PbtKxg58kpef70T+/b9z49ZiohIbqJGISKSpxw+fJzhw9/
jtdc+4dSpWG88ICCIq6/uyg039KVo0dKpHEFERPIqNQoRkXypePEiDBt2Hz//PI7//
OcqbzwuLpalS18jMrIaCxYM49SpE37MUkREcjIVyCKSJ1WqFM7bbz/Dd9+9xFVX1fHGT548yocfPk+/
fjVZseJt4uLi/JiliIjkRCqQRSRPa9SoOl9+OZj33+9NjRrlvPHDh3/
nrbfuYdiwxmzZstiPGYqISE7j0wLZzEqY2QdmFmVmO83szhS2u8/
MTpvZ8QSP5hk9joj4jr9bU6fGzGjXrglr177K2LEPU7r0+d6xXbt+5JVXrmXcuBvZs2eTH7MUEZGcwtdXkM
cBp4BwoDMwwczqpLDt9865IgkeSzN5HBHJZjmlNXVagoODePjh69i8eQK9et1KwYIFvGMbNnzKoEF1mTnzY
Y4c2evHLEVExN98ViCbWWGgExDpnDvunFsGfAzc7Y/
jiEjWyWmtqdMSGnoeAwd2ZtOm8dxzTwvMDADn4vj220n07VuNTz8dSHR0lJ8zFRERf/
DlFeQawGnn3NYEsZ+AlK78XmJmB81sq5lFmllQZo5jZl3MbLWZrT548Oi5vgcRSUZObU2dlvLlSzF58uOsW
jWaa6+t541HR0cxf34/+vatzvLlbxIXd9qPWYqIiK/
5skAuAhxJEjsCFE1m22+Ai4AwPFeL7wCey8RxcM5Ncs41cs41KlUqNJOpi0hqcnpr6rTUq1eZzz7rz/
z5falTJ8IbP3LkT95+
+78MGXIJGzcuUOtqEZF8wpcF8nEgaYUaChxLuqFz7jfn3HbnXJxzbgMwELglo8cREd/
ILa2pU2NmtGnTgNWrX+b11x/
lgguKe8d2797A2LHX8eqrrfn993X+S1JERHwiKO1NssxWIMjMqjvnzvR8rQdsTMe+DrAsOI6IZIMzLah37Z
pBdPRBQkJKERFxV45sTZ2WwMBA7r+/FbfddhUvv/
wRo0Z9QFTUSQC2bPmSF19sQNOm93LTTYMoXry8n7MVyX3M4ggLO0h4+N8EBmr6kmSd06cD2bevGPv3l8K5c
7sG7NNW02Y2C0+x+1+gPvAZcLlzbmOS7a4DfnTO7TOzWsB7wFzn3ICMHCcptZoWkYzau/
cwAwe+y5QpXyZqKhIcXIiWLZ+mdeseFCqk6Vsi6VW16i4uuMAoUSKcwMBg702yIufCOcfp0zEcOrSPP/
90bNsWkex2ObXVdDegELAfeBd4xDm30cwi4tc6PvNurgXWm1kUnuJ3HvBiWsfx1ZsQkfyjTJnijB/
fjTVrXuH668/+mxoTc4LPPx9C377V+PrrCZw+HePHLEVyj9DQKEqXLkdQUAEVx5JlzIygoAKULl2O0NBzX4
HIp1eQ/U1XkEXkXC1Zsp6ePd9i3brfEsXDw2vSseMILr64nf7TF0nFJZdspnLl2v5OQ/
Kw7ds3s3Zt8j9jOfUKsohIrnbNNRezYsVIpk59kgoVzq7SsW/
fL0yY0J7Ro5uzY8cPfsxQRETOlS9v0hORJPbv/
9onN7Zt2NCXo0fXe1+Hhl5M3boDszQ3X70XX50nNQEBAXTu3JyOHS/jtdc+Zfjw9zh69B8A/ve/
bxg2rAmNG99J+/
ZDKFWqkk9zExGRc6cryCJ+4qv2zEmLY4CjR9ezYUPfLMvNV+8lp7W0LlQohOee68jmzRN49NEbCAoK9I798
MM79O9fk/fff46oqMN+yU9E8ocOHZrTq1d3f6eRp6hAFvETX7VnTlocpxXPTG6+ei85taV16dLn8/
LLD7Fu3Rg6dGjqjcfGnuKLL0bSt281vvrqFWJjT/
kxSxE5F489dh9hYcbo0YMTxZcvX0pYmPHXX+nvHJregvaxx+6jc+cb09xu6tR59OkzNN3nT+qff/
5hyJDeNGlSjQoVClKrViluuOEK5s17N93H2LVrB2Fhxrp1qzOdR06iAlnET3Jye+aM5uar95KTv2YANWqUY
86cXixZ8iJNmtTwxqOiDjF37lMMGHAha9bMVUc+kXNQpw6Ehf37UadO9p+7YMGCvPbaCA4ePJD9J0uHU6c8
v3QXL16CIkWSbSicLs8915UPP5zN4MGvsHz5FubMWcQtt9zF4cOHsirVXEcFsoif5OT2zBnNzVfvJSd/
zRK64ooL+fbb4cyc+SyVK4d74wcObOONN27jpZeuYNu27/yYoUjudSCF2jSleFa64oprqFChEqNHD0p1u+
+//4a2bS+lQoWCXHhhOJGRT3mL2cceu4/
vvvuaKVPGERZmhIUZu3btSNf5z1xRHjNmOPXqlad+fU+zoqRXpD/5ZB7Nml1MREQhatQoQfv2zdi/
f1+Kx1248GOeeOJ5Wre+kYiISlx8cQPuv/
8RHnzwUe82zjnGjh1B48ZViYgoRLNmdZk79+ynd40aVQagdevGhIUZHTo0ByAuLo5RowZRv34FypcPoVmzu
nz+
+UeJzj9y5EAaNKhI+fIh1KlThkcfvcc7tnjxAtq1u4rq1YtTo0YJbrutDVu3bk7X1+tcqEAW8RNftWcODb0
4Q/HM5Oar95KbWlqbGbfeeiXr17/GSy89QPHiRbxjv/32PS+9dAWvv34L+/f/
6scsRSQjAgICiIwcxrRpE9m+fVuy2/
z5527uuOM6LrroEr76ai2vvPIm8+a9y+DBzwMwZMirNGp0GXfccT8bNvzJhg1/
Uq5chXTn8N13X7Np03pmzVrAe+999a/xffv28vDDt/Of/
9zLsmWb+eijb7j11rtTPWZYWBkWL17A0aNHUtxm6NA+vPPOmwwfPo5vv93E448/
z3PPPcwXX3wKwMKFqwCYNWsBGzb8ydSp8wCYNOlVxo17icjI4Xz99Qauu+5m7r+/Ixs2rANg/
vz3GT9+JMOHj2fFiv8xc+YnNGjQxHveqKgounR5koULV/HBB0sJDT2fu+5q5/2FI7toFQsRP/
FVe+a6dQdmeBWLjObmq/eSG1tah4QE88QTN3HPPS0YNmwu48Z9yqlTsQCsXfs+P/
30Ec2adeOGGyIpUiRnXQkXkX9r2fJ6mjS5gqFDX2DSpFn/
Gp86dTxhYRcwYsR4AgICqFGjNpGRw3j22Yfp1WsQoaHnU6BAAQoVOo/w8DIZPn/
BggV59dUphISEJDu+b98eYmJiaNfuFipUqAhA7doXpXrMUaMm8cgjnalVqxS1a9elcePLadu2Pc2btwI8Re
rEiaOZM2cRTZteBUDFipVZu3YVU6aMo1WrGyhZsjQAJUqUTPS+xo8fSbduz9Kp050A9Oo1kBUrvmH8+JFMm
DCDP/7YSXj4BTRv3prg4GDKl4+gfv2zyxS3a9cpUa6vvjqVqlVD+fHHVTRtemVGvnQZogJZxI/
Cwpr5pLhLa0m35GQ0N1+9F1+dJ6sVL16E4cPvp2vX64mMnMGcOd8CEBcXy5IlY1ixYhpt2/
amRYvHCQ4u6OdsRSQ1ffuO4LrrmtKt27P/Gtu6dTONGl1GQMDZD+mbNLmSU6dOsX37r9Spk/
Knd+lRq9ZFKRbHAHXq1OPqq1ty9dUX0bx5a66+uiXt2t1CqVKl+eOPXVx55YXebZ98sjdPPtmbyy67mh9+
+I01a1awatVyvv12Mbfd1pq77+7CqFGvs3XrJk6ePMntt7cFzjZCio2NoUKFSinmcuzYUfbu3UOTJlckil9
66ZV8+eVnANx006288carNGpUmWuuaUOLFm1p0+Ym73vcvn0bw4dHsmbNSv766wBxcXHExcWxe/
euTHz10k9TLEREfKhy5XBmzHiG5ctHJPqP6sSJI3zwQU/69avJypUziYuL82OWIpKaSy5pzI03dmLQoJ7/
GnPOpdhNMyu6bJ53XuFUxwMDA5k7dxFz5iziwgsv5p133qRp0+r8/
PNPlClTlsWL13kf997b1btfcHAwTZtexeOP92Lu3EX06jWIt9+exK5dO7z/Hr399vxE+3/
zzUbmzFmUZs7Jve8zsXLlKvDdd78wcuTrFC0aSr9+z9CqVUOiojztou+
+ux0HDx5g5MjXWbBgJYsXryUoKIiYmOydYqECWUTEDxo3rsFXXw3hvfeep3r1st74oUO7mDr1LoYNa8Ivvy
zxY4YiOVPp0hmLZ5fevV9kxYpvWbx4QaJ4zZoXsnr194l+yV21ahkFChSgUqWqAAQHF+D06dPZlpuZ0bjxZ
Tz3XD8WLfqBMmXK8tFHswkKCqJKlWreR/HiJVI8Ro0anl/
go6KOU7PmhYSEhPDHHzsT7V+lSjXvNI4CBQoAJHpfRYuGUqZMWVauXJbo2CtXLvMeHzzTRlq1uoFBg15m4c
If2LJlI6tWLefQob/
YunUzTz7Zm2bNWlKjRm2OHz9GbGxsln2tUqIpFiIifmJm3HTTpVx3XUPefHMRAwfO4uDBowDs2rWGl19uQd
26N9Kx4wguuKC2n7MVyRk2bvR3Bh5VqlTj7ru78MYbryaK339/
NyZNeoUePbrRpcsT7Nz5G4MG9eKBB7pz3nnnARARUYm1a1exa9cOChcuQvHiJRJNyTgXq1ev4JtvvuSaa9p
QunQ4GzasZffu3xMVpEl16NCcm2++g/r1G1G8eEm2bt3Eiy/2plq1mtSoUZvAwEC6dXuW/
v2fxTlH06ZXExV1nDVrVhAQEMA993ShVKkwChUqxJIlC6lQoRIFCxYkNPR8Hn30OYYP70uVKtWpV68hc+fO
YMWKb/
niizUAzJr1FrGxsTRocCmFCxfho49mExwcTJUq1SlWrDglS5Zixow3KFu2Anv37mbAgOcICsr+8lUFsogf/
frrRPbtWwTEAQGEh7emWrWuqe7ji7bRmZETWkDnVsHBQXTtej133NGMl16ax5gx8zl50vPx4YYNn7Bx4+dc
ccV/
adduAKGh4WkcTUR85Zln+jJ79rREsQsuKMe7737OgAHP0aJFfUJDi9Gp05288MKL3m26dXuW7t3v5aqrLuT
EiROsXr2diIhKWZJTaOj5rFq1nMmTx3L06N+ULVuBp5+O5NZbU17t55pr2jB37tsMHfoCUVHHCQsrQ7NmrX
jmmb4EBno6hPbqNYjSpcMZP34kPXo8QtGiodSpU5/
u3XsAEBQUxJAhYxg1aiAjRw6gadOr+PDDpTz00OMcP36MgQN7cODAPqpVq8mUKe9Tt279+HyLMXbscPr3f5
bY2Bhq1LiQqVPnUbGiZ9m4SZNm88ILj9Os2UVUrlyN/
v1H8cADnZJ9H1nJ8tOC9Q0bVnMrVozydxoiwJnieMG/
4uHhbVMskpNrGw2pF8ln2jMn7EAXEBBC1ardsqyA9cU58pPffz9Av37vMHPm0kRNRUJCitC6dQ9atnyakJD
U5yGK5FSXXLKZypX1iYhkn+3bN7N2bfI/Y1272hrnXKNkBxPQHGQRP/FcOU5/
HHzTNjozcmoL6NyqQoXSTJnyBCtWjKJFi7N3vEdHH2f+/L707VuD776bSlxc9s1hFBHJz1Qgi/
hNSqsUZO3qBb5oz5zTW0DnVpdcUoXPPx/
Axx9HcuGFEd74kSN7mD79AYYMuYRNm9K+g1xERDJGBbKI36T01y9r/
1r6oj1zbmkBnRuZGW3bNmT16peZOPFRypQp7h3bvXsDY8a0YcyYNvzxR8qfIoiISMaoQBbxk/Dw1hmKg2/
aRmdGbmoBnVsFBQXywAOt2LRpPJGRt1O48NlmIps2LWLIkPpMn/
4Ahw/v9mOWIiJ5g08LZDMrYWYfmFmUme00sztT2O5eM1tjZkfN7A8zG2FmQQnGl5rZSTM7Hv/
4xXfvQiRrVKvWlfDwtpz9axiQ6g164OmIl7QYTk/b6KpVuxESUhowQkJKZ/
nNc744h3gUKVKIyMjb2bRpPA8+2Mq7NJRzju+
+m0rfvtX5+ONITp485udMRURyL5+uYmFm7+KpBh4E6gOfApc75zYm2e4R4GdgJVAa+BiY65wbFj+
+FJjhnJuckfNrFQsRyWs2btxF797T+PzzNYniRYuG0a7dAK644r8EBmpFT8k5tIqFZLdctYqFmRUGOgGRzr
njzrlleArfu5Nu65yb4Jz71jl3yjm3G5gJXJF0OxGR/K5OnQg++iiSBQsGUK9eZW/
82LH9vPPOIwwaVJf16+eTn5b0FBE5V76cYlEDOO2c25og9hNQJx37Xg0k7Z0z1MwOmtlyM2ue0o5m1sXMVp
vZ6jMdqkRE8poWLeqxcuUo3nzzCcqXL+mN7927hfHjb+Lll1uwc+eaVI4gIiJn+LJALgIcSRI7AhRNbSczu
x9oBIxMEO4JVAHKAZOA+WZWNbn9nXOTnHONnHONSpUKzWzuIiI5XkBAAHfffQ0bN45n0KC7KFq0kHds69al
DB3aiClT7uKvv3b6MUsRkZzPlxPTjgNJK9RQIMU7ScysAzAMaOmc8y6o6pxbmWCzaWZ2B3A9MDbLspU8w1c
tkDPTNnrNmsc4efJ37+uCBSvQsGHqP8bLl3cCEjaICOSKK95PY5/
bgFMJIgW44oo5qe6zcuUDxMYe8r4OCirBpZdOSXF7X32d1dI6bYUKhdCz5y3cf39LhgyZw6RJCzh92rO+9q
pVM/nxx/do0eIJ2rZ9nvPOK+bfZEXykA4dmlOr1kUMG/aav1ORc+TLK8hbgSAzq54gVo9/
T50AwMzaAm8A7ZxzG9I4tgMsS7KUPOVMC+To6AOAIzr6ANu2jWf//q+z9Dxn20afafIRx759C/
j114kp7pO0OAY4efJ31qx5LMV9/l0cA5yOj6e0T9LiGOBUfDx5SYtjgNjYQ6xc+UCy2/
vq6+yr8+QVYWHFePXVLqxbN5abbrrUG4+NjWbRohFERlZj8eIxxMYm/
fkQkaQee+w+One+MdVtpk6dR58+QzN9jn/++YchQ3rTpEk1KlQoSK1apbjhhiuYN+/
ddB9j164dhIUZ69atznQe4sMC2TkXBcwDBppZYTO7AmgPvJ10WzNrgefGvE7OuVVJxoqZWRszK2hmQWbWGc
8c5YXZ/y4kt/
FVC+TMtI1OWhynFfdIqbVwai2HUyp+Ui6KkhbHacV99XVWS+vMqVmzHO+99zyLFw+hceOz1yiiov5izpwnG
DCgDmvWvKcb+STX+PvvmWzdWomNGwPYurUSf/8906/5nDrl+fe0ePESFCmS6szRVD33XFc+/HA2gwe/
wvLlW5gzZxG33HIXhw8n/2+vZB9fNwrpBhQC9gPvAo845zaaWUT8esZneqlGAucDnyVY6/
jz+LFgYDBwADgIPAZ0cM5pLWT5F9+1QPZN2+icyldfZ7W0PjdXXlmHZctGMGPGs1SqFOaNHzjwK2+8cSsvv
XQFv/32vR8zFEnb33/
PZM+eLsTE7AQcMTE72bOni0+L5DNXk8eMGU69euWpX7884Jli0atXd+92n3wyj2bNLiYiohA1apSgfftm7N
+/L8XjLlz4MU888TytW99IREQlLr64Afff/
wgPPviodxvnHGPHjqBx46pERBSiWbO6zJ179iJBo0ae1Wxat25MWJjRoUNzAOLi4hg1ahD161egfPkQmjWr
y+eff5To/CNHDqRBg4qULx9CnTplePTRe7xjixcvoF27q6hevTg1apTgttvasHXr5sx/
EXM4ny6O6Zw7BHRIJr4Lz018Z15fk8oxDgCNsyM/yXtCQkrFfxz/73jWCiD5Yjh/NKv01dfZd9/
PvMvMuO22K2nf/lImTPiMF1+cw99/RwHw22/fM2LE5TRocAsdOgwlLKyan7MV+bf9+1/AuX8SxZz7h/
37X6BYsc4+y+O7776maNHzmTVrQbKfvuzbt5eHH76dF14Yyo03diIq6jhr1qxI9ZhhYWVYvHgBN910K6Gh5
ye7zdChfZg//
z2GDx9H1ao1Wb36e5555iGKFStOq1Y3sHDhKtq0acKsWQuoU6ceBQoUAGDSpFcZN+4lXnppIvXrN2Lu3Bnc
f39HvvhiDXXr1mf+/
PcZP34kr7/+LrVr1+Xgwf2J8o2KiqJLlyepU+diTpw4wcsvD+auu9qxbNkm7znyEq0eL3laRMRdbNs2PtHH
8tnRAjk8vHX8HOR/
x1NSsGCFZKdTFCxYIZUzBZL8dIrAVPYpQPLTKVL+By0oqESy0ymCgkoku72vvs6+Ok9+EBISzJNPtueee1o
wbNhcxo37jJiYWAB+/
PE9fvrpI5o168b110dSpEjJNI4m4jsxMbsyFM8uBQsW5NVXpxASEpLs+L59e4iJiaFdu1uoUKEiALVrX5Tq
MUeNmsQjj3SmVq1S1K5dl8aNL6dt2/
Y0b94K8BSpEyeOZs6cRTRtehUAFStWZu3aVUyZMo5WrW6gZMnSAJQoUZLw8DLeY48fP5Ju3Z6lUydPE+Nev
QayYsU3jB8/kgkTZvDHHzsJD7+A5s1bExwcTPnyEdSvf7afRrt2ie91efXVqVStGsqPP66iadMrM/
KlyxXyx+Utybd81QI5M22jGzYc+69iOK1VLDyrVSQthlNfxcKzWkXSYjj1VSwuvXTKv4rh1Fax8NXXWS2ts
16JEkUZMeIBNmx4jVtvPfuf3OnTMSxe/
CqRkVVZtOglYmJO+jFLkbOCgyMyFM8utWpdlGJxDFCnTj2uvrolV199Efff34mpUydw8KDnE7A//
thFpUpFvI9XXnkRgMsuu5offviNefMW0779bWzbtpXbbmvNM888DMDWrZs4efIkt9/
eNtH+b701gR07tqWYy7FjR9m7dw9NmiTuuXbppVeydesmAG666Vaio0/
SqFFlnnzyQT7+eC7R0WcvRmzfvo2uXe+kceOqVKkSSp064cTFxbF7t29/
MfEVXUGWPC8srJlPCqhq1bqmuaxbUmkt6ZactJZ0S36f1Jd0S05qS7olx1dfZ1+dJ7+pUqUMM2c+yxNP3ET
PnlNZvtwzt/
DEiSPMm9eDpUvH0aHDizRqdDsBAbq2Iv4TFjaEPXu6JJpmYXYeYWFDfJrHeecVTnU8MDCQuXMXsXr1CpYuX
cQ777zJkCHP8+GHX1OrVh0WL17n3bZ48bMXJIKDg2na9CqaNr2Kxx/
vxejRgxk2LJInnnieuDjPVL63355PuXKJfyEIDg5OM2ezfy/4dSZWrlwFvvvuF7799iu+
+eZL+vV7hpEjB/D55yspXLgwd9/djjJlyjFy5OtccEE5goKCuPLKC4mJyZur4OhfORER8WrSpAaLF7/
InDm9qFatrDd+6NBOpkzpzPDhl7J1q5bVE/8pVqwzZctOIji4ImAEB1ekbNlJPp1/nF5mRuPGl/Hcc/
1YtOgHypQpy0cfzSYoKIgqVap5HwkL5KRq1LgQgKio49SseSEhISH88cfORPtXqVLNO43jzHzg06fPTscrW
jSUMmXKsnLlskTHXrlymff44Jk20qrVDQwa9DILF/7Ali0bWbVqOYcO/
cXWrZt58sneNGvWkho1anP8+DFiY2Oz7GuV0+gKsoiIJGJmdOjQlBtuaMQbbyxk8ODZHDx4FICdO1czenRz
Lr74Jjp2HE6ZMrX8nK3kR8WKdc6RBXFCq1ev4JtvvuSaa9pQunQ4GzasZffu3xMVpEl16NCcm2++g/
r1G1G8eEm2bt3Eiy/2plq1mtSoUZvAwEC6dXuW/
v2fxTlH06ZXe2/+CwgI4J57ulCqVBiFChViyZKFVKhQiYIFCxIaej6PPvocw4f3pUqV6tSr15C5c2ewYsW3
fPGFpwX9rFlvERsbS4MGl1K4cBE+
+mg2wcHBVKlSnWLFilOyZClmzHiDsmUrsHfvbgYMeI6goLxbRubddyYiIuckODiIbt1uoHPn5owYMY+xY+d
z8qTn49T16z/
m558/5coru3Djjf0IDQ33c7YiOUto6PmsWrWcyZPHcvTo35QtW4Gnn47k1ltTvqn4mmvaMHfu2wwd+gJRUc
cJCytDs2ateOaZvgQGeu4/6dVrEKVLhzN+/
Eh69HiEokVDqVOnPt279wAgKCiIIUPGMGrUQEaOHEDTplfx4YdLeeihxzl+/BgDB/
bgwIF9VKtWkylT3qdu3frx+RZj7Njh9O//LLGxMdSocSFTp86jYkXPsnGTJs3mhRcep1mzi6hcuRr9+4/
igQdSblKV21l+Whi+YcNqbsWKUf5OQ0QkV9q16wD9+s1k5sylieIhIUVo06YXLVs+RYEC5/
knOck1LrlkM5Ur1/Z3GpKHbd++mbVrk/8Z69rV1jjnGiU7mICuIIskY//
+r9m1awbR0QcJCSlFRMRdOebGME9b60V41l0OIDy8dZo3B2ZmH5GkIiJKM3Xqkzz+eDt69XqLJUs2ABAdfZ
yPP+7DN99M4KabBtO06d0EBKS29KCISM6mm/REkti//2u2bRsf35DCER19gG3bxrN/v/
9vTPIUugs425Qkjn37FvDrrxOzdB+R1FxySVUWLBjIRx/1oXbts0sV/
v33bqZPv58hQxqwadMXfsxQROTcqEAWSWLXrhmJGlEAxMVFs2vXjBT28B3PVeD0xzO7j0hazIzrrmvEmjWv
MGFCN8LDi3nHdu9ez5gxrRkzpi27d2/
wX5IiIpmkAlkkiejogxmK+1Zy7axTi2d2H5H0CQoK5MEHW7N58wReeOE/nHfe2cYJmzYtZPDg+kyf/iB//
73Hj1mKiGSMCmSRJEJCSmUo7lsp/
ZVN7a9yZvYRyZgiRQrRr98dbNo0gfvvb+ltJuJcHN99N4W+favz8cd9OXnymJ8zlZwgPy0QIL6VVT9b+h9S
JImIiLsICEjcPjQgIISIiJSX5vGV8PDWGYpndh+RzCpbtgSvv96dH34YTZs2DbzxU6f+4bPPBtG3b3W+/
XYSp0/
n3QYDkrqYmGBiYk74Ow3Jo2JiThATk3ZXwbSoQBZJIiysGVWrdiMkpDRghISUpmrVbjliFYtq1boSHt6Ws3
91AwgPb5vqihSZ2UfkXNWtW4n58/vy+ecDuPjiSt740aP7mDnzYQYNupj16z/
RlcR8aNeuMP78czenTv2j779kGeccp079w59/7mbXrrBzPp7WQRYRkWx1+vRpZs78mn79ZrJ791+JxmrWvI
ZOnUYSEdEghb0lLwoNPUpExH6Cg2P8nYrkITExwezaFcbRo6EpbpPedZBVIIuIiE/
88080Y8Z8zEsvzePYscQfsV966V20bz+EEiUi/
JSdiOQH6S2QNcVCRER84rzzQujV61Y2b55A167XERh49r+glStn0LdvDT74oBcnThzxY5YiIiqQRUTEx8LC
ijFmzMOsXTuGdu2aeOOxsdEsXDicPn2qsmTJWGJjT/
kxSxHJz3xaIJtZCTP7wMyizGynmd2ZyrZPmdleMztiZlPMLCQzxxERkZypVq3yvP9+b776agiNGlX3xqOi/
mL27McZMKAOa9fO041cIuJzvr6CPA44BYQDnYEJZlYn6UZm1gboBVwLVAKqAAMyehwREcn5rrqqDsuWDWf6
9KepWLG0N37gwK+8/nonRo68it9+W+HHDEUkv/
FZgWxmhYFOQKRz7rhzbhnwMXB3MpvfC7zpnNvonDsMDALuy8RxREQkFwgICOD2269mw4ZxDBt2H8WKFfaOb
du2nBEjLmPSpNs4cGCbH7MUkfwiyIfnqgGcds5tTRD7CUhucdk6wEdJtgs3s5JARAaOg5l1AbrEv4wuUKDD
z5nMX3K/UkBO6Bct/qOfgVzsxx/n8uOPc8/1MPoZyN/0/
Zea6dnIlwVyESDprclHgKLp2PbM86IZPA7OuUnAJAAzW52epT0kb9L3X/QzIPoZyN/0/RczW52e7Xw5B/
k4kHTl5lDgWDq2PfP8WAaPIyIiIiKSIb4skLcCQWZWPUGsHrAxmW03xo8l3G6fc+6vDB5HRERERCRDfFYgO
+eigHnAQDMrbGZXAO2Bt5PZfDrwoJldaGbFgT7AW5k4TlKTzv2dSC6m77/oZ0D0M5C/
6fsv6foZ8GmraTMrAUwBWgF/Ab2cc++YWQSwCbjQObcrftungZ5AIeB9oKtzLjq14/
jsjYiIiIhInuXTAllEREREJKdTq2kRERERkQRUIIuIiIiIJJAvCmQzK2FmH5hZlJntNLM7/
Z2T+I6ZdTez1WYWbWZv+Tsf8S0zCzGzN+P/
7h8zs7Vmdp2/8xLfMrMZZvanmR01s61m9l9/5yS+Z2bVzeykmc3wdy7iW2a2NP57fzz+8Utq2+eLAhkYB5w
CwoHOwAQzq+PflMSH9gCD8dzYKflPEPA7nm6b5wORwBwzq+TPpMTnhgKVnHOhwE3AYDNr6OecxPfGAT/
4Ownxm+7OuSLxj1Q76uX5AtnMCgOdgEjn3HHn3DLgY+Bu/2YmvuKcm+ec+xDPiieSzzjnopxz/
Z1zO5xzcc65T4DtgIqjfMQ5t/HMSkiAi39U9WNK4mNmdjvwN/
CVn1ORXCDPF8hADeC0c25rgthPgK4gi+RDZhaO598FNRfKZ8xsvJn9A2wB/
gQ+83NK4iNmFgoMBJ7xdy7iV0PN7KCZLTez5qltmB8K5CLAkSSxI0BRP+QiIn5kZsHATGCac26Lv/
MR33LOdcPzb/9VeBpORae+h+Qhg4A3nXO/
+zsR8ZueQBWgHJ5mIfPNLMVPkfJDgXwcCE0SCwWO+SEXEfETMwvA03HzFNDdz+mInzjnTsdPtSsPPOLvfCT
7mVl9oCXwsp9TET9yzq10zh1zzkU756YBy4HrU9o+yHep+c1WIMjMqjvn/
hcfq4c+XhXJN8zMgDfx3Kh7vXMuxs8pif8FoTnI+UVzoBKwy/
NPAUWAQDO70DnXwI95iX85wFIazPNXkJ1zUXg+ShtoZoXN7AqgPZ4rSZIPmFmQmRUEAvH8o1jQzPLDL4dy1
gSgNtDOOXfC38mIb5lZmJndbmZFzCzQzNoAdwCL/Z2b+MQkPL8M1Y9/TAQ+Bdr4LyXxJTMrZmZtzvz/
b2adgauBhSntk+cL5HjdgELAfuBd4BHnnK4g5x99gBNAL+Cu+Od9/
JqR+IyZVQQexvMf494Ea2B29m9m4kMOz3SKP4DDwEjgSefcR37NSnzCOfePc27vmQeeqZcnnXMH/
J2b+EwwnuVeDwAHgceADs65FNdCNuecj3ITEREREcn58ssVZBERERGRdFGBLCIiIiKSgApkEREREZEEVCCL
iIiIiCSgAllEREREJAEVyCIiIiIiCahAFhHJ5cxsh5k9m8r4fWZ23Jc5pcbM3jKzT/
ydh4hISlQgi4hkgfiiz8U/YszsNzMbaWaF07l/
pfh9G2V3rr6SF9+TiOQParcrIpJ1vgTuxtO16SpgMlAYTxc3ERHJJXQFWUQk60THt7P93Tn3DjAT6ABgHj3
MbJuZnTCzDWZ2V4J9t8f/
+UP8Vdel8fs1NrNFZnbQzI6a2TIzu+xcEzWzdma2xsxOmtl2MxtiZgUSjO8wsz5m9nr8ef8ws+eSHKOGmX0
df4xfzOz6+Dbe96X2nhLs/
4SZ7Tazw2Y21czOO9f3JSKSFVQgi4hknxN4riYDDAYeBB4FLgSGAq+b2Q3x403i/
2wLXAB0jH9dFHgbzxXpJsA64DMzK5XZpMysDZ7i/
TWgDvAAcAvwYpJNnwI2AA2A4cCIM8W5mQUAHwCxQFPgPqAfEJJg/5TeE/
Hv5yKgJfAf4Gbgicy+JxGRrKQpFiIi2cDMmgB3Al/Fz0N+GmjtnPs2fpPt8ds8CnwKHIiP/
+Wc23vmOM65xUmO+xjQCU/ROSOT6b0AvOScmxr/epuZ9QRmmNlzzjkXH1/knHst/
vlYM3scuBb4HmgF1Ix/T7vjc3sKWJ7gPMm+p3hHgUecc7HAZjObG3/
soZl8TyIiWUYFsohI1mkbv1pEEJ4rxx8Bj+G5YlwQWGBmLsH2wcCO1A5oZmHAIOAaIBwIBAoBEeeQZ0OgSX
xRfEZA/HHLAH/Gx9Yn2W8PEBb/
vBaw50xxHO8HIC6dOWyKL44THvvSdO4rIpKtVCCLiGSdb4AuQAye4jEGwMwqx4+3A3Yl2ScmjWNOw1MYP4W
nmI4GvgIKpLJPWgKAAcDcZMYOJHieNDfH2al5Fv86s1I7toiIX6lAFhHJOv84535NJr4JT2FbMemUiQROxf
8ZmCR+JfC4c+5TADMLxzOf91z8CNRKIdf02gyUM7Oyzrk98bFGJC5yU3pPIiI5mgpkEZFs5pw7ZmYjgZFmZ
niuNBfBc3NbnHNuErAfz019bcxsB3DSOXcE2ArcZWYr8SwZN4KzhWdmDQQ+MbOdwBw8N9pdBDRxzvVI5zG+
AH4BpsU3KSkEjI4/1pkryym9JxGRHE0fZ4mI+EYk0B94FtiIp8DsRPxSaPHzcR8H/
otnPu5H8fs9gKeYXgPMAqaQxrzltDjnFgI34JnXvCr+0Yt/T/
9I7RhxeFaeCInffxowBE9xfDKN9yQikqPZ2ZuVRUREMs/
M6uFZhq6Rc26Nn9MREck0FcgiIpIpZnYzEAX8D6iEZ4qFAZc4/
eciIrmY5iCLiEhmFcXTQKQCcBhYCjyl4lhEcjtdQRYRERERSUA36YmIiIiIJKACWUREREQkARXIIiIiIiIJ
qEAWEREREUlABbKIiIiISAL/Bwr4OxNVXlSkAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 720x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"a = -per_clf.coef_[0][0] / per_clf.coef_[0][1]\n",
"b = -per_clf.intercept_ / per_clf.coef_[0][1]\n",
"\n",
"axes = [0, 5, 0, 2]\n",
"\n",
"x0, x1 = np.meshgrid(\n",
" np.linspace(axes[0], axes[1], 500).reshape(-1, 1),\n",
" np.linspace(axes[2], axes[3], 200).reshape(-1, 1),\n",
" )\n",
"X_new = np.c_[x0.ravel(), x1.ravel()]\n",
"y_predict = per_clf.predict(X_new)\n",
"zz = y_predict.reshape(x0.shape)\n",
"\n",
"plt.figure(figsize=(10, 4))\n",
"plt.plot(X[y==0, 0], X[y==0, 1], \"bs\", label=\"Not Iris-Setosa\")\n",
"plt.plot(X[y==1, 0], X[y==1, 1], \"yo\", label=\"Iris-Setosa\")\n",
"\n",
"plt.plot([axes[0], axes[1]], [a * axes[0] + b, a * axes[1] + b], \"k-\",
linewidth=3)\n",
"from matplotlib.colors import ListedColormap\n",
"custom_cmap = ListedColormap(['#9898ff', '#fafab0'])\n",
"\n",
"plt.contourf(x0, x1, zz, cmap=custom_cmap)\n",
"plt.xlabel(\"Petal length\", fontsize=14)\n",
"plt.ylabel(\"Petal width\", fontsize=14)\n",
"plt.legend(loc=\"lower right\", fontsize=14)\n",
"plt.axis(axes)\n",
"\n",
"save_fig(\"perceptron_iris_plot\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Activation functions"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def sigmoid(z):\n",
" return 1 / (1 + np.exp(-z))\n",
"\n",
"def relu(z):\n",
" return np.maximum(0, z)\n",
"\n",
"def derivative(f, z, eps=0.000001):\n",
" return (f(z + eps) - f(z - eps))/(2 * eps)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure activation_functions_plot\n"
]
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAxAAAAEYCAYAAADMNRC5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
ACBp0lEQVR4nO3dd3gUVdvA4d9J77RA6L0XaaGIlCAioCgKooKo2FCxvBZUVCzYG/
q91lcURQG7gNhQECJVepPeOwmEll52z/
fH2SSbZBNStiV57uuaa2dnzsw8O9nszJnTlNYaIYQQQgghhCgOH08HIIQQQgghhCg/
JAMhhBBCCCGEKDbJQAghhBBCCCGKTTIQQgghhBBCiGKTDIQQQgghhBCi2CQDIYQQQgghhCg2yUAIr6aUaqy
U0kqpaDccK1Yp9b4bjlNbKfWnUipZKeXxfpSVUgeUUhM8HYcQQpQXSqmxSqkkNx1LK6Wuc8exhCguyUAIp1
JKdVZKWZRSy0uxraMb+MNAHWCjM+KzHaewH/7hwJPOOk4RJgB1gU6Yz+YWSqnnlVL/
OljVDfjQXXEIIYSrKaWm2268tVIqUykVr5RarJS6Tynl74RDfAs0dcJ+cthi/
sXBqjrAz848lhBlJRkI4Wx3YW5G2yul2pR1Z1pri9b6hNY6q+yhXfBYp7XWia4+DtAcWKe13q21PuGG4xVJ
a31Sa53i6TiEEMLJFmJuvhsDl2NuwicDS5VSoaXdqVLKX2udqrWOd0qUF2C7Bqa741hCFJdkIITTKKWCgdH
AJ8APwB0O0vRUSi2yVd85p5T6SylVVyk1HegH3Gf31KixfRUmpZSPUuqIUuqBfPtsaUvT2fb+EaXUZtsxji
qlPlVKVbWtiwE+B0LtjvO8bV2eEhClVDWl1BdKqTNKqVSl1EKlVDu79WOVUklKqQFKqX9tx1uslGpSxDk6A
AwDbrEde7pteYEi6vxVi2xpximlvrcda59Saky+beoqpWYppRKUUilKqY1Kqf5KqbHAc0A7u889tpDjNFRK
zVFKJdqm2Uqp+nbrn7d93huVUnttaeYqpSLt0nSw/
W3P29ZvUkr1L+y8CCGEC6Tbbr6Paq03aq3fBmKALsDjAEqpAKXU67ZrS7JSao1SalD2DpRSMbbfyyuUUquV
UhnAIPuSbLtrUAf7g9t+r08ppfyVUr5KqWlKqf2268lupdTjSikfW9rngVuBK+1+o2Ns63KuD0qplUqpKfm
OE2Hb57XF/
Ez+Sql3lVLHlFLpSqnDSqnXnHniRcUnGQjhTNcBB7XWm4EZmJvknKJipVRHYDGwB7gE6Al8B/gB/
wFWYm7u69imw/Y711pbga+Bm/Id9yZgm9Z6g+29FXgIaIfJ0HQH3rOtW2Fbl2J3nLcK+TzTgR6YG/
7utm3mK5NRyhaIqfZ0O3AxUBX4XyH7A1NdaKHtc9exfe6SeBb4CeiIKUL/TCnVCECZJ2p/
Y562XQt0AF6wbfctMAXYSe7n/jb/
zpVSCpgLRAGXAv0x1a3m2tZlawzcYDvO5UBn4GW79V8BxzHnrTPwPJBWws8qhBBOpbX+F5gPjLAt+hzz8Go
05jfzC+Bn2/
XK3uvAJKA1sCrfPncBa3F8bfpWa52Jud86ClwPtAGeBp4CbrOlfQtzXcguNamDuV7lNxO4MTvjYTMCSAV+L
eZnehDz230j0ALzW77TwbGEKJzWWiaZnDJhbl4n2OYVcAAYYbd+FvBPEdvHAu/
nW9YY0EC07f1FtvfN7dLsBp4sYr+DgXTAx/Z+LJBU1PExP6oa6Gu3vgpwDrjTbj8aaGWX5iYgI/
tYhcTzCzA93zINXJdv2YHs82mX5lW7936YTM0Y2/u7gEQgspDjPg/
862B5znGAgYAFaGy3vikmU3aZ3X7SgCp2aZ4G9ti9Pw/
c6unvpEwyyVQ5J8wDoF8KWfea7bezme23rWG+9XOBD23zMbbf3hH50uS5jmAeBh0ElO19A9u+Ly4ixteAhR
eK2f76ANSwXWMG2K1fCHxsmy/
OZ3oX+Cs7VplkKs0kJRDCKZRSzTGlCl8BaK01JsNwp12yzpgfrVLTpnRjC+bJCkqpHpgfzK/
sYrlUKbXAVnybCMwGAoDaJThUG8yP8Eq7Y5+zHbutXbp0rbX9k5tjgD+mJMIVNtvFkwWcBGrZFnUGNmutT5
Vh/22AY1rrA3bH2Yf5XPaf+6DtfGQ7ZhcHwNvAp8pUV3taKdW6DDEJIYQzKcxNeRfb/
DZbddQkW7WkKzHXFXtrL7DPrzGltX1s70cD+7TWOdcQpdQ9Sqm1SqmTtuM8DDQsSeBa6wTgD2ylHUqpOpiS
4pm2JMX5TNMxnXjsUkp9oJS6Ml+JhhAXJF8Y4Sx3Ar7AIaVUllIqC5gIXK6UamBLowrdumRmkVtUfBOwVGt
9EMBWnedXYDswEuiKqV4EJhNRXEXFat/1av7G3dnrSvq/pR0c01FPIZkOtss+ljPOb/
aF1RH75UXFgdb6eUyGYy7QC9islLodIYTwvLbAPsxvlsZULe1kN7Uh97qRLbmoHWrToHohea9Ns7LXK6VuA
P4Pc/
M+yHacDynZdSnbTGCEUioIGIWp7rvMtu6Cn0lrvR5Tuv+ULf0XwALJRIiSkC+LKDOllB+m8deT5P3B6oh5Y
p5dx3M9pl59YTIwmZALmQU0V0r1xNTdnGm3Lhrzg/yw1nqlNnVT65biONsw/
x8XZy9QSkVg6pNuK0aMJXUSuy5dlVJRlLyL1/
XARfaNmfMp7ueup5RqbBdLU8w5LNHn1qaXqXe11lcC08hbGiWEEG6nlGqPqdb6A7AB89CkttZ6T77paCl2P
xMYqZTqirlW2F+begOrtNbva63Xa633ULCUo7jXwJ9sr0OxZVRspf4U9zNprRO11t9rre/
FlE5ciukhUIhikQyEcIYrgUjgE631v/
YT8A1wu+3JxptAZ6XUVKVUR6VUK6XUnUqp7CLcA0B3ZXpeiizsaYjW+giwBNNYuQrwvd3q3Zjv9UNKqSZKq
VGYRtP2DgBBSqmBtuOEODjGbsyP9MdKqT623jVmYur2f5U/
vRMswvRAFa1Mb1LTKXmj46+AeEyD5z62z3+1Xe9HB4BGSqkuts8d6GAfC4FNwCylVFdlBvCbhcmcLCpOEEq
pYFuxeIztb9kDc/
F0RcZLCCEKE6jMwJ11bdecRzBt3dYBb9keMM0CpiulrlNKNbX9Bk9QSg0vxfHmYEqOpwGrbdeRbLuALkqpI
UqpFkqpZzANne0dwHSB3sr2G+1wvAqtdRqmau4kTJWlmXbrLviZlOmpcJRSqo2t+vFozLXtSCk+s6ikJAMh
nOEOYLGtbmZ+3wONMA1wNwKXYXqx+AfTk8WN5FaHeQvzBGYb5ol8UXVDZ2BKOH7VWp/NXmhrI/
Ef4BHbfu7EDNyGXZoVmMzH17bjPF7IMW4DVgPzbK8hwGCtdWoRcZXWo5gi9VjMk7FPMZmBYtNaJ2MuSEcx/
Z1vxfR5nv1k6kfgN0w7lJOYou/
8+9DANbb1sZhes04A19g94boQC1ANUyy+E3NRXYn5mwghhLtchukN7hDmd+9qzG9iX9vvJZjf+c+BN4AdmE
4u+mIaRJeINuPpzMFcm2bmW/0xppelr4A1mCpEU/Kl+QRT/
XYt5jf4kiIOl30NXK+13p5v3YU+UyLwGOa6th5TY2CIlvGARAmo4t8TCCGEEEIIISo7KYEQQgghhBBCFJtk
IIQQQriMUup+W9eV6co28noh6W5VSq1TZvTyI0qpN2wdNAghhPAykoEQQgjhSseAl4DPLpAuBNPhQSRmBPg
B5Gu/
JIQQwjvI0x0hhBAuo7WeDWDr0at+Eek+snt7VCk1CzNAlhBCCC9TrjIQkZGRunHjxp4OA4Dk5GRCQ0M9HYb
XkPNRkLefk5SdKegsTXDTYHyC3VMY6e3nxBO85ZysW7fulNa6pqfjsNMX05OYQ0qpccA4gODg4K4NGjQoLK
nbWK1WfHykYN+enJOC5JzkJeejIG86J7t27XJ4bShXGYjGjRuzdu2FRpN3j9jYWGJiYjwdhteQ81GQN5+Tr
MQsVjVfRda5LC5ZcQl+VdzzU+DN58RTvOWcKKVK3G2lqyilbsMMClno4INa66nAVIDo6GjtDdcGb/
lbehM5JwXJOclLzkdB3nROCrs2lKsMhBDCOfzC/
bj4yMUkb052W+ZBiOJQSl0DvIYZO+aUh8MRQgjhgNw5CFFJ+fj7EN413NNhCJFDKTUYM5jWlVrrLZ6ORwgh
hGPeUcFKCOE2GSczyDqX5ekwRCWhlPJTSgUBvoCvUirIUfesSqlLgVnACK31anfHKYQQovgkAyFEJXP4jcM
sj1rOsU+PeToUUTlMAlKBicAY2/
wkpVRDpVSSUqqhLd0zQBXgN9vyJKXU754JWQghRFGkCpMQlYi2aOK+ikOna0Lbeb7nH1Hxaa2fB54vZHWYX
TrpslUIIcoJKYEQohI5G3uWjGMZBDUNIqJnhKfDEUIIIUQ5JBkIISqRuJlxAESNiUIp5eFohBBCCFEeSQZC
iErCkmLh5I8nAZOBEEIIIYQoDclACFFJnJp3CkuihfAe4YS0CPF0OEIIIYQopyQDIUQlYV99SQghhBCitCQ
DIUQlkHEyg9PzT4Mv1LqhlqfDEUIIIUQ5JhkIISqB+G/
jwQLVB1cnoGaAp8MRQgghRDkmGQghKgGpviSEEEIIZ5EMhBAVXMruFBJXJeIb5kvk1ZGeDkcIIYQQ5ZxTMx
BKqfuVUmuVUulKqekXSPuwUuqEUuqcUuozpVSgM2MRQhhn/
joDQOSISHxDfD0cjRBCCCHKOz8n7+8Y8BIwCAguLJFSahAwEbjUts0cYLJtmRDCierdU49qA6p5OgwhhBBC
VBBOzUBorWcDKKWigfpFJL0VmKa13mpL/
yIwC8lACOESMu5DXlYrpKdDWpp5zcoqOFksjpfnX2exgNa5k9Va9Pv8y3burMu2bRfehz2tHc+XZZ0QQghR
XM4ugSiudsBPdu83AVFKqRpa6wQPxSSEUzX45hu47DKPxpChqxKgzno0Bnv9tAalSryd1nCOKsRTi5PU5BQ
1OK8jSCSc80TYJtu8bXkyoaQRSBpBOVMqwaQRRAbeVGOypacDEEIIIUrEUxmIMOCc3fvs+XAgTwZCKTUOGA
cQFRVFbGysO+K7oKSkJK+JxRvI+SioQVwce++4gyPXX+
+R4+ss4HofqAFMsaIiPBJGHklJSYSFheVZlpWliIsPIi4uKOc1Pj6I+JOBnDkbwLmz/
pw9F0BWlnP7fPD3txAYaMXfT+PrZ8XXV5vJR+fO55t8fAq+9/
EBpTQK0MpCls4kiywsOpMsnYWFDLLIIktn0iy0CT4+gNJsS9zG+axzZOlMrCoLi84y25FJg+B6RFfrAkpzL
vMsC08uBJWvGEKZIoQBNQdQM7AGAGvPrmdP0u6cdYaZj/
CvwpVRQ3Lyb18f+RaNJTfZMqeeXiGEEBWYpzIQSYD97Uz2fGL+hFrrqcBUgOjoaB0TE+Py4IojNjYWb4nFG
8j5KOjwBx/QoFUrmg0Y4JHjJ/
2bxEbfjQSEBNDtmm6oUjz5dyaLBaZPX0NgYje2b4cdO2D7dtizBzIzL7x9eDjUrAm1akGNGlC1KkREmOURE
QWnkBAIDoagoIJTQAD4+PgCxWtU/veBv4lLjuNk8knik+M5mXKSkylmfnz0eG5ofwMAX2z8grE/
jS10PxueTCI0IBSAvp+PYumhpQ7T9Wx3A99cNwyAA2etDP3qM0IDQgn1DyXIL4hAv0ACfQMJ8gviqT7DaFm
jEQC/797GuuMZBPoGEuhn1mfP1wiuwcBmjXOO8cCRfvgqX/x9/
fH38ad91NPFOhdCCCGEpzIQW4GOwHe29x2BOKm+JCoSZbViHjd7Rlj7MHqd6EXaoTSPZB6OHoWVK2H1ali1
Ctatg+Tkbg7TNmgAjRtDw4bQqJF5bdAAoqJMhqFmTXPj70wnk0+y5/Qejpw/wpHzRziaeDRnPtg/
mAU3L8hJe82313A27azD/
QxokptBjAyJpE5YHaoEVaFqUFWqBlWlSmDuvCa3ZODNgW+SnJnMji076NuzL6H+oTmZhGD/3D4oGldtzL/
j/
y3WZxrSYghDWgwpVtqe9XsWK50QQgiRn1MzEEopP9s+fQFfpVQQkKW1zsqX9EtgulJqFnAcmARMd2YsQnic
1h7NQAD4BPgQ0tw9DahTU2HRIvjzT1iwwJQu5FenTiq9egXTti20aQOtW0OrVqa0wOnxZKay78w+9p7Za15
P7+W2zrfRpU4XAN5f/T4vLHnB4bah/
qForXMyXkOaDyHdkk7NkJrUDKlJrdBa1Aw1r61qtMrZ7sqWV3Ls0WPFiq9H/
R4A+Bz0oX2t9mX5qEIIIYRbObsEYhLwnN37McBkpdRnwDagrdb6kNZ6vlLqDWAxprvXH/
NtJ0S5p6xW8PXMuAupe1Pxr+WPX7hrCxmTkuC33+DHH+HXXyE5OXddWBj06gU9epipe3fYunWV06u6pWelE
+hnGkWnZKYw/
NvhbDu5jcPnDxdI265Wu5wMRIeoDnSr2436EfWpH1GfeuH1zGuEebX31YivnBqzEEIIUZ45uxvX54HnC1md
p+Wk1vpt4G1nHl8Ib+LJKkw7797J+RXn6fBLB6pd6twxILSGNWvgk0/g66/zZhq6doUhQ+Dyy6FnT/
D3d+ZxNYfPH2bdsXWsP76edcfXsSV+C1UCq+RU8Qn2C2bNsTWcTj2Nn48fjas2pmm1pjSr1oxm1ZrRu2Hvn
P1d1/
Y6rmt7nfMCFEIIISoJT7WBEKLi81AGIv1oOmcXnUUFKMK6hF14g2LKzIRZs+Cdd2Dz5tzlPXvCyJEwfLhpx
+As9lWIpq2fxsS/JnIq5VSBdOcCzpFlzcLPxw+lFHNumEOdsDo0qdYEPx/
5iRNCCCGcTa6uQriI0tojVZjivo4DDZFXReJftexFACkpMG0avPUWHDpklkVGwq23wp13mnYMZaW1Zvfp3S
w/
tJxlh5ax7PAyJlw8gbu63gVAlaAqnEo5RY3gGnSp04WudbrSpU4XOtXuRNNqTfH1yT3PfRv1LXtAQgghhCi
UZCCEcBUPlUDEzYgDIGpMVJn2Y7XCl1/CU0/B8eNmWevWMHEi3HgjBDphLLYvN33Jr7t/
JfZALPHJ8XnWrTyyMicDMajZIA785wANqzT0eHe0QgghRGUnGQghXMQTbSCSNieRvDkZv+p+VB9SvdT7Wbo
UHn7YdL0K0KULTJoEw4aV/
iMlZSSxMmElfax9ckoMpm+czuIDiwGICo2id8PeXNLgEno37E2n2p1ytg0PDCc8MLzUn0cIIYQQziMZCCFc
xQNVmOJmmdKHWtfXwieg5Hf658/Do4/Cp5+a9/
Xqwauvwk03lS7jcPT8UebtnMfcnXNZvH8xmdZMLu1xaU4Xpvd3v5/
r2l7HwKYDaV69uZQuVEBKqfuBsUAH4Gut9dgi0j4MPEFu73z3aq3T3RCmEEKIEpAMhBAu4u4SCG3VORmI0l
RfWrwYbrsNDh40IzU/+SQ89hiEhpZsP8kZyby76l3m7pzL6qOrc5b7KB/
ahLchNSs1Z9nwNsNLHKcod44BLwGDMBkDh5RSg4CJwKW2beYAk23LhBBCeBHJQAjhIu7OQJz9+ywZRzMIah
JERK+IYm+XmWnaNbxt61S5a1f44gto1674xz6TeoZqwaa72EC/
QP5v1f8RnxxPsF8wg5oP4ppW13Blyyv5d/W/
xDSOKcGnEuWd1no2gFIqGqhfRNJbgWla66229C8Cs5AMhKgA1q6F996DtD0pDNkcwpxee7hiXnMCAyHtcBq
bh2y+8E7sVB9cneZvNQdytw+sH0jH+R1z0qy/
eD1ZifnH8S1cYdt3WdEFvwhzu7jjjh2cX3W+RLE62r7Vp62o0rOKSfAdrL5/dRF7KMh+
+8NTDnP88+M0eKQBdW6vA0DC7wnsfWxvifbpaHtH57kkSv13SobVoY7Pibv/
ToWRDIQQruLmgeTiZuaWPhS3KtCpU3D99ab0wc8PnnnGlDwUZ/yGc2nn+Hbrt8zaMotVR1Zx/
NHjVAuuhp+PH28NfIuIwAgGNhtIiL97RsIW5V474Ce795uAKKVUDa11Qv7ESqlxwDiAqKgoYmNj3RJkUZKS
krwiDm9S2c9JRoYPr7/
eikWLTKnwCBJoTArpf6bRsGF9XnzxX1qGJsHWku03pWYKR2KPmDdHga2QciYl77neAiQ72LiwfRay/
bIly3JH8tpAiWN1tP2G5RsgzSzKiMso8T7tt2eN2efOVTvZ2XSnWbay5HE62t7ReS6JsvydUkhxvE93/50K
IRkIIVxEae22EghLqoWTP5wEIOqm4lVf2rgRrrnGVFmKijKjSV9ySdHbaK1Zemgp0zZM4/
ut3+dURwryC2Ld8XVc1vQyAG7ueHNpP4qovMKAc3bvs+fDgQIZCK31VGAqQHR0tHb2COelERsb6/
SR1su7ynxOkpLMb+yiRaYq6PjxMKBPXWJ/
OcfSRU2I3xPEY49F88scK523OL5ZLIxfhB9BDYMAsKZbSemYgk+ADyEtcx/
YJK9ORlt1sfdZ2PahbUJRvuahVOqPqViSLSWK1dH2QY2D8Aszt6Cxp2OJnhxdon3ab5/
eOp3MSZkERAUQUDMAgKzOWaRdn1bULgpwtL2j81wSpf07rV2zluhujs+Ju/
9OTCjks5Vo70KI4nNjFaaEXxKwnLcQ3i2ckFYXfuL/+
+8wYgSkpkL37jB7tmkwXZTkjGS6TO3CroRdOctiGscwtuNYrm1zLRGBxa82JYQDSYD9lyh7PtEDsQhRJlrD
zTfDX3+ZBzQLFkCHDgC+BIaf4qn32jNmDHz/PVwxzIeNG8No1qx0x/
IJ9CGsfcFBQ0PblrABWzG2D25SaDOmYnG4fXUcxl9cgbUDCaydt19xvyp+hFUp/T4dbV/YeS6uEv2dThX/
nLjt75SPZCCEcBHlxipM5/8xdR2L03j6xx9h1CjT9uGWW+DjjyEoyHHabSe30bZmWwBCA0KpG16X5IxkxnY
ay22dbqNZ9VJe8YQoaCvQEfjO9r4jEOeo+pIQ3m7qVJg7F6pUgSVLoGXLvOsDAuDrr8FiMQ9wRo+GZcuKV3
1UCG/g/
lGuhKgs3FiFqfmU5nTb3o2om4vOQHz5pWnzkJkJjzwC06cXzDxkWbP45t9vuOSzS2j3Ybs8PSl9NfwrDj50
kJcufUkyD6JYlFJ+SqkgwBfwVUoFKaUcPbz6ErhDKdVWKVUNmARMd2OoQjjFrl1mHB2A//
0vb+bhxMwTMAFOfHECX1/TZXaDBrB6Nbz4omfiFaI0JAMhhIu4uxem0Nah+Fcr/PHVJ5/
ArbeamlXPPQdvvQX2ba1TMlN4b9V7NH+3OaN+HMWKwyuoEliFPaf35KSpE14nZxA4IYppEpCK6U1pjG1+kl
KqoVIqSSnVEEBrPR94A1gMHLRNz3kmZCFK77HHTPXQm2+GG2/
Muy5tbxqsg9S9pv1YtWowc6ZZ98Ybpk2aEOWBVGESwkXcVYUpdV8qwU2Lrq84ezbcfbeZf/
NNmJCvUdSUFVN4bflrnEo5BUCrGq14qOdDjLloDGEBpa/zKYTW+nng+UJW5/
lyaa3fBt52cUhCuMySJTBvnmk0/
cYbBddri2ksm91YFaBvX1Ot9OuvYdIkmDHDXdEKUXpSAiGEq7ihClPq3lRWNVvFhj4b0NpxbxtLl5r6tVrD
Sy8VzDwAHDl/hFMpp+herzuzr5/Ntvu2cU/0PZJ5EEKIYtI69/
f18cehdm0HabJ728n3bOmVV0y7iJkzYf1618YphDNIBkIIF1EWi8szEMnbkvGt4ktQkyCHYz9s3QpXXw3p6
aYLwaeegoSUBJ766ym+3/p9TroJvSaw6JZF/
HPHP1zb5lp8lPw0CCFESfz5J6xZY3pdevTRQhLZetZUPnl/rxs3hvvvN/
OvvOKyEIVwGqnCJISruKEEIvKqSHqd6IX
lXMH+nk+cgMGD4exZGD4cJr9+hmcXv81/V/2XxIxEWlRvwYi2I/
BRPtSLqEe9iAv04yqEEKJQb71lXh9+2FRhcsRRFaZsEyaY0apnz4Y9e6B5c1dFKkTZyWNGIVzEXW0gfIN8C
YgKyLMsKwtuuAGOHIGLe1mJvv//aPlBM15a+hKJGYkMajaIGdfOkJIGIYRwgg0bYOFCCAvLbW/
mSGFVmADq1IExY8yzp3fecU2cQjiL3D0I4SouLoE4v/
Y8WUlZDtc99ZRpzFczKpNDg7vx1JKHOZN2hv6N+7P89uXMHzOfHvV7uCw2IYSoTN62Nf2/806oWrWIhIVUY
cqWXfXp88/h1CmnhSeE00kGQggXcWU3rtZMK1uu2MKKqBWkHUzLs27uXNPTkq8vfPWNFd/wU7Sv1Z7fRv/
GX7f8Ra8GvVwSkxBCVEYJCfDdd6Zb7P/
8p+i0RVVhAmjXzlQ9TU2V3piEd5MMhBAu4soqTGcWnCHzZCZBjYIIbBiYszx2/
RGuvykFgNdfh8tiAll0yyI23r2RIS2GOGxoLYQQovRmzICMDBg0yDSGLkpRVZiyjRtnXj/
5xBRkC+GNJAMhhKu4sApT3Mw4AKLGRKGUIiUzhWcWTubSq0+QmRJCi0s288gjJm2z6s1k8DchhHABrc2NPs
BddxVjgwtUYQIYOtT05LR9O6xcWfYYhXAFyUAI4SKu6sY1KzGLU3NN5dhao2rxw7YfaPNBG156LQ19NJqQy
FP89HUkUtgghBCu9c8/sG0b1KoFV1114fQXqsIE4O8PY8ea+U8/
dUKQQriAZCCEcBWtXVKF6dScU1hTrfj39Gfo0qGM/H4kh3aFo/6eDMCcWZG0aVDX6ccVQgiR1/
Tp5nXsWHPjfyHFqcIEcMcd5vXbbyE5ubTRCeE6koEQwkVc1Yg6u/pSypUpLNq/
iGoBNWkUuwidFcBdd8Hllzv9kEIIIfLJyIDvbeNx3nJL8bZp8d8WMNdUPy0yXQu4+GJISYGffy5bnEK4gmQ
ghHARV2Qgdm7dyZm/
zqACFDH3xTDt6mmMzzjAwe21aNgwdyAjIYQQrvXHH3DmDHToYHpPKg7fUF+oYsbvuZBRo8zrV1+VIUghXEQ
yEEK4ihOrMJ1KOcXYuWN57pHnwAo1htbAv5o/vUNv581XQgBTVzYiwimHE0IIcQHZN/ajR7tm/
9dfb55BzZ8Pp0+75hhClJZkIIRwEWeUQGitmbFpBq3fb80Xm77gss2XAab4W2t46CFTjH7bbTBwoBOCFkII
cUFJSTBvnpm/
8cbib3fw5YMwAc7Enrlg2qgouOwyyMyEH38sZaBCuIhkIIRwlTJmII6cP8KQWUO4Ze4tJKQmcL3f9TQ/
0Ry/qn7UuKIGv/4Kv/
9uSh1ee82JcQshhCjSb7+Z9gm9el147Ad7SZuSYB1kxmUWK312NaZvvy15jEK4kp+nAxCiolJlqMK0eP9ih
n83nLNpZ6keXJ23L3+b3t/05jCHqXl9TTLx4aGHTNrJk00XgkIIIdxj7lzzOnx4ybZrNKkRJ7udpEq/
KsVKf/
XV5jLy99+mvUW1aiU7nhCuIiUQQrhKGUogWke2xkf5MLTlULaO38qtnW4lZbsZYTpqTBRvvw1790LbtnDff
c4MWgghRFEyMuDXX838sGEl2zbsojDoBoG1A4uVvnp16NsXsrJMqYcQ3kIyEEK4SEnbQCzav4gsaxYAdcLr
sPautcy7cR61w2oD0OGnDnTb2o3ERlV46SWzzX//W7y+x4UQQjjH33/
D+fPQvj00b+76411zjXn96SfXH0uI4pIMhBAuoqzWYlVhOpd2jrFzxzLgywG8ufzNnOVNqjVB5RtOOrRtKM
88q0hJMUXnl13m9LCFEEIUIbv6UvaNfUkc//w4fAIpO1OKvU12Kcfvv0NaWsmPKYQrSAZCCFfR+oIlEH/
t+4sOH3Xgi01fEOQXRJWggvViLWkWkneYoUi3b4cZM8DPD958s0BSIYQQLmS15pYElCYDEf9tPHwFqftSi7
1No0bQqZPp+WnRopIfUwhXkAyEEC5SVBWm5Ixk7v/
tfi6bcRmHzx+me73ubLx7I+O7jS+QNuGXBNa0WcP2sdt59llzAbvzTmja1NWfQAghhL116+DoUahfH7p0Kc
UOrOZF+aqi0+WTnVnJLv0QwtMkAyGEqxRShenI+SN0+rgTH6z5AH8ff17q/
xLLb19Oq8hWDneTGZeJb4QvZ2uE8cMPEBQEkya5OnghhBD5Zd/
ADxsGqmR5AAC0RZuZEt59ZWcg5s0zlxYhPE26cRXCRVQhVZjqhtelbnhdgvyCmHHtDDrV7lTkfurdV4/
at9dmuK0e7H33Qb16LghYCCFEkcpSfQlyMxAlLYG46CIz3sSBA7BqFVx8cemOL4SzSAmEEK5iV4Vp04lNHD
53GAAf5cN3133H2rvWXjDzkG3lOl/
mLfAlLAwmTnRVwEK4hlKqulJqjlIqWSl1UCk1upB0Sin1klLqqFLqnFIqVinVzt3xCuHI7t2wdStUqQL9+p
VyJ6WswqRUbmNqqcYkvIFTMxAluEiMVUpZlFJJdlOMM2MRwtOU1UoWVl5e8jLdPunG7fNux6rN1SMqLIpAv
wv3A376j9NkJVt4+mnz/
pFHIDLSlVEL4RIfABlAFHAT8FEhGYORwO1AH6A6sBKY4a4ghShKdunDlVeWvvvs0pZAQG6px5w5po8OITzJ
2VWY7C8SnYBflVKbtNZbHaRdqbXu7eTjC+E1dlXN4vbvB7Pq+FoAWlZvSaYls1gZBzC9dGwevBmq+7P89MV
Uq+bDI4+4MmIhnE8pFQqMANprrZOAZUqpecDNQP7ytCbAMq31Ptu2M4GH3RmvEIX5+WfzWtLB4+yVtg0EQO
/eZmC53bth1y5o5bjZnBBu4bQMRAkvEkJUWFZt5f3V7zPxtgxSj6+lXng9Ph/
2OQObDSzRfuK+igNgW1A1LPjwwAOm6FyIcqYlYNFa77JbtglwVAnkG+AGpVRLYD9wKzDf0U6VUuOAcQBRUV
HExsY6M+ZSSUpK8oo4vElFOSfJyb4sX34JPj6KkJDlxMZmlW5H58zLho0bIL3km3fq1IZFi6J47709XHfdk
dLF4GUqynfEmcrDOXFmCURJLhIAnZVSp4DTmCLqV7XWBf4jvfEiAeXjj+tOcj4Mq7YycctE1pxZA/
5weeQAHmj1EP6H/
Yk9HFv8HWlgqpn94lgUQUEWunT5h9jYTBdE7T7yPSmoEpyTMHJum3KcA8IdpD0OLAV2AhbgMHCpo51qradi
+y+Jjo7WMTExTgq39GJjY/
GGOLxJRTknc+eCxQK9esHQoaWvPLE2ZC1JJNG1e1fCuzr6Fyja4cNmLIg9e5oTE+OGYbDdoKJ8R5ypPJwTZ
2YgSnKRWAK0Bw4C7YBvgSzg1fwJvfEiAeXjj+tOcj5yXaGu4MCaA3w0PYERG38vVWXZ82vPs/7welIC/
VmbXo0H7vZh2LBLXBCte8n3pKBKcE6SgIh8yyKARAdpnwO6AQ2AE8AYYJFSqp3WuvhD9wrhZH/
8YV4HDSrjjrK7YC3Yw3exZB8/
NhZSUiAkpIzxCFFKzmxEXeyLhNZ6n9Z6v9baqrXeArwAXOfEWIRwmxNJJ1hxeEXO+6f7PM2/4/9l+A4uOBJ
1YeJmmupLv6fXwsdP2j6Icm0X4KeUamG3rCPgqG1cR+BbrfURrXWW1no6UA1o6/
owhXBM69wMxODBZdxXdiNqn1IMIgHUqgVdu0J6uslECOEpzsxAlOQikZ8GSvffJIQH/bDtB9p/
2J5rv72Wk8knAfD39adWSM0iR6IuijXLSvzX8QD8SRQ33QQNGzo1bCHcRmudDMwGXlBKhSqlLgGG4bh3pTX
ASKVUlFLKRyl1M+AP7HFfxELktWcP7N9vGjB37Vq2fZWlF6ZsQ4aY1/
kOWwcJ4R5Oq8KktU5WSmVfJO7E9MI0DOiVP61SagiwXmsdp5RqDTwDfO+sWIRwtTOpZ7j/9/
v5astXAAxsOpAsq10THq3RSqFKMVTpmYVnyIzP5LAKZpcOZ87jzoradc6fP098fDyZmUW30ahSpQrbt293U
1TlgzvOib+/
P7Vq1SIiIn8hsduMBz4D4oEE4F6t9ValVENgG9BWa30IeB2oBWwEQjEZhxFa67OeCFoIyC19GDgQfEtZ9Sh
bq09bsWHZBgIbFa83PkeGDIGXXoLffy9bLEKUhbO7cS3uRWIAMF0pFQbEATOBV5wcixAu8euuX7nr57s4nn
ScEP8Q3hz4JvdG35s3s2C1mpF/
SiG7+tKfOophwxRtvbzyxvnz54mLi6NevXoEBwcXmWlKTEwkPLzkDQcrMlefE601qampHD16FMAjmQit9Wn
gGgfLD2Haz2W/TwPus01CeAWntX8AqlxcBdLBL6z0t1/du0O1aqZkZM8eaF4x2lKLcsapA8lprU9rra/
RWodqrRtqrb+yLT+ktQ6zXSzQWk/
QWkfZ0jXVWj+rtS7f3cuISuGZRc8w9OuhHE86Tq8Gvdh0zybGdxtf8KbZYkGXovpSVlIWp+acAuAvonj0UW
dE7Vrx8fHUq1ePkJCQUpW4CNdSShESEkK9evWIj4/3dDhClCsZGbB4sZm//
HLPxpLNz8+UhoBUYxKe49QMhBAV3WVNLyPYL5gpl09hydglNK9eyKMfq7VUGYhTc09hTbGyhQhqdw6mdzkY
ajEzM5Pg4GBPhyEuIDg4+IJVzIQQeS1fDsnJ0L491KtX9v0dfO0gfAKZZ8r2v5jdDkKqMQlPkQyEEEVITE/
km3+/yXnfr3E/Dj50kEcufgRfnyIqw5ayAXV29aUFRPHgg6WuBeV2UvLg/
eRvJETJObP6EsCxD47BV2BJtJRpP9nxLF4MaWlOCEyIEpIMhBCFWLR/
ER0+6sCoH0exaP+inOU1Q2teeGOrFV3CGzZrhpUz+zPJRLGlei1uvLGkEQshhHAmZ2cgGk5sCHeCX9WyNUG
tUwc6dYLUVFiyxDmxCVESkoEQIp+kjCTu/
+1+Bnw5gIPnDtKlThdqhdYq2U4slhKXQPgE+PBRp2hupgc33etPUFDJDimEEMJ54uJg40YIDoY+fZyzz3r3
1YObwC+i7H3YSDUm4UmSgRDCzm+7f6Pdh+34YM0H+Pv482L/F/nnjn9oX6t9yXZUijYQhw/Djz/
CKd8g7r23ZIcTpXPy5EnGjx9P48aNCQwMJCoqigEDBrBgwQIAGjduzFtvveXhKIUQnvDnn+a1Xz+88oFO9q
B22XEK4U7O7sZViHLr47Ufc8+v9wDQtU5Xpl09jY61O5ZuZyXsxjX9WDpfvGzBYgnhhhuc01hPXNiIESNIS
Ulh2rRpNG/enPj4eP7+
+28SEhI8HZoQwsOcXX0J4OTck7AJrL2s+ASU7Rluz54QFgbbtpkHUA0aOClIIYpBSiCEsLmu7XU0rtqYKZd
P4Z87/yl95gFMN64lGHHo0H+P0vvj1YzhAA8+WPrDiuI7e/
YsS5cu5bXXXmPAgAE0atSIbt26MWHCBG688UZiYmI4ePAgjz32GCrfoIArVqygX79+Od2j3nvvvZw/
fz5nfUxMDPfccw//+c9/qFatGtWqVeOxxx7DarV64qMKIUrIas19su/
MDMSOsTvgebAkl60RNUBAAFx6qZmXUgjhbpKBEJXWvjP7uPvnu0nPSgegRkgNdt6/k0cufgQ/
nzIWzpWwEfXOHZCCLynNqnLxxWU7tCiesLAwwsLCmDdvHmkOujGZPXs29evX59lnn+X48eMcP34cgC1btnD
55Zdz9dVXs2nTJmbPns3GjRu5/fbb82w/
a9YsrFYrK1eu5OOPP2bq1Kn83//9nzs+mhCijDZuhJMnzVP91q2duGNbvkH5OqdXtOzMTXZpiRDuIlWYRKW
TnpXOWyve4uWlL5OalUrDKg15uu/TAAT4BjjnICXsxnXK+aaspBHvPOxTbrpuLe/8/
PyYPn06d911F1OnTqVz585ccskljBw5kh49elC9enV8fX0JDw+ndu3aOdu9+eab3HDDDTxqN8rfRx99ROfO
nYmPj6dWLdPgvk6dOrz77rsopWjdujW7du3i7bff5pFHHnH7ZxVClIx99SVn/
iZriwacn4FYuND03VGCgm8hykRKIESlMn/PfNp/1J5JiyeRmpXKqPajuKvrXc4/
UAlGot61C2JjwTfEl5turiC5B6UcTuEREYWuK/NUCiNGjODYsWP8/
PPPDBkyhBUrVtCzZ09eeeWVQrdZt24dM2fOzCnBCAsL45JLLgFg7969Oel69uyZp9rTxRdfzNGjR/
NUdRJCeCdXtH8A0FaTgcBJN/
rNmkHTpnDmDKxd65x9ClEckoEQlcKBswe49ttrGTJrCHtO76FNZBv+uuUvvhrxVcm7aC2OYjaitqZb+fnRe
AKwMGoUREQ4PxSP0NrhlHj+fKHryjyVUlBQEAMHDuTZZ59lxYoV3HHHHTz//
PNkZGQ4TG+1WrnzzjvZuHFjzrRp0yZ2795Np06dSh2HEMI7JCaaEah9fGDAACfvPLsKk4/
zHhZJNSbhCVKFSVQKKw6vYO6OuYT6h/
J8zPM82ONB51VXcqSY3biemJtA11+28SZV6Dmus+viEcXWtm1bsrKySEtLIyAgAIslb2PHLl26sHXrVpo3b
17kflatWoXWOqcU4p9//qFu3bpEVJhcohAV0+LFkJUFF18M1ao5d9/
OrsIEJgPx0UemIfWzzzptt0IUSUogRIWktWZz3Oac96Paj+KFmBfYef9OJvSa4NrMA5jKqMUogdg8JQ6A/
XUj6dbNtSGJvBISErj00kuZOXMmmzdvZv/+/Xz//
fe88cYbDBgwgIiICBo3bszSpUs5evQop06dAuCJJ55g9erV3HPPPWzYsIE9e/bwyy+/cPfdd+fZ/
7Fjx3jooYfYuXMnP/zwA2+++SYPP/ywJz6qEKIEsp/kZ4+z4Cxaa8guLHXi3Vf//uDnB//8A+fOOW+/
QhRFSiBEhbP66Goe/fNR/jnyD9vGb6NFjRYopXim3zPuC8JqvWA3rpmnM/Fbm4AVaHt/
LWk87WZhYWH07NmT//
73v+zZs4f09HTq1avH6NGjmTRpEgAvvPACd999N82aNSM9PR2tNRdddBFLlixh0qRJ9OvXD4vFQtOmTbn22
mvz7P+mm27CYrHQo0cPlFLccccdkoEQohxwVfsHsntx9iFP+6iyiogwpSVLl8Jff8Hw4U7btRCFkgyEqDAO
nj3Ik389ydf/fg1AZEgke8/spUWNFu4PphjduP77wUn8tGaDTzVuHx/
opsBEtsDAQF555ZUiG0z37NmTTZs2FVgeHR3N/Pnzi9y/n58f77//Pu+//
36ZYxVCuMfevWaqXh2io5277+zqS7jgYdGgQSYD8ccfkoEQ7iFVmES5F5cUx8PzH6bV+634+t+vCfQNZOIl
E9nzwB4GN3dyGXRxFaMK0/6ppvpSyiVRVKnijqCEEEIUJbv04bLLnN8lak4GwgV3XvYNqcvQp4QQxSYlEKL
cm7BgAjM3zwRgdIfRvHLpKzSq2sizQV2gClPKvlSqHzlHGj70eSrSjYEJIYQoTHbBotOrL2GXgXDBWA2dO0
ONGnDwIOzeDS1bOv8YQtiTDIQod86nn+dUyimaVmsKwNN9nuZ8+nkmx0ymU+1Ong0u2wW6cf3n5Xh8gE2hk
Tx2ufwbVjSxsbGeDkEIUUIZGaYHJoDLL3fBAbLbQLigCpOvLwwcCN98Y0ohJAMhXE2qMIlyIyElgecWP0ej
/2vEmNljTI8WQOvI1vx040/ek3mAIrtx1Vpz/kdTfSno6qiSDFgthBDCRVasgKQkaNcO6td3/
v5VgKLpa01hrPP3DTIehHAvefQpvN7xxONMWTmF/
639H8mZyQD4+fhxJu0M1YOrezi6QhQxEvXJFUlUPZfCGfy54hkndzIuhBCiVFzW+5KNb5AvDZ9oyL7YfS7Z
/8CB5nXxYkhPh0Dpm0O4kDz7FF4rPjmecT+Po8l/
mzBl5RSSM5MZ3HwwS8YuYcltS7w38wBFVmFa9ZIpfdheuxYt2si/
oBBCeANXZyBcrV49aN8eUlJMaYoQriR3L8JrBfsF8+3Wb8mwZDCizQjW3rWW32/6nT6N+ng6tAsrpAqTNcu
KWhQPQN1bo9wdlRBCCAfi4mDDBggKgj4uusRYUi3EfxcPK12zf5BqTMJ9JAMhvMK5tHN8sPoDen/
Wm5TMFADCA8P5fNjnbL9vOz9c/
wNd63b1cJQlYLHgqHHDoXUZnMrw4wjBXPVYuAcCE8L9lFLVlVJzlFLJSqmDSqnRRaRtqpT6RSmVqJQ6pZR6
w52xisppwQLz2q8fBAe75hiZCZlsu2EbTHHN/iE3A/Hnn647hhAgbSCEB2mtWX10NR+v+5hv/
v2G1KxUAL7991tu63wbAMPblNMRcQopgfh+SRCP042bhmYypoYMPS0qjQ+ADCAK6AT8qpTapLXeap9IKRUA
LLClvwGwANKfjHA5d1Rf8gnyoebImpxMPemyY/TubUpRNmwwpSpRUtAtXERKIITbaa15f/
X7dPq4Ez2n9eTzjZ+TmpXKpU0u5dvrvmXMRWM8HWLZOWgDoTV88QWA4vq7AjwSliiZmJgY7r//
fk+HARQvlvbt2/
P888+7J6BiUkqFAiOAZ7TWSVrrZcA84GYHyccCx7TWb2utk7XWaVrrzW4MV1RCVmvuE3tXZiACIgNo9107e
NR1xwgONqUokFuqIoQrSAmEcIu0rDSC/IIAUEoxY/
MMNsdtJjIkkts63cZdXe6iRY0WHo7SiRz0wrTu+yROb/UlMjKYwR4aIFvkdfLkSZ577jl+++03jh8/
TtWqVWnfvj0TJ05k4MCBzJ49G39/f0+HCeBVsZRQS8Citd5lt2wT0M9B2p7AAaXU70A34F/
gAa31lvwJlVLjgHEAUVFRXjH2RlJSklfE4U3KwznZvTuM+PhoatZMIy7uH+LjXXs8V5+TZs3qA8358ssT1K
+/w2XHcZby8B1xt/JwTiQDIVwmPSudhfsW8sP2H/
hx248sv305HaI6APBM32dIzkjmmtbXEOhXAfuac1CFae/j+/iK0/
wT3ZaAgFoeCkzYGzFiBCkpKUybNo3mzZsTHx/P33//TUJCAgDVq3tPT1/
eFEsJhQHn8i07BzhqBFQf6A9cDfwF/Af4SSnVWmudYZ9Qaz0VmAoQHR2tY2JinBx2ycXGxuINcXiT8nBO/
vnHvF59dRD9+8e47DjWDCvph9NZtX4VMUNdd5xateDDD2Hz5tr07Vvb68caKg/
fEXcrD+fEy79WorxJyUxhzvY5jJk9hlpv1WLo10OZvnE6iRmJ/LX/
r5x0Q1sO5Yb2N1TMzAMUqMKUmaHZHhdAIn5c+oiM/
eANzp49y9KlS3nttdcYMGAAjRo1olu3bkyYMIEbb7wRKFhtKC4ujquvvprg4GAaNWrE559/
XqDakFKKjz76iGHDhhESEkLLli1ZvHgxR44cYdCgQYSGhtKpUyfWr1+fJ57Zs2fToUMHAgMDadCgAS+//
HLOYImOYomPj2fYsGE5sXz22WcuOlNllgRE5FsWASQ6SJsKLNNa/27LMLwF1ADauDZEUZm5q/
vW1L2prGq+yqVVmADatDFdusbFwWapAChcRDIQwmm01rT7sB3DvxvOrC2zOJ9+nouiLmJyzGS237edh3o+5
OkQ3cdiQfv65rxdsFAxOa01T7bqRbfLymU1lAonLCyMsLAw5s2bR1paWrG2ufXWWzl48CCLFi3ip59+YubM
mRw8eLBAupdeeokbb7yRTZs2ER0dzahRo7jjjjsYP348GzZsoG7duowdOzYn/
bp16xg5ciTDhw9ny5YtvPbaa7z66qu8//77hcYyduxY9uzZw8KFC5k7dy5ffvklBw4cKOlpcIddgJ9Syr6O
Ykdgq4O0mwHtYLkQLpGUBMuXm07zLrvMxQez2l5dfOellHTnKlxPqjCJEkvOSGbF4RUs3LeQP/
f9SeytsYB58tq3UV9qhdZieO
vhjGg7gubVm3s2WE/JVwLx5Zfm9aZbfQobX65CUZML/5AfD/2YcV3HATB13VTu/
uXuQtPq53LvJbtO7cr64+svmK64/Pz8mD59OnfddRdTp06lc+fOXHLJJYwcOZIePXoUSL9z507+
+OMPVq5cSc+ePQGYPn06jRs3LpD2lltuYdSoUQA89dRTfP311wwaNIhhw4YB8Pjjj9O/
f39OnTpFYGAgb7/9Nv369WPy5MkAtGzZkt27d/P666/zwAMPFNj/
rl27+P3331m2bBmXXHIJAF988QVNmzYt8XlwNa11slJqNvCCUupOTC9Mw4BeDpLPBB5VSl0GLAYeBE4B290
Urqhk/voLMjPh4ouhmosLh7XF9jvlhke3gwbBZ5+ZxuFPPOH644nKRzIQ4oIyLBksO7SMxfsXs/
jAYlYfXU2mNTNn/YJ9C4gkEoBpV0/Dz0e+VvZtIOI2p3LyxyQCqM5NN/
leYEPhTiNGjODKK69k6dKlrFy5kvnz5zNlyhRefvllnnrqqTxpd+zYgY+PD9HR0TnLGjRoQN26dQvs96KLL
sqZj7L1o9ihQ4cCy+Lj42nQoAHbt2/
nyiuvzLOP3r17M3nyZM6fP09ERN4aQNu3b8fHx4fu3bvnLGvUqJHDWLzEeOAzIB5IAO7VWm9VSjUEtgFttd
aHtNY7lVJjgP8BtYD1wNX52z8I4Sy//
WZer7jC9cdyZwZiwADzDGvZMkhOhtBQ1x9TVC5ypycKOJZ4jMPnDtOjvnkKez79PAO+HJCz3kf5EF03mv6N
+zO4+WB6N+zNivgVAJJ5yGbXC9Pyp07wTNZB1tatS8OGlaNL+8JKBBITEwkPz207O67ruJzSiAtZN26dU2L
LLygoiIEDBzJw4ECeffZZ7rzzTp5//
nkmTJiQJ519e4QLse8tSdmKnBwts1qtOftWhRRNOVpekli8gdb6NHCNg+WHMI2s7ZfNBma7JzJRmWkNv/
9u5itaBqJGDejWDVavhthYyPd8Qogyk7u9Su5s2lk2ndjE6qOrWXV0FauOruLI+SPUj6jP4YcPAxAZEskN7
W6gXng9YhrH0KdRH6oGVfVs4N7OVoVJa41aGAdA/
TE1PRyUKI62bduSlZVVoF1EmzZtsFqtrFu3LqeK05EjRzh27JhTjrls2bI8y5YtW0b9+vXzZLjyx7JmzRp6
9TI1gQ4dOuSUWISoLLZuhcOHzWBrnTq54YDZbSDcVBA9aJDJQPzxh2QghPNJBqKSsFgt7D69m/
CAcOpF1APg47Ufc8+v9xRIGxEYQevI1qRkphDiHwLAN9d949Z4yz1bFaYdP5ynWnoaJ1UgVzxV1dNRCTsJC
QmMHDmS22+/
nYsuuojw8HDWrl3LG2+8wYABAwpUG2rVqhWDBg3innvu4aOPPiIoKIjHHnuMkJCQQksPiuvRRx+lW7duPP/
884wePZo1a9YwZcoUXnnlFYfpW7VqxeDBg7n77ruZOnUqwcHBPPLIIwQHB5cpDiEqk+zShyFDcEtXpzklEG
5qBzdoELz4Yu4geUI4k2QgKqC1x9ay7eQ2dp7ayc4EM+1O2E26JZ0X+7/
IpL6TAGhWvRlBfkG0q9mObnW70aN+D3rU60GryFb4KOmgq0xsJRAb34yjDnCsTS0iqlSC1tPlSFhYGD179u
S///0ve/bsIT09nXr16jF69GgmTZrkcJvsRtcxMTHUqlWLF154gX379hEUFFSmWLp06cL333/
Pc889xyuvvEJUVBQTJ04scuTp7FguvfRSIiMjee6554h39QhYQlQg2e0fhgxxz/
HcWYUJoHt3iIiAnTvhwAFw0N+DEKUmGYhyJikjiYNnD3Lg7AEOnD3AwXMHOZ50nC+v+TLnKehNs29iV8KuA
ts2rNIwTxuFmMYxJD2ZhK+PNOx1OouFLO1PxDpzQ9f2wSgPByTyCwwM5JVXXin0KT9QYCTQ2rVr8/
PPP+e8P3XqFOPGjaN589zexvK3T4iMjCywrHXr1jnLEhPNcAjDhw9n+PDhxY4lKiqKefPm5Vl25513Frq9E
CLX+fOmgbGvLwwc6KaDurkKk7+/+Ww//
mgyS+PHu+e4onKQDISXSM9K50TSCY4nHed44nGOJx0num403euZXlbm7ZzHHfPu4FTKKYfbvzv4XaoFmz7o
rmh+BZ1qd6JVjVZmimxFyxotiQjMWyVDGjy7kNXK5iP9CbVmcdAvlDF3hl14G+H1Fi1aRGJiIh06dCA+Pp6
nn36ayMhIBg8e7OnQhBAlsHAhZGVB796u7741m7urMAEMHWoyEL/
8IhkI4VxyB+kCSRlJxCXFcT79PGfSzpCQkkBCagKnUk6RZc3i+Zjnc9L2+LQHO07t4Hz6+QL7mdRnUk4GIt
A3kFMppwj0DaRR1UY0rtqYxlUa58wH+AbkbPfO4Hdc/
hnFBVitnDgWTWMgpVcUvlLIUyFkZmYyadIk9u3bR0hICD169GDJkiWESh+JQpQr7uy+NZu7qzCBqZ6lFCxa
JN25CudyagZCKVUdmAZcjhn850mt9VeFpH0YeAIIBn7E9Aue7sx4iuN06mnOpJ4hJTOlwBQRGMGg5mY4xwx
LBs8tfo6kjCTOpZ9j39F9BBwM4Fz6Oc6nn2fK5VO4utXVAHy05iMeX/
i4w+OF+IfkyUAkpidyPv08vsqX2mG1qRNehzphZupWr1tOuj6N+nD0kaPUDqst7RPKgTP7/
KiXGoAVzcWTank6HOEkgwYNYlD2EK9CiHLJvvtWd7V/
AMBie3XjA6WoKNMWYtUqM2je1Ve779iiYnN2CcQHQAYQhRlt9Fel1Cat9Vb7REqpQcBE4FLgGDAHmGxbVqi
4pDge+O0BMiwZpFvSybBk5MwPbjaY+7rfB8DmuM2MmT2mQLrsadWdq7goygz09Mgfj/
DFpi8cHq9HvR45GQiF4rXlr+VNkJA3tmxRYVE0rtqYiMAIqgZVJTIkksjgSGqE1CAyJBKrtuZkAhbcvIAQ/
xCqBFUpMmMQ4h+S0yOS8G6WNAvr3quDP5p/qtdm4sCyNbAVQgjhPJs3w7FjUKcOdOzovuP6R/
lT87qanAw/
6b6DYrpwXbUKfv1VMhDCeZyWgVBKhQIjgPZa6yRgmVJqHnAzBTMGtwLTsjMWSqkXgVkO0uXhc9CHfjf0c7g
uJCCEFYFmMLNMaybPJj8LwMgJI3PSvDHjDZrENSG1R6rJ4gD9vurHNX9cg1IKhcrz6ufjx4pnV+Rs/
0fGHyilOPnBSfb67KVXl14EvRmEZY6FRo0aQVeT7vItl9P89dxGlfn9wz8FljV9oym1x9QG4MTME+x7fB9R
N0XR7M1mACRtTmLz4M1FnZ4CHG0f2iGUjn/k/mKuqLuisM0dKnR7u3KmTYM2kbwluUT77XWsV4HtL5p/
EWEXmbYDex/bS9ysuMI2d8jR9o7Oc0kU5++0sf9G/
E4rDhNM8GOFfw+EEEK4n33vS2XsgblEwjuF0+77dgU6RHC1oUPh2WdNOwit3fuZRcXlzBKIloBFa23f/
c8mwNEdfzvgp3zpopRSNbTWCfYJlVLjgHEATfyaEJkWWWgAGWTkzEdi0s3qPgt/
H3/8lB8RsyLwTfIleW8ysX6xADRJaQIFmx843GcApp1B3TN1iagXge8hXzIPZ0Ic7N+yn/
2x+03CDcDxwvfpyI4NO9hRf0ee7Q9vP8zhWDOYGztLvk9H22eEZeT98SrhPgvbPikpKXf5/
pLvN88+bduvXbkWTtuWbS/5Ph1t7+g8l0Sx/
k6n4Sx+vEorXmq5mtjYjMJ2VyFUqVIlpyehC7FYLMVOW1m485ykpaW5/
eZFCG+T3XlZZRlcrVMnqFvXlLps3AidO3s6IlERODMDEQacy7fsHFBwGNWCabPnw8lTMQi01lOBqQBdO3XV
F/92cYmCCqwbmDOfsTwDnanxj/THJ8BUF8rslIk1xVrY5g75R/
qzZMUSYmJicrb3q+KHb6ip2GjpZiHr0awS7dPR9j4hPvhX9QfA2stK5lWZJdqno+2VvyKgZm6D6/
SjJWt2Utj2K3etJCYmBsg9zyXhqr9T/u3d8XeaeiqT/0zy45JaGxg+vFdRu6sQtm/
f7nC0ZEcSExOLnbaycOc5CQoKorPcPYhK7MQJU50nMBAuv9y9x85KyiIzLhPOuPe4SplSiKlTTSmE/
AQIZ3BmBiIJiMi3LAJw9Ggtf9rs+SIfwyk/
ledGs6Tsb3yz+Vf1h6ql3qXD7X1DfXNuMkvD0fY+AT5l+uyFbV+WfebZ3q7cydF5Lony/
nf67KdAMoDrGv4NRJd6/0IIIZzr559NNZ7LLoMwN/
eufXr+abaN3AZ9gWvde2z7DMQzz7j32KJicmZ3PrsAP6VUC7tlHYGtDtJuta2zTxeXv/
qSEOXNjh2wZg1EBKUzsN5aT4cjhBDCzk+2ytPDhrn/
2L4hvgQ1CQI3jTthb8AACAqC1ashrmTNCYVwyGkZCK11MjAbeEEpFaqUugQYBsxwkPxL4A6lVFulVDVgEjD
dWbEI4SkzbN/2kR13EeRfsupRomJRSvHDDz94OgwhhE1SkhlATim46ir3H7/
GFTXoua8nPOT+Y4eEwKWXmvnsRuRClIWzBxQYjxnXIR74GjO2w1alVEOlVJJSqiGA1no+8AawGDhom55zci
xCuJXVmpuBuKXLVunqwosppYqcxo4d6+kQhRBO9uefkJ4OPXpA7dqejsb9hg41r9mNyIUoC6eOA6G1Pg1c4
2D5IUzDaftlbwNvO/P4QnjS33/D4cPQqBH0bniII6dlwD9vdfx4bvdbv/
zyC3fddVeeZcHBwZ4ISwjhQtk3zp6ovuQNrr4axo+HP/6QUalF2ckdjhBO8uWX5vXmm8EHK/
jIv5e3ql27ds5UtWrVPMuSk5O55ZZbqF27NqGhoXTp0oVffvklz/
aNGzfmpZde4u677yYiIoL69evz5ptvFjjO6dOnGTlyJKGhoTRt2pSZM2e64+MJIfLJyjINiMFzGYgTM0+wt
OpSeNczx69XD3r2hNRUmD/
fMzGIikPucIRwgpQUyK7ufvPNgNWKlipM5VJSUhJDhgxhwYIFbNq0iREjRjB8+HB27NiRJ90777xDhw4dWL
9+PU888QSPP/44K1euzJPmhRdeYNiwYWzatIkbbriB22+/
nYMHD7rz4wghgBUrICEBWrSA1q09E4M11YrlnAVK1nu6Uw0fbl5//
NFzMYiKQTIQQjjB3LmmgV7PntCyJSYD4Vv6LmLLM6UKnyIiwotcX5bJWTp27Mg999xDhw4daN68OU8//
TRdunQp0CD68ssv5/7776d58+Y88MADNG/enL/++itPmptvvpkxY8bQvHlzXnzxRfz8/
Fi6dKnzghVCFIt970see7aTPZSRB++8sjMQv/xi2oMIUVqSgRDCCbKrL91yi22BxSKNqMup5ORkHn/
8cdq2bUu1atUICwtj7dq1HDp0KE+6iy66KM/7unXrEh8fX2gaPz8/
atasWSCNEMK1tM7NQFx9tQfjsNgGWPXgnVezZtCxIyQmQr7nHUKUiGQghCijY8dgwQLw94frr7cttFrRlbQ
NhNaFT+fPJxa5viyTs0yYMIHvv/+eF198kb///puNGzfSvXt3MjIy8qTz9/
fP814phdVqLXEaIYRrbdoEe/
dCzZrQq5fn4vCGDARINSbhHJXzDkcIJ5o1y3ThOnQo1KhhW2iVRtTl1bJly7jlllsYMWIEF110EfXr12fv3
r2eDksIUUrffmter7sOPFqz1AuqMAGMGGFef/
rJNC4XojTkDkeIMtAapk8387fdZrfCYpFG1OVUy5YtmTNnDuvXr2fLli2MGTOGtLQ0T4dVrimlqiul5iilk
pVSB5VSo4uxzSKllFZKObW7cVG5aJ2bgcgpIfZULF5SAtG2rWmrl5AA0iRLlJZkIIQogzVrYNs2qFULBg+2
WyElEOXW22+/
Ta1atejTpw9DhgyhZ8+e9OnTx9NhlXcfABlAFHAT8JFSql1hiZVSN+HkcYpE5bRuHezfbwaO8/S/
sbdkIJSSakyi7OQHWogyyC59GDPGtIHIId24lhvXXXcd2q4RRaNGjVi4cGGeNBMmTMjz/
sCBAwX2Exsbm+e9dtAww9F2FZ1SKhQYAbTXWicBy5RS84CbgYkO0lcBngNuAVbmXy9ESWSXPowc6eHqS+A1
VZjAVGN67TWYMwfefVeed4mSkwyEEKWUlgZff23mb70130qLpdJ24ypEPi0Bi9Z6l92yTUC/QtK/
AnwEnChqp0qpccA4gKioqAIZOE9ISkryiji8iSfPidYwY0ZPIIgWLTYQG3vOI3Hk2G1eMrIyPP490Rqionp
y7FgQ7723gY4dPXdu5P+moPJwTiQDIUQpzZsHZ89Cly6Qr0dPU4VJSiCEAAgD8t+dnAPC8ydUSkUDlwD/
AeoXtVOt9VRgKkB0dLSOiYlxRqxlEhsbizfE4U08eU7+
+Qfi4swIzPfd19njT9kPLD3AAQ4QEBTgFd+TsWPh9ddh27bO/Oc/notD/m8KKg/
nRAqthCil7OpLY8c6WClVmITIlgRE5FsWASTaL1BK+QAfAv/RWkvfMKLMvvvOvI4c6SVVdLyoChPATTeZ1+
+/
h3y9VAtxQV7yNRaifDl2DP74w7R7GDXKQQKLxQsq3ArhFXYBfkqpFnbLOgJb86WLAKKBb5VSJ4A1tuVHlFL
Sil2UiNWam4G44QbPxpLNt4ovQU2CHJS9eUaHDqb0/
MwZ+P13T0cjyhvJQAhRCjNnmgvUVVdBZKSDBFICIQQAWutkYDbwglIqVCl1CTAMmJEv6TmgLtDJNl1hW94V
WOWWYEWFsWIFHD0KDRtCjx6ejsZo8FADeu7rCdd5OpJc2aUQM2d6Ng5R/kgGQogSsh/
7wWH1JZBuXIXIazwQDMQDXwP3aq23KqUaKqWSlFINtXEiewJO2raN01pLBQtRItk3xNdfL83RijJqlDk/
P/8M5zzcxlyUL3KHI0QJrVkD27c7GPvBnsWClgyEEABorU9rra/
RWodqrRtqrb+yLT+ktQ7TWh9ysM0BrbWS9hCipFJT4ZtvzHyBHvJEHg0aQL9+kJ4uY0KIkpE7HCFKqNCxH+
xJFSYhhPCIuXPN0/ToaGjf3tPR5No3aR/Lqi2DOZ6OJK/
sakyzZnk2DlG+SAZCiBIocuwHe1KFSQghPOLzz83rbbd5No78rMlWss5mgZeVqV13HQQEwOLFpt2IEMUhdz
hClMBPPxUx9oM9q1WqMAkhhJsdOgQLF0JgYCE95HlQk1eacMnpS+BqT0eSV9WqMHSoad/
31VeejkaUF3KHI0QJTJ1qXi/
4ZMtikRIILzd27FiUUiil8PPzo2HDhtx7772cOXOm2Pto3Lgxb731lsN1Sil+
+OEHh8cdOnRoqeMWQhTuyy/NjfA110C1ap6OJi/fYF/8q/lDoKcjKeiWW8zrtGnm/
AlxIXKHI0Qx7d4NixZBcLBp/1AkaQNRLlx22WUcP36cAwcO8Omnn/
Lzzz8zfvx4T4clhCiFYvWQJxy68kqoWxd27oS///
Z0NKI8kAyEEMX06afm9YYbTJFvkaQKU7kQGBhI7dq1qV+/Ppdffjk33HADf/75Z876zz//
nLZt2xIUFETLli155513sFqtRexRCOEpS5fC3r1Qrx4MHOjpaAo6/PZhNl62EVZ6OpKC/PzgjjvM/
McfezYWUT7IHY4QxZCRkdswb9y4YmwgVZjKnX379jF//nz8bV1rffLJJzz11FO88MILbN++nSlTpvD666/
z4YcfejhSIYQj2aUPt9wCvr4eDcWh5K3JnP3rLJz2dCSO3XmnuWz9+COcPHnh9KJy8/N0AEKUB3Pnmh/
UDh2gZ89ibFDJqzDFqtgSpQ/rEkb0uugC28fomJxla7uuJWl9ksPt7dOVxPz58wkLC8NisZCWlgbA22+/
DcCLL77IG2+8wXXXmWFjmzRpwsSJE/
nwww+5//77S3U8IYRrnDkD335r5r21+pK22BoXeOmzpYYNYcgQ+PVXkxl77DFPRyS8mZd+jYXwLtmNp8eNK
+aoplardz4CE3n07duXjRs3snr1ah544AGuuOIKHnzwQU6ePMnhw4e5+
+67CQsLy5kmTpzI3r17PR22ECKfzz6DlBS47DJo2dLT0RQiu/
ajF9953X23eZ061VzGhCiMlEAIcQF79sBffxWz8XQ2i6VSl0AUViKQmJhIeHh4qba3L6FwlpCQEJo3bw7Au
+++S//+/XnxxRe59957Afjf//5Hr169SrXv8PBwzp07V2D52bNnqVKlSumDFkLkYbHA++
+b+Qcf9GwsRfH2EgiAK64wo1Pv2WPGhRgwwNMRCW/lxV9jIbzDJ5+Y12I1ns4mA8mVS8899xyvv/
46FouFevXqsXfvXpo3b15gKo5WrVqxbt26PMssFgubNm2iVatWrghfiErpl1/
gwAFo2tTcAHur8pCB8PU1bSFAGlOLokkJhBBFSEszReMAd91Vgg2lF6ZyKSYmhnbt2vHSSy/x/
PPP88ADD1C1alWuuOIKMjMzWb9+PUePHuXJJ5/M2ebYsWNs3Lgxz37q16/
PI488wm233Ua7du0YOHAgKSkpvPfee5w+fZpxxWqJL4QojnffNa/33+/lNUfLQRUmML0xvfACzJkDR45A/
fqejkh4Iy//GgvhWd98A6dOQefOcPHFJdiwkldhKs8eeeQRpk2bxsCBA/
nss8+YMWMGHTt2pE+fPkydOpUmTZrkSf/OO+/QuXPnPNM333zDqFGj+Pzzz/
n888+Jjo5m8ODBnDhxgqVLl1K7dm0PfTohKpZ//zXj84SGFmOATw8rDyUQYLrBve46yMqC//
7X09EIbyUlEEIUQuvcJ1sPPljMxtPZpAqT15ue3edjPqNHj2b06NEANGrUiFGjRhW6jwMHDhR5jFGjRhW5v
RCibN57z7zeemsJqph6SHnJQIDpgenbb001pqef9v5zK9yvHHyNhfCM5cthwwaIjIQbbyzhxpW8G1chhHC1
06dhxgwzXy56Vi4nVZgAunaFSy+FxERpCyEcKwdfYyE8I7v04e67ISiohBtbLF5eGVcIIcq3//0PUlPh8su
hTRtPR3Nh5akEAuDxx83r//0fpKd7NBThhcrJ11gI9zp8GGbPNnkAW4+eJSMlEEII4TIpKfDOO2Y+
+0bX25W3DMTll8NFF8GJEzBzpqejEd5G2kAI4cBHH5lChBtuMA3KSkzaQAghhMt88onp4KJ7d1PVxlt8v/
V7diXsYv/Z/ZxMOUlCSgIJqQkkZSTx3un3qEpV8IF/jvzDrXNvJdQ/
lOrB1akXUY+6YXWpH1GfljVa0qtBL0IDQj36WZQymbMxY+DNN00jdbmsiWySgRAin9TU3JGnH3iglDupZN2
4aq1RUuLi1bTWng5BCKdIT4e33jLzTz1Vwg4unCA1M5VVR1ex/NByDp8/zP+G/i9n3RMLn2D/
2f0Ot1s9aTWTe09m+brlJKQksCthV6HH2HX/
LlrUaAHAnO1zyLBkcHGDi2lYpaFzP8wFXH89PPkk7NwJ8+bBNde49fDCi0kGQoh8Zs6EhATo0gVKOQhxper
G1d/fn9TUVEJCQjwdiihCamoq/v7+ng5DiDL79FMzPkH79nDVVa4/
nsVqYfXR1fy+53cW7lvI2mNrybRm5qx/7bLXqBpUFYBbO95KcmYyTao2ISosihrBNYgMiSQ8MJwqgVXwD/
IHf4hpHMP2+7aTlJFEQkoCRxOPcizxGIfOHWLP6T00qZbbXfRry19j9dHVADSt1pQBTQYwoMkABjYbSPXg6
i797P7+MGEC/Oc/
MHkyXH21lEIIQzIQQtixWOCNN8z8hAlleLJViaow1apVi6NHj1KvXj2Cg4OlJMLLaK1JTU3l6NGjREVFeTo
cIcokNRVeftnMT57snp/
Zn3b+xIjvRuS8Vyg6RnWkT8M+9KjfAz+f3Fup52KeK9Y+QwNCaR3Zulhpr219LTWCa7DyyEr2ndnHvjP7+G
T9J/gqX17s/yJP9nnywjspg
3Hj4PXXYeNG0zbwuutcejhRTkgGQgg7P/4Ie/
ZAkyYwcmQZdlSJqjBFREQAZkTmzMzMItOmpaURVOIurSo2d5wTf39/
oqKicv5WQpRXH30Ex4+bwT2vvda5+86wZLBg7wK+3fotNYJr8M5g00p7QJMBtKzRkoFNBzK4+WB6N+ydU+J
QErsf3E3ytmS4CYgp/
nYTe09kYu+JWKwW1h9fz1/7/2LBvgUsObiEljVa5qSLPRDLumPrGN1hNHXC65Q4vsIEBcGkSTB+PDz3nDnv
0smgcEoGQilVHZgGXA6cAp7UWn9VSNqxtrSpdouHaq1jnRGLEKWlNbz2mpl/7DHwK8t/
h8VSaUogwGQiinNzGhsbS+fOnd0QUfkh50SI4jl3Dl55xcy/
8ILz2j5sOL6BaRum8dWWrziTdgaAakHVeGPgG/
j7+lMlqAo7799Z5uOcX32exFWJUMqMj6+PL93qdaNbvW5M7D2RM6lnCPYPzln/
6fpPmbVlFo8vfJzBzQdza8dbubrV1QT5lf0BxR13mFKIbdvM2Btjx5Z5l6Kcc9YdzgdABhCFyVt/
pJRqV0T6lVrrMLsp1klxCFFqCxaYgeOiokxvE2Ui3bgKkUMpVV0pNUcplayUOqiUGl1IuluVUuuUUueVUke
UUm8opaSkXADw6qumfVqfPnDllWXf37JDy+g6tStdpnbhgzUfcCbtDO1rtefF/i/yz53/4O/
r3DZDLd5rwUV/XgSNnLO/asHV8mQORrUfxTWtr8FH+fDb7t+44YcbqDOlDuN/Hc+/
8f+W6VgBAfDSS2b+6adNN7qicitzBkIpFQqMAJ7RWidprZcB84Cby7pvIdwpu/
ThoYdKMXBcfpWoCpMQxVDch0whwENAJNADGABMcFOMwosdPGgGNAPTA1Npn8+kZ+WOiBYeEM764+upGlSV+
7vdz4a7N7Dl3i1M6jspT9UgZ4noFkH1gdUhzOm7BuDKllcy54Y5HHvkGP8d/
F+61OnC2bSzfLT2I77595sy73/0aNO5yLFj8PbbTghYlGvOeLLTErBore37I9sE9Ctim85KqVPAaWAG8KrW
OstRQqXUOGAcQFRUFLGxsU4IueySkpK8JhZvUN7Px7Zt4Sxe3JXQ0Czat19JbKylTPvrlphISlpauT4nrlD
evyeuUNHPid1DpvZa6yRgmVIq+yHTRPu0WuuP7N4eVUrNAvq7LVjhtR5/3HTfOmqUGfuhJLTWLNq/iLf/
eZvE9ESW3LYEgI61O/
LzqJ8Z0GRAnqpA5V3N0Jo82ONBHuzxIFvitvDxuo+5u+vdOeunb5zOgbMHGNd1HHXD6xZ7vz4+JvN26aXmg
dvYsVC/
vgs+gCgXVFn7BldK9QG+11rXtlt2F3CT1jrGQfqmgAYOAu2Ab4EZWutXL3Ss6OhovXbt2jLF6yyxsbHExMR
4OgyvUd7PxzXXwE8/wRNP5JZElEmrVqx6+ml63HKLE3ZWcZT374kreMs5UUqt01pHu2C/
nYEVWutgu2UTgH5a6yI74VRKzQV2aK0nOlhn/
3Cp6zfflP0Ja1klJSURFuaix8vllDPOybp1VZkwoROBgRa+
+GI1UVHpF94IyLBmsCh+Ed8f+Z59yfsACPQJ5MtuX1IrqFaZYiqV74CzkDwkmdAGnhkkzqqt3LrmVo6kHsF
X+dI3si8j64+kTUSbYu/j2WfbsXRpTfr3j+fZZ7eVOSb5vynIm85J//
79HV4bLlgCoZSKpfDShOXAA0D+1pMRQKKjDbTW+
+zeblFKvQA8BlwwAyGEK6xZYzIPwcGm+pJTWK3STYUQRhhwLt+yc0B4URsppW4DooE7Ha3XWk8FpoJ5uOQN
mTBvyQx6k7Kek4wM0/sPwLPP+nLDDRdfcJvE9ETeW/
0e7697n+NJxwGICo3ige4PcHf03USGRJY6nrJYPX41KdtTCB0Y6rHvidaaLxt/
yQdrPmDujrksPrmYxScX06dhHyb0msDQlkPxUUVXv50xA9q0gcWLazFpUq0yjwQu/
zcFlYdzcsFK2lrrGK21KmTqDewC/
JRSLew26whsLWYMGpDWpsJjnn7avD74INSuXXTaYqtEA8kJcQFJlOAhE4BS6hrgNWCI1vqU60IT3u6NN2D7
dmjRAh59tHjbWLWVV5e9yvGk43So1YHPh33OwYcO8nTfpz2WeQDQVluNDw8+W1JK0b9Jf364/
gcOPHSAJy55giqBVVh6aCnDvhnG3B1zL7iPRo1yr5v33GPG5hCVT5lbeWqtk4HZwAtKqVCl1CXAMEzbhgKU
UkOUUlG2+dbAM8BPZY1DiNKIjTW9L0VEmDq2TlOJBpIT4gJK9JBJKTUY+AS4Smu9xQ3xCS+1bRu8+KKZ//
hjCAwsmEZrzZKDS7hlzi2kZaUBUCWoCu8Meoc/x/
zJpns2MbbTWAL9HGzsbtlN67zk2VL9iPq8dtlrHH74MO8Meoc+DftwVcvcWoW/
7PqFk8knHW47YQK0bQu7d5sB/
UTl46w7nPFAMBAPfA3cq7XeCqCUaqiUSlJKNbSlHQBsVkolA79hMh+vOCkOIYpN69ynKBMmQPXqTty59MIk
BFCyh0xKqUuBWcAIrfVq90YqvElWlhl7ICMD7roL+udrSp9pyeSrLV/
R7ZNu9JvejxmbZzBr86yc9Xd2uZOBzQaivKgkWFtsJRBedmkIDwznoZ4PseS2JTld18YnxzPy+5E0/
L+G3PPLPexK2JVnm8BAmDbN9Ib11lvgJc1ThRs55WustT6ttb5Gax2qtW5oP4ic1vqQbayHQ7b3E7TWUba0
TbXWz2qtix6+VggX+P13WLECIiOd2PYhm1RhEsKew4dMDh4wPQNUAX6zLU9SSv3uoZiFB732GvzzD9Sta6o
xZTubdpY3l79J03ebctPsm1h3fB2RIZE82/dZhrYc6rmAiyEnA1EOmsclpidyWdPLSMtK4+N1H9P6/
dYM+2YYSw4uIbvznZ494eGHzbipY8bI2BCVjQzQIyolqzW39OHJJyG8yOacpTyAlEAIAZiHTMA1DpYfwq5X
fK21dNkqWL0ann/ezH/xBVStmrtuyKwh/HPkHwBaR7bmkZ6PMOaiMeWjG1ar7bUcXBqaVW/
Gz6N+ZvvJ7by98m1mbJ7BvJ3zmLdzHtF1o/l77N+E+Ifw0kvwxx+wdaspyf/
wQ09HLtylHHyNhXC+WbNg40bzdOvee11wABmJWgghSuzMGbjxRvNU+
+GHIbTVSg6fO5yzflyXcQxoMoBfR//
K1vFbuavrXeUj84BdCUQ5ujS0qdmGT67+hIMPHeTZvs8SGRJJ9eDqhPiHAKb3wk+mpxAQAB99BD/
+6OGAhdtIBkJUOomJuQ2mX37Z/AA6nXTjKoQQJaK1GZxs/
35o0uY0y1v2o9dnvZiyckpOmrGdxrLwloVc0eKKC3Y36m3KUxWm/
KLCopjcfzKHHjrEp1d9mrN85eGVDF5Yh0vumAvAbbeZhtWi4itf/
31COMFLL8GJE6b+psvGeZM2EEIIUSJPT05m3jxQwWfZf3lXVsctoVpQNWqG1MxJ402NokvKWxtRl0SwfzAN
qjTIeT9/z3zOp59nca1rUe2+JzERBg9N5exZz8Uo3KMcf42FKLmdO+Gdd0zPEe++68JmCtIGQgghiu2+t/
7i1cmhgBV9zRhatwjioys/
4vDDh3m679OeDs85ylEbiOKa3H8ya+5aw6gOo1BXj4PIbezbFUyTXuuYt3W+p8MTLlSBvsZCFE1r09tSZib
cfjt06+bCg0k3rkIIUSirthKfHA/AqlXw2bMxALS6cTrzX3iAreO3ck/
0PYQGhHowSueqCCUQjkTXjearEV+x/4lN3DllDiosjrPbu/
L0w5HYOmwSFVAF+xoLUbhffoH586FKFXjF1SOPSBUmIYQo4HjicV5Z+grN3m3GjT/
cyI4dcOWVkJbqy3WjE9n+1e0Maj6o3LVvKI6KmoHI1rBKQz655WkW/RFKQFAm/
y6I5oUXzLpP1n3C6B9Hs/zQ8pxuYEX5Jt24ikrh3Dm47z4z//zzUKuWiw8oVZiEEAIwpQ0L9y3k43UfM2/
nPLKsWQBknWrEgKetJCT4cOWV8NX0cCryc5cOv3RAZ2o2+2z2dCguFdMrjB+/
h2HDzPW2ShX4LPA9tsRv4et/v6ZjVEfu6nIXozuMplpwNU+HK0pJ7nBEpTBhAhw+bKot3X+/
Gw4oVZiEEIKdiTtp/m5zBs0cxOzts9Fac23ra/
m8z9+oLxZz7KgPvXvDd9+Bv7+no3WtajHVqD6wernshamkhg413bqC6Y538LG/ebL3k9QMqcmmuE3c//
v91JlSh9E/jmZn4k7PBitKRe5wRIX3xx/
w6acQEADTp4OfO8rdLBYpgRBCVDpJGUmsObom53294HqcSDpBoyqNeKn/Sxx+
+DBPNZvNxNF9OXxYcckl8NtvEBLiwaCFS4wbB9OmmU5L3nypGj6LX+HQQ4f5esTXDGw6kAxLBl//
+zVHU4/mbGPV1iL2KLyJVGESFdq5c3DnnWZ+8mRo29ZNB5aB5IQQlYTFamHxgcV8uelLZm+fTYh/
CEcfOYq/
rz9hfmGsunMVbWu2xdfHl99+g5EjISUFBgyAOXMgPNzTn8A99j6x1wwid7mnI3Gf2283Yy3dfLMZd+ns2UD
eeedGbmx/
IwfOHmDm5pl0z+qek37cz+PYlbCLG9vfyMi2I6kZWrOIvQtPkgyEqNAefRSOHIHu3U01JrfQ2kxSAiGEqKA
sVgvLDy/
nx20/8uP2HzmamPsUuWPtjpxIOpEzXkCHqA4ATJ0K48ebAtpbboFPPjElw5WB1prDb9hG1B7k2VjcbdQoCA
qCG26ADz6Abdvg22+hcc3GTOo7idjYWAAyLZnM2zmPkyknWXpoKQ/+/
iADmg5gVPtRXNP6GqoGVfXo5xB5yR2OqLB+
+MEUnwYEwOefu6nqEkgDaiFEhbc5bjP9pvfj3dXvcjTxKE2rNeW5fs+x+4HdLL99eZ7BxhITTYbh7rtN5mH
SJFOdtLJkHgDQ0PT1pjR5tYkphahkrr0WFi+G2rXNa3Q0bNiQN42/
rz97H9zLjGtncGWLK1FK8efeP7ntp9uIeiuKWZtneSZ44ZCUQIgKaedOuO02M//
mm26sugSSgRBCVBjn08+zcN9Cft31K6dST/HTjT8B0Kl2Jy5tcild63RlRJsRdK/
X3eEo0bt2hTFuHOzebaqyfPghjB3r5g/
hBZSPouHjDQHYH7vfw9F4xiWXwNq1MHw4rF4NvXqZLtUvuig3TXhgOGMuGsOYi8aQkJLA7O2z+frfr4k9EE
vnOp1z0s3cPJNjiccY1moYrSJbeeDTCMlAiAonORlGjICkJFNk+sADbg7AagXfStDNhhCiwtFasyV+C7/
v/p3f9/zO8sPLc7pdBTiRdILaYbVRSvHXLX8Vup/
0dHjrLZg8uQuZmdChg6m20qaNOz6F8Fb16sHff5vr8qefwiOPQPv2nZk9G1q0yJu2RkgN7up6F3d1vYu4pD
iiwqJy1r23+j1WH13NEwufoGWNllzV8ioGNh1In0Z9CPGXFvnuII9JRYWitSkm37oVWrc2P1Bub8ssPTAJI
cqRDEtGzvycHXPo+L+OTPxrIn8f/ButNb0b9ublS1/m33v/
JSo0qog9GQsXmqfKkyZBZqYP995rRpuuzJkHa5aV+G/
jOTnnpKdD8bigINP+Zd48U6Xp33+r0LEjvPoqpKY63sY+8wDweK/
Hufmim6keXJ1dCbuYsnIKg2cNptrr1Xhj+Rtu+BRCSiBEhfLeezBrFoSGwo8/QliYB4KQKkxCCC926Nwh/
j7wN7EHYvn74N9c3OBiZlw7A4CYxjHUj6jPwKYDGdJ8CAObDSx249Vt2+C550z7M4BWrWDcuI088kgn13yQ
csSaYmXbjdvwDfOFnz0djXe46irzsO/
GG0+wYEFtnnrKjB3x8stw001FX0ZHtB3BiLYjyLJmsfzQcubvmc+CfQtYf3w9DSJy29/
M2zmPzzZ8Ru+GvbmkwSV0qdOFQL9AN3y6ik8yEKLC+OEHeOghM//pp25u92BPqjAJIbzMTzt+4ut/
v+afI/9w8NzBPOvsb6iqB1fn0EOHHLZnKMyOHfDCC/
DNN6YUODgYnnnG9IK3YsVZZ32Eck1btJmRS0Me1avDU0/
t4IknajNhAmzcaBrcT5kCEyfCddcV3QGKn48f/Rr3o1/jfrzKqySkJBDkF5Sz/uedP/PTzp/
4aadpuxPoG0i3et3oVb8XMY1jGNJiiIs/YcUlGQhRISxZAmPGmIvXyy/
DjTd6MBipwiSE8ICUzBS2xm9lc9xm1hxbw7iu4+hSpwtgek36duu3AFQJrEKfRn2IaRRDv8b96FS7U579FC
fzYLXCggWmW85ffjG/vf7+cMcd8NRT0KDBBXdRqWRnIJRvJeyCqRgGDIB162DGDHj6adi0yXT/
+uSTpp3ErbdCRMSF91MjpEae95P6TqJ3w94sP7yc5YeXs+3kNpYdWsayQ8tYemhpTgYiy5rFa8teo3PtznS
p04U64XVc8TErFMlAiHJvyxa4+mrTaG/8ePOD41FShUkI4QZWbeXVpa+yKW4Tm+M2s/
v07jwj+Tav3jwnA3Ftm2upG16X7vW65wzqVhoHD5qShk8/hT17zDJ/
f9Pr3VNPQaNGZf5YFZPtzyIZiML5+JiMwg03wJdfmlKIXbvgwQdNacSIEeZ71q9f8S+xjao24tZOt3Jrp1s
BOJ16mpWHV7L88HIaVcn9sm4/
uZ1nFj+T875OWB061u5Iu5rtaFuzLcNaDSuQOansJAMhyrUdO2DwYDPi9PDh8O67Hmg0nZ9UYRJClJHWmlM
pp9iVsItdCbvYmbCTXQm7SMpI4s+b/wTAR/
nw4doPOZZ4DABf5Uu7mu3oWLsjnWt3Zkjz3OoZ7Wu1p32t9qWKZe9eU8rw7bewcmXu8gYN4J574M47oVat0
n/WyiCnCpM8W7qgoCAYN858r+bNg//
7P9Nz04wZZmrQAIYNg2uugb59TQa2uKoHV+fKlldyZcsr8ywPDQjlkZ6PsO74Ojac2MDxpOMc33Oc+XvmA9
BzfM+cDMQHqz9g9+ndNK/enGbVmtGsejMaV21MgG9lGthEMhCiHNu4ES6/
HE6eNE8kZs70kvt2KYEQQlyA1pqE1AQOnj3IwXMHaVezXU5/9rM2z+KB3x/
gTNqZAtspFKmZqQT7BwPwXL/
nCPQN5KKoi2hbs61TGoiePAkrVsBff8Hvv+eWNIBp33D11TB6NFxxhRsH6CznpApTyfn4mEzCNdfAvn1m8M
EvvoBDh+D9981UtSr07w+XXmpe27Yt3UPEptWaMmXQFMCU7O09vZd/4/9l68mtbDu5jRbVc/uY/
WbrNyw7tCxvrMqHBhENGNV+FK9e9ipgqhSuO7aOBlUaUDe8boXLYMi/viiX/
vkHhgyBs2dNJmLOHHNh8wrSBkKISktrzZm0MxxPPE5iRiI96/fMWXfbT7dx8OxBjicd59C5Q6RkpuSse/
2y13k88nEAgv2DOZN2hvCAcFrWaEmryFa0rN4yZ97fN/
eR67iu48oU75kzsHmzqXO+caPJOOzcmTdN1aowcKAp5R061EO925VXb7wB3bpBs4uBQjIQixfDmjXw+ONuD
q78aNrUNNR//
nkzGN3cufDTT6bnrzlzzASmUXbXrmak6+zXhg1LlqnwUT60qNGCFjVacG2bawusf6r3U2yJ38Le03vZe8ZM
h84d4uC5gyRmJOak23FqB32n9815HxUaRf2I+jSo0oD64fWZ2Hsi9SLqAXDw7EEs2kKt0FqE+oeW5hS5nWQ
gRLnzxx+mLmRyMlx7LXz9NQR6U69sUgIhRLmXnpXO+fTznE8/
T2JGIufSznE69TQJqQn0b9yfZtWbAfDVlq/4aO1HJKQkcPzccRKXJGLRFgBqhdYibkJczj4X7V/
EoXOHct5XCaxCo6qNaFilIY2rNs5ZPqjZII4/
epyo0KgS9YZU6GdJhwMHTFWkvXvN09zdu03G4fDhgumDg6FHD+jTx1QR7d5dShpKrVs3uP569H+/
A1TBKkyLF8P118N333kiunLHx8d8H7t3N6NY79tnTuHixbBoERw/
bhr3L1iQu03VqqZL4VatoGVLM7VoYapCVa9e8hKLIS2GFOi9KcOSwYGzB/KUMli1lZ71e3Lk/
BGOJR4jLjmOuOQ41h1fB8BDPR/
KSTvxr4l88+83AAT7BRPhG0HD3Q2pFVqL3g17M7H3xJzjfLf1O6oFVaNacDWqBlWlWpB5zS6VdBf5SRDlht
bw5pumkbTVavqJnj7dCy9s0gZCiDyUUtWBacDlwCngSa31V4WkfRh4AggGfgTu1VqnF7X/TGsm+8/
sJyUzJWdKzUolJTOFAU0GUCWoCmC6Ml17bG1OmsSMxJxMQssaLZl61VQAEtMTiXit8C5fZlw7IycDcTL5ZI
HqDBGBEdQJq0Pd8LporXMyAf+78n/4+/
pTO6w2DSIa5MSVX2hAKKEBhT+FzMgw7b7Ons2dTp+GEyfMdPx43teTJ83vpyPBwdC+PXTsaKbu3aFz55LVK
xdF6N8fvvsOPeJB4D1UeiqNvpwJSUmmsv+oUSbz0L+/
pyMtl5o2NdMdd5jv+JEjpjentWvNtG4dnDplBjJctarg9sHBUL9+7lSrFkRG5k41a5rXGjUgPLzwh5UBvgG
0rNEyz7LoutGsvMM0GsqyZhGXFMeR80dyJvuenqoFVaNRlUbEJceRmpVKalYqccfMwwcflZvrPJVyipvn3O
wwhkDfQObcMCcnc/P5hs/5+t+vCQsIIzwwnDD/MMICzFQrtBZ3R9+ds+3i/
YvxUT4E+wcT7BdMsH8wIf4hRAQW/jvobbdeQjiUkmJ+IL4xGXSeew6efdZLH/
RLFSYh8vsAyACigE7Ar0qpTVrrrfaJlFKDgInApcAxYA4w2basUJtPbKbpOy0ABVrZXn1AK1bc8Q8dal2E1
Qo/rF/
AzM0zc9Npn5z501H+HI82NyEWayj+SU0I8QsjPCCCsIBwwvzDqRJYlaqB1fE905pdu0za9up6pnXvTZhfVf
ZuPUTPzr1R2p/
MTMjKMo2Ps+czM4eQlQUHs2BZplmempp3SklxvCwxMTezUNhovYXx8YHGjc2NVrNmZmraFDp0gObN5XmHy/
XvD2+/A7eBijtG4+nTTdG5xQK//SaZBydRypQqNGhg2k2A+R+NjzfV8nbtyp327DGZjXPnTGnc7t3FO4a/
v8lIOJpCQkwGI3sKCrJ/
70dgYD3b1IN6gbAw3vzv+frC8MAPGdkRfHw0GTqVFRuW0qBFXc5lnCYiKJStW02602n+XFXzP5zPPMP5DDO
dSz/LuYyzpFvSST0XxqlT5lys33eABVvXABqUzvPaqGojbm57N0qZtMO/
GsXZtNMF0o3tPLbQcyEZCOH1Nm6Em2+Gf/
81dW9nzMj9cfBKUoVJiBxKqVBgBNBea50ELFNKzQNupmDG4FZgWnbGQin1IjDLQbo8WhxvyfsvTnW4LvGVM
6zgbwBuZiQ3M5LfqcP/YZ4WtiCR91nPHsKo+1j2Vj78wedFHDGZA7Z9AtQH9gBPkXsj+Ad/
4wtcQb+cZR+wjuYkFfVRChjkYPsHfbpwqlo4VavCbed20SPheE41jOwbgvzzHLVNS6HLyi6EdwkHYNf4XRy
fdpwWH7Sg7p11ATj26TF231fMOyobR9vXuaMOXG/WJ65PZP3F60u0zzp31KHlhy3zbB/WOYyu/
3TNSfN34N+Fbe5QYdv3S889z+t6riNpQ8n+To62tz/
PR76zNaLWFhQa0tLMHWZaWomOI0pGKYiKMlPfvgXXnz9vMhLZ06lTBaeTJyEhwWTiMzNNad/
p0y6LGAgBBhWyvibwf4VuPeIt+3eTbVNBB4HQJ+yXnHCYbjpAIb+FkoEQXisrC157DSZPNvMtWpiGUx4bYb
q4pAqTEPZaAhat9S67ZZvA7s44Vzvgp3zpopRSNbTWCfYJlVLjgHHmAC0JoJA6Og4E
k041TqPQVCWFADRBZBLFCRQahS7R/gDCSaY7q/AnEz+yyK4JPZSfc5bVpCoBBBS5n/
z+4lKCSSWC85xnAuk0YbU1moiEXZAAO3mU4wylsHAdLu4aDeyyrX8UzVC4626465ecqDWPlihOR9vrj6YS8
9EU27KWaD4u0S71R1Mh3/
Z61TpQ0blpWFyyfRa2vV1FeM3HaFrm37RojrbPd55hKNVYl7tNWhpcdVXJjlMBxXjw2BFAW9t0IRpIJ5BEw
gtMSYSRTCjpBBZrSiOITPyx4IsFX7Lwy5kvbCosjc751XL2VPSDUMlACK+0fr3pX3zNGvP+vvvg9dchtDx0
TiBVmISwFwacy7fsHBBejLTZ8+FAngyE1noqMBUgumu07rvCwePFQvT1gVf8zf+otlZHZ9ajr4LbA3L/
b63ptYu9PwAUNFixhJiYGNv2ZuSwmEC7fWZYC73RL4xP4KIC2yv/
HeBjblhbZFppYS1s60JCdbC98usHth6C6lg0tbNKFqjD7X36Ert8KDExMYRZNX0zS/rh+4K/
eaSas73qCwG5PU/1TS/phy9k+8Dc2LqU4u/kaPs853nuL7S48Wp80nN76SEoCL7/3nRtVYnFxsbm/
N94MwUE2aaaLj6WN52TwhqZSwZCeJVjx8ww9l98YeouNmwIn31mhrkvN6QKkxD2kjAP+uxFAInFSJs97yht
LgU+gaX7n1M+ChVY8ApZ2v0Vtb1PQBn36WB7H/
8y7tPB9spXlWm8AkfbF3aei73P8v53CgsCq6m2pNPTUYGB5mFTUFCZjiWEp8hdjvAKCQmmYXTLlrk9Kz36K
GzZUs4yDyBVmITIaxfgp5RqYbesI7DVQdqttnX26eLyV18SolxZvNj0tvTbb/
D99xy47TZT8vDbb2b54pJVwxLCG0gJhPCoo0dhyhSYOtWM6wBmbIc33jC9g5RLUoVJiBxa62Sl1GzgBaXUn
ZhemIYBvRwk/xKYrpSaBRwHJpHdjk+I8sh+nAdbb0sHw8Jokl095bvvCqwXojyQuxzhdlYr/
PknjBwJTZrAO+
+YzMPgwbB0KcyeXY4zDyBVmIQoaDxmXId44GvM2A5blVINlVJJSqmGAFrr+cAbwGJMRyEHgec8FLMQZbdmT
dGZA9s4ETkN/oQoJ6QEQriF1mbU0x9/NN2wHjhglvv4mIzEk0+awYsqBKnCJEQeWuvTwDUOlh/CNJy2X/
Y28LZ7IhPCxR5//MJp+veX0gdR7kgGQrhMejosXw5//
GFKFfbsyV3XqBHceSfcdhvUq+e5GF1CqjAJIYQQogKTDIRwmqQkUwq7ciUsWWIm+xFTa9aE4cPhuuvg0ksr
8D22VGESQgghRAUmGQhRYlqbERu3bMmdVq6M5sABc+9s76KL4PLL4coroU+fSlKzR6owCSGEEKICc0oGQil
1PzAW6AB8rbUee4H0DwNPYBrV/YhpUJfujFhE2VksZuj2Eyfg+HHYvx/
27ct93bfPDP+eVxi+vtClC1x8MfTqZUoZapdwLKYKQUoghBBCCFGBOasE4hjwEjAIkykolFJqEDARuNS23R
xgsm2ZcAKr1bQ/SE2FtDRITIRz58x09mzufPb7s2chPt5kGE6cMJmH/
CUJ+dWoAR065E6Zmeu59dYu5WOkaFeTNhBCCCGEqMCckoHQWs8GUEpFA/
UvkPxWYJrWeqttmxeBWRQjA3HmjBl7Revs4+ZO9u9Lu64kaXfvrsfmzSXfzmKBrCwzFWfe0brszEF2BiH/
a7oTynIiI03pQe3a0LgxNG1qulzNfo2MzDu8eWzseck8ZJMqTEIIIYSowDzRBqId8JPd+01AlFKqxoVGG92
3z4y34h1aXDiJBwWqdIJ90glS6YT5pFDFN4mqvolU8UnKnbe9r+qbSC2/09T2O0Vt/
wRq+p3BX2WZHcXbptVFHy86KQnCwopOVFkkJpohtYUQQgghKiBPZCDCgHN277Pnw4ECGQil1DhgHEBwQBsu
br8flEblrAdl997Rutx9FbUu//
qi12VZsvDz9SvW8XPXgZ+PFR8fja+PFV9f26uPxtfXvPr4aPx8rPj6WvFROieNn6/Gx8csC/
S3EOBvITAgiwA/
C0EBtvf+WQT4WwjwsxSzBk0AUN02NcICHLVNJZWSmkpIcJG11yqVjBo1SEpKIjY21tOheBU5JwXJORFCCFH
eXDADoZSKBfoVsnq51rp3CY+ZBETYvc+eT3SUWGs9FZgKEB0drf9a26SEh3ON2NhYYrKHohfExsbSTc5HHv
IdKUjOSUFyToQQQpQ3F8xAaK1jnHzMrUBH4Dvb+45A3IWqLwkhhBBCCCE8zyldxSil/
JRSQYAv4KuUClJKFZY5+RK4QynVVilVDZgETHdGHEIIIYQQQgjXclZfk5OAVExPSmNs85MAlFINlVJJSqmG
AFrr+cAbwGLgoG16zklxCCGEEEIIIVzIWd24Pg88X8i6Q5iG0/
bL3gbedsaxhRBCCCGEEO4jo10JIYQQQgghik0yEEIIIYQQQohikwyEEEIIIYQQotgkAyGEEEIIIYQoNslAC
CGEEEIIIYpNMhBCCCGEEEKIYpMMhBBCCCGEEKLYJAMhhBBCCCGEKDbJQAghhBBCCCGKTTIQQgghhBBCiGKT
DIQQQgiXUEpVV0rNUUolK6UOKqVGF5H2VqXUOqXUeaXUEaXUG0opP3fGK4QQongkAyGEEMJVPgAygCjgJuA
jpVS7QtKGAA8BkUAPYAAwwQ0xCiGEKCF5uiOEEMLplFKhwAigvdY6CVimlJoH3AxMzJ9ea/
2R3dujSqlZQH+3BCuEEKJEylUGYt26daeUUgc9HYdNJHDK00F4ETkfBck5KUjOSUHeck4aOXl/
LQGL1nqX3bJNQL9ibt8X2FrYSqXUOGCc7W2SUmpnqaJ0Lm/
5W3oTOScFyTnJS85HQd50ThxeG8pVBkJrXdPTMWRTSq3VWkd7Og5vIeejIDknBck5KagCn5Mw4Fy+ZeeA8A
ttqJS6DYgG7iwsjdZ6KjC1LAE6WwX+W5aanJOC5JzkJeejoPJwTqQNhBBCiBJTSsUqpXQh0zIgCYjIt1kEk
HiB/
V4DvAYM0Vp7yxM4IYQQdspVCYQQQgjvoLWOKWq9rQ2En1KqhdZ6t21xR4quljQY+AS4Umu9xVmxCiGEcC4p
gSg9ryo69wJyPgqSc1KQnJOCKuQ50VonA7OBF5RSoUqpS4BhwAxH6ZVSlwKzgBFa69Xui9SpKuTfsozknBQ
k5yQvOR8Fef05UVprT8cghBCiAlJKVQc+AwYCCcBErfVXtnUNgW1AW631IaXUYqAPkGa3i6Va6yFuDlsIIc
QFSAZCCCGEEEIIUWxShUkIIYQQQghRbJKBEEIIIYQQQhSbZCCcQCnVQimVppSa6elYPEkpFaiUmqaUOqiUS
lRKbVBKVbr6y0qp6kqpOUqpZNu5GO3pmDxJvheFk9+Oik3+vvL/
b0+uDXnJd6Nw5eG3QzIQzvEBsMbTQXgBP+AwZqTZKsAzwHdKqcaeDMoDPgAygCjgJuAjpVQ7z4bkUfK9KJz
8dlRs8veV/397cm3IS74bhfP63w7JQJSRUupG4Czwl4dD8TitdbLW+nmt9QGttVVr/QuwH+jq6djcxdb3/
QjgGa11ktZ6GTAPuNmzkXmOfC8ck9+Oik3+vob8/
xtybShIvhuOlZffDslAlIFSKgJ4AXjU07F4I6VUFNCSIgaOqoBaAhat9S67ZZuAyvyUKY9K+r3IQ347Kjb5
+xauEv//y7XhAirxdyNHefrtkAxE2bwITNNaH/Z0IN5GKeWPGRTqC631Dk/
H40ZhwLl8y84B4R6IxetU4u9FfvLbUbHJ39eBSv7/
L9eGIlTy74a9cvPbIRmIQiilYpVSupBpmVKqE3AZ8I6HQ3WbC50Tu3Q+mNFmM4D7PRawZyQBEfmWRQCJHoj
Fq1Ty70WOyvjbUZHItSEvuS4Um1wbCiHfDaO8/
Xb4eToAb6W1jilqvVLqIaAxcEgpBebpgq9Sqq3Wuour4/OEC50TAGVOxjRMI7ErtNaZro7Ly+wC/
JRSLbTWu23LOlKJi2RBvhf5xFDJfjsqErk25CXXhWKTa4MD8t3II4Zy9NshI1GXklIqhLxPEyZg/
vD3aq1PeiQoL6CU+h/QCbhMa53k4XA8Qin1DaCBOzHn4jegl9a60l4o5HuRS347Kjb5+xYk//
+GXBsKku9GrvL22yElEKWktU4BUrLfK6WSgDRv/CO7i1KqEXA3kA6csOWgAe7WWs/
yWGDuNx74DIgHEjD//JX5AiHfCzvy21Gxyd83L/n/
z0OuDXbku5FXefvtkBIIIYQQQgghRLFJI2ohhBBCCCFEsUkGQgghhBBCCFFskoEQQgghhBBCFJtkIIQQQgg
hhBDFJhkIIYQQQgghRLFJBkIIIYQQQghRbJKBEEIIIYQQQhSbZCCEEEIIIYQQxfb/
EmZZvOr19lwAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 792x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"z = np.linspace(-5, 5, 200)\n",
"\n",
"plt.figure(figsize=(11,4))\n",
"\n",
"plt.subplot(121)\n",
"plt.plot(z, np.sign(z), \"r-\", linewidth=1, label=\"Step\")\n",
"plt.plot(z, sigmoid(z), \"g--\", linewidth=2, label=\"Sigmoid\")\n",
"plt.plot(z, np.tanh(z), \"b-\", linewidth=2, label=\"Tanh\")\n",
"plt.plot(z, relu(z), \"m-.\", linewidth=2, label=\"ReLU\")\n",
"plt.grid(True)\n",
"plt.legend(loc=\"center right\", fontsize=14)\n",
"plt.title(\"Activation functions\", fontsize=14)\n",
"plt.axis([-5, 5, -1.2, 1.2])\n",
"\n",
"plt.subplot(122)\n",
"plt.plot(z, derivative(np.sign, z), \"r-\", linewidth=1, label=\"Step\")\n",
"plt.plot(0, 0, \"ro\", markersize=5)\n",
"plt.plot(0, 0, \"rx\", markersize=10)\n",
"plt.plot(z, derivative(sigmoid, z), \"g--\", linewidth=2, label=\"Sigmoid\")\
n",
"plt.plot(z, derivative(np.tanh, z), \"b-\", linewidth=2, label=\"Tanh\")\n",
"plt.plot(z, derivative(relu, z), \"m-.\", linewidth=2, label=\"ReLU\")\n",
"plt.grid(True)\n",
"#plt.legend(loc=\"center right\", fontsize=14)\n",
"plt.title(\"Derivatives\", fontsize=14)\n",
"plt.axis([-5, 5, -0.2, 1.2])\n",
"\n",
"save_fig(\"activation_functions_plot\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def heaviside(z):\n",
" return (z >= 0).astype(z.dtype)\n",
"\n",
"def mlp_xor(x1, x2, activation=heaviside):\n",
" return activation(-activation(x1 + x2 - 1.5) + activation(x1 + x2 - 0.5) -
0.5)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAmkAAAEMCAYAAACfoCGmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
AA7kElEQVR4nO3dfZycdX3v/
9dns9ncBwKJyQmwCfdRbAMCSqUooBy1rRpBz7FgKoim9aYClUd+9FepiFb55aCHelPOoUegRrAeFVBbpY1F
TuFQK2JBwUYUSEJIAxGWJJub3ezu5/
fHdQ1MJrO7M9d8r9t5Px+PeSQ7c811fXbmyjfv+V7XZy5zd0RERESkWHryLkBEREREDqSQJiIiIlJACmkiI
iIiBaSQJiIiIlJACmkiIiIiBaSQJiIiIlJACmkZMLOlZuZmdkoG27rbzL6QwXYWmdk/
mtkuM8v9e1zMbIOZXZ7Ddi80s8Gst9tMO6+BmV1lZg9PsswXzOzuIMVJ5WhcS19e49pkilRXK7WY2aCZXZh
RSUH15l1AEZnZScCPgR+6++ltPvdu4GF3/1Dd3U8C/
wn4dcAaLwS+4O6zGx46F9gXajsTuBxYDJwI7Mxge0AULoC3u/
vLGx46FdiVVR0F1c5rcC3w+RRrkYLRuNYSjWutKVJdRaolOM2kNfc+4K+Al5vZSztdmbuPuvtWdx/
pvLRJt/
Wcu2cxuBwDPODuv3T3rRlsb0Luvs3dd+ddR57aeQ3cfdDdn027JikUjWuT07jWgiLVVaRaUuHuutXdgBnA8
8BvAl8Crm2yzGnAXUTpfTvwT0Sfvm4GvOG2NL45cApRMN4M/HHDOo+Llzkp/vlPgJ/G23gK+F/
AwfFjZzbZzlXxY3cTfRKtrXce8DfAALAH+D5wQt3jFwKDwOuAh+Pt/
QA4coLXaEPDtm+O73eiT4ONy15e97MDq4Cvx9t6HHhXw3MWA7cAzwK7gQeBs+JaG3/
vC8fZTj9wO9Gn4Z3AbcDhdY9fFf++7wQei5e5A5jf5v7S0usHvBl4ANgLPAH8BdBX9/i7gPvjOp6JX5/
D4sda3WcaX4M/BB6Nt7kN+Aegt/73r1t2CtHs2kB8uw64Hri7bhkDVsev1x7gZ43vnW7FvKFxTeNae/
vLQcBaorFob/z7XDrB738c8H/iZX8B/E78+td+j9q+8s54uT3AvxHtjy8H7otft3sb3yOicexXwHD85/
smeS+OifeXWi2/V19L2W65F1C0G7ASeCj++5nxTjq17vHl8Q52A9GU+Evjnag/
3rHvA24EFsW3KXU76CnxOv4b0SGH+u1+HHik7udLgbPj576WaGBbGz/WB1wS79S17cyOH7ub/
QezbwHrgdcAvwF8m+gwxYz48QuJDiN8H3hl/I/m34B/mOA1WgCsA74Wb/ug+P5WB7PNRKHkGODT8T+
+JfHjs4BfAv83rvlookMdZxH9R3Nt/PvUfu8ZjdshChM/id+LU4n+E/kh0aEei5e5Kv6He3v8O/
8WsBH4n3W1nhnXe+YEr8Wkrx/
wBmAHcFH8+5xFNHhcW7fMe4gGtqPi9fwA+Oe6x1vZZ+pfg1OAEeACYAnRfnsZ44e01UT/
Mf8XYBnRodAd7B/S/
iKu+43AkcD5RPvg7+b971a3iW9oXNO49mKtZzL5uPZ5ohD5yvi9OhN4R7PfnyigP0IU6k+Mt/mv8et/
YbzM0nibtQC3jGiMezj+8yzghPh3+U7ddt4Wr+dDREHwj+Of3zxBLT8D/
hk4CTg9XucLtZTtlnsBRbsRpfz6fxQbgPPqHr+FhoGo4fl3UzeYxPfVdtDaYPab8c/
H1C3zS+BPJ1jvG4EhoCf++UJgcKLtA8fG23lN3eMHEf1n/
N669ThwfN0yFxANMD0T1PN3xJ806+5rdTD7dN3PvUSfKt8V//w+ok9/TT/
50RAumm0HOAcYBZbWPX4UMAa8vm49e4kH4vi+PwN+VffzK4kGzldO8DpM+vrFA8aVDc9bQTSY2jjrXRav9/
BW95mG1+Dc+H2e08rrCGwB/qzu5x6iWbi7459nEf0nfkbDeq4DvpvFv03dkt/
QuHbAv8tx6tG4Fi3zbeCmCR6vr+sNRB8ID6t7/
NXsPyNY21f+sG6Z34vvO7fuvv3ef6JQe2PDtm8G7h2nlv8cv0b9dY//dn0tZbvpnLQ6ZnYMUfK+FcCjd/
gW4L11i51E9IkhMXf/KVHaPz/e7quIPlndWlfL2Wa2zsw2m1ltWruP6FNWq15K9A/
4X+q2vT3e9svqlhty91/U/bwFmAoc3Ma22vHTunpGiA7FvSS+6yTgp+7eycnILwW2uPuGuu08TvR71f/
eG+PXo2ZLXR24+4/cfZm7/2iS7U32+p0M/FncYTQYd4PeShR8FgGY2SvM7FtmtjF+v38cP7c/
rmXSfabBOqJP0E+Y2S1m9m4zm9NsQTM7iOgE8Pr9ZIzo03DNy4DpwJ0Nv8f74zqkoDSuvUDjGi2Pa9cD/
8XMHjKza83stRMsuyyu66m6++4neo8a/bTu70/Hf/6s4b5ZZjYz/vmlREGt3r3s//
vWeynwlLtvqrvvX8eppRQU0vb3XqJp/E1mNmJmI8AVwH82syPiZSzQtm4h+mRH/Oc97r4RwMyWAH8P/
DvwDqL/5N8TL9vXxjYmqtXr/t544m/tsXb3D2+yzalNlmvs0vK6bYV4fY39f7/GbbVSRzsme/
16iA77nFh3+02iGYFtZjaL6Hyx3USHpU4lmmGA/d/vcfeZRh6dZP0KosOXm4A/Bdab2eJ2f7mG3+XNDb/
HCUSfXqW4NK7t/5jGtUm4+/eITpO4FpgP/L2Z3ZSgrkb1tfkE9/
U0uY9J7qvVUikKaTEz6wXeTfSf2Yl1t+VE6f+ieNGfEJ1TMZ5hogFxMrcAx5jZacB/
Bb5S99gpRIPWZe7+L+7+KNFJp+1u5+dE7/Fv1e4ws7lE53D8vIUa27WNaEamtq2F9T+36CfAb5rZ/HEeb/
X3PszMltbVchTRa5jG7z2ZnwDL3P1XTW4jRJ9E5wP/r7v/s7uvp+6Tb52J9pkDuPuIu9/
l7n9KFApnER1iaFxuO/AfRCeOA2BmRnRYpObnRIelljT5HZoGRcmfxrUgunJcc/dfu/
tad78QuBh4t5lNa7Lov8d11b+XtWaSTv070eHKer/N+L9v7TU6ou6+VwaqJRelLTwFv0v0H+Vfu/
vD9Tfgb4H3mFkP0cmxJ5nZDWa23MyON7P3mll/vJ4NwCvjL3qcHz/nAO6+mehcpf9BdD7F1+se/
iXRe3OpmR1pZr9PdMJtvQ3AdDM7J97OzIbHcfdfEp1g+z/
N7Awz+w2iQXMH4x8m68RdwAfN7JT4O5luJjo/
oh23Ep3UfEdc85Fm9hYzOyt+fAOwJD48OH+cQeP7wEPALWZ2cvxlm7cQDZR3tVqImb3SzNab2SsnX3pCVwP
nm9nVZvZyM1tmZm83szXx45uIAtCHzOwoM/td4BONK5lkn2ms/
ffM7BIzOymewTgfmEM06DXzl8DquK7jic41e+E/
onhm7lrgWjN7j5kdY2Ynmtkfmdmqtl4NyZLGtc513bgWj1UrzOxYi76u5VzgcXcfarL4OqKGgL+J953TgM8
SzWS2OsM2nv8GrDSzD8a1/DHRDO2acZb/PtH5dl+Ox6ffAv47B86qloZC2osuBn7gzb876utEU7+vd/
cHgdcTzX78kOh49zt5ccr2WqJPRT8n+gTW37iyOmuJPtH+vbs/
X7szPrfjEqJ29Z8THa7Y7xuV3f0+ooHwq/
F2Vo+zjYuAHxGdCPojYCbwRnffM0FdSX2EqFX7buAbRO31z7SzAnffRdT19RTwHaKuoY/z4j/2bwLfJTp/
Zhvw+03W4UQn5m+La/kBsBVYET/WqpnA8fGfibn7PxD9Z3kW0XvwI6LDTZvix7cRzXasIHq/
P0b03jfTdJ9p4vl4fbVB63Kik6rvGWf5zwA3Eb1n/
0o0NtzSsMyVRCcmX070vqwDziP6ShEpJo1rnevGcW2IqJv7IaJzwuYQnerQ7HcbI+rCnEb0XvxN/Fyn/
TDbuO47iDo6LyPaZy4BPuDu35mklh6iffjLwCfj36eUrL33VkRERGR8Zrac6Cs8TnH3B3Iup9QU0kRERCQx
M3sb0ffb/ZLo6zY+S3QS/
0ltzvJJg6CHO83sQ2b2YzMbMrObJ1ju3Wb2gJntsKgVe018gquISC40fokkNgf4AtEhyVuIzn19gwJa50Kf
k7aF6PjvjZMsN5PohNH5wKuILt0x4VXsRURSpvFLJAF3/7K7H+fuM9x9sbuf7+5PT/5MmUzQT3/
ufhtA3HVy+ATLXV/
341NmdgvRSdUiIrnQ+CUiRVOUKfrXEHW7HCBu718FMH36tJMPP6LZ10flw72X6HshiyNUTaPew+jIFGy0sy
9qntLbw+hIcb7sWfVMrmg1bXxyw6/
dfUHedUxg3PELDhzDjujCMWykxYM2PT6FMRtNuZrJjXpUb68bI5bPETtv8k+w13oYafZAkA0m+x7YqT3Gvr
H2XqM0X9LeHmMkg/HLWjyS2+n4lXtIM7OLiL747r3NHnf3G4gu+suxx/
X7N75fnEPcW9ZfxuJl431dSz7C1TTK2oFXcdv/
eSXHr0n+XaXnXnoqt625P0A9YaieyRWtpo18vrBfljvZ+AX7j2HHHdfv3/
mn4nyw27D+cpYuuyaTbX1jxysmXeboJ1fw2BF3pF9MixY8/k5unflgbtvfsHn//
9svm72Ezwym+89h2qZ2Lv4AHz7mMD73q6cmX7DBnI3p/
F9+8RmH8aV7onoOeizdb97oW7950mU28lcdvWG5fk+ama0ArgHe1OE1zSQFK+fdx+0rruMXq5ew5+WH5V2O
SKFo/GrP2+f+JO8S2jZ3akdf89WxpYdvY+nh2zLd5lD/cCbb2bkk/
Ss4bT+62XcChzO8bNyzIoLJLaSZ2RuBvwbe7O4/m2x5yc/tK67juQ/
uUlATiWn8SqaMQe2cRevzLkFBrQNlD2qhv4Kj18ymE12DbIqZTW/
Wmm5mZxO16Z7n7j8KWYOkY+3ymxTUpNI0fmVDQS0ZBbXkyhzUQs+kfRTYQ3TJm3fFf/
+omfWb2WDddeCuJLqu23fj+wfN7HuBa5HAakFty3lH5l2KSBo0fmVEQS2ZaX3Zns+ooNa6tIJa6K/
guIro2n7NzK5bTu3qJbV2+U2s7X816ziNxd/
UJRulOjR+ZasW1FppKCiKcxatZ93WZbnWsPTwbQc0FKRpqH+47WaCJGpBLa2GAoiCWprNBLWg1kpDQat0gX
Vp28p593HOe37IL1YvybsUESm5ss2qnbNofe6zankc+qzKrNr2o6eValZNIU0SUeeniIRStqAG+R/
+VOdnZ8oS1BTSpCPq/
BSREBTUklFQS64MQU0hTTqmzk8RCWHelN15l9A2BbX0VCGodUohTYJQ56eIhKAZtWQU1JIrclBTSJNg1i6/
iXPe80MFNRHpyNvn/
qR0YU1BLT07l1gmDQVFpJAmQanzU0RCKWNQyzusZR3UxvrGKjOrlkXnZ7sU0iS4+s5PnzE173JEpMTKFtQg
/
1k1dX52pkhBTSFNUnP7iusYecmYGgpEpCMKaskoqCVXlKCmkCapOnLGs+r8FJGOKaglo6CWXBGCmkKapE6d
nyISgoJaMgpqyeUd1BTSJBPq/
BSRENT5mUyVg1qVOz8V0iQz6vwUkVDKGNTyDmu65mdyeXV+KqRJpnTNTxEJpWxBDfKfVVPnZ2eyDmq9mW6t
QsZGRunr/UvGRkbp6Z2Sdzmlc/uK61h55EUc8sXDmPHwU3mX0xXuuuBLDM+c/
LI7dw4A75t8fX27Z3L2LRd3XpjkYnRklKlTPsfoyChTSjyGvX3uT/
jGjlfkXUZbzlm0nnVbl+Vaw9LDt7Fh84LMtjfUP8y0TX2Jn//
Y2McYZeeky31gA3DE5OvrHZ3D8i1XJapl+9HTOOixoUTPbZdm0hLaM7CDHnucPQM78i6ltHTNz2y1EtDyXJ
9ka3BgELPHGRwYzLuUjmlGLZkyzai1EtDaMTKls/
VlNaOmkJbA2Mgow4O7MHOGB3cxNjKad0mlpc5PkeyNjoyye+duzJzdO3czWoExTEEtmTIFtaLJIqgppCWwZ
2AHePyDo9m0DqnzUyRbgwOD+41hVZhNA3V+JqWgllzaQU0hrU21WbR6mk3rnDo/
RbJRm0WrV5XZtJoyBrW8w1qVOz/Tlmbnp0Jam/
abRavRbFoQ6vwUSd9+s2g1FZpNqylbUIP8Z9Wq3PmZhTSCmkJaG5rNotVoNi2c21dcp4YCkRQ0m0WrqdpsG
iioJaWgllzooBY0pJnZh8zsx2Y2ZGY3T7LsZWa21cy2m9mNZpb/
RbIm0XQWrUazaUGp81OyVvXxC8aZRaup4GwaKKglpaCWXMigFnombQvwSeDGiRYyszcAVwCvA5YCRwEfD1x
LUBPNotVoNi0sdX5Kxio7fsHEs2g1VZxNAwW1pBTUkgsV1IKGNHe/
zd3vAJ6dZNF3A19y90fcfQD4BHBhyFpCm3AWrUazacGp81OyUuXxCyaZRaup6GwaqPMzqSoHtTJc8zOvKw6
cAHyr7ueHgIVmdqi77zdAmtkqYBXAggXz2bL+z7Or8gXbmT71aqyF93NoxzDbn/
0jYG7qVTWzb+9Ctqxfncu2mwlRz+uAE984i+dPP51pWzv7Bzxv0SzOXX1qR+sIKct67hwIv84sar/
zktQ30a6Wxy84cAzbsP7KbKrcz3b6ej/R0hi2a/s+Bp79AHmMYUN7F7Fh/
RWpbuMUYGB0ZkvLThs+mKOfXJFqPZM5Ov5zx77pHDI2k/N3n5h9EYfA0HDzuLBwyjQ+MjtwV/
7Loj96hl+cR/rQo2E3AfDhYw6DY6BneLJPL8k98KXOnp9XSJsNbK/
7ufb3OTR8inX3G4AbAI49rt8XL1uTSYH1dm0bYHjnvpaWNdvHQYd+mlkL5qVcVXNb1q8mj9doPKHqWRz/
+bY7LqX/uyOJLyV17upTuW3N/R3XE0qm9bRwqad2Fem1zFDL4xfsP4Ydd1y/
L112TeoFNtq+bTu7d7Q+hs079NMctOCglKs60Ib1V5DF67MUWrqU1NFPruCxI+5Iu5zWPf5Obp35YD7bjnN
t46WkPjJ7CZ8Z3JjaZju5lNRkPverF/8fmbMxvaDWiby6OwfZ/2Na7e9hr/
sQQCvnojXSuWnpUeenFEBpxi9o7Vy0RlU9N61e2Q59AsydujfvEip7+DOLi7MnkVdIewRYXvfzcuDpZocK8
tbSuWiNdG5aqtT5KTkrzfgFLZ6L1qjC56bVK2NQ03lq6SliUAv9FRy9ZjYdmAJMMbPpZtbskOqXgYvN7GVm
Ng/4KHBzyFpCSDKLVqPZtHSp81NCq9r4Bclm0Wq6YTYNFNSSyjqoZaVoQS30TNpHgT1E7enviv/
+UTPrN7NBM+sHcPc7gTXAD4CN8e1jgWvpWKJZtBrNpqVOnZ8SWKXGL0g4i1bTJbNpoM7PpKoc1IoS1kJ/
BcdV7m4Nt6vcfZO7z3b3TXXLftbdF7r7XHe/
yN2HQtbSqU5m0Wo0m5Y+XfNTQqnS+AWdzaLVdMtsWk0Zg1reYW1a30iu209TEYKaLgs1jo5m0Wo0m5YJXfN
T5EAdzaLVdNFsWk3ZghrkP6uWxzU/
s5J3UFNIayLELFqNZtOyo85PkUiIWbSabptNAwW1pBTUwlNIayLILFqNZtMypc5PkUCzaDVdOJsGCmpJKai
FpZDWxOhQ2Hbf0OuTianzs7m+3a19y3pe65NwhveGHXNCr68s5k0JMxuZpaoGtZ6e2UHXN4U5bT8nj6CW1x
UHCm3u4QtbWq5o3+4vL1q7/CbW9r+adZzG4m8+kXc5hXD2LRe3tFzRrsog7VtwxILJFyK7b/
gvs9qMWitXKCiKcxatZ93WZbnWsPTwbQdcnaATR/R/
dNJlpm3q48PHHLbflQRCqwW1rK5QoJk0qSx1fopIKGU7/
FmEzs88vvR2rG8sk21lNaumkCaVps5PEQmlbEEN8j/
8mUfnZ5WuUKCQJl2h1vnpM6bmXYqIlJiCWjIKaskopEnXWLv8JkZeMqYZNRHpiIJaMgpq7VNIk65y5Ixn1f
kpIh1TUEtGQa09CmnSdXTNTxEJQdf8TKbKQS10WFNIk66kzk8RCaWMQS3vsJZHUCvjrJpCmnQtdX6KSChlC
2qQ/6yaOj8np5AmXU/X/
BSREBTUklFQG59Cmgi65qeIhKGglkxVg1qnFNJEYrrmp4iEoKCWjILagRTSROqo81PSNKIht2uo8zMZBbX9
acQQaaDOT0lTmS7ULZ0rY1DLO6xVufOzXQppIk2o81PSpKDWXcoW1CD/WbUqd362QyFNZALq/
JS0KKh1FwW1ZLo9qCmkiUxCnZ+SFgW17qKglkw3B7WgIc3MDjGz281sl5ltNLPzx1nOzOyTZvaUmW03s7vN
7ISQtYiEpM7P6str/
PrGjlcorHURBbVkujWohZ5J+yIwDCwELgCuH2fwegfwHuAM4BDgX4C1gWsRCUqdn5WX6/
iloNY91PmZTDcGtWAhzcxmAecBV7r7oLvfC3wbWNlk8SOBe939cXcfBb4CvCxULSJpUednNRVl/
FJQ6y5lDGp5h7Vu6/w0dw+zIrOTgPvcfUbdfZcDr3X3NzcsuwS4HXgn8ATwF8Bx7r6iyXpXAasAFiyYf/
LffOXPg9Qbwr69C5k6/
em8y9hP0Wqqcj2PPf8S+rY7tmdf4nXMWzSLga27gtQTStFqWnXJHzzg7qekuY20xq94+RfGsPkL5p/
8+S9/etJ65k3ZnewXadPQ3kVMm741k221olvrGRid2dJy04YPZqjv+XSLadGOfdMBOGRsJs/1ZLO/
Nhoa7j3gvoVTpvH06FAq2+sZbn9e60Pn/9eOxq8Df8PkZgPbG+7bDsxpsux/
APcAvwBGgSeBs5ut1N1vAG4AOPa4fl+8bE2oeju2Zf1qilQPFK+mKtezGFj50EUc8sVZzHj4qUTrOHf1qdy
25v4g9YRSxJoykMr4BfuPYUcdt9QfO+KOlgrKYpZlw/
orWLrsmtS306purWcprc2iHv3kClrdf7Kwbusyzt99IrfOfDCfAmbChs0L9rvrI7OX8JnBjaltctqmvtTW3
UzIc9IGgbkN980FdjZZ9mPAqcARwHTg48BdZtbaxwmRglDnZ2UUbvzSoc/
uUrZDn6Dz1LIQMqQ9CvSa2bF19y0HHmmy7HLga+6+2d1H3P1mYB46L01KSJ2flVDI8Uudn92ljEFt7tS9eZ
dQ6aAWLKS5+y7gNuBqM5tlZqcDb6V519P9wDvMbKGZ9ZjZSmAq8KtQ9YhkSZ2f5Vb08UtBrXuo8zOZqga10
F/B8QFgBvAM8FXg/e7+iJn1m9mgmfXHy/1/wEPAg8DzwGXAee7+fOB6RDKjzs/SK/
T4paDWXcoY1PIOa1Xs/Awa0tz9OXdf4e6z3L3f3W+N79/k7rPdfVP88153/6C7/
yd3n+vur3D3O0PWIpIHXfOzvMowfimodZeyBTXIf1ZtWt9IpWbVdFkokRTomp+SFgW17qKglkxVgppCmkhK
1PkpaVFQ6y4KaslUIagppImkSJ2fkhZ1fnYXBbVkyh7UFNJEUqbOT0mTglr3mDdld+nCmoJaZxTSRDKgzk9
Jk4JadyljUMs7rJW181MhTSQj6vyUNCmodZeyBTXIf1Zt6eHbMg9rnVJIE8mYOj8lLQpq3UVBLZkyBTWFNJ
Ec1BoKfMbUvEuRilFQ6y4KasmUJagppInkZO3ymxh5yZgaCiQ4dX52FwW1ZMoQ1BTSRHJ05Ixn1fkpqVFQ6
x665mcyRQ9qpQppQ6NTWTvw6rzLEAlKnZ+SJgW17lLGoJZ3WCtyUCtVSOvZN8a6G09TUJPKUeenpElBrbuU
LahB/rNqRe38LFVIA1j8zSdYd+NprHzoorxLEQlOnZ+SFgW17qKglkzRglrpQhpEQe2QL85SUJN
K0jU/
JS0Kat1FQS2ZIgW1UoY0gBkPP6WgJpWla35KWtT52V0U1JIpSlArbUiDKKgd9v7nedsdl+ZdikhwuuanpEl
BrXuo8zOZIgS1Uoe0muPXbORtd1yqhgKpHHV+SpoGRmfmXYJkqIxBLe+wlndQq0RIgyioqfNTqkidn5Imza
h1l7IFNch/Vi3Pzs/KhDRQ56dUmzo/
JS0Kat1FQS2ZPIJapUIaqPNTqk2dn5IWBbXuoqCWTNZBrXIhDdT5KdWmzk9Jizo/
u4uCWjJZBrWgIc3MDjGz281sl5ltNLPzJ1j2KDP7OzPbaWa/NrM1IWtR56dUmTo/
wyvS+JU3BbXuoc7PZLIKaqFn0r4IDAMLgQuA683shMaFzKwPWAfcBSwCDge+ErgWQJ2fUl3q/
AyucONXnhTUuksZg1reYS2LoBYspJnZLOA84Ep3H3T3e4FvAyubLH4hsMXdP+vuu9x9r7v/
NFQtjdT5KVWlzs8wijx+5UlBrbuULahB/
rNqaXd+hpxJOw4YdfdH6+57CDjgkyhwGrDBzL4XHyq428x+I2AtB1Dnp1SZOj87lsn4Neo9rNu6LEC52VFQ
6y4KasmkFdTM3cOsyOwM4OvuvqjuvvcBF7j7mQ3L/iNwFvAW4J+AS4D3A8vcfbhh2VXAKoD58+ef/
KkrP9tRnT5jKiMvGePIGc92tB6AfXsXMnX60x2vJ6Si1aR6Jha6nif2HErvMz3Ynn2J1zFv0SwGtu4KVlOn
Vl3yBw+4+ylpbiOt8Ste/sUxbMH8k//iS/
8dgLlT96byu7Rj2vDBDPU939Ky86bsTrcYYGjvIqZN35r6dlrVzfW0+kXH7exDaduxbzqHjM3kuZ7099XxD
A337vfzh9/++x2NX72TL9KyQWBuw31zgZ1Nlt0D3Ovu3wMws2uBjwIvJfr0+gJ3vwG4AWBp/
5F+25r7Oy50z8sP47kP7mLt8ps6Ws+W9atZvKxY5wsXrSbVM7HQ9SwGVj50Efb9eSz+5hOJ1nHu6lMJ8e+s
ZFIZv2D/
MWzJsUf5rTMffOGxvGcAjn5yBY8dcUdbz0lzpmXD+itYuuya1Nbfrm6uZymtzaIm2YdS9fg7qf83lrmZsGH
zgmCrC3m481Gg18yOrbtvOfBIk2V/
CoSZwktAnZ9SZer8TCSX8atshz5Bhz+7SRk7P4swQx3y0GewkObuu4DbgKvNbJaZnQ68FVjbZPGvAKeZ2ev
NbApwKfBr4N9D1dMKdX5KVanzsz15jl8KalJ0ZQtqVer8DP0VHB8AZgDPAF8F3u/uj5hZv5kNmlk/gLv/
AngX8D+AAaLB8C3NzudImzo/parU+dm23MYvBTUpurIFNcj/
dIIQQS1oSHP359x9hbvPcvd+d781vn+Tu8929011y97m7se4+1x3P9Pdmx1WyIQ6P6XK1PnZmrzHr3Vbl5U
urCmodRcFtexV8rJQSeian1JluuZneSioSZEpqGVLIa2OrvkpVaZrfpZHGYOawlr3UFDLjkJaA3V+SpWp87
M8yhbUQLNq3aSMnZ9lDGoKaeNQ56dUlTo/y0NBTYouiy85DqkInZ/tUEibgDo/
parU+VkeCmpSdGWbUYPyzKoppE1CnZ9SZer8LAd1fkrRKailQyGtBer8lCpT52d5KKhJkSmohaeQ1iJ1fkq
VqfOzPMoY1BTWuoeCWlgKaW1Q56dUWa3zc9+8aXmXIpMoW1ADzap1E3V+hqOQlkCt8/
PZ0Vl5lyIS1Mp59zF3/
qA6P0tAQU2KroxBrWhhTSEtoePXbGTHr2er81Mq59Apu9T5WRIKalJ0ZQtqUKxZNYW0DkwdGFLnp1SWOj/
LQZ2fUnQKaskppHVInZ9SZer8LA8FNSkyBbVkFNICUOenVJk6P8ujjEFNYa17KKi1TyEtEHV+SpXpmp/
lUbagBppV6ybq/
GyPQlpguuanVJWu+VkeCmpSdGUManmENYW0FOian1JVuuZneZQxqA2Mzsy7BMlQ2YIaZD+rppCWEl3zU6pM
nZ/loM5PKToFtYkppKVInZ9SZer8LA8FNSkyBbXxKaSlTJ2fUmXq/
CyPMgY1hbXuoaDWnEJaBtT5KVWmzs/yKFtQA82qdRN1fh4oaEgzs0PM7HYz22VmG83s/
Baec5eZuZn1hqyliNT5KVVVhc7PLMYvH+u8zk4pqEnRlTGopRXWQs+kfREYBhYCFwDXm9kJ4y1sZhcAlQ9n
9dT5KVVVgc7PTMavDZsXsGHzgsRFhqCgJkVXtqAG6cyqBQtpZjYLOA+40t0H3f1e4NvAynGWPwj4GLA6VA1
loc5PqbIydn7mMX4VIajt2Dc91xrapaDWXRTUws6kHQeMuvujdfc9BIz3SfRTwPXA1oA1lIY6P6XKStj5mc
v4lXdQg/LNqimodZduD2rm7mFWZHYG8HV3X1R33/uAC9z9zIZlTwH+F3AKcDjwBDDV3UearHcVsApg/
vz5J3/
qys8GqTeEeYtmMbB1V0fr8BlTGXnJGEfOeDZITfv2LmTq9KeDrCsE1TOxotUDYWt6Ys+hsKOXqQNDidex6p
I/eMDdTwlS0DjSGr/i5V8cwxbMP/nPr//
8ActM62v61NQdMjaT53p2AzB36t5caqg3bfhghvqeb3n5eVN2p1cMMLR3EdOmF2ceoWj1QHY1tfpFx+3uQ2
nasW86f/iWlR2NXyHPBxsE5jbcNxfYWX+HmfUAfwVc4u4jZjbhSt39BuAGgKX9R/
pta+4PVnCnzl19KqHq+cXqJdy+4rqO17Nl/
WoWL1vTeUGBqJ6JFa0eCFvTYmDtwKtZd+NpLP7mE0HWmZJUxi/YfwzrP/oo/8zgxqbLLT18W/
tVd+j83Sdy68wHX/g574tJH/3kCh474o62npPmTMuG9VewdNk1qa2/
XUWrB7KraWn852QzqUn2oSILebjzUaDXzI6tu2858EjDcnOJPoF+zcy2ArWUszn+NNuV1PkpVVWSzs/
cxy8d+kxGhz+7SxkPf3YiWEhz913AbcDVZjbLzE4H3gqsbVh0O9EH7BPj2+/E958M/GuoespInZ9SVUXv/
CzK+KXOz2QU1LpLNwW10F/B8QFgBvAM8FXg/
e7+iJn1m9mgmfV7ZGvtBtTm+J929+HA9ZSOOj+lygre+VmY8asIQa1sYU1Brbt0S1ALGtLc/
Tl3X+Hus9y9391vje/
f5O6z3X1Tk+dscHcb76TbbqTOT6myonZ+Fm38yjuoQflm1RTUuks3BDVdFqqgdM1PqTJd87M1Cmrt0zU/
u0vVg5pCWoHpmp9SZbrmZ2sU1JJRUOseZbzmZ6sU0kpAnZ9SVSXp/
MydgloyCmrdpYpBTSGtJNT5KVVV9M7PolDnZzIKat0l7S84zppCWomo81OqrOCdn4VRhKBWtrCmoNZdqjSj
ppBWMur8lCoraudn0eQd1KB8s2oKat2lKkFNIa2E1PkpVabOz9YoqLVPnZ/dpQpBTSGtpGpBTZ2fUkXq/
GyNgloyCmrdo+ydnwppJTbj4afU+SmVVev8lIkpqCWjoNZdyhrUFNIqQJ2fUlUr592XdwmloM7PZBTUuksZ
g5pCWkXUOj+f2HNo3qWISE6KENTKFtYU1LpL2YKaQlqFLP7mE/Q+06OGApEulndQg/
LNqimodZcyBTWFtIqxPfvU+SnS5RTU2qfOz+5SlqCmkFZB6vwUEQW1ZBTUukcZOj8V0ipKnZ8iBeSW6eYU1
JJRUOsuRQ5qCmkVp85PkWKZtqkv0+2p8zMZBbXuUtSgppDWBXTNT5FiyTqoQf6zamXs/
BwYnZl3CZKhIgY1hbQuoWt+ihTLtE19ucyq5a1sQU0zat2laEFNIa2L6JqfIsWjoFZ86vzsLkUKagppXUad
nyLFo6BWDgpq3aMonZ8KaV1InZ8ixaOgVg4Kat0l76CmkNbF1PkpUixZB7Wh4d7cw5qCmhRdnkEtaEgzs0P
M7HYz22VmG83s/
HGWe7eZPWBmO8xss5mtMbPekLVIa9T5KRIpyvilzs9yUFDrLnkFtdAzaV8EhoGFwAXA9WZ2QpPlZgKXAvOB
VwGvAy4PXIu0SJ2fIkCBxq9u7fzcsW963iW0RUGtu+QR1IKFNDObBZwHXOnug+5+L/
BtYGXjsu5+vbvf4+7D7v4UcAtweqhapH3q/
JRuVtTxqxuDWhln1BTWukfWQc3cPcyKzE4C7nP3GXX3XQ681t3fPMlz7wDWu/sVTR5bBawCmD9//
smfuvKzQeoNYd6iWQxs3ZV3GfvptCafMZXhg4yjD34mSD379i5k6vSng6wrBNUzuaLV9Dtv+PAD7n5KmttI
a/yKH68bwxacfNXnvtB2fWN9Y20/
pxULp0zj6dGhA+6f1jeSyvYmc8jYTJ7r2Q3A3Kl7c6mh3rThgxnqe77l5edN2Z1eMcDQ3kVMm7411W20q2g
1ZVlPK192/Ptvel9H41fI88BmA9sb7tsOzJnoSWZ2EXAK8N5mj7v7DcANAEv7j/
Tb1tzfeaWBnLv6VIpUD4Sr6Rerl3Dua3/Eynn3dbSeLetXs3jZmo7rCUX1TK6INWUglfEL9h/D+o862j/
3q6cSFTjUP5zoeRP5yOwlfGZwY9PHlh6+Lfj2JnP+7hO5deaDL/x8zqL1mddQ7+gnV/
DYEXe09Zw0Z1o2rL+CpcuuSW39SRStpizrWUr6h7xDnpM2CMxtuG8usHO8J5jZCuAa4E3u/
uuAtUiH1PkpXabw45eu+VkOOvTZXdI+/BkypD0K9JrZsXX3LQceabawmb0R+Gvgze7+s4B1SCDq/
JQuUorxS52f5aCg1l3SDGrBQpq77wJuA642s1lmdjrwVmBt47JmdjbRybbnufuPQtUg4anzU7pBmcavbu38
VFCTIksrqIX+Co4PADOAZ4CvAu9390fMrN/MBs2sP17uSuAg4Lvx/
YNm9r3AtUgg6vyULlGq8UtBrfjU+dld0ghqQUOauz/n7ivcfZa797v7rfH9m9x9trtvin8+y9174/
tqtzeFrEXC0jU/
perKOH4pqJWDglr3CH3NT10WSlqma36KFI+CWjkoqHWXUEFNIU3aps5PkWJR52c5KKh1lxBBTSFNElHnp0i
xqPOzHBTUpB0KaZKYOj9FikWdn+WgoCatUkiTjqjzU6R1FuYqfJNSUCs+dX5KKxTSpGPq/
BRp3ZyN2SQ1BbVyUFCTiSikSRDq/
BRpnYJaehTUpEoU0iQodX6KtKbKQS3vsKagJlWhkCbBqfNTpDVVDWqQ/
6yaOj+lChTSJBW1zs8n9hyadykihTZno2cS1tT5WQ4KalJPIU1SM+Php+h9pkczaiItqOqsmoJa+9T5KTUK
aZIq27NPnZ8iLVJQS0/ZghpoVk0U0iQD6vwUaZ2CWnoU1KRsFNIkM+r8FGlNVkGtZzjb/
wLU+ZmMglr36s27gCK664IvMTxz96TL3TkAvG/y9fXtnsnZt1zceWEVsPibT7CO0/jH1x/
P2uU35V2ONBgbGaWv9y8ZGxmlp3dK3uV0tTkbnZ1LLNFzHxv7GKPsnHS5Dz3a2vp6emZzRP9HE9XSzIbNC1
h6+LZg62tXLaids2h9bjW06xs7XsEpeRdRcKMjo0yd8jlGR0aZUpHxSzNpTbQS0PJcX9npmp/
FtWdgBz32OHsGduRdipC887OVgNaOsbHBoOsDHf5MYmB0Zt4lFNrgwCBmjzM4EH5/zYtCmuRC1/
wsnrGRUYYHd2HmDA/
uYmxkNO+SJJbV4c+sKai1T52fzY2OjLJ7527MnN07dzNakfFLIU1yo2t+FsuegR1QywKOZtMKRkEtPWULaq
Dz1BoNDgzuN35VZTZNIU1ypc7PYqjNotXTbFrxKKilR0GtvGqzaPWqMpumkCaFoM7PfO03i1aj2bRCqnJQG
xrOt5dNQa2c9ptFq6nIbJpCmhSGrvmZj2azaDWaTSumqgY1yH9WTdf8LJdms2g1VZhNCxrSzOwQM7vdzHaZ
2UYzO3+CZS8zs61mtt3MbjSzaSFrkXJS52f2ms6i1XTRbFrZxq+srvmZh7yDGpRvVq1bg1rTWbSaCsymhZ5
J+yIwDCwELgCuN7MTGhcyszcAVwCvA5YCRwEfD1yLlJQ6P7Mz0SxaTRfNppVy/
NIVCtKzY9/0vEtoS7d1fk40i1ZT9tm0YCHNzGYB5wFXuvugu98LfBtY2WTxdwNfcvdH3H0A+ARwYahapPzU
+ZmNCWfRarpgNq3s45eCWnrKNqMG3TOrNuEsWk3JZ9NCnqV5HDDq7vXfYf0Q8Nomy54AfKthuYVmdqi7P1u
/oJmtAlYBzJ8/n3OvPDVgyc3dORB+neeuTr9ugHmLZmW2rVaEqOeeH17LwXN2ceiUiWd8WrFv70K2rF/
d8XpCybee7UyfejXWwpfaD+0YZvuzfwTMTb2qA304i42kMn7BgWPYxWccFq7qBmN90ZvZ6pUE2vHhY16se6
xvLPwGgIVTpvGR2Uv2v/P5JUzrG0lle5M5ZGwm5+8+ER4/
kblT9+ZSQ71pwwdz9JMrWlr231jBvCnpf5H60N5FbFh/RerbOdB2+no/0dL4tWv7Pgae/
QD5jF+XdPTskCFtNrC94b7twJwWlq39fQ6w3yDn7jcANwAs7T/
Sb1tzf5BiJ9TCpZ7alUndRGEwq221IlQ9W847knPe80NWzruvs/
WsX83iZWs6rieUPOvZtW2A4Z37WlrWbB8HHfppZi2Yl3JVuUll/IL9x7AlRx7tX7rnqY6LnUjSS0lN5nO/
2r/uof7h4Nv4yOwlfGZw47iPZ30pqfN3n8itMx984ee8LyN19JMreOyIO9p6ztvn/iSdYmIb1l/
B0mXXpLqNZrZv287uHa2PX/MO/TQHLTgo5arCC3lO2iAHxtS50PT6JI3L1v4e9lomUhnq/
AyrlXPRGlX83LRsxq8x56DHhpLU17KqHvqE/A9/
qvOzGFo5F61RWc9NCxnSHgV6zezYuvuWA480WfaR+LH65Z5udqhApEadn+G0dC5ao2qfm5bp+JV2UMvKtE1
9Ok+tBKoW1Fo6F61RSc9NCxbS3H0XcBtwtZnNMrPTgbcCa5ss/
mXgYjN7mZnNAz4K3ByqFqkudX52LsksWk1VZ9PyGL+qEtRADQVlUJXOzySzaDVlnE0L/
RUcHwBmAM8AXwXe7+6PmFm/mQ2aWT+Au98JrAF+AGyMbx8LXItUlDo/O5NoFq2m2rNpmY9fCmrJKaglU/
aglmgWraaEs2lBQ5q7P+fuK9x9lrv3u/ut8f2b3H22u2+qW/
az7r7Q3ee6+0XuXp3RSlKna34m08ksWk2FZ9NyGb8U1JJTUEumrEGtk1m0mrLNpumyUFJquuZnezqaRaup9
mxaLhTUktuweUHuYU1BLRsdzaLVlGw2TSFNSk+dn60JMYtWU9XZtDwd9NhQZcKaOj/
LoUxBLcQsWk2ZZtMU0qQS1Pk5uSCzaDWaTUtNlYKaDn8WX1mCWpBZtJoSzaYppDXRt3tmodcnzanzc2KjQ2
G/fDT0+uRFnQa13tFm38Gb3JSm3+nbGgW14itD5+fw3rDjTej1pSXkFQcq4+xbLm5puaJ9u7/
UgtphvO13LuX2FdflXU6hzD18YUvLFe2qDN3qoMeG2H70tETPXb7lqpaWu/
iMw7hu05ZE22jHtE19qVyhYDwbNi/I/
OoEjdZtXZb7FQra9Y0dr0j9CgVJLTiitfCd1xUQ0qKZNKkcdX5KVWRx6LOqVyjQjFoyRZ9R6zYKaVJZ6vyU
KlBQS06dn8koqBWHQppUmjo/pQqy6PysalCD/
GfV1PkpSSmkSeWp81OqIouglkVYU+dnOSio5U8hTbpCrfPziT2H5l2KSEd0+DM5BbX2laHzs8oU0qRrzHj4
KXqf6dE1P6X0FNSSU1BLRkEtHwpp0lVszz51fkolKKglp6CWjIJa9hTSpCup81OqQEEtOXV+JqOgli2FNOl
a6vyUKqhS52fPcPb/
JRUhqJUtrCmoZUchTbqaOj+lKtT5mVzeQQ3KN6umoJYNhTTperrmp2TFPN2Qo8OfySmote8bO17BwKiuTZ0
mhTQRXgxq6vyUtPWt35zq+hXUklNQS0azaulRSBOJ6ZqfkhUFtdYpqJWDglo6FNJEGqjzU7KgoNY6dX6Wg4
JaeAppIk2o81OykEVQq0rnZx7X/Bwa7s18m/XU+SkKaSLjUOenZCHtoAbq/
OxE3jNqUL5ZNQW1cIKENDM7xMxuN7NdZrbRzM6fYNl3m9kDZrbDzDab2Rozy/fjisg41PnZHfIew/
rWb9bhzzYoqBWfrvkZRqiZtC8Cw8BC4ALgejM7YZxlZwKXAvOBVwGvAy4PVIdIcOr87AqFGMMU1FrXjUFtx
77peZfQNgW1znQc0sxsFnAecKW7D7r7vcC3gZXNlnf36939HncfdvengFuA0zutQyRN6vysrqKNYQpqrevG
oFa2GTVQUOuEeYdfrmhmJwH3ufuMuvsuB17r7m9u4fl3AOvd/YpxHl8FrIp/
fDnwcEcFhzUf+HXeRTQoWk2qZ2JFqweKV9Px7j4nrZVrDCvUe616Jla0eqB4NRWtno7GrxDngs0Gtjfctx2
YtCgzuwg4BXjveMu4+w3ADfHyP3b3U5KXGlbR6oHi1aR6Jla0eqB4NZnZj1PehMawglA9EytaPVC8mopYTy
fPn/Rwp5ndbWY+zu1eYBCY2/
C0ucDOSda7ArgGeJO7Fyn1ikiFaAwTkbKadCbN3c+c6PH4fI5eMzvW3X8Z370ceGSC57wR+Gvgd939Z62XK
yLSHo1hIlJWHTcOuPsu4DbgajObZWanA28F1jZb3szOJjrR9jx3/1Gbm7uho2LDK1o9ULyaVM/
EilYPFK+mVOvRGFYoqmdiRasHildTperpuHEAou8YAm4EzgGeBa5w91vjx/qBnwMvc/
dNZvYD4Axgb90q7nH3N3VciIhIAhrDRKSIgoQ0EREREQlLl4USERERKSCFNBEREZECKnRIy/
t6eglquMzMtprZdjO70cymdbr9pPVkdY3Udl6fuufcFX/
9Qa71mNlRZvZ3ZrbTzH5tZmtC19NOTRb5pJk9Fe9Dd9v4lyZKWsuHzOzHZjZkZjdPsmzq+3M7NWW1T4ei8S
t5PVm+1xrDwtSTxfgVb6dQY1ja41ehQxrFuJ5eSzWY2RuAK+LtLgWOAj4eYPuJ6iG7a6S28x5hZhcQ5kuUO
6rHzPqAdcBdwCLgcOAredYEvAN4D9FJ6YcA/
8I4HYYd2AJ8kugk+XFluD+3XBPlu+6vxq+E9ZDte60xLEA9ZDN+QfHGsHTHL3cv5A2YRbRjHFd331rgmhaf
/yfAd7KqAbgV+FTdz68DthblNQnxenRaD3AQ8ChwGuBAb171EF2m556Q2w9Q0/8D/
O+6n08A9qZU1yeBmyd4PPX9ud2amiwffJ/O431P63fT+BW+pm4bw4o6fsXrL9QYltb4VeSZtOOAUXd/
tO6+h4je+Fa8hgm+jDKFGk6IH6tfbqGZHdphDUnraRTi9ei0nk8B1wNbA9eRpJ7TgA1m9r34MMHdZvYbOdf
0t8AxZnacmU0F3g3cmUJNrchif+5UGvt0KBq/
OqunUVrvtcawcPUUafyC4o9hLe3ThT2fg5Svp5dCDY3L1v4+h+h7l0JI9JoEfD0S12NmpwCnA5cQTcunoZ3
X53DgLOAtwD/FdX3LzJa5+3BONf0HcA/
wC2AUeBI4O2At7chif04sxX06FI1fndXzgpTfa41h4eop0vgFBR7D2tmnc5tJs3JcT6+dGhqXrf19wnpTrA
dI/
fqCLdVjZj3AXwGXuPtI4Brarie2B7jX3b8XD2jXAocCL82xpo8BpwJHANOJzp+4y8xmBq6pFVnsz4mkvE+3
WoPGr3TrATJ5rzWGhaunSOMXFHQMa3efzi2kufuZ7m7j3H6b6Lh/r5kdW/
e0Vq+n92YPcz29dmp4JH6sfrmn3T1kYm/rNUnh9Uhaz1yiTw1fM7OtwP3x/
ZvN7Iwc6gH4KdE5JWlrp6blwNfcfbO7j7j7zcA84GXpl3mALPbntmWwT7
dE41fq9WT1XmsMC1dPkcYvKOAYlmifTuskukAn4v0t8FWikxdPJ5quPGGcZc8mmsJ8TR41AG8kOk/
hZUQ75l20eJJwSvWk8nokqQcwou6j2u1UosHlMKAvp9fneGA38HpgCnAZ8Fjoetqs6WPAvURdVD3ASmAXcH
DAWnqJPuV+mugE4Ok0Ofk5q/25zZoy2aezft/T/N00foWpqZvHsCKNX/F2CjWGpT1+pbrzB/jlDwHuiN/
oTcD5dY/1E01n9sc//wAYie+r3b6XVg2N24/v+xPgaWAHcBMwLavXJKvXo5PXp+45S0mhMyrB+3Uu8Kv4/
bq72cCT8Xs2najd/T/imn4CvDFwLVfFr3397aq89ud2aspqn077fR/
nvdf4ldN73c5rVPecpXTJGNbGe5b6+BVvp6XxIsN9uqV6ku7TunaniIiISAEV+Ss4RERERLqWQpqIiIhIAS
mkiYiIiBSQQpqIiIhIASmkiYiIiBSQQpqIiIhIASmkiYiIiBSQQpqIiIhIAf3/
hi9NHcYfow0AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x1s = np.linspace(-0.2, 1.2, 100)\n",
"x2s = np.linspace(-0.2, 1.2, 100)\n",
"x1, x2 = np.meshgrid(x1s, x2s)\n",
"\n",
"z1 = mlp_xor(x1, x2, activation=heaviside)\n",
"z2 = mlp_xor(x1, x2, activation=sigmoid)\n",
"\n",
"plt.figure(figsize=(10,4))\n",
"\n",
"plt.subplot(121)\n",
"plt.contourf(x1, x2, z1)\n",
"plt.plot([0, 1], [0, 1], \"gs\", markersize=20)\n",
"plt.plot([0, 1], [1, 0], \"y^\", markersize=20)\n",
"plt.title(\"Activation function: heaviside\", fontsize=14)\n",
"plt.grid(True)\n",
"\n",
"plt.subplot(122)\n",
"plt.contourf(x1, x2, z2)\n",
"plt.plot([0, 1], [0, 1], \"gs\", markersize=20)\n",
"plt.plot([0, 1], [1, 0], \"y^\", markersize=20)\n",
"plt.title(\"Activation function: sigmoid\", fontsize=14)\n",
"plt.grid(True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Building an Image Classifier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First let's import TensorFlow and Keras."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"from tensorflow import keras"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'2.4.1'"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tf.__version__"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'2.4.0'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keras.__version__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's start by loading the fashion MNIST dataset. Keras has a number of
functions to load popular datasets in `keras.datasets`. The dataset is already
split for you between a training set and a test set, but it can be useful to split
the training set further to have a validation set:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"fashion_mnist = keras.datasets.fashion_mnist\n",
"(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist.load_data()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The training set contains 60,000 grayscale images, each 28x28 pixels:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(60000, 28, 28)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train_full.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each pixel intensity is represented as a byte (0 to 255):"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('uint8')"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train_full.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's split the full training set into a validation set and a (smaller)
training set. We also scale the pixel intensities down to the 0-1 range and convert
them to floats, by dividing by 255."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"X_valid, X_train = X_train_full[:5000] / 255., X_train_full[5000:] / 255.\n",
"y_valid, y_train = y_train_full[:5000], y_train_full[5000:]\n",
"X_test = X_test / 255."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can plot an image using Matplotlib's `imshow()` function, with a
`'binary'`\n",
" color map:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
AAKN0lEQVR4nO3d20rWWx/
F8WllWeYuUwtCSsIMCkqKiCDIrqOjovPooDvoIjrpCjrrHhZC1EHuyHaWFaXltkxts87eo/
UfI3xe1zMe1vdzOpg+mxz9wR9zzqbfv38XAHl21PsNAPhnlBMIRTmBUJQTCEU5gVC7TM6fcvF/
4yYDTU1N/9I7ifOPH5wnJxCKcgKhKCcQinICoSgnEIpyAqEoJxDKzTmxDcbGxiqzBw8eyLWjo6My//
nzp8wPHTok85MnT1ZmV65ckWsvXLgg8//
wHHNLeHICoSgnEIpyAqEoJxCKcgKhKCcQinICoZhzbsHExITMr1+/LvNHjx5VZj9+/JBrd+3S/2Q7duj/
b13+/fv3La8dHByU+e3bt2V+48YNmf/
X8OQEQlFOIBTlBEJRTiAU5QRCUU4gVJM5rrBhj8b89etXZeZGAk5fX5/
M5+fnZd7R0VGZueMjm5ubZe5GMTt37pS523KmLCwsyPzIkSMyf/
v27ZZfu1Z1PraTozGBRkI5gVCUEwhFOYFQlBMIRTmBUJQTCNWwW8bUHLOU2maZi4uLMndzzpaWFpnv27evM
hsaGpJr3XY1N49z713NOd+8eSPXdnZ2yrytrU3mjx8/
rsyGh4flWmc7f1+2S947AlBKoZxALMoJhKKcQCjKCYSinEAoygmEit3PuZ1zqYsXL8p8ZmZG5u69uVnj0tJ
SZaau4CullOXlZZm/ePFC5m4Ge+LEicrMzSndfkx17GYppWxsbFRm7t97bm5O5o7bx+r2wdaI/
ZxAI6GcQCjKCYSinEAoygmEopxAKMoJhIrdz1nrOaF37typzJ4/
fy7X9vf3y9ydDetmiWre52aFp06dkrmaoZbi91yq9/b69Wu51hkYGJC5Os/35cuXcu3Nmzdlfu/
ePZlv8xxzS3hyAqEoJxCKcgKhKCcQinICoSgnECp2y1itLl++XJmtr6/LtW6Ms7a2JvM9e/bIfO/
evZXZysqKXLt//36Zt7a2ytxtKVOvf+zYMbn28OHDMnff29evX7f0vkrx3/lff/
0l8zpjyxjQSCgnEIpyAqEoJxCKcgKhKCcQinICoWK3jDnuKMMvX75UZmrOWEop7e3tMldX+JWij3h0uZvXu
Rltrcd2njt3rjJzM1Z3daLb9tXd3V2Z7dqlf1Xn5+dl7q4vdNsE64EnJxCKcgKhKCcQinICoSgnEIpyAqEo
JxCqYeec7po+tf/Pzes2Nzdl7mZublapZrTu2E33s3t7e2XuZrBqT+WnT5/
k2t27d8u8q6tL5up7cfNdd72gm4My5wTwxygnEIpyAqEoJxCKcgKhKCcQinICoRp2zun2Birfvn2TuZr1le
LnpG4WqWaZ7mxXtxd1dXVV5u6zqxmum2O6a/Tce1teXq7M3Hm8bn/
v+Pi4zIeHh2VeDzw5gVCUEwhFOYFQlBMIRTmBUJQTCEU5gVANO+d0c6sdO6r/31lYWJBr3717J/PTp0/
L3M371CzT7bd059K2tbXJ3O0XVe/
NzRLdfNftufz48WNldvDgQbnWfefufs5r167JvB54cgKhKCcQinICoSgnEIpyAqEoJxCqYUcps7OzMlcjB/
dn99+/f8vcjQzcljN19KZ7b24U4o6QVCOmUkppbm6WueLemxulqO/
NjYjctYxTU1MyT8STEwhFOYFQlBMIRTmBUJQTCEU5gVCUEwjVsHPOyclJmatZZVNTU02v7WaRbmuVmiW6WW
Ct3JYzNYN1Vx+6z+3WqyNH3WzZHds5NjYm80Q8OYFQlBMIRTmBUJQTCEU5gVCUEwhFOYFQDTvnfPr0qczVL
FLN8v6Eu0bP7ZmsZQbrZoVuL2otM143I3V5S0uLzNWxoO5nO3NzczJ/9uyZzAcHB2t6/
a3gyQmEopxAKMoJhKKcQCjKCYSinEAoygmEatg554cPH2R+4MCBysztmezs7JS5m7m5vYVqnudmgW5G686t
ddSc1O3XdK/tZqzq7Fn3ud2ZuY67UpI5J4D/
oZxAKMoJhKKcQCjKCYSinEAoygmEatg5p9szqeZibh7nzkh1s0h3rq2a97n9mG6e5+7XdLNG9fPdXtJaPrd
7bXfnqZstOx0dHTWt3w48OYFQlBMIRTmBUJQTCEU5gVCUEwjVsKMU92d59af1xcVFubanp0fmbqSwuroq87
1791Zma2trcq373K2trTJ3R0TW8tpqy1cppSwsLMj8+PHjldnU1JRc60ZrXV1dMndHY46MjMh8O/
DkBEJRTiAU5QRCUU4gFOUEQlFOIBTlBELFzjndNXtue9L+/
fsrs8+fP8u1Bw8elLnjZm7btbYUf+yn25Kmtpy5ozHdVjuXnz9/
vjJ79eqVXOu2fLnZ9PT0tMzrgScnEIpyAqEoJxCKcgKhKCcQinICoSgnECp2zumOQnS5OmbR7Xns7e2V+fv
372Wurh8spZSlpSWZK25PZa3r1ffmZrDuyNDZ2VmZqxlse3u7XDszMyNzd22ju1KyHnhyAqEoJxCKcgKhKC
cQinICoSgnEIpyAqFi55zubFl19mspeu+hm3kNDAzIfHl5WeZuHqhy994ct2fSUd+bO5fWzTnb2tpkrv5N3
Wu7ubebk6r9v/
XCkxMIRTmBUJQTCEU5gVCUEwhFOYFQsaMUd1WdGxmo7UduFOKOl1THR5ZSyubmpsxrobZ0leKPDHXfmzqS1
I2I3HGmtVyd6I7ldNzozX1v9cCTEwhFOYFQlBMIRTmBUJQTCEU5gVCUEwgVO+d0M7Pdu3fLXB0B6bYHdXd3
y3xiYkLmtcxg3RV97nM77mhMNcOtdcZay/
x3aGhI5g8fPpR5T0+PzN1nqweenEAoygmEopxAKMoJhKKcQCjKCYSinECo2DnnysqKzN0xjGqed/
To0S2vLaWUz58/y9wdran2i7q9pG6G+uXLF5nPz8/LXB0h6eaYtcyeS9HX8F27dk2udXNOtwfX/
T7VA09OIBTlBEJRTiAU5QRCUU4gFOUEQlFOIFTsnNNd6dbR0SFzde7tyMiIXHvo0CGZu6vs3DV+6+vrlZmb
xzlufWdnp8zVflK3H9Pl7ho/NQe9evWqXOu4c2/
d71s98OQEQlFOIBTlBEJRTiAU5QRCUU4gFOUEQsXOOd28zt31qOZ1Z8+elWtHR0dl/
uTJE5m7M1bX1tYqM7fn0c1Ya51F1nI/58bGxpZ/din6fs6+vj651p1L62bPzDkB/
DHKCYSinEAoygmEopxAKMoJhIodpbg/+bsjJJXp6WmZ379/X+b9/
f0yX1hYkLn6s737XO7IUDeKccd2qpGDGnWU4rejufHYpUuXZK64MY4aX5VSyuTk5JZfe7vw5ARCUU4gFOUE
QlFOIBTlBEJRTiAU5QRCxc45z5w5I/
Ph4WGZj4+PV2Zuu5mbx929e1fm+PfdunVL5m67m9tGWA88OYFQlBMIRTmBUJQTCEU5gVCUEwhFOYFQTeoIS
QD1w5MTCEU5gVCUEwhFOYFQlBMIRTmBUH8DscHqopQEqFAAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(X_train[0], cmap=\"binary\")\n",
"plt.axis('off')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The labels are the class IDs (represented as uint8), from 0 to 9:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([4, 0, 7, ..., 3, 0, 5], dtype=uint8)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here are the corresponding class names:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"class_names =
[\"T-shirt/top\", \"Trouser\", \"Pullover\", \"Dress\", \"Coat\",\n",
" \"Sandal\", \"Shirt\", \"Sneaker\", \"Bag\", \"Ankle boot\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So the first image in the training set is a coat:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Coat'"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class_names[y_train[0]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The validation set contains 5,000 images, and the test set contains 10,000
images:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(5000, 28, 28)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_valid.shape"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10000, 28, 28)"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's take a look at a sample of the images in the dataset:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure fashion_mnist_plot\n"
]
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAqkAAAEjCAYAAAAR5ZjkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
ADXZElEQVR4nOydd5xdRd3/37M9m83upoeEEAKE3kGKgoB0BMEGCKjoY0H0UZFHsYCKivjwKNafiAoIIiAi
UgUbvUnvRSCkkV422ZZsm98fcz5z5557d7PZbDk3zOf12tfee8+5556ZM/
Od73y+zVhriYiIiIiIiIiIiMgSykb6BiIiIiIiIiIiIiLSiEpqRERERERERERE5hCV1IiIiIiIiIiIiMwhK
qkRERERERERERGZQ1RSIyIiIiIiIiIiMoeopEZERERERERERGQOUUkdARhj5hhjDuvl2IHGmFeG+542FfTV
t1mHMcYaY7bZ0GPruebpxpgHNv7uhh+xP/
IR+yMiIuKthmFVUo0xpxhjHjfGtBhjFhlj7jDGHLCR17zHGPOJwbrH9fxWS/DXY4xpD96fOhi/
Ya2931q73Xruo6gilvTvNcaYLZNFq2Iw7mmgMMYcYIx5yBiz2hiz0hjzoDHmbSN5T8OBZEyuMsZUj/
S9DBWMMQcbYxb089zYH/
nnxv4Ymt8s6fVlsPFW749knWw3xjQbY5qStegMY0wk5yid8TFsD8sY8yXgJ8D3gcnAFsAvgeOH6x42FtbaO
v0B84Djgs/+MNS/3w+l8xjgr0N9H/2BMaYeuA34OTAOmAacD6wbyfvqDzZGuTfGbAkcCFjgPYN1T6WK2B/
5iP0xNNgU1pfBROwPj+OstWOAGcAPgHOAy4qdaIwpH84bG0mU1Piw1g75H9AAtAAf7OV4Na7DFiZ/
PwGqk2NjccrOMmBV8nrz5NgFQDewNrn+L4ajPclvzwEO6+P4hORem4CVwP1AWfDd/
wGeBVYDfwRqkmMHAwtSv3NOcu464FqgB2hP2vyV5LwyYEnyu/Nwi2BL8rd/cvxcYC6wFLgKaEi+u2Vy/
qeS/l8EnL2R/bM30NTLsdOBB4AfJs/0DeDo1Hi5LLmPN4HvAeXJsa2Bu4AVwHLgD0BjsecCbJ9c++Tk/
bHA08kzeQjYtY9+rhhgu78JPAhcDNyWOvY74P8BtwPNwL+BrYPjFtgmeX0AMB84pMix6qTv5iXP/
FfAqD76+kHcZmE18DJwaHB8KnALboy+BnxyffMSGJ2Mv55gjE2N/
RH7Y0P7YzD+2ATXl9gfg9IPc0it0cA+ybjcOZlvl+CInVbgsGS8/zlp/
xvA51PffRxYk8yri5PPa4CrcWtSE/AYMHmk27+pjI/
h6pSjgC56WfiB7wCPAJOAiTgF4rvJsfHA+4FaYAzwJ+Cm4Lv3AJ8YgQddMAFSxy/ELQ6Vyd+BgAm+
+2gyIcYBLwFnJMcOplBJfRqYTrLQ9DL59gMeTl5viVu0KoLjH8ctMlsBdcCNwO9T51+LW2B2SQZhr+3rR//
UJ5P2SuBoYGxw7HSgE/gkUA58JpkM6p+bgEuTe5mU9NWnk2PbAIcnE2kicB/wk/RzAfbELdLHJp/
viVPO901+86PJudW99fMA2/0acCawV9LGycGx3+EW+32ACpyCfV1w3CbtOxKngOyTPpa8/
glOcRiHmxO3Ahf2cj+n4+beWbhxeBJOGRmXHL8Xt4OuAXZPnvuh/ZiXBxOM09gfsT8G0h+D8ccmuL7E/
hiUfphDkTUMty58Jplvq4F34EicWuAJ3EayCrdWzgaOTL73MPDh5HUdsF/
y+tPJHKvFrS17AfUj3f5NZXwMV6ecCizu4/jrwDHB+yOBOb2cuzuwaig7pZ9tKjoBUg/
6ZpKFo8h3TwveXwT8Knl9MIVK6sfX99vAd4HzktdbUqik/gs4M3i/HW6RrAjO3z51T5dtZB/
tkAiCBcmkuAVnWjgdeC04rzb5/SnJ8XUEiiLwIeDuXn7jBOCpVN+cn/
zmIcHnl2iiBZ+9AhzUWz8PoL0HJH06IXn/
MnBWcPx3wG+D98cALwfvLfA1HNu9S+raUlAMbtcfMmz7A2/0ck+nE2wAks8eBT6MU8i7gTHBsQuB3yWve52
X6XEa+yP2x4b2x2D9sQmuL7E/
BqUf5lBcSX0E+EYy364KPt8XmJc692vAFcnr+3Bry4TUOR8nZZnL8l+pjY/
h8kldAUzow9dvKk7wCnOTzzDG1BpjLjXGzDXGrMENlMYs+Y8YY7YIg6qSj/
8Px5r83Rgz2xjz1dTXFgev23A7s94wvx+3sT5/1GJ9XIFTCov9jn8GA4W19iVr7enW2s1x5pWpOJYHgvZba
9uSl3U436FKYFHi7N6EY1UnARhjJhljrjPGvJmMh6txLg4hzgAestbeHXw2Azhb10yuOz3Vxv70c1/4KPB3
a+3y5P01yWch1vfcvwhcb619rpffmEiy4w/
acWfyeW940yYSJIGe7VRgpbW2OXVsWvK613nZT8T+yEfsj6HBJr2+DACxP/rGNJzFAvJl/
gxgamqN+Dq5NfK/gG2Bl40xjxljjk0+/z3wN+A6Y8xCY8xFxpjKIW/FwFFS42O4lNSHcX4KJ/
RyfCFugAhbJJ8BnI1j/fa11tYD70w+N8n/
ULiOCKy182x+UBXW2mZr7dnW2q2A44AvGWMOHehP9PXeGDMF2Ax4spfzoXgfd+F8a4TpqeMLGSRYa1/
G7Vx3Xs+p83FM6gRrbWPyV2+t3Sk5fiGufbsm4+E0cmNBOAPYwhjz49R1Lwiu2WitrbXWXhve5sBaB8aYUc
CJwEHGmMXGmMU4E+puxpjdNuBSHwROMMZ8sZfjy3H+fjsF7WjQuOsF04wxYR/
p2S4ExhljxqSOvZm87mte9tlXsT/yEftjSLFJry8DQOyPXmBcdplpuJgIyG/
PfJzFIVwjxlhrjwGw1r5qrf0QjjD5X+AGY8xoa22ntfZ8a+2OwNtxsQ8fGbZGbThKanwMi5JqrV2N8/
P4f8aYExJtvNIYc7Qx5iKcL+S5xpiJxpgJyblXJ18fgxO6TcaYccC3UpdfgvMdyRSMMccaY7ZJhP8anNmse
5Aun27zMcCdARuyDOccHp5zLXCWMWamMaYOF9X3R2ttV3DOecmz2Qn4GC6ga0AwxmxvjDnbGLN58n46zmz/
SF/fs9YuAv4O/MgYU2+MKTPGbG2MOSg5ZQzOKbvJGDMN+HKRyzTj/
G7eaYz5QfLZb4AzjDH7GofRxph3pxbgjcEJuOe7I84EsjvO3eF+NkxgLQQOBT5vjDkzfdBa24Nry4+NMWKX
pxljjuzjmpOS61UaYz6Y3NdfrbXzcWaqC40xNcaYXXFsgTJV9DUvlwDjjTENvfzmCcT+CHECsT+GBG/
F9aUvxP4oRLKWHAtcB1zdiyXiUWCNMeYcY8woY0y5MWbnRLHFGHOaMWZiMseaku90G2MOMcbskrCJa3AuPY
O11g86Sm58DKbvwPr+cL4Qj+N8phbjoljfjnPK/
xkumntR8lrR7lNxfg4twH9wTsqWxN8S52/1H1yk2c+GsS1z6Nsn9azknFacf+R5vX0X+DZu4kBxn9S0/+nx
OOfvJlyWgBuAD6TO+Q5OWW3CBVWV4Qbb/OTzq0mCmSiM7l9MkjVgI/
pnGnA9jnVpTf5figuoOh14IHW+JRf40YDzIV2Ac2x/ilyE/k445/
YWXKDT2b31Fy5w5BlyTt9H4SIvm5Jx9icSf7v1Pc9+tPdO4EdFPj8x6c8KHJP8veBY+lmHfTATZ2b5RJFjN
bhNxmycUHyJIAo19fun46K3f5H05X+AI4Ljm+MiNFfifJHOCI71Oi+T45eTi2idGvsj9kd/+2Mo/
tiE1pfYH4PS/jk4hao5GdsPA58llykmb74F7b826a9VOFJF68nVuODbFuAF4ITk8w/
h4htacUrazxhgdpg4Pgr/
FE0dUaIwzq9kMS5QYvUAr7ElLt1Gpc1nViMiIiIiIiIiRgSx8kLpYxyOpR2QghoRERERERERkUVEJjUiMqk
RERERERERmUNUUiMiIiIiIiIiIjKHaO6PiIiIiIiIiIjIHKKSGhERERERERERkTn0VnGgPxhxPwFrLfk5qD
cIA/5iL9ig/nj+
+ecBaG1t5aWXXgLgkksuAeCaa64BYOutt+7zGg884PIRf+973wPgu9/9LuXlrvDDzJkzARg7dmx/
b2lE+yODiP2Rj8HuD4h9kkbsj3wMqD9CF7b0+nDMMcdQV+fqGnR1Off7I488kk9/+tN55/
X09ABQVrZRPM6I9kdf/XD33XcD8NnPfpbq6moA1q5d67936623AjBr1qy87/X09PhrDWDtzcT4CPGvf/
0LwK/BO+ywA9tss03eOU1NTTQ1NQFwww03AHDwwQcDcNRRRzF69OiB/nwmxkex56j50NPTw/HHHw/
AypWuSNedd97JsmXLAPjHP/6xQdddD4p+YWN8UgdNoEph+/Of/8y///
1vALq7XS7cKVOmsMMOOwBwyCGHALDvvvsOxs+OyAC5+mqXE7elxVVPnThxIttttx0AX/
va1wC45557ANh88815+9vfDsCoUaP8sddeew2AdevWAU7IAvzkJz/h2WefBWDJEldIasaMGbznPe/
pz61lToCMMGJ/5CMqqYWIYyQfmV10v/xlV/Pj0ksv9UqIFt2qqip+97vfAXh5O0jI3Pj485//
DMAHPvABAHbbbTdWrVoF4JWt6upqXnzxRQBuueUWILfG5N3MhisjI9ofra2tAHz1q1/
l5ZdfBnLr8JZbbgm4NVfjQ4rY66+/7jc0wpw5c/
xrbXruuOOODbz97IyP5ctdpeYPfehDADz44IOAmxvasOk59/T0eDJMn/3qV78C4KSTTiq4dnd3tz9/
PciOkqoJ8F//9V8APP7444Db2VZUOHJXO9iysjK/w9Nn2267LQBnn302n/
jEJwZ6G8M+QG677TbuuusuAE477TQAFi5cSGNjI4BXVrWLvfjii/3E0sR57rnnmDDBlar/
yle+AsApp5wCwGOPPeb7qra2FoDrrruOo446CiguaAJkZsJkBLE/
8hGV1ELEMZKPzPTHF77wBQAeffRRILcIjxs3jvnzXbl2yd0xY8bQ3t4OOCUF4POf/
zzgmLKNYFWHvT+KWRcvueQS/vSnPwHwn//
8B3BtBjjuuOO8Yi5d4E9/+hNPPfUUkGObp093FbPf+9738t///d951+/
p6elv34zo+NB9NzU1+TVUkLJaU1PjlU6Nj4qKCk8MCdJTWlpa/
Hel+BdT1HrBsPVHsQ3FQw89BDg94umnnwagvr4egEmTJgGwdOlSf74Yd8Azy1OmTAHwc2rs2LF861vfAhiI
bla0P6JPakREREREREREROYw5ExqsV3o5MmTgdzutqGhwV3QWiorK4HcDq68vNyb/
gWZJzbffHOvwRe9wb7NEcO+q/vFL37Bm2++CcCOO+4IwBZbbOGP19TUALndfE9Pj/
f5WLNmDQD77LMPEydOBBwrADB79mwAOjs7fX8vWLDAHxOr+sUvfrGv28sMC5IRxP7IR2RSCxHHSD4y0R+XX
HIJF110EQA777wzkFszVq5c6dmitrY2wJm5N9tsMwAWL16cd0wM0wAx7P0Rspq/
+c1vAOfqICZU66osdPPnz/frgtaRW265hWnTpgE5NlFr8JtvvslnP/tZAC688MINvf8RGR+K3Tj//
PMBxwLKpzRtxhdDCjkz/tq1a72uov7QOKmoqPDfEdv629/+dr3xJAlGpD+uuOIKINcfPT09Xu+S/
iBdZPHixcyYMQPIjYHnn3/
eM6iaS52dnYDTtaSrKC5G1gwYmE4WmdSIiIiIiIiIiIjMYWOi+9eLYr4qTU1NnkmVti6mb/vtt/
f+qtK0J0+e7DX4efPmAfm+RE8++SQAe+65Z97vwkZHZg46nnnmGe932tzcDLhdmoKiqqqqgNyOrL6+3u/
45Hjc1dXF6tWuAurChQuBXD9Cbkcjp+
+amhrvhxSxaSH0P9OYsNbS0dEB5PyE9L6zs9P7FWkOTZo0yc+vtJ/WsmXLPPO/+
+67D11DIiIGEffee6+XiZKH48ePB5yM1RxQ5pOqqio/BySLJVufeOIJ9tprr+G7+Y1EuOZdf/
31gPMb1PqhYFu9nzFjhmdctW5uu+22XmaoX7Q2bbbZZtx7771D3YxBxQEHHADk4jruueeeAmZUrGkI+ZquX
bvWjycxr/LJnDBhgo+pEbv67W9/m9///vdD0JLBwXnnnQfk9K7u7m4/
bsR0KrZl4sSJvo8UaDhjxgxvxdX40Hiy1npLr9afxx57jLe97W0Dvt9saXERERERERERERERDBGTWozJ3H/
//QGYO3duQUoDsX61tbX+2Ouvvw449lTso9JESENfunQphx9+eN5vLVu2zL9Oa/
kjjZqaGh8tpzYtWrTI+26IXdUOp66uzn+mfpk0aVJBe7Q7XrdunWfUdM7ChQv9dzcif1nm0FdbwmNiUtQHV
VVVm0T7Ib/tH/vYxwB44403/GdiAtQHixcv9rtifXfixImeFZDv0d577w3Ascceyx/+8AcALr/
88iFqxcCQfv4bYz3ZlObFcGHu3LkA3HTTTXzuc58DsiNn16xZ45kgyUMxqXV1dXnrDTiLnOaA/
uv7jz76aEkxqQArVqwAcha5mpoaPz/EIofMlyK5leGgrKzMM4taQ/W/
rKzMW1fk57sBubhHBLp3+dJ+9atf9b7KZ5xxBpCzIolhhXz/
VMlNjQv5ZM6ZM8dbmTR2fvjDHw5BKwYHHR0dPtWY5F13d7f3UU7P4e7ubt8n0smmTJnifbY1roTOzk5vjdD
1//KXv3gmdSAydkiU1PBGzjnnHCA3YbbYYgtPmYtC14OfP3++HzwSLo2Njf54mJsMYKuttvJBV3L6/
tSnPsWvf/
1rIDtCU+YAa61XtEWdb7XVVr6taruwcOFC30cyv7zwwgs+fYjcJjQ52travODVIJo+fbpXVpRDdbfddhvcB
o4AwjEmdwalJvvRj34EOHeJT33qU8N/c8OEzs5O7/
Cu3MEvvviiFxL6r3mwyy67eIGtzU9ra6sXxnKn0SLe1tbm80tmDWlhFyqp9913H5BL0TZr1izfbs0/
pYDbcccdC67V0tLi3Y4kc7QovfOd7xzklgwftJmtrq7m73//OwCnnnoqkMufub72XXXVVQA+RdEXv/
hF7r//fiCX4HykIVM95DZqesabb765nzOaF1VVVT7YQ3JTePDBB/
nMZz4z5Pc8mFCwl553ZWWlX0OlbMl8v27duoLUjnPnzvXH1R+aP9Zafy2tJwcddNBQNmejoeccrq9STkOzP
eSnWZKeUlFR4T/
XeNL5LS0tnH766UDOnUDrchbx0EMP+bGusdDW1ublosaMNiI1NTVeV9FGr6amJs+FDMjTa9IuInfeeSff//
73B3zP0dwfERERERERERGROQw5k/
rwww8DjjHUMe1QZGaTRl9eXu6PycTy+uuv+92OKk8pXUh7e7unqeXI+9xzzw1FkzYKSs4/
ZcoUv4sX+7d69WqfhioMgAKXmku7XDkjT5w4kUWLFgH46lxiRleuXOkZZZnjttpqK99fqoixKTCpIVQVRWY
J9dkrr7zCL3/5SyDXf7NmzeKYY44Bci4o2iGWGsL0cUp5UlNTU2ChCM06YgK0Y66oqPC7Yo1NVSsbP368n3
NZQ18met2/2M9Ro0Z5dk3V3JTabauttuK6664D4Gc/+xngqqdovIgpEEuy//77+34qNYSmObkdiUX/5Cc/
CbhxJJmqcQG5/lYqI33vH//4ByeccMLQ3ng/IdZPVgLIMV9qU3t7e0FKwwULFvi5IugZv/
rqq0N2v0MFsdx6ZqELjPpDzGBZWZnvD1kNOjs7PfuoflF/
GGP8nHvkkUeA7DOpxSAmVKyzZEVdXV1ewBS4PpNMlS4inaWlpaWk2n/
rrbfmzWtw81w6QmjVBjeGNH5kpYXceBArK/0Lciysvhe6oA0EkUmNiIiIiIiIiIjIHIY0BVV3d7f3Z5B/
XH19vdfIpdHrf3V1tWd4wuAqBXLImVu7mdmzZ3sWTDv75cuXe9+6MFH+SEJOw4899pj3dVOZuiOOOMLvQuT
wvsceewCOWQ53c+B2Nkr2rz7Vjra2ttYztDfeeCMAH//
4x72j9D777DNUTRwxrFixwvepkhSrpGF1dbX39xUztnz5cs+8yndZzPL73vc+3/elBjF9xphe/
clqa2v9MfmddnV1+R1vujTkxvgRDTXSDGrof65CFjonDKBTsIfYj5tvvtmnr5NcmT59up+T6hsxB6XKokJO
XkAuwbkYIcnbhx9+2PebZGpnZ6cPjtlpp52AnP/
ylClTClKXjRTEeq5bt65gfGjtqKio8DI1HDNppqyUn7fSMqaDCiHnZ6ljYR/
oM2utlxlqv+ZPVVWVHxdad0oFYSC1xrGYVD336upqb5ETuwq5uaD/Ol+
+mKUCyb8QlZWVPPjgg0COEdUasHbtWr+GykIxZswYr7Op/
c888wzgLMNaa8Xk19fXez0wZFz7iyFVUufOnesbJiHR2dnpH7RMDho8XV1d/
jNFHHZ0dHhTjUxUWmjHjh3rvyvlNqwOkRUl9dhjj/X/NUj++te/As5k/
653vQvIKRWq0LDLLrv4tkuxX7Vqlb+GBI4Wn8mTJ3sXAC0+5557buajL9PoT7S1nntdXZ3vP32mzAk/
+MEPfEUMBZtNmDDBm8Z1nqIWv/3tb3PzzTcPaluGEsWqxdXU1HjFqlj/
SbiGefF0ngSPziklhGNGi4sW2NWrV3v3FwVMHXfccYAzV2seKXCkqqqqQDmRAl+KKJblRG5YaqfaN2nSJP+
ZxsPatWu9PNEGQCY9uc5kAbqn7u5uPwYkP7WujB492psoJTe7u7v9QqygF50jcqCUoA2EYK31OTzVvlA2aP
xLma2srPTzSWNHa06Yc1X9XSoIq1jKjUmfSWfo6uryYyecL+nKVBoXoatL1rIJFUNra2tBVc/
W1lavI6hd0tvGjx/
v10u5UXV2duYpoJDTvxYvXuz7UspqW1sbL7zwAgAHHnjgBt9zNPdHRERERERERERkDkPKpCqIB3IsYWtrq2
dVtbuVRt/e3u53t9Lo29raPPMqBlU7lZaWFr/
jlUm7u7vba+1hFaqsQDsWBTF97nOf8ztY7XJfeuklwOWr1Pn6bOrUqZ4y/9e//gXkWMJXX33V7xC/
973v5f1eqcBa6/sjzOUH+bt/MdF//
OMfeeyxxwAX8AI5U+bo0aP9uNDu7qCDDvKskMaOxqOY1VJBmMcvZFW1qxVbqjrca9eu9bth9UFXV5efV7qe
jpUSwrEhq4Mc9rfccks/
pl555RUgF8jZ3Nzs548CEnt6erwlR2bgrAaQ9QdpRv3VV1/1rkUaG2JOysrKCnILt7e3e1Y1TGOl87MCzfH
Fixf7vMGSs2KKV69e7dsg2VBTU8Pzzz8PwHvf+17ApeoJr1lKkNwM19f3v//
9AD49m55xdXW1Hx+Sf6+88oqXBXru++23H+CsTnrmYbqmUkAoLzUe9JnM211dXb7/
xMJXVFR4fUTna7wUY1uzzKS+8cYbBfKgra3NP2flyhYrvGzZMq+7SZdYt26dN9+rjzRP6urqvDuN5EdXV5e
vUhaZ1IiIiIiIiIiIiE0CQ8qkvvDCC37XJZ+WN998k1122QXI7Ti0q+no6PDat9iNrq4uf1zavXZwITMk5/
3y8nLvb/XhD394CFu34Qj9/9T2iooKz+iJtRGz9cgjj3DKKacAOSZ69uzZfhcs528xA7Nnz/
Z9FKazKgVfmZAtTd9nuPPTOFIQ2D/+8Q/
PiHz7298GcgxJQ0OD9zMUZs+e7ceWGFSdv3LlyswF3fWFsF80BlpaWpg1axaQ2/
Xr2LJly7ylQrvdiooKf520FaOUEPaFgik1jkI/+DvvvBOA22+/
HXDt13hQu7u6uvz1NO+yEhw0EKTZzptuusn7pWk
caP6FMioMoJIM1liSb2pYQGSkEQaF7LjjjkAu1ZjWlTB5vdijuro6f1zMsorEzJkzx7NFkhNZh1gurQEvv/
wy119/PYC3MspHNaxZL8uD1h/IMa6q1nTiiSd61rHUfNdDplOp1AQFUi5ZsiRPlxCkZ0iOqG/
DwKmQqc0qFixY4O9TwbOf//znufLKK/
M+k0ysrq72Y0DHINduyQiNhRNOOMFbZVTEqLKy0gc3DwSRSY2IiIiIiIiIiMgchlT1X7BgQVH/
QjGh2qFKUw+T+Yd+delIW52zdu1afw1p/rW1tbz88stD1qbBgvxPGxoafB/Jr0OFDJ5++ml+/vOfAzl/
oeeff97vlLUbFDPQ3d3td8FiBMLjWUFf0fudnZ2evRKbIaa5qqrKp9b629/+BrgobbHNqi8vf7LGxkbP8oh
1Xr58uWeWdV31/1VXXeXLRA42kzrQ+vBdXV0FO3TNl3BeXHrppYBL8aHoVLFdof+Q2q5r6DegMM1KWHZ1uL
G+/gpT1PV2XpgZQ206+eSTgRxbdP/99/vxpkjV8vJyn9xavmdhOposorf+6unpKZj/
11xzjWeL1Ed99SPk5opKn4qBXbZsmfdjG2nIpxhyVgH53oa150P2EHJ9ALkMMmJin3rqKV8IQhaKLGPt2rV
+7RTbV1lZ6ddH9YeOrVu3zs/xMMuO1mt9Vqz2eroAQilBMk/l2lUWWDIzRCh/
5a8vJrrU2OQ1a9Z4f3tZR3784x/7IidiPCULw7GgMbN06VJ/Da3Rsl7vv//
+fvxpjQ6zDg0EQ6qkvvTSS0WFZ3oCpE1PIXp6evyCqsGi71VUVBQEYVVVVfmFJcvQA29sbPSvRaeLLpdbBO
TMNEcffbQXwKqZrT4eP368HzRZNj2EQjQ9Pjo7O/040CSS2eD555/
nc5/7XN41nn32Wf75z38CuaAAOWcbY7ySqv977723V3CkvEnQHH744Zkz84fPsZhyes011wDOhAtw/
PHH+02a2iclpayszI81mS7b29vzqsmE35s3b55PP5IldHd3+3FTbJwrjZjM/vPnz/emXaVFkbwoLy/
3C7fGRXd3tw8SCE2fWUZvymWooCqP8Ouvv+6rrWlMac6FFYiEMF/z4YcfDuQ22U8//
XRmlFQpmOFrjeVQLmr9Ud+EwXPKm6l8yWVlZT49VSlg3rx5BeulFArIKWHbb7894Ma8xn248dO41+ZEz3vi
xIkF6ZiWLVvm51WWEcoKyQb1g+RcuIEJg6X0eUiQQekEmWojFhJZYf5cucVpXVB6sZ6eHi9b1Oaqqip/
XMHxUmp33313Lw++/OUv+/
O10RsIskWxRURERERERERERDDETOpzzz2XF7wgyLwWJhQHt4PTbqcYA5ve8dXU1HiGJNwViJFU9aV08MxIo
RjbMWHChILqJjIlrFu3zpsd1VcvvPBCQToY9VllZWXRHe2GmpiHGmFQV1hXHtxOVU7qYsSVPuUXv/
iFd9pXSqCFCxfyxBNPAG4XB7lUGRMnTvRjQQEU1dXVnlmYOXMmkOu/KVOmFNR9HyyEzyCdhD8c62EAi/
6nqx4JV1xxBd/61rcAx7CDSx+TLnAhFrmrq6vATA75Sbwh9yxeeOGFEWNSw/tLB/
6FAQ2SK0pJdvvtt3uzr9ozefJkv/O/9tprgZx70MKFC/
2cEYvQ0dHhGST1vQJPlNoo65CMqKqq8q81VnbffXffv7LahPMwnci9oqLCWxtUWUbnX3PNNRx//
PFD3Zx+QYx4WNVGDJKecWiZ0zgKgzXFmkqGLF26tKRMuosXL/bPT+3cfPPNvbVJx8Smhax5mLJK/
aGxc9111wGOcVTxE42BefPmlQSTGkLpG8UOyjp5wAEH+HN0LGSO0y5Rf/
zjH9l5552BbAcmK4XlpEmTvLwPrSxiymWdVX+UlZX5cRFaO/
WZ5ovWmjfeeKMgzVR1dbVnnLUeb8h4iUxqRERERERERERE5jCkTOqiRYv8rjb04ZAmr92cdms1NTV+9yfNH
CjY2etY6HOo74W7HvlxZoVJLYbRo0f7vlH7xPJYa70vR8g+a0eT9pdbt27dgGrjDjXESskfSmzlkiVLPNsl
/5/999/fs2I/+MEPgNzu9mtf+5pnBJS4f8mSJd5/
bNdddwVyfVVVVeV9ZfRZyBKo1rfO6enp8YzbbrvtNmjtD9Hd3d1niq2+WG9ZBi677DIAbrnlFp86Zc6cOUB
++qg0S71s2bICX86QRdK40/unnnqK97znPRvaxEFBuNtP91dzczN/
+ctfgMJk7fX19Z4h1679tdde8yy7dv4KEBg/
frwPIlLfVVdXe7ZfjILSGxV7flmC5F8oG1Q2WFaIhoYG3w9p9jxkUjV+wqTtmh/
y5Vu2bFlmUtzpedfX13tWPB0UGFrcNN6rqqq8D6vWotCPs5SY1CVLlhQwZWPGjPEyVQxx2mKThq6h8a9g1G
222cYzqULoC1wquOGGG4DcuNDcf/755/08kUUzhHxTw/
RepQDdZ2jRDtlMFcCR5UFrYnd3t187NadaW1u9pVFzQ3Lk0Ucf5SMf+Ujeb/
f09HgZIZ9v+bb3B0OqpIbVS8JKJXrAobkF3ISRUAmDOdKCJvxeWH8W8oWznOWzjO7ubr8IpAPDenp6vCBVP
4amcil/YfWXdNDDSOONN97wkX2aFHJh2H333f2icPfddwPOXK3sBsrd9otf/MJfS5NCwiLcgGgi6nfGjx/
vFxuNv3HjxhVkU9D75ubmIavRvqELuZ73s88+603NGuNq80EHHVRQc3ncuHEFAWFCZWWlnx+ac2EwVfrewo
pxQ420YhSaoqR8KLPDvffeW6CMhbk6tbjomtOnT/fmLsmEQw45BHAuSTo/
zM2cjpDWWLn33nu90jcSCCuyhYpGmHc5xHHHHefngDJcPP7443kZMyA3P4rliF26dKkfc4p613hraWnxFd9
UlWikoLk7efJk5s6dC+TGUbhhk+KlNaatrc0/5/
TcmTx5spdRpYDW1lbmz58P5DYSa9asKagaFK4x6blXXl6eJy/
BbVjBVWpTn2ocys0i6wjlm5SlbbbZBsiN57q6Oj8WJGPq6ur6zB0tFxgRG1ncyIZEWNq9EHKbz3TO4/
Ly8rzKc5Cvd6VdxZ588kn/3XQ+YhhYBbdo7o+IiIiIiIiIiMgchpRJDVNZaGc6ceLEAopdO9v29na/
mxO1HFY50DFp+6tWrfI7IbFoZWVlfrco8+hIMh/
rQ2VlZR6THKK7u9vvQrTzbWtrKzDzr68iykBzdG4M9Gxra2u9yVhBGnr+TU1N3sygY6NGjfLMq66hXHarVq
3ybdQubfny5X7nq92ixtpmm21WUJFs+fLlvqpUuvrSmjVrhoxJ1c56yZIlXHjhhUD+rhNg6tSpvl26j9GjR
7P33nsDcNhhhwG5/rj//vvzgqLAsYgy5epa6u/
Jkyd7hlZjorm52b9O76LDCj5DjWL15cGxpzLNazw0NjYW7NLV/
ubmZt9ePdd169b5Cilih5XWbK+99vLtVL91dXX539J9iZ2/5557hkyehMxo2hxbzD2jGBRs+MlPfhJw1gQx
0H/
84x8Bl65MjPJzzz0H5KwxY8eO9fNHcnTLLbf0lguxZmKPXnvtNc9SjzSTKrZw8eLFvh8UEBIGZoaWJ3BjKF
3t78EHHwTc2FEflQJCxk9jZuHChb5d6YCp3gIUxZBJ3uq5L1iwwPeVzP6S3VlFaMUFl6JO5mr1V2gx0VgPr
XY6T+NJaGxs5NZbbwVyTGrWWFTIrSfNzc2+H2TRhFxbwwpa4ORP2sILvafievbZZ73MkvWlqanJy1ZZcDYE
kUmNiIiIiIiIiIjIHIaESdWOtry8vGAHHtbATldCCd+HNaXTzv3aCVRXV/tKGKo73NDQ4DV/
sTFZQVgXW+3r7Oz0O6+0w3u4c9Gxrq6uglREYZL3tP/
IqFGjRiQFVejvpftLt6+rq8un75Cvyquvvup3YjrvHe94B+CYPfnOiD0uKysrqLWs/
+3t7XmpZ8CxLGmGUbvA+vr6vEpdQ4GLLrrIz4nPf/
7zQI5RXbRokXdYF6s5adIk3z6xzmIDKysrfSCZ2IKOjg7/vLXrF9Oxdu1avwMWkxYW0Eg/n+EsCCG/0N/
+9rdAzgpSUVHh2R/N+/b29oI0Qnrf0tLix576pLW11feJmAKlqbrnnnt4+9vfDuQXMxCDpN/W9Temckp/
0VeFOGutf54KWHn44Yd9MQelYzvttNMA+N73vsdPfvITAH76058CbryrSpsKhlxyySWAm39ilb7whS8A7tm
IOVXwoyxYkydP7jX4Zrihfttvv/3yAj8gv1BD2u85lI+aH2KF77rrLu+rXApYtmyZH/
9hYHJfVja1X5aljo6OgjVI11q1apV/LfkwnBaXgSAM/AO4+uqr/
fiVVSq0yKaDoSZMmODPk2VOc2SbbbbxsisrAYTFEPqC6nlJ7v3pT38qqAwq2RnGCYXpQcN0ZUCehVNWCCX1
X758uR9PAxkrkUmNiIiIiIiIiIjIHIaEKhHL1draWqBpT5o0yadVUuRgWHYuzfqFkWTSxrWLWbBggd/
Fa+c8d+5cvysIazlnDYo+7ezsLIjQ1o6spqbG72xCtiLdR+qPsrKyvKT/gPdnHG4oWr++vt6nhlLkrJ5/
Y2MjU6dOBfDlSA888EDvZxiywYL6IRwTet5h2jJB15DPzdFHH51XlzhEdXV1nyzWxkB+lYsWLfKs/
yuvvALkfIPGjBnjn7fGREVFhbdCaIev3Xx5ebnvG825cMyoH8U+h/
624dwQs6v+E2s4XOUgV6xYwXe+8x0gN8eVBqarq8u3P/RlT+/uQ4TpoiA/
+l1WHjHmEyZM8M9GVpnu7m7vCy/GQOzUokWL/
Fga7JKI4by+9957gdwzV4qxN9980zOp6qvJkyfz3ve+F8glXdf9fvOb3+TnP/85APvssw/
gmHWlcBNLr+jt1tZWP6bEwNbV1fnnIcuE5uvf//
73zJRFlW8swNlnnw1QULwilKNhJhmNFfnMqWiDSjuWCpqamrwFRfO9vLzcz5N0gY9169YVrCednZ0F1qwwi
lvH9DtZXmdDqO2vvfaaf/aaX7JIhf7X+h/
KG80XvZ8zZ463cKlQiKwYWUIYp6DnJ2varbfe6nWxsIAH5JdF1fcmTpzo1y7pHjpn7Nix3hqmMRZeYyDp3I
ZESdWNjBo1qsDcstVWWxVUc0lPBMin6HUNNVodM2bMGC9Qday1tdUrIWEd3qwhdCBOC4mwH0JzLLjJoQmSz
uHY1dXl+0bmiZFSUlUR6vzzz/dpayTUVMWotrY2r4oFOAVMCpcmjpSU6upq3zdSNqqrq/
2CnD42atQoPy60uIZKraDxt3btWi/IBruCyl133QU4E4v6Q8q6UsYsX768IJVadXW1X2zUrjDnq/
oobFM6R6SUqe23395vCvS9sWPH+vP1X0pQZWVl0Y3CYEFj+1vf+pbvA0FzvrW1tcCc3Nra6tubDpLq7u4uy
Kfc3d3t+yJtiuvp6fHt1YI1ZcqUvEAbyG0a2trauOiiiwD4/ve/P8CWF4eCfb70pS/
5Mal5ocVxl112Yc8998w7Nn36dL9ofP3rXwdy6dtGjx7t7/3ZZ5/1vyU5ob6VAjtx4kT/
zLW5efXVV72Lyb777pv3/
XXr1jFr1qxBaf9gQopTX7I1DA4KzZuAD64M3dNKAWHuac2N6urqgpRBQljlLtzE9rZZr6ioKMjTrXGSdcgs
v3jxYm/
+lo7wyCOPAI740nkKrlq7dq2XL+pTzdUFCxZ4FyK5xGRRSZVrUGVlpZflGgtPPvmkP65xEroupAMNjTFewV
Wbdc6yZcs8iSI9rKqqyo+tYkTS+hDN/REREREREREREZnDkDCpoalMuzQxh2vXrvU7vbD6gZBmPKqrq/
OqLUGOSaqoqCgwkUOO9cmaA3O4q9duo7a2tsA5XaioqOizr9S+YqZPMXIjBZkAL7/8cu/
aoLrAYqDq6up8UIL+h0EPYuRDk4J2ZNrJzZ8/3/eb2hwyCNrlqx8bGxsLdnPq//
b2dk444YSNb3wRnHnmmYCr3KKgIDGcCl5pb2/
PS5IObqzLTSKd6qWystL3ja5VXV3t2YHx48cDORawvLzcjyO1ubm5uaAyla41e/
ZsbyYaCib1e9/7HuCes56dnrl2+StXriwoNlBZWVlghg+tKzovTNuWZibVnmKBWQ0NDZ5VFuOs8VZZWemf1
2AjrOSjfhCDI2bv6aef9sUdhM7Ozrxk/JCfjk79IWaorq7O94fG1qOPPgq4/
hAzqmtOmzbNny+5JevNCy+8MGQuMhuDYkFRgtoVjh2dV+z8LAfEpNHU1OTHjuZUaLFKF2+oqqoq6I+wKl86
SFe/ATk5WypVl3TfO+
+8s58nkhs61tLS4plUsa177703d955J5Bzu9E60dTU5OfoV7/61aFuwoChtlRVVRXIiOeff55rrrkGyLHik
jcrVqzwKdh0jYaGBu8upUp+stjuvffe3lJ4xhlnAG7+SH4OJMgye9IlIiIiIiIiIiLiLY8hTUFVVVXld3Ah
u6NABTEXYeLqNJtojMnb4UFh2hnIlYC77bbbvD9hOjAmSxArVlVVVcBEaOfe0dHh+0NtLsZaaDfY2dnZZxD
RSEGsqv6HPjvahSttRVNTk9/
FaVcXMqNifs466ywgf6cvxlDsV2Njow8gE1O7Zs0af42wFrHOGapSunpuBxxwAAcccACQe0byTV20aJH3JZ
blYd26db7f9Gw1JsKk72IGx44d68tfivH73e9+B8DFF1/
s2VV9r7KysqA8sXbJS5cuLUjfMphQ2pe5c+d6P2U9k9BZX+M7LK+n+wpTb0F+0IfGTcg4qw/
DdFtpv9t169b568q3MXxG8s/UcxwsHH/88f6/Ajn+9a9/
ATnfr4qKCs9iqs3GmALfdaGmpsb7m4XWFfW9fEwV3Pjaa69x/vnn552zfPlyzzSpxKrm2MqVK31/
KLgqC9Az1ViQTA2ft9ak0AKl88O+GokUfgPFZZddlheUC/
DZz37Wr8maB2GsiNqX9lct9tnq1at9ujMxZqVQfhxc6inILy0uyHq0YMECzw5Kf1i+fDkHH3wwkBsr4dgRw
/jwww8DcOyxxw7J/
W8MJCtqa2u9lS7UJZSSbjAhedrZ2enXrIHoZEOipEoBC80oci42xvhAmK222grImbTWrl3rFx8pEsuXL/
fmXy2mYf1xLSIf/vCHAaekpk2AWYQESG1trR/4GkhhQJkealg1Kl1hSf/Ly8u9wFD/ZR3aXOj/
YEPK7EgjFPaaExrrM2fO9P+Vuy6EhIrGQJh3tj+BHe9+97sBp8BKAZUS1tPTk1fNCPJdZ6T4DwVOPPFEwG1
cpXhp/Cp3bG1trZ/
jEnrjx4/3+TqlwKs9DQ0NXqEKq6hoE6SodJ3/5JNP+kAkBRZNmTLFyxiZt7UohRXUhhKqLqb/
ITQepHw2NTV5JaQYZOaX0rk+KPuE5EwY8azAO427qVOnZjJwKo1QfoabnfWdD7mFNU2gZBHTpk0ryPXc3d3
t25POdhDOdaG8vLzAxSF0iXrnO985NDc/xHj66acBNw9CBRRyY33nnXf2CqnM/i+//
LJfn6TM6vtNTU1et/l//+//
AdlUUqVTWGv9s5ReBbk1ReMiTVz0hvQmsKenx8+TMOtH2r1og+59g78RERERERERERERMcQY0jypDQ0NPoh
K9a6nTJniTa9p03Roug0DXdIMUshCStM/9NBD/XfD9DVZR1lZmW9/utJPMfNLV1dXQXWIMB2MUi6Vwq7/
rYSNCS7Z2FRqMtEOVVDYQKGxetxxxxUck+l7sPCZz3xmUK83kkjncRxsKH1VKaM3C0NZWVlBTlRjTJ/
5VEsJ3d3dBQFeixYtKnDzkTwKWdOQbRbSTNrMmTMLzgvd0rIIra9aJysqKjz7KRcVWWYWL15cUM1O5n/
IMam61uabb+7HmljZuXPnZiZ3cBplZWVevwitZHqWxfJOF5sL6UBDfS90wZTlpqqqqujxft/
zBn8jIiIiIiIiIiIiYogxJExqmExYWvgee+wBuNrXqm4iPw85shtjPMsasqbpFFTyKWpra/
P+WUoUP3HiRL8rzjKTGgaXpatKadfR3d1dwMB1dnYW+AnJt6Strc33W1gsQCi2U46IiIjY1CCfQcm6sOBHe
h2pqKgoqFU/
EMYnCygm22fOnJm3xkKOJQxZ19BypzUoHehSVlZW8BtZT831iU98Asgl4F+7dq1nPZVSSmxoS0uLTwUn3aK
xsdH7pyqgUcn/Q8iy8cUvfpG//
OUvQ9GUAUPPLCxMEOoW4Vzo7bv9QTiGNOc6Ojp8PIH86DcEkUmNiIiIiIiIiIjIHIaESdUuNEyL8uqrrwJw
xRVX+AhbRfSK8Vy7dq3PDCDtfauttvLaebizAaepv+Md78j77Y6ODr9rDGs5Zw0777wz4CKK06UwtTMNmWg
xr52dnd4fJl1bfcWKFd73qL+RvBERERGbArTuVFZW8oEPfACAG2+8Ecj5C5aXlxdNVC+/
RaVCC7MqFGOXsorQf1Cs8KpVqzxTpowisrTV1dUVRP6HbGmaJW1vb/frtnwas+6/
qywf8i3da6+9uPfeewEKovy7urq44YYbgFx0f1dXF1/84hcB/
DGln2tpaeGoo44C4NxzzwVyKf+yBGXgCDNbKOsHDB4bHrKzSic4Y8YMP57CjAL9hdmIAdbrF0Wr/+AHP/
B5Kg855BDA5WocSpx//
vm+o+Ri0EtKiMG2eQ+4I2VeUKodpWloa2vzyqkETnd3t3dtkLKuAJQJEyZ4ITsAZKY/MoLYH/
kYCh+R2Cf5iP2Rjw3qj2LuTFqLHnjgAcDlu3388ceBXArE/
fbbzyusCtgTEdDV1bUxSuqw90foziCce+65PpdtWGkOnFIh5VQKW1dXV1E3CXCBQpdffnne9YsFa/
WCTMyXuXPnFlTlu+yyywC3OUkHPf33f/+3dxlQXu+TTjrJH1c+byl9G6DwZaI/IDOugEV/
PJr7IyIiIiIiIiIiMoeNYVIjIiIiIiIiIiIihgSRSY2IiIiIiIiIiMgcopIaERERERERERGROUQlNSIiIiI
iIiIiInOISmpERERERERERETmEJXUiIiIiIiIiIiIzCEqqREREREREREREZlDVFIjIiIiIiIiIiIyh2FRUo
0xc4wxh/
Vy7EBjzCvDcR8REaUOY8zpxpgH+jh+hzHmo8N5TxHZQRwfERF9Iz1HjDHWGBPriGcUfSqpxpiW4K/
HGNMevD91MG7AWnu/
tXa79dxHUSXXGHOKMeYaY8yWyUAb8SLLw9FnmzKSZ60+W2WMud0YM32k72u4YYw5wBjzkDFmtTFmpTHmQWP
M29b3PWvt0dbaK/
u4bp9KTFYQjINmY0xT0hdnGGOi9Yc4PoohWQ8eT2THokQhP2Ajr3mPMeYTg3WPQ4m34pxJrRdLjDFXGGPqR
vq+SgWlsN72OXittXX6A+YBxwWf/WGob64fSucxwF+H+j42BP3ts4wo1CN+D73guKT/
NgOWAD8f4fsZVhhj6oHbcO0eB0wDzgfWbeR1s/
q8e8Nx1toxwAzgB8A5wGXFTjTG9Ltgdqkjjo9CGGO+BPwE+D4wGdgC+CVw/
Aje1kjgrThntF7sCbwNOHeE76dPZHCeZXq9HbQdljFmgjHmtmQHt9IYc39qB7e7MebZZOf/
R2NMTfK9g40xC4LrzDHGnGOMeRZoNcZcixM4tyba/
leS88qAw4E7gfuSrzcl5+xvjCkzxpxrjJlrjFlqjLnKGNOQfFfM66eMMQuTXffZg9UXvfTPwcaYBUnbFgNX
GGOqjTE/Se5hYfK6Ojm/
gNEwgVnCGHOMMebFZNf8pjHmf4LzjjXGPB3spncNjqX7N2sTxsNauxa4AdgRwBjzbmPMU8aYNcaY+caYb4f
nG2M+kjzvFcaY80wfbiYZx7YA1tprrbXd1tp2a+3frbXP6gRjzA+Tne8bxpijg88985OMoQeNMT82xqwE/
gj8Ctg/mSdNw9
usgcFau9paewtwEvBRY8zOxpjfGWMuMcb81RjTChxijJlqjPmzMWZZ0i+f1zWMMfsYx7KtSRiXi5PPa4wxV
ydjpskY85gxZvIINbW/
iOMjQCLXvwN81lp7o7W21Vrbaa291Vr75fXI2bHGrVvLkv66zRizeXLsAuBA4BdJf/
xi5Fq5YXgrzhlr7ZvAHcDOJmVZNf1kxI0xDcbpCsuSteRc43SJ6qStOwfnTjSOhZyUvC/
pdTer6+1gmgHOBhYAE3E72a8DNjh+InAUMBPYFTi9j2t9CHg30Git/
RD5jORFyTn7ALOttcuBdyafNSbnPJxc/
3TgEGAroA5IC5lDgFnAEcBXh0GhmYJjPmYAnwK+AewH7A7shmtTf3eBlwGfTnbNOwN3ARhj9gQuBz4NjAcu
BW6RUE4Q9m/XxjVp6GCMqcUJ2UeSj1qBjwCNuPv/
jDHmhOTcHXHMyam4HWEDjmEqRfwH6DbGXGmMOdoYMzZ1fF/
gFWACcBFwmTHG9HKtfYHZwCTgNOAM4OFknjQOyd0PEay1j+JkzIHJR6cAFwBjgIeAW4FncM/
9UOCLxpgjk3N/CvzUWlsPbA1cn3z+UdxYmY6bL2cA7UPemI1DHB/52B+oAf7Sy/G+5GwZcAVOJm+Be/a/
ALDWfgO4H/
hc0h+fG6L7HzK8leaMcWbqY4BVG3GZn+PathVwEG69+Zi1dh1wI27tFE4E7rXWLt0U1t2srreDqaR24m52R
rKLvd9aGyqpP7PWLrTWrsRNjN37uNbPrLXzrbV9Dfx307ep/1TgYmvtbGttC/
A14OTUDub8ZNf9HE5QfajYhQYRPcC3rLXrkradCnzHWrvUWrsMZ7L7cD+v1QnsaIypt9austY+mXz+SeBSa
+2/E5blSpwZcL/gu/
3p35HETQmLswbHlv8fgLX2Hmvtc9banoQ1uhYnSAA+ANxqrX3AWtsBfJP8TVLJwFq7BjgAd/+/
AZYZY24J2Iq51trfWGu7gStx8643JmOhtfbn1tquDD/
vDcFC3EYP4GZr7YPW2h5gF2CitfY71toOa+1sXN+dnJzbCWxjjJlgrW2x1j4SfD4e2CaZL08k/
Z9ZxPFRgPHA8j4W/l7lrLV2hbX2z9baNmttM06BO6iX65QqNvU5o/
XiAeBenMvHBsM494eTgK9Za5uttXOAH5Fbk68hX0c4JfkMSnvdzfR6OyAl1RizhQkChJKP/
w94Dfi7MWa2Mearqa8tDl634ZjN3jC/H7exPn/UqcDc4P1coIJ8YT0/
dXxqP353Y7AsodSFYvfY33t4P64P5hpj7jXG7J98PgM4OzE5NCWDb3rquv3p35HECQmLUw18DrjXGDPFGLO
vMebuxBSzGreDn5B8ZypBu6y1bcCKYb7vQYO19iVr7enW2s1xTPlUnM8dBHMpaSf0Pp+y/
qw3FNOAlcnrsG0zgKmpcf91cvP9v3Bm8pcT8+Sxyee/B/
4GXGecKfgiY0zlkLdiIxHHRx5WABP6MKH2KmeNMbXGmEsTs+UanOtYo9l0/
DVh058zJ1hrG621M6y1ZzJwVncCUEXhWBFDeBcwKlmHZuCINrH3pbzuZnq9HZCSaq2dZ/
MDhEh2Hmdba7cCjgO+ZIw5dID3ldbI894bY6bg2IEnezkf3O5xRvB+C6AL5xgsTE8dXziQm90ApO+z2D3qH
lqBWh1I2py7kLWPWWuPx5npbiJnipkPXJBMWv3VWmuv7eM+MolkR3oj0I1jjq4BbgGmW2sbcP5zMmMuAjbX
d40xo3C7/ZKHtfZl4Hc4ZWSDv76e9yUD46LXp+EYE8hvy3zgjdS4H2OtPQbAWvuqda5Dk4D/
BW4wxoxOrD7nW2t3BN4OHIszcZUM4vjgYWAtcEIvx/uSs2cD2wH7WmfWluuY5Eop9ofHW3TOtCb/
a4PPphQ7MYXlOJY4PVbeBEjY5+txbOopwG0J+w6bwLqb1fV2MAOnjjXGbJP4Pq3BNbR7kC6/
BOcjIhwD3GmtdydYhjOlh+dcC5xljJlpXEqK7wN/
TJmEzkt20jsBH8MFDgwnrgXONc4BewKOMr86OfYMsJMxZnfjgsy+rS8ZY6qMMacaYxqstZ3k+hucueaMZBd
kjDGjjXOAHjNsrRokJPd/
PDAWeAnnR7XSWrvWGLMPTlAINwDHGWPeboypwpn0evPDyzSMMdsbY842uQCO6TjB+Ejf3+wXlgCbJ31UEjD
G1CcsznXA1da556TxKLDGuOCEUcaYcuOCRd6WXOM0Y8zEZKFpSr7TbYw5xBizS8KcrcEtUoMlt4YEcXzkw1
q7Gic7/58x5oREplca5697EX3L2TE45q3JGDMO+Fbq8um1pyTwVp4ziUvHm8BpSZs+jvOpXd/
3unFK6AXGmDEJW/
olcmMFnOJ2Es6F5Jrg85Jfd7O63g6mT+os4J9AC25n+0tr7T2DdO0LcUKmybgo9jxTf0I1XwA8mJyzH86J+
fc4880buJ32f6euey/OReFfwA+ttX8fpPvtL74HPA48CzyHY4a/B2Ct/
Q8uYvWfwKvkdsLCh4E5xpmozsAFPWCtfRznH/MLnAP5a/
QdpJZF3GqcG8ka3HP9qLX2BeBM4DvGmGbcQiP2mOT4f+OE8iKgGVjKRqblGSE04wJa/
m1cFO4jwPM41mdjcRfwArDYGLN8EK43lLg1edbzccEvF+M2kwVIFpjjcCa4N3CsyG9xDv3ggjZfSMbVT4GT
E9ebKTiBuwYnmO8lf1HKIuL4SMFaezFOoTgXR1rMx5kub6IPOYtzkRiFGy+P4LLFhPgp8AHjIv9/
NqSNGBzEOePwSeDLOBP0Trggsf7gv3FM7GzcmnsNTpcAwFr77+T4VFwmAX1eyutuptdbY22mGegCGOd3tBj
YOtlBD+QaW+ImZaXNYJRdxMYjYc+bgFnW2jdG+HYiIiIiIiI2SQzleluKlSjGAecNVEGN2HRhjDkuMfWNBn
6IY03mjOxdRUREREREbFoYrvW25JRU69KIXDLS9xGRSRyPC4hYiHM/
OdmWmqkgIiIiIiIi+xiW9bbkzP0RERERERERERGbPkqOSY2IiIiIiIiIiNj0EZXUiIiIiIiIiIiIzKG3Ch3
9wUb7Cfz1ry6L1DHHHNPneatXuxipf/7znwC8//3vL7yZxG3B9FqiugCDndNro/
vjgQdclqnnn38egOrqasrLXeGTbbfdFoC2tjZWrXKliQ844AAA/
37KlCk0NjYO9OeHvT+stQXPq6Ojg7lzXcGPnp4eAFaudMVS1qxZQ2dnZ975PT09VFS4YaxrjR49GoCZM2dS
WekKoUyZUpjLuavLJXbQ91PI3PgYYQxFDryN7pMf//
jHADQ3u5zaF198Mfvt5yoRvu997wPg9ddfp6rKpf3UXJkwwRVOOfPMM5k0adJAfz4zY6Q3+bdy5Ur+9a9/
AbD55i73dltbm5cTe+21V8F1NkCGppGJ/uju7vZyM40VK1bwhz/8AYAddtgBgJdffpk333wTgB/
84AcD+cnekIn+aGtrY/
bs2QC+nd3dLq1peXk5tbUu5/2///1vAN797ndz9913A7D99tsDUFbm+Kz99tuPmpqagd5/
JvqjGK691uXcf+aZZ6irc8XZ9H/FihVeB7ngggsAGDNmUNKfZrY/RghF+2NjfFI36Iuvv/46AD/
60Y944oknAHjjDZepQAtGeXk5u+22G5BTUF566SWWL3fp+nSvs2bNApyQufDCCwFoaGjw39OEWg8yN0A+9a
lPAfhFZYcddvD9tvPOrpjMmDFjvFL1kY+4Ih8dHR0A1NTU8Pa3v32gPz9s/VFsQb3zTpeecN68ecybNw/
AK6stLa7ybk9Pj198pHx2dnb66+gzPf8xY8aw5557Arkxs9VWW7HlllsWvZ/UPY3o+GhtdUVTbr/9dr/
APPjggwDssccegBsfc+bMAfDK+9ve9jYWLnTFdNSnEydOBGDPPfdk8mRX8fDd7343QH/
nCmRMSX388ccBOPDAAwE45RSXZ7q6uppLLnFxlffff78/R3Ll8MMPB+C3v/0tAJ/5zGf4/
vcHVOobRmiMSDb259mdeeaZPPvsswCMG+fKt48fP561a111Zi3O6/
u9UpCpffWLFLDTTjvNy4mDDz4YgEWLFvm59eUvfznvf97NlBgR8t3vfheApUuXsmKFq1ipzcmiRYsAJ0Oef
vppAP//D3/4Az//+c/zzpfS+tnPfpa//92lEz/vvPOA3BzsBzKx5i5YsMDPCSnr3/
ueS5vb2dnJLrvsAsBVV10FuDZrzW1vdxVXNXa22WYbdtxxRyBHjmwAMtEfGcLIKKkPP/wwAB//
+McBmDNnjt+J1dfXAzkma9y4cYwf7yprSYg2NjZ6JUyLtYRtQ0MDhxxyCOAGEriB0k8hnrkB8ulPfxrA98/
o0aO98NSOdp999vHCZPfddwfwimlZWRnbbbfdQH9+yPujmJDXIillfP78+V6AjBo1CsgJ1MbGRq9sPPbYY0
BOyECOcd1ss83893Vdsc7HHHOMfz1z5sxe74sRGh9q6w9/+EMAxo4dy4wZrkpfU1MTkGOAOzo6eOqppwDHM
kP+giHFVYppeH0J27POOqsoy1wEmVJSX3zxRQAOPdRVXpYsOfXUU/
2YWLp0KeBYVvXLFVdckff9yy67jA9+8IMDvY3MyJCXX34ZgDvucPnFpZR1dnZ6i5XkaE9Pj1c+jjrqKADfB
4ceeqjf8A8AmemPX/
3qVwBcf73LPy7FtKenh0cffRTIKRXWWr+Rk8Lx0ksvAfDe976Xr3/96wCejd8AjEh/aPx/
4hOfANx6KUuDnvddd90FwBZbbOFlqRTZiy66iBtuuAHIrTsaV4cddhh/+ctf/HUBrr6633n8R6Q/
nnvOFduSJXbdunV+/Gu9fOGFFwBHEInYGDt2LOA2dSJMJGfEsi5cuNDrG1qvzjjjDP96PRi2/
gh1opBFT0OM8dve9jbAsfAiEdVn06dP52c/
c3Ut1EeDhKL9EX1SIyIiIiIiIiIiMoeN8UktQJqRamlp8T4wYnyWLVvmX2v3/6EPfQhwOxZ9V2b8ww8/3O9
2xK5OnTrV3XxFhd8pf+xjrvLb9ddfvyEmzExAvqjazcun7umnn/
YsWNgm7eL0WVtbG1Dc7zJLSI+P+fPne1cOsel77LGH37WeeOKJAP6cmpoaPv/
5zwN4drG8vNyz7+vWuYpsYk0qKyv9LvCZZ54BXB+LKRKTqvvZSH+8QcHtt98O5NwTRo8e7duv+xVr2tnZyc
knnwzkdvizZ89m8eLFAN7XbIsttgBgyZIlfmypj2+55RbvZlJKEDOQtgRdfPHF7LrrrkDOB7Ozs9Ob9GWlE
IsghqmUIBZcJukXX3zRj2mx56GFYZ999gHg1VdfBZxLhJgSyVRda+LEiV6+ysXoC1/4gp9jWcZrr70GwDnn
nOPniNjPkAVVX8k/uaWlxc83Ydq0aYBzsTn+
+OOBXB+9613vGqomDAo0pjU31qxZ49dhtV1WmQkTJngGVevP888/7+WxxodY5yVLlnhLjuZgltHc3OwtCZK
f5eXlnumUW9Xee+8NOB9tWSG0vq5YscL7rauPtE6EjKmsVL/+9a/
5whe+MHSN2gAUs5QX049kWdppp50AOPLIIwFngVQfyVL5+9//3lt4Zd0WNsA1qN8oLW0uIiIiIiIiIiLiLY
EhZVLfeOMNHnroIQDuu+8+wPk+vec97wFywRtiNdauXeuZjtNOOw1wbFt69yLN/rLLLvP+h9oJLF+
+3LNnA3B0HxGoj7RTUXR/Z2enZ8PCtusz7XIVPFNeXu4ZgCxBzyG9w1qyZInfiWmXW19f7xnRiy+
+GHA+MOB2rWJS1WZrrb+uWPXPfe5zAGy99db+WmJeW1paPNNY7D5HeqyISZWv9aRJk/x4F/
shVqiystIzxJpDEydO9MypfMb0vcbGRj9m1M5nn312fVkOMo00mzNp0iT+85//
ALngqsrKSu87pX5S+8VSlxJkeZKs3Hnnnf0cU9Sxxvgdd9zh59ZWW20FOFZM7JLm1gc+8AHAsbRiY2Xp+uQ
nP8mNN944tI0aBMjPcsWKFd4CJVZRcmDq1KmeFQzZxW222QbIzRXNhcbGRn8NsUdZZ1LFEGv+W2s941ddXQ
3k2PjGxka/vqqdHR0d/jz59GusrVu3zrP0kiVr1qzxlpysYc6cOZ491v/u7m5/75IHGh/
Nzc2eTZRsqaio8My8ZHHozyn5KbZ1+fLl/
nrqx5GC5FxoLSymF8m3X9YnBd0Ww6WXXsrWW28NwLnnngvkAs+GwoodmdSIiIiIiIiIiIjMYVCpkzQL1dDQ
wDve8Q4g5ze52267eU1+yZIlQC5qbM6cOX6XKx+o+vp6f135zujYcccdxz/
+8Q8gF+G+cuVKz6SWChRZmPb7Wrt2rWdGtINbvXp1wc5X/ZlFFhVy/
nFppm7hwoV+DChnoTHGv37nO98J5CINv/e97/
Htb38bcH5nANdcc41nBX7xi18AOf+p1tZWf0yYMmWK9+lV5gmxKBMnThxR9n3ZsmU+PZbYkLKyMp8jVyyP7
nH06NEF0cjhGAjZIHAMiRgBYezYsd6XSqxaKUAsh8aW2L+QNRLjXIz1SMugUsHs2bN9u/
S8qqurvXxVf4g9veCCC7yvpo51dHSw//
775103ZH5kqZEcnTt3ro+QVnqeLELscXV1tc9kIFkgK1VbW5v3Wda4nzx5smcCNcfCdEJ6nZYlWcXll18O5
JjOzs5On8ZP6f00f15//XW/juj/woUL/
XlKE3nEEUf4Y1qT1KfXXHMNZ5xxxtA2aoBobW0t8D81xhRkagiZRvWVPquurvbyRZ+JMezu7vbzSp+tXbvW
s/SyXow0woj+9P3+/Oc/93PnsMMOy/te6GMaWtyUWegnP/kJkGNShwJDqqS+
+OKLPkhqwYIFgFOytLDKnCRH/aqqKk+Zy7y0ePFiTjjhBAD+9Kc/Ac4FAFwaIpnxROVfeuml/
OhHPyp6P1mFFlEtClKiOjs7vUBQ0MPKlSt9GiaZvKW0SjBnCaELhxDm7NPzDhVuKVeaHEqHsnLlSq+kCs8+
+6w376v93/zmNwHnHqDFR+mIlixZ4otHyGx35ZVXAi5QSxNRwVfDCc0RyCkN8+fP9/eisa7/
HR0deWlBBAlgCdtQoMq9QteYPn26V9RKSUmVIqWxIqWzu7u7YEEJXUIkoHW+NgOlgvnz5xe4PZWVlfn+UDv
TaftCTJkyxY+vtOJVUVHhvxvKk1JQUpctWwa4uZvexEi2rly50m+CpdiPHz/
e95v6UfOqra3NX0PrTtah9USplHbeeWduueUWAG699VYgl4rqiiuu8G53t912G+BkpeTmQQcdBORcKY499l
hPpigVYpaD6tasWVPgblZRUeE3HhrjoWKqNUDrcBhopfkSji+tXZK79fX1PjA1K0pqKAvTZJH0KoAPf/
jDecc6Ozt9u0J96jOf+QyQ09NUVOWss87qk+hRv6XdEPpCNPdHRERERERERERkDkMSKaGdyDnnnONNqTKtX
HjhhZ75k2lSKaaWL1/
uWTalxQnNLjJRKWXTlVde6U3lxx57LJBLNVRK0E5MTstilpcvX+5ZLqXI+OUvf+n7RMEBCh7LImpqavzu85
prrgFySaZ/+9vf+iCfsNypmEMlDFbbb7zxRr/bVwDVhz/8YV/
+UmzPN77xDcDtnMUqaMf85JNPctxxxwG5AKuQQRwJBlV4+eWX/
W5f5qL6+nrPhul5i0EbPXq0N7nJQb+trc0f19gJ06WkzdszZ870u371cykgnYYtTFatZx6mYdpU8Oqrr/
oxGqYHSjMSYXCdXDzEHIYFT9Ilha21fq6ELKvM4FmGEpGXl5cXMDYaJ2PHjvUsshLVb7311l7+pAOAwsA8z
ausI21tglx6LpnxJfNqa2u9FVKM6NSpU71VR+nLxMS+
+93v9mt6KaC9vb1ARlhrCxhRWfuMMX6eiBEMA2olU8LUUzKVay2rqqrKnIUmtLBINmgs3H///
X5NVhVLIQz8Ct2m5BagflMg5llnneX7KnQP2Bg3usikRkREREREREREZA5DwqRqd/7b3/62oI54uLNJl/
BsbGz0fj9ikrbddlu/e3nllVeAXDLzuXPn+oTTn/zkJwG3KyillDqdnZ1+Fy//Fe1o586d69lm+Qb9+te/
LmBXtUtJ+35mBfIpVjsV7Lb//vv7koMKGBo9erTfpYoRUFDQbbfdxle/+lUg57Q/
adIkTj31VKAwCMYYU5CaZ/78+Z45/L//+z8AfvOb3wAuZdF///d/
D0aTBwSlToIcK7zffvv5exebpR1tT0+Pf615VllZ6Zl27Vq1c54yZYpn3+TjvOOOOxb1W8w65EMmVkxjv7u
7u+huPZ3UekN8orKExYsXexZZbE1XV5eXE+mUdeXl5f75y1JTUVHh+02yUud3dHT4eSrmsK6uzvd3lqF0Yq
NGjfKWO82F0OdUlivFRlRUVHj2LO3r3NTU5MeWjpUiJHPVH+oDY4xfXzVOVq9e7eWEWHv56D722GOeSS2FF
I/
t7e2+zRrrbW1tPj2XmMKwCIaesywKoR4hWayxVl1d7eeSfqelpcX330gjXSI+DBgLrc5aAzcUSu0Ypn+T/
hIWhCj2+/3FkGhxYVCClE1R4rfccovPgSpndgnDmpoaHzWmhbO5udkPGgkSUc2//
vWv+cpXvgLknLhvueUWX1WnFKL8m5qaCqLnJDSWL1/
undr14FevXu3dAcKFBXIm0Cyhvb3dK1C6vy9+8YuAywerTYkW0KVLl3oFVN8TvvOd73ihctZZZ/
nP5f6h5y5TVllZme/bMM9f2nT561//GnATeiSV1FWrVvn2SSkITYxSSPU/rMOsOTdq1Ci/
ACk4SteqqqrygkMC6uSTT/
ZCtpSgQLi0Sd9a6z8rVhEnrayWmkvAypUrvaDXQtvc3FygREq5CIPGdE5oqtS1tKi2trb612EwVlYW3b6g9
aGhocGbczW2JV9aW1u9LJCcGT16tO8HyVL10erVq/2YkaKWdRRTHvWZAlV1rKmpqaD+ejGZo/
6R8g+5+VWsBnxW0NHR4ce/xkR3d7d/zmqD3nd3d/vxUYzk0jU0l2pqavxmUWOmpqamIIvKSKFY3tK//
e1vQM4trqamxgfZSe+S68y0adMKzPerV6/2a6zml9xkjj32WC644AIgF5hcjDzbkA1ONPdHRERERERERERk
DkNqD9988829OT5Mb/GXv/wFyGnav/3tbwG3q1MqA5mBx40b5/NlKlWQTMNtbW2eVRQjstVWW/
ngq1JgUlesWOHZM+0u9L67u5spU6bknT9//nx/
XDtg7Qa108kSrLXeDK8dp0wmzz77rN+Fi2mfOXOmfy0Wea+99gLg2muv5aabbgLweflGjRrlq42lqylBoXm
hmDn4pJNOAnImsZFCWE1MbGh5ebkfx/
osDJxS+7SjfeqppwpS7Gg3XV1dXdD2BQsWlFyuUMi1ty8mNAx8KFbDGui1+lhWsWLFCj9/
xNysW7fOP1fNgZCp0GuNh8rKSs8caf6J+enu7vZ9K+bQWuuZlSwjnP+Shem8uKNHj/
ZySHK0urras2aSpeqDtWvX+n7Oslm7L3R2dvrgKPWDmK+urq4Cd7GWlhZv9RLbLJkiVynINoMqhHl/
xYKWlZXlucNA7tmGQYgaA2FuUfVV6Pqh8/
RZa2vriDOpch275JJLALjuuuuA4vJu1KhRPlWooLEgmQG5+TJr1iw/
T6SDaI68+eabvnrVAQccALgAell2jjzySCA/UHN98yoyqREREREREREREZnDkDCpp5xyin+txPOqXDF+/
HhfHUpOt+effz7gKgBJg1clg7a2Nl8nNp34/WMf+xg//OEPgZxm/
tRTT3HHHXcAcO+99w5B6wYXr732WgEbpiIHxZKrH3LIId4fRrsZ7dqymFS5trbWB3Vo1yW/
l3/+859+Ry9fp3B3LpZcTOlBBx3kA/Aee+wxwI0ZpaNSGjJVOauvry/wh6murva/qaT+X/7yl
wG4+eabB6HFGw49vzFjxvjdqtjSjo4OvyvWLlgVczo7O/2Y0Vh45ZVXPPMs5375b9bX1/
vdfug3LqZV95HVOtwhJAOKMalpP6zQN1XtFnMW+tiVAlpaWvw8F3PY3t7u51aYsBzcfBIbonnY1tbmZU7Il
ICbr2LWwxRXYYq4rCL0w1V/aOzr/5QpU/yYkU8vFDKuutbee+/
Ns88+C+SnOxuKGuVDhVWrVnm5mq5g2NzcXJCOqbOz0/
eH5pnaWyr+67rPzs5OP8ZDv1ONAf3X8+7p6SmokBgmwNc1NH+6urryWEF9r5g//
HDhkksu8QHGkulaB8eOHeur0SkgGXLp2MJUXODWS7GksqzU1dUVMMpPPvkk4Cw9hxxyCJDT+T760Y96a6Di
kc4777y83+kLpTPTIiIiIiIiIiIi3jIYVCZVzI1qrX/mM5/xvhCqq77PPvv4iH/
5u8jfqaenx5f61E5Yif8B9thjDyAXJf773//es6vyMzrppJN8ybdSwKpVq/wuTe0Sc1aspNree+/
tGQ6dr6S8WU1BpftSsmPtupYtW+aZLO3WFi1a5HfxKof6xBNPAHDuuef6MSM/
ZcjVqpZfjbICVFRU+HEkVnbhwoU+0jft46lUWcMNjd3HHnvMWw20U+3p6fFJ/LV71/uOjo4C36Cmpib/
mdqp71lrvT/
3888/739b39V9lAKT2lti9WKJt2tqagqYQDFDpeaTaq0tYNsbGhr8nBFjFvrTqa1hiqZ06djQD0/
na37U1taWRCJ7ydGuri4frfzvf/8byPfVFWumcR4WLVC/qI+nTp1a4K8XypBSQFdXl5/
bYuFDf22hWPJ6rdX98QHPEsR4hsyvxnNdXZ1fb9LnyXcX8rPtaGyFDC3kzy/1zbp160aESdUcPfPMM/
39iv3U+A8zX4TrSjrLh1BRUeHHjtrU1NTk+0lWXc2lHXbYwV9j22239edrbCnyPyy4k06TlcagKql6qMoXN
mrUKL71rW8B8N73vheAQw891FPEUjCvvvpqwKUQkklKimtFRYV/+PqeBM+0adN48MEHgZwJ+eKLL/
bUtVItyFk3i1i8eLF3e9CD1mSSs3qIsC5wusa9TDlZg1w+NNglAJcsWeKVVE2Y6upqP7E++tGPArnnd/
755/Oe97wHyLmUPProo75+sKqiyNw/YcIEb6pTbr+Ojg4/idR/cq9Q9bLhhpSHKVOmeKVJ5pHx48f7/
kgHgRljvFIic2Z7e7sXwOka1BMmTMgLCNH56gfdh8ZjlhHWlYd8k77GV7GFIh0wMdIBDv1FGLgh+aDne8AB
B/g8hZKpOrZ27Vq/oIY1zDUOJDvUH4sWLfKBDw899JC/
VqjIZQ1ql9rZ09PjN6WaM2EeXSmpkj319fV+zqgflKbuHe94R161HnDkSpaV1LQJta2tzSuneo7639XVVRA
0VlZW5vtLskem21LJFRua8dPpxUKdQgj7LJ0KMsxHXaxCW9o9IKx4NpyQm2NlZaXPQS/XHY3nrq4u/
zp0T5A80NzQ/
5qaGr9+qA86Ozt9m9Wn2tSNGjWKZcuWAbm519DQkLfhhdxafcIJJ8TAqYiIiIiIiIiIiNLDoDKpMiHKITdM
/SJ2tbOz0wfCyPwrNmPhwoUFtdNfe+01z4JJ45YZ/L777vPnKXXV9OnTiwYcZRWrVq3ylU/
SNYPFioQYP368N3lrNyPWLaspQVQX+KqrrgJy9zt37lz/7PV///
33998TCyp3hrq6Or87u+yyy4B805RM2ccffzzggohUe1osS0VFhTdViE3UNZ988klfXGA4x5BMJlOnTuVf/
/
oXkGPVp06dWlCLXmadnp6egl1oeXm539WmK1R1dHQUFARYtmyZt15kmS1Loy8GNB3IUCxwSu1PBw5lFWI6j
DF+LEum7rLLLj7FX9psF6agkltHR0eHl7M6L2SW5Vb1+OOPA4UFELIGzZ+QHZM1QP2h/
2VlZQX9Fwa6iA0L2bF0+0tpnoAb4xrnChaTVausrMyPhbAYgiwzGgtiwrJqrUsjvZZCjvWbOXOmHzM6L6zi
p/
PE+oXMof6Lbe3p6clLiQlurImJHs7ql5LjnZ2dzJo1C8Cn4xTa2to48MADgdy6OmbMGBYsWJB3nxrjzc3N3
sqgeVNZWenbpbVG51dWVnq9LnSpkOyRbqg0pJFJjYiIiIiIiIiIKEkMqnqvcqX6D3hmSvj0pz/
tX6uU6WuvvQa4Xb9YtkcffRRwmrx2BfpMdc2fffZZvyP8+Mc/DpSOz4xQW1vr/
Ufk9xPW006XDxs3bpx3Zk87+YsZyBr23ntvAO6++24gt8MaNWpUAZPV0dFRUJdd7zfbbDN/Xsgmanf/hz/
8AciNhXHjxnmWWqxiR0eH71NdX99va2vzacuUKmM4oD6or6/3DKGe7Y477lgwh0LfsXSKmDAZdTqtzpo1a7
wvnc5pb28v8IUuBaQZgpA1FSvSFwPYn3OyBPkLV1RU+LEhP8Ntt922KHMkaGzoe8XSSYWlUxV0FDIcWU65J
FlQTD6kfe16eno8eyyWcOXKlf78dCL35557zn8mlqkUgshCLFy4MM9fF/
J90oXQt1fniRUTg9jQ0FCwJvUnIftwIxzjevbyrdxss828LiGGPQyM0mt9r6Ojw8+vtJWqu7vbM5OSn9XV1
b7/tHYNR0nd0Aqp4OG0TrDtttv69VexO4BPS6U1Q+MiXE/Up42NjQWFc7SGTJkyxbdZutmCBQu8/
JCFUlbVX/3qV3llmothSDno7u7uPGdbcKYpBVFdf/
31QK7iVFgHV8EvlZWVXkCno6+VRQDyldMNqQs70gid9kW/
q1IDFLZl66239gMkXYM+iwgd85XP9JxzzgFc9LnaHpoXJDiUT1dmjOuuu85vbGSeWL58OR/
5yEeAnMDRRmfKlCl5ASTghK5MD6FyCG68KpJ3OJXUULhJIVW/
1NbWeoEnARm6dWjca4PT3NzsBYL6IzRV6bWc26dPn+7dR9I1vLOMtKJQTDkLP1Mf6n8oG6SQqH+zCAWSlpW
V+bEsJbW+vr6g2pyec6hwSI7W1NT4MZJegMLP5BbT1NTkr5/
FvgoDXMDNCc3jdABLR0eHV1YefvhhwMkXySgtsFrcly1bVuA2Uiq5QoXFixcX5EcNMxuElZggP/
AnLSt7enq87CjmjpY1dHZ2+nEvWTlq1Cj/
DGWWD91BRBSEzz0dtKr3q1ev9uuTAnDDoE7pM8OhpIZQ+0RKiAisrq7m9ddfB+DVV18F4MADD/
QuCwpK1/1OnDjRry163osXL/bzRP2n+fPMM88UuIY888wz/r60Nuv6v/
rVrzjrrLP6bEt2t8cRERERERERERFvWQwqk5pm/UITURjcIlZA5haZ7sJdbhhApdfa3YpJev/731/
wm2Ft9lJgUisqKjyTJYZEbNp+++1XkEOssrLS59LUzk2sxr777ps5d4cw8ED3KSb1kksu8fernfp//
vMfv8u/+OKLgdxu8O677+af//wnkJ8P8utf/zqAz7H7zW9+E3A7YO3wwsA97W71X/
0J+VU4hgthTrt0uqnu7m7fRxofYfUXtStMASKoT/
X9rq6uAsYtrFqVZguyjN6sCKHMCZmQNNMaygYxLWJEsogwfY7YMLmyhMfTNcbLysr8M1fO6XXr1vn2a4ykg
80gZx5dunSpv75YpjB/9UhD8yLMFZtmzzSvOjs7/flhcJTaL/
ZHbNCkSZN8Oiul8ymF6lshFAQFOZkn14iwYpIQpunTGAitTbpelpnU0NUpDAgDtxakP5P81FoMOVnS1tbm+
yGdRzScS5Lja9as8etT+vyhhBhSyFnKQhcYcBa3I444AsBXJmxpafFsqfpDgYdtbW1+fdBzDy0Pap90kaqq
Ks++aw7OmTPHu41oPqq/
b7zxxsikRkRERERERERElB4GlUlN78jC99qhV1VVeS1cqajEYJSVlfkdiLTwhx9+2PsxyDFYTOxWW23ld7W
hT0kpMKhCTU2NT8Kr3UVYTzydVmrp0qW+b3baaScgl6oprJaRZXz/
+98HHJOaZi5WrlzpWTI5V2vXu2TJEr7yla8AubYuXrw4z2Ecck7jM2fOLAgQWLhwYUFglnz7Ro8e7Y8NJ3Q
fFRUV7LLLLkCOsQpTl2gOidUKg0DErlVUVPjjOj9kT9XfYo8XLVrkd7kjWW96QxEyHr1hfX6qQikEwmj8Gm
MKKrqESCcp7+np8c9V1wh9kzU2xBqF/TNlyhTAyWnJV83NLDGp6Yo44RojuSJrTHV1tZ/
jYpKampoKmEPNoQkTJnhWSTEDWQ4iK4ann37ay0s99zBgNUzPB/
kFQdJFH2pqarx83XnnnYFsWizVptBfOwww1ljRc9bzb25u9uM+ZNp1XrpQyKpVq/
zcEFvf2tpawDQOB1TQCHLWaY1ntWnevHm++I3kXmdnp3++0rX+8Y9/
AG6ea30UW7rZZpv58SFdRH01ZswYz7hKPu26665+vKV9dJW2tC+U1myLiIiIiIiIiIh4S2DoM8wmCNM5SMM
WqyO/
iZ6eHq9pK2ps8eLFPlVCOjJxr7328oyKdgphCppSQFh3W7t+7WagcJdaU1PjI1d33XVXIFeXPos7Wij0Vdb
/NWvW+PRbant7e7t/zjfddBOAT3C/cOFCz+CoZOOxxx7rk44rFYgiFSsrK/1va1y1trbmlWuD/
Oj34Ui63BuKJdsPy/ql05p0d3f7OaT7rqqq8n4/aVatra3NMwIqQ/
v666/78SMLRSkgZBahOEOaTsEVIpwr6RKrWYTaO2bMGO9vFvrQ6rgYpDDiXf0gdr6ysjJvfIXnh2NG8uXqq
68uSOWWJWg+6DlPnjzZt1myMvRX1ThXW0JmNB0D0Nzc7K8rRin08SwFLF++3PuPpp9zRUWFZ/
vENLa0tHhfdx1TH9TU1Hjf3CxDDLC11st+pT8K2XStFZKfdXV1fv2RXOjs7PSMpMaFdJCmpiY/
59THsmwCBTEAQwn5lYa/
Kz9VrQk1NTV+7osNraqq8u1Tv6joQ1VVVUG57ObmZj8u0tkRRo0a5dckjbEwTkLrvOZSf8bSsKWgEj7xiU9
w5plnArkO1IJx4okn+lQJqio1a9YsTw0rlYE65oYbbuCoo44CckpqqaGxsdFPCk0Y1W8vBmutnzwyu2jyZV
VJ1WDVBH/llVcAd78a+GHteQ3yb33rWwC85z3vAeCee+7xbfzqV78KwAc/+EGfh/
XCCy8E4NxzzwWcOUrXktBasWKF39hoIko4d3Z2jsg40sQNzc56xk1NTb7f0gKvqqrKL6ppYRQi3BzoWWhe1
tbWFtRhLgVI4Spmek0rrutTUjXfZL7MIjR+w0CNsB59uq3ql9CFQwENxcZZuqoZ5HJklpWV+etmsdpSOp1W
dXW134SF/
QbOfBnmAwWnqGveSGnXOW1tbey2225ALqgynbc46xg3blxBhbVimxIpam1tbb7Ko563+qeiosJvkrIMtau6
utq3WZvx0CVQsl8yuKOjw8+rMLduuMkB8lIn6rekeFVXVxe4BQwHwsBXtUEpG6WEVlRU+LbqnJqaGv+c1T6
Nha6uLt++YiSG5lDoLpFOa2eMyRs/
4bH+pLKL5v6IiIiIiIiIiIjMYUiY1GLMhTTtcePGea1eNPwpp5wCwMEHH+x3rWFKEJlllNxdu/
+2tjZvLg5/u5SS+W+11VbeIVnO/drhFENZWZnflYRpabIM7UhlSjj88MMB2GGHHfyuTuaTmpoa7/
Stdsns/6c//
cnvFsWannbaaZ5hVyUyBWYtWrTIs0cyXZaVlfnd2w477ADknLiXLVtWNBhlqKEd+AsvvODvTQFUq1at8n0j
RkDPfdSoUX5HH5prNP7T46K8vNzPQ13/6aef9g73skqUAtKpk9Jm2hDF0tKFFp6+LBdZg7W2gC0Pmb0wFR/
ks0b6H7rBhDXLdX1BrjVhCq8sMqmyKMksuXjxYm8R0dwO0xiG6evAsYSSTTqmvuro6PDX0PX7E7SXBaSr10
HuOYdWGb3WutPa2lrANksuVVVVeUtYlhEWs5C8DF0C1R6NCz3Turq6goIfofwIrwtO3opZDl3XtE6lKyoOJ
cLfSheg0H2vW7fOP++wIEGaKdbYgdw6EsqR3nSriooKL4P1m//
5z39838uyKVa2P4UxIpMaERERERERERGROQwJBVcsmb92afvvvz9f+tKXADj55JOBnK8I5KcRAVemS7sW7Q
60w997770LdvZZZxXTmDRpUl5JUMjtZpqbm/
3OQ+jo6CjYjWSpRGExXH755QB84xvfAHIO2LW1tQXBYtZaz4yk/UNPPPHEguTEN9xwQ0GAUOjbK5ZJ42/
y5MnesV27Rd3D2rVrvX/
rcEL+c21tbd5fUBaFMF2Q2hCmNdEOOEzLlk4bI1RUVHjWUP6Ga9eu9UxDus5zlpGutS4US9wfluaVfAmZ1F
LwsdNz7u7uLii6sHz58gImNPQ91mvNhfr6+gIf1LA/
0kERZWVlmfZXVnls+a4fccQRvPDCC0BufGhOhO0Ix0K6fLdk6rJly3yJ7tNPPz3v97IOyYTy8vKCORGm2ku
zq+vWrSvwUw8DjRTImmWEgVMaz9IbwsCwdHBlQ0NDQfB2WVmZj1/
QdWW52n777f16LHlbUVHhGdrhLPwQMqmh1aQ36JmGwbbF0oj2J+VaaL3W+eqX8vJyH6Ss/lC/
94dpHlKNLmywbq6srMxHY2tx1sI5ZcoUX5NdJtADDzzQKxFXXnklAJ/73OeA/
EoJMutaa0vCzC+MHj3am3PffPNNIBd1Pnv2bK+sCB0dHXnmXuh7II40fvSjH3HLLbcAOZO7FIz29vY8h26A
BQsW+E1LmPcN4NZbb/UKqNDZ2ekXJEE1icNzlXv2lVde8ePoRz/6EUBe7tVjjz12gC0dOPQ8t912W/
72t78BuUwFXV1dXimR8NRYX7FihRc0GgMzZswomPgSIKFZU0Jp8uTJfoNQSjXJZXrtbyaPtAkvRCkoqVI4r
LV50bLglMp0gEZomtOioejj1tZWvwAXq8SlTaKCVxsbGwvMh1mCcv4qYBJykc5pZWH16tUFOWLDSmySQ+qz
FStW+Pl2xhlnDGk7BhthMFA6F6pc6MJsKmEgXjrYVTKorq4uL/tM1tHR0VEQTFhXV8fcuXOB/
Fyh4OZSsSqWkjdpUuyNN94oKjfTJu/
hQEjqhJkJ0veTHuNdXV295nMNc9eH5GMxckBIB652dnbmZaSBnM7Xnyp/
0dwfERERERERERGROQwpkxqymtLGly5d6itNpVMBLVmyxGv02rn8+9//5uCDDwbwptibb74ZcIEyCpb54x/
/CJRGsFQaYeoKyLFcr776agGTWllZ6XOLhRUusop3vetd3H///
UDh7q6qqsoHSel5Q44plEn6ne98JwB33HGHZ5He+973As70pjy6H/
nIR4BcAFpoFlWfTZgwwZsFxbj+9Kc/BZzrwEhATF53d7cfC+qDNWvWeEYrTIkCbkcr1lRtHTNmjO/
ndDqdiooKP9c0H/fff3/
PKoipLQXIZUQm7N6CxcJjkGPPQma1FAKnQjNZ2poQsjV69mEFqbDan66V7ocwhVWaiZ80aZKXMWFARVaQDv
KpqqoqYLDClFzpdF3hZ2LFirmFCMVSK2YR4bPSs5eZWyzrFlts4dP/yTw7bty4PBY2/
P6iRYtKYo3V86yurvaWyfCZKdWl2plmF6FwLoUQo9ra2lowFrq7u/1aXiyIfKgwa9Ys/1q/
r3sv5iIWojf3hLBi3cZAup7Warl8fvnLX17vdyOTGhERERERERERkTkMKpPaV+onsaft7e2ccMIJQI79FLs
zc+ZM7585Z84cAB544AGOOeYYIOfoK3+aGTNmDKvPx1AhnXhaCNlFwRhTkD6mr5RVI4099tjD35929nrGr7
32mveTk3/oF77whYKE06rvu9lmm/ldnRjV2tpaP360G9T1165d63eSYqTPP/
98fvzjHwM5Rj7NTA83xJyPGzfOWw20+w+frXb76pfp06d7FlYsyOjRo/
04Sleqqqqq8nNTDPbYsWP9Z+mAnCwjveMPmQD1UzFf7bSvXU1NTSarKKUhX/
1169YVPKfm5mYfUJhmScJE/GLKw35JJ/
3v7u4uYI6qq6u9T+xwptTpL4qlFdOcKpZiS7JDx6qqqny70il7ivnM9SeQJAuQb/
Hq1au977/6RTKvp6fHs4lqV0dHR0GFpTD5vZhXpU4UO5YlqJ0tLS3eOhVCwbyyxBTzWRcbGa65oZzV+7S+0
9DQ4MeT1rfhwL777gsUZ2+ffPJJAPbcc08/
LsQmv+Md78i0ZaA0ZltERERERERERMRbCoPKpKZ3FKFPqtjCiy+
+2DNd8nOaN28e4CK+5Aci5quxsdH7U4hdVTRnTU2Nj4gvZag9d955J5DzxZSvYIgFCxb4XZrarhJ2WcVpp5
0G5FJQaYe65ZZbcvfdd+ed+
+53v9u3S89bDGyYNkW7f8j1l9hB7QobGxt90vqZM2cCro+1C77nnnvyfnukfM2OO+44/1oM4Xe+8x3AMVdP
PPEEkOs3sau1tbX+fsMxUyxhNziGRMyIdtOjRo3ikksuGfxGDTHE7Ik1lYyoqKjwrGMxyJ9Tc6izs9MzQlm
GmK/m5ua8sQ+uyIki28USagzU19cXpPALy+mKdVd/
tLe3+7EkNDU1eavOXXfdBcDHPvaxQWzd4CBMSK7xIZY8ZFK17oTWPY0fMWW6VjqTQilhr732Aty6quer5y1
W3Rjj5aza3tPT4+fQP//5T38NyE9XpDU9i9D933///UVTNMpSpf+Dieeee873r3wxjzjiiEH/
nQ3Bnnvu6V8re06Y+jPLGLakojLJPvnkk15w6MFpwWxpafGLiBbmJUuWeOVNZioJzGeffdYHyYQopYpTAEc
ffTSQU8bUV8VMTdttt513f9hjjz2AnDDKKnS/f/7znwH45Cc/CeQqiIWora31DuChI/
hgIayqpA2RFrAspPLSPXz3u98F3GKp4EBtWsKKa2nza1VVlRfKMtnJPFxbW+vTlGhjpACtUsNHP/
pRICdo1eZ3vetd/OxnPwNygZaTJk3yacc+8IEPAPCrX/0KcPNp//
33H74bHyAuuOACwMlK5XsUxo0bx0MPPQTApZdeCuSC8datW+cVeSm3lZWV3pytDZvm2gc/+EE/
boTTTjuNe++9F6AgkDNLCDeYhxxyCJBbK+TKU1FR4RUHkSVhLlkpcVJkVZUuRKmsKwoufOmll/
x4kNKp3K8nnXSST9elyn1HHHGEX6Nvv/12IFeh7phjjhmRNH0bClV/
2n777Yvmf+4toCn8PHzO6bRKIdLj4eijj/
Yb35133nkD7zwijWjuj4iIiIiIiIiIyBzMcKZIiIiIiIiIiIiIiOgPIpMaERERERERERGROUQlNSIiIiIiI
iIiInOISmpERERERERERETmEJXUiIiIiIiIiIiIzCEqqREREREREREREZlDVFIjIiIiIiIiIiIyh6ikRkRE
REREREREZA5RSY2IiIiIiIiIiMgcSk5JNcbMMcYcNtL3ERFRCojzJSLirQ1jzOnGmAeC99YYs81I3tNwoy8
5aIw50BjzynDfU0T/
sFFKqjHmAGPMQ8aY1caYlcaYB40xbxusm9uUkEySdmNMszGmKem3M4wxJbdRGCoYY04xxjxujGkxxiwyxtx
hjDlgI695jzHmE4N1jxuDOF8KkTxr/
fUkc0TvTx3p+8sKovxYPzZ1+QF546DFGLPEGHOFMaZupO9rqDAc8sFae7+1drv13EdRJTcZc9cYY7ZMlP+K
wbin4UJqPK0yxtxujJk+0vcVYsACzhhTD9wG/
BwYB0wDzgfWDc6tDR1GcCAdZ60dA8wAfgCcA1xW7ERjTPlw3thIwxjzJeAnwPeBycAWwC+B40fwtgYNcb4U
h7W2Tn/APNwc0Wd/GI576C8ycA9RfvSCTV1+pHBcMl/2BN4GnDvC99MnNmbe9Fc+DBX6ce/
HAH8d6vsYYmg8bQYswa1R2YG1dkB/wN5A
Uy/HTgceAH4IrALeAI4OjjfghOsi4E3ge0B5cmxr4C5gBbAc+APQGHx3DnBY8nr75NonJ+
+PBZ4GmoCHgF1T3zsHeBanGFQMtO0D7C9/38Fn+wA9wM7A74BLcAO+FTgMmAr8GViWtPPzqe8+DqzBDayLk
89rgKuT/msCHgMmD2dbB9A3DUAL8MFejlfjFqCFyd9PgOrk2Fic8rcsGWu3AZsnxy4AuoG1yfV/
MYJtjPNlA+YIcDCwILmHxcDv1zMOTgceSF3PAtskr48BXgSakz78n+C8TPXD+vom+CzKD/vWkB+9jQPg/
5J7tuHYBO4BPlFsbqTmRQNwVdL+uTiFtyzpsyZg5+B7E4F2YNJIzJticyB1fELSF03ASuB+oCz47v8k97Ma
+CNQkxw7GFjQx71fi5tn7ck4+EpyXlkydybgFGibHG8B9k+On5v069KknxuS726ZnP+pZEwuAs7OwHg6Bvh
P8vrdwFM4GTEf+Hbqux9J2rYCOG99z2fA97gRjatPbu5K4GhgbHDsdKAT+CRQDnwmeRAmOX4TcCkwGpgEPA
p8Ojm2DXB4MkkmAvcBP0l3Km4XOQ84Nvl8z2Qg7Jv85keTc6uD7z0NTAdGjfRgCD6fl/
TP75LJ845kcNcCTwDfBKqArYDZwJHJ9x4GPpy8rgP2S15/
Grg1+X45sBdQP9zt3cC+OQroohdBBnwHeCQZKxNxAvG7ybHxwPuT9o4B/
gTcFHz3HhJhPcJtjPNlA+YIbuHoAv43aduo9YyD0+lbSV0EHJi8HgvsmdV+WF/
fpD6P8uMtID96mSPTgRdwG7iBKqlXATcnbd8S+A/wX8mxy4ELgu99FrgzeT3s86a3ORAcvxD4FVCZ/
B1ITobOwcnNqThL1kvAGcmxgylUUvPuvdhvA/
sBDyevtyzyDD4OvIabe3XAjcDvU+dfi5Pru+A2CoOu5G3AeKrFrU9XBf2yC06e7IpTyE9Iju2IU8YPwMmXH
+LWsOwoqcmN7oATjgtwQuIWnKnldOC14Lza5IFMSY6vCwcu8CHg7l5+4wTgqVSnnp/
85iHB55eQCJ7gs1eAg4LvfXw4B0BvgyH1+SPAN5J+vCr4fF9gXurcrwFXJK/vS/
phQuqcj5Pa1Wb9DzgVWNzH8deBY4L3RwJzejl3d2BV8P4eMrLIxPnS/
zmCE5AdJGzH+sYB61dS5+EUsPrUOZnrh/X1TerzKD/
eIvIjGActOLZwLs6lYQcGoKTilMt1wI7BsU8D9ySvDwNmB8ceBD6SvB72edPbHAiOfwencG/
Ty3dPC95fBPwqeX0whUrqx9f328B3gfOS11sWeQb/
As4M3m+HU+QqgvO3T93TZSM4nrpw5MguvZz7E+DHyetvAtcGx2px8nrQldSNcrq31r5krT3dWrs5zuQ0NWk
IOBOdzmtLXtbh/
KkqgUVJAEATjiWaBGCMmWSMuc4Y86YxZg3O9DQh9dNnAA9Za+8OPpsBnK1rJtedntyTMH9j2jtEmIYzTUD+
/c0Apqba83Wc0gLwX8C2wMvGmMeMMccmn/8e+BtwnTFmoTHmImNM5ZC3YuOwApjQh//
PVJxAFuYmn2GMqTXGXGqMmZuMl/uAxiz65MX5ssFYZq1dG7zvdRz0A+/
HmbLmGmPuNcbsn3xeCv3QF6L8eIvIjwAnWGsbrbUzrLVn4szQA8EEHAuW7ptpyeu7gFHGmH2NMTNwCvxfkm
MjOm+MMVuEQVXJx/+HYy7/boyZbYz5aupri4PXbTj52hv6c+/
r80ctNu4qyM3B9O9siDwbTJxgrW3EWaw+B9xrjJmSPPe7jTHLjDGrceuI1papBPeerFkrhuLmBi0y1Fr7Mm
43v/
N6Tp2P271NSCZao7W23lq7U3L8QtwOY1drbT1wGmBS1zgD2MIY8+PUdS8Irtlora211l4b3ubAWjc0MC6ye
xrOHxHy728+8EaqPWOstccAWGtftdZ+CKes/
C9wgzFmtLW201p7vrV2R+DtOL+hjwxbowaGh3F+Xyf0cnwhTigKWySfAZyN26Hum4yXdyafa8xk6pkLcb70
C+nf72sctOJ28wAYY6bkXcjax6y1x+Pmy03A9cmhUuiHoojyw+MtJz9SaE3+1wafTSl2YgrLccxeum/
eBLDW9uDmyYeAU4DbrLXNyXkjOm+stfNsflAV1tpma+3Z1tqtgOOALxljDh3oT/
T1PpEvmwFP9nI+FB93XTizuTA9dXwhIwRrbbe19kacH/
YBwDU4a990a20DzpVC82IRsLm+a4wZhXOdGXRsTHT/9saYs40xmyfvp+MG8yN9fc9auwj4O/
AjY0y9MabMGLO1Meag5JQxJPSzMWYa8OUil2nG+SG90xjzg+Sz3wBnJNq/
McaMNsa82xgzZqBtHCok7T4WuA642lr7XJHTHgXWGGPOMcaMMsaUG2N2ThYmjDGnGWMmJoKkKflOtzHmEGP
MLgkTsAYnhLqHvlUDh7V2Nc588P+MMSck7EalMeZoY8xFOL+dc40xE40xE5Jzr06+PgbHJDQZY8YB30pdfg
nOJ2hEEefLoKCvcfAMsJMxZndjTA3wbX3JGFNljDnVGNNgre3EzQvNiZLrhyg/
8vFWkB99wVq7DKdYnpY854/
jAirX971unBJ6gTFmTMKWfolc34BTVE7CuVRcE3yeuXljjDnWGLONMcaQm+ODNXbT4+AYnH+ulNNluOCq8J
xrgbOMMTONSxP2feCP1tqu4JzzkvG6E/
AxXEDXiCB5jsfjfPZfws2NldbatcaYfXAbFeEG4DhjzNuNMVU416E0OTI4GKifAG4Hfz1ucrQm/y/
FBYicTt/+YQ04n5YFOGf/p8hFHO+Ec/hvwTkvn02hv4j81sbhFic5wR+Fi0Ztwmn6fwLGpL83En/
J77fjFIbVuN3/Z8lFaf8O+F7qO1NxA30xLvL0kaDtV+Mc11twzvMnJJ9/
COcb1IqbWD9jhCKSB9BHp+IijluTNt+OY3NqknYsSv5+Ri4ycyrO/6oF5/T/aQLfIFyU5X+S/
vvZCLYtzpf+zZG86P7U8V7HQXL8Gzh2aD6OUZbvXRVwZzIG1iRtPiD4Xqb6oY+
+ifKj7z7aZOVHsTmS+vxoXAaHJuBHwL30L3BqbDIWliXz5pskEfHB+a/
hXEqqUp8P67xZ3zWBs5JzWnGy8rzevovbxF6dvD6YXmRm8NnxOL/2JlyWgBuAD6TO+U7Sj024oKqypD/
nJ59fTRIwS2F0/2KSrAEjMJ6UtaAZeB44NTn2AZwLQjMua8Iv1GfBuJpHLrr/
TZLg1MH8U+RbREREREREREREHzDO93kxsLV1LP5ArrElblNRafOZ1ZJEwhQ3AbOstW8M5rVjtZKIiIiIiIi
IiP5hHI6lHZCCuqnAGHNc4qowGpeC6jkcMzuoiEpqREREREREREQ/
YK1daq29ZKTvIwM4nlyBjFk4F7RBN81Hc39ERERERERERETmEJnUiIiIiIiIiIiIzKG35Mf9QalTsIOdLmG
j+6O93eVkvuGGGwC46667mDlzJgBLly4FYNmyZWy22WYAbLfddgAcf/
zxAEydulF5gDPXH8uXLwfg7rtdDvrZs2dTVVUFwNy5LkfytGnTOPzwwwHYaSeXOrSyMpd7XJYCl5Vkg5C5/
hhhDEV6kdgn+Rj0/rj66qs56qijAJgwweXhbm1t5S9/
cTnZDzrIZTKbPn168QtsGDLbH52dnQBcdtllXk40N7uUnwcccAD19fW930SUIYOFYe+P7u5uysocF1fs+TU
1NQHw5S+7zH177703p5ziMi1pfEydOpWf/exnALz22msA/
PjHLuV0eflG1XyI4yMfRfsjMqkRERERERERERGZw8b4pG6SWvtGYMD9oV3+XnvtBcBhhx0GQFdXF0899RQA
K1a4imONjY0ce6yrYCim8c033wTg8ssvZ/To0QO9jRHpj56eHgC/2503bx5HHnkkAC+//
DIADQ0NgGNI1eZx48YB0NbWxtq1a/OuefLJJwNw7bW54icDYEMyMz4ygkwxqd/+9rcB+P73vw/
A1lu73OVNTU3+Wbe0uGqJJ510Er/
5zW+A3Ni48847AVi8eDG1tWGhng1CZsfIEUccAcAbb7xBV5fLcCMrRFlZmWcOxQQ99NBDg/
GzmeuPRx5xtTLUvgceeIBly5YBUFHhDImnnXYap512GuBYZsjJF8jJDqHUZMgDDzzAzTffDMCNN94IwKxZs
wB429ve5uVrTU0N4Kx29913H5CTzx/4wAcAOProo/13B4Bh64/
wmel5iRl97rnnWLnSVRIeM2ZM3rHLLruM7m6X/3/aNFcd9uGHH+aZZ54B4Ne//jUA+
+67L+DWq8bGRgD22GMPgA1ZgzMxPjKEov0RldTBw0b3x+c+9zkAv2iedNJJ3iynibN48WI+
+tGPAnD77bcDOVeAK6+8cmN+PhP9MXXqVP7rv/
4LwLs1nHPOOQDU1eVKLUvwtLe3e6X2mmtcQRQtvPPnz2fzzV3ltrQy3A9koj8yhEwpqW9/+9sBeOmll4DcR
sYYQ1tbG5BTNBYtWuSVj4kTJwKwbt06AB577DG22mrABYUyN0bmz3fltKWkVldX+0U0HPuTJ7vy4Vqc3/
Oe9wDwqU99amN+PhP9MXv2bP71r38BcMcddwB4l4fFixd7k6364+STT/
Zy4pVXXgFgn332AZwbRKkpqb///
e8B+N3vfgfAypUrfRuqq6uBnDzs6urymxehvb3dnydFXkSAMYb99tsPgF/
+8pcbev8j0h9PPukql77wwgsAjB071rdZ/SL5MWHCBB5++GEgJ1t6enr4+Mc/DuTWoOeffx5w/
SMCSTLl4IMP9uNpPcjEfMkQork/IiIiIiIiIiKiNLAxgVMRg4yOjg4Att12W8CZ6rRr//e//
w3A9ttv73fB2v29+uqrw32rQ4ZddtmFf/zjH0CODdJu11rrd8BykWhvb/
f9JpOdgkAeeughTjzxRCDHmlhrBxIAUTLo6ekpYIs///nPA3jn/00BaqOYDZkqe3p6/
BhRIGJdXZ1n5TWW/vOf/
wDOZWYjmNTMQWZMBYRYa71lRn3V1dXl2ebVq10+8o0MuswUbrjhBmbMmAHAgQceCOSsK+985zu59957gRxb
uuWWW3oGWky7GNVJkyZ5VrEU0jU+8cQT/O///
i+QM2WPHTvWy8u021NZWZlfT4RRo0YVyJBRo0b57z322GNAjnWXCTyruPzyywHYfffdAScXxHoqyHbevHmA
c52T65AC7Orr61m0aBGQkxtCR0eH7xuxzTfddJO3ikZsPCKTGhERERERERERkTlEJjVD0G5fTNCLL77I66+
/DuR2xWVlZTz+
+OMA3tcsTLlUqth1110B5z+oHanYY7FkbW1tRXf48ttVv4kxOumkk3j66aeBXIDNps6khmzPE088AeSCJbb
ffnvOPPNMIOfjvJEpVEYMCqBTUJCYoo6ODt82jZuysjJWrVoFUBAkNX/+fM+obQrYbbfdADzzc/
TRR3tfvHTqJYD7779/mO9w6LBw4ULAjWkxybKyaEw0NjZy1113AXhf9s7OTs+GSc4uWbIEcMxaKTHtP/
3pT/1rze3W1lYvN+VjqnkDFPhn9vT0eHZVslLHKioqfCqz5557DoDXX3/
ds49Zw8svv+zvV21fvXq1f63nHVpiNHckU8rLy/
34UF9pXOk7Og+cFUPBeWLmIwaOyKRGRERERERERERkDpFJzRDkByUfqFdeecUzAjvuuCPg/
F3EAGjnJka1FKE0UfKrnThxomeGQx86/RcjoGjtioqKAn9D7f4nTZrkWRNhA6L7SxIhSyyfTPXnb37zG5/
eTH7PpQr5UmociAkRQwI59sxaW3A8naZqU8WRRx7p0+fI77SmpsbPmU0JGguNjY3ex1BphDTvV65c6aPf5b
fa0dHhU3JpfIh5f/311z2TWgoWmNmzZ+dlPgHH/
umzkEEF116tI2IOQ2iehAnxNa90rRdeeCGzTOpDDz3k733NmjWAGxNqczp9YXV1tR8D+l5PT49va7qvampq
/HXlD15eXs6LL74I5IplDCcuu+wynyGnGMQC63/Y5sEY4+qr2bNnA32vNe973/v49Kc/
DeQsG2lkQkntK4dlsUAQ4c9//jPvf//7C65VCsKkGJR/Toqbtda3XWb/
8vJyb96Wcvqd73xnmO908KAFQ2aXysrKAmEZpkNRf0jpqKqq8kJT39P55eXlfrGSeVimn00NxYI61Efqn1W
rVnHAAQcA8KEPfQjINw+WEtImNs35sMJMmHYsnYJM56cXqU0NTU1Nfj6o7atXr87LAwobVVUpM5CJvqyszJ
tnJTePOeYYAObMmeM3/FIqampqCnJpKrBs/Pjx/
vql0EcrVqzwLi1SUsvLyws2Z2HgVEgCQC5ICgplal1dnSdONKeyHLj7+OOPs+eeewK5sfDQQw/
5fMnFXOXUD2pfT0+PJ0wkb8LAK+XglaLe0NDAnDlzgJFRUj/
xiU94mV8spdzpp58O4NNk1dfXe0VbCN3B1NZ08F0I9cvq1av9a7kZHX744d7dTlC6zFtvvdUHN/
eGTZtWioiIiIiIiIiIKElkgkkttjNNmxnCz0Rlv/TSS/zgBz8A8Gkx+trlhqk2smj2/
eIXvwjkdhn19fUF6UG6u7v9rlhJhLfccsthu8fBxhtvvAHkdmI9PT2eAdSONty5FXtu+qzYMZlzVXlG1bo2
NWjch+NfqWi0Ex43bpxnDjTGrr/
+es+EhMUSwD2LYtfNAtLzohjLpXNCi0QapZBWaGNw4403+uANmcMrKyt59tlngQEVucgsxPCNGjXKvxa7Kk
yZMsUHZO6///7+c40b9ZECX2bNmuXZdsmlLGP16tXeKqV5393d7Ys3qC1hwKSevT7r6Ojwr3VMAUPGGM82a
x3KMpO6cuVK78oxadIkAH7729/6IEKxn2pne3t7QXGDjo4O35caA5KVZWVlnnUPAzZluRsJfOUrX/Fz/
n3vex8A73rXuwC33mpuhGypmPK0nO/q6vJtl6zQ98LPQvZZ/Sf3ottvv92PlQceeACAQw45BHDrz/
pkcOlLpoiIiIiIiIiIiE0OmWBSi6EYM/
KRj3wEyJU73GKLLXw6prPPPhuAiy66qNe0OllnC3bYYQcg52u6bt06z3zp3sNdjHYs8jMsRSiJ9tixYwG3I
0s7cYd+h2lmr6yszI+V9A44DLRSCdlNlUkN54uc9lW6T7v+9vZ235fa5a5atcozL3//+98B50ME2Z4v6QAQ
tT/0aZacWLJkifezS4+t9HU2NbzxxhueLVq8eDHg5Mubb74J4FO0yW+vlCG/
uvLycs94yT9TxyZPnuzlq3wU5aMKufEhpvnAAw/0fu2lEGwoP1TIsVzLly/
3c0HrRyhHi1nr0inqJFtXrFjhA27EUCr1V5ag5zdz5syCNGS1tbWe6dS6IxlorS3QPcL+0LXUZ2PHjvXWOv
V9TU2NH0cvv/wy4NL/
DTVUpKK8vJz3vve9AHz3u98F4KqrrgLyi3bo2Yb+qGndqbu7u8DvHwoZVLGt1dXVBTEBW265pWfw1Y8qRHT
UUUfxxz/+sc92ZV5JhZwiIyErk8zSpUu94JAJZ/
To0V7ZO+WUU4DcYjV16lSOPvroYbj7jUPo+J5+4MYYPzBKwfzUF3p6egpqqq9evbqg1nhfpuZipoKwQpUmm
NwKNlWEfaRgKAkCzZuqqiqvwElojBkzxi82qvB12WWXAfh61VmGFs9w8dUzV+WxefPmeSVVxzRGNlUlVTJz
3LhxBRHJ5eXlXp4o1+WmoKTOnTsXcJsyBTwpC4Tmx5o1a7xSKkW9q6srLyMIkDdeFixYAGRbSQ3Ny+mNfBi
IKuUpPQ+guNtUmgAIc+zq+sormiVog/7aa6+x9957A/DXv/4VcEF0aqPkoNbccE0NqxSmo/
tD94BtttkGyFWjmj59unczee2114DhUVKVD3v33Xf3kfV69grK7uzs9MRXGFibViLDjYuuEZr7QwUeckpqQ
0ODX3fkQvDGG294RViBZHfeeSfgqiHq/
N6QXaokIiIiIiIiIiLiLYvMMqmhuUEsqbR9pRFqaWnxOxxp9jvssIPPjSfKX1r82rVrmTlzJjA8O5uBQjuX
srIy3w/h7ja9iylViOGD/MomaSZgQ4NbwgAAQYEQmxqKBb4oJYoc+rVj7uzsLDi/
ubnZm7rECFxwwQWAS2120kknAbkgrKwg7egvpmflypVMmTIFgH333RdwDIrSraTNWWG6nU0JYpLKysp80Iz
6rLa21luXxCZuChAb1tzczF577QUUmqKttX5eiFEyxnhZIdcYBZysXr3as0RZRihL0/
KyWJBUyBIKobwV45o2c3d1deXlH4ZspnGTFfWII47wbdX4X7dunXf/
EnMu+dHT01OQJzV0IQqvAc5dSmkwlXZq33339Z9Jtg4HJPc///
nPe51JDLsY8GXLlvlAa7kpWGt9u6RP6ZmGYz808RdzPwS31qSPzZgxw1syJZc0nl566aX1jp/
IpEZERERERERERGQOmWNSiwXBaFcgpkfYcsstfZCIdovd3d1+dyTGVbvjVatWZboOs/
xY5Ec1atQov7PR7qSrq8szADpP/SPmqFQgvznY8BRHod9pmhUIr6VdcfhbmxLS/
Wat9SlGNO5D5kPzRDvrUaNG+T4Sqyg/4ba2Nu/
PlTVo5y9WTCzavHnzfHvkf37eeefl1SUPUep+3b1BDGJNTU1B3fGqqqqCNEWlDCXl1zN+
+9vf7seDoDHR09Pj54DkaJhqTf0hv9V7773X+8uHwSFZg1i80H9SGDt2rGerRo8enXesGHPY09NTME/
EfO26664+WFm/
I3mRRYTFW8Kg2auvvhrIVRaThXXt2rV5ay3kF5FJpyNbvny5Z+31f6Sg57D11lt7a5gqy8nvc9KkSQVBo62
trXmV+kJ0dHQUxMUU8+NXf4RMqvqqsrLSx5nIV/yll14C3LiVHtMbIpMaERERERERERGROWSOSU0zQ48+
+qiPNlZpO7FA22+/vdfgxai2tLT4iFVp7aE/
STpNUZagBOvyFRk9enQBS1hWVub7SDubSy+9FCg9JrU3PyoxHcWS+afPKRaJKoSJhbOYJmUwkGaPn3vuOb+
jTpfy6+rq8nNHx0aPHu0/E7MkdnKPPfbggx/
84HA0Y4MhJlBzQGyhMcb7W4YR62KT02UQ1xdZWqoQm97R0eHln5jAuro6/
zpMWVSqEBOj2IPa2tqC7A2SA52dnQVyxRjjmST1h9YOa63369OxLDKpet7V1dW+XWKTp06d6n0ClXJJbQlT
UPUlZyVfNt98c/75z38CuTmXxQwZ4bNNy8i2tjbfD+mSwV1dXXk+/
ODGjtoo+RHGikh+hmms0hiOYijhXFamAY3jMI5Fzy1M2yd5IMZ8Q+VCmO0gHS/
Q2trq+zIdA1BdXe3T4PWGASupQ1XHWJ0kx+bXX3+db3zjGwD84x//
AHIVlubPn+8Hiz7r7Oz0QTKim9N1i7OKX/ziF0COOg/
vN3wtoSIhdMUVVwBw+eWXD8t9Dhaam5v9+AkHdjr1VOjQn3b8D81S6bQq5eXlRQMESgnW2oI69X3hjjvu8H
NI40ibHmOMN7vomq2trQV9KoEyklVT1geNfSkomuNdXV3exFVMNqU/
S9ew31Qg829ra6s3aWpc1NbWehmpDUkpI70Bqa+v94qDlLewIk468CeUIdrgSamdN2+eH09hIGbWoDkeBtt
qIzphwoSCqlDhmlhsLU+nr9L/
FStWFARVZRF96SWVlZV+XCitmJSyMEgqvFboLgL5FRKLbVpGokKfnuOCBQt8WjC5IIRt0jjW/
2IV+cI85OFrIM81ID2H1q1bV9D28vJyrwRLbos0Wr58uZdPvSGa+yMiIiIiIiIiIjKHATOpg7lT0O71uuuu
8wyqdmlbb72137WILdWucN26dT4RuXYKW2+9ta9pHwYghedkDWJ802baMB1TyBxq96IdnNixuXPnMmPGjGG
7743F2rVri7KDaaY
jHGthwBS4XVqaJQ13hWlT1MKFC/
OqbpQC+mJQ0zvgK664wiexF1sghikMABBz0NPT4z8Tq6bxpETUWYR25Borao+1toAdNcb4ua+5JSjIclNDm
NYlPQe6u7v9Z5sCkyozvwKc6urq/
BqhQNmQaQ8rA+n7WkcEydbx48f7YKMsu0aIGQ+ZwDB4rFhRGOg9BVX6fJ3X3d1dUBDAGOP7phRSuoXsse5X
zHtDQ0Ne0QudL0jehMUe0kFmIwXpOwsWLPD3LHknnaisrMyzmmHQpNpVLJl/
MStket3ROR0dHQVpDkePHu3Hoj7TvHz66afXmx4yMqkRERERERERERGZw0YHToU+c335gIXHFDBzww03APD
kk08CTovfbrvtgFw6pqeeesrvWqSFKwF1Z2dnXooJcDsA7aiVxFq+F2+88UZBCoksQL628n0qlmA73P2n+1
SpuW6//XbOPPPMIb/fwcKqVavyUoeBa1O6feEuL50ouKyszH8mJlpO8VDIQj7//
PMlxaSG8yZdTzuEfI96eno88xPubsGxLGm/
uvLych88lE4dovmTRYghKJYWRYn7hYaGhrxgxBDp95sKJN9GjRrlgyfCmutiyzeF9otBClNsaf1Q+8LSjqE
/Ibg50FuZxx122MEHoaTZoyxBfn01NTV+LogNbm1tLQg0VftC/
8KQPQvlMeRkSUNDQ8F3rbV+bJUCk9rV1VVQJlkWhUmTJvn2FYt7SJcI7S1100ggjNXRnBfCYGvdeyg703I0
tGb2VVSnmKU3Hay4du1afz2li9O9Pvvss+u1ym90D4e1svuDSy65xEexS7kKq5/
I3B9eU+YcDRCdv2jRIj851UnLly/3nSMTjqjlzs5OT3urKlUW8OCDDwK5+z3ggAMAuO++
+3zbVSFr7ty5Xnl429veBrjgMoCXX355+G56ELBmzZoChXTdunV51U0gvzpKaObX96RUhZNC/
9Pm3aVLlw5Ze4Ya6Xl28803c/LJJwM5s3WogKejkbu6uvJy/
4ETRlLu9ZmEdJY2cmmkldRQgKZrrIdZMtKm701BSSsGyY3q6mrfV1LUq6qq/
CK9KWQ3kPwTJkyYkBckFqK8vLxAAQtdqOQaIxlijGHu3LlAThmWO02WIHN1RUWFf84ia5qamgoqMwpdXV1F
M6WEke2QG0+qAQ/
5imxWXemKYe3atX7epzf+Yf8UM+OnTdkjESDVG3bYYQcAHn74Yb8JTSN09SmWlSGtiHZ3dxcQSeFrrRlhzm
FB1y8vL/
cySONIZOStt97KFlts0We7srs1jIiIiIiIiIiIeMtiULjq9I5DO84333yTBQsWAI4VBGfq33333YEcY6N6r
mGKHGnm69at81q7dj9iTzfbbDO23nprAJ555hnA7ShVPULniykaNWpUJtNmyJw0b948AN71rncBjikVO6p6
5D09Pey2225Azqyt6g1yFygVrFmzJq9+Njg2WTu3NBMYMonhLj6dV1WMdGh6EMQyjCTSaTuK7d6LmZH+9re
/AfC5z30OcJYEVYQK8zxqt6q+DU0xaZPlqFGjCmonq7/FzmQRYgA1DsLnLAZJqK+vL0hFlA4s2NSgvJih/
JRJs6yszM+tLKdV6i8OPfRQICfny8rKCuaWxnh4LFy30v2g8bLTTjt5uZzlIDu1r7q62qcfkttLZ2enb2s6
+MtaW3RNTAeoSqZss802fu7pmlOnTvV9n3a/
yyLa2tq8bBQDHFZgS8vnsCqXEDKqWQmcOv300wH40Y9+5PUFWY7DXNhpGRiuq+mUY8VSthVjVEMLXbqv2tv
bC/IySxa1trbyzne+s892RSY1IiIiIiIiIiIicxgwkyoN+tvf/
nZeHXDI7TLC6h76rLGx0Wvu6d1rRUWFPyZNPmSZxNBqJ7f77rv7XaN8ZXbeeWev8Wt3p/fLly/
PZBoR+RFqt6HKUV1dXZ75euGFFwC3kxX78453vAOA3/
zmN0DO97YUobYX8zsNof4IfYjSVYRCx3ddS37M60t3MVQoluqlr/
YJra2tHHzwwQC+Zrbeb7fddn5HGjJj8iNTP2he1tTU5FXe0ffStZy1ExablEWkg8P6QkNDg29LqRZ12FDMn
z8fcONHwQqSlePHj/eBRVku2NBfyHIWIu1rGFagSrNoaeYdcnJihx124CMf+cjg3/
QgQ3M99NFXv8yZM6fX/ghZ1hBpNjG0VMhiJ//
+ysrKTK6rvaG8vNyPAd13GGSdDhQKg43S8rm7uzsz1tkjjjgCgP/5n/
8pSEOm921tbT7WQGNh7dq1fsykA6fC88Jxki78EvokF0tRJkZXDK/kTm1tLZ/
61Kf6bFdkUiMiIiIiIiIiIjKHjU7m/
9GPftSnkHrllVeA3A4r9HXTjmXNmjV+lypNW9+bNm2aTyAuzbyrq8snqJef1c477ww4Hz0xJIp+D30O5Vsn
JqmioiKT0azHHXccADfddBOAjybdfvvtueeee4BcW+rr6330svx9tcPJYtv6wty5cz2LoTY0NTX5nV7at6W
7u7vorj9MRwU5hj7cDepaDz300GA2od/
oTxToihUreOKJJwC48847Abj22mv97lM7ztmzZwMunUd6Z19dXe3brX6QRSH0SQ3nRppd1fdbWlp8ujjdQ1
agsV4sxV26TOGYMWMKGFSdr7ZvagjlZ7qOPeQKNmyqzHI6DY4Qyg9ZITo7OwvYs1Lrl7CUttZd+fo9+OCDB
fInlI19pdZKF/+orq72DK3Wn1GjRhWNFM8qamtrvWxUv6j/2traiiaqL+bHDPnpm7KC+++/3z/
7YgxweoyHGXWKjfti7UtbA8PsEWHWDJ2TLr4iPW/
q1Knr9WMesJIqR+qGhgZOPPHEouesXr3a07w6v6WlxU+itJmls7PTBwOFTrrpChDqkNWrV3uHZx2rrKz0gk
lmcXVQWBkjS9hvv/0A2GeffQC4/
PLLATjrrLO8WVPmnLa2Nu8Qf9555wE5YXT22WcP300PAtra2nwN3zA3p9qaTo0SBkKl63XreHh+e3t7gcla
+dlGCn/
5y1+45JJLgJzJQ3MkFAaauFtuuaUP2HjxxRcBfA685ubmglyoxYSmzgkFVSicpcBrnoWCSv2XNSU1vbkJkV
ZS6+rqCsyWWU6vNRgI81VKoVfAaV1dnZ9vm2oKrrQLSxgsotdaC7q7u4tWt4PiwYZZRLih12ul+YFCxaTY5
k4olqta35szZ44nje666y7AyekNSUM50mhtbfWug0rbpPlQrIJhmIYpbfouKyvLXPBhQ0OD1yEUTKU1o1iu
7M7Ozj7HeF/BUcVS+xVz15OckR4o+fuvf/1rve3J/
uyLiIiIiIiIiIh4y2HATKrYyblz53rztLRjpQAaO3asZ65CTV1mewVcifksKyvzn4WJ3NOafJhINp3ov62t
rVdH5u7ubu/0vf/++w+w5YOPOXPmALnKW+9///
sBl6Ran73vfe8DnOlGu6JTTz0VgFtuuQWAO+64g6OPPnrY7ntj8fe//
51LL70UgA9+8IMAfOITn+Dmm28G8El+i1VCEXp6egpMD2Etb7FHMu2lk3sPF2TG/
9a3vuWd9NU+uaqErI2YsGXLlnn3GX2mlGXjxo3Lq1kPjlFNp5QKd8CaJ9pNhylX0s72ZWVlmUpWHUJzIB3g
AYVMam1tbcF56XM2Nah93d3dnsXQ+KmqqvKyelPtB1lY0gxiV1dXXiELHUszjMXM/
r2xrVlCGBgmSB4WgzGmoLiBMaZgvuiaixYtKpq2LUuVl9aHYq4JkplhAFDYH2pfunBMeF6WoAqEX//
61wE499xzAaeb6fn1lTYqTPt41FFH+e8CPProo95cr/VK46OiosKPmbBSpNK4KcD9z3/+c7/
bEpnUiIiIiIiIiIiIzGHA2x/tJGbNmuV3XWJBxV4tX77c16EPtXalRNF/7fBHjRpVUJ4sTBchbT/
c7YoR0GcTJ0701wiZA52TxbrtO+64I5Ar5yimbNasWXzoQx8CckxgmHZILKt2f6VQNzmNT3/603nv586dW1
DSLQyM0hgId8N6rXGiMaGUOzByDKrw8MMPA44ZFQsof08FNlVWVvqdupjOcGeaLgG8ZMmSAn/
tsrIyvwsuloBax8I0cWnWRP2d5fGklGJp30MoTO1VUVFRwHaUWpDhhiJMv5dmDnt6evw4K7UAof4i7XcXBo
mki4N0d3cXDdIMv5d1hD7XitMQFi1a5GM9iqUYEsLy0+kypzq2dOlSb/
kROjo6Mhnr0Rs6Ozu9TqDnHqbPTMuPyspKf57WFn0/SymowgIWknfSH6RbnH/++b5AUBignF53wjiGX/
3qV0DOrzRk69VXkjejR48uKBZQWVnpS7hfddVVefccWjZ6w6Bw9GG1oPB/
RP+QVq6kvMyZM8dT81JQxo8f7zcDUvIVZLO+yg1ZQ7GghDAnXVj1Ano3q4TVySA3cfR+fb85HDjmmGMAuO6
663zO23QWg6qqKv9aC2lVVVVBRH76P5Dn2F/MnKn/
aTNmWVmZv74Ejfp5+vTpPPXUU0B+EEYWICVVi0WoTKTNnWG+XPWJXC42VYgcaGho8DlR9V9yA3KZWDY1yMS
t5xy6tKQVz46OjoKAmKwoHv1FqGQVq9ueDoQqFugUniPZos90zaamJp9dR+ju7vYBsLvuuutGtmToEW7kJS
s0XsL1R3K0o6PDnycZGX4/K0FjfQXDyfx/
yy238NxzzwG5wLeXXnrJK6dpdzBrbV4WDHBtT5NFofuQXDxVGfOoo47qtbJff9xEork/
IiIiIiIiIiIicygdb+e3AMQOKddre3s7Tz/9NADvfe97AfjHP/7h0+/
IrCOn5FJIlRKi2P1uvvnmPpAsTD0F+ali+qrgpGPFKnCNlPlO9/LAAw/4wLArr7wSyLkCzJkzp1/3p/
aGgVCDidDtRI7uWYPMl2nWdPPNNy8wd1ZXVxfk7uttZ7+pIEy9pDYXS1MmlqSUkQ5oamlpKXCDCc3h6bRl4
ftSZ1I7Ozt9ikLhiSee8C5GcnMJ26d+C8396tN0err77ruPyy67DMiZf3t6evz1s4i0O1h5ebnvBzGAakvI
qoeVycScSm5onIwZMyYzwYf9DeDaZZdd8v5nHaWl1URERERERERERLwlEJnUDGHvvfcG8I7NnZ2d7L777kD
Oj2y77bbzAUHaDR955JHDfKdDh7CWeDGGNExXJqSry8gJfPHixd5/V+xaFgIhjj/++Lz/IeTbJZ/
CRYsW8frrrwPFfY7kKxZWVRMDoP4Id/
rp3XYYmJh2hp8wYQLTpk0bUBuHGrImiOlR4EZHR0dB0Ez4WTqlzqaO0aNH+7Ehtqi2tragYlcpI82kdnV1+
TGcLlARVuASWlpafB+l/dtLpX9C/3NZ5ISHH37YFwxRvIjmS09PT0F/
hNYZMYeaP2HQlGRqW1tbgfUiy1i2bJm3IOg5hxWoJC91zpgxY7x1U+epvUuXLi1YYyIGF5FJjYiIiIiIiIi
IyBwik5ohKHJQu/
qamhofSSnmsKyszJ8XFjUoVaRLmc6aNcv7pKp0nXavvaU5SUfJa0d76KGHFuxusxKJ2RuUIi2LqdKyBD1HF
RKRxeHpp58u8Detr6/3hRPEEqkc4qaKMHuD5IXmx8qVK7015oADDhiZGxxEFCtlqgwpaqf6QMdD1NTU5GXT
gFw6xbAkZpYh1q+pqalATiqye6iwcuVKX7I5nZ4qC0jHPjQ2Nnp/TJV7Vp+1trb6SH99b/
bs2WyzzTZATu7IErHZZptt8iWWRxpmI8yfI2833TgMth1no/
vjtttuA+DOO+8EnBlKQlaK2ujRo705R4vOu971LgBOO+20jfn5zPXH888/
D8AjjzwCOIVEpvwwBYhe77nnngAcccQRhTez4dViMtcfI4yhsHsOXPik5NYImWUzO0akpH3ta1/
zJl7lVT7ssMO8i5AW30EKJMtMfzzwwAPuAql5H9aZl0ytqqoqcI3R/2LBlxuAYeuPxx57DIDbb7/
du40de+yx7kvWFqTxKxZ42h+ECp/G0+LFi32lw/VcKzPjoy8oVZvSly1YsKAgGG2QUBL9MYwo2h/
R3B8REREREREREZE5bAyTGhERERERERERETEkiExqRERERERERERE5hCV1IiIiIiIiIiIiMwhKqkRERERER
ERERGZQ1RSIyIiIiIiIiIiMoeopEZERERERERERGQOUUmNiIiIiIiIiIjIHKKSGhERERERERERkTmUpJJqj
LHGmG36cd6WybmlWze0HyjV/
ujrvvvbpiLfO90Y88DG313EpopSnS8Rw4dSHCNRnvYOY8wcY8xhvRw70BjzynDfU0T/
MKhKqjHmAGPMQ8aY1caYlcaYB40xbxvM3yglvFX6wxhzjzFmlTGmeqTvZahgjDnYGLNgEK7TEvz1GGPag/
enDsa9lireKvNlIEgW2XZjTLMxpinppzOMMSVJNAwUb4UxEuVp3nlDLi+ttfdba7dbz30UVXKNMacYY67J0
malN5SqDBm0mzPG1AO3AT8HxgHTgPOBdYP1G6WEt0p/
GGO2BA7E1Q1+z8jeTfZhra3THzAPOC747A86LwvCbjjv4a0yXzYSx1lrxwAzgB8A5wCXFTvRGFM+nDc2HHg
rjJEoT/PRX3k5VOiHDDwG+OtQ38cgovRkiLV2UP6AvYGmXo5tDdwFrACWA38AGoPjc4D/AZ4FVgN/
BGqC418GFgELgY/jJvA2ybF3A08Ba4D5wLeD722ZnFsxWO2M/VHQlm8CDwIXA7eljv0O+H/
A7UAz8G9g6+B4eN8HJPd7SJFj1cAPcUJqCfArYFQv93N6cj8/T/
ruZeDQ4PhU4BZgJfAa8MngWDXwk6RfFyavq4HRQDvQA7Qkf1MHoe/
mAIclrw8GFuCExmLg973dT9DOB1LXC/vsGODFpN/fBP4nOO9Y4GmgCXgI2DV1T+ckY2/
dYI6VOF8GZ6wEn+2TjMmdcXPtEtyC2Qocloz1PwPLgDeAz6e++3jS7iXAxcnnNcDVSV83AY8Bk0e6/
W+VMUKUpxs0B1LHJ+A2MU3J/dwPlK3v+ZPI3tTvhDLw2uRe25N7/UpyXlnSfxOSvrRBe/
ZPjp8LzAWWAlcBDalx86mkbxYBZw/x/
CnoP0pAhgxmB9QnN3UlcDQwNji2DXB4MkAnAvcBP0l13qNJh4wDXgLOSI4dlXTAzsngvob8CXcwsEsyIHZN
zj1hKARI7I+i7XwNOBPYC+gMB2My6Fcmg7kCt3BcFxy3SV8ciROo+6SPJa9/
ghOE44AxwK3Ahb3cz+lAF3AWUAmchBNK45Lj9wK/
xE2k3XGT79Dk2HeAR4BJyXN5CPhu0K8LBqPPUs85VFK7gP9NxsWo9dzP6fStpC4CDkxejwX2TF7viROY+wL
lwEeT+6gO7ulpYDq9LFxxvgz/
H70s0LjF8TO4ubYaeEfSllrgCZzSUwVsBcwGjky+9zDw4eR1HbBf8vrTuPlVm4yPvYD6kW7/
W2WMEOXpBs+B4PiFOIW7Mvk7EDD9eP5590IRGVjst4H9gId7Gwe4zc5ruLlXB9wI/D51/
rW4MbdL0ne9tm8QxlbR/iPjMmSwO2GHpKELkoF9C0U0aOAE4KlU550WvL8I+FXy+nLgB8GxbQkmXJFr/
wT4cW8DZzj/NvX+wO3WO4EJyfuXgbOC478Dfhu8PwZ4OXhvga/
hdpq7pK4tgWtwu7qQMdgfeKOXezodtzM1wWePAh/GCZ1uYExw7ELgd8nr14FjgmNHAnOS1wcz9EpqB/
nsTl/
3czp9K6nzcMKiPnXOJSQLRfDZK8BBwT19PM6XkZcfvY2V1OePAN9I+u2q4PN9gXmpc78GXJG8vg9nKp+QOu
fjpNj1LP1tymOEKE8HNAeC498Bbi723Nbz/PPuhSIysNhvA98FzuttHAD/As4M3m+XPN+K4PztU/
d02RDOnaL9R8ZlyKA6zFprX7LWnm6t3Ry3K50K/
MQYM8kYc50x5k1jzBocFTwh9fXFwes2nGZOco35wbG54ZeMMfsaY+42xiwzxqwGzihy7RHBW6A/
Pgr83Vq7PHl/TfJZiN7aIXwRuN5a+1wvvzGRZEeXOHs3AXcmn/
eGN20yWxLMxfXbVGCltbY5dWxa8noq+f2p7w0Xlllr1wbvN+Z+3o9bxOYaY+41xuyffD4DOFt9mfTn9NR15
zMCeAvMl6HANBy7BvntnAFMTT3nrwOTk+P/hVPGXjbGPGaMOTb5/PfA34DrjDELjTEXGWMqh7wV/
cQmPkaiPO0njDFbhEFVycf/h2Mu/26MmW2M+Wrqa+vruxD9kYHr80ct1v4KcnMw/
TvDvd4ImZYhQxbVZa19GaeZ74zbXVmcZl0PnIbb0fUHi3CLqLBF6vg1uN30dGttA47u7+
+1hw2bWn8YY0YBJwIHGWMWG2MW40xCuxljdtuAS30QOMEY88Veji/
H+QLtZK1tTP4arHOk7w3TjDFhm7cg5xc1zhgzJnXszeT1QtzETH8P3PMaaqR/
o6/7acUtNgAYY6bkXcjax6y1x+NMbTcB1yeH5gMXBH3ZaK2ttdZe28d9DDs2tfkyFEii2qcBShEUPrf5OHY
sfM5jrLXHAFhrX7XWfgg3Pv4XuMEYM9pa22mtPd9auyPwdpz/
8keGrVEbgE1pjER5umGw1s6z+UFVWGubrbVnW2u3Ao4DvmSMOXSgP9HX+0TebgY82cv5ULz9XTh3ESE97hY
yjCgFGTKY0f3bG2PONsZsnryfDnwIRyWPwTkTNxljpuGc1PuL64HTjTE7GmNqgW+ljo/
B7ebWGmP2AU7Z2LYMBt4C/
XECztSzI84XaXecKe5+NmxALgQOBT5vjDkzfdBa2wP8BvixMWYSgDFmmjHmyD6uOSm5XqUx5oPJff3VWjsf
Z4a40BhTY4zZFbcbVJTotcC5xpiJxpgJOF+cq5NjS4DxxpiGDWjbxqKv+3kG2MkYs7sxpgb4tr5kjKkyxpx
qjGmw1nbiHNu7k8O/
Ac5I2CFjjBltjHl3aqEZdrwF5sugwRhTn7AW1wFX98KaPQqsMcacY4wZZYwpN8bsnCxKGGNOM8ZMTOZXU/
KdbmPMIcaYXYyL7F2DM092F7n+sGMTHyMnEOXpRsEYc6wxZptEoZbMG6yxuwTnkykcA9wZMMzLcAFI4TnXA
mcZY2YaY+qA7wN/
tNZ2BeecZ4ypNcbsBHwMF9A15CglGTKYTGozzofh38aYVpzgeB44G+e3sCfOKfd2nANxv2CtvQPnA3QXjsq
/K3XKmcB3jDHNuElwPdnApt4fH8X5psyz1i7WH/AL4FSzAemLrLXzcIL1HGPMJ4qccg6urY8YZ8r7J86/
pzf8G5iFYw0uAD5grV2RHPsQzh9oIfAX4FvW2n8kx76Hi1Z8FngOt0v+XnKPL+OEzmzjTB/DYZbp637+g/
PB+ifwKrmdsPBhYE7SX2fgmCWstY8Dn8Q9p1W4fj19iNvRH2zq82UwcGtyn/
NxPmQX4xa2Alhru3Fs0u64qNzlwG8BKQVHAS8YZyr9KXBy4moyBbgBt7i8hAuMuZpsYFMeI1Gebjxm/f/
2zjw6qvL849/
MTEJCIAkQBBKRKIsLLqi4Vq3VqkWp9bR6rLaKWq1a1MpxPWpdTj2tWtG6VK2ctloqFdGfImqrIBVFsOKOqI
QlYggGIYEwSSaZycz8/rh+n/vOO5eQhJnJDX0+/wxM7szc5V2/z/
bttTTDCep5JJlMvpGB7wUcpf6Wb8/1Wlim/
mQy2Qrn3rz97TFHwvF1ngnHd7MGQBuAK63vXQTnWbwO4N5kMvlahs53e/
S5MYSRb4qiKIqiKEonfLthqIcTfNbUw+
+ogrPwy7eUVcXC15UGFEVRFEVRfMRgOFH9PVqgKt1DlVRFURRFUZQcoUpq19FFqqIoiqIoiuI71NyvKIqiK
Iqi+I4uRwx60Ncl2EznQtT7kYrej1R6dD+efvppFBYWAgAKCgoAAIlEIu24QCAgr7SO9OvXL+VvbW1t+MEP
ftCT0wCykztU20gq3bofjY1O/u1NmzZhyZIlAI
DmZiev+ZVX2kHEqdx6660AgEmTJgEAIpEIAGDChAkYPHhwd07DxBd9xkfo/
UilV+8H23hraysWL3aSoVRUOEkFDjvssC59R0ODk9Rg+XInY9Po0aMRCjnLqBEjRnTndAAftQ9e16pVqwAA
zz//
PADgoosuwt57pyZ+mDNnDt577z0AwKWXXgoA2GuvvZABPO+HKqmKoiiKoiiK79gZn1Td1aWi9yMVvR+pdOt
+fPXVVwCA22+/HeXlTgVGUy0l/HfetwVhksmk/JtKan6+U5GuubkZV199NQBgyJAh3T1/
VVLT6ZU2cueddwIA4nEnP3ZlZSWCwSAAYMaMGQCAgw5yihRNmjRJlNGioiIAwLRp0/DTn/
4UAHDiiU5Bng8//FC+f5999gHgqKrdRMeQVPR+pJLz+9Hc3IyamhoAkD4yaNAgxGIxAG5/
oaJ69NFH409/+hMAIBx2qr2OGzcOlZVOpVcqhytXrgQADB8+HBs2OEWi2tqcitaVlZUYOrSzKrOCL9rHNdd
cg08//RSAO+9s3rxZXqmk9u/vFDhMJpOoq3OKih1xxBEAIMrqokWLMG7cOACuxc+cr3aA5/3YGXO/
ouQcbqry8tLb87vvvgsAaGpyMoMUFBRgwACn2t/IkU71ud12263T7/
b63t6Ag8XQoUPl3Gnu5+IkPz9fBkYuSAHIAMyFKP+/ZcsWbNq0KeVvir/
hs+YEu3LlSpkQJk6cCADYfffd0dHhBAhfddVVABw3EQBYsmQJ9ttvPwDAY489BsCZWC+
+2Mnxzj7DhWk8Hkd9vVPinK/Dh6dU3FWUPsOGDRtQXFwMABg40CmqF4/HZfy78EInj/
1dd90FwNmsrVmzBoDjFsDj6VrzzTffAIDMK+FwGGVlZQCArVu3AgBqa2u7ukjtVTh3zJo1C6WlTn5+LizZ5
/
Pz83HuuU6BtUWLFgEAampqRDipra1N+c4rrrgCr73m1CPoxuK0U9TcryiKoiiKovgOVVKVPkM8HhdFiSxcu
BD/
939OBcRt27YBcM2ao0aNkkAS7nJLSkqw7777AgDOP98piU311C8qKuCa6IuKiuTfVJHNe0CnfdvsD7gKKo8
JhUKiMv+v05kiDwCff/
45AODFF18EANxwww25OTELu72/9dZbEqDx2WefAQD23ntvaee77747ADcgavXq1RIwcsghhwAAfvWrX4m5k
t8fjUYBOH2M/YfBIUOHDpXjbGVXUfwIx/vW1lZRTdnGA4GABAqxvzz+
+OMAgDVr1shnydixY1FSUgLAbf9UVBOJhIyzVGw7OjrkO6iy+pEFCxYAcNRgBufa88jmzZux//
77A3BN+vF4XCx3VGP5+S1btmT8PFVJVRRFURRFUXyHKqlKn8FUb+bMmQPASZVBX8099tgDgOsEX19fL35F3
CFu27YNL730EgDg1VdfBeCmH5k2bVq2L6HLUP0qLi4WXyq+x2uJRqOy4+W9icViory2t7enfGcwGJRdf19n
R0rojvAKNCM1NTXi20mFkr5rnfk0ZxJbsaRP3JIlSzB+/HgAwN///
ncAQFVVlfid8vhjjz0WgHP+bOcMpopEIvJ9DKri70WjUWlnVJ6+
+uor7Lnnnlm5zr7I9ddfL1YYqkyqMPuLlpYWAE6wD8cKjn39+/
eXPk9Flc+tqqoq7RlGo1Hx5bfHHfNY+nMWFRVJ//Kzkvrf//
4XgHNf7LSGHANGjx6NqVOnAnBjIoqLi6W900pHJbWurg5ffvklAOdeZgJVUhVFURRFURTf4TsllSt0c2fa3
d3pQw89BMCN5rvgggsAODudTEWcKb3L0qVLAThRiIxMpOr1/
vvvA3AiDxmFyZ31oEGDJFqefPHFFwCcpOh+ico0MxQwcttWSM30cXbaKX4WcHf4BQUF4kPU18mU/
7D5PXPnzgUATJ8+XcYJ3jsWQfjggw8y8rs7wh7zGIU/
cOBASRt1zz33AADmz5+Pgw8+GIAbdUyF9IgjjsBzzz0HALj88svTvptthKppQUGBqChk9erVoqTu6kqhl0L
/xhtvAADuu+8+AI4fI1MSkV1tXumupcI+nhHyjz/+OO6++
+4snGHXCAaD0oc5fprWJmIqq1x78HPBYFCOt9cngUBA/saxNR6P+yq+YXtwngwEAjKn8Fo45/Tv31/
WUXwvEomIj+7XX38NwF1rxWIxmZszpaT6bpHKQdBrMORN4t+8GsLatWvx6KOPAnAHjtNPPx2AM3CrWWbXgJ
NmOBwWJ3Wac5jfrqysTBYXNPE3NTXJonbYsGEAIP+n47sfYDstKiqShSfbuznocnDhtQeDQTHBmO8BzgKWi
xHF5bzzzgPgpv0aPHiwBOHx9Zxzzumdk/
uWp556CgDw3e9+N81U39DQIIFQTCXF9FGlpaW48cYbAUA2YI2NjdLmbXeC0tJSWbiS9vZ2uTd0qdlVseeUu
XPn4sEHHwTg9slHHnlE/m7PJ35KY9dVvBak/DfHF7anPfbYw/P67PdGjx4NAHj55Zfx4x//
GICbUzMXmGOfV4U+O4eneQ84fpJkMinHca7hfamoqBABhPegqKhI2oWfWb16NQDnvDkv2HnzQ6GQXLu5QOf
xFIZo7k8kEnjrrbcAZG7M3LW2f4qiKIqiKMougS+UVCqkoVBIqkO8+eabAIApU6bIcfYOx4spU6aIKsBgBy
oOiURCFdQ+jKlSMI3Um2++KdUxaG5hsNTxxx+PI488EgAkTVVRUZEorXylOsSKGn6AO/
1QKJTmpG4qXew7pqJjmqIApKQL6Qs7/
J3FVgM6U7buvPNOGXMY5DBq1Cgx69NEzkCqXGCmWqOCxbRQu+22G9avXw/AVe94/gDSgp7i8bgk5jaDo/
hvjpVsUy+99JK4DlAtKisrk9/YlZRUqm226RdwU5C9/
PLLUnHnD3/4Q9px9nzS11RUIN3iYl7TcccdB8BN2l5eXi5tkvXaKysrJXCPaunkyZMBAA8//
DDWrVuX8rdswnZtBklxXuA8MWLECPm7PVbm5eWljR/
mcZwj+BqPx7Fx40YArsl78ODBEpDlZ8stn2kwGExxEwOQUiSGYw/Hg/
79+4uCas+ZiURCAqcyhSqpiqIoiqIoiu/oVSXVKzn5b37zGwCuU+/
s2bPFp+WYY44B4PpdmTCN0Pr16yVp9e9///ssnXnvYQZ/UW3jzqW1tVV8Zvi3NWvWiP/
mAQccAMB1dmb6lL5MJBKRZM3cDbJk26BBg1BdXQ3ATdw/
c+ZM8UVlcJJfgqVMqJAGAgF53lTJzMTq7EN83qb/FT9Hn6lgMNgnlZ7uYgY8bI/
XX38dgONzyH7Bzz3xxBO49tprAeRWQSXmeTNgimpeZWWlBPpR4Zg8eTLWrl0LAKJaMUl5Y2OjfJ/
tawq4bYpq67hx40Sppco6adIkLFmyBIDjE9uXsP0tTWtMZwoq67efccYZOPXUU3fqN/
0O2wWVsmAwKOmJmLSe7SMajUoxCY4ra9eulfYxb948AG4J3rq6Ovztb3/
LxWUAcH3IOReYAW0rVqwA4FjQ6DPL9k8r1faemR1MxQDFlStXirLMgFxabvlbgD9TUTGdXm1trcTt8D7MnD
kTgFP8xlaWA4GArDO41uJc2tzcjFWrVmX0PH2xSGVD+uabb2Rw5QC8du1a3HvvvQCAf/
7znwDcBnLTTTdJ5KopudPRnXDCN+lr0Zi8Vx0dHTKovPLKKwAg0ZNVVVUi09PcF4lEZFHKxVhdXR0Ap4PZD
uR+xnTX4AQaj8fx85//
HIB7DTRFVFdXy4TLdjV16lSMGzcOgFtlxMu809vwGTc3N8vAyevjQBIMBmVi4fMuLCyU4+yKU/
8r2ItTc2Hy4YcfAgB+9KMfAQDGjx8vbYl/+8UvfiGbZdJbZjsuEjjx1dXVyaT4n//
8B4AzHnLjxQ098zqWlpamVZUC3Ovh93788ccAIH0JcKNzDzzwQOlTfjZfemEvOsz/
Mwo5mUzihRdeAACJWqb5mq+Au6ApLCxMWfTa399XFqeEc4Bp8r344osBOBt985h4PC7zLwNNS0tLRQiZMGE
CAPfebtmyRd7LBRwPOecXFxdjw4YNAFyRKxgMikuY10bFFoFM+Ly5+KyoqJDFKSsy7bvvvrJ+YZvx0yKV4x
3XCslkEieddBIAt4odCQQCchxN+21tbTKWfOc73wHgCl8rV67M+Hzj/
5WJoiiKoiiK8j9Hr0ostnq322674a677kp5r66uTlb+3MWwcko4HJZasVSNTjjhBIwZMyblO/
g5r12TnzEVIL6aJjvK9TS7tLe3pzkyH3nkkaIiUgVZuHCh/
L0vKKheUPHYunWrVN7hro4UFBTINdMlYp999sETTzwBAFi2bBkA4Oabb87BGXcPpgjasGGD/
NtWaAYOHChKMQNbDjnkELlmthXubBOJhKfJd1cnLy8PH330EQDgqKOOAuAE1QGOOkCT+uGHHw7AzYdpQuWw
ra1NVEW6lWQDKqFUYhjM9MUXX4jrChWtG2+8URQ/9n+aaw844IAU5Z3fyc/STEfV1AzauuWWWwA4/
YQmXqai6qsVqJYvX45nnnkGgHsNVVVVMpYeeOCBAIBPPvkEAFJyxjLNjklfU029sOeAp59+WtITca6ledec
X7zyiLI90VqX60BNO1g0EAhIm2UficViMmd2dU1gp2HitQ8ZMkQCpmjhaGpqkj5n5xz2A7SamJYVtmPOJ6S
trU1UaarBgUBA1ltUpA899FAAwJNPPinv8X7QVaSn9M0ViqIoiqIoirJL4ztnNdvpvLKyMq26B4856aSTUl
IlAMBvf/vbtO/kbikcDosqO2rUqCycvTdejvR8z9xpmmkw7OPp7zJjxgz8+c9/BpCu/
HgFxgSDQVF+GFTh5WvjF7qaDJs7+rKyMtnlL1iwAIBbt3zTpk2illBd//zzzyX1Bv3xTB8av/
jcUSk2E0kT3p9wOIwTTjgBAPCvf/0LgKNg2Cm1uJvPy8vzVIP8SCaDT5YvX45JkyYBcCtHUUl8+
+23xbeOacpMeO/uuOMOAI7/
N4NCLr300p0+t+3BcYqvZgoq28dvzJgxYhVgcAivLxKJpFlSgsGgKOp8j33IbPf0S7zoooukLXEs4St/
x6/Y/fmVV14RBYkplLZs2SJBpPbYWFtbK+nuvNoifSBpqbn//vslKOe6667L5KVkBTMQl8Ey559/
vswtVMx4XyKRiCiHfI1EItKHqLax31ChzhVUcjnnb9y4UcZ7vse221WSyaS0H94H3pdoNCp/
ozq7bt06jB07FoB3PExvQ2WZfaO0tFRU5ltvvRWAO/8UFhbK/
aIfbnFxsVj3Xn31VQBuQGVJSYn0LwYhqpKqKIqiKIqi7HL4Skk1IyXt1DpAurq1ePFiUQmoEj733HO4+uqr
ATgKCuBGcc+fPx9nn302AFcZyQVmJKidHqezSLhEIiHZC6iA5efnS81u3qMnn3wSgKMIcHfLHf6IESNkZ0P
Vg/
9vbGxMSZfhF7qSjN2M7mcKKu7u6F83dOhQUaD4apY+raioAJBbVb2r2LWigXQf08bGRklNxCjwF198USwPd
noVv9WUZl/wKsdol4AFUksY2gUOvLJUzJ8/HwBw9tlnS1EH9jv6fK5fv16UFrJy5UrcdtttAFy/
ZZb4mz17drdTEvUE/i6fJdu7VzL9iy++WFL2UfWgzy3gXjP7gFnwgW1k/Pjx2z2XRCIh38vj6W9m+//
7DXvOuOGGGzyPY6J3Wqw4Lk6ZMgWzZ88G4Ca2b2hokGIz9HWmcjZhwgTPFIm9SWfWKbO/
0Nd53333lXGSkfGcM0pLS9MyGwwaNEjGK7YPWjg5P+cKzgFmOVeeG8eKtra2tJRTvBZzbDHhe5yHqdiax3I
eWrVqlcwpnI/9BNPvURktLy+X1F0cCznuJBIJuX/0Nc3LyxN/
fJZj5ncFg0GZi7h2+d73vrdT5+urRapXRzIHVPLpp58CcEwJNEOxmsW2bdskxRDzdfGGh0IhXHbZZdk5+U4
wJ2PbbLBixQqsWbMGgNtAaDoKhULSKdjo99lnn5T0MoBTNQdw8juyc/L7w+GwfB/Nd+yQ77//
vqSeyDQ9Ndd29XgOnrFYTCZQmuw4oD700EOysLvgggsAAMOGDUtzgueA6ic4uHV0dKRU+gDciaWjo0PaEwN
bgNSFOOAubsPhsK8GTS+3FsLJjgsrG/MeAKmbPQZf0g3m2GOPlWfNAZSfO/
PMM+X+cAP77rvv4qKLLgLgVhniILxs2TI5t2yauh944AEAwK9//WsArjneTIlEmpqaZNLktdDsv/
vuu8uCyz7GhIEyXgFRV155JR566CEA7v3j/
fTrItWeM3bkvsNJl4F1dB36yU9+IoGWzKe7cOFCCdg95ZRTALiBI9Fo1Hcp33Y0pnKjyw1QVVWVLFo4tpoL
PJr0acrv37+/
mIf5am6kc4ntXjBy5MiUDRvpbtpBW1ziK83+gDvHtLe3+9qtyt44nHnmmbLpIlyYtrS0yBjMa+J8BLhulv/
+978BOC5QTOc2ceLEjJyvmvsVRVEURVEU35HzLV9XA2NM7OOZ3iIWi4kKxp3fPffcI0oS02eQQCAgSa9zgV
2sAICkS+LO/
ZhjjhF1iyY37ljKy8vFDPW73/0OgKOesqgBlTWaHzs6OkQtoTp71lln4emnnwbgmsFZj3zGjBlZU1K7+4w7
U169gpnMtGRUtpjcnNVPCgsLxQRz4YUXAnBUA6oe3BFSFbF/
ozdhO43FYnJ93N2aydm5k6W1oL29XdQPtiPe046ODlE6/
IBp0reDw7h7b25uluswTXR2gQMqnZdccomkX2Ly7ra2NglqoIpIJXXp0qVyHBP833DDDWkpWahkDhw4MCcq
CVU7jhMsxOEVhHDzzTfL9XvRWSJ+3g+6Sy1fvlx+m7C/mN/FfuUnzDFke/
142bJlYqLkGGnWLqeaSIX49NNPl6CQm266CYDjGsCxlHMRrVtHHXXUdtX/
3iKRSIgSyD5Ea9PgwYPlXtEs+/nnn0v/oArP5x6NRuU9Wm/
eeecdmbtY+ZFWPqY78hOxWKzH4zzXG17jKMcMP6uogLuW4CvgWgS4FuG4YKbcY7s2iz5QVaebzKxZs1K+Nx
OokqooiqIoiqL4jp1WUjtTRhOJhPhscPXdk8ANW2Whf1R7e7vs3LiznTlzpuzqGhoaALh+I5FIJOvJ65PJp
KeCCjgqz4knngjATYUza9YsSfdBX1oTllyjctjS0iL+t3TaZ4DI8uXLRTGkj4npf/bII48AcMs/
jh07VsqZmT6NvUFn7cLc9S5evBiAqwqNHj0ab7zxBgA3tQafd15enijsbBPRaFQUFCru1dXVACDBNX6A/
o4jR44UHyK2Z96PkSNHShvjjrasrExUVapr3NkXFxf7SkklXn2S6v91110n/
th89oDrszpr1iwAbnDk8OHDZUygAtDQ0CDjDz/
3xRdfAHD8VVlWmEpBdXW1KE+8r1SgiouL0wpmZBpaQwBXkWL/j0ajaUpdNBqVNsL+TqVs/
fr18jeqYwUFBWmlUtn/6+vr05RUwH1GDJjiM6mvr9/pFDOZwivFHws1UF0vLCwU32PeWy/
4DBKJhPjWUWVatGhRWhJ4tqFDDz1UVO9sYvvcdqYiBwKBtFKfDPQaP368BHrxHg0YMCDFjx1ASv+h5YnFU2
pqarBo0SIA7txCxXGvvfYSK0QuS4OaPqdeJWx5PbSmmffHazyyS1KTziwYfQnOgWwfnDcBVzXm2BmLxdKCe
FlMxiRTaQQzuki1c3+GQqEUabgr8LP8rlAoJKY6muX4/+uvv16iNbkoe/DBB1MizQA3Ki0Xg0dntZs/
+ugjMQ8xSKq+vl4eMOuFez1c5nl86qmnJCqdJjde51dffSWLWhM6/jO/
IwfdRCIhC7beXqSSeDwuk6nddj799FPJZcmFwieffCIdZuPGjQDcxWdra2tacEtVVZXUo+aiz65X7CcWLFg
gC4mrrroKgJu14pe//
KUsyDlpfv3117j99tsBQIIE2e7nzJnjq4W4GVBo9xlG15900knSRufMmQPAmQi5YGVwJPtAY2OjDJxcPA0f
PlzM2Qwi/OMf/wjACRpg0BAnLDNY0678NHz48Ky7hCxdulSeK02rvAdeQU/BYFDaNM/
brDrG8ZD3JRwOS9+yI/+//PJLuWZzvGRACo/
neTQ2NvbqItVrMbJ8+XIJ3uCGnhuXIUOG4C9/+QsA4NlnnwXgBJQyUI6uQhQAFi1aJJW3uLj1gmNyOBzOWg
aNrrgzeLF+/
XpMnz4dACTHNoOlhg0bJi4tZt5YjqXc6PEZRyIRrF27FoC7QMvPz5eFDINX2ZdWrlwp7hV8Frmgs2cQCASk
P9tZhMz2ZC5W7fy5Zv7YHQV59iXszVckEkmrmpWfny/jC4/nRtjMGGQHm/
UUNfcriqIoiqIovmOnlVRzt8Hdi5mugg61V1xxBQAncIj1kW0VCEhVAABnZ0+HbqpATz31VNpvm2ZMKk/
8Lv4/m+l3uBv94IMPxHxCFY+vgwcPTqu1PmbMGDFTU/
GlSmiaHpjDbt68eXLfmI5m8uTJABzzrx0cEQ6HRR1gMIBZgSsX2Ok+vHJfkmAwmLbzmjdvHgBHKeW1U5E26
w/zPpimB9tcO3LkSElhRpWA992PbN68Wc6PVaVo+h0/
fnya+Wnz5s1iXqN6yPY0b948SWmUC6vCjvAyq3Gc4HMbOXKkmJipro4YMUKumymT2Ma9aGlpkQAk1m2nNWH
FihWiKvI7+/XrJ0oT+yaVzFxQWVmZFrDC8/dSJT7++GOcccYZKe9x/
PQ63qviHMeNfv36pfQpwupaVOKI17G5xEsxe/
bZZzF16lQA3hWP6BI1Y8YMAMDtt98uVaUeffRRAO4YMnfu3LQgMS8XN7ocDRgwQL4r05i/
yby4H3zwAQDXlaO0tFRM76wgNWLECHnmVJSpvFdXV6e1kdbWVmk/tMzx88OGDRPFkK42HR0d0l/
ozsa5dunSpVl3sesqvIZ4PJ6WCpLk5eV1er62apqfny+qcV9RUr0stQzQtl2ZzGuyc8sC7hjOe5CN8cAfrU
dRFEVRFEVRDHqspHLn3d7eLqtv7ua4myouLhYna66+P/
zwQ1FSbf8HwFUAqGAcdthh+NnPfgbA9SPzgvWSAXc1b6tM2Uw/
RWWqqKgIb7/9NgD3fvB3TznlFFHFWFGmtrZWfGyZlJ+pcOjMDKTuVKiAMtCKibuXLVsmKht3OAUFBfIMqDb
zvBoaGnJSW9lWHTrzUUkmk+Ij+NZbb6V8vqGhQe6fGQzE9scUVFSrJ06cKEn/
qYw0NTWJ+ka1jm2uvb292z7U2Wb69Om45pprALjpy9gWTj755LTjzz33XFELmaqM1zRx4kTfVcMhN954IwB
I36EatWrVKnnWPPdQKCR9gM+XlgbeI5OKigq8/PLLAFzrA/
tfSUmJ9BUGfYTDYekjtIJQecqFKtTU1CRtksqNV6UpBvcUFRVJm2b/91JSeU1eBVLMCnhetc35/
Qw2sv3U/ADPacyYMZ32Yz5L1hYHIH2M/uxsR0OGDEmzTnmpt3w+9OXMJpdccgn++te/
AnDHMM6l0WhUxnumYBw9erQ8e1pZeJ7Dhg2T5001raOjQ+ZOfi/H2EgkIkFRbH/
5+fni682k7qafsl+KG7B9JBKJLvlJeimG/
BzvJ9D71oTu4qWkMiaFbcFM1WdXBjQD4tku+J1NTU0Z91FXJVVRFEVRFEXxHT3e4nBHYfowcMdEf6p169al
+fNcfvnlmDJlyna/
lzs9prc466yzOlVQCX1gTH8g24cim1Go3LmbyfF5LXzdc889RTU9+uijATjRw9zhmX6kgBOJTp8Q3ufzzju
vU5WAkZTc6YRCIdnp8XPc9WzatMkz7VWm4fVxN8r/
NzY2iupJ5by+vl7UASpn77zzDgAn6pTplZhCaNOmTXLNVLN5r+i3BbhtsqKiIi2hO30em5ubfaekNjQ0SMQ
sM0Lw+swk62Tbtm2ijvMesS1kqkxdpnn33XfFt47tkX2msbFR0ssxL
UoymRRFj1HVzO4xduxY8TWcNm0aACfjB33x6DtIhchMz8N+sccee0hqNrvGfS7Kyq5YsSIlmhpwizWYcGwY
NWqUnJfd10wVy478NzGjdc0UWDYcmxjhneva7MRUg6je8bzPPffcNDW4s3Q4kydPFnX1/
vvvB+D6AANIax9e30EFNpulcnlNL7zwgviKMiKfY0FFRYX0F1oGqqurZd6xVb9YLCbP1MzKQ4sV+xytGfRz
B7xLi3Kspo8qkF6mubcwsxGw//
OaTX9VUyUFUq0ndiovwJ9ltbvDtm3b0uIyaK0rKChIKwARj8fTxhfex9ra2pRnnwl6vEh97rnnADiO9DQFM
fcaB8xkMikXxkZx0EEHeaY4AZxORVM3000xtyeQHmjl5cBeVFQkHZINyaw1m0vM3JW5ojsNJBem37Vr10qa
IJqYmPLpm2++kcGWi42ysjLJwfjaa68BcCtClZeXS8AUJ4Py8nIxcdLlg//
fsmWLuFow3VQ4HJZBhRMT28eGDRt8V0knHA7L4pKBYYTmOft4bpR+
+MMfAnBTtuViQ9IduDG57LLLZCIzc3nylc+Hx7S0tEib4PPi37Zu3SqBlldeeSUAJxfq7NmzAbjBgxxkm5u
bZeFqpqyy06d88sknKZ/PJl5ppryCMnhu5kaXY42Z55CYaac4LvO3zMW41yKWsDINJ3yvxXOmSSaTac/
DK+jjtNNOk/eWLl0KwM1H7bWwvOOOOwA4k+/
1118PIHVxSrzybHpV7wKcMS1b0O0tFovJppvnxHGxvb1dng0339FoVBaZ3Fzw/
FtaWuTecn5NJpPSVthPOGbuv//+OOSQQwC498Xr3vL3KioqxIWnt8cfM+2U7bZjbuDs6/FKS2Wa/
9mX7D7VV2hra5MxlgII/2+unXgf+vXrl2L6N//
GuTeTqLlfURRFURRF8R09VlKp2JWXl6ckPgZchWTUqFGeMjJ3t6yJzACPsrIynHnmmQCA+
+67Tz7D1bpXoJVNXV1dWkAMA4ayGTilePPee+
+J2sBk2Az0Wr9+vZhVqWDk5+eLyYg7e7a11tZWUZRo2tu0aZOoF3T1oMr22WefyXF8LxAIyHfYqkl1dbVnt
Z3eZODAgZK83wzwAtxrMikrKxOlmgGMvP/ZVHl6Aq/
n+OOPl3GCLgpUviORiJw320N5ebkcT6sMzf81NTW4+eabAbjBMHPmzBGVlAo8FdtEIiEKD9WU5uZmUaqoSr
Ed5cIqwhRJO4LKUENDQ1qSfTutFpCq+vFa7cIZ8Xi8UyWVY3Yu2VHyegZMfv/
73weQqm5R8WEKrcceewz33nsvAEgquqlTp3ap33eWIJ73OZvVyI4//
ngAzrhmF3eg21R5ebmoWqZJm22F7Z9zqumeQPUzGAympWbimNPc3CzzOy1xkUhE2hF/m8+rsLCwU/
eRXMBzMosN2Up4Z2kRd1ScgZ+l2tzXlNStW7fK8+O12i5x5nvJZDLFndCE7dD8rp1FlVRFURRFURTFd/
RYSWUwBxP6mlB9qK2tFRWE6ZTq6upkF8hV97XXXgvA8bnxCm7aXtoXr5X6a6+9Jrs+OvVzF0nfWSX7MJips
LBQnvfDDz8MwN2Rtba2yi6U6qZZ1pIBQFTLVq1aJf6t9H2JxWLyWaonbC/9+vVL28UzIAdIV5G8/
NF6G1MZYbvmjt3LslBcXCx/
5z3iNfdWkMv2oIpz2mmniR8yU0pxbGhqapL0NhxXtm7dKtfEtsRnPn369JT0VUBqkQuzJjvgqCr0Z6XfaSg
UEj+6ww8/HIDr89re3t6rgSBmInKOa/X19XK/mAqJfchMN+XlR8nj2Ie2Fzi4PR/
MbMLnvXr1arnnpkUEcJ4jFT2mrkskEmI9u/
XWWwG4Svvzzz8vQXannnoqADflX3ew5yQqqNkMrGMg4LRp0/
D6668DAB544AEAbkAg74FJKBRKU7xMP9uuBP6YwWP0f6XPq+mjaKcm2rhxo6Sc7C1sa25RUZGcJzHbtV0qt
bO0c4FAQI63v7Ov4KWkmvE/
vH7T+sLj7JRcZvvLlJKalQRm7Kj77bef5CWkqSLb9HaHUBwYrW1W6mHD5+KpoaFBJg8GVTU0NMhChQE/
ZjYCLszMQZd/t2uwMzAKcDvRoEGDZALj53hcripwdYeSkpKUqFsgNSeijTlhkO64y+QSns/
o0aMlcpnPZsKECQCcZ8IIZjPQkotN06zI99kOeHy/
fv3SolDZFgcMGCDtgBkABgwYIHkD+dvcMPkp+wMX+S0tLWmLbxIIBNIWmOZ77Bdc8HZ0dHguRLe3ODUXzZm
GLh8vvviiLFJ5nRwbCgsLZRHCBVtlZaVEoTMwkwF2y5Ytw9133w0AGa0MRTFm/
vz5OOecczL2vduDrjx8JW1tbRI0RqFg3bp10r9s83Z7e7sEPHOTXlJSInM4Ny/sP4FAQMYdfsfq1avl3/
wc3WWKiookk01vYS/
CvRadZiCUnbXArELl5QpjL+z8jn19NTU1aVkOSEdHR0p+ZcBpC3zPvh9ewbw7i5r7FUVRFEVRFN/
hj1IQyi4H1YTVq1eLaYomWu7E29vbRfXkjiwvL0/
UVcJdfGlpqfybu2OzQo6domzIkCGisHHnV1JSImodd438/z/
+8Q8cccQRAPxR2x5INU1RPeqM4uLitLQgfOW98Atm3l7bUd9MO2U/CzOwyVaN+/
fvL8dz55+fny9mYipDbGOJRCKl7jngmAfZRplrku0zW3XZu4qpWvJaCgoKRAnlfeO9NVNK8T2zspoZMMXje
3o+mYb5Pm+77bas/
UZPsdvdLbfc0ktnkkphYaGkYONrtjnuuONy8js9heOnqR6bgZOA245jsZinkkrs9p5IJDpVWfsCW7duTcv/
aprz7WvOy8uT8dp2iWAub/
M7dhZVUhVFURRFURTfoUqqklXGjBkjCdBN31LASTfEdCbcgYXD4TQnf+7aCgsLRQ2k+jlixIiUxO9Aag1qq
k1mvWn6nlJFMpU6v6mNpaWlogxz92/XSzbxqpnNHa3fro2YAY1UMKkaNzc3i8+hWRjEToFi+ufyOnl/
ioqK0lJH8dl3dHSkpeVZsGBBmi8e73k2UwxlAl4nFVVTiWc7CgaDaeoP1ZJoNCoqNcmm36miZBu2f7PN23M
M8RpTTUXQq+JUX/
NJtZk7d66MsfTdtuMgzPeSyWRaqjGOi9u7rzuDKqmKoiiKoiiK71AlVckqZp1f7jgZKc3XbPwmsRWjSCQiq
qq5M+T55aI2e3ehqsj7R9XQK3VMNBqV97mz56tfamh3hq2KmxkackVPUhL1JsFgUFJmMZsK0wSZNezNEqZ8
n6opFVh+TlF2FeziBmapT3sOSCQSopKa/pacR2ilMcuj2mVl/Y6tFl999dVSVIfp/roaB8Fxg/
dx8eLFGTxTB12kKlmlN8yEXr9JM8TAgQN9uRDtDC7m7br2tlkWcNI50WTDQZmuEdnaFCi9y6WXXopnnnkGg
LvINIOquKnhwrSxsTElRRDgBjUefPDBkmtVUXYF7MWp6fZEtx8ek0gkZMFliiu22GEuSO1cw37HNsmffPLJ
OPnkkwFAqhsuXLgQgOMex6BTBlUGAgG5b9z4csxgNdFMouZ+RVEURVEUxXfkeTkKK4qiKIqiKEpvokqqoii
KoiiK4jt0kaooiqIoiqL4Dl2kKoqiKIqiKL5DF6mKoiiKoiiK79BFqqIoiqIoiuI7dJGqKIqiKIqi+I7/
B2soDiyhIuPpAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 864x345.6 with 40 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"n_rows = 4\n",
"n_cols = 10\n",
"plt.figure(figsize=(n_cols * 1.2, n_rows * 1.2))\n",
"for row in range(n_rows):\n",
" for col in range(n_cols):\n",
" index = n_cols * row + col\n",
" plt.subplot(n_rows, n_cols, index + 1)\n",
" plt.imshow(X_train[index], cmap=\"binary\",
interpolation=\"nearest\")\n",
" plt.axis('off')\n",
" plt.title(class_names[y_train[index]], fontsize=12)\n",
"plt.subplots_adjust(wspace=0.2, hspace=0.5)\n",
"save_fig('fashion_mnist_plot', tight_layout=False)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential()\n",
"model.add(keras.layers.Flatten(input_shape=[28, 28]))\n",
"model.add(keras.layers.Dense(300, activation=\"relu\"))\n",
"model.add(keras.layers.Dense(100, activation=\"relu\"))\n",
"model.add(keras.layers.Dense(10, activation=\"softmax\"))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"keras.backend.clear_session()\n",
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Flatten(input_shape=[28, 28]),\n",
" keras.layers.Dense(300, activation=\"relu\"),\n",
" keras.layers.Dense(100, activation=\"relu\"),\n",
" keras.layers.Dense(10, activation=\"softmax\")\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<tensorflow.python.keras.layers.core.Flatten at 0x7fd9891fef90>,\n",
" <tensorflow.python.keras.layers.core.Dense at 0x7fd989205290>,\n",
" <tensorflow.python.keras.layers.core.Dense at 0x7fd989205610>,\n",
" <tensorflow.python.keras.layers.core.Dense at 0x7fd989205a10>]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.layers"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"flatten (Flatten) (None, 784) 0 \n",
"_________________________________________________________________\n",
"dense (Dense) (None, 300) 235500 \n",
"_________________________________________________________________\n",
"dense_1 (Dense) (None, 100) 30100 \n",
"_________________________________________________________________\n",
"dense_2 (Dense) (None, 10) 1010 \n",
"=================================================================\n",
"Total params: 266,610\n",
"Trainable params: 266,610\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAbUAAAIECAIAAAARtifHAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO
ydfzyUWf//
zzAoZLRWS0sqrJ9p1S1kbfsDpRJJKZU2Qptt77hrq7utTx8P6t67PnfsVy2VaCM7QqRfqxbZirQo+VV3SSg
SGmbE+DHX94/
z2etz3WNmjGHM4P38a865zvW+3tc15u0657zP69AIgkAAAADAABRk7QAAAICcAvERAABAMBAfAQAABAPxEQ
AAQDB0aqGgoOBf//qXrFwBAACQLfb29qGhoWTxP94f6+vrU1NTR90lYEKTmpra0NAgay+kRUNDA/
ymxgqFhYUFBQXUGvrARhcuXBgtfwAA0Wi0kJCQNWvWyNoRqZCSkuLt7Q2/qTHB6tWr+Wpg/
BEAAEAwEB8BAAAEA/
ERAABAMBAfAQAABAPxEQAAQDAC5q8BQM6pqakJDw8PCwvT09OTtS8jQ21tLZlZ8tFHH82fP5881NfXV1RUx
OFwWltbEUKmpqbW1tbkURaLde3aNbK4ZMmSqVOnjpbX/wubzT5//
vzz58+NjIx8fHxUVVWpRzkcTkpKSm1trZ2dnbOzs5KSkpRslpSUaGlpGRgYkM1qamru3buHP5uYmMybN2/
I90ZQYDKZfDUAIG0QQkwmc0in4HSZq1evSsmlEUTM31RiYiJCKDk5ubGxsaOjg6xnsViHDh3q6OjgcDgHDh
xACDEYjMePH5MNeDxecXHxnDlzzM3Nc3NzeTyeVG5DONXV1To6OsbGxsrKygghQ0PDxsZG6lEjI6MrV67ge
Ddjxoxbt25JyWZvb+/WrVup9jkcTm1t7e+//
66kpBQSEjLodb28vLy8vKg1EB8BGSNBfCQI4s2bN9JwhsrZs2eHb2RI8ZHFYlErGxoa3NzcqJU4XpiZmVFj
KEEQ+G16+N5KgKur68OHDwmCaG5u3rJlC0LIz8+PetTf358sbtq0ydHRUXo2+/
r6XF1dy8rK+AzOnDlTsvgI44/AmOT999+Xqv2cnJy9e/
dK9RKDEhoaunLlSgaDQdYYGRm5uLhUVVX5+voSFOVWLS0tTU3N0fewuLh4/
fr1VlZWCCFtbe2wsDAFBYW7d+
+SDRobGysqKsiiiooKl8uVnk1FRcXQ0NDAwMCRuDmEYH4GGIvweLzc3Nz79+/jYn19fVRUFI/
HKy8vj4iIOHfuHI/HIxs3NDScOHGCIIi8vLy9e/
dGR0d3dXUhhLKysiIjI0+fPo0QYrPZx48fj4yMxK97ubm5Hh4eHA4nNjY2KysLIdTS0nL48OHXr1+P2j0WF
RVduXLFy8uLWkmn03/55RdDQ8OMjIzw8HCyXkFBQUHhP37LbDabyWQePHgwLi6uvr6erBf9rBBCr169OnPm
TFhY2G+//
TaokzNnzvTx8SGLurq68+fPpw6Aenp6FhYW4rdjDodz8eLFHTt2SNWmk5MTm81OT08f1HmxoL5MQv8aGH3Q
EPvXFRUVOGr89NNPBEFcunRJW1sbIXTs2LHNmzcvX74cIXTo0CHcODExcerUqZMnT966daufn9/
SpUsRQjY2Nj09PQRBWFhY6Onp4ZYdHR0aGhr29vYEQZSWljo4OGhra+fm5paWlhIEcerUKYTQjz/
+ONS7k7h/
vWrVKicnJ75mVlZWBEE8evRIXV2dRqNlZWXh+tjY2OjoaLLZgwcP5syZk5aW1tzcfPToUXV1dTxWIPpZEQS
Rk5MTEBBQUlKSkpKirq6+bdu2od6vjo4Otaff1NRkYmKCEAoJCXFxcUlPTx+qQQlsBgYGWltbU2sk7l9DfA
RkzFDjI0EQZWVlZHwkCGLPnj0IoZs3b+LivHnz5s+fTzbesGEDjUYrLy/
Hxf379yOEYmJiCILw8vIi4yM+EcdHgiA8PDz09fXJQxwO5/
z583yjfuIgcXw0NjbGnWgqOD4SBJGWlkaj0ci5Gmp85HK5pqamBw4cIM/y8fFRVlauqKggRD4rNps9e/
ZsDoeDi/7+/gihgoIC8W/
21q1benp6bDabWtnc3GxoaIgQsre3b2pqEt+axDajoqLodDqXyyVrYPwRmECoqKhQi5MnT0YImZqa4qK5uX
ldXR15VE1NjU6nW1hY4OKePXvodHp+fv6gV6HRaFQj69atmzJlyvCdF4eenp6amhpdXV1hDTw9Pfft29fe3
u7h4cFms6mHrl+/
Xl1dbWdnR9YsXry4p6cnLi4OiXxWycnJXV1d3333XXBwcHBwcGNjo6Gh4dOnT8X0ub+//
8CBA5cuXVJXV6fWx8XFLVq0yM/
Pr6CgwNbWlvrVSMkmg8Ho6+sT33MRQP4jMN5QVFQkhO86p6qqqqen9+bNm0HtUOPjKNPW1tbf349jmTDCws
IePnyYlZXl6+u7ZMkSsr6yshIhRA0ojo6OCKGqqqqBRqjPqqKiQldX9/
jx45L5vHPnztDQUGpuJkIoPj6eyWTev3+fTqc7ODgEBQUFBwfjIV3p2cT33tDQYG5uLtm9kMD7IzCx4HK5T
U1Ns2fPHrSlDOOjjo6OpqYm34shHzQaLTEx0dTUNCMjIyoqiqx/
7733EEJUHUMDAwMlJaVB88YVFRUfP37c29srgcMnT560trZesWIFX/3Zs2ddXV3pdDpCyM/
PLyAgIDs7m8ViSdXm27dvEUL6+voS3AgfEB+BiUVhYWF3dzeemqDT6d3d3QKb0Wi0/
v7+0XXtP7CwsGhubqbWEATx7t07ao2GhkZGRgaDwaC+G9ra2iKEqAMI5eXlvb299vb2oq84d+7czs7OmJgY
sobFYp04cWJQVy9evEgQhK+vL1lz69Yt/
KGsrIwaudzd3Xt6esRJAxiOzcbGRhqNNmvWrEGvMigQH4GxB853a2lpwcWOjg6EUE9PDy62tLTgsXmyfV9f
HxlBUlNTFy1ahOOji4tLS0tLfHx8Z2dnfHx8a2trTU0NfvvQ1dVtamqqqal59uxZZ2dncXHxggUL8vLyRu0
eHR0dHz16RK1pbGx8+fIlX0A3MTFJSkqiJvfMnTt306ZN+fn55Kjc7du3jY2NcVagiGfl7e2tr6+/
c+fOI0eOVFVVpaSkBAYGbty4EbcMDAxcunTpwNB28+bNH374obe3Nzo6Ojo6OioqKigoCE+gIYQ8PDwuXrx
IphAVFhZaWVkZGxtLzyZCqLa21sXFZdKkSWI85sGgTtbA/DUw+qAhzl8XFhbi/B5LS8vLly/
n5eXhzvKWLVsaGxuTk5M1NDQQQgcPHuzt7SUIIigoSFFR8Ztvvtm1a9fatWvd3NzIaWg2m43nMczMzNLT0z
09PRcvXnzq1CmCIHJzc+l0uqamJs7pwfPF+NCQkHj+uq2tbdq0aU+fPsXFCxcufPrppwghZ2fnnJwcvtMjI
iKo+T1dXV3BwcEWFhYJCQmnT59etmxZXV0dQRCDPqvKysqPPvoIRwYLC4uSkhLSJp4vPnr0KPW6xcXFampq
fCFl0qRJra2tuEFnZ6e/
v7+lpWVkZOSWLVtWrFhRU1MjVZtcLldLS+vGjRtUm5DfA4xVhhofh0pQUJCSkhJBEHV1de3t7QMbNDc34w9
dXV3UehaLRU3oEXjuoAxnfWFMTExwcLCYF3r9+jVfDYvFunPnTn19vZgWSGpra1+8eMFX2d3dzWQyMzMzh2
qNIIjOzs7Kysq2trZRsJmSkuLu7s5XCfk9ADAI+vr6+HWJD5wyjRDi65ExGAxqQo/
Ac0cWvrV3AQEBra2tpaWl4pw7bdo0vhoGg7Fw4UIJJI4MDAxmzJgx0LeCggKcYD9UVFVVzczMBk4QjbjN6u
rqpKSk5ORkvsYSDyVDfg8wznn37l1fXx+Hw+HLoZMrlJSUNDQ0tmzZYm9vb2Nj4+TkhBBSUFBISEjYvn17Q
ECAjY2NbD0sKio6dOgQnjWWT5svXrw4fPjwmTNnyLyo8vLy69ev19XVdXR0SDYcKblnlZWV165de/
LkiZ2dnYaGBp1Od3d3l9iaNJArlcD8/
PyXL1+SRU1NTVdX11G4bnZ2NtYNxFhZWZGZ0hOBpKSk7OxsgiB2794dEBDw8ccfy9ojwaxZs0bgDo4qKion
T54cUk61lMAhW55tKisrJyQkULOyLC0tLS0tEUI//vijZDYl7F/fu3fPz8/
vr3/964IFC7799lsvL6+SkhLJTEmPkpKS+Ph4vklAWWFnZzd58mQfHx8fH5+WlpbPPvtsdK5rbW1dWFjo4+
OzceNGrKk3OteVE5YvX15dXf327duIiAi8aHcsMrC3CwxEV1d3xFNWJYyPERERjo6OdDrd39+/urpa/
BN//vlnEcWRxcvL682bN9J+TRPzFpSVld3d3bEI1YYNG0QvjRhBl7S1tXES2ccff/
z5559jAcGJA4PB0PwTqT5zYFwiYXzMzs4m9ebEF57j09QbBYk9uVIJpNFoeLyfqug3Ci7hiw7MmQAAQDRDH
n98/
vz57du3uVxudXV1amoqQmjgCoQnT54UFhaWlZU5ODisXLkSV2JNPRqNFhsbO336dHV1dWrRzc0NIfTq1avr
1683NDQ4ODh8+eWX+MT6+vr09PTt27dXVlZmZmbOmDFj/
fr1fGp3AuHxeLdu3VJXV8dj26LtNDQ0XLp06euvv75169avv/
764Ycf+vv7T548OSsr69mzZ+rq6lu2bGGz2T///HNvb6+urq63tzffHbm5ubW0tJw6dcrPz+
+DDz4Q52GOgkviuCHwK/
vtt9+wbqCKioqnp6eKikpRUVFlZeXUqVPJgWaB39fbt2+Tk5O3bdt27dq1srKyv/
3tbyM7qA8Aowc12UecXK3Xr19nZmYihEJCQu7evXv37l2so0nqKR07duyzzz7j8XjPnz+fOXMmliYlBmjqD
ZTYE6g9N6hinTDkUyUQrwnt7+8fNZcIgnj8+DFC6NNPPxXmlcCvrLOzE8/
kPHv2jGxpampKbn4i8PtKSEhQVVWl0+n/
7//9v7lz5yKEsFC+CJCU8x9lC+QUjyFGJj8cz8OSUYDD4VDjo5GREZnU6uHhsXTpUvJEPk09alGE9pxodT8
RyKFKIDU+jo5LhBjxUdhXdunSJYQQuWjk1atX5F+PiO9r/
fr1CCGsWlpVVSXsoiQQHwE5YWB8HPmOT15eHh7qqqysrK+vx+s9SfgmmMgiqT2Hi6T2HJ72Rf+pWPfrr7+K
48mgKoFUOwNVAg8fPpyfnx8UFCT6KgNVAsXxbdRcEgdhX9ny5cvNzMz+9a9/+fv702i08+fPk3oBIr6v6dO
nI4RwH5y8NdF4e3t7e3sPyeexhQylgIAhwb+hxYhf4MMPP8zOzr58+fKiRYsMDQ2Li4upR4XFR/
G150Sr+4mPHKoEysolYV8ZjUbbtWuXn5/f1atXly1bdvPmzb/+9a/
4kIjvC4+fijNATLJjx45B1WXGKAUFBeS2NoCcc+zYMb6akY+P+/fvx/
MJkydPTktL4zsqLD6S2nNibh8ubbBK4OLFiwdtOWqvBtJwqbm5mcFghIeHC/vK1q9fv3///v/5n/
+ZOXOmhYUFOdMyst+Xvb29wOzo8UFkZOQ4vrvxBN5XncoIr79+/vx5eHg4md/
HtzUan6YetSix9pyUkEOVQGm4FBAQUF9fL+IrU1ZW3rFjR25u7q5duzZv3kzWy9v3BQDSQJL4iH+ZeJNM9K
eiHF5aj+dqkpOTOzo6fv/99/z8/
Ldv33I4HKyEzKepRy0uX75cmPbcoOp+wpBDlUDsAznANwouIYRevHhBvQrm3bt33377LZ1Ox9+jsK8MIRQU
FMRgMFpaWqgLE0VoBeKLUhc1AsBYhTpZI85cW01NDd6d1szM7MqVK01NTV999RVCyMTEBM/
D+vn50el0IyOjmJiY1NRUZWXlL774Amu38Wnq8RUFas8NqlgnDHlTCbxx48aWLVvw3Xl6eqalpY2OS0lJSQ
sWLEAI0Wg0W1vbL7/8cuHChRYWFrhffPLkSdFfGWbr1q3Hjx/nuyOB39fp06c//
PBDhNCaNWvu3bsn+m8Jg2D+GpAPRkn/
kZrg0t3dTT3Ep6nHVySEaM+NArJVCZSqS+Ig4isjCMLZ2fnt27cCTxz+9wXxEZATRiO/B/
25oA3Dl2TDt7Ru4Eo7AwMD8S+0bds2YYcCAwMlE2sRtq2PCJVAalEaKoHDdEkcRHxlDx8+nD17trBVpEP6v
gBgbDG2F359/vnnwg6RsUNM5FAlULYuFRcXf/
fdd3PmzMnLy8vIyBh9ByYUtbW15I6DH3300fz588lDfX19RUVFHA4HD+mamppS9ztlsVjXrl0ji0uWLBl0n
8IRh81mnz9//vnz50ZGRj4+PqqqqtSjHA4nJSWltrbWzs7O2dlZzIQHCWyWlJRoaWlR/
2HX1NTcu3cPfzYxMZk3b96Q7436Mjlh+wKJiYl4xfS2bdvIZXmyReYuFRUVTZkyhcFgpKSkSPVCCPrXf+6v
kJyc3NjYyDcAdejQoY6ODg6Hc+DAAYQQg8Egl3gSBMHj8YqLi+fMmWNubp6bm8vj8aRyG8Kprq7GunlYGsr
Q0LCxsZF61MjI6MqVKzjezZgx49atW1Ky2dvbu3XrVqp9DodTW1v7+++/
Kykpwf4zksNisd7+ybt372TtDkHIh0u9vb3kUkjpIe34ePbsWRnaGc7+Mw0NDW5ubtRKHC/
MzMz4xpexDrQE7g0fV1dXvMS+ubkZz0D6+flRj/
r7+5PFTZs2OTo6Ss9mX1+fq6trWVkZn0HYf2ZYyKFKoDy4RKfTh7QMRg4ZKQ29UdDiG0hoaOjKlSupo8lGR
kYuLi5VVVW+vr4EJQ9MS0tLfJnBEaS4uHj9+vVWVlYIIW1t7bCwMAUFhbt375INGhsbKyoqyKKKigrfHjsj
a1NRUTE0NBTvZDsijO2/
fmDiwGazmUzmwYMH4+LisPAaJisrKzIy8vTp07jN8ePHyfV8WO2Nw+HExsZmZWUhhBoaGrA6UV5e3t69e6O
jo8k03iHZaWlpOXz4sDj73EtMUVHRlStX+JcD0+m//
PKLoaFhRkZGeHg4Wa+goMD3n0zY46qvr4+KiuLxeOXl5REREefOneNbEfDq1aszZ86EhYVhXS7RzJw5E2f7
YXR1defPn08dAPX09CwsLMRvxxwO5+LFizt27JCqTScnJzabnZ6ePqjzYkF9mZyw/
WtAhiAx+tcPHjyYM2dOWlpac3Pz0aNH1dXVqb1dMdXeREvGiW+HEEPIjkTi/
vWqVaucnJz4mllZWREE8ejRI3V1dRqNlpWVhetjY2Op+18Le1yDqgUK1KwbEjo6OtSeflNTE97WIiQkxMXF
Bas6SdtmYGCgtbU1tQb2vwbGKoPGRy6Xa2pqSgroEQTh4+OjrKxcUVGBi+KrvYmQjBuSnUGF7Egkjo/
Gxsa4E00Fx0fiz5UI5FwNNT6KflwiJPVEaNaJya1bt/T09NhsNrWyubnZ0NAQIWRvb9/
U1CS+NYltRkVF0el0vBQNA+OPwLjl+vXr1dXVeL0QZvHixT09PXFxceKczidAxycZR6fT8/
PzJbCzbt06atLoyNLT01NTU6Orqyusgaen5759+9rb2z08PMiVoBjRj2ugpB65OSKpWRccHBwcHExq1onpc
39//4EDBy5dusSXjhYXF7do0SI/P7+CggJbW9sh7cUomU0Gg9HX1ye+5yIY2/
mPwESgsrISIUT9hTg6OiKEyJXpohGhZiS+ZJxoOyNOW1tbf3+/
6Hm5sLCwhw8fZmVl+fr6LlmyhKwf0uOiSuqJrzEokJ07d4aGhlJzMxFC8fHxTCbz/
v37dDrdwcEhKCgoODgYj+FKzya+94aGBnNzc8nuhQTeHwF557333kMIkenTCCEDAwMlJSUxE6FFxDUsGYdX
wQ/Hzoijo6OjqanJ92I40J/ExERTU9OMjIyoqCiyXuLHRWrWSeDwyZMnra2tV6xYwVd/
9uxZV1dXLIvn5+cXEBCQnZ3NYrGkahMLtQhbdTYkID4C8o6trS1CiNoLLi8v7+3tJSV1JVZ7o0rGDceONLC
wsGhubqbWEATx7t07ao2GhkZGRgaDwaC+Gw76uIQhsWbdxYsXCYIgteURQrdu3cIfysrKqJHL3d29p6dHnH
n/4dhsbGyk0WizZs0a9CqDAvERkHfmzp27adOm/
Px8cpjp9u3bxsbGZJrbkNTehEnGDcnOoEJ2w8fR0fHRo0fUmsbGxpcvX/
JFcBMTk6SkJGpyj+jHJUJST4RmHUIoMDBw6dKlA0PbzZs3f/
jhh97e3ujo6Ojo6KioqKCgILz1E0LIw8Pj4sWLZApRYWGhlZWVsbGx9GwihGpra11cXPhECSSEOlkD89fA6
IPEyO/p6uoKDg62sLBISEg4ffr0smXL6urqyKPiq72JkIwbkh0RQnZ8SDx/
3dbWNm3atKdPn+LihQsXPv30U4SQs7NzTk4O3+kRERHU/
B5hj2tQST2BmnUYPF989OhR6nWLi4sH7qs+adIkUhyvs7PT39/
f0tIyMjJyy5YtK1asqKmpkapNLperpaV148YNqk3I7wHGKuLERwyLxbpz5059fb3Ao+KovQ0qGSemHUJsIb
vhrC+MiYkh95UclNevX/
PViH5cIhCoWdfd3c1kMjMzM4dqjSCIzs7OysrKtra2UbCZkpLi7u7OVwn5PcD4h8FgLFy4UE9PT+BREWpvA
xNx9PX1hSnRiWlHGkJ2fGvvAgICWltbS0tLxTl32rRpfDWiH5cIDAwMZsyYMdC3goICnFQ/
VFRVVc3MzAZOEI24zerq6qSkpOTkZL7GEo8dQ34PMIGQQxU7jJKSkoaGxpYtW+zt7W1sbJycnBBCCgoKCQk
J27dvDwgIsLGxka2HRUVFhw4dIjdok0ObL168OHz48JkzZ8i8qPLy8uvXr9fV1XV0dEg2HAnxEZgoJCUlZW
dnEwSxe/fugIAAyeSTpcSaNWsE7nGooqJy8uTJIeVUSwkcsuXZprKyckJCAjUNy9LS0tLSEiH0448/
SmYT4iMwUVi+fPmyZcvwZz6NdDlnYG8XGIiI5UYSA/
ERmChIsO0EMMGB+RkAAADBQHwEAAAQDMRHAAAAwQgYf0xJSRl9P4CJDFVMYZyBbw1+U2OChoYG/
nRRarI4zvUHAACYmPCtn6ERlF1+AEC20Gg0JpMpMBMQAEYfGH8EAAAQDMRHAAAAwUB8BAAAEAzERwAAAMFA
fAQAABAMxEcAAADBQHwEAAAQDMRHAAAAwUB8BAAAEAzERwAAAMFAfAQAABAMxEcAAADBQHwEAAAQDMRHAAA
AwUB8BAAAEAzERwAAAMFAfAQAABAMxEcAAADBQHwEAAAQDMRHAAAAwUB8BAAAEAzERwAAAMFAfAQAABAMxE
cAAADBQHwEAAAQDMRHAAAAwUB8BAAAEAzERwAAAMFAfAQAABAMxEcAAADBQHwEAAAQDMRHAAAAwUB8BAAAE
Axd1g4AE5pTp061tbVRazIzM58/f04WN2/
ePG3atFH3CwAQQohGEISsfQAmLlu3bo2NjVVRURl4qLe3d+rUqU1NTXQ6/
BcHZAP0rwFZsm7dOoQQVxCKioo+Pj4QHAEZAu+PgCwhCOLDDz9sbGwUePTu3bv29vaj7BIAkMD7IyBLaDTa
+vXrlZWVBx6aPn26nZ3d6LsEACQQHwEZs27dup6eHr5KZWXlTZs20Wg0mbgEABjoXwOyx9jY+OnTp3yVZWV
lc+bMkYk/
AICB90dA9mzYsEFJSYlaY2RkBMERkDkQHwHZs2HDhr6+PrKopKS0efNmGfoDABjoXwNywccff1xWVob/
Gmk02rNnz2bNmiVrp4CJDrw/
AnKBr6+voqIiQohGo82fPx+CIyAPQHwE5IJ169bxeDyEkKKioq+vr6zdAQCEID4CcoKurq6DgwONRuPxeKt
Xr5a1OwCAEMRHQH7YuHEjQRCfffaZjo6OrH0BAITkdn4GEoMBYELBZDLXrFkjay/4kd/F/
zt27IC1t7KloKAgMjKSyWSO2hWPHTsWGBi
opqY2apdDCIWEhIzO5QBheHt7y9oFwchvfLS3t5fD/ycTjcjIyNH8Fj755JPp06eP2uUuXLiAEII/
M5kjt/
ERxh8BOWI0gyMADArERwAAAMFAfAQAABAMxEcAAADBQHwEAAAQjPzOXwNjlJqamvDw8LCwMD09PVn7MsL09
fUVFRVxOJzW1laEkKmpqbW1NXmUxWJdu3aNLC5ZsmTq1Kmj7CGbzT5//
vzz58+NjIx8fHxUVVXJQxwOJyUlpba21s7OztnZmU9QbgRtlpSUaGlpGRgYjOytyQZCLkEIMZlMWXsx0cGZ
j0M9CyfNXL16VRoujSxeXl5eXl5iNmaxWIcOHero6OBwOAcOHEAIMRiMx48fkw14PF5xcfGcOXPMzc1zc3N
5PJ50vBZKdXW1jo6OsbEx3q/
C0NCwsbGRPGRkZHTlyhUc7GbMmHHr1i0p2ezt7d26dauY9jFy+3uH+AgIRbL4SBDEmzdvRtwZPs6ePTt8I+
LHx4aGBjc3NxaLRdbgeGFmZtbR0UFtid+dh++bBLi6uj58+JAgiObm5i1btiCE/Pz8yEP+/
v5ky02bNjk6OkrPZl9fn6urKxasEwe5/b3D+CMw8rz//
vtStZ+Tk7N3716pXoKP0NDQlStXMhgMssbIyMjFxaWqqsrX15egLNLV0tLS1NQcTd8wxcXF69evt7KyQghp
a2uHhYUpKCjcvXsXH21sbKyoqCAbq6iocLlc6dlUVFQMDQ0NDAwcoZuTGRAfgRGGx+Pl5ubev38fF+vr66O
iong8Xnl5eURExLlz57COGUKooaHhxIkTBEHk5eXt3bs3Ojq6q6sLH8rKyoqMjDx9+jRCiM1mHz9+nFzpmJ
ub6+HhweFwYmNjs7KyEEItLS2HDx9+/
fq1lO6oqKjoypUrXl5e1Eo6nf7LL78YGhpmZGSEh4eT9QoKCgoK//
ezYrPZTCbz4MGDcXFx9fX1VAsingxC6NWrV2fOnAkLC/vtt9/EcXLmzJk+Pj5kUVdXd/
78+eQAqKenZzGndTIAACAASURBVGFhYWJiIkKIw+FcvHhxx44dUrXp5OTEZrPT09PFcV5+kfULrGCQvL5vT
ygk6F9XVFTgOPLTTz8RBHHp0iVtbW2E0LFjxzZv3rx8+XKE0KFDhwiCSExMnDp16uTJk7du3ern57d06VKE
kI2NTU9PDzZlYWGhp6eHP3d0dGhoaNjb2xMEUVpa6uDgoK2tnZubW1paShDEqVOnEEI//
vjjUG9QzP71qlWrnJyc+CqtrKwIgnj06JG6ujqNRsvKysL1sbGx0dHR+PODBw/
mzJmTlpbW3Nx89OhRdXV1clhAxJMhCCInJycgIKCkpCQlJUVdXX3btm1DvTWCIHR0dMieflNTk4mJCUIoJC
TExcUlPT1dAoNDtRkYGGhtbS2OWbn9vUN8BIQi2fhjWVkZGR8JgtizZw9C6ObNm7g4b968+fPn488bNmyg0
Wjl5eW4uH//foRQTEwMLnp5eZHxEZ+I4yNBEB4eHvr6+uQhDodz/
vx5vnFAcRAzPhobG+NONBUcHwmCSEtLo9Fo5FwNGR+5XK6pqemBAwfIU3x8fJSVlSsqKnBR2JNhs9mzZ8/
mcDi43t/fHyFUUFAwpFu7deuWnp4em80ma5qbmw0NDRFC9vb2TU1NQ7Immc2oqCg6nc7lcge1LLe/
d+hfAyOMiooKtTh58mSEkKmpKS6am5vX1dXhz2pqanQ63cLCAhf37NlDp9Pz8/
PFuQpVAU9NTW3dunVTpkwZvvMD6enpqamp0dXVFdbA09Nz37597e3tHh4ebDabrL9+/
Xp1dbWdnR1Zs3jx4p6enri4OFwU9mSSk5O7urq+++674ODg4ODgxsZGQ0PDgfvfiqC/v//
AgQOXLl1SV1cnK+Pi4hYtWuTn51dQUGBra0t+C9KzyWAw+vr6huS5vAH5j8CooqioSAiRHFVVVdXT03vz5o
04dkZNIbStra2/vx/HMmGEhYU9fPgwKyvL19d3yZIluLKyshIhRI0mjo6OCKGqqiqBRsgnU1FRoaure/
z4cYl93rlzZ2hoKDU3Mz4+nslk3r9/
n06nOzg4BAUFBQcH49Fb6dnE997Q0GBubi7xvcgWeH8E5AUul9vU1DR79mxxGo9afNTR0dHU1KS+GAp0JjE
x0dTUNCMjIyoqCle+9957CKGCggKymYGBgZKS0qBJ44qKio8fP+7t7ZXM4ZMnT1pbW69YsYJaefbsWVdXVz
qdjhDy8/MLCAjIzs5msVhStfn27VuEkL6+vmQ3Ig9AfATkhcLCwu7ubjxTgRCi0+nd3d0CW9JotP7+/
lFzzMLCorm5mVpDEMS7d+
+oNRoaGhkZGQwGg3w9tLW1RQhRhwvKy8t7e3sHVX2eO3duZ2dnTEwMWcNisU6cOCGOqxcvXiQIgrrB2a1bt
xBCZWVl1Mjl7u7e09Mj5oy/
xDYbGxtpNNqY3ooS4iMwwuAkuJaWFlzs6OhACPX09OBiS0sLHrDHxb6+PjKgpKamLlq0iIyPLi4uLS0t8fH
xnZ2d8fHxra2tNTU1+JVEV1e3qamppqbm2bNnnZ2dxcXFCxYsyMvLk9IdOTo6Pnr0iFrT2Nj48uVLvvBtYm
KSlJREJvfMnTt306ZN+fn55Kjc7du3jY2NyaxAYU/
G29tbX19/586dR44cqaqqSklJCQwM3LhxI24WGBi4dOlSgaHt5s2bP/
zwQ29vb3R0dHR0dFRUVFBQEJ4u8/DwuHjxIpk/
VFhYaGVlZWxsLD2bCKHa2loXF5dJkyaJ85DlFBnODYkAyet81oRCgvnrwsJCnN9jaWl5+fLlvLw83F/
esmVLY2NjcnKyhoYGQujgwYO9vb1BQUGKiorffPPNrl271q5d6+bmRp2DZrPZeHLDzMwsPT3d09Nz8eLFp0
6dIggiNzeXTqdramrinB48g4wPDQkx56/
b2tqmTZv29OlTXLxw4cKnn36KEHJ2ds7JyeFrHBERQeb3dHV1BQcHW1hYJCQknD59etmyZXV1dfiQ6CdTWV
n50Ucf4V+ohYVFSUkJaR/PFx89epTvusXFxQP3pZg0aVJraytBEJ2dnf7+/
paWlpGRkVu2bFmxYkVNTY1UbXK5XC0trRs3bgz6eAk5/
r1DfASEIvH6QjEJCgpSUlIiCKKurq69vV1gm+bmZvyhq6uLWs9isajBVNjpohF/fWFMTExwcLCYZl+/
fk0tslisO3fu1NfXD9W92traFy9e8FV2d3czmczMzMyhWiMIorOzs7Kysq2tbRRspqSkuLu7i2lEbn/
v0L8GZI+
+vj5+exoITqJGCPF10xgMBjWhR9jpI0VAQEBra2tpaak4jadNm0YtMhiMhQsXSqBmZGBgMGPGDL5KLpdbUF
CA0+mHiqqqqpmZ2cAJohG3WV1dnZSUlJycLIFBuWLM5/
dUVlZeu3btyZMndnZ2GhoadDrd3d1d1k79B9nZ2VgOSyDOzs4PHz68fPmys7OzZH+gY5d379719fVxOBxqE
ox8oqCgkJCQsH379oCAABsbGxl6UlRUdOjQITxrLJ82X7x4cfjw4TNnzohOihoTjO33x3v37vn5+f31r39d
sGDBt99+6+XlVVJSImun+LG2ti4sLPTx8dm5cyeXy+3v7+/v72ez2X/
88cfmzZuvXr2akpISGRn56tUrWXs6qiQlJWVnZxMEsXv37gcPHsjancFRUVE5efLkBx98IFs3nJycRjzujK
xNZWXlhIQEnN401hnb748RERGOjo50Ot3f33/JkiXid2F+/vlnar4CX3Fk0dbW9vX1/
fHHH42MjL766ivqIUVFRUtLy48//vjkyZNiWhtNz6XK8uXLly1bhj/
zLbmRZwZ2eAE+RKw1GnOM7ffH7OxsUktKfFEpPnWsURDLErb0bfv27TNnzsT9GnESnkffc+nBYDA0/2QcdM
SAcclYfX98/vz57du3uVxudXV1amoqQkhgLvGTJ08KCwvLysocHBxWrlyJ/
lTHotFosbGx06dPV1dXpxbd3NwQQq9evbp+/XpDQ4ODg8OXX35JWquvr09PT9+
+fXtlZWVmZuaMGTPWr1+P891aWlpOnTrl5+cnfv8rKSlp/
fr1CKGmpqZB3R6O5yLcBgBABGM1PqqpqWGxUm1t7Q8//
BAhREoHkkRGRmZmZubk5Lx48eLzzz9vamr6+uuvp06damVl9eTJExMTE/zKyVfMzc1NTk7+
+uuvp0yZ4uHh4evri1fCZmVl+fv7Y2XssrKyN2/efP/
99w0NDfgNLiMj4+9//7u6uvr27dvF8b+zszM8PBzHR3HcRghJ5rlotwEAEIWM84uEgMTIh3r58iWiqP5xOB
yEEFVOysjIiMxZ8/DwWLp0KfmZqo5FLYqWlhIh1SVaYuvx48cIIU1NzS++
+OKLL7745JNPNDQ0NDQ08FEswnz69GnRbkvsuQi3RSPt/EeZM6T9ZwDpIc7vXSaM1fdHccjLy8PZ/
5WVlfX19Xg5F4ZvsI8sktJSuEhKS+GFHAMFqX799Vf8GUtsifbHysqK1IJua2vD63OH5LZknotwWxxSUlLE
bzy2aGhoQOP6BoFhMp7j44cffpidnX358uVFixYZGhoWFxeTh4RFmSFJS4mQ6hqU9957T1gPV4TbaCQ8H6r
b3t7e4jcei4z7GwQkZjzHx/3799+6devXX3+dPHlyWloa9ZCwKENKS4m/O7DE+Pn5CawX4TaShecS/
w+Qf1avXo0QwhvSAjJk1NTqhsq4ncR8/
vx5eHj4hg0bcO+SuvMRnzoWtTgcaakRQYTbSL49B4Dxxxh+f8QJPeS0NR6nI3eYxNM1ycnJa9euffjwYX5+
PpfLxdMXpDoWQRA6OjrU4vLly7G0FBYifPToUWpqKimIL0yQikajFRcXf/311//85z8/+
+yzga5imbza2lqBN9Le3k46LMLtKVOmSOa5CLeH+RUAwDhHRvNCg4AGm8+qqanBO0+amZlduXKlqakJL00x
MTEhJ2r9/
PzodLqRkVFMTExqaqqysvIXX3zR2trKp47FVxQmLSVakEqExFZaWtqiRYuwwcDAwEePHlGP3rt3b/
HixQgha2vrq1evinB7oKvieC7abdHfAsxfA6PDoL93WUEj5HJ0iUajMZnMNWvWDNMOm80m165wuVxyHVt7e
7uCggJ5iK+IEHrx4gWNRhvSYjK8B+kwHRbt9kBXR8RzYaSkpHh7e8vnX8iIAOOPcsJI/
d5HnDHcvxYHauCgRhmcWy6siBAyMDAY6rVGUGJLmNtIOp4DACCQcTs/
AwAAMEzG+fsjAIwOfX19RUVFHA4Ha32amppSt0JlsVjXrl0ji0uWLBl0F8OR5f79+wP3obazs8ObZ3E4nJS
UlNraWjs7O2dnZ2EpYq2trSdPnsR5uyUlJVpaWuO/
syLrAVDBIHkdr51QwPyMmLBYrEOHDnV0dHA4nAMHDiCEGAzG48ePyQY8Hq+4uHjOnDnm5ua5ubk8Hm/
4FxUfHo+Hd5jho7i4mCCI6upqIyOjK1eusNns8+fPz5gx49atWwLteHh4fPDBB/hzb2/
v1q1bhbUcKnL7e4f+NSBLfv75Z7myIwEvX77cuHHjtm3bpkyZoqam9t///d/
Kysrt7e0eHh7krtk0Gm3evHne3t5r16797LPPRjmz6ubNm8uWLXv+/
Dn3T7Kzs2fOnDlv3jyEUEhIyKJFi5YuXaqurr5u3brPP//8+++/H2jk1KlTWCgAQ6fTo6Oj//GPf/
Dt7DjOgPgIyIyR0q+UrQ5maGjoypUrqRNlRkZGLi4uVVVVvr6+BGX2X0tLS3yV0hFEXV392LFjM2fOVP6Tz
MzMVatW4aONjY3UwKeiokImEZM8efKktLSU3HoXo6ioGBoaSm5XOy6B+AiMAGw2m8lkHjx4MC4urr6+Hldm
ZWVFRkaePn0aNzh+/HhkZCTus6M/5Sw5HE5sbGxWVhZCqKGh4cSJEwRB5OXl7d27Nzo6Gif/
D9VOS0vL4cOHBe7mPOIUFRVduXIFb2lLQqfTf/
nlF0NDw4yMjPDwcLJeQUGBT3ZT4HNDCNXX10dFRfF4vPLy8oiIiHPnzlFXUr169erMmTNhYWGk3Ilo7O3tq
dfl8Xh4v1xc9PT0LCwsTExMRAhxOJyLFy/u2LGDenpvb+/333//ww8/
DLTs5OTEZrPT09PFcWNMIusOvmCQvI5HTCjEHH988ODBnDlz0tLSmpubjx49qq6ufvbsWXzIwsJCT08Pf8b
5ofb29rhYWlrq4OCgra2dm5tbWlqamJg4derUyZMnb9261c/
PD29VZmNj09PTMyQ7BEGcOnUKUYTvRDD88cdVq1Y5OTnxVVpZWREE8ejRI3V1dRqNlpWVhetjY2PJrbEJ4c
/t0qVLeNfGY8eObd68Gb+1HTp0CJ+Vk5MTEBBQUlKSkpKirq6+bdu2ofqcn58/
ffp0cgy0qanJxMQEIRQSEuLi4pKens7X/vvvv79z5w5BECEhIeT4I0lgYKC1tfVQfeBDbn/
vEB8BoYgTH7lcrqmpKVV208fHR1lZuaKigiAILy8vMq4RBDFv3jwyrhED5Cw3bNhAo9HKy8txcf/+/
QihmJiYodoRrcVJZfjx0djYGHeiqeD4SBAEXlVFztVQ46Po5yZMslO0PqmYbN+
+nW8v7+bmZjyBY29v39TURD2Ul5d38OBB/FlgfIyKiqLT6XjFqsTI7e8d+tfAsLh+/
Xp1dTXWx8QsXry4p6eHXLQuGupMhZqaGp1Ot7CwwMU9e/bQ6fT8/
HwJ7Kxbt07Ynj8jSE9PT01NjYjtqDw9Pfft28c3V4MR/
dwGSnbW1dUhispncHBwcHAwqfIpvs8EQaSlpZGDj5i4uLhFixb5+fkVFBTY2triayGEWCxWdHT0vn37RBhk
MBh9fX1D8mEMAfmPwLCorKxECFE3sHZ0dEQIVVVViXO6iJlcVVVVPT29N2/
eDNOO9Ghra+vv7xe9uVhYWNjDhw+zsrJ8fX2XLFlC1g/
puZGSnUPSJxXInTt3enp6Pv30U7ImPj6eyWTev3+fTqc7ODgEBQUFBwfjkdyQkBAbG5tLly7hlv/
+97+7u7vT09OxEj6uxLfQ0NBgbm4usVdyC8RHYFjgbY4LCgrwzxshZGBgoKSkJGb+s4i4xuVym5qasHjHcO
xIDx0dHU1NTb4XQz5oNFpiYqKtrW1GRsbjx4+Dg4NxvWTPbfgqn6mpqe7u7oqKimTN2bNnXV1d8Saafn5+f
/zxR1xcHIvF0tTUfPPmzY0bN8iW7e3t7969+/bbby0sLMj4+PbtW4SQvr6+ZP7IOdC/BoYF3iWC2gsuLy/
v7e21t7dHCNHpdIH7SmL45Cz5KCwsxFptw7QjVSwsLJqbm6k1BEG8e/
eOWqOhoZGRkcFgMKjvhqKfmzCGqfJJEERqaipf57qsrAzr72Hc3d17enrw7P/
ly5cbKHz99dfa2toNDQ3U/
TkaGxtpNBpehzP+gPgIDIu5c+du2rQpPz+fHLS6ffu2sbExTotzcXFpaWmJj4/
v7OyMj49vbW2tqanBbxwIIVK/
8tmzZ52dnQihvr4+MoikpqYuWrQIx8ch2SkuLl6wYEFeXt4o3L6joyNfgnRjY+PLly/
5ormJiUlSUhI1yUb0cxMm2ent7Y1VPo8cOVJVVZWSkhIYGLhx40bSbGBg4NKlS4XlNhUUFHA4HOqWxQghDw
+PixcvkvlDhYWFVlZWxsbGYj6B2tpaFxeXSZMmidl+jCHT2SGhIHmdz5pQiJnf09XVFRwcbGFhkZCQcPr06
WXLltXV1eFDbDYbT0GYmZnhnLvFixeTKpl8+pVBQUGKiorffPPNrl271q5d6+bmRs5BD8mOCC1OPoY/
f93W1jZt2rSnT5/i4oULF/DQnrOzc05ODl/
jiIgIan6PsOcmWrJTmD4pBk9DHz16VKC3O3bs2LBhA19lZ2env7+/paVlZGTkli1bVqxYgRWXB7Jr1y6+
+Wsul6ulpXXjxo3Bn5RI5Pb3DvEREMqQ1l+zWKw7d+7U19cPPNTc3Iw/
dHV1DTyLDIJBQUFKSkoEQdTV1bW3t0tshyAIgacPZETWX8fExPCly4jg9evXfDUinpsIamtrX7x4MbC+u7u
byWRmZmYKPKumpqalpUXgoc7OzsrKyra2tiG5kZKS4u7uPqRTBCK3v3foXwMjA4PBWLhwoZ6e3sBDONsZIT
SwF8ZgMAYm4ujr6wsU0xTfzghqcQ5KQEBAa2traWmpOI2nTZvGVyPiuYnAwMBAoAQyl8stKCjA2fUDmTVrl
paWlsBDqqqqZmZmQ1IVqq6uTkpKSk5OFv+UMQfER0BeePfuXV9fH96BZwyhoKCQkJDw008/3b9/
X9a+oKKiokOHDuHJaKny4sWLw4cPnzlzRnR601gH4iMgFyQlJWVnZxMEsXv37gcPHsjanaGhoqJy8uTJDz7
4QNaOICcnp9EJWMrKygkJCThLaRwD+Y+AXLB8+fJly5bhz3xbSowVRmTPn7GCiFVD4wmIj4BcMHAjHQCQOd
C/BgAAEAzERwAAAMFAfAQAABCM/I4/
Hjt2DDZuly0NDQ0IodWrV8vaEWlRWFiIxvUNAsOERlD2x5Af4E92YvLbb79ZWlrKQ6IMMMqEhoaK1uaQCXI
aH4GJCY1GYzKZa9askbUjAIAQjD8CAAAIA+IjAACAYCA+AgAACAbiIwAAgGAgPgIAAAgG4iMAAIBgID4CAA
AIBuIjAACAYCA+AgAACAbiIwAAgGAgPgIAAAgG4iMAAIBgID4CAAAIBuIjAACAYCA+AgAACAbiIwAAgGAgP
gIAAAgG4iMAAIBgID4CAAAIBuIjAACAYCA+AgAACAbiIwAAgGAgPgIAAAgG4iMAAIBgID4CAAAIBuIjAACA
YCA+AgAACAbiIwAAgGAgPgIAAAgG4iMAAIBgID4CAAAIBuIjAACAYCA+AgAACIZGEISsfQAmLr6+vqWlpWS
xvr5eS0tLVVUVF5WUlC5fvjx9+nQZeQdMdOiydgCY0JiYmJw7d45a097eTn42NzeH4AjIEOhfA7Jkw4YNNB
pN4CElJaWvvvpqdN0BgP8A+teAjPnLX/5SUlIy8O+QRqPV1NTMnDlTFk4BAELw/
gjIHF9fX0VFRb5KBQUFOzs7CI6AbIH4CMiYtWvX8ng8vkoFBQVfX1+Z+AMAJBAfARkzbdq0RYsW8b1CEgTh
6ekpK5cAAAPxEZA9GzdupI4/KioqOjk5TZs2TYYuAQCC+AjIA6tWraLT/y/
VjCCIDRs2yNAfAMBAfARkj4aGhqurKxki6XT6ihUrZOsSACCIj4CcsGHDhv7+foQQnU53d3fX0NCQtUcAAP
ERkA+WL1+OlxX29/
evX79e1u4AAEIQHwE5YdKkSatWrUIIqampLVmyRNbuAABC42D9dUpKiqxdAEYGPT09hJCNjU1mZqasfQFGh
oULF+KvdYwy5tcXClu9CwCAzGEymWvWrJG1F5Iz5t8f0dj/
DsYKq1evRghduHBBepeIiIjYs2fPwOWGowONRoO/
pRFkHLy7wPgjIEfs3r1bVsERAAYC8RGQI6hZ4gAgcyA+AgAACAbiIwAAgGAgPgIAAAgG4iMAAIBgYDgckCI
1NTXh4eFhYWFjOklYIH19fUVFRQsXLszOzm5tbUUImZqaWltbkw1YLNa1a9fI4pIlS6ZOnTpq7t2/f//
p06d8lXZ2drNmzcKfORxOSkpKbW2tnZ2ds7OzkpLSQCOtra0nT57cu3cvQqikpERLS8vAwEDanssXxBgHIc
RkMmXtxYTAy8vLy8trSKfgZMmrV69KyaWRRfy/
JRaLdejQoY6ODoIgOBzOgQMHEEIMBuPx48dkGx6PV1xcPGfOHHNz89zcXB6PJy2/
B8Dj8QwNDQf+2IuLi3GD6upqIyOjK1eusNns8+fPz5gx49atWwPteHh4fPDBB/hzb2/
v1q1bBTYTxjj4bUJ8BMRFgvhIEMSbN2+k4QwfZ8+eHb4RMf+WGhoa3NzcWCwWtVJZWRkhZG
ZmhoMmCX59Hr5vQyI7O/vbb799/
vw590+ys7NnzpxJNnB1dfX39yeLmzZtcnR05DNy8uRJY2NjMj4SBNHX1+fq6lpWViamG+Pgtwnjj4B0ef/
996V9iZycHNwHHB1CQ0NXrlzJYDColUZGRi4uLlVVVb6+vgRlza6Wlpampuao+YZRV1c/
duzYzJkzlf8kMzMTy39gGhsbKyoqyKKKigqXy6VaePLkSWlp6fLly6mVioqKoaGhgYGB0vZffoD4CEgRHo+
Xm5t7//59sqa+vj4qKorH45WXl0dERJw7d47cnKuhoeHEiRMEQeTl5e3duzc6OrqrqwshlJWVFRkZefr0aY
QQm80+fvx4ZGQkk8nEZ+Xm5np4eHA4nNjY2KysLIRQS0vL4cOHX79+LY07KioqunLlipeXF189nU7/5ZdfD
A0NMzIywsPDyXoFBQUFhf/
7lbHZbCaTefDgwbi4uPr6enEeC+bVq1dnzpwJCwv77bffBnXS3t6eelEej5eenk7dz8fT07OwsDAxMREhxO
FwLl68uGPHDvJob2/v999//8MPPwy07OTkxGaz09PTB/VhnCDrF9jhgsb+O/
xYYaj964qKChxHfvrpJ1xz6dIlbW1thNCxY8c2b96MX08OHTpEEERiYuLUqVMnT568detWPz+/
pUuXIoRsbGx6enoIgrCwsNDT08NGOjo6NDQ07O3tcbG0tNTBwUFbWzs3N7e0tJQgiFOnTiGEfvzxx6HeoDh
/
S6tWrXJychpYb2VlRRDEo0eP1NXVaTRaVlYWro+NjY2OjsafHzx4MGfOnLS0tObm5qNHj6qrq+NhARGPBZO
TkxMQEFBSUpKSkqKurr5t27Yh3Vd+fv706dOpA6BNTU0mJiYIoZCQEBcXl/T0dGr777///
s6dOwRBhISEUPvXmMDAQGtra3GuOw5+mxAfAXGRYPyxrKyMGh8JgtizZw9C6ObNm7g4b968+fPn488bNmyg
0Wjl5eW4uH//foRQTEwMvjQZH/
FZZHwkCMLDw0NfX58scjic8+fP840DioM4f0vGxsa4B80Hjo8EQaSlpdFoNHKuhoyPXC7X1NT0wIED5Ck+P
j7KysoVFRWEyMfCZrNnz57N4XBw0d/fHyFUUFAg/
n1t3749ODiYr7K5uRnP4djb2zc1NZH1eXl5Bw8exJ8FxseoqCg6nc7lcge97jj4bUL/
GpAiKioqfDWTJ09GCJmamuKiubl5XV0d/
qympkan0y0sLHBxz549dDo9Pz9fnAtRpWLU1NTWrVs3ZcqUYTo/
kJ6enpqaGl1dXRFtPD099+3b197e7uHhwWazyfrr169XV1fb2dmRNYsXL+7p6YmLi0MiH0tycnJXV9d3330
XHBwcHBzc2NhoaGg4MHdHGARBpKWlUQcfMXFxcYsWLfLz8ysoKLC1tcWXY7FY0dHR+/
btE2GQwWD09fWJ78CYBvIfAVmiqKhICFEgVVVV1dPTe/PmjTh2RkdKq62trb+/
H8cyEYSFhT18+DArK8vX15fUQq+srEQIqaurk80cHR0RQlVVVQMtUB9LRUWFrq7u8ePHJfP5zp07PT09n37
6KbUyPj6eyWTev3+fTqc7ODgEBQUFBwdnZWWFhITY2NhcunQJN/v3v//
d3d2dnp6uqan5xRdf4Ep8Cw0NDebm5pK5NIaA+AjIKVwut6mpafHixeI0Hp34qKOjo6mpSX0rFOZMYmKira
1tRkbG48ePg4ODEULvvfceQqigoACHRYSQgYGBkpLSoEnjioqKjx8/7u3tFZjCPSipqanu7u58qnFnz54lN
4z08/P7448/4uLiWCzWmzdvbty4QTZrb29/9+7dt99+a2FhQcbHt2/
fIoT09fUlcGbMAf1rQE4pLCzs7u7GkxV0Or27u1tYSxqNhvc+HAUsLCyam5v5KgmCePfuHbVGQ0MjIyODwW
CQr4e2trYIIepwQXl5eW9veSLytwAAIABJREFUr729vegrzp07t7OzMyYmhqxhsVgnTpwQx1uCIFJTUwd2r
svKylgsFll0d3fv6el5/fr15cuXGyh8/fXX2traDQ0Nv/
76K9m4sbGRRqOR63DGNxAfASmCs+paWlrImo6ODoRQT08PLra0tOCRflzs6+sjA0pqauqiRYtwfHRxcWlpa
YmPj+/
s7IyPj29tba2pqcEvMgghXV3dpqammpqaZ8+edXZ2FhcXL1iwIC8vTxp35Ojo+OjRI77KxsbGly9f8kVwEx
OTpKQkMs9m7ty5mzZtys/PJwcWb9+
+bWxsjNMJRTwWb29vfX39nTt3HjlypKqqKiUlJTAwcOPGjbhlYGDg0qVLhSUzFRQUcDicL7/8kq/
ew8Pj4sWLZApRYWGhlZWVsbGxOE+gtrbWxcVl0qRJ4jQe88hwbmhEQGN/
jmysMNT568LCQpzfY2lpefnyZYIg8vLyZs+ejRDasmVLY2NjcnIy3uf64MGDvb29QUFBioqK33zzza5du9a
uXevm5kbOQbPZbDyzYWZmhlP5Fi9efOrUKXw0NzeXTqdramrinB48g0weFR9x/
pba2tqmTZv29OlTsubChQt4dM/
Z2TknJ4evfUREBJnf09XVFRwcbGFhkZCQcPr06WXLltXV1Q36WAiCqKys/Oijj/
AP1sLCoqSkhLSP56CPHj0q0NsdO3Zs2LBhYH1nZ6e/
v7+lpWVkZOSWLVtWrFhRU1MzsNmuXbv45q+5XK6WltaNGzdEPyXMOPhtQnwExEWy9YXiExQUpKSkRBBEXV1
de3v7wAbNzc34Q1dXF98hFotFTegRePqgiPm3FBMTMzBdRgSvX7+mFlks1p07d+rr64fqXm1t7YsXL/
gqu7u7mUxmZmamwFNqampaWlqEGezs7KysrGxraxPfh5SUFHd3dzEbj4PfJvSvAblDX18fv0DxgZOoEUIDO
3cMBoOa0CPw9JEiICCgtbW1tLRUzPbTpk2jFhkMhmS7nhoYGMyYMYOvksvlFhQU4HT6gcyaNUtLS0uYQVVV
VTMzM/
FVhaqrq5OSkpKTk8VsPw6YcPPXHA4nNzf39u3bApdPjT75+fkvX74ki0pKStra2tOnTxdzMGg88e7du76+P
g6HQ02CkUMUFBQSEhK2b98eEBBgY2MjW2eKiooOHTo0Cvv2vHjx4vDhw2fOnBk0vWk8MeHeH69fv/
7tt9/+8ssvsnbkf7Gysnr27JmPj89XX33V0dHx5s2brKwsb2/vWbNmff/
99729vbJ2cJRISkrKzs4mCGL37t0PHjyQtTuDoKKicvLkyQ8+
+EDWjiAnJ6fRCVjKysoJCQk4S2niMOHeH728vC5cuPDHH3/I2pH/RVNT86uvvtq/
f7+hoWFQUBCuJAgiLS3N39+/
qKgoLS1NGktB5I3ly5cvW7YMfx646kY+GdjbHceIXjU0Xplw8RENkFSROQMHy2g0mpeXV39//9q1ax0dHYu
KirC84DiGTy4MAOSBiRIf29raUlNTa2tr//
KXvxAEwbfc4tWrV9evX29oaHBwcCCTxerr69PT07dv315ZWZmZmTljxoz169fjwEoQxK1btx48eKCoqGhqa
urs7CzaVEtLy6lTp/z8/IbUI/
P29v7555+vXr1aVFT0ySefSOCnCFcFmgIA4D+Q6ez5CIDEyCGorq62sbG5e/
dub29vbGysiorKRx99RB4VKB4lWnLq73//O06vu3///
oIFC0SbIgZT3Gpvb0cImZmZDTwUFhZGXlcCP4W5KplelrTze2SOOH9LgPiMg+c5IeKjra3trl278Gcejzd7
9mwyPooQjxImOcXj8d5///3c3FxcHx4ePqgp0YpbIuIjFiJ1dXWVwE9hrkqslwXxERgS4+B5jv/
+dU5Ozr179/7rv/
4LF2k0mo2NDTlDSopH4SIpHmVnZzdQcgqvQqXRaCYmJt7e3idPnnR3d9+5c+egprDilgTOczgchJCampoEf
gpzVYSpQf0pLCxcvXq1BDcyVjh27BjeUwwA0EQYf3z48CFCyNLSkqyhDj6KLx5FlZyKjo5evXq1h4fHl19+
mZSUhEcVh6lDJZCSkhKEkK2trWR+CnRVGn4CwLhk/MdHvPL/
3r17VEUmMkRKJh718ccfl5SU7NmzJzY2dt68eY8ePXrvvfeGqUM1EIIgfv/9d0VFRWdn559//
lky4wNdHY6fdnZ24/
j1ikajhYSErFmzRtaOjBNGR3ROqshRmouUmDNnDkIoJydH4FEJxKO4XO65c+emTJly/
PjxK1euNDY24lHC4ehQCSQkJKS4uPjIkSNz586VzLhAV0fcTwAYt8h4/
HPYoMHGgHt7e01NTdXV1fHW5i9fvtTV1VVXV3/48GFvb293d7e+vr6ysvI///
nPyspKJpO5evVqPJHyt7/9DSFE6posW7ZsypQpPB6vq6tr4cKFeLcjHo+nra198eJFgiBEmPrjjz9sbGzIe
RI+8AgAdXvi58+fb9u2jUajbd++HddI4CdBEAJdFWFKNDA/
AwyJcfA8x398JAji+fPneJ3s7NmzfXx83NzcPvnkk59+
+gnLwAgUjxIhOcVms3V1ddeuXXvhwoWjR49Sd1wSpkMlQnHr0qVLn332GT7F3t7e2dl52bJl7u7uf/
vb3+7fv09tOVQ/
e3t7u7q6BLoqQi9LBBAfgSExDp4njRCy+8dYgUajMZlMccaM3rx5o6qqqqamJlAB4cWLFzQaTcwVY319fTw
er6mpSWB7gabwrqTiGBfNkPwU7epQTeGZ6/E9/
ijm3xIgDuPgeY7/+RkSUh1LoDyMgYGB+KawXIqwyCLQ1Egpbg3JTyTS1aGaAoCJxgSKjwAwgvT19RUVFS1c
uDA7O7u1tRUhZGpqam1tTTZgsVjXrl0ji0uWLBFfaXFEYLFYcXFxdXV1y5Yt+/LLL/
m26OJyuXjh6SeffGJra0s9KvBQSUmJlpbWRPufOv7nrwFgxGlvbz9y5AhOjXBwcKiurvbx8fn888+fPHlCt
mEwGCYmJocPHw4PD9fV1dXU1BxND9va2v7yl788fPiwvLzc1dV14cKF1KPNzc1mZmZ1dXV+fn4ZGRnu7u7k
BmfCDllZWf3jH/
8Qczvy8YOsB0CHCxr7Y8BjBWnPz5w9e1a2dsT8W2poaHBzc2OxWNRKLLBkZmbGlwkQHh4eFhYmmT/
D4aeffmptbcWf8Sr+27dv42J/f/8nn3yyYsUKXOzr6zMwMNi9e7foQ7jo6upaVlYmpg/
j4LcJ74+AXJCTk7N37175sSOC0NDQlStX8gmyGRkZubi4VFVV+fr6EpQ5Ty0trVF+c0QI9fT0LF68mNSy9f
X1RZQR8Pz8/
Nu3bwcEBOCioqLipk2boqOjOzs7RRzCxdDQULzh4gQB4iMw8rDZbCaTefDgwbi4uPr6elyZlZUVGRl5+vRp
3OD48eORkZFMJhMhlJub6+HhweFwYmNjs7KycPuGhoYTJ04QBJGXl7d3797o6Oiurq6h2mlpaTl8+LCw7U8
loKio6MqVK3hfRip0Ov2XX34xNDTMyMgIDw8n6/
nERgU+GYRQfX19VFQUj8crLy+PiIg4d+4cufkq5tWrV2fOnAkLC/
vtt98GdVJZWZm6P3VZWdny5cvxaABCCC9nIIsIIUtLy87OzqtXr4o4hItOTk5sNhs3mxDI+gV2uKCx/w4/
VhCzf/
3gwYM5c+akpaU1NzcfPXpUXV2d7PBaWFjo6enhzzjhyd7eniCI0tJSBwcHbW3t3Nzc0tJSgiASExOnTp06e
fLkrVu3+vn54f2nbGxsenp6hmRHtLIcH+L8La1atcrJyWlgvZWVFUEQjx49UldXp9FoWVlZuD42Npbc31XY
kxlUpE4yPTqCIHg8HpPJNDc3p26X6OrqihDC+2tj8F7h4eHhIg6RNYGBgdbW1uJcfRz8NiE+AuIiTnzkcrm
mpqbUnHkfHx9lZeWKigpsgYxrBEHMmzcPxzWCIDw8PPT19ammNmzYQKPRysvLcXH//
v0IoZiYmCHZEa0sx4c4f0vGxsa4B80Hjo/
En2sBGAzG48ePCUp8FP1kRIjUSaxHx+FwAgICVFVVEUKamppFRUWkcSxiQlJUVIQQCg4OFnGIrImKiqLT6d
QYKoxx8NuE/jUwkly/
fr26upoqlbZ48eKenp64uLhBz+WTM1BTU6PT6RYWFri4Z88eOp0uzvwp1Q5WlhupDXx6enpqampE78Ti6em
5b9++9vZ2Dw8PNptN1ot+MgNF6urq6vBnUo8uODg4ODiY1KMb1Fs1NbWTJ0+y2exjx46x2eyvv/4a1w/M/
8Uz1Do6OiIOkTUMBqOvr08cB8YBkP8IjCSVlZXoP3+Bjo6OCKGqqqpBzxUt96Kqqqqnp/
fmzZth2hkObW1t/
f39g+4XGBYW9vDhw6ysLF9f3yVLluDKIT0ZqkjdMPXoFBQUduzYcffu3bS0NC6Xq6Kioq+v39/fjz/
jNjiOm5ubV1dXCztEGsS30NDQQK0cr8D7IzCS4DnTgoICssbAwEBJSUmc1GjRcY3L5TY1NeHF5sOxMxx0dH
Q0NTWpb4XCHEhMTDQ1Nc3IyIiKisKVEj8ZUo9uOJ47Ozu/
9957OOqZmZkhhKizQy0tLQghc3NzEYfImrdv3yKEqGqB4xiIj8BIYmtrixCi9oLLy8t7e3vt7e0RQnQ6vbu
7W+CJNBqNTFEWSGFhYXd3N567GI6dYWJhYdHc3MxXSRDEu3fvqDUaGhoZGRkMBoN8PRT9ZEQwInp05eXlbm
5u+LO/v7+KisqdO3fIo8XFxR9//
PFHH30k4hBZ09jYSKPRqPPj4xiIj8BIMnfu3E2bNuXn55PDZ7dv3zY2NsZJcy4uLi0tLfHx8Z2dnfHx8a2t
rTU1Nfh9RFdXt6mpqaam5tmzZzjbDiHU19dHxpfU1NRFixbh+Ci+neLi4gULFuBJ2BHB0dHx0aNHfJWNjY0
vX77kC9kmJiZJSUlkco/
oJ4NVnHt6evChlpYWPAGCEPL29tbX19+5c+eRI0eqqqpSUlICAwM3btyIWwYGBi5dupQvgamrqysiIqK8vB
wXW1tbS0tLjx07hos6OjrffPPNkSNHsP3u7u6srKy4uDgFBQURh0jjtbW1Li4ukyZNGtZzHCvIdHZoBEBjf
45srCBmfk9XV1dwcLCFhUVCQsLp06eXLVtWV1eHD7HZbDxBYWZmlp6e7unpuXjxYiz7lpubS6fTNTU1yVyc
oKAgRUXFb775ZteuXWvXrnVzcyOnocW3I0JZbiDi/C21tbVNmzbt6dOnZM2FCxc+/
fRThJCzs3NOTg5f+4iICDK/R9iTES1SR4jUozM0NEQIHT16lHpRDodjbW2Nt1rav39/
VFQUm82mNuDxeLt3716+fPmPP/64d+/
en3/+WZxDBEFwuVwtLa0bN24M9iwJYlz8NiE+AuIypPWFLBbrzp071LQ7kubmZvwB629ST6Em4gQFBSkpKR
EEUVdX197eLrEdgecKRMy/
pZiYGGq+y6C8fv2azz1hT0Y0tbW1L1684Kvs7u5mMpmZmZkD2799+7azs1OEwb6+vqampiEdSklJcXd3F9P
hcfDbhP41IBUYDMbChQv19PQGHiKF5vj6aAwGQ2Aijr6+vkB1ODHtjJSyHElAQADusYrZftq0af+/
vXsPa+JaFwa+QgKooMEiCB5SKojcFBWLFsGqR8QLUChFUVRstWC3qI9F3MhWq+UB6S6eKh68IkpVqoBiNJW
6tQWkWGgsKIqAPorcFOQmmCAEQub7Y53ONw1hCLfc+v7+yqw1s7JmIq8zs9a8Q12kOTL0zM3Ne+apE4lEeX
l5eP68FAMDAzz5sTdMJhO/Wk7OqrKysuTk5AsXLvSn1+oN4iNQUW/fvhWLxfgNtypFS0srKSnp2LFjd+/
eVXZfEJ/P379/P87yOawqKytjYmJOnz7d5/
QmTQLxEaii5OTkmzdvEgQRHh5Ovqxcdejq6p48ebK3ky9FcnNzU0zA0tHRSUpKInNe/E3A/
HCgijw9PT08PPBncq6yqpH/
1RQagP6pIU0F8RGoIqnsYQAoBVxfAwCAbBAfAQBANoiPAAAgG8RHAACQjUFQ3pWhjoYvWQsAYJBSUlJWrFi
h7F4MnNqPX+MXjwDN4O/
vv23btj5T2gB1IfVeWbWj9uePQJMwGAx1P+MAmgTuPwIAgGwQHwEAQDaIjwAAIBvERwAAkA3iIwAAyAbxEQ
AAZIP4CAAAskF8BAAA2SA+AgCAbBAfAQBANoiPAAAgG8RHAACQDeIjAADIBvERAABkg/
gIAACyQXwEAADZID4CAIBsEB8BAEA2iI8AACAbxEcAAJAN4iMAAMgG8REAAGSD+AgAALJBfAQAANkgPgIAg
GwQHwEAQDaIjwAAIBvERwAAkA3iIwAAyAbxEQAAZIP4CAAAskF8BAAA2VjK7gD4W6usrOzu7qaWvHr1qry8
nFycMGHCiBEjFN4vABBCiEEQhLL7AP6+PDw8MjIyeqvV1tZ+9erV2LFjFdklAEhwfQ2UaeXKlb1VaWlpubu
7Q3AESgTxESiTr69vb5fPBEGsXbtWwf0BgAriI1AmPT09T09PbW3tnlW6urqenp6K7xIAJIiPQMlWr14tFo
ulCrW1tX19ffX09JTSJQAwiI9AyZYtW6avry9V2NXVtXr1aqX0BwASxEegZDo6OsuXL9fR0aEWjhkzxs3NT
VldAgCD+AiULyAgoLOzk1zU1tZetWqVVMQEQPFg/iNQPolEYmJi0tDQQJbcvn37ww8/VGKXAEBw/
ghUgZaW1urVq8lRbCMjI1dXV+V2CQAE8RGoiFWrVnV1dSGEdHR0Pv30Uy0t+JcJlA+ur4FKIAjivffeq6qq
Qgj98ccfM2fOVHaPAIDzR6AaGAxGYGAgQsjCwgKCI1ARapC/Jy8v77vvvlN2L8Cwe/
PmDUJoxIgRy5cvV3ZfwLBzdnYODQ1Vdi/
6oAbnj9XV1ZcuXVJ2LwCdmpqawf9GY8aMMTAw4HA4Q9KloZWfn5+fn6/sXmiO/Pz8vLw8Zfeib2pw/
oilpaUpuwugV6mpqf7+/oP/jX7++WfVnBaOT2nhH+FQUZdLBDU4fwR/
H6oZHMHfFsRHAACQDeIjAADIBvERAABkg/
gIAACyqc34NdA85eXlUVFRkZGRZmZmyu7LEBOLxXw+XygUNjU1IYRsbGxmzJhB1ra0tPz000/k4pIlSxT/
mp2WlpbExMSqqioPD4+FCxcymUyySiQS3b59+/79+66urrNnz5anqrCw0NDQ0NzcXMF7Mdzg/
BEoTWFh4ZkzZx4+fKjsjgyx1tbW2NjYqVOnuri4lJWVBQQELFiw4MmTJ+QKbDbb2to6JiYmKirK1NTUwMBA
wT1sbm5+//33i4qKiouLly5dOmfOHLKqvr7e1ta2qqpq/
fr1XC7X29ubfAEvTZWDg8M333yTk5Oj4B0ZdoTKS0lJUYt+/
p0N+DdqaGgY8s5I+f777wffiJ+fn5+fnzxr1tTUeHl5tbS0kCU4kaWtre2bN2+oa+Jz58H3bQCOHTvW1NSE
P0dGRiKEcnNzCYLo7u52dXX96KOPcJVYLDY3Nw8PD6evIkuWLl364MEDeTog//FULjh/BMo0bty4YW0/
MzMzIiJiWL9CSmho6Mcff8xms8mSSZMmubu7l5aWBgYGEpR0MIaGhoo/
c0QIdXZ2Ll68+J133sGL+LH3MWPGIIRycnJyc3ODgoJwFZPJXLduXXx8fFtbG00VWRIaGhocHKzo/
RlOEB+B0kgkkqysrLt37+LF6urquLg4iURSXFwcHR197tw5iUSCq2pqao4ePUoQRHZ2dkRERHx8fHt7O67i
8XiHDh06deoUQkggEBw5cuTQoUP4fDYrK8vHx0coFJ44cYLH4yGEGhsbY2JiXr16NUx7xOfzr1+/
7ufnRy1ksVgXL160tLTkcrlRUVFkuZaWFjWNm0AgSElJ2bdvX2JiYnV1NbUFmiODEHr58uXp06cjIyN/
+eUXeTqpo6MzceJEcvHBgweenp5Tp05FCKWnpyOE8Gdsy
pQpbW1tGRkZNFVkiZubm0AgwGtqCGWfwPYNrq9V3wB+o0ePHuE4cuzYMYIgrl27ZmRkhBA6ePDgZ599ht/
sun//foIgzp8/P3bs2JEjR37xxRfr169ftmwZQsjJyamzsxM3ZW9vb2Zmhj+/
efNmzJgxzs7OBEHcu3fPxcXFyMgoKyvr3r17BEEkJCQghA4fPtzfHZTzevCTTz5xc3OTKnRwcCAI4uHDh/
r6+gwGg8fj4fITJ07Ex8fjz/fv3586derly5fr6+sPHDigr69P3hagOTIEQWRmZgYFBRUWFqampurr62/
atEn+nZJIJCkpKXZ2dtXV1bhk6dKlCCGRSESuk52djRCKioqiqaK2GRwcPGPGjD6/
Wl2ur9Ug7kB8VH0D+40ePHhAxkeCIHbu3IkQ+vnnn/
Gio6PjzJkz8ec1a9YwGIzi4mK8uGfPHoTQ8ePH8aKfnx8ZH/GGOD4SBOHj48PhcMgqoVD4ww8/
SN0HlIecf89WVlb4IpoKx0eCIC5fvsxgMNhs9uPHjwlKfBSJRDY2Nl999RW5SUBAgI6OzqNHj/
Bib0dGIBBYWFgIhUJcvmHDBoRQXl6ePHskFAqDgoJGjRqFEDIwMODz+bhlJpNJXY3P5yOEQkJCaKqohXFxc
SwWixpGZVKX+AjX10BpdHV1qYsjR45ECNnY2OBFOzs7nC4XIaSnp8disezt7fHizp07WSyWnKOlDAaD/
Kynp7dq1arRo0cPvvM9dXZ2lpeXm5qa9raCr6/
vrl27WltbfXx8BAIBWX7jxo2ysrIPPviALFm8eHFnZ2diYiJe7O3IXLhwob29/Z///
GdISEhISEhtba2lpeXTp0/l6a2ent7JkycFAsHBgwcFAsE//
vEPhFDPF+3iEWoTExOaKmohm80Wi8Vy9kH1wfxHoKLw2YrMqlGjRpmZmVHf50WDGh+HVXNzc3d3N45lvYmM
jCwqKuLxeIGBgUuWLMGFJSUl6K+xae7cuQih0tJSmY2QR+bRo0empqZHjhwZcJ+1tLS2bdv222+/
Xb58WSQScTic7u5ukUhE/
teF47idnV1ZWVlvVdQG8V7U1NRIlaspOH8E6kckEtXV1VlYWMizssLio4mJiYGBAfXEUGZnzp8/
b2Njw+Vy4+LicCEeSqbmQzQ3N9fW1u5z0jiTyXz8+DF+b89gLFq06J133tHV1bW1tUUIUUeHGhsbEUJ2dnY
0VdSmXr9+jRBSzSSeAwDxEaif/
Pz8jo4OPFKBEGKxWB0dHTLXZDAY5BxmBbC3t6+vr6eWEATx9u1basmYMWO4XC6bzSZPD2fPno0Qot4uKC4u
7urqcnZ2pv+6adOmtbW1HT9+nCxpaWk5evRof7tdXFzs5eWFENqwYYOuru6dO3fIqoKCgunTp0+ePJmmitp
UbW0tg8Ggjo+rNYiPQGlEIhH68zQE/fl+hc7OTrzY2NiIb/
PjRbFYTAaUS5cuzZs3j4yP7u7ujY2NZ86caWtrO3PmTFNTU3l5OT6RMTU1raurKy8vf/
bsWVtbW0FBwaxZs/
DA63CYO3eu1ONAtbW1L168kArf1tbWycnJ5OSeadOmrVu3Licnh7zfmpuba2VlRc4l7O3I+Pv7czicsLCw2
NjY0tLS1NTU4ODgtWvX4tWCg4OXLVvWczJTe3t7dHR0cXExXmxqarp3797BgwcRQiYmJps3b46NjcWHvaOj
g8fjJSYmamlp0VRRG6+oqHB3dx8xYsQgjqIqUeLYkJxg/Fr1DeA3ys/Px/
N7pkyZ8uOPP2ZnZ+Pr5c8//7y2tvbChQt4xvK+ffu6uro2btzIZDI3b968Y8eOlStXenl5UcegBQIBHtywt
bVNT0/39fVdvHhxQkICQRBZWVksFsvAwADP6cEjyLiqX+Qcb21ubjY2Nn769CleTEtL+/
DDDxFCixYtyszMlFo5OjqanN/T3t4eEhJib2+flJR06tQpDw+PqqoqXEV/
ZEpKSsgzOHt7+8LCQrJ9S0tLhNCBAwekvlcoFM6YMYPBYDg5Oe3ZsycuLk4gEJC1EokkPDzc09Pz8OHDERE
RZ8+elacKE4lEhoaGt27d6vNAqcv4tRrEHYiPqm+4f6ONGzdqa2sTBFFVVdXa2ipznfr6evyhvb2dWt7S0k
INpr1tTk/
+v+fjx49LTXmh8erVK+piS0vLnTt3yNmI8quoqKisrJQq7OjoSElJuXr1qsxNXr9+3dbW1luDYrG4rq6uv1
Wpqane3t7ydFhd4iNcXwN1wuFw8NlTT3gSNUJI6uKOzWZTJ/
T0tvlQCQoKwles8qxsbGxMXWSz2XPmzBlANiNzc/
N3331XqlAkEuXl5eHp9D0ZGBjgyY8yMZnM8ePH96uqrKwsOTn5woULcvdaDUB8BGrg7du3YrFYKBQquyN90
9LSSkpKOnbsGPncpLLw+fz9+/ezWIqYw1dZWRkTE3P69Gn66U1qRzPnPwqFwqysrNzc3H//+9/
K7stf1NXVlZWVzZ8/X56Vc3JyXrx4QS5qa2sbGRlNmDDByspquPqnkpKTk2/
evEkQRHh4eFBQ0PTp05Xdoz7o6uqePHmSHGxRFkW+7ExHRycpKUlhU6kURjPPH2/cuLF169aLFy8quyP/
X0NDQ1hYmIWFxZUrV+TcxMHB4dmzZwEBAZ9++umbN28aGhp4PJ6/v//
EiRN37949+Flv6sLT07OsrOz169fR0dHW1tbK7o68el7wajBTU1PNC45IU+Ojn5/
frFmzFHNlIaeKiorAwEAy64w8DAwMPv30U4SQpaXlxo0b//GPfxw4cKCgoCA2NvZ///d/
PTw86Kciaww2m23wJw27fAMqToUiyNCSSh6ldDjfTH+36jmYwGAw/
Pz8uru7V65cOXfuXD6fj9OvAgCGnEbFx+bm5kuXLlVUVLyqa6qsAAAgAElEQVT//vsEQVBP+F+
+fHnjxo2amhoXF5eFCxeS5dXV1enp6Vu2bCkpKbl69eq77767evVqHFgJgsCv2mAymTY2NosWLaJvamAaGx
sTEhLWr1/f23ChTP7+/mfPns3IyODz+a6urjQdU/
oOAqC+VOgMa5AeP368ZMmSqVOnRkZGNjY2crlcMj5mZWXt27dvxowZtra2Pj4+ISEhuJzH482cOXPbtm2HD
x/+7rvv8vPzAwMDySGd3bt3P336dNu2bc7Ozrt376ZvasC4XO6//vWv1NTU/m6IZ0T/
+uuvNB1ThR0EQI0pd/
qlPOScezx79uwdO3bgzxKJxMLCYvLkyURfOfJ6y6wnkUjGjRuXlZWFy3ES0MGk2yMIAj9Ot3XrVmohfUbC1
tZWhJCtrW3PKpyleenSpfQdU8wOavwcfnWZz6wu1OV4asj1dWZm5u+//7537168iJ+dun//
PqLkyMNVZI48fP7VM7Pef/7zH9yCtbW1v7//
yZMnvb29w8LC+mxqYHBGwgFsiCcD6unp0XdMkTuokSOYVBq/g4ok9RYK1aQh8bGoqAghNGXKFLKE/
Kfcrxx51JyD8fHxy5cv9/HxWbhwYXJy8vjx4wefbm8IFRYWoj9Tv8jfsWHdQXwWqZFw+oYvv/
xS2R3REPh4qj4NiY84wcnvv/9OTTyHQySZI09bW7tfbU6fPr2wsHDnzp0nTpxwdHR8+PDhgJsacgRB/
Prrr0wmEw+qDKxjQ76DK1asGMBWaiEtLQ1p9A4qGD6eqk9Dxmfwa9UyMzN7Vg0sR55IJDp37tzo0aOPHDly
/fr12tra9PT0oUq3N3hffvklngg5bdo0NKB9VPEdBEAlKPn+pxzkufff1dVlY2Ojr69/+/
ZtgiBevHhhamqqr69fVFQkFAo5HI6Ojs63335bUlKSkpKyfPlycjxk+/
btCKHy8nK86OHhMXr0aIlE0t7ePmfOHIlEQhCERCIxMjK6cuVKR0cHTVN9qqurQwgFBwdTC//
44w8nJydynEQKvm/w3nvvkSXPnz/ftGkTg8HYsmULWUjTMcXsIIzPgH5Rl+OpBv+m5fzbe/
78uZOTE0LIwsIiICDAy8vL1dX12LFj7e3tveXIo8msJxAITE1NV65cmZaWduDAAfLdcjTp9uhlZGT4+/
sjhIyNjRMSEmpra3E5TUbCa9eukU9qOzs7L1q0yMPDw9vbe/
v27Xfv3pVaWWbHFLaDEB9Bv6jL8WQQvbwCSXWkpqb6+/
vL2c+GhoZRo0bp6ekJhUKpN65VVlYyGAz5n4oVi8USiaSurq7nJv1tih5+ZfOQNNWvjg3hDvbrN1JHy5cvR
+pz10z1qcvx1JDxGRKZBLDn6yjNzc371RR+fFtmjOjZ1KZNm3prJzg4mD7lzBBmJOzXPvZrBwH4G9K0+Kgs
CxYs6K2KDNng70MsFvP5fKFQ2NTUhBCysbGZMWMGWdvS0vLTTz+Ri0uWLOnzVYXDRGbCPZFIhB88dXV1nT1
7NpPJ7LOqsLDQ0NBQA/9bVfL1vRw0/t6WBtD436hf98taWlr279//5s0boVD41VdfIYTYbPbjx4/
JFSQSSUFBwdSpU+3s7LKysvAomYLV19dv37595MiRUg90vXr1auLEiQkJCQ0NDTt27PDw8BCLxX1WdXV1ff
HFF3h0VB7qcv9RDf5Na/zfngZQwG/0/
fffK7Ed+f+ea2pqvLy8WlpayBKcYMnW1lZqJkBUVFRkZOQAOjMk+Hw+nh1BjY/
d3d2urq4fffQRXhSLxebm5uHh4fRVZMnSpUsfPHggz7erS3zUkPmPQLNlZmZGRESoTjs0QkNDP/
74YzabTZZMmjTJ3d29tLQ0MDCQoAxhGRoaGhgYDGtnaDg5OZFPnZJycnJyc3ODgoLwIpPJXLduXXx8fFtbG
00VWRIaGkq+k1YzQHwECiUQCFJSUvbt25eYmFhdXY0LeTzeoUOHTp06hVc4cuTIoUOHyKcVs7KyfHx8hELh
iRMneDweQqimpubo0aMEQWRnZ0dERMTHx+PEw/
1tp7GxMSYmpucbogeMz+dfv35d6sliFot18eJFS0tLLpcbFRVFlkulKJV5ZLDq6uq4uDiJRFJcXBwdHX3u3
DmJRELWvnz58vTp05GRkb/
88ssg+4+TnuCnLbApU6a0tbVlZGTQVJElbm5uAoEAr6kZID4CxSkqKnJxcdHW1g4JCWlpabGzszt79ixCyM
vL69SpU19//
TVCaPTo0YGBgXv37o2Li8NbjR071sHBQVdX19ramsPhJCcnOzg4hIWFbdq06dy5cw8ePNiyZcu8efO6urr6
1Q4aRHK53nz77bfOzs7U1yWSX83lcvX19ffu3fvjjz/
Kf2RQX0nqhjYf3dOnTxFCpqamZAl+w+KTJ09oqqgtuLi4UP8PUHvKvsDvG9x/VH3y/
EYikcjGxoaciE4QREBAgI6OzqNHjwiC8PPzMzMzI6scHR2dnZ3JRR8fHw6HQy6uWbOGwWAUFxfjxT179iCE
jh8/3t926JPLUcl5v8zKygpfRFM5ODjgD/hZAHKs5sSJE/
Hx8URfR4boPUndkCfcc3R0xBlMSHw+HyEUEhJCU0UtjIuLY7FYIpGI/qvh/
iMAf3Hjxo2ysjJqqrTFixd3dnYmJibKszk1t5ienh6LxbK3t8eLO3fuZLFYOTk5A2hn1apVPU/
3Bqazs7O8vJx6hiXF19d3165dra2tPj4+1HcH9Xlkeiapwy9HJPPRhYSEhISEkPnoBrwLPWcNd3d3I4RMTE
xoqqiFbDZbLBYPpg8qBeY/AgUpKSlBf/0LnDt3LkKotLRUns1pci+OGjXKzMysoaFhkO0MUnNzc3d3N/
0bxCIjI4uKing8XmBg4JIlS3Bhf48MmaRuyBPucTic7u5ukUikq6uLS3Act7OzKysr662K2gLei5qaGqlyN
QXnj0BB3nnnHYRQXl4eWWJubq6trS3n1GiauCYSierq6vCT5oNpZ5BMTEwMDAzoXyrJYDDOnz9vY2PD5XLJ
G6MDPjJkPrpB9/3/2NraIoSoo0ONjY0IITs7O5oqaguvX79GCFHTDKo1iI9AQXAqX+pVcHFxcVdXl7OzM0K
IxWJ1dHT0ti2DwcBXczLl5+d3dHR4enoOsp3Bs7e3r6+vp5YQBPH27VtqyZgxY7hcLpvNJk8P6Y8MjSHPR7
dhwwZdXd07d+6QJQUFBdOnT588eTJNFbWF2tpaBoMxceLEAfdBpUB8BAoybdq0devW5eTk4HtnCKHc3FwrK
ys8Y87d3b2xsfHMmTNtbW1nzpxpamoqLy/HJyMIIVNT07q6uvLy8mfPnuEJd2KxmIwvly5dmjdvHo6P/
WqnoKBg1qxZ2dnZQ7WPc+fOffjwIbWktrb2xYsXUiHb2to6OTmZnNxDf2TQn+mfyfcDNzY24gEQf39/
DocTFhYWGxtbWlqampoaHBy8du1avFpwcPCyZctoZi/hw0Ltm4mJyebNm2NjY/H1e0dHB4/
HS0xM1NLSoqmitllRUeHu7j5ixIh+HjlVpdTRIbnA+LXqk/
M3am9vDwkJsbe3T0pKOnXqlIeHR1VVFa4SCAR4gMLW1jY9Pd3X13fx4sVk2resrCwWi2VgYHD48GGCIDZu3
MhkMjdv3rxjx46VK1d6eXmRY9D9aocmuZwUOcdbm5ubjY2Nnz59ihfT0tI+/
PBDhNCiRYsyMzOlVo6Ojsbj1/
RHhiZJXVdXF00+OktLS4TQgQMHZHa1t4R7EokkPDzc09Pz8OHDERERZ8+eJTehqcJEIpGhoeGtW7f6PFDqM
n6tBnEH4qPq69dv1NLScufOnerq6p5V9fX1+EN7e3vPrcgguHHjRm1tbYIgqqqqWltbB9wOQRAyN+9J/r/
n48ePS015ofHq1SupvvV2ZOhVVFRUVlZKFXZ0dKSkpFy9erW/rREEIRaL6+rq+luVmprq7e0tT/vqEh/
h+hooGpvNnjNnjpmZWc8qMtdRzws0NpvdcyIOh8ORmR1O/naGMLkcFhQU1NTUdO/
ePXlWxlOsqX3r7cjQMzc375mnTiQS5eXlLVu2rL+tIYSYTOb48eP7VVVWVpacnHzhwoUBfJ3KgvgI1M/
bt2/FYjF+w62q0dLSSkpKOnbs2N27d5XbEz6fv3//
fpzlc7hVVlbGxMScPn2afnqT2oH4CNRMcnLyzZs3CYIIDw/HrzhXNbq6uidPnuzt/
Eth3NzcFBatdHR0kpKS8EQlTQLzw4Ga8fT09PDwwJ/
JucoqaKhev6EWaJ4aUmsQH4GaoaYOA2BYwfU1AADIBvERAABkg/gIAACyqc39xyFMYgqGHM6toMG/
UU1NDdLoHVSwmpqaAUzzVAJlT1DvG5kfHwCgMdTi+RkGQXlhEADKxWAwUlJSVqxYoeyOAIAQ3H8EAIDeQHw
EAADZID4CAIBsEB8BAEA2iI8AACAbxEcAAJAN4iMAAMgG8REAAGSD+AgAALJBfAQAANkgPgIAgGwQHwEAQD
aIjwAAIBvERwAAkA3iIwAAyAbxEQAAZIP4CAAAskF8BAAA2SA+AgCAbBAfAQBANoiPAAAgG8RHAACQDeIjA
ADIBvERAABkg/
gIAACyQXwEAADZID4CAIBsEB8BAEA2iI8AACAbxEcAAJAN4iMAAMgG8REAAGSD+AgAALKxlN0B8LeWkJDQ3
NxMLbl69erz58/Jxc8++8zY2Fjh/QIAIYQYBEEouw/g7+uLL744ceKErq5uz6qurq6xY8fW1dWxWPC/
OFAOuL4GyrRq1SqEkEgWJpMZEBAAwREoEZw/AmUiCOK//uu/
amtrZdb+9ttvzs7OCu4SACQ4fwTKxGAwVq9eraOj07NqwoQJH3zwgeK7BAAJ4iNQslWrVnV2dkoV6ujorFu
3jsFgKKVLAGBwfQ2Uz8rK6unTp1KFDx48mDp1qlL6AwAG549A+dasWaOtrU0tmTRpEgRHoHQQH4HyrVmzRi
wWk4va2tqfffaZEvsDAAbX10AlTJ8+/cGDB/
hfI4PBePbs2cSJE5XdKfB3B+ePQCUEBgYymUyEEIPBmDlzJgRHoAogPgKVsGrVKolEghBiMpmBgYHK7g4AC
EF8BCrC1NTUxcWFwWBIJJLly5cruzsAIATxEaiOtWvXEgQxf/
58ExMTZfcFAIQQQoTKS0lJUfZBAgAMMT8/P2WHlr6pzcP/ECVVWV5e3qFDhwb/
Gx08eDA4OFhPT29IejWEDh48iBD68ssvld0RDYGPp+pTm/
i4YsUKZXcB0Dl06NDgfyNXV9cJEyYMSX+GVlpaGoJ/hEMHH0/VB/cfgQpRzeAI/
rYgPgIAgGwQHwEAQDaIjwAAIBvERwAAkE1txq+B5ikvL4+KioqMjDQzM1N2X4aYWCzm8/
lCobCpqQkhZGNjM2PGDLK2paXlp59+IheXLFkyduxYJfQSobq6urKysvnz51MLRSLR7du379+/
7+rqOnv2bPxcPH1VYWGhoaGhubm5IjuvAHD+CJSmsLDwzJkzDx8+VHZHhlhra2tsbOzUqVNdXFzKysoCAgI
WLFjw5MkTcgU2m21tbR0TExMVFWVqampgYKD4TjY0NISFhVlYWFy5coVaXl9fb2trW1VVtX79ei6X6+3t3d
3d3WeVg4PDN998k5OTo+jdGG7KnqDeNzzrWNm9AHQG/Bs1NDQMeWekfP/994NvxM/
PT87nPWpqary8vFpaWsgS/HYdW1vbN2/eUNfE586D79vA8Pn8oqIihNDWrVvJwu7ubldX148+
+ggvisVic3Pz8PBw+iqyZOnSpThJXZ/kP57KBeePQJnGjRs3rO1nZmZGREQM61dICQ0N/
fjjj9lsNlkyadIkd3f30tLSwMBAgpJu1dDQUClnjpiTk5ONjY1UYU5OTm5ublBQEF5kMpnr1q2Lj49va2uj
qSJLQkNDg4ODFbYLCgDxESiNRCLJysq6e/
cuXqyuro6Li5NIJMXFxdHR0efOncMZzxBCNTU1R48eJQgiOzs7IiIiPj6+vb0dV/
F4vEOHDp06dQohJBAIjhw5Qj7pmJWV5ePjIxQKT5w4wePxEEKNjY0xMTGvXr0apj3i8/nXr1/38/
OjFrJYrIsXL1paWnK53KioKLJcS0tLS+v//wEKBIKUlJR9+/
YlJiZWV1dTW6A5Mgihly9fnj59OjIy8pdffhlk/
9PT0xFC1DdbTJkypa2tLSMjg6aKLHFzcxMIBHhNzQDxEShHSUmJv7//f//
3fxcUFCCEeDzezJkzt23bdvjw4e+++y4/Pz8wMPDf//
43Qig5OdnBwSEsLGzTpk3nzp178ODBli1b5s2b19XVhRDy8vI6derU119/
jRAaPXp0YGDg3r174+LiEEJjx451cHDQ1dW1trbmcDgIIS6X+69//
Ss1NXWYdurbb791dnYePXq0VPnYsWO5XK6+vv7evXt//
PHHnhsWFRW5uLhoa2uHhIS0tLTY2dmdPXsWV9EcGYRQVlbWvn37ZsyYYWtr6+PjExISMpj+47ekmZqakiXG
xsYIoSdPntBUUVtwcXGh/h+g9pR9gd83uP+o+gb2Gz148AAhdOzYMby4c+dOhNDPP/+MFx0dHWfOnIk/
r1mzhsFgFBcX48U9e/YghI4fP44X/
fz8zMzMyGYdHR2dnZ3xZx8fHw6HQ1YJhcIffvhB6j6gPOS8X2ZlZYUvoqkcHBzwh8uXLzMYDDab/
fjxY4IgTpw4ER8fTxCESCSysbH56quvyE0CAgJ0dHQePXqEF3s7MgKBwMLCQigU4vINGzYghPLy8uTcKZFI
hP56/9HR0ZHJZFLX4fP5CKGQkBCaKmphXFwci8USiUT0Xw33HwHog66uLnVx5MiRCCHyppidnV1VVRX+rKe
nx2Kx7O3t8eLOnTtZLJaco6XUl2jr6emtWrWq5/ndkOjs7CwvL6eeYUnx9fXdtWtXa2urj4+PQCAgy2/
cuFFWVvbBBx+QJYsXL+7s7ExMTMSLvR2ZCxcutLe3//Of/
wwJCQkJCamtrbW0tOz5plz56evrS5XgEWoTExOaKmohm80Wi8WD6YNKgfmPQEXhsxWZVaNGjTIzM2toaJCn
HWp8HFbNzc3d3d04lvUmMjKyqKiI
x+MFBgYuWbIEF5aUlKC/
xqa5c+cihEpLS2U2Qh6ZR48emZqaHjlyZKh2gcPhdHd3i0Qi8r8uHMft7OzKysp6q6K2gPeipqZGqlxNwfk
jUD8ikaiurs7CwkKelRUWH01MTAwMDKgnhjI7c/
78eRsbGy6Xi2+SIoTeeecdhFBeXh65mrm5uba2dp+TxplM5uPHj/
F92CFha2uLEKKODjU2NiKE7OzsaKqoLbx+/RohhO/
2agCIj0D95Ofnd3R0eHp64kUWi9XR0SFzTQaDQc5hVgB7e/v6+npqCUEQb9+
+pZaMGTOGy+Wy2Wzy9HD27NkIIertguLi4q6uLmdnZ/qvmzZtWltb2/Hjx8mSlpaWo0ePDrj/
GzZs0NXVvXPnDllSUFAwffr0yZMn01RRW6itrWUwGBrz+kmIj0Bp8PgAPg1BCL158wYh1NnZiRcbGxvxbX6
8KBaLyYBy6dKlefPmkfHR3d29sbHxzJkzbW1tZ86caWpqKi8vxycypqamdXV15eXlz549a2trKygomDVrVn
Z29jDt0dy5c6UeB6qtrX3x4oVU+La2tk5OTiYn90ybNm3dunU5OTnk/dbc3FwrKytyLmFvR8bf35/
D4YSFhcXGxpaWlqampgYHB69duxavFhwcvGzZMprJTPgQUftmYmKyefPm2NhYfNg7Ojp4PF5iYqKWlhZNFb
XNiooKd3f3ESNG9PPIqSoljg3JCcavVd8AfqP8/Hw8T3DKlCk//vhjdnY2vl7+/
PPPa2trL1y4MGbMGITQvn37urq6Nm7cyGQyN2/evGPHjpUrV3p5eVHHoAUCAR7csLW1TU9P9/
X1Xbx4cUJCAkEQWVlZLBbLwMDg8OHDxJ8jyLiqX+Qcb21ubjY2Nn769CleTEtL+/
DDDxFCixYtyszMlFo5Ojoaj18TBNHe3h4SEmJvb5+UlHTq1CkPD4+qqipcRX9kSkpKyDM4e3v7wsJCsn1LS
0uE0IEDB2R2NSMjw9/
fHyFkbGyckJBQW1uLyyUSSXh4uKen5+HDhyMiIs6ePUtuQlOFiUQiQ0PDW7du9Xmg1GX8Wg3iDsRH1Tfcv9
HGjRu1tbUJgqiqqmptbZW5Tn19Pf7Q3t5OLW9paaEG0942pyf/3/
Px48elprzQePXqFXWxpaXlzp071dXV/
e1eRUVFZWWlVGFHR0dKSsrVq1f72xpBEGKxuK6urr9Vqamp3t7e8rSvLvERrq+BOuFwOPjsqScjIyP8Qeri
js1mUyf09Lb5UAkKCmpqarp37548K+Mp1iQ2mz1nzpwBZDMyNzd/
9913pQpFIlFeXt6yZcv62xpCiMlkjh8/vl9VZWVlycnJFy5cGMDXqSzNnN8jFAqzsrJyc3PJxwyUTiAQ/
PDDD8+fP580aVJAQMCoUaP63CQnJ+fFixfkora2tpGR0YQJE6ysrIazp6ro7du3YrFYKBT2nIWnarS0tJKS
krZs2RIUFOTk5KTEnvD5/P3797NYivgbr6ysjImJOX36NP30JrWjmeePN27c2Lp168WLF5Xdkf/
z+PHjyZMn/8///M/BgweDgoIcHBzq6ur63MrBweHZs2cBAQGffvrpmzdvGhoaeDyev7//xIkTd+/
ePYSzOlRccnLyzZs3CYIIDw+/f/++srvTN11d3ZMnT/Z2/
qUwbm5uCotWOjo6SUlJeKKSRlH2BX7fBnZva8WKFRYWFsPRnwFYunRpUVERQRD19fWff/
45Qmj9+vXybIinm9na2pIlEokkLS1tzJgxixYtGsBzcsNkWO8/trS0vP7T27dvh+lb6KnL/
TJ1oS7HUzPPH1GP5ChKVFBQsHr1agcHB4SQkZFRZGSklpbWb7/9Js+2PW+WMRgMPz+/
kydP3rp1a+7cueScDw3GZrMN/qRhl29AxWnU/
cfm5uZLly5VVFS8//77BEFQH5x4+fLljRs3ampqXFxcFi5cSJZXV1enp6dv2bKlpKTk6tWr77777urVq3Fg
JQgCp5JnMpk2NjaLFi2ib6o37733nqOjI7loamo6c+ZM8q5QY2NjQkLC+vXr+3U55u/vf/
bs2YyMDD6f7+rqStMxBewgAJpKJc6whsTjx4+XLFkyderUyMjIxsZGLpdLxsfeckDRZ47avXv306dPt23b5
uzsvHv3bvqmaBgaGko94lZdXb106VL8ecAZt/CMv19//
ZWmY4rZQQA0lpKv7+Ug572t2bNn79ixA3+WSCQWFhaTJ08m+soB1VvmKIlEMm7cuKysLFweFRXVZ1Nyun37
tpmZmUAgwIv0GbdaW1vRX+8/knAW0qVLl9J3TDE7qPFzVNXlfpm6UJfjqSHX15mZmb///
vvevXvxIoPBcHJywmOdZA4oXEXmgMLnXz0zR/3nP//BLVhbW/
v7+588edLb2zssLKzPpuTR3d391VdfXbt2jZyngjNuDWCXhUIh3py+Y4rcweHLO6t0NTU1SKN3UMFqamrU4
qWVGhIf8ZuGpkyZQpaQl7T9ygFFzakVHx+/fPlyHx+fhQsXJicnjx8/
fvDppMLCwkJDQ6mv+hywwsJC9GdqA/k7Nqw7iJ9X02Aav4OKJPUWCtWkIfcf8QP8v//
+O7UQh8gB54CaPn16YWHhpk2bsrOzHR0dm5ubB5lO6uTJkzNmzPjoo48GtjkVQRC//
vork8nEgyoD69iQ76CSr4WGk7pcD6oLtQiOSGPiI35tUGZmZs+qgeWAEolE586dGz169JEjR65fv15bW5ue
nj6YdFJXrlwhCCIwMJAsuX37tjwbyvTll18WFBTExsZOmzYNDWgfh3wHAdBAyv6PpG/
y3Pvv6uqysbHR19e/
ffs2QRAvXrwwNTXV19cvKioSCoUcDkdHR+fbb78tKSlJSUlZvnw5OR6yfft2hFB5eTle9PDwGD16tEQiaW9
vnzNnjkQiIQhCIpEYGRlduXKlo6ODpikat27dmj179v/+6dChQ8HBwTijzB9//
OHk5ESOk0jB9w3ee+89suT58+ebNm1iMBhbtmwhC2k6ppgdhPEZ0C/qcjzV4N+0nH97z58/
x4+7WlhYBAQEeHl5ubq6Hjt2rL29vbccUDSZowQCgamp6cqVK9PS0g4cOEC+O4kmnVRvCgoK8CgK1YgRI5q
amgjajFvXrl2bP38+Xt/Z2XnRokUeHh7e3t7bt2+/e/
eu1MoyO6aYHSQgPoJ+UpfjySB6ecWH6khNTfX395eznw0NDaNGjdLT0+uZy6CyspLBYPRMc9IbsVgskUjq6
up6btLfpui9efNmqJLK9KtjQ7iD/fqN1NHy5csRQmlpacruiIZQl+OpIePXJDLJVc9EL+bm5v1qCj/
iIjNG9Gxq06ZNvbUTHBw8ffp0mi8awoxb/
drHfu0gAH9DmhYflWXBggW9VZEhGwCgXiA+Dg18vQBAT2KxmM/
nz5kz5+bNm01NTQghGxsb6hzYlpaWn376iVxcsmRJn28uHA51dXVlZWXkLW+SSCTCz+m7urrOnj2byWQihA
oLCw0NDTX+OkND5vcAoJpaW1tjY2Px/
DMXF5eysrKAgIAFCxY8efKEXIfNZltbW8fExERFRZmamhoYGCi4kw0NDWFhYRYWFleuXJGqqq+vt7W1raqq
Wr9+PZfL9fb2xu+DdHBw+Oabb6jvXNRIEB+Bejh79qxKtSOPFy9erF27dtOmTfgFD3p6el9//
bWOjk5ra6uPjw/
5pmwGg+Ho6Ojv779y5cr58+cr7IXdpIqKisDAwPb2dqlyiUTyySefTJ069fPPPx83blxMTExxcfGuXbsQQi
wWKz4+/ptvvpF6X6OGgfgI1EBmZmZERITqtCOn0NDQjz/
+mM1mUwsnTZrk7u5eWloaGOamGiAAAAevSURBVBhIHfE3NDRU/
Jkj5uTkRD6hT5WTk5ObmxsUFIQXmUzmunXr4uPj29ra8GJoaCj5ElqNBPERKJRAIEhJSdm3b19iYiLOjo4Q
4vF4hw4dOnXqFF7hyJEjhw4dwnMqEUJZWVk+Pj5CofDEiRM8Hg8hVFNTc/
ToUYIgsrOzIyIi4uPj8blPf9tpbGyMiYmheUP0YPD5/OvXr/
d8kI7FYl28eNHS0pLL5UZFRZHlUhmdZR4ohFB1dXVcXJxEIikuLo6Ojj537pxEIqG2//
Lly9OnT0dGRv7yyy+D3AWcIwrfHMCmTJnS1taWkZGBF93c3AQCAV5NMyl19qVcNH7usQaQ8ze6f//
+1KlTL1++XF9ff+DAAX19/e+//
x5X2dvbm5mZ4c94QqizszNevHfvnouLi5GRUVZW1r17986fPz927NiRI0d+8cUX69evx+/
nc3Jy6uzs7Fc7BEEkJCQghPCDTPQGMJ/5k08+cXNz61nu4OBAEMTDhw/
19fUZDAaPx8PlJ06cIF+H3duBunbtGp4OcfDgwc8++8zT0xMhtH//
frLxzMzMoKCgwsLC1NRUfX39TZs2ydlbkUiEENq6dSu1EGcpFYlEZEl2djZCCGfDw4KDg2fMmCHnt5DUZX6
4GsQdiI+qT57fSCQS2djYkA/qEAQREBCgo6Pz6NEjgiD8/
PzIuEYQhKOjIxnXCILw8fHhcDjk4po1axgMRnFxMV7cs2cPQuj48eP9bYc+
+SbVAP6erays8BW0FBwfiT8fnWKz2Y8fPyYo8ZH+QPWW0JMYXH5SmfHR0dERJ3wi8fl8hBD1Bd9xcXEsFos
aQ+WhLvERrq+Bgty4caOsrIyaSnLx4sWdnZ2JiYnybE4dtdDT02OxWPb29nhx586dLBZLzrFUqXZWrVpFfT
v2UOns7CwvLzc1NaVZx9fXd9euXVJjNaivA9UzoWdVVRX+TKbvDAkJCQkJIdN3Dngvej5kgQevTUxMyBI2m
y0WiwfzLaoM5j8CBSkpKUF//
ZObO3cuQqi0tFSezWlGdUeNGmVmZtbQ0DDIdoZQc3Nzd3d3n28Ti4yMLCoq4vF4gYGBS5YswYX9OlDUhJ6D
z08qhcPhdHd3i0QiXV1dXILjuJ2dHbkO7mdNTQ21UGPA+SNQEPxy5Ly8PLLE3NxcW1tbzrnQNHFNJBLV1dX
hTByDaWcImZiYGBgYUM8Ke+vM+fPnbWxsuFxuXFwcLhzwgRpk+s6ebG1tEULU0aHGxkb01/
j4+vVrhBCHwxmqL1UpEB+BguBU59Sr4OLi4q6uLmdnZ4QQi8Xq6OjobVsGg4Gv7GTKz8/
v6OjAgxWDaWdo2dvb19fXSxUSBPH27VtqyZgxY7hcLpvNJk8P6Q8UjSFP37lhwwZdXd07d+6QJQUFBdOnTy
czPCGEamtrGQzGxIkTB/
wtqgziI1CQadOmrVu3Licnh7xflpuba2VlhSfQubu7NzY2njlzpq2t7cyZM01NTeXl5fjcBCFkampaV1dXX
l7+7NkzPPlOLBaTAeXSpUvz5s3D8bFf7RQUFMyaNQuPyQ65uXPn9pw7XVtb+
+LFC6kIbm1tnZycTE7uoT9QOFU+
+d7zxsZGPDaCEPL39+dwOGFhYbGxsaWlpampqcHBwWvXrsVrBgcHL1u2rLfJTPgQSXXMxMRk8+bNsbGxuP2
Ojg4ej5eYmEidh1RRUeHu7j5ixIj+HyF1oNzhIXnA+LXqk/
M3am9vDwkJsbe3T0pKOnXqlIeHR1VVFa4SCAR4RMLW1jY9Pd3X13fx4sVkWsysrCwWi2VgYIDn4mzcuJHJZ
G7evHnHjh0rV6708vIix6D71Q5N8k0pAxhvbW5uNjY2fvr0KVmSlpb24YcfIoQWLVqUmZkptX50dDQ5v6e3
A0WT0LOrq4ugTd9paWmJEDpw4EDPrmZkZOBX6xgbGyckJNTW1pJVEokkPDzc09Pz8OHDERERZ8+epW4oEok
MDQ1v3brVryNDqM/
4tRrEHYiPqq9fv1FLS8udO3eqq6t7VtXX1+MP7e3tPbcig+DGjRu1tbUJgqiqqmptbR1wOwRByNy8p4H9PR
8/
fpw6FaZPr169oi7SHCh6FRUVlZWVUoUdHR0pKSlXr17tb2sEQYjF4rq6up7lqamp3t7eA2hQXeIjXF8DRWO
z2XPmzJH5ek8yF1zP6zU2m91zIg6Hw5GZPVP+doYw+WZPQUFBTU1N9+7dk3N9Y2Nj6iLNgaJnbm7eM62nSC
TKy8vD0+n7i8lkjh8/
XqqwrKwsOTn5woULA2hQXUB8BOrn7du3YrEYvwFclWlpaSUlJR07duzu3bvK7gvi8/n79+/
HSZEHr7KyMiYm5vTp033OYVJrEB+BmklOTr558yZBEOHh4ffv31d2d/
qgq6t78uTJnidfiufm5jaEsUxHRycpKQlPRdJgMD8cqBlPT08PDw/
8mZy3rOKG6lVFqoP+0SCNAfERqBmpdGEADB+4vgYAANkgPgIAgGwQHwEAQDa1uf8ILwhUZTU1NUijf6P8/
Hyk0TuoYPn5+dQEbiqLQVDegKGa8vLyvvvuO2X3AgAwlJydnUNDQ5Xdiz6oQXwEAAClgPuPAAAgG8RHAACQ
DeIjAADIBvERAABk+39SIfr/j7kSRAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keras.utils.plot_model(model, \"my_fashion_mnist_model.png\",
show_shapes=True)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'dense'"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hidden1 = model.layers[1]\n",
"hidden1.name"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.get_layer(hidden1.name) is hidden1"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"weights, biases = hidden1.get_weights()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.02448617, -0.00877795, -0.02189048, ..., -0.02766046,\n",
" 0.03859074, -0.06889391],\n",
" [ 0.00476504, -0.03105379, -0.0586676 , ..., 0.00602964,\n",
" -0.02763776, -0.04165364],\n",
" [-0.06189284, -0.06901957, 0.07102345, ..., -0.04238207,\n",
" 0.07121518, -0.07331658],\n",
" ...,\n",
" [-0.03048757, 0.02155137, -0.05400612, ..., -0.00113463,\n",
" 0.00228987, 0.05581069],\n",
" [ 0.07061854, -0.06960931, 0.07038955, ..., -0.00384101,\n",
" 0.00034875, 0.02878492],\n",
" [-0.06022581, 0.01577859, -0.02585464, ..., -0.00527829,\n",
" 0.00272203, -0.06793761]], dtype=float32)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"weights"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(784, 300)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"weights.shape"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\
n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"biases"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(300,)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"biases.shape"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"model.compile(loss=\"sparse_categorical_crossentropy\",\n",
" optimizer=\"sgd\",\n",
" metrics=[\"accuracy\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is equivalent to:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```python\n",
"model.compile(loss=keras.losses.sparse_categorical_crossentropy,\n",
" optimizer=keras.optimizers.SGD(),\n",
" metrics=[keras.metrics.sparse_categorical_accuracy])\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/30\n",
"1719/1719 [==============================] - 2s 1ms/step - loss: 1.0187 -
accuracy: 0.6807 - val_loss: 0.5207 - val_accuracy: 0.8234\n",
"Epoch 2/30\n",
"1719/1719 [==============================] - 2s 921us/step - loss: 0.5028 -
accuracy: 0.8260 - val_loss: 0.4345 - val_accuracy: 0.8538\n",
"Epoch 3/30\n",
"1719/1719 [==============================] - 2s 881us/step - loss: 0.4485 -
accuracy: 0.8423 - val_loss: 0.5334 - val_accuracy: 0.7982\n",
"Epoch 4/30\n",
"1719/1719 [==============================] - 2s 902us/step - loss: 0.4209 -
accuracy: 0.8535 - val_loss: 0.3916 - val_accuracy: 0.8652\n",
"Epoch 5/30\n",
"1719/1719 [==============================] - 2s 908us/step - loss: 0.4061 -
accuracy: 0.8580 - val_loss: 0.3750 - val_accuracy: 0.8686\n",
"Epoch 6/30\n",
"1719/1719 [==============================] - 2s 916us/step - loss: 0.3755 -
accuracy: 0.8669 - val_loss: 0.3709 - val_accuracy: 0.8718\n",
"Epoch 7/30\n",
"1719/1719 [==============================] - 2s 879us/step - loss: 0.3655 -
accuracy: 0.8711 - val_loss: 0.3618 - val_accuracy: 0.8722\n",
"Epoch 8/30\n",
"1719/1719 [==============================] - 2s 894us/step - loss: 0.3483 -
accuracy: 0.8760 - val_loss: 0.3862 - val_accuracy: 0.8618\n",
"Epoch 9/30\n",
"1719/1719 [==============================] - 2s 906us/step - loss: 0.3486 -
accuracy: 0.8756 - val_loss: 0.3604 - val_accuracy: 0.8696\n",
"Epoch 10/30\n",
"1719/1719 [==============================] - 2s 905us/step - loss: 0.3299 -
accuracy: 0.8835 - val_loss: 0.3430 - val_accuracy: 0.8772\n",
"Epoch 11/30\n",
"1719/1719 [==============================] - 2s 926us/step - loss: 0.3219 -
accuracy: 0.8831 - val_loss: 0.3439 - val_accuracy: 0.8772\n",
"Epoch 12/30\n",
"1719/1719 [==============================] - 2s 883us/step - loss: 0.3123 -
accuracy: 0.8873 - val_loss: 0.3310 - val_accuracy: 0.8832\n",
"Epoch 13/30\n",
"1719/1719 [==============================] - 2s 914us/step - loss: 0.3055 -
accuracy: 0.8893 - val_loss: 0.3263 - val_accuracy: 0.8878\n",
"Epoch 14/30\n",
"1719/1719 [==============================] - 2s 924us/step - loss: 0.2992 -
accuracy: 0.8914 - val_loss: 0.3412 - val_accuracy: 0.8782\n",
"Epoch 15/30\n",
"1719/1719 [==============================] - 2s 885us/step - loss: 0.2936 -
accuracy: 0.8939 - val_loss: 0.3218 - val_accuracy: 0.8848\n",
"Epoch 16/30\n",
"1719/1719 [==============================] - 2s 916us/step - loss: 0.2863 -
accuracy: 0.8975 - val_loss: 0.3095 - val_accuracy: 0.8898\n",
"Epoch 17/30\n",
"1719/1719 [==============================] - 2s 905us/step - loss: 0.2781 -
accuracy: 0.9004 - val_loss: 0.3572 - val_accuracy: 0.8736\n",
"Epoch 18/30\n",
"1719/1719 [==============================] - 2s 904us/step - loss: 0.2782 -
accuracy: 0.8997 - val_loss: 0.3138 - val_accuracy: 0.8898\n",
"Epoch 19/30\n",
"1719/1719 [==============================] - 2s 921us/step - loss: 0.2742 -
accuracy: 0.9026 - val_loss: 0.3130 - val_accuracy: 0.8894\n",
"Epoch 20/30\n",
"1719/1719 [==============================] - 2s 910us/step - loss: 0.2700 -
accuracy: 0.9037 - val_loss: 0.3252 - val_accuracy: 0.8824\n",
"Epoch 21/30\n",
"1719/1719 [==============================] - 2s 891us/step - loss: 0.2671 -
accuracy: 0.9050 - val_loss: 0.3049 - val_accuracy: 0.8930\n",
"Epoch 22/30\n",
"1719/1719 [==============================] - 2s 942us/step - loss: 0.2615 -
accuracy: 0.9052 - val_loss: 0.2976 - val_accuracy: 0.8976\n",
"Epoch 23/30\n",
"1719/1719 [==============================] - 2s 928us/step - loss: 0.2548 -
accuracy: 0.9084 - val_loss: 0.2983 - val_accuracy: 0.8930\n",
"Epoch 24/30\n",
"1719/1719 [==============================] - 2s 901us/step - loss: 0.2454 -
accuracy: 0.9118 - val_loss: 0.3079 - val_accuracy: 0.8892\n",
"Epoch 25/30\n",
"1719/1719 [==============================] - 2s 922us/step - loss: 0.2496 -
accuracy: 0.9109 - val_loss: 0.2975 - val_accuracy: 0.8956\n",
"Epoch 26/30\n",
"1719/1719 [==============================] - 2s 891us/step - loss: 0.2431 -
accuracy: 0.9136 - val_loss: 0.3068 - val_accuracy: 0.8888\n",
"Epoch 27/30\n",
"1719/1719 [==============================] - 2s 883us/step - loss: 0.2374 -
accuracy: 0.9163 - val_loss: 0.3023 - val_accuracy: 0.8938\n",
"Epoch 28/30\n",
"1719/1719 [==============================] - 2s 935us/step - loss: 0.2314 -
accuracy: 0.9176 - val_loss: 0.2992 - val_accuracy: 0.8930\n",
"Epoch 29/30\n",
"1719/1719 [==============================] - 2s 917us/step - loss: 0.2284 -
accuracy: 0.9177 - val_loss: 0.3053 - val_accuracy: 0.8896\n",
"Epoch 30/30\n",
"1719/1719 [==============================] - 2s 916us/step - loss: 0.2252 -
accuracy: 0.9211 - val_loss: 0.3004 - val_accuracy: 0.8920\n"
]
}
],
"source": [
"history = model.fit(X_train, y_train, epochs=30,\n",
" validation_data=(X_valid, y_valid))"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'verbose': 1, 'epochs': 30, 'steps': 1719}"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"history.params"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29]\n"
]
}
],
"source": [
"print(history.epoch)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy'])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"history.history.keys()"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure keras_learning_curves_plot\n"
]
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAjcAAAFgCAYAAABHS1h8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
ABiyUlEQVR4nO3deXhcVeH/
8feZLZNksu9NmnTf9xYKshWK7LQgqAgii4AKguBXRRAUBTdQ+LmwCIoUQQGBSkEEgTZAAYHSFrrvS9I2bbN
nkkwmM3N/f8xkmqRZ22nTJp/
X88wzd+42Z04nyafnnnOusSwLERERkf7C1tcFEBEREYklhRsRERHpVxRuREREpF9RuBEREZF+ReFGRERE+h
WFGxEREelXFG5ERESkX+lRuDHGfNsYs8QY02SMeaKbfW8xxpQZY2qMMY8bY+JiUlIRERGRHuhpy81O4B7g8
a52MsacCfwQmA0MAYYBPz2I8omIiIj0So/
CjWVZL1qW9S+goptdrwD+YlnWKsuyqoC7gSsPqoQiIiIiveCI8fnGAy+1ev0pkGOMybAsq00wMsZcB1wHEB
8fP33w4MExLso+oVAIm03di2JBdRkbqsfYUV3GjuoyNlSPsdNVXa5fv77csqysjrbFOtx4gJpWr1uWk2jX6
mNZ1qPAowAzZsywlixZEuOi7FNcXMysWbMO2fkHEtVlbKgeY0d1GTuqy9hQPcZOV3VpjNnW2XGxjpZeILnV
65bluhi/
j4iIiEiHYh1uVgGTW72eDOxuf0lKRERE5FDp6VBwhzHGDdgBuzHGbYzp6JLWk8DXjTHjjDFpwB3AEzErrYi
IiEg3etpycwfQSHiY91cjy3cYYwqNMV5jTCGAZVmvAfcCi4BtkcdPYl5qERERkU70qEOxZVl3AXd1stnTbt
/
7gfsPqlQiIiIiB0hj1URERKRfUbgRERGRfkXhRkRERPoVhRsRERHpVxRuREREpF9RuBEREZF+ReFGRERE+h
WFGxEREelXFG5ERESkX1G4ERERkX5F4UZERET6FYUbERER6VcUbkRERKRfUbgRERGRfkXhRkRERPoVhRsRE
RHpVxRuREREpF9x9HUBRERE5CgWCkGoGYLNEPSHn0OR5dQhYDv87SgKNyIiIkcSy4JQIPII7nu2gm3XWaF2
r4OR5WA4XAR8EGiC5sbwc8vrQKvXzb6O1weawo9oaGkVXkLtXlvBzj/
LD7eDO+Xw1V2Ewo2IiEhXQiEItvzR94efg/52r5uiwSCnbDks2RwOFc0N4G/
Ytxx9brfO32pdoPHwfC6HGxxxkWd3u9dxkJAIdhfYHOFnuzP8sDnbvu5qH4f78HyW9h+tT95VRETkQFlWuN
UgGjKa2gaOaJiobxUaWkJE/b5tbUJFq+2BplZhJdJ60QtjAda2WmHs4EoEZzw4EyKP+PAjKa/
V+vh9y3Zn+DibA2yRZ2Nr99oeWW792hG+DGRzhoOFs3VoiW8bXoyJ5b/KEUXhRkREutem9aLVH/
42rRiRloxg077noH//
dYGmfaFkv+emdq0jTR2sbzrwz2F3RQJEJGy4ImHD5YHE7Mi2SCCwx0XCQOTR5rV7X8uEw9Xm9YefLGfmiad
Gzp8YDipyWCnciIgcTVr6Y0RDRut+Fb5IC4QvfGmjudUj0Bhe39ywr69FdDl8zPSqvbA6ruMA08vWi04Zey
QouFoFBle75zhwJ+/
bJxoc4toeEw0gbcNFNLC0tIa4EvctH4ag0ZiwB5LzDvn7SOcUbkREDoZlhVsYon0oGvcFjPb9KtoEjoZ24a
NdWIm2hHSw3godeHmdCZHLFZFLII6W5zj8rlTIGBQJDO62rRZtWirab28VProLLTZ7zKpepDMKNyJy9AoGs
AcawFcTGTkSCj+3eQRbLVuRUSettocC4X4W/nrw10GTN7Lshaa68LO/PrK+/
XZv+Lmr0SKdiV4eaRU2WoKC0w3xqe1CREfP7rbhonW/
jTYBxh15n677WawoLmbWrFm9+hghn49gRQWBykqs5mYc6enYUzKxJSZi+nGfDjmyKdyISN+xrHCrha8GfNX
QWN3FcuR162W/l5MAFh+i8jkilzTiPOBKCi8npENqYbiPRpwn/
Oxq3Uk0Yf9WkTbb3OH19iPz168VChGsqSFYWUmgoiIcXCoqCVZWECivIFBZQbBi37ZQfX2H5zEuF/
aMDBwZGdgz0nGkZ+DIzMAefU7H0bI9LQ3jOPz1YTU307x7N807dtK8cyfNO3YQ2L0bW3ISroICnAUFOPMLc
OYPwhYXd9jKFWpowAoGMXY7OBzhZ5tNYbEXjsyfLhE5MoRC+y6lREeZtL6c0mpdm+GuDZ2vaz9CJejvugwu
D7hTwy0Z7lRIG7Jv2Z3Cpu07GT5yVHgkSfuHzd5unT3cctFmmz0cTlxJkbCSGAksniM2gMRCqKmJpvXr8a1
cSeOqVTStWUtmaSlr6+shENj/
AJsNe1pauGUmM4P4iRPDoSUjE0dGOvb0DIzTEQlFlQQqysMhqLKC4N5ymtatJ1hRgdXccd8de2oq9owM7Gm
p2FNSsaemhJ9TUsLbWp5T9702bneXf/BDjY3h0LJz574A0+oR2LMn/
B1vXY6MDEK1tfuV05GdHQ47Bfm4Cga3Wi7AkZMTDiBdsAKBcL2U7yVYXk6gvJzA3r0E9rZajqy3Gho6PklL
0LHbMZFHy7ross0GDns4XCYlY09OxpachD05BXtyErbk8Lrw+rbLPQlwViBAqLGRUEND9GE1NLRa12pbYwN
Z3/oWxuXq9ryx1n9/ckUGEssK98Voc+kkctmkqbbNJZRQfTXByipCdbU4kyxslq/
zuTcCvt6XxebYNxIl2pkzshyfvq8FwxVpzYiElGhgiQaXVCx7AoHqmsgfgL3RPwLBDeWRdVupDQap+uKJJJ
16Ko7MzJhWa1cClZV4FxVTt2ghzaU7wGYwxhYZhtuzZUz4tXE6cOTk4hpcgHNw+A+nq6AAW0JCTMoa8vtpW
rce36qV+FatCoeZ9RuiIcaeloZ73DiaUlMZPGFCOKy0tKqkp+PIzAyHiW7+gHfHsixCXi+B8vJOW4aCNTU0
l5biW7WKYHU1lq/
z76BxufYLPmCi4SVYVdX2AIcDZ04OzkGDSJw5E2f+IJz5+TgHDcI5aBCOvDxsLhdWKERg716aS0tpLi3FX1
pKc+kOmktLaViyhNpX/
t02FDmdOPPycBXk48wvwFNdzc7XXm8TWIKVleGf03Zsyck4srJwZGYSP3EijsxMHFmZ4HBAMIgVCGIFAxAI
YgWDEAyE14WC0XUdbm9qIlhXh3/rFoI1tQTr6rAau54/
x8TF7QtCSUlYoRChhnqsVoHF8nfzn5E2H85G+te+hkPhRmQAsqxwmPDVgK828lwTDiW+6n3rmmrb7hPpD2L
5agl56wk0WgR9dgJNNgI+W3Q56Iu8brIT8NkINbeaCt0GcekO4rLjced5iMsvJK4gA0dGKqazSy1t1iW0Cy
sJPRqNYjU301xWRvOOneFf/
hv3EijfHP4f7d59/4vd749ThD0lBXtWJo6MTJwbNlB2548pM4b4yZPxnHYaSbNPwzVsWMyb8Zu2bMG7cCF1
CxfRuGwZhEI4cnNxjx0b3iEUwrJCELL2Xw4GoNnC6mif5mbq3/9gv0s89szM8OWRwYPDwadgcDQAObKzw/
9Lb1+3fj+
+9RvwrVqFb2U4zPg2bIBIS4Q9JQX3hAl4rr4a94TxxI8fj2PQIIwxbC4uJruXfW56wxiDPSkJe1ISDB3ao2
NCPl/
4Mll1DcHqaoI11ZHX1YRqaghEnoNV1fi3bsMKBnHm5eEeNy4cXPIH7Qsv2dk9CmjGZguHoJwcmD59v+2W3x
/+/rYLPv4dpfgWLiShpob67CwcmVk48/OJnzw5HGCyMiPhJRxm7JmZh/
Vyl+X3E6yrI1hbS6i2lmBtHcHaGkJ1dQRragnV1UaDUKi2Bmx2nLm52BISsCXEY0tIwCQkYItPiKxLwJaYg
C0+PvraxEfWJSRgXK4+u5SmcCPSGcsKt3i09PFo3dejuTFyDxV/q/up9GQ5/
Dy9ai98GtoXVDrpkBoKQqDBTrMvjma/h0CTm2afk+Z6Q6DeIthgJ1DvgWDi/
gcbgz3Zgz0tFUdhOu6sLOyZ2eFfqukZ2NxxNG3eQtPatTSsX0/t6l3ALgDs6enEjR6Fe/
QY4sYU4R49Gtfw4dh6+D+wfeFlR5uHf8eOcKDZvXu/ywHG5QqXLSsTZ1Eh8dOn4cgM/xFwZEeeW/
4gtCpH8aJFHJeXR91bb+F9ayF777+fvfffj6uoKBp04qdOPaBWBysYpPHTz/
AufIu6hYvwb94MQNzYsWR+61t4TjsV97hxMfkFblkWwerqcGtBSQn+klKaS8PPjUuXUvvvtq0FxumMXBopw
DW4ACsQxLdqFU3r10cvqdhSUogfP46MK6/EPX487gkTcOYPOqr6btjcbmxudzhoHCGMy4WrsBBXYSEd/
ORRfAAdsw8H43JF+zn1dwo30r8F/
B23grQOKx11XG1Z1+NRMCYy9bgrMuy1ZRryDpad8fhd6Vi5Qwj442husBPwWjTXBWiubqK5qoFARS3N5VUE
q2rafyDsaUk48nJxFmTjbt1hs9UlBEd6eq87aQarq/GtW0/
TunX41q2lad16qv7xD6ymyIRpDgdxQ4cSN2YM7jGjiRs1GuN0tgovpZ2HF5sNR24OrkH5JB57bOR/
1Pk4B+XhyA4HLlty8oH90TUG95gxuMeMIeuGG2guK6Nu4UK8by2k8qmnqPzrX7GnpeGZNQvPaafiOeGELi/
3hBobqf/gg3BYKn6bYEUFOBwkHnsMaZdeStKps3Dm5/
e+nN1+DIMjLQ1HWhrxEyfut91qbqZ51y78JSU0two+zSUl1CxfHq6HceNIv+JruCdMwD1+PM6CgqMqyIjEi
sKNHNlCoUjYqIKGSmis3HfZps3lm44u6dR032fE5mjbzyM+DdKHhvt7uFMI+Fz4qwP4K3w07/
Xi312Ff+deQj7/viG1xgA9/QMSAAL46hrYU/
chBNuGJ5vHgzMvF0fuYNxTjgmHmNw8nIPycObm4sjNxeY+NPdqsaemkjjzWBJnHhtdZwUC+LdtCweetetoW
reOho8/pvbll9sebAyO3Fyc+YNIPPaYfeGl5ZGTc9g6FTpzc0m/9FLSL72UoNdL/bvvUrdwEXVvvUXN/
PmYuDgSjz8ez2mnhvvpZGURqKjAW1xM3VsLqX//fSyfD5vHg+fkk/
HMPg3PSSdhT04+LOXvjHE6o60FItI1hRvpkmVZWD5f+BpsXR2O0lJ8a9ZghSJ9BiJzi1gty5bVZlub5WY/
NquJuMHpOFyBcFBpCSwNlZEAU9F2na+66wnLHG6ISw53SHWnhGc1TR3cal1yOLS0eZ0SDTSWI55gRQX+bdv
Cj62R522b8W/
f3qYDnnE6w30fCodgS046qHqtLS+nYPLkcHDJy8WZl4cjLw+7x3NQ540143AQN3w4ccOHk3zOOdH1gaqqcI
fUUDB8aeQwhpfesHs8JJ99Nslnn43V3EzDJ0upWxi+fOUtLqbM3IWrqAj/
tm1gWTjy8ki96CKSZp9GwowZR+RnEpHuKdz0c1YoRMjrJVhbF+4sVltHyFu373VdHaHaOoLezp690Y6IABn
AlhiUy5EQwJ3WjDutmfj0ZtxZdhwZaeHRNAnpkDJx33L755bRNe7k8KRkPRCoqsK/dSv+1dvwb/
0oGmaat20j1HrYpcOBq6AAV1ERicfNxFlUhKuwCNeQIpx5eQc9WqTFhkPccfNQc6Sl4WjVwnM0ME4nicfNJ
PG4mVi33UbT+g14F75Fw/
LlJJ93HkmzTyNuzBhdxhHpBxRujhKh+nqad+8mWLOvZ3uwLtLjvWU50ss9WFsTDia1tYTq6jocftiaSUgIj
2BITsKWmIg9JRFXdhI2F9gdAWwOP3bTiM3y0uTdS7ytOTzcONTc9oqMAYMV7l8Sn4KJT44O8TUJqRCfSigU
h29XPb5te/Ft3oF35a5oORzZWbjHjQt3fBwcfnZkZ/
f4j02ooSHS+rK11SP8OljTqu+K3R6en6KoiIQZM3AVFeEqKsRVVIRz0KA+mUxMDi9jDO7Ro3CPHtXXRRGRQ
0C/xY8CTRs3svXSywjV1na43bjdbSZqcmZlYxsxIjyBU0oytqRk7EmJ2Jwh7HY/
NuqxU4ctWIM9UIFp3AN1ZVC3KnxZqD2bAzy5kJRDuS+HpMGjITEDEjIhIQMSMyPL6eFll6fLKd5bjy4Ier3
4Vq8OP1aFn71vvx0NZPbMTNzjxu4LPWPHYfn94eDSLsgEdu9u8z6O3FxcQ4aQdPZZuIYMCT+KinAVFGCcuk
uviEh/
pXBzhAvW1VH67RsxTieD7v11eKKqVjNL2hLc2PxV4N0NdbsiIaUMvGVQtzm8XF4G28qBdi04xgaeHEjKDU8
nP/hYSMoLv/bkhp+T8sIBJjKfxsoYD3G0ezwkHnssicfuu8QRqq/
Ht24dvpWrIqFnFRWL39tv6DCEO8G6hgwh8fjj9wWYIUW4CgtjNgGaiIgcXRRujmBWKMTOW2/Fv307Rbd/
iYTE5VBZBttaBZiOWlpaQosnB1LyoWB6tOWFpEH7Qkti5hF5h15bYiIJ06aRMG1adF2osTEyYmctxu0mbsg
QnEVFONLS+rCkIiJyJFK46Uawro6aF1/EM/
t0XAWxn9uiDcuCqi1Q+gns+ISKFxbhXVxLztQaEjbeD5vs+1pa0oqgcGarFpbcyLYjN7QcDFt8PPFTphA/
ZUpfF0VERI5wCjedsIJBql98kb0P/D+ClZVUznuSor8/
jTM3N3ZvUl8OO5bCjk9gx5Lwc2N4unnvniT2Lk4ieVoBabfdE259SSmMXh4SERGRjincdKDh448p+8UvaVq
zhvjp00n74a2U/exutl91NUVP/e3Apq5uboRdn0aCTORRtTW8zdggayyMOQ/yp+O3D2bnN+8gblQOeX/
+B0Z9R0RERHpM4aaV5h072H3fb6h77TUceXnk3/9bks4+G2MMzkGD2H7NtWz/
+jUUzXsCe0pKNyfzQcmHsOVt2PIO7FwGofAdeEkugPxpMONqyJ8OeZMhLjwpXMjno/
TSS7FCIQr+8Ht1ihUREeklhRvC86NU/PnPVPzlcTCGzBu/TcbVV2OLj4/ukzBjBgV//COl3/oW26+7jsK/
PI7d02pQczAAu5bD5uJwoNn+IQSbwNjDAeZzN0HBjPByUseXtizLouyun9K0eg0FDz+Eq6jo0H5wERGRfmh
AhxvLsqh95RX2/Oa3BHbvJvm888j+v+/izMvrcH/PiSeQ/8D9lH7nZkpvuIHBd38H287/
wea3Ydt74fsZAeRMgGOugWGnQOHx4Zl0e6D6mWeo+de/yLzhBpJOPTVWH1NERGRAGbDhpvGzz9j981/
Q+OmnuCdMIP+BB0iYNrXrg6q2kpS2g0EXDmXn8/9jx5VvU3BCJSZzKEz4Agw9BYacBJ6sXpenYdkyyn7xSx
JPOZnMG64/wE8lIiIiAy7cNO/ew94HHqDmX//
CnpVJ3i9+QcoFczGdjUIK+OHNu2DtK1C9DYCU1BxCc0dR9tImdlReQv5dDx3UPYcCe/ey4zs348zNJf/
eezsvi4iIiHRrwISbUFMTlU/Mo/xPf4LmZjKuvZaMb3yjbb+ZjrxxJ3z4CIw+B47/
Ngw9GbJGk2YMoVGPs+e++9j14x+Td/fdBxRKrOZmSm+5hWBtLUOe+Uf3HZVFRESkS/
0+3FiWRdyyZWy+5+c0l5aS9PnTyf7+93EVFnZ/8Gf/DAeb478NZ/
58v80ZX7+aUH095Q89hC0hkZzbb+v1HYX3/OY3NC75hEH33Yt7zJheHSsiIiL76/
fhpuwnd5H63HPYRo6k8K+Pk3j88T08cCUsuBGKToDT7+p0t8wbv02ovp7KefOweRLJ/
s53ely2mlf+TeW8J0m7/HJSzj+/x8eJiIhI5/p9uEk+52y2220c+6MfYRw9/LiN1fDc5RCfChf/
Feyd30HaGEP2D28l1FBPxcOPYE9MJOOaa7p9C9+69ey6807ip08n5wff71m5REREpFv9PtwkHnccjT5fz4N
NKATzvwnV2+HKV8M3m+yGMYbcu+4i1NDInt/8FpOQQPqll3a6f7C2ltIbb8Tu8ZD/
wP0YZ+fhSURERHqn34ebXlv8W1j/
Hzj7vvCNKXvI2O0M+tUvCTU2svtnd2NLSCD1ggv2288Khdj5g1tp3rmToiefxJmdHcPCi4iIiMYct7bxTVj
4c5j4JTj22l4fbpxO8h+4n4Tjj2PX7T+i9r//
3W+f8ocfxltcTM5tP+x+Xh0RERHptR6FG2NMujFmvjGm3hizzRjT4TUXE3aPMWaHMabGGFNsjBkf2yIfIlX
b4IVrIGc8nP876OWopxa2uDgGP/gg8ZMns+P/
vof33Xej27xvv035Hx8kZe4c0rq4bCUiIiIHrqctNw8CfiAHuAx4uJPQ8kXgauAkIB34APhbDMp5aDU3hjs
Qh0LwpSfBdXA3q7QlJDD4T48QN3IEpTfeRMPHH+Pfvp0d3/8BcWPGkHvXXb0eMi4iIiI90224McYkAhcBd1
qW5bUsazGwALi8g92HAosty9psWVYQeAoYF8sCx5xlwb+/B7s+hS88ChnDY3Jae3IyhX/+M878fEq+
+S1KvvktMCZ8p+9WN+QUERGR2DKWZXW9gzFTgfcty4pvte57wCmWZZ3fbt8iYD5wCbAF+DkwyrKsCzo473X
AdQA5OTnTn3nmmYP7JF3wer14PJ4Ot+Xt/C+j1z/I1qIvsXXoZTF/b1tVNWm//Q32ikqqv30D/
vFHx1W6znRVl9JzqsfYUV3GjuoyNlSPsdNVXZ566qmfWJY1o6NtPRkt5QFq2q2rAZI62HcX8C6wDggCJcBp
HZ3UsqxHgUcBZsyYYc2aNasHRTkwxcXFdHj+0k/g3cdg+GyGXPYIQ2wHfn+orgROPAF/
SQkJ06YdkvMfTp3WpfSK6jF2VJexo7qMDdVj7BxoXfYk3HiB5HbrkoG6Dvb9CXAMMBgoA74KLDTGjLcsq6H
XpTuU6svhua9BUi5c9Gc4RMEGwJGVhSOr93cKFxERkd7rSYfi9YDDGDOy1brJwKoO9p0MPGtZVqllWQHLsp
4A0jjS+t0EA/D81VC/
F770N0hI7+sSiYiISIx0G24sy6oHXgR+ZoxJNMacAMyl41FQHwNfNMbkGGNsxpjLASewMZaFPmiL7oEtb8N
598OgKX1dGhEREYmhns5QfD3wOLAHqAC+ZVnWKmNMIbAaGGdZ1nbg10A2sBxIJBxqLrIsqzrG5T5wa16GxQ
/A9Ktg6lf7ujQiIiISYz0KN5ZlVQIXdLB+O+EOxy2vfcANkceRp3wDzP8W5E+Hs3/
d16URERGRQ2Dg3H6hyQvPfhUcrvBEfY64vi6RiIiIHAID48aZlgULvg3l6+Hy+ZBS0NclEhERkUNkQISbgt
IFsGk+nH4XDJvV18URERGRQ6j/X5ba+h7DNz0BY86DE27u69KIiIjIIdb/
w83KF2iMz4ULHj7gO32LiIjI0aP/X5Y697csc53CCe72kyyLiIhIf9T/W26ModmV0telEBERkcOk/
4cbERERGVAUbkRERKRfUbgRERGRfkXhRkRERPoVhRsRERHpVxRuREREpF9RuBEREZF+ReFGRERE+hWFGxER
EelX+n24+fO7m/
n9Ul9fF0NEREQOk34fbup8AZbtCeJtCvR1UUREROQw6PfhZmphKhbwWUl1XxdFREREDoP+H24GpwGwTOFGR
ERkQOj34SYlwUleomHZ9qq+LoqIiIgcBv0+3AAMT7WzdHs1lmX1dVFERETkEBsQ4WZEqo3Kej/
bKxv6uigiIiJyiA2IcDM81Q7AUl2aEhER6fcGRLjJ9xgSXXaWba/
u66KIiIjIITYgwo3NGCYPTlW4ERERGQAGRLiB8Hw3a3bV0ugP9nVRRER
E5BAaMOFmWmEagZDFih01fV0UEREROYQGTLiZMjgVUKdiERGR/
m7AhJsMTxxFGQmazE9ERKSfGzDhBsKXpjSZn4iISP82oMLN1MJU9tY1saO6sa+LIiIiIofIwAo3LTfR1JBw
ERGRfmtAhZsxeUm4nTaFGxERkX5sQIUbp93GpPxUjZgSERHpxwZUuAGYWpTK6p21NAU0mZ+IiEh/
NPDCzeA0/
MEQK3fU9nVRRERE5BAYcOFmWmEqgOa7ERER6acGXLjJTnaTnxrPspLqvi6KiIiIHAIDLtxAeL6bZdvUciMi
ItIfDchwM60wjZ01PspqfH1dFBEREYmxARlupqrfjYiISL81IMPNuEHJuOw29bsRERHphwZkuIlz2JmQn6y
WGxERkX5oQIYbgKmFaXxWWoM/
EOrrooiIiEgMDeBwk0pTIMTaMk3mJyIi0p8M2HAzrVB3CBcREemPBmy4yUtxk5Mcp5toioiI9DMDNtwYY5h
WmKaWGxERkX5mwIYbCPe72V7ZQLm3qa+LIiIiIjEywMON+t2IiIj0NwM63EzMT8FhM5rvRkREpB8Z0OHG7b
QzblCyOhWLiIj0Iz0KN8aYdGPMfGNMvTFmmzHm0i72HWaMecUYU2eMKTfG3Bu74sbetMhkfoGgJvMTERHpD
3racvMg4AdygMuAh40x49vvZIxxAW8AC4FcoAB4KjZFPTSmFqbS4A+ybnddXxdFREREYqDbcGOMSQQuAu60
LMtrWdZiYAFweQe7XwnstCzrfsuy6i3L8lmW9VlMSxxjUwerU7GIiEh/
YizL6noHY6YC71uWFd9q3feAUyzLOr/
dvo8DTiATOAZYCdxoWdaKDs57HXAdQE5OzvRnnnnmID9K57xeLx6Pp8NtlmXxnUUNTMx0cO2kuENWhv6iq7
qUnlM9xo7qMnZUl7Gheoydrury1FNP/cSyrBkdbXP04NweoKbduhogqYN9C4BTgTnAW8B3gJeMMWMsy/
K33tGyrEeBRwFmzJhhzZo1qwdFOTDFxcV0df5jty9h815vl/tIWHd1KT2jeowd1WXsqC5jQ/
UYOwdalz3pc+MFktutSwY66qTSCCy2LOs/kTDzGyADGNvrkh1GUwtT2VxeT1W9v/
udRURE5IjWk3CzHnAYY0a2WjcZWNXBvp8BXV/
nOgK13ERzeWl13xZEREREDlq34cayrHrgReBnxphEY8wJwFzgbx3s/
hRwnDHmdGOMHbgZKAfWxK7IsTepIAWbgWXbNN+NiIjI0a6nQ8GvB+KBPcA/
gG9ZlrXKGFNojPEaYwoBLMtaB3wVeASoIhyC5rTvb3OkSYxzMCY3mWUl1X1dFBERETlIPelQjGVZlcAFHaz
fTrjDcet1LxJu6TmqTC1MZcHynYRCFjab6eviiIiIyAEa0LdfaG1qYRp1TQE27vX2dVFERETkICjcREwrTA
XQTTRFRESOcgo3EUMzE0lNcLJ0W3VfF0VEREQOgsJNhDGGqYNTWVailhsREZGjmcJNK1ML09iwx0utr7mvi
yIiIiIHSOGmlamFqVgWfKoh4SIiIkcthZtWJg9OxRjdIVxERORopnDTSrLbychsD0s1YkpEROSopXDTztTB
aSzbXo1lHXW3yBIREREUbvYzrSiVmsZmtpTX93VRRERE5AAo3LQzNXKH8KXqdyMiInJUUrhpZ0SWh6Q4h2Y
qFhEROUop3LRjsxmmFKbGtOUmZIVoDDTG7HwiIiLSOYWbDkwdnMq6slrqmwIxOd99H9/HeS+ehz/
oj8n5REREpHMKNx2YWpRGyILPSmsO+lwltSU8s/YZ9jTuobik+KDPJyIiIl1TuOnA1MGpADGZ7+YPy/
+A0+4kw53Bgk0LDvp8IiIi0jVHXxfgUGsONrPLv6tXx6QmuBiWlXjQMxWvrVzLf7b8h2snXkvQCjJv1TzKG
8vJjM88qPOKiIhI5/p9y80d793BH3b/gTp/Xa+OC0/mV3VQk/
n9bunvSHYlc+WEK5k7fC5BK8irm1894POJiIhI9/p9uPna+K/hDXn5w7I/
9Oq4qYWpVNT7Kak8sFFOH5d9zOIdi7l24rUku5IZljqMCRkTeGnTSwd0PhEREemZfh9uxmeM56Skk3h23bO
sqljV4+OmRSbzW1bS+343lmXx/5b+P7ITsrlkzCXR9XNGzGF91XrWVq7t9TlFRESkZ/p9uAE4N/
Vc0uLSuOeDewiGgj06ZlSOhwSXnaXbeh9uFpYs5LO9n3H95OtxO9zR9WcPORunzclLG9V6IyIicqgMiHCTY
Evg+8d8n5UVK3l+/fM9OsZhtzG5IJVlJdW9eq9gKMjvl/
6eIclDmDtibpttqe5UZg2exatbXqU51Nyr84qIiEjPDIhwA3DO0HOYmTuT3y39HeWN5T06ZmphKqt31uJr7
llrD8CCTQvYXLOZm6bdhMO2/2C0OcPnUOmr5L0d7/X4nCIiItJzAybcGGO4/
bjbaQw2cv+S+3t0zNTCNAIhixU7ejaZX1OwiYc+fYgJGRM4vfD0Dvc5If8E0t3pmvNGRETkEBkw4QZgWMow
rhp/
FS9vfpmPyz7udv+phakAPb6J5jNrn6Gsvoybp9+MMabDfZw2J+cMPYfikmKqfdU9LLmIiIj01IAKNwDXTrq
WfE8+9/zvHpqDXfd7yfTEUZiewNJt1d2et85fx59X/JnPDfocM/Nmdrnv3BFzaQ4185+t/
+lN0UVERKQHBly4iXfEc9uxt7G5ZjPzVs/
rdv+phaks7cFkfvNWzaO6qZqbpt3U7TnHpI9hVNooFmzUpSkREZFYG3DhBuCUwadw2uDT+NOnf2KHd0eX+0
4rTGNPXRO7anyd7lPeWM6Tq5/kzCFnMj5jfI/KMGf4HFZWrGRz9eZelV1ERES6NiDDDcAPj/
0hxhh+9dGvutyvpd/NW2v3dLrPo589ij/o58apN/b4/
c8ddi52Y9eMxSIiIjE2YMNNniePb03+FsUlxSzavqjT/cblJTO5IIWfvLSSee9v3W97SV0J/1z/
T74w8gsUJRf1+P0z4zM5Mf9EXtn0So8nFhQREZHuDdhwA/
DVcV9lROoIfvnRL2lobuhwH4fdxt+vPY7TxmTzkwWruGvBKoKhff1vHlz+IA7j4JuTv9nr958zfA57Gvfw4
a4PD/
gziIiISFsDOtw4bU7uOO4OdtXv4tHPHu10v8Q4B3+6fAZXnzCUJ97fynVPLqG+KcC6ynW8uvlVLht7GdkJ2
b1+/1mDZ5HsStalKRERkRga0OEGYHrOdOYOn8u8VfPYVL2p0/3sNsOPzx/
H3XPHs2jdHr74yAfc+9EDJLmSuHri1Qf03i67i7OHns3C7Qup89cd6EcQERGRVgZ8uAH47ozvkuBM4J7/3d
PtkO/Ljx/CX648hm31K/ho93ucW3gZya7kA37vOcPn4Av6+O/W/
x7wOURERGQfhRsg3Z3OzdNvZsnuJbyy+ZVu9581Kosx497FBFN46r8FvLl69wG/
98TMiQxJHqLbMYiIiMSIwk3ERSMvYlLmJH6z5DfUNHV9L6nikmLW16zkluk3MCIrnWv/toTHF2/
pttWnI8YY5o6Yy9I9SympLTnA0ouIiEgLhZsIm7Fxx3F3UN1UzR+W/aHT/YKhIL9f9nuGJA/
h8olf5JnrjuOMcTn87JXV/GTBKgLBUK/f+7xh52EwLNis1hsREZGDpXDTytiMsVw65lKeW/ccK/
au6HCfVza/wsbqjdw49UYcNgcJLgcPXzad604expMfbOOaJ5dQ5+v6nlXt5Sbmclzecby86WVCVu/
DkYiIiOyjcNPODVNuIDM+k7v/d/
d+k+s1BZt4cPmDjM8Yz+eLPh9db7MZbj9nLL+4cCLvbijni498wM7qxl6975wRc9jh3cEnuz+JyecQEREZq
BRu2vG4PPzgmB+wpnINz657ts2259Y9x676Xdw8/WaMMfsde+nMQv565THsqGpk7oPv8VlpdY/
fd3bhbBKdiepYLCIicpAUbjpw5pAzOS7vOP6w7A/sbdgLgNfv5bHPHuO4vOM4Lu+4To89eVQWz3/
rc7jsNr70pw94fVVZj94z3hHPGUVn8N+t/+10tmQRERHpnsJNB4wx/
Gjmj2gKNnHfkvsAmLd6HlVNVdw87eZujx+dm8S/bjiB0bnJfPOpT3jsnc09Gkk1Z/
gcGgINvLX9rYP9CCIiIgOWwk0nhqQM4esTv85/tvyHVze/yrxV8zij6AzGZ47v0fFZSXE8c+1xnD0hl5+/
uoYfPP8Z5d6mLo+ZljONfE++bscgIiJyEBRuuvD1CV+nwFPAre/eij/o58apN/
bq+HiXnT9+ZRo3nDqcF5aWctKvF/HL/
6yhst7f4f42Y2Pu8Ll8tOsjyup7djlLRERE2lK46YLb4eb2mbcDcMGICxiSMqTX57DZDN8/
cwxvfvcUzhyfw6PvbOakXy/kvtfXUt2wf8g5f/
j5WFi8vOnlgy2+iIjIgKRw042TCk7i6XOe5raZtx3UeYZlefh/l0zljVtO5tQx2Ty4aBMn/
XoRD7yxnprGffPiFCQVMD1nOgs2LTigGY9FREQGOoWbHpiUNYk4e1xMzjUiO4k/
XjqN124+iRNHZvK7tzZw0q8X8oe3NkQn/
5s7fC5ba7fyWflnMXlPERGRgUThpo+MyU3m4a9O5983ncjMYRn89o31nHTvIh4q3sgJeafitrtZsFFz3oiI
iPSWwk0fGz8ohce+NoMF3z6BqYNTufe1dZz9wMcUuWfyny3/oSnY9QgrERERaUvh5ggxqSCVv151LC9e/
znGDUpm2ZoR1DXX8eM3nsPXHOz+BCIiIgIo3BxxphWm8bevz+TvX70Mp5XGgk0vccp9i3jyg600+hVyRERE
uqNwc4SaOTSLKyZdhMuzgfz0AD9+aRUz7nmD7z67nEXr9tAc1N3DRUREOtKjcGOMSTfGzDfG1BtjthljLu3
BMQuNMZYxxnHwxRyY5gyfQ4gQc04s49nrjuP8yYN4c81urvrrx8z8xVvc+a+VLNlaSSikIeMiIiIteho8Hg
T8QA4wBfi3MeZTy7JWdbSzMeayXpxbOjE0ZSiTMiexYPMCrjj/CmYOy+Cnc8fz9rq9LPh0J//8pIS//
W8b+anxzJkyiLlTBjEmN7mviy0iItKnug0gxphE4CJggmVZXmCxMWYBcDnwww72TwF+AnwN+CC2xR145gyf
wz0f3sPayrWMzRhLnMPOGeNzOWN8Lt6mAG+sLuOl5Tt59J3NPFy8idE5ScyZMog5kwcxOD2hr4svIiJy2Jn
uZsE1xkwF3rcsK77Vuu8Bp1iWdX4H+z8IbATmA1sAp2VZgQ72uw64DiAnJ2f6M888czCfo0terxePx3PIzn
8o1QfruaP0Dk5IOoGL0y/udL9av8XHZQH+tzPAhupwf5wRqTaOy3NwbK6D5DgTk/
IczXV5JFE9xo7qMnZUl7Gheoydrury1FNP/
cSyrBkdbevJpSMPUNNuXQ2Q1H5HY8wM4ATgO0BBVye1LOtR4FGAGTNmWLNmzepBUQ5McXExh/
L8h9pbxW+xpGwJD5z0AE67s9P95kSeSyobePmznSxYvpOn1tTxj3XNnDAik7mTB3HG+ByS3J2foztHe10eK
VSPsaO6jB3VZWyoHmPnQOuyJx2KvUD7jhzJQF3rFcYYG/AQ8J2OWmrkwM0dPpeqpip+t/
R3bKvd1u3+g9MTuH7WCF67+WReu/kkvnHyMDbt8fJ///yUGfe8yQ1/
X8obq3fjD2jElYiI9D89ablZDziMMSMty9oQWTcZaN+ZOBmYATxrjAGwR9aXGmO+aFnWu7Eo8EB0Qv4JfG7
Q55i3eh7zVs9jeMpwTis8jdmFsxmXMY5IfXdoTG4yY85K5vtnjmbp9ir+tWwnr3y2k39/
tovUBCfnTMzjgin5zChKw2aLzaUrERGRvtRtuLEsq94Y8yLwM2PMNYRHS80FPtdu1xpgUKvXg4GPgOnA3pi
UdoBy2Bz86fN/Ypd3FwtLFrJw+0IeX/
k4j614jJyEHE4rPI3TCk9jes50nLaOLzkZY5helM70onR+fP443t2wl38t28mLS0v5+4fbyU+N5/
zJg7hg6pE54srr9/L8+uf55/p/
MsgziOsmXccxucf0dbFEROQI1NPh2tcDjwN7gArgW5ZlrTLGFAKrgXGWZW0HyloOMMa4I4u7dZkqNvI8eVw
29jIuG3sZ1b5q3i59m7e2v8WLG17kH2v/QbIrmVMKTmF24WyOH3Q8Cc6OR0s57TZOG5PDaWNyqG8K8N/
IiKvH3t3MI29vYkxuEnOn5DNnyiDyU+M7PMfhUt5YzlOrn+K5dc9R11zHtOxpbKjawNWvX830nOl8c/
I3mZk7s8vWKxERGVh6FG4sy6oELuhg/
XbCHY47OmYroL84h0iqO5W5I+Yyd8RcGpob+GDXByzcvpDikmJe3vwycfY4jh90PLMLZ3NKwSmkudM6PE9i
nIMLpxZw4dQCyr1N/PuzXfxr+Q5+/dpafv3aWo4dms4FU/I5Z2IuqQmuw/
b5ttVu44lVT7Bg4wKaQ82cXnQ6V0+4mgmZE/AFfLyw4QUeX/
k41/73WiZnTeYbk77BifknKuSIiIgm2usPEpwJzC6czezC2TSHmlm6eykLty9kYUk47NiMjek50zk+73gy4
zNJjUslzZ0WfU5yJWEzNjI9cVzxuSFc8bkhbKuo56XlO/
nX8h3cPn8FP1mwklmjsxlEM7lltYzMTsJ+CProrCxfyeMrH+fNbW/itDmZO2IuV46/
ksLkwug+boeby8ZexhdHfZF/
bfwXf17xZ65/63rGZ4znG5O+wazBsxRyREQGMIWbfsZpczIzbyYz82byw2N/
yOrK1eGgs30hv1/2+w6PsRkbqXGp0UdL8ElNTeVrZ6ZS3+hmVUmAjzbt4s3qJOatfpekOAdTClOZVpjG9KI
0phSmknyAQ8wty+K9ne/
x+MrH+bjsY5JcSVwz8RouHXspmfGZnR7nsrv40ugvceGIC3l588s89tlj3LToJsakj+G6Sdcxu3A2NqPbp4
mIDDQKN/
2YMYbxGeMZnzGeG6feSENzA1VNVVQ3VVPtqw4vt39uqmZb7TY+bfqU6qZqAqFW3aWywZMNHkcabiufjfXZf
PhJGoH3crH8OYzKymBaURrTClOZXpTG0MzELltQAqEAr299nb+u/
CvrqtaRnZDN92Z8j4tHXUyiM7HHn9Npd/KFkV9gzvA5vLrlVR777DG+W/
xdRqSO4LpJ13FG0RnYbfbuTyQiIv2Cws0AkuBMIMGZQL4nv0f7W5ZFfXN9NPxU+ip5a9lbhNJDbKzeyCbeJ
87tIw4AQ7mVyStl2bywJZuQLxePrYCpeSOZUZTF9KI0JhekEu+y09DcwPyN83ly1ZPsrN/
J8JTh3H3C3Zw79NwuJynsjsPmYM7wOZw79Fz+u+2//OnTP/GDd37AQ8kPcd2k6zh76Nk4bPrKi4j0d/
pNL50yxuBxefC4PAxOGgyAtcli1omzAAiGguzw7mBD9QY2VG1gY/VGNlRtYGvtO4SsIEFgiWXnw/
VZhFbkYPnzyEo2NLrfxW95GZs2iVuP+SGzCk+J6eUju83O2UPP5swhZ/Lmtjf502d/4vbFt/
Pwpw9z7cRrOW/4eZ0OmRcRkaOfwo0cMLvNTmFyIYXJhcwunB1d7w/
62VKzhQ3VG9hYtZHV5etYV7mBSv+n1ACWdzyNe0/
iozVDWLvUz+TBHzN1cCpTClOZMjiN9MTYjMqyGRtnDDmD04tOp7ikmD999id+/
P6PeXD5g5w15CzOGHIGEzMnqvOxiEg/
o3AjMeeyuxidPprR6aPbrPf6vTQGGkl3Z7Jpr5fl26tZVlLN8pJq/rhoI6HIPVwL0xOYMjg1/
ChMZfygZOIcB95nxmZsnFZ4GqcOPpXFOxbzzLpneHrt08xbPY/
cxFxOLzydM4acweSsyeqAPMB8uOtDHvjkAa6bdB2nFZ7W18URkRhRuJHDpuUSF8ConCRG5STxpWPCl7vqmw
Ks2FHD8pJqlm+v5qMtlSz4dCcATrthXF5yNOxMKkhlaEZir28XYYzhpIKTOKngJGr9tbxd8jZvbHuD59Y9x
1NrniIrPovTi07n80WfZ1r2NHVC7ude2/oat797OxYW31n0HW6ceiPXTrxWLXki/
YDCjRwREuMcHDcsg+OGZUTXldX4WF5SFW7d2V7NPz8pZd4H4RuHeuIcjBuUzIRBKUwsSGZifgpDMz09nnsn
2ZXM+cPP5/zh51PfXB8NOi2zPae70zm98HQ+P+TzzMiZoY7I/czf1/ydX330K6ZmT+W+U+7jt0t+yx+W/
YENVRv42Qk/I97RtzNzi8jB0W9sOWLlprg5KyWPsybkARAIhtiwx8uKHTWs3FHDih01/P2jbfjeC9/
dPMFlZ1xeMhPyU5iYn8KE/BSGZyXisHd9qSnRmcg5w87hnGHn0NDcwLs73uWNbW/
w8uaXeW79c6TGpTK7cDafL/o8x+Ydq87IRzHLsvjDsj/w2IrHOHXwqdx78r24HW5+ddKvGJU2it8t/
R3barfx+9N+T25ibl8XV0QOkMKNHDUcdhtj85IZm5fMl2aEL2cFgiE27a1vE3ie/
biEJ97fCoDbaYsGnpbQMyLbg7OTwJPgTODMIWdy5pAzaQw08v6O93l92+v8Z8t/
eGHDCyS7kjl18KkMSRlCIBQgaAUJhoJtnqPrWy+321ZdUc3GFRuZkTOD8RnjD2oIvPRMIBTgZx/
8jPkb53PRyIu447g7oi1yxhi+PvHrjEgdwa3v3solr1zC/zv1/
zEle0rfFlpEDojCjRzVHHYbo3OTGJ2bxMXTCwAIhiw27w238KzYUcOqHbW88EkpT0YuabkcNkZkeRiTl8SY
3CRG5yYzNjeJrKS4Nv0t4h3xzC6azeyi2TQFm3h/x/u8se0N3tr+Ft5mb3Q/
u7GHHzY7DuPAbuv4tcPmiK4vby7nd0t/F32fSVmTmJEzg+k505mUNYk4e9xhrMWeC4aCrK5YzeKdi/
lg5wckOBI4b/h5nDb4tE5v1HokaAw08oO3f0BxaTHfmPQNbphyQ4d9a04ZfApPn/
M0Ny68katfv5qfHP8T5o6Y2wclFpGDoXAj/
Y7dZhiZk8TInCS+MC0ceEIhi83l9azaGW7hWVtWx+IN5by4dEf0uLQEJ6NzkxiTmxwJPeFOz4lxDuLscZxa
eCqnFp5KMBQkYAWioeZAOqAWFxczceZElu5Zyie7P2FJ2RIeWv4QFhYum4uJWROZnjOdGTkzmJw1uU+DQ3l
jOe/vfJ/FO8KBprqpGoNhQuYEttZu5bZ3byPBkcDniz7PnOFzmJE744gadVbTVMO33/o2n+79lB/N/
BGXjLmky/2Hpw7n7+f8ne+9/T3ueO8ONlRt4Jbpt6iDuchRROFGBgSbzTAi28OIbA9zp+ybobmy3s/
aslrWldWxrqyOtWV1PLekhAZ/MLpPYXoCY3L3tfKMzk1iSEYCDtvB/QHPiM/g80Wf5/
NFnwfCf4SX7VnGkrIlfLL7E/
6y4i88+tmjOIyDcZnjmJEzgxk5M5iaPTU66uxQaA418+meT3lv53u8t+M91lSuCZfXncHJBSdzYv6JHJ93P
KnuVEJWiKW7l/Ly5pd5fevrvLTpJXITczl/2PmcN/w8hqUMO2Tl7Imy+jK+
+cY32V63nd+c8hvOGHJGj45Ldafy8Ocf5jcf/
4Z5q+exsWYj9558L8mu5ENcYhGJBYUbGdDSE118bngmnxu+7wadoZBFSVUDayOBZ11ZHWvKanlzze7oXDxO
u6EwPYFhWR6GZSUyPDP8PCzLc8CTEKbEpTBr8CxmDZ4FQH1zPcv2LIu27Dy5+kkeX/
k4NmNjTPoYRqSOIMOdQUZ8BunudDLcGaTHh59T3am96vi807szGmb+t+t/
1DfX4zAOpmRP4TvTvsOJ+ScyKm3Ufi0yNmNjRu4MZuTO4IfH/pDikmIWbFrAX1b+hcdWPMbEzImcP/
x8zhpyFmnutAOqlwO1qX
oT33jjG9Q31/PI6Y9wbN6xvTreaXNy28zbGJk2kp//7+dc9u/
L+MNpf2BIypBDU2ARiRmFG5F2bDZDUUYiRRmJnDl+34gZX3OQjXu8rC2rY+MeL1vKvWzeW8/b6/
biD4ai+6UmOBmWmcjQSOAZHgk9RRkJvZqMMNGZyIn5J3Ji/olAuN/IZ3s/Y8nucMvOR2UfUdlYiT/k7/
D41LjUcOhpHX7c6dEAZDd2Piz7kPd2vMfmms0A5CXmcc7Qczgh/wRm5s7sVQtRvCOes4eezdlDz6a8sZx/
b/43L296mV98+Avu/fheTs4/mTnD53BSwUm47LGZhbozy/cs54a3bsBld/HEWU/sN6Fkb1w86mKGJA/
hu8Xf5dJ/X8pvTvkNn8v/XAxLKyKxpnAj0kNupz066qq1QDDEjupGNu+tZ9NeL5vL69m818u7G/
bywtLS6H42AwVpCQzLSiTO18TuxO2Mzk1mZLaHxLjufxTjHfHMzJvJzLyZ0XUtNzet8FVQ6aukonHfc+t16
yrXUeGroM5f1+acLpuLGbkzuGjkRZyYfyJDU4bGZBK7zPhMrhh/BVeMv4J1let4edPL/
HvLv1lYspCUuBTOGnIWc4bPOSS3vyguKeb7b3+fnMQcHjn9EQqSCg76nDNyZ/
CP8/7BTQtv4ltvfYvvzfgeXx371T6d8K+mqYZP937Ksj3LWLZnGTZj4/
xh53PmkDOP6M7dIoeDwo3IQXLYbdGWnlPHZLfZVudrZkt5PVvK69m0Nxx6Nu+tZ+PuAK9vWxHdb3B6PKMjs
za3jP4alunB5ei6X0/rm5sWJRd1W1Z/0E+lr5JKXyWNgUbGZYw75BPWtdyK4+bpN/O/Xf9jwaYF/
Gvjv3h23bMUJhVyXN5xTM2ZyrTsaeQl5h1UYJi/YT4//eCnjEkfw0OnP0S6Oz1mnyPfk8/fzv4bty+
+nXs/vpf1Veu587g7D3krFIRDbGldKcv2hoPM8j3L2Vi9EQCHcTA2Yyx1/jp+/
P6P+eVHv+SsIWfxhZFfYHLWZM24LAOSwo3IIZTkdjKpIHzLiNYWLlrE8EnHsrasjvVldazbXcf63XUUr9tL
INKxx2EzDM1MZFRuEmNykhiVm8TonCQGpyf0eCbm9lx2F7mJuX0yQZ3D5oheZvP6vbyx7Q1e3/
Y6r255lefWPwdAdkI207KnMTV7KtNypjEydWSPRilZlsWfV/yZ3y/
7PZ8b9DkemPXAIWm9SHAmcP+s+3n404d55NNH2FqzlQdOfYDM+MzuD+6F5lAzayvWhoPM3uUs3b2UCl8FAE
nOJCZnT+bsoWczNXsqEzInEO+Ix7Islu9dzosbXuS1ra8xf+N8hqYM5cIRF3L+8PNjXkaRI5nCjUgfsJmO+
/X4AyE2l3tZVxYOO+vKvHxWWs2/
P9sV3cfttDEqJ4mhmYkUpicwOD2BwWkJFGYkkJvsPuDgczh5XB4uHHkhF468kGAoyMbqjSzds5Rlu5exdM9
SXtv6GhDudzQlawpTs6cyNXsqE7Mm7tfSFLJC/OqjX/H3tX/
n3GHncvfn7j6kkyLajI0bptzAiNQR3LH4Di555RK+N+N7JDoTu5zbqKP1Dlt4XSAUYFX5quglppXlK/
EFfUC4xej4QcczNXsqU7KnMCJ1RIdD7Y0x0Xr64bE/5PWtr/Pihhe5/5P7+f3S33NywclcOPJCTsw/
UbcTkX5P33CRI4jLYYvMs9N2yHF9U4ANe7zRVp51ZXV8sq2Klz/
dGR3BBeFRXPmp8eHAk54QDj9pkef0eFLinUfcZQq7zR69dPWVMV8BYJd3Vzjs7AmHnQeXP4iFFb0EMzU7fB
lrfOZ4nih/gmUNy/jauK/
xfzP+77DNsXPmkDMpTCrkpkU38f13vh+Tc9qNnTHpY7h41MVMyQ6HuuyE7O4PbCfRmcgXRn6BL4z8ApurNz
N/43wWbFrAwpKFZMZnMmf4HC4ccaFGfkm/
pXAjchRIjHOE74o+OLXN+uZgiJ3VjZRUNrK9soHtlQ2UVDVQUtnAyhW7qGpobrN/
ktvRJuzkpcQzKNVNXko8eSluMj1xvb7b+qGQ58njXM+5nDvsXGD/zrPPrH2GJ1c/Gd3//6b/
H1dOuPKwl3NsxlhemvsSW2q2dHvLjZbJHztab2ExOm00EzInxPxy2rDUYfzfjP/
jpmk38U7pO8zfMJ8nVj3B4ysfZ1r2NC4ceSFnFJ1xVHdCDlkhSupKWF+1Hq/
fG50qoS9uaxIIBagP1hOyQkfUZJYDjcKNyFHM2aozc0fqfM3R4FMSCT7bKxvYsKeOhev24A+E2uzvsBlykt
1tAk9eipvcViEoI9F12ANQSlwKJxeczMkFJwPhjtGrK1azfM9y6kvq+yTYtEhwJjA+c3yfvX9POW1OZhfOZ
nbhbPY07Il27L7zvTv51Ue/4qwhZ+Gqc5GwK4HBSYPJScw5Iv84e/
1e1letZ33VetZVrWN95Xo2VG+gMdDYZj+nzcnItJGMTR/
LuIxxjMsYx8i0kTG7tYllWZQ3lrOhagMbqjewvmo9G6o2sKl6E/6Qnx/
97Ufh6Rji08NTMMSlR5fT3GnR6Rlalj1OT5+1qjYFmyirL6Osvoxd9bvYVb+L3fW7ibPHkRGfQWZ8Jpnxmd
F5tTLcGUf8/fAUbkT6sSS3k3GDnIwbtP/MupZlUVnvZ1eNL/
JoDD9Xh5+Xl1Tz2kpfmzl8AFx2GzkpceSlxFOQFk9ReiJDMhMoykhkSEYCqQmHfvSQy+5iSvYUpmRPobi8+
JC/X3+TnZDNNROv4esTvs7SPUt5ccOLvLrlVRoDjfzjv/
8AwuEg35NPYXIhg5MGRx8FSQUUeAoO+SixkBWitK40GmLWVa5jfdV6dnj33TIl2ZXM6PTRfGHkFxidNppR6
aNIdCSytnItqytXs7piNW9se4MXNrwAhEeWjUgbEQ08YzPGMjptNG6Hu8uyNDQ3sLF6435BprqpOrpPVnwW
I9NG8pUxX6F2Vy2ZBZnRkYmVvkpWeldS5atqc1+61pw2J2nutOh8VMmu5OhIyCRnUnjZ6dm33ukhybVvfWd
BNGSFqGisiIaW9iGmrL6MSl/lfselu9NpDjXvN31Ei5S4FDLd4dCTHp/
eJgBFlyNzbPVFSFa4ERmgjDFkeOLI8MTtN3dPi1DIorLBz67qVuGnJQhV+/
hgU0Wb+3MBpMQ7KcrYF3bCLUsJFGUkkOWJO+L6/Axkxhim50xnes50fvq5n/Kvt/5F/
vh8SupKKK0rZXvddkrqSvi47OM2LSMGQ25ibpvAMzhpMBnuDEJWiKAVbPPc8mi/
Phhq+7o51MyWmi3R8NAQaADCnbiLkouYkDmBi0ZexOj00YxKG0VOQk6H36chKUM4a+hZQDjE7/
DuYE3lGlZXrGZNxRqKS4qZv3E+EO7nNDRlaLR1Z1TaKCp9leEgEwkzJXUl0XPHO+IZmTqS2YWzGZk2kpGpI
xmZNrLNDNzFxcXMmjarwzpvCjZR5atqE3wqGyupbIo8R9aV1JXgbfZS56+jOdTc4blaS3QmhsNOJPQYDLsb
drO7YTeBUKDNvvGOeAYlDiI3MZex6WPJS8wjz5NHbkIueYl55CTmRMNrU7ApPG9WYwXljeWU+8qjyy3zaa0
sX0l5Y/
l+rWcA73z5ncM+Ozko3IhIF2w2Q6YnjkxPHBMLOg5AvuYgJZUNbK1oYFtFPdsqGthaUc+nJdX8+7O2HZ4TX
PZw2ElPoCgzgaL0xOjlrtwUN8luh8JPH3HYHGQ6Mzl+0PEcz/
FttlmWRYWvgtK6UkrqSiipK4kGn0Ulizr8n/+BSnImMSp9FBeMuCAaYoanDj/
g+ZiMMeHWpqSC6H3cLMtid8NuVlWsYk1FOPS8t+M9FmxaED2uJVCNTR/
LnOFzGJk2klGpo8hPyj+olog4e1yvp2NoCjZR56/
D6w+Hnbrm8HJL+PE2e6PbWpabQ81MypoUDi6RR8v7JruSe/
xzFmePY5BnEIM8g7rdt6G5IRx8WgWglLiOf28cago3InJQ3E579C7s7fkD4dmbW4eebRWRPj9r9+x3ySvBZ
Se3pZ9PcqTPT2rb16kJR96Ir/
7OGBO91DAle8p+271+L6XeUqp8VdiNHZuxYbdFnk0Xz7Z9r23GhsM4SIlLOeT/vsaY6B/
62YWzo+v3NOxhQ9UG0txpDEsZ1u3lqsMlzh5HXHzcET9XUYIzgQRnAoOTB/d1URRuROTQcTlsDM1MZGjm/
h2egyGLslofZZHLXWWRS15lNT521jTy/
qZydtf62rT8AMQ5bJFOzuEWn6ZqP5scW8hOiiM7KY6spDiyk914enBLC4kNj8vDmPQxfV2Mg5adkH1AQ+/
lyKOffhHpE3ZbeE6e/
NTOLzcEgiHKvX521TTuCz+1vmjH54+2VFJW08yrW1bvd2yCy74v7CS5yYouh8NPlieO7OQ40hMO/
+gvETm0FG5E5IjlsNvIjbTSdGbRokVMOfYE9tQ1sbeuiT11vlbLTeyp9bGmrJZ31jdR1xTY7/iW4e/
hS2D7hr+3zAGUm+ImM/HImP9HRHpG4UZEjmrGGNISXaQluhidu3+/n9Ya/UH21PnaBJ/
ddU3sjlwK+6y0mtdX+fab/6f18PfWwafldU6ym/RE11Fx6wuRgUDhRkQGjPiW0VqdTHoIbef/2Vm9//
D3T7ZVsbt2F83Btp2B7DZDRqIrevmr5bJXlieOrFaXxbKS4tQfSOQQ00+YiEgrPZ3/p7y+KTr/
T7gVKHwpbK83/
Lx2Vx3l3qboXd5bS3DZowGoJfDkJLvJTXZHL8PlJrtJVAgSOSD6yRER6SWbzZCd5CY7yc3kdvf7ai0Usqhq
8EcDT5tHZN2GPV7e21hOrW///
kBJcQ5yIn2A2oSfViFIHaJF9qdwIyJyiNhs+1qBxnQzZ1ujPxgZGu9jd2RE2O7I6121PjbsLmdP3f5D4532
cNDKSd43KmzfkPg4sjzhdZkeFw77kXevKJFDQeFGROQIEO+ydzonUItgyKLc2xSdD6h1CNpd62PTXi8fbK6
gpnH/6fqNgfQEV5u+P+3D0E5viJqGZpLjNVO0HN0UbkREjhL2yLD1nGQ3dDEJbFMgSLnXz57afSPDWj/
vrfOxaY+Xvd6m/
TpG3774vzjthozEODKTXGR64qLLWZFbcWR64sjwhLdplJgciRRuRET6mTiHvdsJEiE8Mqy6oZm93nCH6Hc+
Xk724GGUe/2Ue5uo8DZR7vWzrqyOCq9/
v9tlANgMpCe6yEgMB57wsov0xDjSPS3L+55TExSG5NBTuBERGaBazxE0KieJwA4Hs04a1uG+lmVR6wtQ7m2
ivK6Jinp/
dLm83h9dt2pnLRXepg47SEM4DKUmhINO69CTkeiK9E+KtBAlhVuIdDNVORAKNyIi0i1jDCnxTlLinQzP8nS
7f3MwRFW9n4p6P5WRIFQZWa6o91PpDS+v311HZb2f6sZmrP1HzeNy2CKXw1yRjtEtDxdZSW4yPS4yI32Gku
IUhCRM4UZERGLOabeRnewmO7lnd9YOBENUNTRTUd9EeZ2fvV4f5XXhUNQybH5HtY9PS2uo8DbtN2oMwkEoM
9FFusdFWqvWofSEcOtUemJ4fUZke1qCUyPI+imFGxER6XMOuy06iotuhs23nj+oJQCVRwJQuddPVUO4VWh7
ZQOVXn+H9xRrkex2kOGJIy3BGQ0/aYkuUhOcpMaHA1BKgpO0hPC6tAQXbqc9xp9eYk3hRkREjiqt5w/
qLggB+AMhqhv8VDZELoc1+Kmq91NZ30xlfROVDc1U1fvZWe1j5Y5aqhr8NAX27zzdwu20kRofCUDR4NMSfp
zsLm0muGY36Yn7RpQluOy6ZHYYKdyIiEi/
5nL07hIZgK85SFWDn+qG5uhzy3JNYzgMVTU0U9PoZ8Meb2S7P3q7jb+sXNLmfHEOWzTopCeGL421jCrLaDO
qLPxaYejgKNyIiIi043baI3d973o4fWuWZVHvD/Kft95h5MRpVNaHL5NFO1J7/
VTUhztWb9zjpaK+CV9zxy1ETrsh2R3uwJ0ceaTEO0l2O6LrUqLrWvYLb0tyOwf8cHuFGxERkRgwxuCJc5CV
YGNKF/
cca63BH6CiVQBqGVVW09gcfdT6AtQ0NlNS2UBtZF1HN2RtLcntaDPcPi3BFZ13qKVTdXpiHOmR9Yn9rKVI4
UZERKSPJLgcJKQ7GJye0ONjLMuisTm4L/
w0Blot7wtFLYFpR6QvUWV9xxMxQvjSXXrrEWaRTtXJ7nCLUPh5X0tRy7okt+OIHHGmcCMiInIUMcaEQ5HL0
evLZt6mAFX14SH3VQ3+fa1GDfvmHqps8FNS1RANS900EpHosocvnbUKPS2Xzr535mg8cYc/
aijciIiIDADGGJLc4T45hRk9aylq6UdU29hMra+ZmobwZbKW17WNgfD6SBCq9TWzq8bHut111DY28/0zRx/
iT9WxIzbcNDc3U1pais/
nO+hzpaSksGbNmhiUauByu90UFBT0dTFEROQwaulH5IlzMIietxL1tSM23JSWlpKUlMSQIUMOupNTXV0dSU
lJMSrZwGNZFhUVFZSWlvZ1UURERLp15PUCivD5fGRkZPSr3ttHK2MMGRkZMWlFExEROdSO2HADKNgcQfRvI
SIiR4sehRtjTLoxZr4xpt4Ys80Yc2kn+11hjPnEGFNrjCk1xtxrjDliL32JiIhI/
9PTlpsHAT+QA1wGPGyMGd/
BfgnAzUAmMBOYDXzv4IvZNzweT18XQURERHqp21YVY0wicBEwwbIsL7DYGLMAuBz4Yet9Lct6uNXLHcaYp4
FTY1heERERkS715JLRKCBoWdb6Vus+BU7pwbEnA6s62mCMuQ64DiAnJ4fi4uI221NSUqirqwPg1//
dxNrd3h68Xccsy9qvz8iYHA+3njG822Pr6uqwLIs777yTN954A2MM3//+97nooosoKyvjyiuvpK6ujkAgwA
MPPMDMmTO54YYbWLZsGcYYvvrVr/
Ltb3/7gMt+JPH5fHi93v3+raT3VI+xo7qMHdVlbKgeY+dA67In4cYD1LRbVwN0ObbaGHMVMAO4pqPtlmU9C
jwKMGPGDGvWrFlttq9ZsyY6fNvpcmK323tQ1I4Fg8H9jne6nD0aHp6UlMQLL7zA6tWrWbFiBeXl5RxzzDGc
eeaZLFiwgHPOOYcf/ehHBINBGhoaWL9+PXv27GH16tUAVFdX95th6G63G4/HQ/t/
K+m94uJi1WOMqC5jR3UZG6rH2DnQuuxJuPECye3WJQN1nR1gjLkA+BVwumVZ5b0uVTs/
Ob+j7j09d7Dz3CxevJivfOUr2O12cnJyOOWUU/
j444855phjuPrqq2lubuaCCy5gypQpDBs2jM2bN3PjjTdy7rnncsYZZxxU2UVERKR3etKheD3gMMaMbLVuM
p1fbjoLeAw437KsFQdfxL5nWR3fWOPkk0/mnXfeIT8/
n8svv5wnn3yStLQ0Pv30U2bNmsWDDz7INdd02HAlIiIih0i34cayrHrgReBnxphEY8wJwFzgb+33NcacBjw
NXGRZ1kexLmxfOfnkk3n22WcJBoPs3buXd955h2OPPZZt27aRnZ3Ntddey9e//
nWWLl1KeXk5oVCIiy66iLvvvpulS5f2dfFFREQGlJ7OQXM98DiwB6gAvmVZ1ipjTCGwGhhnWdZ24E4gBXi1
VQfedy3LOju2xT68LrzwQj744AMmT56MMYZ7772X3Nxc5s2bx3333YfT6cTj8fDkk0+yY8cOrrrqKkKh8G3
lf/nLX/Zx6UVERAaWHoUby7IqgQs6WL+dcIfjltf9ati31xseoWWM4b777uO+++5rs/
2KK67giiuu2O84tdaIiIj0nSP69gsiIiIivaVwIyIiIv2Kwo2IiIj0Kwo3IiIi0q8o3IiIiEi/
onAjIiIi/YrCjYiIiPQrCjdHgEAg0NdFEBER6Td6OkNx3/rPD6HswG9TFR8MgL3dR82dCGf/
qttjL7jgAkpKSvD5fHznO9/huuuu47XXXuP2228nGAySmZnJW2+9hdfr5cYbb2TJkiUYY/
jJT37CRRddhMfjiU4G+Pzzz/PKK6/wxBNPcOWVV5Kens6yZcuYNm0aX/7yl7n55ptpbGwkPj6ev/
71r4wePZpgMMitt97K66+/jjGGa6+9lnHjxvHHP/6R+fPnA/DGG2/
w8MMP8+KLLx5wHYmIiPQXR0e46UOPP/
446enpNDY2cswxxzB37lyuvfZa3nnnHYYOHUplZSUAd999NykpKaxYEQ5hVVVV3Z57/
fr1vPnmm9jtdmpra3nnnXdwOBy8+eab3H777bzwwgs8+uijbNmyhWXLluFwOKisrCQtLY0bbriBvXv3kpWV
xV//+leuuuqqQ1oPIiIiR4ujI9z0oIWlK411dSQlJR3Qsb///
e+jLSQlJSU8+uijnHzyyQwdOhSA9PR0AN58802eeeaZ6HFpaWndnvuLX/
widrsdgJqaGq644go2bNiAMYbm5uboeb/5zW/icDjavN/ll1/
OU089xVVXXcUHH3zAk08+eUCfT0REpL85OsJNHykuLubNN9/
kgw8+ICEhgVmzZjF58mTWrVu3376WZdHqZqFRrdf5fL422xITE6PLd955J6eeeirz589n69atzJo1q8vzXn
XVVZx//vm43W6++MUvRsOPiIjIQKcOxV2oqakhLS2NhIQE1q5dy//+9z+ampp4+
+232bJlC0D0stQZZ5zBH//4x+ixLZelcnJyWLNmDaFQKNoC1Nl75efnA/
DEE09E159xxhk88sgj0U7HLe83aNAgBg0axD333MOVV14Zs88sIiJytFO46cJZZ51FIBBg0qRJ3HnnnRx33
HFkZWXx6KOP8oUvfIHJkyfz5S9/GYA77riDqqoqJkyYwOTJk1m0aBEAv/rVrzjvvPM47bTTyMvL6/
S9fvCDH3DbbbdxwgknEAwGo+uvueYaCgsLmTRpEpMnT+bvf/
97dNtll13G4MGDGTdu3CGqARERkaOPrmV0IS4ujv/85z8dbjv77LPbvPZ4PMybN2+//S6++GIuvvji/
da3bp0BOP7441m/fn309d133w2Aw+Hg/vvv5/7779/vHIsXL+baa6/
t9nOIiIgMJAo3R6np06eTmJjIb3/7274uioiIyBFF4eYo9cknn/R1EURERI5I6nMjIiIi/
YrCjYiIiPQrCjciIiLSryjciIiISL+icCMiIiL9isJNjHg8nk63bd26lQkTJhzG0oiIiAxcR8VQ8F9/9GvW
Vq494OODwWD0BpUtxqSP4dZjbz3YoomIiMgRRi03nbj11lt56KGHoq/
vuusufvrTnzJ79mymTZvGxIkTeemll3p9Xp/
Px1VXXcXEiROZOnVq9DYNq1at4thjj2XKlClMmjSJDRs2UF9fz7nnnsvkyZOZMGECzz77bMw+n4iISH91VL
TcHGwLS11dHUlJSb065pJLLuHmm2/
m+uuvB+C5557jtdde45ZbbiE5OZny8nKOO+445syZ0+Fduzvz4IMPArBixQrWrl3LGWecwfr163nkkUf4zn
e+w2WXXYbf7ycYDPLqq68yaNAg/
v3vfwPhm2uKiIhI19Ry04mpU6eyZ88edu7cyaeffkpaWhp5eXncfvvtTJo0idNPP50dO3awe/
fuXp138eLFXH755QCMGTOGoqIi1q9fz/
HHH88vfvELfv3rX7Nt2zbi4+OZOHEib775JrfeeivvvvsuKSkph+KjioiI9CsKN124+OKLef7553n22We55
JJLePrpp9m7dy+ffPIJy5cvJycnB5/
P16tzWpbV4fpLL72UBQsWEB8fz5lnnsnChQsZNWoUn3zyCRMnTuS2227jZz/
7WSw+loiISL92VFyW6iuXXHIJ1157LeXl5bz99ts899xzZGdn43Q6WbRoEdu2bev1OU8+
+WSefvppTjvtNNavX8/27dsZPXo0mzdvZtiwYdx0001s3ryZzz77jDFjxpCens5Xv/
pVPB7PfncSFxERkf0p3HRh/Pjx1
NXVkZ+fT15eHpdddhnnn38+M2bMYMqUKYwZM6bX57z++uv55je/
ycSJE3E4HDzxxBPExcXx7LPP8tRTT+F0OsnNzeXHP/4xH3/8Md///vex2Ww4nU4efvjhQ/
ApRURE+heFm26sWLEiupyZmckHH3zQ4X5er7fTcwwZMoSVK1cC4Ha7O2yBue2227jtttvarDvzzDM588wzD
6DUIiIiA5f63IiIiEi/
opabGFqxYkV0JFSLuLg4Pvzwwz4qkYiIyMCjcBNDEydOZPny5X1dDBERkQFNl6VERESkX1G4ERERkX5F4UZ
ERET6FYUbERER6VcUbmLE4/H0dRFERESEo2S0VNkvfkHTmrUHfHwgGKTSbm+zLm7sGHJvv/
1gi3bECQQCOBxHxT+riIjIIaGWm07ceuutPPTQQ9HXd911Fz/
96U+ZPXs206ZNY+LEibz00ks9OpfX6+30uCeffJJJkyYxefLk6Bw5u3fv5sILL2Ty5MlMnjyZ999/
n61btzJhwoTocb/5zW+46667AJg1axa33347p5xyCr/73e94+eWXmTlzJlOnTuX000+P3rnc6/
Vy1VVXMXHiRCZNmsQLL7zAX/7yF2655ZboeR977DG++93vHnC9iYiI9LWj4r/
4B9vCUldXR1JSUq+OueSSS7j55pu5/
vrrAXjuued47bXXuOWWW0hOTqa8vJzjjjuOOXPmYIzp8lxut5v58+fvd9zq1av5+c9/
znvvvUdmZiaVlZUA3HTTTZxyyinMnz+fYDCI1+ulqqqqy/eorq7m7bffBqCqqor//e9/GGP485//
zL333stvf/tb7r77blJSUqK3lKiqqsLlcjFp0iTuvfdenE4nf/3rX/nTn/
7Uq7oSERE5khwV4aYvTJ06lT179rBz50727t1LWloaeXl53HLLLbzzzjvYbDZ27NjB7t27yc3N7fJclmVx+
+2373fcwoULufjii8nMzAQgPT0dgIULF/Lkk08CYLfbSUlJ6TbcfPnLX44ul5aW8uUvf5ldu3bh9/
sZOnQoAG+++SbPPPNMdL+0tDQATjvtNF555RXGjh1Lc3MzEydO7GVtiYiIHDkUbrpw8cUX8/
zzz1NWVsYll1zC008/zd69e/nkk09wOp0MGTIEn8/
X7Xk6O86yrG5bfVo4HA5CoVD0dfv3TUxMjC7feOONfPe732XOnDkUFxdHL1919n7XXHMNv/
jFLxgzZgxXXXVVj8ojIiJypFKfmy5ccsklPPPMMzz//
PNcfPHF1NTUkJ2djdPpZNGiRWzbtq1H5+nsuNmzZ/Pcc89RUVEBEL0sNXv2bB5+
+GEAgsEgtbW15OTksGfPHioqKmhqauKVV17p8v3y8/MBmDdvXnT9GWecwR//+Mfo65bWoJkzZ1JSUsLf//
53vvKVr/S0ekRERI5ICjddGD9+PHV1deTn55OXl8dll13GkiVLmDFjBk8//TRjxozp0Xk6O278+PH86Ec/
4pRTTmHy5MnRjry/
+93vWLRoERMnTmT69OmsWrUKp9PJj3/8Y2bOnMl5553X5XvfddddfPGLX+Skk06KXvICuOOOO6iqqmLChAl
MnjyZRYsWRbd96Utf4oQTToheqhIRETla6bJUN1o63wJkZmbywQcfdLif1+vt9BxdHXfFFVdwxRVXtFmXk5
PT4Uism266iZtuumm/
9cXFxW1ez507l7lz5+63n8fjadOS09rixYvbjJoSERE5WqnlZoCrrq5m1KhRxMfHM3v27L4ujoiIyEFTy00
MrVixIjpXTYu4uDg+/PDDPipR91JTU1m/
fn1fF0NERCRmjuhw05vRREeCiRMnsnz58r4uxiFhWVZfF0FERKRHjtjLUm63m4qKCv1RPQJYlkVFRQVut7u
viyIiItKtI7blpqCggNLSUvbu3XvQ5/
L5fPrDfJDcbjcFBQU9Hv4uIiLSV47YcON0OqMz6x6s4uJipk6dGpNziYiIyJGtR5eljDHpxpj5xph6Y8w2Y
8ylXex7izGmzBhTY4x53BgTF7viioiIiHStp31uHgT8QA5wGfCwMWZ8+52MMWcCPwRmA0OAYcBPY1JSERER
kR7oNtwYYxKBi4A7LcvyWpa1GFgAXN7B7lcAf7Esa5VlWVXA3cCVMSyviIiISJd60udmFBC0LKv1ZCifAqd
0sO944KV2+
+UYYzIsy6povaMx5jrgushLrzFmXc+L3WuZQPkhPP9AorqMDdVj7KguY0d1GRuqx9jpqi6LOjuoJ+HGA9S0
W1cDJPVg35blJKBNuLEs61Hg0R68/0EzxiyxLGvG4Xiv/
k51GRuqx9hRXcaO6jI2VI+xc6B12ZM+N14gud26ZKCuB/
u2LHe0r4iIiEjM9STcrAccxpiRrdZNBlZ1sO+qyLbW+
+1uf0lKRERE5FDpNtxYllUPvAj8zBiTaIw5AZgL/K2D3Z8Evm6MGWeMSQPuAJ6IYXkP1GG5/DVAqC5jQ/
UYO6rL2FFdxobqMXYOqC5NT25vYIxJBx4HPk+478wPLcv6uzGmEFgNjLMsa3tk3+8CtwLxwAvANy3LajqQw
omIiIj0Vo/
CjYiIiMjR4oi9caaIiIjIgVC4ERERkX6lX4eb3twTS7pmjCk2xviMMd7I41BOuthvGGO+bYxZYoxpMsY80W
7bbGPMWmNMgzFmkTGm0wmppPO6NMYMMcZYrb6bXmPMnX1Y1COaMSbOGPOXyO/
EOmPMMmPM2a2263vZA13Vo76TvWeMecoYs8sYU2uMWW+MuabVtl5/J/
t1uKGH98SSHvu2ZVmeyGN0XxfmKLETuIdwh/
woY0wm4VGIdwLpwBLg2cNeuqNLh3XZSmqr7+fdh7FcRxsHUEJ4lvkUwt/B5yJ/
kPW97LlO67HVPvpO9twvgSGWZSUDc4B7jDHTD/Q72ZMZio9Kre6JNcGyLC+w2BjTck+sH/
Zp4WTAsCzrRQBjzAygoNWmLwCrLMv6Z2T7XUC5MWaMZVlrD3tBjwJd1KX0QmR6j7tarXrFGLMFmA5koO9lj
3RTj5/0SaGOYpZltZ47z4o8hhOuz15/J/tzy01n98RSy82B+6UxptwY854xZlZfF+YoN57w9xGI/
qLchL6fB2ObMabUGPPXyP/2pAeMMTmEf1+uQt/LA9auHlvoO9kLxpiHjDENwFpgF/AqB/id7M/
hpjf3xJLu3QoMA/IJT6r0sjFmeN8W6aim72fslAPHEL6J3nTCdfh0n5boKGGMcRKuq3mR/
wXre3kAOqhHfScPgGVZ1xOuq5MIX4pq4gC/k/
053PTmnljSDcuyPrQsq86yrCbLsuYB7wHn9HW5jmL6fsaIZVley7KWWJYVsCxrN/
Bt4AxjTPv6lVaMMTbCM837CdcZ6HvZax3Vo76TB86yrKBlWYsJX3r+Fgf4nezP4aY398SS3rMA09eFOIq1u
Q9bpI/YcPT9jIWWmUn1/eyEMcYAfyE82OIiy7KaI5v0veyFLuqxPX0ne8/Bvu9er7+T/
Tbc9PKeWNIFY0yqMeZMY4zbGOMwxlwGnAy83tdlO9JF6ssN2AF7Sx0C84EJxpiLItt/
DHymTpud66wujTEzjTGjjTE2Y0wG8Hug2LKs9k3Zss/DwFjgfMuyGlut1/
eydzqsR30ne8cYk22MucQY4zHG2I0xZwJfARZyoN9Jy7L67YPwsLF/AfXAduDSvi7T0fgAsoCPCTcDVgP/
Az7f1+U6Gh6ER1NY7R53RbadTrjjXCNQTHgYZJ+X+Uh9dFaXkV+CWyI/57sI38A3t6/
Le6Q+CPcDsQAf4Sb/
lsdlke36Xh5kPeo72eu6zALejvx9qQVWANe22t7r76TuLSUiIiL9Sr+9LCUiIiIDk8KNiIiI9CsKNyIiItK
vKNyIiIhIv6JwIyIiIv2Kwo2IiIj0Kwo3IiIi0q8o3IiIiEi/8v8Bqf+AbPq1iFYAAAAASUVORK5CYII=\
n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"\n",
"pd.DataFrame(history.history).plot(figsize=(8, 5))\n",
"plt.grid(True)\n",
"plt.gca().set_ylim(0, 1)\n",
"save_fig(\"keras_learning_curves_plot\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"313/313 [==============================] - 0s 639us/step - loss: 0.3357 -
accuracy: 0.8837\n"
]
},
{
"data": {
"text/plain": [
"[0.3357059359550476, 0.8837000131607056]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.evaluate(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0. , 0. , 0. , 0. , 0. , 0.01, 0. , 0.03, 0. , 0.96],\n",
" [0. , 0. , 0.99, 0. , 0.01, 0. , 0. , 0. , 0. , 0. ],\n",
" [0. , 1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]],\n",
" dtype=float32)"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_new = X_test[:3]\n",
"y_proba = model.predict(X_new)\n",
"y_proba.round(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Warning**: `model.predict_classes(X_new)` is deprecated. It is replaced with
`np.argmax(model.predict(X_new), axis=-1)`."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([9, 2, 1])"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#y_pred = model.predict_classes(X_new) # deprecated\n",
"y_pred = np.argmax(model.predict(X_new), axis=-1)\n",
"y_pred"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Ankle boot', 'Pullover', 'Trouser'], dtype='<U11')"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(class_names)[y_pred]"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([9, 2, 1], dtype=uint8)"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_new = y_test[:3]\n",
"y_new"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure fashion_mnist_images_plot\n"
]
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAaAAAACUCAYAAADVqv1WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
AAXNUlEQVR4nO3de5AVVX4H8O9PBXkPwiDIyA6FgLqioFXB4BPFKgVRV/
ehlouazRJXK7ESY4qKUVaTGCq6VVF3Y4wbX6msWD6w1CRExPUFCLpBEUVeDgwIyvsxgiDqyR+3Z3PPtw+3e
y4znJ7h+6maYn730d1Mnztn+vz6d4455yAiInKwHRb7AERE5NCkDkhERKJQByQiIlGoAxIRkSjUAYmISBTq
gEREJIoO1QGZmTOzoS19LmOb15vZnAM/
OmlP+LxX235EZP8K2QGZ2etmts3Mjox9LG3FzMaa2aexj+NQYGarzexLM/
vCzDaY2WNm1iP2cUnxJW2m+evbsnb0hZldE/
v42rvCdUBmNhjA2QAcgEvjHo10IJc453oAOA3AHwC4PfLxVGRmR8Q+BgGccz2avwCsQdKOkq/
fNL+uCOerCMfQUoXrgABcC2A+gMcBXFf+hJk9bmb/bGb/
ZWZNZrbAzI4LbcTMzjKztWZ2XuC5I83sF2a2JvmL+CEz61rhmMzMfmlmO8xsqZmNK3tioJm9aGZbzWylmU2
m/dxnZuuTr/uSx7oDmAlgYNlfUwNb9FOSqjjn1qH0sx+RDKv9/kObXHn/
NGsbZlZjZv9uZpvMrNHMbjezw5Jzu93MRpS9tl/yV/
PRSTzRzN5PXjfPzE4pe+1qM5tiZh8A2NUef6EcKppHMJLz9TmAx/b3eU9enxrKLx/
WNbMJZrYk+b22zsxuLXtdh20zRe2AfpN8XWhm/
en5qwHcBeAoACsB3M0bMLMLAUwH8H3n3GuBffwjgOEARgEYCqAOwNQKx3Q6gAYAtQB+DmCGmfVJnpsO4FMA
AwH8AMA/lHVQfwPgD5P9jAQwGsDtzrldAMYDWF/
219T6CvuXVmJmgwBMALDtADbzSwA1AIYAOBelNvtHzrm9AGag1Eab/
QjAG865jWZ2GoBHAdwAoC+AfwXwIg01Xw3gYgC9nXNfH8AxStsbAKAPgHoAf4L9fN5zbusRADc453oCGAHg
twDQ4duMc64wXwDOArAPQG0SLwXwF2XPPw7g38riCQCWlsUOwF8DaARwMm3bodTZGIBdAI4re24MgFX7Oab
rAawHYGWPvQNgEoBBAL4B0LPsuWkAHk++/wTAhLLnLgSwOvl+LIBPY//
MD4UvAKsBfAFge9I2HgRwYtImjih73esAflp23ucE2s/hAPYC+G7ZczcAeD35/
gIADWXPzQVwbfL9vwD4Ozq2ZQDOLTvOn8T+eemrYju6IPl+LICvAHQpe77S591rT+VtKvl+TdKOetFrOnSb
KdoV0HUAZjnnNifxk6BhOACfl32/GwAnk/8cwNPOucX72Uc/AN0A/G9ySbsdwP8kj+/
POpec7UQjSlc8AwFsdc410XN1yfcDk5jfJwff95xzvZ1z9c65mwB8WeV2agF0Rvq8Np/
z3wLoamanm1k9Sn8NP588Vw/gL5vbXdL2BsFvE2urPC45+DY55/
aUxQfyef8+Sn9QN5rZG2Y2Jnm8Q7eZwowXJjmYHwE4PBlTBYAjAfQ2s5HOuUU5N/
VDAI+Y2Trn3H2B5zej9MvnJFfKB+RRZ2ZW1gl9B8CLKF0Z9TGznmWd0HcANG93PUoN6KOy55qH2jQNeVy7k
n+7AdiZfD8gx/s2o3SVXg9gSfLY78+5c+5bM3sapWGRDQD+s6xtrAVwt3MuNWxcRu2i/
eBzVenzvgultgYAMDOvrTnn3gVwmZl1AvCnAJ5GqaPp0G2mSFdA30NpOOu7KP3VOAqlYZK3UBpjz2s9gHEA
bjazm/hJ59y3AH4N4J/KEsN1Sd5of45OttfJzH6YHNd/
O+fWApgHYJqZdUmSg3+MUv4KKOWHbk8S0bUo5Zn+I3luA4C+ZlbTgv+btBLn3CaUOo0fm9nhZvYTAMEbWuh
936D0y+FuM+uZXOXcgv8/
r0Dpyv1KANck3zf7NYCfJVdHZmbdzexiM+vZSv8tiavS530RgJPMbJSZdQFwZ/ObzKyzmV1jZjXOuX0o/
UH0TfJ0h24zReqArgPwmHNujXPu8+YvAL8CcE1L7u5wzq1BqROasp+7mqagdAPDfDPbCWA2gOMrbHIBgGEo
/fV7N4AfOOe2JM9dDWAwSh3f8wB+7px7JXnu7wH8DsAHABYDWJg8BufcUpQabENyaa2huYNvMoC/
ArAFwEko/TGRx5+h9BdtA4A5KHUyjzY/6ZxbkDw/EKU77pof/
12yz1+hdBPESpRyA9IxVPq8Lwfwtyj9rlmBUrspNwnA6uT30c8A/
Dh5X4duM+anNkRERA6OIl0BiYjIIUQdkIiIRKEOSEREolAHJCIiUagDEhGRKLJubdYtch2XteG220W7aWpq
Sj32zjvvePG4ceNSr2mphQsXenGPHv7kHcOHDz/
gfRxEHb7d8J3BZv5/+dVXX02954EHHvDiUaNGefHnn3/uxUOHppeW+uKLL7x42zZ/usIjjvB/
Xa9atSq1jeeffz71WEEE242ugEREJAp1QCIiEkVWIWohLomlTXS4oZQ9e/
Z48X333efF06dP92Ie4gCATZs2eXHXrv4yUaH3ZOnSpUvFmIdWAOCcc87x4smTJ3vxRRdd1OLjaCUdrt2wb
7/91osPO8z/O/2ss85KvWfu3Lkt2kevXr1Sj+3evduLv/
7aX1mB2+KXX6bn033ppZe8eOLEiS06rjakITgRESkOdUAiIhKFOiAREYlCOaBDV7sey58yZUrqsYcfftiLd
+7c6cXdunXzYh5TB9L5GB5n37dvnxd/8803YEceeaQX8374M7d3797UNni/
vJ8xY8Z48ZtvvpnaRhtp1+2mNfTsmV4JoVOnTl7cr5+/vuWuXbu8ONRuODfI2+R2s3LlytQ27r33Xi+
+9dZbU6+JRDkgEREpDnVAIiIShTogERGJQh2QiIhEkXuZa5GY+AaDe+65J/
WaAQMGeHH37t29mOf0Ct2AwzcZZBWR8jaBdOEiFxQy3iaQni/
u8MMP92IufLzkkktS2+CiRGkdPGcbANTW1nox3wDDxa18o0roNbyf0HvY2rVrM19TJLoCEhGRKNQBiYhIFO
qAREQkCuWApF244447vDg0mSPnY7jYj9dkCendu7cXZ00cGsoH8KSoffv2rXhcoclIuTiV81X9+/
f34lAh6ubNm72Y8xSSz4YNGzJfw+cwlBssF8oLcuEp5/14m6HPwMaNGyvut2h0BSQiIlGoAxIRkSjUAYmIS
BTKAUm7sGPHDi8O1URwnoRzPjfeeKMX33DDDaltnHbaaV7MtUSffvqpF4cmpqyvr/
diziHwsfM2AaCurq7ie5qamrw4tDhZQ0ODFysHVJ0PP/
ww8zWdO3f2Yj4fnM8J5f24Dojbc55aIs77FZ2ugEREJAp1QCIiEoU6IBERiUI5IGkXuC4mNH9axuKKmDZtm
hfX1NSkXsPj7Lt37/bisWPHevFrr71WcZ8AcOKJJ3rx0qVLvZjnDQOA+++/
34u5DooXPAstcDZnzhwvHj16dOaxStqiRYu8mPM9QLo9crvh2jDOaQLperGsuQtDCxlyzrLodAUkIiJRqAM
SEZEo1AGJiEgU6oBERCQK3YTQxjg5zIuVZU1aCKSTjVyAtmLFCi8eNmxYSw6xkL766quKz4d+bqGkbLlrr7
3Wi1944YXM49i2bZsX800HU6dOTb2HJ4l86qmnvHjr1q1e3NjYmNrGlVde6cV8E0KeCU3ff//91GPScu++
+64X82cYSN90wOeDbzrggmcgfb6OOuooL+bPPe8TAAYNGpR6rMh0BSQiIlGoAxIRkSjUAYmISBSHbA6Ii7p
CRYw81rtu3Tovfvvtt714/PjxqW20RmFYaNLBcjNmzPDiKVOmHPA+Y1u/
fn3F50Pj8KEJOcuFJv3M8swzz1R8ftKkSanHunbt6sWcrxk5cqQXf/
bZZ6lt9OjRI+8h7hfnBqU6H3/8sRfzwnFAuj3yQoXHHHOMF8+fPz+1Dc5rclE0x6FF7fr06ZN6rMh0BSQiI
lGoAxIRkSjUAYmISBSHbA6IhXIK7K233vLiBQsWeHEob3HzzTcf2IEB2Lhxoxe//
PLLXhxaFK2927RpU4vfw2PiPFbP54fH1EPOPffcis9feOGFqcdWrVrlxTwuP3PmTC/
mCU6BdJ6Ic0J87LzgGZBekE+qwzU8oZ91Vg7oiiuuaPF+uT1369Yt8z1Z9XNFoysgERGJQh2QiIhEoQ5IRE
SiOGRzQHnm0uI5oLgeoH///l4cqru4/
PLLvZjnd+KFqurr61Pb2LJlixfzAmZ1dXWp97R3XHPFshafA9Jj5pwTCeX9eLvLli3zYq6xamhoyDyOrAXp
1qxZk3rPgw8+6MVcN5I1TxiQ/
TOUfDZs2ODF1dT2XX311Zmv4XPIcwbW1tZmbiM0P1yR6QpIRESiUAckIiJRqAMSEZEo1AGJiEgUh8xNCFy4
xzcd7Nq1K/
WeZ5991os5Scg3EDQ1NaW2kTXpKccfffRRahvHHnusF3MCmm+o6AiyClFDxYBcuMcxF3PedtttmduYNWuWF
y9atMiLQ+eLbxLhmw74RgZefA7IXkyO23Nogb59+/ZV3Ibkw5Pchgq/
sz6D5513XuZ+xowZ48U82XFo8lHWt2/fzNcUia6AREQkCnVAIiIShTogERGJInoOKFRQmLUwEz8fGv/
mMdlQzqDcQw89lHqMC027dOnixY2NjV7MOaHQNngcl489VOTGuSeeHHHv3r1eHMpntcbCeAdTaJG2cnmKSP
lnXVNT48XTpk3LPA5+D5/PJUuWZG5jwIABXrx582Yv5naVR55C6qz3ZH0mJD/Ot/
H5yFpUEgAGDx7sxXPmzPHiPMXX3F6LTldAIiIShTogERGJQh2QiIhE0eY5IB63zJO/
YVmLxYXuwc8a354+fboXhxbvOvXUU72Ycwrbt2/3Yl54DEjfl8/j/7xwVZ57/
flnyhMQhiZFHTVqVOZ2i6SaBek6d+7sxeeff74X84KCXF8FpNsN59e4rXFtUQifU84j8T5C2+3du7cXc51Q
qO2x1atXe/Fxxx2X+R5JC/
3O4oXgqvnZcnvktpbnd2V7oysgERGJQh2QiIhEoQ5IRESiaPMcUNa4Jdf4hB7jcXneZp56hkcffdSLly9f7
sWDBg1KvYcXguPcC88RFVoYjueH42PnRdNCtURZeTT28ssvpx5rbzkgzq+x0Lx7/PO//vrrvXjmzJlezD/
7EG6Lofaahc8X54RCOSCuI7niiiu8OGuuuBDOPyoHVJ1QzRXX3p100kkt3u6ECRO8+J577vHiatpe0ekKSE
REolAHJCIiUagDEhGRKNQBiYhIFAd0E0KepBgnYDmhHioyzSo8ZevXr089NmPGDC/
mGwaGDRvmxVwQCqSTw3xTQqdOnbw4dHMAF4ky/r+GJi3k1/DEorzfuXPnVtxne8A/
a8bnEwCOPvpoL+aF+xifPyB7stiWts3QNvIUGHLbO/
300yvuI3RcPMlpR0xixxAqfOffa0OGDGnxdkeOHOnFXNyap0i9vU06rCsgERGJQh2QiIhEoQ5IRESiqJgDy
lrAqjXGw0N4IkqeRHHZsmVeHFq8jCem7NWrlxdzoePOnTtT2+BFpnhcnn8efJxAetyWJ5Xk48wzvty1a9eK
7wlNkPnhhx968YgRI1KvKRI+P5zPCBXs8vj3xx9/XHEfoYJCPuesmgkhq5mQl///
1RR08365EFXy4UlCQws+8u/CgQMHtng/
WYsKKgckIiLSStQBiYhIFOqAREQkioqDjlmTfG7YsCH1WGNjoxfzeCnHoXqOVatWeTHX0vBYac+ePVPb4DH
xHTt2VNxvaPyV98u5F67Z4fv2AeCYY47xYs418T5CtStco7R161Yv5pxPaHE9fk/
RVVOzcvzxx3vxJ598UvH1obwK7zerji2PrMlIQ7VfvB+ucWJ5ckDVLPIn6Z99Q0ND6jV8Tnmy4zw4H8yyck
RAdt1h0egKSEREolAHJCIiUagDEhGRKFo0F9zs2bO9ODQHG49T8rhzVm1RaBuc4+GcSCjnwePfXMPDuZbQG
Drvh4+d77kP1d9w3U814/B8rFxzwPmsUC4qz/
hxkXA9Tp7j5xzQG2+8UfH1eeoquB1xO8lTC8fb4DjPgopci8Jxnhqf0HyHkm306NFeHKov4zxeNQsGZgktX
Jh1HEWnKyAREYlCHZCIiEShDkhERKJQByQiIlFUzOzOmjXLix955BEvPuGEE1Lv4cJLvoGAk7ih4itO9nPS
lrcZSrpzcripqaniNkMFsVkLifHND6HC3CVLllQ81tDko4xvbuBiXp6oM3QzRFYhY9Fw0W+eRD2f86VLl3o
xL0CX52dfjawF5zjOc4PFypUrvXjAgAFeHLoRh/+/7a1IsSjOOeccL37sscdSr+HfY+
+9994B75fbc56bZqqZIDqm9nW0IiLSYagDEhGRKNQBiYhIFBUHn7kAa/
78+V68ePHi1HvmzJlTcYc8Lh2aSLRPnz4V45qaGi8O5YA4x7NlyxYv5kXtQuPjPHEoj90vWrTIi0855ZTUN
gYPHuzFr7zyihdzcVmeMVzOGfDiV7z4HpDOgRUd/x/z5Gu4eJUnYO3WrZsXVzPhKatmgTrOZ+UZ23/
hhRe8mNvVwoULU+/htrRt27acRyjlzjjjDC/
mnCuQPqetkXPlz3GeiXBbo00fTLoCEhGRKNQBiYhIFOqAREQkioo5IJ5Ic+rUqZkb5AkPFyxY4MWce5k3b1
5qG6tXr/biDz74wIu5DiY0Nspj8zweznmlk08+ObWNCy64wIsnTJjgxaGx4CyXXnqpF69Zs8aL+/
btm3oPjwVz3ozzJaEJCYcPH96i44yNz9eePXsy38N1P5xf458L54yA9Fh+1rh76Hl+LCtPlGfcnj8TnG989
tlnU+/h/
Yb+v5Ktvr7ei0M5Vm5r3F55EbshQ4Zk7pfz5XnOX1vVtrUVXQGJiEgU6oBERCQKdUAiIhJFq69SxvOQjRs3
rmJ80003tfYhFNqLL74Y+xDaBc7X5MmTcJ0Lj8PzNquZX47jUH4na+63rAXqgHSt29tvv+3FeXJ6vN/
QfIfScqGF4biWi2sTq8kB8byanAfkhSoB5YBERERyUQckIiJRqAMSEZEo1AGJiEgUrX4Tgkhr4CI8nkiUC5
4B4JZbbvHi2bNnezEn4atZvCvrBgMgu3iVb6gIHceOHTu8eOzYsV48ceJEL77rrrtS2+CbLELJc0nLKiS+/
PLLU+958sknvZjPMU/
SzEXuIdzms44TCN+YUGS6AhIRkSjUAYmISBTqgEREJArlgKSQeMJZzmdwjghIT9bYr18/
L16xYoUXh4oB22JBr6ycQuj/
wkW1vMBZbW1t5n45t9TY2Jj5Hsk+X5dddlnqPU888YQXd+7c2Yufe+45L77zzjszj4OLSvPkH0MTEReZroB
ERCQKdUAiIhKFOiAREYlCOSAppDPPPNOLeTLO0GKAPEHn8uXLW//ACoInt+RFCoF03c/
o0aPb9Jg6iqw6rfHjx6few/U3/
LOvpuZsxIgRXrx48WIvDn0GPvvssxbvJyZdAYmISBTqgEREJAp1QCIiEoVyQFJInK/
gedy4zgKobpy9veKap9A8b7woWvfu3dv0mDqKPAsVsvr6ei+eP3++F+/
evduL582bl9rGGWec4cVcB8QLLPL5BYDNmzdnH2yBHDqfWBERKRR1QCIiEoU6IBERiUIdkIiIRKGbEKSQ6u
rqvPjUU0/14lARXlaS/euvv/
biULI5azG5g4WPg4916NChXnzxxRentrF9+3YvHjNmTOscXAcXmuQzy+TJk734hBNO8OKrrrrKi/
mGg5BJkyZ5MS9S2KNHj9R7zj777MztFomugEREJAp1QCIiEoU6IBERicKKMuYtIiKHFl0BiYhIFOqAREQkC
nVAIiIShTogERGJQh2QiIhEoQ5IRESi+D+QzrJZiR0XSQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 518.4x172.8 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(7.2, 2.4))\n",
"for index, image in enumerate(X_new):\n",
" plt.subplot(1, 3, index + 1)\n",
" plt.imshow(image, cmap=\"binary\", interpolation=\"nearest\")\n",
" plt.axis('off')\n",
" plt.title(class_names[y_test[index]], fontsize=12)\n",
"plt.subplots_adjust(wspace=0.2, hspace=0.5)\n",
"save_fig('fashion_mnist_images_plot', tight_layout=False)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Regression MLP"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's load, split and scale the California housing dataset (the original one,
not the modified one as in chapter 2):"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import fetch_california_housing\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"housing = fetch_california_housing()\n",
"\n",
"X_train_full, X_test, y_train_full, y_test = train_test_split(housing.data,
housing.target, random_state=42)\n",
"X_train, X_valid, y_train, y_valid = train_test_split(X_train_full,
y_train_full, random_state=42)\n",
"\n",
"scaler = StandardScaler()\n",
"X_train = scaler.fit_transform(X_train)\n",
"X_valid = scaler.transform(X_valid)\n",
"X_test = scaler.transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"363/363 [==============================] - 0s 893us/step - loss: 2.2656 -
val_loss: 0.8560\n",
"Epoch 2/20\n",
"363/363 [==============================] - 0s 670us/step - loss: 0.7413 -
val_loss: 0.6531\n",
"Epoch 3/20\n",
"363/363 [==============================] - 0s 661us/step - loss: 0.6604 -
val_loss: 0.6099\n",
"Epoch 4/20\n",
"363/363 [==============================] - 0s 640us/step - loss: 0.6245 -
val_loss: 0.5658\n",
"Epoch 5/20\n",
"363/363 [==============================] - 0s 688us/step - loss: 0.5770 -
val_loss: 0.5355\n",
"Epoch 6/20\n",
"363/363 [==============================] - 0s 668us/step - loss: 0.5609 -
val_loss: 0.5173\n",
"Epoch 7/20\n",
"363/363 [==============================] - 0s 667us/step - loss: 0.5500 -
val_loss: 0.5081\n",
"Epoch 8/20\n",
"363/363 [==============================] - 0s 647us/step - loss: 0.5200 -
val_loss: 0.4799\n",
"Epoch 9/20\n",
"363/363 [==============================] - 0s 683us/step - loss: 0.5051 -
val_loss: 0.4690\n",
"Epoch 10/20\n",
"363/363 [==============================] - 0s 679us/step - loss: 0.4910 -
val_loss: 0.4656\n",
"Epoch 11/20\n",
"363/363 [==============================] - 0s 643us/step - loss: 0.4794 -
val_loss: 0.4482\n",
"Epoch 12/20\n",
"363/363 [==============================] - 0s 644us/step - loss: 0.4656 -
val_loss: 0.4479\n",
"Epoch 13/20\n",
"363/363 [==============================] - 0s 666us/step - loss: 0.4693 -
val_loss: 0.4296\n",
"Epoch 14/20\n",
"363/363 [==============================] - 0s 655us/step - loss: 0.4537 -
val_loss: 0.4233\n",
"Epoch 15/20\n",
"363/363 [==============================] - 0s 636us/step - loss: 0.4586 -
val_loss: 0.4176\n",
"Epoch 16/20\n",
"363/363 [==============================] - 0s 646us/step - loss: 0.4612 -
val_loss: 0.4123\n",
"Epoch 17/20\n",
"363/363 [==============================] - 0s 620us/step - loss: 0.4449 -
val_loss: 0.4071\n",
"Epoch 18/20\n",
"363/363 [==============================] - 0s 675us/step - loss: 0.4407 -
val_loss: 0.4037\n",
"Epoch 19/20\n",
"363/363 [==============================] - 0s 650us/step - loss: 0.4184 -
val_loss: 0.4000\n",
"Epoch 20/20\n",
"363/363 [==============================] - 0s 646us/step - loss: 0.4128 -
val_loss: 0.3969\n",
"162/162 [==============================] - 0s 428us/step - loss: 0.4212\n"
]
}
],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Dense(30, activation=\"relu\",
input_shape=X_train.shape[1:]),\n",
" keras.layers.Dense(1)\n",
"])\n",
"model.compile(loss=\"mean_squared_error\",
optimizer=keras.optimizers.SGD(learning_rate=1e-3))\n",
"history = model.fit(X_train, y_train, epochs=20, validation_data=(X_valid,
y_valid))\n",
"mse_test = model.evaluate(X_test, y_test)\n",
"X_new = X_test[:3]\n",
"y_pred = model.predict(X_new)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAXcAAAEACAYAAABI5zaHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
AApX0lEQVR4nO3de3xcdZ3/8dcnk0wuk3ubJr1S2kLpvZBWKFBoRaEqqD+rgCCXXYQVvKwXvPxWWRTdXUXX
y+4qwi6IF6DIWlBU5NoKRVpaLi2kQOm9pdckTZvJ/fLdP86knaSTZNJMksmZ9/PxOI/
MnPM9Zz49nbzPyZnv+Y455xAREX9JG+oCREQk8RTuIiI+pHAXEfEhhbuIiA8p3EVEfEjhLiLiQwp3EREfii
vczewzZrbOzJrM7N5e2n7BzPaZ2WEzu8fMMhNSqYiIxC3eM/c9wHeAe3pqZGYXAV8DLgAmApOAb/
WjPhEROQFxhbtzbrlz7hGgqpem1wB3O+cqnHOHgG8D1/
arQhER6bP0BG9vBvD7qOfrgVIzG+Gc63RgMLMbgBsAsrOzy8ePH39CL9je3k5aWu/
HqLoWx8EGx9jcNDIG8ZOGeOsbSsleo+rrH9XXP8lc36ZNmyqdcyUxFzrn4p7wLs3c28PyLcCSqOcZgAMm9r
Td8vJyd6JWrFgRV7u/vnXAnfTVP7q126pO+LVORLz1DaVkr1H19Y/
q659krg9Y57rJ1UQfjsJAftTzjse1CX6dPisOBQGormse4kpERAZeosO9ApgT9XwOsN91uSQzFIoi4X6oXu
EuIv4Xb1fIdDPLAgJAwMyyzCzW9fpfAdeZ2XQzKwK+AdybsGr7oTin48y9ZYgrEREZePGeuX8DaMDr5viJy
ONvmNkEMwub2QQA59xfgNuBFcCOyHRrwqs+AdnBAFkZaTpzF5GUEFdvGefcN4FvdrM4t0vbHwI/
7FdVA6Q4J6hr7iKSEpKzf88AKQop3EUkNaRUuBcr3EUkRaRcuOuau4ikgpQK9yJdcxeRFJFS4V4cClLb2Ep
LW/tQlyIiMqBSKtx1I5OIpIqUCveOG5kO6UYmEfG5lAr3olAGoPFlRMT/
UircNXiYiKSK1Ax3XXMXEZ9LqXAvOnrNXeEuIv6WUuGeEUgjLytdl2VExPdSKtxBd6mKSGpIuXDXXaoikgp
SLtx15i4iqSDlwr0oJ0h1WOEuIv6WcuFeHMpQV0gR8b0UDPdMGlvaaWhuG+pSREQGTAqGe2QIAp29i4iPpV
y460YmEUkFKRfuGl9GRFJByoW7xnQXkVSQcuHeMaa7ztxFxM+GfbhnNh7oU/
uC7AzSTOEuIv42vMP91QdYsPp6qHw77lXS0kxDEIiI7w3vcJ+8GEcabHiwT6sVaQgCEfG54R3ueWUcKprth
Xt7e9yrFevMXUR8bniHO7C/dDHU7IRdq+NepyiUoS/JFhFfG/
bhfrDkLMgIwfplca9THArqDlUR8bVhH+7tgSyYdjFUPAItjXGtU5QT5FBdM865gS1ORGSIDPtwB2D2ZdB0G
Db9Ja7mxaEgre2OI42tA1yYiMjQ8Ee4T1oEuWVx95rR+DIi4nf+CPe0AMz6KLz9BNRV9dq8ODdyl6quu4uI
T/
kj3AHmXA7trVCxvNemxTpzFxGfiyvczazYzB42szoz22FmV3TTzszsO2b2jpkdNrOVZjYjsSV3o2wWjJoRV
68ZjQwpIn4X75n7T4FmoBS4Erijm9D+GPD3wEKgGHgB+HUC6ozPnMvgnXVQubnHZhoZUkT8rtdwN7MQsBS4
xTkXds6tAv4AXBWj+cnAKufcVudcG/
AbYHoiC+7RrI8B1usHq6FggGAgjWrdyCQiPmW99fU2s9OBvznnsqPm3Qyc75y7pEvbk4CHgcuBbcC/
AKc65z4cY7s3ADcAlJaWli9bFv9NSNHC4TC5ublHn89e/89kN+xjzZl3glm3631+RT2zSwL8/
czME3rdE60vGSV7jaqvf1Rf/
yRzfYsXL37JOTcv5kLnXI8T3iWWfV3mXQ+sjNE2CPwEcEArXsCf3NtrlJeXuxO1YsWKzjNeud+5W/
Od2/63Hte76Ed/ddfdu/
aEXzdex9WXhJK9RtXXP6qvf5K5PmCd6yZX47nmHgbyu8zLB2pjtL0VmA+MB7KAbwHPmFlOHK+TGNMugYwc2
NDzXwLFGhlSRHwsnnDfBKSb2SlR8+YAFTHazgEedM7tds61OufuBYoYzOvumblw2sVQ8XCPwxEUh4LqCiki
vtVruDvn6oDlwG1mFjKzc4APEbsXzFrgY2ZWamZpZnYVkAH03H0l0eZcBo2H4e3Hu22iwcNExM/
i7Qp5E5ANHAAeAG50zlWY2QQzC5vZhEi77wHrgVeBGuALwFLnXE0ii+7VyYsgtxTWd99rpignyOGGFlrb4h
8HXkRkuEiPp5Fzrhr4cIz5O4HcqOeNwKcj09AJpHvdItfcCfXVkFN8XJPiUBDn4HBDCyNyB7bHjIjIYPPP8
ANdzb4M2lvg9d/FXKwbmUTEz/
wb7mWzYNT0bm9o6hhfRjcyiYgf+Tfczbyz991roWrLcYuLQhkAVNc1DXZlIiIDzr/
hDj0ORzAi5F1n15m7iPiRv8O9YCycfJ4X7l2GWSjM8c7cdc1dRPzI3+EO3jjvh7bDrjWdZmdlBAgFAxr2V0
R8yf/hPu0SSM+OeWmmSHepiohP+T/cM/Ng2sXw+nJo7fzhqe5SFRG/
8n+4A8y+HBprvO9YjVKUozN3EfGn1Aj3SYsgNOq4r+ArDgWpUriLiA+lRrgH0mHWR2HT495wBBE6cxcRv0q
NcIdjwxFUPHx01ojcIHXNbTS2tA1hYSIiiZc64T56DpSc1qnXTFFkCIKaet3IJCL+kjrh3jEcwa41UL0VgL
IC7y7V3728eygrExFJuNQJd4DZl+INR/BbAM47pYSLZ4/m+4+/
xY+e3NTxPbAiIsNeaoV7wTiYeK7Xa8Y50gNp/OTy07l03jh+8vTb/
Muf3lDAi4gvpFa4Q2Q4gm3eaJFAIM347kdmc+3ZE/
mfVdv4+iOv096ugBeR4S31wn3aByE9q1Of97Q049ZLpnPTosncv2YnX3povb5+T0SGtdQL96x8OO0DULEcW
o/1cTczvrLkNL580VQefuUdPn3/
yzS1qoukiAxPqRfu4A1H0HDouOEIAD69eAq3XjKdxyv2c8OvXqKhWQEvIsNPaob75HdDqAQ2LIu5+O/
OOZnbl87m2bcPcu0vXiTc1DrIBYqI9E9qhnsgHWZGhiNoOBSzyaXzx/OTy09n3Y5DXPk/
a6jR6JEiMoykZrgDzLkM2po7DUfQ1QfnjOGOK8/gjT1HuPyu1Rys1fetisjwkLrhPnoujJwK64//
Eo9oF84o4+5r57Gjqp7L7nyBvYcbBqc+EZF+SN1wN/PO3nethud/
0qnnTFcLTynhV9e9i4O1TXzs5y+ws6p+EAsVEem71A13gPmfhFOXwJP/DHcsgLef6r7pxGLuu/
5Mwk2tfOzOv7H5QO0gFioi0jepHe5ZBXDFg3DFQ+Ac3LcU7r8cqrbEbD57XCEP3rCAtna49M7VVOw5PMgFi
4jEJ7XDvcOpF8JNq+G9t8H25+BnZ8HTt0FT+LimU8vyeOhTC8hKT+Pjd63m5Z2xe9uIiAwlhXuH9CCc84/
w2Zdg5lJ47t/hv+bBhshZfZSTR4b47acWUBwK8on/WcNPnnqbww0aE15EkofCvau8Mvh/
P4frnoTcUlj+SfjF+2Dv+k7NxhXl8Nt/WMC5U0byo6c2sfB7zyjkRSRpKNy7M/5dcP0K+OB/
QuXbcOf58Ojnoa7qaJNR+VncdfU8/vjZczlr0giFvIgkDYV7T9LS4IyrvUs1Z34KXv4V/OcZ8OJ/
Q9uxIQlmji3oNuTrWjR8sIgMPoV7PLIL4X3fhRuf976L9c83w53nwbbnOjWLFfI3/7WeHz+1SWfyIjKo4gp
3Mys2s4fNrM7MdpjZFT20nWRmfzSzWjOrNLPbE1fuEBs1Da7+PVz6a2iuhV9eDA9dC4c7fwdrdMhPKw7w46
fe5tzvPaOQF5FBE++Z+0+BZqAUuBK4w8xmdG1kZkHgSeAZoAwYB/wmMaUmCTOY/kH49Iuw+Ovw1mPwX/
O93jWtnceemTm2gM+dkcWfPncuZ08eoZAXkUHTa7ibWQhYCtzinAs751YBfwCuitH8WmCPc+6Hzrk651yjc
25DQitOFhnZcP5XvJCf/G6vX/
wdZ8Pmp49rOmNMAXdeNU8hLyKDxnr7QmgzOx34m3MuO2rezcD5zrlLurS9B8gARgLzgdeBzzrnXoux3RuAG
wBKS0vLly2LPbZ6b8LhMLm5uSe0biIVV73MlM13kdOwl4MjF7B5ynU0ZZXErG/HkTb+sKWFl/
a3kZ0OZ45O55wx6UwpTMPMBr32ZNmH3VF9/
aP6+ieZ61u8ePFLzrl5MRc653qcgIXAvi7zrgdWxmj7BNACvA8IAl8GtgLBnl6jvLzcnagVK1ac8LoJ19Lo
3F+/79y3S73pr7e7lU8/0W3z19+pcV9Y9oo77RuPuZO++kd33u3PuB8/ucntrKobxKKTbB/GoPr6R/
X1TzLXB6xz3eRqPNfcw0B+l3n5QKyRsxqAVc65x5xzzcAPgBHAtDheZ/
hLz4TzbobPrIVT3gvPfIf5az8Lbz8Zs/mMMQX88LK5rP3Ge/jBx+YwtjCbHz+9iYW3r+DSO1/
gwbU7OdKoyzYi0nfxhPsmIN3MTomaNweoiNF2A6CO3YXj4bJfwyeWAwb3fRQeuAIO7YjZPDcznY+Wj+P+68
9i1VffzZcvmkplbRNf/d1rzP/OU3z2gVdY8dYBWtvaB/ffISLDVnpvDZxzdWa2HLjNzD4JzAU+BJwdo/
lvgC+Z2XuAFcDngErgjYRVPJxMuYC18/+D8zNeg2e/
Dz99F5z7RW8Mm4ysmKuMLczm04uncNOiyazffZjfvbSbRzfs4dH1eyjJy+TDc8fwkTPGMW101z+mRESO6TX
cI24C7gEOAFXAjc65CjObAGwEpjvndjrn3jKzTwA/B0YBLwMfjFyiSUkuLQMWfhFmXwqPfx1W/
iusvx+WfA+mLul2PTNj7vhC5o4v5BsXT2PFmwdZ/vJufvH8dv77uW1MG53P0jPG8sG5YxiVF/
tAISKpK65wd85VAx+OMX8nkNtl3nJgeSKK85WCcXDpL2HLCnjsK/
DAZd4XhSz5LhSf3OOqmekBlswsY8nMMqrrmnl0/R6Wv7yb7/
zpDf71z28wf2IxS2aWceGMMsYWZve4LRFJDfGeuUuiTF4Mn3oe1twBK7/
nXaqZudT7Vqix5d5NUj0oDgW55uyJXHP2RDYfqOX3r+7h8Yp9fOvRjXzr0Y3MGlvARTNKWTKzjCmj8gbpHy
UiyUbhPhQ6xo6f9THvztb1y2D9A1A22wv5WR+FYKjXzUwZlceXLpzKly6cytaDYR6v2M/
jFfv4wROb+METm5hUEuKiGWVcNKOMOeMKhqQPvYgMDYX7UMofAx/4d3jPN2HDg7D2Hnj0c/
DELTD34zDvOig5Na5NTSrJ5cZFudy4aDL7Djfy5MZ9/
KViH3c9u5U7Vm5hdEEWF04v5aIZZbzr5GLSAxozTsTPFO7JIDPPO2Ofdx3sXA3r7oa1d8Oan8PEhd6y0z4A
gYy4NldWkMVVCyZy1YKJ1NQ38/QbB3i8Yh/L1u7ily/soCgngwumeUG/8JSRA/
yPE5GhoHBPJmZw0gJvuujf4JVfwbp74aFrILcMyq+BM66BgrFxb7IwJ8jS8nEsLR9HfXMrz246yOMV+3miY
h//+9JusjMCTC6AjWzmrEkjmDW2gAyd1YsMewr3ZJVbAgu/BOd83rvDdd3d8Nfb4dkfwNT3eWfzJ5/
vfaFInHKC6SyZOZolM0fT0tbO6q1VPLVxP0+/tpPb//
IWAKFggHkTizlr0gjOmlTMrLEFuoQjMgwp3JNdWsDrDz91CVRvg5d+Aa/8Bt78I4yYAuV/
B6dcCCNP6bWnTbSMQBoLTylh4SklLC6oZOa8Bby4rZrVW6tYvbWK7/3lTcAL+/
knd4T9CGaOyVfYiwwDCvfhpPhkeO9tsOifYOPvvbP5J77uTaFRcNLZMPFcOOkcKDmtT2f1I3Mzef+s0bx/
1mgAKsNNrNnqhf0LW6v47mNe2OdmpjN/YtHRsJ+hsBdJSgr34SgjC+Zc5k1VW2D7KtjxPGx/
HjY+4rXJLu4c9qUz+xz2H5g9mg/M9sL+YG0Ta7Z5Z/UvbKlixVsHAS/
s54wvYM44727auRMKdcesSBJQuA93IyZ7U/k14BzU7PBCfsfzXui/+UevXVYBTDgbJp7jhX3ZbAjE/
99fkpfJxbPHcPHsMQAcqG1kzdZq1myr4tVdNdz17FZa270x48YWZjNnfEFk+IQiZo7NJyeot5rIYNJvnJ+Y
QdFEbzr9Sm9eza5jQb/jedj0mDc/
mAcTzoKTzmbkwSbYWwSFEyCrMK5r96PysrhkzhgumeOFfWNLGxV7DvPKzhpe3VXD+t01/Pm1fQAE0oxTS/
MiYV/
A3PFFTBmVSyBNN1WJDBSFu98VjofCy2HO5d7zI3tgx9+Ohf3mJ5kJUPFdb3lmvhfy3U3dhH9WRoDyk4opP6
n46LzKcBPrd9WwflcNr+yq4U8b9vDAizsB74Pa2eMKmTO+kJlj85k+Op+JI0KkKfBFEkLhnmryx3jDG8z6q
Pe84RDrnlrOvMklULPz2HRoB2x7FprDndfvGv5FE2Hq+6HopONeamRuJhdMK+WCaaUAtLc7tlfV8equyNn9
rhruXrWVljbvck5OMMBpZXnMGFPA9DFe4E8t0/g4IidC4Z7qsosI502G6YuOX+YcNBzqHPrR07bnoLkW/
vI1r8/96VfBtIu9Lw+PIS3NmFSSy6SSXD5yxjgAmlrb2HwgTMWeI2zcc4SNe4/
wyCvv8OvV3hebpBmUhYz5+15h+uj8o6E/IjdzoPaIiC8o3KV7ZpBT7E1j5h6/3Dkv5Dc86PW9X/5JyCzw/
io4/
RMw5vRer99npgeYMaaAGWMKojbr2H2ogYo9h9m45wjPvraNtduq+f2re462KcvPYvqYfKaNzuPU0jwml+Qy
qSSkD25FIvSbICfOzLscc/5XYOHNsGOVF/Kv3uf1wR81w/tgd/ZlEIp/
DBszY3xxDuOLc1gyczRnBPeyaNEiDtU1s3HvsTP8jXuO8NdNB2lrP/
bNjmMLs5k8KpfJJSGmjMplckkuU0blMiIU1KiYklIU7pIYaWlw8nne9P7vw+u/84L+8X+CJ2/17rA9/
SqYfEGfumBGKwoFOWfKSM6ZcuxA0dTaxvbKerYcDLP5QJgtB71p7bZqGlrajrYryM6IhH3n0B9XlKNeO+JL
CndJvKwCmPf33nTgDS/k1y+DNx71BkCb+3GY+wkYOaXfL5WZHmBqWd5xH7y2tzv2Hmn0Av9AmM0HvZ/
PvHmA367bfbRdMD2N8UXZTCjOYULkr4XxUY9zM/
UrIsOT3rkysEZNg4v+BS64Fd5+wgv65/8DVv0IJiyAuVd430BVPKnbD2JPRFqaMbYwm7GF2Zx/
akmnZTX1zd4Z/
oE6thwMs7O6np3V9azbfojaptZObUeEgkfDPvoAMGFEDmX5WTrrl6SlcJfBkR70etJMuxhq93ln8q/
8Bv7w2UgDg4LxkTtup0RNk8G19bjpvirMCR7XJx+8D3IPN7QcDfud1fXsivx8dVcNf3ptb6fr+xkB7wASop
HHKjcwtiibcUXeAWVsUTZl+Vkad0eGjMJdBl9eGZz7ee+rBvdXwME3vTFyqjZ704YHoenI0ebnWTpUREJ/
5JTO4R8q6dNomD0xMwpzghTmBJk9rvC45a1t7ew93Ngp/HdW1/
PGjkaefvMAleGmTu0DaUZZfhZjCyOhHxX8YwuzGVOYTVZGICG1i3SlcJehYwZlM70pmnNQV3k07He/
8gwTQs3e881PQlvzsbbBPO8afzAEwRwI5kJGTuR51JQRWda1XWYelEyN65JQeiDt6DX5c6Lmr1y5kkWLFtH
Y0saemgbeqWlg96EG3jnkPX7nUANrtlWz99UGok78Ae9Gr7KCTEblZVGan0lJXhaj8jK9Kd+bNzI3U1+gIn
2mcJfkY+Z9WUluCZy0gK1HxjNh0SJvWXsbHN4VCf4tUL0Vmmqhuc6bWuohvC/
yvD7yM9zzpZ20DBh7hjfWzoQFMP5Mr29/H2VlBI7epBVLS1s7+w43Hg38jp/
7axvZd7iRDbsPU1XXhOtyADCD4pwgJXmZlOZHwj8/+oDgHQBK8jLVz1+O0jtBhpe0wLHB0aa8J751nPPO9q
MPAM1hL/wbquGdl2DHC/DCz+D5n3jrlEzzvu5wQmQqHN/
v0jOizvy709rWTmW4mQO1jRw40sSB2ib2H2nkQG0TB2u9n2/tq+VguKnT9f8OoWCAkXmZlOQeC/
xwZTN7sndGDgLBowcDXRLyN4W7+J8ZpGd6U6wz8ukf8n62NHhBv/
MFL+w3PATr7vGW5Y+LhP1Z3tDJffwylHilB9IoK8iirKDnMfHb2h3Vdd5BoDLczMHaJg7WNlEZPvZzy8Ewq
7dVUVPfwsObXztuG3lZ6ZTkZTIiFKS405RJcSiD4pC3rCgUZEQoqIPBMKNwF+mQke19ucnEc73n7W2w/
3XYudobSXPbs/DaQ96yrEIv6MfNZ8w7B2DtZsAiH+4aWFrU464/
o5alBbyx9UdM7tMHw4E0oyTPOzPvzVPPrGBG+VlU1jZzMNwYCf9jB4Tquma2V9bz0o4aDtU3x/
yLALyB3TodBHK8n0WhIIU5GRRmBynKyaAgJ4PCHO9xdkZAdwYPEYW7SHfSAjB6jjed+Q/e5Z1D246F/
c7VsOkvnArwdj9fK7f02IFl4kKvJ1CCQjE9zRhdkM3ogmygoMe27e2O2sZWquq80O+YqiI/
D0UeV4WbeXt/mOq65k53AncVDKR5wR8J/MJs73FRTpCCyM9d+1oJvH2Q/
KwM8rMzyM9KJy8rg2C6PkTuD4W7SLzMvJutiid5N18BNB7m+WdXcM6CBYDzDgA4cO1Rj2P87Hjc2uhdCtq+
ypte/5233dCoqLA/F0aemrCw70lamlEQOfueVNJ7e/C+qOVwQwuH6pupqW+JTM3UROYdjsw7VN/
Mzup61u9u5lB9C82t7Ue38bNXXzxuu9kZAfKz048L/c7zMsjLSo+avOe5memEgukp/f0ACneR/
sgqoCVYCHmlJ76NsllQfq0X+NVbjwX99lVQsdxrEyo59n24Exd63TeT5HJHVkaArIwApfl9+
+7cxpY2DtU38/
SzLzB11lyONLRwpLGFIw2tnR83eo8rw81srayLLGvt9vJRBzPvO37zMqNCP+oA4M33nudmRpZFfh57noHr2
n1pmFC4iyQLs+O/E/fQti5h/7DXNmdk5Ptwz/V6DoVGegeA0MiEDuMwkLIyAowuyGZcXhrzJ/
at66lzjvrmNo40tlDb2BqZvMfhJu9xuLGVI5Fl4SZvWXVdMzuq6o+2bYr666E7aQZ5zz7hHSiigr/
jeU4wnVAwQHYwnVBmgOyMAKHMdLKDAXKiHoeCkXnBwKDct6BwF0lW0ZeBzrg6EvbbO4f9xt8fv14wD0IjIm
FfwqlHWqDtWe+A0HEAiCwjZ8QJj9I5lMyMUGY6ocx0Rvf8MUKPmlrbqGtqI9zYSm2Td0AIN3UcILyfFW9tY
UTZ2KMHiXBTK4fqvEtMtY2t1De1Ut/Sdtz9CT0JBtLIyfTC/6oFE7lx0eQT/0d0Y/
j9r4qkKjMoPtmbzrjKC/sj78CRvVBfCXUHI1NlZDoINbsYcWg37F8B7a2xt5tV6IV8p6k4xrzI/
KzCAekGOhQy0wNkpnu9gLqz0u1i0aIZPW7HOUdjSzv1za3UN7dFpuMf1zW10tDcRn1Lm3dQaG5jfPHA/
KWlcBcZrsygYJw39eCFlStZdP750FhzLPSjDwT11VBf5U1H3oF9r3kHi9b
Gbl43DbKLj4V9djFkF0FOkffz6FTc+XkwlDSfEySamZEdDJAdDDBiqIuJULiLpAKzYyE78pT41mmuPxb69V
WdDwLRU80O2Puq9327LfXdby8Q7BL+3gFgcmUY0tZBdmGM5UXel7L79KAwkOIKdzMrBu4GLgQqgf/vnLu/
l3WeARYDGc65bv4eFJGkFczxpr4MvdDS6IX80am68/P6qOc1O2HPq4ypq4Ldj3S/TQt4g8PFCv7sQm/
wt2DI+6zh6GBxuV0Gj8v1hp1OIfGeuf8UaAZKgbnAn8xsvXOuIlZjM7uyD9sWEb/IyIKM0ZA/
Ou5Vnlu5kkXnnOVdNmqo6XJwiDHVHYTKTV77xsPx15aWAZm5sYO/
Y15m7rGDRKTtiMptsD392AEkM9I2I5TUnz30GsBmFgKWAjOdc2FglZn9AbgK+FqM9gXArcDVwAuJLVdEfCk
jCzLKvLH++6K97diAcM110Bw1QmhzuJvHUc+bwlC/
69h6TWFobej0ErMAXu+u7o4hpbOjhpbO8eZnZB973O28nMiH5JNOZK/1yHrroG9mpwN/
c85lR827GTjfOXdJjPY/BTYDDwPb6OayjJndANwAUFpaWr5s2bIT+geEw2Fyc2MPsZoMkr0+SP4aVV//
qL6+sfY20tobSW9tINDWQFO4mrygEWjznnfMD7Q1Rn42EWhrJK29MfK4KebjtG6uTu8c/
xG2Tr7mhGpdvHjxS865eTEXOud6nICFwL4u864HVsZoOw94Fe8vgomAA9J7e43y8nJ3olasWHHC6w6GZK/
PueSvUfX1j+rrn4TV19rsXEONc4f3OFe52bm9G5zbsdq5qq0nvElgnesmV+O5Lh4G8rvMywdqo2eYWRrwM+
AfnXOtGglORCRKIAMCBd6Hw4Mgnk8DNgHpZhbdf2oO0PXD1Hy8M/
cHzWwfsDYyf7eZLex3pSIiErdez9ydc3Vmthy4zcw+iddb5kPA2V2aHgbGRD0fD7wIlAMHE1KtiIjEJd5+P
DcB2cAB4AHgRudchZlNMLOwmU2IXALa1zFxLND3O+eau9uwiIgkXlx90Z1z1cCHY8zfCcT8mNs5tx3QhXcR
kSGQvD3wRUTkhCncRUR8SOEuIuJDCncRER9SuIuI+JDCXUTEhxTuIiI+pHAXEfEhhbuIiA8p3EVEfEjhLiL
iQwp3EREfUriLiPiQwl1ExIcU7iIiPqRwFxHxIYW7iIgPKdxFRHxI4S4i4kMKdxERH1K4i4j4kMJdRMSHFO
4iIj6kcBcR8SGFu4iIDyncRUR8SOEuIuJDCncRER9SuIuI+JDCXUTEhxTuIiI+pHAXEfEhhbuIiA/
FFe5mVmxmD5tZnZntMLMruml3jZm9ZGZHzGy3md1uZumJLVlERHoT75n7T4FmoBS4ErjDzGbEaJcDfB4YCZ
wJXADc3P8yRUSkL3o9qzazELAUmOmcCwOrzOwPwFXA16LbOufuiHr6jpndByxOYL0iIhIHc8713MDsdOBvz
rnsqHk3A+c75y7pZd1HgDedc1+LsewG4AaA0tLS8mXLlvW9eiAcDpObm3tC6w6GZK8Pkr9G1dc/qq9/
krm+xYsXv+ScmxdzoXOuxwlYCOzrMu96YGUv6/0dsBsY2dtrlJeXuxO1YsWKE153MCR7fc4lf42qr39UX/
8kc33AOtdNrsbzYWcYyO8yLx+o7W4FM/sw8F3gPc65yjheQ0REEiieD1Q3AelmdkrUvDlARazGZrYE+G/
gEufca/
0vUURE+qrXcHfO1QHLgdvMLGRm5wAfAn7dta2ZvRu4D1jqnHsx0cWKiEh84u0KeROQDRwAHgBudM5VmNkEM
wub2YRIu1uAAuDPkflhM3ss8WWLiEhP4rrByDlXDXw4xvydQG7Uc3V7FBFJAhp+QETEhxTuIiI+pHAXEfEh
hbuIiA8p3EVEfEjhLiLiQwp3EREfUriLiPiQwl1ExIcU7iIiPqRwFxHxIYW7iIgPKdxFRHxI4S4i4kMKdxE
RH1K4i4j4kMJdRMSHFO4iIj6kcBcR8SGFu4iIDyncRUR8SOEuIuJDCncRER9SuIuI+JDCXUTEhxTuIiI+pH
AXEfEhhbuIiA8p3EVEfEjhLiLiQwp3EREfUriLiPiQwl1ExIcU7iIiPhRXuJtZsZk9bGZ1ZrbDzK7ooe0Xz
GyfmR02s3vMLDNx5YqISDziPXP/
KdAMlAJXAneY2YyujczsIuBrwAXARGAS8K2EVCoiInHrNdzNLAQsBW5xzoWdc6uAPwBXxWh+DXC3c67COXc
I+DZwbQLrFRGROKTH0eZUoM05tylq3nrg/BhtZwC/79Ku1MxGOOeqohua2Q3ADZGnYTN7K/
6yOxkJVJ7guoMh2euD5K9R9fWP6uufZK7vpO4WxBPuucDhLvMOA3lxtO14nAd0Cnfn3F3AXXG8fo/
MbJ1zbl5/tzNQkr0+SP4aVV//
qL7+Sfb6uhPPNfcwkN9lXj5QG0fbjsex2oqIyACJJ9w3AelmdkrUvDlARYy2FZFl0e32d70kIyIiA6vXcHf
O1QHLgdvMLGRm5wAfAn4do/
mvgOvMbLqZFQHfAO5NYL2x9PvSzgBL9vog+WtUff2j+von2euLyZxzvTcyKwbuAd6Ld+38a865+81sArARm
O6c2xlp+0Xgq0A28DvgU865pgGqX0REYogr3EVEZHjR8AMiIj6kcBcR8aFhEe7JPLaNmWWa2d2RumrN7BUz
e183ba81szYzC0dNiwayvsjrrjSzxqjX7PaGsSHYf+EuU5uZ/Wc3bQdl/
5nZZ8xsnZk1mdm9XZZdYGZvmlm9ma0ws25vIunL+zYR9ZnZWWb2pJlVm9lBM3vIzEb3sJ243xcJqm+imbku
/3+39LCdwd5/V3aprT5Sb3k32xmQ/ZcowyLcSe6xbdKBXXh37BYAtwC/NbOJ3bR/
wTmXGzWtHOD6Onwm6jWnxmowFPsvel/g/f82AA/
1sMpg7L89wHfwOhEcZWYj8XqO3QIUA+uAB3vYTlzv20TVBxTh9eyYiHfnYi3wi1621ev7IoH1dSiMes1v97
CdQd1/zrn7urwfbwK2Ai/3sK2B2H8JkfThbkk+to1zrs45903n3HbnXLtz7o/
ANiDm0T7JDfXYQB8FDgDPDeJrHsc5t9w59whd7qoGPgJUOOcecs41At8E5pjZaV230cf3bULqc849FqntiH
OuHvgv4Jz+vl6i6uuLodh/MVwD/MoN014nSR/
udD+2Tawj+IzIsuh2pWY2YgDr68TMSvFqjnWTF8DpZlZpZpvM7BYzi2cIiET4t8jrPt/DpYyh3n/x/
DIN1f6DLvsncg/IFmK/F/
vyvh0o59H9+7BDPO+LRNthZrvN7BeRv4ZiGdL9F7ncdh7evTs9GYr9F5fhEO6JGttmwJlZBnAf8Evn3Jsxm
jwLzARG4Z2VfBz48iCU9lW8Syxj8f5sf9TMJsdoN2T7z7x7Js4HftlDs6Hafx36817sqW3Cmdls4J/pef/
E+75IlEpgPt4lo3K8fXFfN22HdP8BVwPPOee29dBmsPdfnwyHcB8WY9uYWRreXbvNwGditXHObXXObYtcvn
kNuA3vUsSAcs6tcc7VOueanHO/
BJ4H3h+j6VCODXQ1sKqnX6ah2n9R+vNe7KltQpnZFOAx4B+dc91e4urD+yIhIpdX1jnnWp1z+/
F+Ty40s677CYZw/0VcTc8nGoO+//pqOIR70o9tY2YG3I33wc9S51xLnKs6wAassL6/7lCODdTrL1MMg73/
Ou2fyHXhycR+L/blfZswkcsJTwHfds7FGiKkJ4O9Pzsuv8V6zSHZfwDmDbEyBvjfPq46VL/
PsTnnkn4ClgEPACG8D4gOAzNitFsC7AOm4/
UceAb47iDU93NgNZDbS7v3AaWRx6cBrwO3DnBthcBFQBZez54rgTpgahLtv7MjNeUlw/6L7Kcs4N/w/
hrr2Hclkffe0si87wGr+/u+TWB9Y/E+A/hyIt8XCazvTGAq3knlCLyeRiuSZf9FLb8L77OfIdl/
CXsfD3UBcf5nFAOPRHbeTuCKyPwJeH+
+TYhq+0VgP3AErxtY5gDXdhLeEbsxUkvHdGXX+oAfRGqrw+tidRuQMcD1lQBr8f6crcE7CL03WfZf5DXvBH
4dY/6Q7D+8XjCuy/TNyLL3AG/iddlcCUyMWu+fgMd6e98OVH3ArZHH0e/
DcKz6enpfDGB9H8frSVYH7MX7sLIsWfZfZFlWZH9cEGO9Qdl/
iZo0toyIiA8Nh2vuIiLSRwp3EREfUriLiPiQwl1ExIcU7iIiPqRwFxHxIYW7iIgPKdxFRHzo/
wBmhquKPyS1kgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(pd.DataFrame(history.history))\n",
"plt.grid(True)\n",
"plt.gca().set_ylim(0, 1)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.3885664],\n",
" [1.6792021],\n",
" [3.1022797]], dtype=float32)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Functional API"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Not all neural network models are simply sequential. Some may have complex
topologies. Some may have multiple inputs and/or multiple outputs. For example, a
Wide & Deep neural network (see [paper](https://ai.google/research/pubs/pub45413))
connects all or part of the inputs directly to the output layer."
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"input_ = keras.layers.Input(shape=X_train.shape[1:])\n",
"hidden1 = keras.layers.Dense(30, activation=\"relu\")(input_)\n",
"hidden2 = keras.layers.Dense(30, activation=\"relu\")(hidden1)\n",
"concat = keras.layers.concatenate([input_, hidden2])\n",
"output = keras.layers.Dense(1)(concat)\n",
"model = keras.models.Model(inputs=[input_], outputs=[output])"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model\"\n",
"__________________________________________________________________________________
________________\n",
"Layer (type) Output Shape Param # Connected
to \n",
"==================================================================================
================\n",
"input_1 (InputLayer) [(None, 8)] 0
\n",
"__________________________________________________________________________________
________________\n",
"dense_5 (Dense) (None, 30) 270 input_1[0]
[0] \n",
"__________________________________________________________________________________
________________\n",
"dense_6 (Dense) (None, 30) 930 dense_5[0]
[0] \n",
"__________________________________________________________________________________
________________\n",
"concatenate (Concatenate) (None, 38) 0 input_1[0]
[0] \n",
" dense_6[0]
[0] \n",
"__________________________________________________________________________________
________________\n",
"dense_7 (Dense) (None, 1) 39
concatenate[0][0] \n",
"==================================================================================
================\n",
"Total params: 1,239\n",
"Trainable params: 1,239\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________
________________\n"
]
}
],
"source": [
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"363/363 [==============================] - 1s 887us/step - loss: 1.9731 -
val_loss: 3.3940\n",
"Epoch 2/20\n",
"363/363 [==============================] - 0s 683us/step - loss: 0.7638 -
val_loss: 0.9360\n",
"Epoch 3/20\n",
"363/363 [==============================] - 0s 687us/step - loss: 0.6045 -
val_loss: 0.5649\n",
"Epoch 4/20\n",
"363/363 [==============================] - 0s 709us/step - loss: 0.5862 -
val_loss: 0.5712\n",
"Epoch 5/20\n",
"363/363 [==============================] - 0s 707us/step - loss: 0.5452 -
val_loss: 0.5045\n",
"Epoch 6/20\n",
"363/363 [==============================] - 0s 672us/step - loss: 0.5243 -
val_loss: 0.4831\n",
"Epoch 7/20\n",
"363/363 [==============================] - 0s 681us/step - loss: 0.5185 -
val_loss: 0.4639\n",
"Epoch 8/20\n",
"363/363 [==============================] - 0s 700us/step - loss: 0.4947 -
val_loss: 0.4638\n",
"Epoch 9/20\n",
"363/363 [==============================] - 0s 675us/step - loss: 0.4782 -
val_loss: 0.4421\n",
"Epoch 10/20\n",
"363/363 [==============================] - 0s 693us/step - loss: 0.4708 -
val_loss: 0.4313\n",
"Epoch 11/20\n",
"363/363 [==============================] - 0s 668us/step - loss: 0.4585 -
val_loss: 0.4345\n",
"Epoch 12/20\n",
"363/363 [==============================] - 0s 686us/step - loss: 0.4481 -
val_loss: 0.4168\n",
"Epoch 13/20\n",
"363/363 [==============================] - 0s 675us/step - loss: 0.4476 -
val_loss: 0.4230\n",
"Epoch 14/20\n",
"363/363 [==============================] - 0s 681us/step - loss: 0.4361 -
val_loss: 0.4047\n",
"Epoch 15/20\n",
"363/363 [==============================] - 0s 698us/step - loss: 0.4392 -
val_loss: 0.4078\n",
"Epoch 16/20\n",
"363/363 [==============================] - 0s 682us/step - loss: 0.4420 -
val_loss: 0.3938\n",
"Epoch 17/20\n",
"363/363 [==============================] - 0s 680us/step - loss: 0.4277 -
val_loss: 0.3952\n",
"Epoch 18/20\n",
"363/363 [==============================] - 0s 671us/step - loss: 0.4216 -
val_loss: 0.3860\n",
"Epoch 19/20\n",
"363/363 [==============================] - 0s 660us/step - loss: 0.4033 -
val_loss: 0.3827\n",
"Epoch 20/20\n",
"363/363 [==============================] - 0s 662us/step - loss: 0.3939 -
val_loss: 0.4054\n",
"162/162 [==============================] - 0s 423us/step - loss: 0.4032\n"
]
}
],
"source": [
"model.compile(loss=\"mean_squared_error\",
optimizer=keras.optimizers.SGD(learning_rate=1e-3))\n",
"history = model.fit(X_train, y_train, epochs=20,\n",
" validation_data=(X_valid, y_valid))\n",
"mse_test = model.evaluate(X_test, y_test)\n",
"y_pred = model.predict(X_new)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What if you want to send different subsets of input features through the wide
or deep paths? We will send 5 features (features 0 to 4), and 6 through the deep
path (features 2 to 7). Note that 3 features will go through both (features 2, 3
and 4)."
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"input_A = keras.layers.Input(shape=[5], name=\"wide_input\")\n",
"input_B = keras.layers.Input(shape=[6], name=\"deep_input\")\n",
"hidden1 = keras.layers.Dense(30, activation=\"relu\")(input_B)\n",
"hidden2 = keras.layers.Dense(30, activation=\"relu\")(hidden1)\n",
"concat = keras.layers.concatenate([input_A, hidden2])\n",
"output = keras.layers.Dense(1, name=\"output\")(concat)\n",
"model = keras.models.Model(inputs=[input_A, input_B], outputs=[output])"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"363/363 [==============================] - 1s 934us/step - loss: 3.1941 -
val_loss: 0.8072\n",
"Epoch 2/20\n",
"363/363 [==============================] - 0s 734us/step - loss: 0.7247 -
val_loss: 0.6658\n",
"Epoch 3/20\n",
"363/363 [==============================] - 0s 719us/step - loss: 0.6176 -
val_loss: 0.5687\n",
"Epoch 4/20\n",
"363/363 [==============================] - 0s 718us/step - loss: 0.5799 -
val_loss: 0.5296\n",
"Epoch 5/20\n",
"363/363 [==============================] - 0s 689us/step - loss: 0.5409 -
val_loss: 0.4993\n",
"Epoch 6/20\n",
"363/363 [==============================] - 0s 717us/step - loss: 0.5173 -
val_loss: 0.4811\n",
"Epoch 7/20\n",
"363/363 [==============================] - 0s 708us/step - loss: 0.5186 -
val_loss: 0.4696\n",
"Epoch 8/20\n",
"363/363 [==============================] - 0s 697us/step - loss: 0.4977 -
val_loss: 0.4496\n",
"Epoch 9/20\n",
"363/363 [==============================] - 0s 713us/step - loss: 0.4765 -
val_loss: 0.4404\n",
"Epoch 10/20\n",
"363/363 [==============================] - 0s 723us/step - loss: 0.4676 -
val_loss: 0.4315\n",
"Epoch 11/20\n",
"363/363 [==============================] - 0s 713us/step - loss: 0.4574 -
val_loss: 0.4268\n",
"Epoch 12/20\n",
"363/363 [==============================] - 0s 697us/step - loss: 0.4479 -
val_loss: 0.4166\n",
"Epoch 13/20\n",
"363/363 [==============================] - 0s 710us/step - loss: 0.4487 -
val_loss: 0.4125\n",
"Epoch 14/20\n",
"363/363 [==============================] - 0s 684us/step - loss: 0.4469 -
val_loss: 0.4074\n",
"Epoch 15/20\n",
"363/363 [==============================] - 0s 738us/step - loss: 0.4460 -
val_loss: 0.4044\n",
"Epoch 16/20\n",
"363/363 [==============================] - 0s 734us/step - loss: 0.4495 -
val_loss: 0.4007\n",
"Epoch 17/20\n",
"363/363 [==============================] - 0s 698us/step - loss: 0.4378 -
val_loss: 0.4013\n",
"Epoch 18/20\n",
"363/363 [==============================] - 0s 715us/step - loss: 0.4375 -
val_loss: 0.3987\n",
"Epoch 19/20\n",
"363/363 [==============================] - 0s 733us/step - loss: 0.4151 -
val_loss: 0.3934\n",
"Epoch 20/20\n",
"363/363 [==============================] - 0s 701us/step - loss: 0.4078 -
val_loss: 0.4204\n",
"162/162 [==============================] - 0s 447us/step - loss: 0.4219\n"
]
}
],
"source": [
"model.compile(loss=\"mse\", optimizer=keras.optimizers.SGD(learning_rate=1e-
3))\n",
"\n",
"X_train_A, X_train_B = X_train[:, :5], X_train[:, 2:]\n",
"X_valid_A, X_valid_B = X_valid[:, :5], X_valid[:, 2:]\n",
"X_test_A, X_test_B = X_test[:, :5], X_test[:, 2:]\n",
"X_new_A, X_new_B = X_test_A[:3], X_test_B[:3]\n",
"\n",
"history = model.fit((X_train_A, X_train_B), y_train, epochs=20,\n",
" validation_data=((X_valid_A, X_valid_B), y_valid))\n",
"mse_test = model.evaluate((X_test_A, X_test_B), y_test)\n",
"y_pred = model.predict((X_new_A, X_new_B))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Adding an auxiliary output for regularization:"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"input_A = keras.layers.Input(shape=[5], name=\"wide_input\")\n",
"input_B = keras.layers.Input(shape=[6], name=\"deep_input\")\n",
"hidden1 = keras.layers.Dense(30, activation=\"relu\")(input_B)\n",
"hidden2 = keras.layers.Dense(30, activation=\"relu\")(hidden1)\n",
"concat = keras.layers.concatenate([input_A, hidden2])\n",
"output = keras.layers.Dense(1, name=\"main_output\")(concat)\n",
"aux_output = keras.layers.Dense(1, name=\"aux_output\")(hidden2)\n",
"model = keras.models.Model(inputs=[input_A, input_B],\n",
" outputs=[output, aux_output])"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
"model.compile(loss=[\"mse\", \"mse\"], loss_weights=[0.9, 0.1],
optimizer=keras.optimizers.SGD(learning_rate=1e-3))"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"363/363 [==============================] - 1s 1ms/step - loss: 3.4633 -
main_output_loss: 3.3289 - aux_output_loss: 4.6732 - val_loss: 1.6233 -
val_main_output_loss: 0.8468 - val_aux_output_loss: 8.6117\n",
"Epoch 2/20\n",
"363/363 [==============================] - 0s 879us/step - loss: 0.9807 -
main_output_loss: 0.7503 - aux_output_loss: 3.0537 - val_loss: 1.5163 -
val_main_output_loss: 0.6836 - val_aux_output_loss: 9.0109\n",
"Epoch 3/20\n",
"363/363 [==============================] - 0s 890us/step - loss: 0.7742 -
main_output_loss: 0.6290 - aux_output_loss: 2.0810 - val_loss: 1.4639 -
val_main_output_loss: 0.6229 - val_aux_output_loss: 9.0326\n",
"Epoch 4/20\n",
"363/363 [==============================] - 0s 847us/step - loss: 0.6952 -
main_output_loss: 0.5897 - aux_output_loss: 1.6449 - val_loss: 1.3388 -
val_main_output_loss: 0.5481 - val_aux_output_loss: 8.4552\n",
"Epoch 5/20\n",
"363/363 [==============================] - 0s 902us/step - loss: 0.6469 -
main_output_loss: 0.5508 - aux_output_loss: 1.5118 - val_loss: 1.2177 -
val_main_output_loss: 0.5194 - val_aux_output_loss: 7.5030\n",
"Epoch 6/20\n",
"363/363 [==============================] - 0s 867us/step - loss: 0.6120 -
main_output_loss: 0.5251 - aux_output_loss: 1.3943 - val_loss: 1.0935 -
val_main_output_loss: 0.5106 - val_aux_output_loss: 6.3396\n",
"Epoch 7/20\n",
"363/363 [==============================] - 0s 864us/step - loss: 0.6114 -
main_output_loss: 0.5256 - aux_output_loss: 1.3833 - val_loss: 0.9918 -
val_main_output_loss: 0.5115 - val_aux_output_loss: 5.3151\n",
"Epoch 8/20\n",
"363/363 [==============================] - 0s 850us/step - loss: 0.5765 -
main_output_loss: 0.5024 - aux_output_loss: 1.2439 - val_loss: 0.8733 -
val_main_output_loss: 0.4733 - val_aux_output_loss: 4.4740\n",
"Epoch 9/20\n",
"363/363 [==============================] - 0s 882us/step - loss: 0.5535 -
main_output_loss: 0.4811 - aux_output_loss: 1.2057 - val_loss: 0.7832 -
val_main_output_loss: 0.4555 - val_aux_output_loss: 3.7323\n",
"Epoch 10/20\n",
"363/363 [==============================] - 0s 846us/step - loss: 0.5456 -
main_output_loss: 0.4708 - aux_output_loss: 1.2189 - val_loss: 0.7170 -
val_main_output_loss: 0.4604 - val_aux_output_loss: 3.0262\n",
"Epoch 11/20\n",
"363/363 [==============================] - 0s 875us/step - loss: 0.5297 -
main_output_loss: 0.4587 - aux_output_loss: 1.1684 - val_loss: 0.6510 -
val_main_output_loss: 0.4293 - val_aux_output_loss: 2.6468\n",
"Epoch 12/20\n",
"363/363 [==============================] - 0s 879us/step - loss: 0.5181 -
main_output_loss: 0.4501 - aux_output_loss: 1.1305 - val_loss: 0.6051 -
val_main_output_loss: 0.4310 - val_aux_output_loss: 2.1722\n",
"Epoch 13/20\n",
"363/363 [==============================] - 0s 879us/step - loss: 0.5100 -
main_output_loss: 0.4487 - aux_output_loss: 1.0620 - val_loss: 0.5644 -
val_main_output_loss: 0.4161 - val_aux_output_loss: 1.8992\n",
"Epoch 14/20\n",
"363/363 [==============================] - 0s 884us/step - loss: 0.5064 -
main_output_loss: 0.4459 - aux_output_loss: 1.0503 - val_loss: 0.5354 -
val_main_output_loss: 0.4119 - val_aux_output_loss: 1.6466\n",
"Epoch 15/20\n",
"363/363 [==============================] - 0s 878us/step - loss: 0.5027 -
main_output_loss: 0.4452 - aux_output_loss: 1.0207 - val_loss: 0.5124 -
val_main_output_loss: 0.4047 - val_aux_output_loss: 1.4812\n",
"Epoch 16/20\n",
"363/363 [==============================] - 0s 864us/step - loss: 0.5057 -
main_output_loss: 0.4480 - aux_output_loss: 1.0249 - val_loss: 0.4934 -
val_main_output_loss: 0.4034 - val_aux_output_loss: 1.3035\n",
"Epoch 17/20\n",
"363/363 [==============================] - 0s 855us/step - loss: 0.4931 -
main_output_loss: 0.4360 - aux_output_loss: 1.0075 - val_loss: 0.4801 -
val_main_output_loss: 0.3984 - val_aux_output_loss: 1.2150\n",
"Epoch 18/20\n",
"363/363 [==============================] - 0s 863us/step - loss: 0.4922 -
main_output_loss: 0.4352 - aux_output_loss: 1.0053 - val_loss: 0.4694 -
val_main_output_loss: 0.3962 - val_aux_output_loss: 1.1279\n",
"Epoch 19/20\n",
"363/363 [==============================] - 0s 895us/step - loss: 0.4658 -
main_output_loss: 0.4139 - aux_output_loss: 0.9323 - val_loss: 0.4580 -
val_main_output_loss: 0.3936 - val_aux_output_loss: 1.0372\n",
"Epoch 20/20\n",
"363/363 [==============================] - 0s 870us/step - loss: 0.4589 -
main_output_loss: 0.4072 - aux_output_loss: 0.9243 - val_loss: 0.4655 -
val_main_output_loss: 0.4048 - val_aux_output_loss: 1.0118\n"
]
}
],
"source": [
"history = model.fit([X_train_A, X_train_B], [y_train, y_train], epochs=20,\n",
" validation_data=([X_valid_A, X_valid_B], [y_valid,
y_valid]))"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"162/162 [==============================] - 0s 546us/step - loss: 0.4668 -
main_output_loss: 0.4178 - aux_output_loss: 0.9082\n",
"WARNING:tensorflow:5 out of the last 6 calls to <function
Model.make_predict_function.<locals>.predict_function at 0x7fd97a1a24d0> triggered
tf.function retracing. Tracing is expensive and the excessive number of tracings
could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors
with different shapes, (3) passing Python objects instead of tensors. For (1),
please define your @tf.function outside of the loop. For (2), @tf.function has
experimental_relax_shapes=True option that relaxes argument shapes that can avoid
unnecessary retracing. For (3), please refer to
https://www.tensorflow.org/guide/function#controlling_retracing and
https://www.tensorflow.org/api_docs/python/tf/function for more details.\n"
]
}
],
"source": [
"total_loss, main_loss, aux_loss = model.evaluate(\n",
" [X_test_A, X_test_B], [y_test, y_test])\n",
"y_pred_main, y_pred_aux = model.predict([X_new_A, X_new_B])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The subclassing API"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"class WideAndDeepModel(keras.models.Model):\n",
" def __init__(self, units=30, activation=\"relu\", **kwargs):\n",
" super().__init__(**kwargs)\n",
" self.hidden1 = keras.layers.Dense(units, activation=activation)\n",
" self.hidden2 = keras.layers.Dense(units, activation=activation)\n",
" self.main_output = keras.layers.Dense(1)\n",
" self.aux_output = keras.layers.Dense(1)\n",
" \n",
" def call(self, inputs):\n",
" input_A, input_B = inputs\n",
" hidden1 = self.hidden1(input_B)\n",
" hidden2 = self.hidden2(hidden1)\n",
" concat = keras.layers.concatenate([input_A, hidden2])\n",
" main_output = self.main_output(concat)\n",
" aux_output = self.aux_output(hidden2)\n",
" return main_output, aux_output\n",
"\n",
"model = WideAndDeepModel(30, activation=\"relu\")"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/10\n",
"363/363 [==============================] - 1s 1ms/step - loss: 3.3855 -
output_1_loss: 3.3304 - output_2_loss: 3.8821 - val_loss: 2.1435 -
val_output_1_loss: 1.1581 - val_output_2_loss: 11.0117\n",
"Epoch 2/10\n",
"363/363 [==============================] - 0s 852us/step - loss: 1.0790 -
output_1_loss: 0.9329 - output_2_loss: 2.3942 - val_loss: 1.7567 -
val_output_1_loss: 0.8205 - val_output_2_loss: 10.1825\n",
"Epoch 3/10\n",
"363/363 [==============================] - 0s 885us/step - loss: 0.8644 -
output_1_loss: 0.7583 - output_2_loss: 1.8194 - val_loss: 1.5664 -
val_output_1_loss: 0.7913 - val_output_2_loss: 8.5419\n",
"Epoch 4/10\n",
"363/363 [==============================] - 0s 863us/step - loss: 0.7850 -
output_1_loss: 0.6979 - output_2_loss: 1.5689 - val_loss: 1.3088 -
val_output_1_loss: 0.6549 - val_output_2_loss: 7.1933\n",
"Epoch 5/10\n",
"363/363 [==============================] - 0s 843us/step - loss: 0.7294 -
output_1_loss: 0.6499 - output_2_loss: 1.4452 - val_loss: 1.1357 -
val_output_1_loss: 0.5964 - val_output_2_loss: 5.9898\n",
"Epoch 6/10\n",
"363/363 [==============================] - 0s 837us/step - loss: 0.6880 -
output_1_loss: 0.6092 - output_2_loss: 1.3974 - val_loss: 1.0036 -
val_output_1_loss: 0.5937 - val_output_2_loss: 4.6933\n",
"Epoch 7/10\n",
"363/363 [==============================] - 0s 866us/step - loss: 0.6918 -
output_1_loss: 0.6143 - output_2_loss: 1.3899 - val_loss: 0.8904 -
val_output_1_loss: 0.5591 - val_output_2_loss: 3.8714\n",
"Epoch 8/10\n",
"363/363 [==============================] - 0s 840us/step - loss: 0.6504 -
output_1_loss: 0.5805 - output_2_loss: 1.2797 - val_loss: 0.8009 -
val_output_1_loss: 0.5243 - val_output_2_loss: 3.2903\n",
"Epoch 9/10\n",
"363/363 [==============================] - 0s 842us/step - loss: 0.6270 -
output_1_loss: 0.5574 - output_2_loss: 1.2533 - val_loss: 0.7357 -
val_output_1_loss: 0.5144 - val_output_2_loss: 2.7275\n",
"Epoch 10/10\n",
"363/363 [==============================] - 0s 863us/step - loss: 0.6160 -
output_1_loss: 0.5456 - output_2_loss: 1.2495 - val_loss: 0.6849 -
val_output_1_loss: 0.5014 - val_output_2_loss: 2.3370\n",
"162/162 [==============================] - 0s 546us/step - loss: 0.5841 -
output_1_loss: 0.5188 - output_2_loss: 1.1722\n",
"WARNING:tensorflow:6 out of the last 7 calls to <function
Model.make_predict_function.<locals>.predict_function at 0x7fd9725c2320> triggered
tf.function retracing. Tracing is expensive and the excessive number of tracings
could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors
with different shapes, (3) passing Python objects instead of tensors. For (1),
please define your @tf.function outside of the loop. For (2), @tf.function has
experimental_relax_shapes=True option that relaxes argument shapes that can avoid
unnecessary retracing. For (3), please refer to
https://www.tensorflow.org/guide/function#controlling_retracing and
https://www.tensorflow.org/api_docs/python/tf/function for more details.\n"
]
}
],
"source": [
"model.compile(loss=\"mse\", loss_weights=[0.9, 0.1],
optimizer=keras.optimizers.SGD(learning_rate=1e-3))\n",
"history = model.fit((X_train_A, X_train_B), (y_train, y_train), epochs=10,\n",
" validation_data=((X_valid_A, X_valid_B), (y_valid,
y_valid)))\n",
"total_loss, main_loss, aux_loss = model.evaluate((X_test_A, X_test_B),
(y_test, y_test))\n",
"y_pred_main, y_pred_aux = model.predict((X_new_A, X_new_B))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Saving and Restoring"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Dense(30, activation=\"relu\", input_shape=[8]),\n",
" keras.layers.Dense(30, activation=\"relu\"),\n",
" keras.layers.Dense(1)\n",
"]) "
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/10\n",
"363/363 [==============================] - 0s 882us/step - loss: 3.3697 -
val_loss: 0.7126\n",
"Epoch 2/10\n",
"363/363 [==============================] - 0s 646us/step - loss: 0.6964 -
val_loss: 0.6880\n",
"Epoch 3/10\n",
"363/363 [==============================] - 0s 658us/step - loss: 0.6167 -
val_loss: 0.5803\n",
"Epoch 4/10\n",
"363/363 [==============================] - 0s 653us/step - loss: 0.5846 -
val_loss: 0.5166\n",
"Epoch 5/10\n",
"363/363 [==============================] - 0s 649us/step - loss: 0.5321 -
val_loss: 0.4895\n",
"Epoch 6/10\n",
"363/363 [==============================] - 0s 664us/step - loss: 0.5083 -
val_loss: 0.4951\n",
"Epoch 7/10\n",
"363/363 [==============================] - 0s 677us/step - loss: 0.5044 -
val_loss: 0.4861\n",
"Epoch 8/10\n",
"363/363 [==============================] - 0s 649us/step - loss: 0.4813 -
val_loss: 0.4554\n",
"Epoch 9/10\n",
"363/363 [==============================] - 0s 676us/step - loss: 0.4627 -
val_loss: 0.4413\n",
"Epoch 10/10\n",
"363/363 [==============================] - 0s 688us/step - loss: 0.4549 -
val_loss: 0.4379\n",
"162/162 [==============================] - 0s 497us/step - loss: 0.4382\n"
]
}
],
"source": [
"model.compile(loss=\"mse\", optimizer=keras.optimizers.SGD(learning_rate=1e-
3))\n",
"history = model.fit(X_train, y_train, epochs=10, validation_data=(X_valid,
y_valid))\n",
"mse_test = model.evaluate(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"model.save(\"my_keras_model.h5\")"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.load_model(\"my_keras_model.h5\")"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:7 out of the last 8 calls to <function
Model.make_predict_function.<locals>.predict_function at 0x7fd9725c28c0> triggered
tf.function retracing. Tracing is expensive and the excessive number of tracings
could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors
with different shapes, (3) passing Python objects instead of tensors. For (1),
please define your @tf.function outside of the loop. For (2), @tf.function has
experimental_relax_shapes=True option that relaxes argument shapes that can avoid
unnecessary retracing. For (3), please refer to
https://www.tensorflow.org/guide/function#controlling_retracing and
https://www.tensorflow.org/api_docs/python/tf/function for more details.\n"
]
},
{
"data": {
"text/plain": [
"array([[0.5400236],\n",
" [1.6505969],\n",
" [3.0098243]], dtype=float32)"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict(X_new)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"model.save_weights(\"my_keras_weights.ckpt\")"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<tensorflow.python.training.tracking.util.CheckpointLoadStatus at
0x7fd9890c2990>"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.load_weights(\"my_keras_weights.ckpt\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Using Callbacks during Training"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"keras.backend.clear_session()\n",
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Dense(30, activation=\"relu\", input_shape=[8]),\n",
" keras.layers.Dense(30, activation=\"relu\"),\n",
" keras.layers.Dense(1)\n",
"]) "
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/10\n",
"363/363 [==============================] - 0s 846us/step - loss: 3.3697 -
val_loss: 0.7126\n",
"Epoch 2/10\n",
"363/363 [==============================] - 0s 672us/step - loss: 0.6964 -
val_loss: 0.6880\n",
"Epoch 3/10\n",
"363/363 [==============================] - 0s 658us/step - loss: 0.6167 -
val_loss: 0.5803\n",
"Epoch 4/10\n",
"363/363 [==============================] - 0s 651us/step - loss: 0.5846 -
val_loss: 0.5166\n",
"Epoch 5/10\n",
"363/363 [==============================] - 0s 670us/step - loss: 0.5321 -
val_loss: 0.4895\n",
"Epoch 6/10\n",
"363/363 [==============================] - 0s 658us/step - loss: 0.5083 -
val_loss: 0.4951\n",
"Epoch 7/10\n",
"363/363 [==============================] - 0s 682us/step - loss: 0.5044 -
val_loss: 0.4861\n",
"Epoch 8/10\n",
"363/363 [==============================] - 0s 657us/step - loss: 0.4813 -
val_loss: 0.4554\n",
"Epoch 9/10\n",
"363/363 [==============================] - 0s 672us/step - loss: 0.4627 -
val_loss: 0.4413\n",
"Epoch 10/10\n",
"363/363 [==============================] - 0s 655us/step - loss: 0.4549 -
val_loss: 0.4379\n",
"162/162 [==============================] - 0s 460us/step - loss: 0.4382\n"
]
}
],
"source": [
"model.compile(loss=\"mse\", optimizer=keras.optimizers.SGD(learning_rate=1e-
3))\n",
"checkpoint_cb = keras.callbacks.ModelCheckpoint(\"my_keras_model.h5\",
save_best_only=True)\n",
"history = model.fit(X_train, y_train, epochs=10,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[checkpoint_cb])\n",
"model = keras.models.load_model(\"my_keras_model.h5\") # rollback to best
model\n",
"mse_test = model.evaluate(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"363/363 [==============================] - 0s 878us/step - loss: 0.4578 -
val_loss: 0.4110\n",
"Epoch 2/100\n",
"363/363 [==============================] - 0s 702us/step - loss: 0.4430 -
val_loss: 0.4266\n",
"Epoch 3/100\n",
"363/363 [==============================] - 0s 676us/step - loss: 0.4376 -
val_loss: 0.3996\n",
"Epoch 4/100\n",
"363/363 [==============================] - 0s 671us/step - loss: 0.4361 -
val_loss: 0.3939\n",
"Epoch 5/100\n",
"363/363 [==============================] - 0s 674us/step - loss: 0.4204 -
val_loss: 0.3889\n",
"Epoch 6/100\n",
"363/363 [==============================] - 0s 672us/step - loss: 0.4112 -
val_loss: 0.3866\n",
"Epoch 7/100\n",
"363/363 [==============================] - 0s 671us/step - loss: 0.4226 -
val_loss: 0.3860\n",
"Epoch 8/100\n",
"363/363 [==============================] - 0s 659us/step - loss: 0.4135 -
val_loss: 0.3793\n",
"Epoch 9/100\n",
"363/363 [==============================] - 0s 661us/step - loss: 0.4039 -
val_loss: 0.3746\n",
"Epoch 10/100\n",
"363/363 [==============================] - 0s 655us/step - loss: 0.4023 -
val_loss: 0.3723\n",
"Epoch 11/100\n",
"363/363 [==============================] - 0s 674us/step - loss: 0.3950 -
val_loss: 0.3697\n",
"Epoch 12/100\n",
"363/363 [==============================] - 0s 652us/step - loss: 0.3912 -
val_loss: 0.3669\n",
"Epoch 13/100\n",
"363/363 [==============================] - 0s 660us/step - loss: 0.3939 -
val_loss: 0.3661\n",
"Epoch 14/100\n",
"363/363 [==============================] - 0s 648us/step - loss: 0.3868 -
val_loss: 0.3631\n",
"Epoch 15/100\n",
"363/363 [==============================] - 0s 677us/step - loss: 0.3878 -
val_loss: 0.3660\n",
"Epoch 16/100\n",
"363/363 [==============================] - 0s 651us/step - loss: 0.3935 -
val_loss: 0.3625\n",
"Epoch 17/100\n",
"363/363 [==============================] - 0s 653us/step - loss: 0.3817 -
val_loss: 0.3592\n",
"Epoch 18/100\n",
"<<123 more lines>>\n",
"Epoch 80/100\n",
"363/363 [==============================] - 0s 677us/step - loss: 0.3323 -
val_loss: 0.3354\n",
"Epoch 81/100\n",
"363/363 [==============================] - 0s 677us/step - loss: 0.3297 -
val_loss: 0.3274\n",
"Epoch 82/100\n",
"363/363 [==============================] - 0s 643us/step - loss: 0.3441 -
val_loss: 0.3167\n",
"Epoch 83/100\n",
"363/363 [==============================] - 0s 699us/step - loss: 0.3369 -
val_loss: 0.3280\n",
"Epoch 84/100\n",
"363/363 [==============================] - 0s 646us/step - loss: 0.3182 -
val_loss: 0.3634\n",
"Epoch 85/100\n",
"363/363 [==============================] - 0s 682us/step - loss: 0.3235 -
val_loss: 0.3176\n",
"Epoch 86/100\n",
"363/363 [==============================] - 0s 590us/step - loss: 0.3184 -
val_loss: 0.3156\n",
"Epoch 87/100\n",
"363/363 [==============================] - 0s 677us/step - loss: 0.3395 -
val_loss: 0.3529\n",
"Epoch 88/100\n",
"363/363 [==============================] - 0s 701us/step - loss: 0.3264 -
val_loss: 0.3258\n",
"Epoch 89/100\n",
"363/363 [==============================] - 0s 710us/step - loss: 0.3210 -
val_loss: 0.3630\n",
"Epoch 90/100\n",
"363/363 [==============================] - 0s 692us/step - loss: 0.3192 -
val_loss: 0.3376\n",
"Epoch 91/100\n",
"363/363 [==============================] - 0s 704us/step - loss: 0.3237 -
val_loss: 0.3211\n",
"Epoch 92/100\n",
"363/363 [==============================] - 0s 696us/step - loss: 0.3281 -
val_loss: 0.3456\n",
"Epoch 93/100\n",
"363/363 [==============================] - 0s 696us/step - loss: 0.3424 -
val_loss: 0.3158\n",
"Epoch 94/100\n",
"363/363 [==============================] - 0s 684us/step - loss: 0.3209 -
val_loss: 0.3409\n",
"Epoch 95/100\n",
"363/363 [==============================] - 0s 676us/step - loss: 0.3230 -
val_loss: 0.3379\n",
"Epoch 96/100\n",
"363/363 [==============================] - 0s 676us/step - loss: 0.3341 -
val_loss: 0.3213\n",
"162/162 [==============================] - 0s 440us/step - loss: 0.3310\n"
]
}
],
"source": [
"model.compile(loss=\"mse\", optimizer=keras.optimizers.SGD(learning_rate=1e-
3))\n",
"early_stopping_cb = keras.callbacks.EarlyStopping(patience=10,\n",
" restore_best_weights=True)\
n",
"history = model.fit(X_train, y_train, epochs=100,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[checkpoint_cb, early_stopping_cb])\n",
"mse_test = model.evaluate(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
"class PrintValTrainRatioCallback(keras.callbacks.Callback):\n",
" def on_epoch_end(self, epoch, logs):\n",
" print(\"\\nval/train: {:.2f}\".format(logs[\"val_loss\"] /
logs[\"loss\"]))"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"363/363 [==============================] - 0s 799us/step - loss: 0.3302 -
val_loss: 0.3556\n",
"\n",
"val/train: 1.08\n"
]
}
],
"source": [
"val_train_ratio_cb = PrintValTrainRatioCallback()\n",
"history = model.fit(X_train, y_train, epochs=1,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[val_train_ratio_cb])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# TensorBoard"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
"root_logdir = os.path.join(os.curdir, \"my_logs\")"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'./my_logs/run_2021_02_13-18_39_20'"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def get_run_logdir():\n",
" import time\n",
" run_id = time.strftime(\"run_%Y_%m_%d-%H_%M_%S\")\n",
" return os.path.join(root_logdir, run_id)\n",
"\n",
"run_logdir = get_run_logdir()\n",
"run_logdir"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"keras.backend.clear_session()\n",
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Dense(30, activation=\"relu\", input_shape=[8]),\n",
" keras.layers.Dense(30, activation=\"relu\"),\n",
" keras.layers.Dense(1)\n",
"]) \n",
"model.compile(loss=\"mse\", optimizer=keras.optimizers.SGD(learning_rate=1e-
3))"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/30\n",
"363/363 [==============================] - 1s 927us/step - loss: 3.3697 -
val_loss: 0.7126\n",
"Epoch 2/30\n",
"363/363 [==============================] - 0s 695us/step - loss: 0.6964 -
val_loss: 0.6880\n",
"Epoch 3/30\n",
"363/363 [==============================] - 0s 668us/step - loss: 0.6167 -
val_loss: 0.5803\n",
"Epoch 4/30\n",
"363/363 [==============================] - 0s 672us/step - loss: 0.5846 -
val_loss: 0.5166\n",
"Epoch 5/30\n",
"363/363 [==============================] - 0s 692us/step - loss: 0.5321 -
val_loss: 0.4895\n",
"Epoch 6/30\n",
"363/363 [==============================] - 0s 755us/step - loss: 0.5083 -
val_loss: 0.4951\n",
"Epoch 7/30\n",
"363/363 [==============================] - 0s 697us/step - loss: 0.5044 -
val_loss: 0.4861\n",
"Epoch 8/30\n",
"363/363 [==============================] - 0s 668us/step - loss: 0.4813 -
val_loss: 0.4554\n",
"Epoch 9/30\n",
"363/363 [==============================] - 0s 681us/step - loss: 0.4627 -
val_loss: 0.4413\n",
"Epoch 10/30\n",
"363/363 [==============================] - 0s 701us/step - loss: 0.4549 -
val_loss: 0.4379\n",
"Epoch 11/30\n",
"363/363 [==============================] - 0s 696us/step - loss: 0.4416 -
val_loss: 0.4396\n",
"Epoch 12/30\n",
"363/363 [==============================] - 0s 692us/step - loss: 0.4295 -
val_loss: 0.4507\n",
"Epoch 13/30\n",
"363/363 [==============================] - 0s 703us/step - loss: 0.4326 -
val_loss: 0.3997\n",
"Epoch 14/30\n",
"363/363 [==============================] - 0s 703us/step - loss: 0.4207 -
val_loss: 0.3956\n",
"Epoch 15/30\n",
"363/363 [==============================] - 0s 698us/step - loss: 0.4198 -
val_loss: 0.3916\n",
"Epoch 16/30\n",
"363/363 [==============================] - 0s 695us/step - loss: 0.4248 -
val_loss: 0.3937\n",
"Epoch 17/30\n",
"363/363 [==============================] - 0s 699us/step - loss: 0.4105 -
val_loss: 0.3809\n",
"Epoch 18/30\n",
"363/363 [==============================] - 0s 697us/step - loss: 0.4070 -
val_loss: 0.3793\n",
"Epoch 19/30\n",
"363/363 [==============================] - 0s 674us/step - loss: 0.3902 -
val_loss: 0.3850\n",
"Epoch 20/30\n",
"363/363 [==============================] - 0s 680us/step - loss: 0.3864 -
val_loss: 0.3809\n",
"Epoch 21/30\n",
"363/363 [==============================] - 0s 693us/step - loss: 0.3978 -
val_loss: 0.3701\n",
"Epoch 22/30\n",
"363/363 [==============================] - 0s 694us/step - loss: 0.3816 -
val_loss: 0.3781\n",
"Epoch 23/30\n",
"363/363 [==============================] - 0s 680us/step - loss: 0.4042 -
val_loss: 0.3650\n",
"Epoch 24/30\n",
"363/363 [==============================] - 0s 630us/step - loss: 0.3823 -
val_loss: 0.3655\n",
"Epoch 25/30\n",
"363/363 [==============================] - 0s 699us/step - loss: 0.3792 -
val_loss: 0.3611\n",
"Epoch 26/30\n",
"363/363 [==============================] - 0s 684us/step - loss: 0.3800 -
val_loss: 0.3626\n",
"Epoch 27/30\n",
"363/363 [==============================] - 0s 686us/step - loss: 0.3858 -
val_loss: 0.3564\n",
"Epoch 28/30\n",
"363/363 [==============================] - 0s 690us/step - loss: 0.3839 -
val_loss: 0.3579\n",
"Epoch 29/30\n",
"363/363 [==============================] - 0s 695us/step - loss: 0.3736 -
val_loss: 0.3561\n",
"Epoch 30/30\n",
"363/363 [==============================] - 0s 684us/step - loss: 0.3843 -
val_loss: 0.3548\n"
]
}
],
"source": [
"tensorboard_cb = keras.callbacks.TensorBoard(run_logdir)\n",
"history = model.fit(X_train, y_train, epochs=30,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[checkpoint_cb, tensorboard_cb])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To start the TensorBoard server, one option is to open a terminal, if needed
activate the virtualenv where you installed TensorBoard, go to this notebook's
directory, then type:\n",
"\n",
"```bash\n",
"$ tensorboard --logdir=./my_logs --port=6006\n",
"```\n",
"\n",
"You can then open your web browser to [localhost:6006](http://localhost:6006)
and use TensorBoard. Once you are done, press Ctrl-C in the terminal window, this
will shutdown the TensorBoard server.\n",
"\n",
"Alternatively, you can load TensorBoard's Jupyter extension and run it like
this:"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <iframe id=\"tensorboard-frame-96b788e8a876699a\" width=\"100%\"
height=\"800\" frameborder=\"0\">\n",
" </iframe>\n",
" <script>\n",
" (function() {\n",
" const frame = document.getElementById(\"tensorboard-frame-
96b788e8a876699a\");\n",
" const url = new URL(\"/\", window.location);\n",
" const port = 6006;\n",
" if (port) {\n",
" url.port = port;\n",
" }\n",
" frame.src = url;\n",
" })();\n",
" </script>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%load_ext tensorboard\n",
"%tensorboard --logdir=./my_logs --port=6006"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'./my_logs/run_2021_02_13-18_39_31'"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"run_logdir2 = get_run_logdir()\n",
"run_logdir2"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [],
"source": [
"keras.backend.clear_session()\n",
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Dense(30, activation=\"relu\", input_shape=[8]),\n",
" keras.layers.Dense(30, activation=\"relu\"),\n",
" keras.layers.Dense(1)\n",
"]) \n",
"model.compile(loss=\"mse\",
optimizer=keras.optimizers.SGD(learning_rate=0.05))"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/30\n",
"363/363 [==============================] - 1s 1ms/step - loss: 0.7645 -
val_loss: 302.8536\n",
"Epoch 2/30\n",
"363/363 [==============================] - 0s 713us/step - loss:
8159520618.2209 - val_loss: 1.3230\n",
"Epoch 3/30\n",
"363/363 [==============================] - 0s 735us/step - loss: 1.3439 -
val_loss: 1.3176\n",
"Epoch 4/30\n",
"363/363 [==============================] - 0s 738us/step - loss: 1.3546 -
val_loss: 1.3261\n",
"Epoch 5/30\n",
"363/363 [==============================] - 0s 712us/step - loss: 1.3513 -
val_loss: 1.3154\n",
"Epoch 6/30\n",
"363/363 [==============================] - 0s 724us/step - loss: 1.3274 -
val_loss: 1.3203\n",
"Epoch 7/30\n",
"363/363 [==============================] - 0s 693us/step - loss: 1.3639 -
val_loss: 1.3149\n",
"Epoch 8/30\n",
"363/363 [==============================] - 0s 709us/step - loss: 1.3487 -
val_loss: 1.3157\n",
"Epoch 9/30\n",
"363/363 [==============================] - 0s 681us/step - loss: 1.3445 -
val_loss: 1.3150\n",
"Epoch 10/30\n",
"363/363 [==============================] - 0s 681us/step - loss: 1.3697 -
val_loss: 1.3172\n",
"Epoch 11/30\n",
"363/363 [==============================] - 0s 687us/step - loss: 1.3622 -
val_loss: 1.3174\n",
"Epoch 12/30\n",
"363/363 [==============================] - 0s 693us/step - loss: 1.3389 -
val_loss: 1.3150\n",
"Epoch 13/30\n",
"363/363 [==============================] - 0s 668us/step - loss: 1.3336 -
val_loss: 1.3270\n",
"Epoch 14/30\n",
"363/363 [==============================] - 0s 673us/step - loss: 1.3429 -
val_loss: 1.3195\n",
"Epoch 15/30\n",
"363/363 [==============================] - 0s 679us/step - loss: 1.3275 -
val_loss: 1.3157\n",
"Epoch 16/30\n",
"363/363 [==============================] - 0s 701us/step - loss: 1.3669 -
val_loss: 1.3182\n",
"Epoch 17/30\n",
"363/363 [==============================] - 0s 692us/step - loss: 1.3645 -
val_loss: 1.3223\n",
"Epoch 18/30\n",
"363/363 [==============================] - 0s 691us/step - loss: 1.3839 -
val_loss: 1.3154\n",
"Epoch 19/30\n",
"363/363 [==============================] - 0s 680us/step - loss: 1.3078 -
val_loss: 1.3168\n",
"Epoch 20/30\n",
"363/363 [==============================] - 0s 663us/step - loss: 1.3215 -
val_loss: 1.3151\n",
"Epoch 21/30\n",
"363/363 [==============================] - 0s 723us/step - loss: 1.3344 -
val_loss: 1.3174\n",
"Epoch 22/30\n",
"363/363 [==============================] - 0s 674us/step - loss: 1.3269 -
val_loss: 1.3204\n",
"Epoch 23/30\n",
"363/363 [==============================] - 0s 700us/step - loss: 1.3590 -
val_loss: 1.3164\n",
"Epoch 24/30\n",
"363/363 [==============================] - 0s 687us/step - loss: 1.3381 -
val_loss: 1.3157\n",
"Epoch 25/30\n",
"363/363 [==============================] - 0s 687us/step - loss: 1.3265 -
val_loss: 1.3180\n",
"Epoch 26/30\n",
"363/363 [==============================] - 0s 704us/step - loss: 1.3532 -
val_loss: 1.3195\n",
"Epoch 27/30\n",
"363/363 [==============================] - 0s 715us/step - loss: 1.3552 -
val_loss: 1.3157\n",
"Epoch 28/30\n",
"363/363 [==============================] - 0s 698us/step - loss: 1.3447 -
val_loss: 1.3222\n",
"Epoch 29/30\n",
"363/363 [==============================] - 0s 713us/step - loss: 1.3379 -
val_loss: 1.3267\n",
"Epoch 30/30\n",
"363/363 [==============================] - 0s 698us/step - loss: 1.3583 -
val_loss: 1.3174\n"
]
}
],
"source": [
"tensorboard_cb = keras.callbacks.TensorBoard(run_logdir2)\n",
"history = model.fit(X_train, y_train, epochs=30,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[checkpoint_cb, tensorboard_cb])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice how TensorBoard now sees two runs, and you can compare the learning
curves."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check out the other available logging options:"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on function __init__ in module tensorflow.python.keras.callbacks:\n",
"\n",
"__init__(self, log_dir='logs', histogram_freq=0, write_graph=True,
write_images=False, update_freq='epoch', profile_batch=2, embeddings_freq=0,
embeddings_metadata=None, **kwargs)\n",
" Initialize self. See help(type(self)) for accurate signature.\n",
"\n"
]
}
],
"source": [
"help(keras.callbacks.TensorBoard.__init__)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Hyperparameter Tuning"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"keras.backend.clear_session()\n",
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [],
"source": [
"def build_model(n_hidden=1, n_neurons=30, learning_rate=3e-3,
input_shape=[8]):\n",
" model = keras.models.Sequential()\n",
" model.add(keras.layers.InputLayer(input_shape=input_shape))\n",
" for layer in range(n_hidden):\n",
" model.add(keras.layers.Dense(n_neurons, activation=\"relu\"))\n",
" model.add(keras.layers.Dense(1))\n",
" optimizer = keras.optimizers.SGD(learning_rate=learning_rate)\n",
" model.compile(loss=\"mse\", optimizer=optimizer)\n",
" return model"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
"keras_reg = keras.wrappers.scikit_learn.KerasRegressor(build_model)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"363/363 [==============================] - 0s 905us/step - loss: 1.5673 -
val_loss: 20.7721\n",
"Epoch 2/100\n",
"363/363 [==============================] - 0s 665us/step - loss: 1.3216 -
val_loss: 5.0266\n",
"Epoch 3/100\n",
"363/363 [==============================] - 0s 671us/step - loss: 0.5972 -
val_loss: 0.5490\n",
"Epoch 4/100\n",
"363/363 [==============================] - 0s 661us/step - loss: 0.4985 -
val_loss: 0.4529\n",
"Epoch 5/100\n",
"363/363 [==============================] - 0s 687us/step - loss: 0.4608 -
val_loss: 0.4188\n",
"Epoch 6/100\n",
"363/363 [==============================] - 0s 678us/step - loss: 0.4410 -
val_loss: 0.4129\n",
"Epoch 7/100\n",
"363/363 [==============================] - 0s 676us/step - loss: 0.4463 -
val_loss: 0.4004\n",
"Epoch 8/100\n",
"363/363 [==============================] - 0s 686us/step - loss: 0.4283 -
val_loss: 0.3944\n",
"Epoch 9/100\n",
"363/363 [==============================] - 0s 660us/step - loss: 0.4139 -
val_loss: 0.3961\n",
"Epoch 10/100\n",
"363/363 [==============================] - 0s 681us/step - loss: 0.4107 -
val_loss: 0.4071\n",
"Epoch 11/100\n",
"363/363 [==============================] - 0s 655us/step - loss: 0.3992 -
val_loss: 0.3855\n",
"Epoch 12/100\n",
"363/363 [==============================] - 0s 627us/step - loss: 0.3982 -
val_loss: 0.4136\n",
"Epoch 13/100\n",
"363/363 [==============================] - 0s 692us/step - loss: 0.3983 -
val_loss: 0.3997\n",
"Epoch 14/100\n",
"363/363 [==============================] - 0s 675us/step - loss: 0.3910 -
val_loss: 0.3818\n",
"Epoch 15/100\n",
"363/363 [==============================] - 0s 592us/step - loss: 0.3948 -
val_loss: 0.3829\n",
"Epoch 16/100\n",
"363/363 [==============================] - 0s 686us/step - loss: 0.3981 -
val_loss: 0.3739\n",
"Epoch 17/100\n",
"363/363 [==============================] - 0s 674us/step - loss: 0.3821 -
val_loss: 0.4022\n",
"Epoch 18/100\n",
"<<130 more lines>>\n",
"363/363 [==============================] - 0s 627us/step - loss: 0.3441 -
val_loss: 0.3342\n",
"Epoch 84/100\n",
"363/363 [==============================] - 0s 640us/step - loss: 0.3240 -
val_loss: 0.4136\n",
"Epoch 85/100\n",
"363/363 [==============================] - 0s 656us/step - loss: 0.3303 -
val_loss: 0.3285\n",
"Epoch 86/100\n",
"363/363 [==============================] - 0s 671us/step - loss: 0.3263 -
val_loss: 0.3440\n",
"Epoch 87/100\n",
"363/363 [==============================] - 0s 672us/step - loss: 0.3483 -
val_loss: 0.3733\n",
"Epoch 88/100\n",
"363/363 [==============================] - 0s 649us/step - loss: 0.3305 -
val_loss: 0.3188\n",
"Epoch 89/100\n",
"363/363 [==============================] - 0s 578us/step - loss: 0.3283 -
val_loss: 0.3492\n",
"Epoch 90/100\n",
"363/363 [==============================] - 0s 665us/step - loss: 0.3243 -
val_loss: 0.3175\n",
"Epoch 91/100\n",
"363/363 [==============================] - 0s 664us/step - loss: 0.3288 -
val_loss: 0.3594\n",
"Epoch 92/100\n",
"363/363 [==============================] - 0s 675us/step - loss: 0.3343 -
val_loss: 0.3169\n",
"Epoch 93/100\n",
"363/363 [==============================] - 0s 666us/step - loss: 0.3485 -
val_loss: 0.3607\n",
"Epoch 94/100\n",
"363/363 [==============================] - 0s 659us/step - loss: 0.3262 -
val_loss: 0.5184\n",
"Epoch 95/100\n",
"363/363 [==============================] - 0s 677us/step - loss: 0.3284 -
val_loss: 0.7536\n",
"Epoch 96/100\n",
"363/363 [==============================] - 0s 674us/step - loss: 0.3494 -
val_loss: 0.5075\n",
"Epoch 97/100\n",
"363/363 [==============================] - 0s 628us/step - loss: 0.3290 -
val_loss: 0.8087\n",
"Epoch 98/100\n",
"363/363 [==============================] - 0s 624us/step - loss: 0.3277 -
val_loss: 1.0447\n",
"Epoch 99/100\n",
"363/363 [==============================] - 0s 683us/step - loss: 0.3199 -
val_loss: 1.6881\n",
"Epoch 100/100\n",
"363/363 [==============================] - 0s 671us/step - loss: 0.3706 -
val_loss: 1.9265\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x7fd97a00df90>"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keras_reg.fit(X_train, y_train, epochs=100,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[keras.callbacks.EarlyStopping(patience=10)])"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"162/162 [==============================] - 0s 417us/step - loss: 0.3409\n"
]
}
],
"source": [
"mse_test = keras_reg.score(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:8 out of the last 9 calls to <function
Model.make_predict_function.<locals>.predict_function at 0x7fd98963b7a0> triggered
tf.function retracing. Tracing is expensive and the excessive number of tracings
could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors
with different shapes, (3) passing Python objects instead of tensors. For (1),
please define your @tf.function outside of the loop. For (2), @tf.function has
experimental_relax_shapes=True option that relaxes argument shapes that can avoid
unnecessary retracing. For (3), please refer to
https://www.tensorflow.org/guide/function#controlling_retracing and
https://www.tensorflow.org/api_docs/python/tf/function for more details.\n"
]
}
],
"source": [
"y_pred = keras_reg.predict(X_new)"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Warning**: the following cell crashes at the end of training. This seems to
be caused by [Keras issue
#13586](https://github.com/keras-team/keras/issues/13586), which was triggered by a
recent change in Scikit-Learn. [Pull Request #13598](https://github.com/keras-
team/keras/pull/13598) seems to fix the issue, so this problem should be resolved
soon. In the meantime, I've added `.tolist()` and `.rvs(1000).tolist()` as
workarounds."
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 3 folds for each of 10 candidates, totalling 30 fits\n",
"Epoch 1/100\n",
"242/242 [==============================] - 0s 1ms/step - loss: 1.3827 -
val_loss: 0.4703\n",
"Epoch 2/100\n",
"242/242 [==============================] - 0s 757us/step - loss: 0.4880 -
val_loss: 0.4247\n",
"Epoch 3/100\n",
"242/242 [==============================] - 0s 765us/step - loss: 0.4541 -
val_loss: 0.4052\n",
"Epoch 4/100\n",
"242/242 [==============================] - 0s 745us/step - loss: 0.4518 -
val_loss: 0.3975\n",
"Epoch 5/100\n",
"242/242 [==============================] - 0s 765us/step - loss: 0.4337 -
val_loss: 0.3991\n",
"Epoch 6/100\n",
"242/242 [==============================] - 0s 751us/step - loss: 0.4263 -
val_loss: 0.4031\n",
"Epoch 7/100\n",
"242/242 [==============================] - 0s 743us/step - loss: 0.4385 -
val_loss: 0.4043\n",
"Epoch 8/100\n",
"242/242 [==============================] - 0s 780us/step - loss: 0.4301 -
val_loss: 0.3929\n",
"Epoch 9/100\n",
"242/242 [==============================] - 0s 792us/step - loss: 0.4108 -
val_loss: 0.4040\n",
"Epoch 10/100\n",
"242/242 [==============================] - 0s 764us/step - loss: 0.4200 -
val_loss: 0.3886\n",
"Epoch 11/100\n",
"242/242 [==============================] - 0s 745us/step - loss: 0.4099 -
val_loss: 0.3999\n",
"Epoch 12/100\n",
"242/242 [==============================] - 0s 740us/step - loss: 0.3897 -
val_loss: 0.4085\n",
"Epoch 13/100\n",
"242/242 [==============================] - 0s 765us/step - loss: 0.4265 -
val_loss: 0.3922\n",
"Epoch 14/100\n",
"242/242 [==============================] - 0s 752us/step - loss: 0.4108 -
val_loss: 0.3918\n",
"Epoch 15/100\n",
"242/242 [==============================] - 0s 731us/step - loss: 0.4070 -
val_loss: 0.3886\n",
"Epoch 16/100\n",
"242/242 [==============================] - 0s 737us/step - loss: 0.4032 -
val_loss: 0.3933\n",
"Epoch 17/100\n",
"242/242 [==============================] - 0s 774us/step - loss: 0.4212 -
val_loss: 0.3907\n",
"<<2367 more lines>>\n",
"363/363 [==============================] - 0s 622us/step - loss: 0.3312 -
val_loss: 0.5455\n",
"Epoch 12/100\n",
"363/363 [==============================] - 0s 727us/step - loss: 0.3456 -
val_loss: 0.6470\n",
"Epoch 13/100\n",
"363/363 [==============================] - 0s 742us/step - loss: 0.3320 -
val_loss: 0.3109\n",
"Epoch 14/100\n",
"363/363 [==============================] - 0s 697us/step - loss: 0.3259 -
val_loss: 0.3198\n",
"Epoch 15/100\n",
"363/363 [==============================] - 0s 662us/step - loss: 0.3222 -
val_loss: 0.3065\n",
"Epoch 16/100\n",
"363/363 [==============================] - 0s 748us/step - loss: 0.3277 -
val_loss: 0.3252\n",
"Epoch 17/100\n",
"363/363 [==============================] - 0s 724us/step - loss: 0.3095 -
val_loss: 0.3965\n",
"Epoch 18/100\n",
"363/363 [==============================] - 0s 703us/step - loss: 0.3107 -
val_loss: 0.2997\n",
"Epoch 19/100\n",
"363/363 [==============================] - 0s 706us/step - loss: 0.3060 -
val_loss: 0.3079\n",
"Epoch 20/100\n",
"363/363 [==============================] - 0s 704us/step - loss: 0.3003 -
val_loss: 0.4544\n",
"Epoch 21/100\n",
"363/363 [==============================] - 0s 698us/step - loss: 0.3090 -
val_loss: 0.3274\n",
"Epoch 22/100\n",
"363/363 [==============================] - 0s 709us/step - loss: 0.2949 -
val_loss: 0.5018\n",
"Epoch 23/100\n",
"363/363 [==============================] - 0s 715us/step - loss: 0.3126 -
val_loss: 0.5565\n",
"Epoch 24/100\n",
"363/363 [==============================] - 0s 702us/step - loss: 0.3031 -
val_loss: 0.5390\n",
"Epoch 25/100\n",
"363/363 [==============================] - 0s 698us/step - loss: 0.2992 -
val_loss: 0.3339\n",
"Epoch 26/100\n",
"363/363 [==============================] - 0s 719us/step - loss: 0.2988 -
val_loss: 0.5095\n",
"Epoch 27/100\n",
"363/363 [==============================] - 0s 716us/step - loss: 0.3001 -
val_loss: 0.6597\n",
"Epoch 28/100\n",
"363/363 [==============================] - 0s 721us/step - loss: 0.3058 -
val_loss: 0.5106\n"
]
},
{
"data": {
"text/plain": [
"RandomizedSearchCV(cv=3,\n",
"
estimator=<tensorflow.python.keras.wrappers.scikit_learn.KerasRegressor object at
0x7fd939643c10>,\n",
" param_distributions={'learning_rate':
[0.001683454924600351,\n",
"
0.02390836445593178,\n",
"
0.008731907739399206,\n",
"
0.004725396149933917,\n",
"
0.0006154014789262348,\n",
"
0.0006153331256530192,\n",
"
0.0003920021771415983,\n",
"
0.01619845322936229,\n",
"
0.004779156784872302,\n",
" 0.0...\n",
"
0.005021425736625637,\n",
"
0.0005703073595961105,\n",
"
0.001151888789941251,\n",
"
0.001621231156394198,\n",
"
0.0024505367684280487,\n",
"
0.011155092541719619,\n",
"
0.0007524347058135697,\n",
"
0.0032032448128444043,\n",
"
0.004591455636549438,\n",
"
0.0003715541189658278, ...],\n",
" 'n_hidden': [0, 1, 2, 3],\n",
" 'n_neurons': [1, 2, 3, 4, 5, 6, 7,
8, 9,\n",
" 10, 11, 12, 13, 14,
15,\n",
" 16, 17, 18, 19, 20,
21,\n",
" 22, 23, 24, 25, 26,
27,\n",
" 28, 29, 30, ...]},\
n",
" verbose=2)"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy.stats import reciprocal\n",
"from sklearn.model_selection import RandomizedSearchCV\n",
"\n",
"param_distribs = {\n",
" \"n_hidden\": [0, 1, 2, 3],\n",
" \"n_neurons\": np.arange(1, 100) .tolist(),\n",
" \"learning_rate\": reciprocal(3e-4, 3e-2) .rvs(1000).tolist(),\n",
"}\n",
"\n",
"rnd_search_cv = RandomizedSearchCV(keras_reg, param_distribs, n_iter=10, cv=3,
verbose=2)\n",
"rnd_search_cv.fit(X_train, y_train, epochs=100,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[keras.callbacks.EarlyStopping(patience=10)])"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'n_neurons': 74, 'n_hidden': 3, 'learning_rate': 0.005803602934201024}"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rnd_search_cv.best_params_"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.32039451599121094"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rnd_search_cv.best_score_"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<tensorflow.python.keras.wrappers.scikit_learn.KerasRegressor at
0x7fd972969310>"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rnd_search_cv.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"162/162 [==============================] - 0s 436us/step - loss: 0.3029\n"
]
},
{
"data": {
"text/plain": [
"-0.3028871417045593"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rnd_search_cv.score(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<tensorflow.python.keras.engine.sequential.Sequential at 0x7fd988eafa10>"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = rnd_search_cv.best_estimator_.model\n",
"model"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"162/162 [==============================] - 0s 446us/step - loss: 0.3029\n"
]
},
{
"data": {
"text/plain": [
"0.3028871417045593"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.evaluate(X_test, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise solutions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. to 9."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"See appendix A."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 10."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Train a deep MLP on the MNIST dataset (you can load it using
`keras.datasets.mnist.load_data()`. See if you can get over 98% precision. Try
searching for the optimal learning rate by using the approach presented in this
chapter (i.e., by growing the learning rate exponentially, plotting the loss, and
finding the point where the loss shoots up). Try adding all the bells and whistles—
save checkpoints, use early stopping, and plot learning curves using TensorBoard.*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's load the dataset:"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"(X_train_full, y_train_full), (X_test, y_test) =
keras.datasets.mnist.load_data()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just like for the Fashion MNIST dataset, the MNIST training set contains
60,000 grayscale images, each 28x28 pixels:"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(60000, 28, 28)"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train_full.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each pixel intensity is also represented as a byte (0 to 255):"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('uint8')"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train_full.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's split the full training set into a validation set and a (smaller)
training set. We also scale the pixel intensities down to the 0-1 range and convert
them to floats, by dividing by 255, just like we did for Fashion MNIST:"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [],
"source": [
"X_valid, X_train = X_train_full[:5000] / 255., X_train_full[5000:] / 255.\n",
"y_valid, y_train = y_train_full[:5000], y_train_full[5000:]\n",
"X_test = X_test / 255."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's plot an image using Matplotlib's `imshow()` function, with a `'binary'`\
n",
" color map:"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
AAGHElEQVR4nO3cz4tNfQDH8blPU4Zc42dKydrCpJQaopSxIdlYsLSykDBbO1slJWExSjKRP2GytSEWyvjR
GKUkGzYUcp/dU2rO9z7umTv3c+
+8XkufzpkjvTvl25lGq9UaAvL80+sHABYmTgglTgglTgglTgg13Gb3X7nQfY2F/
tCbE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJ
E0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0K
JE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0IN9/
oBlqPbt29Xbo1Go3jthg0bivvLly+L+/
j4eHHft29fcWfpeHNCKHFCKHFCKHFCKHFCKHFCKHFCqJ6dc967d6+4P3v2rLhPTU0t5uMsqS9fvnR87fBw+
Z/
sx48fxX1kZKS4r1q1qnIbGxsrXvvgwYPivmnTpuLOn7w5IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IVSj1WqV9uLYzo
ULFyq3q1evFq/9/ft3nR9NDxw4cKC4T09PF/fNmzcv5uP0kwU/
4vXmhFDihFDihFDihFDihFDihFDihFBdPefcunVr5fbhw4fite2+HVy5cmVHz7QY9u7dW9yPHTu2NA/
SgZmZmeJ+586dym1+fr7Wz253Dnr//v3KbcC/BXXOCf1EnBBKnBBKnBBKnBBKnBBKnBCqq+ecr1+/
rtxevHhRvHZiYqK4N5vNjp6Jsrm5ucrt8OHDxWtnZ2dr/ezLly9XbpOTk7XuHc45J/
QTcUIocUIocUIocUIocUKorh6lMFgePnxY3I8fP17r/hs3bqzcPn/
+XOve4RylQD8RJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4QSJ4Qa7vUDkOX69euV25
MnT7r6s79//165PX36tHjtrl27Fvtxes6bE0KJE0KJE0KJE0KJE0KJE0KJE0L5vbU98PHjx8rt7t27xWuvX
Lmy2I/
zh9Kz9dKaNWuK+9evX5foSbrC762FfiJOCCVOCCVOCCVOCCVOCCVOCOV7zg7MzMwU93bfHt68ebNye/
fuXUfPNOhOnTrV60dYct6cEEqcEEqcEEqcEEqcEEqcEGpZHqW8efOmuJ8+fbq4P3r0aDEf569s27atuK9bt
67W/S9dulS5jYyMFK89c+ZMcX/16lVHzzQ0NDS0ZcuWjq/
tV96cEEqcEEqcEEqcEEqcEEqcEEqcEGpgzzlLv0Ly2rVrxWvn5uaK++rVq4v76OhocT9//
nzl1u48b8+ePcW93TloN7X7e7fTbDYrtyNHjtS6dz/
y5oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQA3vO+fjx48qt3Tnm0aNHi/vk5GRx379/f3HvV8+fPy/u79+/r3X/
FStWVG7bt2+vde9+5M0JocQJocQJocQJocQJocQJocQJoQb2nPPGjRuV29jYWPHaixcvLvbjDIS3b98W90+
fPtW6/8GDB2tdP2i8OSGUOCGUOCGUOCGUOCGUOCHUwB6lrF+/
vnJzVNKZ0md4/8fatWuL+9mzZ2vdf9B4c0IocUIocUIocUIocUIocUIocUKogT3npDM7duyo3GZnZ2vd+9C
hQ8V9fHy81v0HjTcnhBInhBInhBInhBInhBInhBInhHLOyR/m5+crt1+/
fhWvHR0dLe7nzp3r4ImWL29OCCVOCCVOCCVOCCVOCCVOCCVOCOWcc5mZnp4u7t+
+favcms1m8dpbt24Vd99r/h1vTgglTgglTgglTgglTgglTgglTgjVaLVapb04kufnz5/
Ffffu3cW99LtpT5w4Ubx2amqquFOpsdAfenNCKHFCKHFCKHFCKHFCKHFCKJ+MDZhGY8H/lf/PyZMni/
vOnTsrt4mJiU4eiQ55c0IocUIocUIocUIocUIocUIocUIon4xB7/
lkDPqJOCGUOCGUOCGUOCGUOCGUOCFUu+85yx8HAl3jzQmhxAmhxAmhxAmhxAmhxAmh/
gWlotX4VjU5XgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(X_train[0], cmap=\"binary\")\n",
"plt.axis('off')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The labels are the class IDs (represented as uint8), from 0 to 9.
Conveniently, the class IDs correspond to the digits represented in the images, so
we don't need a `class_names` array:"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([7, 3, 4, ..., 5, 6, 8], dtype=uint8)"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The validation set contains 5,000 images, and the test set contains 10,000
images:"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(5000, 28, 28)"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_valid.shape"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10000, 28, 28)"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's take a look at a sample of the images in the dataset:"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAqIAAAEjCAYAAADpBWMTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
ABjbklEQVR4nO3debxV0/vA8c9SaU6lSSWFaKTk+zN8pUjKVBJ9M5VMERGZUpmaTZkTSSlKqBAyN/
kaCmVo/iJNNJAGFWX//
tg9a59z77nzOWftc87zfr163du555677rr77L32s571LON5HkoppZRSSiXbfq4boJRSSimlMpMORJVSSiml
lBM6EFVKKaWUUk7oQFQppZRSSjmhA1GllFJKKeWEDkSVUkoppZQTOhBVSimllFJOJH0gaozZnuXfXmPM48l
uR5gYYyYaY9YbY7YaY5YbY6503aYwMMbUN8bsMsZMdN0W14wxXY0xS4wxO4wx/
zPGtHTdJleMMdcbYxYYY3YbY8a5bo9rxpi6xpi3jTG/
G2N+McY8YYwp7rpdrujxkZ0xprIxZtq+88cqY8xFrtvkkjGmoTHmI2PMH8aYlcaYTq7b5JLrc0jSB6Ke55W
Tf0B1YCfwSrLbETLDgLqe51UAOgCDjTEtHLcpDJ4E5rtuhGvGmLbACKAHUB44GfjBaaPcWgcMBsa6bkhIPA
VsAA4CmgGtgF4uG+SYHh/ZPQn8hX/NvRgYZYxp7LZJbuwbYL0OzAAqA1cDE40xRzhtmFtOzyGup+bPx//
l5zpuh1Oe533ved5u+e++f4c5bJJzxpiuwBbgQ8dNCYN7gfs8z/vM87x/
PM9b63neWteNcsXzvKme500HNrtuS0jUA6Z4nrfL87xfgJlARg4yQI+PrIwxZYHOwEDP87Z7njcPeAO41G3
LnGkA1ARGep631/O8j4BPyNz+AMfnENcD0e7AC57uM4ox5iljzJ/
AUmA98LbjJjljjKkA3Af0dd0W14wxxYBjgar7ppDW7Js2Ke26bSo0HgW6GmPKGGNqAWfgX0iUAjgC2Ot53v
KIxxaRuTcrJofHmiS7ISHi9BzibCBqjKmDH/4d76oNYeJ5Xi/
8adeWwFRgd+7fkdYGAc95nrfadUNCoDpQAn/2oCX+tElzYIDDNqlwmY0/qNgKrAEWANNdNkiFSjngjyyP/
YF/vclES/
FnYm81xpQwxpyOPxYp47ZZTjk9h7iMiHYD5nme96PDNoTKvmmCeUBt4FrX7XHBGNMMOA0Y6bgpYbFz38fHP
c9b73neJuBh4EyHbVIhYYzZD3gX/+a1LFAFqISfU6wUwHagQpbHKgDbHLTFOc/z/
gbOBc4CfsGfeZuCPwDLOGE4h7geiGo0NLbiZG6OaGugLvCzMeYX4BagszHmK5eNcsXzvN/
xT5AZn76iYqoMHAw84Xnebs/zNgPPozcqKrAcKG6MqR/
x2NHA947a45zned94ntfK87wDPc9rBxwKfOG6XY44P4c4GYgaY04EaqGr5THGVNtXmqecMaaYMaYdcCHwke
u2OfIM/iC82b5/TwNvAe3cNcm554He+46VSkAf/
BWfGckYU9wYUwooBhQzxpTK1HJF+yLkPwLX7uuXivi594ucNswhPT6ieZ63Az/
adZ8xpqwx5t9AR2CC25a5Y4w5at9xUcYYcwv+avFxjpvlRBjOIa4iot2BqZ7nZeTUQBYe/
jT8GuB34EGgj+d5rzttlSOe5/3ped4v8g9/
WmmX53kbXbfNoUH4ZayWA0uAr4EhTlvk1gD8lIU7gEv2fZ7JObPnAe2BjcBKYA9wk9MWuaXHR3a9gNL4uZG
TgGs9z8vYiCj+Cvn1+P3RBmgbUbkmEzk9hxhdsK6UUkoppVxwXb5JKaWUUkplKB2IKqWUUkopJ3QgqpRSSi
mlnNCBqFJKKaWUckIHokoppZRSyom8aqul+pL6WHvKFoX2RzTtj2jaH9lpn0TT/oim/
RFN+yOa9ke0tOwPjYgqpZRSSikndCCqlFJKKaWc0IGoUkoppZRyImP331UqVf3zzz/07dsXgCeeeAKATz/
9FIBjjz3WWbuUUkqpgtKIqFJKKaWUckIjokqliA0bNgAwcOBAnnnmmaiv/
fjjj0DmRUSvuuoqACZOnMgnn3wCwDHHHOOySSqE7rvvPiZPngzAjBkzADj00ENdNimpFi9eDMAjjzwCwLPP
PkvPnj0BePrpp101S4XAhg0bWLRoEQCvv/46AHPmzOG7774DoEePHgAcdthhAPTt25eSJUtGvcZvv/
1G5cqVC90GjYgqpZRSSiknNCIaAqtWrQL8u1SAIUOGYIxfbsvz/LJhDRs2BGDw4MGcd955DlqpXFm/
fj0A999/
P0BUNLRly5YAHHfccclvWAgccsghAOzatYsVK1YAGhEFmDdvHqNHjwb8aHFWctzIuaRbt25FimiE1ebNmwH
/3LpmzRoAvvrqKyBzIqLjx49n4MCBALYPjDG8/fbbMZ8/
ceJEOnbsCED58uWT00iVdGPGjAFg6NChdgwiPM+zY5Bx48ZFfa106dLcdNNNUY9deOGFvPvuu4Vuiw5EHdm
4cSMAw4YN48UXXwRg06ZNgH+SkINALFu2DPDD4ieffDIAVapUSVZzE+avv/4CoE2bNoB/
ARUVK1YE4JtvvuHggw9OetvCYM+ePQwZMgSAJ5980j5+3XXXAfDwww8DsP/++ye/cSEgA1HwL7gA//
nPf1w1x5k9e/YAcM899wD+sfLHH38AZDuXAMydOxcI3m8LFy7MdsFJB3JMyAAsE/
z9998AdmBw9dVX28dyM2rUKABuuOEG6tWrB8CgQYOA9HpP/
e9//7MpCpLOs2TJEpui0L17d1dNSwoZdA4dOjTq/
+APMgHKlStnzxsyLvnnn38AuOWWWzjggAMAuPzyywFYt25dkdqkU/NKKaWUUsqJpEVEn3/+ecC/Oz/
wwAMB/y4E4IQTTrBTRelu8ODBAHaqxBhjp9/
lDqROnTpUrVo16vvkruSnn36yEVFJQE9FEgm94oorgOhI6LnnngvAHXfcAUDNmjVzfa1ff/
0VgOrVq8e7mc7169cvKhIK0LNnT1u2SQUyNSoM0L9/
fwAeeOABIHpqLauTTz6Z2bNnRz323nvvsW3bNiC9pmNnzZrluglJJ7Mk/fr1y/E5DRo04MYbb4x6TK4xe/
fuZeXKlQBcc8019uupGhWVaPDLL78M+BFPOVfI+2bBggUZExGVc4REQvfff38uuOACADvl3rx5c/
v8KVOmADB8+HAAFi1axK5du6JeM69rdF40IqqUUkoppZwocET0pZdeAuDrr78GYOzYsfn6vi1btgQ/tLj/
YyUqVqpUKcqUKQPAUUcdBQSj8KyRwVQn5REkWhEZtWjUqBHg38Vnzf+UnK5WrVrZfNFU9tBDDwHZF1Jcd91
1PPjgg4B/XOSlb9++Ntp+1113AdCnT584ttSNu+++G8D2BcD1118PBBEPBdOmTbOfX3jhhQ5bknySF9q/
f/9sx0TZsmW5+eabAejUqRPgz7QAVKhQweZ2SX56lSpV7Hk5HcgMi+QAZgKJ/
Ekpnlgk1/6ZZ57hpJNOyvM1Jc+4Z8+eLFiwAAgiamEn4wuZfZTFno0bN2bkyJEAtG3bFvBziFevXg0E11rJ
l0y3kniTJk2K+v9JJ53ECy+8kOPzu3TpAkC1atWAYD1HJFncVlj5PvPISe3RRx8FgsTVwpADROzatcuGemU
qRaYBJk2alBZTrpKGsHTpUiC4KFStWtUOOuViMmDAAO68886o50nqgkzjQ7B6+uqrr0508+Pqu++
+s0nwQqYDH3nkkXxdEOfPnw/4K/p+//33+DfSkc8+
+wyAxx9/3D4m9f7kvbfffjqRITfCb731FuAPpDp06OCySUkng8jIgcGRRx4J+DfyTZs2zfF7s6YxHH744fb
Cmw5+++23qI/pbu/
evfY4kHqpkSSd67XXXgOw6XGRzjrrLMCvSTxhwgT7ugBbt26lcePG8W94guzevZsrr7wSCIId8n4YN25cts
oatWvXttcg+T2lUs3777+flDYni7wnJAiW379r/
fr1AT8FrkmTJlFfK8p4EHRqXimllFJKOZLviOgrr7wCBCNfmULP6S763//+NxAsPMnNBx98YEPDP/
30EwAff/wx4E+3SZJxKk/
Ty92VRPIkCho5BS8RzmeeecZGOSUiOnXqVCC6tFOq1hMdPnw4O3fuBKBEiRIAvPHGGwD5nh6UKevffvvNRn
fyc6yFnaQXSJT3nHPOsVNLGgkNyKyKfNxvv/3SKqKXH7J4wPM8mjVrBsDMmTOB2Av3/
vzzT8BftCFT13L+kfNLOqtRowbgR7/
Szfz58xkwYEDMr5144om8+eabQO4L0SRKOHbsWLuYTXZsSxW7d+8G/
NQmiYTKWEXKWclxkJWMcdauXQsEswY7duygbNmyiWt0kkmqjqQJvvzyy7acVSySknHbbbcBsH37dltSUCLt
Rb026ZVNKaWUUko5ke+I6Icffghg9x+VJN94lPpo2bKlLZkgeSqSS/nxxx/baGnfvn2L/
LNca9CgQY5fk+jEkUceaXN4JKk6MvohkeFULWj/5Zdf2s/bt28PQOvWre1jkpeUNZcY/
GLEQFT5mc6dOwNQt27deDc16b799tuo/
1911VXUqlXLUWvCS3LdlD9LIueHyEiozF4tXLgQgEsuuQTwz62Say7n23Qj581IEhk7/
vjjk92chJFcTolQRTrxxBMB/9qddW/wdCWR3xEjRtjZRJklyCkSKiIXVEOwoUo6RUMBG/
1cvnw54G+WI6W+pHzTnDlz7DEl19wdO3bY15AZ6//+978AdoazsDQiqpRSSimlnMh3RPSII46I+hhvsu+vr
KaWAqsQRAPTISIq5syZA/
jRCYlsSh7psmXL7N7hGzZsAIIVbtWqVeOdd95JdnMTRnJ6xBdffGFznfKzWrFGjRq2wkAqmzFjBgC//
PILEOT/
nn322c7aFGbr16933YRQkdIqkSQSGqv8jMxExFphnQ5ibfaRDjnkQqJUcu6TvEYI8vYkOljQaOiKFSuiol8
ABxxwgL1Gh9HmzZsBuPXWWwF/i0opUH/QQQfl+f3r16/n1VdfTVwDQ0QixVIisGvXrra0lXzMbUOM//u//
6Ndu3ZAsJK+Z8+eRRqfpU/huBQj9VifeeaZbDsreZ5nB6DyNZmO7927d7bSE6nm9ttvp0ePHkAQ4j/
11FMBf8q9IKUgrrrqqmylJFJR1sUi559/PhB7n/Dc/
PPPP7qoKUPI1CEEg4+jjz4a8C8QWS+sMiDp3bs39913H5C/Wr3pIp3SECQdKXIAKqSebmHT5p5++ml7/
RG1atWyx1gYSb1TWezcvHlzzjjjjByfL+lf48aNA/x913/44YeEtjEsJAiW33rUrVq1ArC7+R122GFxT/
XQK5ZSSimllHIiNBHRp556CghKBUSSRFhZ5NKiRYvkNSzBIiNesT6Xu1C5e0n1aCjAzz//
bD+X3UAkMgrBYgIpM7F27Voee+yxmK+VLrteZC28HavgdCyffvopgJ2GWrNmjS1DUrly5Ti2MDz+
+uuvbGVlclsEmK6ee+45AJo0aWKnUmXxwCeffJItmi7voauuuiqJrUy+CRMm2AiZKFeuHMWKFXPUoviaMmW
KXcwrypYtywknnAAUPvIraUFSRjBSUfcST7bVq1fb82DWsm5vvPGG3blRjpO6dety++23A/
5CJ8h7cVOqmT59OhCUCJSF57F4nmfPF7KjX24iN9opDI2IKqWUUkopJ5IWEZXFBRMnToxZWiO3xQdyty95h
FnvdlPRRRddBMCqVavYtGkTEJSs2r59u32e5HKlQyRUXH755dm2GBRdu3a1+yFLBGPYsGHZnif7JJ955pkJ
amXy/
P7777Y8Wn7s2LHDzgpIZDCy1JVsxyv5T+lmx44d2fYQP+200xy1JvmkGL3kmecUjZDHZZFOukdCpfzOc889
l20R5E033ZQ2ZdB+
+umnbKXtmjRpwnvvvVek13322WeB6DI9kgso0cKwqlevHhAswLn33nvtHumxyDVGFkdfc801dq95iYhK+at
0sGHDBm688UYA+3vKjEnJkiXt9shS9P+PP/
6gTJky+X79gq5lyCphA9EPPvgACKbTR48eDRRtp4bLL7+86A0LCZlyj0wAl4Fo//
79bRhdVqLJSvlUrR0aqXbt2txxxx35fn6sOm433HADkP+dmMJsz549UTcfOZk0aRLgr2xctmxZjs9Lhxu13
MS6aZVV4Onqhx9+sOc/qaErJ//Ii8D//d//AX5dXtmL/
qOPPgKCKhRSAzrdyEA0ssawDKQOO+wwF01Kmo4dOxb6e+WGRRbwRJI0qTZt2hT69ZNB3gP33HMPAI0aNbLX
UCFT7V26dIlZS1aqAsguZVKrOKcdq1KBDDqPPvpoe12QRWzye11+
+eU2FaxXr16An+olVRcuu+wyIPfdk6699toitVOn5pVSSimllBNxDSetWLEC8MPcchceyyGHHAJApUqV7GM
SIpdyIpIgGxn5SZWE6Y0bNwJByaX8kgUXr732mi09IbtCyL65ffr0iVMrU0fknZh8fvjhh7tqTtyVKVOGI4
88EiBbpHPr1q28/
PLLAFx99dX5er1033NdzhUQ1FlNp9SVSLLgolu3btmmm8Vxxx1nF6hIRKNy5cp2alIW9MnUXKwam+kg1u4u
co2RnfvS1b///
e9Cf+9bb70FBGlgkSQdLtV06dIl16n5WLZt2wYEC0fzu2A0zAYPHgz4s2SSmiKLkGLV1ZVF4z/+
+CNvvPEGEKQAyc5ssch5p7A0IqqUUkoppZyIS0RUFh9JwdMffviBcuXKAf6ODBDsYVqzZk2bBCyR0Vjk+yD
IaUiFXWbmzJlj8zolwin7AReE7JghycO55QSmu8hyIqeffjrgFyxOF2XLlrXHivydBw4cCPhJ5lKkOT+aNW
tm9xJOV5ELuyTilS6leYS877t16wb4O5BJAXvZM132hz7llFNiLv6TXDcp1zJ06FDA371McknTiUR8I8kOM
OnurrvuiiqBl5dNmzbZ8l+ywCeS5NReeuml8WlgCpCZTCkvKOUDU9nrr79uP5fIpiz0zU3Hjh3t4jfZcz63
iGhRaURUKaWUUko5EZeIqBTVli2yOnToYKOCBd0WTPZHXrVqlX1MVj7KXuxhJHdTPXv2pHr16kDhIqHgl8/
o2bMnUPRCsalMVvlt3brVPpauObLy95aVil988UW+vk9Wi0ppnkGDBsXcdzwd/
Prrr0CwCUI6W7RoEYDNCz3kkEPsqvf85kdLiZ/PP/8c8KszRH5MF3Lu/
f333+1jktsos3Tpbv369Xa7z1hlqiTKJ5UURo0axZo1a3J8PanQUbdu3Ti3NLxmzZoV9f90qFAj4wfP8wq0
wUmXLl3sTLds9yrX4QoVKsS5lXEaiMquLjJlVJRyBytXrgSCiw6kRo3AadOmAf7UauvWrQv1GkuWLAH8fYR
lilYGGpm4c4wMxlatWmWnHtN1tyBZnCaDSNnlJCeyn7TUo02FtJWiksVaUqYHgt8/XcmF5Pzzzy/
QAr2tW7dy/vnnA0HZpnQlU9KRu/JJDUQp77Znz560KPUG/
nS5LGD8+uuvAVi+fLkdfMc6R27evBkIrq+xSKpc165dadKkSVzbnAqy7m6XDiTFYtOmTTz00ENAkNKT2/
mkWLFi9por51uZqpfzSqR33323SGkwOjWvlFJKKaWciMstotyBxaPwq0zzi4oVK9ri5WHWsmVLwI9gSEFlK
bnUsGFDuxOOkNSDuXPnMnXqVCDYC9bzPBsJlanoWIn46a537972c1n89q9//
ctVc5zo0aOHXXRyxRVXAH4Jq3Qv0RRJphBlcwwIZknSdTHK0UcfDQTl7CKnmPv37w9gFy9BEPGSmZSLLrrI
TsfKuaRRo0ZAei30y8mMGTOAoJTZwIEDY5YnSkUHHXSQvdbKjMDu3btt+cT8KlGiBBCkvEmUVUrJqdQnGx1
8/vnndqc9KQknUe9Y59BHH33UpsZJisI555yT48+55ZZbNCKqlFJKKaVST2iSZpo2bQoE21yK008/
nRNOOMFFkwpE7irPO+88G9mU0ivGmGwFtyVasWnTJpsHFrlVn9zxpkI0OFEiC3hLhChTSNHhXr16pV1pooK
SZHlZjAFBgfKi7nEcVhJdeOCBBwD/PCA5XmPHjgWiF4LKxhfynomcVTnuuOOAYC/
xdIumy4yclPyL3OJWon7pss+8kNJCMtO2ePHiqNzpvDRq1MiWbbrgggvi3r50IGteUpksgn3kkUfseVS2k5
ZFjPIxUuT5Q947smg8lqLOVIZmICq1EmVFp5xUUm2V9NNPP20HmZHJ8/K5/
HEjB5+SWC+D2X79+nHeeeclrc2pIFMGY7H2UVfRWrZsSYcOHVw3IynknNCgQQM70JBjJLJGYFYNGjTg4osv
BuC2224DiFlrNB1ImoakL1x66aU2nUWqtySyBqJL8+bNA2DdunW2TqTskS4DjGHDhmU7f15wwQW51vFWUL9
+fddNKDJJ35k/
f769EZVA2XfffZfj97Vq1cpO68t5JDdyc1xYOjWvlFJKKaWcMHnUqUxKEctJkybZO9ayZcsCMGbMGIAC7xe
bRbzn7fLVH5s2bQKC3XEARo8eDfilmSC6RpksREpCiSYn/VFY9erVA/
xouURzZKGG7BZTRCnVH0mQiHlu7ZNohe4PKWmXdVHoBx98YGsXy0yKREETIDT9ERLaH9FStj8efPBBAG699
VbAT3eAItcvT9n+SJCY/aERUaWUUkop5YTTHFHZIeX++++3ES8pllrESKhTEu0cNWqUfSzyc5U/
Ur5p0KBBNj9uv/303kllJol6Sq6XUir+ZOeg8uXLO25J5tCrulJKKaWUcsJpjqiskB85cqRd5di2bdt4/
gjNz4im/RFN+yOa5ohmp8dINO2PaNof0bQ/oml/
RIvZH6FYrJRAehBE0/6Ipv0RTQei2ekxEk37I5r2RzTtj2jaH9F0sZJSSimllAqPvCKiSimllFJKJYRGRJV
SSimllBM6EFVKKaWUUk7oQFQppZRSSjmhA1GllFJKKeWEDkSVUkoppZQTOhBVSimllFJO6EBUKaWUUko5oQ
NRpZRSSinlhJOBqDGmsjFmmjFmhzFmlTHmIhftCAtjzERjzHpjzFZjzHJjzJWu2+SSMeZ6Y8wCY8xuY8w41
+1xyRhT0hjz3L73yTZjzNfGmDNct8sVY8z2LP/2GmMed90ul/
R8Gk3fM9kZYxoaYz4yxvxhjFlpjOnkuk2uGWO6GmOW7Hvf/
M8Y09J1m1xxfQ4pnswfFuFJ4C+gOtAMeMsYs8jzvO8dtce1YcAVnuftNsY0AGYZY772PO9L1w1zZB0wGGgH
lHbcFteKA6uBVsDPwJnAFGNMU8/zfnLZMBc8zysnnxtjygK/
Aq+4a1Eo6Pk0mr5nIhhjigOvA08DbfH75U1jTHPP85Y7bZwjxpi2wAjgP8AXwEFuW+Sc03NI0rf43Hfx+B1
oIm8CY8wEYK3neXcktTEhZIw5EpgF3Oh53hTHzXHKGDMYqO153mWu2xImxphvgHs9z3vNdVtcMsZ0B+4GDv
MydK9iPZ/mTya/Z4wxTYDPgPLyPjHGvAd87nneQKeNc8QY81/gOc/znnPdFtfCcA5xMTV/
BLA3y53YIqCxg7aEhjHmKWPMn8BSYD3wtuMmqRAyxlTHfw9larQrUnfghUwdhO6j59M86HsGk8NjTZLdkDA
wxhQDjgWq7ktTWGOMecIYk6mzb87PIS4GouWAP7I89gdQ3kFbQsPzvF74fdASmArsdtsiFTbGmBLAi8B4z/
OWum6PS8aYOvhTjONdt8UxPZ/mQt8zgB/c2ADcaowpYYw5Hf+9U8Zts5ypDpQAzse/
3jYDmgMDHLbJJefnEBcD0e1AhSyPVQC2OWhLqHiet9fzvHlAbeBa1+1R4WGM2Q+YgJ/Hc73
j5oRBN2Ce53k/
um6IY3o+zYG+Z3ye5/0NnAucBfwC9AWmAGscNsulnfs+Pu553nrP8zYBD+PnEmci5+cQFwPR5UBxY0z9iMe
OJnOnTWIpDhzmuhEqHIwxBngO/
06+874LS6brhkZDQc+nMel7Jprned94ntfK87wDPc9rBxyKv0gn43ie9zv+IDyTU3oiOT+HJH0g6nneDvyp
5/
uMMWWNMf8GOuLfuWYcY0y1fWUkyhljihlj2gEXAh+5bpsrxpjixphSQDGgmDGm1L6Vn5lqFNAQOMfzvJ15P
TndGWNOBGqhq+X1fJozfc9EMMYcte88WsYYcwv+KvFxjpvl0vNA733X30pAH2CG2ya5EYZziKuC9r3wy/
JsACYB12ZwqREPfxp+Df7KtQeBPp7nve60VW4NwJ8+uQO4ZN/nGZm/
Y4w5BOiJn8f0S0T9zIvdtsyp7sBUz/
Myfvp5Hz2fRtD3TEyX4i+C3QC0Adp6npfJ6xAGAfPxo4FLgK+BIU5b5JbTc0jSyzcppZRSSikFusWnUkopp
ZRyRAeiSimllFLKCR2IKqWUUkopJ3QgqpRSSimlnNCBqFJKKaWUciKv2oypvqQ+1h67RaH9EU37I5r2R3ba
J9G0P6Jpf0TT/oim/REtLftDI6JKKaWUUsoJHYgqpZRSSikndCCqlFJKKaWcyOT9u5VSSqWZf/75h59+
+inqsXHjxtGsWTMATjjhBAAOOuigJLdMpYIBA/
zdpDdt2gRAjx49OO6441w2Ke1pRFQppZRSSjmhEdEkW7BgAQBLliwB4Ndff2XZsmUAzJkzB4Dly5dTu3ZtA
O666y4ArrrqqmQ31ZnevXsD8OSTTwLw0Ucf0bp1a4ctUio1SCTwzTffZOrUqQDMmjULAGOyL1j9+OOPAWjV
qlVS2pdI8+fPB+D+++/ntddey/Z1z/MXHFerVg3APuekk05KUgtVWC1atMheY7/55hsAdu/
ebT9KNL1kyZJO2pcsDz/
8MACtW7e2MwbJmDnQiKhSSimllHIi4RFRuQudPHkyAPfee6+NAMZy5JFHAvDhhx8CUL16dYoXT/
3A7YwZMwDo1KkTAHv27AGioxTSV8YY1q5dC8D1118f9fxrr702OQ12SPpEPr733ntpHxH95ZdfAHjnnXeAI
GK+ePFi3n77bQD69u0LwJlnnknDhg0BKF26NAAHHHAAAHv37uWFF14AYMeOHQD07NmTEiVKJOPXUI7IcXPn
nXcCQVQHsr+fIp177rmAHxGqU6dOglsZXzt37gTgkksuAeDdd98F4M8//7TPOeusswA/
qrNt2zYAXn75ZQA6duwIwJo1a+z7SGWWfv36Af74JGtesRg3bpx93hFHHJGspiWcjLEeffRRFi1aBMDq1as
BqFixoo3+HnLIIQB89tlnCWtLwkZ4//zzDxBMr95www32a/vt5wdiy5YtC/
iDLDmpyCBVpqabNGnCBx98APiD0lQl00B79+4FgotC+fLlOfbYY6Oee9RRR7F9+3YAJk6cCMCkSZMAuPLKK
zNuUPHdd9/x999/A6Tl7z5+/
Hh69OgBxB4syGMPPfQQEEyfABx66KEAdvA5d+5ce9IUrVq1omnTpvFvuHLqr7/+AvzjQQagsY6f3Pzxxx8A
PPHEE9x///3xbWCCyUBy9uzZQHCTfvbZZ3PiiScCwVRqsWLF7DVJzsGvvvoq4P/ut956a/
IaniRyzly9ejX33nsvEJwncnPDDTdw9913A1CpUiWg4MdVmG3fvt2mrTz11FMAbN26NcfnN27cmAoVKiSlb
cmwefNmAG6+
+WbAv75mJecFgC1btgDY99RLL71E3bp149omnZpXSimllFJOGJkOzkGht5N65plnAH9aMFLx4sXt3ZaUSfj
555/t3fjo0aOBYCoa/
KgowCeffAJQkLuT0GyvJRHOM888EwiiuyNHjrTR31huu+02AB588EHAv3vv1atXYZsRmv7IjUTPJZrueZ69
Qytfvnw8f5TT/li3bh0ATZs25ffff/
cbFCPyIFMjMnWUW3TC8zz79SpVqgD+lEq9evXy0yTnW3xOmDABgM8//7zQP1BmV55//
nn7mETDCiF07xk5Z48YMQKA/v37R6X15PR8WfgIMGjQoKiv1a1bl7feegvApn3kIDT9IecCiWZG/
n65kQWjku7Tv3//bLMIBRCa/
pBjXM4TZ5xxBgArVqwodGMkjeGCCy7I77eEpj9y0qtXL0aNGpXn82rVqgX41yO5DhdCaPpDZleffvppAD79
9NNsz5H3VKVKldi1axcAGzZsiHpOnz597OycREsrVqyY32boFp9KKaWUUio8EpIjunfvXlsyJKs77rjDRkJ
FnTp1eOKJJ4CgjMiNN94IwPr1620OgyShp2K+Rrly5YDg95IIVW7R0MjvE9OmTStKRFSFiCSLy10lBItH7r
nnHvuYRDY3btxon3/ZZZcBsGrVqmyvW7lyZSCIZuQzGhoK8+bNA2DMmDH2sdyifZHPyfp1+f/
hhx8e72Y6IQsKZNZIPkaS3K0OHTrYhZEnn3xy1HNWrFhhI6Ji1apV/Pzzz0CeEdHQKegCEsnJl/
zqdPHtt98C0Lx582xfk9z6yGtngwYNgKBwu3zcsmWLzaMdPnw4AG3bti1I1CuU5P0jiz9zIuOTSy+9FEiPB
Uqvv/463bp1A3I/j77++uuAPw5bv349ECz4k/
6bM2eOXTgrJSfHjBnD0UcfXej2JWQgumHDBru4RjRu3BjwF9vkRqYARo4cCWA7I1107ty5SN+f08o+lXoip
4dk4Z5cRGQFMMC//vUvIKiT+Oabb8YcgAq5uUnFSgOyEGvw4MG20sZvv/
0G5H4C3bhxo114IOSm77777ktEU5PK87xcB6CS8jNs2DCAjFicJulfsRZb5EYunkuXLo17m5JNBozLly+na
9euMZ9z1FFH2cVKssArFkmHGTRokB2sff3114CfBiLHVqqQMcg111wDBIu3JHUnUqlSpez7SqowyKLqVCbT
8d26dSOnNMxLLrkk5iI2qR9av359ABYuXAj4qS1ffvll1HM7dOiQ6zUpL6nf00oppZRSKiUlJCI6ffp0+/
n+++8PYBcjycKLvLz00kuAvy+w1FgcP348ALfccgvFihWLV3NDSRKJp02bFvV4uk0nZTKZMp0/
f75dzJbbgotYU9SlSpUC/JQX8N9nMoXy/vvvA/60WqqQyHDZsmXtDlv58f7779uIqEw/
SnmSrOktqSSyRFOsSCj4OwVJneJMcuGFFxbq+yQyFrkgNtXI+eLqq68Ggjrdka677jrAX/B68MEH5/
haUm9YFr/
lNXWdCiZPnmxT2HIrzST9cuutt9qp63QwduxYIJgVirxmyBjsxRdfBGKnckSSKXcpd5b19cCvgy3pVHnNes
eiEVGllFJKKeVEXCOisnNFZMFtSZ6XHKb8ku/
r3r27vVOTqM+5555rd2BKJ7IYa8aMGTYyJgX+JcqTdaGXSl2yEGDDhg2MGzcOyF/
h6EMOOcTexd5yyy1AUGx4+/bttrSG7LaTShHRwpIkewgWo+S1EDAVSN5V//
79s31NCrhLVEzlT9ZZplQkayciI6Ey+ygzAXJ85BYNBewe65EzmUIWKB144IFFam+yvPnmmwBcfPHF+SrZJ
qW8qlWrltB2JZtEJyN3GatZsyYAr7zyCkC2jXRyIou2Bg4caF9HyjwtX74c8GcXJEpfGBoRVUoppZRSTsQ1
Iir5TCtXrozbazZq1CjbY6NHj46KuqYi6aNPPvnE7is+c+ZMIHqfaCF3ty1btkxSC1Wy3HXXXQXKd2vSpIl
d0ZgbOa4ywZNPPmmjySeddJLj1sSPrPCOXPEqOV6SA1iYckvyepGvm8fmJilPylPJ7INo1qxZ8htTBDt37u
Scc86Jeqxx48Z25jC/s49yDZKoYKR27doBQRWGsPeRVE74z3/+A+S+gcXZZ5/
Nc889BwSl8WKRKiWRlXuOOeYYINyzLX/+
+afNg44kMyf5jYQKiYZLOcD69evbSGhkpQZZed+nT58Ctzlhe80L2Z0gk/
3222+0aNECCHbTybrvcU5kevX0009PYAuVS3Xr1o3b3r2LFy+2n6daPciiMMbYgWg67IstNWOlRFHk7yQl7
gr79x08eHC2PmrdunW2eqPpRsqAyeKc9u3bA3Daaac5a1NhTJo0yQ4EZDp+0KBBBUp/
mzFjhp1yjdxXXEgaXNgHoEKuo7FKMwmphzl27Fi7yFMWdMoufpFkgB45EJX+6NatG9dffz0Q1GgNi549e/
LVV19FPdaxY8d87zyWVZkyZQA4//zz7WNy/
EWSRbKFoVPzSimllFLKibhGRKV4aqQePXrE80ekpG3bthW62KtELtKhuG5+ZZ02TPcpw3iQaaS3336b6tWr
A0E6RzqTqetImzdvBvzIAPhTkDJ1J+
+nAQMG2IhGGEk0JnLaVIqRR+66VRBXXHEFEL1Zgrj55ptt5CMdzZs3L9vOMg888AAQvohWXiKjUZKeITuy5
eX2228H4Nlnn40ZCQWoXr06TZo0KVojk0wWKcUiizWl/NCrr75qF/
PMnj27QD9HirovXLiQNm3aAP6GAWEg6YpSlgmChWpTp05NyM+MvDYXJV0yc0Y3SimllFIqVOIaEf3xxx/
j+XJp48ADD7RJvWvXrgWCfJUaNWrY50nh/qefftpu5Sm5OkKSyNNZrFw/
2aZRohjKJzlRZ599NuDfocoxJVuzpaItW7bY6IPk9kmyfKT33nsv22NPPPFEtsdatWoFBJEjKVkTVrEiGLJ
IqbCRy3nz5gFB/ikE/ZLKiyA3bNgAwBtvvAH40b6suYLLly9n9+7dQHBeee211wC/
9Eyq5EJmdfjhh+f5nK1bt9ryZs8+
+yzgv79yMnny5JQp1ySkzFQsMlskJR83bNjArl27ktGspPr222+B6OtmXsXqC2P58uXceeed2X5WUSR8sZL
yd3aRnaLy48orr8xW202Sqdu2bZtR0/RCKjIon9Ts7d69OwCbNm0C/BOD3OSkoi+++ALwp84//
PBDIPaOUrmRwVXkgDRW9Y0wkynDyKmvkSNHFuq1ZHHTihUrsn1NpnYPOOCAQr22Kzt37uTuu+8G4PHHHwew
A82cyHlTFvjI/uvDhg2zq9Dlhu7SSy+1C0plILNmzRog6M8wkIFlhw4d7GDsv//9LxBMRX/
xxRf5Wkgii7eOO+64BLQ0sWLtlS5k0J3b4NsYY98DkrKQailhsvOkMYamTZsC2OoA8fTUU0/xww8/
RD1WrVo1W7GgMDJvRKOUUkoppUIhYRFR2TO6Tp06cX/tdNxVKVLlypXttJHsmCN7Sb/
66qt06dLFWdtUOMiOKpE7CoFfXkSiXKlI9rn+4IMP7LSjRLDk/
5GlzAYPHgz4JVbkfRFr3+1UU9RSVDt27LD1/
ORcEvlasktKZEmWVCCLzq688kobPZcUFDlXtm7dOtsi2Ro1ajB69GggiP5Kms/
ChQttH8nHdevW8fvvvwNBVEkiPq4joocddpj9XNJXTj75ZLv7XmHL6MjuQlLaKBPIubJcuXI2HWHo0KFA7h
HU5s2bU7Vq1YS3r7B69eoFFG1HrF9//RUIUnkGDRoE+DszZT0vlSpVKl+1rXOiEVGllFJKKeVEwiKiUtl/
69athfp+2QXjwQcfzPY113ekeZE9V4sX97u3KHeYkrfz2WefAX4+k0ZEM5MswLjiiits5FA0btwY8COERbk
zdU1+jz59+tg7cJldiWXUqFFAsNAv00k+42233RaztBX4m4ykWlm9jz/
+GAgiWEuXLuWyyy4DgsimnHclbxqCHXDeeustmzcnpID/6tWrbWHzK6+8EoD+/fvbyOmAAQMA6Nu3b3x/
qUK6/PLLbQ6xrD3IbaHwgQceaH9XKWH1/
vvv89RTT0U9L91nGmORDWM8z8vXYmuJBHbv3j3U59mjjz66SN+/cOFCmzctm/
DkpkOHDkX6eRoRVUoppZRSTsQ1IhpZ2FVWOUu+Rda9cfNyySWXAEFJAsDupRvmFZ4bN260Ky8vuugiAG688
cYCvcbff/9t85myrraXu36V+mSV4zvvvJNrYeV//etfAHz+
+edAsEI+kpSuiddWoa7IbEdhZj1SLcpXUJK/
2Llz52xfk3OMzCTlFA0FPyompaBShfzuS5cuBaBJkybUrFkTCKLoUpJn69at9veTQue5FWg/
+OCD7XaXcu5+5plnQlvaqlixYna2QFb2f//993b2UXIbzzjjDMB/X0hRdzF8+HD7ufRVKr9/
ZLMGmRHIr6yrv3NSsmRJAK655hqg4Nf0ZIhc5S958t988w3gl6v78ssvgSCqG3nNkevHrFmzop6T18+R8pI
yziusuA5EZecPOSggqAGYX8OGDQOCiy5AgwYNgGCnlGLFihWpnYn07bff2iR6SRrfuHFjrm/
yadOmAdH1EmWaIGvpmkcffTQxDVdJI7UvI4+J3EoUyUK1yOfIiVFuWFJ9AFpQcrGVfcMhvRZZnHTSSUB0yS
UpRyVTZfK3X7x4ca7Hj3xNzq2yu04qyVpD9rvvvrMLl4Qs4hk+fLgdMOSX7K4kC3ZkOj6s6tWrBwSBit9+
+82mw0kZq1gLhaWWbOSCphNOOAGIrmmdauQGQoJhMgCLh+bNmzNz5kwgOD7CKHKB42OPPQYE6YGDBw+2Nyr
yvFg7a+V3kWS8b150al4ppZRSSjkR14ioRCSaNGli71Yl9C37Ot98880ceuih2b73gw8+ALBFiuXurkGDBn
Zv5DBPyYsaNWrYXTqktMbQoUMZMmQIENxpxIpgxHqsdOnSgN9vQLYplnSzd+/etE8/
kLvrWHed+SnXY4yhRYsWgF+qJhPJe2vVqlVuG5Ig1157LRCUs9qwYYOdbs867R55zER+LlPWF198MRCcQ1K
RRChvuukmwD/upVyRLOiUVCh5PJNUrlw5X8+7//77AaJ2Furdu3dC2pRMtWrVAoL3y1tvvcUtt9wCBJt/
5KZEiRIcc8wxUY/
JDGz79u1DHQkVEqWU9Bzwdw0DfzOGgm4MImT2Ta45LVu2tJHQeO3epxFRpZRSSinlhMljG6tC7XH166+/
ctpppwFky+OpX7++LbYqxo8fz//
+9z8g+93Lk08+me35BRCfjVAD+eqPBQsWAEEB2JkzZ+a6RaXcoUiO008//
WTvUs877zwgyBkrIif9URBr167Nltu0//7720UHclzFSdL7Y9u2bZx66qkAfPXVV8E35uNuNdZzZMGG5ERV
qlSpoG2OFO/+gAQcIxAk1UtflixZ0kYKZXFXnDh9z8gigk6dOuX+ovuOjfLlywN+rtzEiRMB4r0wyUl/
yAyZbLNZq1Ytu9GBY6E/
p0KQVywzKCtXrrR5ppI3GqdyRKHpD8mtl9Juck0tU6aMXfgsSpUqZRdIx1nS+kO2ex06dKh9z8sivG++
+cZuFy7RcFn0Wrx4cXsdkcVv+
+23n+0vWaNz5plnxqP9MfsjIQNRCPa5lf18sw5Ic3LEEUcA2On4OnXqFGVv9VC8KebOnWsvCrJSul27doA/
0JTf79xzzwVg+fLlNgweZ6Hoj9xs27bN1reTY+Duu+
+2K1jjLOn9sWjRomxTQJDzQPScc86xg295zmOPPZZttef69euBIifTp9xAtE2bNoC/
l3xkhY04cvqekUVZEydOzHWlrhwbsgtQAldAh/
4ckmQp0R8yJS+rnCEYgMqOVHGSEv2RRKHrj+XLlwNBGkP58uWjFpgnWMz+0Kl5pZRSSinlRMIiokKSZWXf0
tGjRzN37lwguj7b5ZdfDgQ7YUjZgSIK3d2IY9of0ZLeH+vWrbOLRl555RX7eJkyZQC46667gGB3mMqVK2d7
L/zxxx+2RMv3338PBNPR5cqVK0r7UzYi2r17d8aOHZuIH6XvmWjaH9FC3x9r1661KSxSDqx9+/
Y23SnO5RBD3x9Jpv0RTSOiSimllFIqPBK217z9AfuiOVJe4b777kv0j1QqtGrWrGl3vZCPBRVZxiwVyookg
mwKIIq617FS6Wr16tVRGyMAtGrVKtQbw6jMohFRpZRSSinlRMIjokopFW+yeUbTpk2BoOKEUira8ccfb8vy
KBVGCV+s5JgmCkfT/oim/REtZRYrJZEeI9G0P6Jpf0TT/oim/
RFNFysppZRSSqnwyCsiqpRSSimlVEJoRFQppZRSSjmhA1GllFJKKeWEDkSVUkoppZQTOhBVSimllFJO6EBU
KaWUUko5oQNRpZRSSinlhA5ElVJKKaWUEzoQVUoppZRSTuhAVCmllFJKOZH0gagx5npjzAJjzG5jzLhk//
ywMsZ0NcYsMcbsMMb8zxjT0nWbXDDGbM/yb68x5nHX7XJJ3zPRjDENjTEfGWP+MMasNMZ0ct0ml/
Q9E5ueUwPGmFnGmF0Rx8gy121ySfsjmjGmrjHmbWPM78aYX4wxTxhjiifr57uIiK4DBgNjHfzsUDLGtAVGA
D2A8sDJwA9OG+WI53nl5B9QHdgJvOK4Wa7pe2affSfH14EZQGXgamCiMeYIpw1zSN8z2ek5NabrI46VI103
JgS0PwJPARuAg4BmQCugV7J+eNIHop7nTfU8bzqwOdk/O8TuBe7zPO8zz/
P+8Txvred5a103KgTOx39zzHXdEJf0PROlAVATGOl53l7P8z4CPgEuddus0ND3jE/
PqUrlXz1giud5uzzP+wWYCTRO1g/
XHFHHjDHFgGOBqvumGdfsC4uXdt22EOgOvOB5nue6ISo0TA6PNUl2Q0Iq498zek7N0TBjzCZjzCfGmNauGx
MC2h+BR4GuxpgyxphawBn4g9Gk0IGoe9WBEviRjJb4YfHmwACHbXLOGFMHf3pgvOu2qFBZih/
xu9UYU8IYczr+cVLGbbPc0/eMpefU7G4HDgVqAc8AbxpjDnPbJKe0P6LNxo+AbgXWAAuA6cn64ToQdW/
nvo+Pe5633vO8TcDDwJkO2xQG3YB5nuf96LohKjw8z/sbOBc4C/gF6AtMwT95Zjp9z/
j0nJqF53mfe563zfO83Z7njcdPZ9H+0P7AGLMf8C4wFSgLVAEq4edYJ4UORB3zPO93/
Itoxk6l5aAbGtlRMXie943nea08zzvQ87x2+JGNL1y3KwT0PYOeU/
PJI3aaS6bK5P6oDBwMPLFvYL4ZeJ4kDsxdlG8qbowpBRQDihljSiWzTEBIPQ/
0NsZUM8ZUAvrgrwrOSMaYE/GnTDJ65a/Q90w0Y8xR+/
qgjDHmFvyVnuMcN8spfc9ko+fUfYwxFY0x7eS8YYy5GL+KwLuu2+aC9ke0fTMGPwLX7uuPivi55ouS1QYXE
dEB+FMndwCX7Ps8k3N3AAYB84HlwBLga2CI0xa51R2Y6nneNtcNCQl9z0S7FFiPnyvaBmjred5ut01yTt8z
0fScGiiBX/
5tI7AJ6A2c63leptbO1P7I7jygPX6frAT2ADcl64ebDF5cqZRSSimlHNIcUaWUUkop5YQORJVSSimllBM6E
FVKKaWUUk7oQFQppZRSSjmRVwmYVF/JFO+6YNof0bQ/oml/
ZKd9Ek37I5r2RzTtj2jaH9HSsj80IqqUUkoppZzQgahSSimllHJCB6IhtHjxYipXrkzlypXp1asXvXr1wvM
8tOarUkoppdKJDkSVUkoppZQTee2slOohuJRKFN65cycA1113Hc8//3zU1/766y8ASpQoUZQfkVL9kQTaH9
F0sVJ2eoxES6n+
+PzzzwGYMGECc+bMAWDXrl0AnH766fZju3btAChZsmRBf0RK9UcSaH9E0/6IpouVlFJKKaVUeCQ9Irp9+3a
GDh0KwKWXXgpAw4YN4/1jRErdjcybNw+Ali1b2sdq1KgBwOrVqwEoXjyvilu5Sqn+SIKU7I9XXnmF//
znPwBMmTIFgPPPPz8eL60R0exS8hhJoJTojwULFgBw9tlnA7Bx40abY29M9l/
hsssuA+C5554r6I9Kif5IIu2PaNof0TQiqpRSSimlwqNI4bXC+PLLL3nooYcAbGQ0023fvh
2Axx57LNvXLrzwQqDIkVCVRgYNGhQzqqOU8nNAzzvvPMCPhAL83//9HxdddBEAXbt2BbB5+K++
+irjxo0DghzRp556KplNViqjORndyMKb8ePHA9C9e3cXzQiNmTNnAv6Uq6hXrx4A1157rZM2JdKzzz5rf2f
5/U477bRcv2fNmjUAfPjhh0BmHjOTJk0CYMWKFY5bklxPPPEEAL179wagQYMGHHjggUCQzpJJPv30UwD+/
e9/A9CiRQtef/
11AGrWrOmsXa7t2LED8KfZ165dC0DFihUBGDJkCKeeemrU82+77TYAevToQYcOHQB45513ANiyZYv9XuVbs
mRJ1P8TmFIXF9u2bQOCgNehhx4KwLfffmuf89577wFQqlQpFi1alONr9ezZE4BHH30UKNSittD68ssv7edD
hgwBYPr06TaVRf7OVatWtf+/
8cYbo75WVDo1r5RSSimlnHA637tnzx6XPz4UduzYwYMPPpjt8cmTJwNQv379ZDcpYd5+
+20Abr75ZpuO8NFHHwFw+OGHA9CpUydq1aoFBJEwgK1btwKwbt06ANq2bQtkVgRo2bJlQDCjkO6GDRsGwIA
BA4BgEd/ff//N999/D8A111wDwD333GMX9mUKSc/46quvOOKIIwA466yz7NePOeYYAE4+
+WQA+xyJJqcbSV+ShZ0ARx99NEC2aGikqlWr8tZbbwHwyy+/AEUukxdaEtXs1q0b8+fPz/
P5U6dOBfz34tKlS6O+1q9fPwDuvPPOOLcyPt5//30ARowYka/n55bu9PXXXwPw66+/
AlCnTp0its4dSVeR8+sjjzxif/dYC/rkuiN//
3nz5tkoqvztO3XqVKQ2aURUKaWUUko5kfSIqEQyIMgRveKKK5LdDOf27t0L+BEMKbosjDFUqFDBRbMSSnJ0
qlWrZiOiW7ZsAYJyK/IxLyNHjgTggQceiHMrw+u++
+4Dcr9zTycyKyAR8gkTJgBwyCGHcOaZZwIwevRoABo3bmxzSDPRn3/+CfgLb4R8LlGOOJf6Cp2xY8cC8MUX
X9jHJBqcl8qVK0d9TDcSBZNFXMuWLbPnWjmfSMH/6dOn288jI2VZo2YyUxHWiGhW0v4WLVrYKN/
VV18N+O+JH3/8EcDmF3fu3Nl+b7Vq1QAoU6ZM0tobb3IMyO+S9e8Z+XmDBg0oW7ZszNdZunSpPXb69+8P+L
Ms+X2vxZL0gWj58uXt55L8mon++OMPAGbPnm0f23///QF/
kNWgQQMn7Uok+Z06d+6cbQApB329evUoV64cAJ999llyGxhyedT8TSszZ87km2++AeCll14C/
AGoOOqoo4BgcUkmiVxcUBCDBg0C/EVOBx10UDybFAqyKMUYYxcaXXfddQ5bFB7dunUDgmlWYwz/93//
Zz+H6GlZeSzyplc+l4U7qUbSNCJvVCIdd9xxyWxO0slUfNa/
badOneyAUjRo0CDHQffQoUPtTYgcT2PGjLGvF1kHPb90al4ppZRSSjmR9IioLFgB7PRaJopciCPkDrVXr17
Jbk5S3XPPPXa/
ZylZJcnfL7/8MqVKlQKCaSQpVwNB5DTd+yiWyDvZKlWqAFC7dm2XTUqYyFJmsg94pOHDhwPBQoSPP/
44Y6bmZdpUIlitW7e2i/5kMd/LL79sn3/
zzTcDQdmaVatWpVVEVCJcMqVqjLFRu0yedRPXXHMN7777LhB7GjbW/
+U9J4tQZAo7lUyfPj3m47Nnz7bvkzfffBOITleR63C6nVsl7UT+zjKV/
tprr2V77pIlS1i1ahUQ9KOkQRljsh07EyZMYOLEiVGvL9fvWK+flUZElVJKKaWUE07LN0lx8kxarCR3YpER
n9KlSwNw5ZVXOmlTspUpU8buIiU5XBIFPeSQQ/juu++AoJRKJCnRIgX/M4EUUY4kpXiOP/
74ZDcnoaQ01TfffMMZZ5wB5L6A5IQTTgCC91UmyJrjtX79evs1KWd200032cf69u0b9fx0k3WHvmrVqkUtN
MlUgwcPBmDatGn2by9RsFiFyK+66ir7uZT+SlX//PMPP//8c9RjixcvBqB9+/
bs3r076muyMBL8hY8QzLaky8yt/
F5yLEg5psiNCuS9NH36dLtBRNbzTay84ayfAzRq1CjfbdOIqFJKKaWUciLpEVEZlQOsXLky2T/
eOSkQLFE/CMpgZOK2lUceeWS2x3744QcAW04DoHr16kCwzWWm2Lx5M08//
XS2xy+99FIHrUk82ZZvwYIFdtvK3BxwwAFAUAYsEy1fvjzm41nfK02bNgWiz8Hp4H//+1/U/
6+77jpatGjhqDXuSHkemUGR6JbnebRq1QqAWbNmOWlbss2ePdvmUov8bgQiJSYlt7pNmzZpsaWn5Puee+65
QJD72ahRo5iVE7LmgUa+pyR/VL5v0KBBNidU1i8URNIHooVZ2p9OIuuoCqmTqHwPP/
xwtsekXM8pp5yS7OY4NWnSpGwDjWbNmnHOOec4alFivfHGG/
bzunXr5vg8SYyfOXMm4E9FX3bZZQCcdtppAFxyySWJaaRjMm0qdUJzGnRFLgwF6NOnDxBdQi+VyftC0jLkw
pmJ15iNGzfaKWQp7xU5VVrUnW9SjdTMjaVNmzY27UcWJkGwCFACQ3J8Sc3vVCdBMJmSz21a3RjDCy+8AART
7JHpGrKjnQw+Tz/
99CK1TafmlVJKKaWUE04XK2USuQuJTIoGP7G+S5cuOX6fLOSSfXPfeOMNmjVrlphGhsD7778fs+Bwpt3Ri7
lz59pIj3ysX79+WpXfifTvf//bfi5/
c4leyAItIFu6guy0Bdhi5ukaEb399tuBIPIbKyK6cOFCG12W40Y2ikgXEgmVtIzcFmOtXLnSLo6V0lYnnXQ
SEOxYlspOPvlkW1w8VlkmWbwm75svv/
wypXcJykvp0qXt7ycLtGQnx4oVK1KiRIls3yPnF4mIijFjxnDDDTcksrkJN3HiRLtoccOGDUDuOyt16tTJl
vCKVQItVrpYUWhEVCmllFJKOaER0ST56quvgOyLKlq3bm3LN4k9e/
bYgsyyf7Lo1KlT1CKedCFF65999ll27tyZ7euy/
alEQaRMTSbIGum56667HLUk8SQvtEuXLjbP68knn8zx+RJBrVevni3YLsXd011uC3LmzJnD9u3bgfQt25Qf
H3zwAeBvKywL4aQ/5s6dC/gLRyV/
LtVI6Z1ly5bFzPPL+rlETadOnZq2MwbgrzOQa2isBbEFEet6lCrkuO7bty+bNm0Cgr3mJb/
zqquuYsiQIYBf6gv8hUyypXKsNRvx5nQgKtPVy5YtK/LBkqpiJflOnjw52wBU/
PPPP4luUlLNmzcPCKZh5c2SldRYlek0qcNapUoVW1s0U8hK8XQkNxwvv/
yynUKVv3Vk7T8ZsMrxAP6OXRDsurRo0SIg2GM6E2zevBmAUaNG2cekjzJpoZ8M0CS1afv27XZXNlnoJ8dXO
lRcuPjii+31VBZr3XnnnYC/kEkG3TI4Gzp0aFoPRKHoA9BUJjVAJc1gw4YN9mZExhyR5wjZ/
Shy4CrpTvK+GTRoUMLaq1PzSimllFLKCaehJJkqkY/prFKlSkAQ8dmzZw/gRzhl+kiioPL/
WLZu3Wp3iCjIzgVhJVPtOUVCs5IIqizWeeihh2y9t3QiC7Y+//
xz+9jZZ58N5L7TUDq64IILCvR8iZzKYp1MiohK7dDIkl8y2yDRjsgddNLRkCFDbN3HNWvW2Mel5JcsWkkHs
kPShAkTcnxOlSpV7Pk1copeosaxdllSqU2m2CUVwxhjo6O1a9cGgtSUyHJnMl0/
b948HnnkkajX0oioUkoppZRKO0mPiB544IG2oHImREJF1gK6Etm7+uqrC/
Q6TZs2TYtIqJAo3yeffAJEl+/Jj9dffz0tI6JSfHz16tX2MSm/
kXVxm4otpx2H0pHMsLz77ruAX4ZFzrOR+86nk9atWwNB3qPkvMWaUZo8ebI9915//
fVAUKpGyvukM9ntRj5u2rTJ7sSkEVGfzM6lg2effRYIjvGLL77YlqDK785H8r3JWJeiEVGllFJKKeVE0iOi
TZo0sVtayiq/TPKf//
wHCCKi+SVRMNnWL11I0WHJWylZsmTU6mjw81YuvPDCmN9fmH1tw0yieOvXrweiiw3LftEqtnTYD7qwJA9Ut
vU0xqR1ma9I/fv3B4Ii27HKVZUuXdo+TyJfpUqVAqB9+/
bJaGZcSb6v5PTlRaKe0jfGmLSaWYsHKWGUVdeuXZPckviRv/fVV19d4GulfO9+
+yU+XulksZK88WUgumbNGo499lgXTUm6Sy+9FIAXX3wRgM8+
+yzX5zdt2hSA2267DQhqgKWbOnXqAHDzzTczbNiwqK81atSI888/30Wzkk5KDv3888+AfzJI55204kmOESl
bkymWL1/OW2+9BQQXjzZt2tC7d2+XzUoaCWzk5sILL+TPP/
8Egj6S9Jfjjz8+YW1LFNnrW36nvEoxDR48GAh21bnmmmvS7ia+KObOncuMGTOiHuvWrRsQXJtSyYEHHggEg
QxJw8iLlGx68cUX7e8dWeYpUXRqXimllFJKOeEkInruuecC2PIAw4cPp02bNkAwVVusWDEXTUs4KUYuu79s
3rzZLmT67rvvAH8vcZlWk6mXdN4XWOVOougqd/
Xr1weCBYFr16512ZykiVVW5bTTTrOl4jKFREZjLTqJ3B1HZpU6d+6cnIYlgEQzx4wZA/
i7bOW06Gjw4MGMGDECCH73dC/hBUEUUEpbyUxsZErCxx9/
DPjHgqSEyTX6oosuAlJzZ7LIFIyCkEVOmzZtsmOOWHvNx5tGRJVSSimllBNOIqInnngiANWrVwf8ot1yN/
fll19GfS1dyeKj2rVr2z2yVWzTp0+3+VyS+6JUTiQKINGOTZs2pWU+nGyA8eKLL9pcsDvuuAMIcsoziWwCM
W7cOLvwRCKhTZs25aWXXgKgQoUKQLBAMhXJ+VAWvTZq1MheQ+VYkGLmRx55pN3yUbZ7PeaYY5LZXCckt/
GBBx4AiCrzJyW8ZK3GH3/8Yb8maxRibb+dKi6++GIA3nvvPQAeffRRu3d8ixYtgCBi/
O6779p8WDl2jDE89NBDADRo0CDh7XUyEC1RogQQrPBs3769PTmk+wBU5e7EE0+0q1l37doF+CkLciLNtIFo
9+7dM6LOYTxJbVrZleqVV17h2muvddmkuJL6y48++ijgXzRkoN2rVy9n7XJNdlvr168f/
fr1c9yaxJL60zL4nDhxoh14Rg4mwB+QShpCMhaehMWsWbMA+Ouvv4BgIDp16lS7GFSUK1fOprgUtLZ3GMlu
SXJemDt3LmeddRYABx98MBDsZrhq1apsU/idO3fOd0WGeNCpeaWUUkop5YSJrFMYQ65fTAHxzjLW/
oiWkP447rjjgGCqDfy7Noh7KY2U6I8kSkRWftL7RHYXksUJp512mn2sEDXxQneMyLTs448/
bh+bP38+kJQp19D1h2NO+0P2ix86dGiOdbk7duxo9xlPgtAcHz169ABg/
Pjx2b4ms7JSn7pPnz6JKpMXiv4wxtioZ9aIued5dhGbTOnfeeediUpnitkfGhFVSimllFJOOMkRVSo3sgNK
x44dHbdEpaJTTjkFgC5dugAwZcoUpk2bBqR2yR4huZBi1KhRGbH4RGUnOaJSokgFZOZAFgavXLkS8PtMZt2
kRFO6mzlzpl2ENWfOHCCIiPbs2dOW83J1HtGIqFJKKaWUckJzRAtG+yOa9kc07Y/
stE+iaX9E0/6Ipv0RTfsjWlr2h0ZElVJKKaWUEzoQVUoppZRSTuQ1Na+UUkoppVRCaERUKaWUUko5oQNRpZ
RSSinlhA5ElVJKKaWUEzoQVUoppZRSTuhAVCmllFJKOaEDUaWUUkop5YQORJVSSimllBM6EFVKKaWUUk44G
YgaY+oaY942xvxujPnFGPOEMaa4i7aEgTFmojFmvTFmqzFmuTHmStdtCgNjTH1jzC5jzETXbQkD7Q+fnj+i
GWO2Z/
m31xjzuOt2uaTn1OyMMV2NMUuMMTuMMf8zxrR03SaX9HwazeXx4Soi+hSwATgIaAa0Ano5aksYDAPqep5XA
egADDbGtHDcpjB4EpjvuhEhov3h0/NHBM/zysk/oDqwE3jFcbNc03NqBGNMW2AE0AMoD5wM/
OC0Ue7p+XQf18eHq4FoPWCK53m7PM/7BZgJNHbUFuc8z/ve87zd8t99/
w5z2CTnjDFdgS3Ah46bEgraH1H0/JGz8/EH6XNdN8QlPadmcy9wn+d5n3me94/
neWs9z1vrulGu6Pk0G6fHh6uB6KNAV2NMGWNMLeAM/
ItJxjLGPGWM+RNYCqwH3nbcJGeMMRWA+4C+rtsSBtof2ej5I2fdgRc8z/
NcN8Q1Paf6jDHFgGOBqsaYlcaYNfvSWUq7bpsLej6NFobjw9VAdDZ+BGMrsAZYAEx31JZQ8DyvF35IvCUwF
did+3ektUHAc57nrXbdkJDQ/oim548YjDF18NMUxrtuSxjoOdWqDpTAj5a3xE9naQ4McNgml/
R8Gs358ZH0gagxZj/gXfwTQ1mgClAJPz8ho3met9fzvHlAbeBa1+1xwRjTDDgNGOm4KaGg/
RFNzx+56gbM8zzvR9cNCQs9pwJ+zjDA457nrfc8bxPwMHCmwzY5oefTmJwfHy5WmlYGDgae2JfDs9sY8zww
GLjNQXvCqDiZm8/UGqgL/
GyMASgHFDPGNPI87xiH7XKlNdofkfT8kbNuwHDXjQipjD2nep73uzFmDX6ebKZrjZ5Po4Th+Eh6RHTfaPtH
4FpjTHFjTEX8vKZFyW5LGBhjqu0rm1DOGFPMGNMOuBD4yHXbHHkG/4LRbN+/p4G3gHbumuSU9kcEPX/
EZow5EaiFrpbXc2pszwO99/
VNJaAPMMNtk5zQ82lsTo8PVzmi5wHtgY3ASmAPcJOjtrjm4U8ZrQF+Bx4E+nie97rTVjnied6fnuf9Iv+A7
cAuz/
M2um6bC9ofMen5I7vuwFTP87a5bkgI6Dk1u0H4pYqWA0uAr4EhTlvkgJ5Pc+T0+DC6uFIppZRSSrmgW3wqp
ZRSSikndCCqlFJKKaWc0IGoUkoppZRyQgeiSimllFLKibzqiKb6SiYT59fT/oim/RFN+yM77ZNo2h/
RtD+iaX9E0/6Ilpb9oRFRpZRSSinlhA5ElVJKKaWUEzoQVUoppZRSTuhAVCmllFJKOaEDUaWUUkoB8NNPP3
HBBRdwwQUXUKNGDWrUqMGiRYtcN0s5tmLFClasWMHIkSOpWbMmNWvWpF69etSrV48LL7ywSK+tA1GllFJKK
eVEXuWbVIKNHz+e1157DYAZM2YA4HkexsSu+jBw4ECuvPJKAKpVqwZAyZIlk9DSwpPfRT6WLFmSzz77DICj
jz7aWbuUUkr5vvvuOwDat2/PunXrAP9aBDB58mQ9V2eYlStXAjB69GgAJkyYAMCvv/
6a7bm7du1i48aNAFStWrXAP0sjokoppZRSygkjdzw5SEjx1FNOOQWAWbNm2cfuvvtuAO655554/
qjQFpMdP348AHfddRdr1qyJ/iG5REQjv/bqq68C0KlTp/z+WCf9sd9+/
v1OsWLF7GNnnXUWANOnT49zkwoktMeHIylX0H7KlCkADBs2jIULF+b7+y677DKef/75/
Dw1FMdI1apV6datGwAPPfRQXBtUQKHoD4Ddu3cD8PXXXwMwb948AD755BM74/
LLL79k+z459zz44IMANGjQoLBNgBD1R2G9/fbbAHamLbLPZHzw5JNP0qtXr/y8XMr3R5ylVH/
s3bsXgOeee45bbrkFgG3btgFQpUoVAE444QRatGjhN2bf8TFu3Dhmz54NwCGHHJLbj4jZH04GojkNsiJ9/
PHHALRu3bpIP6oo3xxD3Ppj/vz5ABx//PH2sSOOOAKIPV29fPlyABYuXGj7T543e/Zsypcvn58f66Q/Pv/
8cyA6xN++fXsApk6dCkCJEiVyfY2//voLgD59+gDBRWT//fenePFCZ5iE9vj4448/
AKhXrx7NmjUD4KOPPsrX98oUW7169QAoW7Zsfn9sqAeiixcvBvzjaNKkSQBs3boVCI6P/
DLG2IFdHgPSUBwj1apVY9OmTQB2wH3UUUfFrVEFEIr+ALjjjjsAGDFiRKG+X84b8+fPt+
+xQghNfxTUmDFjAOjXrx8AmzdvBqB69ercd999gH9+BbjkkkuiAgm5CF1/7Nq1C4BzzjkH8IM/
LVu2LOrL5lfo+iMWGYBeeumlAEyaNMn+7U899VQARo4cCcS+cRs1ahSXXHIJQF5jEd1ZSSmllFJKhUcoIqK
tW7eOmqaP9PHHHxclKhrau5EtW7YAMGTIEA4//HAAunbtCsABBxyQ7fkSHj/
11FP56quvALjgggsAP5E8n5z2x8CBAwEYPny4fUwimzfeeGOu39ujRw8AJk6cGPX45MmT6dy5c0GaESm0x4
fcXU6aNMlGyj/55BMAKleunOP3rVy50j5fZhVatWqV3x8b6ohonTp1ALKlshTVP//
8k9uXQ3GMREZE27VrB8Arr7wCQLly5eLUtHwJRX8AzJw5E4AzzjgDwEY1jz/+eBvtvOKKK+zz+/
btC2SfWZg0aZI99xZCaPqjIGbMmGEjhHI9linVDz/8kEMPPbSwLx26/hg8eDAQXH/
Gjh1rrye5kRSFBx54wKYM5nPmMVLo+iOrTZs22f6QBdMQpD3JOCNONCKqlFJKKaXCIxTlm1q1amWjNxIZlQ
VNp5xyio2IyoKmIuaNhkLFihUB/
24rP+ROrHnz5nz55ZcALFu2DPCjpYW4U0sZ8+fPt79zunv22WcBbEkvgMMOOwzIPRIqOZKS2wV+AjkUKCIa
KpK3JBGNtWvX5uv7ateuDQQRjT179iSgde5IJFAiPJK7lWlOO+00AH788UcgeH9UqFChQK9z0EEHxbdhITZ
nzhwgyJeEID9fyvMUIRoaKpLz+sQTTwBQt25dgDyjoXLekONr5cqVdhbi9NNPT0RTnWrXrp2dZZW80E8+
+YRjjz02aW0IxUA0kgwyJWXgnnvu4d577wWCQWoe6QRp5dtvvwWwK9LGjBljp1Jq1arlrF3JIAOR+fPns2T
JkqivyXSBnCzSRc+ePYFguqxhw4Y8/fTTeX6fTKO8+OKL9rFKlSoloIXJs3PnTgAee+wxIPp9f/
DBBwPYlbz169e3X5P6ugsWLAD89Be5KEWSVaCpatSoUQA0bdqUyy+/PN/ft3z5cvv8iy++GIBrr702/
g1MMJl+lwFGbj7//
HO7QFTIgOvII4+Me9vCZsWKFUBQlcYYYwegcmNz0kknOWlborz77rtAUPfyrrvuyvX5cqMrVRW+//
57wE8JSscB6K233gr4ix/
lnCnpX5IumCw6Na+UUkoppZwIXUQ0q3vuuSfetUVD788//7SRHqmzKYuVIg0YMAAoVAJ1SpDdPWItZJJpuF
gLu1KRlCPKaurUqXaqORaJGkZOz0okNBWjXJGk7JTUN4xMY3njjTeA6FJnEjGVyMeQIUNyfG1jjH3/
pALP8+witO7duwMwaNAgwF+QI+cHmXasUKECf//9NxCUT5MI8YgRI+z0o5SFS/
VjJStJVZEZpRtvvDHbOVTKFtWoUSO5jXPg8ccfB6Jrd3/44YdA+kVChaQm5ZfMDixatAgIUhZyO4+kom++
+QYIFgpDcG5NdiRUaERUKaWUUko5EYqIqOQ/
5kUio+kQIZW7cykqDMFClS1btsTcz1VIbtgxxxyTwBa689JLLwFBjk+6W758Oddffz0QRPUkL1KiYDmRYt6
yu0ylSpVs1CMybzIVyXskvwv6JAqWnwhG1apVueGGGwrfuCQzxtgC9hLJk0Vs3bt356abbgLgkUceAaBUqV
K2LJXkB8bStGnTRDXZqeuuuw6IPr8K6T+JtKe7wYMH22tLyZIlAf/8kq6RULFhw4Z8P3fEiBH897//
jXrsxBNPBIJSeqlONknJWu6wf//+dOnSxUWTLI2IKqWUUkopJ0IREZ01a
1a2KKdESWMVum/dunXKlXCSfZBlS0v5/SSSFSlyP/kyZcoA0LZtW8DPC5V9XtOBFLdv3rw5AD///
LPNCZXtGyPJCtm8VkCmknXr1tkNDuTvLqu8pWg5BKs4TzjhBBvZkNXy8n0DBw5MmyiX5D7LVo6RGyFIVEv2
yYbgPZYf27dvt+/BVClv1aRJk6j/SxRjv/32o3///kAQ/
Yw8h8TSsGFDIMgdTDfvvfdetseqVq0KYGcf0p2UgBs+fDi7d+8GsPuHX3XVVc7a5YrMgPz222+2pJNcj7/9
9ttsG1ukW0WWlStXRn2Uqjt33HEHpUqVctYucDAQzWkHJSnRlJXUDoWgtFOqDUIBXn75ZQCeeuopIJiCzel
iIbXwZB/sTp06JbqJCSc7n1SpUsXuEiMf27Rpk6/
XkARyKTeRynbs2AHAbbfdlu1rkfVAsypWrJjd91mmo+WkmU4XWXlvyE2K/M579+61dYflvLFgwYJ8p/
gADB06NGUGoABLly7NcVHi+eefb6cRpXzX2LFj+emnnwDsIERUrFiR8ePHA9CoUaMEtdgtWbwnOytt2bKFj
Rs3AthyaLm9x9KBLNbZsWMH7du3B9L/
d86N7MAVWcZL6mZWqFDBBgOELJZMBzt27OCDDz6IeuyFF14Akr4zW0w6Na+UUkoppZxI2l7zWXdMyolEOuI
U9QzNPq8SsZBSKtLvJ554In/+
+ScQLEyZMmUKl112GeBHNuIoFP1x0kkn2X4oKFmAs3jx4kJ9fxZO+0OS6SN3dsktUi5TKZ7n2dJWEjmXMjW
5lXrKh1DvNS/TRxIFLghJZ5HFKwcffHCuO1VFCMV7pqB+/fVXG0mWUk1i+PDhMaPw+ZRS/
bF9+3bAT0GQRWxS1urTTz8FirzoM3T9IWluMltQrlw55s6dC0SfH2RDANnlL05C0x+ykFN2IJO/e/
Hixe31WNJ+/
v77bzp27AgEZZwkYrjffkWK14WiP7Zs2WLTmeQ8mteObDKFP3r0aCBY6HbHHXcUJYqqe80rpZRSSqnwSFqO
aGRuaGTeJ0Tnh6Zi/md+SHK47Ht95plnAnD77bfbxyQH7J577rFJ1McffzwA06ZNA9JjX+TJkyfbLdMkR/
T3338H/
Lt3+R1li88ffvjBQSsTr3Tp0oBfRFjuPoUUFu7YsaONjksEr2vXrjYiKl8rYiQ0lFavXg0Ex0hBt/
aVYvdHH320zZ2NLICfjqTs28knn8z69eujvibnoCJEQ1OORG769etnt7KU/
dZlcVu6lcGTQvViz549dsMC2Sq5RIkSdnGOFDhPty2jb7/9diCYDZHNP0qWLJlty045jwI89NBDQJEjoaGy
ZcsWmzMsm17EItfcgQMH2gVdWTeCqFu3btxLnyV9sdLdd9+dVvVA80v+
+LkdBKJBgwb2TfDFF18AQXg8Hfqsdu3admpdVnZKSkbz5s3tAgMZiMie0OlGbjyWLVuWr+fLLluzZ8+2F8+
hQ4cmpG2uyLT7kiVLuOCCCwCyDdJzIlOM5557LhC8Z2SBWzqTm9nBgwcDfm1aSe+QuoE5LQjNFPKekYGoVA
xIpXqyuZGKCVkX3ezevdsOQKUW7RdffGEXscke6+k2EBW5rX6XQfi0adM4+OCDgWAKOp1s376dXbt2AdChQ
4dsX5cbWNm1Lbca3t99913c25c+Q36llFJKKZVSEhYRlal4uQuX6fh0m3qXu0q5G81a66+wZOHSkUceCcBZ
Z50Vl9cNG4nWZN3tQWUnSffGGFsPUKb3U9nevXttZEIWGEh91PyqWLGijaqn+/
R7VuvXr7fT7pF1VeUccuuttwLpkdZTFEuXLo36v0SBtm/fHooSNkUlU8pSb1iUKlXK7iu+Zs0aAM4+
+2w7dS07B0l5nzp16iSlvWEgC3a2bt3KeeedB8R98VYofPnll/bzH3/8MeprmzZtsqWtIuuay4yUzFK9/
vrrCWufRkSVUkoppZQTCY+IykcpHp1uEVHZE1zuNB999NG4vG7WfcIlQvSvf/
0rLq+vUocsqli+fLl9rGbNmq6aE3eXXXaZLcReWOXKlcu4SKj44osvoiKh4G8eIY9leiQU/
B10si7ikXI+W7ZsSYuIqCxYzLqob/DgwTEXl0hEVGbzFi5cCGRWRFR2sAO47rrrHLYksaRcFcB///
tfALuArV27djYSKjsX3n///bagv0SK5f/yffGkEVGllFJKKeWE073mI1dxSn5XqpFog+x9/
vfff9ttPAtr27ZtPPfcc0AQBYvM8chkUuZJohv53Ro0lclWjbIy+uCDD06LrRkvvPBCoOD5oMcffzyfffZZ
1GNr1661Wzdec8018WlgyMkqWPm9I82cOZPq1asnu0mhIdHOG2+8EYBnn33Wvn+E5KWnS+kzmZ2Tagny9+/
cubNdyyAzd1KZBILC9rLdZSaQ0lWRx0Q6bemZmwULFgB+GUXwI+ENGzYEYMaMGYB/
TpYKPXLsSIUWWbcST0kbiEaWHYq1u1KqTtlLCR75Yz399NN2L9sBAwYAcMIJJ2TbG11KE61fv94eEBIenzV
rlj2ZlClTBoCbb745kb9GypCakrI444UXXrDT1H369AH8m4Jhw4YBwQVJvPHGG0lqaXzs3Lkz2w4Yjz32GF
WrVnXUoviR4z7WLlK5kanESJ7nZftbp6utW7cC/h7zAO+//
779mjyWiYNQGVRMnjyZhx9+GIhefCHk+vPAAw8kr3EOyI5ap59+uq1BHGtHu3POOQfA7kefCWTh2jvvvAP4
Za1q1KjhskkJVblyZRo0aAAEv/
vVV18N+INyqVcuwQEpGwnQrVs3AHr37p2w9unUvFJKKaWUciLpEdHWrVtH7bIEqTstD9C2bVsgSAb+9NNP+
eqrrwDo1KkTAFWqVMkWBX7llVeA2NEgY4x9XO5azj777AS0PtyksHCsnYckoty2bVvbVxIR+
+CDD2zx6lTfHWPEiBE2qlOpUiUAuydypopcYCCqV69uy42kO9kfW8rtGGM47LDDgGB/
7HQlMyITJ060j8mGEJKuIYtuIpUsWdKWPJNrkUxJp4sDDjgACPpIxJpBgGAB8ZgxYxLbsBRQt25de35NRwc
eeKCdDWzatCkQvWPS888/
n+17pPzboEGDgMRuDJLaV2mllFJKKZWyknZLKAuTIhcopUORe8nhHDt2LOAXgc26BdbmzZt59dVX8/2aXbp
0sXmPmbwtn+TVvvTSS3Z7S0nI3759O+DnhUk+XGQCvhR/
T9Woh0R8p0yZYiO+8julC9nuVvZALoxSpUoB0LBhw7TO8YIgAjpq1CggejalZ8+eQHpscBCLLNiTWaZYUc9
IEt069thjAX87z0QssggTWeCa9XpaqlQpLr74YgAqVKgA+AuYIkv6qPQnJSEnTJgA+OOMrKSw/
bHHHmsXfSajVKDJWnMsi1y/
mBuZfs9tYVISpuQLtgoib3n2x4YNG+yq+bfeegvATtUDtGjRwn+hff1es2ZNzjzzTCDYPSmBqziT3h/
xJjXQZI/6xx57jPfeew+IfazlIbT9IcfEu++
+a1ezLlq0CAimTBIg3v0BufSJ3LCdc8459m8nNxxbtmyxCwFjDa5kNXTjxo2B2Psnx0lojhG52ZUbLpkqGz
p0qF3MmIRUFCf9kZ994WVHnMsvv5x+/foBflpUgoXm+AiJlOiPxYsXA9HnjwTtHJQS/
ZFEMftDp+aVUkoppZQTCYuICol0SIT07rvvjirllGB6NxJN+yNa6Ppjx44dAJx00kkAfPPNN3ZaLQkLUZIa
EY1l3bp1gJ+OIQsBHe+YFJpjRPZGlxQEqesn0b8kcdIfkqoiC45WrVplpwxl8Z7UBU3yLkmhOT5CIiX6QyO
izmhEVCmllFJKhUfCI6KO6d1INO2PaKHrD8mblChg6dKlmTt3LgDNmzcv6svnxXlENIRCd4w4pv0RTfsjWk
r0h8wudO3aFfA3oknQYraU6I8k0oioUkoppZQKD42IFoz2RzTtj2jaH9lpn0TT/oim/
RFN+yOa9ke0tOwPjYgqpZRSSikndCCqlFJKKaWcyGtqXimllFJKqYTQiKhSSimllHJCB6JKKaWUUsoJHYgq
pZRSSikndCCqlFJKKaWc0IGoUkoppZRyQgeiSimllFLKif8H85gmBmpX3JwAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 864x345.6 with 40 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"n_rows = 4\n",
"n_cols = 10\n",
"plt.figure(figsize=(n_cols * 1.2, n_rows * 1.2))\n",
"for row in range(n_rows):\n",
" for col in range(n_cols):\n",
" index = n_cols * row + col\n",
" plt.subplot(n_rows, n_cols, index + 1)\n",
" plt.imshow(X_train[index], cmap=\"binary\",
interpolation=\"nearest\")\n",
" plt.axis('off')\n",
" plt.title(y_train[index], fontsize=12)\n",
"plt.subplots_adjust(wspace=0.2, hspace=0.5)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's build a simple dense network and find the optimal learning rate. We will
need a callback to grow the learning rate at each iteration. It will also record
the learning rate and the loss at each iteration:"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [],
"source": [
"K = keras.backend\n",
"\n",
"class ExponentialLearningRate(keras.callbacks.Callback):\n",
" def __init__(self, factor):\n",
" self.factor = factor\n",
" self.rates = []\n",
" self.losses = []\n",
" def on_batch_end(self, batch, logs):\n",
" self.rates.append(K.get_value(self.model.optimizer.learning_rate))\n",
" self.losses.append(logs[\"loss\"])\n",
" K.set_value(self.model.optimizer.learning_rate,
self.model.optimizer.learning_rate * self.factor)"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [],
"source": [
"keras.backend.clear_session()\n",
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Flatten(input_shape=[28, 28]),\n",
" keras.layers.Dense(300, activation=\"relu\"),\n",
" keras.layers.Dense(100, activation=\"relu\"),\n",
" keras.layers.Dense(10, activation=\"softmax\")\n",
"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will start with a small learning rate of 1e-3, and grow it by 0.5% at each
iteration:"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [],
"source": [
"model.compile(loss=\"sparse_categorical_crossentropy\",\n",
" optimizer=keras.optimizers.SGD(learning_rate=1e-3),\n",
" metrics=[\"accuracy\"])\n",
"expon_lr = ExponentialLearningRate(factor=1.005)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's train the model for just 1 epoch:"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1719/1719 [==============================] - 2s 1ms/step - loss: 4.6604 -
accuracy: 0.4887 - val_loss: 2.3911 - val_accuracy: 0.1126\n"
]
}
],
"source": [
"history = model.fit(X_train, y_train, epochs=1,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[expon_lr])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now plot the loss as a function of the learning rate:"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Loss')"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAYkAAAERCAYAAACO6FuTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYA
AApSklEQVR4nO3dd3yV5f3/8dcniyRkkAAJM6ywl0jEygziRKm2uO1wotY96qizta3VVltH609aLC6sWhUR
RP2iRDaVIVNlL8NeEnaS6/fHOcEYcocEk/
ucnLyfj8d5eM59rpx8cql557qv+74uc84hIiJSnqhQFyAiIuFLISEiIp4UEiIi4kkhISIinhQSIiLiSSEhI
iKeYkJdQHWKTkx13TtlExNloS4lou3du5f69euHuoyIp372x969e4mJS2DZlj1kpSeSmhAb6pJ8N3fu3G3O
ucblvRdRIRGTmsFbE/Non5kc6lIiWl5eHrm5uaEuI+Kpn/
2Rl5dH0069OfNvU3j68hMZ2r1pqEvynZmt9XrPt9NNZlbPzEaZ2Voz22Nm883sbI+2V5hZkZkVlHrkVub77
DtUVJ1li0gdUBy8qVjnII7m50giBlgPDALWAUOBN82su3NuTTntZzrn+lf1m+w/
rJAQkaopWXjCTDFRlm8h4ZzbCzxS6tB4M1sN9AbWVNf3UUiISFWVjCQ0nXm0kM1JmFkm0AFY4tGkl5ltA3Y
ArwCPOecKy/mcEcAIgLgm2Tz3wTxsY3wNVS0ABQUF5OXlhbqMiKd+9kdBQQFr5swBYMmSxcRt/
SrEFYWXkISEmcUCrwEvOefK+zcyBegGrAW6Am8AhcBjZRs650YCIwHqNW3v5m4u4tkv4/
jPiB8RG60rfGuCJlT9oX72R15eHlnZJ8DM6fTo3p3czpmhLims+P5b1MyiCIwMDgE3ldfGObfKObfaOVfsn
FsE/
A644FifnRIfuHRt7tqdDHxicvUVLSIRrTg4JxGlOYmj+BoSFpgVGgVkAsOdc4cr+aWOSlx40CIt4cjzjbsP
kL9rP0XFjq17Dh5PuSJSRxQfmbkObR3hyO/
TTc8DnYHTnHP7vRoFL42d55zbbGadgAeBt4714dFRxurHhvLVpj2c/
fRU+v7p0yPv3ZDbjrvP7KirF0TkKE4jCU9+3ifRCrgOOAHYVOr+h8vNLCv4PCvYfAiw0Mz2Ah8A7wB/
rOT3oXPTFEb9Mud7x5/PW8mAJyazJH832mhJREpzuk/
Ck5+XwK6l4n8HSaXa3gXc9UO+35DOmcy491SKnaNJSjyjpq3msYlfcc4z02iRlkBOqzRuHtKedo2Tjv1hIh
LRSv5s1EjiaBG1LEdZzRp8N0dx3aB2nNuzGeMX5PPJl1t4b0E+7y3I59I+WVzRtzXZjZOI0kXSInVScbHuk
/AS0SFRVvMGCVw3qB3XDWrH+h37eHH6al6euZYxs9eRlhjLhTktuaZ/
GzJSdJ+FSF1ScnWTzjcdrU6FRGkt0xN5eFhXrhvYjinLtvLpV1sYNW01L81Yw9DuTemf3YhzezalXkx0qEs
VkRrmKBlJKCXKqrMhUaJJajwXndSSi05qydrte3nu0xV8tGQT787/hr98/
DUX5rRk+InNadVQSzaLRCpd3eStzodEaa0a1ufPF/
bkT8N7MGPlNp7PW8mzny7nmU+W06dNOhf2bsHQ7k2pX0/
dJhJJjqwCq4w4in7blSM6yhjQvjED2jdm4+79vDPvG96as55f/
3chj4xbwjk9mjKsZzNOap1OfKxOR4nUdt+NJEJbRzhSSBxD09QEbhycza9y2zFn7U7e/
Hw94xdu5M05G4iLiaJP63SG9WzK2d2bHlkWRERql+9GEkqJshQSlWRmnNQ6nZNap/O787oxa/V2pi/
fxidfbeGetxfx0HtLGNC+EcNPbEFuxwwS4jTCEKkttCqHN4XEcUiIi2ZwxwwGd8zg/nM688X6XYyd/
w0fLtnEpC+3EBcTxUmt0xjYvjFnd2tKVsPEUJcsIhXQ1U3eFBI/
kJnRKyuNXllpPHhuF2av3sGnX21h+optPDbxKx6b+BUdM5M5t0dThvdu8b0b/EQkPBQXB/
6pjDiaQqIaxURH0S+7Ef2yGwGwfsc+Pl66mY8Wb+LJ/
1vGU5OW0T+7ERfmtOSMLpma9BYJE1qWw5tCoga1TE/k6v5tuLp/G9Zt38d/
523g7bkbuOX1+STGRXNW1yZckNOCH7VpqCVBREJIl8B6U0j4JKthInec3oHbhrRn1qrtvL8wn/ELNvLO/
G9okZbAeSc046cnttCCgyIh8N0qsEqJshQSPouKMvpmN6JvdiMeOrcrHy3ZxNvzNvB83kr+PnklPVs2YPiJ
zRnWoxlp9eNCXa5InXDkPgnteHwUhUQIJcRFc36v5pzfqzlbvj3AuAX5vD3vGx56bwmPjl/K4I4Z/
PTE5gzulKE1pERqkLYv9aaQCBMZKfFcM6At1wxoy9L8b3l3/gbGfpHPx0s3k14/
jkv7tOTnP2pNk1StUCtS3Yq16ZAnhUQY6tIshS7NunDPWZ2YumIbY2av4x95K3nhs1Wc1a0JV/
Zrw4lZDXR3qEg1ObJSuP6fOopCIozFREcduWlv3fZ9vDxzDW/MCSwL0qNFKlf2a8053ZsRF6MTqSI/
RMnEtS4yPJp+u9QSWQ0TeeDcLsy6bwiPnteVgoOF3P7GAvo9/il/
m7SM7QUHQ12iSK2ltZu8KSRqmfr1Yvj5Ka2ZdPsgRl95El2bpfC3Scvp//
hkHpv4pcJC5DhoFVhvOt1US0VFGbkdM8jtmMGKLXt49tMVjJyyipdnrOUXfVsxYkBbGibVC3WZIrVC8ZEF/
pQSZWkkEQGyM5J5+pJe/N/tAzmjayYjp6yi/
+OT+dPEr9i171CoyxMJe053XHtSSESQ78JiEGd0zeSFKSsZ8MRknvt0OXsPFoa6PJGw9d3NdEqJshQSESg7
I4mnL+nFxFsHcHKbhvzl42UM+nMeY2avo6hkXC0iR+g+CW8KiQjWqUkK//plDm/
f0Jc2jRL5zbuLOOeZqUxfsS3UpYmEFa0C600hUQf0bpXGm9edwj8uP5GCg4Vc/q/
ZXPPS56zaWhDq0kTCQrHuk/
CkkKgjzIyh3Zsy6Y5B3HNWJ2at2sEZf53C795fyu59h0NdnkhIHTkLq5A4ikKijomPjeaG3HZMviuXC3Na8
O8Zqxn0l8m8NGON5iuk7nLavtSLQqKOapxcj8d+2oMJNw+gc5MUHh63hItemMmabXtDXZqI7767T0LKUkjU
cV2apTDm2pP528UnsHzzHs5+eiqvzFxDsUYVUocUayThSSEhmBnn92rOR7cPJKd1Gg+
+t4QLX5jJss17Ql2aiC+c9pPwpJCQI5qmJvDyVX148sKerNpawDnPTOXpScs5VFgc6tJEalTJSELnm47mW0
iYWT0zG2Vma81sj5nNN7OzK2h/u5ltMrPdZvaimWkhIh+YGcN7t2DSHYM4u1tT/
jppGcOencaXG78NdWkiNU6XwB7Nz5FEDLAeGASkAg8Cb5pZ67INzexM4F5gCNAaaAv81q9CBRom1eOZS3sx
6pc57Nh3iPOem86oaas1VyERSXMS3nwLCefcXufcI865Nc65YufceGA10Luc5r8ERjnnljjndgKPAlf4Vat
8Z0jnTD68dQADOzTi0fFLuXL05+w+qKCQyHLk6iZlxFFCNidhZplAB2BJOW93BRaUer0AyDSzhn7UJt/
XMKke//
xFDo+e341Zq7bzwPR9TF2+NdRliVQbTVx7C8l+EmYWC7wGvOSc+6qcJknA7lKvS54nA9vLfNYIYARAZmYme
Xl51V6vBLQEHjq5Hs/
N38cvRv2PH7eL5bzsWP2PVUMKCgr037MPCgoKWLl5JQBTp04hVhMT3+N7SJhZFPAKcAi4yaNZAZBS6nXJ86
OuyXTOjQRGAuTk5Ljc3Nxqq1XK1yhhMh/vSOfteRvYGd2Apy8+gbT6caEuK+Lk5eWh/
55rXl5eHq0Tm8PyZQwaOEh7xpfha29YYAPZUUAmMNw557Vo0BKgZ6nXPYHNzrntHu3FR/
VijL9c2IPHftqdWSu3M+y5aSzN19VPUntp+1Jvfkfm80BnYJhzbn8F7V4GrjazLmaWBjwAjPahPqkkM+PSP
lm8ef0pFBY5hj8/g/EL80Ndlshx+W7iWilRlp/
3SbQCrgNOADaZWUHwcbmZZQWfZwE45z4EngAmA2uDj4f9qlUq74SWDRh3cz+6NEvhpjHzeeLDr7RQoNQ6Di
0V7sW3OQnn3Foqvp8xqUz7p4CnarQoqRYZyfGMufZkHhm3hH/kreTLjd/
yt0t6kZoQG+rSRCpFIwlvmqGRalEvJprHftqD35/fjanLt/GTf0xnpTY1klrCOad7JDwoJKRa/
exHrXjtmpPZve8w5z83nbfnbsA5nX6S8Oac7pHwopCQandy24a8d1M/OjVN5s63FnDz6/
PZf6go1GWJeCp2TvMRHhQSUiNapCXynxGn8OszOzJh0UYufGEGG3dXdEGbSOgUOzAtAVsuhYTUmOgo48bB2
fzrFzms3rqXYc9OZ9Yq3eoi4cehOQkvCgmpcUM6ZzL2xn6kJMRw+b9m888pqzRPIWFFcxLeFBLii/
aZyYy7qT9ndMnkDx98yW1vfKF5CgkbxcUaSXhRSIhvkurF8I/LT+SuMzowbkE+P/
nHdFZs0RapEnoOjSS8KCTEV2bGTae2Z/
SVfdi65yDDnp3Oe198E+qypI4rdk7T1h4UEhISgzo05oNbB9C9eSq3/
ucLfvv+Eg4XaS9tCQ3ntOGQF4WEhExmSjyvXXsyV/
Vrw7+nr+Hyf85my54DoS5L6iDnHFG6UaJcCgkJqdjoKB4a1oWnLzmBhd/
sYtiz05i7dmeoy5I6JnCfhJRHISFh4bwTmvPur/
oRHxvNJSNn8sqstbpMVnzjcJq49qCQkLDRuWkK427sT//
sRjw4djF3vbWQA4d1mazUvGKnFWC9KCQkrKQmxjLqlydx22nteXveBoY/P4P1O/
aFuiyJcFoF1ptCQsJOVJRx22kdePGKHNbv2Mc5z0xl0tLNoS5LIljgjutQVxGeFBIStk7tlMmEWwaQ1TCRa
16ew58mfkWhLpOVGhC4T0IpUR6FhIS1lumJ/Pf6vlx+chb/77OVXP4vXSYr1a9YIwlPCgkJe/
Gx0fzhJ9156qKeLNywm6FPT2PGim2hLksiiNPEtSeFhNQaPz2xBWNv7EdqQgyXj5rNnz/
S6SepHpq49qaQkFqlY5Nk3r+5Pxf1bsnfJ6/k4pGz2LBTVz/JD6MF/
rwpJKTWSYyL4fELevDMpb34etMehj49lQ8Xbwx1WVKLaftSbwoJqbV+3LMZE27pT5tG9bn+1Xk8MHaRbr6T
46Kb6bwpJKRWa9WwPm9d35cRA9vy6qx1nP937VEhVac5CW8KCan14mKi+M3Qzvz7ypOO7FHxxufrtPaTVJq
2L/WmkJCIMbhjBhNvHUCvrAbc8/Yirn91Llv3HAx1WVILaNMhbwoJiSgZKfG8cvXJ/GZoJyZ/vZUz/
voZ4xfmh7osCXMaSXhTSEjEiY4yRgxsx4Sb+5OVnshNY+Zz42vz2LH3UKhLkzBVrDkJTwoJiVjtM5N5+4a+
/PrMjny8dBNn/
PUzPly8KdRlSRjS1U3eFBIS0WKio7hxcDbv39yfzJR4rn91Lrf9Zz679mlUId9xmpPwpJCQOqFTkxTG3tiP
20/rwPiFGzntqSm6AU+O2LX/MA0SY0NdRlhSSEidERsdxa2ntee9m/
qRmVKP61+dx9WjP9emRsKm3QfITIkPdRlhydeQMLObzGyOmR00s9EVtLvCzIrMrKDUI9e3QiWidW2Wytgb+
/GboZ2YtWo7Z/5tCi/
NWENRse6rqKsOFhaTEBcd6jLCkt8jiXzg98CLlWg70zmXVOqRV7OlSV0SGx3FiIHt+PiOQfRulcbD45Zw/
t+ns2D9rlCXJiFQVFxMjBZvKpevIeGce8c5NxbY7uf3FfHSvEECL1/Vh2cv7cXmbw9w/
j+m88DYRezedzjUpYmPCosc0QqJcoXznEQvM9tmZsvM7EEziwl1QRKZzIxhPZvxyZ2DuLJvG8bMXsepT+bx
9twNWtqjjigsdhpJeAjXX7xTgG7AWqAr8AZQCDxWtqGZjQBGAGRmZpKXl+dflXVUQUFBxPbzwGRodUo8ryw
9xJ1vLeCFSYv4RZd6tEj2/++pSO7ncFJQUMDhQiN/wwby8raEupywY6H4S8nMfg+0cM5dUcn2lwC/
ds71rqhdTk6OmzNnTjVUKBXJy8sjNzc31GXUqOJix1tz1/
PYxK8oOFDIVf3bcNOp2aTE+3eZZF3o53CQl5fHVR/
t5cbB2dx5RsdQlxMSZjbXOZdT3nvhfLqpNAe610X8ExVlXHxSFp/
emcsFvVswcsoqcv+cx+jpqzlUqC1TI0mxcxQ7NCfhwe9LYGPMLB6IBqLNLL68uQYzO9vMMoPPOwEPAu/
5WasIQHr9OP40vAfjb+5PpybJPPL+Uk7/62d8sGij5isiRMmVz5qTKJ/
fI4kHgP3AvcDPgs8fMLOs4L0QWcF2Q4CFZrYX+AB4B/
ijz7WKHNGteSqvXXMyo688ifiYaH712jwu+H8zmb1KF+rVdkUlIRFdW06s+MvXiWvn3CPAIx5vJ5Vqdxdwl
w8liVSamZHbMYMB7Rvz1pz1/
HXSMi4eOYtBHRpz91kd6dosNdQlynHQSKJiPzg6zUwLnkidEh1lXNIni89+PZj7zu7EF+t3cc4z07j+lbl8
tenbUJcnVVQUnGLSnET5qhQSZnaLmQ0v9XoUsN/
MvjazunlZgNRZ8bHRXDeoHVPuHswtQ9ozfcU2zvrbVH712ly+3qR9tmuLrfsDKZGoZTnKVdWRxC3AVgAzGw
hcBFwGfAE8Wa2VidQSqQmx3HF6B6beM5ibT81myrJtnPX0FG4aM4/
lmxUW4W7XwcD5po5NUkJcSXiq6pxEc2BN8Pkw4C3n3JtmtgiYWp2FidQ2DRLjuPOMjlzVrw3/
nLqKl2asYcKijQzr0YxbhrQnOyPp2B8iviu5ojkhViOJ8lR1JPEt0Dj4/
HTgk+Dzw4DW2RUB0urHcfdZnZh6z6lcN7Adk77czBl//Yzb/jOfVVsLQl2elHE4GBKx0ZqTKE9VRxIfA/
80s/
lANjAxeLwrsLo6CxOp7dLrx3Hv2Z24dkAbRk5Zxcsz1zJuQT7nn9CcXw1uR3ZGcqhLFALrNgHExegS2PJUt
VduBKYDjYALnHM7gsdPBF6vzsJEIkXDpHrcN7QzU+8ZzNX92/
DB4sDOeNe89DkzV27XTXkhVnK6SSFRviqNJJxz3wI3l3P84WqrSCRCNUqqx/
3ndOGG3GxenrmGl2asYdKXs+jUJJmf/agV5/
dqTlK9cF1zM3IdCQndTFeuql4C26X0pa5mdrqZvWpm95mZZn1EKiG9fhy3ndaBmfcN4fHh3Yky44Gxizn5D
5N4YOwiXT7rM51uqlhV/2wZBTwNfG1mLQisp5RH4DRUCnBftVYnEsHiY6O5+KQsLsppyRfrd/
HqrHW8OWcDr85aR5/
W6fROLaRvYbF+edWwwuDZPo0kylfVXukMzAs+vxCY7ZwbCvwcuLQ6CxOpK8yMXllpPHlRT2bfN4TfDO3Epm
8P8PyCg/T906c89fHX5O/
aH+oyI9bhYogyrd3kpaq9Eg0cCj4fQmDxPYCVQGZ1FSVSV6XVj2PEwHbk3ZXLHb3r0b15Cs9OXkH/xz/
l2pfnkPf1FoqLNdFdnQqLA3ueS/
mqerppMXCDmY0nEBIlp5eaA9uqszCRuiwqyujROIZbLuzD+h37eP1/63hzznr+b+lmWqQlcNnJWVzYuyWNk
+uFutRar7DY6ZReBaraM/
cA1xKYh3jdObcoePzHwP+qsS4RCWqZnsjdZ3Vixr1DeO6yXrRMS+SJD7+m758+4aYx83QZ7Q9UWAz1FBKeq
noJ7BQzawykOOd2lnrrBWBftVYmIt8TFxPFuT2acW6PZqzYUsCY2ev479z1jF+4kbaN63P5ya244MQWpCZq
Yeaq0OmmilX5omznXJGZ7TezbgS2FV3pnFtT7ZWJiKfsjCQeGtaFu8/
qyPiFG3lt9loeHb+UJz78inN6NKVP63T6ZTeiZXpiqEsNezrdVLEqhURwq9HHgJuAOAL7Th80s2eB+51zh6
u/RBHxEh8bzQW9W3BB7xYsyd/NmNnrGDv/
G96Z9w0AvVulcUHvFpzboynJ8RphlGf3IUd8jG7z8lLVkcQTBC51vR6YFjw2gEBwRKHd5ERCpmuzVP7wk+4
8eG4X8nftZ+LiTbw7/xvue2cRv31/CUM6Z/
Ljns3I7diYevqleER+gePULlom3EtVQ+Iy4Crn3Aeljq00s63Av1BIiIRcfGw0bRsncePgbH6V244v1u/
inXnfMGHRRiYs3EhyfAxnd2vCOT2acUrbhnX+VMuBQkda/
bhQlxG2qhoSqQTuiShrJdDgB1cjItWq5Ea9XllpPDSsC9NXbGPcF/
lMWLiRN+dsICU+hlM7ZXBm1yYM6tiYxLi6tXZUcbHjQBHU15pZnqraMwsI7E53Y5njtwbfE5EwFRsdRW7HD
HI7ZnDgcBHTlm/
jwyWbmPTlZsZ+kU+9mCgGdWjMsJ7NGNI5o04Exs59gXuDkxUSnqraM3cDH5jZ6cBMAlc3nQI0A86u5tpEpI
bEx0ZzWpdMTuuSSWFRMf9bs4OPl2zmg0Ub+XjpZhJiozm1cwbndG/KoA6NI/
Yv7cX53wLQtZnmJLwcz30SHQiMJDoRuLrpLQLLc9zGd5PZIlJLxERH0bddI/
q2a8SD53bh8zU7GL8wn4mLNjFh4UbqxUQxoH1jzurWhNM6Z9AgMXLO3+/YexCAJqnaWNPL8dwnkQ/cX/
qYmfUEhldXUSISGtFRxo/aNuRHbRvyyLCufL5mJx8t2cRHwdNS0VFGzxap9M9uRL/
sRvTKSqvVE9879wau2k/
XxLWnyBxDisgPFhMdxSntGnJKu4Y8PKwLCzfsZtKXm5m2YhvPTV7BM5+uICE2mpPbph8JjY6ZyURF1Z69on
fuO4QBKbqHxJNCQkSOyczo2bIBPVs24M4zOvLtgcPMWrmd6Su2MW3FNn4/4UsAGiXF0bddI/
pnN6JvdkNapIX3Hd/
b9x4iKZZaFWx+U0iISJWlxMdyRtcmnNG1CQAbd+9n+orvQmPcgnwAWjdMpF92IDROadcwrOYzpi7fyvtf5N
Okfu09XeaHSoWEmY07RhNdGiBShzVNTTiyPIhzjuVbCpi2fBvTV2xj7PxveG32OsygfUYSJ2alBU5jtW1IR
kpoJowXf7Oba16aQ4u0BEZ0Lg5JDbVFZUcS2yvx/
uofWIuIRAAzo0NmMh0yk7mqfxsOFxWzYP0upq3YxoL1u5iwaCP/
+Xw9EFiosE+bdHq2SOWElml0yEzCrOZP/Tw6finJ8bG8cd0pLJ4zs8a/
X21WqZBwzl1Z04WISGSKjY4ip3U6Oa3TASgqdizN/
5YZK7cxY+V23v8inzGz1wGBq4yy0hPp2SKV+Lho2mckk9MqjVYNE6s1PNZu30dux8Y0StKmTceiOQkR8VV0
lNG9RSrdW6Ry3aB2FBc71mzfy5y1O5mzZgfrduzjjTnrOVzkKApu1ZpUL4Z2jevTuWkKPVs24ISWDeiQmUz
0cUw4795/
mK0FB2nWIKG6f7SIpJAQkZCKijLaNk6ibeMkLsppCXBkH+8VWwuYu3YnX278lpVbC5i4eNORU1Vx0VG0TE+
gY5NkOjVJoXmDBNo0rk+Xpims3raX+99dxNeb9pCSEEtGcj0yUuJJT4xjW8FBioodp3XOCNnPXJtYJG17mN
6qszv9Ny+GuoyIt2vXLho0aBDqMiKe+vlozjkOFhZTcLCQfYeKOHC4iH2HijhY+N3ksxFYLyg22mhYP47CY
sfhomIOFToKi4spKnZkpsSTFdyQSf0Mb17fd65zLqe
893wdSZjZTcAVQHcCe2RfUUHb2wnsqZ0AvA3c4Jw76EOZIhKmzIz42GjiY7+/
H0ZRseNQUTH7DxWx92AhhcWOZg3itW9GNfB1JGFmPwWKgTOBBK+QMLMzgZeBU4F84F1glnPu3oo+Pycnx82
ZM6daa5aj5eXlkZubG+oyIp762R/
qZzAzz5GEr3eROOfecc6N5diX1P4SGOWcW+Kc2wk8SmAEIiIiPgrXieuuwHulXi8AMs2soXPuewFjZiOAEQ
CZmZnk5eX5VmRdVVBQoH72gfrZH+rnioVrSCQBu0u9LnmeTJlRiHNuJDASAqeb6vqw0Q8anvtD/
ewP9XPFwnXRkgK+v9RHyfM9IahFRKTOCteQWAL0LPW6J7C57KkmERGpWb6GhJnFmFk8EA1Em1m8mZV3yutl
4Goz62JmacADwGgfSxUREfwfSTwA7AfuBX4WfP6AmWWZWYGZZQE45z4EngAmA2uDj4d9rlVEpM7zdeLaOfc
I8IjH20ll2j4FPFXDJYmISAXCdU5CRETCgEJCREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkkRETEk0JCRE
Q8KSRERMSTQkJERDwpJERExJNCQkREPCkkRETEk0JCREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkkRETEk
0JCREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkkRETEk0JCREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkk
RETEk0JCREQ8+RoSZpZuZu+a2V4zW2tml3m0u8LMisysoNQj189aRUQEYnz+fn8HDgGZwAnABDNb4JxbUk7
bmc65/
n4WJyIi3+fbSMLM6gPDgQedcwXOuWnAOODnftUgIiJV4+fppg5AkXNuWaljC4CuHu17mdk2M1tmZg+amd+j
HhGROs/PX7xJwO4yx3YDyeW0nQJ0A9YSCJE3gELgsbINzWwEMAIgMzOTvLy86qtYylVQUKB+9oH62R/
q54r5GRIFQEqZYynAnrINnXOrSr1cZGa/A35NOSHhnBsJjATIyclxubm51VWveMjLy0P9XPPUz/
5QP1fMz9NNy4AYM2tf6lhPoLxJ67IcYDVSlYiIePItJJxze4F3gN+ZWX0z6wecB7xStq2ZnW1mmcHnnYAHg
ff8qlVERAL8vpnuV0ACsAV4HbjBObfEzLKC90JkBdsNARaa2V7gAwLh8kefaxURqfN8vWLIObcDOL+c4+sI
TGyXvL4LuMu/
ykREpDxalkNERDwpJERExJNCQkREPCkkRETEk0JCREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkkRETEk0J
CREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkkRETEk0JCREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkkRE
TEk0JCREQ8KSRERMSTQkJERDwpJERExJNCQkREPCkkRETEk0JCREQ8KSRERMSTQkJERDwpJERExJNCQkREP
PkaEmaWbmbvmtleM1trZpdV0PZ2M9tkZrvN7EUzq+dnrSIi4v9I4u/
AISATuBx43sy6lm1kZmcC9wJDgNZAW+C3/
pUpIiLgY0iYWX1gOPCgc67AOTcNGAf8vJzmvwRGOeeWOOd2Ao8CV/
hVq4iIBMT4+L06AEXOuWWlji0ABpXTtivwXpl2mWbW0Dm3vXRDMxsBjAi+LDCzr6ux5oqkArt9+vrKtK2oj
dd75R2vzLFGwLZj1FNd1M/+UD/7I1z7uZVnC+ecLw9gALCpzLFrgbxy2q4Ezir1OhZwQGu/
6q3EzzPSr6+vTNuK2ni9V97xyhwD5qif1c/
q58ju55KHn3MSBUBKmWMpwJ5KtC15Xl7bUHnfx6+vTNuK2ni9V97xyh7zi/
rZH+pnf9SmfgbAgmlS44JzEjuBrs655cFjLwP5zrl7y7QdA6x2zt0ffH0qMMY518SXYqVCZjbHOZcT6join
frZH+rnivk2knDO7QXeAX5nZvXNrB9wHvBKOc1fBq42sy5mlgY8AIz2q1Y5ppGhLqCOUD/7Q/
1cAd9GEhC4TwJ4ETgd2A7c65wbY2ZZwFKgi3NuXbDtHcA9QALwNnC9c+6gb8WKiIi/
ISEiIrWLluUQERFPCgmpEWZ2ipnNNLPPzOx1M4sNdU2RyMxSzex/ZlZgZt1CXU8kMbM/mNlUM/
uvmSWGup5QUUhITVkLnOqcGwSsInCRglS/fcA5wH9DXUgkCQZuO+fcAGAScFWISwoZhYTUCOdcvnNuf/
BlIVAcynoilXPusHNua6jriEADgInB5xOB/
iGsJaQUEoKZ3WRmc8zsoJmNLvNepVfu9fjsNsDZwPhqLLlWqsl+lvL9gD5P47slLXYD6T6VHHb8XLtJwlc+
8HvgTAKXHJdWeuXeE4AJZrbAObfEzJpQ/mmOC5xzm8wsBXgJ+Llz7lCNVV971Eg/
12C9keC4+pzAjb+pwXapwA5fqg1DugRWjjCz3wMtnHNXBF+X3CXfzQUXZjSzV4Bvyt4lX85nxRBYpPFJ59y
nNVp4LVOd/
VzqM0cDf3HOLa6Romu5qva5mXUH7nPOXRZcRLSec+7ZEJUfUjrdJBXxWrn3qD1AynEpcDLwkJnlmdnFNVFg
hPgh/YyZfQCcAfzTzK6o/
vIiUoV97pxbBKw1s6kERiEv+l9ieNDpJqlIEkcvNbwbSD7WFzrnXqH8JVfkaMfdzwDOuaHVXlHkO2afO+fu
87WiMKWRhFSkKiv3yvFTP/
tPfV5JCgmpyDIgxszalzrWE1gSonoilfrZf+rzSlJICGYWY2bxQDQQbWbxZhZTxZV75RjUz/
5Tn1cDv3Zk0iN8H8AjBHb+K/14JPheOjAW2AusAy4Ldb219aF+Vp/
XxocugRUREU863SQiIp4UEiIi4kkhISIinhQSIiLiSSEhIiKeFBIiIuJJISEiIp4UEiLVyMweMTMt1y0RQz
fTSa0T3DuhkXPu3FDXUpaZJRHYe2B7qGvxYmYOuNA5p32x5Zg0khCpBDOLq0w751xBKALCzKLMLNrv7yuRT
yEhEcfMupjZBDPbY2ZbzOz14BagJe+fZGYfm9k2M/
vWzKaZ2SllPsOZ2Y1m9o6Z7QX+WHIqycwuMbOVwc8fa2aNSn3d9043mdloMxtvZrea2TdmttPM/
m1miaXa1Dezl82swMw2m9l9wa8ZXcHPeEWw/
dDg9zsEdD7Wz2Zma4JP3wr+jGtKvTfMzOaa2QEzW21mf6hsOErkUkhIRDGzpsAUYDHQBziNwAYz48ys5L/
3ZAKrfQ4ItvkC+KD0L/ugh4EPgO4E9kMGaA1cDPyEwG5wvYA/
HKOsAUC3YC0lX3trqfefBAYFj59KYMnqAZX4ceOBB4DrgC7A2kr8bCcF/
3kt0LTktZmdCbwGPEdgd7argAuAP1aiDolkoV5hUA89qvoARgPjPd77HfBJmWNpBFb/
7OPxNQZsBH5W6pgDni3T7hHgAJBa6tj9wIoybRaXqXU9EFPq2D+BScHnSQRGAZeUer9k/
+XRFfTBFcEaex+jr7x+tgvKtJsCPFjm2PkENuexUP871yN0D40kJNL0BgYGT8UUmFkBgV/
SAO0AzCzDzF4ws2VmtpvAbmQZQFaZz5pTzuevdc6V3vYyP/
i1FVnqnCv0+Jp2QCzwv5I3XWCvg8pcIVVIYKRwRBV+trJ6A/
eX6bcxBAKrScVfKpFMe1xLpIkCJgB3lfPe5uA/
XwIygduBNcBB4BOg7Pn3veV8xuEyrx3HPm1b0ddYqWNVddA5V1TmWGV/
trKigN8Cb5Xz3tbjqE0ihEJCIs084CICf/GX/eVcoj9wi3NuAoCZZRI4Px8KKwiESB9gdbCeRAJzGCuP4/
Mq87MdJrBTW2nzgE7OuRXH8T0lgikkpLZKMbMTyhzbRWCC+VrgDTN7nMBfwW0JBMedzrk9BPY3/
pmZzSZwOuUJAvMCvnPOFZjZi8DjZraNwPzBAwT+sj+e0UVlfrY1wBAz+4zAaGQngbmc8Wa2FniTwKmsbgTm
ce4+jjokQmhOQmqrAcD8Mo+/OOfygX5AMfAhgY3t/
07gtMvB4NdeRWDCeC7wH+BFAr84Q+UuYCowDpgMLCQwH3LgOD6rMj/bncBgAnM18wGccx8B5wSP/y/
4uJfAtp5Sh+mOa5EwY2b1CFzO+mfn3JOhrkfqNp1uEgkxM+sFdCbw13sycE/
wn2+Esi4RUEiIhIs7gI58d1nrQOfchpBWJIJON4mISAU0cS0iIp4UEiIi4kkhISIinhQSIiLiSSEhIiKeFB
IiIuLp/wPXEY25i0zEMgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(expon_lr.rates, expon_lr.losses)\n",
"plt.gca().set_xscale('log')\n",
"plt.hlines(min(expon_lr.losses), min(expon_lr.rates), max(expon_lr.rates))\n",
"plt.axis([min(expon_lr.rates), max(expon_lr.rates), 0, expon_lr.losses[0]])\
n",
"plt.grid()\n",
"plt.xlabel(\"Learning rate\")\n",
"plt.ylabel(\"Loss\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The loss starts shooting back up violently when the learning rate goes over
6e-1, so let's try using half of that, at 3e-1:"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [],
"source": [
"keras.backend.clear_session()\n",
"np.random.seed(42)\n",
"tf.random.set_seed(42)"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [],
"source": [
"model = keras.models.Sequential([\n",
" keras.layers.Flatten(input_shape=[28, 28]),\n",
" keras.layers.Dense(300, activation=\"relu\"),\n",
" keras.layers.Dense(100, activation=\"relu\"),\n",
" keras.layers.Dense(10, activation=\"softmax\")\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [],
"source": [
"model.compile(loss=\"sparse_categorical_crossentropy\",\n",
" optimizer=keras.optimizers.SGD(learning_rate=3e-1),\n",
" metrics=[\"accuracy\"])"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'./my_mnist_logs/run_001'"
]
},
"execution_count": 125,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"run_index = 1 # increment this at every run\n",
"run_logdir =
os.path.join(os.curdir, \"my_mnist_logs\", \"run_{:03d}\".format(run_index))\n",
"run_logdir"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"1719/1719 [==============================] - 3s 2ms/step - loss: 0.4195 -
accuracy: 0.8677 - val_loss: 0.0995 - val_accuracy: 0.9724\n",
"Epoch 2/100\n",
"1719/1719 [==============================] - 2s 882us/step - loss: 0.0941 -
accuracy: 0.9698 - val_loss: 0.0913 - val_accuracy: 0.9746\n",
"Epoch 3/100\n",
"1719/1719 [==============================] - 1s 845us/step - loss: 0.0650 -
accuracy: 0.9792 - val_loss: 0.0785 - val_accuracy: 0.9772\n",
"Epoch 4/100\n",
"1719/1719 [==============================] - 2s 932us/step - loss: 0.0438 -
accuracy: 0.9855 - val_loss: 0.0793 - val_accuracy: 0.9784\n",
"Epoch 5/100\n",
"1719/1719 [==============================] - 1s 832us/step - loss: 0.0348 -
accuracy: 0.9888 - val_loss: 0.0724 - val_accuracy: 0.9812\n",
"Epoch 6/100\n",
"1719/1719 [==============================] - 1s 835us/step - loss: 0.0289 -
accuracy: 0.9905 - val_loss: 0.0814 - val_accuracy: 0.9792\n",
"Epoch 7/100\n",
"1719/1719 [==============================] - 1s 868us/step - loss: 0.0230 -
accuracy: 0.9926 - val_loss: 0.0794 - val_accuracy: 0.9808\n",
"Epoch 8/100\n",
"1719/1719 [==============================] - 1s 847us/step - loss: 0.0180 -
accuracy: 0.9943 - val_loss: 0.0718 - val_accuracy: 0.9826\n",
"Epoch 9/100\n",
"1719/1719 [==============================] - 1s 848us/step - loss: 0.0158 -
accuracy: 0.9949 - val_loss: 0.0874 - val_accuracy: 0.9798\n",
"Epoch 10/100\n",
"1719/1719 [==============================] - 1s 844us/step - loss: 0.0155 -
accuracy: 0.9944 - val_loss: 0.0782 - val_accuracy: 0.9824\n",
"Epoch 11/100\n",
"1719/1719 [==============================] - 1s 834us/step - loss: 0.0089 -
accuracy: 0.9971 - val_loss: 0.0902 - val_accuracy: 0.9832\n",
"Epoch 12/100\n",
"1719/1719 [==============================] - 1s 844us/step - loss: 0.0064 -
accuracy: 0.9979 - val_loss: 0.0832 - val_accuracy: 0.9832\n",
"Epoch 13/100\n",
"1719/1719 [==============================] - 1s 859us/step - loss: 0.0059 -
accuracy: 0.9981 - val_loss: 0.0888 - val_accuracy: 0.9814\n",
"Epoch 14/100\n",
"1719/1719 [==============================] - 2s 919us/step - loss: 0.0110 -
accuracy: 0.9963 - val_loss: 0.1080 - val_accuracy: 0.9792\n",
"Epoch 15/100\n",
"1719/1719 [==============================] - 2s 921us/step - loss: 0.0075 -
accuracy: 0.9973 - val_loss: 0.0828 - val_accuracy: 0.9840\n",
"Epoch 16/100\n",
"1719/1719 [==============================] - 2s 945us/step - loss: 0.0039 -
accuracy: 0.9991 - val_loss: 0.0869 - val_accuracy: 0.9848\n",
"Epoch 17/100\n",
"1719/1719 [==============================] - 2s 962us/step - loss: 0.0064 -
accuracy: 0.9982 - val_loss: 0.0997 - val_accuracy: 0.9816\n",
"Epoch 18/100\n",
"1719/1719 [==============================] - 2s 976us/step - loss: 0.0071 -
accuracy: 0.9979 - val_loss: 0.1001 - val_accuracy: 0.9840\n",
"Epoch 19/100\n",
"1719/1719 [==============================] - 2s 1ms/step - loss: 0.0086 -
accuracy: 0.9972 - val_loss: 0.1239 - val_accuracy: 0.9796\n",
"Epoch 20/100\n",
"1719/1719 [==============================] - 2s 1ms/step - loss: 0.0095 -
accuracy: 0.9973 - val_loss: 0.1107 - val_accuracy: 0.9808\n",
"Epoch 21/100\n",
"1719/1719 [==============================] - 2s 1ms/step - loss: 0.0055 -
accuracy: 0.9981 - val_loss: 0.0891 - val_accuracy: 0.9840\n",
"Epoch 22/100\n",
"1719/1719 [==============================] - 2s 967us/step - loss: 0.0041 -
accuracy: 0.9988 - val_loss: 0.0893 - val_accuracy: 0.9844\n",
"Epoch 23/100\n",
"1719/1719 [==============================] - 2s 963us/step - loss: 6.1009e-
04 - accuracy: 0.9999 - val_loss: 0.0899 - val_accuracy: 0.9848\n",
"Epoch 24/100\n",
"1719/1719 [==============================] - 2s 972us/step - loss: 8.4212e-
05 - accuracy: 1.0000 - val_loss: 0.0894 - val_accuracy: 0.9862\n",
"Epoch 25/100\n",
"1719/1719 [==============================] - 2s 1ms/step - loss: 6.0306e-05
- accuracy: 1.0000 - val_loss: 0.0899 - val_accuracy: 0.9858\n",
"Epoch 26/100\n",
"1719/1719 [==============================] - 2s 1ms/step - loss: 4.9564e-05
- accuracy: 1.0000 - val_loss: 0.0903 - val_accuracy: 0.9860\n",
"Epoch 27/100\n",
"1719/1719 [==============================] - 2s 1ms/step - loss: 4.3609e-05
- accuracy: 1.0000 - val_loss: 0.0906 - val_accuracy: 0.9862\n",
"Epoch 28/100\n",
"1719/1719 [==============================] - 2s 973us/step - loss: 4.2216e-
05 - accuracy: 1.0000 - val_loss: 0.0911 - val_accuracy: 0.9862\n"
]
}
],
"source": [
"early_stopping_cb = keras.callbacks.EarlyStopping(patience=20)\n",
"checkpoint_cb = keras.callbacks.ModelCheckpoint(\"my_mnist_model.h5\",
save_best_only=True)\n",
"tensorboard_cb = keras.callbacks.TensorBoard(run_logdir)\n",
"\n",
"history = model.fit(X_train, y_train, epochs=100,\n",
" validation_data=(X_valid, y_valid),\n",
" callbacks=[checkpoint_cb, early_stopping_cb,
tensorboard_cb])"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"313/313 [==============================] - 0s 701us/step - loss: 0.0804 -
accuracy: 0.9806\n"
]
},
{
"data": {
"text/plain": [
"[0.08043695986270905, 0.9805999994277954]"
]
},
"execution_count": 127,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = keras.models.load_model(\"my_mnist_model.h5\") # rollback to best
model\n",
"model.evaluate(X_test, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We got over 98% accuracy. Finally, let's look at the learning curves using
TensorBoard:"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <iframe id=\"tensorboard-frame-27a48e88c728a23e\" width=\"100%\"
height=\"800\" frameborder=\"0\">\n",
" </iframe>\n",
" <script>\n",
" (function() {\n",
" const frame = document.getElementById(\"tensorboard-frame-
27a48e88c728a23e\");\n",
" const url = new URL(\"/\", window.location);\n",
" const port = 6006;\n",
" if (port) {\n",
" url.port = port;\n",
" }\n",
" frame.src = url;\n",
" })();\n",
" </script>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%tensorboard --logdir=./my_mnist_logs --port=6006"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.10"
},
"nav_menu": {
"height": "264px",
"width": "369px"
},
"toc": {
"navigate_menu": true,
"number_sections": true,
"sideBar": true,
"threshold": 6,
"toc_cell": false,
"toc_section_display": "block",
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}