{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"$$\n",
"\\newcommand{\\mat}[1]{\\boldsymbol {#1}}\n",
"\\newcommand{\\mattr}[1]{\\boldsymbol {#1}^\\top}\n",
"\\newcommand{\\matinv}[1]{\\boldsymbol {#1}^{-1}}\n",
"\\newcommand{\\vec}[1]{\\boldsymbol {#1}}\n",
"\\newcommand{\\vectr}[1]{\\boldsymbol {#1}^\\top}\n",
"\\newcommand{\\rvar}[1]{\\mathrm {#1}}\n",
"\\newcommand{\\rvec}[1]{\\boldsymbol{\\mathrm{#1}}}\n",
"\\newcommand{\\diag}{\\mathop{\\mathrm {diag}}}\n",
"\\newcommand{\\set}[1]{\\mathbb {#1}}\n",
"\\newcommand{\\cset}[1]{\\mathcal{#1}}\n",
"\\newcommand{\\norm}[1]{\\left\\lVert#1\\right\\rVert}\n",
"\\newcommand{\\pderiv}[2]{\\frac{\\partial #1}{\\partial #2}}\n",
"\\newcommand{\\bb}[1]{\\boldsymbol{#1}}\n",
"\\newcommand{\\E}[2][]{\\mathbb{E}_{#1}\\left[#2\\right]}\n",
"\\newcommand{\\given}[]{~\\middle\\vert~}\n",
"$$\n",
"\n",
"# CS236605: Deep Learning\n",
"# Tutorial 7: Deep Reinforcement Learning"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Introduction\n",
"\n",
"In this tutorial, we will cover:\n",
"\n",
"- The reinforcement learning setting\n",
"- OpenAI gym\n",
"- Deep $q$-learning"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"running on: cpu\n"
]
}
],
"source": [
"# Setup\n",
"%matplotlib inline\n",
"import os\n",
"import sys\n",
"import math\n",
"import time\n",
"import torch\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.rcParams['font.size'] = 20\n",
"data_dir = os.path.expanduser('~/.pytorch-datasets')\n",
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
"print(f'running on: {device}')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Theory Reminders: The RL setting"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Reinforcement learning is a general framework of a learning setting which includes:\n",
"- An agent: something which interacts, or performs actions on an **environment** on our behalf,\n",
" according to some deterministic or stochcastic policy.\n",
"- Actions: Things that the agent can do.\n",
"- An environment: Everything outside of the agent's control. The agent can (partially) observe it's state,\n",
" and it periodically gets rewards from the environment.\n",
"- Observations: Things about the state of the environment which the agent can periodically observe.\n",
"- Reward: A scalar value which the agent receives from the environment after (some) actions."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
" \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Example**: Playing video games\n",
"- Agent: A human or AI player that can perform actions in the game. \n",
"- Actions: what can be done by the player (e.g. move, fire, use, etc.).\n",
"- Environment: The internal state of the game, and anything that influences it, e.g. other players. Potentially everything in the universe.\n",
"- Observations: What the player sees, e.g. game screen, score.\n",
"- Reward: Total accumulated score."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"So far we have seen two types of learning paradigms:\n",
"- Supervised, in which we learn a mapping based on labelled samples;\n",
"- Unsupervised, in which we learn the latent structure of our data."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Reinforcement learning is a different paradigm which doesn't cleanly map into either supervised or unsupervised.\n",
"\n",
"- On one hand, there are no predefined labels.\n",
"- However, instead we have a **reward system**, which guides the learning process through.\n",
"- By observing rewards (which can be positive, negative or neutral) we expect our agent to learn what actions (and which states) lead to positive rewards.\n",
"- In essence, we **create our own labels** based on the experiences of the agent."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"The RL setting presents some unique challenges."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- Non i.i.d observations\n",
" - since they depend on the agent\n",
" - we might only observe only non-useful information\n",
"- Exploration vs. exploitation trade-off\n",
" - discovering new strategies may be at the cost of short term rewards loss\n",
"- Delayed reward: can even be one single reward at the end\n",
" - need to discover causal relations between actions and rewards despite the delays"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Markov processes"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"A **Markov process** (MP; aka Markov chain), is a system with a finite number of **states**, and time-invariante **transition probabilities** between them.\n",
"- **Markov property**: transition probabilities to next state depend only on current state.\n",
"- At each time step $t$, the next state $S_{t+1}$ is sampled based on the current state $S_{t}$.\n",
"- Fully described by states $\\cset{S}=\\{s_i\\}_{i=1}^{N}$ and transition matrix\n",
" $$P_{i,j}=P(s_i,s_j)=\\Pr(S_{t+1}=s_j|S_{t}=s_i).$$\n",
"- Some states, $\\cset{S}_T\\subset\\cset{S}$, may be terminal, i.e.\n",
" $\\forall s\\in\\cset{S}_T, s'\\in\\cset{S}:~P(s,s')=0$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"A **Markov reward process** (MRP) is an MP where in addition we have,\n",
"- Immediate reward for transition from state $s_i$ to state $s_j$: $R_{i,j} = R(s_i,s_j)$.\n",
"- Discount factor $\\gamma\\in[0,1]$ for future rewards."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Total discounted reward (aka gain) from time $t$:\n",
"$$\n",
"G_t = R_{t+1}+\\gamma R_{t+2} + \\dots = \\sum_{k=0}^{\\infty} \\gamma^k R_{t+1+k}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The **value** of a state $s$ it's it's expected future return:\n",
"$$\n",
"v(s) = \\E{G_t|S_t = s}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"A **Markov desicion process** (MDP) is an MRP where in addition,\n",
"- We have a finite set of **actions** that can be performed by our agent at each state: $\\cset{A}=\\{a_k\\}_{k=1}^{K}$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- The transition probabilities are now action-dependent:\n",
" $$P_{i,j,k} = P_{a_k}(s_i,s_j) = \\Pr(S_{t+1}=s_j|S_t=s_i,A_t=a_k).$$\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- The immediate reward is now also action-dependent. We will also ignore the dependence on the next state:\n",
"$$\n",
"R_{t+1} = R(S_t,A_t).\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We define the **policy** of an agent as the conditional distribution,\n",
"$$\n",
"\\pi(a|s) = \\Pr(A_t=a\\vert S_t=s).\n",
"$$\n",
"This defines the actions the agent is likely to take at state $s$. Assumed to be time invariant."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The **state-value function** of an MDP is now policy-dependent:\n",
"\n",
"\\begin{align}\n",
"v_{\\pi}(s) = \\E{G_t|S_t = s,\\pi} \n",
"= \\E{\\sum_{t=0}^{\\infty} \\gamma^t R_{t+1}\\given S_0=s, \\pi} \n",
"= \\E{R_1 +\\gamma v_\\pi(S_1) \\given S_0=s, \\pi}.\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Notice:\n",
"1. The state value is the *expected immediate return* plus the *expected discounted value of the next state*.\n",
"2. The expectation is over the selected action (under the policy distribution) and the next state due to this action."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Writing the expectation explicitly for the state-value function, we get:\n",
"\n",
"$$\n",
"v_{\\pi}(s) =\n",
"\\sum_{a\\in\\cset{A}}\\pi(a|s)R(s,a) +\n",
"\\gamma \\sum_{a\\in\\cset{A}} \\sum_{s'\\in\\cset{S}} \\pi(a|s) P_{a}(s,s') v_{\\pi}(s').\n",
"$$\n",
"\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Example MDP with computed state values (not optimal)\n",
"\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Value of the right study state:\n",
"$$\n",
"0.5\\cdot(1+0.2\\cdot -1.3 + 0.4 \\cdot 2.7 + 0.4\\cdot 7.4) + 0.5\\cdot (10+0) = 7.4\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We also define an **action-value function** which is the expected return of a an agent starting at state $s$ and performing action $a$:\n",
"\n",
"\\begin{align}\n",
"q_{\\pi}(s,a) &= \\E{G_t|S_t = s,A_t=a,\\pi} \\\\\n",
"&= \\E{\\sum_{t=0}^{\\infty} \\gamma^t R_{t+1}\\given S_0=s, A_0=a, \\pi} \\\\\n",
"&= \\E{R_1 + \\gamma q_{\\pi}(S_1,A_1) \\given S_0=s, A_0=a, \\pi}.\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Similarly to before, we can write the expectation explicitly for the action-value function:\n",
"\n",
"$$\n",
"q_{\\pi}(s,a) =\n",
"R(s,a) +\n",
"\\gamma \\sum_{s'\\in\\cset{S}} P_{a}(s,s') \\sum_{a'\\in\\cset{A}} \\pi(a'|s') q_{\\pi}(s',a').\n",
"$$\n",
"\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Notice that if instead of taking the expectation over actions we take the action with the maximal value,\n",
"we'll get a better action-value for our current state.\n",
"\n",
"Therefore, any **optimal** action-value function $q^\\ast$ must satisfy\n",
"\n",
"$$\n",
"q^\\ast(s,a) =\n",
"R(s,a) +\n",
"\\gamma \\sum_{s'\\in\\cset{S}} P_{a}(s,s') \\max_{a'\\in\\cset{A}} q^\\ast(s',a'),\n",
"$$\n",
"which is known as the **Bellman optimiality equation**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- For any MDP, there is always at least one **deterministic optimal policy**.\n",
"- If we somehow know the optimal action value function, $q^\\ast(s,a)$, we can get an optimal policy:\n",
"\n",
"$$\n",
"\\pi^\\ast(a|s) =\n",
"\\begin{cases}\n",
"1, & a = \\arg\\max_{a'\\in\\cset{A}} q^\\ast(s,a') \\\\\n",
"0, & \\text{else}\n",
"\\end{cases}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- In the RL setting, we generally assume an MDP-based environment, however we **do not** assume that $P$ and $R$ are known.\n",
"- Therefore, the challenge is to learn both the action value function (or the policy directly)\n",
" while simultaneously also learning the underlying environment dynamics (\"rules of the game\")."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Experiences and Episodes"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"These are two important RL terms which are commonly used in the context of\n",
"gathering data from and training RL models on this data."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- An **experience** is a tuple $(S_t,A_t,R_{t+1},S_{t+1})$. It represents what happened to an agent due to his action at time $t$.\n",
"\n",
"- An **episode** is a sequence of experiences\n",
" $$\n",
" \\left\\{ (S_0,A_0,R_1), (S_1,A_1,R_2), \\dots \\right\\}\n",
" $$\n",
" which represents one entire \"game\" for the agent.\n",
" \n",
"\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## OpenAI Gym"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" \n",
"\n",
"From the official [site](https://gym.openai.com):\n",
"\n",
" Gym is a toolkit for developing and comparing reinforcement\n",
" learning algorithms. \n",
" It supports teaching agents everything from walking to playing games\n",
" like Pong or Pinball."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"In RL terms, `gym` will provide us an **environment** which comes with states,\n",
"possible actions and rewards.\n",
"We will implement our **agent** to work with these environments."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We'll see a quick example and then explain what's going on and how to use `gym`."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Let's play the classic Atari game **Space Invaders**, using a randomly-playing agent.\n",
"\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Played 874 steps. Total reward: 235.0\n"
]
}
],
"source": [
"import gym\n",
"from gym.wrappers import Monitor\n",
"\n",
"# Create a new SpaceInvaders environment\n",
"# Wrap it in a Monitor so that we record video\n",
"with Monitor(gym.make('SpaceInvaders-v0'), \"out\", force=True) as env:\n",
" \n",
" # Reset the env to start a new episode\n",
" env.reset()\n",
" episode_done = False\n",
" total_reward = 0\n",
" total_steps = 0\n",
" \n",
" # This is our agent code. It will just play randomly.\n",
" # As long as the episode is not done (not Game Over), we:\n",
" while not episode_done:\n",
" # 1. Choose a random valid action to do\n",
" action = env.action_space.sample()\n",
" \n",
" # 2. Do the random action and get feedback from the environment\n",
" obs, reward, episode_done, extra_info = env.step(action)\n",
" \n",
" total_reward += reward\n",
" total_steps += 1\n",
"\n",
"print(f'Played {total_steps} steps. Total reward: {total_reward}')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"How do we see what happened?\n",
"\n",
"We have a video recording of the last episode generated by our `Monitor`."
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import IPython.display\n",
"\n",
"# A helper function that shows the last video from a Monitor env wrapper\n",
"def show_last_video(monitor_env, width='auto', height='auto'):\n",
" video_path = monitor_env.videos[-1][0]\n",
" video_path = os.path.relpath(video_path, start=os.path.curdir)\n",
" \n",
" raw_html = f' '\n",
" return IPython.display.HTML(data=raw_html)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Our random agent in action:\n"
]
},
{
"data": {
"text/html": [
" "
],
"text/plain": [
""
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print('Our random agent in action:')\n",
"show_last_video(env, width=400)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"`gym` offeres many other available environments: \n",
" \n",
" \n",
" And you can implement your own environments to represent any custom RL task."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Anatomy of an `Environment`"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Let's dig in a bit deeper to see what we're working with when using `gym`'s `Environment`s."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Usually, the `Environment` you use is actually multiple environments, each wrapping another."
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"env = gym.make('SpaceInvaders-v0')\n",
"env?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Observations"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"# Starts a new episode, returning an initial observation\n",
"obs = env.reset()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"What are we observing exactly?"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/plain": [
"(210, 160, 3)"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(type(obs))\n",
"obs.shape"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def show_observation(obs, size=6, cmap=None):\n",
" f, ax = plt.subplots(1,1,figsize=(size,size))\n",
" ax.imshow(obs, cmap=cmap)\n",
" ax.axis('off')\n",
"\n",
"show_observation(obs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"What is the space of possible observations?"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Box(210, 160, 3)"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"env.observation_space"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"`Box` is a `Space` which represents an n-dimentinoal Tensor with values in range [low, high]."
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 255)"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(env.observation_space.low.reshape(-1)[0],\n",
"env.observation_space.high.reshape(-1)[0])"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATgAAAF1CAYAAAB8ufbYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnfdbzm/4/x8hK8omI6LMrCQhiZK9NxnZIxnZJMnILoTIJntmhGRmZEtWocgmyozS94dnf8D7cxzf7/E9Dp/7/OXdO3f3/Xpdr+s6r+c4z+s2ysrKwhCGMIQh/sXI8f/7AgxhCEMY4v9VGBKcIQxhiH82DAnOEIYwxD8bhgRnCEMY4p8NQ4IzhCEM8c+GIcEZwhCG+GfDkOAMYQhD/LNhSHCGMIQh/tkwJDhDGMIQ/2wYEpwhDGGIfzYMCc4QhjDEPxuGBGcIQxjinw1DgjOEIQzxz0au/98X8H87fuU6kgWQ99RdJm/2BWBv9xs8OXwRgBqHLVl/5SUAV+/P4IhtdwBSAroBsGnXe47vvAFA6NYvHGy9BYAGwcs4Xj4JgHaW1mRltAJg+htLAIJq3qXJ2hQA/nbvTZVfTwGoalGQeJNbAJStcJH6bbKvM/45APbzlrLx91wAitu8I7nScAAi37dhcFpxACbHn+eJ6wYA+i67C8CyuGa0Cb0HQJxLTwpNHwrAt/CPFJi0AoASW35TqK07ALe66z5rLprFyJUFAHD4uYF7hR/p2nbUZMTYkgAU3fKax7f3AdC68msARs++xt6psRqjWoGUclwCQPT5ldQv1hmA27UncjKhNQDJM/S+Y6feoLHDJgCm7jeiR7uJABxLasQPqwAAOlsX5Wib3QDMT/MB4H05c/ZvegbA8vGtWFQxA4A9zwJI8T0EgEnPSty54wBAt6b6vLhTWxherRMAI676ULZkXgAadazPtE1lALgc/gAA014J2M49BcCjHmc4MO4EAGPuhlMlS2PoUj2G+IKHAehqMlCfcagonbb2ByBieG1Kj0rVPXfeirVrEQD6NMjJ/i+9AKhoPx2AzzOfMarxeP17nhaYRZcCIG+wG012nAdg7fbrjDqn6/RxrqB7vneWhj91bTMGnOZsrikA9A68wayWgwGwD3LiZ/ulAHiP/wOAUZG3zN0wDgAvo64EHtR6SPTYyqgRWg+vGtXl+O6dAGT00bht7x9F1wA9h6eVqjJ/+B5dW8+WpC7eBsAw300sajVb41Jbcys2bTBTnTW30i+ksmKt7tuS2wyOXQ9A0aQ5dB8eCcDw6zEANDA9wpE+PwFwNB7K9AdNATC2HU6v+8sACGg7mYfX7wDwy6awEf8xjP6145JCx13LAihpPw2HgqMA8GxmRbvsZBH8ogZfs/TwTgyeQ552zvo5XYvNplUpGt3XA023M2JA/S4AFGp1nPTPGuCHpuWYtFsL/MsINwCOvfUgyKIaAOVa1KPE79IABM5dymijlgAEdZ1O35BCABwv7Q1Afb9IcjX7BECe8PV03aXEMnDLGFKW6LULH/UlqJgm0YEvzQGYfieWzRdLALB6yU5aTT8IgHH+0jRc8waAo12cmdciGYDWZY4A4N66AXufJGhc3kzhj4MSwBqbVAo/mK+f14Yxt/UT3d+UfgBUuzOPhLFKTm1/FGfMqxEAHBrzDtMpIQAkjYEiDrrOcpbaRI4UcOBdRSWkGTmf8qtYBACZlaIYEHpJ47miP3POa7waNVTiePl7FwUOaDHtDN3N3hgtll0NoxmXrk3nekJe+pdYo/uevkPPya4qJa+baIwem9G1zi8A1h9LoqJ7YwCutVDSL/bkJtdqKakH5GjOhS6617dPqnJnlT670R8XglJnABC25wUAv/e4sSBUCefw9jB+tBoNQJ/ta7k6XfNs/h4zSm6rD8D9OfqMgbHBnOmvhBNkfIFLxZRkJi6IJCp4l57l7wUEVPkLQNeNSqzhv8057KJxO9RkPbbB2wHwKnKdwRk9AMgRsY0B0ZkA/K2SDsDpUl9xujoWgN4N19Hl5lUAcsXWpvxmJY4P4yrSuOZ+AFrsVoKzsX1KpVX5AMjdthrb3LSOkk970mDZZABudJnA3HLaVJYd1Xy7Ws0Cq70WAJy4vIFcgVpHf5qP5415OwDaz9vJoEICBzkvamO4WK4JNcu0AGDt2kLENKoIQJFKY1maJxiAjy8zWdxLACLxysf/vQnu5cKOWQB2CYXYOqsjAEYd3CiYow4AHR+sIfcPTdjn1pks+dgegNptNAnLfoHvT7YC4DajDX8ufgHAc8kqpv14DMBC7wSsGrgCkOD7GwALl8/kOWMMwIkdMUy+XRaA1rnKEjRM72dlFEKNGCEcn45amPGPFnIslybbzEdNqPlISeTGihSKvtHO+mnpFJKXngPgxZkgAJwTJ1I3Rsnk77Y9jCsuJPNx4EvODtLi8wwdxM1pSmyLkpSocx3sTcH5uv/fG+9wPOEyAOdOLmbZgZkAxH4bgZffBQA80vXvndYsIu/grvq7L1XxH34fgMpDZjFo33cAGledxjFfLdpkx6MA2FSIYVGCNoaoZ768Wm4KQOnWD8jxSkhq44MabC+oRBzm9hUAk0ElGdrOGgC7C6aUm6MN4V2rydicyg/Aa6uavB6l97tlrOQ8o9ZTwuacBWBf4wrkWqVkduLba6x/aWxvmQsB/Sw0jWeDNZ6DihcnvIQ2j4W3E4juJLSzu3xHRn7QptMAIY5DGQVxqx4HwPlim9j/fCAAKT8b4u3lAUCa02h8jRcDcO2INrAL3z2YVVrPtFlKErEXP+g5DSnIjBSNd88284j/sAqAnMeUDCvXiGbjM6HgjafKcGq0EP/zQSEUu/UKgAnRIxjiPAyAkaOlPM078wLXU0pqj8rXZXcVoeTWNVYSmLevrt9lKDM/NwDArYDu88eaL4S8GQJAhpcnz6iL/mcC+Z9pnfTfH8nAfloDhVrqtWOG3MPjlTaqAcunMGODnonTlf6kntHYxa1byt04Ja1P9cRGAmp/BiczAPL0GE71BK0pR2cbrtZQUnu73BPz0WI3ORcF/OcEZ9DgDGEIQ/yz8c8huI4vb2cBVAwoxocfgu+fa9XE9kQeAD60bYD78pEApE8ZwpeR5QD4FaPdb6nXFjyqjgGg2siTbH+mnTq3bR/O3b0OQMy+jwSemQpAv5ffALi58A0Tp9gDUGn8dN7ZWQGw39yDtitEbb69v4cx2tUfLv8IwODZ6TzuJq0p3bovfu+nAVD12ggqvRwIwOTX+xi4ezkAWW/9AWi8qCd7C0ursPAxZ1ZVXUf1pRZ0Xqa/q7/lHPUQYixY8gAAQ8pWw8P+OAA77yVz4qSoZJ/9Q3n8W9SvyYB0tuazBcC2+0YA6liFYGsq6lTh215sB7fVvyfHYv5R1O+UxwP+ThZN7xrQEwDfQhmcytB4V7lRFs8Gol2L9o/i4JL3AFzyiSdjmN67ZM9KADz+epP+/qIqyUk5KLBPFPX94zXcvCXdzD76JpMGSy/tcrghAEcXrsDhupDhZ6fZfPgupOztZk7frM0ArGzeSPd5pQDeRfW72lOiaDZVyCKn41WOt1sIwHhzSzYkZyNeT6GeffMXYxGocTV+4M7MG0LgS8MKc32+aO6rBcfYuVqoxOeYKOOI101510loqHuuXziOEUILeebCip3NAPi1KQTr07qnAyXCADjkO5luPYWAAm5NI6ygOQAzq3/EPTIQgM0P4xnyqLfG9q8QYMiocjTy2QuAp7UXH7dq/n7zak/cOempeYIeUy6f0Gr9SLGc2u9P0Xl/bQA2/FpEt5wnAXgx8DRHd0srm5R7D9WbCfHFPNS4ZJQOokhr3VONiuNZOSkKgMstzBhxQBS8Tu8hPLglSly4l1jApufvmDhGssLsvZ3582UQAGErxhOfV+vIaPwhitwQ21p04u7/XooaGDcmCyBns828ctQijb0/le9TpMVUulgN+waiDH5BPkxrpQVwu5Em1bFnUwg+IuOg7ZPnZL2vDMD9H2WpNFUC8a3fwezdpd+zXXTIpPkFIm+uBOBCyldGJ0gUL9Uygd7JekgNh0fRZZzg/M4t0iGapG8mv43o7KFyyXwcFA/AjNeVWZy4CACPFS/5UUl+kNsBJZO8j26x+dkxACZWLUHLkCoA/Axw4vE0UcZFiy8SFSMtKWKjElzNTsMp906mx8a0EDa8l9nhFJLGrY/zAHgQ70f18NUALDVTYnWPzGJMmoyMCzem0+inqEiOFH9KtJUo7uUXxNPCopKJCzSJvRcXZcnwggCMy12MW+miuQdzDMI3p5LgoFJ7MZquydswQmL0VY/6JP5tonudUoiQv9Ib79buTIs6Wgxxw+ZzfrK00+D75QHo8s4bk5OTANg07iYjlmq8HU69pnAJLdRvu5S81o1/SYECus8eo45j90p0dfr34axfp3F+HfGTWBvRx/PBMgKi4vzwvSF9dFHBe2S21Ga1+GA62+3OAXD0W1FGBmgzsu+oDazzqghilki3euWziasr9RwCT+1nwDtpUDWDffg+Wgt8/HONxcUeO+huKq00zHwNeVNkImQ592FARelmlYrZ8XW0qKZNT127e8fDFF+vZ2bivxouZX9GIwfGhWmO5yzoSmFT6Xv1nwsEPAquRv2CSpyPjRaRZC0qPbrKXlJj9PwCmlkyq67kj5R20ljf3KzKqve6tnxe8+h4X7R6UsnBmP4Vde+XbwfezbQuy9/QRtPH8Rxzs2WcM9VOU/6C5sKdax9YNUk65lRvC9b213zo3KuigaIawhCGMMQ/h+BqPb2YBWD6qCJJPyUwX6lZF9etsu8n+Nuzcc5aAJrdnMP1bxLA72eJDq2qYcmhS3II39W3IvOYNgufd98Z2Us0sGff+lgVFcRv1ly05rBnG3qWV2nB/YTDpHWXIWE2NB8Tcoq6Fq66hblXRCtbv9COnBwxCL/CQpFvVjRhZ0Mhkql77tApQW7vpXAn+nR7CMDWy0KabxoeYesP0eePbVZTu7Bc1OpH2tPMQhQ0555V5LL0A6CxpWhUypZWfFojCv5621DKuokyOv7chluxaAA8vXtzJttQ6VtI11O2+WCWVRdKCjJezqJaokmvLnZg8tvTAHT3caeHmUTtoA0az3i/rVwbJDS7qVFT6njJ7TxqcpjlKaIoG5/sor6T3NMJefXvQw5/ZexGmSWbep9lzUQZA6POLuFxHl3Hwrt5SbeSETGmx2wAzg2tS1AOUaOby6qyb64NAN7G06k+6QwAJ/KJRn8JeMWPXypxWVrInV/91gHw9X4yNvP1GVuyHlCpj8ycTHvV+CTPs+ZwPRlKt5L34GgtFzmgxXR+3HwLQJ8nual4Wdc0c5lQVodH8bQdrnEN2t6bqJFCmqHFf/NjsOZcrVV5edhfxkFzL11baDs7Wh+VaTM+vhcNUmUWnA6yo4WxMwAPeroxIeQcAIFhN3XtxjsIH6nnYXTBnme3hLR6vM6NSQU5+wvqdiUlQmj8eR1JOovPpXJvlOZZ7wvmXHkhKprZdSP2NWXUDC9dkBv7f2i8zstYcu2USbepiQBUrHeG1VXkLn++fYqD67QWl0/pzjYHsQ3vKZpDAWU38aiB6PX40Yt5M3ggAFu7X8JjpSh2jecfuR8gJJz1Ntf/XoraeuqwLIDeR94Q8lC2uUXpTJq/mABA+OPd7LaU41igwwiK7VR9WcM7SgSW9tFcD9GkiDr7nP5V9WBq9l7E/IqieTP9N2DnZwdARDNPAC4/dGBAmFyeVittcHCT3jHgwE+uvqwFQMdz3rTtrUXysovo7v0OkxlhJIo30yoP9+6K1nRt6M/k81o4wxenkXO1aFkhEy2sbWPbsHa1EtmqCWYE+CmB+dZuS5xpDQDCMooysLiuM+mHFvfDF3PxbiCKdtWpKc3XOANwdPQhIlaIjtb0zc2I7IncrqUWwvqnL3n8UUmmmS8cKdcBgMIbR/ClvH7/dudoloWJojby0H1a10qndnsliEW/srjhKg1yxMJw0mKVlK1yXaTWAyW2N+HScD78rE+D/qKEbn1usdtaNWUhjgnsbVAPgOqTV9C81zkAcvwVjVqaOozaoRrP6NCfLPHT843ONx7XG9LSfkZqs6tcfQMNe2uDa/jrJqMeaiNqMTuQJwNV7nDTuQNd2qpk5tYabTi1bj9h6TtR5thjaym3UZRqd4velO0uh/eOnQ1GTtINJwcpqR1fEMGQ1UocuS2X8/qMqGT9R78onjO7Rq2EJRuaqd6yaPMFAJTw/MvTj7r22e/86dVe71vsXTylAjSGtt7rmJImDe1ubr32Rbd9TNghqWB+jkokn9KcW2p0mguJ2lz25w3mwv4KAGww+wyAzZixbLgiHfNuhdnUbpITgGujLDiZqPKR3i128L25qG2tWXJDI0PXUqq66knj5uXHv53Gs0HR2fj+UpKvF7OJp+M0t4pX1bypu64nLnPnAHCyf25m3pMufHhkZawe6ZrPeh5hzm7JN4P9/3uZiIGiGsIQhvhn45/rZMj6q4LCVgVbUTFK2d+qSBqllwoZVCrny6tpKjBs/qkSKSuF1h7vkCt2MdaGr6lCtXNL7mLLSMF62zPhnOyaXbEd9xmHQO2+kbGC9f7LvzJplRBXlRgnzlaWqfH+2CPONBL62ryjCsudVLf10Vluofu42vRvot20+u6bBM6TsbDrUBHK5RT6St78ml3JciJvxQgNDrSuweJIoc4/Q79jslei8MGRJbDMJ9Q57UNXAspJ3C0lY40dyzvQrL/E9ODCf9gwrSoA3WqsY9UN0bJRj7+xpYRoh5uVasPi0jeypa7E4ejc8xiYR9c/qG03QiIklrf89Bcv59sAlPFXrdaJV79Zvk6IMrrlOEwjNUaTOlZgjJekgtjWRflWUWbH4SezAUjs8ILggUI+HbZsJiNVdOdyywBWb1AHx3GH2hx95gVAnjTRl9KHDnP7m6htC/vJnO5SE4Cjs54x0UbjYlNdSOBO6GF+d84udC43lTs7NEeO2lxl3jXR+M7FVnEiVMjmYIKWy8RZFwjrLJSY5FaduZXVQXD29Gw6tncGIHDjQibWVUH19ElCXBf27MPdVHTv2ZQsZrqIVZjlaUX4RnU1rF21gz915RIvnycjI67QEZw2SrAP/ZbFnStClxWcrXGsq/li57uTj32E1lrFyfT44BfJqHQJ+QtezKGDhwpyA3Z24+Z9GRLFr/wiaY0Akf1cmRpj69bBqqPc3tTTM1nTT0yhfe9WRPppIn1Ky8IxVCZX71hRarMvrnRM0Pz+fGE8e/Zojcw4t5DjZprLdwtPZZiF1lf4SiE/p1VP6V5eDKSi7TKmesnUuXs6iR11wgFILjiWlDZa2/+T+OcoajVv8yyATh+m4rFU2o/feE8cfkozS2zakpTropUNMzy5n50AfpgIFi8r05KZnoLerl86Ur+G6Bw/O3EwUiUlJVKGsLOedLORW0Rx5h/az+xhSkK/esyj7lQthuTHT/j1U1pD8aVFKHJHhZK+XnJWL/VazqriKgeoWLkqYQ5yoZ7tLMkIGzlWDu5LcL+kRTLrrVrAbrVazYPHWggHi/eipZMKkk9VMaJNUSX2a1uf8SXPNQDyRYoyBketZFm6FkLtfNPwOint4+3GJDx95GSVsTmFez213Iz5IWd1XcODxDzRpN9apDkJl7Xg7vkFYmoZCoD1LSuufcrW7CaqcLdXvkzeOGth+WQe4WdlLayWN36SfkuTvnSpXjwKdQIgc4M0LGfz/az5o89Y7XGaa66apyYvWtLsshakXXwUDftIuxuyWwXJk+1K4JEl+nynXRwfLZVk1i98yl0nUcmPlkrCuSpfJKC6ZIyk2+MZnq7X7nK4QJ0h+ryTGQm8LayC1Z8n9b6n3OwotlLJPqKIM/sLaSGXsjlB6Bb9/pbHfDY9VxvV+vZ6r4JPTBmXqjny/ttN1hyUEx9l1pQOs7S5rOnUhgoTpGk+WyRKPKqXA+kfNT5HuidSaJNKRioc/sP7fCq/KBqWD8tCShjtfJUsR9iEMmmaEuCyuGHM85VzHzW0D4M85Ww/87bn2y51lJj7avP5+rwWaQmij9ts+rNugmSFadjz44yqBrY+O87sbbrXGbcGAOC2zQazzSrUHpfrKYGjJRukfurEiT/SRY/8qkmr57kBaDVSrm5b15UUaaG16rinKx9H6fMCoq/Tcpo2sIS5A7h+XNT969RSBopqCEMYwhD/HILr9vZTFsCu9B8Ut5UAO+tKeWK2S2TvbF6H8fXlPrZNW8KveRKyNw4X6rn3NR6vJxKxC7laceOE6oUsH1rw85bMiawzRxkdoRqgqMWOAKyOHcLziUIIjyLq8OKGKOOOYcOILamd/Hf1y9xvINHbcoo+IzPvVN6MVPFkww+zyZNfNVBxORpgsUcI5uaNPczoPBsAz2faha/eMuVANX32zkqv2D9TNV69i/pxb4J21gNp+/gWI5fR9bYE6IbLj/KtsRBMmzfTyZ+pa2t41AaLmrqn0YkRVK0hRzG1g3bNOgUu87OYKGXvgA+8uy5qN776Eh7fF0p4/3M3w6uKdj3orBq3s6tOYVdX/YsOi3ditUF01tklN19dRbUyn8Vj7ST6v2u4KNXgJV2piXb4nrde4+Cge+rdqT5TLoq6Fd/amWGvhBhLOArBpvdrQ6duKrAtWmALtpVFbc3Lp+BiLtdv4FZRe7tW7+hdWQXCv1osJmLIZgAik5vzt5de+9llDReu65qWFdA9ewSNwuuIkN/HsgFsaCI54n61W1y7LQPjht9W3L01p8p1Em2bntsEx06akyt/DGf3F1GuCq1ieJsmJHotrhPX3ws1d8on2j5/4UKymuvaCn5ypeYbIe1Ltgep21GIcPElP6pckjv88Jwonm2rfoStkEP67dwPTqxQveWwSu641tS93H25B+uW+v2s52IMljln0PuvxvXhpDCurMpu0XOeTfpqSQG5Kufn0DvN5aUmMhDaVLqMp72Q5qN8J0mpJvnjUt76DMylerZhzuk8i1ErVrf9RQGIP/kSzw5qE/z5Lora82YDUPrqPtqXk3u8ft9FBtUQhd7UqrMBwRnCEIYwxD9nMmSMlDUdumUD5QdKRypRdQI+5WRNb9tdjehZQkaF0t3JmSb0tMpdO3m9zuOZOVBop2q6D70d0wA43mY66S7SEZZVPsEGV9Wl9byheq8dbmsofkQi9ctPseT+q1auSQcv8v6n0NX+dnkYlam2lqbh2lviu3riOkoayOf8xvS9qDKLXembMaqtzz75/gVLHVQy0NRMiKzagY3c/Sz9cOihTRSPlS5TukUPmr+TmH7tszFftquOaOxYGStD1rbm+CyJ/hFb7rPjitDQ3O8J1Jwkne7rmMp4TxfqCBolHcXy72J6usosKZVxm3UvpE0WHtWNHX2FytpH2uHdVBqbe5bKJYLjvrHNVOUn63fY45YmxJjW35XnzrrmNRGunHqn8TC/UgGAuKlvsVyrsXhz2539M4QoIhPKEpJ9EECZWZkMOyaklVhZCM9oSBI77slYmJV6hVW1hYg91zbmuolqzTLMZQwdtnDhewmhpLbb89Fx5TkAOmfU5U9vtVdZnitJSn/Vq115Lh206Xpviu3WWOTusJUvpySyP/hQmqv3NBaNY47zyqY6ALmOqcNl6s7hbPVTK97ozlcwfyr21GdZDbpnl6WYvmqD9QgZW3knq+Om441Utl2TlnrpaCoHaunncb8duD1J92L9+i+tB+vveoYJcdW++Ip9PdQCl9zlD+tL6/rt+s4j6qQ0v7c3I9j4QHVzSSf9sv87n5WbpbX1zluBs5Wk03a9Fk1XER6W9WtCxdU6ZeRdhpDoxNWfWPZe7X6RUam0DJAZdC6kMGcby9hZkXMmazI0ts7fdW0/E18zrrLWRantWTgGau0s+vIYs40ys9puOMH60UK58JX/Gv9cghtUWHTi24C7lF4kobTMqJPkea5jY56urEVGluhX4XMrWJtT/ZBPRylhVfv5B+O5KqSMmTSfJ8g1cq5xmxgPifPHS9rx9bcWeHT9bLfpwDeWtSgGQIfaKawvKxiefNCM20NF197OLEByKS2o8mUlilfNF0f33Sr+7exbndn59X5f99xnUuXso4B6XCRout6v6OHs43225iImSpB919lpuFbWYkgfOJ6JC0VjUwfsZOlR/d58pxbbjGp2eFZSzdnEAmNp1E/myuVepljlVBKxHhXA9k3ZZ29Zq/i3W6lUjm9Ugj8cXYdc2adUdN9pjkdRLayZW3Jy4oxofLvCckCru+7nQGNnABJLprIim4o0C87Pm3hR18AVjrT4qCR4amV2neDpGjyaomvocaM2xfJXAGDLhUbc6imHluMxBGc71IM8RGVqWgcS8UBj9cPRie2bRcUmvehB6D6dQ/Zyt65x7pPptCuoQuAvy2ZwzkgLyzTpD2fGS6jfmZJCdRP93t9OG0OfQ/NIbn4FgK2zH9DRVE5f82ovaLhSG8OopBfMd5EJdLyP2uVm5LOhVg2976I76dTrozaxhTam5Coid/Xo9c2UXKz3ONtac6Tf9eJ0+SE5Ys99BzZaisIu7WZF+l/NHavqzwk5oQTlU0c0cf+hWYQN1sbYLnkEWz6q1Skk1ZYet0X/B0RFMy1BiW+SqQpwa3vVYdo7JS9zrzL82CODbvyOUmwdrw1l79ocFDkpCtqjm9ZTqxdPabZKoGLP4b14Ftf9rTnoztnrMmLWX/bAIlqf93aQNg63J7MZOE6ywoQZZXjXSI5qnm8NWN5On9cg12n6t9K8ltj038JAUQ1hCEP8s/HPmQyrH8/OAvC4/5nSiaItD6c1ZPBdlVf0WbqBhXXU8Gw9MRnXK4LJNZ8LhluU6oFbE+10KdVP8Ha2Tnl4UG8ZEbfVqVAsMR3TPmrbKrxDhsWiA914G6pq9LYTZ3J8jXbRlRW2cn6WDIXUvOMZdlJi67N0ZwC+nfrK2VoqBxi9oCPPTVXn5rvXhNPLRXkzVmxjaF7tXmvOaYc0vrSPq21FH0u8OEGX8xL67a+5s/6PaMLlp9uomCGU1OiRhPBnS3dycYOMk/P2xWh+TOfE3cnTiaPOQrH77jekSEcJyG6rRAfytI/F+4QE5qOtBvB2vah5kypJzRMQAAAgAElEQVTWVDwoROEx4DozHUSrnyyXuF1lqRehu7XTX/e0ZXl1/fuDWU4cuSWteMe975RNE626P0tmQcrmNrTupBMt1scV49oqCdIFG5VkZxuNbYcZd2nWXwdM1i0qZOu1KR8ZHV0ACPgzgvNmQl1fylflRTuhiObFVA6R6BzKXn+VISw85U/nMKE5swkWJE5XHWBu/7f8ipaEYH1T5T4hu3LzZI5QW9ARZ/q11NwaazGG6H1iCn9bZZA2WOL9y0l6dgP71+Owq+bWUtPllJ0q9OmS2YRGG0Vjp9Rbwtzsmswbp8QYOpa1YElpSQkj9pejxTT9XbEFr7B7J8prO8SBLsai9Af26wy1pm0zefBDKHCThydPBugzbj6Yxdcw0cTmX7zIzCH0uGW0jBP/Sn0Z7qR1UW/THbrb6FTn5y6fuGQt4+TE479MLpB9PtsH1VVaJXRgU6pQ2eM1r6n3U1LCbVbzorY6FeYVMWHctT4ApC7VuPm32k7BVB0QkXfpBnpE6lkX/+7D8seSYcJCrnN4lbpqXr2t859Nhn+Ooh6urJqr1NOF8S+qB3CgXwvG5xd/D118Ce9SGvj+p+fzu/8sAAZWULGmkVEGodfVA/ihrhPf1kufyFjwnr8DlDDbrz5KfLCoxnRT9aKGGvdgyjYt3mHt/Znrpzq3NUu28GyidLCIkNNsCNYJwG1rKqHmMZrJHJU90bBtI5pdU4K7YjOf4xtUX9Smjws3oqXRlF6mJNQh4zOB4To8Mc21Mxc66Zgeq9jD5EvVtS0ZOYguf7OPup6nyVGz20Uy00SBTr8ohIuLEtH7lC/Mtxel+Hm7MxEj5QbuNpNGmRE0ldMrVKM2JzyW3VZKdmnesawvqcJSj6SnzAlUgeyJ+tI8k869ZHB5kYpT9xfRYIJOQnZc1IL8gaKSUyzm07K35ATjGzqk9M+TPlQfrHncu8Npaljr747X74+pw0C9X8MKhHySvtnlmT6v5dhClPTT3+ULK4n3DD2zsZtfsamvKG/zKBGXSyGXWLdcelabJfs5Ya2kdraIBwNyq0d39fvOFDsiavt2kOh+5vErdApTcXaulyOZ+0K6448UD/YcVyvWzPymFC+txH+tgRKLs+8LTnYV3Vsy8AkPLZQsRrQYh6dxdo9n2RBGD1WbVOdK2ojG50yi/3jR6gM1vsHDzQAcC7zPohDJKYXyT8QiUbLA7a663vRVhbk8Uhv0gWrNeGisZ1330WxGJCmpuV5zYUIejefT3aLz9xqO5cdx3X+PmdbcTtDaGH54I97RkiMc/CZwzFjXNyZW7Vm791sTcVj92K09x7NtrnTY6ru+MMVaxcI/F5XB10jj/GGwNrN2h/Yx+KfkmNQVpvh1kYxxpvUE5g9Xa6LLyqoMHq9NEJ7yX8NAUQ1hCEP8s/HPIbg5N4QyJta9wvwUCc9zt4XTb7QOaKyRoxsteotWLh5jQkC28zS0klDbmyF7yUjUbmP0Kx+HVwihVe8bhUczOa0NtxXlSRX9fvQf7UJjx2zhboxQxrSYiXRuop93DO3F1bkS7wPbjOXEN9HK26dUL+ZzrCSR17STj7tjwowrokGbbCxZt03U6Jj7K4qKfRDfRA3/9ve7UHb7OQC+zOjLjHPa1YqsmsN0sRYCLSqT5Ci61vGNkOhTWy/mZIo6PTvky/BhorxdAh9Qdol26j25T/M4j6hWj7qiycZFGpFYSCgist9EXo6qAEBShAV23YRKTG+/4/wFCd3nTgstmEW8Iq60xvPs8PtMNZVRcWFFeWKzG8wrzF1JaISE/FXrRZPG1rxBt25yu12672LsYiHG0+PnYp4od87k61lyTxHyaXFVyHjnpD70ihOF7R9UgxnFJZa7Z/Um+JwMpZYH5EQXuPoT47Wigw+v9+PhQjnwFdb6E55PCKfh1kW8TBXN3ddTSPR+9fL0ayepwbKELZuC5c46Hbcluqie3/YXuzi2Saj64iUh4+ZvUjH3lVlQfMZ1endQ58GL4Po4zNS5bbGWB+l2QEgqcKg6HZYW+8Wjyhq3qpOMmThdze9bx7gy+4zGsEgfexbp+5ZY9FsI8MSLYOq66tpmWQSxOkxIsuEWK7avE7WPHGrJLidRdsdzqnO8Hlyb5mskc7Ra+5Qq12VU/A3Jx1k7YaJx/tWIGapuiCP2osFmZkVwLC3k12XxXq5+1Fg8TLyCzwXV69XxuIBpe7GQxD8yYfJNOk/B1pJSQn/fwGSo2MO7QbMJnCnmYhwYRnhpIf45A/nP8c8luPJ3NgOw5vIXrlwVVfOum8rxOHH5S8tr0na2ii0DG3SljrP0hV0W0mcKub3Gcb1s/xdzanN5gOD+oc0vsOmnCZfVfAH3Luj9vOqIAuX1MeHFUNGdtf1XM36ptKtqQVWxDpfGtrnRCtabix62tFLCPZ52mIND1da0Ikcp8lSVa+Qfao9lVelgC6NvsLyvTrQY9F2TI0/Bq5QfKl1tTkQBup+VrV+4/n6e3pdrGz+yMcnvlUijfEQ1H/deiP1EJYsyLj4USFVr2IMTO9jeTodDbn03C9dMFS2bPhFlfJ57MmbbRXPndX5JalWNUf5LHal/W/pKmXr7aVZaCy46TVrM26dJWLzVl4/4NXyIzSadbjy/XQBjXJSUl36eygpzaVOeJ3QKi4XHQbx/6r0Wds3J9MMqvzjqYc3h+rpmU5MPbPOVi1jzj8ZlWD0/coaLMr0Z+oUBF9UONj1nScbflt44104J8l7GOwI9lURHBr/EI0qbXK20HvQ010LekfKQrOxFfamjCqRPrn5H7/faJKtVaMq4E5sBqNA0P2/rarzjAtyw2SZncFK6vrug9OaPdLys99jb2JROV0W5epfpT1RNtYN9bTeIpuc0P3OU1Rw647meHW0kq8xoN41e2d/nUedKFonF1Q/ql7cDjTZIu7qyQxtK2pWKTM8ucJ+f6UVbE82zzcmN+ZteGICo5/WJ+JF9KvVWbcQOPq/IMU2JqqnjUUp3VOuUT62O1G4j97Xb/cZk3FPybDVDnzvu6mPW7pVENOx4EboekDPu1mod9Vto3qdVy8/QC2qFrN1HPb7nax6lyBpJSF1SrtHrqjb2yj5tGFJauujNRBc2FtDm+T8JA0U1hCEM8c/GP4fgTtxR0aFrzryYu6ueZslDe3oaqz7uy7EDuBcV/Zh9rQEVjmgHL+ai2rCrd1fhUk4097zlMGZnf5Gpc5UreG0XRetrUZgFhfTerzsKQgdETiR8hXY0y4sdqbhciPDIHifWuAoZ1NjbndHzKgBQ1lPO2p1yv3gcIbNg0DkXnsbMBiAqtiR9Z0ksN6k8mpddhObe3ZdQHuPmSOGFQntX7g2jxjLRk5Uz81LioOquchYxYeVHte/s3iP0Fbr1NebX5LjGVzflYbocrSn1llFihHbt21ELub5J1PTmHt2nX/UPPIoWHXe/t5HKf3Sv5za8JKizhPWEhTdwKiQaX62GKFyVMx6kWItyLTq3hgVdVI931eUPZ7YJwRUYGkDsJh2A8DhSxb8+zmewfyVevvDbRnZ/E3JY4dSYUcmatmnHvrDKTUK+60mZRfmTx/Ckn1DU3Z+H2bFD9+01oQYuIXpWkYPU6nRu61fy9lLBa3DMJpyeiKLR5RpRE0S7HEOXEL9b19x7qYpOC1xahfMhIf/W89viGCPX0ulmD26sy3awZwWzro1Q0hc7oda4UcO42kuSQZrdZDJK67Pdtiyg6kvVGzoUbMehbZINhn2TUfWSyZi/E4V99tedcCvds2XsJuzdZwNQYlU8p2Jk1CT2TgTgge1bDrkL7foF1abDDs2FTfWiKF1WqNu1WwLvTmptNComM+xvt5N0XadKgynGGQzyEKLaWyEHHgVUMJ5zYQw370r26DJKrVpGebK4UShb2ijUj0YNhAh9Hz2k7Avdn1eTL6RU1eESV/to7p1vUpzbA4SuHU+7Y/tECHSChzdlC6pVMPjsG/JN03NDxvd/in8uwT28JxhbvktbhrnIxbnceCymTcTxfdLtcdsruOxzogo+2V/aYRWjMoMGwQspPFv/3qy6NWc2yIXaefY75Rpn99n9/UiYt6hGxCOVMowPK0fXcQN1EYOT6OUpenWjXmeKbZfLWCZ0DPUryyFyMFdSWOD9kdN+KjlYMmE4n72yz+zPHMC6fHKbRpvFEVtQRZgRRqKOhxMnEZggqF/WwplK6apor2kVzfCKKk4eMtAFDz9phbuP6YDGlELrqOqriR61owFnO6gHdKlvV6pkf5mJ2SlXVt/QZx8Zoe/gTJ9aiR6NlJT7F3HgWCtpV+b+j7l8SocgTns1jBZhmqg3Gkp3+hH3mjtFlZxKV/ane2EtEK8fQfyYqnvdcOQu1oNmAxC62BmAkCnVSTshyjx0whBMnku7HPnDiOFxmug5gh4yc6MKjnvaieKE2TkTX1ZjfOH6RQ6aZVcUWC3mabaLeDz7C4aelLrJ1Axtdt9+R3N2rLSolm0/YDdWlHnV6OmknVOyTpmlpLfxcjRrymu+nO1QnTdu0jTjivanm59kikO/XnLhhlzNxrMlD/h4lqbpBH12zQbvaHBGtHNvrweMnKpDKoftz8kIFyWaCevlkEZVDKfjPdHV8temU7yeOjVeVl5GbmOVIDXrkMD540ryUcOVOFxS09iWQyfgtOnVlvd/Jdk0ixnE9qnaEPP4XcOlunTo+Tk13vWSCtJhj6hm3U3DeH1cG1HtXBd4l6xNcO7jeZhVl9jr3kRUe96VGJxK6+e5oVF0Pioa32T4DQ6vapw9ngXY+VTjWbqgNjXHwESe59f6/Hq4BxcbyJ0dNmQ9Q1OkPV5yv8KDQZpz25E88l/CQFENYQhD/LPxzyE4u67OAHS13IxNO7lfGb5WTEoXmtvSqQIzT0v0Tsx4SlxABQBMTgrJ7d2ZE+vsb5oqUCAc2yWiHHUXvGfwep1jdfXlEBqelbh9aIQcrU8F3pA1SUJ/zp9uxM+T+HvpbxzuJto581ofYX6adnC3cjIs5gRuo3whUbHp5ifpk1PtV56T+vBirnZk3xmduJkk9NSyqRwyD6dcDOkpNLeq92Em7JcwfWzIMu4m6F5P7UogVzPRqkWN5OoGzbSnYUlR21nexSk/U8ggc9Au7g4SMkifsxDH0tnocJ0QnsXhk9xbJyTidcIF03ihi0kLUukSKSfzUlVLOjkK+T0urZqxsKz3DL4nOme5cg0F52u8F1sVpu5N/Vzsrjm7L4iC7disAzYfTclNRg6Nd7TXL7pUV7Fg/nFbMP8q9NTr72IOltDXGhZ6KJp0+/YpQnbqnvbH1uVQH9HDhF0DCXfSc5+8S6hg3eGC2E5TD2T02IF0idGzPNxuO31b6ed2Nk2ILCya3tVNqGfoe09aVtPJK4P8fxL0wBmAfuYbafpR30y1csJucqwVug85pra+Kx9SyeUswX7j2MaMt1Cf7MdII+Ye1BjGLdvHWJd3ADy1FZNYOt+bwT9lsuzw92FcRz13856l2fFBz/1wHw921FNx7qOCklLCPs9iW1vNw8jY9yTeFPIJHN6Jei11/UaXlxGyQQXF1wfJLR0xbzhlAuT2xrYfSIeXQqL+y8rxfo6u8+P40iTnEaLNf1HOfkYBS5Ze1hrIfbo1SQ1EtTfN86d1ETmjJcvVILauxqV8J43b/Nd5WeUr1Ll7YTpOHyUruLaN50gnsY3vwXbMv6ce6/9JGBCcIQxhiH82/jkEV7CWygKGbOyIW4R2jajIcphZSciPeFidBR+EmNJ6z6HxF9Vw9b8lrcJxzXesQ1Qa0aLtMV6FSTS95veM8dZCLUWKD2ZnfukPL6bJ6m79tB9WPhJH33jcomCWPq9nsj+vqqrN5nXp3eQruRmAEvXUMH5/8QDGOgtFHAy0JSReWtK992+4vVK1XcPvnMdksIyKQ9n3YTEnhLL1de3nHe3JbyeEc6etPfOGCHV1OrOeJU206xW9qhqvmn6vKHBoNgDjkjpwb0h2E/+xEDKmyZwY8CyR8k+FBsZlI7Hpj3z481tdCs12rKZUTWlX0TnrMWC49D3jpWZMyBSi2HVIn/fjXEnyOQoNBL35Qfd50nsyqwdyrJkQ4e7gTKp01Jh/eyrzovbFC1g2kkZzIOg2nxsKfT1anJe1GzUWPsaDqNVBCM1yoMToyimLaLxY4ndY8WoEBwnxGl+YxelsNN6ql3Rad3cziKwAQHjaPUZFyQyxqNaIR7klhGPRHuPSqqafOUhaauSJJZgtlo5UtcQUSsZkl6XYpBO2UGjGMukUx3sKSc/rJn206u4c3FmkWsPuk3dwfblQZ/n9SznTV7qp2Xgj7j5WI/+BZCGq1ZUmEuSqjo2J+QfRvoXmdbKPG62yW9HcUvNzKvsU5m6uev4flhtzYZDm2f7hARz5LB1z9ZpIXmebGt3/POLRQR3wkBKkzp/pyY15+VSGUt6/Tnhnn+hxuZ8xL15Kpyw9oRFuW2RO2HfQ8e3DY7rROUf2N6UlHKCEr8pEGv6dQ6KJ5u2ehReYWlPItba5NMjYb4fJ+ibEbP31K2Or6eQRn1+lyTVfWnamW31mVpdJpLN+/lv8c72oA2p4ZAHc3rKaIXMqAOCdqxulVorWOJhd4O6f7K+8G3yNrYuV43MmiXJWC7Pj0KpsEX6+LZ5H9e8hA1vxeIUS0ci8nwltq8k5vbzobBnPLli+ETXyC49g7RzRwDG5neCkXhManUqdaAny3sNU3zNzaBdu59ek2d7Mh+FndR7N/ifL+HpRE8jo4BpexykBtzZXAunnMJ45OVQP1a74J+xMVHM19Es869JVB/d6Ri36r9FkGXlApkjsM2tCo5VMUvcFcOC1TIhbWXeI6ar3HrGyApvHSiweMUSFt67pXxnaRnVUoVsm0qCwqMjaNVbM7CxXdo/TSt63Ea0yHyZH79nT0Xi5aLxv16iEa3bPYeTJXQzx0Bh+sD7O62ZaAKO+iybXKtWNDeGiRq8c7BhWScklted3WjwULW3W0oESG9SK9ryZimrr+n/kWSclzmHWZ3iSfZCp6YEbDNyjxb45SnKET4HOHMr+RrBfF5Zjmqn6wElHO+I7XXV1RWsXJemA6rxaheu1Zl1c+WQkAT13s1fkOiHDqHie6YzvKDr78qUlq06rR3N2bh2FnvV8EfYLtLmOv72EqtNUoxZeojlVi+pZth06EtdWSmZ/Honuv243jqot1H+aXqgetplKEAH5Q7DNpQ3Deqg3F7OPnDq2VJ+bv6EvvjtV4xa5aRf1s79U/NAIf0yfywz52n0L9R/oFJyshpJNbprbstVedYwV8vRlRWNVEpQa7EzxojJfCtyP58US0dWJjqK7uxODOP1N9DJ8ZyQ+GecAMH9mxbvsg0c9hlviEqui7iq99dp8j4dwfbgzAMG1N5A4TYn2453rDPKSWXXgwhKyqmsjTSpcyHDgpSEMYQhD/HMIzqfCjyyAgVZ9sammcoEGM/JzxF0tO+su7CPYTZQxNKAJ4XVEcbrV12v9vg5lwGqJtN+DtzCpjEyBPCHrWei2GYDzW+KJCdFOvPamKu9rRDhgvEW1dCWiftDeTLvsA6OuTEhRPdBNm/r0366TNb6d1+7X2eQsfdpo53y/agcz2up9LXYVxzZe1nq/jS4sfyO04/pOtVOXwmJwq6sv6vAyH4FnuFBUxOkRFH+nspM2+TtxJ13dDu9y6QtTonoFM+aJComOe5xnTy+hhKfz6vDdSTtnvNMdIuwlhudZI9rTLHQBLQaqXOAQJbBK1HiXPpXBmiW612Kby7Mqr4yB1wVkkMyKP86+4Tpz7v2ycD5e1xgee/OQgGHayfus8CFltsagzB4J8nXSMgjqLKT1xege8Q9FVUZumUG3bzrUoE373jx3Eg36bK6yhiNDm1DtsdDssyq5eBmk+y+ZCrsKa+x2btbfTOi6GO9nOhVl1kZ7ZleTID+r+WWeV9ZrQ2tm8eSKEGP+R2r9K5oyCocGKk85196GQa1l4FxZVxfnB0LdWwr9pspydSesfSKk9jx5E5UqChnHrp1FQX89p6SOI3gXIeQ+fkoe4qtp7M9vFqJcHHKXdXclQVwreYl8s9T29DW1GJ5OQmglFtahzjXNRY+f+vvkAv3wuamz137lz2TAU5kC+04F8SxJqOx57WN8/6B51GiH6v3OXhhFYQfJFd2DnHg1SXPndfhzJvcRYhyQmoPoLXqWxm9UNxrtkIrZWjGXkc8PUuOM5vr6rJPEfdJcxv07E51Vb9g1WrLDXI+S9C+kgyWit5qx8ZwosUVwfea5ixWdupeXtLHqCCkyuOX/3tNEYrpLJ0oyTyGsmOhXiYgVuM9WgazT1Ls87y6dZ7BvJ8KNRAeClyrhpN/+xPpD+nmj6UDav5cuExxpTdTB2QD8SZhH966C8InZ7lZceH0Sv+q9Kg8zoWFjUbFXi0axuZZ0oMnHRkA/aRTfxshZ/dDFD+c8omeHUy/SpJ0W2TKjG7zJr79bl+MdX8/r/dxNRC9Xd3BlVG9pdC9bNuSLrejTsAMleW2uOjGbiW1oXkg0oKSlCqDHWh9ij716INPPePN+lxLnpE03ubpZC7mj72yuZPfa3quq/36q94qil7TInr65w5PzSnbD9+5ka2Et4HJ/0pjbV/R47kYlp93ja2JxUBrckbLlcBsiHai/fwZmnVSE2uXEew6aq7A47KS0rykjmuFXQy1VHt+nkfeH9M1lSR+oNVoJxaRNW9p+Ugtb0ElR297GB4gL1xglLjyP9THJChnt/3LcTAW51Z9pTFpM2s5VB51+4X8kH3l+yWW0OHMKyyS11yXsK8eESCXwjglakA0GmNK1iRJEu7cbuLVDCfyizXNy91Ri7xLvTPoVbY6eF6UlnmpRk/HJqme80bMujVZpM7g7x5GpUdIF/atMYdwCzb9x/ZSc/l71Y9sK1Qyax+/n5Aeditym1XFuFBG1fdmpIr7Ppf9dna4+071VDhNWXs89olQYOb/qOlrn7s/w9tKTz4+qy4bsJLj3j2SAKYHbKP9QtYvbnTpRfas2lOj2jTF7KSnHoWdfLIpJQztyS88xJGEgdbSfkDDvO90Hai2O+WRMRUc5tYtq1WVTloq5fT9JU/tEEQInq3Vx5M5hbPFTgvucrzj1i2it+u7bB6maRypz/m9hoKiGMIQh/tn45yhqvabJWQDez84Se1+V2T2aXabPau16Oc83I9hNzmGdruNYPFtu2IwSqvuyLHWOpLOiO18aFmfzGtHOGJMX/LqqHbLO3MVERYpqhFSRezdlfBM6xqmlpUpWdw6W9AfANNgWl5nqhljT4hjXpgvBjNiqre6TRT7q5dE+s9fuFymtRFF7Gw3nant9dmhaYeqfEdLy9BUVnfttGpGVdM0n8yyj7WodG/3QNYF6r7XjTlkUhsVmeU61CghRfRzThDs1VZdWdu5FTvVQdX+msS2rVws5HP7Zl9s55Q6v2yVHstFfY7r7Cy14pD9mU6Du2yfSltA2ql3r5XaMk33k6nl/1WEEjt5O/Nogg6TM2ywWhwqJjXhxiOg2cglnLV3JmQgh4uJ7hQrqLrxFcgXt8ObX13HqkFhJbLvF5MvuDDFf1pI60yT2dzgv0yZ83ByqeQlpuVT05/VPieIdVzyksZPMgkVxcqr9Chtx3VFo4V2JnMyYp2fTvkY+bjUQogjLY8aGXEJiZ4LVbfDA3JgiyXpmzg3j2WqqGr5a45qwa4I+4+3Vh6S/1jVf1GNimt1i/EuKit7ql07kXL3Ht8ZJJG5Rh0ebe+/xXyyK7RMmWlevVmOarJ4NwMARdSgSOxCAY5kBXMohVFPlchdu5pH0EBujsay+KJDfU3TtLaLMWVWwAgATjU5j31Vu7mv/nez+LVNizDS1kR3LUZyaj9Vm9mtrEV4N1tzbt30gtdaJpgdWTWLmWXUc1LyjdRFVpwCf3wqdrTIN5/tbzftyJS9TwlasITjqLifXCHVfz24BO2p8jsbxQnubbFuyoZ4QYfTrkpz3FlOIX+9Lp0FaM94u5v+Zov5zCa5XqcJZAB/fmLCuhZJQ7ouHWe8nGjHuSiNKtJPe5jl6N2fGaNJWCJLGM79vAr3SdazM7aPrWXpWCyCxlhXrL6ot5tARKzJPqSD36hRZ7NHFTYi9q7KAmgUKUXyDJlZ0h2SO3xNlWLZvOp2ydayTw1S+YXdkD9YBKrloP9mDVmPlQraw6cefEFnnBZY25eRu0afSRqK2pTo+4+Bdub3uQ/eTGKwJ0sjWiye2mpChhb8zM1Ru4N/tmozGx96xp4Bgf54d7TFrJn0lNPduahWSi3p03Fm8Z8pl2xCgVq0Y86LYb9ZmYBLRjNbJWsjL7U7gXF7X0aHqGzJ+qyA5q710zqIpcZi1VpKJr+1H6+wez8Er3uJ5Uq9tPHcU+5brvW+1U8HnG4d5THJTZqi77SK+t+SAGk/pTpyPWuaG3umBbRVRc5NIHRQ6JCGd43+yvy7SpiKxGUr2ib378X6EklaOLqJZuaYd5Hf26SXPz7tyuINKY+Lif/AyU4nzpd1xHhfVerqdSzQ4fr4Nn4ZIV42v58bZz/p9qyuhTOkpKaFYtW7M8ZC+G15RCf7MpRHkL6X+0rKbr1F2tDSquQUzaRGse7p2KZmi10QrR3uJGu+468XR9tqIPk5qy6z6mtce/hs4WficPu/3X4ILa45MaaOxWJ6ZSVJ79eUGdGrDgArOAKQvLEode11b73RPbJ8o4f+xkRuc38eGm6miqG12PmJZMck0Gf1v4blez8F/6HzGLdMcST0lwLCvmgc/z+qZ+b9I57W9Nppt5fuzyk7zyNpsBjHb9XzmL9NxSdO/TOOciaSQtfOSKDNPjuuSXb24EaIKhKh6D2lV3j77OQwzuKiGMIQhDPHPIbj9g3yzAHoePERQXu3OP+nEkRyicEefnSH5zmwAtj+bgFVBCdLtr6kWaOuOrQzdL+icfnomI2NFc8cs8J6wHT8AACAASURBVKRkU9URXcxZhReBcnRSzor6RtlPZ+IZnaTRuMgb5q0RXcg7yhGHstr1anb5xfsMiegf/VQPd7qaOSPCVQjapnwRzmQL6A/OwdWZQkbLM1Yzc4jQ4/kV2p3tdndjcJJQhlVAOzI27gKgssl6xk3QgY6OC034/UZtP8ueyAypMbguEUXlsoU28SdnLhULd2pdgMXd1AJ0278+PRepdi1giopK73rexCOvhOkFsQE49RAqs3XeSqyxikYf15+LW3EhxSJlhBzf3/NlyDYh256j1vMzTgg02f4B6a00dk3vBVOmsxrMq3TT+266+IpKzUVh3ZdFs/OImvg9F9YkZKLG3vLuLXrfFcqp5yDzZuXewtycJRpldaQqPX+IMicETiZ3lgwFr8syHspdbo176YEAlG+4i6kzhCJcvhwjJlMU7du+9tSrLkSVkBSqaz9eFMcIfadBpcXN+DpHaDXm+ivSeglpXZ1owcTVciVD8wntmdtbkrxNKMQt1h+PD6rXW3CjCKO/C9ll3apM/u+qPRxsJpPlx9IWhGfI6cwb2Z4zW1V8vfZ+aeZbiqKa72zA7ZySI6LiEgHI/7wW+zdoXpyNqUUVD8kU5/JModN83VN1h558LCzkapGp+/B+ksUKRDurLK7E2heqwdv+ejunNupggY3RzjjnlXGXdkZyjHn+UIK3ywLo5ZKfS4e0psZ8fMam7AL8rasH8+y9pICQo2qeL7t2NV/7aS6bvj5GWyPJG307juV8Sxkx1/aUp+RfzaNtTYv973VRG+TV4g2cOpTgXDr5oEJqAXpMzobcR/pxvZmqtD/3HEqjNSpS3PJGOsrm1AG8XdgLAKudp8icp4Sycr4XzRvKZdxqPobaDUQJv5dTovK3a47pQtn+Xp8c8dunCTnoRBoLG0vHutT4KcatVPW9eqEm096bJpyJEiW+5JXJF2fR1V2BplRopet/XKYOyWOViD6+EDWuPaMBqy+Lnn1Y+I6RmaJGnWaOIOOU6OPcLo+Y4qoJ+clCVPtrYH/K7lSya1hvIIVLakEuXreAS6OUaJualON1sO5r73Yl+3uvftEyQqURCUXrUG6pXnvsa0XOLtBEb9DlOx3MpNO5eqjfM2L6c67cFiU+dsKSKlPUh9hrZAxdXooeO24tT1A5lR/sDVSZSMb+TPYb64iogrZdODZHnSPlw5P5e1n6oNFGdxZUlpO84q/Gc1xwS/qFif4PMt2NUaqcw0ktbEkZoCLcYn/lduc8UoI9g1VIGlawCb+O6j6Cjd6x4IruNXbOac7HarHfSdOJwJVM5tDMSgtv7Ng6uDuL8nbq84BR2frSdvN5tOkuajfbSJru6sGuDJyqEhV7mwqcLCM9bsffDvxaLhc12OstjjN0/d3TlOgyHhWjR1ttjPsSA4mforGa13MZNS2kU74udJ6jNZT4zPLovdqNm/t/2LvOvx7fv32IpqJCSajQoCFUJJoqKUKhLSNKyigjs6wihRBCJSkqocwUIilklZSZhoooSSXU/eD4/AHf31N35xO9Up+ucV7neaz3+4JcMeWRby9lcaua2t7eVm9ovKbW2b/XfjS8ZdQkZz/n96IFVXDZwU2iesAdKEzleYv6R8PfllUdjYHrcMqB9D91Ee95qZAZ6hRZ+TNw8FkcXM6F6tShPKh+o3OdLDwVp5sEMZj1lHFqVJJxcDnn98XN6lj1mRrcUt+bONGPVRkXju3Hn/N0qNHGqo//MropavfoHt3jnx3/HEVdlCvcBQBnDg1A9Vu2G39knY/dSsxn2bzMhmkVEdxetUdI/sQdvFOT+bMzh23xKYFlXbtMU1GeTWidXHsCj/VJB0bZVeHZfu6WwXZ0dsRDxRAXwd30aIkVvuXSkbr4+CxqBW9zWm/QC18tWVpk4M/6RZERO9D/L00Bb9OV+DQjHgDwwdsdg3Yy0HnAWAZG0yksBwhzd1YedQDi4wjZlxx0xqeDDKyGjLJAngKpj6TBIJTsZv1lw10iLqOtpeg8yfDkqTXu6O9DlJTpNBoFX3gN/M8ZYMM37vAhL4mAfFyBHxeJvt7Kn0FkDBFstq44XjSQzqn+3I/YEDqqSWaktnvWlkIpkb2+BjdIw7ue7l1IZwgW5hN1LvsQjO2C8rnCt0RiFg5WcA3l/yf55ECqgTv5jO1NeC9CFNR3kBXU9OkId4hSamiPOwY3yQoAQMLM/midSGf42zRxNC5g6ZdmLs95f5Ql8n08AQDypTXQrWDweE1SLXaoEQU3fd+DvuWUG66sIFJz65qFXwa8N6ZLolC5USAx9NdD/VyaJJMPRuPBUKKZkjVEKl0arXhUSdoau+o++m8nYrKYeAxON/kzKjHjIVRB5Je8iSh47+LvcDvBn8VneYySZGmfi7MRlhvwXJtnlWF8NY9z9lDeg6qnHtj0mRLLYqkxWGFCQ23O1HJ8q+T1ltzwFV/ViDqfWdH06Df0AYY7shV/iOde2K0hgpsidQ0FAsfU4oEyxg4mQhsdQQr+dvBc4BiZQm89e+zPIe1M7j8C6if5nHzwuYw6F8oJv14Tia7prwnvJqI2oT0n0Dg5HgBwaG8+xp4gArWaOAYJ6qS85kHu3SZD9+ge3aN7/HManKYvdbBy0ceIv8FIxrNZini0g+K9bPlLbE1mtGOn73AsG0E+f24iMztP4zSRu5foI9yoFbeiiZx0Kj0RXS+IX2iKIsWIu1PKfSK1PXWyKDxOBJBQ8ArZRty939/1x8IYWvKfj2lgQD2rE6bu4O/t/qiPrWcpbk/eswgGb2jVH746Dm+9iDQ23zyI87OIpGpzqbulqrUjSJUowq22HU/MKSY7SQXhRx/qGWfWtmK8QFfa18X8XNEJR+ztoHitaeYK8xHcnX2v7cJIIRasj1Sqw8j3NABWr6M+I/XjAuI+UOg/PNkJUm53AAD33mtg70oimFkq6ujbzGiLdRvP47WvOqSHUT+rqrGGzEnm/Fa+yccWZ8YnIqIv4vByou32mURw1/wHQHEQ3x3rvakNroOJKIefaoD6UsYMnuz9C4cAIukfmfysoJHhWLGGZlC+0E7MDeT9TTk6Coc6KG6PqqSGd/SbGNonEFEtXeeNoL5ETKOT7uDyNGqoDhoZmPKc52JbT+2oz5xt2OPHVvdbAyTRbzvfi7omNAfFJjRiNOeIYIEFtbSsCuqYX8+kYcIqIurBt5/hjwpjEoNcqmA7jGjIKl8MHzwovuv3Z9eU3JItmJ5NhFfo9gdfjGlIhG9uR8IfMrAvlyeh9B3P78U0/uyXPQuwbK2geUHfg3jmQ8Q06eEc2JSTQRwfOxm5B6n72g+kwVNd1oWhtjSqXAw+w7qI13v+rmKMfs77MP1BO9yriHJdrxNpv6wYAeMT1Kx/95mE9D5EX/uK+2KIAqt16m3Ece0dWcjgYgIxw3UrUaDH+SnqvxgP9zG20pC3DRK5zIKqtUtiiB+PGXDHfx3/3AJX+5tO176qZBikE3pHBchDWomTpn2bFvYLOm8ITxwBH1FOFqs/hORzI+uwooWO3unXnbB250W9snI4dppQAC/8IYI2Lz7UPiIMvFb0mYK2Eyx5GZq5ED0XsYbzgrUjEgp5wwIq70N8NcXryGFcOCxOfMf5cIrfmxZ8As6wV/6YD/dx/jMNEK1ZLRATpxsYdoCL2uo3Jli/i+fa43B/THLm367+sQgzrPkzOlNysMOMD7PeVJZvZa3Xg/kY5paEP3diQk9OssCkIvgOYDnQ93IxvGngRB66mQtPrO1ObPzJfNLATb0hKsK61d2mNgjK4oJ6EmdxYyJrW4dqkGapH1iGK7O4SSx9IoWpD+nIyc9/iZv3+RAl3RdF0mQ+nAjlsX+2O49UfW5K0+d5Y1ETF+II34s4Imjx9Dc2FIPu817G2nMRmokUTPNg6djE1H04Ycn8Y58nWmgawgzeV1tS6u13RuBHJ+l6SfpPuP2mqfP1qTO2+rJzymTTt8iro6EQvJDNLMsU1BASQjrf97YU1AaRJgdl60DSgUHmYO3nuB3DzVbCgZuhZ/EYjHxGOpeq8gObVbgwPJsQhH6baESIdvTD+UguRCmfaXYltkyH9zTOyd/LhOAQyYVTwm45GuRJwT+Yn8CTTey2oSJHChvmtQ1Xg0kN2+w08OQBg8MV858j152OqvLcOuzdQIc+8gKNuMkGhvCI5TV+deMpzIK5cV/RTEdtKhfDP4NdUbyLC3e5P8//sO90uB+mVDLuYBFamugY5/cfBXllHsea9yNQvIFSz3pbbqI3Db/BIZPXyqg1GINNeI3Chdohr8OuNWMixBFWzo2S2/5/G90UtXt0j+7xz45/zmRwuZzWBQBjXvWEzSbGLwqPacNmAJFFnNg52EkS+TzLLoOnBJGB/Viil6GnoxGczmzV3ie9sDWfFEbE+hjyfrEE5qbhUeQqCd43Oo6715uQZ8iw5I77ycEVKdFEFree1sL7J+nHNecY6BvSGAgsI1qQsl+Cx9WkAMU/xGF4jwZI6JUvmLqNVON9vhE2+/Ln3c7cAQAs2KEPs0LukFPXq2OUORHqR6/LMN7Dcymd0IyiRKIuoRHMw9m1LEdMJiMxg5/bwkiLtn/TPlXErBaU1kzejj3JRJV+PSv4vVxdhOQwjf51U19szOTxxJVMgKMeEdHtxkismU108VScUYwLpQvxYyrF7zi1QPRIIuII0zCFjS/PxfmND4z/kkpue066ftUyBEV9iGrCmqJwJ5aF8r9duzD/K38mc8UOyI/iZ08QRFVWzD+MzCTm8kblamCYKEX2/Y+aEDyDzQJafjMD9rXcHJYiPM+Bpacw1o1I5oqPPT6bs7QoxN0WxhsZc3mkQJH+SFEdJn0kXXXM3oTav5xbGxcNQlCJoHRs+hwEryDFzHEifb62rh6ul4gol7v3RdIERn7UmxbgrSA2NPxSLoTm8rND55DOn07QwAcxGliRLZIYnM25lRm8GeumEvF/sIlF7mren8IvRIDZEeVQ3UhqGKp2Fx2NREBlB2pxvpQ078y4Mlh3kY30IqDC2uJVsHvG+VIuUwa7RkY83PdEYW0Q6fgsnUf4nRfPe9Up6MV34APuzeFceKBlgl+azDFe/roGbcv4DOzu9xOD5rOCRcuSz5OOy1C0r2EVhv7OCGgOpNyyYPQ52PZjWd4E7eE4bkYjom1w+f/fHNytIaQ4ElvHoDqQrl/vMRGQMyZlFBtrAstKumnuibvR+JcUU9yENXQ9LIvg0EENrlSlEho6dHyWXX+A1ezoAivJ+fAV1PXNXEDXrEVMHUMGU1frN9cMNcM5CQdJe2CXPSfc2jMySEggNSho4+TWiDqKog52rojdPRerjJg/uhD8ED+vsAODrPwKbLEknTN2osMb3/kBUl/pKlXldGL2R+o59jI9EPSaAWehSSo4UsnFLOsZJ6npg0r49mGpWlZtBWav5AIddt0cNzZRB7lxRAKR3gx/NpsL3gVRHYGUt6SMlyuKseUUS9sutr+HuCIntV1OOnbVs1uG+mC6bQoL+mL0cWppOg6WWFjMhepBz/W4tJ2TvsrIBcVNvA/l0nSAP29YhJpTvA/pXoaQGcL2PcY3VyLbkwvV+oaf2DWRAW6taGpxSpHrED+SzriCUxhcDEhoejs+ROAIaq8j9zF/prpzN2JX8XqGvjfDlqtcOK8dHgyLm7xPaT1GYOIghpOdLVlOVvXtIFJOkfor5+ShtYva1VF3I8x4w/s3Yc9T2HQKygMXMwCu2ycfli2ch8a/hiCmhAt4q7ICCnay7MlpoTPU3vH7F524GQ65kAun/Wy9lDCiDePd+f9yo8xQlk8Z40q1ApIquSh7vuUC7pASAx995hxV1mRhsBUXi+KXCdCey437QagMbFO4kNqf4oLcb2QnPh3j//9w3o5R7px7d0WtcEiLcsSOrSZY3EwnVq+R8o5CXiwq+/LvrWyfAIVKPov9bfvA9TBzfCc9tqC4nqAqcQQX5KE2ORgQwnZZ9SvzYGPCufBNUhV/k/isOh9YAG0xbkCgof6fRjdF7R7do3v8s+OfQ3DZ20mdIts2IuIxhWKZrfm41EEKE/J3EI7NJAVdtsAYbqe4Sx70JSw2tzDFPiO6r4l7LmBpJJ2g+F96WHiFO2CPRCXckuAOL6XK3ebLo04YBdJA0Br8E4rlRCJ7RghhcSYT+731NRHwirv56yw2MyyYvhxjVnO3/LDEFe88SDlqjPvgsQu/H3PSCqdlKMymJZPi3T+/EgpfmdGT2P8ZdyyZ0QoRF8GZPdzhT06bgdA00oBZzWybXVM6BI4/aBCMfFOHkV/jAQBxmwpwRZboasvdtbgwjcf8RpW5piOqDzDjGdt/D00wR8F6ossPv+KxSpMivEzqFLQ+o9srMY4p/KzfdXiZQ3QSrxuK+P5Mvfd58RabJEmlzRuGorCAKKHRmuVi69olICZ4YbKkzDNc+UCBvzJCF08+87OT/RsgnUXUkvqLyGj1x+2Yb6EMAFijMQVl4TQcetSfwrxJpM16+SwIP6pZBgVb0raWJbdgE8OOHkJLHiNdmnNAVHQEKs8TJXrfJCqf+nAYhh6pAABo7T+F31W8nqpTHkDjEV1LryRTWJUStQR5BwMA1BuDIfKZjMDo8Q483s65oxrnAsckIpjoO0p4LUaE0xrNubA9Kw4GVkToC8WnYOt1/r/EeiU8qqSB9dXFAdapvPYXw1k6tUZzPY7do/PdeXw4Dg+hEZVxfRxi9xKZl6jNQ/QQUsxTT+g+GymWYtJ+IjV5oUOY2Uya+3dsHDaXskzu4ubb+KMRDwD4tUMKAHDlehEsj3JJWT9fGEI7eZy24U6wGc+M3YJOVRxyJMLUmMdnIWGKAU7V8Dwisk+g1YSygvG4LVBxYEncshm3ME2B1/l/Gf/cAqd/l5rM2IWP0OrPmxu1YxAa7vJiLvbsxMM8uldtB6WwahAXjPzDvPk/z53Ehzo6ltXN5+GhTSrZ83wdhHZykYi9OgA5M6m1DPjKRW/be3u0eDM6EK47Fd/NWRfYfGMmHBJJbUb0DoeHFd2ix2tJLUSz6zGnH8u32rNHY80Runr3dFQh8ZedT+fcu4eRjziJjr1mZ+K5o7fCMz0eABCY44ldf+j2BoeNQdInTs6sIwOxMI5thOL7Mb7hIVeMwzWkDpN7aEB0DPG+/epT8DvOSfi0cTb8Mqm1/HVlR4jlj3oh9QXf67ArKxg6Paj5vdx/CQGTqAWKfJ6Nj0WcUmKS1HDUb1ri+HouKOnF9xAVR/f41uO9WCl4QbNwayL0TtNpfX6OnXR7OKhh1iJeC5FeB3HqN925lzMb8XQAJ/oWk0Ts2s1z7atPGiziORpZUxhVaNZZgKfNpDhXfnzHp8/clCR28LqF/DDEJXMGhH3XZiE2hM6huX4vTM7mZiXq+AOLTBhrsLHhtV8vOwrLD7Prc8/nr6AvTWrvbNEIsy90IhsaZNF0ndew4y0XNWW7wfh6gXPy5t16mIaQate9nQyZCv5eZ74kzK6Suptu5Yaj2e88XKdRlxvp3wdTD3MzXjTVF6eXc0OIObkYB+SpJ7u5U0vpNPLGOGPemw/NQphoRpobbaqMGeKULPJ3muOjMq/Lw4k8J9Nz1yHylvLAmDBz5BaT6Pkf6Ae5Jl776XKSsE1ijbV4Np8ny1lrYbqN8oi3ayd++XFD3JkYgAu21BhnTn4IL0t+HRzFze7a5H7Yr8vnIeFxPH7lcyOZ81sRjtkEAkL25RDdxc0akxhk/i+jm6J2j+7RPf7Z8c+5qD8NjLsAIPb6fBxbxfxOUqImLikzz2XTaIDnatxFd/w4iqY2Oq1tenRA2yUaESh4w5HPsHuYG0/EMav9ITpVSKlmzPRHQhBzPaPCSR1EhaegJIoIx1EnEN9mEklOuxSI6wKH8Pk6G3zrSWrws5CIQ/hdFCwq2XnjoZQaLgp6wI27EYT0Y0Rwa89Mx8cEOnkFI1nq9Vh4FMZ38t55Lh4HpZ8sRcsK9IHpSBomTZbFCBtLmn5bhRRd99I9vDvAHVB97G0MVacxUnX8ILTnMqQaYtyBRbdpVMnkkk58GN8HT04QzR1f4oGtgq4nkw3OoH7UHQDAkqgu5PrSXPjYl+f8+1FvNCkQGe48IguP56SXqx5L4/1fiv27cwfizwjmES8l8XNXxIxAQTCzdOvmVyJyEsXr/UtmYuhAZrHcPAfjryzp2FMt5uvWPajHq6MsB3t6RxhyvYiOsxZGImWt4B0J0URAy2LqcSGNzvH6wFxkCTHX9VToGf5cI7VdMkQdzSfpYK6Zz3sQeMAIhuJsRnDyey3icpm3PBa6CB/VeJ1FIjbCU5MI5k4mj+feOHE4L+QrAav3fMXfifz+vJt1WGRGQ2zeyiSoKhFVq+XRANljPRuWPYgGD2fNgLUvkZpr7CEMVWS2b2eWJk4H0tn/Opomy3Xz15ANIRtR3/Idso+Iym7kOSJDmlQ6U94Ccvq87xsFtexV0VeQ0caA7ZnkDFwVpcPZrK6H1YdIY7fsUYKwL98/8WMr2UrPzV24Qr8Mc+4OxZNGShcm9QWwkqER9clwOqw8idbn3iUiDjS7j4w5PL+k7RNRJEVWVLujL5IXMv+36MMO+JfxvtXNXPT/t+Hl5KRdXQDwzS0XCRK8uQfu5OO6IeF+xu5iPNxFauA4SAqpR7gI9ujBQOG4ZRZQV+RC5bOyBUvN+MCV912PTaGkXe47R2HUJ84Gk2V8YPG3C6pB/HvzKj/iQzFpy4/U/pgu6IrbLJaNMCNWEUwbSyrmlmeCcdZ8H8GCj+3I/ciYyKGTQyC3gDpX3ElrfFrG40uVol7SMW4Pch97AgACRC7gvgg7O6yaLA23fQzNhmtGIn0wYxCbHdjG5tYdW6CLIdXyftpY3ED65XTGA5ZPSTvdxiRjbBPjJVf78DjfXEtFpeAt8O/iesH6AsOYv44vh9tKHtOv6r4QfR8PAJDZzeDtx2BzfDbg4nT/uAhGTyWFmZCgh345nHsvx26GyTFqp23ypOK//L/hw3s2O/wxyB8PSrkhNGhdhIwF2x5hYhy8BDqV8EJGNXSytdD/L+MJegGtGHib1QkfTl6Fugupn8scPrxOzWo4/peLjNj3+biazxjIIdNFiB/I4wk7/QDfB9AlfLuHi5f5YTVkmHKB65z3Cgfu8aHfpH4dCbdImZtErsDch/f190vKBFZWXfhyiBvm3UWHsXED3+sQddoI/gGMLq0UtYbcUEoIRpHUAYvOl2B1Fs+jT3gchgVSHsmc2wvX7lBv1R2YDLdDXIj1Be8ciXdpxZpcygPjx5xA2hyuC0u6hKC7jQvtK71hWFNH6md3kAvd941R2DeRm0FNvTIuRvNFMhu//oasoHvxU4PVGG9PPS5MhxUNF/oqYOVMdge+J3Qe5WKCd3V4fkDGZlZwZBR+xIFyxj0Wx5C6O/n+hHIeO9xceu4DqYdcJY81+GGvOjU4G8XpSHHiNejlLNFdi9o9ukf36B7/HII7WLy7CwCKFjxH2Z94AMCCQ/txupbid/hlLbx/RIp2cKoazBMp+o/1pOu53tAevtEM3iqKmGCaI3NUK7464ul2bhx/DwyH5Xu6q6Ha/NwT4mtgsYcu3ADTZWgRJvoIWjMboVGkie8WPUW9AnfJ/QWkqsluVlhyjjtupYYexGcwW7TJ0gOyfZijulBSgd4GRB3nY/m5FxOGoaia9FFtVTDKp9FRHRf8BcXSdKQmj3mJ25+5+x4qIlK7O20/+o9iI80Wi/nosYGU+LWZENqUiYwOPLgAow7SDq9alh6tU16Lg4KW1svDlmNeP7qeMhsmoFc6zQAP3Z5ItiHt3Pue9GTEbm+MDKOB4yTujhke7N9mW7oGEkLMtkVFTMA5df7e+wYiZisdU3TYMFNXH5ODx43cycco+MC4hgK50ixPpPmTPvV6QEcyKEEHbfakxFGWMxHoTJqIPnOwxJvIvOEQ/8YqpUyIxJDO3bzlBH9V0qRDn55j3E92S5n61g/atqTPj7PoKE950oidgqyhV9lVSPSi0F/UXItqd0oTHzePx8uedI9tG3meFhutcCqD/59+aCAMnxHhqZ6YjXUDieCsZCNQspauZX8xygc7M9ZCsh8zj1+mjsehWM7fh9X3UHeaiOmjWn90qRO52j3lXDhaXYirY3hdjz/8jSF6nEOdRVVQLiRKfKLpiJOtzDwqu/GcXSLXoEiDBsLfD6twZzkNAN09jVCRISXW8B2AlBSygi/+RK0TAyzxN4Asp/pVFDIW0fku+fEG051oHOgPaMD7UN7XR5MEiLLtFsL+8Pz6T5XAME3+7bFH6zBYl8/DKa9HmKgcDABw97jZjeC6R/foHt3jn0Nw4ipxXQCgn1qEqSACGnT7LSLPEjG1LdKDxEXy/b/BFmj5S3FXZg7R0MjULpw+TW3gsl88xqVSf9l1JBHydRTQZ4X+QIQoXw6z9jJ3G930Cbi2luJwWfs4pHzhbujTuBH926lX6Zc7Ql+Fuot1EHf9tpWXsPI+qwkMTzZikrTg3aOhUWgMZR5oV+EPyFixp5ptBHc6Y5spSLxC1GLVuz9af1Is3/SnJ85pEqHp5B3BEUPqbcUbiBCuVarhyC9qe31lpqDHLWpCK6pb8AYUd01ttsB3FxHqSHeaL7qr9kLuAM/1Ve4SuEfwXPsbauJiMzNzIW98IHaBiGhsDjXByV4PsCWTXYXPi13GyhhetwOFgZh2j8c/W0YZGp8pPLsIU6+zyW4B/hBxSYga4JZvPADgjHA0ovtxztZliUAsnIXlPnHKAIAeb06i12ney56/rmF+GVHUwsXnICvFzxugzoqGrIoH2H2UKMnWNheZj6jj5R2tR/0yXs+Gc2loKyBqqdlPk+nF+SewmU+0lLI7DavaiBInn7yIjJWsCpht9AeG0US2fzKYtZwQHAu32TwelxZF/K4mohIv3gAXTcaRlmdGYmQazyV0L3Xjs/JnIzV+RAAAIABJREFUgLvU8VKKcnAQNJ8iSh8gsR81ZGSpYZoP73tfZcaSwn/qIPomc36aH0dj91Wi+XJlKdzx4veFVybB8T47pxiW06jJa/HAihwivK1nauDoQvS8TVITd0dRIxWza8bqREZQZPoy4rJDQwXtUaxwSUUmHg+l7rajuAe0vKmryXTMxORqHn/sWWq6KyI34dcHXiO/5BaEHuUcsfArwIxq5j+7Ln3E7Hpej3veN/7/lmrVX+JNerz6Ojbv5c1YcKIV5t/4oFa83QYDaU6WRGVJPBilDADQPCWgVqcf4/oJ0tKbMTvw8irzc6VXV6CRmi80FLLg7kpHyq+Vk+PdliLYmrJF0oFnP7DkDaG1mtdwfAplfk7n1Xr0VWIgdWATaXDWtl7IvEDKoTByByaEeQIAZh2OgsxXlniVxgbiqgEfqNIr7BiRfeMO0nz4oB9fXYWrsRR0n/6pQMdTfn+/qRz0P3KR71XCBbJ31BeYuLPMaHpTH3zcwM9d4lOEt9953kFlD5GXR9drTAUX3FXZ55C/iNdCOi8b1/rRhTtu7oQTMyhYz9btQJ5gMXj/igtgz5kZOF7Mh/db8ERoyzNHlXhiNBZlcPJuCF8P6ZV0IitCOemXFMgjQED/U/s8hbbgFXwmQ6ZBVIkPX8tfNYQcIt259ZlNMBOmukN1GV3WF+6zYcRoGxpOlEL1OxfdMZv4sI0vPoPQPfwbau5+8JALBgA4dNUh7gIX+53+AxAsRCPifj4XvQNlqVi4hovooIRL6PjBa5Gg4wLlDm4M+X47ELGSeTT9lWxxpXvmI6yCSNWWjN+N823s8HIyWg+L5/OcfhY9wxqB47i2hXKG+I6NmCDNTdCsyhARhjSwKpquovol6fiWIheIyFP0t0mlyXQlJQ9RrZQmwvcnYuFI5s9ORf1Fw04mCcoqOrA+l583VZqJgikXA6DWQdo5csBSvN5K19ZAdQ2muJOuNgZewbS5nGeVDZzfAxRaoXKX55o8ZTcMpOj4f9S4BCNpGiBz+hjiwFiaEku/cS7YSczD3VJS/iunjTA9hxtQy82jWLiHdcUfdsfjzDk+z//L6Kao3aN7dI9/dvxzCG7NalIkzdgGFBwmpXptfwg7xxGeuyRcxdJAUs3HBjXY70sENvYlKeX4F3cwzphC/u0EW8StIIW7mrAUawJNAQB2btVw+kl7fpoNPysgOQyfHlFMrrzuh+0bKSAPF10Jv9d1AIA4zyeoE+KeEn+b8QuHV5/gl8x4hs/aeXBeyaJx0x7fER3NIu/96urQTuPO+fQ8b9l+jbl4W8+clOw6B9xfSHriPWgh1L8w9f9G9R7a/JgTM7xKqqrWmo98f2b4OjtyEVXPOED8Kw2M/82qjogZJ7F4AEugUibQIPnVkY1+R0gjh9W/h9kh7rK9TQsQ2ptfnztsi+szmSUzEaMhsWzkTbxzJ1o4tKoPvr1iZcH2VXnY9ppRC5ecBripEUn21iadPVD4HeY5zPatX+qCtC4i1M4J+VioQgTQPnI50r7x+FT1mMKXb9GEvyWPPeHjcugoM+5SNTMOOqUshE/czyjO8BXRqLQkTZ6QcBIK8qxECYvUQsQ0mk41ltEoOUIRfn1vQVOBaW/wmGwJ9yZ4o9KFlFC7fh9mrGBBuNYAJUwwIXWLCiaq23TTFktqGLOItt+Maer8Pcl5CzHnGnOaQySA6arM/918T0Pmsp8dLLL4trL3g1UQvZjGWPy7vkAwkfmXQR5I/kOBX+sF57S9TX+8lCMCKvWaiMmCN6hF/wmCuBtjMIZpEXDpQST2rtwUADD1WgrwivP76PhneKJOdLXN3Q3HiokYO/cNQ8QXmgjOhrw+50WWY94VVoAoDnuNK75kK+OFfmDCerImpdm2UD9LymtmSrQuHiKHe+Gk2kvlY1HbnyZL5OZmXNPjZxvEbMOr0YyX6IDz6b+Mf26B05hAiDxB5zYaXbnIyITHIecGL1T6bAfoR5GKpTa9QmoQncPO/aQhBwa9hmIPTopAuZfQ+cwHVeXjc5SbkdqslRNBkj4nrfc1TkKtUQ/R+JqT4mzOSMwaxB76AwyWon07s29214dDbgH1h3dnBA/C0ntIucqX/o6yug0hYS4yfn+EcdmJi9a7zAA8lCT93eBMzclmyBZcKiWt2yY3Dt+l+LfbDtli7UjmuQa9/AUxFzq7/SF4sfKFCqhcIF3f++wGpF05mUoOrcKITObEGqxcsDiD9GKpNvXKZ37GaNHjdNnyZQqik/l1R5oCvoVTTxRfageTBcwHtkuRot+y8YJhQjwAYKR6LmobOZFniK5EWjsXkcRj1thxma7tvNlccIdqb0BDX+qG6g2ymLBD0E14vQfWO7M2tGWqBxryuBnVnmSDzpdLrsHSml0qhnhL4sBM6gqlkmVI+cjFBb3Z/cO04x2UDjBTNmnADlzIYCj4olU+cubRMQ3ymo/mN4IXiMvy96vPpWP0WeYLe//WxvB+pI/p+iaIsODi0j+gBoNc2QG68wJdbWu/ATixjMd+2ukXzNv50AutmIOZqVwsDn5qxC971kr7GrH8rmt8LfKruPGpue9FuAiPrevBEIzdRxp7y+4Eagqof7nFkHLe1jJEhiwXpJmXjXAlkFKBT1gmfA+Y8u9pzYRWHin2h15s63SpSB39XrOM7uijMbhZQHf54HNdRGizrGt6mBjefeHX6MPA79l19UiexeuS8eULXsYzg3f66jcsuMfnL+v0WGSP5XwpiOOzs7HfTew4Ry38YEw/SGcwADx/lRpChLmZDTrvhM7FguWKU/o/jW6K2j26R/f4Z8c/h+Ae3Gc2x6RkBdTtuVNvS2tD5QsK5Id/qaJ+Or8vYncIi3NIfa7EkBY0Srih6jaRkbF2I0oPVgAA/r6ZL8BAgJ72G+wOMgUArNGgOxvgbYdUKzao7BdxArVXWCQ8vldP7DrKThEb4wwR/5DIzT+Rjt0Uh7eQjGep1uMpnbhxmTvWodfeuBrOHbXlRm8MeUa68/ITHaa9/ZoxfyXp2b1VL2ChwuNXuvsWj335szD+AQttVkCsCWReLFL9OPadI53zHD0QpioshXkYVYFpH0hFzM3nQfQY6cCS2TRtpg8rw503pBw1e1/AOYU0qbKHLHLGk1ZG+Q9DhS2Ng7v5LHj3KWuFfT5RW8V8C/Tpz6qHITL9cesmr13sWS3samY27UQREdXWsHuQ3KgMALCXegtVPaKyY0lBCJMnSvfP34GIKLqWxRZERpeW9kRkI8Xoy9JySLajQO5+qRHRV0gDd2XSLMhs9MaS4Sxr65j1CpuPU9Lo0n8A7zFEuUcGH8KGKZQ9fl5iqdCelOewvkhs4BaTjLeJ/P4muQcoO0cppLV4F7wOUWLwlKPRszDNGM57aU7szf0GkdOcUXKuLjgsTnd8iUYEzh3jPRv6iajN7HQNwrLYmPSLXSfmzycVfZk/G3sWCzqOvJ+HqlnsZ6cTzDK5Jb/LsUvQWWaj8nG4arI7ywCX9+hwJ0LLvDEIiq4U+01/02Uue74DuZLM/hVJyGPraVL7WMVVGGBFKSeuyggb19GJ3ZlGBPsidxj2fuG1CtyZikwRPotPyiTx/TpNhubTI/D2IOdRTDYNojLVm/j4nIbaW7+FmPGHP2svthwvzgpK6fzGw/QrXVnWtPy38c8tcCsVbAEAW14rYrIn6dW0znTcD+KDrCXUCM2hhPVNnyNh0p8w++NlXuCgZ2cgM44Q+sP1cTC8TPhd0Hc1Xm9gfCTbUAxeGXwwJsV6AgC2ux7H7otcOBZYVsHiLPUaM4uxyJbj35gx4h4uKNIO76fCqEZVVRVWDmajQfWJy3B5Nhe4n9Gv4TGe3/fqr4QvSdS2FsayLMjj21hE9uQxm9z2wx1vToq10nLYcp6LQXaKGBxEuPhkbuP531O4jGxx1toW3CnERiNqUL3Hv4ZbF+mvNJzxvgfPZeNAUrxB1g+xpZk/G/L9Cy4fZ9zFLuwSnsszBiN5qQrxL6lJxvTiQvflahrSr1CbDNfvwJpgPuAZPwqg28UQsWRMD7w05wM+wYfX5+qVi5hVQ6p2460L0uq4eQycXQThy/yM26s0ECHK8jjnZPKWzEhlJH+hbpqmMB8lS0kDly/sQHYPuoullaRcffPaYDaf82Wbvw9ab/DaPhkiiqI//LrvpiysvcP50jOI7Y9uF3jBdlAwAMBIfB3aP5NK9l3Vheun+RDGG4bgUSwXgN/f+VkWrybjywwuOA1v9HCmltR18J9oFHhwUXaLuAfRORUAgKXVpHWH5GuR6EyaLOHTB60ejA95Rx5BWCGjKwdcnLAumy6o5BJek+1Or/GzlPJI8dWnuPqL2mRGcSA2nKPuFmo5Db6zOHdGOpLmHy6WR04c55apqgdKW3lP852P48xmzoFXKU1Y2MTFvKmZ+qDK0mMYJ0x9s6WgF4KaOJ9+VsZgxHyGva+WdEA1jJ+xUJ8acm7vWwg04ia4u/YGlgheOi4qq42QImrVB0d0QNflfyec3RS1e3SP7vHPjn8u6KvZadcFALUNeXg9njv9uInVSDnAXaj3hHykbSCED3gSBz9PUpuijUQ1m1YlQ3QR0c6fGTVQ28owprDLPKROJ3UYdtMPTeKE18I9WOo0wzwaT5/SmWqNiMdeL0Er7Do7DBrPTJhJ+GDMzeOuNuQed2/JXAU0zaSzaCgcBtkqoiGn5E8QbSViDLz0GF2qDBy/2Ekqen1jB3TbWZKzKWEswl0pPBvreOL5ArplDsfsscqHorfBUhZUj/u0EjodPOds5URovWbJVWFQPPbq8vg1rg9DW248AEBiAhHC4RXnoG7NhpHOhWUY6EzXc4V8IXrdpRlip6+OH3Wkj9si2IRALQIY0Cro1HKnARkrKXQbtq5FbBMp2pE4O/y+FMzrYUQCcl93HZY28/wbV3/Bpx2CJo7F6lBbwDCwqEUazLYRHQqXEi11DP0FzzlEH0blPTHam4L7kNYjmBYlaKooxv5lo/wyYaPMv/GtdTbsB/DdBInDj2CIALW9V0vD3I00OxoliSymPZSFTQeRX8CBFATdJ9q1OxcNyTEU7OedEIHJA/68dSyRo1GYJgrvmwIAJq+7hfPNfAnChWdX4DyZRtOuW25IH87r6V9DlhDYtxFdCbyep2TN4OZBQ6zobhdWmPFctOcY42sJZRiVCFLRGn1fzOhDmpgoZ48YPc4ttfoncEjmPPzxZgjm5jOo3HWNDVZ7aQ/BT33S4zmP5SCvS2Top7UTI2PJMCQmxeHjC8oe31t4ffwcHZEUyOD0lGnGUKqkm2/X5IswOV57c+EeeHiWx1e2kznAUwV/cH46JRtNOW9o893taNw+Ekp+pPn7VgyFyTZ+XmNNd7F99+ge3aN7/HsaXMBait81mn0xIZWiq+vJjXC2MgUADO51C2GUfnDMujckpzGFbdWDGkG6nyOuHeDLmZ+cWojeYcEAgNc1jvjSwp+54XYPa0dRa4kx5u589/c5/PFiNcS8mQFoV+Fus/7vDDx6yF3vm546bhixiuBtCPU135nxsPBmDk4qwwztskQU21duw4+VjJSMH2OG3Cy2o87aJGjnXP4X+aaMeGitegUjHW5qIZ/fY/1f6jl/Fx5A34nxAIBnNwUVDZtDsfQrd1mvQ0JwOMjPnTzlMIqjqdGsS3LEmXusSCj4zoS91eptuK3CnfdvmyGGaLEMKVt5CGxriCjeOIyFXhhjN8WVFKNVUuRgNpc7/eUT9zGmhVrbyyuzYGlOc2X6pyNICuTbuN6fIVLbtGoxnqbyWvzSH4V4QaWD/bbTmNGDWtFbMTs8H83P8FcmcpRPjMb4Jib6v7/ejbbv/Izztp3QFxhJJS4seNfQG49yJUZDwu8MhM4R/u2yut44vFigY6VbYvxbRoLa/1Db82prh9FV/t159lrY4UpGUJm0EuIGjK34mloha5Eg8rKTn3X7vh/MRvHaD7u7GInK1HrXaFRiSUcFACD10kWYe/J63hjKaJCb6xt4ibPv4MMjMfhbJngXb3wzZLZS3+sw9cWpSTS2etmy0cHuuqlwLKSZoJnmAfVtRKVipcIYu46/18PbCiM+Ez0efcGYiaKEIcYvoI77qGczdEt43u1zXDHUhu8GfhXdhnhvlp1J36Juui/iGbRusnV+eek7SH/htW866IXDwURrkkNEEPGUemnOWSLcQKHrCK7iXK5OUML7i4yaGA31RFQwTa7NLQ3I62LeEviN/zr+uQVO6SAdpprqSfh+mQ+C4q+vaI9mmU5CiR/ivnBROp7wAo6D+CAfWsGaHnfbWTipyvzcR4VEfNrNBVB0rRu00/nZ19fNw9oKOktL4+MBAGv8PTDzKSdNe9MetPZhKVfBr1FYVkTqV3jXDVJ6nODKf+kyWp9ZgFQrit4DzeOwwYE08MaAbNwz4ANpvD4RV9uYA9u8nguHyFEfXFImLX1uaYLiWHYk0eytC0kt5stODWlB8hNS6Tp3QY87g5HYZUwaZaY0CPMEr//z/tKOuBYaEl5hgyH1mdRufSgXtRUBp/BSnZN086diuJcwS/hsWRhezmXuTsLOHdUGNFR2BfIhDLTdjY23SK/Tz6+AOtk48gYUYpYEG2hmxV/E/eF0IkfXMj/4Ma4cV/K5uDZvioLwci5wzSnW6NlAR3G7eRN636ZAfsGCQvfwmmooeHBhCCgWQ2lP0qsXH/2hL8zOG19v8/qoPbLEeV9SzXnpfhCx4DU8nd+G759I439Om4mApUz1JtSTXkv7XEfkBr5EefRpEfSczKxkjGsRHghaq8ukeiPAjI5wuEwwAOCQ+U7U76f5MnusPayG0ADZMPkp7MvoPo67PgVJa5mfE03n4vtry304P6TksSn2L3T68+u4NGVsz2SA20juOEQCmEGsELwZuc/MaQi9xkVWMfUwdisxMeDxrArRZhT1Wx+PwPZyOs15m3icGote4MRHbubtw4Tg5HkHAGAc/hDOj+iA3lMaht6HeRwv63iv/efK4qUljRjvBHHcusp50bVgNWa8oUkUsiMSoQf4XO4VZD73ftwGaHEuvCvcg7+G3OwejJDEnw4uqNUJzvBbRlrNrnD/bXRT1O7RPbrHPzv+OQQXtY40Y3rQd9y3rwAAjFZthOomJsUb5p5B5jiipBf7XPB7E5GBz34WIj8dPw/vNnPnnPjUG72kmATXqFeEoJM5jFxsYf2dCOfJJ6KB/So9IXeMO5KX22cofSFlPLGsChPVKMJqGP/Cz41ETDlveJxFSyvx5RRLp87on8ZFYaK5/NsuKF1N8fpXr4HINiO6cnpH+qzS1xajB3OXvXZ4Kg5NJM3Q/22N20E8puXqMniUQkH+dC/mpcJzrCC7yxQAIPR7K2QDWbWh7fYGO5S4312edAiSq7jzH7Jk7zXjiHxs8qCx8FxmFfQCeY3uT9qD6YLrMsJqAaauZTH5byme82pZP8Ql8IUpC6JWYI8NqU/kPhX8tmLlxMvmapw7xvjE3acslG8VuofpF4mi3GqXQFGVInTMrXYMkCElKr0nBaEqtulOyaAZNDVqEu5osVxIzGUWyh7wPpzyi4HiZNL7HaZESFdFJODlyu8di7WH8jF+VmMfR8ydxQYIEjtHQMyWyXrROBbg+3/7ipO6jF+siyhDtjZ/1sL0DJQELw1qfBKNieU8zt73iUrPqxph4i9Ww5zMDEPpM0Evvn71OLOA1P1EyCVYKhHN1dYTDQaoFsL9IFHkSMkWCHszMzhDYSIchhCJiSRX4mUQ71n4LEYrFhwpg9xUonz9RDtIrCAF1V/xB1KpPGapzLkIiPTk98+wOcC+oGJkbSSdbSnRRc1Pft8jbhKMJSsAANN+PMa+IzyXN+eItIskC2Bxi3/PR2QTmjWIGGsDruPTU7KidareWKlNuaRxBtGg/XMneC9lHGlvbB5En5Pm5q9VhHE/zveFSkNx2YnPDLAQ/3X8cwtchiDjqvB1Ei7VMVT6ZPgJvLh1BwCw98l2BAsaxxfEDcN7TUJ84zwuTnNu3YLtS9IPz2NVCAigfqS0Ugyx66npKW7ohYqL1NAibUhxq1wKMNOAmTlLlSSICppD6i2di19b6PTdqtuLV8fpHJa0kDrFS67Ha1lqJqdXZWOcFx/UtAkzcWYMncFbRnawOUjHtFiTeo+E8GUcKicN/j0sAWWddNziHJuwaDM1v2kGujAs5MJnMooUQUxnBIJdOdG/v0rCrkI6xm8X5eHCZmoj7urjcE2MNHbmVpbbmJ05i4hoZvG67qdj0g2ed975QvQS5QMZ2foMi1bGAwAk1ZiTy0l9DCcL6kcGX9PQ6zjvw+tcHdQOFtQwShhCM4ylWmKlvIGXNk+DzhzWLPaTv4Zd73gcwx4PQdknBqC9XmrjeTAXFNXHLPspDJXHtnWeAACjnT8gO5gLvL/IWQS48Z6cmcrW4xNVViBhOh3EhOlP0JHAhajf+WP4e4y66K66TKSm8lzkbShXPE8XQepjUs3qBBEE1DGjtn7ic1SOp4Swqm4INm9gJw//WpZ4HV9WhxFyvG7VlasRN4kL4NGYOBwP4PkvfjoG57ZQTwxL4QLv/CUXanKUKObNPwLLKVzAbru9RaI7ZZGeNe6I2005QiGV2u0rs6kQXsVjX6T7GAc7OX+3Ku3BV2nqgu37zHH9CsO0S44w3CvVeQq9vBj+HWC3Ftne1PbOndPAt7vcVAs/a8PXgHR03H7qZ/Wnj0P1A4PosTE9MWSNoKNMAzBhB+lqkvYitPWlBjpciXO5x54vuG1+BwDw5eFprJXmArdZ6BOeivEaPOs7Dvt/caP8X0Y3Re0e3aN7/LPjn0NwIwYwy+MSlIUZu7l+z6pbhzHOPNXpQiZQayUSuTpXApsFAqtsFHe99KQm2OVzZ8JiIYim08WxSC/BCsFLZ6av7MKA0xR0D+/mvx/jd6I2jJRj1IZ9OJfEne6AwgsECNOFOxhjjzRp0mOdE9zpZacb4eRGHs/0a0ugJ8nqC+/FlSi9rwwAsO+8i9uTiTT2VNO52mH3Gc/tPQEAmjcnY39Piu1X49dA7hyT9VOinDHDmajkjx13zbYuGSx/SUHebbkrvi5nTi4oRBeBJXS94jrUkdaLXTheBRJxnLQthaoDHWptlWvYGmAKANBzjYSUBZ0DoVcB0JpNKnl/H13GtaFT0NeHFDxn6FIkPidKsBd+jsAbNFw8xt6AVgSF6iNlPHZVfROoPBI0T8yZipqBpNiaF8qwUYFO5YD8uZi9npRfbwbPMyUqGdq3SGtuh9hhkTW/P/z0FCTKULyeF0/kcFdICit2s6Ik56obpo6kDHDkUjoCe/E4/R8Gw+Yy6fPgaNJEHfcl8FvhwvtUsAkmSqSSxwc6w2Ae0dWxtc+wrp6lX49SSR2lP1VjWSjn5HbFACRrE5FYNu3Fvg3MKX51OwnFvYJ5dIZu+NiE76jqw3zgmGM6SLAiKpUqz8DRE+zXF99lgMUmgg4336kZaH3YA4c9zNpN+TYI7+spt0ipWKPoDSloP8diJO8nUm54QOaikfAHtbrMBDrdlMQEbd73mJpKPLIhlZbJHgDHl3SBb+Zx3vTXeYjpyUTJPb7mAH6Uhda3BaKnoK37guBSeLzn/YneRkSs/k0MybpkHUM3rsO2Q5QQtp+WQ0ABn6MsrREI8WNBfqw7s3//ZfxzC1zi5XgAQN/+p1AWTrdGoqkZwkE8VX/xa/ATZ4uZJBcXHCwkjE6bSqoj21cftwvotoW7jMTWUHo2M07n4mkg27vUFN/Avj6EzsM+kuIt+xKHP98YkQgefw1xRzhZoi+swWlX6nVNUu1oFbyiTVOVVLXf6UikFXJSnC3xgN9RPkQPtlyAtR5pYnjLfvgVk1afW09KEvNCGjd6k/ouTZmFOz85EVwG+qKqhG5f7sAtcB7O86o/Qupn4DUBXiUMPZs/34LPTaToX/2FMH88oy/eEfvg38luIOmS/KwXy/tB+g6bbc7Q6MDyMn7GyBGDsECZzTtbZRMQeZdutWMddZv7N7VgfYBay7XoXahRpn5kP18M/vKMqNwv8cIWZ1KmFANS6gaFvTD/wwUOCjIoF9TaqsvMg+4naj7bhw/CdzFS85gfDCQnSw9D9FJez4oDNgjWoFZ2Q3c6tCRI81NS+D21Q7rIkeW9HlBaDscRygCAe791oLiY4eTMOxNw9iw3oHU/uNlVPjmIm7p8YO0umsGkmPSrj5kO9trQWayQ2oIqU7qyr9KppQ7akgql+6wfDqoORf4qttH67JgM+TpS3m9VpyB9g5uLYU9uAHZrYxHlwHpPxf7B0Kwk5XU4PA395NlsNG+5HI4s4HwZ1kzJI3uxJ3a3ke5u9FCH3y4uDIMlC5HZQa130O6DOLmOc6fZhr+Xe6AGig85f9Uun4X5WW4IivvaMNuK8/eNWwimuLAcMdGbC9Ktl1exaygXy8F/XBHtzQVpzYMtkKmiZvtqWhu+f6XTfqE/XeQgIXV42vPNc/MLYuBkyQXwqdEdmGrweu4bJgyxAdxI/pfRTVG7R/foHv/s+OcQnEIInb7UPYUwKeXXF18W4tcOCqxDb9xC6yuK6df6voCSOEtZ4rq4wzgMT8LhVcyM3Q8tRdVMCp5KwS3wUowHAGwPjoKsKMuhvISJgPzM5iPpDEX/Q2knYXuMNKEq8g2qt3MfkRzkiretdO1a6ol6ShyO4rseM3Gh5wfCw5C7966ht/FWT1DiM3guDnsSaaT3YScUT9V+OHj1DgBg24/dCFeh0B8nPA2SMaS/Sk0zUf2QO/wWF+7kvka6UGzi155vLmPHD3YQ6f/gGh5sIOraNroWTT9ognxvNAUAPNO5A4++PGcf+aWYqkmUtN2+D/qDHVJ+6i7G4y2kvHkXSLmk4sUxDaRawcby2DSaIc4Xjc9Qfp+B1n0/R0P5ElFORz7PQ0o2HPtkSFdD/GbhSyjf+3Bj82VcqmFmsSztMnoT3LKhAAAgAElEQVT8Yd86ZVleq9xUVSyrJ113sy6DjTQR4wP1y3DRIqLYIUYksElBFxWewQCAR72jkbWLqFR8fQ7mGlKwX7x3BaSGkEo+aeG9XmehBVk7lridkxPFTi+iyO1d+yH9mzKGaslGZGgKmhP48Txefx+O8D1EkemqRrguSvrvreKOJ+KCl2MLPcLKyXRzjVyJahcbVsDBmp1Q8iz34UAxTQF39QxcLiS1O6GvhWUllAqW3mKZle1MDdh+47x/W3sdDQ85dzx+mOLSTDKCR75O0FhOWcc5itKFVFEcnnTaAwCGG83G4iUMp/fKtEDHMiK4pFsboXBf0EVlHMPEnQr2GHCB83qd0yDs8eF8qtoljqOriVBFN9ZiQyavwUc2k8GmeAmIKjJvGd1ohAhvovG8ypFYeYR50yXLQnH7O9nI/zL+uQVu/m86bPc0LuPeYrqa+6vmYYIsJ/e19zp4+Y0Pfdq5GDz/Ta0holwZAOCQvBWWVaSJNX9vIu48a+HSC+oR1EXKUJLgD6PbfKBmprBu0NrFCKXepDWz31RhSg4fWLFz+vBZQItccXYQHo1mjKJPGC1vz1Z/pPTh/1fPmg5XIT5YPWSeIzGdi+TLOH9MGc46wnwnLrjblg2EfDypkdCRs8gay4fv7qx2SJ/nwyL08Dda9DmLVjzkQ9+Z+hnOQ0gHvNN3Q1yWD8sGq7m4kcOHwevDYzj60VXOWMB3HQy/+Bhxy0nVtjZpY25XMADg8+IQfDtAHXOglhVm9eD1zLpGB3Fa/+9Y5MgQZ1vvlZA25O9t3jIFv9pJeauNAnHnCKnwsh1cvMbm3sO73awMGWkeibQSuqR5a4dDvY2unf2Ma3jhSdlAr5wu8YvvYWjo4mfVqjxEyUBeIymR71jny4Bw3ANuRG728hjoSAe080kHJpVxEzmhpQTN/nyYfvV+gaZCalDXd5PWhdelQG8Q5Y+epseQl8o6y5y1EQgtZYeNAUPM8XMUqbC4ExP7kle+ItmQn+syZzLcRUm7Jw46hM19+bdlm+dAWoJza8RY1lKvqe+NAhFu1mfsn8K8hAuRTmsWrsjyOD5PyMWlw5wb155TVmk9lgyv97zG8+pcobudcZfZus+xUYYyzcxJhzF/KX+vwpbzxr1ZFJrWpJqb/CTw9A3ntUHhIHTd4zklD7TGzYHcrI1ecG65jK3CjnDGjgqcRmBSMef6gBW9YSTQQifbqeLKsHgAQEu54IU4+9ZC04Idq/Wvu0HtKr8vNH4gxg6kfvur1guDm7l51NF8/k+jm6J2j+7RPf7Z8c8huKSFhMsq6jfgoMgsk/77fNxzJSx2sFGEWEUwACD6/DIYTyBCSfXh7u4zbRjcNUjh7OT+YrYiHa2lm/SQHMEdadwUF9xLJC2L7il4VeDE8zDRIYU7J/YZ9pu48zjKicBTkp8xPWoB3mWQGmwcSJMh+dMIaJYzDxZfnoyEF3SkjiQmY6083bKtE07j+WyiADEZCrQFnQ4Y9YT0JHd2CRSPcRfWlfsNjRBSg5t165D3ivTpSTN3Xg3TXHw2ophc8iQLty4wdGndpI8RF4iCbki9xo0fbNK5sAd3/c/Br/Ciimgo6uQR2EnzGpU8LYZPEWtY57gqweAMC33rR9Nd/h59HiLVvBaze7RDOIWvmsu4ehEPl9HU8H+nBPdeLJl6KEA4mnGK6L2N4WvhiF2YaE1TZ9dWUdzWJALdUjINrz/R7YzKo8tc7WUAwyCiFq/sQDw8JqDmP/ui6zyd5ONTKgAAPYcLoXYwRf9nZ1Ix8BvF8piqGdh+jxlK0V1JOC5GV718BEuFJCfvxKSbgnbrQ/rBPlFQoncrBSo32XFmzowLsI3keasnca4YlzXjqgip9pUPi5HQg6aU8NPROLiC5WwTrvhhsAzZhlsif/+I13ncfUaaaGsUgnPv+LVqTQ9c+k30VHWxDdvHUd7IE7yWr22tDQpv0lh4tm06DvamHBPu/QfzVJi3XHBCGKUqpOBFp3gtNBVj4TSQ1+h15GVcmcl5bV5tipoyIrHg8DYsW84QuEIb/17WAWksvsvPKFGOhKg+r0uErRSuCdNQuNZsALsdAld9l0AG0dHE2zuUSjZaTMJ4HTrxFzw+QF+c137OLTmoZjKPB3pr/2l0I7ju0T26xz87/jkEZ9+Du3BVkhjW1DOTtGrcZ0xLYnzBYH4NKuIpwkbem4I0YaKPqx7UwfY4rIaFE8XvIa9EcFiOovjgmBVwyiG6CrWYhRuKzB+N20qUMcluH/oZs332WsdjcMomiiheYgBfV35/0FEtPBZldGDnUEYgzOaUIb1CEM/QCMRfV5YZjd0qhzmtNDvmyS3DR0Gx/KjH1GLcHrzCwd5869TAXhUY+4I7p+xFO6RN5254wq0IlXqMIizczvKW1uAfUDYhWkrOeYlEcYr0RaJ+WN1K7WPe3GdY3MaOHOFyNAvKRi1D5k+e683NfRBsyRKhI1uLILOZWauubAvUShMJ+xUQWYy6ZAKhfdRCZ4rMxe4zwQCAw+pBMIpnPkwsEqj14XnrZfAai/ibw02I6Czk4mxICDPjdeuEHg7WMos1cKooXG9QyH90j9EC9ZoAXFpAdHL/mA9OL2TVgrC4NZx68VxOjiAqLf/1Dln5TPqfnHIMfroUwncq2iPnPqMR9WuzcHQEdb47qtRVS+4Y4Yag9OjZ1nI8sGavtqhmO9RVUwM+olqOzFiaFj3ms2xNxaANU7s436yM32DiPmppoR6jkaLNuVrc5ziUUhlHOeVEsX3FBUeccyCi9DE3RpI5v75R7obEI/wMzbeeqFJm7KYUjC6dn16LPY3UVcue1EJsOlG1Y6UZpDXIdCbLr8KdmSyP+2rIuT5XaxmaLjHHOMMuBe+Os3nBB+XbUHDmfXqaD4xvJT5ymsV7erTBCV+1+fw9X90fkV+Y/4wuWoUAQ1N+3vN0zBeUTZ5xJSN6FtGJL6ZElzPq+iDCnpqt4rPHmHOX832uxRK8eExj538Z/9wCF3mJEFqxYT6GdhEK561pxVB3it8r5s9HhQtrIEscTqGtmS1YTGPoJOn234qmeLpNRm4qcPO+AwDY86o3HK94AgA6T/ZGr0KWzvSw5sPWXjUPdzJoXhTUaEJoFMVmKW1fXBJMSOkXD9Dlywdu4Vz+veoAJUQOJo0ycZJC9k/m1Ww9JsJAg4vPkJBZ0DCl+XAzjA9LvJc2ttWQyiRIJWH5WH6eevpBZBwlDb7ttQw/wzjhRnqxE0j4OAWEzSWd6y8qjvgkunPa5m+waDj/3u7txfg1nA+AmjVdrK0Hc2FcSLrw9Fo4/n6mkL9why/2BNP51L9WiuoZXFznJ3Jq1Vy2xEpriulXJzkiXZt5Li1TZ9gs5gK9rkYBzcV07SpGkYpP/xuMJ6uYd2tPSYGIKIX+V7EDcCiFAni+xxLMtSUtaxW8uapT8zAsJwpezahRgV5vuOB+e7QRPhF8kLds5/1PklNChzwfmoSsn1goCNDWqH1B7wAuqNcul+ORAanpqwy6m5MH7sAlUzqgIvXSsNjK69lH4zJ+/+JGWv3GF2Z/6WZvOkRTZOfrcOhJUJjvZ56HhkCec3nfSIjY8GFPNdZG4FDm0uJjuRgWrY1Cgypzd4plq7AxmRk1m/ZJiLKnmVP9bg2qN1AeuLaMYfF5bV2oS+MGsEgqEF4buQnGCe+Ccw5poLjmbfzZT4p5eRk3bcWUT7jynIudeE0d/C5zc80IVIaZNiUEyxON8FMkZfRIodtbPNMYg0O40bRE+cGkgc9GXfxsdO3nvM7c8AiTQymFDM/nHMrIdMQtHUopLXpZGP6EXVjEv0VjigYD3g0W/ZG2i5u1oBrzP41uito9ukf3+GfHP4fgfhdyBwlrD8OqABoLx11eYeccWu67dcswv1hQHJ04AOkT2cVAYzPzW7uj64EMRiuipffC3ov9qKxzKlG3kehwvpMnpg8iXZHMpt0uWxmJ185Mkitsnw3PUYT1yuvN8c2MFLTNuRq1VYTtL/1JST7oTMFTAZ0dPvcF8rpYLrTBIAO9jrOsy+lzBbb6kQY9V2SGb/XIH9gxgyKt7MmfMJnL7hCFs/ZD3I/06lXufIR/ZrzC0I4xhOlTQzHLhNGQ/fXL0CXP5mFRG8xw+yR3+xVy+hguzp36TzzpmZj+W5gOYUvsWt2TyH9PlBHbsw+GSDDOYiYsAYe+FKy/PiJiDj2di9ZFpMQOqwJRe4WmxtUQeVS6Eq2NHT8LLyNJW76vIGrJSdsNyQ9Eyfk9N2HvOH7/fsYDXAOrLDovumH4L1LlG1qsluhz2xxPJhHhCdsWYIQ4kWh7/hakGZMyLnESVFA0XMAFV1LKudDG1wxGY1rSFVEznEjsfvIS1Cczp3j3OqWGnXdGY72EIGGv14AEF1YW9AiagIIAGkr3+/zFxTE0VGQ8eH1eZb7CLMGLaJrKZXBCkfPlbv1n/B97X/qXU9e/fSiZUiFCkjRIk0qIotJlqkRChpLKlDQgSSoViUqGikjIVFKUQkmUIiWiJEQDokkpRCQ9L47zD7h/bz2tN5dPV53n3mutvdYxfdc+Oow5zDObJsHgGsvPkh4TGc6wXYP4PMZBatVscHARkdqdzwMw2Y/lYBaJH/HRiWjW+zbR7A8xPZjPpaEkPW0B5h+kTFG+YCg6BWVS3zzNcfM4++udLo2AWabdaMriNZep3kXhec6FHeY7MKOQz9HtVaNwT50Zw4aNjN3kl4vC8xfR/OgzZSi04DPS7a2NJhVGTWqnp8Mskfe9W5/RkCehAfD8RHZQ9agd50PJTPpfUMbOLjKXyjXx2DmS7AfYiP+1/XPvZLiVOqEbAOSmXoNTDHNUwsP9cCSRNMl4xG7ktPAN5jFDfsLPmXz/kDyPTZJ6eA4qz/hmoD/N2pBOZy5Ly30Zpg3kgKb9mIDL4/mA3wYnhXZhJVoXc0CnWipB8azgJJO3rVjcxJzYL6M3EOlL2uwUSBeuI3kH2rpIM/LurcTsboZQux7NwsoW5pm86y5grCVPaVBr4uQdUDkGQaephxSskcbo0zzdZOjFEmht4UkQomJTsWQe6dH9d9Sl0l6vQXZrq+AzruFWKx+KJdJJGLGS2s+LZ814sYiLyOYuBnqfLm1CwnNSEaUmG6wbylNWYDwSs83o5hqnrMH5Q1xoNh4hnRN+rodlUXRk6w/5wLJI8Gb3H35IeUQaX+DhjOo1XDx/VDJrpx2fgPZqZqp+KtXh0xOOQ8Wbzbh5qgYAUO4eifv5PKnkghEfZItVW6HxhMHiMRu/Y3ULaZRjtDm89bmY7ZpBxzJhzkpU6PGe/75VxIcAUsr3bQdRcJF0aMSrM0i3sgMADPMjpS7KWIjX+/m5MSuv4F4nF0brRWro3kOaJxq7GDUNpNXDvbioj7v0CvMbBccpRY/BcTHe05oPr5C9lIvowZz7aA5iWHajN/uy5vAoZJlxI+qIykKvTLqvbqabEJFLnbIyMAkdFXTji/dy4Xh19g+8/JgkSJ1tAfkMLhBtK9wxQJ3pgXfKfVEUxQ1o2HcGdx+6yWH/C1L74Z/uQ16H7vkxI0WMUuRnb/KtxLMgrh3fBdk3h4oBsFjGzxo5vwlR9tQHUdmF9GOCMHukArJ+MGdaM5abRODLCQgupNam9NQJ0Wp0on+cnoFYPYKDTfPfoVOFm3WzaXjPOxl6Wk/raT3tn6OofwuJACoeX4NxM4XbijOGGHiQiOP5QXnYbqCJkPltJpr2M1TzqoOU0b2wHVcMcgAAY4xDkDyL1KDpuwNShLk7B3n2RnBf7mQr5rOSQaRXMtoimE96YGwAFWFSrst3y6GmSqqxafVA9CmjQOyynmghopcnRh+m+C23oxMBQ+jOhbdeweFm7uRVk/9gSAmHSvwmnTDPvFgsX03xW/OOOfqmEUmKZHxB4CPS7dA9NkgeRMT3fRTpoO1RZ6QHMLE+elwwRP2Iruyzm9H5ihRM0/kFSgOJiNoP0dT4VWWP6lTm66RV25CvKTif7HsJyt4SaVg82oaiafy7c0e4I+dLtSJ9H+le6349pB0hZTx/Tg0nBnEnn9gxGr07aPZoVdPVbPQqwLh9pP+DlwOT0kiZZJbshOQelgtd07gGcxvu9roxfG/AT8vf0JOiyJ56fwYu2nPXX7r2EAzKYgEA4x4SJdd8UYeOIfsnvvEXlJ2IWn8ka6LLib+zZ5QElJ3Yd3svcd4g2QYlJ4muT5ctxM89RNImj3ahf7gAdW+3w6RoZh2t3vCgzCEZdrCTpESx/MNAbBrCfwf0u4YVu4mO13elwDpRkAm7QLdX1LkAd5bw2p18rNCUxyxkt7IJhtwka3j+31dIF1F6uFLJObnrUyxmldNkOtNmi9QGGk3z96jDcy6pcsbcURiaTJTf9wGd/Q/jjeC6XGBqXE2F6n0aTYqZ5egoYvbNOScZx3pxrIzkOb+VFm/HX0si9+ox72BlzPub9n4Osit5ksuH0VNQ8JQHYX7xJOswfV+Bb0f4DBxzHoTdv/h5rk5COFdKDPb4lR0uD+Dv/1/aP0dRnWTSugGgxkQetV9YWrPYwRRPYxh4nCkdg7YU6lz3+rYhyph8fpQ1B3TJaWNM+CHQwSacwVUNUruWdbao0ODEEVt2GV0GjD7kf+YJpjPbDkB2PRe9by8X4vxSumVbJx3E2PGkwUILfWGSQn1FqJ46wzOHBfA3MwIAiMguQZgW3a0Mo0Z8ziUt+Tu6E/JnONAKXizZ6nIeDz9pBjCrHDegrxX1RonqBWi6w6N8GjpPY0FKDQDAPIwua1vnbmwyZIzgyJEfOHWMjtbzuDwkp/E6Bit0YVkZF5RH7pwfA6OrsTKIi/OT6kkwO8xF1P1LM16zggafp+6FpVsOAMB5N2lbSsAPJE4gXW+J1kOsveCUV6uzEFnCB99iTSI2a1CDun2MdF0p4QP2H2eI2kFkCt4L3h0x/Ysi5mdxwbFf0oGBg0m7vt2k2yb38TL2qFC73LjmGXpL0skbvWg9lCfQ5e50Ydh2uk899NdSf+q+a4TN96lt7ZOKwwBPjnvdGDH8/i14pZ04dUyhj65oimJfObz7Ax0d9meBZh+MaaIDeDdiIBy6SPNMD/HhHf+mEz/DqXPG3A/AQnlSu5d/7LFLREBXhxXjjQFLAlUieMjn6cUr0JDOeWZalQDRb9zEFyjZwHEFaenvG6lI2kb9WeEX9dqGeUsxN5T3VznqGarqGBkJ1smBuBK13JUPMmDgxbmcnMtxqmp8C4NflFJcN7ii5SjLCvUdY3D9JAHBOodgbF5BrTdqHKUbxcF9UH2B2uv6kHson0TNOlblGNwvUOvusFDH3cHU/xr6ExBM3/4QI59Qgonc+Qv+SyibfEhpwQ0xTi6ZinqEf6cD79b3fA9F7Wk9raf1tH+OopoKdqOulWW4fok0ycxsKt5cYcar/M1aDHhDBKCy2Q79MgmHD2ziLj06SRmmA0lXr3vH4YA/w6ErPz9CXjPd14tte9GVFAsA0N/KXeWtwjy8syMKrJjqCrvd3IWS9h3FmAU842zPGz3sVaKQm/qIO9Z3ldOwz+J3fz63AWtH0oXcUDcChYLXCf4ov4SsQlI4czWWZO2JU8XiW7ynwYvlYTyS7tYhEQAbmC/6+GkCTAqIuia+I91VbH8Hk61EqKdG/IHEoRwAwMtJV5D4gjvq9/hurBtNCn37JHdb38x9OGJEVHOuVwxmneS1uWxPRNUQivpygW5ofMf8VPkCHtC4/89njE/muWF7PCuR78yfe5uGoDGBdEZi5RZslCB6MHrCDN9y+0qsrCbV/BVjgkOCHOAskyb8nEM0Pr5gPZaYECXVXyO6XjtTBX/20EzonjcUKcZE0s2dBaiN4n1/UqBrrfgkD9+LSC9Pp3RjqzXNoDLlCXhyl5R3mf82ZK8jClJ0Ixoc+csFofXMz0m3qqLfJwbHq1Qi0e+HoI+OBiFjIVGSrxYpoNl/HUhtJWq9oJuN9mKOZYXNRDhu5xwYcSEFi5s51ibyLElTvL4aN3bS+Y37cRWjP3NM7o07jVWtRK4TZXbjy2BKAWfcmSkrk9LHhDyaWe9WKyP+BVHgXesiOJVwrH3u2OPqNrqarf2J/LJKlmL6OCKn4rRPKC6gw/kqxQV5f4iwo8/54eFO0k43Ec49y5HrkN2P5XCfr8XBW5cB8DlTpJF9gge1znEwhPRMzs+pe5mv0yk1xO6tzCDOt9uL35NoCO5Licb8EpZ7fbxVCrd2zg1Q/fmf2j9HUZ83GncDwDPp3zijR2d0aa/neMW0A7JkTsAkhHqHRJAHxG/yLHzf86zVNPOUQr+rdLpmCfth005Ssd4T9eF3lccY9LEsQZgj9ZredZzcF4KOwSuMelafQG/8vMyFb55GPnbLEqr7bVDGk1+MEbzyoMajWnQUczYKBjx7OmY+YJRhllcjhgtcxqJgKSz140Ptakv9aZv3YNhJ8u8WrjyOoAu8jlG1vvg0VQ4A4K/ggOSrfJg3/uCseKu2A/fnU2uR6PsJufepYc0O1UZrAR8+u/xlkAqhZim1nA7gp8hfkFehAzo1aAiuaJHOfUoph/oKfverMX1wqZ5umeQuvruyIdMFCwTbaF6bHq43UlfyqWhBuSvp8TtJVbzYFQsA6GrmYiJ/IgNCVnR7fWO8sXwUFwO50Y6478qFT2KiImReC97G3uwPAFCb0I6cKmo/mzadh9A+xii+LVKHjAb7wiKKL75JUDLEiIN8YGO9v6FEi8744z412ObFEG7I0EiIHeOCIhPIhTqm2BpDPrPapbZxMkb9IEUtfT4emYF82C0+iyJUj5FU7ZWkounKQ2CxgOOwTNkZk5ro5puFfoTOdjqjBxQKEN3KhdRaQH0nHC5H6yHOw+jq3pBbwlhGWYwIXgnevyBkMwmDV7Hvtq6gDrjuaAPq3tAxHi39Dr0MGH8Skl6DxgRqpebaLnhszRNzZj2mXKO+fiCsf3Cx97/aBH8NLrgZXXsxX5hu95T9yviTRwd62lduymcSbuC+MMem3aoWx6RrAAD7+yvh1i3+Xfp6BYwMojY+/xcXw2ke7Ugpo1vqdm48zAWv33RTP4SwfYITixsn4z9BNKv3JIceitrTelpP62n/HIKTT3nYDQCGwwfjoyrP7m/e5A4XwVt91nTUYnIRUUt4/0ZEutB9PH2Uovju3iKQIXpH+8q1mPqVVE1Nczb0A4mujkzfgFhF7g02t5n7kRCyw5cDzD19el+CvtoUVd+PFYduLK8jfm0mugWnmpzMKBV81nZ06ZNm/Wk/iSR7oprs+0V4bsZrrp81F17LCYN803g9r48eRtkl3segM1WYaEPhPG1CGVz6sGb07/jd6L+OyEDzAmtDq9OfY68BUc9YJU9cj2ZYWHZOHl5ksQ40rXYDWvpRQBb5TQHZoUoYvw14z6fu12HSbYrlpvnaMLnIPNMj3zwsHMP+KFUhgp0gfwi6Y4gGg5f7QvEU55vnlbl4k0QkJWZ1FyvWk4JJviEVrUj+hXhFUqOS79eg50V0Uu60EVOdWKMp53cXh2eTzjQ6UZg3fWwJlzesKdWVCYfSVqIujTWWuGZM+rxaiX3S7XsMhnpE5YOn1cK0jgdGHp6yDN7jKPp/EDHEMlWirlvClDa2btwMSRcaB3pzGhERx5D1x0lFeKtHg6NQrwX1eznGqXmUCQrzR2DYeo716IJkBJ+iPHLo5yxsecaxdnYeh16/mO0LfsVxjK6WwkNL/tuopQ/EVjOD9z3TDq/bSU0e5HTBp5yM5d5HIkfbcXEwP0JEndQVC/Uw9lHqdH1s3UEWk1wwHjr+NAb6SJFSDx4Wj1Rb9qucyg4EppBKKiQ9R+13mhojhKsgk0W5pWIBEVlb5X3ETSOCvXMiCB/UacpM2lqF51dJV3fPy8EoPSYFvNTYL6LXBiIlmHKS6fR++KxKhz48YxzqVTl+F3UbsF5QS7t6f0kPgutpPa2n9bR/DsF1VKAbAMJN6rDzMHn/fd23+GbGI5HLC+pRmECzIHlpCqoFMYhfY6nFmbj+wDkRptgzdH1xawrF34R+K/BxMoviX9xthRYlJlxVJgKILM3GETPml/5EJWCyQPB1rJNA/WwiBt0pJ7A3lmJruCF3OsO3oqiYz4J3+8yzsI/id+jbjYTTfJoI8SZP0BzFHS7ehoXiJlNcoPmQiNF0YDbcCqlnjFzdiRGnmG73G/EEc9X5wpvCVJ6nNlR5C15bUUC2bG9D9xAjAEB2uQoa9/KmVk70xjoXRlQaZlOPPLmrGLs7aJb0MvmLoixqIyr+9th2hSeP3FqyARuWsm8f+FCfWTk7CwHezEuFqZTDXJtjIj1ECfvCiB431RyDwxLmspzM+P/Fsh9hVyZzdwp95PGfFq854VI0nGN4L0trhuJwJdHARheivamHxPGoD/Uzl+4tmKZB80L3RBfqsqnj2cwkGj75NwXHTZn9u6nnhY8+1KAMDs6G91aioeodf3DQmmK/SAnRUkPERZgqUoP9lDkbUtM4h24LRSD/LBG68IwYhG4i8utwYARmjW89HH1Y8D4yYTSGDOY5cQ0LniOzLysLunrnYc99Rmker2Wubc2bW4j4Q+0ybM8y6BYQOWVsbUCpK8dn+uyVEHbjvD0eTqTaPjYKM9qox/X/LY9jmkTonpaeGLuA82zdlhOo2shc5KFUIrwj8pPxppR6a8aTEMiA1zb//jcM2kc97tdbNSjG04gRt+Pv7jwuBK8M9vEBDyXImeQAAOLGy0NtC3W6s0o5KJBlli6lmghOyd8WJkp8Pp9OskTzf5zLqwqssXgKNdQV3iHIG8NnZnJu6v+M4P65Bc5H6UY3ABR1mCNwHSlA8BEfSJbzIfNep4HCkRQrT7n8hJUcB1rjNvNLx6Zp4ngzg43yJX+g48aHXnRzBaLyCLl3ps/BwzLSslut5LMRxfPgo02HsErBB5YaXAD2b36EgYKXMnuE+lXIsUQAACAASURBVODzPD7URa18Xd2+97/hMZxmQT/pDHzvy0VtfNkOKJ5j5i0upADTb1LU1g0h9dN3eIQxSxn0VZ/4DVND+aD+TNeFcwFzcOKHqyFxhadijLxMyiwqNAe/+rJf0h49gEQN6dWxV8UYO5wPcor9Krh+YKbv4xoK9sfrFsFBli7kr5+D0WcbBXIr7Tf4dKEGADBhfxaWT6JbO6uctbiXq85glxfziFbOA6BkTgFdRuccNmSR2rzNNoS0P6mwUiAdxzVBJ6G/mbTMffII6Olz0ktPH4P8TgY+642/IzSSfbAogs7p6X7ikN5IAb1lrjr6DOdC21vpKRxn00QQiyPVHPehHCeekiY/Wb8J0r051rK1EliVRnFeve82pAjK52y+kl7eqGhG6NUUfoejFIRNGHTOV/mOnbxVhCmcwOu9/gCAp/cZll6/PQ8y5oJjr1bWQi+dJXWPXGNgJzipRtkkFwU/OcYvNzDofEoyAtoy3BgXfZHBWRPOl87g6fh6hfMixfMw4qtJyCZZcUOVG78Xzju52AW+08IWEVL7LQdykHKAZoB60FDI7OcCtucn/36Ldyt2W3HxuaVzAqEapLlCu+0QZclMp/OS1Vh9j2Np0sqxERmoD9M20ucZxvfhc4GfsWGUMALLKWlMqu2L9EiO63dJ9qfJM0OYeFMSON16EnffU3oR7/UakWmcD73vzoFiEzeg+PNveyhqT+tpPa2n/XM5uNa5tNb/OrTCawzLgoQTDmC7P0XhQwqlmCpHpBUnkw7PcdzVVz+gTa2VUQIzW+5CjXfkML6Bp4mMufgL7YIi/FXaJ3FFkPo+J8nMnMRDMfRO4S4VeVUJRwKJjJU0x+PSClIO8dvJmKxKiC96kcLu+Nm/kFdJapBlaQPhUSxQzl5+D0pviILULp/AZMG5ZsVtpG2uis9waDR34b7TS5GcwcqIC5O2IFjwJqWRm4/iFON2EA8nxXEOvA6bjYyDPD78Db89/QEA0ZffIyiIqHTtwncYspgo6HYJ0UvMuFf4fIpode3JfMRqk8J+Dq6C7FeWJD31WYdXRfzuIbHcO69H+6HPSdJrKfkQWKkStRTFtyCqjGVwcT4qGCt4K9ZXH8ZgXDdU4oMMqZjcZcA1jtRHJPUQdgnK7t5pLEZ/QbYrtR9NiNACczRJkcpImySjbwgRjt/qPDwRY2XEwEpWRdS3FMEtljm5+LiLOBPMeMKjE/WYLkpjqMi+L/o0Ejk4C16ufTf5C2TOsu+bPxpg+05BaZF2Eaq+8efCA0diphBNi+Bh/Hutl58w3pZ0TmPxUTwUJooPzw2GUi2pWMOIdEjoU2LwUOd9+Eq+wOaHNA5MatLh8YUIT8P8Dq7EEEluiwPuHudctT1KGSM89DA+/2Be8VdkIpYt5Dx8skEHfaZRujCuuI58c9LDC/KsCrnR/w60qkmPqwPDoO5NFPz7hRsKNwkO6eyXh/JYxp9MzYiopa6qI6aM19D6aCVOSNAguJb8F+IRrCKZ7vAVMvWsjNiiw9NNBsWoYsR7Gl9DpsvDvJFsanxEBAyeEcX2GjwGvQey7Oz/0v45ijqzu70bANbM0kZfJT5sowd3Yvo66hMn1FZiUgDDmEWxHyH9mxpGegkf7snCa/DfKHZqjHciQi5T2/kl2QDXCnb80pmHMciFNGfEST6Q+7ZNg+1Jwct5049h1Qo7AIBp/BxoLuR3N18XRnUIF4PluqQtB6OeYZEuj5h5evcObreQSl+0fI2UQE56tcR6fF5OZ+3gDD7csumF0LzKUq0XC/UR286ayzvXDPHsISnqgjcB0Lbj30XqMqtm27UcaiL83Rsji5HQj5MzRr0Rw0uYtQr0X4EpG3lCSOF0Tu466cEYG0Gn+afucNi4sg+t5sXivS6PwhFLOI3KE5xPIQ2kuOuv+uJCGBe43kiFJ9dh3B59FEsf8efC3dcReIGZP/933JQUR0hgz1O6kAb6q/CkmrRL5eVkzE+nrND3WhlmHBfoTR+ZVbuwIxK9p9Ox2/QxFSciSMFnrZCF+RzS2MPLqBOuLa+BsRMX/pIbYoh4LnCDf3zBrXQuRAYrD6J1KxdllXGk+4dryrExnfLBV/lTeJbGRURutR4mJfHEEaHbAxHSwSOeNm/gZrGp8zdefOGiIGn4E7vXMc8W/LkR47UpD1T9sMHLK1z4DHZwPGa+nYjHC6ifzZMowQYnUjyXyUHoU0JXXX9QDPT2MM82/QCDu3ZqI2GpzUWk7Mwv3HvAMfv2eSwSh3FupZ+/gWcR1AgrtpGqJgUkYkAur0ci7ggi7fh9d++cxyZbfwDAny0DsUuI2t2c25Q/chSVcLeRi+X0iHokvKQWevNKCh49pH5bPLIVBrXcdeNi+LxMba7GhCE8Wqp9z2xEPmLmM2LOfQyV5r1MbdiA9hZu8jPW9ZRq9bSe1tN62r+H4NSdf3UDwOlLX1Gcy4ybulYX7rcxw3a/93HMdKVjGmhYApVfhMbSC3juWcmXVISGcAfRfKiOekXSi3MLsjGzL7NmnjfbMDaJJzOoSlFoNWqShOo5oparFxXhYEOU9DZpImwf2gEAbH260dqfFNViNvNSCZ+mIuo+EVCSkCqcL9KEuDC9C0M1iPyMZG9iVBR3Z9e+RHgRL15Ax5FCv9DWFOiFsjqh420mnoaxSFtz6z7sCGf5jedx0pYfz3bBYTvpzlONCVjRwRM9Nrs9gPco0vTDMkl4YcTP++zOTJLmdCCviIpG4dcBqBYlmv1brIbnC9kvS5QHor8xEdMqF+68j3udxCJjmhMTPrsiZyWd5jqfWdj9TQ4AcH1ONWI/E1HoHOLfDavcBDPB+WSJ265jjODMsVlHNiOzjJ/x5JMFNvwmckv1ptkwVKY/li2iTCHmMBIbW2kWxD3QhtJ3ooSolzRkujfp4IcGxzrmv0Wo7s9KlLkJjpibSbr28uMjCH3mNQ3cTjro6H0OXu+JjI2kp2BiMOWPofdOYPFvgouT9oXQC6UUMEeaJU1CooXwOUSaf6lKFzHLSBPf/xwP37tEWm67vmLWdI5VrTCdWmVJVZjHEkUdtMjA/k4Bci8IxYlIfp6xnQ4mN/J9HxrnyFyiqmpRWcd+O/9iPwY08F5rdHOQcoeHKax8ooytejSG7q0m+rRYOhQyo0kjPZVj0VFDSWfGmF+4VMz83Km+ErgneO/rinl8tqLXFEB5C+/1jO1bFGzgtTX+HQmpfRyzo27XsP4tX4QtG0sa/Eg2FVvfEx0PbdgO9QAiYuPzC9CgRkMl2N8EvUtZiTGmvvT/Xxf1jHZdNwDU/9KFjCbrUj37B+P7GsYMbjaoIH8KKYperimEVEgZLoqRTgSMCkVQCx/IQJU4HBS8fMOwfjsaX9BF/em8HV8mUptysuJCJpOhB+lifwDAmsUmMDvDhTPz3ESUn+UE0nszAMJnBS+/UeA1NO7yQNV5PqRqO13Qlk/4Pvk/UVTr8Cifs9I1eP6a1LQlna7f2SPfcOItx+7uS0No63PB/eL4HJkLBAdalqpitRVd0PL7pJzxxs9hcZ702GnGU9xpoS6TVrcM3t2Me+heFYeuDyf7kApqlAVygZAz4z21W4VgwyDGYx65dkBsKR+s6KmayFTm4nHsBX+2ufoxdLPpkD19bAenCIZwbY8MxrU6LjjhYlkI3k+6kpzJ7w2PO44TtYzoDM9NwcAjpG22gevw1Yi1r6dnOEGqFx8Sh4esA35SpIjauZQVzoq9hthy0nVHY0XkrOEi6OApuLePm+HqwHjK4N/FsD/Dh+xpyzuUxzFwPDe7N4JlqdNdMeFYK3SEIOJqDgBg4FAH+GUw+mHd7yHkr5NKvxMqwdCZXLRPjSVlnjmgFurPuFiqWMRDyI3OqPiDbXDTouYXUtWFWwasH10iSYp6oPU1TqhzQfVsPQujY+z76EAPnBK4sr83FWOQIaMtqwMpO3jPdoCCmOA1hm4pUCvhpvThlBAuy3LhyHsaiN37uZgPn0z5ZJdFLqyGcUEVi/fEqrAaAMCD4gpYruUikzYoGMMLOB98DggWveUzUWzKf4996oOXqSwjU4pbjhgpvsNi33h/XOjiRmG9nZuPheU0xNxg3EdUqhqKbry28K/K8M7kYv1ePh0Tr5Pmbr8t30NRe1pP62k97Z9zUbdcF5gCZ8zQ9ecGAODVbg+YDyYdcAsvQLITd2LLFSI4E05InfGdbtvTJ2NxRZy0zO7EKHzZT1fopZAzQtOJmPqkd6O3E0tWgkO4u39We4hu6RwAQL2+COLG8LvlRupA5yEp3NyOcTj+l7v5xMncmXzv7kHpajqqn/VqMP8anad2W1OEtBLZdUg8wrYm7rJrUwTn0gc+gE4XUaS/mRBaB1CwT54xDHf2coMrUumPeDGKxb+/kC6odQ/DLk3mvYyFKiHaRZr7vvwp1rRQZL6z/gryF1P07zWN7uQe603QtKf7eM3nJZItWIwd/bIFXg28J+m5kvgVSUr0LY80+Ft4X7gHEF1GH5eC52pSFbvabBheZCjW+q8DXF6QpmsOJ6p5oa6AhUlEmpmN17G4jLt+4+E50HDmd5983AQo8hQR87NEYs0FMZBezhxj2/lOOAle8txwzBAnUomIfjgRlYbnnUHDOp7GccJ5MIYH0hF/eFQIovY0Boo89uKoEI2Ifro0IW5KncLwFCNe20pfZFZT8igZIY7UIppWAyfI4aMK+3NQCs9p26VhjkzBoZKHwifjjRH7aFDzawxYzvPXbB5fws5uOsr6hzgPz+0YgbJEOrWz91egIpz//q60GueSiTqTJS8jSoSu9MDvpI4qK0+hQ599LG+vD6nrNM8Ozg3DfCumAPLqD2PsSxo1X3bQRRYxNcWChZzX7ucXwjKFdPXtzyJ41FMiyTHVwOBAOqoFD8hKPumY4MJjIt8Es/moP8TDDWJfn4OqIDf6Q3IVJo4gRbUO4JhZ9u6C2R+eJrL6bwP0j3MO/Kpoxs4SlgymvJaDzUWOFRCL/7X9cwvczlS+X3FQ1UecoukHeasS6G3jrU6Q3IGT6nxwyqcEI0OLi9aQXD7oleePIb83T9BY2vERZgP4wH5abg9/SeoW184ehmw94wBjBYdEmmt5IGw7k93Jq1vxdy4nxSyhv4h4RYq62PQbThdxQY0K44I7+P5nRB3m4ApN0UX9Ub5HYl9SLqyLedKF3fOJKJvAhc9SnYuTqmtvZGyj/teSNhgeW+gQ2mwNRIs0f/fggybk7SK1MSvhItO2VB1JYPxEfPhDXLjK2tcZNr+grMW0+XblKkx8KQcA+CJGXUrJ1w/mWnQ4O+/qIsqM4P/dblWo6jOcvLwsCI07qCEmPiTl9Hh5CnezqCXKeM1Eyg1SNN0HQ9A7mlrS7842DLUgRfNN5ySeY9sF72OkzP1yGrDXkLS7IH0Jdv3lMUvDNhZgvRS/z3ErB1u7QQPP33OcSn1G45w8KVWjgTJCAvhAxihT7worPoEaGV5nsIYKih9QFy0JPYijygyp7t5xB7M0OFYtH7hwrjBIRpcDpY2O6p8wFmYfDv1vM04d50twPhr+h0lpPBxSdCvn5JZFnQgp5yITbrYMwtrUPw8NqITeJ45r+dpaJAWxwsFwGcf05PTlmHWDG+2puh1w8CMNbrfMhlA74zo2r6XhYErt7ror59OwpPeYuoXRirHyV7Cokouv29VvGKjLTbePjiicfwoWvjWc6yMTfkO2nYtyyL2TODaW958vvhNjs7igbpA+gvNrqbdqaHBzDb1liKHplBKOVWQi67oRACCrIgCiXqSoSqHOuFvGOT59Jq9HXOYKNAr4XCx4vhBFAr14qLUBpKL4DOSarsdQXfYHwzP/W+uhqD2tp/W0f7b9cybDqqqwbgAQPtMbq+SJcNJe+iHzKJ0uMdX/0HsoT0249PMCgnxJS5RDiCy8lsfjc2+6RlPKt6L2L6lDXcV2zO0ksqv++BCTpJiTumDN3bltSC/YDmee6OqO/bAXIl2QOfQfcqsYHPbd44K2gRS954UzoDr+1Sz4BJAyeRy6gTHZFIW9f5XjVTB3zvQSFaiWUBi3ErwN/GRsLkoaSc/OF1pjdBIF29ptCxG1ikhl96AnOOrOcOq1JaScU1rPodmNu/oJTyk4bOROvebnIOQO5FyYYXgLb+fQUNl8gkaH5HsH9Hfjd/ycEIVFL4iSCk2uoo8Ts4DPnkTg62TWki7cQZTxzHUANDKJhmwHaEPmEKm9b3wK7v8gfe5/JQBlmjQOqgRn+md7FqKXDEXqhz+2w2c479UgLAaOzcygOc1px7YRLD/yXUk0UZlYh9CHRH4fD7bBvA9NIrNhY3ErhLWkey5TpN/4Vw3WC4k4amqyoX+ApsdpZxtsFecckF3ejOWjia4C/rAGNuCNPW5aktZBQgtrznIsT705jwANUu2JLW/R+xgRn/hvIwBAp/w+hJmS8t/uVMHZ2RyHXUP0ENJJBHsv/joSEsk22pt4MouB9n0kvme//jX8gB2ziYCGq5pB/xlRoIG7GRSmcoyPbCfVDC50RXcJ0Xz9pbXIK+DnTZedgRhfll+JrL6Km7OJzL/JsSwqRe0YhIeRXq4UXYbPfWkYeZaoY7YDM4FeVqLQ3EOJZPYvou4fcS3Q8mMp1/Xi3ih+TOru+HIOTg5m3fSq6E3Ybsl3WywSJ1X1UniArBjWzLZtrcTQP0TVB+6aonEmz08cc1cC7qK8TpEnu3tMhp7W03paT/vnEFz9eJ1uADiQ5gL309S+ojRV0PqJ4vbQ9QFYUkcL3H/hLCxYyB1i6wAeTX5g/C3c62CpTMqsgajaSsvdV7QS03WoUdlv08a6k9Tb/K7yGOVhy79htAXNgrH2J5E/UIC+pILw33ruojNm2+PlASKqm5Y0NfbMHYhaK+5ubwIOQKdI8AKT/TUoF6fY/GhdG+rUYgEANYrc3UVm1OLZJSKZM7YG0MyhBiX6bilEtSjoXm9vQeRJIs0BW1jM3qlagYwY7sJfm5SQa069Q1gqERWbBJk/x9WQfJ0DADC6TsT4zrYTKi+px72XVUF0mOANR/2M0XGH2k34T0csNWBJzphznFdnUz7j9xMiNd0ponAu5Xf4vf6JJn0eeiCz/iMad7O/9uwnYvSvrcGKPtTdBn13xc09FMXnzTuC9llEqN2Hn2HbEub8+sxkon/RhueY/IxxgqUDNOEyhp+3bo8XjL34spaRykQeT45IYb0VD0UojPwPR6V47dG3hsNtNa/z8hJneHcSBxxxpOA9O6cWmf05Dp/2nIPXOcZBpm91wMvtNLCs0wqhm8ixlG9k7GNyaAtOtnCspcRrIePH+7+hvxpnjYi+njXNQ20IkZbiY86niKoFuCBKRHVylTTiezOz+bF5GkTeMQbk8uAqOh9zfFIPULzvaAnFcmuyjucpqpjdiz8fZqqD2odEnePGZ+NxFisOWqZTE80JM0BxHjXmpzeUIfmI86XU+DeyytlHS46/gV0eq3k2R3P8w5aI4m8yYyI3wkfhzmzmUF9KtaMDfAbcSkfB3pvPpYcVgZjOld5I2Me4y4WRFbgczmsW2huJKzv4HTebHsAznuN++mLR/4zg/jmTYWo/CqZz39fg0j7mfgo0G6HyjAKlf4grgvbxeKLCK6nodZbO2vDfpGTKC0dAbAApQEjlMuQFEkbHlP7GhpPMqCnueoIGe7qZJ11YAnV44WtYWXCQBle4Q8yGGS5ZwyAkTOFE7+WljjfWnAyP53JhPV5mj0AhlkONlM6CdzIXp/oZ7tBS4nfPOm6M+2tIj3o9ZH7uh+MytNTwofDKVsaPqcwRxRlUY81klgDlts3Fek/Bq/6iSPdsRtVg5VoKt7U5qzFnFUOaP8WEENWfJTdFgToIFefDlZlPUXmUjhu8LpJ23/fdCxVPisIBg4bCw4cL0S7tS/D8SffRNp1UzULrFp6s5KQPj/bFzzbWZ/ab/wmOihT7gz8kQrGAGazIYlJDudZ4jD1Oiqew4zp0jrDvRQZdhXcEXcTNqyUgZ8M+PyDLjaaPQjrKu/ndBk+sIQmaKyj2h6sVDZebw7hx9FN6jfPTSLU/H9uLB+l0H7UOpsM+lU5toHQVLurG8jrquJAt9xDDUGnSubTOLtx8wOxf18LbEC5kfz3MTENdveCdIIKXaxfdjEOHOE2PIVVNyPRgiV5/jTVIfESqbGFpiZKxfC2g4W2WZ60+bYyxK0jrIl5sx6tM5jvHfBwIu0w+67srluOQB4O8Xr34WRuM4zArh2ZCrmw7Mir4DFyetRojR5BiX1qogK1/uOBHJHEMSm/+xd4JpJoVxiboK8bNI3KqCS6Y0Rioi32CqR9Ijz2mcLGcojIH9crs2w8Xj6DWkfJOg3ULuk7zOXPc64QZIZyfpxRzAADB50SQNp9js2GaNyp8eRy+V5orfLeSlrocFsdgUwaA/y+th6L2tJ7W0/7Z9s9R1PRVo7sB4NS4ZOQOZXGueOZSZB5igXZQkgRk/IgMrtmYInsYRWgvL2ZvwmZPhpgz1/3Xbh44cZ9nuS0e/x6Xi4kONaW2IO40y7IG344FACQ+N4G+Lf/ur/s2VFiwJKvr4Um8KSY8Nxy+CJZxRIdXh5Pibgu+iAvTuFPfOX8D/Q9SIH+Qp4eVrYTk0s+iINbEqEWpH49t7i+aAZmVpInjMxsR0U7k5DXqGxKHslpgt4YUip7TnOh/ieZ6W6gQjEZyV5y7eRJeLCWK0lmRi223mJVLPyEODcEpJKu+5/DvNr+ExT3uzt8dFaETyT788dcTwxNpkpRu/4FepuyX14pEqLl3hTFOj5LAozPZEEskpdLclAolLWYBddRuYdZx3qvwGGbDrvsaIaeU+bOQzMeQHMxdf+VLX4wO4nVoydyCXgjLoXptoUnUX+YUbMp4PtnFwRtxsJDSxJkJwejTTCSiM4+/+8JuAgYcY7/Z62tgzDIm6F3bxWG2g3m1xd5zkJtM1K0tqBzxvBMPzW2knUbyYRgRRtMqe1o/1LkR2SZr3YXQMsY9BueziuYQnCAsSpPp1PRdWKzDiEf8HDmUtBCV/npfg2tJNG061pAyiosp46wcK21KHRfCLIbzrKC4GtG9mfuc/yYbKSOJ5saNoBzRcmE0HjwgYvRJskb+Xc690TvjkWBEqnxooj7iNtNom+NFBPijaxGU9YjwWrxrMTiZ5lmQ3VmEppFtPFZZifJTzCamRVG6MRI9gM5VNHIsFI8hToXo+cX2Bfg9hM/Oj/WJWDGKx6FXDWPflyxxRrolGcqpr16o1+XvSopPw21bSiQX56+C7x7Os0Sf/49LtYoMu7oBQP7nfOifYegw46oNRlhSV/N8vhOiwRyYxL8rUH2S7txEOWpAp0tTUKbLRWFJwA9McWc94LdRb1BXStqSc9MeapaE36GSdLdSL9VjeCXdOZkbmXj4l/ks95yx+D2L3325wBi597mwdb+ndqTcEIOK2XTpUuu1sDmWbuDZo4pYWsZryhJajEQpurUJ+qRfBeHTcfYvHywohuBpMzWj6Uq/0P8os1h1t7/jxAPSWKfBpCr33gK5S7mgThU/i6XGpDtJI1VwuD+1n5ymixg3m5OzxZ4P0OxTKuh3QXBU0/dZWHOCzrBlv1tob7IDAJRI9IOFHJ3IXcf5WePUvJC7mwvEI/37cFcjJVzy0QelLXzYpQ63QfQvy34am0iXhm35gFG+pEk+YlXIceF3LxWKRYQmnd//vqYj+Tvp9rgCPtRiheOQb8eF+oN5Gux8GU5O6WzHrO9cOMxG8XfX7FyAojDmy6pDTiCihYqNd5sM/Arpur/pXIdLnhz3dwnMySmEnMA5A1LGpLCNUGrl9dTPC8MMZ25QOkd9cTuW3y3SzJxcml4ydhpSP1uqKYfANm58LnP3wPgox9Lt+UTIaTI4a7+fm6Sp9DKcPMq+2K0xG3IyXOAMXh1Fv+fcJCY9HYdbsdTgMIk1vPnL/yLDgnrXq8OLIBVIbdKxWxIen7iIdOu040cF+6X3GAIC1wFj0f4fd7gy/UpIJnBOjvbpAwWBpimbcAUr+nLzf/6d+nVXRzTeh5F2P0lbgsuz+JzVXBmPhE+ksYfbLbD2IR12kQv8r7BoEM7YsI/bFd5jkT83j+ELZ6DiG+d99pcBWGDG/re4/7PHRe1pPa2n9bR/DsEVVHh2A0DhGWs4NhMuB2i6YWIWobp2eBK8PHh4YpXwOmQEkMIETyBSE711H9+NSdtG7ABknIiY4v2D8FBwJPSfygCMWExY/vcD6Vc/dS0MtmO2SPbmRhxUpfAe32YCEQPmhPo8isa3dzQ+Bi6lObHvwB8sqib6+lryErIHeWDa676taN3D33FXuQUZaVYLHHvD8TK0cMSfkwL0+MsNARtJ/VQCZSHsTFds+11POChTtFfIIgV8e7oUi0voHCbtGAvNPsyf7Zv8AusqWBrUtDEUrc8EpTwSFH8j1ocicQYRF86oIFvgLsf1q0fSSRZ5t4qcw7rTpGiVySwzE/lyEdbvWdURFuKGkr90Dv1URDGytxwA4H5aHZ5LUuCXn8cMlMGlWZBTYxH7gleAtSrv2/KVDbSiKaIPqfyGFUk0Q8JliXBG6y3D+XSe+e/vvhi5ouzbaUsicUpw6MFzL9L9XrtUcNCOiGufezg+drNfNPOWQS6EBsHk0YZIc2Lfz1/D75r0LBoJzzifFAbZw3Qk3dkRO4zRR53VC086FfBE8DJu1Z18N8MaV2ls+MI5MkTzJHqfZr/I56tCPYXVJeeO5WDQaSIw1QKi4eCGMSiRJzv4ECuJ2JvM/nWkXMNkfdLghYVBMJ/F+SnjyM8amX0KnpbM3c0zF8cJAmm0/jTCJSf214NKP4S9Z05xQTZd+Yk7DKHX246/K6ICnSYi0EHbTuPnXMof54LLoLWe8sC9/v4AAJc8Z9SfYGnY9gYbFL0QnJM3URuaa3nYg0vmQFQupxx0fzzHycHJBlNk6LhKyaV6gAAAIABJREFUxrxBsxrLHA8MGorkCUSEvyTC4OhEs0Zn98X/fynqWrMH3QAwIsIHH9fQWpfAb9RsIhW5/8EEh+SotSgaPkeSIx+iHUvp9GVk6EPsNHWGrBVuKE9iXzqe1IPlDeoB5Xmr4L6H9GKSJGnE90t+2HueD861vOvI30S9Q2KtOn6YU/9bb7oZJWPtAABbDvLvz0/yxRVjQnWtK6bY18VrrlfLxbtcOqMpd9vR3SYHAChrIGXU+7QHEyNJ52QiRHHGgwuD8dIg2CuwNvR5VANaCliWZryHhxOaDpuMzLn87jtDa+H2H2H/onpDpPrQFQvIdsDnt9TShv/mxNx29S28Ynmv86XNEelCSqVT4oCFm/jg549ygutqLpjyyzjRb3ZYIvkUadRqRUu0ZtKJFd7fjNA4XvOH+XI4sZ50/GQ0H7wlb1/ioBO1mgvBASis4OROfDsbnqM46R3aCjDkML/nYSAXg5HbP2BGLjWlrJjr8NvOe52YEw+fTwzWXvnAE0gujurCgpukg+/TxFF4k3108vEQHD7FzzPspYGj07igrI+lbjW6OwROw7loOSWlYtd5vuX+z4NiFD6hrrSlOwTuA3jC87CnDLzuKvyGhV9Iv8bq90JLAxen9O+eGL2TC7yIeRBMHpGWnXKzAwCIby6A0mTSR23RKDyVJ927PasSRwT6mV1uO3q/orRSKnhTffCuSky/zk2+Xj8XofrcrJYmNCJKkYv2Lh1JbHOiI5x42Yh9uWIz+lOBQMqTrQjYzaiRWqQpfq/iHB/plYY9UymtPBrM7zvQdy9yHIMAAAuWK6BTlTptQIAorrhRmuj0SUTEBb7DQlhQo3tdtx1XrnCDVpANh0RfLnbailV4lkx5Z4RMGPy6uSFou1zooag9raf1tJ72z+XgenVx16wt94dnMmlEZsIhaDxmhulczHOYh5G2vU0Xh1sAqcgaX+50lfKaGD2HSE0vORZ+nynSy02+ig8KNAgy7ozALTseDjlNh2hg42MLOPwiZA8MPoWADKIa2buVWDSI71wwiC9B4VgKtuFfSXEvK7hh6lHm5HI9xuKTHxHO0q31WDeC4u8O/UUQreK/X63juXAW5sMwIImfW7l2PYRy6DBpuodBq44ieopFHKqFeYiAoinDmkfrQqD2jkJ38trXOJ7MIGWLiToibhINbKzOxidVhnPv3RWUSHl3wD6f1F70eRHOdrCgu8/fRoRL8bPPWldBZjnR2o/PRHhbRLtw0ZxGwLrTC7Fek7Sk/o4W9Mso1MuVBGLTQ6IP93T2i8Gr27j2lUbFu+oNkMwnKn3/6wOu7uS5bkaTVXBZjeNjNIeC913nD8i7xZcov9k5AffMBAcwXvgFl/sskFdezsNDH2i4IWgm6Zzt3yDkBwredGbnhbT1pHbxwlaoGM+z5pqesX/+3LHG8U7mJtVPDUXDdN7/pQfjsOM8X6v1dUg0+m+gS9riQYTUvDYKDy8QqXzrpYazU/m7dqNrMOcv0U6+/k0Ig6gl7g7RuofqZQwJ5jgWLY/FWg/m2drU5mDmFMGBn+JmUMulMaRgwO/ol+6JCBOiPeUXipB1peQR5laKkWf53X7pWyAsSiYgP50yxu1zWpCqJpOwepKP4ktEoEoTR2CJK0vtrnmdR8R2yjq2Vhxz9xPu2H+Jn1U2yBB1bmQHK5PKMG4HmaJP8WBck6X5Yve2ht/bZYSxd1mqVnv6KV6lkjUIOSpg8kU5XvPGyTiYQ+mI3/a/tX9ugbvpRlfw6T19NDTQRZ28cg4KHpCCzpe5hXW+hMhXZlfiRhsfRKHf1Mz+7DiP5SXUlOIzrFBszAF7I6EL961cZGY+2gRDgePYJ5WDPPnwc4wUnAJhc9EP8kNIS785m8BQQNcO/7JE6g8+1HpveQik2HBJyDjQscra9BGiEnzDe8MhVYxbT4p6zHYbRKcxKBn5jDRpQ2w9shbwOkd+/wbVCj4UuZVjECIIdwYsHon9ogyepsZQG9ohexJLg0lbY/V0sMuW17ZkVATyargJdFiuQ4MGKdrPTjpkkQbJODWID2rdVSUcvMjF1a11JpYVc9GanzQa065w8s7148GcyxVbMTubtKY65yiWPeZDe2fcR5T600n++rsNjsMoC/STY4WHdddTuDyi7qS9VgOn4riw9x19CHN/8RgigxpPRHoLTnx9TdoaprMV1wVVHWtlL8Mslddx2nc8PGLp1C6I5WI45sxTaFvQWRz5ygifc2IBAKNK98HxFhfUqooqKLwUuIW2HNPi7/XwG8VFe7v4Soy14VgaZHli73HqWLIGYgio5VgViXMRumZcjDf11EeHbfRByzK+v6B/xg2MySS1+505ATVBpNIavbig1u86D60wxmTGDG1C/z9cqCZX3MSjfG7WhVfTIPKG8338IV6vduYDlDqSPjtbAZdWc67e3ugH7y+cc7syElHnzPlStotzev3z67ikyY1mfvhzhG5hHxobTseG9wyDG69Ox+lXguO8BPGhNde/IO0I6eq86mCscuZnfI7+icZQPn+LHObB4yq1UJmVnAtO8pMxfjA58dKLV9BYx/9fafsK3W5MBIi8z0Pudi7A4BT5n1oPRe1pPa2n/bPtn0NwCXoUipM738LxNsupuhcZY1gug5s39/ZBvSRDhUrB1jBtoSi+UPBKwC2pk/HelmhohdZyDJ9AFJW8MhJjXxNdHcgYBa0BdEM9lAmtdYYW4PBqlgtNSj6BebrcyVI+DIVzGV2qK6O2QiOWdOf8dbqUqlNScauc1GL8k2fotZ4w/L7YZZzrJo3I/KuAE7UMghrkkp6tbrLBUSc6hJoXz+Bcb+7el46/Q9xR7rjFJktgOJchzZCd/N3NvawxXIMU9vbtoZiqTNqmFSWBZSXM7l22eIz0rXQGJ04n+lK65oW2ufyOOisXbJRkDWun+AK0vGf9ZdSuzahZxpMsVNRJ3WM7dRA+kpkrC7F+eDeX93rveQL+O06at376V6hlcay6fvDv5m9cgieMGiJydSOe6BJRljyLgYdAvJ8vJo4vE5mPS1bkAY1Cc15h0SReZ0DzO8SlEqkcsnBCnYASr2skam1atwTXlhLNV4n0wlYBXR+4dy62TSO183KZh1F+pOv2/xHNtsuMQrIU3fXtfeZD2Z3SxbF9P5CxkGZB1BAPTLrI3zcS1DbrHpdC2wyGkOOdchBmzLm1PzEe5zyJ5twOqOKOJufqHhUaLouLDfF7MMfja7kDnHSZY8yqcYBCAxHa7A9nEWXKMqroLJZ6XW1Txi1RwTj6h0PpmyAFYOaEmg6GetufvIJWPtH92qcc//SXJVAy5XjUzsmE9l0yBa0ZLlBqoSkXUHsMMw1oqGRvZl+URhQh0pZGhts1VczW5X2LBOsiPJGI2Lv+Ke7+ZWhZ1IXGicQTD/jb5vCan4ngQg6fyew5Vfi4iVJQlEEHNlczsYAwmjD/S+tBcD2tp/W0f7b9cwhu710isbIprribTZF3m2F/FM4gaokpjMOuxdwhGupCUDufMYJjh7grdP1uwbJz3Om9I5rw/R21FpPGx7ifRqHXdshFGKhSj9NYZAcAmDN0NW68Iyq74deC1FnMexnP64PVVswDjRuzFunnqRH+sKPusSwvD9bNRCfImgItYe7IpUvn4LINjQOFr6sRfsYfAGC0n1m13lGaOChO1FK5/RPiXvOkiL4Nj/HlADUhp0t94f2duaXFXcwWze29DNLLiKjcf1oD2kRowadlcDmRKfXRWkkI/chz2U7KMbflL1WOeY3cnfvMKofzRYrQmyfpQsOVifXNf5vg1p+IKMeahds6ZYuRO4kxC2OvGhReZs7vcdUIODYz7zX6Uh0WHWCspuwbj8SWzWxDsTTNnqXbR+OnJ7+78uEqtB0kgnlVMwb3BJrQDGFmznI7vXFSghrjdX1H1Hjzni4WyuIwmJa3HEcD4aVqDiKL+K7Q4veHoTCM5WWvnJVgIhDvk66twjZJytrd+yjup5nPxI2VRKo7P4mh6jh/t++P5Wh34xy5ev8cTj0j4vBQE1RT+B/DX8EBA8N3DsEhd0ZGBgk9w6ah/I6Ah4OQuIbjl+bPudA0IAbvexPhBb7ygNArantOUanQsqF2qRnpBbGVZAf6B8g05M45YOcCIv5v5R2wXc3P7fVJG+sWMbbRN98IKpb8d/lPHlxwpZ8VnJypmcVltSLfgObSwO+nMaCY8SHVZfsxQJBRO3KXc93l9BBoz+b/dzQvgGw0i+aL1FLhf5zo8t6EBry35pzLHs9rPyFUgtu3afJdOaCPAkHmc5yKMpZtYDZxWN1jjNVnhcr/pf1zObhU20fdAKDa/w0C5nCBmND3KIafo6AZW3YV89tIJS+NrcR7LU566QU8VWOmfgKm7aKj9VRKHXdcmNWK7PLF8mQeyjdD3xIzuwn99w3jgBaLhuLgAtZRvp17BsJD6KhGd02B+286fRNTVODlw/6WPcVJUV1xBre2cRDdKoPQ5zqp6Kk7b5Gym9RnRNUxPHOhslqhS4fQ4vFfXH/MHNLU9b+gsZVuYZD4WZyN4Odd9xDBio+8r6JxnIyPOk5j5z1+d97I2XitXgAA2PEsA6d1OJFV14oh35Lgfk8dHyyt+SuwfjMXEecpy9B4i1Ry9XQ71OxmWDp1+S4sSSQFDX7AhTGntxb6hrLsyXXQZfQZwM2jzqMPLsaQroXXVSPhLA0H77OkvjMKXfChiaZG1bSjWNDFxbxt7DaUZvD467lRXagZSkH9+E1e+9OQBmifZb+553+BbRc3nXyLOEyspolypzIWAOAwfzjcsnhPPv3n4sIuGkqBsz8jMlRwEo22P2TmUeDvFGxKDUcC0HKE2bDS6v1YvYlUO2LfIKwL4SJzTvYpJpdTLF+3nX/XXT4TM+S5qGWpX4KUGeeCgUI2Ng+n45hmEAmhrzUAgFNLuMC3yqTgxw4aC0HblNDsSPr4WPwxll4n3fvzrBNL/2NW0K+GJ9L8N8cJyWrM+aWMOoxGMc7P+CnVMBPU6zaV/0V1t+CEmhjWvso8qINHDfvi0j13vKjl8UWPz0ghLof0ebzST7hfYNj7vDAXcru1xhCxoVkgPLoLr2fy9ZXmcR8wdR5p/oPscIgJXipeM5NmkNOCPGz3YJJAqnErghv4d7MVpuGZFxc701kt+P2IWcmg5jE9Obie1tN6Wk/75yjqbFke+f3i0mlMsOHZY8+uH0XLVu6i+ycMxB9VnrOWs6ITjwy4427PIMpw8F2GNYeZn5slKoKZmyiOpqR9QYEYEVOkmAfGhzL1byzKAwCHXJCDsB5RVkvLbGQl1gAAVj4vwsM9pF/zj5yFjzUp2vwMUqsd+6ZgjgAZ7V+VgAGKfCer7jgrLJ9EWr0qqw+W32QcIDea1nuzhAkWHZIDABxMf4vULH7eCNNLiBpGGmuuMRNOfVgWcyOYJ4hE9TuMPAnuayflrNB4lruvxODd+O5L86XmzkL4N/OMs7FG/DulzQ+w7gpF4+HDcyBUT3RyuG4WnA1otNwwXo0JVoyM2OXz5A7v890Y+4rZqXPzJiIskrZ/RHcK7k1lHi18nCz8M4nQ5Iby76SuXYPEKEYqZGYZoXUIkUq+jCqWfCXy8c3yhY0YqWv9Y5YT6WXewjxBaj5o0wMk/WB/e1m5Q0GIMsTEQvahcKUSvvnRTNAxnYefBkS7O3b1wRVrmjOq99Ig4bMUAPAmhChr6v31aLQgUvneEoF+HpRF0kJ6oVWWyGf1zXd4Vk3kY2tEtJ+v9AkVXzhfum/txq50IjGZ4q/IfkNqfstpIZrHkVbPFycSjVU6AZ1ammd+QybBfgIR7PpwHVx5RNS2tbkN1W94tPiO48wouk7zxCUJHttfmueHCxGMiRT6ZMJLg1k5ieAU2JbWAADytFntc+TcGgy/yL54sCYWI09zDqVoWuH5ByKqyImdMHpOtP1SnVGbl4F90Dyd89TjyyvIGfCZu6WugZv7yCBG/3TBq0KaRHfseQR+4rhkRE+nFFQVGQ2fFI6lZo0let2lOSap2oHdbkSdwDX8r+2fW+BefuGiIPTnMLpKGapVOT0Nn3vRKVoc8hbvPak12F9rgG8cJ29/L9aLls2fDrmRpB97JtkhKJguY45LHmye88EIMzfFjTWcIKcT+DANT6uC1XhBOFTbGd1apGrC0R8R5E4dpPPEbGxczImTv4ilPmYXLBFeQXol9EQaZzJ4nX+umiB0Ihecj6LhMDfmwvFyOHUUkUc+mDCDlGO7VReGeZP6bV9ggdunuGBq/b2Mw3JcwJJ6cbLd1G7D8Hwu5pKdOfiizQLFF0OeQGcma1sTNIrxXZsOX24CtSGzYl9kFHKyufjfQ70sKUXph21oEryJvOx4ImaNZhaw1x8uuNsSbkJtOSd30oy9EGvlIqO7OQM3Cuk4dvQLwnkp0lHLbi5YBkO3I20j+2VCRj9ERrPf4kXXQOUVH7h1955idBiD2u9WUmPcHTwZk19yYWjIeo6FY/iwFATnIHYRadLcUzzw9LXzFdy7w2xV3Jf/cPkzjwjaMiUC+TWCcqH9SxAfxUV+xQg6svYZYzG1jPe/sHwc4o/TWXRO2Y8V43j/V8buwMVo0mNfY47p2VfzcUiTJ+W+XWyFSYJ3D6xrN4LMRjqYKuaj8Pq4EQCg+xz1zNBKNUSPo+4m4ekBc0nKH+LCQIkcD1bVk1gL+xJ+nn056bXP7W+QUuRGHN+5BV6RXAxfhNdBeK/gjVbOfdDsTkqrYMYF60VTEgJ3MwD9Z9dmmIdRxqh/bYaQtYJ3kIQ6wEaPOmxpCO85pZ8jxlXRwS5ovIk/n3gUmaxtEPZe4+KUdDIDy+Spvc31oPtuFXobtpN5PWOHdOPhUy7QDu+vQFWacssL/1E44iDQqok//qfWQ1F7Wk/raf9s++dMhpg8O54mclYXEklEO/FzV8IkQoBqPs9A0kw6XT4dQmj9ykR+3hpSgNLfivCKJ7KwXlqNrBkUXlfeL0a/W9xlXPwroRtAl6lVmuJ42+gl8BpARFVVMQEDehN+Vx+1xmdXVhO82dMFy4fcnWIO0Miws25AYSTLs4YvkETCcRbeZzv54/Vi7pDLlz2FtjKp8sF7pD3Zruq4G0SnU3RgGvIziXCSo+fiki7T/RYqcXBI4O46dg4/d/quUpywIVrYMtUdan05/pLiyqipIg3MbR+B+GHsu4T3RLPvRU7j6ATu9BHv09DbiFJAYaEYXv+gaaMaJ4HJCXT+VsWxQiR0QxeU9CmQXyj7gzndrAawt9BF3iCWAP3Sb0RiA/vWuoCu9oC0/Zg4kSbR8KUv0a7B649p2IIwV6LnhgRbHO7Hn9d5so9dBzggKIQSxJy0m1j5W/C+1e2vYVNEBCZaTjQxvt9QLOsi1XxWHIG54UT8TVsWY6EbP1fb7wZG9WYe8fgQ9klAhSl+TiFCvaOthlH/kZbWfmnCCMGLmGfrDoQyOK6Nf5i7+2m+DAaPiEiMznhjnyrdxHvu51C7kIgpftUKfPh/7H1pWE7f+/2qRCVTyhRCERJFppSSKSRCiaJBUSFDg0ppnpAmGSISypDIVFFJhKIQKjQYKkojSVT6v1jP9X/9+b71a7/RlafnnLPP3vdea93r3tuCSLoxle/jUuF79JIhFvn0xReB/szalnxqQM0XIs3Yljsw+8RnHX+Om6LeenQPM0J5n0Wu7xDjzvvc9MsYAwKI5g4me2LkO20AwDwvSjAPl2zCGDGynG0Su7DwNpHdu7uySJtKJqH6NBv77ChTlFoyMRZ59A48Fgt8hfOyobeEmf0lYufg0J9SgcjgQdimzR1ccIH9qjTuMyqq6Eo4vHkfdv6gxBL/ZT/WVJK639mwEyGhTIY8uHDp/+6ZDK6rODAPy8XB+iDtBFWHq3DNm9lOZeE9WBzClLTI2muoVybcHy3HwbHx3i/8KuVOskseP8HZv6zFtOzfCKtODrJo9XZYKZBq3LMnDdERPoytL5hV+nUtEv5SDDJBn3rjSj/qS3vWD8F3ZdoSDBW0AQDaoytxLJfZpGdmq+DwmvRrtIIQethwgmiXqGKEHAOK0QXaDD6Y+mLEQlIRnYjrSHjObNnGqOOIqWGpzxPrRvzuJH1coMozGfou2w/FXpyo7v5XICrY/NIr/SpiZTjAO9vXI0OKpVHxIRywVXPNUOtEuu4QPAJxB3jPc+5rYEI7d/1482EbXKbTonHrMnUpa/zGp3BaRjYv+QW1cOovbrUOuDaXE2TnvTNYaUh9b2gds3QGFcp4mMXF4L6nKTTVaTadNV0S0k7sF6uVj9EQwbKt+0MoHyy/8xv65ZQddtiNQX93/v7bQBmkzqb52ngBDbgut2yBWgbiYnd57NekIXv+tQZI1QsOzI6QRMdpHjaT4kH9LGe0N+xPceFzL/4L/0JqiU8O9IajNbPLX8Xq0ejD7aU6ZvB+I0S3IdGYtp03p1fi/RLqfOtsVKCawwWs7fZCYArp7+IUjk1Zhzr8lGOZmcnXY3Ay5H1M75yPqEYuYB7h5yFVxj5X68Xnd7zSD+cj+L3It0TbSPaVstURXBjLQHVrtDaiqzMAAHmSpLsPZ4TBtIrXWzh4FnRqSTXT9G2wy4qfGf5NBMJBzGAnT6F9Zp1qGPo94bgZHyyDu6Vc2L732YEB2eyvv30HoUGOhuopmbQPvd8Xgygf9kvd8/2IPk7Kv3hpMK58Z7BOGBoOUQ2B8/t/aN0Utbt1t+72z7Z/DsE9kmHm1K1FCUZ/uErV9foKxfmE+/ZvDuFRE1HSOoUKaF6h2bTqDamm3XBhvBzJLNZFqYFYO4/ILllxNtzquTK+mtaKEyYsMF6UQro37/lnTEkglF+6yAE+Brx2zAYHvE8hFNdw1EOmNZFWQwLR3k5FdWit4neNbD8N38/0nZlYJmHNbSYiPOYq4cVYUsUNtaRZUla9sQeE7OmbOzFhLk3Nc+zeo9mL1AcfJsI5hiL7GHcmQ85my8P8O1d6//ePofiCHrYHNRXoekBqZPdKH/bxzAgf+U261/XlGS7bsS8W9PTF9HX0JMVPmgHvGsH21xlhGLaGiCh5NKnFZNOxKN1ABNBUMACD3ZmIUW1bh4eV7K/kqvVIfMgVfjSYTVsWdAE1I+gZM8l4jglmzEQmTvoBswOkqHucr+OiCt+bTCFR4oOXn/FOcMReo3sfDC5hv2UE/cRUAyIKbQ8mXEQjExF4gn1cMlEB0qXMat6WjEbQPl7joctguHlqAwB+b6YP8sYnMcwKZ3LCYEIhholSmtA9thEfs4kyPt7YgF1x3L/sVgMzw2la4+B8h6jtpUYczh7j+7t13BQrdPmZcydvoCWaSPrWe2YL768IwsEoIu3PwYV4cY7fm5NhiTHD2J8vZkSg2YfIXPo5PYgP01djZTTLqV6pFeFtKpG2g0MIVilwUwC5W9nwGENv5Vd1lkU1RqejRYgMxTDHBsepQOCT8WKsLOb7HelxB42KnEf+yby3R/vmoFCVVLR39VvkvCb6uiAkCRkwofB301QssiN1vdtOdOl44wvKYgXndpRq4GgT+1u4JQfS6+khHSuWg8ogykigj/k/tX8uwBXvZ4f0uCQO0VXUV8K1OtGuzUzWSf8C+IZwULQs6UBJEweFbCMHU5nSA1zxphHW5Wosvm9nYOj45Ie1saQiuhGuMIvj/ve/fzKwDDtiDEshDkyIS0O6H/WO0WFdUBhCK8KX2Gd45s4M3tTfHOjrfQyg+ZDB7gDuQ/kEA2Zg/m2U3KUJecq5EbB5yfNUL/Xh8wU1JeKs4NzQFBs5KNxnBm3qup7Yt5k2gs4nGhiyioFjjCDgnhL/gWtDaAGpbPRB9W7WJLrsvYjsedQjV+76gvw0Bj63ME68UU7foSrY3FNMai6EL3JroQQTf/R5z5pCpRYlKBpRHxoox8kbXucOuU7aE86O7MDbVwwiSTNOwfcgqwG2DhiHhoPUEM3OcEj6bDCC90YGFPnl07HCm1rhsYGikNpKHXKJ0Q5UGVEimNpFTUn1XDYypzDrafRVFpd0abu5WXsQ/i3Udlr8WeO5aVVf7I6jmXbeqSdo7suKjIU9bsHdxgsA0LAgG3EzmQVWHUOKPuVmAMZps95Tvng6VmUzgL+JeIwJ/tz2Ke9TMA4ZMriOquDiql+iiAWC4wFjRHThvo3v6egbZRxyZEDxdpSAxRjaitybmSGeb3oDqa60eyStXY+EdEosESn3sWod38nl4wZoT+FY3mrBMZnedgApe/lZd69ESOlwjBsd2wtpFf68wzAf195SL9apYr8WyQ1AQxMX+aetI/BuAo239eKRaIxjplk97zeycmhwvrmbAffFdXOI+rJKqEedHTq0SdcnaF/E2Xy+n95ZF/H9AwPwR0VSWxmPEEi18e8GXtNEqAJp8NEN1bDSZDbfLeEqxC5T9/5fWjdF7W7drbv9s+2fy6JGrdnXBQA9nj3CO2cK68vbn0NdILxOfCUNJ0MK1hevOSDxOffAkrCigbG0LBOiHhTCV+uVIauGovkgo0mQXkwU1LD9AbamMgv6wpG0Z+bDMAzdzQzZz/MLUKJIxKj0KAeKq7jqTWuzhZEqhWNRd66aO3XSseo8V7If9rHY30K0d3yMLb6/pu+ntPMn5hoQ1ns40ARU52eN40d5jYNaGjhfRNz+KOUZJg8lEgnVHwrRK/x58iEiDv+dRfDfxRW5cWggGvYRJT6e9RmuCvSi1V0cgqkBFNa9LElxny5dhYtbKQ6vmCIC9wFEC9pT58MtkyhXXjkc4Xe5+WOnEtFH1vBUdPwgGtz6vAtVfUhLKhueYcYPZt/8P86E6WHB4dHTBJ6zeTbwu0Tv1/tpSZhdSXol374BU1NoLI1Uj8BiSSJehZ4sxbsftgVW/YiAciYlQbeaxtM5AQn4sJrywPaVRAILt6viuODUNJOLmYhczyyx8aYL2PeN7/JPXQEqPjE5EVeiDQBoqQ3ysqA/AAAgAElEQVSEqqTA/1gUh+orpMnO90xhHUBx/ukhTxhJk7qutiOSG2/7E3dq+fzPlRbBKJmZ/bEXzsH5OsfAUtenuBnCRFn4E9JyW7M4qImQrn/SLMCD/pQ8lvzoB8vp9KipHnoLyRQmfqZH0qv2dbs2+p0gypKuk0bjA75fIZcfwCPB0Xw/yxFYwN1AHG4RRV3aWIEemuzPktT3GD+D+/Ld2GWMi1/4LhubZfFFicmag9ocI4UdTzBoEin/2DOjIf+NGfHIgjeYksKMuOjAkYgt5+dzvHm/r9MNkZhJk7HJFBX4N5PRuJnaw12KiL7+YzDsPtD4bfdBvLtUq7t1t+7W3f45DS48nLugzpkiiZXmFMrX3bqG0hRqHKPezsfjkUQ+xTOnw0WKK+ru09RDLucuxJ2B9GQlpTojUpSVEfrTIvFlA9HXB7t8jDhGDW77bCKA7yKDMMeGVQGLfaZjVSNF3E3JSxAQTMvB1fIlKOlLMbU5kNaRNXv64NUPanehLzRgkMnPfhFWQn4+V/KY8fdh+pRay8wo2l3a7WQwLo2VDkd2NWJAPVGniOgFeApOzQpv2gWhHvQz+T/hymugcxav91OQD5UxwWQhVgDM2FaOtz/MAQA9RnlAPpSrrGIG+0U6rgidi6jL/Dm1HyOsiVQWKBfj8TUK8i7xbjg+ioXpvQ8Tcay+/BcyogLLhekDvL5KDXFO32BsSvECACzv04D6HUQadtlMZOipzkNFLVFN9P4KnBpGdKEfdghyTbRf3P9QCmlXVjsoeFOjtFQJgk09tZ/A8i3ImUe9bWi6Hsw9WMo0t5NevXQHN6hmUT8LzIjEwB/UoDSuBkJlAG0+RnK2CNlJ25DyASZhohaXYVUEUbDsiLkwdaXOh34P4K7ABM/Hq+0wEybKExbmGAtWisXDHvSl9bqzAME3qMOOOFkLr9n8vmZXa9hXEqH1y6OOmbC/L9YO4o6/Hywq4T2KzzFa3wIaNdQp1wv/hfY1jvHlU2m/kao8BCtXIqr4pom48YeWEhX98SjNJeJvy+6D5YX0oE3aRVZySmIDAivIOoZf/QHNP9R3fwxJw+p3RMGYtRU75YjyvycTGe5+eAJf/Pn+b6d9xKBL9Pb9OOeIlQ8EW7LPtEPFNX6H8WSOTY2XRRitxH7p1yaOeyIcC5VL9DHSixrxR3cnXPxEf6od2Bf/pf1zFPXr6B1dAKC7tAuLY5jRSggHTm7hoEm6shQJoTzNZ8IMKWRqMDOzWFAXmFvXjoJJFES15u2GUDiF94ORG+E+nLTrUuM1bLRh5rNGlIN7+plc5BowMJpX7US9KgNR60kzxCTy5U564QZ9PYrF2+9ykGZCC4M6GUSaXWsxSJKD+vMNCYwv5nYz+YrlUL7MCfzsGF+u2X1PvL5Pj5qsrypWWFPov7rTHPf/cGDdtBCFqRef9Wchg6WYsTISikgtzDR0MOEKA2de21asFKdfq3pqNiINWbq2Yh0niMShIOzwYi1miOlwfAF3hJA8dhcPaum1u720A23+NB/fnk0auftUDLT6scTLbmsV7kry73brheFIKCmHXnkP/NFnwNcRYZJiS1gBfi3h9SwWGuK5PRcGCYVzEHnLxILr34f4PprB3PMTA926d39R8ZJnTiyMuYq/iaTMbxaNgo49g3xXCv9fyjcHEgIfnOxXZRjGkKptijwNYWl6xo7csoZaPDPCEh+ZUR4UBFyPIZ19FSuNt6P5fDPifiDtET+rLuGANk+OhxnfSHGr8p9i/BZmLEuNHkLrMJNdpX36w0yNZuDNovYQu8uJryvJQP2xdghEVJgsqskuRU4u34mfTzHWWXBxce35Cy1eXOTKc/mcQkHL8K0n2VzJwCY0jmT2eFGfNqScosQgZnQIQ+tZH+y/jwmJjYea4fmM0svqzUMRksD7cbo6HcLbGPiiDsSitYDvZLsot5mSerwce/6yHC5+mRW2L2DZlo6mARTmERBkOVTjuxVlk8H6pKIHDTLR+zb7MGxqBO6/5zg8PqwJFYMY+Pcv8cYIGfZ5D5153RS1u3W37tbd/jmK2uVMR/wpizbY+JN+bNolg0Bj0qTqCyeQFcWVKv73CUwcQd/V1joiWePONNRfpLif7xmBlFtERtpW/pC3pRDabhSMxVcJ991i+L3X7p6C7GvumqHckYKhR3jt771mQeoWkcruNWOQ9JuHx2zKYDLhscpsfHXgSiavNQTiP0jhbpoYwuIK0aXPkQFYPYn2gtffidpcJTxhlMBVuOeIAJjacmX1Mo3AoRBSu2dfxuDSMqKOtCn0z0mrCmNhESnFvge9cUVTsBln+imcDWUCY8pMYKzVBwCAXAmRTOu6axhaxkSMQc4WlImTrk8xMcaUiVyR0wtH4Ya04FDpvnx+m9W38eAlC74HN4+Abj96phRmuuPEFFI0j2evkO9LK8VJNxbK/5XRxvMI9pXHlzL0X0S6J2V+C/WTmSSYfkAK7sNJ/+5E0s84vkENEhtI+Wd+G4KVLkxUQEoEblO4Z96v/rzWxXGP8HspK0uOTZ8J2ZFEvrKvXyHKl1YhmcYIPHtC5PBtAw1h/fOjIHye9oVtlZI47klE+FfeEG5fmOCIU+oB7XLaJ+YNJ0oOLh2PS7JEcLLLe2KsBJHYaiVlXN1gzp+DJVHbxXc84wxLx6KtypCryOqGfQFZKDtHhBN4LAMqVhyHeTlPAQv+frhYLABA/sFuZNkxUeEh/RpJ9vSl+Zj+xGl1WmY6e19BoCvHuxNoCYqqd0HvRFLGHDtbSLqQPegFvceCK6Sz1hOO4OZOIsyJmkxUzV7zGa9V2ffhtwNQV0vUdkzIDiMUaUsZsSAS6oFEnfqbKEf0T/HFvFFE5X1UZqB/IitxNPPNcGI7LSXh+6ajw4CVLYfZLf+p/XMBrvAJM1rFGdLQVyCldKp9hci0LACAybXNuCZFGiU/rBpF20gjMvbQoHjpRSACL9AntrJoAlYs4CaJp++uw+A7zDztcSjAIUO+yJ57OUnl99fCkbEJf25Nxtu+1GtWtE6Atwm72ejuKkxO4YAbJc6AVTxwNfb7MyBt3ayFcUGkarmt5Yi/T9Nv38RvOCpPqrm/D0taOsxmwdSJWpKf2DWMXErTrJ9GEZ4v5rPquumgzZsT0asHs5SbM+6hypZevFTV4Tg2npplcdNH/GyjnjPhzibUSnDSPkphGU+uyAmIf+ZAP+K2FE80ST9GiS5HbzNBWdq6Znx14ECOKGawLyt9gagLnBTVT63x14m0e6rBY4xZykxdU8gqBBkKjuT7yCCabzIILyebAwDuFA/B7jqWqDUdz8b3OgYzX41I5MUwSypcLti51qEOxwSm320HJREzkRqqyvEBGPmcwb7fbkH2bnIMPr2j1CA2uT+aKtlvJf3HQ+QjA/TWoSFomMLrOWzmO6hvf4KkRrKkq3VZmNbGcSGfJoRIJZpfx2vo4uxg0mYTbUoUTjMyUHCcAakPxiHvG/XbCUcdkNyTQTQx/gR6H+Wuz72reT1rh9N4tJuaaHq/nZh7hGNW5XsyqgTaZcbDKUgbzQC2KY2a2eWx2jg0jPLHxZJOKM3gQhpua4de9hzX7u+6IHmS9cHxtykr5F8YBcckBpngHdHwCOciEPD+GgZ0sZwtpDATRe0stcr2YmnVr5fvkaxDQJCocAaNAQy4Pc/bQXEUfaE3fjyHlTgnysmDXHy8LVqQeI0LsLP6MPQewuzzlu8v0TKF/dV7UxquLI0FAEBQIvZfWjdF7W7drbv9s+2fQ3ABbfS+fTsbDKeDFMq1nJvR+pz0Qw0KOLic9PBgpRa8lhBG+9tTKNUf8wxrepManZEqgMYc+s/c1xhh7yRujlliuxnbnYgGrqwmbO73TAmyewjZR1aIwSqHNFjysAI0JnEv+bHvHmLuPiKR4YMoPJ/Vi0NPO66c7W4HoOVD79C6qGFYc4mJASl3Law+wUzexLN0qS9bnYkXxqMAAGLvTqJgI7OFTe174FZAd/6J7N+4NIGIsdiBfr48yyjULeah1L0u90WRJ/14Y2yfwOsSh4NI+RpsOEJk03mPtOWNcBNmaFPwVfHtB88qIq6A1znYkk8K+tllOrLriAZkdzNLlyNfjylORLPlidpwvE9a9ufOS2jsIa0+kReMHT8pgOtKMBm0ReoVOn9T6D503hPV55jh1LmehvhAIrDAp3WQW0SEeWkJ+1N+3AVMzCZNzp89GJGZfP6GGWnQ6iSVsm0nZTRJm4ntCfQHJhjn45wtKyuO1Elh1B+iISctVyjMYEUMQoi4dEOEEb6Nmcqi4M2w7uIzJcbdRMQJygpK/mmotuLpZtmDiOTuDf2KHld4vS8Yg2YzUuXDdYtRN57IfaVIFmRXEHV2lvAetn7swlA9okAjvTZ8fklZwcqlCVeOMLs8ua8UciaRak4KrwEAHNirjauxgrqmDa7YtcIcACBqKIGUTfTmvX6aijvqlGmSj5Mam+VqwymS9+4wbyiWH6LXsKXpO3q8Y5b048U+qC9ksuq7AtElfGdhx256G+07jqGvHrnkyoYNMNpAlF/8QQQFxbye3XKWkX3xykXCbybd9L+14upCJgf9cnJwbDDvScfOGXFa/3ux/T+XRb2bK9IFANq5Teh5iVaFmOe1uCJEk6r0jTLolzPb1P/jYWxIYqaud1kWAKB9/VC4byUNHFG4B0HnqRmd2z0Cuva0VOxa+hC3qviSPHryhcYrfoBQDl+GnsoNdIIBJbvkB07Ekj45b7mI32e5K0ibGOnZpSo72H1kJtZsdTWeVHCDyXTVAmxyZUDVX+wG94/UphY5kgL1so3FlWZmv7RlS3BI8QMAYGadLCzq+X31C++hZ09uLrhCgRYP8TAJqAtMzcXO1/E2gcF3eM0MDHxGeu9lEomhqZwAfg4MelpDJ8MwnHR37sO38AtlLWbl0wvw2ckSpiPuo3DkDs2rYRkMWH6VD3FchxnCepU6KNtSI5Wr1oGkjKAO+IEGkoVIXYWCGTgWjzHBKUkG/v57XAEL0meNUwqQ2Mt721OTiuvltByUaDGo79ulDrE5zIjvzTOElAUD9YHsjVBdzEBldZPU77mXJJSekc69yX2KL5sYcFI0DdB4jlaizBuaqL/MHU4WbcsCAOQ6LEZ2K3XHaV3H8fI7x9OLDEMkjuNGpz/fTcBgdwZ2r1yWHimYOcMuk5N05ddg3PzCYHdl8RNYaPEaPkPHIuApJYt7DqRiC1/mIuUYs8Exv6fhsxCzr1b6S+CqZA4AkDAqgn49Dez1QxjIA5UyscyUC7FF4Sccv0sZI6zUESekGIgPvrwFjzpm/FUaOPYa1W3w2Zj91ksqCbPG0/qi+8MADn25u07B1I+4uZH1pdVhpJRhN8QQvZG6Y4KiNWx+kroH/ImD3hmOw9M3BuD1QtLfgk1cXP80HkdFBWnut2mTob6NFL14tA1mz+OOORE2pXhynsH6SGhFdxa1u3W37tbd/jkEt6ZHWhcAnLlzF3vXkFKlNP0GfjBLc/v1Ktg0EqE5qq5GqaEXAOBRKBHVTM04dLSNAgBY2KRjwlNSH/Wfc9EwSxsAMGWmBE6nZgEA7v0ktRVtPY8TvSnGGuu/wdK3NBlHz+8NsyukDA3CchBX44aIFQu46qXeTkSxIqH+BIM83M9j0fmruQdQKkYUOFC3Db3riBLy55EyH5k+Dr1ekw6+zlqFNG+ioaMbD2PMUK50TluH43oTV9HobRSE+/w6B6EjRBnZqkuh4c7VOXZ6OIKnEdmI3ozE+ym8JxNT7hoy5PYkxCkRiUzZXY1e4USiJn4KUCZIgP4mP4TqMrFTpcpM2fZ1+dh8h96+FVsz8HAS5YGmBmc07qFx84xlOiwLKQsM92By4kK5FYYkErW2Pg+Hf2UsAEDzgT5uX6asYN3+FhpB9J3J7yGdvTA7GJ0fSIdSjo5Dz3G8udfZK/BsEsVtkQlMhOg2zcOox0Qtf50GoPcIZmSl/5xD8BOaZgdW/IX+K16771/uw7Y/zxnnrIlwRKJX4o4ci/H9luxD0Ru+H7EyYZSKCY51rCKFd/rmBIXRRDLpBhPhWcCstf2Spci6xX4OXtuFnZvoeYvOYv/MX3YRurtItS/LJCLThkL/8JmhuJdJScOzjyYOGbCcTQz8u6IRY7CtleJ+j7TFcB5A9O8dPxTFmczANz1di9OyRM3NjtxNJFRJCU8NOd5G/ZyI3oWkoLFGG6EcQXq/MFIKUku5sYD2br6DHXUp2CLDrHv4y6Gwy2QZZJBbEjx/8/cjZSvROZJjQz2CDGW3qiYmlPE+Wzbcg/BK0nGJrftQMYRoNnfUaIyuZUKpdLbD/90NL+VNadK9vaIdnvLUxxTLtqC1F7OIY1eOwKMpzJiGmb7H7EQO6rxDDEip4eXILRUcJWd8DH4lHGx5fVxheJCBSjM8EWWqDC7q2sw2GtUMwODjHNA+BzOgOokDOXLjDXy5zcnifFMFpsLMChX9YRBq3joZk3SpD347qYMLFnyJNb9tMOMxM2CONafQpkDzppkYP9sy8wIsFxG+H2vVwgdTUj+Lne8xSYHnM5wrbIV9CDOmv4x5b4n39CB6n8FQasc8JJ6m9nHteSSOniVFPXcrA4EJDC5P4rgwRMdXwc+fE2vn1k2YHEFqP9blEiR6MngaaAXAawOpsK7g3NQXz5LRW4IUvfzaamQs4S6+ehNPIi6GNLbesg4HVdn/Pw5xQVls6A7VYPat0pZWFInQLvAufjzq+zH4qkQvxqFw1mI6H+O7WfAnFfvO83c1nqvQaEu9SvdHGeqEWGkiPp/90/aqEs/yGeDWXDiLvM+kapfEGtGpznvuZV+NngupWUpNF+hdGlNxIIPZc/Om85j6mFTT2Os3Bj3jAmZ0+xaEVpNKXjrA2lAx+z0o/MjtvAZ818VRH97PvbCpKNKjvCHf6oizKzmGH/dnZjE88h1GWZE+vw68AamjggOP/jbgmDjp3q8xR7HtNN91dgN3zE11bsLpSsoH5z10MekL+7DsXhYCHpHSX334BT0PcVfgUVfZVw0Tx+DRUo77tUYSWF0tOBdBeSZW5XCBunKyD1TekGJ+mEz5IES7FlOiGWSjWwJgHEJbjdCkqThYxj7KLhmFeZUctzf6CjTNTmVsXMKfO4QyMTCT95ORIYfcbC5Ka2dp4Y06s8Dgq/5PrZuidrfu1t3+2fbPITglD6KvB0fMcGY+oXNRbw/IDyZVMS9Qw5mV3NnAQPo8YsW5qh1eR7owZpEC3pxiYkF+wle8nUfBs4d0MU7UcS9/zXXL0TCWPrBLl/j/Dq5mkBGcLh9p54dXnkRAtw+nQ38rhewVYSpIiGMW1SGeW2nrDM7AlbEsXyrW9cSHb0SX47YUoSKXq6j4vOdoayACrbzKDNvZxReQkEbjceCCHbAdyLKZ41JH8f4crzGs8jm+6ZHyRcuQFqyoPw3RbRThp4ptxthZ/Kzqj0acnUXvl++KqZj9lhnOU77sq+w+cdi2nyuvRZo2Op6wHlTGsQViiSxxGmbki9e+9Da5XCc9kT8Tjx2C078UGv9CxYZUpOJEGQyNifx+vjiAynyWAz1u5oqdLNwX57Ppozof8BAR7kSE1+o88PYSy7l6f/ZAVx7R2rpMCuwvEk3RdovZO+sgV6Q8J1odWeaP5DhSsGDBGRmJu8biTAiz7ra6l/BR8KwbdaXg0kB5IPBaNm6doADer5CI+tekZRBPZoLn3PJeWL6d5V5lV7pwO4M1umH3hCAWy0zk4iLKANc8gQkxLP3r9aMQR+8Q2aV+6Yur8bznPSHyCJWnCfdXM+uZazqG4e1S0uC2gIs4sYc1yGl6E3A+kJn7yq4D0N7Lvj+bzN9lPVRAeRD7+9ixWHxdRO+mY5QvXvckkjS1PobtdqSu6kHsq/VtPmgVYl/tN7mMK6/JQNLEJyLoO2WYNWl/MCPHDACwRY3PL1w4BCb6rB3tETcc7zMpV7w/uAPOIuy7x+OnYHh/Zubd+hCVhtsFIC+aNFindCC8j/GdXuprgj/bmCWv11dB5VTB9uu4h//auhFcd+tu3e2fbf8cgiuqpACto3YVJ+dQNG/28/r/h9tedZuHVxmxAIDaTGUIPyXScDKh/mTzaC5GHGfi4M8rOfzeylVGY8YtPJYUFCWXfoD5YyJFw/m0WbTqlSLJgtYCMbFjmF1JN73k/hFoH8jPJl3bhruXuDqnr6OuEX1uLKpAP9DSW5/RJ1xQnfC5CNW/ucLHftuBMEOukquXagMA1G/cRdwrQbmNpR2SN9DD9dflMO6Aq3PoMFv4/WAfbLfk/0tuuwWZV9Qm7SyXQ8lAgAZ8rXELRLkSFfPRq43alH0SNbofj59CsYI6XkHSIujWEfHWS9TAyIqaSXOuC47b8Nr5ykSlcmUr4efE351ceRcSpuzvqRXr8W4vkU2WZU/sfmAOAFixj2hvyZS1SEqkzne+oScCe9MTuEr0E/p94wo+UdMRr2cTDaR/Z38KK9bi0AqWQ4lZJED2LrW01sgZuGlPlDTuG9/jt2cZGP2JNhO3yjW43cKx88a7H14UUxQPO5iNMmF+n+JOluW5+FZi3QS+swF/q6AczPIsk6PLkalL4XzGRWHcHU1X/+0iVsZc/5OB4oeccq+rTiFjApMBKS8MIbeNaO9u7y5kCU4b62VKLW22Xx7W5AmSREt/49cLJjiqltxDtRtRnsFVVbjp0B7kL0hglX3di42reA8vytYjexQRf5VyFMyHMjmR/m0Blolx7O+zISK7dPgmZodq8962LcJKZT7fNZ0/aFtGtPfavD/KxclCfHSYpChwa4OwD1Gbv+xAfKhnLuC3uC8qcll98dTTF8nGRGL1X1mF8fOlD2wOUOs93vsgtIeTVRy+4wGFPhyHd9c8x/oSosP/pf1zAW5YKwXkebb1KM9kImCXTy4KHTk5PWb8Rr4egWuo41BoCSa4frk2AOD4cWtYLGVQEw4/jsoknhL0/KQP3q4jfTwyfw687nJyTqqm8F6l3YG5yUwQmGY54JAekwmFNZvxyYG0JenGRjx5T/Nx53JSzlefL0NjCwOEubcuft4hhTnyYjc+11I0zul1F9Lm9JJlvae379hYNVjvozBdtiwSBxUoaD+01UbIdSYkGnQ1oG9Ok2bqcwrlLsOXY/AO+qT6JgxBeD59WU3rnqJsLb1RmdmDof2OgvPHMaQWu/fmYFcSaenqGbsgZcT7tL5wHl/ymFCRW/oDHS9Z53qqiH2/JmMnvnVwkv3aoIjkaPaLc/hh5Cfzuz8URyPMwQsAUDKe93nwni+KTXif5ZaSkBzCox53KK3HwzssMxr8ZheUxEjdVuSQimfZb8L+dXw3T2e6YkYANyldpTUMS+dRDE/J4j129iyBynQuHAUBlth/irTM8c0N9HpCD9uEHQuw6NooAMCmAAaWsyqFiLvDAJhoUYa+W+mJk1XxQ7scs8HlU5oRG8fMrtxZUl875cVYM4RyhVjrNBQpcAv8e/apuGnMgGPo44iRY/iOv+byOY8GiaJfLt//mC4PWAQzs/jkdH9cGEVvX618Etqa2F+JzaT2mh768JnNwPLcowtjLzIg7c3MxjkJJrlkSnRwxYDZYSNNvjPbEddhe4t0Vm5QOiyDGTAvCIXCMoKGcrGQ27g5IQsAsLRXLACgtaocJ7bzfrY9roXCRAZM77ynGHKawS5HrxRWcQz4B4q4CPZ/UIhT+hy/GlNbcPoRN9hsmxKByh6UB4YltyDXk2OOS9p/a90Utbt1t+72z7Z/DsE98Sd68fpqg4NziIzS5+Zj2SpWHIT5i+H0O9LKAx39UTqEu2KsH8nV9k+XJU4o0jXuUheM9gyK0FXDMvG+lWjAZOgr1Bzgitulw/VkiYM1bB2JyoJcyrAmm7D/eE9/+LUTZqsGncDNEKKHa+f592Nt+qCkmlQsK/QPOi+yrGegiwVu3OLKKTldAya7BSn3bHq49k1fgFTBOZdjV/SFzgYmOxxl5bEhgZQqKXIY/iygpcAvk+n7mZ++wd+CSYa/ynkQ+UxLglhzEGoliWY0ftZhob3gDFg50uDRjnOgeZkWDmWDkWhLElC4IUuwWECxLfN/4aIH6UcveVK1JdfvQGM9ExZiG+fipD2fqaBfMn6LEPnNfbEWJlqk41n2RHUDU19CSp3exOEAusq46n8z64FIDValXA2yQeJ1IjjNG6wEeKN1DUcX0X5hX3wZeXeZfDhu7YzwWvr4jvThzhwTAgJx7gARV0gPaVSuYAlYVHEs+l0RnKHqOQxCz1gyZbRPcI2WXFhJj+JnBw7C6QGkmumzmrF0Ma0vVnazIRFCtDrqJRMoS7uisSGDVPTH873oLODvg5KrEFhFdJg+eCBE7/M7iqVYDud5OhHB4hTh27f3QrugsmCqZQvO/WHiZ98cKdjPYzmf9DrS8qnbS7BXk+VbQZP6QPIM/Y872uOR4sZqli+GfzE7lyzkxHX2/Q7J45CIJ93tbOkB32aWz9WofoXcb20AQK52J75uJmMJe8h7GzF2LLwUOe5HTZ6BbaGCbe+37kSLD9/1sYjJeFNJplC+gJRz0NODyP/EfeTGJm/Cx3ekq5tSRKBvynmbJG6CEdMEp8X9D+2fM/pmZOV1AcDO92vgvYpenxe987H6K89kSHf2Q2UAJ1/C50DUu9PP9E6d5sI2cxXcec6X1KLVE2cfMbMYuuMJNNOoL8w+cxs7v/E7bqZSz/qwLx8qydylxNNzK/rdJcVzXrEHIc840CVq3uOXGjOORv1Jh6KNDPBHijpXiG0rZNIZfKum9EfAFWZt97s1I/wky8Q039GHNNFXCuoLSWVSjT/DKJDUd9vdWsSN5jMtG6gFD3GW+8i/4qCa8EUGm6y59ZD5hLG40c4az5q36jC9waztyZoq7JMgpf+zhwGgaW8ngl+zPGvPRX2E+5F2Se1zxz1a8KBcp4D7Zzg4Fwwg/VoFgYgAACAASURBVDp1Kw5DBBtQNgX3wIwDNJC+mTQIzxdw26PVN33xdg6lACkPTvTkOgPoi9AHNjHwBZRHcreNdp0g3HPkPX39ooEYNRpPz+4hDd799S8WGjDAybuMx58qLnI7xk9DyyNuW6Weyb4c4q2BFFt6uUb2DUZNPo2rHbl6OFPMoCw6cit055Pm5wSwPO9dpgh69uLCaNH/DKYepj/u3fyhGHSGJq3qvBG4FMF7HvOCGtXtzjDs/85guD31Cbaoc9JX/jRDqi2ztoZLNyM7jFpu1W7S0txwc0BwfkHN3ipYPuCi43x7CPZ3sj8L9m3EeGu+H5HXXHB8y+ZgzXm+J9XVmtB8y0Dk/LIHFi9lVjrD+BosWnhPkZ58zsdHP8NJi59drLEMll3sb4tjxlhey/e659II7DxOOeitJsfTmJcymGzM+xzYmIEPRXQaiImY4eUsluLlNdrh+WMGds9Uvl/3pUJIKOD7l71qBOFD1Eg3repEqjXfb+/ALiSUs7+KYNpdqtXdult3627/HILzW3CvCwD+RN7DqaEsBo7skwq0sVB8fNhwXA4hbUtLPQO5j/RdhQpzNZGr/oynOlyRP4w2R/NTwuj929sw25i0ZdyWdCRLMiNXLZsFAHC8PBe2joTTz1ZJQ3w+If5IR3XU7GDS4kjZQKyZSERl8pgI0NcpBbdyiD5aTX9ilBu/403RbvSxYeZwWu191F9mokJqDSnu58mRaG+lJ8l7qRl2juVmjh2qZtijz8xp/3MPUafGjQttHIhkfsUNwpc6UrT7jz9CRp3Z0DiDjXC7SErxbkIhnFIo7g42pbD7wUgPWiakJFejhJASRT/eyMoV+DWV1HyJmy3qUohyQ5ZS0H6kuBFeQ+nLkl2fgP63iAae17vhyl6urw591qL3L6InhTKi4ENxQbjsTqlgyyRjbN/FIu7t1zZhxHWikknL3fE+nMJ6lSwRkLSlCxosBaeDnR6AskhmSW/f7Anxk6R8t1SJ0JWuisC6iyg/eEI2NqxIBADUWzrAo9McALBr0XCMFOc9D8ohAny5pj9OSBMBha+Mxb1U9n2/cd7QkScFT/sciTf2RFTOy7gdd23xOwRMImKO2SKC79H0Li4z9UJBDNHTChFv/DLmd6SIku5fVm7FqyCizvVCb3ByKymj6IcbGBDPLeyVDj7DqQ5mOC2PEAHtUHqCOhmOoYRp2djQQH/n4WH12Dif39fXXxbnBWf8rurkcyJmHMpyWCERd14STst4n4+rJ2NODdnIhXfTYOtCCaHfAl63/E02psrRC3qz10XYWGoDAK6/nIN4G45fvzFaeBpKyF/hzKRGcdt4fBjGe3uiG4gDzZyfHX1zUdxAVvFujgIq2jiWKzJW/98t1ep5S2Bo3eKEsJGcpEuF7+KAMDOOAaf347sldYnqKA0o6DCAKUziWQl3V0jBexwpQKXfXzz9QQ1nwjlj6GYxwBUZSONIsTkAwHktN3McUVeCZEsO9LfRq3BAlVRl6qsLmFtJ7U56+noknGOgHVvIoKavmoaI6fwu4Xc2KHjBrNdYGSnkfWDG7bSzNoLtYwEAvQZykp4P8sCUBk6yW707cMCZGc6B/qkYVs5nPdrTDAsX8Nr1xaRtt2c3Iy6cGbQNailQu8nvS3hxGNJNpIzjOg5jVzI3t5wZycCy/sJQ7LPMAgA8ebEA5UOpwb0tUsZBUT5r7/CF2O3OHUC+TKUWOk5fF8VP2EeDt7xCUCkpuvjzb/A8ST3RRbINXi84MTb9olUlaOcZTJnP+9kXcAN9OkklVT7ow2AQs8trPklj/JkPAIAbl/l8LW5+eBjHoLdDdjz0wtiHA1aqQfcCadfN69Qzfe0L4H2Ztbpjrvjh00Eaw6u6BqDmAa9RHvMR7UP4efs/pKVGJ/2he5b3I3S8BO+2csK6WB+FrTYDv6RUBooyGcwcg6hxVV9Rgt8aUv/Tk+uR/YlBfduFWhy+RO21XukUJBbS6Do7hLrpqR7ukK9hH8dWrUDpay4YF7X8cLyLumny7Ptwvss65jt7qcvJG6yFmAGfwz7wJ0QOsu91vJ1gLc25MbSHPxIrR/HzFrQzLQz7iyx/amKTNr7E6qu8tpq9DL7mUlpReeAGWSt+/uBB0tL+nu6QiabOGb9rOEbVMUiKK+xCaDXv+WofCZwcQklGQ49Z1pSe0piwS1Cv/CoL76fzs2ul+2H9AmbPfXRu4vQX2nT+l9ZNUbtbd+tu/2z75yjq8G/WXQDQ2BKAxXu4m4hOlyqiLtIblJZqDGdxlq/UTfVGmCT3hQ/byiydTvkw/NnFVSNosBRaBmgDAO5t7YTFEFK7usc2ELpJM7DpdiKgy0+K0RXCFau6tyoC1EhnRAe9gOtFIqrpUaUYEkkR/kwI/XdvZlbi12saVw+9dETMM1KVSslZMOxHCrAuxwqGijQOB3XwYGTDZ97wFSH6NOpXCutwIq664XNwMVyww8SwKEQfJupMekA00KuwDl4VXAlfHVLBfAeaKqfa7EXXHHqc7AP18KjnBwCA5GxBKZDSSfRq4bVPPWvFgis07zaHbkfSCj7TxJR7KA9lYuRnb6K2T2lJ2BrJdXTiqSB4/iXCme/RhSuqFNNt5Z7Avxc9URdOkwZ79TDFyL7cWCCibzgkZ7Nv/U4k44rgAGCVlZOhf59sxTmAGc72QR/hkk1T8/vbanDuTVpzqFwS+yVI+XoOZKnW1ppiNPuQAvXPj8breFLfaweccGcPBf4jafr4IEaUN285Da+KqXPQexvFdo1+9RjdUxsAsNavHDuqOI723huFo79YvO9XR6Rak6GJ++O5i8fshFRIyBD5PHiyBpETKby7bSjHmU7SR6+npJe/xkphz3TB2RI/2vFhAzcbaD78DSk3eL1yRXmoZTGRNj6UCTOPP99x6ADH9+JVTtgwmahM2fArcrczozrluxpC6njtJTPpRZvhZIUxXZQ/LtjcwZmtNB6ffSkHQxPuKbffzgJfx9BB8L2Jc+FtQCxqPejd2yRdjxvtpM+KlpvRWUGE3btiDPqZk1VsLiGLsb1UBbuFfO/rt7TiwB7KClargnBNlAh8o0k4urKZRX3sMOc/U9R/LsDdi37aBQAnjjhiljopwrJXejiuShoR8nMAHqTTUnFfyA06aQwclV2cNMVD3WF9ndspDbilC4WPpBQaj43h38hMj2frZOwbxcxYfF9mCNdu8kSSBQOHcF9zzNXheQpIakLPEgYwt5nKEFOh/jNRh5Nta/w9FEVnAQA63WuQ+4DZUO+0Wsg+om5RnLMeFYKzPosWcLJJxlTAqYJVD8kLanAjnpMp530H1mRxYBXOeYikuby2rg53Yr2kOQ7zv5B2V160xWNL6o3KTv44qUhqrnTyLpYP4e9nzaMNo+ncO+ibkq5a3r+KXbp8vm97tsJAoHM9M1aDbjW/u9dbGm+rzedj3RPqnNMv/EZoKTer7LpkD5H+1NsqhK2x6A37OXUwA2PJZXlY9mXQk1B7hJeRHNPCNpsx0JI65sOpsZgfyPd66DrNoTlzuiD+h5noy2Ne4IEUJ87+PHNM2E55wHg0qWi8oRlq55HivZALxpRgTsLBc05Cr4vf1/5eEyYvaIT16s/M+FljN9yazPd3weUdVAdS8xx49RekB/GwGmMNQ8zZTB322ysG+KO7QnHpCqsJmnVMIalNU6ymchvU59OOFFbShr3PqYUuL+AiknO5BScsqCcfRi6WTWNtqLu6Owx1uHAtc9XGjJPcseOvHHWySZX6iHRmwMkp68STRi4SoT6roWvJhdRnZwi2Luf5IJHTeD+ZotOw+ynBQc3vT9AIJGX2SZDA80187uyfb3EqmYvDaokPAADPSZ04Z8zf7VYswe7tXFwKVZJw1ZYa8LQKUegcYYCbdY1Z1jcl1vg6l+/JM+wg1EOo+T3xuI+o0Xw/6xzVIK5MbTVczL87i9rdult3627/XJJhfzbpx+yNYkh6QlF4Q+RtrMniKuT3sRe2ziUk76g7gi97KO6qCI6zW/7KDmtUKdben78dn89T/BQNeY56a9ZRikv54bRgJwWPHaRcE8seITiKq3DHl73oEUlknPtkOmae4Ao5Z/RfGDlTRB+dTL9XzNoj6NLlgrR3zXQM8+C9TdoWiiEJXMlqF9RgRB9meUcPZ7mR3YMyNKwnWrg5uh0GmqQ+Mff+oEqw+eW7cn347aBXSf4mkWG4sBr6R/C1F5kboudW0gSdBiccKSUCMPuuDrE0rriqYtzNwSnwAyTHEjmpPhgL91g+X+X7ANSNJiVa4G+EG+P4LHU7aY79euAVCkaTzs29UYrpZRTsV8Tow3su0Vp92U58GToKAPDGir6ntgsp8PdnH+kdvwTXBaRGMtVt2PKIZUSjfauhu5TXSwmhrKCsXIxZndwcUtJbDC6niVoaFTdCtZCGa5lKUrz4+gEw+sp+29PZA6dGEaGLBjqjNsYLANC/+TCSJYjg8gp5b0OM/eDzjPSxV7ghzhfSqG34dQP8+xOtLlUIhe861o8+60lkFDL4D0zMiIztY0YjLJlMIS/CEjFZHGdza/Wwp4l9LnOHz9x1eCqKB5IeT7PMhtxhvof1pVdhpk4qeTpfA6L7mPFO94kFABQaH0TnQv6/wnAFmHvQQ/lySBP0t3JszQo0wukoosoX79iHVpuqsbA/DcnVlhdwYBcTRqdqdyNWkMxJXSKPs3ZEV+adTDbMFDHG1tXs29dHJkCiOgsAkJHrC9uBvKfDyz1xN5i+O6+1HG8Df4mgoZXePdkGDXy8xDlwuyQO87S0AQCKIzQReofPHU4f9H9q3Qiuu3W37vbPtn8OwekdI0KK/yIG3zRy9mlda3FqKoXwmVLmOKLF1dB5hCgmj6XDf1cnEdmCjPd4Os0LAJA/JB69CnjIxq7E/dj4UnBa0cUHqHXgCnhxL0udlr2+iiXCdHS35ZXjRDh1kJht5lj+g2gmTXY4fppQH9OLo4gdeHwMmt4TyVSKRGBiEQVdv0XhiBlEHSQ2swBSBdQT3TuocZ3/0wbViYJdc10NsL+dLu9vFmFo2MTvi+3cgcgWIrdfXbR1FC+ZiM2LqZ+d6eOE4BY+61F7a1zcSn2vQ90UT9WIyiaK8e8WJ8Wgz0Jql2f+ymFvCQXfqvAApPbhqr16dl/MDWIyZ3YbNbWjJ35gnTcTHe90ZsNqCNHCYOeh0G2gfpbqMRGK31iq1VHOxMKHye4YlkPLSeX9bQgSHFDic1sM3/fTSmOw5TzyFlP/SppLpOoVLYYkYfrP1ktYQiWECYfNudPwuI3+smPbBEmWJcMhdInobPddY+QlsDKkeJoR9EZxh+FvRuHoMZ0oT6uJeqvW4s3Q/kA0tOzDGqyvoQ+svXQNNEr5c0qxK64bcjcQk4dMBk34bQef6fREzn0xF2PVifYqzHQw+h7RV5OlE/YfIjLXiCOiXDHrPc4V8X2sn7cWjdNZavdTPw0ucyj031wdjc1/+XeNjuyfO+t+oX8Z50OE7C0MH8bE1mu7nRgoR52yf4Qd7ulRC9P2FJwQ188W365Qbz3xwA2ZdtwC3rBHCqZq83plittx5CtRrMUG+ueSFByxVIjIvyt6Og69IVr9e8wJkUN5vTKDwbi6icmOaQdpDUrw9cFfa46nZSrPUPuQc+v+xQXwncjEz/0rUbDv5HcDv/Ff2z+XZGgL+toFAD7XXZAVlQUAsBqzBfEiXgAApesrEDWPdacGq/PhPZXJhYPq7DSZxRXYms0J229GGLLA7Wge2JYj0YP+qv6PCpD+lOZI2S+kXPmthii8Skqs6eKHfms5wc/4B8DQnVnNDp1FOBvDyfV0B+ns7T+d2D1XkL3U7IHAiQxqGgOmYoEyB726RDb0Fbnrh+p5bqS5t3kvyosYLCxeLYGaG68nZ5SLxTs4UYWqd+JNCyd+Rjqvt+rgcmSM5T1E9OuAT1IsAODOwmTI/WZCwULTFpKGfJbcNpoxfSQXoucJ0vmgaDl8FSaN+HtPAjddWMPo4fQXagoUr/8mkmbZXnkKGRUG+GWdM7F2M6/3Kj8XC3/TjxjY+Azik0g/Ni8jvd74QwlG9yloD9+bhblDBVsBndyBhVbcvWN44SDYl/IzNcWCo+0wEDsHk7aGRLvAL4QLxpJj1zH9JhejkpX0Kxpa74LrWwr6IZ8VYLCXCaCcAi0c2kHv2nW/QZizhItL10H61vbnncSHn1wYTz31g3kvBp+zvYdC9Qmz2SuGz4PpDwrnohF85o9T5qOJCXVYGYejvITZx6s/liOlge/arEQMHtsZ+KrbGMiU773F7wHMqMfd8UfnQm7vrZY6GzbOTEQ5P3+KWC8mdqJCudjd3mOKvOVcED3feWH/VQbAHhd3I38rg9OnmdWY/pgBJdSV76A0WBzhL5hwkql1RPNe3odebRve/uUYyFMxQLgeE1/xrgxUF91bobqUCaei8Bw83ERJ4PU9bbR40ryrKbUSPhEMnocyCUAe3stC1DGWF4ZOuoCFGnwPfycUQ9qcvrrbnwfh4kxS/Yc9w7uTDN2tu3W37vbPIbje8mFdAPDisg2+x1Lkjev6AplcCqLhW/Ig18LVd8UveUSLEPYmuJKi4t1FZBiSDrm+GoymchZd2xweigADrmq+o4ahYD79Y2dNaR1oWVKAwpO8nrXDSPwZSwqz/JYnXviSMvwIuoHY3nSWf+wiQjrnIgKosdTJWWIERhZzxQrofxulobRUHA1cBDtbrnpdvZksub+zGCZqdKyf8/bFrlzS46YlxehyJ434qyGCV9GEDD3CaRcw7Lseh6/SJtHD0AxrT9E+Mm2LDtyUSA9/T16N5nl0umcIDj32iKpBrQYtJ6MGG2PjM664VXlHoVrIlT/4SiQeCg4lWfiEyGlGwkjcNCFaiD12E5JB3PFCrWspnj4k/d3WLIP2m+zP1FX0ht3VmgkJwRbw45KuoDSWCGaqzkx8vch7Xj/UFT/nk+5sqSJK1M4SgfxCCvYvY67itxsrW2JTzyNaIE0o7CFa18nxxpFF7Ndx277hjSaRw8aVR7FxOylVXWsm3HN4H6u92BfzJyfh7R7SNle1gdi3gYkt6fMDEZDIA7/33vyI+a/5Xvft5r8+oieQ1EEk2nYvHj1amZwwK5gAs6+0fhgOccfgMtLYs3tokwnLlUK04Oxc9w41LDJk3yZ6KiF5IA8C3yJUgE+H+Znm9dzSPfKJI4Yv4XsqSv8FNRkmEfYbnsDqy6TNmrlSMF5EOUXrDg+wdg5oRkAPevHmTArBudMsg6vb/AAH4jmW4z/EQ3YO+9a7lSi/RGkYivbSjxjlnY2Gm2RH+RPvQjOP7y+4xRfTZgs2Fu0kO/If7oh5H3nPMhu/I+0G9+J7eGg81qVwTvVb1AOLLIlQnX7W/N/1wbkuzmUtaocGmqOYDZXqiMe5cNLA9OuzEW7CgVrg5YGFI0j9DCewJlG8ryLGHuEk9LcTx4xNpABaInkYs5rwvGmCElTWUq9IlyVFNfesxHnB9eQ/x8HbnHRPWSQGRRYMFjf1P+F3Be+jfqxg876yXrBTpW6TtiUMrb+ZIpIep4T7DaSrxwbfgfk6eofeiJDWGAysRvRjeo4GS86EVLM5AED2rStUz2oDAP5aqqBHCZ8vagf1rvO51yDpwEzY9smOUBcmnTWN0MO2g6TgqtttkTKJ8myyMQf3a+/jWJvDmsoI00WQUGX2uG+mCBLMqQWKzwuA8Wx+t74tS3o0fd5gTBupiNpwa6x15yTaHJ8L9wX0Ev529YLIJH5HbTRrY3eJ7Ef8Bn7H8I13Ya/IySn3sjfmnKGuqGpZjd0nWHe5v5haXIKMAv5s55je8nwQpI6zLOhKUxLG69GXlfuNxtul8bPQP5D6Ud8dyzBrIgNx7/ljkCXBTN+D+5GQ+kT6KzWb2dno67GY08zJ5hgii2xFGpYlx09B+1vWEg8XVcGcz9yYsk2WNbXOMnE4UEh6PWniI2iPpOb5ceY8JHyi5016RBKi1nN34tpLzF7esQrHuAKW4j0bbIuoHQyu9fZayDKLBQBotRpD0p46lpwQA4fhGDX8HMxgcvCVI05s4olnV/1HQDeN5XqVfcdg1kdS3hZzmtbVxe8gpS8XCT0vN7wsofzhtuY41lexv/ZvWAL1EFJ9swGcFzlWMQhyoNF7nI0ftDeQuq/2b8d+HX62LOYrlrWzDlutmKCjufw+NMv4fgcHhSPOn9rdrw4VBL+la+Bqgy1k1nLeil/v6qao3a27dbfu9s8huOaxll0A0BLdjMc7iRacvLVRso7Ub3SkL84LDp4VnzEV92pYfiR+hiUvAbv34KUL/TlZWmUQymSWbcjtYxjxWrCalF2AUj+uzhrlpLtRD/chpYIrkmalIsQqSNW+OtvD/hE/U7ZgHV6LMMu40FQgbpe14E0lM0Wb28NxdxdXXNOF09AexVX0/McfePCJqOWsMx32Wy6PxMJVzE6qvHDCdTvutyWedw+bdhJdDmtThKozS12yf3L/e/GAEIwdTJRx9ssIFAoqHaKa06BfThG9DEmwf0/EJ2dJ6vQgqBcG9CV9HBDagr2TSY0O9ZJFTjppvN1vX7iOYUF3+iHSusbPs9GrkOuoYlYjvCtIfRK2duFrAP+udFwxtF24ansyv4MDMi1wWE+P3rZyGfQKYb/0+zganr/oRzRTuQMPA1LJ1YeJRJ10mzFkOHc0eZN8D+I3iUrvPHsA1STeR+QSIhJbKSXM+ModRJ6qXYCqP9G6S34mTNyYOFnlPg690plkGOBGSeBj9gNE9OGmm6JBKigwI8qdFymLhWpM/JzOtkNKBPcSHOdHMX7A72JEOLEiYdBVE4i0kn7Nnr4J5hlkDQ5pGigU5bvsfEG6K5v8GenCpMELG8/gcDw9almHjVDrSjrbP2s2CkpZzfJYklJD3rbJmDmde9gt3uWLmlwmmvoqHEPkCfbLlnRrTJqXBQAwTCclrs23RcZbIuL6RnVE96T84Zq/DFFHOQfSz1fA/TSp6dDJpMzVUzZjQD3nS2bMAwQuIw3++nMySksFmxqM2gl1Lf5dfzV+72iLzUgaQSRepRYBkYUEaFPeuyDrCJNIyh2mmBRM9Hu3//T/u7uJqF3ggJ3fPhiWFwinN443h5Zg543y++cwJIQGS29bDYiMJtyP9fICADzsqIBiDrf6GbD3Li5Uki60Bw5FsWCbHbUjP9Ewi6n1yiIOwkVrm2HowImT3NMc8Q84CMcfOwXPZwwWHzbsQl0Ad1vdtJLnO/h66KB5DV/cijkDcPgwJ2/wzFSMUWVtYWeRDdon0rBZnk7rwBGNSIQtIs01fh4OL28OBOc1n9F8hFqT8NhPsKyn/aKnBSlujfEirNpMvWrNpzOY34uUUuGNPg7pUgfT0TuHx7eoq3XsISUeJ2WOCeEsdRKalYsxW0iH/pRJYboOA9/JTS8R4ULNZ8Jo3kPUyMVQimNQbxoZifViDEhFEaZYVsTJotfzF+7s4GfqdWjJUAtvx+PH5gCAfSWjIaxEWqPv2ACfo6RUG9d/hrUEazTTmxh83M/OwJwerL/0uSGE1hoGixex6Vg2kYbUsRepYxZaSWJwMvVIo+NCmHOMgXGNyy1Mu0MddotUBPQaGTyHPOA7G1GhgSU2tOLozI2CkK6A2kknovATF5Lz8iZIHsWM6kQhUvGw/HxEXecYuW1yGR361JqsxhpgSzllirFfNSAbTI1xXRN33V3ntxRflvOZRYVOYsN2UtCmP+8wTIzPt2NLAn6E8P38XsejMCN8rREUTKOzkGcs5NoFWy7dy4XGNlJCo9By9Mvkgn7rHeWWKTIOcN9FG1Ni/m48aqN+VtDmgo832UfT9zxGj7XUdz+K8/lHmB+H3sJRAIAjT6wguZLj963Pbqiosy/Cm8bBPpRBWeQS55NCSRKmrWUAV25xwump7CPLcY0Yo8V7UrZ9i689ueD9L62bona37tbd/tn2zyG40FQiqhd16yG2kR4g56EZmDiIJtWn0c7YfYwmTiVNH9QtoZm0U4H0csdbaziKMuEwvv0oDmSQfrjuCsTP21z1yhZ0IWAwUcKnBpo/Tc1zYGNDRGJ8whW+K4iu9O0eYNxJ/t71gyZ2tHI1NxtC03BE/HvMTOVqeXjxdvQ6T4oT0CqKC4mE/gNjbHDwOa/dvpMUcLdQJuY3kHZ//j4FTkMpGv/KUYP3CPruChelQduEyQ6Hg0QfnbVrUNJENFhp1Q9z40/xerodyLagEbbyXAuMMpj5Cwhl4mTKbSMofSZaEE75iy5BBtDKJAxKfqRamxNvQbqTWUk9WWaJ374tRbkuZYCBrmq485aeqwEflVA7q1rQF3ch/JeoJf40kV/tJD3sX0O/otf0ZqyxJgKNLYzEi0TSuRMHMvHoCxGFihNpYNUqc6xfLdjRJLYOa8RI7R8uc8XZMO4G8/QE6bXNxEmQGsCsYK7pc3gdYFJDySUDuzdyXAzr9wVLq7iP3AtBuZvQZk18NGf2/ITf/2PvO+N6fP+3jyINM1IKpZSmrKikQSmyy0qiYaRkFKVCJSuiZJYkoUQbhUSoEEoqM1paIikVQveD43M///6e+nc+4dX4dI3zOs9jvd/XUfS4QcQxyNkbGt9p6ixfagb9izwXXUEvvhdPRVG1ifNmsKUwUi04P9+4v8S3JYJuMGP6IU2F6D9/L1GkfqwZxjbxs+LGzEZrCRF/cmgX+s8h0i7sjEXJMNLOjg0swC8TicJJQSOE1SvEYPKK16XTeTTGlhHFW9+MQvB+hqEr3lLSUeuZieZZRMTjylRhmMy5PGrqWLwYRKf28vVtiFrOZ2pIP7KHedM/Y6mDoFX99Od4lcQUgHXXZnzwrwAAzE8aD5n9pM3u8kSAwxxKMUTg2t+MOYpSQStzn1xtpFfx2pu9vIHElZwjKGKz2f8yuhFc9+ge3eOfHf8cgst5QdRToiQBfTGm7fOyhqOPFpnz9wAAIABJREFUIbWWF1Om4OBolq/0VlyLXc0UOhVuENXlZ3nANphi81LbBmQH+AMABgxURHQRd6/IpY/ge48C8qBXRHiF2akomsrPehlliilXBJGDsNVosaYOJjfxBy6bMH5gWc/3f8qL3UF2BzWM3OkFiNjMdtTtItshdoFVCJkL2zH+CXN6s24QIR0RSsPumfYAgOjU1TAQ5NLqMiUwv4MVArIhAfiyjLvzwDHUycLW3sfDFGqMQvr20DMhmjF8/hkXy5lFOm29Byu2Ex0GFRJlLD3WHz2yec6a8i5QpGYMsW1DcVWFX6/LnYOhV3m9lsVSUzFsssc2ZaKa4D7voehKdOG/yQLRs4gAolpq0LWNmp59GvWj4so3UHAkGvBYUIpJC4gizEYewGCCGVxuWI8SXeqsSkv5WUvz66GYyZe9iH2bj4DcEQCAK70n46oxoxZJg3g8V3wD8fk5r/ecKb+hPIQRlYp0NyCd+bqVs5QgLEVk9KiWKP/txf5wHU69MjtiO8ZUM9vY9KkdKmnUer+unolDUkTS5nLUXYcl3cX13USJbi+NMeg8oza324LQNIDVB8+e1WCCG40dvRp+f5JECCqOcT7NyT+FnlrRAIBa7UbYdtLM0p8fgn5aRP9yX/n7+StuYHgEEdA24zZ0XCMyXPlmAjzO8Z6VLjVGfRfjKC8kqXG9nVeIiue8H0d//kSwPNHlqPrR2PWSDQDOOzRi3BhWapzMp37qctkDGlNpWh0pF0OPv9S6+/+Nw0I3IrRHhmPwOIpaYaMV53Trsq2YYisov3r7F7+/0Oz47nEVLufY1XnF0b9oj2Ifx/9l/HMuqvLiF10AIGGnjDnSpINfjh6BazjLX0bkzoNIKBcwwwEHccCbN7dOiBc79KYHoqtpCkhdl4aoBxeOgMZo3E9jhu3RoFzcGEO6s2Yv3bYWy9V4LggwHnkxH2HbmLmK7zTFZJcDAADpk+oo+M4sVez6aADAMXl7TFXgahFcVIE+grbTW2zdcFGBFGW/wV9kitkDAMR/MU808oA0tKaQnmVKjkXmRz60UblLMfYC//Y9Oyv0U2aJjO859o4btHI39vejsfI7cSW+5XBSLz+RgtZklif9upWMMFm6yhOGk8K97RcCq098wD95j8fEnvw8++od6DGIi8HrGwkYUENhfH5/mgUvt8XCfIw/AGB7aSkqs/izNs/KEZrOICie/MKrZwsAAAV9uClVlU6E9mdS9/d235HokA0AOHRZDK2zSVHfhpTgdwhL17RPMqv27scUPKhn148PP9TxPJS05vURPczfwevSMZeGxe65J3E+lvTas9oGE/5yM9h0qhKiB+i0xx3UhsEMbprDrLgx/Epeib+neS2WDDbALHcaC84oRE5/ZrVcGzfjSB1/XiOdtbEmQ0bifQGdb9EfHjgYSxo4OdIT0RXcUITT72NhNjtrvFLnRtWeZoQzZwXv5PhTgDgJmgITXmdDQpdCfpzSOWzuSbqaKENHMgp7oaHNLOWNVFkobmIe8aNaKqR3Mwt4vtdgBPchlRQ+Q/d1UMogXKmiqbHcbzQ8yiiPnBXvwuzhnCNdVYr4MIvX4F0VZRoXl6tI783c4aOV7lgsQrPTQGwe9HJonmX174dd8py38iIMBVs5T8DFWjr7Tgd74O4ZmjoezprQf0KTC4YhULDjHEn/2tadg+se3aN7dI9/jqK+yuAuPEa6B/olUIzcNVAMyfHMWQ3MXYLBIynU/7nRiqt2hOqSx/mztkJHIBpDOvR0owV+TqNA7uEmgyJtiuK6h94hRpGWe6auIJO1+CpMdrKI/d6uo7hdTZHa60Yj9qexFMb8ignu2xByh5cQIcyxHoHD8yjYn4ArNjdwzxk8YwKeGHKHe6f/HOOOMT+1yIWUSsXHE+aazJpN9T2OpgJS0HKbKZCfTmNB6Fw/DNQnNZBby3M2iWlFcwvRV1yTE26v4BSY/fckkrbw+BtM4rBSjxUV1WuIbEf3n4cfywQU6E4/LDlLBGscvBCHpnQIrksbPrSTgv9uJdI8YjkFq52JiBemiKPiHBGsd2U1tpoSOdjhHAaDCDTFj+fs3ngaF6tISb6kW0HemVS05Y0h8j2Y0RoyZh/itxNVR/xkLlFYIQ79ZNix5d40M4h/4Gc4r02HcQyT/L/nsrPMexkltEQKup/slEVzGNH49CBx1KwiKknfXI5vp3mdd3wmGnrhoA3ZJN7T95q7ULiHFO7gxTHoSuD1PvW4C2XizIHZHiZt9bSdi1uO/L5LkiP0FEil1ao2Q34tkabOjFPwLCLiu3mSx7kqRQ01qxipqHDdgp/JjEIFPpJFQg9eiykwg28hjZYxI4mstn89jfNdpOVea15i01TOya6VejhayvknN3UcZiTyepX95c9KBUSh4BHn27tJZzB7A+fcVDllCO1mNYvPVnNI+hMRbljIMkA1N0UslWROU1o+B1Ni+WxpuS+HnQ+rbu4mVkFqG+9J/2RWeJx/VorDfWgOGu2uxrh7NHCePQrC+Ryi1cEpHtC7wnvyv4x/boEbK3h47QbZ4OVNwvATH+WxfScf2P02zjizmRe77fwqfOtFajDwFidhda+X+H6E2Tcd3RzkXWA48rWZE34tIzz3EZ8AocnUksY6cgEwb7sA2zOkc0GWDnDezglZF3Qd++soGsXIaSFOhhmg7feoA76MikBrL7681+JtAZZ8YajUe5YHtgleguzsOhN6gkaJNcmkIR33niFxLBecno7GGJNM/SjOYwJ8W6kVOihfQvYdUjfPx9T5tKXOwOUuF58br75jyxG6qP2DSzAsk/9XlVLEYGV29ZjowYVR4XAzXh1i+5+Ox48xyIrfTyxqgttk5ssm/V2Fn8GkjzNucNGb98MPjUIs5YlYcw3JL6hTFrnNhNxILvZNR/qj9A6pqbUpab70HS9UX6ETe01kA+J8eA39ZfUhlEtXcvXWDZjciwvfvTxqVKu366KXPrWhXmbi0BUlVZYue4SMM2x99esWu4rM3xCLjIeUATIW1aHEW/ACZ9dcvI4m7ewb74BbpfwMP11eY4sLMxH+k3XJ33fdQPg76qkrZg6GXRAXPuv4Mah+yEVC6SXnzaqTmliiwXmx/ZEQbkjwXu9u2QP/Tup0eZkmaNjIReS9QF6wTpPG5sFcDCbI/sUVJy5gC6ZfxvEMaoEdU59iYCIXhtY43rNePVzRx4A0P8xQFSE9eB9mF9vhzzPWK5t7PMarvez6cfESr3F6xyOoLaJOtkZiLIZ3cvNp7JyKLcO4ocwfEw+RpQyoP/ChfvhE4y0y/OmA7rFSg1EspZknGySQtI+L4T6FFIRaMqWgf2oEACBzdzPuVvO6eZjtwfgVfF+E0U0VPHHm9Uo8dwuo4WIOqOO/jm6K2j26R/f4Z8c/h+BMnZmzkpiviv55FLQjZpRjzQbC+jdTGhC6m6VMkQnicI9lLulzPTNes5w2wvYhvz9JdCOWtDCvli87DaJFRBfyVTnIWcLmgV0ZLLp+Ffoe5+dxx65dUox3bXzPqunVRsw9TPcK9ZrIDyI6XBvCNubTg1UxOZNUJMP6DDZuZ4XExq866CfozHFSMwPto5kDu1bFTN0aU0d0WJAaRZ1xRlYwM06lm0SRHced2uFSKLynsxX7u3Pc6U/cM8WWGDrKYVtS8fY9kcPXHzJo0qfI/FK/Gj2/0MFTHSwoWZK2geWrEQAAfQ8npH9luv3x0yPIUyTdMSjrj9lbKDJbSPJfucB1aIsnbb355BmcFnOnri2ZhG/jSO8LQ0rQHmACAPi5gTQpavsHSHQxq3W66ju+SlLobzo8E6d70YmUHDIeR+ewV1nUeyLUHTeCMWAuKVMlImGhTVfPfcM59Oziz15/SmNN/0E87ukQJT813AQxJbql654rYpQJ5YhTX4TQ/I33pzWEv3/J8ytio0kHZ9icR1k85YGIv4/wdhQR5achy/HGhoh3YIGgBbeHCXykicR6V31E8H3OIeXzdxBgR1Ff6uRXxF3hNSiwJMIz79eCOG8aEsnG7miwYbq/rNgHmf1Z6G/ibo3z5TTVztYR4V5ctxXGbXTdF9RfxoUFlAd2mjsg3YHnFGOniqx4PjOdT0gTr4lvhFYO0eOBNWexr5lJAZsn52DgRWdbKGQA9E4xjxeYTxf5set7uEvwnPc0mcLLhM9Uw4+e+P6cCK6XziF4jyKitbYiSlQ4pAL/TUSfbfMNITSey9JIv9nw2sG/fWrQFEi6Ct6LKmj881/GP+eivrI+1wUAL+aUYNsRPrzrVq7C20qGWL9/1sL2Lv5f1+wYTtyko/MwgAvOH1NHtMkzOqG06DV6n6Rzo/hzDcQWcwLFSJ9DtAF1M43zjHJEBQ6DeCyhesqiCCgUEk5PW5uHtmpOiiEFGnBI56S9eoVO34S74biXbA8AKPWNhH4x3d5hUrWYfZ9U6sNOU6S94KK1YS4foBMZd2GwjAvEYpVAXDLh4itVvQop87iwv3owElMvkbIXxfE+W3z6igQnPnDNGa2ousAFNbTfb2zpyQfLd+xtzErhz8SE8rM8yiphbsXIyJSna1B2lCHNdyjB5hGMDixw24QZLwSNNx1I/dwD0hAwTBDxMFmM19LUc6INZuD7HmpzYidCkHqKPzNzEin8okpJjDnGib5ApQsDi0YAAC6UHYehIh9Im9Xq8DMXvKZPlcfzOOUONk7nE5A17QLszvL735M6EClMWrZqGcvdto1fjTsDeH7fdhlhmzQXgHt3HPDhI+dATMMyxFdT1+0raJhZkqeC6gzOrWP629DnCSMx+cKr0RBLuSG14R6O3qDGqPOT96k5+CecvQU1tYm38KiB9/T1InMIraMG5xuYid0GnDuPv/L3R8udgfoRyi0B6QdQOpGb1j4pZ4xZz9I3+Y56vD7NhX1AKBe4KuM/EDZjADy4eiaK0njdRh1PQPsWurI2k2NxOY3O9/eFLD9bvSoW2wcxjKvdpxNFa7nw73vuDisvOtHDTydDL4wlb2+n8B0ZvdqkYXOem7JMYDgG/SLln5hgh7xR1IWX/ZRCgCTn0chWyhzXTSpw6wnv/5XSMIzq5L3snaaKtt8MqMdl78CwIF4DidAx3S5q9+ge3aN7/HMU1XcxuxkM13VGqyx3tM/tOZAN4M7p98IetUMphFbahkFsFkXM0KkUlU993grFh9yRw2fKI7GFX9d7ZYHl/eimjZ+mAmt1IpFvX0iXStIOo34SRfPjUquhmkTBVinzC+T9uUO2Wr7GSQ1mo/bks6W3V30CBtkzZDxh5V00TOTfM9ndiqfebAg5yLcPNtoTBdzZxozT7uVKMNQhWtINcoWYLxt37mjOQtUd0g/LTz9wEKSusRl0o370CcP6vdwALdVGQDuNxxNXtACHBjAsO0/zPXwiSVdl0khVw05J4PtnUgTNXV4w9yQynNtHEgHKRC2ZiUUQ7qRTl15PtHtx4RJ8dqfjGjEtH/PqeK5KRkHQ6MfrJXc6ErftKJz3XU439GDf3RiRyN379TE3ZC6gFKA8bjCSjvC6/LDshatniLDfWxNZONkPRnALaU148j00HmJo9FvCK1xbxeCt8HBSyn0+myF+g6hbtKYDfdqJxqeJBcGznvnI9mwJvN9KFORYysxc1b5VaFPnOeNYFSz3kXYrtLVi+HZ2yqgNtUFhLOnogTQimdk/T+H2cVL+hO3pcG9kowDn0R9xx53CuctGC5R9Jpo5d4v34MKBTXjtI2iRP80KMjF0Kju0xNHZQeMjedMABPTnnPI+R7r++NAnHKimVLKshxvm+NEgMIxoR10mC/2NFx3EzQJ2u9ldyfK81JUuMJDnfXSPOIY6Vc65m7qvURDNpgD9VMbCyIr3ofI9r2uRcS2i6/h7m6bKwWw1c477T07H+rM0+Vb/kUXwbc6HB950maP3zcJuG6LrFXtk8UCBIeMplzpRG8W/3d4+DxXN/gAADbALzX8Z/9wCFxfEwKC3mhq2p9KptN7UD47xtKZvyszHzK98OMcOPI62HDqAyXZ04Xw3jESPUUxVz9isgNwawQth6qagvRcfMntbcbTdp5v5IZ8LR+yVQkSBLqrLs4eIbPUHAIz5KIlzohUAgGNTFJCgRYdMTZXHsyP9Fr4L6u3Wb5SGfRUfyLbcCuyJ4Y0sV3qIh1Zc+Ib48OHcpDUA7ev4IPR4YAT3Qv5sz6NqeCvMB+r3/AZoOHISbWji4pW8di9Sr/JcFxQehJY+g6fx6AFxWU48k0NqGDGbafgDnqzCUFfsgbA/XPjvNd+B5TAukhHS3th9nHTNroclLPVIxz+/oF7lumk7XDRIu89kmsLVgXTPbnokWh35kM3++wrqeVxoi3tQ+0o8VwnDu6TM1mMOYfdpLgCB5oqIaKCGY3t4JAw76Mg1L6HWplEZjmNJfAintoli7y0eR/urAkgWkTbnOpCWrts8HzaBdBnvb61C1nXqfOKzQhD8nBGOgbYBqJ/D8O6lTh6b0bNLeP2DGtVEvxzonKJOWy06FcULGdrW1cvB8kZ+XlAN9TW7M7XIcecGXNvphAwHLuD7qgdgmg9Dvf1Py+PDK24Or0Kobc5qH4MSa+qmzQ6RKBe8krIyyAkzmxnUPlC3BxvmMsC9ujcp4HxpBSweyHTA1uRzWCN47Z5u2SPohfFnzVeMhX0zF6rRytz4X39ZjYlDuFg+8HmHNUe5uRb/OI1hwaS/Rhd9IT49GwDwQZvNOq/3OoHhk/z5GT9b4GTCzT/PEGhIYlXD4YvtWLWDumCDHbXZoj/6eP6AG/EAk83oqOb3r9y7hvFreH9Xj16Ej4LWSZyF/210U9Tu0T26xz87/jkEp5RJt9FceBImfGX3h2/N9/HJg7u2hLYIlCsFTRzzzHHHlshGw4MQ+nLdExy6QSSjc+suvp4nggu5cRrbi4hUYoVmosqSO5m8PF2j2Ovh2HmIZTNv3WLhJGgGOLFmKkp+U9Aty4tCnRrNhSlD2ClDOHUCPB7TsBijEINpgaS+w3Uu4fv4aADAnpyPeLaf9HCfmD8AYN6zaZB8SVo33rQ/KnR53iuD96IhhrQk95cX9udS3P1lTAG95a8cWgt4Tn/HVeFBsqCV+/r96HDkz/QueY0dGykc6yTQ9ZU+NA2lvekS/ykbjrFJRC0Oc8txczsR6GLtbOjfYumUijE7V84ZOh11R3mcARebkPmR5sXddElkX2K+6pRwEQzWkhJGZpDaS71UwIWfRInfo/TQdJ19zSR83CA2kuL7homlcJ5EE+FiHadyxUhVTDhC9GWifgpqOsw5ltU24m0PotWrv/jaxN7fK3EjjXNE93ot8oaSalbtn4FbVpwDcxvyoDuWx5xrmA0AMJVah6oMNgcdaG2NWSBNrB57GKbyzJRpbE7Aka9EcHKhFOwhOQQpq+g4BrX2QfleNj0NrjiMhiU0Fg51/kb1ZOYbR20m0l43ZBdcExmaHeNeCTlHlnJNP5qLa/NpTuzY1IXjw+iuHpKhQZKluRguqWQKHUPOQzqKSKvhbDGMLYgI31xajCULiEar5hBRqyx8g5lplGN+9M+FwXbioCanAKStI0PK3/gNwqYU/Xev5997XRSL60GUR9xavmP1KX7Gu2pAtpGI8fHuu9ivR1Q2+iuRbXXtNmhYkqFkBVXDfDRNhpmLh0DDhxLSgWHxiCrgnIM9/vPoRnDdo3t0j392/HMxkQXb/bsA4EjpSGT6MCOkM9sLz6op0srl6iLrK9HJS6UeeDmVWbKMT8zD5UeZQ1mdaXuHOwpod2JWSdjgGFKaqSWZpeQgQY3W+ZTHzJdFzjVAwE5qFR9X/0GoNgXk/i8e4q8Xy49WNMpB3J+7nX0X4x5LbiVh3UYihBE7l2H1T4rX+vZaOHqCO5zqm3hUT6HednI8d7GTjXcwpp7VFB1JlzHZm6hk1OxozEojcvgU2Qa/HxSqd20gorz4Ix73R7kDAK607sGEB9yRhV/sR6EMd9nhHjpoPc/z1vFjecyCmQ0omMzvh2n44etjRkMaMkZDYQVF4T1Ca1DelwJ3+UYee8fEPfhlKdi954ljRTURb8ScITAuZeK+y3oSVv8hgvZ5R2ScLH4fWq78G4orfFC4l5kp8wlzMOEojz9veiIG2FADNTRl37MrZ2/j6n3GKNykRFD2l+eXtD0an2+xIuFNlaC7y4BLcJvE2I5pzDW8tqVR4S1lBc0L/NwFH6bAbBKRlosKf//zWUssmMYSLz3jNmzLJeqc2X8qCgyZD/SZkYcV5SzqTwsnopbu+QDBgrbomlMn4qcI4ypmm3ZiuypF9ujsIJhqMvqRXUbN7MkkH9x5SHNC/Woz9HdRN3y5SAc7VXgcZzd6Y6M7EdzYraxU8SlPhfMH6o6uCZ/RbMFGDsWBrUi1ZcbQam0vWJfxmmvf4j3LjxPFo1zqckWLx2CXHufv72fuOGrKwnv3dfewU0jwvtSRNFPiC6UQ500G8sE1ACaPePxdA7Zh3HVqqD1bBsNPkb9XHsMKEIPPPfBDjXPBwPILGn35jPicLMTbBr7L9YXQIJR/YElZZ3XP/7styy8JRN455z/B0Jkmw7hZszBNQB3CN6/AfHcucImvZyKvmItZ6FO6cZaeD3DOkDTCYVkCnsyhSO8Xuw4SwczPlexdjcMXGWQt9qeTqSwqh1OydNkmrB0P4zy+T+Fnjz6Q7UPzYbnnHIS/Jc0zDadZsC7PADOqeQzvyq7izzdOpqVxFgg/zXDkvbgpeLaDpU+i/U0AALMeNyHahjSpuCMa6R85yaSsr+HaLC6SL8e9Q/kRmg/LjUlPdvaURWQmF4iinHcoieTf+KmwE1Ga7Ol/fPBRBC5gyZX6QtJBOacwfIrkQ2i38jdCpQQlXDWLsKMvxenMwcvxqB8duYkJzLj96JLFF30GnRP0PqLMlwt1unUQ2k7yrUu6l9/i9DuK5Vdb+HAX7ZTHiiQuVKdv34NlJzeXPvoXYXKLD3uWXyp+P6cgb7GPD1Ot3m7sVmN53a9vErh4mRuJV9kHOIzmQpW4mLWe24bPwLjx/LvTDnci0o3H7lFuD4dCLj6SP23RIHgFgMxl0r1N6+OQoMxFXdt3CcZt4IITGDYYYerMdilMS4GehiDz5iB4eXHaTCgZcyNKN92FBjHKDid/eAJmNEa8Ri6GmjXNLOcU0vaPcVao3MB77XKnAyX9aSI9tUiGhxalFxWXB9htycXlmRfnQqT4GzxW5PW2rf+Gyg4aPIbxyXhTQLml58D1aHzHxUz3EOdI1o8/SIziscX26ITJYT4vvgZJiHnAYLTdXANI1HHT9LtEGmk+6DBGa9O0s1kvhcLeXMjk7p2Hp6C1v0thK7SLaIJ8Gy54kbquCX4Jc0PtF/gIBXM5d0oWtkP2IyUd5xsuWPabNBbYjP86uilq9+ge3eOfHf8cgpNfy1X+fMYnSHUSRRnt8IVUOHfIMyXrcMaXaODgkW84nkcB+KMLC9RblY5gmjGjDiW2KZDYQRE7y8AW4nXcwQvaS9EnlXEO5eusBDhz2B8ab0izeh1Rg5gxu5P0vboUWSmkEdK/o9DvMaF6VLIJAGBo/m7kjGLPOdlFH9A2mYL9wpmBkEoniphvnIBLY3nMTdOIWOQNjmCCOnc6LRVJXL1MenL9xXK8E6dpITe3CfW/eUzKJynSa41UwLgMXwDAtPOnEGbJgmiPHjK4fZOi/+HNu3HmOemY9QZa9h/3KyGihZT4z6C1uNFF42DENjes+06D42BoAwyeU6jeksi/d1smBsELiXI/RHmjZDzbYmuKuCBlFEviolsUEZbH6oNboTz/xjfzsO82ke8E9VKIqbN7S3idOcS/UXD/WnABwkLMvD21oiSQ+n4cojcRoUl4nUPEACKmy+/vIjKJCC3mPcuecqp/Y0YzKeMcq7NoSqNcM/usDm558/PqitwgtZjIp3czM3Nf9X1ho8c+Zf4ijjhwkpR3y5wKJInzbVsnUmZivxAp1UM1nueCAgWEJfKeXqs0xcy3NBGulkxC0B1el+N7NsCohfc1pYnn4d7fBn2qKOiHLriJr9oU4e/drUSOBY/pQW95uAhMkr0yRLizTylBQUMQ/aidiSNJRHia8yMxfCqPc9LWeETnMa4hL2jP/2NjCx5n8dr7X3iOrtFkG6tMDZGUxJjLrHJ3DLTgPTF8TMZTH6yK495sZKESKwunlhEAALc8PVQq8pjf7JuNWZsFb9vK4rOzRTYOCTn82kqrAgT9pkmkGtkE+RCiw0Cx9ciXJWq+9D8guH9ugVMu5YQ92+Mvbqjz4my2e47dw3jTQ1dvR4aOoCZx9TgM7U1aKbOcmkt1sRGeCpw3sceHcHAEKePfyb+hacYFU3nzExyRIH2KPc7ynakHzkN2DyfbohnXICLo8mC6twkDP9OpPTf3Aw7LkrYIzyVVfVO/FWqrOAlHpk2FxTSWKs2188b4EaQMaks3I/oy9SFXwc8adH2D0hm2curnvR4nE5gjipNJxxgVUgrXV3exzZJUsqmVOlCa/lpckWA+qczwHKqmkz7WbG5DnCIX+9yvhjh0iotdZx9qLrecrTFtJRd7z4525EUxpPuh6CvKBdQ2tHYP9qWS0k5NpyP7uMc4tP3hphMZV4q2KHYsEVoYiB8SfCBjFQ9gW0+2IjK9Tip+pLgBqv24WGrZe8P5KI9DWd8S8wxIuzx/58IsjZlGky3cJM4aSmJ1IfW4Xw8bIPaLC/SzGyZQymOpkrIXHewPXsrYl8UHtv+bh5DTZpmRzddIFJ3mor1V3xgVI9jpWHs6NycllctYLkVHtuXlWRxNps41U7Mc2iqkfs9bCnCqiueqr8cAbe5zUUiK87P69CpE+kPO1doBQbCaxzdlHZw2B0HvSUHlxJmDs9Cugh7ZHKpOncCqSdwMtnluxkcpOqr660XR6kRHXPYipZmvP+ZB6Qw/44GaENQl+PVanbUYupXXZe2VMTg6imWi6doBAAAgAElEQVSKrrnUOXUCv+NLIN1wq/5puJZAyp8QmoTUfOp1V3f1x75YewDAU29elyvNIXCto1QQ/rYKerqk/+alD9GiSb1t+EstFOznXJWx5NeGDm9E6zHmGHtIrsYWQR7vt1wETsgxNyqa14CgDp4rOFX+0+imqN2je3SPf3b8cy5qoJBOFwD0qpRFykDSk/JHm1B+jMipftpoZEYS2Q3InIKH6oS7suGkXIG5cjAeyT5XpsPFcELwZqfXb90xNJM7TsTBCjT+YZ+1wy4UsTUe1GDRQH7GybHjsCGZFGB471IkC940NcFzApRb2TWh1zLSxI7k3vj8kP2vXL4rYvd8Oo6jWxuwfBnd1Ym+XyDtRfG90J6I5cyryZgUxXT4pmYtXPRhBi921noYvKPQfUehDcnSRE8b2kiH9q33gagDUWnAS0lsek1Xdlm9KyYEk6Z7DVfFaVvShx2+AgH6zRG8PMLuEGWrnuO3HY+j2H8govOIUGBkglOziY5/CrPa4IBWKuwDeR5Dhu1Eyj1S386L67BvGhFhr6b+uLSDlP7dUkoJdnt0ULGfLqpEYTnULEnzrIVXodiAXSy+z6zCTzXS8Wxlbuvvd7hjq6D9/JcIYQwuJgXXW6YO6S5+RvhQdpbJeZ2MxfN4P/KL0xHRSHHe/v4HHH5A0fuP42iYmI8AAPSp53wK7aOKAXcFL3WWvgpHcSKjM0vGwyKaCEeqMQoPxlCQP/eOSHRadjBMvwsE+c0teGFGVLruYAxcC3j86rceIu8j50ZpG5/NVWOfY9kHop6Xi8/DKYDE684ea/QW5byYfnQaPojSDIm5SHS57HgCnJVI+Y+r58JiBefF5vQSKIcwPWDt1xfC+WQHKwpItbXThmOHJNHsva/F6FlNJz4pfyj6iPEz1vWZjJiBNObuS7Ly5+QKB8g2EKHW3RXGa0uWWSl1dCC7H6+Xx/BbqL5OxD8ri9ct2Hk0Pqwk47nSqoKNYCna/bl3ILqMx1ni9Q5ugbxewll6/3dd1LqZrIs7bymMHoaCWkCJLmRZ8+HV1CjCpVAuSiHvQ5DtxP+njyflSvyaj35HCLPVBnzH/d+s8bwdoAxPHQaEX0+Vw51Y1rl6h/NhEW/cDLGznLwJfW/DvIQuZLFfGhwHc6KfqbiFMTbUbjwOcjIJrzdCxgiWxbw6UInAPqR2Dx7MgYQxJ4vNszl4Yk2dpOl4NABAKfAQgsRI8WqOtuG9OI8z5+AMnBZmVGHAXjksekAtqb6FWpzGka/w7sGH6dnhQVhyhRR7iN9byH3jwlF7UQ5OstT8hgszgBpQfxjlHvYAAM+tV7BzIp3DlgNDERDCaxs4bD1sbrL+MNCBC13KyecYXM8ypDmaynALZPeWq2L3MPQRF8zOiHXYEsdAspQ0Iy6qe+fjWQc3BsWXZTj/nPqQkuxO2AocbxXvHegzlvqP6CTS9VlZjhAbwgVFpGY0rrXynj3vPwVeaZQVViRxXpj1s4bCVS7ON1aqYfZcBqDvWh5DwHDWzO512Y+hE6jZTXpOmcPVdT8+Bwte//jaBcVrWKs6pDEPuxZxES3QE8dvJx5bVi1bXImF/kBoG+/TdMdtELIjLa3ZUgDFHdR9375PwYpIRlfuRZOK537UwtmxfKarl3dCcR3jHmnjZZErCPcGrTGCwxjOxa51pKUXr7cieS5109Hzj6JGjAufdEUZtvVkw86gyS5QDuNGmd3CSIbBmQnYYcWNz3n6XYxdQ2dU4/ssZGykA39VugxCDlxw0j04VzISqnH+GRevy5XKCG+ha22T8RovjdmE9LhIB3qqcPN0rWPYWMUgHv5pgq4w2k8gnMFNubbPYtiNEQTD816g9QF1vO0QvKDmP4xuito9ukf3+GfHP4fggo3pQC35XQYlO4q1SvWPcMiN4cdMgweIKmEmJ0npKVKmUL1t7iLUrxSPRnQsBVbNglFYF8gQ50HPQSgsJ330tTfHPjXSSpQRkYV5yeLaZKLBnrP+oA+4yz6bNQRSGty1F9xahox2GgCnpegymp/Ngvho7l6z7/2EozhpcGSiGyLW0qWK/bgSg2XYZePYPO6yN12uQNeWvze65SM+fSdFldorhsq9EwEAk6QHYr4CO2T0tWFe6vkvIVS6EOGsy+jE3Gfc7UWVNVBqKBB9vdehYAQDvmUR3MmFuooR48ad/N1hY4Ss5Xkoe9+A0SNOI32dWjxp4+eJ+fJa+PftAQd/ouOPC22wncwdmy4lIfU+jzNUqAfmvqPZE9fJ0jBU3MUaQU3O6eaBsB5HwbqnQwAGZFBukGxQhN9jfv1oJK/xyuJSZBhQ9A5Tm49eYTQRlpR7ovddotk1G5ln3HrKDybiFLfHF8lDJ5b92QYO0cDrWpYvRfjuwjlNonXdRUQOLq6auCdPpOJz9A7aJhOBpy9egc4WIlTV4OEItKdRsWUIkd/u1UtxvLECAPDE+BS2DIoGAGgu74uEOcwYvs8ehob9/DuXipiPHHK8DY82URLp0S8Um9p5bBPsRNCxhkaGfZ001qiQQQitogyQUHMPZ4TJRp6ZnkOmoeBVjuOOQXQHP7tn2VKssGBAfYA+s3byh7zwSYMI3fp7KmKn0iRzvDQHd9PodiZdMMeEKD5rsUU0rbZsPwdDPc7PmD8TUStor388TBpSc4m+RphsxJ3J7FBzdABfQO4wthFLWjjXHX/tR00950V9r/V4qchnbsnYL/C5Qrnkfxn/3ALnZUE6ZLxrC0rSmJq/UHoB1x5y0jvPa0X8VdLY6srD0PImFfnkQDohdj0YWnupFySOuwVtdX7fNvwETmgwLpBbFIoLh+mW7W1ht4bFIuOB4ezyOmr9fngM4tc/bEnGYklWSSzpkYUvDiMAAL+PEXr3d5sIvf4VPIaO5XDwZJp878F5qH5FStW+8y6+uZJ2fm4hlXs7NQafE1hHGftOHxl7qVUc7T8cXQuon0yXH4RvZgTp9zL5UCgZyyGoHx/6uSMnQmg7N4EpEWMR28jF8MpeDzwzIF2rD+fvH/uiCItG0lWf8aZwrRF0cd2eimHnGb84J38MJ8cIQtR61NQmHu3ASxU+TEYiM1HrSpe1b+VHOD0QvJ5xyTA878dOHdot1Iz++BcCE6h/Lr5+H/tm0kGzeOYB5dek8QoDzOCkReo9WfDuUcuHHri5iG62wj0nnAvnvVyr4InmBFLi4brUe9ZfGIPCV3Qyv8u8QMNt/v/jnSroa1NWkGmKxrVQblZLdOmWjrVsg/Y4Xpe0jX0grEv3WaHaHztvsuPF4k8t+GTPRf63EzcL48yb2BNGSrwgUQVWTtSa5gTLQE2LsaM/mS+RvpgxiQMPuCCte5ONERmk1fKR1zFyMc81odkcu0IYYA/R78StXQzQTupN/bB4py4u1FFvlTK7DQ01UtSL6/0wV1CV0rksFdnp1Gd3rOZcuL1xMu6NoY65xWERhGfS2d4zuALhS7nhfw+OwoZyLkRDEvmMeNbI484iBuDXpFxEpw3TCN6yj6D2hpvxpx7jcEGUC9WdUrrdTVHpmFjETeDIyKOwSWbQucE3FRv2UMv1POuI0Bmk0v89JNJNUbtH9+ge//D451zUsGtLuwAg+lIKxvaiGP3JbC8axxFGG03uD7mBRHN98tZhoSbdwKTbzNu0dYqiZBx3r8Jhi7BjKTs7zE+6AitRoqvJhRtxsILU4LwmUc9Dkd1YqEO6+0rYEaWahOF6PtmIVyIFaCnIh8gDQWasiTRr1M1lqPlLJNO24A50T1QAAByXn0eWoOV1gPd7DPITvFA3lM5i9Lwk7P5LV2+KszXKexN9ZOn5wmEcEYOXd094NNJlVBcbAQDomy6NfFPSa93APchrIJr5WiGFRF0iAG2P8Xhky8aFfiOYk6sQPQanhUSRwU1B6BNPh8xLZgkSh5CWRbg0Qqo3d1mb7TxnrcOdCN7N8+udqYFVoux+0dOkHDMeEvml7BiJvcO5a09qoPA8ybQWk08QMTZlJSL5PttjJ1VshucgIoNTkQ6oXEBU1f6EZEQztxBXZXgNZ+/5giZBY0ebkkZ4ZZAfP7IiuhQZuws7BZm5ILUUlN5m2PZV2nMY1nCO6J65h2vriNx1a3kNr+1bCbGDPIZhysegNoAGQIXaaFQFUuqYIvMHxStJn7drMuh8ebUsasNJxXUeHsfTa6SiMaeXIEia3Vd6jJsA250M1mo8pnmTHKeOvq/JDhYYbsGbZs7PXYuAoBF8DeGwhpH4u4nywE8Nos+dc1chr4LX+On4aki3kGreFlmI5c5EuS7756CfFueAUQxR8uI/dTAV9DY0TViDY7k0MtQvdUHSjxR065s1GO9P2eRUCzuI1N7Wwpx0InCV5mCcjGCqwMJuDPbL89pK4znOZzFjuWcts4vF8kOxcrI2AED7Wg+cLiAzMd6QhZAdrCfX/uaN7Tmck1VHW7pblneP7tE9usc/h+B6XYnsAgDdqmEQvcD0vqJYDtxOUe/IsziJvNncwfOTitF3DXNSZmZk9v5yg7FCg8ltw3J3DE4mAnqUVYu/rxlFWNMFzDZlJYJQJuMbDbqTYNWTqGXFCyFcSGM3WpFfeRivyK4SXds6YPSGSMNlB5HFnFNKqAuxBwAcvpuL7CkU2cuvOyP4M80Quaez0TmOukXscmakvuxfB+/7jBn4pwpB3UzwvtUHnjiiwF5mG0d9wOpRFNEPq/Br04dOwnB3RgSGpeZDNJkoYZV/MQaOYinPjxvHIJvDVHx6G3dNPHuCOauIOBb98sb9W9xlU978Qf8d1PwS7QdCTYjX4/IjIrGuhCq8OUEEVzy1Hc5niHDcXg3EtRtEzU/WXkWXMLWiYV+JPtvfH8OzUGqXsTptKPnOvFrS8LnICqPmY7gyDQ3RggxWOrvjPp8ZAqFyfsbKh6cR5c3eY8Un18FLgojKqpP7enXXTQzoS6Hb9LQr/jwm+hy/Lw4O74lKRz3IgcxbRlR+NVDPa5v/Fwp7snntXXfAUYWa7vefThhtwZ+ptO5EbB1jPL/vULw/M6s/ti4mI8geF4bBb3ivm36FwYrxOSwoScQSXx5z/DSaXbDVgJI4EXrX2CtoCieilHHVwarjjCM9ujoduEik+G4FUc/Ak8/R/oV/27M2D/FlrOTwiPNBlisR6Bc3HcS/YVRo33pGXNao18FImeWFFs8TcX8pKxzmRdzCwNvUxKbeWYDtv3h/1hVR907MEIdULps7fDFfgJR2Pmfiwo3IbiHqDO4lDK2DjN18NRa8U7jYAz8f00QZfEITW4R5HzId4uD/niixzM0VFdd5TOXvLP7v5uCCj1BA1z27Cn4LeNFmiuyBeyoXhhFzcmA0mYvZJA8FPFvCbhpt0swhfRlUirkKLG+abSmCqkl0H12CNyG8nTevIW8yDhqQrtWl8PdN17zAyxg+6LP1lkA1ijThYIYqrHdwcZlsl42EQ+yOsF/wyjxfo1sI//8T5FYv/IqkY+d26yI+1lOQFklpw1JrusAqylxAjv41Q8Q4TqAAr+2IL+ZEWP91NlbMoLmSMHE1Flbxbe65YaQh070LMPgr6dC0GiXUnWXYMsIuDKfMSX8PfloGG0kK+fdv8/dur+nCAAm6kDsltbA3kue3cIsvjv0l9SvbaQ3FawyFWvhTuI7IK0T1QNLZ4/crcWA+zZdzDdoQEmY+7FexGVqaOGff7yfdsQ4dgHGjSGcVxiTA6R3pukR4PF58JNWq6a2K4Wd4/CrupFxBT9yQ/JGlPsJf3fFE8BLop5prce+mPY9pG+nXsvG6UA/kItM3/R08Siiau7ROxVo35r1ejozEFAfmEYur2P1k0AkZrHvMhWx8w3BsEmTbmo4chbIHF5cpSeU4fJ0O+4tGLmrH1yzAJZtsAEB4Yz/YRlKwHy2pgVuOrOEs1IrGijk8J1UrnvOhT80ozmFnEZf72fiZyEX5U1IORP14TJcmPsIGwYuUTc/RUS8+4AFDpwoAgEyhMB4vodyQt3kuSgK4ec5+a4Ihn2kiXHWnkznvRDVKRlB6+e4ugsJQuqF+UX3xXpYyxqpbP2FWwIaWNj15PDNFz+NyBZ+LCjs9CA1m1tNp1058tiFd/almgex7fEYHWXPjs9Ftg3IWs39LZUVwxoRBe42g6VgrRHOsbmMtpMbQtPlfRjdF7R7do3v8s+OfQ3AKHdwJj374i3fXCc+rs4zg1pPIoOj8FOjW82e8pldjUg2RW2AE09gjB4bAtCeRjKbDR7xYTxHazvMSNm+2BwDk/0hGJTV/OJ+gSWEsdAH6ZUQcfb9XYqwkd2/NqhnYWD6CxxFyH9cPU2SW2EUhWe7xWii/4K6ocsAHolKkEf32XYC1DpHd/PoYBNxmHm2jEf/wsGl6eJFPhHd1pTDGqrN/15Lh23FCisXTvmtUMe40G1CmHiMSk2xZhvQtLLdxnbwGa3+T7nX1U0JONunjRcU30LhE6tOSwJfBFP1ciBcLiQwfD76GgTpEuaI6zugxlYbLMPMj2NHAn/+uyGqJyXIzkK7E83uw4RPit5Em7lu9DOcv04i5o9eMqW5EDGVTSd1fV0Yi5ygrK4buuYuBn/l77UonMP8se/5FtbrCQZF7tNAhNkIwa0hA6kLu+g9ud+JuIJHDvF/OmJ/A6MvVYL5ExsFuFwI+M8LSZnYAvyxImQJjxeC2hqjrYewuFB1iI4Yxk4m6z1yoxtW1/L0/869hojD55evR25E6ibTU0FMGBisp+rtZEEX3CjVCcBizdpcP98HGh/y8rRdHIyGF4v39H8L4nE5E1C+a6LIsOgaev4iCTy9+jqLXlFsmuEmi4TppYu/EDEy8QilEVG8E/278IrQGUdoIGfUJl4azggAL3dGuyYoRbTtzGGcwYvR0Kg2bAE0ZFPqze8kUwx5YcY2fN0XyNawySNdj5/SGbArzjcbGPIYC39/ALebnDk7TQK96RpoGF95BlCEp9psxQ7DyGI+zciTziCq+QPx3xovqTCdC7/+/+9dKDxfDaeylmchhxWYiQmAW/uv45xY4zCI9uf9OHrusSBeW2keh+aw/AODzhDGYb8QA5n31MxAbxVKWJ2VcTDK881AQI3gZ8oxT8GrjQ2j1JQ3zdOkE2TfL4Y4g5PjyHbWhPXdX41k8H7wVMx/ANp8PS3m2I1T9qHO+0zXFDUs2CRTKYysdX7UdUPKinqdaexPKYZwsustascCUXVerbMvws5m6jKg2J30PVVWI5zI8KdPyCGmvqLVtmuqKxEBSFFEhU8i0CuhxT9KeKFMTmBjyb1R+yIFOG53YaoNByNbntfNaPgtJGvxsuQs8tqT+Goi9wE1CS6oLHq+5EG9u9MfqXnxAzixXQYYR9ZPWfOaz4pzUcVqFUoHO0B9o2sqFbNSsCBgv4gPw8dQJyIziAr7nhWARashFijZdtgUWyZg1muU7QaEqWDOdC2YfsYfwK6WLOF6XupRZT1csuUBNbIFCM+r6svmnxOxJMFvCkqr9F0hxnZ4tQN5V3v96CyH0mUeqVp1lA+GRlAL0pw1Gn2W8dkeNqHO2WG7CgQC+CjJZNQmyCswEGhb0w72X3BhEtXrD4QUX5Rhx5tLmtW2H9BK6oRW3SjF0FXVHm+09sOYUg99S9RLI2MD/W//mPI3reQ6q25mJNP4C7JjDxWfvhlVYHEXqevmjNXT/UCqwGUkp5eNQS9ils840IkgROerslFtw5Ak0VKlZ7iyWxfAV3JSGWrO0KvbDfvjKU3pZkGqCSdacLznfTqKvB7W7J6MmwmkZc3oZN0nhG5c3Yakuz6lr7wTY7OD91T4/Hu+XcFNZ+HE2TH/znv29zoXcdYApxA4yVXDjtR6eNTAHeLZ+NBKT+PyNfVWI3Jm8bxD8819GN0XtHt2je/yz459zUVPnz+4CgGWBpkh5ItjJmiZgz3XubpGR8Zg5nWKyzp81yC+g4H7rAZPk1p4joHKNtO1s/GyEW/D3YsS+IUiRb0/yEGpFtjeLreVi6Fxdm9yEYHlSw9plqVB5yF3v19yZSJ5GWlk9Sx4b31I4NuniLhZ+9BocBa2d70aKwHIZEdOOhOGo/km6NvblLaSeIDI4e4xoqDGjCUIa3J0Lslzw5q3g3ZZrpiFBjSbKAwl7LBrEaxBhQWF9QFQ8RIq4W2Z7nUPPFf4AgN4uz/FoBhFqZUw1Yk4y+6QZTDq0oa0AIT15HnuKdsLAiAJ5v4w9uGvEvnWSs3RwoIznFyhCCnQlTRe7T3KHHyB/Am8XMWvlHXgTKRNpZMiFbYVCDhGYzQse+yGvtdCYSSTtIhuM+33obKfmXkNeM1Gny2s7xLczkZ+zma6ts8ddiEwk9UkdEIKDuyleVzXMwCdXiuWeLaScyyrFsDyL1Q0XU1ZiXCCNiq3nqhDXn0hy3ZchKNxFNKMlaMo2aUgAihbzPOYE/4GvLysAzi/bjdIaopoujR0IN+F8kI6hqF53MBin1InOrvT5iC8ZvNd+9qoY0E4TbN3HTixeT3Rc9I2fpW65DRYepH7fHL7jsgARDplcjlnqgl50vRfjVw1NoH3TOGfLX1+GhKCJwb45PtCbTRljv2QpsiayCcGxBTXwPMFOJTuOE/lWnlDCACXmNftVXYenOzu8TJK4gUUnaNr4TW/AhGVMKZh85ryoX96G76PZlHLFzgocfEu0um/WMAxbyZ89sLM/VPeRxXiZUir5/sUPNrdZZrZP6zD2l/DZUgtxh5AW0Wp5iQ2GJBFJ385f+Z9d1H9ugZv7eHUXAPQ7roMHU6iBtClXY89MlvTs/KCPNerUSQ74OaLuBmMGVpsYNBw4rxMPhBkHSV9+GCf2c9IX9VyEwNss2em1fCLOufIay9rQCTxs44jpS9n9otLGEadeUKv42zIM499WAABWfmtGiTJv5DVnUlhNVSM8bGF5T/FCP2y8QYif6ReNoQtJn9bf+YGHk0jLdlWT+l1ONcLiLmpflwx1MMqPE7LytDh6udFRXbgqHRcm0tmNM6S+ZjxoEsIMqf/dnP0OoscI4rNLD+DEGz7sl0JT0CDKGIi4AkvKrlRNgt1hLvC7M5wg7cyHsB0VEC9nGdGbA7sxuIwLkc8q6nX9RWqw+xuP/WFTC+Yt4oKU/MEWJloM8i4o2Yb9o1nuJJHLjrdH1uVgdwt1Nc8FrtCLEyzKXT7QzecCJt0+HbZ+jJqM3MSIw/zqGVC9xBhMomYehj3hImF6zQnxC6kLii0kxxFpdsQIR8ELhmrMMbZA0CjzaTFy+/Daqn6pgxIlWyR6sV70iO42iGryuvYYooH7c7m4HrdKxJ1X3ByzSg7B/Bn/PyiM1/6+41S8X8fzWIHT+HCBuptr6yAcFWi513SlUC1CF3G3KhWkS7bz4KXBa2glMww6GysAAEaeIpi3npLA2skpsLhOberUO25mBw1bMFLw6skBeyRRpcvoS72WONbJMWwrae6DKflcfCas4qKda/YZBY28D09D9sEl7DMAYPqKSfiWQ5pbqrgbK5fQMW1V4r+bbXdijyo3uxcJsjC35/WWmC2OJcHc+D7n50C81R4AcMyEc+Sp5x6EhFKbzt/QiRtunBciF9fi+T6ek8rUXig7SGCSXJDRHfTtHt2je3SPf85kCPXkTrhN+C3WGbLAtyg+AanzuKvdH2SJXd8YXlUzVkXtYUFvsFjSjHP52fCSouD9Z85Y+PkQlSWGycE8maLohtUz8Xa4oI9YM3cVV2V52GbzM+bPUAc0uAv1VglB3E4ihiC5QoyPZshx2xxSYyM9VSxvZBmScJcfaj/RkYutX465n4l2Yt4oIr0fA7na/jynJY2tWCFB9NJlMBwLfelMjVd3h2026Z7Ehk14H8oOIYk5dIZXhLahVx+WIRVk7sB8SXsAwLC4rRhcyN8LGq+MbdVEpkGCN3dZNV3CkbMU/c/86gGjLwxdrhe5jhe7ecz++UMw6hhDo6vjafD027EeHXKkVEO/NSIymee9a2QH/F/wmExO9YHcVSKRiZGk/Ccm2eK7k6BRaII5oi9wL3ZZdgPvx5CW7RfXh1dvmgG+BaROPdffx0tHiv6XjF/i7BmK23tsDCG/mOHrhkIaRLePf0CMEV26ZxPNsGYM74NVcA3cZ/M+lacuxeXHPKex74j2iksUcGA0JQHH1DJk/abDOcz5M1YKitHHPctC7AY2CwifySL3HzUXMXYkRXORCnecU+A1TNbcBVEvUmkDmSvY08CQtZk459MFy5u4akJH+f2nB7gfQ7PHM+M7toRQCuhUd8IJS2b3InJI89f5d6KfIU2B+jYh4DrZw/H3IjC8T5T4+EMwroyk4XXakoyhj+hYjD3I50XDwR5Lr9KQqJOyxJI7vK92hbsgvIWZxtwnvPb2RX8x1InXVnJtOor6cw4NDT6IH0E0DhY+zUdNPDOEh3bTlPPpnw0bPebyguXTkRvF+ZLt7wsfO8ow6T5D8UKPc/9/Gf/cApcZyIlQegdYsIr1jVWj+2DyIhMAgMjLnhigxsXigZkhFvsI+tFPoAb36OQneAvT0q6YkYSdTpx4YolqqOtJt8nB9gKuyZHm7Z1FGlw4cTeEDEhhS9Ztwt4SQuvWFzvQW5suY1hwCzpucYLUa1B3kxzqiBU/2djQ7es26D2hzlA5bCjMQDpQuPcMzoQynS/izIk5vSYXxhGMMsjpyGK1P6nPG08t9PfhIvHwZwbUXvB6tCmy6mHl7GzsnEH6MTB3PT68YSD3uII4io340G7KS4OkNeMlNW+oxY1y8UFZHSfp+d+28LzPrw+YuA2+iaT570pWwU+X4eMxAdSdTs9dgOa+PP9TPqE4m8Gw6c1DNchcwM/4sEsNHV+4UOnMIA0c+OkdojPZNcPo53es8mC3kbSu5TgrzJf/LLbUxrntvC6HjFl37CibgojLvIbxnUsxQIXUvbbeFsOeMj7y1pEPU4+dh9BSxId37WgFjI3mIhue2YYfE+ha32pfjBnS1F1bZ3cAACAASURBVD23h40AAKjd7UB4L17vLVVTESfgQSttsvHxJc9VOb8ERhbUj0TySXcXeZbgzldukp+HeuDyPBMAwKfKBQhxZqPQo18vYuASanNN/XlOD/1NsT+bMoZmy1YoJPCcawLMMeUCN7Ds1gEYVEmt8HUiqe/EoGAY1VET85whhcO3GF3aKjcCiQbUAtuWz8DeUmq9R9O5sPb6I44aTmvkTHiMhtPc8IMLQxEdQMkm4Owo/FDlBtt8gnKFSYcMnIX5bCXVu8PDkrJPyWgrHKtl2qBlnDROv+dGMk+GdavXrQdi3B5KIa9MXTEzkPNT+GwyeueyqWZRZyTMT3KxwwlS2/8yuilq9+ge3eOfHf8cgtu8mw35fMe2QzyA6CTDthbb6ih+7v1TiiGxpB8P68dh3WdmjeZqEhmlZaWjyZPIqKK0A29HUkAVHroM53szDKz70RSS2SxT8XtO96sp5zTqBI0dZ9/8gmkBDBA7+iVhUAN3svD3EZgX6w8AWKHEXJOaXyl+urB8y/v+flTY09FKVbHFI0/mkj62p8L9LqmUShh/P3+pLSTjiPAkxO6j90iWTu0Nb8CqJh5beLEXLuwjgnuQS4OgXu4eEkC3LG72MGRUEqkEaYWjbzzphXRNAmIuMZw67TRpWZy3Mcy/kYosV9yLMA+aUzm1G3DLmPW8ta/10TeOWbqZcUQRFwelQucqd/iDZj5w/kWz52uqPoQzSFEKq9qRYUdntHg6Hbm3ivlw3MUMn2LdBZzz4w6vE2eEpjhSvnv1zVAfxzpJjUjWbR5b8QJSn3icU1TSEHKFyOfGb1tMzyCFW6pCCiRccRNH0ujw7qlOgexNnkdVhRKym4gkvx+JgEwhXcnfW/izdweVIOAwHec79mHYmMb7MBprMOoec2mrp9vg+FX+3ofhpIz6Eaex/iONk1aDBEjbk67mxaRgZDoRtmWtA2aeIbLdnElKVru4Cvub+PeE1PJgJDBJdDd/wYkQzovDPV/icH/Ol4dlNAtmi8sj1YD3KT26HNo7iS7XT50ApyvENsEjw7AlmPf4UyYbd9bucodsAKWXTwnj8Pc8573yoyzMiCW6FDsxG3sfMDvq1MxsZvbkXZg9iHNvVsInPDUnWl+mlgU5GX79+KUsrM1kIL5amsdzYbk4tOUohdT12IryUFLf8QEH4aFAFJv0IxYXM8gg/pfRjeC6R/foHv/s+OcQ3PIIRh1Uxznh7lUWyu+954/Qcgrk5xoz0XcqtTkD9QXo7cidv8mX0YJ7J5WhU00tyirlN0TMiDLS7u3EvR0Ut80W1uCJBnWggBom2ovLjyHoOXfyN5lnsCKIyMjutCEkJtCS10n9gkxNpuF9RLiTD/SVRPIx2umOs7IRf4ma0IGowSh9Rg1q/+kZeCaoDftrxxjJ9qjZuJpKsdn42ToMFBJ0eegdhpRzjKCImlmgVYeF4EEvaUKsNW6G9jZ/AMBv6d8YpsK8npyDNva3Mx5T31QDiS6BKBzGXdZNRh1TO6jxvDR/idwbFLdztB/BcAhjBLEPRmDLT2bNTn0iehl/ex+aQJR82W4rfsryntTv1IbxR+pqLhPKMW8ntakXDwSttI9fhPcy6pVBMX9xyY+fe+X4bfgKXrRivGgKbG5Q4P97mcZCl+QauOhRE7QYPgkdEYyfPP0K3DlJs6BIlKjW/5wmvHQZT3ilVQOLIMZPFBOTcUGKBsjcTjE0inNORQ9iBCZ+nj4mnaE5ZTj1AYLsaBaY7TfC8ZtsNnBCOBdNWjQcEldUAABGHBWD2wr2Z9P004eMFnUw47wQ1BkwrxjvnASx5ezqUjOUXW7NghdhzgL+Xl+JR5hWwYqMdwfGIb2KaPyYxxRM3cQSp8151H9/pfki8j01sTEF65EoSfQ8NTERMluJcrWcPmOApz8/r53xKQUJYRyNIcsxti3CqIss6F9dNQ9GsWQ0g2ZtQkAV5+RkVV6ftVXToH5f8LcV/kDzB2MyvyZuxxIRznGDD9rYIskcXJQYM5ZBw/5gMKhTHqv/BomL1PamNOvg8CU+f+FNtdg0nHr4ffC6/Zfxz+XgPv192QUA33N9cG0L4fuFg/XwOsvckrubG8Q/sQzpwq5F+KJA57B0EReq9c69cDiFQcOjjbboFLQ9MmyXQa4wa+GSGk9h0REKr3HJzF+F2a5H6yBey0tpczBgHkOhClZaENUgJA86MQ4Lt7Ec6IfgNYCqR8UQokchNdXnFbzsGLr6+2cY0grZ3WH0sOdw8iLYPihLITz0izWO9OaC89ZHEU2CNkrnf9SiqoZ1p5szqqGQQDr3pIYC+4xdA5A3nQ/4UtPLMEjnxAp/nYiQkQyTpjeZYe1dXiObwGwAQMG6NuSXknZOm7wEZpf5gLwVl4JjBCfqwq2GaLFiTWGSFoVgY9MNsG1lGVlijha+CNrq9whdhE9tLNuKvqaMXlYMnlaW8L0PDXOMcWHzCABAyIUTsPfggiOyoRQlglZFFa6T8WxVNACgxoqTPztCGz/Wkl4lfNmCqlZBLmuDGZrfUHDv9Y6dWc6aD8VQKS6GShrmOGvPUKz4ynu4IUOnzyr6LypXUSCXfMGF3O5DBk7t49ySOySMykp+7tz9/4+994zrsf3/x5+hNIxoyGyoVChlNJSSiqyGSAohklIZka2orKyUSstKEiG0SINCISUioxJFaaOy/jee79//9vW569tx5+rhqvd5vs9jPdfxOk9iym5unnVTDXC/gqbTbhdS2+Q/r1CnzzdfJe7zg+hXOpVOHQtgIu4MANhzfzJE47mYeyfwmUg8m4Q1GTTDLDd9RS9Hmh59tgJnV9DN73yci03adAYG/+ZYkbZORqUSr5H+vAaGT7mJFMmkY28rOyJnkhQGNnC8ZGWzzyIOZeODJ393jVwAXPbwmJy8+QMsLqapoXfyNzYIZIFNO7lxlCsaIySZEkuGyXBkL2e+bvXWOLy34kYZrHQC4ktpMtTaEySE9DuAvqrczAYlv8QhIc4BHYNo7F7J3KeC9AFsukRjz3+hTXcOrrt1t+7W3f45iuomQbrQ954fNCR50Hq1kCGUa7hz6oUFwT2WKKNiYjN+eRGpFM0kxXuhXoqAPFbKyAo8hGp7Z35eWAmmLCCi8ncPxlghivo7VnG3CZx5BArTudPpKn9EhR1p4tBZ67ErXxDVqJqM1D7c4R5Y8CjQmrt/UK/JtL1QcyI0M1htoj7tO45O49Ga4B7iiI/kPW1tJnJ8F9GOB4LEt2anPqYeZ+ZIy2wNzHeySGfAYTm8bCRtlrMUlO72EUe7F0Xh46kjIaPBHXnAdXMstCD0tzO9hNW+REGfihhhyZ4xAPPMiXKVzi5FiylRiestcZhuoH0ftuAUXE/R+p/2kIUCFp9eCJVUGgj9rvjBrY0RAOciG5zPJQq6UrkEGTspzkv+oAywSU0b/b4RBS/oZYDhLqSgC49MRMEeom7/+R1I6UHklipNpN2+XBfHTInark0dAQcoAACqX71A3FUK3U/vMF8YOmQaxhYxAxazUAWRM1jWPsRKHQntpIQHlBWgNYTyxlgzom5ZpUSMP7wbADD/z1FoVRF9vBs+CQHziaR3l+ZgZz6fc1Y6EZfch8uwDOS1u0RSsdKBlLHrZwrE7lG8X3S9CQdOkPKNjyPdzfgUAkMT0mOXIFfsMuA4W7vpBd7G8EB/7Y6z6HmAeKWPjKAcvrgwXn3hz3dvd6I1nNGkI7Wu2JpEo6XuUhcqNlKeObiIz9BV+g16TKfQH9uoDl1JIlHoL8DirzTjvOy0Yf+ckkbSMfbpjmvq2D2eLEC54A6eDSNSrik9j6sT+P3O5mRiuOD44P505lHFjMfDpY3X+232A9IalHG26f1GQSSZl02eNlZn0UTBQhoP/6X9cxR1gDYr+mbHlWPQFQZFF0T9wu8V1LPanRrgrMlFqaz4AT6cZP6qzwoO6P1RbdC2YsDyqF1PdF7kIqL0VBuPDtGVPTRhOpIUqf0kfOXzu+ZWj9wk0kcl4REItuX1vPOOYJmAqrz/aYBtu0jt2t1JDS9XtqFyAPU46eIyWKyi2/n1yF/krKcru0J2Lnr/vyNl4GC63SmF4+PoUt0rGQPlhdRiln21woFmajS55odQXcP771vAhfX+XWGMecYF/tKikziawQmwqSgMXXE8y5g61wiSs0lpL5/joqfUoycO1gioSKc+JIdw8pWJFCBIiS6h5A8XLHfjohw+jlnC93pyeFBGRpH3pgEP95IOucbFQcmOC3utvgvW3yDd7pjGDUduqizk19Eh/Tm2Gs+27wYAzNp0DOtj6UpvCBbCgNWcDGXvqP3IjTPBkAjqn1qeF/F4BjOB1/dkICWflMh/DDeR/Nr7WFFNWrdP/yr6FXPRfjE9DNl9qEFNtg3F612kYn38qGOuOZONxQJ9ad5wVfhE84iX98Y58NfjQqR1wRnSS5glXNzICZk56jRy9KnLjf+ghvmrOeZMZGZiR7AgB5cZAOtpzJo5XiY1nlYzFIPj+Awbz+ei6BrHrM3dWvRdTc12mG0f1Pfhv7+J59i0rq5B+2AeI3O+1g6Pd/z+lnG5KF/HrOCVzTVIe8tw/J0eDPqOW+OLejfS5MENQ3AnVhEAkNCpCdNn3GDv2jeiYS4Xxom6XBhFLD+idjLd7sDTf3DEhaBB9MZ3bD7B3xEr249F7RyfE19w8fKf/wItStwkCveMQc9RzOt9ii5C0JQ4AMDsYxG4rUOZQt02p5uidrfu1t262z9HUfOPUijNPOcCNXWKtEkZtdBvJpLxGmeIjZJ0DnU+mGBVMHeOyFFEWSnnesByPoskVs4Vx8oMVlLQ3HQTJkX8u9kPk2H8lTm3thTu7lv1AlF2gjmruQMO4Lc+s1++MjtwQplopuf7veg7lIjpw0Xm4Gws1+G04JC0pOpQZNjTRVxT9AUlHqS5IftmoWYmof9PYdLdfTfnoSuaaGhrwQeM/sts1KkSIayM51GsHa1jsPQkc2k3peiwbf0RjzFPuWMXiX5B01JSqpNTN+JJMynocJcW9EokHTDIIJpN2zkYB57QAV1o4Yox9+hk1p1Kx/PFfF5V99QxLorIb4INkdFJ4TpEniFaCKopxbJXNCpWDY+CwQjS0cO/RJAoQ8pvDrq3BumXEH6e96DRdhyKS5lne1f3BlNfkwYHDpwF01he+/ZnHkOqfrsNJ5OZyF80Zwf8LXhcyiGzFF1dRIQTZEhFjfINsMiNvzvC1hhXuyp5P2rRqHMhcm3ZpILdkyjI69vwuYrXuyDxC1FwdFUYbnSx35csq0S6LA/F9802R3odzSNfCdIvp0RxrE0jinpwxhhDYojyt3/uDZkyFkgY1mcMMucR+UT7sWCDdkUKYsuJljoze6OymTR3pnE4Rh0lTVSJ3IzsIo6dqIdEwS0305Dzhz87trghKZXO94XLVgh/Sao5q98sBAmzqstFExoLyoG2MAwgulT4OQL2g1n145JrJbauoxEz68E2TEukvFH8m8j2bX8NjM8i/Tx3PR5RwzgXne8fgpkc2YiNnBMuCQo85A4i0j6/wA79FtHtD08PgMpzPq88TEeCB/OIDxZK4OhmZgWD+Sj+U/vnFrgnpqQ651zV0JbDeIb6unA4D2GHFrZcg+YXTpA7CrfwyZywvro/YbjXNA1UZ1FTqtC1geZy0o/db17BK5f2vX2wIgYNZkea5pECyEt8wOqNHChVHtNQ85L0WHlVCtr30zm1OySBjT7syGcb+fbxuBWz8LqIn7vQWBvNgrehm2zOwbZDdF+34iGkGjhAfqykrtjiWg9Db06sK5uuo1cnYX2suD6S13Dx/GVjCzMbLmzbmzhoDv2MxE9NDtijEhKY9pBVQ7o6D+L4b24Im/3TMPGCgD6uJLW1Nw6C5Fm+L+KqQjNyR3BCzrLJh/srftfRpf64m8sNIyGUE73nFCcYSDN4usrbFUbW3CT+XNmJ6Dxqc3XVKpjuxQXDXJc0JLXNBk6jGS04e8YWA9054RpC/XH4B6+Xau+AzCXUXAf7sh87uk7DTZeLXnxnGl4/4KQ3u9gANwW6oLeucGM410MBH17weTYcAUT+8npihfcgsY3ao0KpEb7/5AZ1Poi6VeYgV8iZMOJiUh+Bzy/Yf0vFYpAoeH/BCu8qbBjHxWfdfmpR+p4l0H9B3emP4Uj4T6RDONLjLZwyK3lPrcUw+EI9UvELS2qlWi+EkTudWpUzx1FvyxhF0mohGBZxttedLsT1RXSz904lDT6Qn4UzvlwMP7YNgNkkSizI9MetI1xEk+R2InMsN913X6gZXha5iMiX3ATtnFUgEkD9rFK8CsFh1E2zJ13Ga2kuiPI1/LvQSavQdYESjEjrAWitIp0VunoSHlHcKK8N3IK2udQCF23jgpVgvQ8hGqSrGp92YUEptW65c/rI3MGNvem6HQ6mcHwC6fivrZuidrfu1t3+2fbPIbiHKqRGhpvKcSeQENronTTOXWbFC9mHqVgfTlF/d78Q9C2hSSAsw13/aXg4mrZQhI4MUEC+P1HSYwMFzGwmPdzaFg/FnYTlBlOJSKbGN8DVjogksioJaT2JgCol5BFlTKHbL7EJw78KXvAreMuXyd9KOP0k/RLys4WyEpGaROdjHH9G5/N2TR5O3iEy+PKBYm2jRgXuPiEFaP7QA+f8iQxrFRdhqNZu3qfNIDyrJnW12MCA5mcDf5QcZfizb+FytNeQ2l08+RlvOih0e77RhoQaf/6xgN9/iLoRwtUE4c/6SiyaRJoXuM8ML82IOCQ+LIOhPlGJ/ASaIvK3bmDhHhon71JUcPgm99T+H0XQto7UPOH7VrzXFBRdXE8Bekrdyv//KM8iKS0kmRJJx63MwY1IiujXD3/GmzMMmw5t4n2mVDhD84QCAOBnbRny7Zgfu3ttEG7t4ZE4N1migouKxdCczL+TXbgYOneJni1elmCYQNIYfMMTQivZ766jmcNSLXCDeR8eU/pypAL92ugYO8YXQTufx73GhCohUYf91yBExJwhfBNz/ImYtf2r0Hcq3dV7GfNw3IlVPxqkHTHQiOxAJILUuO9HKTTfoaNcbjMIF4bxEH9B+TzknmZRg2EpTuj5jmh10nNBpnDKO1waziISdi69MMWA5ppu4wC8i2QQuzU1BGEbaBJt8GeodpuJNmL3cV5EaoxA9moixoyVIjg3nNS9VOI9lL6RIV2/x3nWoPIIk2bT1dXWA7TK2b89lkrA5hPv6YxyLXaG0swQmUyUfDl4OKZqck5ulBiJ5j88lrZv1B6sSaDxMzKyJxyvkyFdYIzuP7V/boFzCiWt0w1ug0s0B5Bjr6HQ9+bZSl1tUZxOUQAAlM9XxZ8ttNxdHTi4l0pMxJNdXCyuluoj/Ayp5NudeZjqzSoU8UtC8WQMU9/+RzihLQf3xTfBz3GP0nBLEIS9oP4Y0c94T+YVEzHhKcOPSuMYGt6ZZYOw9YTyPnlOGCvBfw9d0wUTgXazKaYLIeJ0aG8NZoTAoSQIO3U4CWfbq+G0DBewCdLBeKbJSfRhQBZW1dHJyy1lROLZ2yEY0cHF17Q5FKbJrLpqu/kkXljyd7NCx2KfO+naDTtuGNu3P4OcMBe4IbNj4CNwH0WT52LxUFLQGbtkYeNAjemEpkCL8/DGo4l8R4Sktz+smjjkXj4uwK5nnJyRHe8wbQv1vbnXSJ064kbC2Y8U76H5KJS1cEF1fDQC9eD1uvQWYP4e0pmjIaz+u1xrBBZEMPoh9VQEXcF0e90v3sBHB9LmKzt4j/O/Z2IwGNfRuzANSVYsCGk+pAHvWjiZkky2w6IXKWiTBRdI5Q/pWCbQ+USshsArlqHgHV2XkHSD8ZrTQoro84PVZzQL+IyTM25DdD6d79vvJ2FWOuMnNxTT4LaV/Trg1Tf0ELxXZMUzjjdH93osMiKt7uHsh0+uvP/QAzHo6C+okNLrMLRlWFSyxo/3+0b2E8bM5kb8zGw+lpfwuSmK74XeA97Tojk1mMiPg3IOF7rFZ39hgSv1urH3xHE/3wQAMNAoC5lNHMvD72jAwJqbUnkVA9tij2dDbDTpo+bV52g8QQrrUT4TP2+Tgqq8MIR+b8o62qmV7AfLO5jcxcVXvmcGLv8gpZ879jdsZOnsyx/wh4oPafr/0ropanfrbt3tn23/XA5unGz0XwAYfuQ4lggRhSyOv4H0L9xltW+V4f48wv0ZM57ijCGrj8xRIZXRUpyNRWXc3YrdpsIgjfTrxTEnRDQoAABKaq5ASJroSl2dwu6oWBWkOxIBHfa7gnfpdBmdHJfggxN3xuIwZ5wpo6NYbkNR/WZoGLK0eF7SoeAizGdyOzW2X4bypaSXjV/8IdrMaguiwyh43/JZgrGC8K55eQY2tp0BAEyfF4pVjhSnT1gPgdpI/vshJwrzzndq0StXQFffzcHhnqRU5km1eFPCDNvXbwfxWpvHq0rVeZ8utZOwaiu/s+GntTBJpevp9aEeUwpIsdfPjMN70d0AgF/neZ+v3xxFHy3uvEfWfEDbF6KMwQ7H8WQsRf9nkk9guJKh11XW7Jt1RaeQ4MrPqFhphqna7BO1wgC8zeL1ljjbo8GR1/NT53sWji+Pw8VSUkl1p0MQkmSFjD8tNegnQWMkW41o8aeyNn4cY58Z6Gcjpowocd2mdqxZTR40+vMAdO6lG/qknqHiti/30GsQEYmb7VZU3+TRPu3v1Vh5iQU2b9yPwIQUzq1X6UTf7T+fo+AMa7lFqazG9iDKAN+eKWHMXiL7xtkTcP8hP88znCjy/jUlNLxjhRuv+x+xaSkR+q0CXTzfLLiGuQfELGm4vJ3CLJqalRk+rOJz7Z/+Fn0+8/5nS1+BhgnRqOXPBzhbw+u5BjBL6aMzBZrVvM/pwksR6SAo0qq+DzOS6cqOfzALDQvIbkZEcLwtvl6EZU/5DLWKl2GRN5+35blc7D/EiiQ1qT0Q4U70G+bDY47ayqnQNyUdb9sxD146RI/X7YfCXFJgro3Xg4Ig7K4g+qs7B9fdult3627/nAYnv5L6g7yRA84f4i5bpG6DF6bUzM69loXMUlrde6fJQvIEzYeFN5k5ipULR5APUZn/vghsGs5ogGHoa3z9xQjDhEuuSP9EhBPtQN3m5GNRnFel2Cxi+xudFdwBE+XnImUddZeOtmFYU0QRVliFmlj0ri5cKKTupqs/FsK2rIgbbJgNa4HuVlTVijGatO3P2lI/Ux74DfPEiYBE2hVh0sLoS8id+7gxmMh1+IH3sO5kBOBROL/TV2ELiPaiTR+fmoY1VowRPBwgj8dCjNIMPlaJjE/c1WV3UScLWikMz2M0X4TnWyPhG1HSfssknPzNumVpczNxYSZ1pyZH9oPVg4u4vY+p/57CU2Fzh0hrzLY2GEgTfRTnD8H7LcwT7s7iNXTOVmJLNLOGowdVoNiUSDra6C7yBS/xuXnUFyNcqdGsO0b0Yph5E84BfBYub75idBOfbfqQfFir8IiX0gzm/aYnL8HFcsGbyXbshlJvosfHX8phYc572/J6MLpCmIWsEmJ1j43bHOAsL/jcJ/pQ3M3PXb+zCLGN1H2/+A/Cjml8LjGl/KxyzWK0dRJ9tg9Ux58+ROvCqzyg/oKCu9LBeMzsQeNnZDJPbFQO/Yk5dxj9aLm/BGrxrCKzJMsLIcJxAIDEeVrwaxK8IEmXyGjp0lLEjmfWbm3NTbxpZO6wyVse2nuo+07QuQtxQ0ZlpmSzb+KfbcD4PI6F5xafEZvETOfZIWuhMZhMwnS1J1w7qbE91SfSbjpQgedzaQyhWBnNSzinhoelYtwXnsDpd60Ab5dQFzzmxjFdergAVapkOeM/1WJeJM2LY7v34c9Q3r/Lzntwn8Os6jqmUv5T++cWuKJkTt5ajUp4HyUkv1JohTx3dp7yS0n4zaeJoPegFnM/ckHpcZadmF/SE4lZdDpnPl2KbGcO5HmrAiEbzoGeuUkJ7wzpRBrWs1qD9eg22Nsz62OyYROO7CSdMws/ird5dJme4jySRrKj5bP56GcvPYQHVezc/p8DYaHFwXJw8QEsEVTQKKpTgN8H0li3GwybXploBdvjhPW//3SgYCOdt+ePF8JLhotS+6M4PBTn5+2poaNVODEHBWWcWFdDHLF7IEX4zANPEb+WjlWH0Us8EKIj3F+dgq/m7jCMGsufXS/2xdNc/t2nXZthJ6CXMgqPsMWZtPqgK/OI95/rYpmd4LVU2h1Y4cJFYtmbQuzZw++3KzEOBx5RnD62js/NyHsKxr/ndy6/k4mY78xize69EwoudBGbRzfixmKaC7nqdCGN7b5AYjc3keqOQdB5Rrp2U9UM8imc4O8u08FWHGYOx9l0UX9H7YByO42oP+oz0fUgGwAwrXUngkWZkRwRSUNj5A9lrHlFc+L8hitYUsJrGPQOxxZ/5gBzpk9GuxmPWr06xMKd0zJqYP+eG8C8vyoYf5gLbVx2EvQEObHYSWGonMq/67mOi9A4OTVgFJ/9o7L1cDxPhjbTWA9xT5nHs1TwwsDD7Os1H7mxxw4ZgNBgHq9LnJoDhbV8tsYntmN1PJ/3LwVFLGzcDQCIX8Tv8WR4Lc4e4wK3/rYBqnuSKqdOX4rtunRRXYq84T6Sm8NpSUoQH5zrcPUNN/M+C5bAdxE3yf4DZuDxO1LNk/dvw+QmK8bca+B8ShL/ioI8Luq14z9itB/vP2nuZmSLseR8jUsRnsdSQgHm4r+2bora3bpbd/tn2z9nMsTLuv4FgE61T3hswAobKrszMe4+qdq4L7LQvcCTBZ5NM5CsQov7ogF3DTnzVpTJMeLh/rwR7wUZoY+VjdC24Y7k/Skd9huIIm6mC96SFNIO4WE8NZB/2xdbt/CY1ZTMN7i9WJBhuzscisIU7SN3mPC/FW24VcKIyiSh1fjjRESxa1I24h+Sou01csIWeUYK4sX4WTcHW6L6BTN4yVeGw34G0Y6h2mmc4UgMswAAIABJREFUiGVa/vBkbRwNYIFMt5ks5uhYZYkbyqQk7hMqYX6VnydrcwwxscyUKVelwf0vqUFrAenOihAxGJzlM2waoIFrj3nIe0/WQXhe4u77PfQ5tIRI6RPqKe4v+xCP65NJZe6kWEPsF+MOaw6GQzGEuav99Qux9CuzcuoLBCcTqoHPU4kifdoBMQmK14Ps4zB7P09qLDVcjBmNRETrxQRvN3vmAWExfsalw624IMhoTepUhfVXxi8iBZm5HrIL4HmfWULvl0vw9xSzYbulv+H8c5ovpxquoLOAqCV/GWu9HXz1EI+2UmC/v8gaCi8of2SYeaJZktfu0PdDc4agPmAtEdeDWwswL5nf30HUDb67WDRT5ngdDFv4nFM+XYFPPpH0kMc8ZnZhcygmHCQ1XDokDhGLSUXHlJZA3IcmmejT/fi2k+MztSf7I3HxKcwLoingFjIN+9I4Vqcd8IBpJsfDqYRm3BWcWnnXl4zH+/gKyMXxc916RKJtJk9A3BuSBv9GSh1XvwzBqWCi52UaRPOHdd2wwIPsx3XkctyVJVOaUzYLPq+I6DP9LBCWxmt/8+X/bx0ijQddRP63apohKUsOqjA5DLvymIv0mnIU+kOJpDfdr/3PJsM/R1G/nKMTdHrFa5w/wgn046AyGiqyAQAuo9Wwx515qL8FvzH1JunA2Mc896iSWQNfSnQQubwKxl/5GZGDt8HWke7OlpB6/DLm+ws0Z7McUUbdUMgfov7g8sUGCa/YMWNnxWOlPR3V7Y6G0NnBjnRU5mRbZGWFWA9C9qPOQdgm0EOsG4KxUJ+TV9VxJNbL0NVrsiVtuRfzCpv8WZGkKfYJNlU6AwAuTdkEPREucMu+lGOxFBfoeY2kg15fNkJon+DFxxf3I3siq3EM8HiBq4JSTYfMF8FQlZOrIZWTptlhM6J/cmG5PGwzms9z4nzYHgvNCv5OyqfbCBAcrTknxYzUgGh7NEkxRH2osRM7jnMyqL6+hj5DqTH+OJ+NGDX+3ZMVpDjLEjZhXwo3gxKPhbgRy4ocN6oOwLOU95H2qB46SXzO/W7QmXs5wQc31ekSpy2dhKmHuBB5edmh+DYDt1e+c6GW9fyD+d7MdSkoNEPrBedNsFQdRo9kXw76Gov3ypy0wUXMpZ3JG4fFy0g7fSaPQcZyLhw5j37hsR71Tw9tRWgo8O+KDbmJWGrmo3cotbRxu9qhY8w+GZx8HuER1HJtm4ADT9nX08Posr6f8BxCPjyjO35YJ3Q+kRoWX5+F8tuUXlze/MKYFobAO2eQqhp+b8OmRFLUEhclvFtHOWWUoie2DqIjWfC1F66KcEH0qKFm1uq2FS/HMVg9YdIn7FThd3XVasGPQNJ7pz8P8HUmv4vuRWpqNqu9URDIs6Ol9UYIHUaddmWbGNJk4wAAcpoBqBGjC2y9XrCov+yBT0O5cJaIjoXyL25m31zEkeBIvdHdZw72aJgAADgj/1vrpqjdrbt1t3+2/XMI7tc8rtlyrhuQ8J319m/KBaN+JXdFUXF9LIrj0ZP7O2Vg8ZMUdeAxQuiRkv3hGkCH07CuEuVPmI9zUBTCKHceezErX4OaIiKNk6ZEDp07ktD5mgbHN10RXAwnGph4zg8Ourze6QJVbCzgyYmrv0lfRP7EoNdp7lK3RJfA5C8Rmn26A1oWERm4uY6HcCV3tWGCd0QoV2xCQu9KAIDpc19ctCH1uai1Bl4vKcK+XmeK+fFEnYXe/E6HbqjgSADRUqTGVUzIo4irGK0IyFBM/qY6EWJ3+V2WPSQ9e1G7D3p6zDUNeXIB5dMpuLt/TId2Fz/jqP17TPehgTH1PgVtmUxLpJ6kc+j9uhj744gSt6jpoliHyHZahyoCZfkZ4/SILvPthGH7lAfJP/Y3hF0Lc3d5sl3osYsCf6KdKg6p0XxY+YlINXWoJw72JKoJOngXfj/4vReXPcaPdtJOhxgiI1/HgRg+kML1E78ZkKmloxzs5QmvPhTFFxbfh+EkFtu0OkyUP6V+LEZ1kCYeNluA8R8FGTyvHOSb8d463R5BaisNJSfBW9pKbH/BbQipfaveGuhFMYP35NlwmG7nM7rnGoIuA/bxjXoWN0jwrcTNDUStNXVv4fWSY2/98WlQfE26N6u+H2x0iWYvzyEi01CrxpCVZBrr7priyyQaZhFWL9H4hmPu9gbgtC4d7EFWRJQL+yhg52qOp0KrEuxQ5ZiMETPD/sdkP5mrFuJoI2WBxEL2dfj4cryw5t/1+7QLHkOJCK/tE4bpWSLlOS7G6NOT9/kllUh0pU0h3ryjTPNC8SPi53Fsabl8Q+okGkNdN6fCq4xuNRiJ/E/tn9PgFD1G/AWAeZs3wGEaqdo+/wi8dmHQ99zge5goQ/teqsQefWYwAGvawiDildMBuGgbBwCYVOKNUxF0JwsdrbHXhwMh4vtTZCQT4lv85bk6tbee+HuKVKz2RT0cdvHvvv+2gPUoai27z2ii8DoDna2q7PwPwT3hYsYwrqiSCAIreA4v3f8R7kzh4jqytBS1F/mijilFhPJNIn/wU5TUNkCrGVLRdIHzjC/h5ypez6PvCfwawr87n0h98IGYMMJ0GeE4M1MU7nJ8FkYtVuh5mbQz03gOxhlykK2fzI3ht/IJVM5h9YdjPTchNIt63d5WazzKYNmbl5HLYb2MNFBPjc9ldscKBGjy2qe+P8LeTD7bET1UYWPB/dVLzg7HHpHmvh5OfaD38cmw7MnPsooKxuEbPA8qVbsNfw5zU/FNPgDbSmpTs2o4seROzcG2V5wsUXEL4TyH+liFeQVc/zB+0DaFdFf9nhv8TbiYHHnUDK9IutLqYxzQ6xDP0ob5yqIli8/iUAVnVoX/VJSOJH3WPHoW5iFcGA/2loT1JH6/SiVRjEjl95YQ572V6g1E6xa+wMWi0gWmKaRwk+/0RspQSgXT7aOh3kZpIlSL79O4u94WJ+ZzwbVflobIWMaRhHofgVYPbhIphpsRN4FRk9QB3ORH567HJ71KAMAot1cI/E532cr4AU62cbFPF9uBH37cSKUFR/V+xV5G3k9WL0b0LqxxoyYmnB6C/lHUzc6rnEf5Ufb7sJmkmiZ9lSAcx2jL9SFvUJfF75qUHYc9Xdwop7h8RvYFLtw/JzL24fU6HIPmUQeUfQZc+sEjiEczs5DbxrFcIjEIC84L4kbr5LqDvt2tu3W37vbPIbiMvT//AsDKvWvQQ5Hu3Tmvcoy5xWoFo/quRSHPNSNtYgqCrIkiRGdyUzgjlYEdwqRwdgb6MMlngUaNshbM8iGdvWKwBgV/uDs/u0zBemPyC4R/J21RrL2NuDOkAP07zyF/JX+nf/wDdBjw2ItUA+/HUkoJHpJEkfsUV2LrAKLOU1/bMasHd/53rfmQymA9NHXBzvrG7yUC5hMBOMzThXcWr7f/3mOUnSJaNTvwDfJVREZ6E4lqNsScgO4hoqT39aIYdobHloRuucDHkc/iYGMK3ujyMzLS+d/ozDLIvOfxnn7L1yI/nMJy2swjOCRM53DTsgj0fs7Pi7/Gd2BcKneBZyBdae2MX7i1iv/uGlKLy7ZEAwd+qaKtB3dnTX2iK41tE2F0m/REAZWI788D2sVtb1Czl07t2cHzkJlDlPPMmeK2uO5muJcRJWt71eHuAiJQnycG6OdCF26KEjNe5TYhWLKPlV7sOsKw6hNR+RwPP+Q+5GeMc8vFzZ7sk4MBRLgvO7twMoWFFUKq29A7jW+2Sut/DZcTObjGaLniJ+OIGJ/I8K+QTzvmyTET6LLNEj6DidahZQ71ZhpGVnmlsJAhbV55lvRapVoPWlI0z3S1l2NGKpFT396maDKju97nhya0v7MAwtallCWuWavi/laOM9EYW2y7RKbwepc/JkaRdtb2e4t0FaLxzyAybBvhB+STjUyJ7ULNFVLiQRlHEBTNz+g5NhxHVwheoO7NAgk+Rhp4tpL3WXTUD9I/ibo1jzmgVY/SzKkiKZy25eedzq0EAPzQLcXlP6StN0orsb+D6YFkm1FQus33a0SZXkZEP1Jh3Lvxf9dFPbOIg0Z/jSN2VXMwxTv/RfpD6gtJunFYsom6xU+LBIipssJC1SfqS9+/fISWK2nPzlh9NGoRLu9d1YkwDbpGZ2zDUG3PhW9OL2oSFm9n4eMV0qG+ptkwymKI8dOgaHzYzcWgn5Q2ehcIatN7clBMU9JH6xZ2bsLuHugZzvsYnReLgUqsnppTXo3v9aQibet5b3P2DkKjDunl8VHvMTKZk1brchc0pRnxWHx6AmZlkoJ9/cyFynDfSfQeQ8o1x7AOf0x57Q07duG6j8DBLHyO8BJe21yOVKZjUjJuDKMO9DXUA5Zp1LFSri/G7KtciIPMymBxme5j41xOeu8JpjiYx6hKn7IMPE7huc7RdarQWs7Faf2Iiajq4M9q7bz3b+aBkFnLqE2r7lAcluMiE/OqEZJi7NeuyGJ05FJnzZhC11b12wkIinEg/oAySsKoE9V33oTKNp4+iX9AKjc/4CeMelOjGr2pDk2vqefZXl0GHTvGgJLf70NUIE+7fPcnZfbPfQv9vey/UIelkPjK87W7pm3Ejz/cgBaedcQpO1ZDWRLK79/jpBM+Cd7/ebd+ElzWcIwM2euCI7GULAJ6i8DyLyljZCr1vJcnguB2ivKIyOrxEEvhM+rzNAIe4oxqSG1cj0+DSTFvvSHdO/okAmn3GAxPyndAWTrHy7XVH1EqSwd7qspfJF2g/tzkQH1woKMe7jUzXuOQZYCg87x2lvop/HrGvn4m7YCi2ZRQQl4zZO2i7Qi7UIala28NRY99gtcpvrgDTzFBcPhjA8RdqLceGsnQd6WZF6RDuElee+SG0TnsM9dTN/BCjIva7mfvcUqNsSg+7f/Wuilqd+tu3e2fbf8cgssJ5ZGWW9ItKHpCOK0d9Qm7rxDZtf9Nw8MbFFvt8qahwZwhxmETmDOSr26ESADdxJ2Xf6GtiaJ+oNogBK3jjmU4uxYtdaQ7MydQHK49W4mDcRTvV0+2hOp2IpLiHWdRJ8ojMHvHjMXHC7y/SzLcLY3OzUDpaxoBtR7pmPqEYdPH9sNxfycRU+a3EIQlEJb0+kjKcf9FBVbmcNf/rrYP7jOZVTIfsRxChjx+pi3WCNO/pC3mekRwKz60Y14hUaB9ezm6komoGt1kEPSQx4WWz1WHhxXD0LoDeF5wYOU0TFlAKhMTVo+r7gxGy+hvQ10W3c7BD87hSykzTqttieT2vBNFeTENhxOdPzG5leaLX9+ZOLqBx4yMHfYg0IoU2moO3dut9TEYPYDIYVxGLNw1ucOH139AwBsi0CHnMzAmllKBiCMRdfrxubBtIx1SP/wYsk40X0aGj4RRDilmaB7Rp59CAx7+IBWzcNGA/20+TzepybCK4pGrSfO24PYHZwBA4AFBUdHcQmyqrQQAXPExwF150tU5DWa4Pp+i+OYJmzFvBSvHSK1jgc4Skb9QG02BPdv6GEZOIXX3WWOOsFQyjG2phyDSj8gnUYVmw+Tf2VhzjeNMpuEVEg/xzV2TqrNgOJ/jMKuwEa9iiEZf96IMUCNxCa/8WZhzsJYN1vjQGKld9RYqvViAsvJhGxa2kQrfaCWijH86DN7HmSUs7ZeJdV84nkw3eCFiP9HV4bW3EDOD7EXehf8mV3EPI8UZFh5jegim+ziG4luqoG7NunUPuoLhPI99Ka/I/tCcZoFCF34nYfO1SLPkmHPtl4KTR3kfXpYvINGXz+N/ad0Irrt1t+72z7Z/zmS4XavwFwBqu8IRakuzwGC1IaQ3mAAARCIGIfctNRWtuL/wLOWB5+L3fOPSBnMpKEvw2NPvpv6w28YdfpCRNB4bUmSXTfHDjzVEdo+HESEcnjEbTsuJcDQXfET+ZqbYn9g/RNhyXq9vZxfSGqjB5D8mijx26zQ2FTIndfPDOvwUJZLRPmmIHu4Um8PyBkHBlEL1BlcK75v7a+NdBIX1iFeJ2CvDKraSRi6YL0mkGdxwEplP+b2GKlFTWv8rAZ0B1EmqQ9wxM4dazJJrR3BW8M7WE7JKCFlLATnqI7NKg9eVwG04q5e81DmFhclEkvp+fzBkHfOBF3TU0KrPY0Zf+xKJNq36iJAxzLb93qMJv9VEF2Nu/0SYI+9zYW9v/PrO4gUKHhSmD9XeRpYvRe9avVxIvmM/uZReQ2YU71NoxmqIe9OgOVa/BgAgNn4xdCfT1DlWtxjDBSbLpTuHkdGfGlrfCdTE7KJ7Qv01n8+bAQroauTv7j1hC40HjKJ4PruOVY58XvEF7LOqtctgVUrNT+FYTzyUYQ04DctwjOpPfUxrWAvm67MCiqk2v8eEoadxQowoeUSiAYzyaKx4XymBdU/e88OQKIzfx5MP67V4v3/aZ2Hkdz6rZWOALz/5LH7N6ofjC5mfy7+Yhy0KrMsWc4Nj9qqtBKIVeJ9Df+dhRgn7T6j2Gt7oM8IxeUEndK4QoWXuFbwM5m0ElKTJCPbk3sTPdOrCIpXaGGTN0xBnVwbhbwC10Bt/Wcjh0y1JvFxIlKsyehMSjvGeVVRrIHqY91b7dSkW1/H0j4iYQAsfWoZSu0oAwHHTuZC0IlI7blKIgqPUyFv6rkNNKjXurdE3/++aDGeXMuvkIzcSDpIMaIqsO4nVoc4AgPOB4yH/jAvKzgBNBCjxbVS/nHi8RdrnK4a9ErwRKqcUZYqkX0P8LyCyiDmpRqFR+CbCzgv9wmvsyDPDoM+kC8oTziJNnZTyiO0rXL8pOEY0Wg/7d9JlHL6a5sWQqxMxcDfttrCkaATW8ojUmbu6yF7H7pHHBlz8yE4338jFZKXMMyw3o+M4VOszzu/loL875xduL+HnpT26jm/veb3y+aTG6hmaEN3GCfer+Caqgrgw5EamQXIuBeuI2aY485KCu3sV81cypiNhWyU4TiUmh4M+pOAWCRex4gezT4/GH8RIew5212pO2CkfvuCEDOnHx/prOB3Gez7mYIz7xqSz6rsWI+sac2dDZpBGPdWww2N1iuWXNkbD05QUR8UzAPbWpHCyQ/fjRQ3dzisDKVxv36OGhP48LiWqNQPfRElzG77W4PNFfob/SS5wSb3toehLyhz6eTIWulcCAF5YZ+PCLJ5jbvZOxPOTghcYS3PTun/nNza8pZNbkT0Ltx7Qrf/5/SUU1Oikt8pvh4wJn/2Vq3Tfm+864tFNZr8ebr2OjU84eaud3uDNYRoLr2un4+Bk9vuvNQwK73TYgT7e3FCP972ED7n8vIgZEfidSzo+ueoeqnbTEKrRZaZzRfwexAooevqRA7i+nA6vf2IOEg04xgO2LYSnDuUS20XMqml15uO3IEO6SKgYEk/oys4aug6v9rJ/Jn0wRp9SGgD7KinNmIj1xNfJlFvGlVZh4A/OsyC5AZioQbJ41GwGypq4ACfu41njQq8SjD/DEPWXBWk46Sl4LWTMfQiF0CQZMHcM5I8xh/m/tG6K2t26W3f7Z9s/R1F77T3PL3RyAOwiSLNWrBGDghsjHufG9oO1E5PXB63OYHsRTwPs9iJaqDk/GzV7GZeo7TTBxCq+b7O0LAk+ady9/K8+x6+NRGtfHhF5pBnHQD2Vu+nRLTtQsC4OACC1+Aw8hlPUr9s4HUU6NLlff+bu9/G1DqYI8X50LvTCusU0QzocZ2CYFsXW4kU2MPDbDQAwnsddcVf1GsjKcsdd3mMBQoW4O18dWIzwc9ztv50ogHyk4P2eucx7Cd8JxIoFpLsj5h9D6xeinemKLcjWJqXqPd8XHuP4c/M83tv3Mn3MKmLFj2SpXCzzJdIMLtZBfxGi3xdGLpjVRFH7aDzplfKEPDi2Me4gVXMPEb9IVUaLFOCQKp9R8ujDGPic2bwnBxiHufMyCB8mkc7PDvqLViHu3u/P78IHI6LEAXmf4S7No1823jQbRowuxZ9Siv64aIyT7qSzv7XPwFeHqHL6PPbvRXktzK1mv/d8XICXChTeD4ovx/DTFN4vtelijy2jKMPNKMKfqf+KuX35nQuaU/B1Aineg8f98TKTeb2npUcwwoIH/b9K0Uyp2PEXQ+7zzVcWP+7jshwR5W8PCTzQIkoUGe2F6OG8D9c0wTtGB6hiehSR9NGQT3jvQsTYuaEKocspY7RjNQLe0vhZPoEoMab1CJpO8nffIwMyuey/mHuBqFtGKeDztoWYLKht6CB4gXXJ2054BrMfB2XNxN4CFoBovCCGrekc41UrZNDyg1Eg1R48Jjdzz0HURdFQuXx/F+R1SGENVPzRIcGolGxyA5pqmdlsT6Z0ETisBUumM8JjkjIFc8R4JCvJYiymruPz3HXyMa5P4xG08/n+/3cpar8kDqCyzT7o2E76eNNmNAaFkQ4Y9leG7Ci+5enWgzakP6CL2mrJ8jCf5UbAag1pz4+NFbCYzIGw4MRwrJTm5Mz54IEVb7iIWH5k7um3/C9c628CAKgyUsblPcwGZUmex0xramVKNfawPke3rFaZAcb4/pr43c7JHek6CisjGEy1mvgCq7eQztWK1yC0hpNLcTEppXJLAAL68B7ezR+NOz25wCmazkKIBc/9DR14C46POFA3fuJk62nSE4F5pFG3L8/BHH1SWw2pudh0nQuKy+pnWHyGizlO8u8ilpnhgg4nnHrPMmgHCl5Rd2EjnOZxseuRuQBOu0mlV5hSu3st54loby5OJUUqGKHGhXbB0X6Y8UtQmHGkBKQ7OQFCrvH5eL4zwhEV6mNfFTswcwKf7b4ZEyGpxslQs3wrnOxJjz7+4XOpzYmAsw61snzD9XAup5u7OssSNa8ZQt1ziudaH/zJg4Qj6byNWBkKMrkJdkQAi1wEZWNnfcacRwzTvtrPih/LO2qQWMxFNHFME7z9OI3Gep+F4S7qt+7PR0NyJV3ExwrUjnqWjMfdXTy3evacDAKcuVj0lH4Gax3+3dCGOVDsw2eu4s1x+iziGE5N5L/dCZ6O9Zn8vNF/cqGZTpo/c7wv9ozheeWLa0nrLu+QQ/03LuoNqbXIX8TNNTxzK57G8djZnymzMaCI0oRrHLXElmNGcNVjps4hdhFajZhXe/JrASTHkdp6pH9BVys36W32dFGDV2zDmZGsZO2aexefE7k5tv0tR9QgaseSTrlYJ82yU7rvKAME54bC/gz7acHawSi0p/vs+ywHnaO40QxYcA1pznH4X1s3Re1u3a27/bPtn0NwE/PiAACnLTVhNJji921hSxzfS+Gyq2YQlpwimts3eyuqA+kitrbQ/dIT74ce+/m7m1xVUWPPTFyVmRcsoimgJiSaw2823bAyY1IV95BOHJxBVHbjxyTIXiVauOBShWVJ/DldOhVzb5Me+S4gDXkTUIJd07mz9tdMgGIt0UmI3Rmc8qarddUnAmaXBbXYEnkS4o5vA5xPcHcOblSBpTqRZJXWYcy15ymEJ333QaaFpoRYAamf55gNGChKWro64ACy4ljfK85MAQUS3GVPDRkE9XfclUc1EUW0jRiNSz34WUJnFyH1OnfvmMwWBOgz2/VXww/3W0nHtFlODLkSPSDbh797x3YyxA2JuI7fbUXFTVI/jfnOuG7B4zmz3xJ9jrm9D22bSMFfbYvAIXcaC9lqr+HzjQzFW68H9D2JAvv/JJKR6zcRwpF8niJ9ekCrLxGxXslgxF2laylVQNRu+zAODh9I4XRkRsJa4C73ePMM+8tMAAB3lUdg+n4ea4q8Qpf8id4iNBpRmjj2+g4K9hB9bsnsC5VcJv0dW+OQvo3yxpU7fN7Xf0Ujsp3H69TCN6OXJJ/bzrpW/I4lKtMWTUPxMV7P1UGAxHN8ob2caOjRuZH49pmyyqIbvogVVJzJCgrAKH323wRNoqyKusWwzaPLHHt+JOb24OmEcyJSKM2g2+2zowZPrnCe5IIm2q7gaBi+pZM7dccRnDekEeOqEYjZT0krK+Q3IM+I1Dx+Lo+4aXmIoF89TxsUOj3EtBQ66eesGlFUTETcYHQaLZdoKGzNZJ8O12pCXS7nTmZNB8LWsk8HfnsLQw0iW7WSKOSPY6bzf2n/nAb37un2vwAgeXUW5n9gccVh+99DfnQ2AGDxR3XEGJM+yZeqwaKJg6nvQS4sF49H4DjYASePJ+N+FxcWx23TUCfopI1R9yA6gYNdqjc7sc3oILZlEp7/cJmHgQPYScWrp6LkGCnAxk5plIlxcd3ei4HQwAQbFAjOFl2tvAcdMdKrhPgJ+D6fNGjQwedYEcP7y2ml1nTQ4D16TCHUn98ph7cpfGFK9cnbKHOjmxa9MgFlphzsn5R4ZGulcTS29+KAbXFbA9mbnPT+U83wYzNdvyVm0Zgzh5PLIpATNm6GBRZoccFpSDoMZWXGCBxrK9FyloHq+Tq9Md6Hekx9GxfnMVEy6Ern4muVsAEPfKmL/jhQjd8rSInCmnLx9hknzoQonrk9JWaBtIE8qpVeJonBe3jt8aG1GPue7uKxUadRlsOFxtaXUZxPq/7gvCY3opa973H+Jo8hPZqhAvNx3MxuvqaW03J3MqqOcjMI3P8JatYMyj7Kf41rPzgurFc2oPAgN5KeNxli9XPQwlsTxnl6zWvEQBlqmiaTq3HGlIvMzImySI2nhGDzmwuSkM4uhNsyGtHQFYv7lgwTq5Z3ovQQv1NQRCvMBEkAnToGYV3eVGF3Ty5C63+dQLEoF+hjFbXwvUQn8uo+cZh9oS48eDzHSNJEa4TvpOyQHmaGl794vfjLt6BWw7GsMXAxNFM4toTkuPj+6LwKT02mBJa2mULNg2MocO8UeF7keFgW3BcyYnzmCX+5MagtbUXUZMoq40Y9QXMhpZ4Fq8YgYC1d5w9RRRARpWRxRZZSQcfkDsi483m/tVqIpq2MooRoRqFvIB1h4aQsyGjSfX2g8qi7mkh3627drbv9cxR1i8DxeRA4ErdFKLYuURTGNxpIWPa7H+Kiueu/mpIM5BA+dEc1AAAgAElEQVStZfy/OvBmlsgfwh23x/X30I8nzXgeNAJKX+kaxdsCjtbMzymeJAWo9HXDUCvuzjVb5mGXMEXhSy3X4CrLnJHl0ngkr+W7CnLkSBm9s8eiMJz3ubc5G0c6mHFSrzyHDdq8t5i91zDyCFFQrgJ35Panzog4KDh+1qmBGwf5lqTSR+Nx3JDCeWHbDqQvYz7sczvRXsDbUBxs3w0AuLgnEoc/k+KY2d7HX0PuzsKvo6BmTLdWJJfHolyfieBwMQXyiybDoRHEnNRGCRs8usZnPrxXM1rf8kFHLSTy1T88A2dDiYCkhQfhhBIRqtOwTqy8QqSVPdsPW4axdHy1wDls7WkPJy+iIePdnfCvJQII2tAHdR/4zDXG90HFTB7R+unA79T4yghiSaSrhRdaIbuLjqty6mAYRzD0ahJDwyZvymHI76Sp0Szmg6zNzMytyCnEcy86i1r96yAZQybgsI7GipnvYay9Q2c8eHYOpKRJ89NmVOOlJbNykXO3QqeKVLnwLw2gT2WBqO9NGvht/jMsuEU0W2P9HDeUmTF8Hf4NqvQmMLkoDgAw0koe5Tak+fObfuKhJx1q+eN78SyARSwlDzWilw0R/30FUv+ilDm4s4PG2NH72hg3huMlZbcfespxfAr304DUSSLCTaqCWnzHOrDvIQ265MYjOHGU9PjE05X4WMDvXT/sBeIvkVaOMs4GANxr9oVXCZmNSbYd3u+nobQ8sAj3jBiinl/4BBM1eR2DIiLVFEtxaL6mlDCqTyG2XlIAAFy+8Ry6e4k6R02TRcFjQRkghgv+U/vnFrhNL1i1YE9zBzKXsLLtztHf4ddCSjX8Tn8INfNcZoSBEVw20anTXEs9waeHIqa6002TPiUJPU9OdPOJ27EokZM9QvktDkgTLs/ewskd1rUL5YtJ99cMcELdS7qQXSfyUZrHHqnSnIHJUpxEE5dxgIkbCsFWk5A8qnUOjLL4u+88UuAnT7vf5cUMaD7lQnR1O/9/1MMt2PGY7myj6zjYcb3EpFvNkMznYtbfwAYPROmGvRzDxbdXyA0MWcrPjb8zCBsOUkuU0V6DUD2e+/ub/wkH95JG3N3LSZGRthCzVFgdo/zgIvzJ44mEqEfJaAvk4PUNO41piXTnMmZyIt9e8BZb8xkUFbJOQHYDg9NPZkvBVUXwykWrm7ioSAqq580FeXztRfjd4KIXXOWJWUGkwXsuRuFtERct6/cvUfmO7xzQ2cRF9MlqX6j85YRtPGKEuaMYWC6ziIevMynfvGxO+tnj8qH7mTETMafxWC/GBUx9hwTa1pMFzXuQCxlBCaCTG0m51u8vxaV1pIYVR6Xx+BAffnTfGxBqIc1d+n04VJcy4A3BO12/2/uhawajGLfqs3CjmHQ+7HwiSgWL4ab3a/HjA11bi0yOFTm/FiSP5wLXaS4M87Nc4NcL/0FoKWMUaxdn4cHp3QAAu1RuRK3Hl+LafH6n8rklaBSjwy37FbjTwv61FFfES0XGMuSmUgfd7hiO6ee5YQYcuoWsDRw7YpfakfyJ0ot8bCkMftKhv55EHbM+6iHctnMTSZulD187boL9hQpxQ4yLeUxIOU6tYExk+zOWfdr4vRnHFVjVJj3JA5XRBBWvflegQ4nP5b7LKfR6xM3xN5NP/6l1U9Tu1t262z/b/jmTQf+M718AUFbrh2sGdDjHrdyOHWaEzk4fazDcke9IWNglCxxj/k3XgQKrTdVPTN/A3dls+maoHSDs343BeB5JZPQkoyeEo3k+T3k9qcyP3mWwU2fpas1+Okh7QeesVKMdQc+546Z37MGeZ3wzk8NtIg7nYVfgUsEg7Mo5PvC3ZeURL3XgSjZ/NloegYIIUlcjHVbmODijAsN68ZV38m/CoSrCXVZtxTlELiYCSDK4huVTSbfvSNHpMusSwZ9JDJhWL/HD+UiK8OrF4Qg8RaHX9PQRfP5BtDriMylc9tgODNYnZb7ZLocbEnTkhnX2w8o3RFExQ66g7jUrcviX0IVVDDiLxYv4jB4FlmOLP8Of6+xK8fgQjY+xHuYQryIFL1rPe2tV2Q8rNyK1KTeX4FevSgBA/oa3+LCBlPCs1wUEpfFM7JLXRIAX2ztQpEeTZX2tFJ6u55E43/dhEBpLROV6gGhQVWgehIyJqBQ2vkDjXz6rsBYXLPAimtkZuQqHj9KIeTGKJtK8xGZEfGOfqkokIceV/V7cpQirfaxUAnFpvN/HZ25pRxTyo7UdotoUzSNWKyK4mg6h2QgXJPdjhY3lsiNxJYUGTbIshX6jtwUI7cXMnNSIUOjtJ7K7ppmPgQv5vcNzXfCujQK/+ATB8buicVCZT6dy/djXiJtLU2dpvTSeyu4GAJyym42WazSo/GMoA6hbGmPbMRpR94RqcUwQ7vU0nAjdrXR7Nx2tx1cpzpPGdjqukltSETSFqYPLl1qwfyd/N1MrCKkDaKS9S7DAmeU0sIq+CWrA5S3F7j3MUroruuOSG9H/jINJyG7nM5y4RQ3jo2jy5MoEd5sM3a27dbfu9s9pcH27eLj41J8J+JbGFLSc7hP0SeMRkhNjpiCtP3fUqp1ekDaiFnE6ksZD/PQOSFkxn7QjaxGUyiiwji7sh1x3ZuXmFIvh3m3uTkmJ1BzG35qLjca00zu+n8d0KUF1iwtPISbOnW6yzBfEbmO1Ba3H3IT0838iS5PXmJ/3GxX79AEAh17PRoUw7ffJmlnwFOHvd9pQUxqhqIPi/UQvF+yDsG8iIwKHmoPhBe7k0WWOWPWEGpP2Z3b1CBEFzBnBZLrh89u4OZPIKe/pGZR/EKC8E9bos50oIXszdY8jT7VReI+icKfUGAQrU5uzu5iGtEQi5TH4jV4jKHAfNqOx8tw1HNGqJvwM71lQ72K0YKOWA+xWMgs4fedIzCoi6gzVpMbz5ncF5AYQfdlLemCcFaMYoqesENnCw/JG089h3DEi7FmRcQCAuP1PsaaTMRD55kp86kWttHGsOsrEmOOTWM9nHGP/HDkzGEUxX3wKIuo0RvYYRiE9l8j1lfF8tOxl/uqAKI9TvcyfjhmG1A8lHHfj2CwimNRPS7GigZ+hNHQxthzl9ZaeJSqNLTyNxzZEcKrDJ6FxLO/T1VsEhb34GSfEPyGqkoJ7TgLHrEpwI54K3mP6o1AEBZuI3F3reiE5lih43aonEI1klY5LT4h8v7Wdw3oFMpdlMjdw5xur4cyQbYLoYt6nVq+fuLKNOt37NI4Lv+NxuLuFaN0/eg4GjCcbGdt7KQrdGClZ8i0EfdTI/vx3cl4UmebiYjP7SUPdE3IXiMrU8xohdIImXpJ5LopCBC/5fkhEHPZzIqzO8CjaAeW92FpOViX+djaiv/E7XRhhiUnPmaH8P/1WLVfjT38BIC9GCEoD+FBzrp3Aqyt82FrTz6HtIh9gru5HyLtz4ahZxwm74exV7NhBmrF1iS6SB3LxUfsZhzcJFJsTz9zFsO/890Ad/vf25nV48I2ukWj7E6yJYubqoPpm1PZl+HHG1Tw8Frz6TG4HB0p+1Cg4vGJuqffbx5gvycxcXKM0LunTqS3cKIFQRvfQ/zIXAuN4ZxS/TAEAbP5xD6rfmZM6P3U/LOyYzSuq/YJDt2gGhG2hqTHXdyUiBLmmw3O3QXYyDYCiGx7wnsyBbKDaitM7aK7sKVUAAPwRXg0tO46VraEKONJBwf3erpGYcoDGjsvsJhi+5LO9EEc3MXm1GjyvkUZF79VBxW9Sv+kV33DamBuN4ZnNEP5GGphVwsKjwkhARgWfkdrb6ZB7Q/Ohp9tD6Lhw4Y+yDEGnKGnn1a38N6vIs7g8kf2QihIMruf33pY1HMNmctFaUk8RvtfbFCTcpAs7b+NVpHdycc1q2I6NMtwYzmmuRx9rHm2b5EWJ4pL4ZMhncwGP3yCB82LM0mmv34eoJNJn4StDcHW1CQBgvDBdz2+bUnG4iZN7wqK+2HqRskPQ9ECMe85SRvJL+uBrXx4JSzmTDQCo1qlCrSwlgeTWEagt53NZKrYEF5ZwQXl1sS+8DrMoprkPF8ZZBrOR8JJUWrHwJZ6sZ8g8O2okzEcyd3g6pxKtgjJZsyzY/3fiXBHRyf8v8tkUCxbSdU7NASI7WYkmYt5JfO7NZ3S5jZvg7aanKPHnQH0U+wxJkygVyK2IxcmdzA1mSVQjQJABfZHBPu/wPIcWSZoadqstseQWF+hzW/ZCIosbQqvHI8x7x+KsUQVTuylqd+tu3a27/XMUtVmEh9x7d0TB7DtzXXd2Tsf4DmZvrtUcQccepsZdWhuxsYkI4N4IivfFQuNhXEHDYdmbTMg4k+YeG/YdTnWMkli1W+JaEFGS8BBC6+VjlqNfPXf1k9Fx8IlgZu6pqCc6RzJKYqoyDRMd+HeGyyi2b+gvjCkLuTMNNFDGwZHM+rgmPETHQlKYYXa+uJlHsVjCg3EBdTUp+MUQqfjm5SJiMgXYUaqSuKrHex680wq9E0hRvDdSTC8bfgcOaUQyW0RqYONAIyM5ow8s7zJZ3npVAeIfiUCT0ohaDKNPIKyUwrMiCnDkMgtonpQbAfdtPJ2xQtQayybTMPmhISi66LILKy4x2vJEqR3eshSsN7ceQ+ltokuTj3fxyoGC8/d0fn+rjj1oMCbi6DB2R7AqiwJcuNATb+tJ+YSz70N6An8e4szowYT2dxA9yWvA2QniFuyf+3/tkWBHlOSkR2pfq5MC/Sg+Y5/WJvxdxxhMot0zjF9FdLk0djOagymKfx1C8btrJ7D7DDNgZr0WQ6KKfzdqxV/o5hBFBUdLY9FhMoj3/kRRe/+Mw60pvN9b1ko4O4dyw7B4I3Q4OQMAFixVQKk/5RKJFF7jkaIrnlrxfhTXFeJuABG/plwkHrhxnClf0cL7VSxieW4YUfL94zIYlsuxt8btFzqCmLeM314Nt/GMqAydPQmPUymz+PbiGHMb54odP3kk8LRaKZpNaU50Nn+DXgvllqDfaRD7xevNCuN9Lpz1BMPzOAfEX95DXjULVSzT2oMzdkSa7k6RWPeAckpkI/smq78zchuYeXwzURSvlGhUPe6fBtPfjBXNqFOH0HAW9wTe4b+2f46i2sb1/QsAd7JHI+A9c11Pq0dBcxaJe56hJjRd6OjY77mD1K8MzuoZs7KB2bkcOL0kvdJrtUaeDQdv3K5IhJYylxVxeSfqxvLMZX8zDiDPoI9o7s0B8vBCC872Z8cUpV/D6HrC7FtFYmhaznycx19er69cG35cIPW1SJ2CDa50sl6/0oPBZdK91i4XpMdwcmkLYP8Ly5foe57u5JP+mcitJA3qV7MU9cOowRUPmQCPVVw4zo0jndVcZ4IBdRx4VWOVofSWmpndqHa8esdM4OmHotCw4YKx5QW/k8MJVYg3kF45xtzH+hjSsgG/3RCzjwtRhXsTHo3lOd7Kc7xupNoBON7nov7tejE2KZNeOeh1oXMPN5LfX94j8wLpuKQ46eynB0vglMP7POXrA8mJfG6r3zXAIJgLbX5MKtbrU9N0c+LCMX2BKmJAXfV44T2UhjH0bPiwL17vdQYAaKzkJA15MAIigzi5L10Nx2x5bnydo3RQsoX3v7tHAdS30+28vprOsrX0bwTVs+BnYoImshdSr6o2M4B9f7rSGzVeYUoxx8C8bLqzHvcu4YsiNxyJm8KwPE098sf3RMw5y7JHLsft8f+x953xXP7/90cplDRQJJHS0JIyWmiIqBQaRovSQIQ0NMjKSEJUGiSiyAjtqFRSQiqzoqSS0EDD+N847//9z/duP687eejtfV3Xa55znuf5vM7Fk/qlx5NeD25bieQvlCY2CN/Az+XULq+HlWKELiWPv3l7YLSPc1Wog2ZyJB3DDGnqbvZqiYhKppyiOfwKHHoy8rtpcAYsf5Kym6wnNY6bZQOMIk2c9+QstnoINtELQshzo7yxxWggUk6yDyJHMq81eds5rDjFezcueYC0Mdxb0sq3Yf9jSkBuyubQHU9PnPxbbvyvb6ajIYfG4pg5BthiRTq+d+JEZD9glRHhb1VQmsCDMuhtYDdF7W7drbt1t3+Ooh4XYUSn4PUFFDgyjSW6aCnS/vCk81/0Bxe9eco8lxPG+oFELReWEZ1ojtdBEy1uqBt5EO98CKMjkobhgwzTVFxklsM/ladWOwtJYHzOFlRfJsryd36O5bl0Y6/MU8MzPyKO5r4bkPuDVHmzgeDdpLlP0NBFb9y2sf2gsI4Xn+RwCEEOvF6zqCamgqe58GEK4c+GL8JHCx5kB67XQzqeGQnvz0kgsy+jj8XSZriewD74Lc7TedPCSOz9TlqmMuEBnixhFPL4ZVvcE7wvNtL+NK4+Y4RrhCqpb0XYTdxYRKSpXbAQIm70aG0/8xMjpUkfPUL/oiuQ15HrRUpi/mU6Vhwn5dINiobjAz5TidBknLlK/9zhuCGoOkJkE+BDqpLiKIZKKQZAbmweAIVAohOl8b7YEMkS6Jo2RtAoZSn2g48EQYi0ETg7mpFRMavhSJxAFDjoxSV4RtPvNVCLckTYsNF4Jk665DRGFGFMdMD55c5wqWB2hly1JT6Lkc5d3810qqRrvrgkS8roKP0Bqj3Zb6Lnv+LrTaJ1tSvOuHqKwZdRWqzT1hy6FQtsGURS+3YYtaaUR/pOTkKSEqPu+8v7Q/Y7gxqPPzELRfh+CwxAYf5UZRVGHWYAQG/KbCysZ7CneEcT7k9ioYLASGZqxChl4tQv9mfCHkMkR5H6PZewxuL7jAI/mC0OIw3O25cepJfiyhbYs5uyg6ZlFkK9dAEATTNmwe4mmcvqZl+sFyfKm+5FX6nam3b88uSYKTXegn4xo7JLvhZiUU9m3RzalQSrdvbRox8cp78TB0J3OBfSSaTgzicypXplVcyyJMNa9jkI1ZMpi/wv7Z+jqB/cW7sAwCPyHtRvMBLYsFkBstpM2xL3k0ddNje1wm8PYZjKjeNPCG0RPczfwF9QxdbmlSy6hEmj5H6fhKkaJ6GH2RnoxRM6FxmTGtomv8CIYOpj1l6j8eMtEwqHXn2N2mdcGJO+z0DjMkH1jglMU9ldvQtV1aRRM7YoIXMFLQzTnpzC+/FcyO0FXigS4WesyznpO+81QyOJm1BhbBruWlAHeXm/D9ojqf2sLF+Lg2acvL+SqamJKu/BTo1qAID0GHFYaDKFbe9oPQwSpRXhq/lfaPyhNpdTRRq14pwNrJV5zydRhLFHuchMU9rgMYsbqrzHHOi/I13d/phRM7XMfvgYSCqzfXEdHs4mPWzYV4bqlbRfBNunQbkPI3GvQzwAABHDLREvz83y7lc7HA9hfk6AngQCd5DGlqj3wVgn6qw3wmmOTRicgMe3eG5vqnDGCheOWXL7MTjvY99draN0kfO8BNLveEi0XpiGsRmktr/+vIdyIKnmvNcleL2X0c4ZIaRRI+c4I+M8x6ki9xI8H60DAEi5WKLtGHW+cxLX8fIa+0vnHedhePxxTL5MSWN1WTUgeLVkqnYERl7gOvw2pQv3hEnjJzVzI85qGwCpaTwE9YQWw28Wfz94fDsajbjB+Tf8wujNvJ7IWB6eelvFIPKBFYs3Nj3Antk8dN9mV2PEbUZa5camwLmKuqdPCfvq/IR8CGtwk336JBLOY3m4LK8XQw9PSgmHC76g9DcPlXkr+cIjFOVgrsDsPuTJblwv4LVtZC8haf3/P1RzMfsnpRW7r6Sim6KtEKvBA+7+8Zuwr+S8Dlhvj5AjlItWp8hgsRwLYb7vu7Sbona37tbduts/R1F/8ZBCp14zpNLp65HyyEOSDCOEpjP2Q2cnI63LwyyRV0xkpPGBYrvImZMw2UwEVCh7G/4+RHZ3zefh5S8WfzxxzxtvrzOS9aGJ/p0Hl1VQbsjTJld2P14F8js8l5eg8hw/s+7mfGw/Qp/UCEGFilNbK7BzCz1sa+VXYuIn0p31QlORWUQEc9xIBx1LiYz6zOYJqhE+ApEuDEIsUx6A9kUUqXenfUPLKNZ1M5AVw/l0Iil3SRp6Q5zt4O8vSAuSPo/KX6QJv6pNoN2H31evMwtygTSCji0gWrBwb0CxOAMLIot7wngsn0/WayROZlJkt7C+hw5V3p/rYArIZzb9xT5B0vk8VyBmNY2bf87exUB1RsNenB+Bz8co8MtfIrW9Mk0B7wQvMB6tkIMNbkTacaf+oleh4Bp/XmIU2RjUGwT18mplIRrMcYg9LQ29Fk4IkQOL0RnGYEG/daxQIR2pipcxpHBTzA4h6jtpp8GPJlR+JCqd32stKnyJtD4dZBQyT0YBPmFEe1f2v8OAElLwxq5maJsTlRbWK+OYAQNCHwr5XRprTqPGlEj17dWh+GrD+3mVMR4280j9lGfrYFU+iz2cu08ZZOOBRxjym1JJU1kJDvVnvyw7uxrxFZQ0PunKYdwNBnOC/EnrJH/b4KE709J8v72G8nxGxEUNnHE2iMbiyj77ccSKVV3kfDjHvGLP4PlwMpAPa4PhVMZnehzwEMPv0U86fI43Xp7g3GkfQJYw3WMRvo7mz3Oub0Evb0aJPYTfYIQ0+f+t/svxO5xR6dQQzsnQjRn4UM9AzKUBK3GyntRWOm8lIo5TYjnwRQrCiQKj7z4i+P/S/rkNrk6bXL/TVh61soycztWzR185Wjw639pA/jU7SG3zG1QrMPpmNInQGjvasV1Q5WDysUQkBTFc/v73S1QuotZgHBSPpVaCt28rcWPRCS/DqHQOzBO14bCy5zX0gsbi4Glunh3JfpBdyAkgN4OUY8KX+bAUJ/Q+bOqIK1O4cW61dEdUOWnCdTVplPflddIrOaGnHsyHax/m/T3+FoNditRXZE16Y+1iUmLHXB38KCYlNA2iftH/iB7k+MiwinLELQ/qNnb5R3D9DCfZ0/z1iPpIA6z0Z27OSe+yUR/KjWPf83kwSOVmr99jDL4upE53Si8Abf4eAIA2eWpjUmPS8GYy/3+FhDzqtvFn3xlCWFtHe4zKoGs4IUpdtPIO9TyrW0OwKIGLolf5VhQZcZO0XLURgVLMc5WN6cKv8YzqLbrEDWDOPmHEOfFgE/lzFHp+3FwSE3yR5MdNMGQZ+1JzuD9euLKPPyufRuE33kOrQRk6TnExxSnPgtta9q1TFA+GiU8noWQOK2gE356CjiHc7DWOLkXrXppi3UtM0V5DGWPoGhpp+3y+Cu94Rm0fXv6LUeWkyrkB0gjczcj+s0MNaFrAZ3XZSitRZoIEOh+wAszq3yoobKdG1fixDNPMuTHq9i1DhAszHFoKXAAAYg9TsbcXtbSU1npMuUgLi8n2bKxLJN0e4dKMjV6UJjoTmKkioRADU21aid6/P4R9N6lf9xJzxdlV7IuXQ91gX8C14VrAfv08sQm19rSOnNsyAkIjqGsnvLuFbespCy16IY9fN7jxx2vwHp76vsHJ56Tu7hcmQaaEG/H9tD64EcaDL/DqMRwtZAHR/6V1U9Tu1t262z/b/rkgw6trlV0AUNDPAJOdSEv/Cn9Cghhz9rydfZDkR0r4urYQFy7zlFz6mWghXbwH0nqScg3qLwZpU1LYSeO+4GI5qd/sZRHw+cvTp+cLRgLzN3mh8TlzDwc93IxQOaas3B5chFed9LatmHMAzu/4s/sqRqyMgxqhsZHI0H7IW9Qo06SruuIkajZQ3B7xwh25MqSHn1Ppcbv1ZjM8bHnvL9q3YnkgT8WlPediijN//9z+BY4KRN83QqQkubs2Qvcgkci2CFFYdBB9TFMqgn8RUYTwtdNwGUj6EWmgCADo3agCCzNdAECfGa1YmkgEelg1AzuzGIlcHy2JjStJP1aE07d1RKUSm48JzKErXNBczNNZ6k8erkUx53Jcmy+Cw/kZeQNG5vzU36BSnPf5/qIwdO/wGiUiEZg8gDT3S1sLEqL4fK75DArs2GmNDE2mxqn02YIX+qTaO14MRZwnI5iPNzMwpGUcgBEKRN09369CcCfpuI52INoHUsbIWHQGxaVE3dk6rLaSPNMCpe8plIt/3ghFByIfnB6IoQ5ETEOzHuHmLNJYz3JG0Seo2mCJCoX3pT+GISKLFWXe376CuT78jvrJvaDeg1HGnK+konc33oLQaaKzpDJL/PxACvtwcwlU+pGxyPXPwBIt9mHMaV7DbMI8fB9HCt6n7Sf800iJFy+ygl0NUexHleFIzmMA7qka0fNtx1QcDCYSE+8rC2EreihXtNdgoQmj4OdEtREwl1HiiS9IZ2s15+PZLNbGW/PxMBRuc85qHenApA5KFodPyuDiTkENxnh6444YmSPgEZ+v73Q5+LoQlbt9/YRTo4kuN1y1w4QG1ozbdX1ed5Chu3W37tbd/jkEd/iRcBcAHJANx1g1ojLNWcHwmUCxdf4Hd5gvE4jlqU9h1EK9o0uafrCrg0rQp57opKKpL6TSiRwGvgmG72umANkUP4VCGe0VTabUKqxSQ3BRm+js6BgXvExlhY3+O4uwT4qn4bgbJ6DXSiH/93kK7AvK1sE5lKLY9IgURFRQP+myq8TWX9S/NsqWY4EcPWjPCqnrvEq9AqMZPBXNJV6jYSbTWJSSTyHpAKuhuPT8gmiBSBs6l1rGbK15UFlGPW6V3xzMSKMg7WSchW0idJhrHTKDmi+vPeUa9ReNZ5EYL0zR+Pq6Z1C9SI0tZPUc3FtCJGI/sRBTqqnNTaolsr13fQnqO3MAAGoD36PqKeebk2cqXiswQT4g5yJaaikHF60lAprU+xg6lgheOr3ACM5baRM5G5SFzwtpOTi35wtWvidiGNuLiPqRZgnUplOjivY3x7u+RO7L0pSwYwYRWs/htMyYSUZjYiGDF6MGNsB8Me85tjgDCSZEwXMjP0Jal8htDL8WTR2hWJFF64e0cge2ZnNMtS6FoJ8cUfCdKz9Rcp7IfM1uegYfnUnHZmmiuguaTViyj8+sH7YIpe4U+n9aJOF3jSDwo0nPo2tiJbQDmPQmVyAAACAASURBVGrX0eMYJgpxnuXdNUGyLjW9Lbln8VCblqbPmeyLCdo/YH2CQn64+g0EXGQQ4cZrT2jXCt4ENioBXy9yTk31ocbq98YUyjMZnJoVuhYqG5l1o18pioJVRMeKTgqodCfCHviS17Ofr41hPvTXZVzyhIkW+6hYqCdqxYnWbF+bYXIFEXF8OgNt5/r2hexEapqvbE5DbQ6rmyg3F8K9J7XVrGGrUVnKsfwi8+D/7oufpYopsG8pWYlTOYygtQQqYOk6PupDyykw/EXzp5qdLqLGMAJ2IZHeoQW/z6FHMid3eo9GbPvDqOews38w4yYXuFzf8ejXTBoxW43w/JlPIR7fZ7SpUVETDQNJg/WzJsBnJgdvVX8xTCsgFJ91i9Tolm88RpxjQEL1ywU4ziKtfrjFAlmCHL+BmdPQdYwRvqLxpMleDseQdY3vHlD4nYY5CzkJ40QK8MCWqTqtTYGIukrRO8mDXqddYRsxvo10ripBC6XbuEEnlNTj+Ty+629861l4dXCxrJOjN+rSLw+EJ/K7HkgW4segHACAz/tFiLpFCvapMRY110h3ejXSnxZYsgmRF/n8b8q84X6XtPvnqxRoqnGDLlk7EXaGHB8VZUatlRt24rQRF05GmBIuJ3Dz7RD3hVVf0tLxN49i+hwGkkK2sAy9RPFjbMrkxlAqvA9+BlwsBpnhsDXj823UZQnxb0t94GTP8bO2OIwPKlxwa8ekw2o0N6eRmwZizKt1AADD6zz4HOs0MSGadO+CkT8KmnlgDo7IQ6YPN7PA8pe4P4JBoMN9WMLrxI63mBFHn5zW6RLETeDck534ExuOkdL7Bq9FhC374oMMN+RX42TQVsuNf73nbxQ0CErj/3oF9Q4lAMDlXUMx5Q69iXVvWdZp5e3emLqLz7d7cBSeLqF3z+uuNwrluMmHJEqgbD5lmKuLuYGI/JDDjpnczadpi2LfBZYmF3VVwvdMBtcspumhKpabTy8b9vGNM8JwuMW+11n7A3/aOBeEJZ1gWMP838isNHjJ8YDKkeY8VG8Lg24yg2er05IRZcn51K9eEY/3EYBszwpAj7M8EEEV5z+1bora3bpbd/tn2z9HUZN1enQBwI/+c/DoKkPraw4JQ+I5U0gU+gpD6x7D9unRlvBUpfA8vJon5MmyFsxtIzLSPROBwFkUca+0WsLiL2F2bPUlbPlDGhFuxVPPLy8X78MoFK8LcMU4FaYFOb+cDKEOeof8imywQo8erJh9PPVlRYbCazyvEdA+Aq4VvI9N21QQGs5k7cy/pei1mW7yllhSQ1XFAXBzpOP7qMMTTFKg3aF4jgzs+vK7Y8uOwmEfqbKhoiDtaYEj9s/jyep1vwB6A0n9BgyQRdNh2i8W/DJBv5P8/LoKCtoDJDcix4L+s7n77mHpJrIE3UnDoHGLyKHxqAkqTTmfRhfwswZbw3ByLxFqz9sHseMhKWWkRG9IxpAy7bwYiVMvVgjGimfubEMpbAyiyS06wRgtZiwwOrZPGsIFlp6bcTrYcJOJ5xJOHLP0Vg14vCdKmp+/CKfdaGUYfGsHjgoREa9sInIcUOuJ+3H83icn23BUj6hV13ULSlaQHnsZiGCGBxP6DYpYvWVl23Do3iOy7deSiZHLBe59j6lYbspMFdV39lhzhi+E2dCoCABQ3leE/IEs1um8sxVH1zELQXhFAlbkUljff+gLHguyFmJ6EO3f+HodQ1xIffvKn8EZZSLNuUuGoqAHf473vIVUEV6vLYXswPb7drQcZvDp0LJR6D+E62HUpu3o287xWzT5DAwbiBivCFK8cpZGw0SbUon5YxNcU2Mf93EbCKFVlGmKguZCfDZtGzsXVvN+G7fj1A0WW2it/oA9aZRVFOwfoPgebTeGEtMwuYWI8XwYgxTHpp3G45NE/AWfh6LsQzQAwO/cO6z0JXpsybCCtT7H4cwyt/+7FLV/O2mIUe4VLNvFtwhdPVePhlJqUBePH8XPYOpVW11iEKFJY2nFXUYZfXd4orqDE6Rxw02Mdub3idX/wLQm5nt+vpIPnalcRBdlqaU91zuJTiUu6pli7fiuyQEb6+wGhDAtZkFOHP6M53WWfGeUtaRVH02CQn62NmXIzmBlB/1FVfi1iPrf2fYW9EkhHRjpz2faWP8USXO4KAwHNGG/DCms/OVL6PmC33F+4GiMncpNt1OV0a/2R5PxWZIbGRSDUK5C7cfT8RMSU0nTpaOMYLuafeQ2mgUO72YewaOtpFR5b0tQvYaa0FgDLdj5cBOZJNqMt+38eeZVRkinumgjzo0+qW0eS3DmHr12GWeDcDeCvrP5bnexgvIPHCdRPujo+QPpV0h9rpv9RkgDI28j93vB8AAXX6uMJrI7KBW0jeFiq0mbjk8PBb61h6PwdA371uhtMDaLcKHGazMSbSxZA6MuUmJr+1f4nsRUO1VnZ6xdzr7NVEyGmzLzhwtsWQLqe6wz2u4wje712C+IeULqt2poMPy2cHwb5udinKD0VfkobjI1cy/jUzHnTe3pU1i5htfr9fgiMlK5+Zyz3IwIIdKyU+/5dzapOhCLI131KzyA3c+4MRqk9oPBBs6HHxWr0SOOlUOiBtOY/KuXIxSrqf9WRKjCuIRz4FefYkwO4SGfWV6MsCRGml39SK9trtogbSbHrCXoAsLFaTgOd0yAzGFqbH9U5dDZSZpeWMkD1U5MH2dcefCP2iaP+CTeh8xIVYhs54GhM2gm9BLpNvi8gBr52A0rUCXEfN24+AFQWca0rXxnfdz+SWo7vEgX3ysYUT3D4ftPrZuidrfu1t3+2fbPIbiUuzwhw9SdMHYVofC0NXnIF6QLhW+bi4wt9DCNm/IeLwbSj5YhQQFT5IkjvIbRG3bcOhsfX9JblO0QhoHejBBe0tHDvnhSg3o1iqppl7IRtps0a/udl5gxjtB6f4IDNsQzcd34UB/EuhPNPZzLIERd6g30EKG733iNOu74slhhvdYCSNoyqHH+ayxuS9A/JpPCU1HJ/Db+JPCZinpMhdoMep+MS89A+y4F4vwQdbxs47OoTyE98zgYA98aoiy92CUYtpbP/0QrHQsFqUHrgs8gV1A49NkbRll1Oqah6Hg1AGDh7wGwrOZzi/XSgJoiKajyjgT42RLBjFZnDbG929zQpURh+oHuL8xRJ3qsO3IGQnE8tVseb4NKCs/a550MkNS0GED6CqmkkK4CjkfxtB8q/QOSyXzfZoRSMSQ7iIQ7M4jE5Ny/4EcVgxObPDPh3kkUaDlrGioSOWYxGXyOzFY3nF5KZDj3wE7UbiGi8n59DRXeRCfe+6bD9DjRYX0Ka+RNudMbN+ZyrF9UTIV8OpGWsMgqJDxghLo+QRvhSxiskp3ESLakTDA+BlKukN0Qi/NdRG3vPmpi4jF63sadHYSs95yLDz+xDzNsVuKoC1HS8cgvsJ/KOZLRXoSlAWQK1yxOwTSGNPZjIFHdpm0a2HqPsorFuTpkGxMdN1UF4tdXImwF2YnoG0ekmSBCycO5QgVTLFh/73FJT4jP5rz3HN4bJlmklfZrV8DvNkv7P3el5CGr2YZeMzhPrWceQdkNjunJdd8g/ZBrsXHYdOz9wHk78B59d+sfS+Hzafon5+acRmAPokAzawuEyjGzZ2VJIJ70ELwRG/89o+Gf2+DE93AAdmbfhdp50rrO5UfwfgGjcJ06PphiStibtagPvraS7nyUYuRGRlkJxTnUs35vNEJQf1I088c6yLJnxKrA9TACxTh4phGcHNd/b8Zbff5u29Kf0AtiepZGQDSGGlGPky46DkdJ4muTJtKB8TbTIfuIOlDflpew6sPN5/jZjdBUphlzysfdEH3Ihe8mTJOqetI2GP7lIrt4QBGDXnIx2LYKYYMLJ57/HBUk2tC0vOkeo5fNdm0ofkDz5/Y/s3HSkpHmoYo2ODCGdhWPoxX4ocNo7qdg5k56nX+K52q0g9htuIYTZbTVnE+9hutZ7K9XJQbwquBnrKfThpCYUopJgdzMkybpwXo4zZoT+83AqBhqNLV79qKfKOn49hxurOVzJJC2hJv2ydnDUbeKm2+D9F90iNEGc9RGA/Pvc0G9luEGlyczES9bGe29UvsCY8q54ZjGhuOCDKPccVE84DLu1UM/mhvk0ZE7oSvOzeKQoSEuZHIeLRa1x4Bb1EI7RnHRn/H8jj2vqU2uLrGApTblgePmq1Chw82ucdcLnPDhhvlzMaOFaX/nw8mRB4pJmjX+PuV9dMTvxCRNbkSGP4cj8SXnbe0IUs59pi6YOJDPqTc3GuIz2UfzFpVBcgZpW0JkCk68YtqdsDXnkNynI6gdzMNzgKQCXLbxkLumsx99Z68DAOjGK6H6JfvIXIEvzPae14EHb0jHc1/aYMISpi5OKd2HgAyWkUo8fQqldpyf8mKk85+lmjFEhhvVx5pUfFej7hbwqhkf1WgW/mq6FKmanAOOydSTa1pKcVeW9znd/T0+zqelK/+ZIZryqNmqa//AyeD/X9FXUNDzP7Ruitrdult3+2fbPxdFdXhi0AUAwXFBWOJJlPTJ6Rj21RO+Z32ZgMo2wv0Ur+nYvpCnsuxE/v+NKT8hL0Lh/dn8ciw6S1TT4SqFVHOaXyfuGoNRZaRMYZMJl48Ev8DvYJ6ApUMn4owOqWFx3VgY9yKC8Ro6GdkbiFQ8JhFR5c+2RbQXT1adDc6IXEvk9CXvIQa0ks7UTLFAfF9dAID1QdLWpD43sPcHqZ/8JXtEjeI1vAeJoc2QzxSZkIrbZGV4Ic77kfI4jlI3Xm9TawOuCV5TmOlvhWpxRu/+aC1H9Biip62yRKgWY4fivgLnimhvLwxyYS2wDtkENIHXdvA3xqifpDMRI0gnlA3VYbOX6KNhXjESHEh5n03/iLb3HIdHq8Nx4i4DOB05DPq07QbO7+Y4fKuthdMdXqPnxU04N5QoqOD7XGjlUwx/eZXINvK4JvKEiMQGnkvE6iBGIm+9f41+wUxMN4un7GDQ0YgNeiwk2fJBDqs/8Bq/N0/Cuf5EaFf7RuGaOampZz2Rzrfp85HwgwEZbxth/NzLyGHn5N6wucZrXHcQxWx9mmxNFpEm3315Ex2T6Tt8kD8Ek8oYwV46zhtBvkRtf60S8PAI++tJIqO2h3v8wPU00tnFO9Ig/YdzoPGJN1x7cxxUF3pCq5RBG6NNROgzbMzwsJ7/f+PHPYiGsnBnVY8gjHMmrVTQGwsJJ5qPVcrpD/RZkgsJeaLdyTZh0OisBgDsujwMv98SaUUrvYP8DUbaf4FOAruvc5GzishvSrg2VJyYdqfWXoy3ZQzUPLN7DNuFRLYar2loK7JKhPFAyjhT809ANZprY0pIITQ6OK7+qh6I7KB/7ugZh+5Ure7W3bpbd/vnNLi+W6k51Z+Yic5DLF9+YNQ07DakTtS8QwvHPtFhfmmNDNZ+56mmI0de3/egI/r50rMw7dFF9FYnKnPxTIHuc2oDp+sT8bGOiGPCdwY1PmS8Rdha2jP6BA/E/HZ6dg6syMfp7GoAgMKUFqSdpmbyo4XX/XmoEKOe0YWv6XQcA6oE77b0ccWLRURUs8v8ca+I6KL3FQ5ZbbwfakZTa6tVv4as0xSIY0dshVwXxe2pNRHosCOi2qzKfmn8WIV+B+jVWuG4AgW9qfOMyjqEGVdp4TCx6IT5L/rKZofzegcM7+NjDPXD/GvbsbaF2Ql2Ix6jY/A6AMC+xjuo8adDXsOZfqlqpemwi6LfbYy2GUw0iYaqjA9AqJQoKa70CSYkM2NEci9RxMCkWVBvoZZ2+VM8HtnS+jFf7g46hUYBAHLmrcfDO0Rjj4bzdL+x+iCcZlE3rHErRswQ2jli9lxBgRHnwwhrBje0T5ghWpbllNQWeGHwIfbVi8YCWGpR8ytsfA8zGXoTVfWZttZlWgmTXqwNZzgmBMP0GRRY7T8MNnnUFX0PGeO8Bj8TG8nnvB+9FnVx1Payqg5i//NoAMCrOk2MC6HgbrjWHfbHCFBEZxF9po2Lx9EC6mAymTb4fJA659CCL0jbQRR/feUlfHcnqxg3m8h408kPSL7HMeuh8AZd2USM/d6pYFsGhfzOyDUw+kukqS7CDAiHCcdgMJCBmlvpDdCPYvaMyKoRsPZif2oYduJOBzM0Lq5mAMHA8CHCBpN1hBrYIH0W9U3V/ZPwRYIWnVbdJzgrRe+pTSbZUb9J1pjWRV015tASSG0g+ne4m4iVIRzLU9pVCGnjHAcc8F/bP7fBpSoTyj/5fgm9w+iBGl+Zj5EbOUnrZlxBhAkXYfqMOBh9YZDhkAkpwlR1f/gb07gZdKcnTFQo3k/obMfyfOYtpvrNxtDZFFbTFOkLmmd7BkoDOGBx1YDWUkL1kwMMsV+GZb8PiPki20SQqlXM1+u1GonDT43UQrdrDERMuHF2uk3F9OWM8DVuvIHbbaSSWsOY0tPm5ADrlwxOiJ/8jj9fmOqyYM8ZLO2geD1v3hgY5nLhKw/ihmRUfARHRekzUv7xHFcnks4JT72Kv4KUMf9jJ1DzlOJuhxnpkPT9KuiYcCLLaDyCQTyLcRa9UUXkL1KU4gWW2KZBv1PoJwZZGmW7cH0J054kvj9FmS8nr/e8ofg6iBvGSPM4JITT2zXQn5VCPrXl4dUUbkS/x17EmkuMMj4JMsf8/YL80ns3MUWHnir1fG6cF1f/xLbR3Mge1z2HjzMPnZvzmjH5OJ/p3g/mb56KGY4Hjsyt9BmXjIhJ3Pj9rHbjTgkDSo07kvCxF2WDwzX0kfVCAlqWcRPqLHiFfnt4OL6YEof9otyotEpO4I00xzjiN//OMHQmyk+x7pnJ0gKIarJunYRCGGw/cz6pHatFdCyDBJWW/HfN0lhs3spxGH1cDcHPuXF44iKu9mV/LptwGEFz2Qdn17GEeMruvyjfSI2iPH4ICqMZLNlxuBNGGfQ0Xtx+Ce0/SZsLl3L+FucNRz9/Uu3SB2GYuFlgXs49hVU9BTR+jS6OHOYGnhZNH13+rOPoM48bo//+HDw7wt+n6GugNoj1BS+n2ENclOmUTwZyo/O+OwXrwrn+9IbuhsJKbpwTdstjgD8DNDPr1iEvh7nCXAn/rXVT1O7W3brbP9v+uSCD0XG7LgAQO1uGZ8p8ycjWZQPhrEZqkKCXAekHPHkSlJMhPJtVRwMW0xd0tm4iWoZShF/zQR3P/UkNGhKrIP6cVpOWDkU8iCU6tI+mwJz8Zwx29ufJU6YiDO/XRHZXF1vCbRNPrFG5OtgtxtPVWJNiu96Oo5AuI+Ru+dmAj7dY5XWXhyiSQpkZsVi/Fb0tSKWG7+F39Wy7gKgODwDA9jWz0LCDNon2eQmo/Ey7wKlWVWwfQaE3qZ4ZGebHXHC2g8ih9Xg9VJV4cg7KyMEJC6LA9aPuwDCX6GNNEytNPLh6AmN7kbofVovC9wUU+sUkRRBdrQsAmB6xEZKCNzdlFnFeDQqqwfdS9lt5wEhI/yHdCf+YieKJRChJd1fDJ0lQyeRSDgDAut8YrArgiX1oQycSv9HbZysnDcM1RLYne+mj9Tzpr/UWUnBV7xaMHkMLS4hpIFI7+PyPN1XApozUzrmQZeF1DPzQOpXjuGOrO3xaSTUzTcqwspSVMnbcnYERVUSjv0ey7w+/2gqlk5wvGrN9MTmEaCjtfDuWz+f1ZPMt0ClAuX1OsX8WtHzC5NG0z9xfUAY7eVpK9romwtiBc0doXAZ6BRPZZNtQJvhWvwAuf5ixUaOgDrFxZB3f7cUw9zvnTmL0UQT0YsDLIpfIPq5MB2HjidDP3hBDyUdS8OeVm2ETx+9LzBmBSMHcj2llcGPJrdVI78/x+B3aE0IjiMqupazG5ksMEBT4x2GNLcdq+Sk+0wGRFVg3nLLKcn8zHF1ND1uzgh2eelGyKBYxQelYft/OYey3wpZduF7Ja6+0m4zsDM778+nzoHOBaF20pzmstlBCSXnV9H83VSs9ntGt0eu+48A4QuS1Bu9RdYjaiJxSLk4WcPNxkekJh1ZO2gkNNHbqrBmLcRaMKsmJ7sDQY+xgRZH7CGwhFVF0MUOwOaOLNy9XAwAaytvxqInm3kw/K1zN5USo6NkO1UOcTP5LXyCuhhG1359JJ+4s7Ild51gJ5EJOBGy/UFf75Dka+nO5eEVeDUPoQtLjqXE0ec5xuI6AfEYct76OwpyZ1FEW952AFklqV1lW1tihyc1aQZrfG5VUivoZ9CHJR35CTh0XS4L9PrxZw/I28p9fYucyamLxDZywvn768JTkQv95fAq83vM5FKzdcMKU9HJI/SeYh/LtVks8ucgOLOsPq+vMo70inI3RBvQVFoU6wzWTVBpzS5Cxh7Ryfwq9To1VJzFM8CbzY+P6Yks5/Xr5g+zwPJiU0bhSCVvHU49ziKLWpNE7FYHjeG+ZN9/DqgdTnK5ovcKg3SwNf9eHGpVY3/MIN+O4v57eC2+vk0b1ez4IwgJf3tCkVbg/l3PE4Sg3izKLd2h5SL3r27j9MF9B3emyaBPWaHkAAI6EnoRtAGl1yFTS9u3rv2C1PyOc9eIF2Dma935/TwBiVLjoz57biV2pNAZv1GTK4CunIrzPoefRsfEoxKoYJXftl4yMBdRyO67PQcsFasQlzdz03gfUIcOLY3Pp4FvcFef4Gk6Zguy+3CM0rjzHOzFGRm8L3gWxd95tSI5jitc8qzsI2cQDI3bhBywrpAS0Od0Ptzu4aY1bz/m00P4eqnzoRsh52AHHZUwH23l1F1Szac5eNtMK9xdRppF8ywj49/3A8RBGVE2z8/BOiP3WT0QGzkeYu/u99gLcj3IN/C+tm6J2t+7W3f7Z9s8huLEfCO/fhJbiqobgRJtiBANTwt41m75ilxSR3Y+K1fBIJQ36O4l+If/jBxFcSGf6sJZh6NmPiLDRUgtJMkR+SRWmuPKbp8wWeyIdjBRD01EK+cruS/DlNoX8r9988XguEcf+gAEY1tsDABB4mT6z3+sv4+alIACAs0Qs5gjztC/brw/vOwxwpHo7YWsZ6YpzLO/deN5ziCizesSYMa74ks40nAv7ldEcwuudK1uGkT+JNPXPMX3nUI91mHSXrvLi7Bi8qCcqsZVOh8Impl9FtKpDw5aU+OupTwCAXPOf+PGT0dn3pvsh3Um653tMBhN0+HfvciVg2puI0WsUhfDS/L0QFxTVHD3kJ1xf0js1xcgd2a/4LKsa3kLjCsVwHxfSlqdddbg/lTS5dG8YXkYTaYq7GeBhFen2Q51vmEmwjYcggl3tNB25xbzGqIhEiJsSUWQn5aBnHFFepykF9Cm7PiNGin6wsrjTEPpDFPF200u47CIdf1myDI3niQLTllKu8FnxDjt/s3hD5F9PjBIEJNwUDuHOHWYkmIu+g+1JgQv/Gv2TnkOLsHsLg0893jxDaTgjtSXVKxFoSmQ31UAJ/qpEc+8jieQW5zhgjinnnkPAA/w9Qmrr0P8LbsVxvqwxNsTgOiIcLW/2z0LzwQjaRpr851sPmAYSDb20NMA3JzKBSdU/UeTI4pYNfrzPhpIc/N3Dn9fknsHKCXz++dPX4sJX+uOWeL5AlCPXQP4nosvb/X9C+74iAOCdZjbexTEAUm4ch6dizGpIVm/H56HM7Dl/gM/5ed5l2P2lbNCccQ7TD/A7Dow7juPFnA+fX2fjmRnnyzR24X9q/9wGpy1Jc6Rz6V5c06Ylo8poHM4cpb7UtrAWSmO5WCwvLMGAK1zs7r9JYRel94HHTi5Ys5s78MNXoMvMmYaWPpwgn5+m4YixwF4yjBNvgqQvPOq5yMYNDsOcPhz0wdNGYkc6qZF4ryB8tKDhMSN8CAAgW3sc+s2jhSUmOwq93/I71qffg0ccU2E6F6hDtpIhft1QamK2xel4nEeLyqdeS/DHm3A/VcYDq1q4OB1fX4e+Djc2UUt+NsI+A0c1qGXIm5WgooIbmWTcVFw8TIuK6bo2nHBgdFGriv/flN2M/ap8poJPmzDAmN8RfvcWrg2kBSBztTEKLjBqu02MG9aP9duhJkVq5HRJAo9HkLpPGTsbLZd5b8ufaeCpHu0ep+RJYTseRWL6Z+aiJomdg7GxIgBAzvgjhDoY9du/LgsaKzlWD+RIYQdKHYL9GNod1g6OxqdH1AqfRQXjyx/qXDca2IdbPBajRoeL5n5NJJ4sI00+a3cBD6Vp85FIeYg1jaTYhwWvY3Ss6Y9qH0oXNVLH0HCFmqftRC8oCIoxVrr+gbAeo5Z3X/Kwc+2zB1e0eUi0rv6I289JiQvnJSLCgwfYHudwxLzgOKy5wI3T4VANLj5mf16/2oFxLCaNEHNf3KjjfI8qDENnL0ZaXYqp40Z8bYbZR5pmJ3nL4NFKlrUyPNiM4DE8gPT1U/HqMreBxSaURGYqVaLhJfv7vbgZ/KIZ5e+MnAiEUlox1ryGWSn8veJezk1VvdOYJs5nXnVzEN6MZPT4aVYt9nvyrXa3/+zDMiPOKcX+HgAA7UnqEJvBMWlsW42cdq4XebdKTAbXyxF7Jyz6/f/LiBThv7Zuitrdult3+2fbPxdF7b9cqAsATtxogag6PTvFAR2wTiZ1CLucjFdTcwAAu3qcxBg3Rud+/mbi75PSS7DTIzpzN1fE6QU8IScbq8FpOQVWnb+30PsFUcKQIhotr777hvEapAgHR0vB5iKF1PPXxqLRgYKtUVctYl4xkqUWQQG9YXIgHtWwpj/8/iJnLdHXCcNrqKtlZY436rW4U8OfpdNJ28ZuN8DlcFKg1hphuOwgMrIKsca7caTbR3PnQy2GFGz3fkZLbRrV0ZDMv5PfW43kp0RqiTkpEE0h5dgXdgs/XVkKfM4mCva71G4i8wjPw2VqURiWRoFZc28xzB6zUOTrmX2g/4nRsM8f+Pd3FCahTJOIYu3SUNyvZerNbtvNkGql5097rjxGmpBK9VrF6N207WaYfoH3vCR2MDJt+dx98BkrfhGVHQkIXVPGgwAAIABJREFUh0QtTdKHmpkEXvVwNvqZ0beVvCgZN+vp7ar1HYfyJArdi2IZFJCJkEJwEdGl1tZXKI7hd/XTT8X8g0SGBQFLMGINI98OEgwK7FixFbKhhFHf5WXgdo7IcF7cNsQ1EV0u+V2Ae1cEifyZgnQ4ezOMdOXY+E2fDd81pIG57/bBWYhIckDMX/h/ImKMnMbn/9VbB0vPsu5gS9195KsQSTe7PsaGt3zZc79Hm6GgxEot66eQHXwTkUHEetLZE8HhCLGmwf3y3IHY+5uSjeO6FSj9zgj0iwgGhjDMAp+6ONZKwj44lMv+3Gu8FnuHUgrRSfsKfXgAAJxqmGD/9ZQmJlrRY7r74A5s8SGX3FeyHvL2THMT6puPiWcpb5Q+ZZR1fFMiavyI1Fok8jFeg77JgGul+NVMBPoj4iziV9AX+cdy6//dKKq6IKwMTTF4mNJ0GSezCtM9uEHMdjfDkiBGxU76H0X5cFIRaSNGJJc+T8X2JtJO1Qu+UBNYLnp0qOCvHzczSdc5WO9N7W7GIG6A0v6PEbCKekj94IVQusSCkCoV76Gylvexqnw5XityE9Q8SXuK8jZXJA5lmD1LJw97Q6lP5Dndxttc6nTvF6hhbjb1mrPl1IF2LRqPsFxqcLqiseiUp8bx9KwJTuykWbbP5R+wKyKc32rNCeuq+wVH7jMCWNzwGX9TWFllbj9rvFDhZif0IBBPl5B2/plCzaXf7RMYuoELQSj9BO6OYnR1pfY1TMnhxIud44cfpTQ1T3/LjcXPeDHyrEmP/9RXQfybIgDgRM0KhM7kPW0JiICBJ6839Rwd7boFM7AqkofSWztpvL1OfdO6zAImIuyjvaYGCO3FSKxxOzfU8ENWSBRsZOMO5kE0lvYZ8RA7nBPi31kfofbjcF0Lr1u5UYmNj8LEIGqeDyN+ICCWuZEhumYo6GT13q50ygBBXadhnMM82TMv3DBsAjfM03VGKEgX5MQaN0Mil9WUm9X5/GfFTFDoRTO1TfNEZBtxU2+cfxURb9hvz8fKQ38bDzypHXymjU9z8CeQ1M/RpxJfQ3hwXzmxA7anuHF4JHah9gI3M5kqHmDrlITR4UNLjdnm8XDLJCX23qcErc/caGVn5qLJiLTTVJOb036xDoz+SEeAZIYFlG5SB3vSkI2SQ6TSAxZHoWUti6m+LuRGNcQvGfdXkLamu2qjZxmBwvNvp3B4M/veXXsu5ObxuWML+TKfUQq1OG9LG1fh92u4bURz70PLFxhdT8nC5JwM8p7RHfC/tG6K2t26W3f7Z9s/R1EHp3t3AcD7ulrEzxG8hefCSvSXJfy+tU4LZkU8yR6F50JNm4jPPJQC7OGmEkhbEuE8bXwHjZ08nToKXsBmNE+kQ12LMKkXBecaE56gi2QmYOhrptvYrT4N175EZULyS7BqAGlLrFMovNRospX144n8Ys1W9L9JSvH1Tl8YXeX3jh9XjD5qNCr3CU9GWAqRiFcZRere0RfhtoPRwpI+y7F+OE/tBqPRULtCkdbCLxH9/XjqfZ9EwVeuLBGmJyjef72fjcEKDJxs9zeG63wiuGFuz1GpQUQ4Zz4F8pU/l8NInUEPV+H1cP3CE3fZiCzEVxBppfo0wt6cqCXFnTRyS8EuhOuTwjiXbMWwfnxl3IJYYyw/QIT6dGEATn0h69hVxcCDap4GHsqxuGePsz+wIZtjNq6yE3uOkOI49lDD9s+M0K4UJU2UsI+CucDzJ7bEE49X8XotI3XQKEd/2PYBHN/Hayag9Ar/P9p/CPJUmM4XJH4Lq57wO+S1AmB6hsh1+ByK/vp1pyDXh8jRf342Mtv4HCEzryKulmgncfgdKF4h/b34gOL/gg8lMJvG77r+yRBzNjIE7ChyAQ4/iewShp1AcgwRzPFmosReW06ifBAp7HlPM2ycSh9fpkohRJv4GYNvdpBupuct0JGIuihqIJ7NYnAt9fA8eCvSEfCgsxIBlkxhk/r7BmN38jWEx3bxHsyq9mHgSHo3Rb5po9mGczU88iOsLzOYo3o1FLcFtfamFlNqeHr3K1TO0bw93+ku9knRxXBt+Wp4LqIzoXNBAzRKiCq1+xLtftW+CLNnZEQ6GalYmMWors2XMLwWVC95ojkDKk1kQgWNG7qriXS37tbduts/p8FZh3H3n5kXj5nZRD32eSdQnUCE82rZSvxIpyiuNTkcH0ToQSu05+mQbqyA8ipWTF3aQxcht3iqDRvrhlECHez3JHN0mRKJlZ2icLtTSg5ns4g4LBMv4OceWlFumDvCabng5SoP9yArk0jjSja1pivDBqPck6elVawefgXQIjD8mjwO9+Dp5Z8Yhm9bqa805dO/9CExDqrXmbh9xVwL480YZCi1OAbhE0RMYTN18fogz7B54tRZjOznwzaHfeRdrI5fbURAwidkMPwdK3msrmzB4zYipj4PeVhWWqvAMpYVKBw1jeGwlX20/l4QDgo0343ODzDwJX1wwTY81YNuX4DiRYrlmwYvwccR1D+73kthSyrRh+qV93ggztM89gbtAp0y06H1kwGHz3H+WBNL7TI3bSw2CtODtrnoOkR3s9rEY8G7UOOXGGDSLnrfxtyZioiJRKgGGuWYEku9VLOF6LRO9DwKLKif3ZA9hidhfKasxm9Q0aI229R4BssVqWl2nKCnMDXTE2sK2K+jY+8gOIP2im2Jv3FmAjVb6WJb/BW8JOXyd9qAPi36At8J9Ki5vvZDHxki31nzJkP2JTUvh8gs3NxP5Ld0Hf16+181YvZ1jumoQVvxcB6DHQvPLYVrG8f9rocivrYzGDDUn8L81Gu9MaqFWQiBGquxMZUelv5Jr7DVkR61XdJT8Evw0uk8fwYyrv9VhndfBpfKPccj9wnHLyPFEKUmnAOLZ/RGqg/1W91MMpeiowlwuSaofRgyBfeGspjCtMNjMKKBWmfBjrvof47ZI+u/U0/+ndADjT2otSUpykG+P5G0xogM3BRjBRGX+VqwW0R7yf/S/rkNTsKGg1WldxpJc/n+g4s/tqMrlND6R+ZqnG8TvAw5XhIpFkxPefSTouubwrH4ZUva/krKHV8yOHjTDAfj7HFSzbPtqYjL5ES9sZObU/uqdzAIXgcAuBv0FJUHSYfERPcjpZOi8YTTG1Hmxskb2k6aYasThtYg0rmkkHn42sANbIHeRAzgvogdR/PQw5ebUq+ZzH2tHLQQ53fQu7c23RH3PDg5l/UbjJQTFOQtl42HYjgpil4SgyiturZY85QbvLBKFI6m8Z7r93hj6jhuKBZTC2F4g5MsW/AKRZ+wVpxYzejece1x2PSM99lkaIXqeYxARwWdwcgKbqRZ4OJ863kXo8/S2ze+MBFLu3LYh2OdoOVCz5yQxEa05HDBrTZhdO+r6WGYb+aGs2GiEA7P4OZk4hWKrM2kM89CKzBpAA+xZAMK3obLNqCxPyuMVETmY2cyP/uqIRA/6knLBkxltPRqjAoCl/B3UXek8SKdlVq0D/bErp+kwbPXnMKqo6SrneGMMk+VbsCOLlJ+5f3zYe7OKGll9DSIqVJW8FkJPM6g9LBsPYMeGV166DGeEdkntTfh85Wbs+7f51g6gGPpHdIB9zZuUMc/c47M1RDCnQEMepy5sgb5W7mJOvS1RcRbRqivblBCjxJGzDN+U8QfY1qPuEmkg+pDZfBGEMmcPEMR6dUeAADfWGk4BnOiDT7PqG6Z8Fh4m7BfB6X+hdYpHkox5slw+EBJ503OQEiO4BhLCV4Sbpo3Azn6fCYtuxC02jIo93bYOLhIUuqQnjgIivWkqx/mUI5w17aHij83shSrEvxx5/18WFAOqWCWZ7K99QTKOxk95p39t9ZNUbtbd+tu/2z75xCcUzmrQ6yMXY1lA+mNmvhTEWNMCIev7iuD70eK82JCz1GjS9h+7CApifKW97j0ji79kYP2w9qdSEx5/ieM0iet3FTtiNghPNWWHSX1davVQ7UwUc2gs+H460ca1KQzDPtf8USeXDQDa2YQBcY7kJL56n7E0f6knzG3m5GSwdPQuSoYb+fy500ywhDWpMtecgSDJUVenpCZTlvDgENOqDzLkuQb/PMxxZ20bGJqGNJ8mQKU4MO+SB2Ygcd9SJOXfpmMr4J3YvaI1cPScv6dndNhVNTzOhe2CYoMlu+C8DrSD00LbXiNIOUY800M9c+YrmanNxUnL/PF1knVLCDg4fIC54bTZlF1IAkhcqTBB2UfweIFkdGCBbuwUpl/l93OWm15sceQNZcvAoo2TsWlZloKqtzEsCaLlhK1Gy9QK0j3kRClP+vY/WGQbmVWxLb5z1DrQuuOw5BLcLNgYGRPGMdp8ebVUHxKQV6xTAaR1URfmS6TMbGV6W6VR5pw9QLRepgYq3XI7SpD6RMizdSeo5F3j/e50GsxujbTYqT7ahosC4mIbtjRgV9sMgZx1uyrnZcMMb+ANHCjpBPmDOeYrO+dA83dnHPhOrSl3JodikdWnDfbZsni00ZS0Z5v6rDdU0D/h22H73Iiqg9jGGSyle6HV1uI4CUffsIoOd7nkNcmsFpLj942SWv0/cM+d68jAizcvAxLTYlWF+62wqYlLPoqrrQPUvuY6L9k5wfUCew/l2v4u67NSRg5nch2jt5BTBgoqKn3bTJaChlo8Xo0DNhCpLxSlSyhd5s3Ht8iqjNyWw4NH1LRwbXO0B5OmnuyajHSXCkjgY//n9o/t8HFTORgpG6+hrwXXEwVi/Rx3JLQeabVWRwez44Vcn6Cd3b8fchqdursikF4PsQDAOAXGIV6XU6K/sfU0H8v6VenpAP251CD83tHPWFXpzNqPjIiF/fFD18/k3JNSjZA4kkO3njxv+gneEHxghBWirjjeAC3rnHBravYgYBUTrLgxXehZsXFq701Cpp3SGGqjtAI3PnaHbd38jns++sj25V6iNXgXTDQop+p9+dk9NtAP9rXEJpAD1fl49BX0uQ+2y8gXECxI0eLY+7bHABAe/JTGGnSl7V9Aalf3+EzsDCCG2Dd4v6Q/ULNS7fXQeQncnOyLxXC+U/VAABXVd6nT1ASUocz+jp+UAHW3+ViSO11Ddt+0/R8/JM4FMzYz6//8uDopy+BkkhuVLnyZ+G4gWPyJNQJOaGkzftar8FgNv1VaCUNvj1rC9LauYBeiY7C7Z/cGK2sZ0HtG3XBkGjSHuHsCoQ7UrpQOm6I3aKUN778EsbaVMoGMi76mOhIz6KPQDPTeRWGgxd5uGxy08JZK/Znu0sEsr9QH7uZIYvp+qRoxsNIxY7sP4DLPRnp9LSNxO14mpdHejvjRTu1MjVVZ4he5M+6n/ldm9om4IwxTbO+iUtxsJFjduqPOkK/U4Zp2eCNP7+5mT06Tw9muJA6pFLoAlg2SANr93ODeKpniPd/qBdXqr7B3TfUfd9a8s32xSsPQrZFUA7LIw/qP9i3DgtfQWIHD+PTkdPwsgf/btM8jk3z6SzUiXCe+Q9ZD7M6muFnjZ6Niwo8rO/OnYUnd7hm8gfx4FC7fgqe+7lW4/doIHUg18s8q3cYd4sb+Kphh7FrFaUHJob9t9ZNUbtbd+tu/2z75xDcS0nC+9jHwXi0gid2rUgCXvUidHZ4cRnX7tEHJbrxHo7v4MlSLcYChy6qsphsx++wcNyKIRYUocObzWG0kMggaPBxYDCRg0wa8XJO6QPc7aIwrbLgKkTbSH1beq+AuTrR3Ip59+D6nqlhnW9JiefFuEA2nRG0EZElaDhKymjTJYQb2+kpCurchRcGpFeeghdVV77Yi6FeOQAAK/c2RBvzPoRfTkW/ekZ+l5zUwah1jIY2NrPKSh/DnqgYxMjx0wI7mHeQPs5K1EB9GwMRBUd3YF8qU678PvM5jk64iZ4zSZlWWZzDhR4U/R9/2YYe+qz79Ut+NKIO8FkHBfDvZqzIhPg6pqoZ5NvBxY7Ux3/VJixop2BdZB2GXZJEZeMn8Bpal24gLocINuCSA8zUiMxDRAPx1pqexecnBkHYkyhCSY+IMeuUDq7ZUPTPGXcMNrOYDXD9oz8uBzArY3ULabtGZDmq3egJLFdUxqTxDOTMWhWGI5kcB+ttldi6iZLFST3SUqeETzhTw+ewXHcKy6spN/jYXkRaJ2n80PwY6GczQLVP4OfzKfiK64pE/tEH3TDAiMgoTDIdpaGcO/2bZDAijTJL601mi8i65aHvZc4XkdUJiAbvI3TtL5yzYLQ+Sq0nogMoGzhtZQHLoV+lcK0faXdzfioilfj/BmcmYFcpU+1izh3BBz/641bvJruYE/sItfVcIzmVgxEsTHnn7YK1aN/AZ9m5Yyyea/KeWheTGt8IyUVQPgN0QwqqYRFASSe2XgHff1GOmLnIEt6fBaX9dasBABfLZqHkLv9OpOYslOTpD4yaFY1Nknx9wDn5qbifRvT7v1DUf87o61Pj0wUA3lErUZNHy0Kgdwg8nD0AAJ07xuPLJuogrQXr8KGBHd92m2bGW1pfsVWCtCY6YwomLyYNPDJvE8bWUI+6PbwUjbrUH2ptSB1e7Z6GS3kcGD+z+3ASvMjD4ogoLH/T/Fq2QR1KHqwmfOwDNaqhvU8i4zWp3wz7najaQbPtq0nxyMoitXN5F49bdawmcWEOq58I9/NF/isuvEH97kP1OE2VDhta4P2MBue0NRfwx47PbbeEC2usQTIWm/JZix4NQm8VbkQSiZ/wJoWRLvfgCdCr4gLPU6bG+FFfEkWr+R1KKS/h+YmakJi+HYqcee2mkwqotOMh8GMIrRWPrvfADlmOwwKfQ7AeSUuJSV99GG6LBgCUX5sJWwem0mV94aJenPwM7jpMRZM8EgjbJj7/71xznJZmFDQ53Q3rllYDALTHMzJ+fvpKyA7mc0w2D4WTMA+ibSljIDtXl8+3mweK2sgM3PzNTT1mqROmvqUJ9+z0h0j0IgWtmuSFIYqcL0MCGWmPES1BRxgXb8v6YFxYzyrGZhcOI1+ZpYUkEnrhqj3pfdQJUkeXis04Icbf3bMvhdQTWlR6JEfhngdp7LleL1EXwGKbw+2o3WaMqIe0LzWzpBmuyHTjhjRNPgrDcxhFvafcC4OteXDJirF/Ur6LYb04I7hZ77Iw/JEgha2pF0RmkyZ2tB3CXwmOybRoyiPla2RQ/pzm3+xVWpicxj6qKujAggjOl9sPeiLaXKDDxtKqsjb6OW4Ecz3cFO3Ch3UcP/mhpji5lpKH5MPZ2LmBVFOxhQfDogA3rAskfZ7dpYQIBdLc59vM8XgCD6VVUfPx8SwtRJVSEt1G3+7W3bpbd/vnEFz1S8cuAFjy8wqaioio/PVrcWsOhcsp4QNwbiFp3oLIpzh/mT64ijOCSNDso5h+hqhu8MqNSPLJAQBI2H+BUiQjdXXjJuLBBEY1f+WxmoP2n2JM6MnTuSlaCzO0+VnrO0+wRJAQ/fZaPMST+Jq+mEG83nUMx2RJetvm7x2PmHc8vf16qeOdIpHWG6sfaNIiwjEdTZiu6PcY2xcLXuM3Wgu33pHWWM08h90yPMk3nNXFTkG62tTPRFF/LveHRyi/I37UZhwJoYg7alIVDh5hfylXGsLNnX3g/5FIzv3WX1z+yyCL+aAiODRe5L29jYWXGNOTjs57hIlPacgdP5om5cte+/Eil1Qtqf4thkgwKoZLi5GcRFo6WLEQbr40en5p5emeveYAtt1jdA8P9DGwnt6vjcEq2CDNc/nmLyHEaBAp7t7Ia1yNPQWRH6TXzrnP0LWdgZ+NdwDZlVRk+swmcnikkYM9wTRL5/bMgWw0kY/fiV7oHM7y7I7BObh4m0GGunUsWd/HXAINJhz3JFln+N1WBAAE34pGUzMDPB5xj/DxGNGObgXRUm6zCSQ0GZ21dtHASSF6F23Uu1CYwGjvqUEd2H6fkd0v0dUAgM2TvDBbhMj+fN/+sHpAn5unuQZ8rpCuf107FfUf2YdZsxi8uXvsIHprsK8yLxQiJoH3LxXsjBGXSIlfP16P+dWUCg4IKrI8sLgPmWD295A96ei7j1LPiBneeP+OXsg5/u7YrUfpQU6IlLjT6zJqChgsMD9aAZtFugCAczGSkJHi81kumA6fK4w0GwhxDUxvbkOmL1HwzujFWP6LRVjDVm7E7b1kLKU9N2DWMl6vvrHrPyO4f26D0y/syZfOZF3AqFmE2aFi9ujMZOTp9/OpMDvFxbluhCW2jmI0sE6IVTdM+59BnwbC6YrcPWhU5QQqKG1DxitWWJ0gFAXDQ9Sd9mhxM8nCNbi2kbbETfPGzHR+tk7RB6fjSVdbPp7GtwGkWl0PPQAAiWFdkN3KSTE+YhYqJBg5/F6ijGYVLgANqXUY0UJKO1qUukfH7484Lk6Kule3CL611QCAra+eYNs40uodnx7ijwcp06FPjH6lROzDkndcsK2tfjgVRj3nyOmFiJhEY21nay00pRiVvTuHk03IcBycn3NjtJR7i+jljNRdnCQBSzMamScfqkR6P750pbGRtMz7cgrurSdtbVIHXIJp0ZkfOQC1kdTx/G+sw3xpbq6+u7l4N+tfwpmvLDml4jgHDssZZc2VdUeUCjWfh7Hv0FbHPFDddVwI++M9IfmNOcPLhs+GlRkXuG6QPJI8OAekh5MaHvobh88+7J/KJ/dwewgXWdcQbSxv4sZebtQTLVmMuvadSakhb/hAmKewP+XiH2N9EKPIExPH470YI+KJKZHoM5X9nDGS0dQSuwmoEaGuGOLUC8siqCua39FHryfUSmdoWkH0Hfu2KJTywLut+zHi/7X3pQE1bnH3K5IhdamrNEiZKnTTQFSUOaVkFiGkkqjrmolKXCoUUqKkZCYyNFK4oRRlSkiDIpVSiSS8H9b5f/+/X8+71+c6zzn72c9vr7V+a+9nAG0TfVlraPdm/ORoqwbav3GXRKchuXAZyaB2gxcXtdF/uqOwlpbIhuIfGHaOhaxCezbWp3P3RWqqNpJW0seLqebCrz/hANq+s2Os+/Yctt9lWHp4xkTsCaEEfXJMFX1v85nZX0fP0917CiZ+Yej7zUlleJ/iIZdl7tfQOo+fvaboK/qZ83fbGvIanyf4QHcOg8yJFc24foSe3y0VG6h4U5Z+25qG4dX0w52SuguJKiAgICB1DG71I5XfAHD6XC84GFFGJOnfRJsFV8DiLvNwyIIrRFGzCmbtYksmyJFdsfRHoZgTQ6mZfncQtkjOwr9nooFevdhl2+Q9D+um0Vi9qEjpgDQ7jM+h/Ly74BgW6jFfN3hkB3SVyLZbe/pAUfKKtZY4nhhxtdM97FxnDQBw+xCB/rUM2N4ZlwyHNfz+ThusUSfPztPeAnYAd7p1gGENZXBf9QgsUSUzvBVig7etzPStPHMCRQo0ehsC3fk7B8xHQncyw+T1B/HWj6di/KexE0GLKZ8sN8+C+nfm0cqXkA1NrnKGsRrHqNbJGBtb2X28/+wn+mhTzq18p4QEa/6+DF2yl86a5dC/QoZ3EiYYq8rV/pbtcZxW5gGi7YkPUJLHzrXdFXazW0ZnYupedpF/HriFEC/KcV/5FTD4xnsyYZMzMk6wQdM5k2xPaedVfB1EJmofdAjvojheaTP7wTyInfTKAFoGGqWKWLaXhytumdKAxAfsHDYnuSFgOrvOV2S88MuILCjiGLde3a0dAMsiZtUuzJ2F8DpaCWu+qeFRCGX35Jol0Exl+PruK7LhgpC9OOtPWZYWugoDVpHl3vjnIe5/ppmu+qIY69aRxVtI3kkR8KUP+jXQMtgBN7RI3lY/JXAC1p0ka3PR3wHNZ2RUT+0pk8uqp2HzJbKehy3A5nLKf2vNHZg7jXuoPdKO46/7kheTx7CZYl48CGYHOW46WmE4spLzqV/KGbT48zu55GRgziqO0T+htBKOhMsBFZI3jFnLYgSnHl51iUTccf5taFUH/DuN+1mLLHgyTrlJEuIHMzNXtOkjetdTNeT3bESaLVMHj+oLMawXlVfyqLGCwQkICAhIHYPT9lz8GwDsI5rxI43eyZ4cW7y0ZL6q8KshHOO4IrsFjUTlXXo/19VpRr8IqcEPObIX49FuCJ/KXNeunhGwKGR7fmumC05c4WfX1tLXKep1D5cDyXawpRuelZLBmF49h8fXae5mHTXEdDN6NOdsyTg+bPKA6m02GaxP9IRvE1fqnnJdYJCcBQA4qWaOfvls1S8p4dHOgdoRgCYXMo26aMQfLwMAND9bhIr+9AcrHMMQ3khfaW6rxLxv/ISMe4wkhFjK4EMtfZ698rVIbuH/dZpfgpzBZDl3l5ORbRl5D+NS2ZA5NXYaVGPo/QQ3ZWPNMK7Ij6pn4eBssquTeTx55eObEGT9wx0C3nopMHjK1H/L5SzkvKN/OT12OHQOc9V2CebYzyz5CTMDmttmJqvRezc3nqd/HIDNlfSxVl59haihHEfFrrxu143boLWYHpTX1HQo3iFzGJVkCO+zNLpnDqAPmHiuK9RVyMSvtaZiUBtN7EW/MhEazhNLcmXSUVxEdvz8PBs9kwz/xO4L9JSSjxlD34b+6OgF/dG5mfNidf4lzGsjE8tcz6ZBpd9AjF3AeWh7MhgqdfQrHZIPwWY0v1tkpTXmTuV3kqki616UZ4uvi8jKFgwqQsfTZFevSuVw7yh3A1wt24QuNfTuzv5JZt9ZbTZaFnC71LCrRZihyzEanlqL2VZklTuGfoWODnfVXDCj1xYUOA8Pu/N+1EwExmzlDocP+wrgHEfW9WpOE3of4sEByZJ3+SpYHoFSJ0ZRtscNwSJLxnWqXp/CzwCexPJZrwph/Rl/Gh5A9XPNyhrFxWRw0VqX4Sh5y1xUkgfG1NKT7SrfgN0TyA4dqgL+7zYZfs/jgZcLlE5hawUH9eiOJsxdx+6dboo2rmtQHlossUahEQ3+XE0a11bVf2FQLSfIzHpT+M7m347cuhTl8ny1WXr9HPh5MCCsNofZobcRkdi9l0WywaoPzDwGBGyLAAASG0lEQVRZWHbN34l7krP3jy56iGd5vOlvXC4CAO7ofcM5Vz5MOj1ewa8vJfPV+GkYs4hFZtSRZ3i4nCZ75200aCO+ayFsKSemTLQOnkyi1Brn/hDXlrOIHpYLQtVUyocbVzl5ZfY/BtIo0SMDqnHRiJMp3+4Rsk9TgmoOUUSmKmXLd11ORsM+lnjQzof6nOcVTA1hUPRNViL8lnFP5U5jGWxUoVnsEsgiKusQhn7gg6zjGowoWWbmylcoICeM4/zaVRdHprNIfB9DCfT3toE42chu54oDoejRzi5whn0UJl3iNSJuj8LcsbzHI6fxgbRLjEH5Nl7Dv+YRtujzZIpTW/bgxVder9tzFucrT0LRtotbndIre0OxA/eDKt8ci+8BlIHT/byRFs6C88SaVkNcylrEGrNAKD7tiLc7mOFamG2FinksxFo+JdjczsL2wIQycvXcRoRqsBkyfmEpVG5KjlNf0g49DTZLXpjcwf0FPMIqV/KqSL/KK8gxZbNL60c6DIZzwRjSQRYP2jhufdQNIf+Mpn6RB4ta+x+OqB7BJlrCtQHIq2e2b9tQKyzxYGc3v+gB5NfRpvCz4Naw5K4K+ObJTrTd6bXwHMh84Mpfl1F9luOyefttpCdwYXau4vdNN9CBWwZtFZXtM2BRx/nrPLQIhnO5wWqnsR5sXjJDesGckjq9PQyNJ1nMX9Ycx3Qdhra7Gqshp5AHwKbubkSoEu0bhfM3hUQVEBAQkLqtWoHLaUqu+KMNd59SWsjvtEasGxlc/vYaODtwhSvW+hvaf5OVlH7ilpZjR81xyZbborr9GIQ3SVxZM7IVkZRIk3nUy59w2MMtQIm1PNRwyjIrhHckG3wwTQ5LO7DJcOuJGhS+0fS+NSUbtzYxMiLXhZJjy/0IFJWwqaHdoRSd28nEvns/g/lEspndh47CrS9jBDIJzKJ51V/Bvm7MO9loqWD6ZrKST/6dMGkOJcXSLYbQ7sts01fnLABAnx51sD9N6Rfj5QPraib9B8wajbtujG3sU96AivtcJAsKeSpK+2FZqGtzVZ/z1hy4xjPnpn0+i9R8yjJTtyhoOLJJ0PcIv+eWohNQCyIz2vsoD2snMKt1YtEyGB6g1By9SwcXDtDIHr6KOxK6V93BKhcyh7wu5jg7lexjvl4hTG2Z6ve2XQu/x5SB0ancnjaqUBfPZ5IdI+4m6ruTRQy1C4TcI47Xi90c+8nXKzCzOz8rMvoCckeRdfp0MoDlfrKaU95rkR7Hc8gWXmXmbr1yFqITyYx72ufgcqskd1i2EPs+kz1/NI+C+ROexTbtm6RBkLARwy6S4XUtM8SxBDLC26nhcO1ESR8f44CMScygtaxk5sz352Bcu8tMneWmM5h9n3bFzcQMXFJjbGNx9r/4/ZQyr/UEmf22+BXYYcFGRtWN89j/kk2EAZiMO+WUlyU3HbHchmw9ciEzmBpurhgLNpzCV6hgjC2v7W24C53fcL5E9fgLjU6cL3fe0eZxOGCK6A20KzruVkIXH96/oWbK8GpnfGTyKzlESbKATRb8vmZ1szEjnGP46VUpXFMYt7IbX4sZS6iKakq14diL8ScaPv9/kDqJWvI75jcA6PTyRPPfvAFN3m44rUCv5rLTQwzU5gSYZPoDvso8WsZ5MmVPc8NZTGosAwDMvPwSqzKZHUpavgnuY/mA/DewI6ZYsHtndp+exI5MZ6SksUOWFPwfdtxnjuqs3A2oXqaP9W6cLBROMVjb9o3/F3orBitSXQAAph2j4b+Wk3Bc8BgscaC0SXL9iNI83minvezM+ZcUwmsWv1vWYXlUD2HH8cBnV8T347XzHxhiXjKliIETva/ijx5YbUmJ8PVdHSauoryYs28xLCXHIe2N74FQTx5GmdXGydh3yHJci2a2L023P+J/UtpZr0hFYT27iCYyLZj5i5LRvivH23jMNUzfwfycvGstGrRZ+D3Cn8PdiOHcGb+f40scF4zFI9jdO3TyCqy38jtUdBwCJ2sWpapNJ9A5iVJK2a0cQ3fx84aX81SQ0Uqu+FJVDQCI/asIilO5vUw25RLWq7Hz6RZLL2fhlqcYWcq58LP4J3obMa83w2Y2ur6in2oYaILJ8lwEf4Qzd/gm/BYKRrJAJIUPgXoLT9uVSRqD3HT+X/rAAjirsPO9za8MAKD13AUFGew+//XGDAGr+Kg+Xb0TQSEc29+1A/CkjEcLlXlyEWndtw3WHyn9fLc9xo54jtGItjmozWYer7EgBD4aXNA/r2LGbdmzQ6jXpoXitq4XZCI5Rso2nzDmHe/7Cw8dOM+ip+e7i4Uu70ga2n04b+YenwvbUPrM5keMEGbEALfsqhe4qMMTbsZl01fU+3oMTwr43SIntSNyAxflZ14B2JjC5+XCuxvIXsjF2OUc95lqhfeDlhLHYraVBbI0uWhFbtDAmtW0d7w+JuDoOIlUlvksJKqAgICA1DG4qITW3wBwsLIVAddpiAYUNyFUm+a+fKsOHNVoNg/u7YsPzWQRCZLV+3P3f2FoS5PadZc1DudSukbnuWBBLNlAYakDcly4iOy5QSM4at5LIIAnW9iGKWGcxExXz5iFMzU0us/ElaBHP7KyJ/tomH56cxCnQ9kZPWE7AQGBbDiMTFFG+Er+X0wK8FiPG7393Jj+nmymDZOxlFf2z79jVQ9KuEvHFGF8lV3Eio4ZWNLMVRvNlE4H45xxIoBbkmaFesBhJqWDm3MNqkx47VNx6ujuSYbZw5vy7H55NHJKyE7+/BkGTS1+hl7bdazI5yp7d/8rvPKldNNYTavg/adjcP1Ek15Dvxh1+vcBAP7L4mGdw21SaYOnQ/UB5UrZYTI/lfxwTIjgFjCnAy1425vMdr35Z4Rqkc1embYccQrsso3MJNtbXjEIjVtoCVw7GYhHyyiVo5fqYOgNWg8n5vOerqt8gjk9Kal6vD2MhHZmJZUWXkO5N9naUR09/PudG9plh7JZom+iAJP3ZOXJyak4dpoNnNKAQzADN4rvt3aBuSEbH/GqlLvrbZRwcR7lnv+i65i1j9aE6trhsJd0Sec/fYgJuTTc30je0/rH++t4P4NyNrynPhL7ZQEATCe3wfYSJajTeSOc/4uMsecLzsOrrr4IrnYBAOyqV8f2JBr9g6yC0TfNGgBwo94WJ8L5uw1C2MndpuEBJx3O3yFO7/FiNK/xoWtv6GqzcVIkbw91J768fPQmBt4WpfyAgTpVRV21BtZYMm+58kM6nksOAg128cP8A2So7paUu7+CjTDOiopgg1dv/OnI+3e/gyYyL3G+/OvSCllH7ropcFr6f7eLmjl/3W8A8MjwgIsuH7LmDu3o5ckJO/nNSbjNokQpmp8JvyzKuSoH+lIng8cjc6lkC82kfQjNII2OVR+M1Y2cQIh4gIlapOWPX0veWn74FiImSCIJu35gWiX/VltpCoI30JfKfuaPNzn0hMa4URotOXISaucY8jwcrIqh/oxJpB0sh1IeQ5qbPbZhxlL6apW7uOf0c9NW/PEPpebdUc1Yn0R5fOPEJOTu4cOQqWGEb/X09OQ78JibilFR+BhPH6j8yHycMaVUiWi2gepGbik6Y/sn0vZTrnZ+ze/T//gy+C6g9IkzGAyvRkZGdNtGwDWfp0oYuM3H9xJ27ZIfsiDPzTyCk+mMAxy/8hu/UinzPQf+hzBPFi2bS9UIq2VRdnehl3bW8Qa8+nNbWlz/fpgQwmInt+EiFqymt/U41wdGcnxoy+t4vdK+B7G4P186M+TLUTzXprzaprceb764AACSRtGDdanthL0t3H6lbPoZt8/w2m37G3F+Nx/OQYr56KzAz8hMYjA5flgpInMpxapeLMQ+fUks48xK2DfRKlhtlY+EFZwjMo6cFz2SvsLqN+fLAv0ZsE6RvMClZipCGhnjKdyjBU8l/u5btdwv+vpBJBp8KTUrXSfgtQXnrFdGAIZfpMc67MVxZFZwUVoey2J/Y/ds6P/kAtXaPBvt6Sxk/z29h3JrLrRmUzojtQsX7jduPBxzTFY9miSHe3bcMRCDC1hwnVys4T5N8urIVBX467PIOymyYMlXBqE4kPPsgstGvDfmHLrz0wP9c2jN5DSUYE0gYzr29xnB6qSni7VRLMq//wmHTCSvMTPxDGR/aQMAGmOt0fEPngKTcipUSFQBAQEBqeui5tiw0/XpZg0y5Jij6ufZFy5fSHVl8uai23eygR3+yxHjw86owmkygVeFXdByj2zAQvsOfCLJgIZUTkTeZGbUCoy+oLqAcmViEc3hoK9aGKvJ7FvKk1Z8yKbUOuByDOrhknBv18+Q60V5dMOMRni8VX/4y/M7THW9hX8O0sQt+tqCeYrMWv161B9G7uxU/uvF7SppTSvw9hfN2m/aQQg9RxmhOdkCEbspx8eFBCNjHdlOdDabKMOz7GBeREZl0qqFnmGUxzP3f8HURK6QMxeV4+pbMrELRpSc/5yqQ+oIdok7hSRg72ZK3+7P7IEzlK7nH0zD/DmUcyaneJZZrN92LOtKEzvhvBE2WpAFJZa1obUnxyXr7/GYdFFyesdFntJy3v4JlAJpUncc24SFRQxO35v6FbcLeb2Ez92Q08BsYuxgZvhidlpg3l6yrwfPk6E5gJmxj+uuwvg5ZeCyErIJv4/70aTMcfMZuQzrT9E28Av/APcisplGuRtIfsrc4DsNGuEHdJwxS55/260iD1obyK4Ttl5E+llK9yyfIWhSYD6uII6dzq12tVjzgaysLXcB8iVnFO64NBJDbcnyOk+cD50qsjlZyflzXV/+RkNfhtMLu2tAsRvfSVGVNB6xvTjHjayuw3AQ7+V9FzbO3hvYYWc4mXboWzuE/MUTdUY1jMDgEZw7safL8KWFTZs+SQx6+8uoIeYFJeqk6hoknyebs37uCMuhnA8Tvs+F8hJur3t4ilLT+akilLSY84tYsgdyifz9qtl/IlyXDZMRF1Pgvpn3T/eWNr/vZWfErWUTzHT4L7jl8tzF7cbGWPuRzD5K4RiuPWKn9X8DqStwdXqMNdT6d0BZBOmyw8C5uFnLzkzarnrE2VKizJ7ujua39H7qfrEbp7u1Aev8Sdkfd9+JTZ6UiSmlinA/yJsrs74UrxewgCWr+QEAjj6JQktPtvffqmqjk6T7U39QAXoxvPYU63YMyuCDE3+Mk+2LnQ8WHaWPV66yAiXPeXrCbOsl+LtUEpotzsAydRbSH/vpy/zqswiynZliz1edBadUFuiQTTMxrIwS23L4SDy2ow9UoEoJ7pLThDPVlOuFn7bgtio7zcNk+8HXjr8pqO4JQu6xJT+5hgW1PXst3H9QGTi4rcaPD/QsNVJscMCKUqu83AEOqZSHDjIMgbZtmgENSWq+w89LGBdEz3P6Vm0E+1C63y12xJ4Q3ofEXCbhlZ0fom4KTxvWf9wBaZn8TTJ7DJH/neP8Yq0/fMsYpRjfi1IseupoWOnQV5xhFAaP9DIAwMM/opEczphLQwIl5dc0HRwypGzbmBeCfZmUlAudKtFjBhcGd0073A3j4Z6/dCTe0QcbnJvDhcpcOxYuBpRwbdsy0D6L45Ud+Q7GRfRQl7bxulm5bthzW9IBNe2A46b0s1Q07qGLAT9784g5SKnn4un/N79D+KR42JQxXuQU9Qtm3pxbY9YMxqHXHM/zQd+xuJhjrl7GEPaCwz4wNGXB3eryCT/lOZ6R+6vw6Rr91hVwwPXNXGgmK1P6Tu+Wj6itXNgP2j9AoBoXn9Y4fdhdYRfYxHM8YsbT6qnSZAj5nG8UcobHAgAiGuOx+h0L9eGghTjuSGvCoLct6pbTszx8nPZAxnsjPN0uOQB2igqcLnFx7XtdEw4T+DwEvizDiRGUrv8bCIkqICAgtZC6JoOAgIDA/4NgcAICAlILUeAEBASkFqLACQgISC1EgRMQEJBaiAInICAgtRAFTkBAQGohCpyAgIDUQhQ4AQEBqYUocAICAlILUeAEBASkFqLACQgISC1EgRMQEJBaiAInICAgtRAFTkBAQGohCpyAgIDUQhQ4AQEBqYUocAICAlILUeAEBASkFqLACQgISC1EgRMQEJBaiAInICAgtRAFTkBAQGohCpyAgIDUQhQ4AQEBqYUocAICAlILUeAEBASkFqLACQgISC1EgRMQEJBaiAInICAgtRAFTkBAQGohCpyAgIDUQhQ4AQEBqcX/AHGWgY5h1wC2AAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"obs_sample = env.observation_space.sample()\n",
"\n",
"show_observation(obs_sample)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Actions"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"What **actions** can we perform in this environment?"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Discrete(6)"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"env.action_space"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"`Discrete` is a `Space` which represents `n` integers with values `0,1,...,n-1`.\n",
"\n",
"In this case, this means we have 6 possible actions we can choose from at each step of our game."
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"False\n"
]
}
],
"source": [
"print(env.action_space.contains(0))\n",
"print(env.action_space.contains(6))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"But what do they mean? It's game specific. For the Atari environments:"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['NOOP', 'FIRE', 'RIGHT', 'LEFT', 'RIGHTFIRE', 'LEFTFIRE']"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"env.unwrapped.get_action_meanings()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"How do we perform **actions** on the environment?"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"reward=0.0, done=False, exrta_info={'ale.lives': 0}\n"
]
},
{
"data": {
"image/png": "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v7X+ks2lz723GV96/r3NWWHGl55/b3PubUb2z04WAEJEFgBCvEEAANzJGwQAwMpEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEIeth6AdTw9vfvJY4+PHzaY5HUV5qwwY2s15qwwY2t15mR/7GQBIERkASDEcfEBfTzauuY465bPucfz47dLn/OWz7mXtZzHWnJGdrIAECKyABDiuPgglm4/3vt1Ekdfs+esMGNrNeasMGNrNeZ0bMxHdrIAEGIne2Bv/XY+67f3e1WYs8KMrdWYs8KMrdWZk32zkwWAEJEFgJA+xth6hql678f6hm7g9YjzWMt5rCVHNsboS4/byQJAiMgCQIjIAkCIyAJAiNfJnliVCxsV/oqOtZzHWnIkdrIAECKyABDiuPggrjli2/KY69Ln3vLI0FrOYy05OztZAAgRWQAIEVkACBFZAAhx8ekkqlzYqPDaQ2s5j7Xk6OxkASDEW90BwJ281R0ArExkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIORh6wFgyfdffnbR//viux/Ck9RnLeexllzLThYAQkQWAEJEFgBCRBYAQvoYY+sZpuq9H+sbOplLL5Yscdnk/1nLeawlbxlj9KXH7WQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASCkjzG2nmGq3vuxvqET+P7Lz6Z/zS+++2H616zAWs5jLbnGGKMvPW4nCwAhIgsAISILACEiCwAhIgsAISILACEiCwAhIgsAISILACEiCwAhIgsAISILACEiCwAhIgsAIQ9bDwBLLn1LsMTbkR2NtZzHWnItO1kACBFZAAgRWQAIEVkACOljjK1nmKr3fqxvCIDdG2P0pcftZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEgRGQBIERkASBEZAEg5GHrATiWz7/5/Md/v//6/YaTAGzPThYAQkQWAEL6GGPrGabqvR/rGyrg+RHxEsfGwNGNMfrS43ayABAisgAQIrIAECKyABDi4hM3e+vC0xKXoIAjcvEJAFYmsgAQ4riYu3mdLHB2josBYGUiCwAhIgsAISILACEuPnGVW14bu8RlKOBIXHwCgJXZyXIzf/EJ4H/sZAFgZSILACGOi7mKi08AP+W4GABWJrIAECKyABAisgAQ4uLTjX73h5+v8TQAFPDXP//HxScAWJPIAkDIw9YDVOBouLV//foXP3nsl//49waTAB/9/je/Wnz8L3//58qT8BI7WQAIOdxO1q4TgL2wkwWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAkMP9WUUyvBkA7I83Atg/O1kACBFZAAgRWQAIEVkACBFZAAgRWQAIEVkACBFZAAgRWQAIEVkACBFZAAgRWQAIEVkACBFZAAgRWQAIEVkACBFZAAgRWQAIEVkACBFZAAgRWQAIEVkACOljjK1nAIBDspMFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYAQkQWAEJEFgBCRBYCQ/wIaKWg8fV4X5gAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"env.reset()\n",
"\n",
"fire_action = 1\n",
"\n",
"# Run for a few (simulated) seconds\n",
"fps = 30\n",
"seconds = 2\n",
"for _ in range(fps*seconds):\n",
" obs, reward, episode_done, exrta_info = env.step(fire_action)\n",
"\n",
"show_observation(obs, size=10)\n",
"print(f'reward={reward}, done={episode_done}, exrta_info={extra_info}')"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# When done, need to close() the environment\n",
"env.close()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Wrappers"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"`Wrapper`s allow you to **wrap** an `Environment` instance and modify it's behavior.\n",
"\n",
"We have already used the `Monitor` wrapper, which writes the observation as a video frame each step, and also outputs data about the agents progress during the episode."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"There are some pre-defined wrapper types which allow you to easily intervene in the interaction between your agent and the environment:\n",
"- `ObservationWrapper` allows you to modify the **observations** before they get to the agent.\n",
"- `RewardWrapper` allows you to modify the **reward** before it gets to the agent.\n",
"- `ActionWrapper` allows you to modify the agent's action before it gets to the environment."
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"class MalfunctioningScreenWrapper(gym.ObservationWrapper):\n",
" # Override the observation() method from ObservationWrapper to change the observation\n",
" # on the way to the agent\n",
" def observation(self, obs: np.ndarray):\n",
" r = np.random.randint(10)\n",
" # Invert colors and with a low probability set a single channel\n",
" obs = 255 - obs\n",
" if r < 3:\n",
" obs[:,:,r] = 128\n",
" \n",
" self.last_obs = obs\n",
" return obs\n",
" \n",
" # Change render() to show modified observations in video\n",
" def render(self, mode, **kw):\n",
" r = self.env.render(mode, **kw)\n",
" return self.observation(r) if mode == 'rgb_array' else r"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"class TriggerHappyWrapper(gym.ActionWrapper):\n",
" # Override the action() method from ActionWrapper to change the action\n",
" # on the way to the environment\n",
" def action(self, act):\n",
" # With a high probability, just do the FIRE action\n",
" if np.random.random() < 0.9:\n",
" return 1\n",
" else:\n",
" return act"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Lets see our `Wrapper`s in action:"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Played 796 steps. Total reward: 155.0\n"
]
}
],
"source": [
"env = \\\n",
"MalfunctioningScreenWrapper(\n",
" TriggerHappyWrapper(\n",
" gym.make('SpaceInvaders-v0')\n",
" )\n",
")\n",
"with Monitor(env, 'out', force=True) as env:\n",
" env.reset()\n",
" episode_done = False\n",
" total_reward = 0\n",
" total_steps = 0\n",
" while not episode_done:\n",
" action = env.action_space.sample()\n",
" obs, reward, episode_done, extra_info = env.step(action)\n",
" total_reward += reward\n",
" total_steps += 1\n",
"\n",
"print(f'Played {total_steps} steps. Total reward: {total_reward}')"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/html": [
" "
],
"text/plain": [
""
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"show_last_video(env, width=400)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Deep $q$-learning for Atari games"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"We'll now implement a $q$-learning method using a deep neural network to approxiamte the action value function $q(s,a)$ in an Atari game. We'll teach our model to play by directly observing the game **pixels**, as a human would.\n",
"\n",
"This is based on the [seminal paper](https://www.nature.com/articles/nature14236.pdf)\n",
"\"Human-level control through deep reinforcement learning\", \n",
"by Volodymyr Mnih, David Silver and others from Google DeepMind (Nature, 2015)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Approach"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- We will learn a parametrized function $q_{\\Theta}(s,a)$ representing the **action-value** function, implemented as a CNN.\n",
"- We'll treat the task of learning $q_\\Theta$ as a **regression** problem.\n",
"- During training, we'll collect **experiences**. We'll denote the $i$th experience as\n",
" $$\n",
" \\vec{x}^{i} = (s^i,a^i,r^i,{s'}^i).\n",
" $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Our point-wise loss will be an MSE loss,\n",
" $$\n",
" \\ell_i(\\Theta) = \\left(y^i-q_\\Theta(s^i,a^i)\\right)^2,\n",
" $$\n",
" where the label, $y^i$, is generated by us like so:\n",
" $$\n",
" y^i =\n",
" \\begin{cases}\n",
" r^i, & {s'}^i \\in \\cset{S}_T \\\\\n",
" r^i + \\gamma \\max_{a\\in\\cset{A}} q_{\\Theta^-}({s'}^i,a) , & {s'}^i \\in \\cset{S}\\setminus\\cset{S}_T\n",
" \\end{cases}\n",
" $$\n",
" - Recall the Bellman equation,\n",
" $$\n",
" q^\\ast(s,a) =\n",
" R(s,a) +\n",
" \\gamma \\sum_{s'\\in\\cset{S}} P_{a}(s,s') \\max_{a'\\in\\cset{A}} q^\\ast(s',a'),\n",
" $$\n",
" - Our label is based on this, while dropping the expectation over the next state, since we don't know $P$.\n",
" - Since we average these point-wise losses over batches over experiences, we will **implicitly** weight them according to $P$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Target network"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"A major problem with the way we defined our labels is that we seem to be using\n",
"the action value of the next state-action pair, $q_\\Theta(s',a')$ to update the\n",
"current action value $q_\\Theta(s,a)$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- This would mean our labels will be very similar to whatever the current network is outputting.\n",
"\n",
"- Moreover, any update we do at step $t$ will very likely cuase the labels for the next steps to change, since adjacent steps \"look similar\" to the network."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"To overcome this, The label (target) is calculated using a **target network**, i.e. a different parametrization ($\\Theta^-$) of the $q$ function. The labels are therefore not dependent on the model being trained."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Experience replay"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Another issue we must face is the non-i.i.d nature of our samples (experiences)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"By definition, every experience our agent has is highly dependent on all previous\n",
"experiences in the episode.\n",
"- SGD critically depends on i.i.d-ness of samples (otherwise, gradient of batches does not, in expectation, equal the actual gradient of the dataset)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Moreover, we only have experiences that are based on some current, **sub-optimal** policy,\n",
"not the actual policy that we want to discover.\n",
"- If we only update our parameters based on that, we may get stuck in sub-optimal loops."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"The solution is an **Experience replay buffer**:\n",
"- We store the $N$ most-recent experiences, **across different episodes**:\n",
" $$\n",
" D_t=\\left\\{\\vec{x}^i\\right\\}_{i=t-N}^{t} =\n",
" \\left\\{(s^i,a^i,r^i,{s'}^i)\\right\\}_{i=t-N}^{t}\n",
" $$\n",
"- To update our model, we uniformly sample a batch of experiences from $D_t$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### $\\epsilon$-greedy"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Initially, our policy will be very bad since we have a wrong action-value function.\n",
"\n",
"If we let our agent follow this misguided policy and just collect those experiences, we may never get any useful samples."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"To overcome this,\n",
"- Our agent will take a random action with probability $\\epsilon$, and use the current policy with probability $1-\\epsilon$.\n",
"- As training progresses, we'll slowly decay $\\epsilon$ from $1.0$ to something close to zero."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Pre-processing"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"As always, the devil is in the details.\n",
"The DeepMind paper uses various preprocessing tricks to improve training time and stability."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Start playing with some amount of No-Ops.\n",
"- Pressing FIRE after resetting the environment, so that the agent doesn't need to learn this part.\n",
"- Stopping the episode after a game \"life\" is lost.\n",
"- Fusing together two adjacent frames (by taking the pixel-wise maximum) to reduce flickering.\n",
"- Scaling each frame to 84x84 and converting to grayscale.\n",
"- Skip $k=4$ frames, applying the same action to in-between frames.\n",
"- Stacking together $m=4$ frames (after skipping $k$) into a single observation so that the agent can observe the dynamics of entities (speed, direction). Note that consecutive observations will have overlapping frames.\n",
"- Clipping the reward to $\\{-1,1\\}$.\n",
"\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Luckily, all these preprocessing steps, implemented as `gym` `Wrapper` classes,\n",
"can be copied from OpenAI's [baselines](https://github.com/openai/baselines) repo.\n",
"\n",
"We'll just implement one extra custom `Wrapper` to convert images into the PyTorch axis ordering convention."
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"class CHWImageWrapper(gym.ObservationWrapper):\n",
" \"\"\"\n",
" Changes the observation image from HxWxC to CxHxW (the PyTorch convention).\n",
" \"\"\"\n",
" def __init__(self, env):\n",
" super().__init__(env)\n",
" old_shape = self.observation_space.shape\n",
" low = self.observation_space.low.reshape(-1)[0]\n",
" high = self.observation_space.high.reshape(-1)[0]\n",
" shape = (old_shape[-1], old_shape[0], old_shape[1])\n",
" self.observation_space = gym.spaces.Box(low, high, shape, dtype=np.float32)\n",
"\n",
" def observation(self, observation):\n",
" return np.moveaxis(observation, 2, 0)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Use OpenAI's baseline atari_wrappers to create environments\n",
"import atari_wrappers\n",
"\n",
"# Create our custom wrapped environment\n",
"def make_atari(env_name):\n",
" env = atari_wrappers.make_atari(env_name) \n",
" env = atari_wrappers.wrap_deepmind(env, frame_stack=True, scale=True)\n",
" env = CHWImageWrapper(env)\n",
" return env"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Let's check our heavily wrapped environment."
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
">>>>>>>>>>>\n",
"Box(4, 84, 84)\n",
"observation shape: (4, 84, 84)\n",
"actions: ['NOOP', 'FIRE', 'RIGHT', 'LEFT', 'RIGHTFIRE', 'LEFTFIRE']\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAF0CAYAAADcoaltAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAGQRJREFUeJzt3XlsFeXbxvE5lK0tq6U2gCzKUgFBgqhYcQE1LnXDoDEqSJCACsaoYAQ1SgwSlZ97XAiiUYwkUOuCAhIEBAkQW6FSLKJQgQqVpYCWLizn/eNNJue+hSnTmdPT3v1+/pqLOYfn8XRyZXyYPicSjUYdAIANTRI9AQBAeCh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCkaaInUJNIJMKOYwCgRKPRyKn+nDt1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQ+r91rs1GT9+vMipqakiFxcXu8fV1dXiXOfOnT3fu3z5cpELCgpE7t27t8i9evWqecJn6NChQyL/+OOPIrdo0ULka6+9NrSxtTVr1oh8+PBhkW+99VaRe/ToIfLevXtFPnLkiMhpaWmnzfoz1z+T+uTll18WuW3btiIXFRWJXF5eLnLPnj093//JJ5+IHPtzueiii8Q5nYPat2+fyLm5uSInJye7x6NGjQp1bE2Prec2ceJE93jAgAHi3M6dOz3f27FjR5E7deok8urVq0WeN2/eGcy4bnGnDgCGUOoAYEiDX36pydq1a93j0tJSca6mZYOgdu3aJXLsUkJGRoY4N3jw4FDH1r755hvP89dcc4173LJly1DHLiwsFFkvqVx66aUiZ2VlhTp+fZGTkyOyXgqIXTZwnP8uHQSxZcsWkfWSWteuXUW+4YYbQhtbmz17tuf5++67T+SUlJTQxl61apXI+nO4+eabRdbLLw0Bd+oAYAilDgCGUOoAYEiDX1P/448/RNbrwZWVlad9b0lJicgnTpwQWT9WqLVv315k/Yij19j68Un9Xv0YoH6ksWlT+aPT79dqWlOP/fcEPbeffvpJZP1IY9DPsaysTOTffvvNPdaPnNVn+t8K9FpwRUWF5/t///13kY8dOyby/v37T/te/SiefqTx6NGjIuu15Hbt2nm+X6//68cKmzdvftr3+qX/LUE/2rlkyRLP98d+jn4+Q8dxnD179oicl5cncuwj0vUVd+oAYAilDgCGUOoAYEiDX1OvydChQxM2tn72Nzs72z3W69bxFjv2qehtB8LUv39/z9xYjBgxImFjZ2Zmiqy319Dr1vGkx9ZitxwI25VXXumZLeBOHQAModQBwBBKHQAMiUSj0UTPwVMkEqnfEwSABIhGo5FT/Tl36gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgiPnvKE2kjh07irxnzx73uHXr1uLcgAEDRP7xxx/jNvapXH755e5xQUGBOPfPP//4GrtZs2Yit2nTRuQDBw6InJGRIXLnzp3d4/z8fF9jazV9DklJSSIPHz5c5GXLltV6bP29n9XV1SJXVFSIfP7554tcWVkpcnFxca3nUtPnEO/rEXWHO3UAMIRSBwBDKHUAMIQ19RCNHDlSZL0metZZZ7nHhw4dEueCrN06juMkJyeLfPfdd4us17G1NWvWuMd+19C1sWPHirx7926R09LSRC4tLRX5u+++q/XYei144MCBnq/X69xBfw6x9Oewa9cukVNSUkQuLCwUuaioqNZj+7kWHSf86xGJw506ABhCqQOAIZFoNJroOXiKRCL1e4IePvvsM5Hbt29/2td+/vnnIs+ePTvQ2DfeeKPIU6ZM8Xx9WVmZezxmzBhxzu9yjP7vzMnJ8Xz9yZMnRX766afd4/Xr1/saW5s6darIV111lefrt23bJvIjjzxS67H1UtDrr7/u+Xq9RPLwww+LHOSRRj/XouOEfz0ifNFoNHKqP+dOHQAModQBwBBKHQAM4ZHGOGrVqpXImzdvdo+7dOkizuXl5YU69qBBg0Su6dftjx8/7h4HfaQxNTVV5PLycpG3bt0qsn7sMOjWALG6desmcuzPwHH++1jhpk2bQhu7a9euIv/5558i68dM9a/yB1lD17yuRceJ//WIusOdOgAYQqkDgCGUOgAYwpp6iPr27SvyggULRI59XnvYsGHiXIcOHQKNrbeQ1b+SvnjxYpGPHj0q8iWXXOIe621Y/a6xd+/eXeRPPvlEZP25jBo1SuTY57v9ru3qbXzXrl0r8sqVK0Xu1KmTyHruQTRpIu+Z5s2bJ7Le4lj/boGei581dj/XouOEfz0icbhTBwBDKHUAMIRSBwBD2PsFABog9n4BgEaAUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEvV/iqHfv3iIPGTLEPdZ7s6xYsSKucxk9erTn+di9QSoqKkId+9JLLxU5MzNT5I0bN4qs90QJIi0tTeTs7GyR9R44CxcuDG1sTY+t5/b999+LvHv37tDG9roWHafur0fED3fqAGAIpQ4AhlDqAGAIa+ohSk9PF/n1118XuU+fPu6x/p5O/b2eixYt8jV2JCK3gXjjjTdE1muq+rs5r7jiCvd40qRJ4lxVVZWvuQwePFjk6dOni6y/k1R/X+bYsWPd4507d/oaW3+OXj8Dx3Gc/fv3e55/4YUXfI0fa9y4cSKPHDlSZP29oLfddpvn+8vKys54bD/XouOEfz0icbhTBwBDKHUAMIRSBwBDWFMPkV4z1d8L2a9fP/e4pKREnMvKyhLZ7xqmXiPXz1/rdWst9ntIO3fuLM5t377d11xuvvlmkXNzcz3nop9Lv//++91jv2va/fv39/y7S0tLRdafU/v27X2N50X/O8aqVatE1s+p79ixQ+Srr75aZP05evFzLTpO+NcjEoc7dQAwhFIHAEModQAwhDX1ONq7d6/ISUlJ7nF5ebk4p9fEg9qzZ4/ILVu2FLm6ulpkPZ8gjh07JrJex9Z7y+jz+vntIPTnUFlZ6fl6v8/kezl8+LDI+/btE/ngwYMi//3336GNrXldi44T/+sRdYc7dQAwhFIHAEModQAwhDX1EG3ZskXkpk3lx5uTk+Me6/2s8/PzA419/PhxkfWz4M2bNxf5yJEjIseuucc+s14bNf23fPrppyJfe+21vt7vRa9L6z1M9HPr+pn8MNX031FYWChyr169RPaz14vm51p0nPCvRyQOd+oAYAilDgCGRKLRaKLn4CkSidTvCQJAAkSj0cip/pw7dQAwhFIHAEModQAwhFIHAEModQAwhFIHAEModQAwhG0CQpSeni6y3lr1xIkTp31vx44dRdZbxtYkEpGPrJ599tki6+1ttdivcdNf8eZ3O9qg/y2x7/f7Xr0tQJMm8r6lpi0Qgs49yN/VokULkfX2t362DQhyLTpOuJ8D6hZ36gBgCKUOAIZQ6gBgCGvqIRo5cqTIevvS2O1wMzMzxbkbb7xR5BkzZvgaW6+/3n333SKvXr1aZL1uftlll7nHq1atEue2b9/uay5jx44VefHixSL//PPPIvfv31/kW265xT32+znov0uvDefl5YncoUMHkYP+HGLV9Dns2rVL5IEDB4rcqlUrkXNzc894bD/XouOEfz0icbhTBwBDKHUAMIRSBwBDWFMPkV6LHjx4sMgff/yxezx37lxx7qeffgo0dmVlpcj6meZHH31U5DZt2ogcu167b9++QHPRn8PFF18s8qJFi0R+6qmnRF6yZEmtx96xY4fIvXv3Fll/7vpr39auXVvrsbVffvlF5BEjRois163ffPNNkX/44Ydaj+3nWnSc8K9HJA536gBgCKUOAIZQ6gBgCN9RWodin5G+9957xbmioqK4jq3X1DMyMkSeNm1a3MaO3VfGcf77jHTnzp3jNrb2wQcfiLxs2TKR58+fH7exhw0bJvKUKVNEvummm+I2tqaf16/r6xHB8R2lANAIUOoAYAilDgCGsKYeor59+4qsnw3Oyclxj/X66rFjx0ReunSpr7GTkpJE1mukeh1b7/1yySWXuMd6j5Ga9iDXhg4dKnKnTp1EXrBggcijRo0SubCw0D3Wa7810f9WcP3114u8cuVKz7l1795d5CBr7LfeeqvI5eXlIhcUFIisn1vXz6kXFxef8dh+rkXHCf96RPyxpg4AjQClDgCGUOoAYAhr6gDQALGmDgCNAKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIY0TfQELElPTxf5nXfeEbl3797ucUlJiTg3ffp0kdevX+9r7EhE/sbw/fffL/ITTzzh+f7Zs2ef8thxHKeqqsrXXPS2r++9957I+uvtNm7cKPLUqVPd4927d/saOzU1VeSnn35a5OzsbJErKipEnjVrlsgLFy70NX4sve3vjBkzRG7RooXIixcvFnnmzJkil5WVnfHYfq5Fxwn/ekTicKcOAIZQ6gBgCKUOAIZQ6gBgCKUOAIZQ6gBgCKUOAIbwnHqI9u3bJ/LSpUtFnjRpknt8zz33iHMFBQWBxtZfS6jH1s+xHzhwQOTt27e7x36fS9e2bdsm8tdffy3yq6++KvLjjz8usn5m2o/y8nKRv/32W8/cr18/kVesWFHrsbV169aJ/OGHH3qOpZ8d9/NcuubnWnSc8K9HJA536gBgCKUOAIZQ6gBgCGvqIdJ7nuzfv1/k0tJS91ivcep9Qr744gtfYyclJYk8evRokV966SXP9z/yyCPu8Z9//inO/fPPP77mcuWVV4r8ww8/iHzixAmR9frtoEGD3OO8vDxfY2dkZIh8/vnnizxnzhyRN23aJPKYMWNEfuutt3yNH+u2224T+csvvxRZ72tz4YUXity9e3eRi4uLz3hsP9ei44R/PSJxuFMHAEModQAwhFIHAEMi+vnm+iYSidTvCQJAAkSj0cip/pw7dQAwhFIHAEModQAwhFIHAEModQAwhFIHAEModQAwhFIHAEModQAwhFIHAEModQAwhP3U4+jZZ58V+aqrrnKPd+3aJc49+eSTIuvvmPQrdk9yx3Gcl19+2fP1M2fOdI+XL18eaOzU1FSRX3nlFZH1d3Fu3LhR5ClTprjHQfcmuuuuu0QeP368yBUVFacd23Ecp6ioqNZjd+3aVWT9OaSlpYmck5Mj8rvvvlvrsTWva9Fx4n89ou5wpw4AhlDqAGAIW++G6KGHHhJ5+vTpIq9YscI9/v7778W5m266SWT9VWg10UseO3bs8Hz9LbfcIvJHH33kHmdnZ4tz27dv9zWX9957T+Q77rjD83xKSorI//77r3v8/PPP+xp7yJAhIn/11Vci62WGyZMnizx37lyRzz33XF/jx1q3bp3I5513nufYd955p+dccnNzz3hsP9ei44R/PSL+2HoXABoBSh0ADKHUAcAQHmkM0cKFC0Xu06ePyAcPHnSPs7KyxLnHHnss0NhHjx4Vef78+SJv2LBB5GeeeUbkhx9+2D0uKSkJNJc5c+aIvHfvXpHbtGkj8smTJ0V+//33az32L7/8IrL+HLZt2yby448/LrL+t4Yg9OeQnJws8jXXXCPyokWLRF65cmWtx/ZzLTpO+NcjEoc7dQAwhFIHAEModQAwhDX1EOlfpT5+/LjIsc8dx65hh0H/vkFpaanIBQUFIutnw8Ok19CrqqpEnjVrlsh6XTuI8vJykQ8fPizysmXLRD7rrLNCG1vTn0PLli1Fjv3dAMf57/YJQfi5Fh0n/OsRicOdOgAYQqkDgCGUOgAYwt4vcXTBBReIfOTIEfdYr6/qNU+/+61oHTt2FDk9PV1kveaekZHhHm/dulWc02viNWnWrJnI+hlpr7EdR64H79mzx9fYmt5vpXnz5iLH7jPjOI7Trl07kTdv3lzrsdu2bStyt27dRK7pc9D71JSVldV6Ll7XouPE/3pE+Nj7BQAaAUodAAyh1AHAENbUAaABYk0dABoBSh0ADKHUAcAQSh0ADKHUAcAQSh0ADKHUAcAQ9lOPI73/ytixY93jBQsWiHN6n4+KiopQx+7bt6/IrVu3Fnn9+vXucdD9VvTeL3pPk0mTJon82muvifz333+7x0F/j0J/Dtddd53Iv/32m8j6O0wPHDhQ67H13i/nnnuuyFdccYXI+ntFg/4cYnldi44T/+sRdYc7dQAwhFIHAEModQAwhL1fQjRy5EiR7733XpFj17XXrVsnzuk1ywcffNDX2MnJySJv2LBB5Pz8fJHbtGkjcpcuXdzj22+/XZzbvXu3r7k899xzIus9zfW69vLly0Ves2aNe/z+++/7GnvAgAEiv/322yJXV1eLXFJSInKvXr1EzsrK8jV+rNzcXJH1Hub9+vUTef/+/SK/9NJLIq9YseKMx/ZzLTpO+Ncj4o+9XwCgEaDUAcAQSh0ADOE59RDp54wzMzNFHjFihHus163189J+6TXQ+fPnizxjxgyR09LSRI5dg/W7hq598MEHIg8fPlzkMWPGiDx58mSR58yZU+uxCwoKRF66dKnI+nPQ392p1/+D0J/Dzp07RdbPxOt1az9r6Jqfa9Fxwr8ekTjcqQOAIZQ6ABhCqQOAIayph0g/G6z30xg2bJh7vHfvXnFuy5YtgcbWz6kfPXrU8/Xjxo0TedasWYHGj5WdnS2yXt994IEHRP74449FPnHiRK3H1s+pb9q0SeRzzjlH5EGDBnnOJQj9zLt+Hl//DIL8W4Lm51p0nPCvRyQOd+oAYAilDgCGsE1AiPSvXv/xxx8ix/5auP61/aCSkpJE7tOnj+frf/31V5GDLHloekmjsLBQ5B49eogc5v/q621+mzSR9y16C9qwfw6x9Oegt9I9efKkyKWlpaGN7edadJz4fg6ID7YJAIBGgFIHAEModQAwhDV1AGiAWFMHgEaAUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQyh1ADCEUgcAQ5omegKoH3r27OkeN20qL4sdO3aIXFVVVSdzqgtJSUki9+rV67SvLSoqivd0EiY1NVXkLl26iFxZWSlycXFxvKeEWuJOHQAModQBwBBKHQAMYU29kTrvvPNEnjt3rnus11dnzpwp8sKFC+M3sTo2dOhQkV999dXTvnbUqFEib9myJS5zSoTRo0eLPG7cOJH/+usvkSdMmOB5HonDnToAGEKpA4AhlDoAGMKaeiM1ePBgkfU6eqzhw4eLbGlNfdiwYbV+raU19auvvtrzfKdOnUTu06ePyKyp1x/cqQOAIZQ6ABhCqQOAIZQ6ABhCqQOAIZQ6ABhCqQOAITyn3khlZGSc8WuTk5M9c0VFRShzqgvNmjUTuV27dmf83g4dOogciUREjkajtZ9YHWvdurXILVu29PX+9PT0MKeDEHGnDgCGUOoAYAilDgCGROr7OmAkEqnfE2ygVq9eLXJKSsoZv3f8+PEi5+XlhTKnutC1a1eRc3Nza/136b3YG9K/LVx//fUiv/jii77ev3PnTpFHjBgReE7wJxqNRk7159ypA4AhlDoAGEKpA4AhlDoAGEKpA4AhlDoAGEKpA4Ah7P0Cx3EcZ+LEie7xoUOHxLkZM2bU9XTqTFlZmciTJk067Ws//fTTeE8nYfLz80X+3//+J3KPHj1EHjduXNznhNrhTh0ADKHUAcAQtgkAgAaIbQIAoBGg1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAzh6+yAkCxZskTkDh06+Hp/z549RW7btq3IEyZMEHn27Nm+/n40DtypA4AhlDoAGEKpA4AhrKkDIZk3b57IKSkpvt4/ceJEkQcMGBB4Tmh8uFMHAEModQAwhFIHAEModQAwhFIHAEModQAwhFIHAEN4Th0IyX333Sey371funXrFuZ00Ehxpw4AhlDqAGAIpQ4AhkSi0Wii5+CpW7dugSY4cOBA9zgrK0uca9euXZC/uk7pvbUrKytFrqqqqsvpAKG5/PLLRd6wYYPIx44dq8vpNBgTJkyInOrPuVMHAEModQAwhFIHAEPq/XPq06ZNS/QU6gW9N/fJkydFZk0dDVVmZqbI+fn5IrOm7g936gBgCKUOAIbU++UX/L9Dhw6JfPz48QTNBAjX2rVrRa6urk7QTGzgTh0ADKHUAcAQSh0ADGFNvYGoqKhI9BSAuCgqKkr0FEzhTh0ADKHUAcAQSh0ADKHUAcAQSh0ADKHUAcAQSh0ADKHUAcAQSh0ADKHUAcAQSh0ADIlEo9FEzwEAEBLu1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAyh1AHAEEodAAz5P/acRQ1OEkKjAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"env = make_atari('SpaceInvadersNoFrameskip-v0')\n",
"print(env)\n",
"print(env.observation_space)\n",
"\n",
"obs = env.reset()\n",
"obs = np.array(obs)\n",
"obs_shape = obs.shape\n",
"print(f'observation shape: {obs_shape}')\n",
"env_actions = env.unwrapped.get_action_meanings()\n",
"print(f'actions: {env_actions}')\n",
"show_observation(obs[3], size=6, cmap='gray')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### DQN Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The DQN model used in the paper is surprisingly simple. It has just 3 conv layers followed by 2 FC layers.\n",
"\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"import torch.nn as nn\n",
"\n",
"class DQN(nn.Module):\n",
" def __init__(self, in_shape, n_actions):\n",
" super().__init__()\n",
"\n",
" self.conv = nn.Sequential(\n",
" nn.Conv2d(in_shape[0], 32, kernel_size=8, stride=4),\n",
" nn.ReLU(),\n",
" nn.Conv2d(32, 64, kernel_size=4, stride=2),\n",
" nn.ReLU(),\n",
" nn.Conv2d(64, 64, kernel_size=3, stride=1),\n",
" nn.ReLU()\n",
" )\n",
"\n",
" n_conv_features = self._calc_num_conv_features(in_shape)\n",
" self.fc = nn.Sequential(\n",
" nn.Linear(n_conv_features, 512),\n",
" nn.ReLU(),\n",
" nn.Linear(512, n_actions)\n",
" )\n",
"\n",
" def _calc_num_conv_features(self, in_shape):\n",
" x = torch.zeros(1, *in_shape)\n",
" out_shape = self.conv(x).shape\n",
" return int(np.prod(out_shape))\n",
"\n",
" def forward(self, x):\n",
" features = self.conv(x)\n",
" features = features.view(x.shape[0], -1)\n",
" return self.fc(features)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"As always, lets make sure forward pass works."
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DQN(\n",
" (conv): Sequential(\n",
" (0): Conv2d(4, 32, kernel_size=(8, 8), stride=(4, 4))\n",
" (1): ReLU()\n",
" (2): Conv2d(32, 64, kernel_size=(4, 4), stride=(2, 2))\n",
" (3): ReLU()\n",
" (4): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1))\n",
" (5): ReLU()\n",
" )\n",
" (fc): Sequential(\n",
" (0): Linear(in_features=3136, out_features=512, bias=True)\n",
" (1): ReLU()\n",
" (2): Linear(in_features=512, out_features=6, bias=True)\n",
" )\n",
")\n"
]
}
],
"source": [
"model = DQN(obs.shape, len(env_actions)).to(device)\n",
"print(model)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([[ 0.0202, -0.0295, -0.0125, -0.0270, 0.0240, -0.0287]],\n",
" grad_fn=)"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x0 = torch.tensor(obs, device=device).unsqueeze(0)\n",
"model(x0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Experience replay buffer"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"from collections import deque\n",
"class ExperienceReplayBuffer(object):\n",
" def __init__(self, maxlen, device):\n",
" # dequeue automatically evicts old entries if maxlen reached\n",
" self.buffer = deque(maxlen=maxlen) \n",
" self.device = device \n",
" def __len__(self):\n",
" return len(self.buffer) \n",
" def __getitem__(self, i):\n",
" return self.buffer.__getitem__(i)\n",
"\n",
" def append(self, state, action, reward, is_done, new_state):\n",
" # note: when in buffer, copy to main RAM\n",
" self.buffer.append((state.cpu(), action, reward, is_done, new_state.cpu()))\n",
"\n",
" def sample(self, batch_size):\n",
" # Sample batch_size random indices from the buffer\n",
" ii = np.random.choice(len(self.buffer), batch_size, replace=False)\n",
" \n",
" # Batches of: state, action, reward, done?, next_state\n",
" s, a, r, d, n = zip(*[self.buffer[i] for i in ii])\n",
" \n",
" return (\n",
" torch.stack(s, dim=0).to(self.device),\n",
" torch.tensor(a, dtype=torch.long).to(self.device),\n",
" torch.tensor(r, dtype=torch.float32).to(self.device),\n",
" torch.tensor(d, dtype=torch.uint8).to(self.device),\n",
" torch.stack(n).to(self.device)\n",
" )\n",
" \n",
" def __repr__(self):\n",
" return self.buffer.__repr__()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Agent"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"class DQNAgent:\n",
" def __init__(self, env, q_net, replay_buffer, device):\n",
" self.env = env; self.q_net = q_net; self.replay_buffer = replay_buffer; self.device = device\n",
" self._reset()\n",
" def _reset(self):\n",
" self.curr_state = torch.tensor(env.reset(), device=self.device)\n",
" self.curr_episode_reward = 0.0\n",
" \n",
" def step(self, eps=0.0):\n",
" # With probability eps, select a random action\n",
" if np.random.random() < eps:\n",
" action = env.action_space.sample()\n",
" else:\n",
" with torch.no_grad(): # Do a forward pass through the q_net to get q(s,a) for all a.\n",
" q_s = self.q_net(self.curr_state.unsqueeze(0))\n",
" _, action = torch.max(q_s, dim=1) # Select action with highest value of q(s,a).\n",
" action = int(action.item())\n",
"\n",
" # Perform the selected action on the environment to get a reward and a new observation.\n",
" next_state, reward, is_done, _ = self.env.step(action)\n",
" next_state = torch.tensor(next_state, device=self.device)\n",
" self.curr_episode_reward += reward\n",
"\n",
" # Save this experience in the replay buffer for future training.\n",
" self.replay_buffer.append(self.curr_state, action, reward, is_done, next_state)\n",
" self.curr_state = next_state\n",
" \n",
" # Check if an episode ended. If so, reset and return total reward.\n",
" if not is_done: return None\n",
" episode_reward = self.curr_episode_reward\n",
" self._reset()\n",
" return episode_reward"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"A quick sanity check for our agent:"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"buff_len: 158\n",
"reward: 6.0\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"agent = DQNAgent(env, model, ExperienceReplayBuffer(1000, device), device)\n",
"\n",
"for _ in range(1000):\n",
" state = agent.curr_state\n",
" reward = agent.step(eps=0.5)\n",
" if reward is not None:\n",
" break\n",
"\n",
"print(f'buff_len: {len(agent.replay_buffer)}')\n",
"print(f'reward: {reward}')\n",
"show_observation(state.squeeze()[0].cpu().numpy(), cmap='gray')"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([2, 4, 84, 84]) torch.float32\n",
"torch.Size([2]) torch.int64\n",
"torch.Size([2]) torch.float32\n",
"torch.Size([2]) torch.uint8\n",
"torch.Size([2, 4, 84, 84]) torch.float32\n"
]
}
],
"source": [
"s, a, r, d, n = agent.replay_buffer.sample(2)\n",
"\n",
"for x in (s,a,r,d,n):\n",
" print(x.shape, x.dtype)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Loss function"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Recall that our point-wise loss is\n",
"$$\n",
"\\ell_i(\\Theta) = \\left(y^i-q_\\Theta(s^i,a^i)\\right)^2,\n",
"$$\n",
"where the label, $y^i$, is:\n",
"$$\n",
"y^i =\n",
"\\begin{cases}\n",
"r^i, & {s'}^i \\in \\cset{S}_T \\\\\n",
"r^i + \\gamma \\max_{a\\in\\cset{A}} q_{\\Theta^-}({s'}^i,a) , & {s'}^i \\in \\cset{S}\\setminus\\cset{S}_T\n",
"\\end{cases}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"class DQNLoss(nn.Module):\n",
" def __init__(self, q_net, q_target_net, gamma):\n",
" super().__init__()\n",
" self.q_net = q_net\n",
" self.q_target_net = q_target_net\n",
" self.gamma = gamma\n",
" \n",
" def forward(self, s, a, r, d, n):\n",
" \"\"\"Input is batches of: state, action, reward, done?, next_state\"\"\"\n",
" # First, calculate our PREDICTED action-value q(s,a)\n",
" # for the initial state and the action that was performed\n",
" q_s = self.q_net(s)\n",
" q_sa_predicted = q_s.gather(dim=1, index=a.view(-1, 1)) # select performed action\n",
" \n",
" # Now, we need to calculate our TARGET action-value. This is based on the\n",
" # maximal action value of the next state, and uses the target network.\n",
" with torch.no_grad():\n",
" q_n = self.q_target_net(n)\n",
" q_na_max, _ = torch.max(q_n, dim=1) # select maximal action\n",
" q_na_max[d] = 0. # set zero action-value for terminal states\n",
" q_sa_target = r + self.gamma * q_na_max # Bellman equation\n",
" \n",
" # The loss is just an MSE between predictions and targets\n",
" return nn.functional.mse_loss(q_sa_predicted, q_sa_target)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Putting it all together"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"ENV_NAME = \"SpaceInvadersNoFrameskip-v0\"\n",
"MEAN_REWARD_BOUND = 15 # remember this is clipped-reward\n",
"MEAN_NUM_EPISODES = 100\n",
"MAX_EPISODES = 50 # 50 just for demo\n",
"\n",
"# Note: Params based on the paper.\n",
"\n",
"LEARNING_RATE = 2.5e-4 \n",
"GRAD_MOMENTUM = 0.95\n",
"GRADSQ_MOMENTUM = 0.95\n",
"RMSPROP_EPS = 0.01\n",
"BATCH_SIZE = 32 \n",
"\n",
"GAMMA = 0.99 \n",
"SYNC_TARGET_STEPS = 5*(10**3) \n",
"REPLAY_SIZE = 10**6 \n",
"REPLAY_START_SIZE = 5*(10**4) \n",
"EPSILON_DECAY_LAST_STEP = 10**6\n",
"EPSILON_START = 1.0 \n",
"EPSILON_FINAL = 0.1 \n",
"\n",
"MONITOR_DIR = 'out/mon1/'\n",
"MODEL_CHECKPOINT = os.path.join('out/models/', f'{ENV_NAME}-1-chkpt.dat')\n",
"os.makedirs(os.path.dirname(MODEL_CHECKPOINT), exist_ok=True)"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"def train_dqn(q_net, q_target_net, replay_buffer, agent, loss_fn, optimizer):\n",
" episode_rewards = deque(maxlen=MEAN_NUM_EPISODES)\n",
" best_mean_reward = -math.inf\n",
" step_idx, prev_step_idx, episode_num = 0, 0, 0\n",
" timestamp = time.time()\n",
" while True:\n",
" step_idx += 1\n",
" eps = max(EPSILON_FINAL, EPSILON_START - step_idx / EPSILON_DECAY_LAST_STEP)\n",
" \n",
" reward = agent.step(eps)\n",
" if reward is not None: # (i.e., current Episode is done)\n",
" episode_num += 1\n",
" episode_rewards.append(reward)\n",
" mean_reward = np.mean(episode_rewards)\n",
" \n",
" episode_time = time.time() - timestamp\n",
" timestamp = time.time()\n",
" steps_per_sec = (step_idx - prev_step_idx) / episode_time\n",
" prev_step_idx = step_idx\n",
"\n",
" if episode_num % 10 == 0:\n",
" print(f'[st#{step_idx} ep#{episode_num}] '\n",
" f'reward={reward:2.2f}, mean_reward={mean_reward:2.2f}, eps={eps:.2f} '\n",
" f'({episode_time:2.3f}sec, {steps_per_sec:3.1f} steps/sec).')\n",
" if mean_reward > best_mean_reward:\n",
" print(f'*** New best_mean_reward={mean_reward:.2f}, was {best_mean_reward:.2f}, saving model to {MODEL_CHECKPOINT}')\n",
" torch.save(q_net.state_dict(), MODEL_CHECKPOINT)\n",
" best_mean_reward = mean_reward\n",
" eval_dqn(env, q_net)\n",
" if mean_reward > MEAN_REWARD_BOUND:\n",
" print(f\"*** Done, total steps={step_idx}\")\n",
" break\n",
" if episode_num >= MAX_EPISODES:\n",
" print(f\"*** MAX_EPISODES reached, stopping.\")\n",
" break\n",
"\n",
" # Skip training until we have enough data in our replay buffer\n",
" if len(replay_buffer) < REPLAY_START_SIZE:\n",
" continue\n",
"\n",
" # Copy model to target model periodically\n",
" if step_idx % SYNC_TARGET_STEPS == 0:\n",
" q_target_net.load_state_dict(q_net.state_dict())\n",
"\n",
" # Sample a batch of experiences, calculate their loss and train the network.\n",
" optimizer.zero_grad()\n",
" s,a,r,d,n = replay_buffer.sample(BATCH_SIZE)\n",
" loss = loss_fn(s, a, r, d, n)\n",
" loss.backward()\n",
" optimizer.step()"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"def eval_dqn(env, q_net):\n",
" print(f'*** Evaluating model... ', end='')\n",
" env = gym.wrappers.Monitor(env, MONITOR_DIR, force=True, resume=True)\n",
" env.reset()\n",
" agent = DQNAgent(env, q_net, ExperienceReplayBuffer(0, device), device)\n",
" steps = 0\n",
" with torch.no_grad():\n",
" while True:\n",
" ep_reward = agent.step(eps=0.0) # no random actions\n",
" if ep_reward is not None: break\n",
" steps += 1\n",
" print(f'Episode ran {steps} steps, reward={ep_reward}')"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {
"scrolled": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"*** New best_mean_reward=4.00, was -inf, saving model to out/models/SpaceInvadersNoFrameskip-v0-1-chkpt.dat\n",
"*** Evaluating model... Episode ran 222 steps, reward=2.0\n",
"*** New best_mean_reward=4.44, was 4.00, saving model to out/models/SpaceInvadersNoFrameskip-v0-1-chkpt.dat\n",
"*** Evaluating model... Episode ran 273 steps, reward=2.0\n",
"[st#2073 ep#10] reward=3.00, mean_reward=4.30, eps=1.00 (1.017sec, 110.2 steps/sec).\n",
"[st#4422 ep#20] reward=8.00, mean_reward=4.40, eps=1.00 (0.359sec, 886.6 steps/sec).\n",
"[st#6250 ep#30] reward=0.00, mean_reward=4.10, eps=0.99 (0.179sec, 883.5 steps/sec).\n",
"[st#8377 ep#40] reward=0.00, mean_reward=4.00, eps=0.99 (0.142sec, 782.5 steps/sec).\n",
"[st#10535 ep#50] reward=3.00, mean_reward=4.18, eps=0.99 (0.085sec, 836.7 steps/sec).\n",
"*** MAX_EPISODES reached, stopping.\n"
]
}
],
"source": [
"import torch.optim as optim\n",
"\n",
"with make_atari(ENV_NAME) as env:\n",
" obs_shape = env.observation_space.shape\n",
" n_actions = env.action_space.n\n",
" \n",
" q_net = DQN(obs_shape, n_actions).to(device)\n",
" q_target_net = DQN(obs_shape, n_actions).to(device)\n",
" \n",
" replay_buffer = ExperienceReplayBuffer(REPLAY_SIZE, device)\n",
" agent = DQNAgent(env, q_net, replay_buffer, device)\n",
" \n",
" loss_fn = DQNLoss(q_net, q_target_net, GAMMA)\n",
" optimizer = optim.RMSprop(q_net.parameters(), lr=LEARNING_RATE, alpha=GRADSQ_MOMENTUM, momentum=GRAD_MOMENTUM, eps=RMSPROP_EPS)\n",
" \n",
" train_dqn(q_net, q_target_net, replay_buffer, agent, loss_fn, optimizer)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Results (from the paper)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Summary & limitations"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"We have implemented $q$-learning (almost) from scratch and with it many inportant RL concepts: agents, environments, experience replay, creating samples based on the Bellman equation and more.\n",
"We even used some tricks from the paper, like preprocessing and stacking the images, using different a different network for the labels, $\\epsilon$-greedy training, etc."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"However, as usual, don't expect SotA results with this model. While it should produce good results given enough time, many more tricks and improvements exist in this context. See e.g. [this](https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/viewFile/17204/16680) DeepMind paper from 2017."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"To conclude,\n",
"\n",
" \"We were supposed to make AI do all the work and we play games\n",
" but we do all the work and the AI is playing games!\"\n",
" \n",
" - Andrej Karpathy"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"**Image credits**\n",
"\n",
"Some images in this tutorial were taken and/or adapted from:\n",
"\n",
"- David Silver's RL course, http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html\n",
"- Mnih et al., Human-level control through deep reinforcement learning, Nature, 2015.\n",
"- Max Lapan, Deep Reinforcement Learning Hands-On, Packt, 2018.\n",
"- Daniel Seita, https://danieltakeshi.github.io/2016/11/25/frame-skipping-and-preprocessing-for-deep-q-networks-on-atari-2600-games/"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}