still simulated ok and actual rnn not
[notebooks.git] / fmda_kf_rnn_with_output.ipynb
blob6b38531bca834ca172f2a94158f22feec84d506b
2   "cells": [
3     {
4       "cell_type": "markdown",
5       "metadata": {
6         "id": "khOTxJsYc91W"
7       },
8       "source": [
9         "# Kalman Filtering and Recurrent Neural Networks for Fuel Moisture\n",
10         "## Jan Mandel, University of Colorado Denver\n"
11       ]
12     },
13     {
14       "cell_type": "markdown",
15       "metadata": {
16         "id": "sXaqfI-EdCEk"
17       },
18       "source": [
19         "## Abstract"
20       ]
21     },
22     {
23       "cell_type": "markdown",
24       "metadata": {
25         "id": "ZbtSiYm4dF7B"
26       },
27       "source": [
28         "''Fuel moisture is an important factor of the spread of wildland fires. Some weather stations have fuel moisture sensors and data are available online. We review a simple model of fuel moisture from atmospheric conditions, and show how to adjust the model using the weather station data."
29       ]
30     },
31     {
32       "cell_type": "markdown",
33       "metadata": {
34         "id": "eZ6dfHlZ63j1"
35       },
36       "source": [
37         "## Table of contents"
38       ]
39     },
40     {
41       "cell_type": "markdown",
42       "metadata": {
43         "id": "WHIgN2uZ689b"
44       },
45       "source": [
46         "1 Introduction\n",
47         "\n",
48         "2 Background\n",
49         "\n",
50         "2.1 Imports\n",
51         "\n",
52         "2.2 Kalman filter\n",
53         "\n",
54         "2.2.1 Overview\n",
55         "\n",
56         "2.2.2 Formulation\n",
57         "\n",
58         "2.2.3 A Kalman filter tester\n",
59         "\n",
60         "2.3 Fuel moisture model\n",
61         "\n",
62         "2.3.1 A simple time lag model\n",
63         "\n",
64         "2.3.1 Fuel moisture model with drying equilibrium, wetting equilibrium, and rain\n",
65         "\n",
66         "3 Methods\n",
67         "\n",
68         "3.1 Kalman filter demonstration on the simple model\n",
69         "\n",
70         "3.1.1 Creating synthetic data\n",
71         "\n",
72         "3.1.2 Running the Kalman filter\n",
73         "\n",
74         "3.2 Acquisition and preprocessing of real data\n",
75         "\n",
76         "3.2.1 Acquisition of fuel moisture observations\n",
77         "\n",
78         "3.2.2 Acquisition of weather data\n",
79         "\n",
80         "3.2.3 Preprocessing and visualization of the weather data\n",
81         "\n",
82         "4 Results\n",
83         "\n",
84         "4.1 Kalman filter with fuel moisture observations, followed by forecasting\n",
85         "\n",
86         "4.2 Model with an augmented state\n",
87         "\n",
88         "4.3 Kalman filter on the augmented model\n",
89         "\n",
90         "4.4 A comment on the information flow in the Kalman filter and in neural networks\n",
91         "\n",
92         "5. Conclusion\n",
93         "\n",
94         "Contributions of Authors\n",
95         "\n",
96         "Acknowledgements\n",
97         "\n",
98         "References\n",
99         "\n",
100         "\n",
101         "\n",
102         "\n",
103         "\n",
104         "\n",
105         "\n"
106       ]
107     },
108     {
109       "cell_type": "markdown",
110       "metadata": {
111         "id": "ZFafUPCTO1N1"
112       },
113       "source": [
114         "## 1 Introduction"
115       ]
116     },
117     {
118       "cell_type": "markdown",
119       "metadata": {
120         "id": "4_RcdWybPFks"
121       },
122       "source": [
123         "The Kalman filter is at the foundation of many technologies in daily use, from GPS to weather forecasting. No model is completely accurate. Think space navigation: the movement of a Apollo 13 between the moon and the earth, subject to gravitational forces and propulsion, with the position ascertained by visual measurements. No matter how accurate the model of spacecraft motion is, the measurements are always burdened with noise. The idea of Kalman filter is to evolve a quantification of the of the state (here, positin and velocity of the spacecraft) in the form of a covariance matrix, and, using an estimate of the uncertainty of the data, adjust the state to split the difference every time measurements are taken. \n",
124         "\n",
125         "Here, we use the Kalman filter to estimate the evolution of fuel (dead wood) moisture content from a simple theoretical model, adjusting the state of the model hourly for measurements from fuel moisture a sensor in a wood stick exposed to the elements. This is needed for forecasting of wildfire progress; for this purpose, we also want to have the filter adjust the model from the data, so that it gives more accurate data for future when we only have hourly weather forecast but no actual data - because the future has not happened yet. "
126       ]
127     },
128     {
129       "cell_type": "markdown",
130       "metadata": {
131         "id": "M2kbwDPBTB7A"
132       },
133       "source": [
134         "## 2 Background"
135       ]
136     },
137     {
138       "cell_type": "markdown",
139       "metadata": {
140         "id": "ar1BbXac49hO"
141       },
142       "source": [
143         "In this section, we take care of preliminaries: we install some packages we need, and then proceed with the Kalman filter."
144       ]
145     },
146     {
147       "cell_type": "markdown",
148       "metadata": {
149         "id": "_5F5CuRqc91X"
150       },
151       "source": [
152         "### 2.1 Imports"
153       ]
154     },
155     {
156       "cell_type": "markdown",
157       "metadata": {
158         "id": "K6sWUMf0c91Y"
159       },
160       "source": [
161         "We may need the pygrib package to read weather data, but pygrib requires current numpy while google colab is using an old numpy version for compatibility with tensorflow. We will upgrade numpy and restart the runtime then the notebook will need to be run again. If numpy is current, we just download and import packages we need."
162       ]
163     },
164     {
165       "cell_type": "markdown",
166       "metadata": {
167         "id": "X9rvlymMZdJg"
168       },
169       "source": [
170         "### 2.2 Kalman filter"
171       ]
172     },
173     {
174       "cell_type": "markdown",
175       "metadata": {
176         "id": "x5E2UE3F5gf2"
177       },
178       "source": [
179         "#### 2.2.1 Overview"
180       ]
181     },
182     {
183       "cell_type": "markdown",
184       "metadata": {
185         "id": "NPgTHlCLAlA-"
186       },
187       "source": [
188         "The Kalman filter provides an estimate $u$ of the time evolution of some unknown process, called \"nature\" or \"truth\". We do not know with certainty what the nature is, but we can observe it at regular intervals (steps) with some error. In each step, model $F$ advances the model state $u$ in time, $ u \\leftarrow F(u)$, and attempts to reconcile the state with an observation $d$ of the true state, so $u \\approx d$. The filter modifies the model state $u$ to balance the uncertainty in the model and the data (this is called *analysis*) and the cycle continues. For that purpose, the filter evolves also an estimate of the uncertainly of the model.\n",
189         "\n",
190         "More generally, instead of $u \\approx d$, only a part of the state is observed, and $Hu \\approx d$ where $H$ is a matrix, or observation function. Basically, $Hu$ is what the data would be if the model was completely accurate. \n",
191         "\n",
192         "See Kalman (1960) for the original publication, Kalnay (2003) for a gentle introduction, and the [Wikipedia article](https://en.wikipedia.org/wiki/Extended_Kalman_filter)."
193       ]
194     },
195     {
196       "cell_type": "markdown",
197       "metadata": {
198         "id": "y6j34L5s5pEL"
199       },
200       "source": [
201         "#### 2.2.2 Formulation\n",
202         "\n",
203         "---\n",
204         "\n"
205       ]
206     },
207     {
208       "cell_type": "markdown",
209       "metadata": {
210         "id": "b3GZW5vP5_o8"
211       },
212       "source": [
213         "We present the Kalman filter in perhaps the most used form, as extended to nonlinear models.\n",
214         " Consider a discrete time model of some natural\n",
215         "process. At time step $k$, the model has state $u_{k}\\in\\mathbb{R}^{n}$, which\n",
216         "can be approximated from the previous step $u_{k-1}$ by applying the model\n",
217         "$\\mathcal{M}$ to get a forecast $u_{k}^{f}=\\mathcal{M}\\left(  u_{k-1}\\right)\n",
218         "$. We model uncertainty in the model itself by adding normally distributed\n",
219         "noise with mean zero and covariance $Q$ to the uncertainty of $u_{k}^{f}$. We\n",
220         "also need to estimate now the uncertainty in the previous state $u_{k-1}$\n",
221         "propagates to the uncertainty of the forecast $u_{k}^{f}$. So, assume that the\n",
222         "model is differentiable and quantify the uncertainty of the state by a\n",
223         "covariance matrix. That is,  assume that at step $k-1$, the state has\n",
224         "(approximately) normal distribution with mean $u_{k-1}$ and covariance\n",
225         "$P_{k-1}$. Using the Taylor expansion of order $1$ of the model operator at\n",
226         "$u_{k-1}$, $\\mathcal{M}\\left(  u\\right)  \\approx\\mathcal{M}\\left(\n",
227         "u_{k-1}\\right)  +\\mathcal{M}^{\\prime}\\left(  u_{k-1}\\right)  \\left(\n",
228         "u-u_{k-1}\\right)  $, where $\\mathcal{M}^{\\prime}\\left(  u_{k-1}\\right)  $ is\n",
229         "the Jacobian matrix of $\\mathcal{M}$ at $u_{k-1}$. It can be shown that the\n",
230         "forecast has then (approximately)\\ normal distribution with mean and\n",
231         "covariance\n",
232         "$$\n",
233         "u_{k}^{f}=\\mathcal{M}\\left(  u_{k-1}\\right)  ,\\ P_{k}^{f}=\\mathcal{M}\\left(\n",
234         "u_{k-1}\\right)  P_{k-1}\\mathcal{M}^{\\prime}\\left(  u_{k-1}\\right)  +Q\n",
235         "$$\n",
236         "At time $k$, we also have an observation $d_{k}\\approx Hu_{k}$, where $H$ is a\n",
237         "given observation operator, and we want to find $u_{k}$ so that both\n",
238         "$$\n",
239         "u_{k}\\approx u_{k}^{f}\\text{ and }d_{k}\\approx Hu_{k}.\n",
240         "$$\n",
241         "We quantify the uncertainly of the error of observation $d_{k}$ by a covariance\n",
242         "matrix $R$: assume that the observation error has normal probability\n",
243         "distribution with a known covariance $R$. Then, the likelihood of state $u$ is\n",
244         "proportional to $e^{-\\left\\Vert d_{k}-Hu\\right\\Vert _{R^{-1}}^{2}/2}$, where\n",
245         "we used the notation for the norm $\\left\\Vert v\\right\\Vert _{A}%\n",
246         "=\\left(v^{\\top}Av\\right)^{1/2}$ induced by a positive definite matrix $A$. Similarly, we quantify the\n",
247         "uncertainty of the state by a covariance matrix $P_{k}$. That is, the forecast\n",
248         "state has (approximately) normal distribution with mean $u_{k}^{f}$  and covariance\n",
249         "$P_{k}^{f}$. From the Bayes theorem of statistics, the probability distribution\n",
250         "of the state after taking the data into account has density\n",
251         "$$\n",
252         "p_{k}\\left(  u\\right) \\propto e^\\frac{-\\left\\Vert d_{k}\n",
253         "-Hu\\right\\Vert_{R^{-1}}^{2}}{2}e^\\frac{-\\left\\Vert u-u_{k}^{f}\\right\\Vert _{\n",
254         "{P_{k}^f}^{-1}  }^{2}}{2}%\n",
255         "$$\n",
256         "where $\\propto$ means proportional.\n",
257         "Note that the probability density at $u$ is maximal when $\\left\\Vert\n",
258         "d_{k}-Hu\\right\\Vert _{R^{-1}}^{2}+\\left\\Vert u-u_{k}\\right\\Vert _{{P_{k}^{f}}^{-1}}^{2}$\n",
259         " is minimal, which quantifies the statement that $d_{k}\\approx\n",
260         "Hu_{k}$ and $u\\approx u_{k}^{f}$.  By a direct computation completing the\n",
261         "square and using the Sherman-Morrison-Woodbury formula, \n",
262         "$$p_{k}\\left(\n",
263         "\t\tu\n",
264         "\t   \\right) \\propto \n",
265         "e^{-\\frac{\n",
266         "\t\\left\\Vert u-u_{k\n",
267         "\t         }\n",
268         "\t\\right\\Vert_\n",
269         "\t\t{P_{k\n",
270         "\t\t      }^{-1}\n",
271         "\t\t}^{2}\n",
272         "\t}\n",
273         "\t{2}},\n",
274         "$$ \n",
275         "which is the density of the normal distribution with the mean\n",
276         "$$\n",
277         "u_{k}^{f}=u_{k}^{f}+K_{k}(d-Hu_{k}^{f}),\\ \\text{where }K_{k}=P_{k}%\n",
278         "^{f}H^{\\mathrm{T}}(HP_{k}^{f}H^{\\mathrm{T}}+R)^{-1}%\n",
279         "$$\n",
280         "and covariance\n",
281         "$$\n",
282         "P_{k}=\\left(  \\left(  P_{k}^{f}\\right)  ^{-1}+H^{\\mathrm{T}}R^{-1}H\\right)\n",
283         "^{-1}=(I-KH)P_{k}^{f}.\n",
284         "$$\n",
285         "\n",
286         "These are the equations of the extended Kalman filter. The original Kalman (1960) filter was\n",
287         "formulated for a linear process. The extension to the\n",
288         "nonlinear case made broad array of applications possible, including the Apollo spacecraft naviation (McGee and Schmidt, 1966),  and is\n",
289         "still a de-facto standard in navigation and GPS.\n"
290       ]
291     },
292     {
293       "cell_type": "code",
294       "execution_count": null,
295       "metadata": {
296         "id": "-bvUtJ_OLwQA"
297       },
298       "outputs": [],
299       "source": [
300         "import numpy as np\n",
301         "def ext_kf(u,P,F,Q=0,d=None,H=None,R=None):\n",
302         "  \"\"\"\n",
303         "  One step of the extended Kalman filter. \n",
304         "  If there is no data, only advance in time.\n",
305         "  :param u:   the state vector, shape n\n",
306         "  :param P:   the state covariance, shape (n,n)\n",
307         "  :param F:   the model function, args vector u, returns F(u) and Jacobian J(u)\n",
308         "  :param Q:   the process model noise covariance, shape (n,n)\n",
309         "  :param d:   data vector, shape (m). If none, only advance in time\n",
310         "  :param H:   observation matrix, shape (m,n)\n",
311         "  :param R:   data error covariance, shape (n,n)\n",
312         "  :return ua: the analysis state vector, shape (n)\n",
313         "  :return Pa: the analysis covariance matrix, shape (n,n)\n",
314         "  \"\"\"\n",
315         "  def d2(a):\n",
316         "    return np.atleast_2d(a) # convert to at least 2d array\n",
317         "\n",
318         "  def d1(a):\n",
319         "    return np.atleast_1d(a) # convert to at least 1d array\n",
320         "\n",
321         "  # forecast\n",
322         "  uf, J  = F(u)          # advance the model state in time and get the Jacobian\n",
323         "  uf = d1(uf)            # if scalar, make state a 1D array\n",
324         "  J = d2(J)              # if scalar, make jacobian a 2D array\n",
325         "  P = d2(P)              # if scalar, make Jacobian as 2D array\n",
326         "  Pf  = d2(J.T @ P) @ J + Q  # advance the state covariance Pf = J' * P * J + Q\n",
327         "  # analysis\n",
328         "  if d is None or not d.size :  # no data, no analysis\n",
329         "    return uf, Pf\n",
330         "  # K = P H' * inverse(H * P * H' + R) = (inverse(H * P * H' + R)*(H P))'\n",
331         "  H = d2(H)\n",
332         "  HP  = d2(H @ P)            # precompute a part used twice  \n",
333         "  K   = d2(np.linalg.solve( d2(HP @ H.T) + R, HP)).T  # Kalman gain\n",
334         "  # print('H',H)\n",
335         "  # print('K',K)\n",
336         "  res = d1(H @ d1(uf) - d)          # res = H*uf - d\n",
337         "  ua = uf - K @ res # analysis mean uf - K*res\n",
338         "  Pa = Pf - K @ d2(H @ P)        # analysis covariance\n",
339         "  return ua, d2(Pa)\n"
340       ]
341     },
342     {
343       "cell_type": "markdown",
344       "metadata": {
345         "id": "Uvsbbv2XZ2Hd"
346       },
347       "source": [
348         "#### 2.2.3 A Kalman filter tester"
349       ]
350     },
351     {
352       "cell_type": "markdown",
353       "metadata": {
354         "id": "gcmGBqPOU1e5"
355       },
356       "source": [
357         "It is a very good idea to make write a simple tester for every piece of code. How else would we know it actually works, and that something basic did not get broken inadvertently, perhaps as a side effect of changing something else? A simple tester may save a great deal of time trying to debug cryptic errors later. And, what better place for a tester that right after the code it is testing so that it gets run every time?"
358       ]
359     },
360     {
361       "cell_type": "code",
362       "execution_count": null,
363       "metadata": {
364         "id": "OsOqvQk6ZXZV"
365       },
366       "outputs": [],
367       "source": [
368         "# a basic ext_kf test\n",
369         "import numpy as np\n",
370         "u = [1,\n",
371         "     2]\n",
372         "P = [[2 , -1],\n",
373         "    [-1 , 2]]\n",
374         "A = [ [1 ,2],\n",
375         "      [3 ,4]]\n",
376         "u = np.array(u)      \n",
377         "Q = np.array([[1,0],[0,1]])\n",
378         "A = np.array(A)\n",
379         "def fun(u):\n",
380         "  return A @ u, A\n",
381         "F = lambda u: fun(u)\n",
382         "H = [[1, 0],\n",
383         "     [0, 1]]\n",
384         "d = [2,\n",
385         "    3]\n",
386         "R = [[2, 0],\n",
387         "    [0, 2]]\n",
388         "H = np.array(H)      \n",
389         "d = np.array(d)\n",
390         "R = np.array(R)\n",
391         "ua,Pa = ext_kf(u,P,F,Q)\n",
392         "print('ua=',ua)\n",
393         "print('Pa=',Pa)\n",
394         "ua,Pa = ext_kf(u,P,F,Q,d,H,R)\n",
395         "print('ua=',ua)\n",
396         "print('Pa=',Pa)\n"
397       ]
398     },
399     {
400       "cell_type": "markdown",
401       "metadata": {
402         "id": "A9ZpmNcdRpmp"
403       },
404       "source": [
405         "### 2.3  Fuel moisture models\n",
406         "\n",
407         "\n"
408       ]
409     },
410     {
411       "cell_type": "markdown",
412       "metadata": {
413         "id": "eZL8gN7ISGVh"
414       },
415       "source": [
416         "#### 2.3.1 A simple fuel moisture model"
417       ]
418     },
419     {
420       "cell_type": "markdown",
421       "metadata": {
422         "id": "1XvOC4kYSQgH"
423       },
424       "source": [
425         "First consider a simplified fuel moisture model without considering the effect of rain.\n",
426         "The evolution of fuel moisture content $m(t)$ is modeled by the time-lag differential equation on interval $\\left[\n",
427         "t_{0},t_{1}\\right]  $,\n",
428         "$$\n",
429         "\\frac{dm}{dt}=\\frac{E-m(t)}{T},\\quad m(t_{0})=m_{0}.\n",
430         "$$\n",
431         "where the initial fuel moisture content $m_{0}=m\\left(  t_{0}\\right)  $ is the\n",
432         "input, and $m_{1}=m(t_{1})$ is the output. Tnus, $m_1=F(m_0)$. The parameters of the model are the\n",
433         "fuel moisture equilibrium $E$, assumed to be constant over the interval $\\left[\n",
434         "t_{0},t_{1}\\right]  $, NS the characteristic decay time $T$. \n",
435         "\n",
436         "We can build the general model later by calling this simple model with different\n",
437         "equilibria and time constants (drying, wetting, rain).\n",
438         "\n",
439         "Since $E$ is constant in time, the solution can be found\n",
440         "analytically,\n",
441         "$$\n",
442         "m\\left(  t\\right)  =E+\\left(  m_{0}-E\\right)  e^{-t/T}%\n",
443         "$$\n",
444         "For convenience, we use $T_{1}=1/T$ instead of $T$, and the model becomes\n",
445         "$$\n",
446         "m_{1}=E+\\left(  m_{0}-E\\right)  e^{-\\left(  t_{1}-t_{0}\\right)  T_{1}}%\n",
447         "$$\n",
448         "In the extended Kalman filter, we will need the partial derivatives of $m_{1}$\n",
449         "with respect to the input and the parameters. Compute\n",
450         "$$\n",
451         "\\frac{dm_{1}}{d_{m0}}=e^{-\\left(  t_{1}-t_{0}\\right)  T_{1}}\n",
452         "$$\n",
453         "$$\n",
454         "\\frac{dm_{1}}{dE}=1-e^{-\\left(  t_{1}-t_{0}\\right)  T_{1}}\n",
455         "$$\n",
456         "$$\n",
457         "\\frac{dm_{1}}{dT_{1}}=-\\left(  m_{0}-E\\right)  \\left(  t_{1}-t_{0}\\right)\n",
458         "e^{-\\left(  t_{1}-t_{0}\\right)  T_{1}}\n",
459         "$$\n",
460         "At the moment, we need only ${dm_{1}}/{dm_{0}}$ but we put in the code all partials for possible use in future.\n"
461       ]
462     },
463     {
464       "cell_type": "code",
465       "execution_count": null,
466       "metadata": {
467         "id": "wuVIAGLiSeR8"
468       },
469       "outputs": [],
470       "source": [
471         "import numpy as np\n",
472         "def model_decay(m0,E,partials=0,T1=0.1,tlen=1):  \n",
473         "  # Arguments: \n",
474         "  #   m0          fuel moisture content at start dimensionless, unit (1)\n",
475         "  #   E           fuel moisture eqilibrium (1)\n",
476         "  #   partials=0: return m1 = fuel moisture contents after time tlen (1)\n",
477         "  #           =1: return m1, dm0/dm0 \n",
478         "  #           =2: return m1, dm1/dm0, dm1/dE\n",
479         "  #           =3: return m1, dm1/dm0, dm1/dE dm1/dT1   \n",
480         "  #   T1          1/T, where T is the time constant approaching the equilibrium\n",
481         "  #               default 0.1/hour\n",
482         "  #   tlen        the time interval length, default 1 hour\n",
483         "\n",
484         "  exp_t = np.exp(-tlen*T1)                  # compute this subexpression only once\n",
485         "  m1 = E + (m0 - E)*exp_t                   # the solution at end\n",
486         "  if partials==0:\n",
487         "    return m1\n",
488         "  dm1_dm0 = exp_t\n",
489         "  if partials==1:\n",
490         "    return m1, dm1_dm0          # return value and Jacobian\n",
491         "  dm1_dE = 1 - exp_t      \n",
492         "  if partials==2:\n",
493         "     return m1, dm1_dm0, dm1_dE \n",
494         "  dm1_dT1 = -(m0 - E)*tlen*exp_t            # partial derivative dm1 / dT1\n",
495         "  if partials==3:\n",
496         "    return m1, dm1_dm0, dm1_dE, dm1_dT1       # return value and all partial derivatives wrt m1 and parameters\n",
497         "  raise('Bad arg partials')\n",
498         "  "
499       ]
500     },
501     {
502       "cell_type": "markdown",
503       "metadata": {
504         "id": "dOARZlj-RUCi"
505       },
506       "source": [
507         "#### 2.3.2 Fuel moisture model with drying equilibrium, wetting equilibrium, and rain"
508       ]
509     },
510     {
511       "cell_type": "markdown",
512       "metadata": {
513         "id": "AJp6FTpTSx5B"
514       },
515       "source": [
516         "Here is a little more realistic fuel moisture model from Mandel et al. (2004). A rain-wetting lag time $t_{\\mathrm{r}}$ is reached for heavy rain only\n",
517         "asymptotically, when the rain intensity $r$ (mm/h) is\n",
518         "large:\n",
519         "$$\n",
520         "\\frac{\\mathrm{d}m}{\\mathrm{d}t}=\\frac{S-m}{t_{\\mathrm{r}}}\\left(1-\\exp\\left(-\\frac{r-r_0}{r_{\\mathrm{s}}}\n",
521         "\\right)  \\right),\\ \\text{if}\\ r>r_0, \n",
522         "$$\n",
523         "where $r_0$ is the threshold rain intensity below which no perceptible\n",
524         "wetting occurs, and $r_{\\mathrm{s}}$ is the saturation rain\n",
525         "intensity. At the saturation rain intensity, $1-1/e\\approx 0.63$ of\n",
526         "the maximal rain-wetting rate is achieved. For 10h fuel, the model takes $S=250\\,{\\%}$,\n",
527         "$t_{\\mathrm{r}}=14$h, $r_0=0.05$mm/h and\n",
528         "$r_{\\mathrm{s}}=8$mm/h. "
529       ]
530     },
531     {
532       "cell_type": "code",
533       "execution_count": null,
534       "metadata": {
535         "id": "ITsKE0psRblG"
536       },
537       "outputs": [],
538       "source": [
539         "### Define model function with drying, wetting, and rain equilibria\n",
540         "\n",
541         "# Parameters\n",
542         "r0 = 0.05                                   # threshold rainfall [mm/h]\n",
543         "rs = 8.0                                    # saturation rain intensity [mm/h]\n",
544         "Tr = 14.0                                   # time constant for rain wetting model [h]\n",
545         "S = 250                                     # saturation intensity [dimensionless]\n",
546         "T = 10.0                                    # time constant for wetting/drying\n",
547         "\n",
548         "def model_moisture(m0,Eqd,Eqw,r,t,partials=0,T=10.0,tlen=1.0):\n",
549         "    # arguments:\n",
550         "    # m0         starting fuel moistureb (%s\n",
551         "    # Eqd        drying equilibrium      (%) \n",
552         "    # Eqw        wetting equilibrium     (%)\n",
553         "    # r          rain intensity          (mm/h)\n",
554         "    # t          time\n",
555         "    # partials = 0, 1, 2\n",
556         "    # returns: same as model_decay\n",
557         "    #   if partials==0: m1 = fuel moisture contents after time 1 hour\n",
558         "    #              ==1: m1, dm1/dm0 \n",
559         "    #              ==2: m1, dm1/dm0, dm1/dE  \n",
560         "    \n",
561         "    if r > r0:\n",
562         "        # print('raining')\n",
563         "        E = S\n",
564         "        T1 =  (1.0 - np.exp(- (r - r0) / rs)) / Tr\n",
565         "    elif m0 <= Eqw: \n",
566         "        # print('wetting')\n",
567         "        E=Eqw\n",
568         "        T1 = 1.0/T\n",
569         "    elif m0 >= Eqd:\n",
570         "        # print('drying')\n",
571         "        E=Eqd\n",
572         "        T1 = 1.0/T\n",
573         "    else: # no change'\n",
574         "        E = m0\n",
575         "        T1=0.0\n",
576         "    exp_t = np.exp(-tlen*T1)\n",
577         "    m1 = E + (m0 - E)*exp_t  \n",
578         "    dm1_dm0 = exp_t\n",
579         "    dm1_dE = 1 - exp_t\n",
580         "    #if t>=933 and t < 940:\n",
581         "    #  print('t,Eqw,Eqd,r,T1,E,m0,m1,dm1_dm0,dm1_dE',\n",
582         "    #        t,Eqw,Eqd,r,T1,E,m0,m1,dm1_dm0,dm1_dE)   \n",
583         "    if partials==0: \n",
584         "        return m1\n",
585         "    if partials==1:\n",
586         "        return m1, dm1_dm0\n",
587         "    if partials==2:\n",
588         "        return m1, dm1_dm0, dm1_dE\n",
589         "    raise('bad partials')"
590       ]
591     },
592     {
593       "cell_type": "markdown",
594       "metadata": {
595         "id": "JDLU3B_jV42l"
596       },
597       "source": [
598         "## 3. Methods"
599       ]
600     },
601     {
602       "cell_type": "markdown",
603       "metadata": {
604         "id": "hLPJT3FcA2a7"
605       },
606       "source": [
607         "### 3.1 Kalman filter demonstration on the simple model"
608       ]
609     },
610     {
611       "cell_type": "markdown",
612       "metadata": {
613         "id": "kIA3X8vluFdd"
614       },
615       "source": [
616         "We demonstrate the Kalman filter for this model on a simple artificial example. The model is solving the differential equation for one hour. The equilibrium $E$ is constant during the hour, but it changes over the day so that it is higher at night and lower during the day, with a 24-hour period.  First, we create the \"truth\" by choosing the equilibrium $E$ and solving the differential aquation every hour, with a small additive noise. The synthetic data is obtained as the values of the \"truth\", with random noise to simulate observation error."
617       ]
618     },
619     {
620       "cell_type": "markdown",
621       "metadata": {
622         "id": "bBv10PTiChhm"
623       },
624       "source": [
625         "#### 3.1.1 Creating synthetic data"
626       ]
627     },
628     {
629       "cell_type": "code",
630       "execution_count": null,
631       "metadata": {
632         "id": "my6nnrk1iQo8"
633       },
634       "outputs": [],
635       "source": [
636         ""
637       ]
638     },
639     {
640       "cell_type": "code",
641       "execution_count": null,
642       "metadata": {
643         "id": "-_pz-wXnCMnP"
644       },
645       "outputs": [],
646       "source": [
647         "def create_synthetic_data(days=20,power=4,data_noise=0.02,process_noise=0.0,DeltaE=0.0):\n",
648         "  import numpy as np, random\n",
649         "  hours = days*24\n",
650         "  h2 = int(hours/2)\n",
651         "  hour = np.array(range(hours))\n",
652         "  day = np.array(range(hours))/24.\n",
653         "\n",
654         "  # artificial equilibrium data\n",
655         "  E = np.power(np.sin(np.pi*day),4) # diurnal curve\n",
656         "  E = 0.05+0.25*E\n",
657         "  # FMC free run\n",
658         "  m_f = np.zeros(hours)\n",
659         "  m_f[0] = 0.1         # initial FMC\n",
660         "  process_noise=0.\n",
661         "  for t in range(hours-1):\n",
662         "    m_f[t+1] = max(0.,model_decay(m_f[t],E[t])  + random.gauss(0,process_noise) )\n",
663         "  data = m_f + np.random.normal(loc=0,scale=data_noise,size=hours)\n",
664         "  E = E + DeltaE    \n",
665         "\n",
666         "  %matplotlib inline\n",
667         "  import matplotlib.pyplot as plt \n",
668         "  # fig1, ax1 = plt.subplots()\n",
669         "\n",
670         "  plt.figure(figsize=(16,4))\n",
671         "  plt.plot(hour,E,linestyle='--',c='r',label='Equilibrium')\n",
672         "  plt.plot(hour,m_f,linestyle='-',c='k',label='10-h fuel truth')\n",
673         "  plt.scatter(hour[:h2],data[:h2],c='b',label='10-h fuel data')\n",
674         "  plt.title('Synthetic data')\n",
675         "  plt.xlabel('Time (hours)')\n",
676         "  plt.ylabel('Fuel moisture content (%)')\n",
677         "  plt.legend()\n",
678         "  return E,m_f,data,hour,h2\n"
679       ]
680     },
681     {
682       "cell_type": "code",
683       "execution_count": null,
684       "metadata": {
685         "id": "GfRxLp4HkcVz"
686       },
687       "outputs": [],
688       "source": [
689         "E,m_f,data,hour,h2 = create_synthetic_data(days=20,power=4,data_noise=0.000,process_noise=0.0,DeltaE=0.0) "
690       ]
691     },
692     {
693       "cell_type": "markdown",
694       "metadata": {
695         "id": "z-3WLAEpD2yJ"
696       },
697       "source": [
698         "#### 3.1.2 Running the Kalman filter"
699       ]
700     },
701     {
702       "cell_type": "markdown",
703       "metadata": {
704         "id": "T4g-RrrYAlBD"
705       },
706       "source": [
707         "We have used the same code for model and for the truth, and run the Kalman filter for 10 days. The graph below shows that the model state was remarkably close to the truth, even if the model is fed only noisy observations. This is because the dynamics of the model and of the truth are the same. After 10 days, we let the model continue without any new data to simulate forecasting the future, and the agreement with the truth was still very good."
708       ]
709     },
710     {
711       "cell_type": "code",
712       "execution_count": null,
713       "metadata": {
714         "id": "_-CjONZkD18n"
715       },
716       "outputs": [],
717       "source": [
718         "import numpy as np\n",
719         "import matplotlib.pyplot as plt \n",
720         "\n",
721         "# using global E, m_f\n",
722         "\n",
723         "def plot_m(m,Ec=None,title=None,):  # global hour\n",
724         "  hours=hour.shape[0]\n",
725         "  %matplotlib inline\n",
726         "  plt.figure(figsize=(16,4))\n",
727         "  plt.plot(hour,E,linestyle='--',c='r',label='E=Equilibrium data')\n",
728         "  # print(len(hour),len(m_f))\n",
729         "  plt.plot(hour,m_f,linestyle='-',c='b',label='m_f=10-h fuel truth')\n",
730         "  plt.scatter(hour[:h2],data[:h2],c='b',label='data=10-h fuel data')\n",
731         "  if m is not None:\n",
732         "    plt.plot(hour[:h2],m[:h2],linestyle='-',c='k',label='m=filtered')\n",
733         "    plt.plot(hour[h2:hours],m[h2:hours],linestyle='-',c='r',label='m=forecast')\n",
734         "  if Ec is not None:\n",
735         "    plt.plot(hour,Ec,linestyle='-',c='g',label='Ec=Equilibrium correction')\n",
736         "  if title is not None:\n",
737         "    plt.title(title) \n",
738         "  else:\n",
739         "    plt.title('Kalman filtering and forecast on artificial data')\n",
740         "  plt.xlabel('Time (hours)') \n",
741         "  plt.ylabel('Fuel moisture content (%)')\n",
742         "  plt.legend()\n",
743         "\n",
744         "def kf_example(DeltaE):\n",
745         "  hours=hour.shape[0]\n",
746         "  m = np.zeros(hours)\n",
747         "  m[0]=0.1             # background state  \n",
748         "  P = np.zeros(hours)\n",
749         "  P[0] = 0.03 # background state variance\n",
750         "  Q = np.array([0.02]) # process noise variance\n",
751         "  H = np.array([1.])   # all observed\n",
752         "  R = np.array([0.02]) # data variance\n",
753         "\n",
754         "  for t in range(h2):\n",
755         "    # use lambda construction to pass additional arguments to the model \n",
756         "    m[t+1],P[t+1] = ext_kf(m[t],P[t],lambda u: model_decay(u,E[t]+DeltaE,partials=1),Q,\n",
757         "                    d=data[t],H=H,R=R)\n",
758         "  for t in range(h2,hours - 1):\n",
759         "    m[t+1],P[t+1] = ext_kf(m[t],P[t],lambda u: model_decay(u,E[t]+DeltaE,partials=1))\n",
760         "  return m, P\n",
761         " "
762       ]
763     },
764     {
765       "cell_type": "code",
766       "execution_count": null,
767       "metadata": {
768         "id": "d0EFhTPZAlBD",
769         "scrolled": true
770       },
771       "outputs": [],
772       "source": [
773         "DeltaE = 0.0          # bias\n",
774         "m, P = kf_example(DeltaE)\n",
775         "plot_m(m)\n"
776       ]
777     },
778     {
779       "cell_type": "markdown",
780       "metadata": {
781         "id": "vqyB2Yz3uCsD"
782       },
783       "source": [
784         "We have recovered the fuel moisture from data with random noise - we **filtered** the noise out. "
785       ]
786     },
787     {
788       "cell_type": "markdown",
789       "metadata": {
790         "id": "Dl7pBZ9B3Nox"
791       },
792       "source": [
793         "Let's have a look at the evolution of the filter's estimate of the variance $P$. A common problem with the Kalman filter is when the variance converges to zero over time, then, since the filter trusts the model too much, it ignores the observations. Of course, once we switch to forecasting mode, the variance is not of interest. We could keep evolving the variance to bridge over periods when there are no observations, but not in this simplified version."
794       ]
795     },
796     {
797       "cell_type": "code",
798       "execution_count": null,
799       "metadata": {
800         "id": "wRJgbmGLc91g"
801       },
802       "outputs": [],
803       "source": [
804         "%matplotlib inline\n",
805         "plt.figure(figsize=(16,4))\n",
806         "plt.plot(P,linestyle='-',c='b',label='Estimated state variance P')\n",
807         "plt.title('Kalman filtering and forecast on artificial data')\n",
808         "plt.xlabel('Time (hours)') \n",
809         "plt.ylabel('Estimated variance of fuel moisture (%^2)')\n",
810         "plt.legend()"
811       ]
812     },
813     {
814       "cell_type": "markdown",
815       "metadata": {
816         "id": "Ccr-uKbmAlBE"
817       },
818       "source": [
819         "Now what if the model is wrong - different from nature? That is always so in reality. Now suppose that the model and the truth are not the same. That is always the case in reality.  Consider a simple case when the model thinks that the equilibrium $E$ is too high."
820       ]
821     },
822     {
823       "cell_type": "code",
824       "execution_count": null,
825       "metadata": {
826         "id": "spMdGW8oAlBE"
827       },
828       "outputs": [],
829       "source": [
830         "DeltaE = -0.05\n",
831         "m, P = kf_example(DeltaE)\n",
832         "plot_m(m)"
833       ]
834     },
835     {
836       "cell_type": "code",
837       "execution_count": null,
838       "metadata": {
839         "id": "Z_INvPNGCmM2"
840       },
841       "outputs": [],
842       "source": [
843         "DeltaE = 0.05\n",
844         "m, P = kf_example(DeltaE)\n",
845         "plot_m(m)"
846       ]
847     },
848     {
849       "cell_type": "markdown",
850       "metadata": {
851         "id": "DQeF7J8T4j2i"
852       },
853       "source": [
854         "We have found a good estimate of the state $m$, while data is available. Also, the estimated state variance $P$ converges with time - we have *learned* the variance that balances the noise. But for forecasting fuel moisture, we need to continue the fuel moisture model into the future, and we can't have any measurements from future. We only have the equilibrium from weather forecast. And the forecast and the truth disagree - as soon as there is no data to attract the simulation, the model is doing its own thing."
855       ]
856     },
857     {
858       "cell_type": "markdown",
859       "metadata": {
860         "id": "-WMWCDz4DX45"
861       },
862       "source": [
863         "#### 3.2 Model with an augmented state"
864       ]
865     },
866     {
867       "cell_type": "markdown",
868       "metadata": {
869         "id": "jivOYEhiXMi5"
870       },
871       "source": [
872         "In reality, the equilibrium moisture $E$ computed from atmospheric conditions\n",
873         "generally does not agree with the data. We want to add a correction $\\Delta\n",
874         "E$ to $E$ constant in time, and identify the new parameter $\\Delta E$ from data. \n",
875         "Because the Kalman filter identifies state, add the parameter to the state.\n",
876         "Define augmented state $u=\\left[\n",
877         "\\begin{array}\n",
878         "[c]{c}\n",
879         "m\\\\\n",
880         "\\Delta E\n",
881         "\\end{array}\n",
882         "\\right]  .$ Since $\\Delta E$ is constant in time, it satisfies the\n",
883         "differential equation $\\frac{d\\Delta E}{dt}=0.$ So, we want to estimate the\n",
884         "state $u$ governed by the\n",
885         "$$\n",
886         "\\frac{d}{dt}\\left[\n",
887         "\\begin{array}\n",
888         "[c]{c}\n",
889         "m\\\\\n",
890         "\\Delta E\n",
891         "\\end{array}\n",
892         "\\right]  =\\left[\n",
893         "\\begin{array}\n",
894         "[c]{c}\n",
895         "\\frac{E+\\Delta E-m(t)}{T}\\\\\n",
896         "0\n",
897         "\\end{array}\n",
898         "\\right]  ,\n",
899         "$$\n",
900         "which we write as $\\frac{du}{dt}=F(u),$ where\n",
901         "$$\n",
902         "F(u)=\\left[\n",
903         "\\begin{array}\n",
904         "[c]{c}\n",
905         "F_{1}\\left(  u\\right)  \\\\\n",
906         "F_{2}\\left(  u\\right)\n",
907         "\\end{array}\n",
908         "\\right]  =F\\left(  \\left[\n",
909         "\\begin{array}\n",
910         "[c]{c}\n",
911         "m\\\\\n",
912         "\\Delta E\n",
913         "\\end{array}\n",
914         "\\right]  \\right)  =\\left[\n",
915         "\\begin{array}\n",
916         "[c]{c}\n",
917         "\\left(  E+\\Delta E-m(t)\\right)  T_{1}\\\\\n",
918         "0\n",
919         "\\end{array}\n",
920         "\\right]  ,\\quad T_{1}=\\frac{1}{T}.\n",
921         "$$\n",
922         "The Jacobian of $F$ is\n",
923         "$$\n",
924         "\\left[\n",
925         "\\begin{array}\n",
926         "[c]{cc}\n",
927         "\\frac{\\partial F_{1}}{\\partial u_{1}} & \\frac{\\partial F_{1}}{\\partial u_{2}\n",
928         "}\\\\\n",
929         "\\frac{\\partial F_{2}}{\\partial u_{1}} & \\frac{\\partial F_{2}}{\\partial u_{2}}\n",
930         "\\end{array}\n",
931         "\\right]  =\\left[\n",
932         "\\begin{array}\n",
933         "[c]{cc}\n",
934         "\\frac{\\partial m_{1}}{\\partial m_{0}} & \\frac{\\partial m_{1}}{\\partial E}\\\\\n",
935         "\\frac{\\partial\\Delta E}{\\partial m_{0}} & \\frac{\\partial\\Delta E}\n",
936         "{\\partial\\Delta E}\n",
937         "\\end{array}\n",
938         "\\right]  =\\left[\n",
939         "\\begin{array}\n",
940         "[c]{cc}\n",
941         "\\frac{\\partial m_{1}}{\\partial m_{0}} & \\frac{\\partial m_{1}}{\\partial E}\\\\\n",
942         "0 & 1\n",
943         "\\end{array}\n",
944         "\\right]\n",
945         "$$\n",
946         "Here is a function that implements the augmented model $F$. The input is\n",
947         "$u_{0}$. The output is $u_{1}$ and the Jacobian $du_{1}/du_{0}$."
948       ]
949     },
950     {
951       "cell_type": "markdown",
952       "metadata": {
953         "id": "MJ1C_1Omc91s"
954       },
955       "source": [
956         "\n",
957         "Define augmented model function. Also, add use drying, wetting, and rain equilibria"
958       ]
959     },
960     {
961       "cell_type": "code",
962       "execution_count": null,
963       "metadata": {
964         "id": "GHtAaGp9WSHT"
965       },
966       "outputs": [],
967       "source": [
968         "def model_augmented(u0,Ed,Ew,r,t):\n",
969         "    # state u is the vector [m,dE] with dE correction to equilibria Ed and Ew at t\n",
970         "    # \n",
971         "    m0, Ec = u0  # decompose state u0\n",
972         "    # reuse model_moisture(m0,Eqd,Eqw,r,partials=0):\n",
973         "    # arguments:\n",
974         "    # m0         starting fuel moistureb (1)\n",
975         "    # Ed         drying equilibrium      (1) \n",
976         "    # Ew         wetting equilibrium     (1)\n",
977         "    # r          rain intensity          (mm/h)\n",
978         "    # partials = 0, 1, 2\n",
979         "    # returns: same as model_decay\n",
980         "    #   if partials==0: m1 = fuel moisture contents after time 1 hour\n",
981         "    #              ==1: m1, dm0/dm0 \n",
982         "    #              ==2: m1, dm1/dm0, dm1/dE \n",
983         "    m1, dm1_dm0, dm1_dE  = model_moisture(m0,Ed + Ec, Ew + Ec, r, t, partials=2)\n",
984         "    u1 = np.array([m1,Ec])   # dE is just copied\n",
985         "    J =  np.array([[dm1_dm0, dm1_dE],\n",
986         "                   [0.     ,     1.]])\n",
987         "    return u1, J"
988       ]
989     },
990     {
991       "cell_type": "code",
992       "execution_count": null,
993       "metadata": {
994         "id": "1No3g6HyAEh_"
995       },
996       "outputs": [],
997       "source": [
998         "def run_augmented_kf(d,Ed,Ew,rain,h2,hours):\n",
999         "  u = np.zeros((2,hours))\n",
1000         "  u[:,0]=[0.1,0.0]       # initialize,background state  \n",
1001         "  P = np.zeros((2,2,hours))\n",
1002         "  P[:,:,0] = np.array([[1e-3, 0.],\n",
1003         "                      [0.,  1e-3]]) # background state covariance\n",
1004         "  Q = np.array([[1e-3, 0.],\n",
1005         "                [0,  1e-3]]) # process noise covariance\n",
1006         "  H = np.array([[1., 0.]])  # first component observed\n",
1007         "  R = np.array([1e-3]) # data variance\n",
1008         "\n",
1009         "  # ext_kf(u,P,F,Q=0,d=None,H=None,R=None) returns ua, Pa\n",
1010         "\n",
1011         "  # print('initial u=',u,'P=',P)\n",
1012         "  # print('Q=',Q,'H=',H,'R=',R)\n",
1013         "\n",
1014         "  for t in range(1,h2):\n",
1015         "      # use lambda construction to pass additional arguments to the model \n",
1016         "      u[:,t],P[:,:,t] = ext_kf(u[:,t-1],P[:,:,t-1],\n",
1017         "                                  lambda uu: model_augmented(uu,Ed[t],Ew[t],rain[t],t),\n",
1018         "                                  Q,d[t],H=H,R=R)\n",
1019         "      # print('time',t,'data',d[t],'filtered',u[0,t],'Ec',u[1,t])\n",
1020         "  for t in range(h2,hours):\n",
1021         "      u[:,t],P[:,:,t] = ext_kf(u[:,t-1],P[:,:,t-1],\n",
1022         "                                  lambda uu: model_augmented(uu,Ed[t],Ew[t],rain[t],t),\n",
1023         "                                  Q*0.0)\n",
1024         "      # print('time',t,'data',d[t],'forecast',u[0,t],'Ec',u[1,t])\n",
1025         "  return u"
1026       ]
1027     },
1028     {
1029       "cell_type": "code",
1030       "execution_count": null,
1031       "metadata": {
1032         "id": "9vUv1Uc5OfPI"
1033       },
1034       "outputs": [],
1035       "source": [
1036         "def augmented_example(DeltaE):\n",
1037         "  hours=hour.shape[0]\n",
1038         "  h2 = int(hours/2)\n",
1039         "  m, Ec = run_augmented_kf(data,E+DeltaE,E+DeltaE,0*E,h2,hours)  # data, E, hours are global\n",
1040         "  return m, Ec"
1041       ]
1042     },
1043     {
1044       "cell_type": "code",
1045       "execution_count": null,
1046       "metadata": {
1047         "id": "QQnRlereDHbf"
1048       },
1049       "outputs": [],
1050       "source": [
1051         "m, Ec=augmented_example(0.1)\n",
1052         "plot_m(m, Ec)"
1053       ]
1054     },
1055     {
1056       "cell_type": "code",
1057       "execution_count": null,
1058       "metadata": {
1059         "id": "ZOC6bplsIRCx"
1060       },
1061       "outputs": [],
1062       "source": [
1063         "m, Ec=augmented_example(0.0)\n",
1064         "plot_m(m, Ec)"
1065       ]
1066     },
1067     {
1068       "cell_type": "code",
1069       "execution_count": null,
1070       "metadata": {
1071         "id": "xuMx41fXIejB"
1072       },
1073       "outputs": [],
1074       "source": [
1075         "m, Ec=augmented_example(-0.1)\n",
1076         "plot_m(m, Ec)"
1077       ]
1078     },
1079     {
1080       "cell_type": "markdown",
1081       "metadata": {
1082         "id": "ejlc1sbENm6R"
1083       },
1084       "source": [
1085         "## From Kalman filter to neural networks"
1086       ]
1087     },
1088     {
1089       "cell_type": "markdown",
1090       "metadata": {
1091         "id": "6zeGArbmNkAW"
1092       },
1093       "source": [
1094         "In the Kalman filter, at each time step $k$,\n",
1095         "\n",
1096         "* the input state is $u_{k-1}$ size $n$ and its covariance matrix $P_{k-1}$ size $n \\times n$.\n",
1097         "* the model is applied to external data $e_k$ and the input $u_{k-1},P_{k-1}$ produce the forecast $u_k^f$ and its covariance $P^f_k$\n",
1098         "* the new state $u_k$ is found by minimizing $|| u^f_k - u_k||^2_{P^f_k} + ||H u_k - d_k||^2_{R}$   \n",
1099         "* the new state covariance is $P_k = ( (P^f_k)^{-1} + H^\\top R^{-1} H)^{-1}$.\n",
1100         "\n",
1101         "Here, the state consists of \n",
1102         "* the fuel moisture and the adjustment to the equilibrium, dimension 2\n",
1103         "* the covariance matrix of vector of dimension 2, which is symmetric $2 \\times 2$ matrix, given by 3 numbers because it is symmetric\n",
1104         "Thus, the dimension of the state is 2 + 3 = 5. The first component of the state, the fuel moisture, is the quantity of interest, the rest are auxiliary.\n",
1105         "\n",
1106         "\n",
1107         "This can be understood as:\n",
1108         "\n",
1109         "* a mapping $M$ of the 5-dimensional hidden and external data state to a new hidden state:\n",
1110         "$$M:(u_{k-1},P_{k-1},e_k) \\mapsto (u_{k},P_{k})$$\n",
1111         "* retrieving the output (the quantity of interest) as the first component of the hiddent state\n",
1112         "* feeding the hiddent state back to the mapping $M$ for the next step $k+1$\n",
1113         "* training consists of fitting the hidden state to minimize a loss function\n",
1114         "$$\\ell(u_{k},P_{k},d_k,R_k) \\to \\min$$\n",
1115         "\n",
1116         "Note that in the augmented Kalman filter above, the mapping $M$ is fixed and it has a one component of the hidden state as a parameter. To get a better fit, we could increase the number of parameters, e.g., by modeling the moisture in multiple layers, as in van der Kamp et al. (2017) two-layer model.\n"
1117       ]
1118     },
1119     {
1120       "cell_type": "markdown",
1121       "metadata": {
1122         "id": "fk72YB2mjuGk"
1123       },
1124       "source": [
1125         "Building and evaluating RNN"
1126       ]
1127     },
1128     {
1129       "cell_type": "markdown",
1130       "metadata": {
1131         "id": "svt8wUAsSA67"
1132       },
1133       "source": [
1134         "A recurrent neural network (RNN) has a similar information flow but it can be more flexible and look for the best model automatically, i.e., build the model from data. \n",
1135         "\n",
1136         "We'll start by how to evaluate the map, then actually create it later.\n",
1137         "\n",
1138         "Some of the code is from https://machinelearningmastery.com/understanding-simple-recurrent-neural-networks-in-keras/\n"
1139       ]
1140     },
1141     {
1142       "cell_type": "code",
1143       "execution_count": null,
1144       "metadata": {
1145         "id": "H3RTQCDG9q-4"
1146       },
1147       "outputs": [],
1148       "source": [
1149         "import numpy as np\n",
1150         "import tensorflow as tf\n",
1151         "from keras.models import Sequential\n",
1152         "from keras.layers import Dense, SimpleRNN\n",
1153         "from keras.utils.vis_utils import plot_model\n",
1154         "from sklearn.preprocessing import MinMaxScaler\n",
1155         "from sklearn.metrics import mean_squared_error\n",
1156         "import math\n",
1157         "import matplotlib.pyplot as plt\n",
1158         "import tensorflow as tf\n",
1159         "import keras.backend as K"
1160       ]
1161     },
1162     {
1163       "cell_type": "code",
1164       "execution_count": null,
1165       "metadata": {
1166         "id": "pcIU5lWhVEAy"
1167       },
1168       "outputs": [],
1169       "source": [
1170         "def create_RNN(hidden_units, dense_units, input_shape, activation):\n",
1171         "    inputs = tf.keras.Input(shape=input_shape)\n",
1172         "    # https://stackoverflow.com/questions/43448029/how-can-i-print-the-values-of-keras-tensors\n",
1173         "    # inputs2 = K.print_tensor(inputs, message='inputs = ')  # change allso inputs to inputs2 below, must be used\n",
1174         "    x = tf.keras.layers.SimpleRNN(hidden_units, input_shape=input_shape,\n",
1175         "                        activation=activation[0])(inputs)\n",
1176         "    outputs = tf.keras.layers.Dense(dense_units, activation=activation[1])(x)\n",
1177         "    model = tf.keras.Model(inputs=inputs, outputs=outputs)\n",
1178         "    model.compile(loss='mean_squared_error', optimizer='adam')\n",
1179         "    return model"
1180       ]
1181     },
1182     {
1183       "cell_type": "code",
1184       "execution_count": null,
1185       "metadata": {
1186         "id": "lphzeucMfI7L"
1187       },
1188       "outputs": [],
1189       "source": [
1190         "# Demo example\n",
1191         "hidden=5\n",
1192         "features=2\n",
1193         "timesteps=3\n",
1194         "demo_model = create_RNN(hidden_units=hidden, dense_units=1, \n",
1195         "                        input_shape=(timesteps,features), \n",
1196         "                        activation=['linear', 'linear'])\n",
1197         "print(demo_model.summary())\n",
1198         "w = demo_model.get_weights()\n",
1199         "#print(len(w),' weight arrays:',w)\n",
1200         "wname=('wx','wh','bh','wy','by','wz','bz')\n",
1201         "for i in range(len(w)):\n",
1202         "  print(i,':',wname[i],'shape=',w[i].shape)\n",
1203         "wx, wh, bh, wy, by = w\n",
1204         "plot_model(demo_model, to_file='model_plot.png', \n",
1205         "  show_shapes=True, show_layer_names=True,\n",
1206         "  expand_nested=True,)"
1207       ]
1208     },
1209     {
1210       "cell_type": "markdown",
1211       "metadata": {
1212         "id": "uFVQdXL0fODX"
1213       },
1214       "source": [
1215         "The input layer here is just a formality. The input of the hidden layer `simple_rnn` consist of vector passed by the input layer, followed by its own output from the previous time step.\n",
1216         "\n",
1217         "Now let’s do a simple experiment to see how the layers from a SimpleRNN and Dense layer produce an output. Keep this figure in view.\n",
1218         "<img src=\"https://machinelearningmastery.com/wp-content/uploads/2021/09/rnnCode1.png\">"
1219       ]
1220     },
1221     {
1222       "cell_type": "markdown",
1223       "metadata": {
1224         "id": "TcxvQPo1hYip"
1225       },
1226       "source": [
1227         "We’ll input x for three time steps and let the network generate an output. The values of the hidden units at time steps 1, 2 and 3 will be computed. $h(0)$ is initialized to the zero vector. The output $o(3)$ is computed from $h(3)$ and $w(3)$. An activation function is linear, $f(x)=x$, so the update of  $h(k)$  and the output $o(k)$ are given by\n",
1228         "\\begin{align*}\n",
1229         "h\\left(  0\\right)  = &0  \\\\\n",
1230         "h\\left(  k+1\\right)  =& \n",
1231         "x\\left(  k\\right) w_{x}\n",
1232         "  +h(k) w_{h}  + b_{h}\\\\\n",
1233         "o(k+1)=& h(k+1)w_{y} + b_y\n",
1234         "\\end{align*}"
1235       ]
1236     },
1237     {
1238       "cell_type": "code",
1239       "execution_count": null,
1240       "metadata": {
1241         "id": "fqL5TEfpml7q"
1242       },
1243       "outputs": [],
1244       "source": [
1245         "# Reshape the input to sample_size x time_steps x features \n",
1246         "samples=4   # number of samples\n",
1247         "x = tf.reshape(tf.range(samples*timesteps*features),[samples,timesteps,features]) \n",
1248         "print('test input x=',x)\n",
1249         "print('model.predict start')\n",
1250         "y_pred_model = demo_model.predict(x)\n",
1251         "print('model.predict end')\n",
1252         "\n",
1253         "o3=np.zeros([samples,1])\n",
1254         "for i in range(samples):\n",
1255         "  h_0 = np.zeros(hidden)\n",
1256         "  h_1 = np.dot(x[i,0,:], wx) + np.dot(h_0,wh) + bh\n",
1257         "  h_2 = np.dot(x[i,1,:], wx) + np.dot(h_1,wh) + bh\n",
1258         "  h_3 = np.dot(x[i,2,:], wx) + np.dot(h_2,wh) + bh\n",
1259         "  o3[i,0] = np.dot(h_3, wy) + by\n",
1260         "#print('h1 = ', h_1,'h2 = ', h_2,'h3 = ', h_3)\n",
1261         "\n",
1262         "print(\"Prediction from network \", y_pred_model)\n",
1263         "print(\"Prediction from our computation \", o3)"
1264       ]
1265     },
1266     {
1267       "cell_type": "markdown",
1268       "metadata": {
1269         "id": "6qdqOFCvhQL1"
1270       },
1271       "source": [
1272         "The result is the same."
1273       ]
1274     },
1275     {
1276       "cell_type": "markdown",
1277       "metadata": {
1278         "id": "AkyiGlZF0WrM"
1279       },
1280       "source": [
1281         "#### Training and forecasting with the RNN"
1282       ]
1283     },
1284     {
1285       "cell_type": "markdown",
1286       "metadata": {
1287         "id": "e265QFwlw22_"
1288       },
1289       "source": [
1290         "We are given a sequence `x` of inputs size `[train_steps+forecast_steps,features]` and want to train a model so that at step `i` in `range(train_steps)`, the model returns close to `features[i,:]`. The trained model then returns for `i` in `range(train_steps,train_steps+forecast_steps)` a forecast `features[i,:]`."
1291       ]
1292     },
1293     {
1294       "cell_type": "code",
1295       "execution_count": null,
1296       "metadata": {
1297         "id": "owX7OTg-RnMA"
1298       },
1299       "outputs": [],
1300       "source": [
1301         "def staircase(x,y,timesteps,trainsteps):\n",
1302         "  # x [trainsteps+forecaststeps,features]    all inputs\n",
1303         "  # y [trainsteps,outputs]\n",
1304         "  # timesteps: split x and y into samples length timesteps, shifted by 1\n",
1305         "  # trainsteps: number of timesteps to use for training, no more than y.shape[0]\n",
1306         "  print('shape x = ',x.shape)\n",
1307         "  print('shape y = ',y.shape)\n",
1308         "  print('timesteps=',timesteps)\n",
1309         "  print('trainsteps=',trainsteps)\n",
1310         "  outputs = y.shape[1]\n",
1311         "  features = x.shape[1]\n",
1312         "  forecaststeps = x.shape[0]-trainsteps\n",
1313         "  samples = trainsteps-timesteps+1\n",
1314         "  print('staircase: samples=',samples,'timesteps=',timesteps,'features=',features)\n",
1315         "  x_train = np.empty([samples, timesteps, features])\n",
1316         "  y_train = np.empty([samples, outputs])  # only the last\n",
1317         "  for i in range(samples):\n",
1318         "    for j in range(features):\n",
1319         "      for k in range(timesteps):\n",
1320         "        x_train[i,k,j] = x[i+k,j]\n",
1321         "    for j in range(outputs):\n",
1322         "      y_train[i,j] = y[i+timesteps-1,j]\n",
1323         "  return x_train, y_train"
1324       ]
1325     },
1326     {
1327       "cell_type": "code",
1328       "execution_count": null,
1329       "metadata": {
1330         "id": "FzOotSFf-tPR"
1331       },
1332       "outputs": [],
1333       "source": [
1334         "def seq2batches(x,y,timesteps,trainsteps):\n",
1335         "  # x [trainsteps+forecaststeps,features]    all inputs\n",
1336         "  # y [trainsteps,outputs]\n",
1337         "  # timesteps: split x and y into samples length timesteps, shifted by 1\n",
1338         "  # trainsteps: number of timesteps to use for training, no more than y.shape[0]\n",
1339         "  print('shape x = ',x.shape)\n",
1340         "  print('shape y = ',y.shape)\n",
1341         "  print('timesteps=',timesteps)\n",
1342         "  print('trainsteps=',trainsteps)\n",
1343         "  outputs = y.shape[1]\n",
1344         "  features = x.shape[1]\n",
1345         "  samples= trainsteps - timesteps + 1\n",
1346         "  print('samples=',samples)\n",
1347         "  x_train = np.empty([samples, timesteps, features])\n",
1348         "  y_train = np.empty([samples, timesteps, outputs])  # only the last\n",
1349         "  print('samples=',samples,' timesteps=',timesteps,\n",
1350         "        ' features=',features,' outputs=',outputs)\n",
1351         "  for i in range(samples):\n",
1352         "    for k in range(timesteps):\n",
1353         "      for j in range(features):\n",
1354         "        x_train[i,k,j] = x[i+k,j]\n",
1355         "      for j in range(outputs):\n",
1356         "        y_train[i,k,j] = y[i+k,j]  # return sequences\n",
1357         "  return x_train, y_train"
1358       ]
1359     },
1360     {
1361       "cell_type": "code",
1362       "execution_count": null,
1363       "metadata": {
1364         "id": "Kg7wSrkk-HrE"
1365       },
1366       "outputs": [],
1367       "source": [
1368         "print('test preprocessing for RNN')\n",
1369         "trainsteps=5\n",
1370         "features=1\n",
1371         "outputs=1\n",
1372         "timesteps=3\n",
1373         "x = tf.reshape(tf.range(trainsteps*features),[trainsteps,features])\n",
1374         "y = tf.reshape(tf.range(trainsteps*outputs),[trainsteps,outputs])\n",
1375         "print('x=',x)\n",
1376         "print('y=',y)\n",
1377         "x_train, y_train = staircase(x,y,timesteps,trainsteps)\n",
1378         "print('x_train=',x_train)\n",
1379         "print('y_train=',y_train)\n",
1380         "x_train, y_train = seq2batches(x,y,timesteps,trainsteps)\n",
1381         "print('x_train=',x_train)\n",
1382         "print('y_train=',y_train)"
1383       ]
1384     },
1385     {
1386       "cell_type": "code",
1387       "source": [
1388         "E,m_f,data,hour,h2 = create_synthetic_data(days=20,power=4,data_noise=0.0,process_noise=0.0,DeltaE=0.0) "
1389       ],
1390       "metadata": {
1391         "colab": {
1392           "base_uri": "https://localhost:8080/",
1393           "height": 295
1394         },
1395         "id": "rHWxqARpSO_f",
1396         "outputId": "3fe4cb60-ce8b-4b9e-e9c2-fbbad43de629"
1397       },
1398       "execution_count": 110,
1399       "outputs": [
1400         {
1401           "output_type": "display_data",
1402           "data": {
1403             "text/plain": [
1404               "<Figure size 1152x288 with 1 Axes>"
1405             ],
1406             "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7oAAAEWCAYAAABIRevRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydd3gU1frHvyeVkhAIJXQCiLQQA4aqKIiICIKKoiheohSvivwsoGCDa0HELioi4qWKBQtFRJCuXLoBAYFQIi2EmhAgCSnn98e7QyabaQvZOWfxfJ5nnyQ7J5s3++7MnLczzjkUCoVCoVAoFAqFQqG4UggSLYBCoVAoFAqFQqFQKBSliTJ0FQqFQqFQKBQKhUJxRaEMXYVCoVAoFAqFQqFQXFEoQ1ehUCgUCoVCoVAoFFcUytBVKBQKhUKhUCgUCsUVhTJ0FQqFQqFQKBQKhUJxRaEMXYVCoVAoBMEYS2WM3VxKr1WXMXaWMRZ8ma8TyxjjjLGQ0pBLoVAoFAoRKENXoVAoFAodjLHrGWNrGGOZjLFTjLHfGWOtS+F1pzLGXisNGT2vV8xI5pwf4JxHcM4LSutvOJChE2PskFt/T6FQKBQKpyhvrUKhUCgUHhhjFQAsAPAogG8AhAHoCCBXpFwKhUKhUCh8Q0V0FQqFQqEo4moA4JzP5pwXcM6zOeeLOedbGWNhnghvC20xY6waY+w8Y6yqFt1kjD3DGDvGGEtjjD3kWTcEwAMAnvWkF8/X/c0ExthWTwT5a8ZYGd3r92SMJTPGMjxR5njP8zMA1AUw3/N6z3qnHDPGohlj/2WMHWGMnWaM/Wj0DzPGghljbzPGTjDG9gHo4XX8IcbYX4yxLMbYPsbYI57nywP4GUBNjwxnGWM1GWNtGGP/88icxhj7iDEWdrmKUSgUCoXCF5Shq1AoFApFEbsBFDDGpjHGujPGKmkHOOcXAHwFoL9ufT8ASznnxz0/VwcQBaAWgIEAPmaMVeKcfwZgFoDxnvTi23Wv0RfArQDqA4gHkAQAjLGWAL4A8AiAygAmAZjHGAvnnD8I4ACA2z2vN97gf5kBoByA5gCqAXjP5H8eDKAngJYAEgHc7XX8mOd4BQAPAXiPMdaKc34OQHcARzwyRHDOjwAoAPAUgCoA2gPoAuAxk7+tUCgUCoVfUIauQqFQKBQeOOdnAFwPgAOYDOA4Y2weYyzGs2QagH6MMeb5+UGQQamRB+AVznke53whgLMAGtv82Q8550c456cAzAeQ4Hl+CIBJnPN1nujyNFAKdTu7/4MxVgNkhP6bc37aI89Kk+V9AbzPOT/okeEN/UHO+U+c872cWAlgMSid2xDO+SbO+VrOeT7nPBVkoN9oJ7NCoVAoFKWJMnQVCoVCodDBOf+Lc57EOa8NIA5ATQDve46tA3AeQCfGWBMAVwGYp/v1k5zzfN3P5wFE2PzJoybr6wF4xpMCnMEYywBQxyOPHXUAnOKcn3awtiaAg7qf/9Yf9ES213rStjMA3AaK1hrCGLuaMbaAMXaUMXYGwFir9QqFQqFQ+ANl6CoUCoVCYQLnfCeAqSCDV2MaKH35QQBzOOc5Tl/Oxz9/EMDrnPOKukc5zvlsB693EEA0Y6yig7+TBjKMNepq3zDGwgF8B+BtADGc84oAFgLQItpGMkwEsBNAI855BQDP69YrFAqFQuEKytBVKBQKhcIDY6yJp5lUbc/PdUB1uGt1y2YCuBNk7E734eXTATTwYf1kAP9mjLVlRHnGWA/GWKTd63HO00CNoj5hjFVijIUyxm4w+TvfABjGGKvtqUkeqTsWBiAcwHEA+Yyx7gBu8fqfKjPGonTPRQI4A+CsJ+r9qA//s0KhUCgUpYIydBUKhUKhKCILQFsA6xhj50AG7jYAz2gLOOcHAWwGRTNX+/DaUwA086QhG3ZA1sM53whqFPURgNMA9sDTqMrDGwBe9LzecIOXeBBUM7wT1FDqSZM/NRnALwC2gP6v73UyZAEYBjKGTwO4H7pUbU/EezaAfR45agIY7lmX5Xntr+3+V4VCoVAoShvGua+ZVAqFQqFQ/LNhjH0B6jb8omhZFAqFQqFQlCREtAAKhUKhUAQSjLFYAHeBxvEoFAqFQqGQEJW6rFAoFAqFQxhjr4JSmd/inO8XLY9CoVAoFApjVOqyQqFQKBQKhUKhUCiuKFREV6FQKBQKhUKhUCgUVxRXTI1ulSpVeGxsrGgxFAqFQqFQKBQKhULhBzZt2nSCc17VydorxtCNjY3Fxo0bRYuhUCgUCoVCoVAoFAo/wBj72+lalbqsUCgUCoVCoVAoFIorCmXoKhQKhUKhUCgUCoXiikIZugqFQqFQKBQKhUKhuKK4Ymp0FQqFQqFQKBQKhcKMvLw8HDp0CDk5OaJFUdhQpkwZ1K5dG6GhoZf8GsrQVSgUCoVCoVAoFFc8hw4dQmRkJGJjY8EYEy2OwgTOOU6ePIlDhw6hfv36l/w6fk1dZozdyhjbxRjbwxgbaXD834yxPxljyYyx3xhjzXTHRnl+bxdjrJs/5VQoFAqFQqFQKBRXNjk5OahcubIyciWHMYbKlStfduTdb4YuYywYwMcAugNoBqCf3pD18CXnvAXnPAHAeADven63GYD7ADQHcCuATzyvp1AoFAqFQqFQKBSXhDJyA4PS0JM/I7ptAOzhnO/jnF8A8BWA3voFnPMzuh/LA+Ce73sD+Ipznss53w9gj+f1FBoZGcDUqQDntkuFsWED8PvvoqUIbJSe/xkoPZcOX34JHDsmWorARun5n4HS8+UTCNftQEB2PefnAydOKD0HKP40dGsBOKj7+ZDnuWIwxh5njO0FRXSH+fi7QxhjGxljG48fP15qggcEjz8OPPQQsHataEnMufNO4PrrRUthzunTwN+OZ06LYehQ0vO6daIlMadNG7n1DJCu//pLtBTmPPUU6fnIEdGSmCO7ns+eBR54ABg8WLQk5mzdCqSmipbCGtn1nJJCeu7XT7Qk1mRk0HVHVgJFz/ffL1oSc+bNk//+/P33wKFDoqUwZ/du+fV84ABdt8+dK7WXDA4ORkJCwsXHuHHjLvm1OnToAABI3bsXcXFxAICNGzdi2DAyqcaMGYO3337bp9e6khA+Xohz/jHnvCGA5wC86OPvfsY5T+ScJ1atWtU/AsrKli30dfVqsXJY8dxz9FXWjd233wKxscCiRaIlMUfT86lTYuUw48KFou9l1XN6OnDbbcCAAaIlMefgQaBFC6BWCX+eHJw8WfS9rHqOiKCNu8zOgmeeAW6/XV4DSK9n2WXcuFGsHFYsWwZUqgR8/rloSYzR3sNXXxUrhxXLl9NXmfXctSt9lXUfdvIk0KcP8MUXQF6eaGmM0fR84IBYOawoU4a+nj1bai9ZtmxZJCcnX3yMHFmijZFj1qxeTffl7dsvRp0TExPx4YcfOn6N/Px8eq01ay5ZDlnxp6F7GEAd3c+1Pc+Z8RWAOy7xd/9ZFBYWbUJOnBArixn5+UDnzvS9diGTDU2uHj2AzEyxshiRmwvs3QsMG0aGmoyEhQF//knfy6rnJ5+kzIdNm+TV8++/0/mSmytaGmN27y76fvt2cXJYkZlJ7+HmzXLreds2imDIyMqV9HX1ajLUZKRdO+Cll2jTKauee/Sg72W9Jmp67txZ3nTMrCz6mpsLnD8vVhYj8vKAggKgcWP59Tx6NDBrllhZzFi+nJyUu3aJlsScmjXJ2NU+k35k0aJFaNKkCVq1aoVhw4ahZ8+eAEpGZePi4pDqcTpHREUV2QKFhQCAFStWXPxdANiyZQvat2+PRo0aYfLkyRfXdOzYEb169UKzZtRCKSIiwvD3hw4diqlTpwIAYmNjMWrUKCQkJCAxMRGbN29Gt27d0LBhQ3z66ael/6ZcJv40dDcAaMQYq88YCwM1l5qnX8AYa6T7sQeAFM/38wDcxxgLZ4zVB9AIwHo/yhpYBAWR9+v0aWD8eNHSGPPUU0D//kCVKnLeBDgnuWrWpAvDqlWiJSrJ1q1AdnbRZkTGDQnnQPPmQNWqcnreNT3XqEF6ltHzvm4dkJMDrF8PVK8up+e9fXuSKyuraBMvE5wDTZpQKqGsel6/ns7nmjVJPhn1vGMHUL48pbXKCOf0vnXqRHqWscZUO59r1ZJXz8uXA+XKUUR34EDR0hjzzDOUyXTiBMkqG2vXAnXqUFaTzHouWxaIipJzHwZQ1Ll3b0Bkc6hOnUo+PvmEjmVl0c+DBlG5hHbcY/ThxImSv+uA7OzsYqnLX3/9NXJycjB48GDMnz8fmzZtwtGjR53JzznZBcHBFw1db7Zu3Yply5bhf//7H1555RUc8WQ+bd68GR988AF2653ZDqhbty6Sk5PRsWNHJCUlYc6cOVi7di1Gjx7t0+u4gd8MXc55PoChAH4B8BeAbzjn2xljrzDGenmWDWWMbWeMJQN4GsAAz+9uB/ANgB0AFgF4nHNe4C9ZA5LgYKBiRdFSmLN8ORATQ0bab7+JlqYkO3dSSuuoUUB4uJw3gdatScaKFWlzLGMdUIcOFF3ZuhX46CPR0pQkEPS8ahXd5B96iOr6Nm0SLZExISHkeZeRnTuBo0dpMyKrnpcvJz2PHk3RSBn1/OKLlPo9aRJFTmVzru3cSZHmM2fo++7dRUtUkkDQ84YNlOYfGQksWSKfnjV5KlUix4uMLFtGeh45Ul49L18OdOxIKdbLl8unZ4A+f9Om0bX7jTdES1OSY8dIv2Fhpepw8U5dvvfee7Fz507Ur18fjRo1AmMM/fv3d/ZinNO9OSKCsgwM9Ny7d2+ULVsWVapUQefOnbF+PcUO27Rpc0kzanv1IjOuRYsWaNu2LSIjI1G1alWEh4cjIyPD59fzJyH+fHHO+UIAC72ee1n3/f9Z/O7rAF73n3QBzKBBlC7zf/8H3HQTcMcdwPDhoqUq4tgxSm/s358eUVGiJSqJthHu3h347js5N8YAUK0afT16lGRs106sPHqOHSOvdu/eFImUEb2ev/9eTj2PHAn06kVR50cekU/Px4+Tl/rdd2nj+fTTtDFp2FC0ZEXo9XzttYCnIYdULF8OJCRQkz4Z9axRoQI5UtetA/btk0/P585RPbtMculZvhxo2ZLuy0OGyKnn336jSNp33wFz5lCJzFVXiZaqiIkTgQkTKGI/fz5FTGWrd9b0fM89QO3a9JmUiZMni/ZhFSqQnmU7nzWCg+kzuHkzOaXdZsUK82P5+cD06UAz7+moHqpUsf79UiIkJASFumjtxdmyWiZBZCQ5ADk3LIHyHtOj/VzexJFk+vc8hIeHAwCCgoIufq/9rNX7yoLwZlQKH8nNBWbOJMMnLIxqlJYsES1VcbQ04M6d6QYQGSlWHiP69AG++QZo0IDk3LJFruYrubm0UVq5kozd5s1duZj6hF7PZ88C//oXNfiSiZUr6TPYsCGl+c+cKVqikoSEAPHxlP4dFyefnleupJTWqCg6l3//XT6HwcqVlEbYoAGlWct4zfnyS2DKFHn1vGAB0LMnZUDI2l9hxYoiPScnU4M5ma7bOTnk/OvcmfQ8YwbQt69oqUoSElKUcQXI91lcsYIcGpUqUZOdL76QU8+dOpGMt90mX+S5cmXKzhg4UF49DxpU1CW/c2c6p2XSc2Eh7W20+0lGBu29/USTJk2QmpqKvXv3AgBmz5598VhsbCw2b94MgNKN9+/fTwe0uuHISHqEhpLjwIu5c+ciJycHJ0+exIoVK9C6dWtLWerVq4cdO3YgNzcXGRkZWLp0aSn8h2JQhm6gcegQGUGa97BFC2DPHrEyeZPiKbXWZBw1Cvj6a3HyGBETQ55YxshA++EHchzIwsGDwNy5RR1u4+Pl1nP58sBXX8mXvvX448DkyaTn1q3NvbKiOHqUIqTbttHPMus5Pp7qYEND5ZSxRQvSc2oq8Mor8nXxrFGDIkAAMG4c8NhjYuXx5s8/gZ9+os2SrHres6dIz/v3U6RF2/DJQFAQdfEfOpR+7t9fvgjanDlkYBQUyKvnlBS63jBGXzmXS8/aPiw+nn5es4aMcdmoUYMcLk2aAC+/LN/9b9MmIC2Nvm/RQj49X7hAMpUtSz+fOkUZTqWAd43uyJEjUaZMGXz22Wfo0aMHWrVqhWpaRh+APn364NSpU2jevDk++ugjXH311XQgKoquO+XKUdlOSAid017Ex8ejc+fOaNeuHV566SXUrFnTUr46deqgb9++iIuLQ9++fdFSu3cFIH5NXVb4gfR0+hoTU/RVe04W2rYFnn22qJ5hxgza0N97r1i59MycSVGVhAQaMRQbK1qi4gSCntPTqSZE03O1avLJeMMNRd+fPk2pep06yZOmt28f8N57wC230Oexb18yyGUiEPT89NNFXve0NKqPbN0aqFtXrFwaqan02evXj+rtZWzoFQh6Tk8vchZo10aZZAwLK96MZs8eilLdfbcwkUrw22/keNZSgZ94Qs5rTqtW9L2Meq5alboYt29PP3/7LTlUH35YrFx6vv2W0oFHjiSHwX/+I1qikuj1rJU/yaRnLQVXMxxDQ0ut6VhBgXHboVtvvRU7d+4EQJ2PtU7LZcuWxeLFiw1/56xn7FFsbCy2bdgAZGejU6dO6OS5Fo0ZM8bw9/RrvF8LAMaPH4/xBg1vU3UjBpOSkpCUlGR4TBaUoRtoaBcB7aIQE0MpPufOyZM6c9NN9NCQzUgrLKTGP8OHk6F74QKwdCkZP40a2f++G3gbup06kQe+oMAwLUUIrVoV7/AXE0N1u7JQWEjRlfh4Sl8+fZrSpP77X3kMXW899+4tThYz0tOL12DLpmeAImcaMm6M//iDrjc33USG7qlTwF9/kYEhSyZJenrRewdQLXGDBuLkMeKRR4oyhWTU85491H2+Z09yGsyZQxlNZ8/Kc3/21vM774iTxYjCQrq+6J28gFx6jooC7r+/6GcZ92Hff09Nx7T5rCdP0uewXj2xcml467lWLWpuqav3FE5oKO0dtIhuSAjJLdM+7PRpijpHR9PP+/eT3LLsZSVApS4HGqGhtHGvUYN+vuYa4K67qGZEFo4eLT73TjZD9/Rp8tRpF9i8PKqx+e47sXLpMTKAPvxQnosrQCnf+oHkMuq5Rw/abAJybpi89XzhAkX/ZDqfmzShiLNG+/ZyZUDk5lKNvVarFAh6njuXut4eOiROJm/0m06AmgE99ZQ4eYx4+WUywAE59bxkCUXtz5yhn2WU0dvQ5bxIXhm4cIFqr7UGXjExZJyJHD/jzb591KNCi/hp76dMDkBvPT/4IPUmkYXTp8lg1GSsW5f6P+iDJKIJDycnr+aM1CK7LjVb6tSpExYsWGC96Nix4p+7Uow6XykoQzfQ6NmTNnVahEXrGly5sli59Nx8c8kIi2w3eqDoAlu+PD1kukkVFlJ6VNWqRc/l5tImQBa8L6ZXXy1Xh20zPcv4WdT0vHQpUL8+RQBlYfRo4OOPi37+6KPiP4tm717KzPjpJ/q5fHlKv5VZzzIaQDVr0vuoR6ZxJLm5VB+nZZFERNDotexssXLpMdOzTPcWb4fGoEFy1W6WKUNN2zzjSxARQc6/AQOEilWM6dOBG28sOj9kPJ+9DV3Z9mEXLgDdupEjVVYuXCjudNYMXZkMybw8ijRrhIS4ZogHCsrQVZQ+3hfY6tWLivplQNt0yHwTePxxklO7sCYn0wbg55/FyqWnZs3iEZ/33ydDTRa8DV3te5n0nJlJTipNz1rzCZlklB0zPctkXKSnF9ezjBvjGTOKOzDeeIMMSVmu22vW0PmxcmXRc6dOASb1Z0I4dkx+PYeHF69dr1qV5JZFzyZzQKUiEPRsZOjKpOcaNai0qFu3oud69Chq5CYDaWk0r1sjMpJKtmSaJ5+fX7z5lBbRlUXPEqAM3UBj6FDggQeKfk5PpxvV5MniZNKTn0+1IPoL7NixdIGVJfUoEAwgb6pUoa+yyJifD5w4IVcE15tA0PO77xZ1nQTk2zDl5dH15aOPip6bPZs6ycoyBkJ7r3QdKrF5M0VdZMFo06k9Lyvh4ZTSmpEhWhLC6HyW5Z6iEQh63rSJnJIaMTF0nsui52+/pc/e7t1Fzz39NPDoo+Jk8sZbz3FxVJ+tN9pEkp9PpRzen8ULF+TRsxGnThU3LEXjHS0NCqKHLBQWljR0Q0LIyDVpdvVPRCKNKRyRnFx8Y1ypEhkc+udEcvw4nWQyb0Z69KD0b31DItkMoMcfLx6pkC3Sp7XY1+v5t9+Ajh2pfkkGjDbGX35JhppM6G9SMur5xIniteGFhaRjWWQ00nPFinJtSGbOLJ7tIJue09Op98P8+UXPyWakGen544/pWikLRtlMK1cW1RXLiIx6zssrXo61bx/Vb8qCt57Dw8n5V6aMOJn0hIRQyu3zzxc9J5ueJ06kXg+ZmUXPybYP8zYiOafRj7I4ebUUZb0xXrEi7W1luv8JRr0TgYb3BTYsjIxdWS4ORpuRlBTgvvvIuJSBiAja1Om7+736Ko0LkIUlS4p7NgNBz7m5ZOwePChGJm/uvhtYuLCoGyFAN1Z93bNohg0Dpk4t+jkQ9Czbhik9nQxxvZ7nzaMokCyULVu8c3VYGEWuZBm5lpZGc3T1tWcy6jkkhM4Pja1b6X2UhVmzgE8/Lfo5JIRGnMlyzdm1i/p66Oedy6jn4ODiepbNAPLehwHAJ58AP/4oRh4jGCve0b1dO/psatlhojl4kJrxaWPhAPn0nJdX3NBljBy/WuPDy+Dhhx9GtWrVEBcXV+z5U6dOoWvXrmjUqBG6du2K0yZGdWxsLE5kZlJDWr1TqEyZYo7efv36IT4+Hu+9957PMqamppaQT3v+yy+/9Pn1AOD999/HeV2z2ggX0sCVoRtoGF1gZbo4xMTQuAL9cOncXJrbt2uXOLn0zJtH9Wh64uKKhr/LgOx6DgQDqFYt2tTpPZsbNtA8QVmaNUydWrLx1Ntvy2MAGaUFy6bnvn3pfdTreeNGSs+URc/PPQf8+mvx5+6+G2jcWIw83gTC+ZyeTp9DvZ5jYmjjKYue69Wjpnx6Fi4E7DqnukVqKtVF6hvsNGlC3axr1RImVjGs9CxLOua0aXRO65kwQR5n+ebNwMCBwIEDRc81aEDjuWQxdANBz96py0CpdTVOSkrCokWLSjw/btw4dOnSBSkpKejSpQvGjRtn/iKMkTzeGVcZGUBuLo4ePYoNGzZg69ateKoUO+hbGbr5Ntdib0PXDZShG0hkZ5MnSb/pBORqvFKjBkVS6tcvek62DdPkyVQbqWf/fnpehjELOTkkh7ehO3SoPClwtWsDzzxTfM6mbHr+5ZfijWsAYP16Sgk/cUKISMXQzmdvPT/8MEWBZMCscRsgj54TEop3eQdIRs7l0fP48fTZ05OcLE/zNiNDt3Zt6sirb1wkknvuIYNMj6bnkyfFyKQnN5ecVNu2FX9+/Hh6yICRnmvVIuefTLPFjZy8hYVynM8AzXv17lAukyN62zbgiy+KT2koLCSnqt74FYmRnlu1IgegDJ3UOSfHlfdEk5CQUjF0b7jhBkTrs5A8zJ07FwM8HcYHDBiAHy2yBCa88w5atWiBFi1aYKeWAVhQQPXiGRm45ZZbcPjwYSQkJGD16tXo1KkTNm7cCAA4ceIEYj1jAgsKCjBixAi0bt0a8fHxmDRpkqXsI0eOxOrVq5GQkID33nsPU6dORa9evXDTTTehS5cuWLFiBXr27Hlx/dChQzF16lR8+OGHOHLkCDp37ozOnTtfPP7CCy/gmmuuQbt27ZDuh3MoxH6JQhqys2neq3cqwZ130qByGTh8mGRp1KioNrdyZfI4yXITMLrAbt4MDBkCtGlDqSAiMdqMAHLVojVvTps6PdHR5J2VRc8vvUQy3Xhj0XN6I02fSioCMz0fOUKPxET3ZfKmdm0qO9DmdgN0Pt92G3XdloHffiPnnz6Sph/rIque33iDjF0ZMl2MZKxUSZ4mhwBw660ln9Ofz97vr9ukpQEjRtA1R3+PjokhPcuA2WdR68Yr+j0EaGa8t6Fz1VXAddfJMV88I4Oi9J06Fb8Gyq5nzumeMmoU8NprYuTS4z3mCgDuuIMeLvLkk08i2Re9ZWeT06B8edMlCQkJeF/f8M0H0tPTUcNzv61evbql4VclIgKb//tffLJ2Ld5++218/vnnRRHo/HzMmzcPPXv2tP3/pkyZgqioKGzYsAG5ubm47rrrcMstt4CZ9NcZN24c3n777YszfqdOnYrNmzdj69atiI6OxooVKwx/b9iwYXj33XexfPlyVPFkFpw7dw7t2rXD66+/jmeffRaTJ0/Giy++aCmvryhDN5CIji6aFann//7PfVnMeO89qlXRG95BQVSjJIsBlJ4ONG1a/DmZmsPk5JCx7fG2FXv+6NGSz4vg9Gmq/9Ff7IOD6eYvy0xnIz3LFI00ipYCZADNmCFHd8ybbqKHnuBg4+uQKO6/H+jcmdIJNWTSs5lxIVMEqHp1oEuXkmMzCgvpulOunBi59GzbRoaFPgpSqxZdD2WIAAWCntPTqV7cW8/XXAP07CmHY2Pw4JLPdesmT0fjXbto8sWCBcUN3WrV5NZzcLBc+7AuXUpmJ8oE53T9Cwoq3lA1KKholrefYYyZGpsAcNcttwBBQbg2MRHfa5FfLZ3Zh6jz4sWLsXXrVsyZMwcAkJmZiZSUFFztXYZhQdeuXQ0j1HaEhYVdjP5ee+21WLJkic+vYYcydK8UcnPpwy2605rmWfc+OZs2Ld78SRScm6dGAXLcBBo3NvYMv/02RSmzs8V3dxw2jCJp+/cXf16WVMxA0PP587Tx8I44xsRQJ8qcHPF6LigoXv8jG5wbRwZiYsgRI0MpgpUBJIueH3yQHt60bk1R/blz3ZdJD+fAtdeSU1efBty+fclrkCiM6tkBufRcoQJlLXnfn2Ux0jinTu9aFpiM2J3Pubni9zpm+zCZnC5vvFHyuf376TyfMKH4GE0/Yhp5zcigFOCmTYs79Dn36ySRmJgYpKWloUaNGkhLS0M1z/WkW7duSE9PR2JiIkVuAYQzBoSEILiwsHhtbEgI9S3wqi8OCQlBocdIz9FlR3DOMWHCBHTzcialpqY6lru87j3S/x3vv+VNaGjoRWM+ODjYtvTeiMwAACAASURBVMb3UlA1uoHEtGlAnToU1fN+vkwZ6mAnGq3BgDfLlhWfxSmKM2foRiSzAWSGPh1TNDKkCloRCHru1Il06Z2iLJOeb7utZEQXoJrYTp1cF6cEZnpu1IgMiz59xMil59Qp+mr2WZRBz2ZUrizHuZKZSfWGMl9zrAwgQA49v/wyYJRWKIsBpPWm8DY+zp8HWrQo3tFaFGZ6fuopklO0kathlPkli545p4c3lSpRtpj3HlcEWkTUuxmVn8dl9urVC9M82UnTpk1D7969AQC//PILkpOTLxq5AEqOP9IwiejGxsZik6fjuha9BciInjhxIvI8v7N7926csyiHjIyMRJZF5+l69ephx44dyM3NRUZGBpbqAiB2v+sPlKEbSBw6RI+KFYs/r6ULyHABk90AqlCBGlp4p0dVqEA3KBnew4kTaRSAt2dLJiPNTM//+Y8cjZTMNiMVKlDEQKbRM97Ipmej9v+MAX//7b483pjpmTF55ncnJZExXrt28edl0nOnTsBjj5V8XpaNsZmeAarp++ADd+Uxwiyi26cPsHevPDXtRsiu57Jlgd275ZjRbqbn8uVJThmYMQNYvrzk87LoOSWFMm50xhYAICqKnpdBRs1Q9DYks7PpfL7Mcol+/fqhffv22LVrF2rXro0pU6YAoEZPS5YsQaNGjfDrr79i5MiR5i9SUGBs6NaubejoGD58OCZOnIiWLVvihK6x26BBg9CsWTO0atUKcXFxeOSRRywjq/Hx8QgODsY111xjOLaoTp066Nu3L+Li4tC3b1+01E1hGTJkCG699dZizaj8jUpdDiTS0+lC4J3+JNOGKT2dUqO8mTaNHkuXit2AMmZcQ8oYNaTSN90RxV9/0Qxdb0+ibHpu27bk81lZNMLHz+k9ttSrRzM2vTeXjMkzXuGDD+gzp68tBeSKAKWnU/qqN9qGSbSerQygZ5+ltHAZnBr6eZYaHToAq1aVrCMXwc6dFAX3RjY9G2UL/fEH3RdFM3w48K9/lbw/V6pUfCasSDp3Bm6/veQ5IZuejRxXshhp6ekUbPCO3KalAW++SZ+BVq3EyGbHE0+U7FAvgvR0cuR7n7cy6Tk/n9LnvcsBCwoo6ly58mU5NmbPnm34fOXKlYtFQM1ITU29GBlPDAoq3gDK01MhNjYW23Rd4Js0aYKtW7de/Pk1T1OyoKAgjB07FmPHji32N6Kioor9vkZoaCiWLVtW7LmkpKRiP48fPx7jDbrNP/HEE3jiiScu/nz27NmL39999924++67jf/hy0BFdAMJsyiaTAbQxx/TeBRvjh0jD6PLKQsl2LQJeOEF43EUzZrJsSGRXc8FBRQVNdp0xsRQyqhoPYeHU6qbkVNj0qSSqXEiWLMGWLu25PNNmgCzZxefRS2CwkLSs9lnMTsb0N2khBAXB/z8M9V1ebNiBbB4sesileD994HXXy/5fOXKQMeOxhFzN9HOZ5n1bNa4TXtO9DURIAPXaBTTuXNUV7xunfsy6SkoIMeKlkqv5667gA8/dK3JjilWjitZ9Pz888a9KHJzyXnpPRfdbQoKqOTku+9KHmvTRo6mXnZ6lsHJm5dnnhYMyDG7mzHjvjw5OXRNF30+S4IydAMJ2Q0ggNK02rcv+bwsMq5bB4wda9yR7uefKW1YNGZ6rlEDeOcd40iqmxQUUGOs224reUwWPa9fT92/9XMENRYsKBlFFYGZnqOiaKSP6FTHkydJ1zJfcypVorEzRt0eZdkY//gjzXT2hnNg5syS83Xd5tQp2hAZ6bljR2D0aON6OjdJTASmTCk+t1tDFj1/9BEwa1bJ54OCgOeeE9+oz0rPHTpQOY/oBlCBYOjWqGEcsZXlmnjqFO1ljhwpeez4cWD+fPEd/a30fO+9QNeu7spjRI0axo4rzdAthVm6l0V+PpCaauyEPHuWSouM9j//QJShG0h06kQjALwpU4Zmo4k2gLKyKGpr5DHWImunT7srkzeabEYb46+/BsaNc1ceI06dMpYvPJxSzrznKLtNWBg13ujQoeQxWfS8eLH53OHKlY0/o25z6pT5KKaVK2mcikiCg4FnnjEuRYiLAwYNEt94ZcsW4PvvjQ0x2fXMGM3u/vZb92XSo71HRjK2aweMGUO17SKJjaVMocjIkseio8VfbwDgs89K1hwClN5Ytqx4Ga30fO4cZTuJ7lLepg3NeDW6/91wg7ET3W2mTwd+/bXk84Gg53XrgF69qN5ZJFb7sOHD5Sg3KVfO+LqnjRsSHdHNy6N+M7m5JY9pZW8FBe7KJCmqRjeQGDPG/JhXbr0Q/vqLOrQuWAD06FH8mFaLkZnpvlx6MjPpZmRUMxcVJV4+gLzFV11lfCwlhQwQo8iGW5w9Cxw+THWw3vVodepQpFd0U45A0HNmpnlt4X33US3dZ5+5K5Oe6GiK3BvRqpUcMzdnzqRyifPnSx4LBD3LIGOZMkC/fsY1uvn5FAWqUKH4iA232bWLHKneHcoBSvUXHUUD5Nez9veNZPzjD4reL14sNprWurVxTwCAau5l4MUXaZ9z880lj8muZ62RqWgZExNpRKFRajAgx4imjAzaPxjNEC9bVvwoT82I9e7lAhRlZihDF4CK6AYWVuljZ86Qd0ckWjqMd1dogOo5ExLML2xukZFhLB9Az585I76uYepUupka0asXYNWFzw3WrKHNpadNfTHi44GffqL6WJEEgp7r1jV3WFSsKD69LDeX3iez605hoXivtpWea9akqIbotNuMDGsDSLSe69UDvvzS2MDYuZPex4UL3ZdLz1tv0bXPiFGjgEWL3JXHCNn1HBYG3HgjUKtWyWOa3KJlPHyYHjJj5dCoVMk4wuYmVvswWQIO3bubd0ofM4YMSdH35/37zffUzZoZn0duohmxRuUG2nOi78+SoAzdQKGwkDxcRkO2AWowcP/97srkjZUn8eqryWssevZmVpb5xjgqijbFohspWSGDAWSlZ1mwi66EhopvsLN6Nc21NEKGjfG8eSTH9u0ljx0+TJ7kqVNdF6sYmZnm5/Nzz9EYCJFdZDmnTZtZp28ZzmcrZNkYW53PMlBYaH1vkUHPCQnUoC0hoeQxWSJ9Tz5pHCkFKIMkOlqsjHZ63r5dfP+HoCDKzjBKXdbkFv1ZPHvWvMY1MlL8PoxzMiRF16xb4cTQVRFdAMrQDRyysujCYJbOIUPKjJUnURZmzzbviijDTSAzk9J/zW6Wsuv5/HnydE6Y4K5M3lhF+p58krzuousOrZBdz9pmRPSGySqKJgOMAUePAi+9ZHxcBj1//jl1fjZqXiNLpM/KobFgAdWMHzrkrkx6srLofDD7LC5cCMyd665MviCLnq2u24xR/avI80XLcDHTswyzu2++mWpwmzQpeUwWx9Wdd1LNtREyOF2sjEiAHL2XOUf+4YcfRrVq1RDn1XPl1KlT6Nq1Kxo1aoSuXbvitEnNd2xCAk5kZhrLGBYGNG8OREejX79+iI+PN5x3a0dqamoJ+YxISkrCHKP+BDqmTp2KI0b3GBdQhm6goN2AzC6wMniMrSJ9nFNjE7N0FbdgzNxZcO+9lKpSp467MunJyKANm5knTnY9ly1LG3vR4wG++sp4vAIgvrYGIKOibVvzlEvZ9RwRQe+j6A2TlQG0bh1wyy1U1y4rEycC33wjVoaMDGpGZNToSRY9WxlAubkUSRPZeCwqijqcDh1qfDw6Wnzfgk8/pcwqo3r2iAi6N4rWs1XkXhZHtF4WbyZPJkeqrEREAEuW0F5HJHYZV9oaUVjVvwKlMkIxKSkJiwzu/+PGjUOXLl2QkpKCLl26YJxZg9SgIOCaa4z7kDAGlC2Lo8ePY8OGDdi6dSueeuqpy5L3clGGrsIeuwusDJGBu+6iURpGcyEZo4Yie/a4L5eeUaOAGTOMj5UvT+k+Ig0hu7RgGfSckUHvkZmeK1QQb6RFR5uP59m9G0hKMk7JdYsTJ2iszLlzxsdfeEF8CpyVnoOC5NDztGnAu+8aH8vKok3d0aPuyqRn716KXmzcaHy8QQOqkRVJIOhZ9o0xQOUQRptOgEa6mEX13eLQIfo8GhncQUHU2O2ee9yXS4+V40qGSF+tWhTJu/tu4+MbNpCTVSSffEJRXaPeBEFBdKx2bffl0uNEzyKvOV4R3VmzqPF7UBB9nTW/wmWnBd9www2INug6PXfuXAwYMAAAMGDAAPz444+mrzFhwgS0atUKLVq0wM6dO4sfPH4ct3TpgsOHDyMhIQGrV69Gp06dsNFzLzpx4gRiY2M9/24BRowYgdatWyM+Ph6TJk2ylJ1zjqFDh6Jx48a4+eabcUwX2HjllVfQunVrxMXFYciQIeCcY86cOdi4cSMeeOABJCQkIDs723Cdv1CGbqAQCBHdBg2A3r3N03cqVhS/Gfnvf4HffjM+dvQoDYPfutVdmfTYpX8/9BDNaxTJHXdQN2CZ9Tx2LHUQNeLMGTKQ9u1zVyY9dnqOj6cMCJFoxoXMem7SBGja1PiYDBumw4fJ+Wf2Pq1bZ97Z2i3s9Pz662Ssi+TTT2nUlREyGLo7d9I4s717jY+vXi2/nu+/n647IrGK3Mug55AQaiJoVvYiwzVxxw5g82ZzPS9cSLXaIrEqObnqKuqvUKOGuzLpCQ+ne0tkJGbNoilwf/9NvoO//waGPF8Zs+YbZMCUAunp6ajh+d+rV6+OdLOO8oWFqBIUhM2bN+PRRx/F297Xl7Q0zPv0UzRs2BDJycno2LGj6d+cMmUKoqKisGHDBmzYsAGTJ0/G/v37Tdf/8MMP2LVrF3bs2IHp06djzZo1F48NHToUGzZswLZt25CdnY0FCxbg7rvvRmJiImbNmoXk5GSULVvWcJ2/UIZuoFCtGqVFmXVp7dGDNvciO9X973/WF1AZGuxY3UizsqjZl0hD1y6i266duTfZLRITgYEDzY/LoOdXXgGWLjU+JsOGyU7PKSkUYRE5lP622yiybMa//w3ceqt78hgxcaJ5zX0g6PnXX4ERI8R2arW6JgLAY4/ROBWRdO5sPnZGBodGSgpF0sxmqEZFUbqjzHpOTjbPPHCLt94CHnjA+FjNmsCDDwIxMe7KpGfHDnL8HD9ufFwGPVtFSwFy5l9CvWapYiVjbCwwbpz5iEU3CA6mDJeQELzwQsls//PZQXjh41p+328zxsDMHBaFhbjruusAANdeey1SU1OLHw8Odhx1Xrx4MaZPn46EhAS0bdsWJ0+eRIpFyc+qVavQr18/BAcHo2bNmrhJd39Yvnw52rZtixYtWmDZsmXYbpI553RdaaDm6AYKTZpYN/i54Qbz4n63eOMN4OBB62ZPIjed2g1I5hqgKlUoBbx6dePjx44B27YB7duLq/nato3S9Bo3Nj7eu7fYmZt2epah8YpdRHfxYnJs3XILOblE0L07Pcx47jn3ZDEiJ4eMsNdfB1q2LHk8EPSsT8cUpefOnYGGDc2PHzlCKfZGc3bdIC+PGk61bEmbYG8qVwa6dDHuMusWgaBnu87V//d/9HXlSnfkMeJf/zI/VqsWMH26e7IYsWkTjf67916gatWSx2XQs12DPtHlT4WF5EDt0MH4OOckX3Cwcd8AN8jOpmtepUo4cMC4IdWB9DCgsKDUS91iYmKQlpaGGjVqIC0tDdU8n6Nu3bohPT0diYmJ+PzzzwEA4Z49YHBwMPK9RwkZGLohISEo9BjnOTk5F5/nnGPChAno1q1bsfUljGcbcnJy8Nhjj2Hjxo2oU6cOxowZU+zv+LqutFAR3UAhJ4eaXZhx/jylT2VnuyeTN3YX2HbtxM5XdVL/ql8ngvbtqYmSWQ3NkiW0qTt40F259Dz2GPDII+bH//Mf4Nln3ZPHm0DQc1QUnQ8GNToXjwNijbRDh6wb/OTmim0A5KRvQdOmYp0uTj+LIvX88MM0u9KMRx8Vm0Vy6hQ5/8xm+UZHU2TcyinjbwLhmpOYSI4zM0Q7onNzKZXfLCquITJrzU7PVaqQk9qo4Zdb2EV0RZe5BQVRvXqXLsbHL1ygecQiJzdkZQGpqUBhIerWNV5Sty4zb1Z1GfTq1QvTPP05pk2bht69ewMAfvnlFyQnJ180csG59fijkJAShm5sbCw2bdoEAMW6JHfr1g0TJ05EnieDbPfu3Thn1j8EVF/89ddfo6CgAGlpaVi+fDmAIuO5SpUqOHv2bLG/ERkZiSxPAy+rdf7AkaHLGKvGGLuTMfY4Y+xhxlgbxpjt7zLGbmWM7WKM7WGMjTQ4/jRjbAdjbCtjbCljrJ7uWAFjLNnzmOfbv3UF8vbbVDdglhKzbBlt6rZtc1cuPXYX2HHjxNaXap1FzWQMCwPKlBGfdmuFDBsmOz0Dxo0w3MLOAAoPp82ISBl79aJUfzNDV4bGKz16kBFkxuDBQKtW7snjjd2mMzycUg0fesg9mbwJC6OaPrssEpF6zs62PhdER4ACYW63kx4aAPUHEMXLLwNvvml+XHTJyd9/k/PPzKEBUNR+ZImtpHvY6fnee4G0NOPMA7do1Mh4VrKG6PM5N5cc9WaBm/Bw8fswLToaHIzXXwfKlSt+uFw5SiS6HPr164f27dtj165dqF27NqZMmQIAGDlyJJYsWYJGjRrh119/xUirz7tVNNkgojt8+HBMnDgRLVu2xIkTJy4+P2jQIDRr1gytWrVCXFwcHnnkkZIRYh133nknGjVqhGbNmuFf//oX2rdvDwCoWLEiBg8ejLi4OHTr1g2tdeUmSUlJ+Pe//42EhASEh4ebrvMHlu4IxlhnACMBRAP4A8AxAGUA3AGgIWNsDoB3OOclrt6MsWAAHwPoCuAQgA2MsXmc8x26ZX8ASOScn2eMPQpgPACt73k259zibP2HkZlJJ7/ZaBwZ0m5ln2nZoIH9RqNiRbGbkVGjqMXfgQPGxwNBz889B0yZQp2FRWC3GQFoMyIzMjg07PQsOgLkRM+iGTKEHmbIoOemTYFOnYCpU42Py6JnK+dau3bAddcB77zjjkze5OVRgyKzrsvdu9Pm2SoCI5pA0HNoqHinS9my5nqWAY/BZIroiO6WLTRab8ECcqYaIfqzWOBJSQ4Kulgy/sILtC2rWxd4fXQuHmi5Fzhb17hbvQNmz55t+HzlypWx1Ky/iI7UZcsulq8lJiZihXd/nDp1EFunDrbpgl9NmjTBVl0Pmtdeew0AEBQUhLFjx2Ls2LHFXiIqKqrY72swxvCRSdDqtddeu/i6evr06YM+ffrYrvMHdlHZ2wAM5py35pwP4Zy/yDkfzjnvBeAakKHa1eR32wDYwznfxzm/AOArAL31CzjnyznnWo7HWgCCe55LjF0UTYYUOLsaoAkT6CohMvXIjv37qcOnKE6csG5AJMPG2E7PYWGUbihKz61bU+qRVZqeaEaNMk/dAuRwaDi55mRmitOzXeQeAPr3p2ZPstK6NXVmvvFGcTI4remTWc/a/HFR/Oc/1udqcLB4I7duXWD0aPPjUVHk5JVZz6KNNLuGXocOUbaOyDpnO0aMAH7/Xdzfd5KhITq7oKCg2Pn6wAMXM5mRmgo8cG8BpadblRP6m8aNYZpXDVDqsh9SqwMRS0OXcz6Cc24YWuKc53POf+Scf2fy67UA6AsJD3meM2MggJ91P5dhjG1kjK1ljN1h9AuMsSGeNRuPm3XBu1JwshkBxBpAS5YUNbQw4sIFSlm5zEHbl8xvvwH9+lFzFTPKlDFvy+8GTh0aovRcWEibIbvNCOfA2bPuyaWHMfKyWnndX3yRuk+KYu9e68/hVVfRTMabb3ZPJj2anu0iuiL1fP31NBPZKn06JUVsF/UXX7SO6JYpQ91kQ0Pdk0lPIOjZSeRedAQIsL5vZGZSl3JPLZvrFBaSEWaVov7gg8CiRe7J5E0g6Pnjj63LwwoLaWbynj3uyeT995s2pfF/ZtSpAzRr5p5M3jiJ3IvWs5ehWwLt2GXO0vUr587ROS+zjC7hUzMqxlg7xtgixtgKxlipDdZjjPUHkAjgLd3T9TjniQDuB/A+Y6xEW0jO+Wec80TOeWJVow54VxJOGgwAYr1grVtbd+8UbaTt3EnD3C1qDzBpEvDqq+7J5I1dtDQmBpg7V1y0knPg+++pFskM0dkFq1bRzE2rFPQNG8zHD7mBneOqbFlqHmNXC+0vsrJI106ca6L0XLYs1aN5F1DpER0BWr/e2tDOy6NRWKLmWjrR8623UlqzKGO8c2d6f8xG6wHiI0CvvGJdtMcY3Vs2b3ZPJj2anq2uJ1dfDXTtWupdZB3jJKIrWs9hYeZ9FQDx+7CsLNrnWDmlUlKADz8UJ6MTPQ8d6vfeCtzK6VO3rvV4Iy1SKsqILCgAdu2y1uH588DRowFv6FrqySGWVzTGmPeMk6cB3AlKaX7F5rUPA6ij+7m25znvv3EzgBcA9OKcX+y0xDk/7Pm6D8AKAAbzI/5B9OsHDBpkfjwigmZKijKAMjOBL76gvA4zRDdeceJJXLqUamRFYWcAhYdTalSdOuZr/ElwMHDHHUDz5uZrROt5/Xrg3Xet14huyOGkodcXX4hLMQsNpeiFVXp127Y0u/sSa5Qum99/p5pMK8eV6MiAnZ6Dg6nj8bJlrolUDCfXxObNgQEDxI0zq1KFUrvtHBoi9fzTT8Dq1ebHIyLI2BV977O6t6SnA3PmiOukftNNwJdfGo/t0ejTB7jnHvdk8uattwBPR1xDZNGz1fm8ZQtl3oma3ODks9i/v7Uz/TIpU6YMTp48aW5EhYZSto0ZmjNIlBGZn09ODat7nxZ1tlojOZxznDx5EmWsdOEAuwTuTxljmwGM55znAMgAcDeAQgB2HXs2AGjEGKsPMnDvA0VnL8IYawlgEoBbOefHdM9XAnCec57LGKsC4DpQo6p/LklJ1seDgig1ShR//w0MHAh8+615x0HREaDMTHqfrDbmoiNAPXvaG0C//kprEhPdkUnP6dM0AqJ1a/O5lU2akEe2QgV3ZdPIzCxKXzZD9MY4I8O+M+czz9BcSc9QeFcpV47GSFnRooXYcWGLFpGh/fTT5mtEOzTs9BwUJDZKVb48dVmxSv8+e5ai0k2aWEez/MX69dQ7wWrj27GjuLmlgPx6dlIXuXUrGZGrV1NZgNs0aGAdtQesywDc4PPPaZ7zgAHGxwNBz6Iz6zp3pikiVvfn06eB48cpy8AP1K5dG4cOHYJpyWNWFkVtrZx7585RfwURzUsvXKB+LozR+2REdjat2bXL2miXnDJlyqC22bhNh1gaupzzOxhjtwNYwBibDuBJkLFaDtR52ep38xljQwH8AiAYwBec8+2MsVcAbOSczwOlKkcA+JZRfcsBT6OrpgAmMcYKQVHncV7dmv95HD5Mm3OrmZDbt9OFtmlT9+TScJKOUqcOzUMUaQBVqGCdmiXaAHrpJfs1gwYBN9wATJ/uf3m82baNOoguWWJePxoXJ3YGnpb+badnkQ6N666j98kK0Rum1FTaaJjd7PPy6LoUHS3mnNayH6xqI+PixDYpchK5F2mMV6kC2HW+/Osv+rzOn0+OOLeZMYOybKwM3aFD3ZPHCNn1HBFBqaCNGpmvEZ12++efZGB06GC+prCQ1ojqtG5XWgQA8fHi5HMS0RUdcLj2WnpYMXYsZRT5aR5xaGgo6tevb76genWgd28qNzBDxD5bY9Uq2of9+qv5e7l+Pa0Rdd2WCNuWXJzz+YyxhQAeA/ADgNc556ucvDjnfCGAhV7Pvaz73nCnzDlfA0BgqEBCrroKeOIJYLxFYPuBB4B69aiG022cpKM0aQJ8Z9a7zAXKlLGuuwBI/pwcmvVmNsrJn+Tn23fKE2mMOx3pcuEC1YSJeA/tOmMC5HSJjXX2fvuDL76wXyPSGF+1ilLk16+n6L0R+/dT58eZM3FxBoObONl0DhtGD1E0bmxtXABi9XzuHG0mo6PNm6+IjgA50bNonIzWEzm7u0ED+2uOaD2/9RZFk/fvN1/zxhvU4C03V8yIHyd6FtlxuXx5oFs3anBnhujSon37yDlpZWhWrEgRyQsX5NWzSAIhci8RdjW6vRhjywEsArANNOO2N2PsK6PmUAo/kZtLxpfdiSc6AgSIa57jhPHjqQmRFZUqUXRKRGfonByqDXnzTet1suv52DEycD//3B2ZvMnNtf8cPvEERapkbr8vMgLkdNQHIPazKPNmBKBN7/Dh1mtE6vmHHyjld98+8zWi9exk0/nFF7TJP3bMep0/yMuj9zAmxnrd2rVisnAAqiW0M7Jl0LOTqDgg5nzRHOAy73GuvZZKOqyijaIjuk8+SZl9VgSCnpOSxNWLh4VR2ZBZ+RhADtbsbDFOaMmwa6/3GoDuAPoCeJNznsE5fwbASwAsWgwqShWnRqTISJ8TD1NeHqXK2RlyInnsMfpfqlRx/29r76Fdcx/Z9Szak/j118CmTWL+thOOHaON8YwZ1utERvqcRO5F69nJxnjhQrrhWxlyolm4UFwH8EDQs5O04LAwikyLkDE0FDhwgGrqZWXiRHqPTpwwXyODnp048wEx18WsLMp6sJPx5ZflNi6qVKHxdnZ9X/yF7Hp2sscBqGlbSor/5TGiWzeqqbeKigcFBXRtbmliZ+hmArgLQB8AF12lnPMUzvl9/hRMocPpiScyMvDAA3TiWXmYQkMpVe7kSffk0jNoENV+yEog6NnJxjg8nC6wImtg7UZkbNhAnVy3b3dHHj0ZGdRAwm5e8yefAD//bL3GXzj5LIrW808/UZdYKwoKaKaliE6y+/cDCQnA4sXW68qXt57Z6E8CQc9OIrqijTQnfPYZMHiwmL+dmUllGla19OHhlDrs57EupjjRs8i026pVyVlv1/QzNRVYs8YVkUrw7rtUvmbXjbdBA+t+L/5Edj073YeJ7ufihGefBb75RrQUwrEzdO8EUBlUy3u/zVqFv3DSYEA7LmozUrEipVLYbdhEGmlLl9KMOSv27KFRTn/84Y5MepxG7p9/LDjQIgAAIABJREFUXlytc//+wC+/2NfeitTzsGHWIyAASk9atQpIS3NHJj1O9VyrFlCjhv/lMSIzk4wbmfUcEWGfeSEyHfP4cRrlceGC9br58607R/uTjAxnev7qK/NOs/7m+++djQsDxOh5xw7gttvsZ+T++ae9Y8ZfZGRQUzm7esfrrxd7zXGauixqn8OYsz2OKPnS0ui6Y1eS88knVLYgAid6TkigRlAixig2bEijtu6803qdSD2/8w6N47Jj2jRx2UISYWfo5nDOJ3DOP+WcG/bQZowJGqL4D6JWLbrR23VpfeghYOpUV0QqwcKFzv626HRMuwvs+fO0qROR6ui00VOTJtbjQPxJvXrOZjWL1POMGfapyyIjQE71vHYt8OqrYhrY9OsHTJliv27cOForghdfJKeLFYEQGVi/HvjgAzF6drLpBKgDqdXsbH/SsCE9rBCp58OHKfPi3DnrdRUr0iiSwkJ35NLjtJ59/nyq8RTBjBn26d8NGwKjR9N9yG22bKGsMKtmWYBYPTttovTBB7TPEYETGevUoVFSdnXv/iA4mEqL7CLeUVHi9LxrF/UYsUP0dAlJsDN05zLG3mGM3cAYu6h1xlgDxthAxtgvAG71r4gK1KwJPPWU/dzNli1pQyKCadNo02uHqAhQYSFdlJxExQExF4fatalxjZ2ed+8mIyQnxxWxirFiBbW0t+Pxx+09ov5A07PT1CiRNUB2n8Xff6d6r7Nn/S+TNy1bAvc7SOJJSgI6dfK3NCUpLKQOrL/9Zr1OhlovJ1GqwkIxeu7Thz5jdmzcSJ9HtyksJCevneOqenVKCxYRAQoEPTs1dF97DXj/ff/LY0THjjSax4patYAxY+w7mfsD7b5rp79A0LPItNtPPrGvYc7PpwwJERlXf/xBYx6t6tkB4JprqKmWXcaOP3AStAHEz5GXBEtDl3PeBcBSAI8A2M4Yy2SMnQQwE0B1AAM454Jycf5BHD9OHpyCAut16enOPMv+wOmJd9dd5vNX/cnZs3TzkbkJQtOmNGLBbrO2ahV5ls0GhfsTbbyDHU88AdwnoIxf07NTh4aIm0DNmhQFtfNWi/wsbtpEM5PtOHDA2brSxqmeo6MprVREOqbTyL1Ip0u3bsCjj9qve/55Mc2WsrLo765YYb2uWjWqgW3TxhWxiuG0tEhkFkn37sDAgfbrRKVj5uRQhNEuWso5cPQocPq0O3LpcerQqF+fZgHLbgCJivTdfz/Qtq31mnPnqIP07NnuyKRn0yZy+GRnW6+75x7g22/FNHxyGrlXEV0A9hFdcM4Xcs4f4JzHcs6jOOeVOecdOOevc86PuiHkP57p0yld1c5DuGoVbepEpN069SQ+95z9uA1/kJNDHrjata3XRUZSHY6Ii8O5cxSNtEthFB2lcqLns2fF1r/ayRgRQVFLEaMiOnQAvvySNudWiNTz4487M2yGDwfuvtv/8njji55/+omui25TpQo1PKtUyXqdSD3v3etsJI+ojbFTPQN03czL8688RjiVsVo1ytYRkYmTlASMGGG/TpSejx0j559dPSHn5Ch87z135NLjVM99+lD2g4jJDR07klPDDlF6Pn+e9ql2DUlF7sN8ueaIwuk+LDraPkD2D8DW0FVIwBlPeXRkpPU67YMvYgbsmTPWHR31WHUE9BfVqgHJycC991qvCwoCrrrKvjmLPxg/nnRoZ+hq77PMen7ySSAx0f/yeJOdTd0xo6Ot1wUFUWrUww+7I5cep7WYgaBnUTOntWuizJuRO+6gSKTddbtChaLxOG5z++3k1LAjKkp+PUdHOzPmSpuICKBxY/uxcL17U8RSRNptRoYzJ4Dseg4KovNJpIx2ehbJSy9RDbMdoq7b+/aR82/ZMut1QUH0Psus51WraMrI2rX+l8mbFi2c7a+++oomTPzDUYZuIHDmDJ10diNTtA3VGcO+Yf7F6cZ4xAj7CIdodu92lp5b2mRlOdOz9j6L0rPdxh0QdyO9+mqKDtgNpBfJM884S6UNhPM5MlKMfNpny8lnMTGRUull5ZZbgNxc+3Q+f+D0fBZlXPii53LlxMj4yCPUzd/uui2SuDj7sTiAuPPZqTNfWyNCRoCu23Z6/vNPer9XrnRHpkvh/fdpn+M2vpzPIu8tkZH2eg4JobF1IkoRPv8ceP119/9ugCLxlVlxEe3Es0NbI+Jm/8cfFJG0o2zZovo6N1mzhjaSIuoJnRIIevZFxqwsMR0JndK3L0We3ebMGfsZugAZaCdOiKlp90XPIs7ndu0oQuXkvTl3jvoXuM2IETSuxQ4nnwV/kZXlW+TebT37sjEW5VxzysGD5NSwi2b5A6fn87PPihmt56sBJELP//kPcOSIs7XbtzsrCShtqlWjeno7IiPFzNH1xaEh6nwOhH2YU+bOpV4pMu/DXMCRocsYm+HkOYWfCIQTr2pVSuOwQ5PR7YZZaWk0xsPJCT9iBNUSu41TPV91FXmNbxXQ8Hz1amczP0XpefVq6vZ88KD92tRU+7nK/sCpnsPC6Jyym4lY2nBOxqsv1xwRDfBCQpy9N6I2xgcO2HfuBKixTlKS+waQL3oeMEBMhOrGG4G//6bGNHaIigCNGgU8+KD9usJCYMkSuu64iS96rlGD7i9uEwiGrlNElZxwTtcbuzm/ANUQP/WU++US2nvixLn2zjsko9tMmgSkpNivE6nnhg2Bjz6yX5uSAnz9tZiyGIlwGtEtNkCPMRYMwMGdR1EqPPqoszSF6tVprqTbBlBODqX6rltnv1bUxcGXG+kff9iPLfEHTtNFy5Sh1Cgn/0tpEx/vbIahKKfLnj3Ajz86qwOX3WOcm0ve+eXL/S+THs6BBQvsR0AAQM+e1BkzLMz/culZvZpqS500KxGZdutEz5zTeLY///S/THrOnyfjy4mMDRoAN9zgfnpueDhQt66zzqai9LxlizOHmahroi963rGDOv+77TDo0oVqHZ0Y2U8/TTNW3WbMGGclTaL0fO4cXUuc6PnPPyl92e1mT77sw267DWjf3r/yGBEURGUQdogqLTp/nmqdnRivIsufJMLyrsUYG8UYywIQzxg743lkATgGYK4rEipoTqWTzqbh4ZQaVbOm30UqxunTZIhv3my/VtSJ52sNkIgN07/+BTz2mP06zoEJE9w3xs+epRl4Tmp7OnSg+Zdup0cFQmTAqQEUFORsVmxpExREnTubNLFf27QppUa53bztjz/os+iko2SFCmJrvewQtTEODqZaLyeO0UOHgFmz3B/r8vvvdG9x0qn4/vudzX4ubWTXsy9RtORkSl92u2N+pUpUWuTEwLjvPjEz2n/9lUqg7BCtZ6dpwfrfcYsuXYDvv6egjB07dpBD023Gjwc+/dR+XWQk7dkaN/a/THq0e5nTHhqA3BkQLmA3R/cNznkkgLc45xU8j0jPiKFRLsmo2LSJxkA4Ye5cYONG/8rjjS8X2Lg4GknitENzaREIBtB99wEPPWS/jjHajMyb53+Z9KSlURRt/Xr7tS1aUNqR211xA0HPd9xBIyjsCA0lA9JtGTMzKSp+1MH0uIwMSrl12wDyRc9duogZL+S00VNoKEUs3TbGy5Sh2arx8fZr//gD6N+fMibcZMUKiqI5qWMeONBZB+nSxqmhq53PIvT86qvOZgyL2hhv2AB88YWzjvTp6VQD6za+6Ll7d8pEcBNf732A+5/FunXJSeEkQ2PcODIk3WbWLGDRIvt1oaGUieN2BuWl6Pkfbug6Kv7inI9ijNUCUE//O5zzVf4STKGjb19K4Zg5037t4MG0iXZztIsvJ158PKVGuU316jRjzknkSVStV2oqzXV1MttVhJHmS2QgJ4f+n5o13XVqnDlDabRO9NyyJXDhgv9l8sbJfFoNEXres4c2Iz/+SCNRrEhOJkNy2TKgc2d35APoPQkLc5YyPXSo/+UxolMnoE4dZ2tF6PnMGUq5bdrU/totasPky/mcm0vrq1b1v1x6fBmt17q1s14WpUnFis6nCIjS83ff0WxcJ+PeXnmF6g6d1L+XJk4NXQBYuNC/shhRvjyVuTVtar9WlJ7//JMcqF272q+VPeNKo7DQ3ZIOX/bblSpR3b2IkZ4S4cjQZYyNA3AfgB0AtFwxDkAZum7gy4knwkjz5cQrLKQU2LAwZ1690mLgQHo4ITaWatLcpnVr4J57KCXTDlEbY+1v27F9OzlbnBhLpUlkJNCsmbO1IhpdAFRbU7assyiViLRbXxwaokZd+boZ4dz97sYffOB8bZ06FCFwk82byTnhxEkhMh3TqZ5Hj6ZyCbedVy1aOL/miEjFPH8eOHmSnL12nzGRPTR82eOIMoDczkTzhVq1nO0dAHFNBCdOBL75xpmTIhAM3WbNgFatnAWhSoty5WhP5SRj4PrrnXcKv4Jx6oa4E0BjzvltnPPbPY9e/hRMocNpChwgpsGOL4bu3r2Uzvrtt/6V6XIYMULMkG3Zb/aBUAP04otixmP4QnQ0MHKks7WRke5vRgIhNaqw0Hlk7J13qDtzbq5/ZbocNm0CPvzQ3b8ZCHr29ZqYl+e+nufOpc7LsrJ0KW2Kt261XysqpdUXIzIykpwZbus5JsZ5/5MePZx14i5N8vOd9SwAKJupoAC4/Xb/yuRNIOjZl2tOWJj718SmTSmAkJDg7t8NYJwauvsAuOxuVgAounH7cnFw+8Tr2ZOitC1b2q8VtWF65BFndZGi0PR8pTg0AqE2ZOZMiqS5mQKn3bid6nn9euCHH/wrkze+Nm4D3NfzxInArl3O1oaFkWHspox5eeTQe/999/6mrwTC+eyroav9jqw8/jiVF7mJL+dz/frA4cOUWeQmvjrzAff1vG2b8xTwM2eogZubfP01OfScNIsMCnK/gzog//mcn09N+mTeb/tCZiY5M+b+s3sHO/2knweQzBibxBj7UHv4UzCFB182I9o6t088xqg+xOlMS0BM3aGT5joAjWhq08bdG5Wvev7mG2DOHP/JY0Tv3nQTrV/ffq2oyMCwYc7m/AJ0Uzt0yF0ZfdVzWJj7Kbe+pC4HwvgCEdecrCx6T5zq7o03gCee8K9M3vhiAFWtSlkuffv6VyZvvv7aebqvCAPo9GnqTj57trP1qalU1+4mvlxzQkIoaul2F3XZDSBfEZlxFRFhvzYvj5z/Cxb4VyZvfNFz797A4sXujlEMCaEMquefd7ZehJ6/+IKyC44ds18bEkI6duoUvkJxVKMLYJ7noXCbcuWoHXuLFs7Wv/OOs86Fpckvv9DjzTfta4DKlSNPooibQHS0s7Vnz9Km7tQpoHZt/8ql4asB5KQ9f2lTvjzQqJGztaL0vHat85RWUQaQ/m/bMW0a3aTGjvWfTN7ccQelR1WpYr+2XDnyFsfF+V8uPc89Rzd7J04NkXp2GhnYssX9lHtfZAwJcbfBoUZ4uHOjS4TTJTOTzs/sbGfrIyPd71zt6zXntdeAa6+lzsFuMWOG8xTVjh2BqVOd389Lg7Q0miv+/PPAzTfbr4+MdD4po7TwZexMSAiNFqtWjTLy3MKXZnH16tFDBE4dlBUq0ExbNzl5koxcJ6O4RO3DJMNRRJdzPg3ANwDWcs6naQ//iqYAQA2b7rzT2SB1gLzLTrrulSa//04pesHB9msZE+ftdLrpFBEZiIoCPv6Y5s864ZdfqP2+myxbRs1enMAYMHkyGU1uIntkwNdN52+/0abOTapXB2680VlzJMaAXr3cb942dy45NZwgQs++REu1dW5fE3v1Ar780tmGCQCmTweWL/evTN689przaGl8PDmEqlXzr0x6AiHjKiurKOvKCW+/7Wy8SmlSs6azTCEAaNgQGDDA3dF1J07QZz8jw9l62fXMGEV+3Zbxs8+cO21PnqSstfR0/8qkJzWVxqht3uxsfc+etN5NLkXPMmdcuYAjQ5cxdjuAZACLPD8nMMZUhNcNTpwAfv7Z+ZzKjRuBSZP8K5M3Z87QyeS05uOll9z1FgO+1QCJiAxUrAg89hg5KpyweDFtAt1k/nxgzBjn6x9+2P0o0KXo2c2bfXQ08MILziOgIjZMa9b41ixu2TJg3Tr/yWOELw6NBg0oLdjNsTOBYAA1bgz06+f8uv3CCxR5c5OJE4Fff3W2tlEjagpVo4Z/ZdITCHru3p0c0U6jVCJk/PBDuo444fx5ukYdP+5fmfT4qucOHaghlZtkZdE+zBc9u20AtWzpvInS7t1UK+5mpsuRIzRH1+lnq39/53XbpYV27/Ml6qwiuo4YA6ANgAwA4JwnAxAwf+UfyKZNwG23AX/95Wz9/PnAv/9NzVfcwtdRH8884/6Q7c6dKR3LCSIMoNOnKX0xJ8fZeq0br8x63rGDHm7ii4w1alCDMjfnWtaqRQ4Kp1kXkZGUSu+mnqdMAZ580vn6oUMpCuQmvmRoXHUVbaSvvtq/MumJjgYeeohGlTmhQgX39ZycDPzvf87Xixpd51TP+fkUkcnM9KtIxfA1Rb1pU6BtW3fLi9q3p94FThFh6L74Iu1dnLBvH3Ddde5mF/hq6D78MGU0uclNN/k2o12EATRrlrPu34CYzDpfM3EKCuh64+b57IszHwCaN3d/drdkODV08zjn3ncPF+/I/2B8vcBqF4ezZ/0jjxG+GkAnTlBnRzeZOZMipk6IjqbNgZsz85YuJU9nSoqz9dr77baefXlPHnrI3Vm1nNNFvWFDZ+tjYyk1qk0bv4pVjHPnqL7G6RgIUXr25Xx2e2PMOb0fvsiYm+vumIomTahpSOPGztbXrEm/47TWszQYO5Y25E5xW89ap2ynej5yhNJf3WzSV6ECOW1jYpytHzyYItRuNpjbtw/Yv9/5etnP50AoRRBBr140S9op1aq523m5sJAioE7PTxGZdb46rt57j7Lx3PwstmsH3Hef8/WLFgFvveU/eQIAp5/y7Yyx+wEEM8YaMcYmAFjjR7kUGpeSGgW4e3HIy/PNAOrXz/3xBb5QowalRrkZdb6Umj7A/Zu9zAYQYxShcrt7rS988w1tig8edLa+YkU6t9ycpeuroet2ZCAnh5rEOa3FPH2aeh1MnOhfufQUFvrm5R8yhLJ2nNZRlgayOzS0z7zM18T27am0yKlzTQSPPw7ce6/z9W6fz+fO0bkis57LlqUa8EqVnK2fPp3OZTcd+idP+uYQXbGCupq7RSCcz5e633ZTxsGD3c+gCnCcGrpPAGgOIBfAlwAyAfyfv4RS6AiEE++HH3yr0XN7w5SWRpviWbPc+5u+Egh6ln1j7CsFBZTS42ZHY18dGoMGUWqU23WHvjiu3E5pLVsWOHCAUqadIML5N2ECNfNy2ltBBLKfz+fOUYNDma+JvrJoEdUSu9l52Vc9z50LrFzpP3m88TWKJuJ87tmTSoucTmEIDaVaYjc/i71700NWAmGPwxhNG5C5camvadKjRwP33+8fWQIEp4ZuD875C5zz1p7HiwB6+VMwhYdAuDgAvqViub1hOnPG98YVbdrQbEu38FXPd91F3lunqZGlwaJFvjUpclvP+/dT+veSJc7WBwfTZsRNY8RXPYtA9si9r4SEUETXbadQQYGzmZYAsH49cMMNwLZt/pVLj68G0McfU7d3t6henbKFhgxxtl7Ts5sG0DvvAHXrUn2wE/Lzych185rj6/lcrhy9l27hq/MvNNT989lXRKXd+qLnSZMoOugWvt77QkJoosfAgf6TyZuHHqK9otPIvYj9dkKCb6nL+/dThuI/GKeG7iiHzylKm/79aXMRFuZsfadO1K3ummv8KlYxnnoK+O9/na93OwJ0KcbF33/Twy2ysmhepFM9h4dTapSbtV4REb7NLqxQwV09nzzpW0MvwP00PV/1nJJCN7UtW/wrl54ffnA+Rgqg2ZLff+8/ebzZuZM6yW7c6Px3ROnZyYgmgGpzV692d5SGrxvjmjXp4SaM+VZH6Lae09Op5t6pYSgiAuRrhsaPPwLDh/tPHm+uuoreR19G0X31FZCU5DeRSvDeezRyzSmBUFr055/uXrd9jdwD1L3a7WuOL4jSs9P9AyC/I9oFLO8gjLHunnrcWoyxD3WPqQAcujAVl0W9esAttzhfHxFBqVHh4f6TyZuZM4ENG5yv1048tzrVXYqh6/bF4b77qHmNU9LSgKefdrf1/ujRwMKFztcPHAhMc3Hc9qXq2U1j3NfNyNmzVEflSzOZy6VhQ9/m4jZuDLRq5T95vElLo+wCX85Pt8/nS0n/1n7PLaZPB0aMcL7+99+B11/3nzzebN9O1xBf0nzffJN6QLjFpaR/A3JH+tatoy7lbt2fg4OptMjpPGeAUnSbN/efTN6kpDiffAGIKy3y9ZrjpnzNmtF+pWNH57/z4480StEtPvyQorpOadiQ9kV16/pPJm8utYeGm52hJcPOVXoEwEYAOQA26R7zAHSze3HG2K2MsV2MsT2MsZEGx59mjO1gjG1ljC1ljNXTHRvAGEvxPAb48k9dUaxe7Vu62JkzVKjuZgTozBnfLrC9egEffOC+oeuLjG5HBlq29K2O4tw58jK7meo4bpxvtVstWwK33+4/ebwJBIfGnXf6NotYxIbp/fcpldYpf/1FI4ny8vwnk55LOZ+feMLd+rVLSf8G3NXz9ddTgx2nrFxJY2Dc6l69dy85/3wZF5SU5Fvk7XK5VEPXTT1//DHw4IPO10dG0rnslp7//BN46SXfshnWrft/9s47vqr6/OPvk4QsIIS9CSpLCHskIMpwoYJabas1xVlt1bpaRyut1oG2Veq2jhY7SGsd+Kt7VEAZMgQJQ0kMewhBVhIg+/v747knd5157zk3Ufm8XvelnHvOvZ+c9z3nfMfzfR53pbHildvruWtXCQt2uqbXC8XyW0wk58xMCbvNznZ+zD33wJNP+ucpUsuXu2vj9Oghz/M+fXyzFKXmzrkZyjLeRilVBBRpmvYvpZSrVoymacnAU8DpwA5ghaZpryulQgtrfgaMUkod0TTtWuCPwEWaprUD7gZGAQpYGTi2GWf28EmzZkltwDNtxxVER4/KKP1TTyUmfLmmRl5uLryxY+WVKHXpIp1IpyUgIPEzfZ99JiF6TpklusGkc3bTudi1SwZcJk6UBEJ+K5aO7oUXOl9H6YXOOMNdhEaiOVdXy1KE++93Xnbpww+lI3nuudCxo7/+ILZSHzclOHfimWe6m3FKdEhrXZ2U+Rg1ynkjTfdYXt58OW/eLM/AgQP98RQpt43Odu3gnHPkmZQoucm4DOG/xfR07/1EqqhI7jfTpzt/Rt92mzwvFyzw1Vqj3HLu2hWee84/P5FqaHB3z4bwZ0siIgDXr4ePP5bleG5yzjTnhJsNDTJAk5HhrgMfq6qr3bfDjjtOQsCrqxNzPTdDOV38MkbTtA80TSvRNG2TpmmbNU3bZHcMUKqU2qSUqgFeBMKG1JVS85VSRwL/XArow19nAh8opfYHOrcfAAms9dKM1NxnBmLpXJSXw+rViasZOWaMZFx2M7p68snSCEyUfvlLKQPhVIkOgYuF8wcfwNlnS4c3EWrXTjrVThNJgMxQ3Xyzb5aitHmzhN461Tfhev4meKyogN27/fFjpOnT4dcu0lhkZUn4d5s2/nkK1aFDEuLrZilCU3F2O3PvZvYyXo0bJxl5napdO3jzTTj9dP88haq6WjoXZWXOj/kmcG7uHSCQTlCiolySkqTz7yaaoVMn6QQlaqbv44/huuvclcpLdGSd2+jEqipZQ/zss/55ClVDgwxE5+U5P+ZHP5JlJ4l6tjRDOU2t91fgFiRsud7hMd2B0GKROwArOlcB71gc2z3yAE3TrgGuAeiVyBj5RKqiwt3oeUaGrHlJVAfo6FHx5yZJ0YcfStbg1asTM+uslPukTfff748XM8XKuTl3LhLdYDrrLHm5VV1d4rKM/vCHwtlpByMjA7p3d57UKF59Ezi3bAn9+rlrkFx9NaxaJYn6EqHychk9d5o0JCMDVq7011Oo9OdDc15HHOtvMVGMAe64I3HfFYt27ZLOz+zZztcetm4tv9sjR+z39UKxcv7yS3/8GGnQIHcJgJSS6//22xPTlqiultrs3bo5X+t80UXuZ/vjUSwRGom+nisqnNdnB7lvJyUlrr2dkeEuUeQxAc5ndA8ppd5RSpUppfbpL69MaJr2YyRM+SE3xymlnlNKjVJKjeqYiFCqppDbkURNS+xoZ48eMlr84x87PybRDaa775YGXXNejO925l7T5G9yk2E4HsU66h56bHPUdddBz56J+75YrucdOyTxWCIUS6Mz0WG3l14KxcXS4XWqRM8MjB6d2JlFt4pnQCNRjTqlhJubJEXfhAyjAwcmroMcC+fvfU86Trm5/niKVEWFdBaaM+cnnpBlZE6lafL3JMpjcbEkIX3nHft9m0rfBM5du7pLxJjo9nZdnQxAuWnLLl8u17KbhLHfMjnt6M7XNO0hTdPGapo2Qn/ZHLMTCG1B9ghsC5OmaacBM4BzlVLVbo79TiiWkJlEry91q0Q3mMrL5YbkZlZ35kzJeJ0oxcL566/dPXzj0eDBsjbETUKfphjQGDnS3TEZGc0/BC6R+iZ0gGJRU5Q0c8t52jR34c7xKBbOp5wi95xx4/zxFKk77pAQ6+Zco/34490vfaiocBdKHI9iGaBMZMk6CF4rbr430aXrYlEiPcZyPX/5peSLSFSN1YoKyYfhhvPdd0vYbaL0xhvuk18l8p6zbJkM8H7wgfNjGhpkffTevf75auZy2tHNQ2ZcHwBmBV4P2xyzAuiradpxmqalAhcj2ZobpWnacOBZpJMbeud/DzhD07S2mqa1Bc4IbPvu6b33YMYMd8esWCHJqBKhFSuk/p2bEhBNEQLnttFZWwvbtkG900j9OBWLRzf1Jb1QixbuQnwTzXnHDvcNyNatZc1QIjm7aXSCrDu8+25//ERq9Gj53bspATF4sGROPeUU/3yF6p574Ac/cHdM69YyEt6cOW8FW+T0AAAgAElEQVTalLgwvVgaxmlp0L69LJlortKv54aGxHzf3r3u78OJjC6IJVx092647LLEdTD+9CfY6XIe42c/kxJjiVJuLjzkKuAwsR2gWK7n2lrpMG3fbr+vF4qljdO9u7sZ1qZQIjnHGv4NzT/SxUc5ukMrpSYZvCbbHFMH/BzpoH4BvKSUWq9p2r2app0b2O0hoBXwsqZpqzVNez1w7H7gPqSzvAK4N7Dtu6fcXEkY4EadO7sL64tHW7bAf//rKoT2tf/JhfeTiytISZEBvt69JV+UL3IZFlxYCPc9Lo3UdqmV/vsDePllqRnpUIWF8GDbP/Jr7cHEnMNlyyTM10UJiBeX9mZ6p/fofPHEY5xBGt8uH/aFhbDquU95796liTmHqakSyu0ivKzwtUx6T81Fa90qMR7XrXNVVquwEO5/XM55wjhXVrrm/Flpa96fm6B74tixUp7FTXhqRYXMOCdqBuj3v3dX5xcki/qLLyZmmUoMnIHm3wGqqZEay27qxsajpCT37ZW+fd0NxsUjfUasstLdcYmMIvkm5FZ4+GFYtMjdMUVFMsCQiMSlDQ1w0kny23ejX/9aypolQt8Ezs1Qjjq6mqa10TTtT5qmfRp4zdI0zTaFl1LqbaVUP6XUCUqpmYFtdyml9A7taUqpzkqpYYHXuSHHzlZK9Qm8Xoj1D/xGq6oKnn5abrJuNGeOrClJhFxeeIWFcNWvOnI5L/ARExonWLZuhWuu8alh56JzUVgoPrYdaE0DkNlQ4b8/gClTHDc6dY8jD77PGbxGfb3y3+O6dfDnPzse0CgshKtubMmcskmUkd2sOR8FMhoO+u9PKfjLX6QMjwuPe2ta0YIDieG8YoUkT3H4UCwshOuuruXsrY8yioXNlvPcA5O4gd9ztCHJf396VlGXHvfWtCKFg4nh3KYN5Oe7azDV11P7+99TnaiZvgULJFOrGw0ezNFzz3WcMTMuueSsS7VuzeEDB1CJ6IyfdBLMnetuGU5WFrVA9YEEVXN89FF47DF3x2zdytHZs6k/eNAfT6HSObuM0FCXXsrhc89NDOcYc2gklHO7djJ650bLlnH09tupT0Sof2WlDOK5/C714x9zeNKk5ss50ddzc5RSyvYFvArcAxwfeN0NzHVybKJeI0eOVN867dypFCj1zDPujrvgAqUGDfLHU6QefVQ87tvnaPecHNkdnlRwo4IHFRwObJP3Pdfjjyv18MOu/E3mbtUClEaqgrMU1Pnnr7JSqblzldq+3ZXHszheAQpSFMzy9xw+8kgMnA+rTDoGPHZS8Jm/HseNU+rUU134U6ovTytNanUrmKCg1j9/LqV7nNIUnPfvd+wxiUMqp/EcNk/O8KECLTGcKyuVuu8+pZYudeUxoZxXrVLqr39VqqbG8SGHDwU5d+rUSX322Wc+GAuRC866Ppw7V2macJ4wYYKqra31yZxSaseOmJ7P148bpwCVkpKiZs2a5ZO52JVwzmPHuuc8Y0bjfTthnJ991tVh119/feI4f/65Uk8+qdThw44PSTjnv/xFqZdecnVIk3B2ez1fcUXiOLt8PisV4JyenjjOCRLwqXLYP3Ta0V3tZFtTvr6VHd0NGwRRYaG74y67TKlevXyxFKV77xWPDhtMmqYUrFCA0sgINOzuamzUgc9+bSQeGlQrhqtsMlRLfhDw+LdGf3PmePylX3zhmPOcObrHjSoJTU0gXcEpCjIU7PLPowvOQY+z5AHFKAXtFZzuL+fbb5cOhgPpnCFPQQ8F1wc4P+/fOayslM7PwYO2uwbPYWkI5wmJ4+ygQdFknHNzlTr/fEe76pw1RqsUuqgUrvGfswuFctZIUoPpnljOLjq6s2YJ51tHjVLt27dXp59+usemIjR4sGPOSinV0NCg8vr3Vz1AXf/97ytAPf/88/75KytT6tprlVqyxPEhpaWlKjk5WU2ZMkVNmDBBZWRkqF27dvnncf16pd5+W6mGBseHRHI+44wz/POnlKvrWakm4Kw/n//1L8eH6JzPOu00dcopp/jPOQY9/PDDwnny5MRwbu7Xs4t2mK7S0lKVrGnqrPT0xHBetEipO+909HzW1cj51lsTwzlB8qOj+wkwPuTfJwGfOP2SRLy+lR3d5csF0euvuzvu5z9Xqm1bfzxFatYspfr1c7TrnDlKJScrBVNVNpp6hMsV/EBBSwV7FEhH2PNG3eHDjh70c+boHfH/BRrDTwY6QyMV5CioUqBUZqbHHh1ynjNHvlsav1eoFJLVerIUlAZmga5tbBh77vG225RKS7PdLeixUkFHdQqp6hmuaewMwTz/ODtUkPPbClBpPKZacFTB2ECn96i/nN94w9ZfkPPlKoUU9Qp5CjYmhnN6uu1uTcr5oouU+u1vHXkM5fwcqMm87z/nI0eU2rZNqepqW3+hnCFdwc5mxVlXZWWl6tixozo9NVWpa65p7AzNmzfPQ1MR6t1bqUsvdbz7228HOTd88IEaO3as6tGjhzp69Kh/Hl3q8ssvV+np6Wrnjh1q48aNKiUlRV177bX+feGtt8bGOTNTqTvuaOQ8f/58/zzm5Cg1fbrj3d96660wzvn5+f5y3rRJqfPOU+qTTxwfcvnll6v05GS1q00bVVpa6j/nzZuVWrvW8e6NnAODVQnj7OJ6Tjhnh8/nUBlxvu666/zxF4OahHOC5EdHdxhQBGwJvD4Dhjr9kkS8vpUd3Q8/FEQLFjg+ZM4cpZ7IulPVkKKSkxqUHvrWlLMWui9p1Mls7i20U4X8SMEGBckKbmhs1Hkeqte+vVLXX2+7WzDM8aRAQ7gq8O/3A433J/zx6JBz0N9GBckqjzy1k66Bzvi1gcbxZn88/uIXSnXrZrtb0ONDClD/oXuA89HAOR3rH2eHCnoco1LppmpAnc9cBfMDnB9pJpxLFSQpuKXRT5DzJn88/vSnSnXsaLubPedxxzg3Z84/+5kjzroeekg4L+neXamCAnX06FHVo0cPNW7cOA9NRWj0aJm9cKgxY8ao3t2Es5o7V82fL5wfeeQRf/zV1rqaWSktLVVJSUnqlrFjZdCwoUFde+21KiUlRW3atMkfjw6vZ12NnAOz1Anh3K6dUi46B6NHj1bHde/eyHnevHn+cnapRs6jRyuVkpI4zp06Od69yTg7aIfpSjjnVavknrN8uaPdwzgnJ4dx3rx5sz8e9+5V6uuvHe/eyHnECKV+9rPEcE6Q3HR0nWZdXq2UGgoMAYYopYYrpYqcHHtMcSiGRE/XXAM7yluTQh0pDSVAlf+JlBxoxgyp7gGPAdmcR09aUwH0By4DngMkq+G2bR5/ucPkNfK9O4HFZFNAJe2Yzj+A05DqWv+M2NcjOUwZH/zO/wPqWcZLdGcXoAF3AHXAS/54nDXLUQmI4He+DOTTh05kUQ6kAzcjwSGbvPcH0KEDPPCAQ4/bgOW04jJaQOC3OBGppFYYsa9Hcng9h3NuAG4JeVfn/LLB/h7I1bUCOucT6Bw4hzrnJcBm7/25UJNxdn09vwY0cDGd2UZP0jmK75zLy10lNHn55ZfJz89n7KZN8M9/kp6ezs0338ySJUvYvHmzh8ZCtHy51DN3oG3btrF8+XJuuEw4U1HBxIkTycvLo9CvB99bb0nJtc8+c7T7a6+9RkNDA7ecfDJUV0NVFXfccQd1dXW8/PLL9h8Qi1xmeW/kPHYsQGI4K+X4t7ht2zZWrFgRxnnSpEmMGTPGP84u1ch50iSoq4Pq6ubL+fnn4cYb/eeslCuPjZxvuokWO3fCOef4z3n4cLnnjB7taPcwzvX1ibmeb7oJxoxxvHsjZ6Vgx47EXM/NUE6zLj+gaVq2UqpcKVUeqG97v9/mvvM6/XSpqzhwoKPd9c7kw/QkiS5UMwAoAGT7ZZf50Nm94w64/nrb3aSRpoD/AWehyA50gAh4rAakCHavXh76q66WcgkObrDyvfMD/zqdlhwJeNSA84DlwG7vPTrsAAW/cx7QD5ANUtYyBwm8eNNg/8RJvrMcWAmcRgWtA50LkHMIukfPOe/b58KjcFacDhDh8VNgl/ceXXOeD/TnXFaxlDw6Ju0jyPkNg/090AsvwMqVtrtFcp7GG1yKXpbBZ84DBohPRx7DOQfvOc2Pczta0ZMdZCdV4DtnF43O8vJyVq5cyWmnnSblpzQNgPPOE85vvvmm1eEJ0fz5wvm004WzzuC8887j008/ZdeuXd5/qc65VStHu8+fP5/+/fvTs2fPxuNzcnIYNmwYb7zxhvXB8Xh02IkM4/y738HttwMJ4Lx/v6MBSgjhfMEFkiF+2rRGj75xfvFF6NRJSik69Ni/f3966hdsojjHcj1v3Ahr1gA+c66ulrq9Dj02cp4yBbp1k/sOPnN2qW/U9RxS0qw53bcTJaeVzs9SSjXmcVdKHQDO9sfSMTUqM1PqxaWnO9pdOpM11HMb0B7pQM5Fb3DW1/sws7t8Oaxda7ub3PNLkI7ipMYOkLSZTgbaAG+Qmel4EN+ZXMyKz5wJycnzgbYcJR+A7KSKwD12WmCvt733OGWKlNLQb5gW/jIy6oCPgUmMYzH/Tf4et12yM1D2dCqwGNjnvce774YHH7TdbeZMSEtbCNQDk7iWP3NdyvOBc9gHGAC82Uw4t+cIMjoa5Dw1sNdb/nm0eVBFcm7DIfJYzs8uPhjgPA2ZMfWBc2oqZGfb7hbJ+Su6cbhF2wjOPl3PxcWOalo2OWeb32KQ80L0eyLA1RdX+M/52Wfh1Vcd7bpw4ULq6+uZNGkSPP883HMPAH369GHAgAH+NOoOHIDJk2XW1IHmz59P+/btyR03Tuq6TxW+UwP/ffvtt733qM/cO2h41tXVsXDhQjmHEXUtp02bxpIlS9jncKDOtUeHnYswzp9+Cv/7H+AzZ12BwRM7zZ8/nw4dOjBo+HAYNQratgXkHIJPnPfvh717ISPDdldDzoHfia+cXXR0wziH1Prt06cP/fv394dzWhocOiQzkg7UyHnAABl0+fBDwGfO//oXDBsm9x4bhXE+7TT4298aa0FPmzaNxYsXN6/rOVGcm6mcdnSTNU1L0/+haVoGkGax/zF5oUWLpFh2vX1VwMJCqbsOrwBfcS059OIuYCDwc+AIIDO7M2Z46NHhDXbmTGjRQp8tncRMZvCrtEf52c8gJ6cFcBbwFkeONDBjhoedcRcdoIICaNduPhkZE6ghkzqSuficCmbPhl69hgA9gTcaz6FnHjt2hAkTbAc0CgrgjjtWAhXAJHI7lnFu/f/x4C1lPPccZGVNQ0Jd33XyTHanN990VOy9oABOPXU+kAqM5UjOQO78Wz9mz9ZLOU4FFnDkSLm359BhuCjAJZcosrPnkZk5kRoyqSWFH03VOecis2k+cD79dHmYBhpnZorknNFR/qZ7b6sIcJ6KcH7He84PPQT/+IftbpGcr+z4Bp/84E/+c3ZxPUdyvrPdM4y77yz/OTv02KScu3aF4493tOv8+fNJTU2VcNb586VOe0BTp05lwYIFlOvXn1c6cEC+6+uvbXdVSjFv3jwmTpxIUlqa1KkO1I3Nzc0lJyfHn0adi9/iypUrqQiE2UZ2dKdOnUpDQwPvvPOO9x4ffxweecTRrmGcQ2aAdI++cN69Wy6ETz6x3TWMc1IS/PWvjc+k3NxcevXq1bw4jxwpM9Vt2gA+c3bR0Z03b16Qc1ZWGOdp06b5w1nT5LsCnUErhXFOSZG67oGOrq+ct2+HoiLplNsojPOAARIuGfjbmiXniOvZN87NVU4W8iILhhYBVwVei4DbnS4ETsTrW5mMasYMpZKSbDMGh2fvHKMy6aHqQZ3MRyqYQXh2Y1ITTfPQY79+kgXVxp8kXvmhgu4KGsISZM2Zo1RqamHA5yfK0yyjZWVyHlevtvXYvfsWBai2bR+T787OlgzWgfdTUq5VkKk8z9a6fLlS//637W5z5iiVnf2gAlSPHrvV/371gQD96CM1Z45SGRn1CjoruMhbf0op1bevC84jVFraRPnuTz6Rep2B99PSPgpwfsVbj6tXy7l49VVbj926lSpAtWv3lHz3Aw8o9b//Nb6fknK9kvIuR7w/jw4UznmPCecu/nB2dT2HcL7mGqU6d25833fOr7xi6zGKc8T7vnFesUKy0Tu4bzcZ5z//Wal333W064gRI9TEiRPlHyGclVLqo4+E8ys2PFzL4fWslCSFAdRTTz0lG957TxgEdP3116vMzEx15MgRbz06fD4rpdSDDwrnPXv2KLVunVI33CCZcpVS9fX1qkuXLuoim+vObzUpZwefG8W5bVs5jwE1O84R8pXzu+8q5TCT7vDhw005L1iwwB/O27dLBvAvvrDdNYpzSDtMqWbIubxcyv7s26eU8pmzg3aYrjDOTz0VlgjMN84JFF5nXZbPZArwcOB1ptPjEvX6VnZ0b7xRqaws292C2Tslo3EvblUK1Nm8qSQjb46Cqf5k7+zaVamf/MT07WAnvEFBJwU/VpmZSv33oWKl/u//QvzvV5J9+U5/fFoo6PGFQON8rcrMVGrd1Nsba+eJx7cD77/rrccbb1SqTRuHHs9QMEiBUqekLRUTb74Z8hu4UkEbBXXensMuXRxy3qdAU3CPysxUav3Zv5Q3lH4OaxW0VXCFt+dw40alrrjCckAj6PH5AMfPozoP4vHdwPtve+tx7VqlFi603MWI88lpyww4X+UP565dlbr6agf+DDhnZCilfOa8cKF82PvvO/AYzvmNB9c2NrR85exAQY+nK8hVoNSw9C/U1tEXKrV6tf+cba5nXfv27VOapql77rlHNvwyeD0rpVRtba1q27atuuKKKzwyFpADzrqef144f/7557KhVy+pJR/Qu+8K53feecdbj++84zgr9Omnn65yc3NN37/qqqtUmzZtVF1dnVfuRP/5j1IrV9ruZsg5cD0r5SPnjz9u/pxvuEE6Ww4UxrmmRkoTlZc3vu8bZ4eK4vzYY0qdc07j+7W1tSo7O7t5Xc89eyaOs007TFcY56WBdthbbzW+7xvn2bPDvsdMUZwj5BvnBMpNR9dp6DJKqXeVUrcGXu+5mjY+ptjkcOF5MBunJHNK4wJAEuxkZmrABcD7QLn3a70GDJB1xCYKZlv+AigDJnHkCGy8/99w/vlQVxfw3xbJhDrf4O+KQ0eOQFmZZfh30OMCoCMwiCNH4Jy1f4Af/SjEyylAMrKmzkOPDsJRxGMdEkwxEYCy6qzG44M+TgUOAWu98+fAY/AcLkKSjgnndxdnyRv19QEvKcAEPD+Hxx8Ps2fD0KEOPC4AOgMDOHIEZv1qL3z1VYiX8QGfHnucNavx92TtUec8CYAd1R1YmTYWWrYM8TEZXzjbrAEy4/ze4tZw9GjI9ewT55YtZU17164OPC4glHPfuy5uXLfhK+ctWyTJi4WCnBejc15dNYBTyl6BoUP95+wwBG7RokUopSRED+SYwPUMkJKSwoQJE1i4cKHFp8ToT/8+Gy1YsIDOnTszYMCA4DEhYXrjx48nJSXFe49Tpjh6mNbV1bF48eLgOYRgksSAJk+ezKFDh1jrIN+FK115paOY/CjOPXpI+HdDA/Ad5zxypIRX2yiKc2mpPJdC1pn7xvnDDx0ly1q4cGE45xtvlGVJAX2nOTu8J0ZxjliKAD5yvuIKONs+PVIU5wj5xrmZynFH95iaQA4XngezcS4CBnIESWrUu52+1usCoAZ4y/u1XvPmNWZnNFKwYaavwTkZgO2HAp20ysoQ/ycjmVCPAh5lGX3zTejcGTZscODxM2A0kmUZtm1VUFUV4qUlMAI5z3jn0QFn8fglstZaEuscog1byIHk5BAf4wP/XeSdP6WgfXs5j5b+QM6hhpwn2HEo+BAI91iKpxmsGxrEp4WCHlcTyvnJHefBpZeGePGJs4MHaThnKXOwmeMZXbMEJk70l3NDAxw+bOnRlnPY9ewD5+HD4Z13IDfXgcdwzvtrgw0mXznfemtjNlhrj+GcQ703NWddn332GZqmMWKEcCY7WwZfDx9u3Gf8+PGUlpaye/duD8wFlJYGQ4bIfcdGq1evZvTo0Wh6QqOIhnHLli0ZMWIEixzkGHClAwccJUUrKSnhyJEjjNbLluzYIfkY/v73xn3GjxfOnnqMh/PNN8MXX+iJPxo9es7ZRQeoyThfdhk8+aTtblGcDTpAvnCurw8mRLLR6tWrwzkbyFfODiZuojhHrCP2jXP//pIAz0amnEPWu/p2Pa9bBwcP2u4axfmZZyS57aFDYR4959xMdayj25zlItFTRkYDMjswngpaU0MLLpwmI8a1teOALsBc9u1LbE3dYMNsDdAKOAGAFu2CD4GZMwlkGR0P1ALLvZt5dvAgFY81yKzzkMbtC9KnwMSJABEelwE13nq0eQCIR710tXj8im5MzNkCP/hBiL9eQA9gkXf+NA22bpVSUpb+QDj3RToRVpwBFnvncfZsqWm5fbuNxypgAxCc+a1LDzaYwj0uB6qbkPPQiO1EcO6Jp5wPH5ZaVbbXCjQZZwcy41ybHsw82Rw5t6KCfVp7ePxxfznrnTMHjc41a9bQt29fWupJZG66SRpLIcfqjbrFixd7YC6gyZMlMYxFtBBAVVUVGzZsYGhoJEdWVlijU/e4fPlyqqurvfN48cXSwbDRmkD5lkaPBg3jXr160bNnT28bxjpnB22IKM4G8oUzSP1zm9+iIeeIjq7u0XPONgOoukw5h3hsas5FRUXhnOfOhT59YOfOxn184ewwWaQh5//9DyKyLPvC+Ve/Cht8MlMU56xgZJ0uXzhXVMDgwZKEzUZRnFNSJOLKYNDF8+u5GcpxR1fTtAxN0/r7aeaYIvTqq1EXuJEKCuCuu9YjIW4n0bZXFi/PqWH0365nxgw4ejQJOB94G6jxLvPy7t0SKvrf/5ruEmywFQGDgSQyM2HaJcGHQEEBPPcc9OgxDoDs7EU895yjaCF7ORhJnDkT0tM3IJ1suXllZkLvwcEHqe6xY8fxQBVduqzy1qODUiQpKWuQUMsTGz3qDV/dnyQbHU9y8kKefVZ548+BwjkPafRnxLlXr+FAOq1be8y5vt6ypqVw/gIpiRP0aM65ms6dVzYhZwndapnRwOr6wfDYYxGcT/KWc+vWUuvw5pst/RlxHvrwdGlw9ejhL+dnnpEyXBEN3EiPzjmfhOecHURoBDm3QOdMRiZtG/bDgQP+cnaRobyoqIghQ4ZY7jN8+HDS09O9n2FxoC+++IL6+vpwjwYdoJNOOomqqipWrVrl3Zc7HIguKiqiRYsWwVBM/R5l4FEPOfRE8XBeuBBOOQU2bWrc5Avniy6S0j02pfUMOc+eDa+9FrafL5zHj7eN0IAm5OxiVnzNmjXh57CmRpZZhMz0jRgxwnvOspbE1qMh55YtpaMWIl84O5QbzvqSAE8UD2eDwTVfODdTOeroapo2DYkDezfw72Gapr3up7FjQi4gB6FbhYXw0EMyKtOt23hmPqA1NoiCYXynI2FyKyK2x6EDB6TYuH4TM1BBATz7rCIpaQ0whJwcacCNPzvQ8QxceAUFsH17O3r0GERV1SKmT4fevT2YedYvbIsOUEEBXH55cLZU99hrUOuwG0NBAfzudycBsHv3Iu9KkhQWwp//bLlLQQHk5q6hRYsBaFpao8eCl8+HJ55o3GfLFrjssvHU1+9i+vSt3pzDrVvhrLPAYuSvoAAef7wS2AgMDXKeeRaUlMiocWC/rVtTGTAgj+pqDzk7eAgUFMCllwZn0cI4hzykQjnv2bPYO84OGsYFBTBoUBEtWpzYyPnZ55PI3r+p8aL1jTPI7H1ysqU/I84/uiJdGiSBcLNwzou941xWJqGfFmswzDlnNVPOqeTkwDPPJ8s5DOmM+8K5WzfYswcuucRyt8rKSjZu3Bg+u7J2rcxkhiwFSU1NJS8vz9uZgWeegfz8xjWiZioqEs5hHu+9V8p4heikk4Sz5zMsDhudJ554IqlSwFmur8xMw9nIXbt2sXXrVu/8ga1HQ84VFdLZ3bu3cZMvnB3KkHOPHtClS9h+vnA+dEiihWxkyDnketblG2ebWfGKiopozgazzr5wvvFG6VQHSi2ZyZDzSy/BnXeG7ecL58mT4ec/t93NkPMrr8igTYjGjx/Pzp072eZVYgUfOI8ZM+bYjG6IfocsDDwIoJRaDRznk6dj0jVzJvzf/1nuUlgoocj79y8CurJr13Fccw1smHIzPPNMSKjhKYH/fgR4uOYQbB+kEyfupKHhAE89NYQtWwKzJnl58NFHMHBg2N+ye/d4qqqWoFQ9W7d6EGZdUSGN4ogRwUi1arWGtLQ0amv7BT1GzAwUFsJtt3VGQjYXe+MP4LjjGjuCVvr66yJ++MOhNDQQ9LhsmTQ+Qzz+5z/BdX2eeCwrg3fftS2kPnCg+Pjvf0M4Z2VJ+KH+UAh4LC0dT03NZyhVmVDOLVuuIT09nbq6PjacOwH98OwcgvS2fvtb29327VvDD384JJyzgUfPOZeWwlVXweefW+5myHnbNrjlFli/PsyjcF6FUoebnvN110kHKsRf8Hr2kLPDDtC+fWu46CIDziGDa75wTkqCTp0sB/+AxkQqYTMDBw/Cf/4TtURg/PjxrFq1isMha3fj0saNMoiaZN1EWbNGOPcJvX8OHBiVlK5z58707dvX+46ug/Bvw1lxk7Bb8LDxftxx8NlncOaZlrsZcjZoGOsePeX8/PO2CfrAhPOCBfDHP4bt5xvnWKMfHnkEvve9sE2ec3bYDlu3bh0QwTkrfMIh1KOnnEEGC/R1tyZas2YNGRkZ4ZwXLYqaCPCF88aNjtbcG3K+8EJJzBoizzk7jNAw5Jyo67mZymlHt1YpdShim0fz8cdkqlmzZH2ChcKzoI4HNI4cgdQP34aPPgoJNewADAI+8n79q83DXl/TEHbhtWsnoVEhx86YAXV1JwPl6FlG4w6zPuccKdpuo6KiIgYNGkRKaANab/UvI4EAACAASURBVIwEQk+C5/ok9KyznoSBP/UULFliucv+/fvZsWOHbYNpxgyoqsoFstAT2MTtUb/BxsJ53z546KGwzpNwHo+Eli71zqPDxkhubi7JobOW3/8+/P73Yf6E83g85Tx2rCRTspDOeWhk9uiIhBzhnCVzYtwet26VcMCvv7bczZDz/v3w6KNQXBzm0XPOLhqdUZxHjw7LWOkb51mz4OqrLXeJ7Xr2iHNxMfzmN5br2cGEs0WDqb6+nqVLl8ZhLETxXM9r18o6toiQwfHjx3sbSujA4759+9i5c2c051/+Mip7am5uLllZWd5lQk1Ph2HD5FlrIUvOBh0gTzmvXCkJLW1kyPmDD2Smz2/ODu45ppyvvhoCs4+6POfcr59kdh492nI3fba0Sa7nv/0talbWzGMU54h2WKjHZsN5yRJYsSJsk+ecHQ5oGHLu2VN+ixEJRT3n3EzltKO7XtO0S4BkTdP6apr2BGDdMj+m+KSUiyyt+4Ct6Nl4AQ7UycxA+FqvCcBijhyp9SZMz+GFpz9IBw8eHNx45IgYCGkYy9+iPxQWR2yPURMnWq45LCyUkMoPPlhDcfGQ8HMyaZLcnAOlNII+xgFfI+GbcfpTSvyFpPg38jhwoJzDWbOGhnuMmAESL8lAPsFM13F6dMC5sBBuvbUIyGLChJygx0OHJCt3yENAvOQH/rU0YnuMmjxZZuws/OXkKObNK2LDhohzeMop8NOfGvgYB+xHsuN6wPnFFy2zf4dyfvhhN5w9OofxcDZIyOELZ5t7oiXn7dsl50FtbYQPDzmDDJyMH2/6tiXniy+W32NAvnD+/HMZ6bQZ0CgqKiIrK4sceXiIDDgD5OcLZ88aTA5mS5VSFBUVRQ8KvfUW/OQnknwlROPGjWP//v18+eWX3nj87W/hvPMsd4lKXKPrttukvF6IkpOTyc/P9+4cfvklPP20bSROk3J2MFhgyrl1a3k2Byoj6PKUs94OczjIG+Vx06awNg74wDk7WwZNOnWy9RjFuWNHmQzo0CFsX885v/8+vPyy5S7NgrPDtmyUxxtugHvuCdvkOecBAyQCor91qiRDzr17S0cgtA2OD5ybqZx2dG9ApgOrgX8hWY/Mew/HFL+qq6GuzvbCkxBkPVww+COuSQvOABUUSLsmNXUicBhY5U0IXJs20hmMuEmGqrAQ7ruvCMhh6NA2we87fBh+/GO5AYb9LTlI7ctlEdtj1NatsGuXqbdrroGtW/cAezh8eGj4OTntNLjvvsYwyaCP8MZ7XP5sOOse9+yRG2xZ2ZBwjxEzQEEvecA6oDJ+jzYhM7rHykpZh71tmxb0aJh5EiAbScLjEeeLLoK777b0t23bbmAflZUR5/DQIVi9urGuZfg5pNFj3Jx/9CPJcmnh0ZTzxIlhs8G+cLaJ0HDEOSyTLHjOecyYqA5CpD9Tzm+8IY26/fsjfHjIua5OlmSYlGyw5XzvvXDttY37+8rZQaNuyJAhwTIfocdEdICys7MZMGAAy5YtwxM5aHTu3r2bffv2Gc+KG3jMyxPOnnm85RbbrMuGs6Ug10lZWdT+eXl5rFu3jkoHIZS2WroUrr++8fdu5TGKc3Y2jBgRxcAXzjadSFPOJmG3nnJuaJB1mxYDV2DB+cor5YKPkKecN22SJW4RAztGHqM4d+8ug+whg2vQTK9nPzk7bG+bcjZYiqB7XLt2rTehwT16yACeRZlH3WMUZ5Dfcl1d2Ka2bdvSv39/7zg3U9l2dDVNSwbeUkrNUEqNDrx+o5Sqsjv2mOKQw7DgmTOhRYt1gX8NAiRUuefA6BC4mprwdbpxh8BNmiRhRyYZE/VG3ZEj0jAO61wbNEYkzFpDOpLLGv+WuMKsL7tMZkkMFAxdXBPYMiT8nNTWSmMkMAMUDAMfiJRKWha/P5tGZ9BjEdAR6BLuMTdXRusCCnrMBxqAlfF7zMiQUUSTRBLiUSHnUUY6Gz0azAyEe1wKqPg9lpc3dlSN/UFoOZewc/j669KJDEyTBf2dCLQGlnrjD0yv53CPnYjiPGsW3H9/4/7RnD/1zqPlb9GEs+n1rHv0iPNNN8HDD1v4A1POER6jr2cPOB84IIMSr7ziwKMBZ2iMIAn36CFnBx1dpRRr1qwxDqHv0sVwjbQ+e+FJKOGAAZKMykKGiWvAtKM7cOBAWrVq5c3sRW2tzJjaNGCLioro1KkTXSKSJlFQAFOmRO2fn59PQ0MDn376afweHazpM+Xcrp2EFV9wgaFHzzg76AA1KefkZFlnGxFmbuTRkHNEJI4uTzm/846sAzb4Hl2mnC3UrDinpkZda55yrquTwfKIGU8jj6acDTq6nnLesQOWLw97PkTKlHN1tdyzH3rI0KNnnJupbDu6Sql6oEHTNOt0acfkrRyOuhcUwIQJ69G0LKB7Y4bRHqO7hh0rbfjOyOzKxxHb/ZE06qqBYvQyH42NurQ0ufAisqA+9xxkZ+cBJfTosS/+kh8WI8bBv11fP5obvv2tt2T0LLC4PxgGngyMJjV1mTf+wJRz0OMXyECGFr79ySfhH/9o3D9YqknC2LOzl8bv8Qc/kJDbjh0tPO4EKtAHWxq3p6VJEoqI7NXPPQft2uUBX9Ot2+b4PU6caNgoC/oDOYc0emzcHtFgah6cI7eHK5qzBx6VEn+WHm04h4SXhXPeS7duW7wr4WPqD77RnC+/PCw0zRfODp4tO3fupKKigkGDBoW/kZYGX30FP/tZ1DF5eXns3buXLVu2xGEuoIcekrBbC33xhXCO8mgSdpucnMzo0aO9mb3Ytk3WRpoMaIR6jPKnezTomIwZI5w98RgPZwt5yrlTJ9tEjKacTTq6nnKur5cOlk0nwJKzQQeoWXHu3Tsq7BY85uxg5t6U8/Tp0lE7/viwzZ5ybtVKlhZNnWrr0fAcmnR0PeU8Z44kcTUZ0AcLzqmpMmhjMuvsGedmKqehy5XAWk3T/qpp2uP6y09j33kdf7yMGtuUgACorV3P2LG5KKUFs3c++yx8HOzQBkPdxiFrN1XE9hj0hz/AiSeaPgSk8bYRSUZzYvh2TTO8ORQUwNy5MpL/3HPL428UW4wkBv/2YiTEsmP4doMHqV7y41e/ykOp1Vx4YZyBDTYPqXCP/Q22R0tKNXWgT58+TJq0zPdauuJFX4dk4NGE84cfCueHHlqaQM7tkMRsBpwjOuNbtsCdd+bT0FDEBRdYh4U58hf6XZYeDc7hb34TlqFc96hznjjRg3P485/LOTAp3WPJWdOkk3vvvVEedc4PP+yBx8GDTRM9OeZscD3/+tcecbaZubflnJ5ueK14yrmiQho9FiWaigPrCvvbrAcLVaLXexUXF9OuXTs6RC6dMQl1BPFYVFTEUZswT1s5nBUvLi42PocmDeMOHYSzJ+dQ55yebrqLJefTTguLItHlKeeXXpLEYRYy5TxliiQ7NKjz7BnntWulE2RR/aLJOZeXx3c9l5eHlZHS5Snn5GTbpGjFxcW0b9+e9pElNS0yNXvG2YEsOZsMaDSb61nTTD1+F9bpOu3ozgV+i0wFrgx5HZOfSkmxrd+mlGLdunW2I7LBEDg98UpJ/CFwO3fKWjSTG5E03koC/+oXsR3TC2/jxlFAEmefvSz+upEWHaDgOSkJ+NPCz4nJGiCAqqo8amtrycj4LD6PAwdKz9+kBMTMmZCRsQ9hJucwzOPTT8u6RQN16pTH668vRdNUfB4ffhimTTN9W8Ln9Q6Qgcf166PKQACsWZOLpmVSUJAozsXG/kxmgACOHs2jrq6OzMxV8Xm0aRgL568x5VxdDZs3Gx7bqVMeb7yxLH7ONrLlbFIKRud8ySUecN671/R7bDmbzACBXM/NgrNJwxg85Hz//VImyKIBqTeY+vXrF/3mT34SlqVcV25uLpmZmd7MXowZYzjLFOnRsNE5Zox0UAyy0OblCedVq1bF58/B0qJ9+/Zx4MAB43NowTkvL49ly5bFH0qo3xNj5VxaKuHZEfKUswOZck5Pl86TQd1vzzg7CP/++uuvv9mcTTx6ynn5cvj73y13KS4uNva3dassQTMI//WM8+LFsjTLIkOyJeebb4ZXXzU8Li8vz5vQYD1xmwPOpoMuBm3ZwYMHk5GR8a1ep+uoo6uU+rvRy29z32kVFUkWWZsSEGVlZezbty+6o/vqq3DWWY3rS/UQuG7dxgHQvv2S+EPgbDImSsM4vKMb1qh7662onnZhIdx0U2skrG9p/EmzystNGyP6OUlOltkVPey78ZyYNIwLC+HZZ/UENnF6bNFC1ji3bGnq8bbbgrNoUR737ZOMxhFJBgoLYcWKfOrrvwJ2xOdx/Xr5PZqooAAmTy5B01oSGj7f6LFLF70HEubv2mtTUGoksCx+zhYd3SDnEtxyfuaZYKKiuDwOGybJYUwGJYSzfq2YeKyq8pfzo4/CjTeavm3L+b77ZD1bhL8gZw+u53g4DxgA770n4V8RHj3jbNPRteWclSVJZfzkrGm2NXRLSkpo2bIl3bt3j35z2TJpuEYoJSWFkSNHetNgWr/ecs2h7tG04Z6bG3XPAQ8T2DiY0bVtdBpwBplh+eqrr9ixY0d8Hu+9F2w6AJacTTpAnnKePFkyydp4NOS8bx/86lemHSBIDOeSErmeDTlfcgm88IJh1FteXp43nB2sf21yzg5UUlJifA6PHJHlWaWlUW95xvnQIbnfpKVZ+gMTzgMGRJWRCvXoGWeb8G+dc7du3aLftOA8atSoYx1dTdM2a5q2KfLlt7nvtDZskCLZJqOBII2cIUMk4/IDD+SGN3q2bYN33w0rgC0hcP3Jzs7me99b4mu4qP5948YVk5TUGU1rE92oGzRIMsmFKJisJR9YDjTElzTriSek3IeJzj//MPX1O7jvvn7BsG9dJh2gGTPg6NGuQC/0pFkxeywqkhkWi8yYvXtLg+nLL/u78lhbG+yMx+XRwYNU04oZNqxfePi8rtmzJZQ+wl+Q82dAdez+6uvlwyw8nntuBfX1u3jgAYNz2L27NEYikt8I585Ab+I+h61bSwfLJKEXBDmXljYR54UL4cMPLXex5PzOO1K+J8Jfs+GclQVnnBGVJV44d0Eyvsd5DkeMkMzaFiG/Tc75mWcMk5KESp9dicrcqXs06YTm5+ezatUqqqurYzAWkM7ZolFXUVHBrl27jBudR4/C448bdvK6dOlCTk5O/GF6DmZ0LTu6Z5wBf/qTZEKNkN54j9tjdjYcd5zlLracTdofnnGeP9+0KgI44PyHPySGc6wDGsOHS5Ijg/PrWcjoXXeZziaGejTlbBJZp3v0hPP3vw///a/pLpacLSLrPOPsYObekvPGjbKGtip6KZvO2ZNBF5t2mCXnn/zEtBxaXl5e/JybsZyGLo8CRgdeJwOPA3P8MnVM2N5g9YzGZWWSKKmsbFD4CL9JOGZSUhI5OWP5+98/ISmJ+MP0bC68+voSTjqpHw0NGDeMI748mKwlHzhA3LUtr7zSMnunXoPN8ObVrh088EBUCFy4xzhrW65YIfUYpTdgqJKSElq0aEHvkOzKjTJpGIuXoUAaoaVdYvLocCTRcNQd4D//kc5ulD+Qsik1wOrY/dXXy2zi5Mmmu+icTWeALr88qlEY7jHOc7hunaxFs1hLpHMOq38X6hGaN2eDDpCnnPVBO4t7jiXn+npJHrRuXdjm8Os5znPYpYtkQM3ONt3FkvPo0XDrrVHhmJ5ynjvXtMxVqEdLzhbhmDU1NY0ZVGOSg86FJefaWsnOPW+e4bH5+fnxNzpHjJBEgEYzJwFZcs7Pl/JEqalRbw0dOpS0tLT4Pf7jH/Dvf1vu0qSc472eLZacgEecHc7omnLeu1d+hwbPd884H3+8YZh+pEdTzlOnSgUNA3l2Pb/6qnQGTWT7fNY/x0DNgvOCBZI0y6BkmM457s747bfL4JiFLDnfdJOEgBsoPz8/fs7NWE5Dl/eFvHYqpR4FzvHZ23dbjkp9gNTQbQd0Ni6lEdHwLCyEzz8fR23tepQ6GF8IXH6+bR1B03AUkM5PRLKL6NqWcdSqPXpUwkUtZkv1cBTDm0NGBvz612H1S6M9bgV2x+7R4UjiCSecQIpBSQ+zh4B4SQVGENoZj9mjhb/q6mq2bNliztlgxNjTmsSpqZKsKaIWYKhsk+t88klUaFS4x23AV7F7fP99GVG1GDEtLi6mT58+xpwHDJBRoog1+55ythm48oZzHLVqNU1qzEZcj6Gy5KxpkkE8IlNu+PUcJ+eSEhnAsygBYcn5pJNktjViwKFZcbaZ6YM4Z6ninUXTw7ItOmnbtm3jq6++it1j375So9YiQsOS85Ej8MUXhh2g1NRURowYEX/D+M9/lkgVE9lyzsszvda+M5yHDZNGlUUiJUvO8+bBqaca5lfwjPNrr8nMuIlsOd95p7wM9J3h7NCjKWeLzrjOOe7OeF6eRIKYyJZzVZWE+xt+tEdRJM1UTkOXR4S8Rmma9jPAgPYxeSb9gjFZSxUcyd+AZDSOKDtjGQI3LvCvOEPg7r3XMCujroMHD1JWVuZqxDi8hmkWcdWq3bwZxo6VToaJ9Bts3759jXfYulXKaRh6DDbeY/ZowxlsRul69JDSOhE336DHPCRvXG3sHgcMAIv6exs3bqShoSFGzt0DrzjOYXW1/PAtOpElJSVomsYJJ5xgvMPpp0eVMwk/h8TnMV7O48dLaFTXriYe84mbs00HyBvOcdSqzcoSRiazD2DDOSlJzn/E4J+n1/O//21bc9OSc0ODrBeLKCHRrDj36WPaw+7evTvdu3ePr1GXnCwhdhZlZ3TOfYz2SUqSnAc2nfG4PG7fDmvWWO5iyfmjjyQRocln5Ofns3LlSmoDOTZikk2Ehi3ne++VzrKBPOHsIPzbEWeLMHqIk/Po0dLGMcmhoXs0PYc2s855eXnxc/7NbyS6wES2nMG0ckaiOZvet3v0ME1C6AnngQPhiitifz7bzDrn5eXx6aefxsd5wQLJXWAinbNpR/faa2XgxkA9evSIn3MzltPQ5VkhrweRYeUf+mXqmJAZgezsqA6MrmA740sMMxp36CDrxCJi9aUjPAZB/0nEdm9lOVsKpmVnpLZlElLbMo46sA7Cv//wh2KgJwMHZhrPao8dK2tgDDz27DkcSCErK47alhUV0oI1yBxZWAg5OfWsX1/KggX9jf2NGyejuRE3N91jhw75QBVduqyN3eMLL5iu6SsshIkTZbDg1ltNPFpyBsgnJSUOzkVF8kEm60sLC+GPfyxGqRxOPDHDtcdevYYDLcjKivO3mJlpeD2Hcp4/3+QcmijIOQ/hvCZ2jx06SGI0Azni3KFDVDKPaM5xXCv19YbJe0I9NhvONtezKeclS+S+v2CBoUdPONtEaNhGP/z+95L/wUT5+fnxzQx06yblXCwGNIqLi8nJySHdrNSGxazz8OHDadGiRXweH31Ung0mqq+vp7S01HpWHCwbxlVVVayx6UxbKl7ONoqbs6ZJcr6IwbtQ2XLOypI6twbyhPP+/fD116ZvO+Zs0RmPm7PNwJUt5zvugI4dTY+Pm7PD2dLevXubc96+PaodpssTzlOmSIShwX0b4r+edc5r166N3eOll0oFDBNZZtYGy7XYEMwO/W2U047uVUqpSYHX6Uqpa5AFV8fkl+69Fw4cMH1bylRUImF2MtoZNsI/erQktIpYnyod4VbAEGBJxHaX6t1bRhMNVFgIZ58tHd3rrrPoAFVWRo0m6rUtZ8zIp75+Dd/7nvn6VUtZ3GD1Nc6HD0uGVtMQbpMGU0EBbNuWwahRwxg5Mo7aliYPKd3ftm3bgGrKy/u7DjEvKIAVK2Q28re/9aD+ponHvXvlBrt7dz9jj/oN1oTzH/+YR13dZs44I7qWnyNZhH/rHo8ckZIzppxNHgIFBbB1azqjRw9jxIg4ahKbNDqDnLcinE3O4eefy6yCwdrKcM5xeFywQBrwJh5tOf/xj4aZMcM5b4qd8/z5ErptUALCMWeL63nr1nRGjRoaH2fb69mGs0WDyTPODQ2OkihZzgBZKC8vj02bNrHXoDanVzItOaPLolGXnp7O0KFD45+lsmi4b926lZqamrhm+iDOWSqHHSBTj489JiNUJrN9cXMeMEAyeNssObHkvHmzJFczkCecf/1ryeBtoi1btlhzdjCgAU3MuUULaWv6xbmhQWZk27a19Bjr/cYTznV1pn8/eMc57gGDeDjrzz6/ODdjOe3ovuJw2zElSAUF8Jvf6I3KvtEZjU0UXk93KVAfWwicUlJH1yBrpN6o27evBEhi167jzRt1DQ2miZiqqvKpr6+nZcuVsSXNsujoyhpnhdTclAepYQi3xcwAQNu2eSxYsAJNq4/N4xNPyICEoT8C/gD6GfvbtUvWi730kuHHL1qUQ1JSZ66/PsYapkpJduyIsN5wjyVAFyDL2ONvfiNhxSb138rL5SHQqVOMHh1xlgENsOBsUc4kOzuPjz6Kg7PJQyr8HAL0N/aXkSE7mniMm7OFHHO2UbPhbHk958fP2aAT6ZizTQfIE847dkgnxkQlJSV06dKFLLPO8IsvykycyX1bb9QtNyhB5Eivvw6dOsngjoGUUtZhhCBrI006QCAzLCtWrKDeYi21peKdRbOZ6cvJyaFz586xN96VsvVoy1lfEmKSQC9uzjZyxDktzbKuaNycLcoTgk3JGbDtAOXk5NCpU6f4Odt4tOSst8P84jx2rMzImkRA6JwtBzR+/WvTGV3wgPP06RK+bCJbzv36SZmrU081fNszzvFczzac9RBwv67nppRlR1fTtAGapl0ItNE07YKQ1+WASYxB2PFTNE0r1jStVNO0Xxm8f4qmaas0TavTNO37Ee/Va5q2OvB63eXf9c3Xgw/C735nuUvfvpKp7rPP+kZnNK6okJHSF18MO0YPgWvffixQSdeu62ILgauullEwy0ZdMXAckGrcqJMpDmnER6iwEJ5+Os5atRZrQyRUuwwoJzT0OyqE22JmoLAQPvooD6Uqgc9j85iaapihNegjWEPX0F9amsyi7dlj6O+nP9VoaMgj5nNYVSUNToMGWbjH/gbbQzyahOAXFsKsWSOB5Ng9WszoipevgEprjxYdIOGcj1KHgfWxeXzkEUlSZOgPbDlbNJg84Xz0qISKvhI9fumY84cfwvnnGya8COccY61aLzj/7W+mnbzg9RwHZ5OZ+2bDWZdF58B2Fm3/fskWb9JJGzlyJMnJybHPXhw4INlqTWpafvXVV1RWVlp77N7dMvN1Xl4ehw8fZr3FmjdLOWh0QuwdIE3T4g8l1OvMmsiWs01nPG7Or70mawZNygs54vzkk9JWMpHfnG0HNLp2lYEbk6SdmqbFFxp89Kgs6bDx2KScbeSI89KlUcs5QuUJZ4N2qC5bzhkZMHKkaXI6nXPMHd2qqvg5W5RpAv85N6XsZnT7A1OBbGBayGsEcLXVgZqmJQNPAWcBA4EfaZoWOWSyDbgc+JfBRxxVSg0LvM618fnt07vvWl7YEEzJbpioITVVQvwMUroXFMDy5ZKQ6q67Pol9nRfYNOqCsyvh2wNq21bWBBokGZDalh2B44m5Vu0pp0hyGIM1QBKqHd7oDG4PkcVM34wZUFMTnk3WtcfHHoPnnzfxB3IO2wAdzf2BocfwGqYlwH73/ixm0cI9GqwT1/XZZ3DddVFJvXSPR4+2BAYT8zm09ajPoll4vP9+qcloIOEcTEgVk8cuXQyT64Sfw2ygg7E/i4axJ5zLy+V+YzBg4pjzV19JrUSDLOfhnGNMgmcxcOWYc26uaZIjT67n3//ecCax2XA+cEAeABbPFttZNJtZ55YtWzJ48ODYG3U2yWtsO5EgIf4WCXriTmDjoAOUnZ1Nh4iazY1q00Z+JxYl0fLz8ykpKWG/RdUAU2mafIdNZ9ySs01nPG7OO3dKfoWITPKh/sCG8/vvS/k6E/nNuaSkxJpzRgZMmyahuybKy8uLnXNammTvvvJKS49NynnuXEnQZ9KOss3lonu0iMTxhLPNrLgl54YGmUGy+P68vDyKi4s5YLEk0dIf2P4WLa+VsWNlUMikQx8352Ysy46uUuq/SqkrgKlKqStCXjcqpZZYHYtkPCpVSm1SStUALwJh1YqVUluUUmuA6PjX77oc1Kj98ssv6dq1K62MMsWlpUln1+TmsGTJcSQldebaa5d4HkYojTc9jNCi0blpk9Q/3bEj6jM8qVXbuzdcfLEeqx2mmTMhNTW8YWwYwn3ddabrkMVLH6S8U4y1Lf/+dxnxNfAntvVZNM3YX2qqKefwGqYAy937sxjQkHXi+4Gv0QcLDD1u2ybZOw1G7sM5L0e/FbjyOH48zJplOIMzcya0aBE+oGHo8aSTJLGXgcTLCUB7Yv4tzp4Nb75p6M8R57Q0aRBazqzHwdnienbM2aLB5AlnG4+OOC9aBP/8p+HHe8I5N9ewpqUrzr/7nfymDf1BXJz37YN//cv0oP379/P11187mwGyaXguW7aMBoOlLbayadQ5WkM8d65EUZjohBNOoH379rHPXtx1l9Q/N5He6NTMZs5btICf/lSWhZgorpDRsjK47TbTrM7fGs42CXbi5uwgoZclZ5BIHov6pHGFjCYny1rnTp0M33bEedAguOEGy8zScXEuLpZzYFAzWt52kBTNZmlRk3PWNPj5zyWJnoni4tymjURMnWs856dztrxWhg2TCA+Lkmh5eXmxc27GcrpG93uapmVpmtZC07QPNU3bq2naj22O6Q5sD/n3jsA2p0rXNO1TTdOWapp2vtEOmqZdE9jn02/dAmqHHV3TsjhgenMIhsCNBZbEFgKXkSGjiAMGRL01cyakp+8CjmDZidyyRRoMgZnpUIXXttyJ/HxcJs364gsp42CgggI47bRiIA3oZb7G+cwz4fvfN/gE3YsW8BhjbUsTznqIeXKyzIpbrsE24Rz0MTrgM4YaphaNkYICuP32S4IVzAAAIABJREFU4BpiU48Ws87hnMuRclkuPQ4bBr/4heGDtKAATj21GE3LAHqYe9ywwbAjGvSic14Wsd2hHnxQOhgG/oSzJFGy5HzddbI20tAffOs55+VJ490gpNUx58JC+a0YyBPOr74qYb0G/hxzvvtuwwQ9fnMGh50Lm1BHkAZTeXl54+e5UkWFLHUwCV0uLi4mIyODHhazZHYNYz00OObZi1NPtawh7yi5ztq1hs8+XaNHj0bTtNg87twpGVoNIrp0f2DDOScHLrzQsgP0ref8i19I/XMTOeL84x/LxW6iUaNGxc75q6/gT3+SMogm/sCG84gR8Pjjku3cRIng3L27RffAb84OIjQsz6Gm2XrUOcfUGU9Lk+gPk6oIjgYLamokeVtlpeku+fn5sXNuxnLa0T1DKVWOhDFvQaaxbvPLVEA5SqlRwCXAo5qmRRXYUko9p5QapZQa1dEiPfo3UocOWY68gHR0DcOWdbVpYxPSOg7YCJS5D4Hr1g3++lfDhndBAdxyS3B2xbRRp/99Bh49qW355JNwwQWmb6eklDBoUB+USo5e46xrzx7TcJTwOqvrgQr3Hi04n3/+Yerrt3Pfff3M/YHUnDSYGQj6aw0MIqYapmlpknrfpDV93HEyK15c3N/coyPOwfXYrj1u3WqY7VdXcnIJgwf3Rakkc48vvCC/FYOMhOEePwfKfeC8g/vvtziHIBmRDX7PnnA+dEj+a+LRe84xXM+TJ0tmZ5NRdUecTe6J0R5j5HzttTJ7byDHnPfuhd27Lfz5x9lRuGiXLhIGZ1YKhDizjA4ZIjUtTTiXlJTQt29fkkzqagKWnEM9fv7555Tb7GeoefMkIslAhw8fZseOHfZle847T6ormKh169YMGjQotnPoBedhw2TNvsU+cXHW74nNmfP06cLJQJWVlezcudOec5s2QR4GysrKYuDAgbGdw+Ji+OUvTX+LjjiD5FyJqN0dKr859+vXz5pzr16y7t5CcXG+8koJMTeQK84W361zjqkzvmuX5NsxyH8BDsO/166F44+Xe5eJPMkO3QzltKOrL6I4B3hZKWV+1Qa1EwgdfugR2OZISqmdgf9uAhYAw50e+61QdrY0KAxUWAi9epVTVlbG3Ll9zWdix4wxHAEKRq3poZqfRGx3oIYGy3TsvXrJhbd9u0UnTX8IGzwEgrUthwFpsdW2tBkssF28D9Jozc+XZAAmHjt1ygcUnTqt8NRjaaDzZuvxr3+F66839afXME1KWs6zzyp3/gYOlLCjkSMN3y4uLiYlJYXjjjvO/DMcce4PtKFVqxjqrM6YAWecYfq2o1H3Nm2gtrZJOOtr7W09KmXpL8h5mXvOKSnSwTAZMHTEuV07WS5g0KCJ5hzD9XzggOVotGPONTXNm/OZZ8LV0SkwPOFs0wFyxHngQKn3G1G6LlT9+/enTZs2sTXqLr7YcgbM0X3bgrOu/Px8lFKsMJiBt5RSMvhn4tEx5zZt4OBBy130kFFl8aw1lBecHSguzn362N63bTm3bSvRZdXVprvEzBlg3TrTMo+uOFt0dHWPTca5tFQGrSISl4YqLs4O2mG25/DOO2H1astd4uJ8553wox8ZvtUsOK9YIf4sZu7jaYfpiotzM5bTju4bmqZtAEYCH2qa1hEwf4KIVgB9NU07TtO0VOBiwFH2ZE3T2mqalhb4/w7AScgQ+3dHJSUSwhYhvXTP9u3SCTp4sK952PG//22YkTA4OTcSGcNYErHdgebMkXVGFiOJmZmZdLMIh7G78KS2ZSr5+cMZMiSGOrAWN9ja2lo2btzo7OZl4/G++2RWu6xsGTNmuAgBr66WAQOLhxTEXs9S97dlC1x1VR4NDfuZPr3U0/IzJSUlHH/88bQwSSgCyN/XooVpY0Q4J5GbO4bq6qVMn447jxaca2pq2Lx5s7OGsf5ZJh6DnJe641xVJY3ueGZXQMIlzzzT1F+Q8wGmT//S3TkcP17WkQ0ebOrRlvNxx0lolMnIeDjnZe45X3qpac3NbxVniwZT3JwbGqBDB9OMxI44O1BSUhJjxoyJbWbAohHomLOeWMaiUTcmEI3k2mNVlQyK+chZV15eHgcOHGhsbDuW/rnxcN6/Xwav/vxn013i4nzLLYbLOcAF5zvukMECk7BYiJPz4MGmZaqaFWeL36ItZwfXSlycO3aUQVQDOebsQDFzbmiQmdK6OsO3vea8f//+xkkMx3LA+YQTTrBvh4V+loF0zt/Jjq5S6lfI9N8opVQtcJiIxFIGx9QBPwfeA74AXlJKrdc07V5N084F0DRttKZpO4AfAM9qmqbnBj8R+FTTtCJgPvB7pdR3q6NromDYsX5D7Os67DgYApeOJND+JLYQOIt058XFxc7CjvTPslB2dj6LF69E02rdd4BMHvRbtmyhrq4u7oZxYSHccktbZC2yy5IfaWnSML79dsO39Y6u5TpsgKuukmRKJioshMLCGEs1/eUvMgJiMqrtaDS2Qwfp5BrMUoV63LAhn9radShV6c6jRUd306ZN1NfXxz2gIZyzgQG4Lo+jz9rYDGhYLkMAudYsZoCEczDUP67yMwYe4xlw0RXkvPbbx9nB7Ao44GzTYIqL8/e+J6HRJ0StBGr0aHsO6+ok6dYTT1julp+fz9q1azl8+LADYyGaOBHOOsvwLcecr7wSDh82TdIDkJ2dzYABA9w36hLEGeLIJqtHPlh4tD2HrVrJfd8mG3DMnC3kmLMDfas5659rkjHYcZRL6GeZKGbOjzwipaQM5Jjz/Plw8smmM5oQB+eyMmmjmERoOOb8z3/CSy9Z7qJzdt0Zd/Bb9JLzmjVrPL2em1p2dXQnB/57ATAROC/w/1MIxr2aSin1tlKqn1LqBKXUzMC2u5RSrwf+f4VSqodSqqVSqr1SalBg+xKl1GCl1NDAf/8a11/5TdO2bRIatXCh4VsivaN7QsT2EP3ud4blC8JD4MahaSt4+ukaT0PgbFOdgyQP+vpry1p/hYUwb14+Sh0F1nrWMHY8W2pzcwgv+bEMUO4GHjRNMicaqKSkhF69epFpkDU6THV1knzERDNmQFXVQKAVrsum7Nkjxd4NEpI0NDTw5Zdf2nPWNMu6nbrHuro8JBvvSnceLTi7Go3VP8vEn3DWExW54NypkzxMp0839eiIs02DSTifSEycn31Wkj0ZjGo75gyyns2irEuTc546VRIAmYR4xcXZwT2xyTlbyDHnlBRJcmSz1iUvL4+GhgZWrlzpzsjBg6YZWh1zzsiQ0Vyb+46ewMZVKKGDRqcXnAFOPPFEWrVq5b7xft11Mojavn3UW445p6ZKSKuDWaqYOJ92mvg0kGPOa9fCRRfJWlUbj15zdnw9P/CAaaZ3XQMHDoyNs4VHx5zT0uTlF2cLOeZcWSkZ88vKLHdrUs49e0Lnzpa7NClnv6/nZiy7Gd0Jgf9OM3hN9dHXd1t79sB77xnO3gTDi0uBbkDLiO0h2rdPapgaSA+Bu+GGsShVxeWXr3Y/W5qeHtUgKSyEnJwaSks38957/ew/r317aTiZKLy2pawldtV4v+uuqM2FhXDppXKDveii/tYebTpA4WVT9gCbI7ZbqLRUZh4+jw5WKCyEl14qZtu2fvZcbBpM4iUZqfi12MC7hSw49+q1jerqal54weYcgoSpWYTAiRd91jkGjwYPgMJCuOwyaQB9//s2v8Vx4yRD94knWvgD4VyGJHFz6C8pScK3DKIfgpz7Ny3n0lIpRRJxLbrmvGyZND4tPTYh5zZtZG2gSYhXXJxzcmQd2ZQphh4dc87K8o/zc8+ZrkXbtk04OxrQcBimB7B48WLL/aLkxQDltm1yz1m/3nK3/Px8ysrK2GiSndjUH8Q3yAtSjsTingiQnJzMmDFj3J9DkN+4QUe/2XAuLZVZdwM55nzwoMyibd9uuZsfnB2tIQZJFGkSuqsrOTmZ0aNHuz+Hv/iFzHIaDAw1G87nnCP1xQ3k1YSDriblvGAB/OEPlrvEzPnQIRm8M3hu6ZwdRT889hicb1jEplE6529T+LJdHd27A/+9wuBlXqH6mOKTxYUXDDsuRZJfm5Tu0Y8vLzdd81RYCM8/Pzbwr0/ini3V1w9v27YZqOfQoX72n/foo6ZZSkFvvPVCcpl9HLHdRvn5kjrfwOOBA8VAO3bsaG/tceBAWeucm2v4dnCAQV87+FHEdgtt2SLZfiMy6RUWwtVXK2pqpLSQLRcbzuEei4CDzj1acN65Ux5S+/c74Pz22/IgMJF46QAMJJSzI4+zZokhA48HDxYDHdmxo621x/btZf2nSSh+NOePnfvbsEFqMUfUiw5ylpIz3wrONgl24uJs4dEx5/374aGHTDtAcXFOS4OhQ6Nm0Vxz/sEPTBuG0R5dcv70UwkDNJCrnAAOGsYdOnRg4MCBfPzxx5b7Rcmmo9upUyeyTZakNOrAAXm2bNhgudspgTXfrjz26yf3M4OKA0op52H+Y8aYhmhHeiwqKuKgTeKqMM2ebToa/K3i7LADFBNni3aYK87r1skSIJtZxpg4Z2aaXviuON96K5x9tuUuMXNevFiyBpt4/NZw/t//5Jrzg/Mtt4DJ3+SotJCua66RQX0LdejQgfXr13PLLbc499fM5WiNrqZpbTRN+5Nes1bTtFmappmnUTum+GRx4elhx0lJpUBf63qMbdrIQnuTTKUSAtcD6UjKCJPj2dLJk6PCjoJhf8HSQraf969/wcsvm74drG05AelEqpDtFlJKOqiB0Bhjj3JjsPTYvr1kATXJgB0ceDgRaA985Hy9swnnGTPg6NEy4BB6HWJLjzacgx4nIOdvkTuPBv7kHOrntp89Z5sGU7jHxUCdc48XXijJlEw9OjiHR49Kz+OLL2z8nQh0xBXndetkx4i1bkHO5c48Tpok2SFNkmZ86znfdVdUqQ/XnCsqZE28bcmwGDhv2ABPPx3V0XfN+ZRT4Kc/Nf0arznrclSiQpeDDhDAhAkTWLRoEXUmv9koNTTIYI6FR8f+wFFocMeOHfnIpN66obKzpYNqsP63rKyM8vJyZx537pQOs0VZF5BzqJRi0aJFzj2+957UdDaQK84XXwwTJtju5pqzUs2f84knSgfVoAOxZ88eKioqnHl85x3JT2GRMR5i5FxYKJFrBnLF+bbbbGf6dI8xXc8ma4ibBWeLxG2uOLdpI3lrbNa2xsS5WzcYNcrwLVecN20ybeOEauDAgaRYRFp+0+Q06/JsoAL4YeBVDrzgl6nvvGxCKaZNK6ehYQ8PPtjHuh6j47Db8cjMhYrYbqGLL44KCw4ep3d0+9l/ns0MUHijbg9Q4qxRV1kJl1wCr4cn+g562YAknIncHqH6epkBMcmSF1zvnAScQnLyR85Lkvw/e9cdHkXVvd9JIRCQEBJ6CShdFFCpUkQFBUFREUuwAkqTz9674mdD/cSuP0ElIIgVkN4sdAgiSChCIICUxEAIIf38/jg72ZItt8wMG+R9nn0gszOz7867c+ece849J4DOzMUcjFr7bPeD9u25IFVpaVCOjRp1BlAJ1atLcOzcuZxz4eaxFUAcgLrB+QEhDWOTY2JiLwC5qFs3VYxjURGnHB86FISjwDXMzweGDmWjJAi/pCQDp0znyy4DXnwxYNpteZ1/luPol5/J8RTrDPCs9mWXBeEocA0Fqi4r67xiBbf58jm3tM45ObzkJEBrHKt1NrF161bExcWhboBJPS9ccgnQoUPI3Xr16oXc3FykBlhCUw4lJcB//lNu4sqTY+sAywu8IGgYG4aBnj17yhnGO3YA33/vV5+tLiNSiOOcOZzWeeRI0N06d+6MSpUqyUeprND5+ee5N3QISOucmxu040BY6NygAT9X/UxoSOkskXYrrfOXX3J7QT+Q0jknx2/vbl8o6Uykr3N8PI83ATKuTJg6S13D1q25n7WfPr1KOgu0DJPW+fvvgdmz/b61detW1KhRA3VCrA8GwBOow4aJf+5pAlFH9xwiepaIdrlezwM4205i/2pUrszpUQHSOcz1ByGrwJ1zTtDUKHdUtDfYiUzz2R4Ex46Vm4l2H5cGNoprhD6foGFco4Y5q7wcVaoI8jPPX45jNvj7tvbZHgCXXsrtlIJwTE8Hhg7thZKSdAwduldsvXNQjmbKXSuf7X5w+eU88xykV11yMrB3bxW0bNkZ+fnLxVu73H8/8NprfviZHFuDI+56Opscn3uOdT54cLlYa5dDh9jo/uEHPxwzXS8BnQVaLJg633ZbL5SU7MHQoXvkdPaZ1fbWWYBjcTF/3yARIGWdW7cu1xdVSee2bfkDg0BJ58JCdjA4fOvDUUJn01CyU2e/93N5Rzcgx3nzeMlFkHVmps49enRGq1bLxQsJBnGA0tLS0Lp1axghCjgB4DHBT+s6X/RyRQOFHYzoaODNN/2uc87MzERmZqaY0SlwP3ty3LNnD/YEqejqhVmzuHq1rqMraBhXqVIFnTp1ko9SWaEzEDCDxBPSOpeUcBEpP0uCpHQ+6yygXr2gdT48OUrpvHcvsGaN3wnkNFdKvJWO7inV+c47/RYu9YW0zkGCNlI6x8UBGzbwsg4Bjunp6dgrFLEBr6F++mlupeWDsNH51VeBd97x+5aUzoKZOKcbRB3dk4ZhlE2xGoZxMYCT9lA6A9xyC1cRDODomj24Qjq6l13GqVENG/p92x0t7e3askQ8Ba5rV+bp93zuaGnI8wneeAUFzQHUA7AcWVkCa4kDDLDjxwMxMd5OZFCOkZH8MA3BMSUFmDnT7YwLrXcmYoPMZ5Zy/HggKmoruNBYw9AczXMFiOh6cvzrr54oLNwAouPK7WfcOm+FsM7163O7ihD8HnmkLjgTQPAangKdZ8yQ1DmAo+vWuRqABqE5LlrEKfTr1oXk+NdfvVBYuF5c57feKvcgVdL5rbd4yUAIftI679jBk38+s9phqbPf+zkNwjoLGkwAG3Xr16/H8ePHQ+4LgH8/AZ4bW7duRatWrfy+p4q6deuiRYsW4kZdcbE7CuQD0+gU4hgZyffbydBmirLx7ie6lJaWhmrVqqGBn+hQOdipc4iIrrDOI0eGnLgCFHSuUQP46iu/ExrSOh84ANx7b8hdpXX+7DPOaPLzW9y6devppXONGkL8pHUm4qUY3OLDC1I6S0Ba5yNHytXPMHHa6XzG0Q2KUQDeMwwj3TCMPQDeBTDSPlpnEAxmU/GQjm4ImNHSxo3PBtAIsbFLtVLgkpOBjz4iRESwYRx0/bCJuLhyURpf8Bo373W6IdcKBnCAkpOB225zR9GEOYYYHHi983ngKDYPsCE5PvAAn9envVByMtC6dRoqVWoFwzBCc1y7liMh8+eH5Fhc3AtACYTXZJ99NjBuXDl+b711FMBBCF/Dd97h2fEQ/Pin0BPALwBKtHQeOtQdRRPWOScnJMf8/LYA4iGsc04OO/l+dG7Vaqu4zoIPUta5J1jnFWIc/UBJZwGEhc5C97OkzseOsfOjq7NENLJnz54oKSnBihUrQu4LgPtZ+qn0e/ToURw8eFAscgGwly7gAJkcf/nlF5SUlITeefVqvoZ+xjKpaCnABalCVEEFgLZt2yI+Pl7O0fWjs8mxVatW4tEV83wh0KtXLzmdIyP9thaS1jk2VtgwltI5CKR1FkRF0Fn6fg7gAEnrLOEASencuDEvLbriinJvSes8YADXqAgBaZ3Hj+eorh9I6dy7NxcW7dw55K4VQefTCUKOLhFtJKJ2AM4HcB4RdSCi3+2l9i/Gc88FTdHYuXMn6tati2ohImT46y/u7fXttwF3SU4G9uwx0L17b+TnL8PQoaXiaXp+bry+fY+gtDQbb7/dKvj6YROvvRayIb07A6UXgP3gitMh1goGSZmpUWMrKlWqhOLipmIcQ6wjdnOJBBvvS322y+Po0a0YMqQ1SksRmmO1apwKFmIAYy7dAEQDWCLG8cgRv2lh55/PkwU//CCoswDcPC4BF+JKDc0viM5xcWmoXLkySkqSxHUWuoa8HpuvocC69jffDLj+6dixNAwZ0kpMZ0GDSUnnNm2AN94ot1la50mTuPJwkHTHU67z+vVBe/26uUjqHGTWne9na3UGgG7duiE6OhpLliwJuW8wSKXoAazvnj1Caa2XXHIJjh07JrauL4jOaWlpqFKlChoLra0Bt/US2i0CPXv2xJIlS8T6b1oZXTHPFwJdu3aV0/mPP4APPyy3WVrnuDiOsFut8/z5PKGzYYNfjlI6jxvnt42gL6zUOS0tTVzndu1Yj549Q+4qfT8H4Kik84kTbEeEgJTOQSCt8+7dIfslA946C0Eg/VsIMTGc/uxnYsQXVussNebk5grpfDpBtOpyDcMwxgF4DsBLhmG8YxiG/4TxM9DHpk1+e6sC7IBOnboTBw82C+2QVq7MKRkhil2kpABr1lyK0tIsAJtDp+kVF/OgaMWNFxXlt9efJ9zj4OWufxf6bPeDbt2AVav8rgHaunUrWrRogUiBAQmAkAPk5tIHwC6Y/TeDchw/Hnj00XKbc3NzkZGRYbnBxFyqgp2ghT7b/aCkhAdFPzpLz8b+9BOnqQXhqKRzEMN469ataNmyJSIEDV58/TW3JAkCb53TIaSzYQBVq5bbbOosZYwA1utcXMyVGP1kVkjrfOwYj19BIuOnXOfatc2cbAGOEjpPmAD88ku5zcePH8e+ffss1xkAqlatim7dumHhwoUh90VxMY+LfuoNmDpLjzkhMiAA4PLLWWchjlbq/PrrgutwgD59+iA9PV2s/2YAo1Na5yZNgAULOBIUAtWqVUPXrl3FrmEQhI3O2dlcAd1PwQ1pndev50JwAjglOsfGsh3i5xngC2mds7KAl14qtzlsdP7hB6BVK57d88NRSmeJaGSfPn2we/duS3QWvoa5ucBjj/l9BvhCSucg9rb08/m664Dp00O2QDrdIJq6/BOAJgD+ALDe43UGdiDAjWf2jCwo4NZCIR1Sc42vQJpeYaH5sF0MIESanjkYWnHjrVkD3HVX0Ip/7rWC5wBoCmCB2Nrfzp39rguVmqUD2ID1KcgUmGMf15aFoTkuXQr4KTFv9kWz2jB2c+wLYCOAw8E5BtE5LS0NlSpVQtOmTcU4HjrEs/hBovdufnUAtIPQNezRgzMWAqwBktK5dWvOgAgC72sIMY4TJviNIJo6Wz2h4c0xFcAR53QW4Kikc4hIn5TO06aFnNBQ0jk+3m86r7TOiYnA5MlCxWEAoG/fvkhNTcWREBOayMkBVq4EMjPLvWWHzibq1KmDdu3aaTu6UlE0AFiyhKuVCqBvX9ZZiOOrr3K1Wx9I6xwbC/TpA4hUS4WkztdfD/j5LqelzhIOkJTOAewwaZ1LSnjpzsqVwhyFdAY4iuhn0k5a5169uL5CgIr+npDS+e+/OQpbqZJfjhVBZ6lny6uvWq9zZCRHs33aeQJunZsILiPBeecBQ4YIFW87nSDq6FYmogeIaBIRfW6+bGX2b0aAG4/XtuUC+BsAr88N6pDGxvJNIpTq2BjcV3aBz3Y/iI7mWcSLLy73VlpaGmJjY9EwQAGscti3j9Mdgzi63i0/+sIwluD994uCp/+tW8dl9z1SNFJSgKSkfOzcuQsLFrQSL8LUpQtw4YVBd3Gvd24BoDFiYxeGXivoR+eUFOCKK3iyYOxYQY6COpsc69ZlZzwxcXFwjgGMkZQUYOLErSgsbI5mzaLEOAoYTG6dAZ4w+BXvvHMi+DVs0IAroHrMlqekAI0bn8Tu3emYO1dC56VLA7Zq8OXYuHEzAEmoUkVA52nTOKLtAU+d7723tRjHqlWBl18OmQJXXudFFV/nHj2A997zWneorPOPP3K/2yBQ0vnDD3kNrAdSUoArr5TUOSYGuP12oHlzgZ05egEAixYtCr5jiGhp8+bNxXsnSjhAJsdff/0VJ0L0mAzE8eTJk0hPT5czOgUL7ABc7yIpKUnMMG7e3G9rJaW1pd99xxFJAQjrnJXFk3/79/vlKKVzu3bcYzVEBoQnx99++81ZnSUcICmdn3/e78yWtM4REVyPI0B7GF8I63z4MBfh8pP+La1zhw7AffeFLBjpybEi6LxgwYLQOwewt6Wj4lWrCtlhJoR1NgyeQE1M9MuxRYsW4jpnZwOLF4dcinfagYhCvgDcD2AEuOxtTfMlcqxTrwsvvJBOGzRrRnTjjeU2GwYRsJEAEDCdOP+AtwdEzZpEY8YE/bikJHKd6z8EVCYgjwDeLoMpU4gqV76SgA6UlMR/h8SiRfzhy5YJfca4cTNd3//X4J/xxBNEkZFEpaVl3GJjiYA/XMdPpdhYQY6bNhHNnCnEj4ioV69hFBFRg4Ci4BybNye66aayP90cnyQgkoACcY4PP0w0a5YQvy++KKaIiHgC7gjO7++/iUaPJlqzxg/H5gRcTwCJcZTU+dFH57t0+ik4x99/J5o3zw8/930ifA3vuYeoVi0hfkREl1wynAyjemidmzWzTmcJuHW+Mzi/1FTW5ttv/XAME519oK1z7dpiH0QSOge8n5+Q13nNGqItW4T4FRcXU3x8PN15553BdzR1/uYbP9Sb0+DBg4U+j4iINm4kSk4m2rFDaPf581nnn376KfiOP/9M9OSTZeO2++NY5+nTp4tzlNR5+PDhVL16dSoqKgq+Y0oK0W+/ldv8xBNPUGRkJBUUFIhzjI8P+Xw2Ia2zx/1sQlpnSQjr7PN8NhFWOgdA2Oi8YYN19/PJk0R//kl07JjQ7sI6P/64dTq//jqPOYIYPnw4xcXFhdZ5+nS/ttMTTzxBUVFRVFhYKM7RDp337yd6+WWiv/4q95a0zubzefly8WPCFADWkaB/KOrojgFwFLxYabfrtUv0Q5x4nVaO7rXXEr30UrnN7JCajt76Mkc3qEM6ciTRxx8H/Ti3QTbXde65wQ2y3FyiPXuIPAYA9zmSCLhZ3DBeu5a/xA8/hNiRz1Wlyj8ERBDwTPDPGDOGnXzZMabhAAAgAElEQVQX3M78DNd3TBV35h95hKhSJYEdmUulStNdn7EyOMfatfkhXY7jdQS0FNNXEm6dbiCgAQGlUk4Wc8x3afCUOEdpnfMIiCHgvuDXcPRofrh48SMCprk02CSnc0yMwI6mzuZvaUVwjrVqWadzRgbR3r1C/IR1TksjGjSIaP16H44KOm/ZQtS7N9Hq1UIchXXeuZNo82YffhVF52vldW7ShGjoUCGOREQ33HADNWjQgEp9DEovLFvGBBYt8tqcn59PERER9PTTTwt/nizy8vIoJiaG7rvvPqXjp01jnTdt2iR+kITOREQzZrDOK1asCL5jrVr8XPXBtddeSy1bthTnR2SvzosXe21W0rm0lOjoUaK8PKHdTZ3vv//+4DvOnOnXIVDS+dVXiTp3Ft5dWOe5c4m2bSu32QmdBw8eHFrnpUutu5/N5/OPPwrtLqzz6NFedpgJJZ0lIaxzAFx77bXUqlUruYPs0NnK+1lS53CGjKMrmrr8IIBmRNSEiJq6XmfLRo/PQBDffus3H3n8eCA6eofrL05dDrlu7IMPgBEjgn6cmaZXs2YvAJUBzPNXI8KNxYs573DTprJNnFadB2APAE5HEWppIpECx22G4gF0AjA/+Gf4pKO407C3gDP2W/hsD8GxsBDIzxfiWFh4GQAjNMc6dbx6HLu5bIZ5DYU5FhZycQ8BflxzqC+4gvWfgfkVFfHLA8wlDUApgDbiHBMSgJYthdaGsM5VwBVv5wFQ0XkzuAp2czF+AJ+noIBfAhzdOutwlLiGALdYGDNGiJ+3zlsC82vZklMoL7jAh4uCzm3a8NrITp2EOArr/NxzwMCBfnho6Cx9Pzuos2QbiL59+2L//v3YsmVL4J0qVWJdfNaEpqWlobS0FG3atAlwYBDwRHhIVKlSBT179sS8efOC73j4MKfe+mDz5s2IjIxEc8F0bgBArVrusVsAl112GQzDCM0xQKrj5s2b5a+hHToHSBdV0nnnTk4BnzlTaHdhna+/3m/dAiWdH3mEC08KQljnQYP8LmU5LXWWXIogrHPr1l7jtgklnSUhrPO6dX4LtirrnJsrvHu463y6QNTR3QkgeLPTM7AdyclAt247ERFRG4ZR3bK+liby86uAW/jMQ1ZWkEJXfm48Nt7Mm1XCqKtRg3vVCbQvcJ+rH4A1AA4H/gwfY8RdLTUVvBY51md7EEgMDswlAUAXALP8cPfApk3AU0/5cMwFsANAB5/tIdC3LztBQvwAvoYo4+iX3/TpbBzv3OnDxWwrIMGxaVMgLQ3o31+CY3+ws/VXYI5BdW4DnrixS+eaALoCmO2z3QOFhbym3SwMB02dBQ2m8jrP9s8vAJR1lsAp11mgwqiwzvn5rHU5jsdhp84m+vVjnWcHWwfYtSv3qfWpRG+2CengZ91pQGRl8Zq0994TPqR///5IS0sLXgl12DDg8svLbU5NTUWbNm1QuXJlcY4PPcRF8PwUwvGHmjVromvXrsGvoR+dAa7QumPHDrlrCNijM8ATqPHxXpuUdFYwjPv374+tW7di165dgXcqLPQ7SaKksySEdS4oCG+dAzhAYaXz2LFcWM8HSjpPncq/a5EiXZDQuWNH4NNPvTYr67xmTdB2nr6oCDqfDhB1dE8A2GgYxkdma6Ez7YVswpEjHGGZMSPADjvRpUszsX6MAHDrrXwjh4A7AnQlgG0AdgWPXAB+jLqNrr8kjLpatdjgvPPOkBzd5xoI7ms5J/Bn+BjG7iqqqQDaAxCIhpuQGBy8Oa4HcCAwRx+MHw/ExPwO/m4d5DlK8WsA4AKYxrtffmbBgurVvThGRaWCJwqay3EUhPc1BExnPHx13gCOmvrhWKmSu+2AB0dlnQUL7JTXOcg1/OgjbrnjURFbWeeiIi7W87//SXDU1VnyGo4YwTxr15bkGERnP2OiW2fIc5Q0jBs0aIALLrgAs2bNCr2zD1JTUxEbG4tmzZqJH1StGj8wJDgOdEV2gnIMEC1NTU2VNzoVMHDgQGzYsAH7/RRyAuD+vh5jIgD8/jvrbLcDJKTz1VcDGRnA2d5Jd0o6KxjGQjr36RNwQkP6Gi5axDaOnxY2wTgK6ezzW1TWefp04QrgANCwYUN06NAh+DXMz+dCV34coLDROQCUdC4p4QJrEoWUdHVu3769HMdKlUK2y/SEkM5BHN2qVavKRcXNc/zLilGJOrrfAxgPYAXOtBeyF9nZwPbtAdOtdu7cKffDNgy/7SR84Y5QmFHBH322e8DPw95tGFcHd6Ky3gFyG7ftATSEaRjn5vqJPE+b5jWTmJwMTJiQBSADQAe5aLjEQ8DN0TTeZ8Mw/AQy9+7l/onLl3txvPFGdxRNmqMUP5PjSgCZ/q+hnwE2ORk455xUxMS0g2FEynG84oqQbV28OZ4DTuFmZzwgRx9+r79+CFyZXPIaXnMNG4gCLRnK6zzHv84mPB5+YadzZiZPsHlU3FTWOTqar2Egw8IvR4d1rlRJuL2CsM61azNHjwk7J3T2xMCBA7Fy5UpkBhrv338faN++XPZMamoq2rVrJ95XHODK0DExUhzPOecctG7dOnT0wsegO3ToEP7++295w3jjRr6nXb3dRWAa73PmzAnMD7AmugJwr9+vvpI6JKTOAeC0ziGNd58Kv8o6nzzJ6acS18NxnevWLRdhF+EYVOe77+Z7uVatchzD5n7u2RMYPtxrk7LOGs64YzpPmcKZJBIIqXMQju3atRPvQwywxrNmATffLMWxokPoCpFHSyE6017IXgRpAZGXl4f9+/fLz9RJRYCaAWgLntsIEl0xB0YXkpOBpk03IiamPQwjQs6oGzUKmDgx5G7mWuKEBAPskC8AkO8/zbp+/XI9LZs148Fr4cIOYtFwE927c8qfwFqI5GTuDAKcC3b4Z4EI+PxzH36HDwPLlpVLn4yKSkViYiJKSxvIcRTU2X0NAb6GpQB+8n8N/ehcWlqKAwc2YtiwDuJZBSY2bgRcJfvFOQ4EsBzAMf8cJ0/mVlceOPts1nnpUkmdzzqLU6MEnCC3zm3AvZ0D6Lx9O3DLLcAff3gdHxWVilq1aqG0tL5DOhOC6ly5sleKp5bOShxD6OzHATJ1XrZMUuf0dB5zNm8W4ujWuQkC6mwYPPHn04YlKmqjms733x+y1ZUvBgwYACLCTz6trMqQns5On8fvu7S0FBs3blSLlio648uXL8exQMf50VnZ6MzJ4VZSApMuJtq0aYMmTZoEdtKaNOFr6LNMJDWV7+f69evLcWzZEpDpJQoBnd9/H7juOq9NYafz0aPW6azgAIXUOYhzoaTzokXAiy9KHTJw4MDgOgM87nhMomrp/NFHwODB0hyXL1+OnEDLQPbuLRe0UdbZXP4TzjqvWgV89pnUISF1fvhhbr/p83xW1nnAgHLZHqc7JKYCzsARBHF0zbVN0o5uTk7IoiHeEaBBAH4BkOU/unLNNdxc3AMlJSXYv/933HNPe3nDePFi4LffhHZNTjYnggeCM+qXAfBTIGbCBODnn72OVR5g4+O5iItHr9Zg4PHKcHFcBCCvPD8zdcTPANuhQwcYEukvANjIPnZMqDiM+xpeAO4Yxg+Bchz9GJ27du3C8ePHbTeYvHUuRsDCXh06AOef73WsqbN02lFWFhsjHkXWgkFI5717ObsgO7scRyWdb7653L0XCKeVzhMnAqNHex2rrPOxY9zzdts2od2FdN66lWfyfVJglHW+4ALg0kslD7kA9erVC27UWa2zwDpnTwwcOBDFxcWYP3++MEdlnRUcIMMwMHDgQCxatMhVXNEHlSqxc+qx5t7kqKTzxo28zlmwqBcgoPPvvwMrVnht0tL5iSc4HVoCFV7nli25qF7XruU4Kum8dCn35bVS548+Ah580GuTls633y60zM0TAwcORFFRUcXVOYijq6SzoL3tiZA6V6pUroCgls7LlgG//ip/XAXGGUc33BDE0d3pKgok7eiWlAAhGnt7R1euAUf6ZvuPrlx8MUdEfLjl5eU5MmPMtuSlAKoC+M5nO3iQefRRwKNZeEoK8NxzqQAa4cILE/wX2QqEvDyOrghEgLx44BoA+TCNdy8b2EfnlBQgKakQqambsXp1Bzl+ABejeuEF1lqYYwSAqwHMBXCyPMcrruDIkgspKUDXrvyQevrp9vIclXTuCqAWgG99toN1njwZ8KhYmJICvPRSKoCmaN++hhzH48eBZ57hNDhhfoBb53k+2xFU51WrFK5ht25miFGCo6fOef45eow32joLriP25hhEZ4Bnobt08eJo6tyuXZwcR0mDSUjnrVt5cs01oaGt8549XNREsGIwAERERODqq6/G3LlzAxt1VkXRAP4dXnaZ1CFdu3ZFrVq18G2ggi3jx3NFXh+OTZs2RZyfZ2JQKBZeueaaa5Cfn++/WuuffwJvvuk1cVVYWIgtW7bIG+4AP6PGjg35fPaE4zr/5z/AVVdJHRJUZyJ2BvxwVNLZXEJlpc7Vq/PSosTEsk1aOgvaYZ4IqfOSJZyG6gEtndPShCd5TTiqc506HHH2cfpCIajO557L6cat3V0uTJ2VbVmrdf78c+Ad75JIypMFAEeIrVxTWBEg2oco3F+nTR/dpUuJrrySm0R7YMoUoho1XiUA1KhRtnDfU1qyhHuZ5eQI7c69H0tdvTev8d/7cds2ovR0L26JidwXrV69VHFuJi67jKhrV+Hd3f0pbyIggYAib47Hj/MOr71Wxo97irYi4OrgvTD94Z9/+HxvvinJr4iARAJuLH8N/+//eKfduz34pbr6dU6T46cAN8dFrs+cGbTHp5vj4wREEnBSnqOyzvcQEEvACW+OOTm8w6uv+nBs5upR66TOtZzR+Z9/iFauFO5rKaTzxIlETz5JRBbp/OSTRM8+K7x7SJ0LCojmzSsbE8NS588+s1bnDz/k8+3bJ3EQ0aJFrPPMmTPLv3nllUQXXeS16fHHH6eoqCjKz8+X+hwd3HPPPRQbG0snTpwQ2r9Zs2Z03XXXyX+QqfNbb0kdVlRURLVq1aIbb7yx/Jvm/ezx/NuwYQMBoGnTpslztEvnjh29NmnpnJVFtGeP9GEBdS4sJHr8caKFC702K+t89ChRt25E334rdVhQndPSiKZN8xpnw07nK66w9n6WfD6buOeee6hq1arldTafzy47zISyzooIqrMfmDp/9dVX8h/20Ufhfz8r6hxugFV9dA3DmGUYxo+BXrZ53/9mXHIJMHcurzF1ISWFo6pHj+4EkIiMjBqBW//4ondvTo066yyhj+cohQHgOnDkIsdjuwt33MFtIDy4ZWZuBBCNv/9uI87NhGQEyJ1mfSOALABLvAvE+ETRuKL0CXA1aZ4BE+rxa0JyxtjNLwrA9eCU0TzvNPBq1YB27YAaNTwqXrsL10jxA7gVwt69Qr1BvTn2AlAbAFf59uJ45EjZzKQ3R27nIs2xQwdOCROEm+MQcCTyJwGdc8Dd0Hg21nmdT3hfQw+Olui8YAGn0+3eLckxiM5jx5atc7ZE55de4r63ggip85EjwJVXAq6iJ+Ghs8/97LEUwRKdFaORvXr1Qu3atTHDX9X+88/n4jAeMNt8xHiswxcGkflFpTBkyBDk5eWVX5NWUMBr2T36gefk5GDnzp1q0ZXq1XlNrWSrmqioKFx//fWYNWtW+QiLn0KMWlE0DZ1r1arlX+cAEV1lnUeMAPr1C72fDwLqHB0NvPyyV9VlLZ3j4njp07XXSh0WVOeffuJlIh7P09NeZ4W12ADrfOLECcydO9f7jdJSzvpo165sk5bOigiq865dvMTNIxNOS+f4eL6OEhFdoGLoXKERzAsGW0cBX6LetBOv0yai6wfuiMIlBHTxH2UNhsJCoqIiyc9a4YpGfF7+s9q0IXLNyLn370tAe3luREQPPEDUs6fEAUSjRhEBJwk4i4C7vKM6mzczCdfMq2EQAYtd32dWGUfDkPjAatWI7rtPePcpU4gSEjw/9+uAkSfmR67vEU9AsTy/n37ik/z2mwLHUa5IWq43Rw+dmWMRAXEEDFe7hgpgnYsJqE3ADQI6z3Vd7/kO67zU9bkzvDn+739EtWoRFRf70blEnt/cuXySFSsUOAbQuaSkbN+w1HnLFibhmmH31nmBGseEhLIotgjc13CJ//v52WeZhFU6m/ezhM4mRo0aRbGxsZSbmxt0v6KiIoqLi6Phw4dLfwYREd11F1GDBtKHFRcXU+3atemGG27wfsO8nz0iKXPnss4LFixQ46iIJUtY56+//tr7DQ+dTdx5550UHx9PJR73kTDs0PnGG4nuvbfsT22d77zTWp0LCogyM72u4RmdAyOgzq1blz2fiU69zkOGDAm5r7bOjRsTPfyw9GGO6ayBoDpff33Zn6bOI0aMUPsgRZ3DDbAqoktEy80XgDUADvpsOwOr8eST5ar7uqOpf4LbcPhuD4LVq3kx+8KFQh/vjl50AVcZnQYA5aNUrhkm5lAMYBWATnLcTEyY4NVmRwQ8SVwZvG7uOwCF7qiJOVvlKhjClaMXgSMyvcrOIdLbtgw1akj1HnMX2TEjadMB+I88MQ8CsBC89jhSjR+gyNGMpM3x5uihM3NZB+AYAPdMvBRHBbDOkQAGg9vP5JbX2YvjQgCVAHRX46iscw8AdVBO53HjuMJ2ZKQfnSPk+Sn0wQupc1JS2Zp7S3R+7jmgXj2JA0Lo7FO4za1zDJR1zswsV607GNzXsCf86pyXx1kzVumscD+bMCNpAVtquLBu3TocO3YMl/vpZyqEuDglfpGRkRg8eDBmz56N3Nxc9xt+6lMsXLgQMTEx6N69O5xEz549UadOHUyfPt37DbMtjqt1CxFh4cKFuPTSS+XafJiwQ+evvvJa06ets+SYaCKgzuvW8dpXD5tEW+fLL+e1h5JwTOfLL+con0edAVEE1LlqVW5b5EI46HzCM5JZWlquKJO2ziUlUm2kTDimswYC6uwT0T1VOldkCClpGMZAABvhqsJhGEb7M6nLNiEjg/vCeYANpCMADoNb/3huD4GaNfnfrCyhj/du4XMz2Fg74i5KNYX4XK4iDW7DOAeAuzCJ3Q6Q25G+CUA2TON9714AnTsDhw5xGjjYeY+IWAR23jmFW7rHb0IC8M8/ChwjwQ7GLHCatWv7o4+WtYAYPx6oXHkHuMfv5er8AEWOPQDUB+DuGLZ3j7fO48cD0dGLXO9epsZx0iSgeXNOUZTiB7DOJwHMdG83f9MeHA1jEdj5iVXjuGkT8MknEgeE0NkD3jr3UeNnh86ZmWVLGyzROTqa2yE4onMVNY4KCKrza6+VGWCnUmcA6NGjB+rXr4/PP/foAEjEg/Lrr5dtWrSIdb5MsqCUF8cTJ6R0NnHTTTfh5MmTmDlzpnujj84mx+7du6NKlSpqHEePlu5rCbDxPmTIEMyaNQtZns9OjzERALZv3459+/ahT58+avzatwd27OAlRpLwq7Mf/Ct0PnKEW7lJwjGdo6N5EJCt4osgOq9dy8vSXNDWuWZN1lmiAJ6Jm266CXl5ed46z5nDywZSU8s2aeusYIcBDup8+DBw443cSUQSAXU+dsz9PABfQ8MwcKlkVf4yjB3LlZf/RRCdsngOHK47CgBEtBHcPPIMrEZmptePGmADKSbGrCzLjq6w4WSeS9DRBTyjF7cAKIG5ri8vD3jpiTxet+I6LxvG5k19qRw3EwsWAL16sXMqCLcjfQWABgA+dm+PjARq1y5bm9Wv3z8gWoe4uMthGJDr8Wvim2/4IAm4OQ4HUADgSwBARASwf/5mL08oMtJ0Li5HQoICP3OwlpztZI6RAIaBq/LuAQA0rOnWOSWFo1ZFRYvAayIT1a5hQQGwc6fUb9F9DbsDaAlT54gIYPrh3tye49xzkZICPPbYIRBtgmHwZIESx/h4oT66/jmOAFAI4IsyjlsGPsaTGi5ERppRjFOtM//2bNFZYcwJpvPKWZll57VM5zfeAB57TOIAX50L4KlzSgq8+hxq69y4MWe5XHGFFEf+7EgMGzYMc+fOxV5zjMnL40nU0tKy/RYtWoQOHTog0cPQk4KCzia6d++Oli1b4mPPMTXTrTMAHDp0CJs2bVKPXADcQmrVKqVDR4wYgYKCAnzxxRfujR984NW6x3QulDlWqQI0aya9jhhgne+66y5vnU+cYOf5q6+8OJ72OicmKkX6gAA6Z2aWc8QBDZ0LCoAHHgACteEJAr86+4G2zoMHAz/8oOSMmzp/9NFH7o2Zmew0u7IWLNE5IUFb5y+//NKbo48TCWjoHBkJzJgh3KHD+9AAOufkeGUfLVy4UE/ns88GLrpI7diKCpH8ZgCrXP+memzbJJof7cTrtFmj26kTV9PzwW23TXStDdtPSUkSFTxLSogiIoieekqKhnudWQcCziOuxExUGSeJpk4l2ryZpkwx1+heUrY+V4qbia+/5g/7/XfhQ9yVTYmAZwgwCNhNCQlEix5byOvvCgtdFaFnEgCqU+dXWysZB+fYmbjqM1/HNRGdaP95fT32GURAEwJK1SouK+o8ZQpRdDQRkO66hk8RQHRO9B4igFYO/9TFL5eAaAIeUa8Ibeq8aZMUP/c1nOC6BzZ5rY907zPV9f5adY5ffSVVMbg8xy4EtPTR+QprdZ46lWj7dmmO3jo/TQBRs+j0sNf57Mr7aclDc2jqpHzXPin6Og8ZQtSypdQhwXT+b9RTtPqO963TWRPp6elkGAY9/fTTvGEP38/06adERJSbm0vR0dH0yCOPqH+Igs6emDCBdd5kHv/663y+Y8eIiCglhXVeu3atOscbbpDW2RNdunShli1bUmlpqd/3Bw0aRE2bNlU+PxFx9W/FNYvldE5Pt17nP/8k+uADrm6sgIA6uzpBhKXO6elcG8AFbZ2Li5WezybK6XzgAFH//kTLlhGRRTprwrH7uVUr5cO7dOlCrVq1cuvsY29borNhEJk6SaKczj44fvy4vs779hF9/DHRoUPq5wgDQGKNrqij+3/g8N4mAM0BTATwoeiHOPE6bRzds88muuWWcpvvueceio+PD/jADYqEBK72IgF3kalPXEblzwTwqYg8jb4TBFQi4EF1g27JEv6wJUukDnMXiNlLQAQBTxJA9HrUY1QSGUVTvix1cRxJXLSqUJ3j8uXlyuSLcoyMJAI+87qOO3AOfRd7i+s6ly/+I1XMy8TEiUrFLvgaEgH9CahHQBHFI4tejH+DLq+32fXeTy7+C9T5aejM1zCTgBgCxhJA1BuL6ZGan3j8Vu8kz2JeShxHjSJKTJQ+zM1xkus6LSeAaCfO9tG5ur7OinDr3I+A+gQUUQesJwJoeK3vrdN56VL+oKVLpQ4LpLPJw63zHdbobA5mShwd0Pnbb6WvoSf69etH9evXp6KiIqL1rDN99x0REf30E+usVfwnLY0NuowMpcMzMzMpJiaGxo4dyxs2b2YHzfWMu+OOOyg+Pp6KPQrFSEPxfjYxaRLrvHz5ct4wfjzRDz8QEReFqV69unpRGBMKz2dPeOm8bh3r/P33RGSRzpoop/Ojj/Ksm9U6K9zPJsrp7IGw1NmO+/nYMaLZs9mJVoAjOn/2GdETT2gcznbYzz//zBtWriRatYqIwlTnnTuJhg0rm3SZM2eOvs6LFys9n8MNdji6sQDGA1gLXpA5HkBl0Q9x4nXaOLrjxhF98km5zRdffDH16NFD7ZwvvyzdY84dATpBQA3inrVEDaMP0oInllKrRrkuI26By+D7Sd2g27SJf4q+FfEE4DZ+BxD3uMyhjzCCDkXWdb1X4DLqr9YzOp9+mmdkFQZpjo7nuq7jAAKIshFH7+Be13uzXddwRhlHu6vcludHBPzo4jGpjIf7dRtxxd48dX4aOrs5DiWgGgEH6WMMpwOo69qeS9xTeYjeNXzqKdZZoeIiczTvl/5lOr+NcS5Os1zXd6YexzVryh7O8vyIgB9cPCZTE+yiCbifWiDNOp137+aHs0Kkz5/OF+MX6ot51ups3s8W6vw/3Gutzi1bcgRDET/8wDpPnjyZI4YA0S+/EBHRbbfdRrGxsZQn2I/ZLgwdOpSqVatGBw8e9Nqem5tLCQkJQpVcg0LjfiYiOnHiBNWoUYP69+/PG6pX52c0Ec2axTr77X0pg5YtOcNAEV46z59vvc4FBUSpqVoRIC+dlywheuMNIrJQ588+42uoEgggPzpPnEi0ejURWayzVfezHTprPJ9NeOk8fDhR3bpE5NZZtJetXTB1vuqqq8q9Z5nOLVpYfz//+isREd166636Ov/+u7bO4QDLHd2K8DptHF0/KC0tpbi4OBqlMUukAncE6H4CogjYRzdiGhFArfGn6717iKMvx9UNuv37+YM++ED6ULdhvNplXD5J3+Ba+gPnurZ/6tqu2G7GxNtv88GZmdKHup3xV1xcFtMc9KPh+IQiIoiAiwloTEChnjO+d69XupU8vxICOhLQgOKxl5phO0WiiIDdBEQScJ8ev8OHufn5okUaHLe5fosj6RtcS5vQ1rX9bde1/U2Po6lzVpYGx1cJAEWAH1JP43niFNeuBCTp69ytG9Gll2rwM3Vu6HLYzO0W6ayBQDq77+e3/j06X3yxks4mSkpKqGPHjtSwYUM68euvRDfdRJSeTrt376bIyEi6T6KNll+UlrLzk52tfIpt27ZRVFQUjRw5kmjDBo7qEtFbb7HOv0m0S/OLzz8n6tqV6Phx5VO8+irrvNg0Op9/nkpLS6lr166UlJREhYWFehwV72cTXjp/9hlz3LrVOp3N5/OHHyqfwktnD1imswWwXWcL7ueLLrqIdZ40yT6dFewwE146p6QQPfccEbl1XqGQcVYO+fnKE1dEHjovWMCtCf/6y1qdBwzgFj6K8NLZjvt53z7t+zkcYEdEdymAJb4vgeOuBLANwE4Aj/l5vyeADeD+NIN93rsdwA7X6/ZQnxXOjq65ltUwQqxhLS0tNyM5ZV5o4r4AACAASURBVApRgwYZBIBq1nxPLe32xAmldBS3E/kX8bq922kMJhIB1CT2EAGHCKhMwAg9gy4/n+i884i+/FL6ULfRSQTcTEBlmoFOtBS9iFMbmxNwIZlr6ZQ5fvklH7xtm/Sh7jTvPAIaEXABmb01OZUZBEws46ecXn311UTnn6/Bj4hTMUFdMIAIoEQcJmCMS/8MAogqVXJ+zaE3x7EERNLnuMClcwEBDQjopX8NLdH5JAFJFIHzKRVt6VZ8TsAyl87vhonO/LuLxjMUi1zX/WGhzqWlHAnS4uirc751Os+YwQPBnj0aHFnnKJxHJQCNxrthobMnli/n+/mll14q2zZmzBiKjo6mDMWU4zLk5/MXfPFFrdOMHTuWIiMjacsFFxBdcgnl5+dTgwYNqFevXnr8LMLJkycpKSmJOrRtSyUA0Xvv0bJlrPO7776r/wFXX03Urp3WKcp0vvVWoh49iLKyrNfZ4zekgjKd584lOnw4fHU+77xyOr/33nv6H3DNNTypoYEyna+6ijU5fDhsdf7zzz9dp7VQ56lTlZ/PJoLdz5bobAHK6XzkCI0ePdoanU+etETnUw07HN0LPV4XA3gTwGshjokE8BeAs8GNLX8H0MZnnyYAzgeXrxzssb0mgF2uf+Nd/48P9nnh6uh6G24hDJ8tW4iiooi++cbn2Hku42mZmtF0111KDaK9nchHCQDdheFEgCvS9xRxYZu0MHGA0gmIoTaoQu/hCgJeJN8UQmWjc+5cPoHijKR7bd8UF6cbCFjrcsJrk5kqGhmpcQ0VdTb5ubW+liIQQR8AZGAqccTevd5QYymUFtwcDxMQRw0QTS+gl8tBc0ftta7h3Lmcs+9KW1PnaBbGup6AVa7JDYt01mj47k/n9+3QOT6eSHHm2c3xiIfOPQkYbZ3OmvDVeQAqUW+MJy7ed+rvZ08MGjSIoqKi6P3336fp06dTTEwMDR8+XPu8RERUrZqyziaOHDlCcXFx1CQ6mn7u1YtGj2ad58+fbw1HCzB1Kus8GKBVL75IHTp0oNq1a1uT+q1xP3vCdp3vv1/rFLbqvHw5D1grV2qdxp/OderUsUZnxbRqXwwaNIiiIiLo/Vq1aPrUqWF7PzdNSqKfly61VmdNO8yEl84vvWStzhahTGeApk+bZq3OVatq38+nGo6kLgNYE+L9rgDme/z9OIDHA+w72cfRvRnARx5/fwTg5mCfF66OrttZXEu8dov/9htVXL6c31y40OfY11wG3pHAxwbDww8TxcRID7TeTmQOAfWoPhJoE6oTsIO4IMy1YeQAEQHfE6/tM1zX7ApyR081jM41a/gEP/6ozJMj5KXUGKMpAnDxO4uAaWX8tNbmKupswv17y6Y2aOziBwLOJS74ZQHHiy8m0ij24Oa4muoiwoPjMDKj9lr8Skq0DRLmWErAG4QyjtUJmB6GOid5XMO21umclER0661ah9uqswVwROfKlbV/j9nZ2dQvya1z27Ztae/evVrnLEOTJlo6m1i9ejXVj3DrPGzYMLXCi75IS+NsIdczVRWlpaX0xmj3uF29enWaMWOGPj8irmacm6t9muzsbOrXr589OmvezyZs09l8Ps+apXWa0tJSen3UKHt0tgi26hzu97MFdhiRzTpPnkzUu7c14/Y559ij89atSst2wgl2RHRrerwSwc1Lt4U4ZjCATz3+vhXAuwH29XV0HwLwlMffTwN4yM9xd4OLY61r3LixbRdUB+70397Ea+IKAxtA337LO2/Y4HPsdQScrW48vfoqH6jwMPV2In+iyoiisxBBXGn5LAJSrTHq7riDixcowjv6/CcBycTFlTRTlk0UFPAaU42KgSbHa/ENLQKoDkaSOXlhCcdXXlHWmch7YmMKhtCTSCTgSzKr21rC8cILifr1Uz7ck2NN/EFVcB8BG6zjZwHMe+ZyLKB30Ypq4H4CssJc5ylhqnMpZSCCeqGbtTofOcJtJTQMY++xcQlxBomFOh84QLRjhyWRoOIhQ+jtxERKSUnRq3rqC02dy1BaSn9HRtIT3brRBtfzzxLs2sVCTJpkyemWzJtHLz7/PGWFqZFYfPfd9HarVvbobBZq0kFpKf0dEWG9zn/9ZZ3O33xDSwB6cfRoa3VesICLFJ04oX2q4uJievvtt63XecUKrbTgMrh0fjyc72dT5zFjrNVZ8/nsCdt0Pg1gh6O72+O1A8ACAN1DHGO7o+v5Cv+IrllZdwoBAVLaPv6Yd3bN2rgjBnWJq5AqGk+ffsoHpqdrfgeiFphFNdCegFsJOGCdUXfFFdzTTBGmYVwNOfQp7qIerrYfnk74qUpz9ORoGETDwTo39IieARpp1SZMnRXWHXpyjIwkWoDLaQW6ePGzhKOmzp4cfblZonNhIacSuto2qCIhwUadd+/m7A+NohnmNZyPPvbo3LevJTpHRZTQ+dhY7hpq63zsGJ/o9de1OCYkEF2FWTQT11Ecsq29hlaiTx+iLl2sP68F9zMRcVQT4J6yVsIinW1Faiqnix4+rH8uu3SeN4/IbMmig+xs1mPCBP1zecJKnfPz2VbKz9c/lyc++UT7+VyGkSOJ7r1X/zx2oSLobNrbumtefWGBHWY7fvyRv38FhoyjG4EgMAyjMQAQUVOPV3Mi6ktEvwY7FsB+AI08/m7o2iYCnWPDCuPHA7GxANAPQGsAEwAQSkqAu+8GUlI8ds7K4n8TEsqOrVw5HcBBAN0A8LnGj5ckkZjofX7l7wBsxwAcRSp4WXW9sn2UeHkiIQHIzFQ+PDkZ+PhjoGWNwxiGz9AE6WXvGQYwciTvo4UXXgC+/16L48iRQC3w98xCQtl7CQnMX4tj797AtGlAfLwWx88/B96NeQgv4wmv9yzhqKmzyfGrdw7jlain0Bp/lm23ROeoKGDKFGDVKi2O//sfUC+a7zfLdW7SBOjZE4iOVj6FqXNtI9OLn2UcExMt0XnyFxHYGdsO+zweB5bofNZZfP0Ux0QT//sfcGH0H7ge36IAMWXbLbmGe/cCb7wB7NunxREAa2E+B6zEyJHA/ffrn6dyZWDOHODqq/XP5QmLdAYA/PgjcO+9QEmJ/rk8sWcP8PbbQEaG/rkyM8vsB0txxRVAjx765zF1sPq3eNZZPHZboXNMDJCUxP9aCfM7a46LAIDVq4Hdu/XP44u1a4GvvtI/j506P/wwcNFF+ue69lrgt9+AOnX0z+UJ8/6zQudx44C33tI/jy+++gp45RXrzxuuCOYFA9jg8f9vRL1n1/5R4CJSTeEuRnVugH0no3wxqt3gQlTxrv/XDPZ54RrRJfKMQH3iiuou9h8FnTuXyGy27cKoUWbxoo3BKzYHw+7d3Ldu/36t75CQQHQNvqO22OQVuUhIsCByMW4cUVyc5kmI+4sCdEet2aGrXMuibl2t9GoTW/o/SCeMWOv5WQjhSuGyuPdea3RevbpC6JxnVLGeX3Y2t25QzNDwxMphn9CoxBnWc5wxg/t362LfPlp9x/t0UYMDYa2zLffzL7/wALtggf65Gjcmuv12/fNURNStq1UXoAwPPkhUpYr+eXxhpc6NGtmj8+7dbJ/o4p9/OOK1Y4f+uXwxciRX5dXFjz9an1lAxBHxcNfZquezyw6j2bP1z1XRYN7PVhTfCnedTyEgEdGNCuEHGx7/P1vSgS42DGMsgPngCsyfEdEWwzBecBH80TCMjgC+czmzAw3DeJ6IziWifwzDeBHAWtfpXiCif2Q+P5yQnAzceisADAVnYY8HcCkAnrQvw5VX8suFlBTgyy9/A3AWGjdui/HjFSMETZoADz6oyJ6RnMyv4srJmFRpJO7JnYDGjaHOyRcJCcCxY0BRkVakypxJnDQrEZM6W8DLExZEqQCgzfVtgHo3o/RTCzh5oqAAWLkSOOccoFGj0PsHQXKjn5G8ohlQv75F5Fzo3h04eZLnSAwj9P6B4NJh0o8JmNTFIm4mEhMtiQy0qZ0FNExE6d7Q+0rh4EG+6aZO5ciDBrp8OhxdPgXet4haGW64wZrz/P47Ok0ejbWrLgA61wu9vwws1TnBep2tjAwMHQq0bat/Hl8cPQqkpwPnnQdERqqfJyMD2LABuPRSjtpYiX79gObN9c9jV1TcykhfVpY9Ed0vvgCefRYoLNR7PsfHA8OGWcfLEx98YM15vvkGWLLEmkwFT1QEna2yw+rWBZ5/HmjTxjpuJnJz2YaoVUvvPPPnAydOANddZw0vE3XrAu3bc4aBLrKy7BtzrNC5giBo6jK42pe//wuBiH4iohZEdA4RjXdte4aIfnT9fy0RNSSiqkSUQETnehz7GRE1c70myX52uKFxYwCoDOBRcBviXwAANWt67JSTAxQXA2An9+67gdzcFQC6YO/eyPKpzqIoLQV27GADWQcnTyKqIA8jHk9EaSnbN5Y4uQBw7rns5J88qXce8yFi10PAitSou+4CPrXaywX/fnr31kqvBgDk5wO9egGTJ1tCywtDhgCffKLn5AL2pUYBlqRXA2AntGdP/fP4wioHqKSEx4W8PH1O/s59+DA/SHVg5/3coYM1aWt2O0BWjDnjxwM336x/Hl+kpPB11P0tLl0KDBoEHDpkDS9PfPYZpzvqwk7nwjy/DkpKOPXbirROX5i/xX804w0HDnB6rO64EAgu+0kLdjoXtWvrp76fPMljtp1jjq7OSUnAM88ATZvqc/LFgAHA4MH653n3XeCll/TP44tmzYDUVJ6004Gps51jjq7OFQShHN12hmHkGIZxHMD5rv/nGIZx3DCMHCcIni4YP96cOLkHQB0AzwMAjh/3cF6vvJJnnwE8+SSQl3ccwB8w1+fm5fF2aZSWAi1bAh9+qPUdfNcQW4rrrwfmzgWqV9c7T0EBULWqPRwtiuiCpOeMxGCuzdU1mOx0IgH+/qWleuew0wFq3Nia9VnPPcfrfa2GVTr//TfQooU9HGfOZCdy+3a989j5W/ziC2uiQDVrAq1a6Z/HF6bOumNOcTFHLuwYd6xyxu18tlgFuyY04uOBiAg2BnQQGck1GuyY0LDKGf/qK6BTJ/49Wo3kZKBdO/3z2LXOuVYtnsgZOlTvPCdP8nppK7IUfGGVzpmZPKlhx5hj1US0XTpbBTuffVZmF1QABHV0iSiSiKoT0VlEFOX6v/m3pkfy70JysunDVQFHdRcDWIzCQg/n1ePG45TmnwCUAuhddp69KulxUVFAjRrh7wBZgREjOLVFoyBTQCQkcNRUF23bcrjeakRF8ffWHbzsdCKXLwcqVQJ+DVXLLgT++YcNu7g4a3h54osvgIULrT+vVTB1Duf72SqDKSvLPp2twuefcxq51bBK5y1bgGrVgO++s4aXJ6zKLsjMtE/np58GWrfWP09pKUfkrEZUFE/QPv649ee2ClYZxnbez9WqhXdasFWoWRP4+Wdropq+sErnt94y0xith0VLTmyL3ANAnz5cvFQHeXm8DM3q5WMAMHAga2zFuFgBECqiewYWwp0lMApAEoAHAJRgzx5XVNdjxpjHiBQADQC4qx0qjx1WzILZ6QBt28ZfbtYs689tFSZOtKYy5sGD9q2LsCK92tTZjodAXBxHmHR/iy+8AGRncyQkXNGunX2VDcP9frbKYDIn/3RT3f3h0095LZVdGRZWYMsW4LXX9M7hhM5WTGgkJNhzP5sp+ro6r15tT/YDYM16vsWLeXxdvVr/XL6wcuLKrvs5IYGNLF2d7XSAxozhtavhis6dgT/+ADp21DuP3TpnZenrbGdENz0dSEvTO0eLFsDOncBVV1lCyQuxsfaNt2GIf8e3DBO4ndTKAF4FsAkALz8eNaIYdPQokJCAlBQgJycLwFwAN8OUSauFjxWzYJ06cduVDh30zuMPsbHsROquIx4/Hnj0UWs4+aJSJf2Bu6SEHTS7HqRWpFfbmUZolWFsGNYXrTExdy4vI9CJ3peUsMGgu+Y8EL7/nlvP6KAiRHRfeYULrNmBnBzg99/1de7aVbF4ggDq1QOqVNE7hxM6WzWhYQcSE1mnY8f0z2WH4Q7wvazVnw98DXNyOLJpNZo1A+bN42KCOrBb5+Ji/ayrAwfsm6DcsIFb2ujgxx85EmdHe6GzzuKMM90xJ9x1Li7mQnp22WFWpVfbhdxc4IkngF9+OdVMHMEZR9dBePajBYaA194+DuAgYk5mwyDCjCWJuPtuIDt7JoBiALcAsKAvoxU33lln8Yyf7jpaf7DKYFq0CFixQp+PP6xfz4WkDhxQP0d2Ns9E2vUQmDBB/yF98cVcebJJE0soecEqnV97TX/NeSAcOcIVGY8cUT+HqbNdD9JzzwUaNNA7h50TGlY5ujVqAGdLFfwXhxVR5+xsnvyzq6jHjBn6Exp2RnRr1+ZiT5dconeeV14BvvzSEkrlYMVvMTub60gsWWINJ18sW8Zjrg7snNCoVo176epWurUzLdiqZ0tMjD2TBYA1dti+fRwt1HVG/YGIizTpLi2yMyreuzenRutUeY+M5ImCMWOs4+UJKwJLX38NXHaZNcvlfBERAfz3v/qTLhUEZxxdB5GczM4qwwDwCYBcAHeiANF4Ei/h1V+7IS+vBMD/AWgNoD0AHne1Khzfd59+ysyqVVyJ145Uv9hYHritSI2ya4A9eBCYNIkfNKqwMy0YALp1Ay68UO8cDRpwyX07HvZVqrDWujp/+SU7o3bACoPJTucC4JlYXUe/Rw9Ox7eDY2wsP0h79dI7z8SJ9i1nsMIBslvnOXP4GujAzgmNmBjgzjv1C+M0a6Y/bgWCFRMahw4B336rn3EUCFYuOfFq5WAhZs3ST4t+8UV+2YH27YGHHvKMJshj/37g3ns5G8cOWKGznfezYQCPPKLfucHOiG6HDmzP6tgnhsGVoXUnbgLBigmNtDSeWLNjQsMqe7uC4Iyj6zCSkz1bX7YBMAHAPBzHm3gZT2ADLgTwX3AL4YdgtjJWKkLlicsv5wXoOpg2DRg3zr70rcREvSgaYH/KDKDHMTYWGDWKI3J2YNs21klnMmL9em73YRf+8x92yHVgZ2TACsPY7iqyP/wAPPCAns5t2wJjx9q3XvyxxzitVwf//S9/Vztgxf1st87mmKijc/fu3APVLp1TUzkFXAeTJwPr1llCpxzOPhu45Ra9pQ52T2hYoXNWFmdb2aXzmDH6Vcq7d9eP/gdCu3bA669zur8qdu/miKZO1lYwWKFzZqa9Olux/OnJJ+0puAlw2vG2bXpO2q5d/GzRCVoEw0UXcfajDpzQWdferiA44+ieAninMI8CcBuAF1EZ/cHO7bPglOU7y47RLmD3zz88O6SzZnD/fnsqwJm44Qa9Wf2iIp55t4ujeV6dh2DjxsD771vTBsEfZs9mo05nPdp//8vOuF14+WW9Ju0VQecqVbinpV1pt/Xq8b2so/OmTcBff1nHyRdHjrBBogq7dW7UiPsc60aAAHt/i7o69+7Nra7swqhRen1qi4qAYcPsi9y3bs1rqNu0UT9HRdC5c2f7nAuAOeqMicXFXPnbLucC4LWHOtfQbp1btODfY36++jnstsN0dQaAm24qa5VpOQ4c4HZuOqn+a9fyGtWjR63j5Yl77+VlJzqwW+d69eyb0AkznHF0TwHMFGZeYmAAmIzu6IcizAPwNoCLAXwEM5qrVYTKxKJFnO+/Y4f6Ofbuta9kPMDrS8eNUz8+O5tT6Jo1s46TJ+rV47UNOuH13FxrmtoHgqmPDke7dS4pAQ4fVj/+wAFu9dGokXWcPFGvHhskOmuALriAI5F29DoErNF5xAh7JzRGjwauuUb9eFNnu36L9etzu6vevUPvGwiVKvHknF0czd+4TrX33bt53LELjRrp/Q7tvp9N6Iy75vezS+ekJO47rRNJu+UWjmjaBV2d9+/nCc5586zj5IniYq46rbOm3W6d77mHM6Z00lHPOw8YMMA6Tr7Q1Tk3F1izxr4xp359tsN0xkTz+9k95uhg7157+TVqdCaiewb2IjmZ2y9yMMHAYDTHAVQDUAjgZwC8/iAyUrMIlQlz4NYZHDIy7B8YSkrU03pq1+Z1DbfdZi0nE1FR7EQXFKif48kn7VsXAlhjGNut8yOPcKErVZ0zM4GqVe3jGBXFkci77lI/h90ta6zS2c4JDdNgUr0W5ncLZ2Nk0CBOubWrz2/jxrxURGdtaLduvKbNLjRqxFqFs87nngsMH65+vGHw2G+XzoMHs8Y6k7THj1vHxx/CXeeoKHaCdMfEs84K777dzz5r/4SGjs6pqZxdYFehI6t0rl7dPp3/+INrncydq36OJk2404ldSEnhKuD/ApxxdE8hzMhuQgLQCBk4gsbwlKRSJXaGtZ1cwP1wUZ2pKyzkNEI7jZFPPuHiJnZVMLUCaWl6fS0zMvSr5QaDrgPkhM4NG3KanqrOF17IRl3fvtbyshI33KAXKQwFK3Q+eNBenRs31tPZTCO0k2NyMqeYhysuuojTHPv0UTu+oMAZnfPyOKNGBeZv2M5Jl7g4PcP4oYf0sqHsRkEBG+7aqV9BUBF0Np00VeTm2tNtwER2NjuBqv2YieyfRH3ySc6yUK3FUhF0tnsyv2ZNvoZ79qifY8YM4KWXrOPki5gY++rthBnOOLqnGMnJHKDq1XQvDka7b7yEBO7aYImTCwB16/JMmOrgEB3Nx9pVjh3gwaGkRJ3jp58Cl17KRrxd0B0Y7E5H0dV5/35+kNr5kLIiu8Aw7G12/vLL3EtXFenpQOXKltEph3r1+CGqGqVyQmddZ/zGG3kNVYsW1nHyRXExsHWr+vH9+nFxNbsQFcUznqpwYrJAdxLViTRC3XRMu0HEv3fVYk+mzjqFmELh5puBzZvV2wtWBJ0/+wzYuNE6Pr6oXp1Tl1XHnN27OeI8c6a1vDyRkKAX6XQiQ6NxYz37Yf9+e599unaYE9iyhbMfw3kCzyKccXTDBAknMnDZ7Y3KJuwyMy10cgHOgW7QQP3GMww+3om0W9UH1caNnDajYxiGwowZ7ADppG/Z+QCIjARWrlRPVaxXj1tIXHWVtbw8oavzO+/YO+EC8Mz7smXqOts9oRERwQ/qqCi1450yOgG9h31cnPp3FIFpMKnqvH69XoE/EbzwAvD222rHOhFd6dEDWLAAOOcctePHjgX+/NO+3qUAf/99+9R17tuXiwjaBcPg9n2qPeCd0LlOHU4BV70fMzK4L3Y46wzYO4Fq2mGqz76MDODECb6OduHIEeDxx9XTWp3QecwYrumiihUrgKlTrePji8hIvfTq337jglt2phafOMFtGtPS7PuMMMEZRzdc8MYb9q0tNfHZZ9zyQwWrV3NalJ3rgHQjfU6sIT50iPu3qiziz8/nIkx2GiMApzuqTkhUrszrQurUsZaTJ3R1XrSI+8jaiUaNOB1QVecjR+zXeepUdQfo3HO5L2iHDtZy8kTLljzmtG+vdvybb/Kkhp2oCDovXKje19KJ6Ert2pxardq+p2pVrkRrJxo1Yr1Uij3l57MGdvec1EnHdELnwkJuvbNypdrxjz7KfaHtxKBBvLRIpfBYfj4Xz7OrWJYJnWikEzqXlACvvKKus93FLAGeXNNplxkVZe9kAcDXQHVCY9curhNStaq1nDyhG3CoQDjj6IYLbr2Vb147ceml6v1blywBnnrK3tnO2rU5RVonBc5uR1cnSlVSwimxl19uLSdf/PorGySqx06ebO86oNq1gRdfBLp0UTveiQkNHWfcbJ9hN8fZs4GJE9WOTUwErr3Wvr6gAEdj77xT/Tp8+SVPKtkJnfvZKZ11HKBOnXiywG7Dc/Zs9WjkW2/x8Xaia1d2tFSWnpg6230Nw90Biori3t2qfa0bNdLvnx4KF1/MrV1Ueo/u2wf8+CNPZtsJnfRqJzJxTDtM9bf41FN60VYRHD/OE94qE1f793NHgM2brefliUGD1Ot0OHE/16mjp3MFwhlHNxxw6BDPntmdArdzJ1e3Ki2VPzYjg9fQ2jnDFBHB/RhVH4Z2V5EF9AzjqlU5JUjVwRPF7NlskKjonJICPPigvUUKIiL4YajaMzncdY6J4dQqO6OlgNswVtF5xQrg55+t5+SLTZu4Z6EKnNC5dWteI6LS7sOpqtA6OrdowYa/TjsTEYwbB7z3ntqx48fbH+nr2JGjVImJ8sc6pbM5oaGic7duXI1Xpyd0KEREcCFBVcP4ww/tXf8KuNfcq7Svc6rlTLdunHWlgowMnpwMZ507dbJ/Mn/7ds4i+fVX+WO3beO18Ha31nnwQb4nVVARdK5AOOPohgPmzePBz85G6gBHR+64Q/0hYLfRCbDRo9J7s6SEHQu7nQuddI8jR9QNGRk0agQUFanp7ES0FOBr8eef8sfl5XEKod0ck5KASy5Re9A0asQR9fPPt5xWuc9R1fnll/V6Voti3Dh+4MvCKZ1bteIKqG3ayB9btSrP2tvVt9uEjs4bNnAanN1QjVI5pTMA5OSoVQy2u7eqidatgXbt1JYH9eoFPPec5ZTKQUfnUaP02q2I4J9/+F6ePl3+WCfWOQO8Jn3GDLVju3XjXrx2Q1XnggLgm2/cxdHsgs5EtJNt64qK2DaVhRPZiYD9S0bCBGcc3XCAeeM1bGjv5+ikYzrlAJWUAH//LX9cZCSvo7r7bus5eaJWLU7/Vil49dFHrIGdVaEBfZ2dmNB44AGgf3/547Kz2Tmx27lITASWLlVrYZSTww84u6H7sHdCZ1WDyUljhEjtnuzUCfjuO/uvY1ISF4lTWSN6553A/fdbz8kXqmm3TulMxKl6//2v/LFVq3IEzu7n8x13cPaDSsXbnTvt76MLhL/OtWpxRo0KR3OcsltnHdx6q70tpEw0aqTWFi49nXtCL11qOSUv6OjslL09fz5zVCkodcEF9hYENTFnDmfxneY44+iGAzIy+Ma1O71MJxr599/OGJ3PPMOfozIL5gQMg9d2jBwpf6yps51tZwA9nZ2aSWzUiGd9ZXVu0IBTqx/DXQAAG5RJREFU04YMsYeXFXj4YeeuYUSE2poyp3Ru3FhN56wsLm7khDN+wQVsQMrC7swMEwMGcE9GlfoK4X4/OxVFMww2bFXGxMGD2QG1e9zWQceOvCzGbujqbPdv0TDUJ9ciI4HzzrNf5+3buSLvd9/JH3v0qP19dAEuIqiyhtVJnVXv5717nbHDatdmrVSc8RdftLeH7r8MZxzdcICTxgigduP9/TdXM7QbppN78KDccSkpQPPmatFgp+CkcwHI63z8OD9InYr0FRfL6+wk7riD1wHJYu9edsjtxvnnc6XQAQPkjqsIOnfrxpHxnj3t4eWJ+Hi1MfHqq4ErrrCej1XIzWWdnXq2qOh84ID7eLuhU9TLCZw4wQ7rp5/KHeekzo88wpNQkZFyxzm1/tX8DBWdn3iCawrYjZo12U7Zs0fuuNxcHqvsLvQEcMaaSp0OJ3VWzS7IywOaNrWejy9UAw5mj1EnsGQJF8wKZzvMApxxdMMBTqUF16zJaw5VBofISHsLUZlQdcb/+otfNWtaz8kXr73Ga6Jk4VS6aHw8D65jx8odV7UqG54jRtjDyxOqzvh773H1cCeiaURqPeac0jkyUq26qJNpwbq9dO0simZC1TBOT7e3WIgnbrlFvpWUkzoPHsxr7mXbkt12G3DsGNCkiS20vKCqc+/ewEMPWc/HF7GxwJYt8rULnIqKA9ySpXp1+eNMjk5MAIb7hEZCAmfvyXI0969f33pOvti2DRg6lH+PMsjI4DHbCZ1fe02tt/WUKeqtk2SgqnNaGvcgnjXLHl6eyMsDli2Tn3SpYDjj6IYDPvyQZxPthmFwI2rZFKc1azhV1+4CAwCvRwPkC6js3g3UrctrIuxGbi5X+8vPFz+mtJQNYyeMETN9KypK7riICF4L6MRkgXkdZHVet44fBHa2uTKRlMSOf7jqDHBRqZdfljvm7LM5FVNl/bEsunThtfOyRS9eeQX4z3/s4eQLVZ337HFO59RUYPlyuWN27+Z/neBYqxZrLDvmAOw4OXU/798vr/O6dc6suTcM5mjqJgondc7O5jZNstVuH36YnScnns8jR8q31yst5dZEstF0FRgGa6Vi4wBuG8lOFBZyltzvv8sd56QddtFFXLxNBU6MNzo65+U5Y4ep2tsVDGcc3XBA9+5c2MQJtG8v32Jh/nzg4495zZzdaNlSbQH/+vX83ZxA+/b8YJR5CJSUAP/3f9zKxAksWCDvKHz9Nc+SOpE206oV/6Zke0eHu87bt3MKolMc//iDi5zJoHJlNhJUWq3IIiGBW03IFtiZOhXYscMeTr4wdZZJW9y+nSe8nNK5XTv5MbFzZ2DmTOc4TprEY4gMxo4FvvrKHj6+uPpqdoBk1pdWBJ3Xr2ej2u4q7wBHmv73P+D77+WOi43lVldOoGtX1loG27dzyzXZlGxVtG8f3jq3aqVmh73yCldddgJHj7JN9ddf4sds3w7068cTh07g3nu5X70MKoLOFQxnHN1TjfXr2ThwYsYY4EHhmWfkeoitWcM3hErKkiyiozlFb9Ag8WNOnOAUm44d7ePlCXNSYs0a8WOio4Ebb3RuQmPzZuCdd+TWXnzxBTB5sjPpotHRnCItk1aZmxv+OsfF8cNetVG8LDp25DR1mYJUn35qf5sPT6xaxU6QKMz72al7pWtXjlLJzKCbvYGd/C3K6pyQAFx/PTsnTuDjj+Uiabm53M9SZXmACi66iFvcyCzBMe99p36LKjoPGgR88okzE9HR0dzCT2ZMzM1lg9/uHromiIDFi9m2EoXTOl9/PXDDDbyuXRRr1nDWhFM6t28v3wO9bl0eT53A8ePA8OFyz7JVq7idp0rXDBWMGcPLM2Rg2tvhej9XQJxxdE81Jk/mFhBOpFIAXAThxRf5hhcBEQ92Thl0AKcede8uvn9uLnDXXfY3KTfRoAEP6DIPgZ9/dm4WEXA/sEU5EvFg59SDHuB00S+/FI+wbNjAkTenODZowM548+bix9Srx06TE2sOATWdn3rKuSgawNHZsWPFjTpTZ6fGnHr1eHJCpmVV8+b8nZzqQ6ii8wcfcATDKXTsyM6F7P3s5LNl1y659Xlr17Jj3KqVfZw80aMHO0G5ueLHnHceMGyYfZx80bEjayej87vvOrP0ycTQoRx5FsXatTwh5JTON9wAvPGGXKr/XXc5U1nbRKdOcvfzli38nVTaoKmgYUN5O8zp+5mIl7iIFkk9FXbYlVeGd0stC3DG0T3VWLsWuPBC51JmOnRgp1p0cNi3j2eXnTRG8vPZMRSd1a5Th2e0ZdNgVWEYwO23c2N6UTz8sDP9LE3I6pyRARw+7KzOS5bwbOfWrWL7R0TwZIZTHA2Do1RXXil+zK+/ymVL6MLUWXRGNiOD7ysnH6SdOvGaI1Gdze/i5G/x5Em5CFCXLsDEic6O2x07ii8ryMgARo/m9dFOoVMnjsaL6ux0VBwA7ruPHQZRtG/PURmndO7YkdPNzzlHbP+sLE4jPnbMXl6e6NgxvHU2DP4sGQdozRpn7TAAKCiQ6xJx7bXswDuFrl158u/wYbH9585lO8ep1pCmzjLRyDVrOLPDKZ3z8rgmxocfiu1fXMzZD062T3z22dO+l+4ZR/dUorCQ03mcNDqrVgXathV/CBw4wNEpJznu2cNVjefMEdv/4EHnelqaeOUV4LHHxPY1dXbSoDN1Fn0InAqj0/wsUY7du7PhXru2fZz8QbSATWEhO+JOtOEyUbUqcMkl4vufSp1Fx5yYGE79dlLnCRPYABJxGIqKeGmAk72+q1bl+2TgQLH9K8L9vGYNF0NxUueOHbkokqhjOGwY8Oqr9nLyh5wcsf2WLWMHaNs2W+l4oVMnrr4sWk32VOjcqROnxIvq3L49cM019nLyRbdu4pMuu3ZxRpiTY87NN7PdUq+e2P5r154anbdtE7tfTpUddu654mNidDRnXPXvby8vf3Dyt+Uwzji6pxJ//MGzek46kYB7FkwkOtC5M1eBc5Jj8/9v796DrKjuPIB/vwwgKw/l4VrKQ0TA50YUHB+QjdFkS8UY18It4iOyujFkY8o3pdZWRJIpd7d04/rcbERFFxRLUJH4WCO4ohUfA4IgqKCCYFAYEBmRxzDz3T9Ot3NnmJl7B+d299z5fqqm5t7uM7d/079z+/Tpx+lh4V7HQjcOp5zS+vsg2kJNTTiync/SpWEjm3SeTzyxsPiAcECjZ8+9H8Vwb8R5LrQD9PXXxY2nKfPmhct6Xnstf9n4+5xkQwqE+9GmTCms7JtvhsY06Tz36lV4nq+4Iqz3JMU5K+Ss7pIl4XLR2bOLG1NTamsL226nlef99y98cJhOnfbuMW3fRnl5WH+F5Hnr1sI7nG3p+uvDWaCs5nn48HAm+cwzCyuf9K1PQOu+z0AY0C/JK66A+nsjC8nz738f2vPW3NObtKQvuQXqr3IpZCDBqqqwr5jUlX+x1uxvr1wJbN5c/JgaGzkynEkuUe7opim+ZzONRmDXruw+JLpTp3B2pZAd46qq0BFPYoS6XNXVoZN21135y6ZxKSYQLpdZsKCwsr/6VdjAJvFYgFic50IOaFRVhc7S1KnFjytXPNpqIXUxLpN0Y98aK1eG/ynpPJ9wQmGjV9fVJTPqd2OtOeucxtlSAHj66bDNKeTxM2+9FTo/Sed53TqgoqKw8o8+CkybVtyYGhs1KvwuJM/Tp4eO+7p1xY2psaFDQ0cyq3kmCx9TZNu2cEA46W1ia/K8bVt625zNm7ObZwCYNAk4/fT85TZuDI/VS3qb+L3vhWUXMqbLwQcD8+e3fkTub6u8vPA8X355626Vaiu9e5f0gFTu6KbpssvC0e8knouWa8KEMDR7vktSqqvrHwOTtPLycJQu3/2O8+fXl09Sz55hsKJCzjy9/XZ4zmTSeY53RvJddltTExr6vXkG5rdVXh4GzMkX4/z54WxWofeutZU+fcKOZyF5njcvnTyvXRsGRSrkIMCsWcCf/lT8mBqbMSPcd5/PrFlhu7RsWfFjyhXn+aWX8pdNK8+DBoWd8nwx1tUBq1alc8AlHtE4360k1dXFj6UpffuGbUghA1LNmxcewdW/f/HjyhXnLV+eq6tDByiNPM+eDRx/fP72uXv3sH265ppk4or17RsuUy3kLO2ECeHy0qS1hzx37hy22/nyvHZteGxd0h3dbt0Kf0xeWid24ry9/HLL5aqrwzO7k16HQIhxyZJkxxdJkqSS+Bk5cqTaldratCOQdu6Uamqan//b30qA9OabycUUW7FC6tRJuv325svU1UkjRkiHHdby/1Esha6fHTuk115LJqbGfvMb6fDDW14/FRXSCSdIX32VXFyxNWuktWtbLtMe8rx+vdSli3T99cnFFYvXz9ChLa+fHTuSi6k5u3c3P6+2Vjr22PTzvHx582WWL5dI6brrkosrVmieJWnLFmn16mTiyrV7t3TOOdKkSc2Xqa0N/8fEicnFlevll6XNm1suE+c5y9/n6dPTa5/j9ZMvz1u2JBdTc+rqmp+XhTwPH97y/mCa+2GF5Dn2l7+ks91euVI65ZSW18/y5VLnztKMGcnFFaurkx56SPr665bLtZc8ZwSAShXYPyxq5xPAGQDeB7AKwA1NzN8HwMxo/hsABkfTBwPYDmBx9PNf+ZbV7jq6F10k/eIX6S3/k0+kQYOkBx9sev6WLVLv3tLZZycaVgOVlS03Ui+8EKrwtGnJxZTryy+lPn2ks85qvkxLO/ZJeOqpsI6ynOfYrl1NT589O908b90a8jx+fMvlVqyQqqqSiamxQvJ88MHS1KmJhtXAM89IAwdKn3/e9PxZs9LP8yuvtFzmyiul7t2lDRuSiamxfHnesSP9g6gXXijtu2/+PD/8cLJxNdZS2zJ+fMjzxo3JxZMrzvP06S2Xa+mgTLFdcEH+PO+/v/TOO8nGlauiQjr//Obnp53n11+Xli5tfn5trXTkkem2z/nyXFXV8nep2ArZD0s7z/lkYT8sznNabVsrZaKjC6AMwIcAhgDoCmAJgKMalfnnuBMLYDyAmarv6C5rzfLaTUe3pibspJDSDTekF0ddnXT88aGz2/hsY1WVdPHFoXpUVqYTX645c8LRwlx1deHnuefSOYoYu/XW0Jhv3dpwepznQw4JjVlaWsrzxo3ZyHNNjfSDH0jnnbdnniXp0kvDUe808/znP0vV1eF1bqNeUyM99li4OiJNuXluXN9y87xwYTrxSdL774erNJrK8+LFIcdp51kK6/KJJxrmNO481tSk+12J89zUTl2c52OOqa+raWgpz5WV2cjze++Fs2l3373nd3f79nBVQdrt88yZTR/827gxfwc4Ce+9V5/n9esbzstKnm+9NWz37rlnzzw/8kj6+2Gxqqo92+d4vW3bJq1bl3xMsTjPd96557w4zxMmJB9XrubynLu/feONqYUnKezHnnJK01f3zZwZYkyzff7gg3BwKu0DpQXKSkf3ZAAv5Ly/EcCNjcq8AODk6HVnAFUAWLId3SOPlPr2Dav9uOPSO/sTe/VVqV+/EM+AAdKvfx2mf/BBuMzj6qvTjU8Kl9P26iV17SodemjYqA4YIN13X9qRBdXVocGUwpHFoUPDT1bzfNttYdqaNdI++4SNaxbyfPPNUllZwzzHZ/ZWrJCefz7V8L7x2WfSQQftmec0LolqLM7zlCnh/cKFYV126xbyfM016cYn7ZnnuXPD9IceCgeMspDnV14JOe3du2Ge0zwzlevVV8Plt5L04ovhu5LVPHfpUn/gZcaMsF6zkOfq6rDTmZvnYcNCJ10K9TLt7Xbsj3+U+vdvmOeysnQ7P7E4z/Pnh/f33huu2shynr/4Isy77LJstM+SdMst9fthw4dLQ4aEXG/fnnZkQUVF/XqqqAgxZjnP8cHon/2sfj9s06Z0Y1ywoOH+9vDhUm6/5eOPUwttD48/nnYEebWmo1vM0Wf6A8h90No6ACc2V0bSbpJfAugbzTuU5NsAtgL4F0l7DB9L8nIAlwPAoEGD2jb6YjjxxDBA0I9+FEZ+K3TkwmIZPTqMlHf//WHApCFDwvRhw4BPPin8+WnF1L07sGgRcN99wOefh9Giu3UDunZNO7KgR4+GD3GPh7vfd99s5nnYsDCtZ09g4kTg5z8PAxmlbfJk4OKLG+b5gAPCvCOOCD9ZsGkTMHZs/UiduXlOW5xnRSOI7rdfeJxCv37ZzXOc4wsuAM49N8SctjFjgGefDQPu5OY5jcdbNWX06PrXvXqFUbS7dMlunuPBYgYPDs+knTgxxJ2mHj2AV18Fnn++YZ7jdmXs2HTjy7V9e3g+9/btDfOc9CBZTZk8OQyqOWBAeD9wYHgG9tFHZzvPAHDHHeF7nXb7DADXXhvW1eLFDfNcXR32d9J20031rw8+OGxzunXLZp6feSaMDA6ERwmddVY29sPGjAnt8x/+UJ/nnj3r5w8enFZke8pCG9KGqPhL39YfTI4DcIakf4reXwzgRElX5JRZFpVZF73/EKEzXA2gh6RNJEcCeArA0ZKafajdqFGjVFlZWZT/xczMzMzMzNJFcqGkUYWULeYhjk8BDMx5PyCa1mQZkp0B7Adgk6SdkjYBgKSFCPf6Di9irGZmZmZmZlYiitnRfQvAMJKHkuyKMNjUnEZl5gC4JHo9DsA8SSJ5AMkyACA5BMAwAB8VMVYzMzMzMzMrEUW7Rze65/YKhAGnygA8IOldklMQbiKeA2AqgEdIrgKwGaEzDAB/C2AKyRoAdQAmStpcrFjNzMzMzMysdBTtHt2k+R5dMzMzMzOz0pWVe3TNzMzMzMzMEueOrpmZmZmZmZUUd3TNzMzMzMyspLija2ZmZmZmZiWlZAajIrkRwJq048ijH4CqtIMwa4HrqLUHrqeWda6j1h64nlrWNVVHD5F0QCF/XDId3faAZGWho4SZpcF11NoD11PLOtdRaw9cTy3rvm0d9aXLZmZmZmZmVlLc0TUzMzMzM7OS4o5usv477QDM8nAdtfbA9dSyznXU2gPXU8u6b1VHfY+umZmZmZmZlRSf0TUzMzMzM7OS4o6umZmZmZmZlRR3dBNC8gyS75NcRfKGtOOxjonkAyQ3kFyWM60PyRdJrox+946mk+SdUZ19h+Tx6UVuHQXJgSTnk1xO8l2SV0bTXU8tM0h2I/kmySVRPb0lmn4oyTei+jiTZNdo+j7R+1XR/MFpxm8dB8kykm+TnBu9dx21TCG5muRSkotJVkbT2qTNd0c3ASTLANwD4EwARwH4Ccmj0o3KOqiHAJzRaNoNAF6SNAzAS9F7INTXYdHP5QDuSyhG69h2A7hW0lEATgLwy2h76XpqWbITwGmSjgUwAsAZJE8C8G8AfidpKIAvAFwWlb8MwBfR9N9F5cyScCWAFTnvXUcti74vaUTOM3PbpM13RzcZ5QBWSfpI0i4AjwH4ccoxWQck6RUAmxtN/jGAadHraQDOzZn+sILXAexP8qBkIrWOStJ6SYui19UIO2j94XpqGRLVt6+it12iHwE4DcAT0fTG9TSuv08AOJ0kEwrXOiiSAwCMBXB/9J5wHbX2oU3afHd0k9EfwNqc9+uiaWZZcKCk9dHrzwAcGL12vbVURZfOHQfgDbieWsZEl4QuBrABwIsAPgSwRdLuqEhuXfymnkbzvwTQN9mIrQO6A8AkAHXR+75wHbXsEYD/JbmQ5OXRtDZp8zu3daRm1n5JEkk/c8xSR7IHgFkArpK0NffEguupZYGkWgAjSO4P4EkAR6Qcktk3SJ4NYIOkhSRPTTsesxaMkfQpyb8G8CLJ93Jnfps232d0k/EpgIE57wdE08yy4PP4so/o94ZouuutpYJkF4RO7nRJs6PJrqeWSZK2AJgP4GSEy+jikwi5dfGbehrN3w/ApoRDtY5lNIBzSK5GuGXuNAD/CddRyxhJn0a/NyAcNCxHG7X57ugm4y0Aw6KR7roCGA9gTsoxmcXmALgken0JgKdzpv80GuHuJABf5lxGYlYU0T1hUwGskPQfObNcTy0zSB4QnckFyb8C8EOE+8nnAxgXFWtcT+P6Ow7APEm+KsGKRtKNkgZIGoyw3zlP0oVwHbUMIdmdZM/4NYC/A7AMbdTm03U4GSTPQrhXogzAA5IqUg7JOiCSjwI4FUA/AJ8DuBnAUwAeBzAIwBoA/yBpc9ThuBthlOavAfyjpMo04raOg+QYAAsALEX9fWU3Idyn63pqmUDyOwgDpJQhnDR4XNIUkkMQzp71AfA2gIsk7STZDcAjCPecbwYwXtJH6URvHU106fJ1ks52HbUsierjk9HbzgBmSKog2Rdt0Oa7o2tmZmZmZmYlxZcum5mZmZmZWUlxR9fMzMzMzMxKiju6ZmZmZmZmVlLc0TUzMzMzM7OS4o6umZmZmZmZlRR3dM3MzPYSyb4kF0c/n5H8NHr9Fcl7i7TMq0j+NHr9MslRxVhOM8u+guSlSS3PzMxsb/nxQmZmZm2A5GQAX0m6rYjL6AxgEYDjJe0m+TLC8zHb9NnBJMsk1TYxfV8Ar0k6ri2XZ2Zm1tZ8RtfMzKyNkTyV5Nzo9WSS00guILmG5Hkk/53kUpLPk+wSlRtJ8v9ILiT5AsmDmvjo0wAskrQ7Z9r5JN8k+QHJ70af1Y3kg9Ey3ib5/Wj6BJJ358Q5l+Sp0euvSN5OcgmAk0n+K8nlJN8heRsASPoawGqS5W2/1szMzNqOO7pmZmbFdxhCJ/UcAP8DYL6kvwGwHcDYqLN7F4BxkkYCeABARROfMxrAwkbTOksqB3AVgJujab8EoGgZPwEwjWS3PDF2B/CGpGMBrADw9wCOlvQdAL/NKVcJ4LsF/M9mZmap6Zx2AGZmZh3Ac5JqSC4FUAbg+Wj6UgCDARwO4BgAL5JEVGZ9E59zEEInNNfs6PfC6LMAYAxCxxmS3iO5BsDwPDHWApgVvf4SwA4AU6Mz03Nzym0AcESezzIzM0uVO7pmZmbFtxMAJNWRrFH9ABl1CG0xAbwr6eQ8n7MdQOMzszuj37XI367vRsOruXI/a0d8X250/285gNMBjANwBcIZ6fhvtudZjpmZWap86bKZmVn63gdwAMmTAYBkF5JHN1FuBYChBXzeAgAXRp81HMCgaBmrAYwg2YnkQABN3mtLsgeA/SQ9C+BqAMfmzB4OYFkh/5SZmVlafEbXzMwsZZJ2kRwH4E6S+yG0z3cAeLdR0ecAPFLAR94L4L7oUundACZI2knyNQAfA1iO0Gle1Mzf9wTwdHRfLwFckzNvNIDJBf1jZmZmKfHjhczMzNoRkk8CmCRpZQrLPg7ANZIuTnrZZmZmreGOrpmZWTtC8nAAB0p6JYVl/xDASkmrk162mZlZa7ija2ZmZmZmZiXFg1GZmZmZmZlZSXFH18zMzMzMzEqKO7pmZmZmZmZWUtzRNTMzMzMzs5Lijq6ZmZmZmZmVlP8H6hFTQjAqZwAAAAAASUVORK5CYII=\n"
1407           },
1408           "metadata": {
1409             "needs_background": "light"
1410           }
1411         }
1412       ]
1413     },
1414     {
1415       "cell_type": "code",
1416       "execution_count": 112,
1417       "metadata": {
1418         "id": "vfcxN9JCH5Ku",
1419         "colab": {
1420           "base_uri": "https://localhost:8080/"
1421         },
1422         "outputId": "eac7d07f-d4a0-496f-814e-37bd5b3393b6"
1423       },
1424       "outputs": [
1425         {
1426           "output_type": "stream",
1427           "name": "stdout",
1428           "text": [
1429             "shape x =  (480, 1)\n",
1430             "shape y =  (480, 1)\n",
1431             "timesteps= 1\n",
1432             "trainsteps= 240\n",
1433             "staircase: samples= 240 timesteps= 1 features= 1\n",
1434             "x_train shape= (240, 1, 1)\n",
1435             "y_train shape= (240, 1)\n"
1436           ]
1437         }
1438       ],
1439       "source": [
1440         "scale=False\n",
1441         "# transform as 2D, (timesteps, features) and (timesteps, outputs)\n",
1442         "Et = np.reshape(E,[E.shape[0],1])\n",
1443         "datat = np.reshape(data,[data.shape[0],1])\n",
1444         "if scale:\n",
1445         "  scalerx = MinMaxScaler()\n",
1446         "  scalerx.fit(Et)\n",
1447         "  Et = scalerx.transform(Et)\n",
1448         "  scalery = MinMaxScaler()\n",
1449         "  scalery.fit(datat)\n",
1450         "  datat = scalery.transform(datat)\n",
1451         "x_train, y_train = staircase(Et,datat,timesteps=1,trainsteps=h2)\n",
1452         "print('x_train shape=',x_train.shape)\n",
1453         "samples, timesteps, features = x_train.shape\n",
1454         "print('y_train shape=',y_train.shape)"
1455       ]
1456     },
1457     {
1458       "cell_type": "code",
1459       "execution_count": 113,
1460       "metadata": {
1461         "id": "PaHfJW7mSJE1"
1462       },
1463       "outputs": [],
1464       "source": [
1465         "def create_RNN_2(hidden_units, dense_units, activation, stateful=False, \n",
1466         "                 batch_shape=None, input_shape=None, dense_layers=1):\n",
1467         "    if stateful:\n",
1468         "      inputs = tf.keras.Input(batch_shape=batch_shape)\n",
1469         "    else:\n",
1470         "      inputs = tf.keras.Input(shape=input_shape)\n",
1471         "    # https://stackoverflow.com/questions/43448029/how-can-i-print-the-values-of-keras-tensors\n",
1472         "    # inputs2 = K.print_tensor(inputs, message='inputs = ')  # change allso inputs to inputs2 below, must be used\n",
1473         "    x = inputs\n",
1474         "    x = tf.keras.layers.SimpleRNN(hidden_units,activation=activation[0],stateful=stateful)(x)\n",
1475         "    # x = tf.keras.layers.Dense(hidden_units, activation=activation[1])(x)\n",
1476         "    for i in range(dense_layers):\n",
1477         "      x = tf.keras.layers.Dense(dense_units, activation=activation[1])(x)\n",
1478         "    model = tf.keras.Model(inputs=inputs, outputs=x)\n",
1479         "    model.compile(loss='mean_squared_error', optimizer='adam')\n",
1480         "    return model\n",
1481         "def create_fit_predict_RNN(hidden_units, dense_units, \n",
1482         "                             samples, timesteps, features, dense_layers=1, activation=['tanh', 'tanh']):\n",
1483         "    # statefull model version with with fixed number of batches\n",
1484         "    model_fit=create_RNN_2(hidden_units=hidden_units, dense_units=dense_units, \n",
1485         "                        batch_shape=(samples, timesteps, features),stateful = True,\n",
1486         "                        activation=activation,dense_layers=dense_layers)\n",
1487         "    print(model_fit.summary())\n",
1488         "    # same model for prediction on the entire dataset\n",
1489         "    model_predict=create_RNN_2(hidden_units=hidden_units, dense_units=dense_units,  \n",
1490         "                        input_shape=(None,features),stateful = False,\n",
1491         "                        activation=activation,dense_layers=dense_layers)\n",
1492         "    print(model_predict.summary())\n",
1493         "    return model_fit, model_predict"
1494       ]
1495     },
1496     {
1497       "cell_type": "code",
1498       "source": [
1499         "# the simplest model possible\n",
1500         "fmda_model, fmda_model_eval = create_fit_predict_RNN(hidden_units=1, dense_units=1, \n",
1501         "      samples=samples, timesteps=timesteps, features=1, dense_layers=0,\n",
1502         "      activation=['linear'])\n",
1503         "# fmda_model.fit(x_train, y_train, epochs=40, verbose=2,batch_size=samples)"
1504       ],
1505       "metadata": {
1506         "colab": {
1507           "base_uri": "https://localhost:8080/"
1508         },
1509         "id": "ZjJxHiEVL5sJ",
1510         "outputId": "f30ee899-0765-4a78-9a98-01c637b44d53"
1511       },
1512       "execution_count": 114,
1513       "outputs": [
1514         {
1515           "output_type": "stream",
1516           "name": "stdout",
1517           "text": [
1518             "Model: \"model_32\"\n",
1519             "_________________________________________________________________\n",
1520             " Layer (type)                Output Shape              Param #   \n",
1521             "=================================================================\n",
1522             " input_34 (InputLayer)       [(240, 1, 1)]             0         \n",
1523             "                                                                 \n",
1524             " simple_rnn_33 (SimpleRNN)   (240, 1)                  3         \n",
1525             "                                                                 \n",
1526             "=================================================================\n",
1527             "Total params: 3\n",
1528             "Trainable params: 3\n",
1529             "Non-trainable params: 0\n",
1530             "_________________________________________________________________\n",
1531             "None\n",
1532             "Model: \"model_33\"\n",
1533             "_________________________________________________________________\n",
1534             " Layer (type)                Output Shape              Param #   \n",
1535             "=================================================================\n",
1536             " input_35 (InputLayer)       [(None, None, 1)]         0         \n",
1537             "                                                                 \n",
1538             " simple_rnn_34 (SimpleRNN)   (None, 1)                 3         \n",
1539             "                                                                 \n",
1540             "=================================================================\n",
1541             "Total params: 3\n",
1542             "Trainable params: 3\n",
1543             "Non-trainable params: 0\n",
1544             "_________________________________________________________________\n",
1545             "None\n"
1546           ]
1547         }
1548       ]
1549     },
1550     {
1551       "cell_type": "code",
1552       "source": [
1553         "# Same model as stateless for prediction:\n",
1554         "w=fmda_model.get_weights()\n",
1555         "w=fmda_model_eval.get_weights()\n",
1556         "w=[np.array([[0.1]]), np.array([[0.9]]), np.array([0.])]\n",
1557         "print(w)\n",
1558         "fmda_model_eval.set_weights(w)\n",
1559         "# prediction on the entire dataset from zero state\n",
1560         "mt = fmda_model_eval.predict(Et)\n",
1561         "print('mt=',mt)\n",
1562         "h=0\n",
1563         "out = np.empty(Et.shape[0])\n",
1564         "for i in range(Et.shape[0]):\n",
1565         "  h = np.dot(Et[i,0],w[0])+np.dot(h,w[1]) + w[2]\n",
1566         "  out[i]=h\n",
1567         "print('out=',out)\n",
1568         "if scale:\n",
1569         "  mt = scalery.inverse_transform(mt)\n",
1570         "m = mt[:,0]\n",
1571         "plot_m(out,title='RNN prediction')"
1572       ],
1573       "metadata": {
1574         "colab": {
1575           "base_uri": "https://localhost:8080/",
1576           "height": 1000
1577         },
1578         "id": "PZw7DNQD4Inr",
1579         "outputId": "17060ac8-af0c-4de4-b3be-721404b4e911"
1580       },
1581       "execution_count": 119,
1582       "outputs": [
1583         {
1584           "output_type": "stream",
1585           "name": "stdout",
1586           "text": [
1587             "[array([[0.1]]), array([[0.9]]), array([0.])]\n",
1588             "mt= [[0.005     ]\n",
1589             " [0.00500726]\n",
1590             " [0.00511218]\n",
1591             " [0.00553617]\n",
1592             " [0.0065625 ]\n",
1593             " [0.00843343]\n",
1594             " [0.01125   ]\n",
1595             " [0.01490391]\n",
1596             " [0.0190625 ]\n",
1597             " [0.02321384]\n",
1598             " [0.02676282]\n",
1599             " [0.0291554 ]\n",
1600             " [0.03      ]\n",
1601             " [0.0291554 ]\n",
1602             " [0.02676282]\n",
1603             " [0.02321384]\n",
1604             " [0.0190625 ]\n",
1605             " [0.01490391]\n",
1606             " [0.01125   ]\n",
1607             " [0.00843343]\n",
1608             " [0.0065625 ]\n",
1609             " [0.00553617]\n",
1610             " [0.00511218]\n",
1611             " [0.00500726]\n",
1612             " [0.005     ]\n",
1613             " [0.00500726]\n",
1614             " [0.00511218]\n",
1615             " [0.00553617]\n",
1616             " [0.0065625 ]\n",
1617             " [0.00843343]\n",
1618             " [0.01125   ]\n",
1619             " [0.01490391]\n",
1620             " [0.0190625 ]\n",
1621             " [0.02321384]\n",
1622             " [0.02676282]\n",
1623             " [0.0291554 ]\n",
1624             " [0.03      ]\n",
1625             " [0.0291554 ]\n",
1626             " [0.02676282]\n",
1627             " [0.02321384]\n",
1628             " [0.0190625 ]\n",
1629             " [0.01490391]\n",
1630             " [0.01125   ]\n",
1631             " [0.00843343]\n",
1632             " [0.0065625 ]\n",
1633             " [0.00553617]\n",
1634             " [0.00511218]\n",
1635             " [0.00500726]\n",
1636             " [0.005     ]\n",
1637             " [0.00500726]\n",
1638             " [0.00511218]\n",
1639             " [0.00553617]\n",
1640             " [0.0065625 ]\n",
1641             " [0.00843343]\n",
1642             " [0.01125   ]\n",
1643             " [0.01490391]\n",
1644             " [0.0190625 ]\n",
1645             " [0.02321384]\n",
1646             " [0.02676282]\n",
1647             " [0.0291554 ]\n",
1648             " [0.03      ]\n",
1649             " [0.0291554 ]\n",
1650             " [0.02676282]\n",
1651             " [0.02321384]\n",
1652             " [0.0190625 ]\n",
1653             " [0.01490391]\n",
1654             " [0.01125   ]\n",
1655             " [0.00843343]\n",
1656             " [0.0065625 ]\n",
1657             " [0.00553617]\n",
1658             " [0.00511218]\n",
1659             " [0.00500726]\n",
1660             " [0.005     ]\n",
1661             " [0.00500726]\n",
1662             " [0.00511218]\n",
1663             " [0.00553617]\n",
1664             " [0.0065625 ]\n",
1665             " [0.00843343]\n",
1666             " [0.01125   ]\n",
1667             " [0.01490391]\n",
1668             " [0.0190625 ]\n",
1669             " [0.02321384]\n",
1670             " [0.02676282]\n",
1671             " [0.0291554 ]\n",
1672             " [0.03      ]\n",
1673             " [0.0291554 ]\n",
1674             " [0.02676282]\n",
1675             " [0.02321384]\n",
1676             " [0.0190625 ]\n",
1677             " [0.01490391]\n",
1678             " [0.01125   ]\n",
1679             " [0.00843343]\n",
1680             " [0.0065625 ]\n",
1681             " [0.00553617]\n",
1682             " [0.00511218]\n",
1683             " [0.00500726]\n",
1684             " [0.005     ]\n",
1685             " [0.00500726]\n",
1686             " [0.00511218]\n",
1687             " [0.00553617]\n",
1688             " [0.0065625 ]\n",
1689             " [0.00843343]\n",
1690             " [0.01125   ]\n",
1691             " [0.01490391]\n",
1692             " [0.0190625 ]\n",
1693             " [0.02321384]\n",
1694             " [0.02676282]\n",
1695             " [0.0291554 ]\n",
1696             " [0.03      ]\n",
1697             " [0.0291554 ]\n",
1698             " [0.02676282]\n",
1699             " [0.02321384]\n",
1700             " [0.0190625 ]\n",
1701             " [0.01490391]\n",
1702             " [0.01125   ]\n",
1703             " [0.00843343]\n",
1704             " [0.0065625 ]\n",
1705             " [0.00553617]\n",
1706             " [0.00511218]\n",
1707             " [0.00500726]\n",
1708             " [0.005     ]\n",
1709             " [0.00500726]\n",
1710             " [0.00511218]\n",
1711             " [0.00553617]\n",
1712             " [0.0065625 ]\n",
1713             " [0.00843343]\n",
1714             " [0.01125   ]\n",
1715             " [0.01490391]\n",
1716             " [0.0190625 ]\n",
1717             " [0.02321384]\n",
1718             " [0.02676282]\n",
1719             " [0.0291554 ]\n",
1720             " [0.03      ]\n",
1721             " [0.0291554 ]\n",
1722             " [0.02676282]\n",
1723             " [0.02321384]\n",
1724             " [0.0190625 ]\n",
1725             " [0.01490391]\n",
1726             " [0.01125   ]\n",
1727             " [0.00843343]\n",
1728             " [0.0065625 ]\n",
1729             " [0.00553617]\n",
1730             " [0.00511218]\n",
1731             " [0.00500726]\n",
1732             " [0.005     ]\n",
1733             " [0.00500726]\n",
1734             " [0.00511218]\n",
1735             " [0.00553617]\n",
1736             " [0.0065625 ]\n",
1737             " [0.00843343]\n",
1738             " [0.01125   ]\n",
1739             " [0.01490391]\n",
1740             " [0.0190625 ]\n",
1741             " [0.02321384]\n",
1742             " [0.02676282]\n",
1743             " [0.0291554 ]\n",
1744             " [0.03      ]\n",
1745             " [0.0291554 ]\n",
1746             " [0.02676282]\n",
1747             " [0.02321384]\n",
1748             " [0.0190625 ]\n",
1749             " [0.01490391]\n",
1750             " [0.01125   ]\n",
1751             " [0.00843343]\n",
1752             " [0.0065625 ]\n",
1753             " [0.00553617]\n",
1754             " [0.00511218]\n",
1755             " [0.00500726]\n",
1756             " [0.005     ]\n",
1757             " [0.00500726]\n",
1758             " [0.00511218]\n",
1759             " [0.00553617]\n",
1760             " [0.0065625 ]\n",
1761             " [0.00843343]\n",
1762             " [0.01125   ]\n",
1763             " [0.01490391]\n",
1764             " [0.0190625 ]\n",
1765             " [0.02321384]\n",
1766             " [0.02676282]\n",
1767             " [0.0291554 ]\n",
1768             " [0.03      ]\n",
1769             " [0.0291554 ]\n",
1770             " [0.02676282]\n",
1771             " [0.02321384]\n",
1772             " [0.0190625 ]\n",
1773             " [0.01490391]\n",
1774             " [0.01125   ]\n",
1775             " [0.00843343]\n",
1776             " [0.0065625 ]\n",
1777             " [0.00553617]\n",
1778             " [0.00511218]\n",
1779             " [0.00500726]\n",
1780             " [0.005     ]\n",
1781             " [0.00500726]\n",
1782             " [0.00511218]\n",
1783             " [0.00553617]\n",
1784             " [0.0065625 ]\n",
1785             " [0.00843343]\n",
1786             " [0.01125   ]\n",
1787             " [0.01490391]\n",
1788             " [0.0190625 ]\n",
1789             " [0.02321384]\n",
1790             " [0.02676282]\n",
1791             " [0.0291554 ]\n",
1792             " [0.03      ]\n",
1793             " [0.0291554 ]\n",
1794             " [0.02676282]\n",
1795             " [0.02321384]\n",
1796             " [0.0190625 ]\n",
1797             " [0.01490391]\n",
1798             " [0.01125   ]\n",
1799             " [0.00843343]\n",
1800             " [0.0065625 ]\n",
1801             " [0.00553617]\n",
1802             " [0.00511218]\n",
1803             " [0.00500726]\n",
1804             " [0.005     ]\n",
1805             " [0.00500726]\n",
1806             " [0.00511218]\n",
1807             " [0.00553617]\n",
1808             " [0.0065625 ]\n",
1809             " [0.00843343]\n",
1810             " [0.01125   ]\n",
1811             " [0.01490391]\n",
1812             " [0.0190625 ]\n",
1813             " [0.02321384]\n",
1814             " [0.02676282]\n",
1815             " [0.0291554 ]\n",
1816             " [0.03      ]\n",
1817             " [0.0291554 ]\n",
1818             " [0.02676282]\n",
1819             " [0.02321384]\n",
1820             " [0.0190625 ]\n",
1821             " [0.01490391]\n",
1822             " [0.01125   ]\n",
1823             " [0.00843343]\n",
1824             " [0.0065625 ]\n",
1825             " [0.00553617]\n",
1826             " [0.00511218]\n",
1827             " [0.00500726]\n",
1828             " [0.005     ]\n",
1829             " [0.00500726]\n",
1830             " [0.00511218]\n",
1831             " [0.00553617]\n",
1832             " [0.0065625 ]\n",
1833             " [0.00843343]\n",
1834             " [0.01125   ]\n",
1835             " [0.01490391]\n",
1836             " [0.0190625 ]\n",
1837             " [0.02321384]\n",
1838             " [0.02676282]\n",
1839             " [0.0291554 ]\n",
1840             " [0.03      ]\n",
1841             " [0.0291554 ]\n",
1842             " [0.02676282]\n",
1843             " [0.02321384]\n",
1844             " [0.0190625 ]\n",
1845             " [0.01490391]\n",
1846             " [0.01125   ]\n",
1847             " [0.00843343]\n",
1848             " [0.0065625 ]\n",
1849             " [0.00553617]\n",
1850             " [0.00511218]\n",
1851             " [0.00500726]\n",
1852             " [0.005     ]\n",
1853             " [0.00500726]\n",
1854             " [0.00511218]\n",
1855             " [0.00553617]\n",
1856             " [0.0065625 ]\n",
1857             " [0.00843343]\n",
1858             " [0.01125   ]\n",
1859             " [0.01490391]\n",
1860             " [0.0190625 ]\n",
1861             " [0.02321384]\n",
1862             " [0.02676282]\n",
1863             " [0.0291554 ]\n",
1864             " [0.03      ]\n",
1865             " [0.0291554 ]\n",
1866             " [0.02676282]\n",
1867             " [0.02321384]\n",
1868             " [0.0190625 ]\n",
1869             " [0.01490391]\n",
1870             " [0.01125   ]\n",
1871             " [0.00843343]\n",
1872             " [0.0065625 ]\n",
1873             " [0.00553617]\n",
1874             " [0.00511218]\n",
1875             " [0.00500726]\n",
1876             " [0.005     ]\n",
1877             " [0.00500726]\n",
1878             " [0.00511218]\n",
1879             " [0.00553617]\n",
1880             " [0.0065625 ]\n",
1881             " [0.00843343]\n",
1882             " [0.01125   ]\n",
1883             " [0.01490391]\n",
1884             " [0.0190625 ]\n",
1885             " [0.02321384]\n",
1886             " [0.02676282]\n",
1887             " [0.0291554 ]\n",
1888             " [0.03      ]\n",
1889             " [0.0291554 ]\n",
1890             " [0.02676282]\n",
1891             " [0.02321384]\n",
1892             " [0.0190625 ]\n",
1893             " [0.01490391]\n",
1894             " [0.01125   ]\n",
1895             " [0.00843343]\n",
1896             " [0.0065625 ]\n",
1897             " [0.00553617]\n",
1898             " [0.00511218]\n",
1899             " [0.00500726]\n",
1900             " [0.005     ]\n",
1901             " [0.00500726]\n",
1902             " [0.00511218]\n",
1903             " [0.00553617]\n",
1904             " [0.0065625 ]\n",
1905             " [0.00843343]\n",
1906             " [0.01125   ]\n",
1907             " [0.01490391]\n",
1908             " [0.0190625 ]\n",
1909             " [0.02321384]\n",
1910             " [0.02676282]\n",
1911             " [0.0291554 ]\n",
1912             " [0.03      ]\n",
1913             " [0.0291554 ]\n",
1914             " [0.02676282]\n",
1915             " [0.02321384]\n",
1916             " [0.0190625 ]\n",
1917             " [0.01490391]\n",
1918             " [0.01125   ]\n",
1919             " [0.00843343]\n",
1920             " [0.0065625 ]\n",
1921             " [0.00553617]\n",
1922             " [0.00511218]\n",
1923             " [0.00500726]\n",
1924             " [0.005     ]\n",
1925             " [0.00500726]\n",
1926             " [0.00511218]\n",
1927             " [0.00553617]\n",
1928             " [0.0065625 ]\n",
1929             " [0.00843343]\n",
1930             " [0.01125   ]\n",
1931             " [0.01490391]\n",
1932             " [0.0190625 ]\n",
1933             " [0.02321384]\n",
1934             " [0.02676282]\n",
1935             " [0.0291554 ]\n",
1936             " [0.03      ]\n",
1937             " [0.0291554 ]\n",
1938             " [0.02676282]\n",
1939             " [0.02321384]\n",
1940             " [0.0190625 ]\n",
1941             " [0.01490391]\n",
1942             " [0.01125   ]\n",
1943             " [0.00843343]\n",
1944             " [0.0065625 ]\n",
1945             " [0.00553617]\n",
1946             " [0.00511218]\n",
1947             " [0.00500726]\n",
1948             " [0.005     ]\n",
1949             " [0.00500726]\n",
1950             " [0.00511218]\n",
1951             " [0.00553617]\n",
1952             " [0.0065625 ]\n",
1953             " [0.00843343]\n",
1954             " [0.01125   ]\n",
1955             " [0.01490391]\n",
1956             " [0.0190625 ]\n",
1957             " [0.02321384]\n",
1958             " [0.02676282]\n",
1959             " [0.0291554 ]\n",
1960             " [0.03      ]\n",
1961             " [0.0291554 ]\n",
1962             " [0.02676282]\n",
1963             " [0.02321384]\n",
1964             " [0.0190625 ]\n",
1965             " [0.01490391]\n",
1966             " [0.01125   ]\n",
1967             " [0.00843343]\n",
1968             " [0.0065625 ]\n",
1969             " [0.00553617]\n",
1970             " [0.00511218]\n",
1971             " [0.00500726]\n",
1972             " [0.005     ]\n",
1973             " [0.00500726]\n",
1974             " [0.00511218]\n",
1975             " [0.00553617]\n",
1976             " [0.0065625 ]\n",
1977             " [0.00843343]\n",
1978             " [0.01125   ]\n",
1979             " [0.01490391]\n",
1980             " [0.0190625 ]\n",
1981             " [0.02321384]\n",
1982             " [0.02676282]\n",
1983             " [0.0291554 ]\n",
1984             " [0.03      ]\n",
1985             " [0.0291554 ]\n",
1986             " [0.02676282]\n",
1987             " [0.02321384]\n",
1988             " [0.0190625 ]\n",
1989             " [0.01490391]\n",
1990             " [0.01125   ]\n",
1991             " [0.00843343]\n",
1992             " [0.0065625 ]\n",
1993             " [0.00553617]\n",
1994             " [0.00511218]\n",
1995             " [0.00500726]\n",
1996             " [0.005     ]\n",
1997             " [0.00500726]\n",
1998             " [0.00511218]\n",
1999             " [0.00553617]\n",
2000             " [0.0065625 ]\n",
2001             " [0.00843343]\n",
2002             " [0.01125   ]\n",
2003             " [0.01490391]\n",
2004             " [0.0190625 ]\n",
2005             " [0.02321384]\n",
2006             " [0.02676282]\n",
2007             " [0.0291554 ]\n",
2008             " [0.03      ]\n",
2009             " [0.0291554 ]\n",
2010             " [0.02676282]\n",
2011             " [0.02321384]\n",
2012             " [0.0190625 ]\n",
2013             " [0.01490391]\n",
2014             " [0.01125   ]\n",
2015             " [0.00843343]\n",
2016             " [0.0065625 ]\n",
2017             " [0.00553617]\n",
2018             " [0.00511218]\n",
2019             " [0.00500726]\n",
2020             " [0.005     ]\n",
2021             " [0.00500726]\n",
2022             " [0.00511218]\n",
2023             " [0.00553617]\n",
2024             " [0.0065625 ]\n",
2025             " [0.00843343]\n",
2026             " [0.01125   ]\n",
2027             " [0.01490391]\n",
2028             " [0.0190625 ]\n",
2029             " [0.02321384]\n",
2030             " [0.02676282]\n",
2031             " [0.0291554 ]\n",
2032             " [0.03      ]\n",
2033             " [0.0291554 ]\n",
2034             " [0.02676282]\n",
2035             " [0.02321384]\n",
2036             " [0.0190625 ]\n",
2037             " [0.01490391]\n",
2038             " [0.01125   ]\n",
2039             " [0.00843343]\n",
2040             " [0.0065625 ]\n",
2041             " [0.00553617]\n",
2042             " [0.00511218]\n",
2043             " [0.00500726]\n",
2044             " [0.005     ]\n",
2045             " [0.00500726]\n",
2046             " [0.00511218]\n",
2047             " [0.00553617]\n",
2048             " [0.0065625 ]\n",
2049             " [0.00843343]\n",
2050             " [0.01125   ]\n",
2051             " [0.01490391]\n",
2052             " [0.0190625 ]\n",
2053             " [0.02321384]\n",
2054             " [0.02676282]\n",
2055             " [0.0291554 ]\n",
2056             " [0.03      ]\n",
2057             " [0.0291554 ]\n",
2058             " [0.02676282]\n",
2059             " [0.02321384]\n",
2060             " [0.0190625 ]\n",
2061             " [0.01490391]\n",
2062             " [0.01125   ]\n",
2063             " [0.00843343]\n",
2064             " [0.0065625 ]\n",
2065             " [0.00553617]\n",
2066             " [0.00511218]\n",
2067             " [0.00500726]]\n",
2068             "out= [0.005      0.00950726 0.01366871 0.01783801 0.02261671 0.02878847\n",
2069             " 0.03715962 0.04834757 0.06257531 0.07953161 0.09834127 0.11766255\n",
2070             " 0.13589629 0.15146206 0.16307868 0.16998464 0.17204868 0.16974772\n",
2071             " 0.16402295 0.15605409 0.14701118 0.13784622 0.12917378 0.12126366\n",
2072             " 0.1141373  0.10773082 0.10206992 0.0973991  0.09422169 0.09323295\n",
2073             " 0.09515966 0.1005476  0.10955534 0.12181364 0.13639509 0.15191099\n",
2074             " 0.16671989 0.1792033  0.18804579 0.19245504 0.19227204 0.18794874\n",
2075             " 0.18040387 0.17079692 0.16027972 0.14978792 0.13992131 0.13093643\n",
2076             " 0.12284279 0.11556577 0.10912137 0.1037454  0.09993336 0.09837346\n",
2077             " 0.09978611 0.10471141 0.11330277 0.12518633 0.13943051 0.15464286\n",
2078             " 0.16917858 0.18141612 0.19003733 0.19424743 0.19388519 0.18940058\n",
2079             " 0.18171052 0.1719729  0.16133811 0.15074046 0.1407786  0.131708\n",
2080             " 0.1235372  0.11619073 0.10968384 0.10425162 0.10038896 0.0987835\n",
2081             " 0.10015515 0.10504354 0.11360169 0.12545535 0.13967264 0.15486077\n",
2082             " 0.1693747  0.18159263 0.19019618 0.1943904  0.19401386 0.18951638\n",
2083             " 0.18181474 0.1720667  0.16142253 0.15081644 0.14084698 0.13176954\n",
2084             " 0.12359259 0.11624058 0.10972871 0.104292   0.1004253  0.0988162\n",
2085             " 0.10018458 0.10507003 0.11362553 0.12547681 0.13969195 0.15487816\n",
2086             " 0.16939034 0.18160671 0.19020886 0.1944018  0.19402412 0.18952562\n",
2087             " 0.18182306 0.17207419 0.16142927 0.15082251 0.14085244 0.13177445\n",
2088             " 0.12359701 0.11624456 0.10973229 0.10429522 0.1004282  0.09881881\n",
2089             " 0.10018693 0.10507215 0.11362743 0.12547852 0.13969349 0.15487954\n",
2090             " 0.16939159 0.18160783 0.19020987 0.19440271 0.19402494 0.18952636\n",
2091             " 0.18182372 0.17207478 0.1614298  0.15082299 0.14085287 0.13177484\n",
2092             " 0.12359736 0.11624488 0.10973257 0.10429548 0.10042843 0.09881902\n",
2093             " 0.10018712 0.10507232 0.11362758 0.12547866 0.13969361 0.15487965\n",
2094             " 0.16939169 0.18160792 0.19020995 0.19440279 0.19402501 0.18952642\n",
2095             " 0.18182377 0.17207483 0.16142985 0.15082303 0.14085291 0.13177487\n",
2096             " 0.12359739 0.1162449  0.1097326  0.1042955  0.10042845 0.09881904\n",
2097             " 0.10018713 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2098             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2099             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2100             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2101             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2102             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2103             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2104             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2105             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2106             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2107             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2108             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2109             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2110             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2111             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2112             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2113             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2114             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2115             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2116             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2117             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2118             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2119             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2120             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2121             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2122             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2123             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2124             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2125             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2126             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2127             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2128             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2129             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2130             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2131             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2132             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2133             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2134             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2135             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2136             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2137             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2138             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2139             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2140             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2141             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2142             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2143             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488\n",
2144             " 0.12359739 0.11624491 0.1097326  0.1042955  0.10042845 0.09881904\n",
2145             " 0.10018714 0.10507233 0.1136276  0.12547867 0.13969362 0.15487966\n",
2146             " 0.1693917  0.18160793 0.19020995 0.19440279 0.19402501 0.18952642\n",
2147             " 0.18182378 0.17207483 0.16142985 0.15082303 0.14085291 0.13177488]\n"
2148           ]
2149         },
2150         {
2151           "output_type": "display_data",
2152           "data": {
2153             "text/plain": [
2154               "<Figure size 1152x288 with 1 Axes>"
2155             ],
2156             "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7oAAAEWCAYAAABIRevRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydeZzN1f/HX2dm7MMwDIU0CmEaM7KWiBBJshWFkJJ+VHxRirKEhFKWtFnqmyL5pkm02JchRsZOlgYz9lmsM2OW8/vjfT8zn7nz+dzP52ru55zReT4e9zFz7+fc+bznnnuW93lvjHMOhUKhUCgUCoVCoVAobhX8RAugUCgUCoVCoVAoFApFQaIUXYVCoVAoFAqFQqFQ3FIoRVehUCgUCoVCoVAoFLcUStFVKBQKhUKhUCgUCsUthVJ0FQqFQqFQKBQKhUJxS6EUXYVCoVAoFAqFQqFQ3FIoRVehUCgUilscxhhnjNVw/f4JY+ytm/w7VxljdxWsdAqFQqFQFDxK0VUoFAqFwgVjLI4xlupS6M4yxhYyxgJ11xe6lMbGutdqMMa47vl6xlgaY+wO3WttGGNxjv0jHuCcD+Kcv2PVzvV/PO/23kDO+XHfSadQKBQKRcGgFF2FQqFQKPLyOOc8EEAkgPoA3nC7ngRgosXfuAbgpqymVjDGAnzxdxUKhUKhuJVQiq5CoVAoFAZwzs8C+BWk8Or5EkA9xthDHt4+E8DTjLG77dzLZSV+hTF2nDF2kTE2jTHm57rWjzG2hTE2gzGWCGAcY6wYY2w6Y+wkY+ycyx25hO7vjWSMnWGMnWaMPed2r4WMsYm6508wxmIZY5cZY8cYY+0ZY5MANAcw22Xdnq2TU3OBDmKMfcUYu8AYO8EYG+Mm82aXjMmMsb8ZY4/a+SwUCoVCoSgIlKKrUCgUCoUBjLGqAB4FcNTt0nUAkwFM8vD2BACfAxjvxS27AGgI4D4ATwDQK6hNABwHUMl13ykAaoGU8BoAqgB42yV3ewAjALQFUBNAG7MbulywvwIwEkBZAC0AxHHORwPYBGCIy115iMHbZwEIAnAXgIcAPAugv5vMhwFUADAVwDzGGLP3USgUCoVC8c9Qiq5CoVAoFHlZzhi7AuAUgPMAxhq0+RRANQsr5bsAHmeMhdm873uc8yTO+UkAHwJ4WnftNOd8Fuc8E0AagIEAhrnaXwEp3j1dbZ8CsIBzvo9zfg3AOA/3HABgPuf8d855Nuc8gXN+yEpQxpi/635vcM6vcM7jALwPoI+u2QnO+eec8yyQFfx2kKKuUCgUCoXPUYquQqFQKBR56cw5Lw2gJYDaIItkHjjn6QDecT0M4ZxfADAbwASb9z2l+/0EgMom10IAlASwkzGWwhhLAfCL63W43uf+t8y4A8Axm/LpqQCgiNvfPgGyLGuc1X7hnF93/RoIhUKhUCgcQCm6CoVCoVAYwDnfAGAhgOkmTRaA3H27evgz0wC0AtDAxi3v0P1eDcBpvTi63y8CSAUQxjkv63oEuRJoAcAZg79lxikAZnHE3OR1TYYMAHe63SfBw3sUCoVCoXAMpegqFAqFQmHOhwDaMsYi3C+43IjHAnjd7M2c8xSQS+9rNu41kjFWzlWW6FUAS0z+ZjYo/ncGY6wiADDGqjDG2rmafAegH2OsLmOsJIxdrzXmAejPGGvNGPNz/Z3armvnQPG3RjJkue4ziTFWmjF2J4D/APjaxv+pUCgUCoXPUYquQqFQKBQmuNyPv4Ir0ZMB34IsqJ74CECWjdv9CGAngFgAP4OUUDNeByXJ2sYYuwxgNYB7XDKvAinoa11t1pr9Ec75dlACqRkALgHYgFwr7UcAuruyJs80ePvLoDJKxwFsBvANgPk2/k+FQqFQKHwO49yTZ5JCoVAoFApfwxjjAGpyzt0zPCsUCoVCobgJlEVXoVAoFAqFQqFQKBS3FErRVSgUCoVCoVAoFArFLYVyXVYoFAqFQqFQKBQKxS2FsugqFAqFQqFQKBQKheKWIkC0AAVFhQoVeGhoqGgxFAqFQqFQKBQKhULhA3bu3HmRcx5ip+0to+iGhoYiJiZGtBgKhUKhUCgUCoVCofABjLETdtsq12WFQqFQKBQKhUKhUNxSKEVXoVAoFAqFQqFQKBS3FErRVSgUCoVCoVAoFArFLcUtE6NrREZGBuLj45GWliZaFIWkFC9eHFWrVkWRIkVEi6JQKBQKhUKhUCgKiFta0Y2Pj0fp0qURGhoKxphocRSSwTlHYmIi4uPjUb16ddHiKBQKhUKhUCgUigLCp67LjLH2jLHDjLGjjLFRBtcHMcb2MsZiGWObGWN1ddfecL3vMGOs3c3cPy0tDeXLl1dKrsIQxhjKly+vLP4KhUKhUCgUCsUths8UXcaYP4A5AB4FUBfA03pF1sU3nPNwznkkgKkAPnC9ty6AngDCALQH8LHr792MHDf5Hyj+Dajvh0KhUCgUCoVCcevhS4tuYwBHOefHOec3ACwG8IS+Aef8su5pKQDc9fsTABZzztM5538DOOr6ewqNzEzg4kWAc+u2isJLcjKwYIHc/bxjB7B5s2gpPLNoEXDunGgpFL5G9n5W41khC4WhnwvDeF64UO7xrPjnFIZ+LgzjWRC+VHSrADilex7vei0PjLHBjLFjIIvuK16+dyBjLIYxFnPhwoUCE7wg8ff3R2RkZM5jypQptt63cOFChISE5HnvgQMHchucPAnExQGpqZZ/KyoqKue+48aNw/Tp0wEAb7/9NlavXg0ACA0NxcWLF736W5ZkZtprZ4AdeSZPnnzTfx8ATVrHjgEpKf/s7/iSwYOB554DtmwRLYk5jRsDzZvLuwgcOAD07g28/LJoScw5f17ez09j3jygWTN55dT6+ZlnREtiTmEaz7Jy6RJw7ZpoKTxz6BDQogWwbZtoScyRfd7ev79wjOf+/YHYWNGSmHPqlHUbkXAODBgAjB8vWhJztH4uDPO2rONZIMLLC3HO53DO7wbwOoAxXr73M855Q855w5CQEN8I+A8pUaIEYmNjcx6jRuULVTalR48eed5bt67O8zs1FShRAihZ0vLvdOrUyfC+EyZMQJs2bWzLk5mZafq38pGeTpP/iRP0uw/4x4ouY0B2Nm2aZJ0cKlWinytXipXDjOPHc3+XdbH/6Sf6+cEHYuXwRIcOwH33yb0x9vMDoqPl7efERPq5dau84/mPP+jnqlVi5TBDG8/TpomVwxOffAIEBgLffitvP1eqRGMlKkq0JMboD8hlHc/avC3zeN61C6hVC6hfX7Qkxhw/DlSrBgwdCiQkiJbGGMaA06eBr7+Wt5/vuot+FoZ92O7d4uSQFF8qugkA7tA9r+p6zYzFADrf5Hv/NXDOMeSll3BPhw5oM2gQOnTogO+//x5AXitoTEwMWrZsCYCsw0OGDMn3t/r165fzXgCYOnUqwsPD0bhxYxw9ejSnzaBBg9CkSRO89tpref6W+/sDAwMBAOvXr8dDLVviieHDcdcDD2DU8OFYtGgRGjdujPDwcBw7diyfLImJiXjkkUcQFhaG559/Hlw34XXu3BkNGjRAWFgYPvvsMwDAqFGjkJqaisjISPTq1cu0nUfOnKHNe2YmcPiwdXsRzJgBtGyZu+jLxooV9LNtW1uHLkJYsYI2IlWripbEmNOngZ07acM5cKBoaYxZvhw4coR+1/pcNpo3B+bMoU38X3+JliY/p0/nbkjuu0+sLGZofduli1g5PKHJ+Mwzcs7bp08D77xD842sY6VECeDsWVIyZJVRk2voUCAjQ6wsRiQkkOW+f3/Rkpij7Rs++giYP1+sLGaMGUP7sKNH5Zy3AWDiRNqHyT5WmjYFAm7pYjo3hS8V3R0AajLGqjPGioKSS+U53mSM1dQ9fQyAayeFKAA9GWPFGGPVAdQEsP0fS9SyZf7Hxx/TtevXja8vXEjXL17Mf80GmjKmPZYsWQIAGDZsWJ7XjVyblyxZkudaamoqfvjhBxw+cAAHvvsOX82di+jNmwtsEQgKCsLevXsxZMgQDB06NOf1+Ph4REdH4wMvLGK79+/HJ+PG4eDKlfjv0qX466+/sH37djz//POYNWtWvvbjx4/Hgw8+iP3796NLly44efJkzrX58+dj586diImJwcyZM5GYmIgpU6bkWMsXLVpk2s6UjAxaqPxcQ0BGRfLqVTrhfPxx4OBB2pjIRo8eZFn57TfgnntES5OfxESyrLRrBzz1FDB3rmiJ8vPzz/TzueeAvXvJC0I25swhZbdJEznHSloaPTp2pOdr1oiVx4gKFYBff6X+7dZNtDTG/PQTULs2ydmzp2hp8qON53796LmMG88VK+iA8uGH5R3PSUlkdW7cGPj9d9HSGPPFFxRzOHkyULSoaGnyo83bVavSQW9cnFBxDFmxAqhTh+ZtGcfKxYvAu+8CFSvScxnXlsRE8vzr2JHG8+nToiXKz7PPkvfI1q3AvfeKlkY6fKbocs4zAQwB8CuAgwC+45zvZ4xNYIx1cjUbwhjbzxiLBfAfAH1d790P4DsABwD8AmAw5zzLV7L6EnfX5R49egAAZsyYked1I9dmd9flEiVKYOPGjXi6c2f4Bwaico0aeLhBA1LSC4Cnn3465+fWrVtzXn/yySfh7+9F0uusLDSqUwe316yJYhUr4u4qVfBIq1YAgPDwcMQZLAgbN25E7969AQCPPfYYypUrl3Nt5syZiIiIQNOmTXHq1Ckc0SxLbthtBwC47MqDVrEiLaIyTrDPPAO0bk0K0IULwG23iZYoP5Uq0YY4O5uSISQliZYoLydOADVqAF27kvVn8WLREuXnp5+A0FDg9ddzn8vE5cvAhg200D/+OPWzbIcuS5eSIpmRQZbnl14SLVF+ihYFHnmEXAnPnqWYYpnIziYZu3Wj5CtLlpDXi0ysXEly/t//AfXqyTdWgNzxrK3lsikYly8Dt99Oyrh2SCkjtWtTToD0dGD7P7dzFDg3bpAFrXFjYPVqOftZm7c7dqTPULZ5e9UqGs+DB8s7nvv1o+9hv35AfDxQubJoifJTtiytzZyTl4HMeWcE4FMbN+d8JYCVbq+9rfv9VQ/vnQRgUoEKtH69+bWSJT1fr1DB83UvGTZsGNatW5fv9Z49e1rHwAYFAXXrktuRv39OYo6AgABkZ2cDwE3VhtWX2tH/XqpUKcP2+vtlZ2fjxo0bdOH6dRQrWpTk9PeHH2Mo5kpM5efnh0wvklStX78eq1evxtatW1GyZEm0bNnS8H+z2y6HlBSgSBHq98BAOpHlnD5TGUhPp8VzwACaxGQkOhrYs4cWgCNHaMGfN48Uc1m47z5ScDXL+JQp1PeyfKb6fq5Vix4//wwYhBoI4/ffSYF8/HEgOJhczGSrPf3zz0Dp0kD16rleGjKRlkburP3708FLq1akDMkUq+vnl2ul2rOHXApXrZJrPP/8Mx34NWgg53hOSyNvguefp7Hcty9QJV8eTbH8/jspaQ0b0niRkY8/Bu68E3jsMbLoTppE1j9Z+hmgOVqbp2Wft8uUAd56i8azTK7W2ni+7z7ghRcoyapM+zD9eC5fXrQ0xmzcSLkfBg8G/v6bLLrz58vVz4KRcEfw78CORdeIFi1aYMmSJcjKzsaZM2ewbseOHNfl0NBQ7Ny5EwCwbNkyr2XS3KqXLFmC+++/37K9/n5RUVHI0FyoixWjGKBSpegnYLkxbtGiBb755hsAwKpVq5CcnAwAuHTpEsqVK4eSJUvi0KFD2KZL1lOkSJGce3pqZ0haGim5jNEG+a235JlcAbJEpqaS8ggA//2vfPGba9fmWs7uvRcoXpxcrGWEMfoss7JyY01lgHNKwjF4MD1v3Fi+z1CTp1EjICyMyuOEhgoVKR8HD5J8fn50ot23L/2UhRMnaMOuzUsNG8rXz3rCw+Ucz0OH0njx85NzPLvP2wsXAp07e3yL4+jHMwCMGAF8+aU4eYz49FN6AHSoIVs/uyPjvN2kCbBsGf2sV4/2ZbLJqJ+3hwwBpk6Vex/23XfAsGFiZXJn40bgtdfoM6xbV85+FoxSdH2Me4yuN1mX3WN0o6Oj0aVNG9QMDkbdOnXw7LPP4v4GDSiZEucYO3YsXn31VTRs2NA7V2MXycnJqFevHj766CPMmDHDsv0LL7yADRs2ICIiAlu3bs21/BYtSg8/P5q0SpUCLLJijx07Fhs3bkRYWBj+97//oVq1agCA9u3bIzMzE3Xq1MGoUaPQtGnTnPcMHDgQ9erVQ69evTy2M6VYsdzfr1yhmFhZ0DIkataAAwdIwXBZ0KUgIYFOOYsXp36uXFm+zI5hYRQDBOQmo4qPFyePO8WLk1t17dr0fPJkYNMmsTK5k5FBim3x4vQ8M1M+16iEhNyxcu0a8NVXcim67uO5ShWK9ZJpPA8fDmgHnLKO56ZNKZwDoDwZ+/bRJl4WNLfgO+7I+5pM2WT18zYA/PADxWTLhH48az9l+i5u2EDjIyaGnss4nqtWpbWlaFEaz1u3AiNHipYqLyVLAjV1qXoyM31WpeOmcJ+3//yT8lXI1M+FYR8mGs75LfFo0KABd+fAgQP5Xiv0XLzI+Y4dnKemcs4579uzJ186cybnmZmCBdNx5Qrn166JlsKa7GzOOecH9u7lHOB81izBAun46iuS6fBhej5rFj0/e1asXHoef5zzevVynzdvznmLFuLkcef6dfrMJk6k5+fPc96yJee//ipWLj1Hj3L+22+cp6eLlsQ+Dz0kVz+nplI/v/MOPT97lp7Pni1WLj1m4/ncObFy6XEfzy+8wPmbb4qTx530dM6XLeP81CnRkthnzhz5+rljR84jInKfyz5vnzkj/3j++mvOW7WivY8srF7N+bZtoqWwz/nznPv5yd3PM2fKN55l34f5CAAx3KZ+qCy6hQ0tDrZIEfpZrBidIN+EBddnnDyZ90Tp0iX5kiAAuS4yfn70ecp0Cla3LiUz0ayQMp5q60/dAfpdJvm07IiajCEhwLp1lBBIFpYuJXk0t/+TJ8kCrcs6Lh233y5XP2dlUQyfZukLCZFvPBtZdPWvy4D7eP7sM/pcZeHUKUqUtXp17muffiqfNVKPlkBQpn7u3Rt4VZceRfZ5u2JFKpkik4zu47lXLwrlcZVYlILXXgMmTMh9vnFjbpURGSlfnvaxMvVzZCTNgTLvw+Lj5d6HSYBSdAsbGRk0GbgU24ULF6J79+6ChXIjIyNXEQfIdSshQR73revXKd4nNZWeMybf5r1BA1J4tNq0Mk6w7hvj//yHNsey4L4ZkZGEBEraprn9nzkDvPkmJQOSha5dKcmYhraQyjKeS5Wiz0xzu/Xzk288nz6dt5/vvx/4/nu5Yp3dx7NsGI3nyZMBV3k5KXj/faBPn9znMs7bPXrkTVQj23h2V3T9/KiPn3lGnEzuuM/bMuI+nqOiKB5bln6OiaESXPv20XMZ5+3wcFpbZN6HnT2bt58HD6aM6ooclKJb2LhxI68SmZEB7N5N5WdkIDubZNLXvStalCbXLEkqRKWlkZVZj2ynYPHxeWWsWpWsAzLFrxw5QllPNRo1ooVLFow2xk8/DTzxhBh5jDCyimuvy8CNGxTDd+pU7mtVqtAYciWME05iIsmnj5u65x65kpp88AHw11+5z2+7jayTujJqQsnIAM6fz/td/OYbiveSpWSY0XiWbd7esoXi+DRkG89ZWZTvwVWpAQCVuypXjvJUyEDz5rT2tWiR+9pTT8lVH9R93k5MpDln4UJhIuXhxo3847lKFTrcl2XePnKEPKz0WfJlG89HjuQtsValClntZRkrAHl/6RXbBx+kTNuKHJSiW9goWTJviv2AANqkaC7NotFcMPXKuPa7LDK6u38D8k2w3boBTz6Z+7xyZZpwZbLely6dN+V+YiIpRbIculSsSBlPNbcjgJJdHD4sTiZ33DdMt91GC78sCbO0RV5mZXzBAtqs6zcfv/0mz6YToHm6YsW8r61dC8TGipHHndRUcmnVsosCJPOZM/L0c2FQdM3GsywyJiRQgj5XhQMAwCuvkBW1TBlxcrlTpkzeZJF//SVXvd8HHsi7PgcFUdm1Y8fEyaTnzBkyLsg8b5uNZ1nWPoBc0vv1y31epQqtM08/LUykfAQE5HWZT0mh0lKyHFBKgFJ0CxuVK+fduDNGCpumYIpGk8Pdoqu/JpqMDNp86OOan32WXG9lQXY3wiNHKAboxInc1w4fJjdXV8kp4bRuTYq3fgMn+8Y4IIA2x7LIaLQZadAAmDiRaurKQEICuRDKtFF3Z9Qo4Kef8r7Wuzcwc6YYedwpU4YyVXfokPuajBtj934uDON5/HjgoYfEyaRH+6z0ewjZWLQIGDcu72sff0yHv7IwYkReGQMCgEqV5PkumimR+muiMRrPPXoAL74oTiZ33MezTF5CAJUR+r//y3vAsn8/5f3Yvl2cXJKhFN3CBOV7y/960aLyWEtLlKDi6frYFc1yKouie+NGbsp9jccfl6dObVZW/rgLAHj99bxJRESyezcwbVpe92rZFlKjEgBVqlAZqcuXnZfHiB9/pAMDPTJt3o02THffDYweLc9BjLYZ0Y/nn38mN3oZ+jkrC5g+Hfjjj7yvy9TPWVn51xbZxvPw4WTV0/dz5cryjGdt3nZXIseMyU2UJhqj8ZycTOEcUVFiZHLnxx+Bb7/N+5pM8zbnxnsZmcZzRATNN1reAkC+8Ww0b3fvLk+d2sxM433Y2LG0F5OBffuAuXPzhiLI1s8SoBTdwkRGBrBrF7mI6pHJouvvTyd0AQG5rxUtStnr9G6uIvH3J4VcT3o6nY7JUEv33DnaNLlPsH/9Re6OMmC0Ybr99rzXRNOyZX4rgGyLQIMGQJ06eV/75RdS1GTAz49q/Lpv3uPjc5PGiMbI++HSJYr/kqGfzcazTBvjWbPI/U1fH7lyZfopi4xVq5LLqJ6XXqK+lsGaf+UKcN99uTWx9a/L4tJqNG+XKkVKrixu9EbjWaZ5+8wZcqtesCDv6zKN51KlKAxBH+Z2xx00b/ftK04uPbffnn88Z2ZSvgUtUahIzp2jw3L37+Lu3cDKlWJkcsdoPMs2b0uAUnQlJT09HW3atEFkZCSWLFlCL2Zk0MBzLyUUFIRDFy7g/vvvR7FixTB9+vQ8l3/55Rfcc889qFGjBqbokwfpWL9+PTp27Ggp16FDhxAZGYn69evjmNHifeVK/mQHjJHiyxjGjRuXTz4AWL58OQ4cOGB5f3fi4uLwjS7eaOHChRgyZIjnN4WGklVKzx9/UEmfrVu9lqHAMcsWLFP8SkICLfZ699WiRSkOURYZT57MzZaoERZGLqP6+GxRJCQA8+dT0hA9wcF5D4pE0q0bHQC5H1Lddx+5ZMqA7BtjT+NZpsOCrCyKNdQoWpQyCNesKU4uPfPn53fHK11aDiUXIKVi+3aK69PzxhtAw4ZiZHLHbN4OCZFjrACFYzxznn9ObN1aHhf1NWvyZyP396fPUZa15aOP8h8WbN5M+Raio8XIpMfTvC3D9xAoHONZApSiKym7du0CAMTGxqJHjx70olESJQAICUFw3bqYOXMmRowYkedSVlYWBg8ejFWrVuHAgQP49ttvb0qh1Fi+fDm6d++OXbt24W53ZRGgRERGis758x5r6XpSdDMzM03f567o3jQynYJVrQrMmUPKhJ4qVcjicv26GLn0aLXb3GNWZFkEsrNJiXBfpCIigP/+F6hRQ4xcerZvBwYMyD9eoqMp7kaGfjZDln4GqAzXgAF5X5NtYwwYb5iSk+WwXhi5EQIUtytD4pXsbGDQIOB//8v7+uXL5Ea4aZMYuewg07z91FNUAq6wzdsyjWdtvnaX8eWXad2WgXnzgLffzv/6/Ply19LVPIdkOCwPDQW+/DL/IZU2b8swns3mbVnGsyRIcrTje4YOLXjPnMhI4MMPza/HxcWhffv2aNq0KaKjo9GoUSP0798fY8eOxfnz57Fo0SI01me5dHH+/Hn07t0bFy5cQGRkJJYtW0ZKpVGiJxcVQ0JQMSQEP7u5PG7fvh01atTAXXfdBQDo2bMnfvzxR9StWzff37h69Sq6d++Offv2oUGDBvj666/BdANo5cqV+PDDD+Hv7481a9ZgwYIF6NixI/a56qBNnz4dV+PiMG7IEBw7dgyDBw/GhQsXULJkSXw+ejRq33GH4ecUHR2NqKgobNiwARMnTsSyZcswYMAAREZGYvPmzXj66aexd+9edOzYMadmcGBgIK5evYpRo0bh4MGDiIyMRN++fVGuXDmcPn0a7du3x7Fjx9ClSxdMnTo192YZGZRIqXLlvG49Mi2kt99Oio47ehlFW1mSk41jNOfPl8PCcvEi9bWRjJyTi5Roq66ZAnT0KMXdDBsmvp/79KHT4o8+yvt61apybEYAY0VMpvGcnJxrTdHTuzfQpo347yHgOfldVlZ+LyKnMRvPRYoAU6eSJbp5czGyaXz5JSUXW7s2r2Vcpnm7YUNj67IsG+PkZKB48fyhEtWqAatXA/XqiZFLj6eEXlqcu+ikRWbj+YcfaN422l84yYULQLNmVJ6wa9fc12WatytWpCSl7mj9LsN4Tk8H7rwz/+sff0zeLgoAyqLrc44ePYrhw4fj0KFDOHToEL755hts3rwZ06dPx+TJkw3fU7FiRXzxxRdo3rw5YmNjcffdd2PYsGGIbNUKkb16IbJRI0RGRiIyMpJcka9coUy3BvGlCQkJuEOnYFatWhUJJpPIrl278OGHH+LAgQM4fvw4tmzZkud6hw4dMGjQIAwbNgzr1q0z/oezsoAiRTBw4EDMmjULO3fuxPTp0/F/EyaYxhE/8MAD6NSpE6ZNm5bz/wLAjRs3EBMTg+HDhxvfC8CUKVNyPqdhriQGsbGxWLJkCfbu3YslS5bglL4GaEYGncS5J14pUYJqCcowwR45Qpnz3Ln7btqkyFBLd9Uq2ni4ExkJuA5VhGKmRAK0MAwd6qw8RiQk0EY9JCTv6zIt9lu35netBuTaGEdH503GAdB4btIkb1I8UfTvT2O2UqW8r1erRnF0MrgSmm2MR4zI9XYRidl4lmnePnQI2LMn/wZTpvG8cSOFdLhTrx5lexdN+fJkpXdXxIoWJddg97lSBGbzdnQ0xR0OI9cAACAASURBVLlv3ChGLj1m41mWeTs+nvY57gcCMo3n/fuNMxeHhlIcvgwW3WXLyE3dnfvvl6vutGAkWGGdwZPl1ZdUr14d4eHhAICwsDC0bt0ajDGEh4cjLi7O9t+ZMWMGbequXqWkAno017d/mHm5cePGqOo6rYqMjERcXBwefPBB+3+AcyArC1czMhAdHY0ndXXm0q9dIyuaUdZoE3Jctr2kdevWCHKdqNetWxcnTpzIVfbN3L8BeRaBiRMpkY77hqRZM2DHDjEyGWHgWYCDB6mG24sv5q2D6DRlypArmdFkHxQkRz8nJJD13s/tvFGWjTHnJEPnzvmvValCp/Lp6WL7ecsWypi+bRsptnq2bRMjkxFGFtHr14ElS4BGjcRvSvr2NbZOlClDBx2i+9nTwZUs83ZhGM/t2gGDB1MWcD0mh+7CcP8MATpYTUsDbOQS8SnNmtHhlLuMwcE0pkV7uhSGebswjOepU4H16/OWUASAFi1onyMLRt4DR4/SgUvv3sb7tH8Z/xpFVxTFdJOJn59fznM/Pz+PsafumFlRe/bsiVEjR9ITA4tplSpV8lg04+PjUaVKFfzxxx940VWvbMKECShTpkweWf39/S3lCwgIQLauhEuaS+HO9vdH2bJlEav3Fb94EYiLI4uvTUrprDH6e2VnZ+OGB6Xe4//hwf0bkybJ4XYrew3dS5co2+mgQTTp69m6lUogPf44UL26GPkAsn6b1SitWlWOhdTTqbt2XSTJybSxNJKxUydjlymn8bRhkoUxY+hwRZunNbKygOeeA957T7yi+9Zbxq9rbnqnT4sdz576WfbxXK0aMHs2HWiIxNN4loUVK6i00Cef5LeMv/8+7SNEK7odOxrLUBjmbe21M2fIMikKszhngOZLGfZhWh4SWUlJIdfqV1/NX75s40bKW/Hww2L7WRKU63IhYcaMGYjduROxu3YhNjY25zFq1CiyFvj5GSq6jRo1wpEjR/D333/jxo0bWLx4MTp16oQmTZrk/I1OnTrdlEyVKlXC+fPnkZiYiPT0dKxYuRKoWBFlQkNRvXp1LF26FADAOcfuQ4dIRhOLbunSpXHlyhXTe4WGhmLnzp0AgKioKGS4/ler9+VD+4yM3AU7daKSNKK5cCG/m6NGs2biT9/PnqXNiN4lXEOT+8IFZ2Vy59o1cxfvSpXEywcAX38NGCVS0zLJurvjOo32GVWsmP9aRAQtsiKtAoBnGSdOpBhY0URFkeXZndKlyVVP9Hfxxg3aHBvVnZZlPPfuTeXVtBJmeipVkqMsnNm8XbIkWVFr1XJeJj1aHxrJ+McfFBaze7ezMrkTG0tzotG8Isu8ff48KZLuyDKey5YlZfu55/Jfq1SJ9mHuJSqdRvuMjFzRe/QAHn3UWXmMuHDBeF0ByDPi/fedlcedc+eAn36in+7IMm9LglJ0CxP79uV3o3BxNiUFVRs3xgcffICJEyeiatWquHz5MgICAjB79my0a9cOderUwVNPPYWwsLACEadIkSJ4++230bhxY7Rt2xa1a9cmBbJIESxatAjz5s1DREQEwsLC8OPatZRF2CTxSs+ePTFt2jTTskUvvPACNmzYgIiICGzdujXH2luvXj34+/sjIiKC3LuthaYFycg1Kj6eXIZFk5hoXnP45ElySxFJUhL9NJJRS3MveiEdMwaoUMH4WnBw7v8gkttvNz9tTUkRX77Hzw9o29bYkpeaah6/6yRJSTSejTw0EhONY6ycJinJfDzL8F2MiSE5fv89/zVtPIuWsVQpcq02cgGfP18OV8LGjSk2zogDByiGVyTanGz0XczOpjwfZ844K5M7iYnm41mGsQLQPmbwYONrMsjo50dx9fqEaBrt29Nhf4MGzsulJzQUeOIJ434+f17+eXv/fhrTIikM+zBJUK7LPiQ0NDQnIzFANV7NrrnTsmVLtHS3LnrIfnlb3bqI378/bz0tFx06dECHDh08yup+v9mzZxu2GzduXJ7nr7zyCl555RV6kpZGbq0ZGahevTp++eUXy/drNGvWLE95ofXr1+e5XqlSJWzTxdy99957AEjZXrt2bZ62/fr1y/l9xYoVeW8UEmKe0GLhQnLhS08XG9eQlGTYjwDkWEi1ydNIRlk2xp4WqdatyWLAudjsmO++S3UXH3gg/zXRWTsBUix++8342smTJPfXX+evG+okiYnmY6V8eUrUd+OG3ONZ9GZEG6tGMt55J8W6i3bhW7qU1pbnn89/zejQUgRffGF+rWdPStK3fLlz8rjjqZ9lmrc9jZUrV0hRE5mp3JOMAwZQ2IxI9u+nJEWDBuW3SIrOnq7Rpw89jPj0UyqNdOOGvP2s9mGFCklWCIUl2dn0MMvQedtt5oPSKa5eJXdWozjcrCzg+HGyVMmK9vklJ4uTgXNyCzZbBGSYYD1tmDTlUgYZzcbDY4+RkilSmUxNBd58E9iwwfj69OnA6NHOyuQNsiykQ4fSxsgIGcZzaio9PCnjoj9DT+O5cmWKdXclVBTGV1+Z1//ctIlcm0V/jp6QoZ8bNSI3eiMXalksQFbKhdZGFFbjefx445I0TrJzJzB2LGWvduf6dWDgQKqaICsyzNuck1uwe312Ddn3YTKMFYlQiq5gFixYkFMqSHsMNnKL0RIqmSm62dmm5XscQ1NwjWT086NBJzol+9GjlBTLCBkWe8bIpcesXqAME2xWFslh5jLz11/G8UFO4mnDlJ1Ni+g/zFL+j9AWcTMZt24FfvzROXmM+OQTskIZxcCXK0c/RX8X69eneCkjZFjstSz5ZqVbFiygzMsi8WQZAMjDRXS8uCfLfUICsGiRcayaU5w+TX1s1pcyzNuVKlGSQCOXVlnGc2CguUX0qafI/dvMU8cJPLmLAqQgiY4X9yRj0aLA55+Ldw1u29bcE0iTW/Q+rHVrKiNkhAyeOP7+5HFjpuj++adYbyuJUK7Lgunfvz/69+9v3VBTdM1cT06eJNeuiIiCE85bPMnIGL3uRaZpn5CWRgkjjJDBGpmcTGVRGjc2XqiaNjXeqDhJ//70MMLPT3wRdYAWIbPDgjVrgEceIUuQN+WzChIr5aJ8efELaUICHQoZ1aINCKCEWaJl/PVXcqs1ylocGkobKpGurSEhxnVLNWTIiJmURJ+R2bxSqRKVH/roI2fl0pOUlL+snoYMBxqJiaRom63PMii6u3eTQm6U6CcggOZEo2RfTvLtt+bXKlQwz7vgFJ6saACV1Vuxgj5nUSQl0X7LaDwHBNDror+Lp07JbblPTATWrqWqEkbJ2zzkm3GMXr3MFVl/fzoEVgBQim7hISCAFiEzJS0gILdOrSiXzMxMksPs/pqMItFkNEKGCXbPHqBDB1LGHn44/3X3EiUyMm8eJRR56ilxMgwZQm6XRsjQz1aWAW1jLHI8JyWRpcdMUZTBHbNPH6BbN2Du3PzXmjY1jzGWhW3baEP1xhvi+rl1azrMMOtnGZQ0Oy6tIg9drBQgzQIkcjx//jkpkmaf06+/OiuPtyQmAl9+SYp6nTpiZAgJoXJgkZHG18uVk3/elmE8e/LQkGF93ruX9i9r1hgrumPGOC+TtyxeTBnfb7Kqyq2Ecl0uLBQtSpYLT4ou58YlIpzCQ7IsAHTNizq6BQ7nnhXdmjUphqlJE2fl0mO1YZKBSZMoQY0Zc+fShkQkQ4YAXbsaX5NhIbWzMb5xQ6yrv6eEXgD183/+45w87nDuWQGSgQ0b6ODKzKq7cSPFYovs55YtgVGjzK+L3hhb9bMMnjhW47l3b+C770zL6zmCJ+VCBjinw91Fi4yvX74MDB9OpZBEcdttwGuvATVqGF8PDiZXf9Hztqd+Fu12m53teW2pUYNKTN13n7Ny6bE6iJaBt94yTs6nMX06hR8plKJbaMjMpBhcs4VSUzBFWkzvvNM8pgGgTLci3Qi1QwAzZbxMGYphMqth6wRWG6alS0k+reC6CDZt8hzjI3ohzcwE/v7buNYhIIcF6PHHqYyCWamv224jV01vakQXNFYbpnbtxG5GLl/OjRc34to1ijE2S2LkBEeOUOIXM+uODIcuJ054rrcoWtEFKCznjTeMrwUH00PkIaqn0j0AJfN64gmx65/VwdULL4i1/ly+TOX9zGKtZRgrFy8Cx46Zf9dkOHT5738pIZUZVaqI/R5euUJ7MbN5u2xZ4OmnxWZ6t9qHLV9OCnlCgnMyubN9O5UcNUMGjytJ8Om3nTHWnjF2mDF2lDGW78iYMfYfxtgBxtgextgaxtidumtZjLFY1yPKl3IWBmZOmYI6tWqhV69eiIqKwpQpUwBQuZ7p06cDAQFY+NNPOO0jBSguLg73GsXB6fH39xy3cPfdYlPvc04uPWZWcQD45Rdg1y7nZHLHKnbT358UJJFKmpVlQPQEe+oUKTiLFxtfL1OGPkeRMgYEkBuc2Xh59lmyApolMXKCBx4wjufT2L+fxosorE7dS5akz1DkZsSO5R4QO567d6cYXDNEH1wxRq7VgYHG14OCSD6zDKlOUK0a0KOH+XcxKYkOPERbnT3N21euAIcPOyePO1ZjRYZ5e/58UnCsDlFFyujvT5+VGT/+SHHEosjOphwfnvLJbNoktk6t1XcxO5sOPC5edE4md6z2YTIcUEqCzxRdxpg/gDkAHgVQF8DTjLG6bs12AWjIOa8H4HsAU3XXUjnnka7Hv97J/OOFC/H7nDlYtGgROnXqhFHurmYlSmDh77/j9PnzXv3dzIK0AJ85I3f5oIAAUrQ9JXN69lngs8+ck8mdpCRyUzdKAATIsZBaWQZET7BWixRj5H7dpo1zMrmzfDkwYYK4+9th7Fh6mPHxx+SSKQo7/SzDd7FoUVK6jZDBAmSlAPXo4TlUwdfExZGL/F9/iZPBikceyY2JM2LvXnJhj411Vi49Vv0sOgGenfFcrpz4Q15P4/nee8mlVKSL+OjR5PklK+XK0YFB69bmbbp2BWbNck4md6z6We3DChW+tOg2BnCUc36cc34DwGIAT+gbcM7Xcc61YIZtAKr6UB4hxMXFoXbt2ujXrx9quSyyq1evRrNmzVCzZk1st5HmfdCgQTh+8iQeffVVzPjwQyxcuBBDhgzJ0+b7FSsQs2cPevXrh8jISKSmpmLnzp146KGH0KBBA7Rr1w5nzpwBALRs2RJDhw5Fw4YN8dFHH5m227lzJyIiIhAREYE5c+ZY/7NnzxrXbtNITKQTY5FxSlaItl68+KI9V0fRGxKrk8TkZHHx4nbinF9/HWjVyhl5jFi50jiBksapU7QxXrfOOZm8RXQ/16pFMa7Nmpm3Eb3Ya2NFZtdlK8tAly5iFd0jR4AZMzyXDxo6VOzBkdWaJkM/L1vmOYmO6PFs5c0EiPcW0pQLs/FcqxZ9D80yhDvBnDnA5s3m15cto9AZUf2cnW09XkT386uv0tqi9mG3BL7MulwFwCnd83gAnrL8DACgr2JdnDEWAyATwBTO+XL3NzDGBgIYCADVqlXzKMzQoUMRW8CnqZGRkfjwww8t2x09ehRLly7F/Pnz0ahRI3zzzTfYvHkzoqKiMHnyZLz66qsYNmxYvveVLFkS0dHR+OSTT/DLihVYN38+KjRvjoULF+Zr271bN8yeORPTp05Fw6ZNkZGRgZdffhk//vgjQkJCsGTJEowePRrz588HANy4cQMxMTHIyMjAQw89ZNiuf//+mD17Nlq0aIGRVtl+Oae4FbNETwDFTl65Yt3OVyQlUTxanTpA8eLGbURPsNWr08MM0Rag7Gxy0/NUFuX11ym5jaisk3Y2TBcvUgznnXeat/ElVsqFnx8deHTuLEYhz8ykzNnvvAOMGGHcJjiYvg+XLuXW4XSS0qWB5s09txGt6JYv7zmOuXZtCkUQ8fkB1M+XLnm2DKSlkbdO1apiSmrYSQyzfbu5F4wTPPkk5U3Yts34ugyKrlmmYA1tPF++THGSThMQQO6sFSuat1m/3tyF3QmslAvOaTwXKybmM9TGsycZT54k12VR/bx0KWXL37sXuOce4zai5+3Klc2rNgBy7MPCwuhgxYxhwygpp6h9mERIUV6IMdYbQEMAD+levpNznsAYuwvAWsbYXs75Mf37OOefAfgMABo2bCitmbB69eoIDw8HAISFhaF169ZgjCE8PBxxcXFo1aqVtRLOuWflkHPauLtchw8fPox9+/ahbdu2AICsrCzcrquR16NHD4/tUlJSkJKSghYtWgAA+vTpg1Wr9OcQbljV+dVf85T52JdkZlpnhg4OFhvTt3IlLeSuzz0f5cuTK6EoBc3Pj+oxekLkRgSwtzHu35/6+c8/nZHJHTtuR1o7EaSkkIJTrJh5G/1iL0JR27uXynE9+SS5mRnx6KNikxS9+67n60WKUKy2KLRQE08b4+++oxjeo0fF5Fiw46ERHCy2dqnm6miGaAvQtWuUybZVK/OMwWFhNJZEJbR8+GFr126ROQsAa0U3LY1knDzZPHmaL0lOpp9WYwWg/0WEopuYSIlVPYWQBQfT4Zooli2jfUy7dsbXg4OBxx4TV3fazw/YssVzG5kzrDuML7WNBAB6/42qrtfywBhrA2A0gIc45+na65zzBNfP44yx9QDqAzjm/n672LG8+opius2in59fznM/Pz9kZmZi3bp1Hi26AEg581QsXcui51qkOOcICwvD1q1bDZuXcp1+m7VL8TbWVttMelJgtWuiNp52lPHgYNpAi+KNN8iia6boFi9unmRJFo4epfjNIUMoKZTTPPgguTpaLfYi+zkpybPlvkQJ6mtRiq5d5UJrK0IBiooiV8zu3c3bvPWWc/LcLBMnkpLRpYvz9y5eHPj0U2v3b0BcP2vfRU+HKeXLe85A6msSEz3PdSVK0EPUeI6PBwYOBL7+2lzRfeQResjMihV00Dp6tJj7jxjh2RVUdD/bOeTVH7qIWJ/tri0ix/OECbQ+mym6JUqITehlh7//BhYupEN9Tx54/wJsxegyxioyxrowxgYzxp5jjDVmjFm9dweAmoyx6oyxogB6AsiTPZkxVh/ApwA6cc7P614vxxgr5vq9AoBmAASmYPMtmkXX/ZGj5AKkyFpYTUoHBuKKqxzJPffcgwsXLuQosBkZGdi/f3++95i1K1u2LMqWLYvNrliPRWa17TQ0JdKOoivqxDgriz5HT6n133yTEgWJwm5dUFFxzrt3UzZeT+ULzp8nRVNU8ph69Shmz5ObpehY7MuXrftZpPuWnc3I/fdTHJOnkmK+JDGR3FU9WZ1F064dMHWq5zZz5wI//+yMPO4EBpICZFbmChDvXXD1KsnpqZ9FuzpaeWgA1McvveSMPO4UhrqgU6Z4TlAEAGvWAO+954w8Rjz2GMW3ekLkd/HKFfIssIpzBsSuLYGBnj0gRowwr6fsBLLXZ9+5k/Y5nmpKnzlDCrvITOqS4FFZZYy1Yoz9CuBnUPbk20EZlMcA2MsYG88YM8xjzjnPBDAEwK8ADgL4jnO+nzE2gTGmZVGeBiAQwFK3MkJ1AMQwxnYDWAeK0b1lFV1bcG6pIPbr0gWDRo9GZGQksrKy8P333+P1119HREQEIiMj8yrOLooWLWrabsGCBRg8eDAiIyPBrRSrwECKRStd2rxNQACdhImKGbDjMn3PPdaxTL7EKnYTIEWzWzdn5HEnPh7YutWzVV70QnrkCFmVPVG+PG2gb9xwRiZ3jh+3LuZ+333iNqZWdUG1a82bex7zvsSOcjFjBlktRfXzpk2ea9QCYg9dLl6kTZNZuRRAvNvtu+/mumSaERpKD1HeQnY2xq1aibGgAfYOro4fp+uiPIYOHbKet4ODSZnLyHBGJnc2b7Z2qRWp6DZsSGPZk2U+JIS+h6IOy+2MlXr1PHuZ+Bo7MrZpQ/V+RXDmDHmkedpLiz6glAgr1+UOAF7gnJ90v8AYCwDQEUBbAMuM3sw5Xwlgpdtrb+t+N6zvwTmPBhBuIVuhIDQ0FPt0Lhj6RFLu10zJzkbcsmU5E1O/fv3Qr18/AFRHV6Pbo4+iW/v2ORaWyMhIbNy4Md+fW79+fZ7nZu0aNGiA3bp4zKlWlgmrIuTFi3u2HPgaq1NEgGqjrV1LE5jTsaapqfSw2rwXLSpu0+mtS6sIhg+nrMWe6iFrMiYnA5UqOSOXHsasv4s//eSMLEZUrkwZwKt6SISfkUHxm+HhtDFxGjubkWLFgPR0Mf2sjWcrGUUmwFu1ikqqHTli7tIq+uAKsD6gfPVVeoggOxsYNAh46CHP7TZtIk+Oxx5zRi49dubt0qVpnIiqDWrnkFe/tjg9ntPS6GBv0iTy/DJDtHcBY54VoJo1aZ8jijZtSAZPnDxJMaidOjmfZC4tDbh+3XoflpEhLi+ANy7qStH1bNHlnI80UnJd1zI558s554ZKrqIAseMWDNDELypZw6VLNDnJnMo8JASoUsVzm+3byZXv1CnP7XyBnUQS2nWZFV3NxV6ka5TVZ9iyJcUmmtXJ8yWJicCAAeYZWmWgfn2yOHvKPMkY1dEV5epvp59FLvbejGdRY8VOhvJy5cgybpXh2leMHSu2pqYVfn7ABx8AHTt6bjdjBmWjF4HdfgbEzttWyoXIQxe77t8vvwwMHux7eYyIigL69fPsoSGa3r2tY6yjo4FnnqE9pdPY2eNo12UOLdLGs8gQLUnwqo4uY6wpY+wXxth6xpiAzBn/UjR3LE9JlADKoCciix5AbqDnz1u7Jf/1l7hsenaUcJELaUgIZZHt2tVzO5EWoKQk6mNPGRMDAuj61avOyaXHjmWgbl060BDhdnv6NDB/vvVhyvTpgCsbuuOkpVm7gQYEAGXKiFtIv/mGDis8IVLRteP+DZCMly75Xh4jtPHsad0ICKCY94gI5+TS8913ZA31xJ9/UkiHiCzqGRlkAbJTS1fUvN2/PyX3sernMmXkPqDUe+I4jV0FqFs34KmnfC+PETExwFdfWXsLdekCvP++MzK5k5xsnadF5LxdsSK58Vv1oez7sCJFxI5nifBoImSM3cY5P6t76T8AugBgAP4A8IMPZVNo2LXoZmTQBjUw0Pk4WK02rtV909PFlBYCSIksV85zaR6RE2yRIuQGaoW2YeLc+X6uWJGsoVaHLhcviutnO5aB9HTa+FWr5nx5F7sbpgsXaIMvop9HjKBYPSs3RpGLvUXtdAC53wMRyrifH2VPv+MOz+0+/lhMfVogtzSUVdjJsWN0UGjlcugL7ChA2dmUOyAhwXPdYl+wdSu5La9ZQyVyzNA8cUSM56Agz5tiDZHK+H33WYdAPPwwzd1WipwvsDtvJyWRJTIiwvl+tjueY2PFlQG85x46zPeUo0LkPiwgwHNFBA2RY6VaNfIgsernU6fEl3uUACuL7ieMsbcZY8Vdz1MAdAcpu5d9KpkiF7uK7sWLlGFNhPtwZqa18gNQGxEJQzi3rqELiJ1gDx0C5syxPq1u0QL4v/8T8zkOHkwxzFaIUnI5t7cxTkigxB0ist3adYELDqZNXWqq72Vyx25tXFGLPedk8Y6J8dyualWKNbYKWfAFYWHAhg1Akyae2xUtKi5Bn93soj16kFXXaeyOZxks93ZisUWN52XLqLSQFX36UHk2ESxaBLz+uuc2AQFilFzAfj9//jmFfoiat+2MZ5Hztp2DaJEJ8Pbto8zeVve+/34aLyKqiDz/PLmpW1GmjLUy/C/AKka3M4BdAFYwxp4FMBRAMQDlAXT2vXgKABRHGBpqPcGLrFNrJ6MxQG1ETAzZ2TTJWskocoLdsoVqz162OEN67DGKCROlTNph9myqceo0nNOGycrtSOTG2JsYIH17J5F9w3T1KjByJOCWWC8flSqR5aBBA0fEuin++INitq2yM/uCV18F7NSYF9nPmZnyjxW9DGaIlPGzz2hOtmLCBArpkJX0dIqBXbXK+Xs3aQIsXWpdS1r0d1HmefvKFdqf2jkUAsTI+McfFEt/7Zrndl260LiSeR82bx5lrf+XY6nqc85/AtAOQBDIVfkvzvlMzrmAVflfSrFiQIUK1gNKZJ1aO0okQBZVEfLZtYoHBdGJ3oABvpfJHbsbJs4pJkzE59i5MynjVmzeTLF1TuPnR0quVYmooCBqK+JA48YNcieyspiKPHSxu2GaO1dMORK7YwWgQ670dN/KY8THH1MGfCvLTnw8xWyLyODZpIm9LMCiEuBdvkyhBRUrem6nWS5EjRXA+rvYuTOFz1j9L77ArocGIKZ0z8mT5I5pldiuSBEaV1u2OCOXnsqVge7d6bvmCZHzdtGinkOzNESNZ22sWH0Xy5ShkIA+fXwvkzverC2ci/GgbNfO3h71t98AXaWXfytWdXQ7McbWAfgFwD4APQA8wRhbzBizONZSFBhpaZg5bRrq1KmDXr16mbfT3HIdsOguX74cBw7oShvfc4+9+K1SpZxPFw/YT+jFGLkc2olnKmiSk0k+q5iKdevoMxSx2O/fb++UtVw5ICXF9/K4k5JCrtVW7t9aAh4RMr70Ep1sWyXCuuMOclO3ExJQ0CQn29sY3323vY1VQaP1rx0ZK1akklNOEx9Psa3Fi3tup/0PIr6La9dSyIQVosZzlSqU5PDZZz238/OjOrUiSoVp87bVuhYSQjkYRLjepqTYGytDhnguKeYrEhMpntAqoZefn7h5e+9eisO2QuR4joqyd8B87705ZSgdxe68zRjQtKnz+TMAkjEgwHo8b9hA7TZvdkYuPceP23ONFzVvS4aVCW4igMYASgD4lXPeGMBwxlhNAJMA9PSxfAoAOHcOH3/8MVZv2oSqnhYhnaKbmZmJAB+6VCxfvhwdO3ZE3bp1vXujqPJH/v50b6tNJ0BZC0uXJtcUJ7l0iRRsq3g9TQkXkalVk9GKoCBq63Tild27gdatrRPDALRhEpXt1g6NG9NiKoJBg+wle9q+nRJm/ec/zvaz1m92ssyXKSNmsS8M47lnT8oSO3eu53aixrM3rF4t5r6tWgEltHH/1QAAIABJREFUSlh/LklJwLffUib1WrWckU3D7rwdGChurAD2xrP2XXSauXNJibRK0CdyPNvlrbfE3LdiReCdd0jRtmLZMgrbe/RR38ulx+68HRhI1lyRa4sVosaKZFi5Ll8C0BVANwDntRc550c450rJtUFcXBxq166Nfv36oVatWujVqxdWr16NZs2aoWbNmti+fbvl3xj0xhs4Hh+PRx99FDNmzEBSUhI6d+6MevXqoWnTptizZw8AYNx776HP1Klo1qED+vTpgwsXLqBbt25o1KgRGjVqhC0uC+DVq1fRv39/hIeHo169eli2jEohv/TSS2jYsCHCwsIwduzYnPuPGjUKdevWRb169TBixAhER0cjKioKI0eORGRkJI4dPUqWCxEp/+1SrBidVJcoYd32ww/JldBpUlLsLfRaG6cnWM7pnnYm2LJlyUXX6Xp+2mdi53P86COK93Ka6dOBYcOcv683DB8OPPmkdbs1ayhDs6h+tvtdFOVdUBjGsx0Ze/akA0Ari1tBs2ULufyeOOHsfb2hbVt7ikNyMllMna6f7c28HRQkdt6WeTxfumRvrNx1F7BggXX4TEHDOdChA5Vdk5UqVSh3hx3vv0mTyE3dabydt51WJL2Zt8uWpbAdmesqO4CVya8LgKcBZAB4xvfi+JChQymlekESGWkrkcfRo0exdOlSzJ8/H40aNcI333yDzZs3IyoqCpMnT8arr76KYQYb35IlSyI6OhqfjB+PXzZswLp161ChQgW8/PLLqF+/PpYvX461a9fi2WefRWxsLODnhwPHjmHz5s0oUaIEnnnmGQwbNgwPPvggTp48iXbt2uHgwYN45513EBQUhL179wIAkl0K6qRJkxAcHIysrCy0bt0ae/bsQZUqVfDDDz/g0KFDYIwhJSUFZcuWRadOndCxY0d0796dTrX+/JNO36xISiKXvjp1nC2pkZVFE4S/v/VJnaiFdPZscmm1QtsMOC1jairFb9mZYCtUoNPbq1ftHS4UFN5smDp29K0sZqxfb6+W9KVLFEP52mvAc8/5XKwcsrKAc+coIUixYp7b6hd7J/v50UfJ1dFOvKMoy73dU/eyZck64HRsZFqa/fEcGen8xh0Ajh4FfvyRku9Z8eKL9Jk7HTN+9ix5Cll9jiItfWfO2MuhoT90cdL7yhuLbvnyYuIi7R4WlCsH9Ovnc3HykZpKSboeesi67f/+R4cz69Y5GzOekkJ7gttvtw7JCQoSsw+bN49ktELUPsybeTsoiNbly5fteTPeoljNfGmc81meGjDGAjnnNr4V/16qV6+OcFd91LCwMLRu3RqMMYSHhyMuLg6tWrUiRdUMt5jbzZs351hhH374YSQmJuKyK1Nvp3btoG03V69enSeO9vLly7h69SpWr16NxbrNQDlXvMR3332Hzz77DJmZmThz5gwOHDiAunXronjx4hgwYAA6duyIjkbKgZYUyU4sIed0YpyZ6ayie/EibYwjI+0lpDp61Bm59JQrZy+OStQEm5EBdOpEhxRWPP88PZzGmw3TgQOU6dbOxqAgsasAlSxJ5cISEnwvk57z5+nkfe5ccmH2hKiNcdGi9mMJy5YFjhzxrTxGNGxo7yS9fHl7B1wFjTeHQklJdFDcsKF1Mp6CRBvPdmQ8f548i5yme3c6ELKK3xQ1bzNmXc5FQ6+MOzmeK1emUCE7cv7+u+/lMcKuRRcgq31IiHWG5oLEm/GclkbrX1KSs4rul1+S0eniReu+LltWzD6seHF7SqHIfdgzz1jXnAYoH8j//Z/vZZIcK0X3R8ZYLIAfAezknF8DAMbYXQBaAXgKwOcAvveplAWBnRIKPqKYziri5+eX89zPzw+ZmZlYt26dR4susrJsx0WVun6dJpE77kB2dja2bduG4jYG7d9//43p06djx44dKFeuHPr164e0tDQEBARg+/btWLNmDb7//nvMnj0ba93rqNpN9ASIK4HkjYyiLEAzZ1Jinyee8NyuSBE6jXW63mFQEFlXZEZbdOxsxqdNo83pyZO+lcmdlBR7rltFilBCDKcXUm/j5QDnZfztNyoDMWaM9dz45JNkoXaaceOcv6c3eNPP27ZRduZt26zrAhckhcWl1e54LlnS+bXlzBlaW5591vqQMjycPEisEuUVNG3b0kNmUlIo6aYdWremQ8L33/etTHq8Gc+i3G69Hc8i9mFTpgDVq1PtcE8UKUK5KRo1ckYujTJlqISiHWTNp+AwVnV0WwNYA+BFAPsZY5cYY4kAvgZwG4C+nHP5lVzJ0Sy67o/o6GhqUK1aHgWtefPmWOT6oq9fvx4VKlRAGW1j7+eXo9Q98sgjmDUr1yCvWY3btm2LOXPm5LyenJyMy5cvo1SpUggKCsK5c+ewylWn7urVq7h06RI6dOiAGTNmYPfu3QCA0qVL44pmhdCUSLvlhfTvcYqsLPps7Ax8US4z06bZVyQnTLBOtiSSo0fphH7HDmfv26sX8NNP9rwFRPWzXRc4QEwyCW83I4DzMv7yC/Dee/bG89NPkxVBZl5+mZQRJ6lalQ4MWra0bisqjvjSJXLrtrO2iEq8YjdeDhCjjJ84QZv3uDjrtuHhNK4qV/a5WDfN4sVA797O33fBAkCXu8QjIpQ0b/JTFIbxLOrgas4c4Ndf7bV9/32gfXvfyvNP+PtvKtH055+iJRGKnTq6KznnvTjnoZzzIM55ec75A5zzSZzzs04I+a+ndOk8G7px48Zh586dqFevHkaNGoUvv/wyt61O0Z05cyZiYmJQr1491K1bF5988gkAYMyYMUhOTsa9996LiIgIrFu3DhEREahfvz5q166NZ555Bs2aNQMAXLlyBR07dkS9evXw4IMP4gNXrFTPnj0xbdo01K9fH8eOHydXQtkVXbtlWsaOpQnCaey6tAKU2MRpK9Xq1RRbs2uXddsbN6gm4vHjvpdLz91324+9LVs2t4C9k4SEUOkgO4hY7L3ZMN13H4UEtGrlW5nc8Ua5SE+nGrVOx/VVrQqMH2+v7dq1wMaNvpXHncBAsqLZcVEVZbkPDKRyb3YoW5Zi0Zwez97M29HRlIzOSbwZz1qim+vXfSuTO4MGARER9toeOkQWLaf7uVEje+6igDglrXZteyV5RMWLe3PIO2oUlXRyGm/XFlfYoGP88gvpBDEx1m2vXwe+/lqMC7hE+K7+jAIAEBoain379uU8X6gr3ux+zRDXwhN3+HBOYpjg4GAsNyisPm7cOODgwZyY2QoVKmDJkiX52gUGBuZVjg1k02OUGbpZs2Z56+jaJSCAJhEflj4yxBtF106cbEGTlUVKl90JtmNHSjLgZEmNxERKvGKVoAgQt5Bu2kRjpkUL67baZ335srN97s3part29uPrCgpvXOCKFxdTd9ObeLm5cynLdVKSc/2cmeldbLUIa+Tx48DOnZSp1apmpCjL/fjx9g8LwsKAxx+nQzanEqN5O2+LqDntTZzz6dM0nj/9FBg40Ldy6blwwb7iqv0fTs7bWVmkXDdpYs99WcR4vv9+2v/ZISQEaNPG+b2ON/O2iJrYmZmUiMquMt6qFc2dTsaNawm97CR/FWW5lwxLi65CMFlZlGDD7hc1IMD5k05vKFIEqFHD2YQmABAcbH/i3LsXePNNWnydQjsVLAwurTK7Ro0fD7zxhr22haHe4QcfAKNHO3vP8HBydbTjvpiVRXUR163zvVx6vDl1F9HP2niW2aX199+Bp56y97mIsuh6w5NPAlFRzmb/zs4ml3O77ov/+591zeKCxpt5W1Q/e2MVF3HocukS0LcvWdPsIMqia5eKFWn8Ox0X/fzz9tezQ4eAyZPpgN0pCsO8fTM5NGTe4ziAUnRlx5skSgBlS3X61DgxkbKaikj5b5dy5ey59ADk5vHuu85mu/VmM6K1EzXB2s0Y7O8vRhm3+xk+8ggt9k5mnUxIoFNg94RuMlG3LvD66/b62c+PDhec9CwAbm5j7OR48WasaO1EuajbkbFUKcof0L27b2Vyp18/ezVqRVGkCMVX203QtXSpvVJJBYk3h6ilSsk/bxeG8fzWW87388KFVEHgxg1n7+sNjz5KORPscPAgKcXx8b6VSY+3iq7sBgdtPMt86OIAthRdxth/7bym8AHeKrolS1q7oRU0aWk0QdjN8LZvn/OZbtPScssgWSFiIQ0NJRe4nj3ttRc1wQYE2HOZYQy49157bQsSbxSgKlXIfctJGc+fpzq6duN63nyTPCCc5PRp+zHqjIk5dNm2DfjuO3ttRVipvD24qlZNjIu6N+O5Uyfgrrt8L5eezZvtlwz64w/KIbBpk29l0nP1Kq1ndmNaRSQpGjGC5LPbz6IOUe3O2xUq0NztZN1pb8fz/fcDzZv7Th4j/vqLYsDtlm1s2JAONJ1kzx57NeQBMfN2aCjtuXv1stdeVA6NgAB7niuMUQZpu/rDLYrdQMk82SAYY/4AGhS8OIp8eKvopqYC167Rpsmp1OKZmSSf3ftxbl/pLCgOHSKrrh1rtwh3D8Yo8YpdtAmWc+f6+d57qUSF3ft5qg3tK7yxDFy5QtkVGzVyzgvCW8sA53Qo5GQ/T5xIlie7rvsiDl0CAuzH+YtwdSxdmqyRdutovveeT8UxRBsrdr9X69dT0sEHHvCpWHnwJqavSBHKIZCU5FuZ9OzYQdnv1661l5BNs9w7OZ4Z886dW8R47tbNfume5s2dtfIB3nk/AHQ4s2cP0Lmzc/3s7XhOTna+Rnvr1hRi8PHH1m1F5QXw86OHHbSx4uR4btSIauPavZ+IGvKS4bE3GWNvMMauAKjHGLvselwBcB5UW1fhazSF0K6im5JCZQScdCP2JtETQG2djCPm3DsZRVh0d+2ik/ezNhOZd+xIqe05961cep55Bpg3z7n7eQvn3lkGzp+nRXfDBt/Kpcdby0BQEFku0tJ8J5M73nyGgPOn2pwDQ4bYLwFx552kSNau7Vu59NSoQeVIwsOdu6e3eKNEAsDw4RQz5xRaBuDC4NLqjYxOj+dPP/Wu30aOpHnRSaZMAfr3d/ae3uDtvL10KdC1q7P97E1GY0DMvH0zuRWclHHHDuDFF8mryQ7t2lGVDif32127Ah995Nz9bgGs6ui+yzkvDWAa57yM61HaVWLIZsYXxT+idGk66Sxe3F57EeV7ZFd0s7NpkrUrowiL7u7dpLjadYFr1oxiw+yePBYE3irVo0bRouEkW7bYv2dhiPUSIaM3mxHA+fjS1FSqdWjXY6B8eeC11+xbjAoCbc6xy6+/kkXQyQR4kybRhtwuTm+MU1PpoNebOGfA2Xn7ZnIr6N/nBFFRlATLLoMGAU884Tt53PHWw+vaNeCxx4Dvv/edTO60bk0Zyu3OISKUNG8PrkTM296MZxFjZf9+4LPPqGyQHVq1ovAiJ12D09O9W1vGj6eqA/9ibO2SOedvMMaqMMYeYIy10B6+Fu5WY9y4cZhuUUNv+fLlecv2BASQsmt3IGnufFlZaN++PcqWLYuObnVF//77bzRp0gQ1atRAjx49cMMkeUGgDVfa9PR0tOnfH5HduxuWMjJEp+iuX78+n3xGtGzZEjEWdcM+/PBDXDdSFDWl2q6rY3AwLaYvv2yvfUHgrWXg2jXvYsMKghYtqHyHXbSYIadgjNx6QkPttRexGSlVimox2i3rIGrD5I1lICrK2azL3ioXAJXSsestURDMmkVluJKT7bVPTibX4IsXfSpWHkJDgchI++2ddmlNS6MkTzKPZ28Prvr2pZAJO7WLCwpvLX1JSc7WPz9zhtzOP//cXvuiRYGVK+2X0ikIypShmuF28zmIcLu96y6Ku7WL0/Hi3s7b5coB584BL73kO5nc8XY8p6cDJ044a7lv3ZoSadolNtb5ZJGSYTcZ1RQAWwCMATDS9RjhQ7n+teRTdK9d8y69us6iO3LkSPz3v/lzhr3++usYNmwYjh49inLlymHeP3BH3bVrF1C8OGIPHECPHj3svSkoyLtNqk0sFV27hwWM0YLmVMwFkLsI2C27tHEjuUXu2eM7mdxJTqZNhl2cPjG+eBH44gvg1Cl77QMCSPF0Usbu3cl6b1fRrVWLYj2dTJjlrUU3MNB+ApSCwNvNCABERADTpvlGHiNSUshFtXRpe+1FWCMXLfLObd9pi25wMCUds7uuBAQAffoAder4Vi493s7bJUrQeHFybbkZF/WWLX0mTj60z9DuWClSxPl5e8sWsvTZRYQ1ctYs4JNP7Ldv2ZKSMTqFt3HOfn5UEcHJtcXb8bxmDR3EOZmPJCXFu/Kcspe6cgC7fo9dANzDOe/AOX/c9ejkS8FEsGgRfWf9/OjnokX//G9OmjQJtWrVwoMPPojDhw/nvP7555+jUaNGiIiIQLdu3XD9+nVER0cjKioKI0eORGRkJI4dO4bPZ89GoxYt8rTziE7Rbd26NUq7LR6cc6xduxbdXWUi+vbti+XLl5v+udGjRyMiIgJNmzbFuXPn8lw7f/48evfujR07duTIGxoaiosuq0RMTAxauhbMa9eu4bnnnkPjxo1R/5FH8KOFdTY1NRU9e/ZEnTp10KVLF6SmpuZce+mll9CwYUOEhYVh7NixAICZM2fi9OnTaNWqFVq5koLktGvYEGMXL/YuG/X48cD8+fbb/1MuXaINkLcJdpx2afU2BsjJjfuRI8ALL5Cl2y4isqB6Q4MGFOvpZMmwCRO8O0X/+Wdg6FDfyePOzVh0nT50KQzjedQo4Msv7bcXkaTIW776ytn40s6daZ2w28/x8ZSLwZs56p/i7cGV0xtjb72ZAOfH8/ffU7/ZpTDUnX7lFWDGDOfud/vtwNdfU0Zqu7z/PvDNN76TyZ2UFPnn7ZsZz7LP2z7GrqJ7HIDXxyqMsfaMscOMsaOMsVEG1//DGDvAGNvDGFvDGLtTd60vY+yI69HX23t7y6JFwMCB5IXAOf0cOPCfKbs7d+7E4sWLERsbi5UrV2LHjh0517p27YodO3Zg9+7dqFOnDubNm4cHHngAnTp1wrRp0xAbG4u7774bXR95BDu+/TZPO5J3ESIjI/M9uvftSyfaJm7HiYmJKFu2LAJcA7lq1apIMMm8d+3aNTRt2hS7d+9GixYt8Lmba1HFihXxxRdfoHn9+oj97Tfc7SHD6KRJk/Dwww9j+/btWLduHUaOHIlrV6+atp87dy5KliyJgwcPYvz48di5c2eevxUTE4M9e/Zgw4YN2LNnD1555RVUrlwZ69atwzqXG2WedjEx2KM7aLBk6VLawDvF9eveL/SAsxPYzcQAXbniXIbtm1GAoqKAt9/2jTxGjBnjffwb584nu/DmpD8mhpJjOBV3f/06nfLLnHjlZuKcAeddCb2R8eWXyYLhFBs2kCV+/37v3udkgr6ICO+SKF2+TJt3b/+nf4pdDxIgd952ajzfzLwtQhn3Zr659176/tqtr1wQREY6q7h6S7lyVLbHm0PbBQu8iy//p3DuXViBCBf1mzE4ODmeJcRueaHrAGIZY2sA5ERpc85fMXuDqwTRHABtAcQD2MEYi+Kc6/xysQtAQ875dcbYSwCmAujBGAsGMBZAQwAcwE7Xe20GPHnP6NH5wx2vX6fX7ZbUcmfTpk3o0qULSrrcDjt1yjWC79u3D2PGjEFKSgquXr2Kdu3aGf6NfQcOYMwHHyDlxo087Xr16oVeNyvY/7N33uFRVXkf/9yZSYUQAoQWQu+hdwUSBZSmYsG1YHfXXVwX1HdfFbG8a3fd1X1XXeuuoKBiWV0RUZQiYIEEaROK0juhpBJCypz3jzN9bpvMvUPeXb/PM4/h3jvJz/u559xzzq8ck0pMTPTnzw4ePJgvv/wy8iJfRWODycySJUv45JNPZI5ybS1VZWXs09mrc+XKlcyYIR+vfv360a9fP/+59957j1dffZXa2loOHz7Mli1bQs5HXFdTI69zu1WvU1W8V4xffjm6jijeK4m1tXLPyGgGI507yxd9VVV0WyfVV/XxDAwaZI8tWtqyxfy+oCDzSjt0gL/+NT6FverqZLho167QqpW57/jud1lZdAPq+mrsWPPFQnyKtzcy2sFIs2Yyd9ts0cFYVd/2HM99dA8flqkZ0RTc8+WuLVlij03h2rRJRlHl5BhfC2fH03fgQHST/3i35/qkIvTtK9tMvBTtolCTJrKmRbxUWytTYsrLzX/n1Vdh5ky5xVA87uXBg7BjhxwTmO3n4j0O+8tf5Mes4t2ea2tlOmM0z2J2NvTuLSc0ZtMD/s1kdqL7ifcTjYYBO4QQuwAURXkXmAL4J7pCiOAKJt8D13l/Hg98KYQ46f3ul8AE4J0obTCtffuiOx6rbrrpJj7++GP69+/PnDlzWLFihfp1997Lxy+8QP9LLw25bv78+TyjknPWtWtXPnjppUAuUJiaN29OSUkJtbW1uFwuDhw4QFZWFnV1dQweLLdGvuSSS3jkkUdISEhA8eYSOZ1OatUmsz5Pkzdk2uVy4fEeqwpK0BdC8OGHH9KjRw+ZS7lnD3TvztHvvjNzu/zavXs3f/rTn8jPzycjI4Obbrop5O+oXldby00330xVNIWbmjaVhRDiqWgq952Nie7MmdGFHd1wg/zES/XxDCxbJrcZuvpqe2wKV7Re8SZNoLo6fpO0khIYNUq+7GfONPed4Jd9PAbGEH2OY7zb8+TJ0e0327q1HKjGS/WZXOzZI4uaTJ1qS42FCEWb0wcy5DCelavvuksuuqxebe76s7U3aDTtJd7tuVs3uPvu6Dxp775rnz1qitaj6/FIG3v1goED7bPLp/os8iYmykXo0tL4THQXLpQpMYcOyTBmMzob47BoFO/2XFsrvW/RLKLccov8/AfLbNXlucB7wPdCiLm+j8HXsoDgqjAHvMe0dCuwOJrvKopym6IoBYqiFByL8eXWvn10x80oNzeXjz/+mNOnT1NeXs7ChQv958rLy2nTpg01NTXMD4qPTktLozxoVa781CnatG4dcd20adPYsGFDxOeD99+Xs3ONCZCiKJx//vl84C3NP3fuXKZMmYLT6fT/jkceecT8/2RYoaeOHTv6w4w//PBD/2Xjx4/n+eefR3i3+Vm/fbuuBzM3N5e3vbkZbrebTd6iS2VlZTRq1Ij09HSOHj3K4sWL/d8Jvnch1x0+zOLvvovOMxDv0KgHHjC3ibpPKSmySuWkSfbZFKzkZDn5ueCC+Py9+qg+g/fXX4cHH7THHjVF6+lLSZGD93g9i/UZMMV70eWjj2S4aDQh8TNmyDYWL916a3Q5ffFWfTivXy9z4PfsscWkCNX3WWzIdQtSU+W7Ml42Hj4sF/GiWVAeOVJGGMVjMQNkHYI//zl+i2T1UbQeXUWRFbaj2b4rFtXn3RfvSVp9ayvEc1Ho7rvh2WfNX5+aKsPFx461z6ZgJSfDY4/Ft1jcv4HMVl2+GNgAfO799wBFUaL18Or9/uuQYcpRlcUUQrwqhBgihBiSmZkZkw2PPx5Z2DQ1VR6vrwYNGsRVV11F//79mThxIkOHDvWfe/TRRxk+fDgjR46kZ8+e/uNXX301zzzzDAMHDmTnzp08+sgjDL/66ojrNKUo/u17Ro8ezZVXXsnSpUtp164dX3zxBQBPP/00zz77LF27duXEiRPceuut9f+fDPPoPvzww8ycOZMhQ4bgDPJQPvjgg9TU1NCvXz9yzj2XB19+WXegOn36dCoqKujVqxcPPfSQ39vcv39/Bg4cSM+ePbn22msZOXKk/zu33XYbEyZM4Pzzzw+97vbbGdm/f3Sr2hkZ8c31evddWdnRrBQFfvlLGcIVD9XUyH3workn69fLHLbvv7fPrmDddhts3iwnh2Z1NnK9oh0wxbOYRH28aOnpcjJ+6pQ9NoVr7VpZPCGaCIjx42XhoHippCT63PSJE+HRR+2xJ1zZ2TKMMJp88XgvaJSUyFzsaNrz2Sg6Vp/2HK+2cuQILFgQnVese3eZJhGviWdZmQyjj0Z/+Uv8JhcgtzOKpuqyosR3klbfSWTwd+1Waalsz9GkZ/jyS+OlTz6BH34wf72iyEKM3vGp7TpzRkagRfNu2bRJLl4F1Qj6j5MQwvADrAPSgfVBx9wG3zkH+CLo37OAWSrXjQO2Ai2Djl0DvBL071eAa/T+3uDBg0W4tmzZEnFMT/PmCdGhgxCKIv87b15UX2842rRJiJ074/O3Tp0SYutWISoqovtOfr4QJ0/aZ1ew9uwRYv16zdOqz4nHY6NBKmreXIjp06P7zqZNQmzebI894Vq2TAgQYvly89/54Qf5nY8+ss2smDVrlhAJCfHj/YtfCPHHP0b3nS5dhLj2WnvsCVd9OHs88W0vv/mNEJmZ0X3n8GEhVq+On53Nmwtx++3RfadLFyGuucYee6zQunXxbc8vvSTElCnRfee+++LbnuvTb9fU2GOLmurTnquqJOtjx2wzK0TTpwvRokV034k35/oonv12YaEQEyfKd65Z+d7PH39sn13Bqk+/feZMfBnXp9/esUOIn36yx55w+drzihXmv+Prt+PFOU4CCoSJ+asQwnTV5RohRPjSlFEZ0Hygm6IonRRFSQSuJizPV1GUgd5J7CVCiKKgU18AFyqKkqEoSgZwofeYrZo2TUZleTzyvzbXejKWEHJFNtrVX69HNy5KTYWePaPauudkRQLHHK0o3JlEQYEs2rppU3TbBUelujrT3h8hBFOnPkKT9N+jKG/hdNahKNZtN6XxR6PyDOzcuZPBg6dw5YAx/E/fm3G5sN/GKEOj5s2bx/Dr7+H3wOWX7YiPjR99BCr7RqvJ4/Ewduxv6P+nz3impobGzhL77QPpXfnv/zZ16Y4dOxg06GKG72/G2LdbxuceRukZmDdvHoOHXOptL7vi9yyafA7r6uok5/YTeGbUKNKcxQ2uPfs4T91dysPv/Bife1hYCH/8o/lOd948uPde+fNPP9lkVJh+8xvQ2fouRHV18vpvv5XFbqISSR3AAAAgAElEQVSpx1BfCRFdSOuOHXDxxXD77fDpp/ba5lO0ERrz5sFFFwW2NYuHormHPs6LF8soo3h4I4WQW66ZjbjycS4thR9/tNc2n3r3ll5ns/nA8+bBrFnxiwiD6PKcfZxvvBH+9Kfoiw/WR/Vtz8OHwzXX2GubT9G257feCvTb8XoWG6LMzIaBvwPXApuAbsDzwMsmvjcJ+BHYCcz2HnsEObEF+Ao4igyL3gB8EvTdW4Ad3s/NRn/LCo9ug1NtrfR8HjoU3fe2bZNe1gaow4crRUHBUZGff0Lk59eK/Hzh/6xbJ8Tx4zb80fJyIYqLNU8HPyd33LFAAELBJQCRypNC9oBCpKba5OWvqJB/4KmnDC/1eDyiT58LBCSLxriEA0XAVvttfOMN+Qd27TK8dN++fSIpqZFw0FwkgmhBtoA6+22cNEkIlX5ATbfe+qoARCOaev87y377opDkPE5AioAMAU4BW+y38cABId57T4jSUsNLfZwVWggXDpFG1/hwnjhRiCFDTF16yy2vhHBuHA/Ovvb89NOGlwZzTvO35zhw9rXn3buNr923T4hGjYRo3lx4QNS0zRY1Z+psMCoGvfKK/P/JyhICRNXDT9jvCKqrE+LTT4Vwu42v9XiEGDdOiJQU4UlNFR7FIarWx2F8EkW/fdY4T5xout/2c27aVHK+e5b9nKNozyGcXS7hQRFVGxrYWMzHuUUL4UlMFDX9B8WH84YNQixdau5aH+fMTMn5vx/4mbMQ0ffbqakNu9+OQUTh0TU70U0FHkd6afOBx4Aks38kHh+tia6nIYe2GOnMGTkDLCqK/nvV1fbYFK6iIhk+W1treGldXZ0oKNgs8vPzvZ/tIj/fEzLZ3bgxDjYHyePx+Ce65eXlwunMEjBQjOZL4SBPQHMBJ/0DT6fThoHnkSOyQ3/tNcNLf/e79wQg4HmRx7sCmgi4yG+fbTY+95z85SdOGF46bNhUAclC4SeRybNee+eG2Ni8ucX2CSHEuecKMXas4WXHjh0TitJMQJ5IpVTAFAGNBRyx9x4eOiRzIt57z/BS34ILvOC1q4mAyfZzjkJnjfNll5kKaQ3mPIrlQuHi+HA+cED+8ldeMbw0mPNZac9m0kemThUiJUWUrt8p7syYIwSI25LnilWrLLYpXBddJMQNNxhfd+yYEM2aCZGXJz79pE78S5kiymgsxuQcEadO2WyjWS1YIO/3Cy+Iu7MXiBKaiE+4SMyebfPffeMNIVq1io7zup/EnTwbP84m++0Qzr9fLv7FxfHhfPCgZPfyy8bXBnOesiN+nP/2N7nIY2KB0s95425xZ+Zb8eNsViqcS0mzn3NRkRCdOgkxd67xtT7OL74Y3/Zcn3473u05TrJjonulmWNn86M20d21a5c4duzY/9/JbmWlnP2ZmFycNR08KG00cY937jzineCeEPn5h7w/F4dMdPPzbbCxrEzeyzB5PB5x7Ngxscu72v3AAw94B53fihQqRDYfC1AE3B0y8DxbHr8336wVipItYICAGgFC9OIGr81f2mvjww/LX2yQX/bgg6u89jwqQAiFapFKbwFtBVSE2Gj5PezdW4jLLze8bPz4mV4Pqdtry3YBLgG32XsPCwvlL373Xd3LJOd2AgYKqBUgRO94cS4sFOKrrwwvU+OcTvf4cDapYM7JVIrOfNbgObfn9vhw/p//kb/YaIFy1Sp53aOPijvuEMKp1ImDWUPFYWdbMbB7haiqstCmcPXuLcQVVxhfN3OmEE6nqMx3iw4tK8UEPhO1iku8zG3ivvtstK+4WIhPPhHi6FH962pqhGjXToiBA8WKpZLzfNcNQoAYx5di7VobbTQrH+fHHpOcqRYHG3cXh51txaAeFeLMGRv/tsl+W8yYEeDc+rSYkLRM1DriwNlke1bl3P/p+HD2vZ/Ntuezwfmzz3RrpfgVzLnlKX97folf28vZrM5me46Fc9Pe8eEcJ0Uz0VXk9fpSFOUHIcQgo2NnU0OGDBEFBQUhx2pqajhw4IDqPqv/L3TmjMzRbdnSdOXJU6eg8mQVCZ4zlCLj+J1OWUAxijRa8zp5UlZMNNiHqby8jpMnDwGJQCsSqMbDUepwAG2BQEXkFi0stvXAAXn/mjePOJWcnEy7du1wuVy0atWFY8d6Ap8BsIQLuAk4xGrgGBDYl7hDh/jtsuFT69bfcPToKOBd4CoyOMl6etCRJGAAEJr3ZamNS5fC11/LXCUdNWkyk/LyV4ETyEAQgOXAGGAOcKM99gG0ayer6/7975qXCCFISMiirm4kILd+uJp3WMxCSvkAKAICOTqW2vjdd3Jv1cWLYcIEzcsCnBcAvyCDk2ygBx3iwfmuu+T9KyvTvSyc843MoSULeIbPsZ2zCalxXkEe15PGfpZgK+cjR+TWX1deKesXaCics1QV0AUYSEPgzMyZ8OqrbFx2gkGjUpl+/jZeOP9DeOABbmQO3R690b5dm0y0Z4SArCwYOZKHer3Po49KznmT06hdvITWShErNjSlTx8b7Pv2W1nN9PPPpZ1aWr0aRo+mdv4CBj75C8r3nWRLbQ+S0xNZenIg9/b+lLVrZeHys6aZM+G119i49DiDRqVye8obPJ/7PixezI3MoftjNzJ7tk1/+5VXIDMTLr9c+xo1zisgb8Ht1L7yenw4G/TbEZyPn2HL714i+YVn7Od8553wj3+Ya89ni3NWlrx/DbU9m1UQ5wFP/IKKfSfZUhen9rx6tXwe77lH/7pwzrfD85cvhzFjuIG59HjsBvs4x0mKoqwTQgwxdbHeLBiYiMzHPQr8NegzB1hrdjYdj4+aR/f/vT77TK7KfPedqcvnzZMr/w/yByFAOL1eP1u9kDffLFe3DJSR8b9eT8VGAUL8gxvFA5zrPTYvxHvRoYPFNjZqJMTdd+tesmXLFq8tfxMgRGNKhQBxPg96jy8IsVFRLLRvzRoZjmlQKRtmeT1UxQKEyGaPmMSnXo9zooAS+2w0IY/HI6CzgEkhdoBHQLaAi+21r1EjIe66S/eSdevWeXnOESBEGiVCgBjLI97jb9pno8n2DPd5PY+S51RkmJTCnfZzNtGe1Tiv5hzxAZfGh/OUKUK8+abuJeGcEzgjpvKeaMZC+zmbVDjnwOeu+HDOzta/xuMRonNnISZNEldcIcPQT/Y8R/ZV2dlibZuLRWqqDJixRSb6bV9F0apX5oiUFCGuniTbs3jkESFA3Jb6lpg61Sb7zL6f771XCJdL/PMNyfOfV70rvzdzpqh1JYomlIgFC2yy8amnhLj1Vv1rfJwnT/ZzLp73qRDffx/CubzcJhvNKJzz1d7j331nP+dFi6Li/OE/zgLnm24y356DOfccEdGebeOcmhp9e54Yx/b8zTcy73b7dv3rwjn/8Sch3nlHiLvusp+zGalxLvYez84Wa9tccvbbswXCwqrLh4AC5DLzuqDPJ4DOEubPskRjx8L+/aYr6c2eLYtNbqUX4/kcTxDeykpZwM7yKp4mq9QVF38GdAf6AdCNHeSSBGTh87j4tG+fhfbV1ko3t0GVukWLFnl/mgyAi1qO0IpMegCtgA9CrjdwYEennTtlxeDqat3LEhIWAaPweaL204HPmAxMBaoJ9wBZamNRkWGFy+3btwO7gIv8x97mGt7nSuAKZOH0wIqzpfaBdHc9+KDuJZKzglzDgwRqAOhCc6AdtnI2WTFRch4N3oiM1hwBoDETsJ2zifasxrmcJtSQhO2ca2vhX/+C3bt1LwvnXEMiH3AlJ5mE7ZzLymQUiUHl+3DOV/M2u+lIGuOxnfOLL8K6dfrXbN8Ou3ZRM/4iPv9cOqgzmjtk9dQrrmDw8S9wVpbxr39ZaJdPvn7b6N2yaBEoCksTJ3L6NPzqRtmeadEC2rXjt60/YOFCm7YzNVuhfNEiGD2aD75MJzMTLhl5Qto3cSLO2mpuyPjUvuraa9bIj558nC+c7OfcdNpkWU3Wbs4ej6zibbSPbjjnX5RCr17Sdrs5T5gAxcXGe6WGcx5+1P992zmbGYepcW7ujE97rqmRg9Bo2/NNNTK8Lzvbfs579sBXX8ln0sjGYM53d4Wrr4apU3HWVnN9Uxs5790Lhw7pX6PG+b9ulROAK65g8AkbOTdQ6U50hRAbhRBzga5CiLlBn38KIYrjZON/rhITZfhWUpLhpfPnyzYAsJiJbKYviYROnOrq4LbbLJ7sDhwIF1yge0llZSWwAt+gE6CUdJpRipykfY5tA2Nfj2jQwS5atIiEhL6A/OMlNKMNR3iPacDlwCIgsGVFRYWF99HE1j379u2jpmYTLldgctGKI1yRuJA7b+mFomQRPHhXFJg0ySL7QHbkF1+se4lvsSAxcbL/WBPK6MxuXK7Iybil9xDk4DEjw9DGLl2G4nS2BKDSG17d3FGOwxE5SbPUxlatYMoUGaanIcl5My5X4B6WeSdCM67tYj/nkhLTi0LBnCfyOTckvGs/5yjaczBnEIzlK3JcP9nP+e235cCsqEjzEjXOidTQkb3x4ZySovscAnJAB3zTdDKnTnmbf3q6ZDB1Ko6aam5q/ilvv22hXT5VV8stO/r3N7Zx6FA+XNWS9HQYPd6bLlFWBldcQZ8Dn5NwppyPPrLBRjNbru3dC243dRMns3gxTJ4Mzt/dDseOyfdmVha3Nf+AxYtlFpDlMjMBUuO8ZYsMk7Sbc3ExdO8uw26NbAzmPCYBtm2TaQJ2c3Y45D1MSNC+xsd5QhDnZt7nomtX+zmPHAmXXKJ/zdlsz2a3J1y0CIYNC3C+rIXsnG+6KX7tWa+9qHEuOQHLl0OfPpCVxa/t5HzzzXDVVfrXqHE+ckS26alTcVSf4cbmi+zh3FBlxu0LjAS+RG4VtAvYDewy6zaOx+ffMnR52TIhHn3UMPHcF7IcHOb2OReK/vwQFhJnU2iwgRYtWiQA4XR+4bdhKu+J25yvCZfrm4jw5ebNLQyz3rlT/lKdSnolJSXC6XSJ5OT7Iu5VaqoQF1+81GvjhxHnLLHzySflL1QpmOXTSy+9JADRqFFg65Hr0j6SP6xbJ/r2nSEgWUC59fYJIcSgQUJMnqx7Sa9e54mEhD4h9+ij1GtFWcsu4s0364SitBFwmT33sKhIiPvv193q4+jRo0JRFJGe/og/FBQ84gwJwn3xfeKhh1Z7Ob9tj40m9Le//c3LObBl1Mj0zWLDFY8IUVQk+vadKSBJQFmD4tyhg7RBcm5rH+cdO+QvnDNH85KzztlEe1bj7G/PP/zgbc82cv7Tn4R4+239a847T4g+fcTtt8u/ffq0EOLaa4Xo0kVurdO2rdjc/TLhdBrXY7JFR48KoSii7g+PiFathLjqKiHD82bNEmLFCiFWrxYCxIyW74hx42z4+yY4ixdfFALEmrmS8wcfhJ2fMUPUJSaJxpSZKdIdvUy0Z3HeeUL07WuKc7QbQBjK1571Kt1qcXa5hLjvPvs5f/65EPfcoz8OU+P8UaA9287ZjNQ4v/mmEP/7vw2Xc7Ds5vzEE/Vrz/HkPHCgRe35cns4x1HYUHV5G9Id1xJo7vuY/SPx+PxbTnTvu0+IhATDisYdOoROzppQIjwgzmOZ6kQ33vloF1xwh1CUVAGnVQfGDkc7AZfYM+isqBBiyRK55YeGZs780DvwXRViwztJN4iCac+Kmpoa4XC0EHCdPYsGJjgPHnypUJSOQua7yr89Pmm5/GHZMtGq1deqk3HLFjU6dxZi2jTN06+/XiFkvuE9IQy3j7vdv8dMWtpvhdwXtsp6G725PeLjjzUvmT59nvceFYTYeLpJphDTp4u6ujrhdLYWcJU9nE1o8OApQlE6h3AObgu2c87Ply9sDWlx/vZXfxfiyiuFEA2Yc1qL+HA21Z4jOTek9iwqKoRwuYTnv+8R2dlBuzlNny5Eixby59/+VtQlp4hEqsQLL1hkVzSaN08IEJvmSM4R74u6OiFatxYbc64WDkf029Ebav9+uS+o3vv5kkuE6NxZ/NfdHpGY6M1n3rpV5kX+8IOckIO4o+2HIi/PYvuEMM/5nnsjOfv2Bgvi/OKLFttnoj1rcm4h27Ofc2+bON97rxCJiaY4331XEOfly/3t2XbORrteaHEOlp2cKyuF+PZbuZWilrQ4T58uJ5g/c46tPav025ZzjqOimega5ej6VCqEWCyEKBJCnPB9YnQm/ywj+cKOFEX3svCc1lOk0oyTrCRX9XpLQ4O7dEGv7Oa8eYKvvvoMIc4HkgFITYWnH6xg2vAdXH+dQqNGvlDCQGhwZSXWVIVr1MgfIqalN974DlkNeljI8eF13zLYk4/L5cLjGQssBUTINZbkE6emQk6OLucNG9YgxCiCq1MfPeMNAyop4ejRc4BGwDLr7QMZ1qMTdjR79g9ALTKHWKqyEr5c6w2NEoLy8guB08B31ttoIl9u3rw1yErQgXDIykoY2cQNf/4zDoeDurpxyHsYmqdjiY0zZ0rOGhJCeDmPJJhzVWUdf733IJSXezk3Rj6LFtsHMGSIbk0ALc4/LNgh88zt5uzxQI8eshK9hrQ4Hz7dFEpK7Ods0G9rcfa359JS+zkbhaj/8APU1rKn3Sj27w/KWnjsMdi6Vf584YU4qk5zTYfv+Oc/LbLLp+XLIS1NVirX0po1kJrK+9v743TCRF9mTEmJDA12OGDcOHofWYbHI/jkE4ttbNcOxozR7reFkDaOHMnCTxXOO0/+L3H6tGwre/bAOedAo0Zc33YpK1fC8eMW29ihg3xHa8nHOWtkKOemTf39tq2czeQ5a3FuKtuz7Zx9775oOQ8fLhvsyJH2c27TRr8Srxbn6moZ1mo355QUeQ9atdK+Zs0aaNSI97YPCOX85ZfwzTf2c27WDIYNi55zeqDftp2zUSqCXnsuKQnhfHWH763n3EBldqK7XFGUZxRFOUdRlEG+j62W/SzDyYVP4RPXOhIoIYOM5k5SU0PPWZrrJYTMWdBJ3r/vvkMIsQsI5PFWVsKu3/8NunWDykrKy8cDZ4BvQr5ryaBuzx748EMoL9e8pKwsHzkoTgw5fry2qf9F3KzZWOAwsD3kGksWDR58ENav1zx98OBB6uoOA0NDjpf4tkcpLaVDhwQgl/CBsSX2CWHYwR49mu/9KdTGFWWDZDWE2lqys/OQXU7oZNwSG03kAJWX5wODgNC6/+sPBrbvat58LHIrqULrbSwqkkU5NCQ5HyH8HrZnH2sOtoMPPwzibMM9FALeeiswkVGRFud9ZU1lAaHKSns5Dxkic/POOUfzEi3OJ2rT/c+JrZwNJpFanI/Sio+ZAi1a2M+5tFR/wJQvOX9VKm3076rSrJnMhQfIywOHg2ltlrF6tawdZZmKi2Vunt62evn5MGgQy1a6GDZMmgbAuHGy8ArA2LG4ThQxrnUhS5ZYaB/ILdc++0z7/IEDcPQopd2H8uOPQfewaaDfJjERcnPpe2wZQshaOJZq2TL4wx+0z2txbhpoz8GcV62ShyyTmdxNLc7jx0M/WdySsWNxnSxibCsbOBtNLoI4//RT0D1MSZG5+omJ9nIWQs6o9HKItTj/5S9yknz6tL2cd+yAOXP0q0h5OS9f6QzlnJ4eWBCxk/M998CqVdrntTj7no2SEvs517ff7tNHrhzU1trLuYHK7ER3ODAEeAL4s/fzJ7uM+llemaxo/PjjoeOBRM7wJ9d9vPurpf73vU9CwNy5FhVeqayUFa50bDx40Le3ceigbk9JoHPIzh6NHJTaMElbsQKmTtVcWvN4PCjKugj7AM4kBwbGs2eP8R4NDDxTU+W9t1v5+eqTC/9Et6SExx+HhISxyCyDQ9ba5/HAs8/KygsaSk0tQFazbR1qe4epsjhPQgJPPpmOwzGEYM6W2WjgGaipqUFRNhDutQeY2ewt+OtfAXjwQRs5Gyxcmec8Bsn5oLX2nToFN9wAn36qeUlqaj5qnP2FV0pK7OVsID3OVcmBhStbOd94Izz0kOZpLc6HacudHT6GUaPs52zQb5OfD+3asXxra9q1CwqI2bAB7r9fTkTT02HIEIaUL6O6Wm6zbZmMCsPU1MCGDdQNGca6dTBiRNA5nzcSpMcVuLXjUpYuleM8y/SnP8HDD2uf93LekCA5+20MHhh7bUzZu43e6Qf54gsL7TOj/HzIzo7kHOylspNzv37wwgvS86wmPc4vvAD33Sd/tpOzkcPBy3m9K4xzdbWMgPBNnuzibLY963H2Lc7ZxXnVKllIqVijhq2P8+Ch6u3Z11bOPx+wibORtDgHtxWwj7PHA6++Cpdeqm+jGudrr4VPPpGLIV7OQ8uXWs+5gcrURFcIcb7KZ4zxN39WTDJRARVg2rTQXVWy2rv4r9qnGZe0SnXB2bKwYBNhR+npBcjHbEDI8YQWgc7hyScb43CM4GxMgLZv344QFbhcoYPO1FRo3zfQwd51V2datOiA0xmwUc/ZEJV+/WuYNUvzdH5+Pk6nC6cz9B7WpKTz1X1fwZVXMm0aPPxw6ODdxznmRQ2nE2bMgHPP1bwkLS0fpzPyHgYznDYNJk8eA6wFylEUC20s81bQ1WgvbrcbIapISIi08a7OH8sXCDBzZntateqK0xmYAFnG2WDhSotzbUoT+UNpaRjn5YCF99CEd6VxY3XOk64NeKkk57HYwnn+fLkireE+1ONcfv9T8PzzgM2cJ0yA66/XPK3FObi9xIWz0cB46FDWrJHRfH5t3w5PPgmHD8t/jx1L0+1raJ5UYe2gzujd4nZDVRX7Wg6lqirMxmAPUPv20LUrubXLKC013mknKpnxrrhcfHV8AAkJQRkBTQLtGZDbCAK/6bGcJUvkYrQlOnJE3hj/1nkaNqpxnjQJvvgiUMXeLs5dusBvf6tdLV+Pc7B8nOts4Gy0LY4WZ4dDDsyWefsYuzib9YqrcQ6OLvDa2BDa8/DhQefSAw4HXyi+LZyvvx7uukv7vBbn9HT4+GO5owLYx9nphFtukVFNejaqcQ6XXZwbqExNdBVFSVcU5VlFUQq8nz8rimI8A/tZsenrrzFTR33+fPjjH+XPWVnw6BNOmTxQWqoZ/mtpXqROB9uhQwGKkgMEYqhTU+HyWwKr2tOmwaWXjkNu0Sxrsls2qPPZ6BtchMnnXbn44sDAuEMHOe9pP7abDD0CFEWhd+8x1NUtx5fXd+KERds1rV4t9xLUUH5+Pn379qFHjxQSE2X4eYcO8MprDsY9Oda/bDdrVn8aN26GwxEYvO/da4GNlZVQWKg5uSguLubo0R1Mnhx5D6dlrZD33ptrN2PGWKAWRVnlfwFYYuOMGbr7bupyDlrQALycVyBzUS3kbMKj269fX3r0SA7h/PJr3vbstTHAObDoYsk9NBiMnDx5kqKinaqcR13RSubOepfYZ8wYgy2cf/oJVq6E5GTV03qcJz44BAYFMm5s4+x2ByaCGjaqcX71VZj2UBd/rp1tnLOyJKebblI/f/Ik7NxJRe+h7NqlMuiEEG+kUlvLr3uvsjaU0DewTUtTP+/l/G2N5BxiY7BH12tjm+0rSFBqrbXRKOIqPx/69uWbdcn07x/0yDqdcg9Y34H+/SEjg/GupRw6JLtaS3TihLRBK6Zcj3N2Nlx4YWD1xy7Oe/fCpk3a5/U433OPDMn0acwY2trBecUKWLxY30Y1zi6XfxwG2MfZaBL5/709t28fuhBiF+d162R4spb02vOUKdCxo/y3XZzLy+XMvqxM/bwe51WroG3bwMqAXZwbqMyGLv8DKAd+4f2UAW/YZdTP8iohQbtj8Gr+fDnw8fVTBw8Kbr75OW6t9lB5/Lhm+K8lYcGpqTJMr1s31dNCCA4dKmDQoMAKlG9AN+ay0HCPu+4aCwgcjhX+ay0Z1JWWynvodKqezs/Pp1GjRqSn96R5cxkdsmeP9Kjw5JPw+ef+awsLxwLFwAb/MUu84zoDJiEEBQUFDBkylP374Ze/DLPx00/9sScOhwOP53w8ntCiWTHbuH69HFCsXq16uqBAhqcPGyZfUsuXB9mXnCw7aO8Deu655wKJCBEaph6zjYoin0eNQhL5+fk0a9aMtLTOZGaG3cOmoRPdzZvHILu4ddbZB/JleOGFqqcMOQd5qWzjbOAZ0OV83nkyd9abM2cb55ISuXCi0541ORcWErx5oG2cx48PDbEJkiHn6mpZSAkbOYO8f1o5fV7OhSkak0gIPCvnnguJiVzWZCnbtllYLGvAAJg+XZMz+fnQrBlf7ZKcfWNMv41B7ZkxY1DKy7i+9zprvRd6C1ceDxQU4BkylPx8Fe/Kli1w773yZ4cDzj+fznskZ8tsNFqI1uNcWgoffAD798t/B3HeujVwOGY99xyMHq19Xo9zba0cJPhkF2eQk1Y1BXEuKFDhHBxdYBfntDTpFe/ZU/18PduzpZwN+u1wziGR7M89F5o7O3bsWW3PqpyXL4fvv5c/28V582YZL+37O+HS45yQIBdffZv72sW5gcrsRLeLEOJhIcQu7+cPQGc7DftZyDAKvZVE5IAnkExeDUyjpuZu/nHmFBd+9hn3318cUZAKZJ2PmD0XnTrJAgOD1OuS7d+/n+PHj9Ojh5zo/vhj0ICuSxeZY9OrFwDDhg1DURrh8YRm71syMNbxoi1enE9t7WDmzHFy6hS6m2ifOHG+96fQpIaYB3c6IXA7d+6kuLiY998fSnk5LFgQxm3WLPjf//X/s7LyfGAfsDfk98Rko0Goo8+L9sc/Ss433BBkY9iKcWpqKjACWBnxe2Ky8R//gEcf1Ty9ZEk+lZVDmDtXoaIijHN6uvR6eAtFHT/u4xxqY8ycn3hCrtyoaMeOHZSUlPDeexqc//AHmWfjVWXlecB+LOVs4BnQ5Rwm2zgbeMV1Of/zn7LzsZuzTns25BzmjbSF84YN8JvfaI9uvJyXlQ3B4YDBg8Psg8CzkpoKI0bQ+4S8h19+GYNdwbr0Uvjb37TP5+fDkCGsWaswfHjY+taUKbKt+UIJvHHL418AACAASURBVHl9V7VZSX5+6Bw4Jul5dHfsgNJSDmcNpaIibNCppvPPx3VoP2O77LXuHhqFqPs4lw6O5HzokCwi+I23QKRdnI3Ss/Q4N20qBzK+RE27OP/qVzI0VU1GnMOjC+zg3L69HEv5CnOFS49zp05yQb9rV/lvuzibyXPW4hyu884DGlh7/t3vAmGVYA9no4UrPc7hnnu7ODdQmZ3onlYUxb+fhKIoI5H7R/wsu1RTIyviFRToXhY64HkDeAd4lP+hB2uLi1m58ne8+io0bx76PUvC9HSqLUPAA/TRR3JgPG5c0N/LzJSrkN4l2sTERO/2OZGZ8TEN6h5+WPMlNXduDTt3buDMGbkCVlUVdk8+/lgu3XkLKHTo0BboQvjAOCbveE2NnGRpdF5/+Yu8h6XeKnoR3IJXjIE2bXxbSlloo0EH+9FHBShKN8rK5Eti//4gG8NXjIH09FzgB6Q3zSIbFy6E999XPfXGG1Xs2+emqkrew9Onw+6hz0ZvSFCHDi2BnoQ/izHZJ4QsGKIhQ8633CK3yfKqTZs8708W2jh6tOxvgsMBg6TLuaREDkCCGKSn5yE5h1Y8j/lZ1BiMGHL2Pb92cjZsz3IwYr4928B561Z45RXtcpsFBdCtG19vbEqfPtC4cdC58MIrAHl5pGz9gU4tylm+PAa7gnXmjHZyW1UVuN1U9RvKtm0qg87cXJnK4Bstt2wJPXsy+NTXeDwy8t0S5efDnXeqn/O++9YKFe8KwO9/LwfHPuVJzjd2/JrVq6VjP2YZhbQWFED37uqcwxc0vDZazlkvz9mIc/izaAfnmhp4/XXpTVOTEeew9mwL5+pq/V+kx7lVK1nQyzfR9dpoOeennkIzRtaI86JFMu/Vdx9byTQZyzlXVhpGP2hyDo8i8XK+oePKhtWe7e63G6jMTnSnAy8qirJHUZQ9wAvAb2yz6mcF4vANqi6HDnjeBHoDs3mzvZs77ryTBQsWkJd3IPSh9ypmb+krr8jQ1KIi1dNz5hQALk6fliuN+/YFDeqEkLk5QTkRTZvmAVuQ234EFNOgrmPHsKWtgGbN+hG5rVFg39CQe1JaKgcz3onu44+D05mHnETKSX7MRbNOn5aT6U6dVE+/9dYmZEXq3uo2hq0YP/10DtCM4IluzDYaeAY2bNiEEP1DjvltDF9JBKZPz0Pev2+ts1HHMzB79lagjuCCaCH3cPp06RXwrgY9/ji4XLnAau/3LLDvxAkZ/qbhpZo3bzOQAPRSt/HQIRnu6JXknIGlnNPSZFtp1Ej19MaNmxEitICS38akJBlCv3On/9z06blIzoFtw2K2sVMnzWIchpzDBu+2cDZoK4acVduzxZyNPAObNyMGDGDtWpUQvVat5ET+178OHMvNRamr45e9v2XZMouKr0yc6PfcRGjrVqir48eUAQihYuOpUzJM/XTQWnxuLs22rCY1qc5fGyhm9e4t99JV0+bNkJDAkv29aNpUJbtn2zb4NtD/kZMDGRmMFis5dcrvnIlN6elyGy7/Pi2RNmpyVum3beGs50Uz4qw2Gbeas5FX3IjzZ5+FpD/Zwvn112X/e+SIpo2anIWAXbtCx3B2cG7VSju0OoxzxCTy+HFZ0MsXduu10VLOVVWycnf37urnjTiHe+69nHPF19ZxjqXf1mgrlnNuoDJbdXmDkCPZfkA/IcRAIcRGe037D5eJQk/gm3wB7EBOHG4gNVXhkSdczJgxA4/HwwsvvGBPUarSUrnyrpFH/OWX64A+QKBwTMigbsgQePFF/7kZM3zeCwsHdQsWoLVcdfiwr0pAqAfLf0/COodp0+DWW3ORBbO2kJDgLSAzLQb7mjSRBQKuu071dFlZIdCD8D1+/TaGrRhff72DwYNH43J97T8ds406K4mVlZXU1u4i/B76bUxJgVtvDfESPvDAOTidLpKTJee2bS2wUcczcPiw2/tTTqR9IPNXgnKHpk2DX/0qFygFNlvD2XcP1VacgLIyN9AdTc733BO0+7vkPGjQaFwueQ8t4bxmjfwlKpEaAc45Eef27UMueCUmhjyLtnB+9lkZpq4iQ85hHiBbOBvkORtynjgxZBsvWzjrDd4rK2HXLkqyciguVlkjdDgic+HPOQdcLiakruTwYZmiErN8OX1qckvO+ZWSc4SNX30l+5vg/aBzc1FKS7mu/2ZrvBcnTsiUkaCFnQgbu3enYFMigwbJ2xaicE+fwwGjR5O9eyWKovnKik6TJ8vJdGZm5Dkjzikpsl8MHrwHcT50SLd+onnphbQace7ZU+ZPJCUFjlnN2WgcZsS5SZPQXHg7OMfSnkHex+eeC/zbDs7/+Id2Gp4RZ61JmpWc09LkvthXXaVt49luz7FwTk6Gq68OncjbwbmBymzV5ScURWkqhCgTQpQpipKhKMpjdhv3Hy0zW0AgBzzZ2eB0zgMUsrKmyYFQ0gd0fPppLrvsMl599VXatVOvvBhzGGFiomYF1KoqN3JtJFT79iEHSmHhHrNnDyExMYXExECYXsxbftx/P/z976qn0tPdyCbQI+S4/56orGrfd58MDR44cCU1NXJ+2rGjRfsSq8jlcqM2ufDbGB4yA1x7bS61tTvIyjrEmTOyan5MNk6eDK+9psp569atyEI5kRPd9u2RnF9/HS66yH+8UaNGDBkymNat5eD90CELKmzreAaaNClETiy6hhz338Pdu6VX1+32n5s1S3IeMMAizgbt2eUqRPMe+r4XPOgklHNVlQWc//lPGU6pkiBlinPwNhDYxFlHhpxVBkyWc27RAubNg1GjVE8bcv7tb+GRR0LOWc5Zr9/euhWEYGeytLF//8hLePhheOutwL8bNYLBg+l1THK2xMOil7tZWAiJiaw+0pWsrMi0HNXw6lzJ+YrMlWza5K/3VX/t2SPDlrVKqhYW4snpQ2Ghxj1Uac/k5uLcvYNxvQ9Z53XWkpfzjiQNzr72HPxusYPzk0/KMG41GXEePhzmzg31qlvN2WgcZsR54UJ/FfVgGy3lbKI9n3XOjz2mXQAliHO7dioBCBrRBWAhZyM1hPZ82WXwzjv15/zOO3D55YFjdnBuoDIbujxRCOF/yoQQxcAke0z6WYAssuByGXp0z5yBAwcEaWlvMW7cWA4caCdX+9evh9deY+aMGRQXFzN58j8jilJZEqbXtKnqwLi4uBg4RDSTtMTERLp1O5eamsBEN+ZcYp0JUPfuhShKN4I9ziH3RGVg3LFjR5o1a8fGjQEbY6oO/d13ssLohg0Rp06dOkVd3W5crtCBcYiN994bUQ051/sSOHx4FVVVMiQlJhv79ZPlYVXk9k4OXa5QziE2ChGRpNKiRS579qzFl+ofc4Vtj0eTc+fObhSlBzJkVMW+0lJ4+eWQJc3s7GwyMzuxaVMguiAmG3U8A6dOnaK2dpf+PfQNRoLii/K8eUCHD6/ypzTGZKNOezbFWWXRJTMzz1rOw4aFFv0IkiHnQYMIL5kpOXe0jnN6ulx97BxZq7GiooLa2t369xBkLrednOvqZCihmrycC05LG1XTtd9+O9I7k5dH8ua1dGl72jrvhd6emz16sN6dQN++KufVPEDZ2dCxI4NPSc5fR5aCiE56nr6KCti9m5Otczh9GnUbVdqzL6/vug6r+PZbGU0Zk2bP1g7/NsP5s89k/mawrOY8frz//1vVRj3OPgXfQ6s5V1XJ50ltn18znL//Xkah2MnZqK1gwFltkmY1Z70QdbPtOdjG9u2t5bxqlSyQ+sMPkefMcL7zTtU+ESzk3LOn9MqqyQxniIxPzs21lnMDldmJrlNRFH98iKIoKUCSzvU/K1bl5srJQW6u5iXz58uV/draPZSU7CIr67LAyaZNoa6OkQMG0LZtW44e/YhXX/VvC0uTJhaFY2pMxAu9K90Oh84kTaWDPXAgDyE249tPF2LIJRZCNzSqtNTN4MGBQad/L0vfPWnRQoZ3BIWbKorCmTN5eDwrsWTLj8OHYeNGTS+aEILx43VsbN/eX7napwEDBqAojb02BlRvG93uEG9nsAoLC0lMTGTw4K64XGF7gvpsPOccWUU1SGvX5gE1QKBUfkw543v2wF//qnqqpKSQ4cMDz2GEfWoDY6CyMtc6zjqega3eEMvx4w1srKsLKSAU4Bz6lq+3jQbt2ZDzsGERISJr1uQiOa+J3T4h5F6H4YMyv/kGnH05yGHh45ZyPnxYDpqC80O9MsX5uefkAqednJ95RjtnxetdWXmoK506aWSlqCxokJuLUl3NLTlrWLHCsE6hvoTQHxgXFuLp3YetWzUKzap5gLw2NitcSeNGIvZBnZ6nz8v5J693RdXGLl3ks3jmTODYgAHQuDG54mvOnNHeRcS0du2SYRRqKiyEpCRWHeqizXno0LB9XgjhvHx5jHl9QsgCRVrVv40479snw5bnzImw0TLOI0fKGh1qWyCZ4ZyeHtFvW87ZoK0YcjZoz5Zw1gtRN+LcvLmcuSWGpntYyrmoSLYXtW2kzHDu1k22l2B5OY9mpTWcCwpg7Vr1c2Y4jxkDl1wSesxKzg1YZie684GliqLcqijKrcCXwFz7zPpZgBxNatRZ9+2fK+sPyEHkggXnRFQYdZSVcdlll/H5559z2WWV7Nsnw/QtCYG78EK4+WbVUz4PUJcufUhM1BgYh4fMAKWlecgB56qQ4/XKJT51Sr5kVF4CVVVV7Nixg2HDZOc1d27Q1kc+tWsnc5zC9j49dSoXOILMi47RRp2cPt9iQadOfVAU+b8TYeOPP8pcsaDBv8vlQoiRWFbB+r//W1b9VZHb7aZnz56UlbmYNClsT1Cf0tIiOB87NhJQsHRrF5W2Ul5ezp49exg6VC4WvPWWin1qK8b4OB8DtsVuY+fOcruwtm0jTvnaSqdOOTgcckwUYaPK4D3A2aItfHQ8A6Y4z5sHTz8d8j1LOVdUaHruTXGuqZEh+GGV7E+dysMyzosXy8XJo0cjTpni7CsEZidnPbnd0KsXG9wubS+aSr/NyJGgKExotJJjx7Qjek2ptlZum6bmjSwvhz17ONYyh+pqDe+KxsIVeXkox45x7aBtsYfp6Xl0g3IOHQ5ZsypCt94qc+KDwxBdLhg5kuw9K3E4LAglNPKi9eypz3npUrmXbrCs5HzqlPTovvtu5DkznNPSpDNAxRtpGWc9meGs9ixazfnSS+H227VtNOKsNtG1krNOv22Kc3a2LAYVVLsAkJM0qzjr1Vbwcl5b2Ueb8+7dMg+5PGiHAS/n9lZxfvDB0Ert4TYacXY4Qgt6gUyxsYpzA5bZYlRPA48hS0X2Ah4VQqjHj/0sa7RwoZxcaMQ7hO6f+z2QQlVV38gKo6WlXHbZZZw+fZovvviC+fPlwlV1tQUhcDffLAckKnK73aSlpVFSks20aRoD41mz5P6gQWrffhgyWMCC7TR0Vt23bduGx+MhMVEOjHVDo8LUtq2FW/joFHpyu90kJSVx8GAXunVDdT9kNmyQYTNB1avlr8sFCoHjsduosxpbWFhIr159+PFH7W38wnM3ATp0aAr0x5J7eOwYXHNNRAg3wBZvpeLERJ3VWN/yZ9jL3lLOAwbIEDaVwjDhnFXz0s8/X87ewgr0WMpZZ2DsdruNOasowNne9myKs8MhO7tPPw05bClnHRtNcVbLL8Vizvfeqxn+jdtNXc8cfc5qoY5Nm0L//v58r5g8LAkJMqdv3LjIc17OP+px9oUrBW3HBYTk9W3bJp3v9ZbeVh9uNyQlsVKPs5Zyc3FuLWRMv+Oxe6n08pzdbuqM2vNLL8l87GCFcY5p8K53D81yDv49PlnJ+Z//lPsJq0RomOKssYhqKeerr4aZM9XPmeF8552yTwiWle1ZbxJphrOW4tmek5NZdbCzNue1a+XiVXh0Qm4uzi3uhtGe1RY0rGzPDVhmPboIIT4XQvze+/nCTqN+FtLr8MYboRX7ghS6kv89MARwBY5nZMiH+PRpcnNzycjI4KOPPmL27MD+6j7VOwSurExzb1C320337jkcO6ZoN7wxYyIGI088kYzDMYLggXG9c4lbtZJ5l1OnRpzyeUtff112sJdeqjHZHzkyojjM00/3AFpaY6PvJaASa7JkiRuPpxcffeTkwAEN+zQGxoEK1oHJX71t1JgAlZWVsW/fPj77rA91dTLNVdVGlQ42sLXLd0B1bPYVFUmvgEqYno/zK69IzhdfrGKj0yknoGEN4+mnu6AobbCkCnhFhfRgqOjLLwsRojcffeRk/36Ne9itm6yUFPac/O53vkmaBZw//li1onFZWRn79+835vz44xGpFpZy1hmMmOaclhbRVizlXFIiIwtUKgab4qzhjbSU88KF6vtdlJXB/v0czZScdT1ANTWRx3NzSfnhW7p3rI5twFRdLbcUUXu3eDmvOdUHl0tjxxKnE371q8hEtS5doE0bBldaMHj/9a/lirFaZejCQujdmw2bndr3MD9fLn6tWxd63Nt+ru+0mjVrNLsMc9JauIqGc/jA2Gujj3NM91DPK26Ws0p7tpTzxo3w4YehlZ2DbTTinJ4uPXvloXuJW8r58GH1X2CW8+TJMGVK5HGr2nObNtJGtfzSMM49ekReAsiourBoIbp2hdatreFcWir7bbWY38JCGeWix1krisRKzloRV2Y5q0XieG20pD03YJme6P6sOKu0VL5Eg7Y9CVZgJf8MsB4YEXr8ggtkbsmQISQkJHDxxRezcOFC9u6tjfxl1DMErmfP0P0UvRJCsG6dm8JCOdB48kmNQd3evXIriCBNmwaXXJILbABKcTrldr31yiV2uWRnqFJIYsECN5BARYXcEC1kj99g7d8vw1KCdN11CsOG5eJ0yg62ceMY8p2zs+WWImGc58+HzZsLqamR97CyUsM+jQ72/vuHkJCQTEqKtLFlyxhs1PDoPvusfEmVl0uv+PHjOjaGDUamTYPbb89FFilah8MhJ1D1sk9nAvT++24ghYoKuU+xJueiIulFCtJ11ykMH56H0/k1IGLj/MADqmHLkrOb6mp5DzU5V1bK3M+wkNjZs4dax7lVK9V9QU1zPnkyopjHtGnw29/mYQnnxETZVsLzBomCs8rgXXLOtYZzSYkcLIXtPzF/vlz8M+SskV9qKWetCZB30LnNZeBdee019T2E8vLg9Glu7PsDX3+tuQZqrPx8ufC0dGnkObcbUlJYub8TPXtGpu35tXlzyL7TgBzI5ubSbPPXNE2PMa+vUSO5p3PEPiPSxpoeOezapXMPPR45iQoPcR86FJKTyUVWAf/mG/Wvm9KoUTBiRORxH2enfBajicQBQjivWBEDZ708Z7Oc1SbjVnIuLVVtzz4bDTlfcIFcuAnfHNZKzoMHS69suMxyPnJEPYHUqvbsdELr1uqTyCDOvXrpcN62TX6CpSiQl2cN565dpUNEi3PPPvqcNRwOlnLW8uia5awWiQNyMm4F5wasnye6DVV6+TXIlXyZ3rMB6SkZobvCf/HFF1NSUkKrVmtUz9c7TE/FxpdeKqKi4gRVVXLAVFSkMah78035IgjzDtxxRx7gYezYb6iriyGXePt2WXgleDN0r776yrc/bcBjrurZ1ljVvu66XOrq9pKTsze2fOdbb5XVLcM0a1YpQuwnuGq1qn0aHWxSUhIjR46gZUs5MC4qimFrF41n8fnnI/chVrVx3DgZWhVW6eCBB+Rq5/DhX+PxyC0R63UPdTwDK1YUAr0J7uqiiWC44YZc6uoO0qfP7tg4a9xDyfkAhvdw3z75Qgob/Ps4Z2bK6IKYOD/+uJxMh8k056ZN5ZJ1WHuePVsWchkxYmVsnLt3l20lqGqyT6Y5a6xqX3+9RZw1+sRZs0oQ4iCG97B9e5nL7asa6JWlnLVSEbwDpu/Lc0hKkmM/VWnUjfAV7JmY+jUlJaqF5M1JL4zQ60XbuNmhn24ybZp6I8/NRTl4kF8M3R2bl+r992Vob7hKSuDgQQ4364MQBt4ViBx4JiXBiBFk7/4alyvGUMLXXoP/+q/I4z7OFX30OWu053DOGzfW0z4jj66Xs244669+BWPHRh63irPWOMwsZ4dDvb1YydmoPRtxfu01WTAyPNQviHNxcQycCwvhoYd8BWUiz5lpz1qLLlZxvv56eO+9yOM+zhk5+py1PLo+zntWxs7ZYIHSkHNurhxvhlecsopzA5bpia6iKCmK3LvBtBRFmaAoynZFUXYoinKfyvlcRVF+UBSlVlGUqWHn6hRF2eD9fBLN3/23kF48PvI9fscd4CtElZU1InSFv7wcfvELfz7auHHjcDqdjBjxuTXbDNXUyJGaio1/+IOvQq/BJE0jf+Wcc87B6UxgxYoYt/BZt07uYVdcHHHq9Gn1/WkjPNsaHaxvC59t21ZRW2tBvnOY9u/3eSNCw+8i7NPqYIGMjFz27l0PSPvrbd+CBXDjjRGHT550A6lAR30bJ0yQD1jYCz8zM5O2bXuRnx/j1i46ngG5l7MJzk88IYs9hMnHeevWlbFx1hiM7N/vm0SG2qjJWeVZzMjIZd8+GQEB9bSvpkZ6nVX2aTDNWcNGH+e1ay3awkdFpjlrrGpbxvmuu+S+0WEyzbltW5nLrTKisoRzdbXsjLW8aKmprNzXkZwc9QKkgIwRvOaayD4nMxN69Yo9r8+gMEx1txz27TPI59MZGIPM69u1K4ZiXvPny9CEcHkHnVsdJrwroBlK6Ny0gTGDS+0JJfRx3ttBn7Pv/peVhR4P41zvwfuwYbBokXpcchBn3QnQgw/KlI5wWcXZwItmyLm8XNZa+UIl288Kzmbas1nO4e3Fqva8cSM8+qh6ezTbnnXC6MECzlrycXYaRLloVXr32ujcuJ7zB5fF1p4XLVLf5tEs5ylTZOHS8IWXli2hZ09r8rEbqExNdBVFuRjpOvzc++8BRpNPRVGcwIvARORS+zWKooTXK9sH3ASo7SR9WggxwPu5ROX8v7eSkiArS/cSWddmDW3btuPAgbahYWwJCXLVefNmAJo2bcqIESM4ePBzXn01tO+OqliGTzqTi6Iik4M6jc4hNTUVl2sodXUxbqeh4Rk4deoUsJvwSSSoeLY1Oti+ffvicDSN3capU1XjD5s1i1wsULUvM1PmiqlMRL/5JhfwAN/W3z6Aiy5SHW0kJ0d60VRtrK2V8a4qeX1lZbl4PKuBQLxM1DYKIcNuwzgH9nI2wfm77+SLJEy9evXC4WhOXV2MWzVprMYGOIfaqPoc+n5PmCzhrDO5SE52Y4qzzmTcEs7/+If8oydOhByOivP8+fDOOxHX9e7d2xrO/ftHFkEiCs4gvWgVFRGHLeFcWSld1a1bR55zuyEnx9i7sn+/zIkP4wDIfRkLVtOre139B0xaHt3iYjh0iIMZ8h7q2qg1MO7dG5o3Z8hpCybjOhVavyvvQ6NG8larSmtyAXLw7vEwrdO3FBRo7qalr+PH5bvhzTfVbTTDedo0WeNC7f/TCs6ZmTBpUuTvD+OsOwGqq4vMfwXrOKenq7vIzHJ2uWStlfXrI89Zwdko/NsMZ4NFlwbRnrXyS3v3hmbNYuc8aRJcfnnkcS/nb8sMOGdmwqZNcgEwXD7OnWPgDLIgpVoSs1nOIIvbqsUm5+X5Of87FqQy69H9H2AYUAIghNgAdDL4zjBghxBilxCiGngXCMl4F0LsEUJsQr69f1awFiyI3IA6TIWF4HJtZtCgAZEnk5NlwkNQq5owYQIFBQWUlhZRXR249MSJengGdMKOGjd2A82A0MFUNAPjM2fygAIgdMAX1YqdxuDdV6HV6QydRKp6tkeOVM1zcjgceDyjiXnLj507I1fMgSFD3EAjIJCPqGqf0ylzxVRKMhcVjQBcETZGZV9ZmYwKUNkuJSnJjdOps0+yT4sWBV4EYaqoyAXKgdB4mahsnDZNhkW1ahVy2FegyJSNGi9SyzhrhLQOGVIINAYCjUPVPl97VrHREs464aJJSYXm7mGnTtJ7r5LnJDmXAaHPQFQ2Hj0qJ1m+LXi8iopz+/YRzwlYyHnJEtVBrWnOAM2aReSLg0WcmzaVNQfUPAOFhVR1yeHIERPeFdD2sJSVMa3fJlauVK9ZZSitRRcv5y0OExMgrXw0hwNGjyZj80patIjBG6kXRti4MSv3tKdvX/WUP0C257FjVfP2GTECXC7yFBnqr5JNYM6+48fVw2YLCzndtY8x5+bN5SRPzUVkBefNm2UBvPBQyjDOuoP3G2+URb3CZRXnuXNl5eVwRcM5bBzmlxWc9aIfzHI2WnQJ4hwe3RyTjdG058GD1R8EqzgfPqz+P2eWs8sl7VPrE7ycz4u1Pb/zDhw8qGqjKc4LF0qvllpOiRXtuQHL7ES3RggR3gqMthbOAoJrbR/wHjOrZEVRChRF+V5RlEvVLlAU5TbvNQXHjh2L4lf/e2jz5lo8nh/p1auX+gVNm4aE7U6cOBGAhx5aElEtP2rPQHq63Bpo4MCIU23aFKIoOcj9M6U0JxegGlrcsmUe0vvzbcjxqHKJi4ulZzx4r0ICA+Phw/v4xwERe/z6dN998Le/qf56ueXHj8g9detpo8aAqa6ukM6dc3B4e1ZN+wBefFH1ZdyhQyNgKDFtm/Ljj7KE7ZrQ3O4TJ05QWnqEvLzAYoGmjToD46wsC7d2CZNv39IRI3KMOWt5gICMjDxgJxD6konKxttvVw2xq61107lzb3OcNWy0hLOvDYYNRqLiPGqUXJzrFLkGGuAcwzZDGu05Ks5ffw1PPaX66zMycomZ869/LUOPw1RTEwXn9HTVPtESzlo6cQKOHGF/uknvCuiGEk5qvJKKisiiwqaUlxdchCIgL+dvSnJIT1etmxZqo8o99Nmo7NzJ5SMOsnx55DzLlLRCWt1uhJmcQ0WRhRhvuCHyXKNGMHQo2btXkpRUTy+V7/89/N3i5XygiYlt9Y4ckTUuduyIPGcF57fekpV4wyfjQZybNjXgHDbGCbcxZs5aSCHIGAAAIABJREFUioaz1rNoBeeMDPjzn2XRo2BFw9n3jKjZGMS5vLyenDX67XDOugGMf/iDXHRQU15e7JyLi7Xbc04OmzYrxt7SOXNU6634Oe/6uv6cf/oJrr02othjVJy1tuMCf55uTO25AcvsRLdQUZRrAaeiKN0URXme8BmI9eoghBgCXAv8RVGULuEXCCFeFUIMEUIMyVTZn/L/ta64Qj3sCOl57dAB1q/fjcdzhtJStR2skZ6BoM5r4MCBZGZmcuLE56qXR+UZyMyUBQbCWpYQgqKiQvr0MTEw7tdPevtUVmQff/xcwElMW/gUF6tWXHa73SQnJ+NwdOacc2THGLHHrwnddZdv8B5YoquXjc2aqdo4dGgOHg/89a8G9r3wggwlDFNga5d8oLL+9kGEjb7Fgm7d5MD4yBEdG33fVXmRPv10OxSlMzFxfuYZWWQhTIWFhaSlpSFENqNGGXBu1ky+ADyRwSV33x05GY/axl/+UubMq9g4bFgfPB54/nkDznPn+hLzQ9RgOOsowDmGe6jRVqLivHQp3H+/fZx1bDTNOazf9skSzmvWyK06tm8PNxAANya8KzrtmXbtoHNnehfJ9lwvD8u550pG4SoshLQ0Vu7Opl8/7ZpYgGxvb72lfs47eJ+auZL9+2VQTdQ6eVKVM4WFVHbuw8mTUe4JqmKjY10+5w2rrN891GjPUXE+dkzWuFDzAIVxrvdkXOMemuas029bwnn8eFmsScVG05w12rPPxpg4N28Od98dmeccDec+fWQEYfh2XGBNey4piZ2znqzgrPMsmub81FPak/GG0J71+u3sbOjUKbb23IBldqL7O2Sy4BlkPm0poFLPPEQHgeDSke0IXyrXkZAlKhFC7AJWAJGuw39X1dVJD92uXRGn5s+XYcZyUroVgLlze6uHHXfvLve+8crhcDB+/Hgcji9QixaPyjNQWir3LQ2L9z906BClpaW0aye9K6dO6QzqMjJkbkSLFhGnfvnLNLp0GUxSUmAC5PM6mw6x/utfVV/ShYWF9OrVC7fbadx5vfGGtE+lc7j//kEkJTUiMTFgY1T5zrW18j6GdV7Hjx/n6NGjNGlichP1Zs3kwCtM06bBnXfmAjXIvZbrcQ99vzfMRp8Xrbg4h8xM1WjQUPuCf1eYjaNG5eJwrML3TEZt4/ffR3icfTbm5OTgdptYjW3bVq7IqGx0N2tWf5KT00hMDEyAouLs8UivSNjvPnbsGEePHiUtzcRqLMiwYJWLLOE8bpzkE1bROCrORUWyE5kzR9VGyXklvmCgqG3UWbgyzTkjQ86EVdIF7rsvRs4a7bmoqIiioiLznO1sz3v2wJdfRuZpBXlXTLXnli214xhzc0las5K+feq55cfeveoVWr3elc1mOA8YIPcHVVP//pCWxtBY8vqOHo1cYSgqgqIi9pvlfM01qotfgBy819Qwrcv3bNyong6tK9/zE95eouUc/LtUbPRxrtfgXWuxIBrOOu05Zs61tTIVIXx/9mg5Z2drbhMZM+cTJ+SiVXhbjIZz8+byOdS6KNb2/PLLkQtrXhtNc54/X0YKqU3SrOBcVhb5LHo574ux3wb8nK/tsia29hxuY0Nqzw1YhhNdb1GpRUKI2UKIod7PA0KIKoOv5gPdFEXppChKInA1YKp6sqIoGYqiJHl/bgGMBLbof+vfSL7QApWXwOzZcnAjJW/JmTM91cOO//UvWcAlSBMmTMDjOU5SUmhsQtSegbfflrEmYVv3+DxAFRU5dOummjoakBDSRm/BrHBdfnketbVrcTj8/8PRVRpNSVFt+W63m44dcygpMdF5ORyyV1LpYF0uF927j6SmJjAwjirfubpahm6FebR991AIkx1sRobmivEDD4xEURT/nr8Q5T3UGDAVFhbSpEkTdu1qZzwR931Xw8abb87F4zmB07m1/jZqTIA6duxDWZmJxYLf/EbmLqrs9ed0OunRY1T9OZ88Cd26wd//HnI4wNlEuCjI3M8lS1RPxczZ4ZD3MGwjQ7fbbZ5zWprMoVWbpGAB5xEjZOXIMEXFWedlH3N71ui3o+as4wGyrD2rDZjS01m5M8v4HmZlyYne1Vern8/NhRMnuLr/VlavhjNnTNgVrJtuUp8Aut1UmOV89KjMSVObALlcMHIk6ZtW0qZNPb1Uyckhi8iA37uy2Szn8nJt99PIkaAo5CkrEUK1GLq+srJkqGP4+y8aziYGxj7O33xTD84aC1dRcdazMVbOWuOwaDl/+aUcL6kpVs7vvSe9ucePhx6PhrMQMtJFbTIKsbdnh0NzD13TnGtr5SKdHZyrq2UESHj4t4+zxyTnjAzttuLj7KgnZ9/7QG3hyixn33ftas8NWIYTXSFEHeBRFEV7rxv179UCdwBfIF2P7wkhChVFeURRlEsAFEUZqijKAeBK4BVFUXzlensBBYqibASWA08JIf5zJrpagxHCw4u3IB3lTUyHHV944YUoisJFF31OB2+dI0WRaZ5RhSPqTIAA9u/PMe4YFEUOljRCzPLy8qirq8HjCd3M3HQ+8TPPyJCcIJWUlHDgwAGWLJGd1yOPGAwQDV72+/fnIsRmIHDetH2pqbLAQNjg3XcP58+XNg4aZMJGDfvS09NJSBhQ/2qyGh3ssmVuqqr6UFCgsHatgX0pKbK4jjcPJFy+rV1islHFi3b8+HEWLpT38OGHY9vKZu/eXGQXFKgFEPU91JgAmeb83HMyB1RFMXNevBhmzYoIAVy+vDA6zsnJms9izJx//3u5DVSQouZs0J737cuLnbNGn2ia8w03yIUXFcXMWcvTV1iI6J2Du9CEd8VIXs6T01ZSVaUabGFsY7h9RUVw/Dh7G5scdK5dC5dcoj14z8tD2bKFKeceiz6v7/BhuS94eHE9L+eVJ/uQlaXurAyR3sA4PR0GDKDd7pWkptbDSzV6tHzImjePsFHk9DHHOSVF5lbqDYyRnE+fridnNS9aNJwHD5b5m+GLDj7FwllrHBYtZz3FylmvPZvlDDL6Icwp4lcY57Vro7RRLb82Ws56YbdeG+vNOTVVhqdPmhR63Mt51ckcc5z1QtS9nLN3nUXOKSmy5oxKcVVA1kYghvb8f+xdd3gU5fZ+Z9MLJARICEJCLyKhg1gQkBLaBREUiKAoeC0/vV57b4gFwcu1YAO8QhBQuqKA2GhKFRI6JITei0BI3/P748zszu7O7s58MxMD+j7PPkl2Z749mXfON+d83ykVGHpDly8CyJYkaYokSe8qr2AnEdG3RNSIiOoT0Vj5vReJaJH8+3oiqkVEMURUleQtLCJaQ0TNiaiF/HNKoO+54hDA0fUML94BXhPwE3Y8eTKHO6pQvXp1tG3bFkePLkFeHrd9JAJGjuTS6YZCWqOjfQoMLFy4DQ5HNeTlJWL5ch3jBXDSbrjhBvAt6rv8pcuxf+89YIlnPvJ//sPrJfn5PMEePx5kNySIYXzunG+erm75/GDevK0A4lBQwBU5g+7YBAqZAVBc3AnAr+DMA4MyDh/ORVNUPGdmEnbu3IriYt5xvnAhiHySxFb4dddpflyvXj1wnTpBnjUMpokTOaQnP59lDMrzrl2cu+hndj937ib5NwGe/ejz/PlbAcSjoCAZgA6eA+zcA0Bx8U0Q5vmHHzjUX1VW0jDPiox+7kXTPGtYL4Z5DrKqbUqfa9UCVq/m+0gFwzzfdhswerTfrzHF89mzPG9HRLjfIwK2bsX5lGtQUKAzt3TUKF5I1EK9esBVV6HpiV/gcPgNQggso58Qvawy5lkrndADOgxjABiUtBLHj/sNKtLGgQOsK4cO+coYH4+Ve5P1XcNAhjEA3HQTHL/9iq7XFxm/hlo5qwrPtZvp5zmQjGZ5/uIL38JwRnm+5hquFZKYqP25GZ4DhX8b4XnaNK654g9meFbsMC191suzJAW2IczyPHky8PPPnu+J6rM/GWUnTYjnsjJtfdm6FahSxZg+B7DDcNNNcKwV5HnUKE7RMsvzG28AnTtrf16vHlCzpotn77pXlzP0OrrzALwArtKxUfX6G3bA6eT8Wo3Je+xYJRzYCXZ0r/Yfdnz4MDcq98rfSE9Px2+//YZPPjnr0fPeUAichjEyYwawcuU2OJ08ef3xh07D2M+DNC4uDuHhLcGb+p7QlU+sERr1/vu+/WkD7oYEMYxTUtoDiAbwvXH5li7lSnheJe5Wrdoqy+euzhBQxtde02z/o6B69a4ACgGsNi5j7drcBkOFZ545Dt7B1nkNAQ5n3b9f8yNJkhAT0wXAD/DOHdclY0oKUN+zVt1HHxnkuayMQ8zy8vx8RVtwexgBnv04uoZ5TkhgpfKTG2mKZ43FgqefPgbDPAcwjN08L4cQzwkJwAsveLxlmOf27TkeuVs3zY9N8RwVxYs5XvP26tUGec7P55xuLeMLJnlOSPAN0Tt2DDhzBvuidaZKAGx0/fab9meSBHTpgvAVy3Hdtc5gXfJ8obXTJxvGK043Q5067gKifhEsTK9tWyA2FtdeYJ4NyRgg/Nt5dTNs36FzFy2IPqNLF6CwECMbrcbu3QaL7Iwa5dtzU4Tn339np14LZnm++mrAu2OEiue6dbUjXj3gdHIOrb/mpGZ4djg4/CI52UdGQzzn5nLNFTt41loUEuE5kJNmlucAC1e6eQ7m6JrhedkyICwMWL/eR0ZDPL/0knaFcgVdugAFBRjZeI1xnpOSgA4dPN8T4fn8eZ90QxckCejaFeErluPIISceCVaF6TKCLkeXiD7Xetkt3F8WHTvyDlPbtj4fZWRAdk4PAchHQsLV/ttUKJODVzlxztN14rnnvhdvM6RhjDz7LMHp3A7DhnGAVbCePXuAdy/cDzJd+cTFxcDFiz4ynjmTDe9+lkCA3ZCkJM518lP7/vXXI+BwdAFH6BuQD2CD+8IFj7ArIkJRUTYA3+U5vzLGxvqW7veQsQuAMDEZly7lHV0VDh1SQvY8ZQy4o3TbbZx75wcjRqQDOAXAvYyoW8ZVq4Dnn/d46+zZbADV4N3L2a+MQR6kr78ehpCQmwEsgVJMSbd8GiGtQjz70WcFb7xhgmeNcNHDh5VlcQM89+/vPzQKJnguLub/W72iDQGew8P5OvppiPj66+EICekKIZ537uQQPVXRMeZ5KwzxPGUK53T7uRdN8fzss767K/L2x6bSNDgc7H8ERaCwW4AjiU6dwt0tN2HTJo721YXiYr5+3oZxdjZQrRp+2VVD/+4K4F/G8HCga1fErFyCVi1JsyuIX2g5uvLuytlaaSgp0blb2rIlp+74S4br0gUIC0OXYubZsDPu/UwQ4TkpKXBFNoXnVr8b47mkBPjwQ1d4qIeMRng+cYKfzf5yYM3w3L49L0KrWyiK8Bxk3jbNs5auQECfA0UXqHjeuNEAz0VFrM/eu+JGeU5M5FQEfzv3ZvXZ6fRsLyTKs0ZhVRcUnos4ytAQzwsX8ksNEZ779PFfWwHgKuOnTiHp8BW0nQudjq4kSfskScr1ftkt3N/QBi/scAjuggVNA7epAHwe9u3bt0d8fDxOnTLRZmjUKI739zjvEIDzUDu6QccL4ug+9lg6gFJERbkrDOiqhOonLzIiIhtAc3jf+n53Q6pW5S1pP/mlGRnAHXekA9gL7sFpoBKqhsF06NAhAOegZRj7lTEri3PG/Dx9Ro2qhKZNr0dYmJtv3TKOHetjQVepojhAnkuIAXeUghjGL7/cHQAQEeGW0VDFWy+Ehys8e/Ys8CtjkB2gjAxg+PCeAPIA7AFg4Bq2acO7IqrFkoMHD4IXb3yXYUVlvOeeWHGeNQwmIZ7HjgWeeMLvx26e3U6aGX02zDMR5yL7sYRYnwV5Xr6cF3Pc1QLFeA4SduvNc2RkgJ68eiAbTD+ebI4mTYIUEFTLGMgw7s48p0vM8xLtR402pkzxrZicnY2yq5tj9x5Jq3W7L4IUwAPARl1eHoZfuwerV/v3Q3yglYt98CDwxx/YG8U8a3TM80X//lyjISZG+/NKlYDrr0eVtUvQsKHfW1YbWnnOIjx/+aX/EHXAzTOYYN08nznDvcW9q/KoeNZ1DYPt3APiPGvBi2dd92KwRRczPD/0EOfAqiGqz4GuoSjP/triZGUZ47lqVXb0unb1f4woz1oLVyI879jBDwo/xRhdPK9bapznCRO4RocadvCspN0sXer/mMsQekOX24I71bcDcCOAdwFk2iXUXx6ffMKrP35C13gRlItsNPHun6aGn4dAaGgoevTogZAQ966FGrpC4Pr25fYIKiQmKquzno5uwPHeeMP/aiyA6667DpGRlVBc7J5ZdVVCVWY5r1200NAshIR4Gp26dkP8cAEAzz/fEwAQGuqeHHSFgSsPAaVhO4BsefIyJOOhQ+xIBVhRuPPOdJSUZCEkxO0M65bRy2Bq1iwLkpQM3knTIR8Q1DBOTExEnTqtUVLivoa6eM7J4ZUf1S6V0+mEJG1FSIjnYkFAGSMi2OAM8BB44QVBnhs3ZoNEtXPv5tmAjD16cA5o7dp+DjDBs0b0gxDPQMBKIG6eDeqzhjEixLMkce7+Dz/4/aoXX+S6BoZ51sjpy5ILFhmSMZhhDGDEiJ4oKcnCqFHM8y23BJBLjYEDfcK/kZUF1KyJldur6jM6FRkDGUyJiUDr1qixZQlq1jRg1IWHA3ff7ekpOp3A1q04mZwGp1OnExkRwQsPI0b4P0auX9E/cqkrc0EX8vPdVcoVyDyvL0pDRIRv1LAwevYEsrIw5Kaj+OknjzWUwNDa6RPh+bvvWF/8QeE5a6kxnrWcC1Geg8zbwjy//z6H+auf/SqeIyM5wywoguWLA+I833wzMGCA53siPL/8sna/YAWiPF+4wCuZZnnWA1GeNewwhed1hQZ43rePiyX6SdECwDxv2WKcZ63wbxGeg+3cyzz/JR1dIjqteh0mookA/DSp+xumsX07Z4L7Ca/bvh0AclGpUiVUCxQqkZzMN63GOOnp6SgrO4rISN+s/YsXdexebNniE+vfrZuvoxvUMG7aFGjWzO/HYWFhkKRuKCvzdMqDhkQ3bszhUYMGud46cuQI8vPPokMHt9GZmqpjN6RpU+Cee/x+3KBBA4SG1kVpqefkEFTGM2d4lS8szPWWYhg3atQc4eFslweVUYdh3LMnO2llZZ5VEHTJ6DXB5udno2lTtyOu6xoGM4wBnDnTE06nZ5h6UPmOH+cykKrwv3379qGoKB8dOxqUsV077XYXMurVq4fQ0AbGec7N5dVeFdw8X6Of58REzgENsAUqzPOmTbx7o4IQzy+8ELQ8pRDPGrtowjwHuReFeT57lvU5NNT1lrKgYYhnHfqcLht18fHLUFhooIrn2rW+kR/Z2Shu0hwHDhgwOhs0CLjgAgDo2RPSr7/i1m5/YNkyno6D4uxZ1md1z+l9+4D8fOwKN7BbCrATEEjGevWABg1Qd/dSJCQAixfrHPepp/ifUfGs7K58f/QaNG/u+ZFfbNrEycaBYhhlfb7NKM9ahrEIz8EMY1lGwzxrObqiPAeTUZTnvXuB3bs97ScRnpOSOBXBu3e1GqI8r17Nu49qiPDcqpVv7r6GjIZ5btiQJ87bb3e/l5sLXLpknOc2bfxWowcgzvOZM6yHZvVZx7wtzLOfEHXDPOuww9CzJ7Bmjf+898sQekOXW6tebSVJug+AHur/hgj89AUF2AHlDhs5KCysjy++kDSPA8CT18aNnGviBcUgHjBgiU8HAl07LNde6xPSFBGxDbGxiVB2gHQZndu3c65OgFmzoCAdwAEAOz3eDxpiHRrq4UQqRmdSUnPExvJzJy9PR8hfoBYL4CI7paXpAH4EUKxfxvbtfaqrZmdnIyUlBSdPxmHECF78DCqjjgk2LS0NQBIA35ijgDJ6TbClpaXYvn07rrmGFwuWLtV5DRMS2HgtLvZ7yPnz6QDKwEWpDMinjC9DcSITE5sjLk7nNQT4qeOV6+sN5vkncDEgnTK+/DLQq5fHW9nZ2UhNTTXGc34+V/DcudPvIS1atADnqxrkGfB4mgvzHBHB0RRW81y1Koc6qoqOCfOsw3gX4lnDGMnKyjLOs46w27S0NCQlJeHAgaWIjQUWLQr03wSQsbQU2L4dx6qx0dmihc5xnnuOjexASE8HysqQUeMHnD+vs3fk6tUcobFd1U1Q5vm3fOZZaYsXFMuXB9+ZSE+H9PNP6Ne9EIsX+68X5APvxeOsLFBqKlZvjdNvdMbG8o5XIMOzRQsgKQlN9y8xxvPIkS6jGoA4zwkJvPIdQJ+Rng6UliIj+Uf9PGuFfys8X0ozxrMe412EZ60+vyqedV/DNm3YYfbTdQCAOM/dunnuuIvyvGcPkJkZ2HsV4VmBpLJTZTvMMM+lpf7DglUyGua5Uyf4VF6SeV6ztbIxXQHs0Wer5m29+lxWJthgvGJCb+jyBNXrDQCtAWh0dP8blkBrNRbseN57rxLukIuSknr6qyR7oWbNmkhLS8OxY99ptqALuHtRUAAUFmr2Ba1bl3dnf/1Vp9H5889swAaYHK66SmmR5BkvEzAkeuVK4P77PcZVDOOjR5ujRQu/G+a+0GEYV6/eC9yFy3P2Dyjj0KGce6FCVlYWGjVKw6lTBiYvHYaxw+FATEwvsAPk+TDzK6PCs+phv2fPHhQVFSE0lB0g3TL26cNtBgKEtaakdAQQD+BrffIBmuGi2dnZkCQJhw41Q4sWns9Ys0hM7A3gErwrgQeUUUOf1TzrNowLCoA77wwYk8WVjQ3yXFjI46qKjgnzrCNMT4jnxo252XeDBq63hHnWYRgL8azh6GZnZxvn+aqrOBWhTRu/hzgcDowYMQKpqbXQpw+wYEHgDSMA2vP2nj1AURG2G+VZDzp2BOLj0ebI14iO5sKzQaG105edDUgSlhrlWaO+gA969wYuXcKo+j/h1CmuaxcUb77pO252NgobpuH0aYO7K0Dge9HhAHr1Qsj3S/CPXiX6eAa4Ev/gwe6/RXnWE3bbsSMQF2cZz0sONkPLlgZ4fuqpgBFXAMR49rOLZphnPRDh2Up9/v57biUY6F4U4fnHH3nc06fd72VlifGsJ7pAhOeBAzXznA3zrCdf3AzP6kUXUZ579AAmTgzcaLhjR27XpNtArvjQ+5/cQ0Rd5Fd3IroX3ltXf8M6aE2wYMeTnVwngFwA9QI7pE4n7xr6ybHp1asXVq1ahf37tUMU/O5eaBQYICJs374dUVHNIEk6S52rxwgwObz1VgokqQUAd9W5qKggNsymTfDonQRg0aJshITUwm+/VUFWloEFAh2G8VtvdQO3GVrg8X7AMPDCQo8Jp7i4GDt27MTq1XzxXntNp4xVqvCkdPFiwMNGj+4PLnS1wvWeJPn2SXchPJwTwkeOdL2lLBbMm8cyduigU8aWLdkY8aqaqwZXNu4N4Bvwjh8j4DXUuBe/+SYLISH1sW5dDH7/3QDPL7wQNNnxzTe7AIiB+l4MKqOXPhcVFXnwPGaMThmVHKIg9+Lo0f+AIZ7PnOGdYlW/A2GedeizEM+FhT7L88I8JyTwTloACPH88cfA7NmuP4V5jo3lnO4giZ7jxo3DuHHjMHAgZ5GsWRNkXK2+oDLPq883R3IyR1nqws8/800RqEdGWBjQuzdCl3yDPullmD8/YKmDgDJS/fpYty3GmHOhxzDu0gWIiUGHYwsRFQXMnatj3K+/9ow5LCoCdu7EoSoGQzEVfQ4mY//+wLlzGN14hT6eS0u5jYjamBXlWeEhUGUfEZ4HDuR0DvXKUVYWqEEDrN8WbYznYcOAfv0CH6PiOTLSgDOutsNEeXY6uYjSxx8HPs4oz1qLBWZ5DvRsEeE5K4t3itVOkyjPenbuRXlW73CK8qynAB5gnOeICHeRCAWiPLdvz4VLA9hhCAvj+b1/f52DVnzodXTn6Hzvb1iBhg01y7y5Hc+jAIoA1Pd63wsOB7cp8tPbq1+/figtLUW1atqVBfzuXmgYIwcOHMDFixfx++/NQMRpt1YZxhkZwIABA8B9IzkvuKAgSCVUZTy5ZPyMGcCaNVkoK+PJ68IFAz2DdUywI0dGoW3bnnA4FkKdSxwwDLxVK4+CXhMm7ERZWSkKCniV7vhxnTKGhnLIkVcVbG+89lp3hIREQm28E3FHFM3vCAnhmvU13K1bZs7MBhCCwkLuf6i793J+PufeBXgIZGQA99/fH9x+xj37B7yGVatyGL2K5w0bslFaytfQEM9Hj7KMATByZCTat+8FSVoEdS/YgDJ6GUwTJuyE01mGS5cEeK5cOeiDdOzYHggNjYJunjUMJmGedTzshXh+4w1+OMvL36Z4nj2b+4MGgBDPNWvy3C1DmGeAnYBcfY0NevXiSxPUqHM62RCsV8/9XnY2EBKC7/KaGjM6i4pYVwL07wbAxtKpU7j3mjU4dsx/610Xzp7lVRl1q4/sbFysl4b8fIO7aHoM48hIoFcvhH23CL16OvU742rnYudOoKwM2RLzrKsVCeDW52Aydu8OREbiupML9fG8cydfvzkqE02U50GD+NkSrLrWgAHAyZMYfc2v+niOjQWaNPFILVLzbCiy4MQJrhkSCF48z5ung+cWLXh3S4Eozw4Hp5B51WnwgVGetcK/RXnWE10AGOc5iD4b4llAn3XxfMMNnqGHZvT5wgXfYn/eMMqzw8HGuDrHUJTnwkJOCzl/3sBJlz8COrqSJDWRJOlWAHGSJA1Uve4C4L9x598wh//9T7Okv9vxVFbR63m9r4EA1W47duyIGjVqoF69eT6lyQPuAGnsor3/PheiKinh0GUrDWMAePHFAQCcCAv7xvVewO84c4ZXzENCAADPPlsCoh1Qt+3R3TO4Rw+PXU1/+L//6w+n8zCAjR7v+/2es2c9HgATJvj2LdUto44wk5iYGISHdwc7QDoKe+3fzyGUquI1y5ZlAWgMwL0iqEvG7dt5ByhIXt/YsengHqGeO2l+v+OOOzhOXub5mWdiFwrJAAAgAElEQVQugWgP1O1cdF9DPQ9SAA891B9ERwFs0CejV879O+9kyb/ZI2N0dDTCwgzwrLFwJcxz/fqciuCd+O8FwzwrBUOs4FlXZREBnv/7X06ZkGGK5969ObdbBypV4ilq3rzAEWmoXZtDCeVWIQCArCw4GzXGlp0R9hjG6elAWBhuPLMQ4eE6jDqveRuXLgF79uBAZYO7K4qMOvQZ/fsDR49iVMsNOHwYWL9eh4wau+IrzjZH/frMh26MHq1ZQ8MDMTFA9+4I/24henSn4Dz72ekT4jksTJ++yDx3OrNAH8+LF3vucMo8768kwPPbbwfs3e2CF88bNgQ5ftIkDsNQoOK5QQODPAfrOw38uTwb1OdOZw3qs2Kf5OcDe/eK8dyli2c4vj8Y5dl74coMz7GxwWOxjfKck8OFeQ4f9pBRiOfsbN6FWrEi+LFXEIJZx40B9AUnVPVTvVoDGB3gvL9hA8aOVRZAlZX++vrauviZvBwOBwYMGICtW79FRkaBx2cBd4AaNuRQR1V88uTJvhWXdRl1OifYFi1aICQkFSUlnqHBAQ1j1eR14MAOcM6i5/Kcrp7Bgwfr6KkC9OnTB6xSC30+8/keIh8ZT5/eBF4/auhxqC4ZX3+dc8eCoKCgP7iwl+cKuOZ3bN7s05+3oGATAN9l2KAy6uS5cuXKAG6Gt5Om6zsAHDy4RT7PU0Zd1zAhgVc8CwoCHta7d28AIdDFM8AG3ahRrj/dPHv2LNAtow7j3RDPGgtXwjw3aMC5tEF2gAzz7JXnbIrn5cs5J7mwMOBhhngm4v7Bqr4bpnjWE3YL8G7bkiUY0SkPBw7ocNK8sWkTztZugdJSLtCvG3pCHQFenLj5ZkQsWYhuNxPmzAmywzJqFPDZZ+6/t2wBiLChpAXCwznAxJCMOvQZvXsDISHocn4hwsKAr74KcKzGvI1Nm4DISHy9q5GxawgA48dz6G0wDBgAHDiAUe22BOdZK/xblOezZ3nhKphhXLky0LWrfp6/+AIYN879t8zzxlIBnnXO2y6eL+jgWQtmeA7Wd1qBEZ6vvpo9TfW2qCjPenKxAeM8e+uKGZ4zMji/NBiM8Gy1Pk+cyAuewWCE5+xsNnLVXU7M8qxnAfAKQkBHl4gWEtFIAH2JaKTq9TARBYss/xsiyM9nI3H6dJ+PMjK4Pokk5QIIQUpKiulWGgMHDsSlS5ewYMEyn8/8OpE1anCBAVViwLlz28DVXj1zi4MadSkpHNIzcGDAwyRJQlnZAADLwEWfgnyH0+khX0LCWvk3zxL6unoGE3FISpASftWqVUNExI0AfJc5fb4nP5+NVNUEGxGxFryGFOZxqC4Zf/yRc8eCoFatfmC195RR8zu8VowPHz4M4DCADj6HBpVRr2EMICFhAIC9ADxbX2l+x113eRiKVaooPHvKqOsa6pQxISEBkZE3AZgLbydN83sGDPBo3RARsQ5AG3gXrtcl46xZXMo8CGrV6gvm2TPpUPM7ios5ssAKngHWkyBOJGCQZy9jxBTPOTm8UGclz5r6bIJnvbuRp08Dffqg74mpiIgIEkEzaxYvUioLV4cPA4cPY2sMX8NARWE15QP0yThgALB3L+6/IRv793MAhl+0aOGZG7aWeZ53uAPatg2cWuaDkSOBrVu51kAgJCQAN92EyMVz0SudMHNmgAIxBQVA9eqeSXHr1qGoeRvkHgg1dg0Bfrbo0BX07Qs4HOhxYW5wnr0XrszwDHBXhE2bgh9nhGfvAn1meNbrpMk8Ry2ei/SeQXi+eJGLwk2d6n7PDM969dkIz9WqcU0JpcWkGZ5r1+ZUhGC5zgDzvGcP7r9xa3CeIyKAunXdf8upQUI8A0xYsFhkIzwr87Z6UcgMz19/7dOmTxNGePZeuCqvefsKgt4c3VskSaosSVKYJEk/SJJ0UpKkO2yV7K+KM2e4FL2qL6ga+flAcnIO6tZNwf79YcGrGnfsGDARonPnzoiPj8fJk9oxKJpOZE4Ol7NTTTjh4Vuh3s1VENSoCwvjXB2t0s9eSEoaCM5N9nToHA6NiWLmTI8s/7S0dQCqAHBXbQ26G65gzhxeyQzQ1kXBkCG3AdgOYKvrPc0wcK/8mpKSEhBtgsPhabjrllHng/TNNxPhcHQGMAtq412zyI6XjOvkh5SQjHFxfCF0yDhmzC3gnbTZHu9ryrhzp0dFxyZN1kGSagGoaUw+gHMXu3TRVdZ06NDbAOwCkOV6T5Pn/Hxg2TLg5EkAzLPTaYLnhg05FzQImOcu4GsYhOfBg7nYTJ06AEzy7HSy9cI90ALCEM9ejq4png087HXz7LUoZJpnvYZxjRpA586IXDALfXoTZs0KsB53+DDXa4iJ4b9lnr8/3wEpKbpuKzfi4jhcNEiIOgA2xkNC0P3sbERFBTHqfvnF1X5EkZGuqoWl2TU90iV1oUYNDtNTwqAD4bbbgF278MANWThyJMAGZnQ0cOSIux1JSQmwaRP2Jwk6kcOGadbj8EFiItClCyIXzg7Os3dIq1medc7bGDgQcDj08ey9i7ZuHahWbSzNSjbOs4FFVDXPhw8H4PnMGeZZiSn14tmwjK1aeVSM9wsjPO/cCSxZ4rbDzPAcHh60j7wLCs9ndPA8dapnl4C1a108G9aV+fM5jF7deswfjPAMuO9Fszzr3bk3wrP3wpUV+qxHxisIeh3dHkR0HhzGnAf2Fp6wS6i/NLTyLmSUlnJtKaJc1FMXFAmEV1/lFVk/CAsLw4ABAyBJC+DdMxLw46hOnQp07uzKRSgqKkJZWRZ4N9IN3UbdJ58A33wT9LC3375BNm5nerxfVhY8H/j06bVo0KA9AJZZV49fBQYM43HjBkGSHGBHkqEZBh4ZCTzzjKuFyNatW1FcXIC0NHe+lmEZdciXkQGMHDkEwB4A7oI8mkV2zpxhI7FyZQDsAIWFhSEuriWio5l+3TKGhHCujg4ZH3ggEc2b3wyHw9NJ8yujSleOH1+LJk0Er2H37rwzrmPLbdy4WyFJIQjK89693M9Szt3Mzs5GSUkh0tLau1J5DMm4cqWu0ChDPHvBFM8OBz9Mreb5rrs4H1uGKZ4NGMa6efZaFDLNs56cPgVDhgB79uDB637HiRMB2h+ePct6qCSdrV0LhIVh1s6Wxo3OkBDeyhk+PPixiYkcvjx/Nvr/g/DllwHadY4e7blIsnYtzjRsj6IiASfy2DGuMZCXF/zYW28FQkLQ9cQsxMYaqOCdnQ0UFuI3Z3tERgq0nNFRXM4FvTxfey33A7eCZ4eD5229xrtenr0dXTM8693RBVw833xyFmJiOILar3zqsc3y/PbbPGnogczzA9dtDszz9Om8M6hMMGZ4BvimV7WY8wsXz7OC8+yNdetcPBt2ImU7RNe8qJfnmBiebzrIC5Jmeda7QAno51mxw6zU57/Yji6IKOgLwDb552QA6fLvW/ScW16vNm3a0BWBn34iAoh+/NHnox07+KNKlarTvffea9lXfv/99wSAwsO/Ijbj3K+qVYkyM71OuP9+omrVXH+uX79ePv9Lio0lkiSi1FSN8/yhfn2ioUN1Hdq792MEhBFw2kfW1FTVgXfcQTRtGhERXbhwgRwOB6Wnv0gA0YEDOuVSsHEjf8H8+boOj4zsTkB9Apz+5fPChx9+SACoVatcuv56g/IRET39NFFoKJHTGfTQ06dPExBKwBOBr6EXz126dKG0tLYEEP33vwIyLlhA9Pvvug6dOnUqASBgfWAZq1YleuABIiI6ceIEAaC+fd8igOjIEQEZDSAyMp2AOoF5/vFHfvOnn4iIaNKkSQSAWrbcRzfcIPClTz9NFBZmLc/vvUekmk/UPL/7roCM9esTDRum61DdPKtgmmdFnxcs0HX4n8Lz2rW65xs6fZooNJRK/v0ExcURjRjh5zgvfabOnanIDM9GMHUqEUC/TGCev/7az3EqfaYTJ4gAWmGWZ73XMT2dqE4dGn6Hk+LiiAoK/IzZrx8/jImIJk0iAmhAOeizbp69YZZnA/pMU6bo47laNb4fiVw8/9J3nBjPx47xs/7oUX3HyzzfkeGk+HiiwkKNY7z0Wc3zjTcalM8oFJ4ffbJ89dkOngcMIPrkE/7dLM+bNgnpc0CevWGWZxF9DsbzffdZy/OMGUS//ipwYsUCgA2k0z/Uu6P7tSRJO8EJRz9IklQdWtt/f8M8/OzozpgBdOoEABdw4cJJ/PGHzh3dzz7jXJMAfSO7dOmCGjVqoHnzGT6RaHp20T74gDPpi4vbISKCFxrz8nTuXAD6wz0AvPrqUHBRKd9Qa1eYtdPJS3i7dgEANm7cCKfTiZ9+4h2gG280sGKvyAfolrGwcCi4MrZn9WWPMPD8fL64ctjRzJnr4HBUx++/10F2tkH5AM4Zq149eEEOcO4h0BMcMuqZ7+Ih41tvcVsEAGVlZfj11w3YvZtXPt94Q0DG/v11L5Hecsst4FzlWT6fefB89qxrF229XNHh++/dYUeGZDx6lEOD/S7/eqKwcAg4wMWzJZHHNfTa6Zs5cy0cjkRs3pxqrJezgoQEXj7Pz9dxqE6eV6929QVlnte7eH79dUEZda4Y6+KZCDh40JXLaJrnhATedfaTHuINXTzfeCOHOsrVX03z3L4958LpQUIC0LMnQufOxuBbnZgzx0/3CPW8XVYGbNiA/cmCIXoAT/B33qnv2FtuAcLCcP3BWahWjRsL+EDRZ0VGmeflFzqgTh0gOdmgfEbz0YYMAfLy8GC7dfjjD2Chbw0yYN8+zsNT+m6uXQtKTMTiraliu2gG9Fk3z0ePutM5rOC5Rg0dPVpk6OEZ4EgXZede0efzgjwnJXFkgaoNXkCoeD53DliwQOMYbztMxbPQNczM5NorRnieMwuDbqXy02e9BfAA/fq8aBF3bwA8Qm7r1hXgWW+fWgV6eD53juVT4obN8pyQwKk7Ouww3Ty/+647bc4KnocN01el/AqCLkeXiJ4GcB2AtkRUAiAfwJXTTbgioUoVDnVUFbuYMYOdTU7z44rL8+fX02c8OZ1sgAWYHEJCQjBkyBBkZ3+LqCjf43yKUqnaK8yYAUyfvh5ANQCpukIjfWAgTK9169YIDW0IwNcZcUWcXrjA/7f8EPjoI55gi4rY0dXd+kiBQYOpdu1bAIQD8Cwo5pFLPHMmF5E4fBgzZgArV66F08mh1efPC1zDRx5hnr37RPlB1apDwFV5V3q87yFjpUquizp+/E4UFl5AYSFfw2PHBGTMzuYcPB2Ij49HVFQvMM+eySuuNZbiYnae5UZ3kyevBeBAURGHgxvmOSaGDbAjR3QdXrv2AHD7nQA8qwymGTOAVavWmePZ4L2oi2eVwcQ8XzTHswFHVxfP58/zfThpEgALeK5Thw2c227TdbgunkND2XKLjLSG55MnObdbj2EMsFF34AD+3XYlLl3i6cUHrVsDffrw7zt2ABcvYh21R1SUwX6WCk6dci0mBkV8PNCrF0Jmf4GRw0uxcKFGC15l3lYM2rVrQQ4HvtjVRtyJBPQbxgMGABERaL9rOlJTgU8/1TjGu3fpunU426A9SkolMRlFjPdgPN91F4e0AtbwvGqVny/SQJUqQHp6YJ4BXmiKj+ffZZ5n7motdg2dTl6sy8kJfizg5nl3AJ4TE7mHsOI8m+W5sJBrrxhZdDlwAI+2C8Cz2tG1gmcjYbd6eD5/3sMOw7p15ng2unClh+evvuLngVKgzyzPjz/O85hOO0wXz2Fh7loIVvC8d69Aef7LHIG2ewF0lX8O1Hrp3TYuj9cVE7qsgdRUdUjfPDnUb2PAUFgX5s3jE4OEjCrhx8DHPiGEAIcju9CmDVGvXirZriEgXXeYrg+GDCFq2FD34YMGjZFlzfGQT4mEon37+M3PPiMioujoWwmoqzs00gdOJ9HzzxOtWqXr8MxMopCQ2wlIIKDQ4zujo+WQ7rfe4jcuXqTatf8gQCLgVfFraBBTpuQTUJmA4T7XxSXju+8SffUVERFVrTpFvuY7y43nRx6ZL3/n1x7fGR6uHRYfGdmTgObmeA4JIXr2WV2HM8/DCIgn4JIOns/JPI8Rv4aKPm/erOtwXTy3bevSZ0t4nj6dQ8B0IijPubke+myaZ4PQxfPy5UQvvURUUmINz3PnGuKZ8vOJKlcm5/DhlJZG1Lp1kOMnTyYC6Jard1KnTgbkUsOgPtP8+UQAHfyQeX7zTa/PvXimnj2psDHz/N57AvIZ1Gci4tDN+Hh68yXmec8er89V+kznzhFJEv3SnXk+flxAxk2biJ55hsM69UAPz23bEvXuzb9bwbNRBOP5xAmiJ54gysriv3v2pMImaeXL89ChRPHx9MaLfnhWwwqeRfV5xIjAPMvz9mWjzzLP778vIJ/TSfTII0Q//KD/nGA8W63PRqGH57fe4mcq0Z/DcwUFDIQuB/4QeEX++ZnGa6reLymP15Xs6EqS2qB7WzYKz3o6n/7w88984vLlAQ9zOp3UrFkzCg9v52NAAvwccTkXq1cT/fYbEREBFwlwEPCCx/G6ZFPwwANECQm6Dz948CBJkoOAZ7WNTlUOXllZGQFJBAzz+Z8MyWgQTz21TOZplrZB/tRTrlwOYJF87A/i8u3YwbljGzfqPuXmm+8jIJKAs9oy1qvnytkBMgioRkBZufFcXFxMkpREQP+gTk1hYSEBMQTcZ47n6tWJ/vlP3Yc/88wPMneZ2jLm5RF9843M8wL52B/F5VP02cDDvtx5NoigPG/Y4NJny3j+5z8NJZoH5dlDny3gWanVYMSou+8+oshI+mQc87xhQ4Bjhw2j0oRqJKGM3njDgFxqGNRnKi4mSkoi6t+fOnXilMCyMtXn+fmcG3n4MCfUxcTQluuY5717BWU0qM/0ww9EAJ15L5NCQphWD6h4pgULiAB68Oofgy8sWIlgPNerR5SRwb9bwfP06e7x9CAYzyp9VnjefN395nm+7z79x8s8n37XD8/qHEsreBbV56go+vgtPzz//rvbca6I+mwHz0YRjGer9Xn3bnauddYiISI3z+POafNct661+myU5woKyxzdy+l1xTi6Dz5I1KGDx1ueO7r3E+8U6twh2LqVT5w1K+ihEydOJAAUGbnZx5jzcCRVSEpaIRt1iwI6IgFx5gzR+fMGTiCKiupLQDIBJb7fu2YNUUoK0a+/0rp162T5pgV1lgLi9Gmigwd1H84OdioB3bQN8pEjiWrWJCKi2Nh7CahEQJG4fAZ4VrBhwwb52kzSlrFSJaJ//YtKS0vJ4UggYIS5a/jiizxwSYnuU4AnCQgh4IivfEuXcpGGjRtp6dKlpLUraFjGpk2JBg7UfTjzXI+ALkEdr9jYUcS7qyZ4LijgKh6lpbpPcUdr+OG5Qwei55+3jufCQnbwPayewHDzfNRXvu++4z9Wr664PHvos8Jzsbh82dmG9ZnWrycCKH/8JIqOJrrrLq/Pk5KIXn6Z9a9KFdrRnnlW6ioZhoA+05NPEoWE0Jz3mefFi/0ct3QpEUBPNfuamjcXlI+I78MLF/QfX1bGjmKXLtS/P08v+fmqz8eMcT+fR42iskqVKQzF9OqrgvI5nfxsMfL8C8ZzbCzvfFVUnlX6rPD8ZLNvzPHctCnRrbfqP76sjB0Ifzzfcw/RNdfw71bwbFKfo6I0eFZgFc/HjhmvEOXF87ffqj5bt46oWTP+aRXPhYVEp07pPz4Yz6p5+0/necKH2jxXBH2ugLDc0QUQB+AdABvk1wQAcXq/pDxeV4yj26cPUatWHm9lZhJFRCgGUw8C2mo6nZo4c4YNOo0qzt44ffo0RUREUPfuD1JIiK+jCxA1SCliJc7LIyKiYcMmyIan20DVLZsJuHdNFvrIqP7uW255iTiM8KTHMYZl7NyZjJZDjot7RZZxr8d3h4QQHWrRm6hVK3I6nRQTcxUBt5qT7+RJPtHALpXT6aSwsBYEtCTvirJXJVziX15/nV58cZX8f3xpTsYPPuAT9VbHJKKaNXfK3/2azzVcfe//+I89e6hHj4eJdy3zzcn4xBNEr71m4ASi+PjXSCvcNySEaPlTy4hWriSn00nR0ckEDDInnwCY5zQCWvjwXLWq+7iKwfNY/zzv3Wsdz507k9EyuYF4Vusz8zzYnHxyhVJD5c2dTqK0NKIWLeih/3NSaCjR/v3yZ5fc+kwrVxIB9Mo1X1KTJkaugBfmz+dnixEnbedOIoBKXh1LtWuTZ2XT7dv52VJQQPTww+SMjKQYKZ9efNGEjCJ47TUigNZnMs+alU2dTqLkZNrbmnnOzhb8Lot4dnUSyM/n8d54w8Xzy2Z5FtDngDz/z63PlvHcuTMZLpM7Zox/nnuzPlvG8+nTRD16sMOnF4F4LizkMNY9e6zjWQQqnmvVCkDBww+TMyqKoqVL5ni+6SbD83a58mxGn1u2rLj6XAFhh6M7F8ArAOrJr5cAzNP7JeXxumIc3bZtuSy6FzIyFKOpAUVH326bcTxs2DCKi4vzMSRduxLYx79MmUKZmURRUb0JaOD+PFXAcN+9mx0M2XnWg5SUEgJqEdDZR0bFqMzMJHI42hLQ0ce4Nyzj7bcTNWhg6JT33jtCQDjxLrynjEPD59Cq+6bT2LG/y8bzZ67PPPKN9aKszHieEhHdc8+n8vd/7yFfw7B9RACtGT2FQkOfJm5Tc87cNZwzh0/Wm6dECoc9iMPPCzxkfC6M82tmfvIHSVI9AvqY51kAH3xwjIAIAkb78LzR0YYOp6XTmDEb5ev8P3M8E7EhvnChoVPcPC/zkE/Jg83MpArLc9vIbNo49G36Ykq+dTzffrvhPCVjPH/+p+gzffopEUDHM5dRaCjRww/L7yt1C6ZMIXrqKXKGhlIVxzl65hmDclmBHj2IkpLo/fHMs6v0gZIvd/48Ub16tD+Ned60ycR3ffONRvJgEBw7xivLo0fT9ddzcFBxsdcxcnrMuGs+pwYN9HUT0YRFPP/rX/L7ly5xfvymTdbxLKDPRFS+PN9+O1GjRsbOCcRzmzZsh1nFsyj88azkv1qpz7m5RK+8Yrz/oszze2978azA6SSqW5f2p/UlwFhUrw9uu814fmkgnhcv5jokFUSfj834XpvnqVP/fH2uYLDD0d2s570/83XFOLq1axPdeafP28OGEV11VQmFhobSMyJ3uU7NXbGCQ5ETEj7SdHQ74DcigH587BuKiiogIIqAhzwcTMOQV6qMrHZmZhKFhb0jG5W/esj4L/yHvo0eSLVqHSWtXSKhojUPP8yhvAbRufMo4h2oYz7XMjWVKC5OKax1zLyMyckccmUAhYWFJEnJ5B1i3RbriAC6q/o3xMXGupiX78QJjiwwEkpI6vxIz3tyPB6lfCmaaiZvJ63QXOHiRAJPOc6DDSfvEOsDqEVfxdwp7+5LBBw3L2ONGiZ4vtnj+5tjC62NuIH61NhgHc8C+kyk5tm3IF5qKlHNmjus4/nhh4kqVzZ8mj+ec1HHi+cT5mVcsoQoJ8fYOYWFPA/cfDPdeSdRVBTbefQbz9v0zTdE11xDR5owz2vXCshlFnLeXOF7H1O1au56OvToo/wQkRvGv3f1JEpNNelcPPSQEM90331E4eH0/bQjLjuTiNj5GT+e6JVXyClJlBx6gh5/3IR8REL67M1zdLRG8RyreBbUZ788P/209Txv2EC0YoXx8/75T22ea9ViO8xKnkXgj+dff7Ven83y/O7HVLWqiuc332QnePt25rnZh9boc1yc8fP88aygouhzt26ePG/YQBQaai3PR48SLVrExbcuY9jh6P4K4AbV39cD+FXvl5TH64pwdJ1O3mJ54gmfjxo1IurefR8BoMmTJxsbt0sXon/8Q6cITmrTpg0lJzcm74I0AFE/LCQCqG+N9cS7QyBgsTmDbvduPnnaNEOnTZ58gThf+R8eMk5HBuWiDgFKBVnPnGOhwjpjx/LJly4ZOm3Xrl2y4asunOWkNGymSjhLQBsCfAuACcnYuzfRv/9t+DTgLfk6bfCQIRKXKBTb5M8mmJdPEE6nU75GDQgo9eA5B3UJeF2Wcb95Gd97j70Dgzzv3buXuCjbUx48FyKc3sATxOHhHazhuUULor59DZ8GjPPhWdHnZq5q7hbwLKjPzHNbH54bYDelIM9anidO5Lw+n626wNDmmUhCGUUgX+b5Wmt4FsW4cUQA5c3dQGFhvNlFC5lnpWr369UmUJMmhtKofbF/Pye9GV3ddDo5cqlBAxr/FvM8Zw5x2FLduhxeDVBt7KcXXjAhH5ErDJkKCoydt3cvkcNBziefonbtuNbRyROq53PLlpRX81qSJAs2RgT12ZvnIUOIFxM3bybats06nvfu5W2wb74xdp6K57ffVPFMxIa9lTyLYs+e8uO5d2/ekTQKLZ7lwkmW6rPgvK3F89y55NZn2XaqhQN/nj7743nVKvYoreS5c2exUC050sGDZyImVQ4Rt4TnKwR2OLotAWwBkAdgP4DfAbTQcV46gF0A9gJ4WuPzTgA2gRsoDvL67E4Ae+TXncG+qyI7upmZ7ABKUpDQ3qIiorvv5slLdW7t2sxUTMxyAkA/6si39UDPnkTt2uk+/IsvviB/BV9G4RPXpAU8ShzKd9GcQffHH3zy228bPjUu7iVZ1nUuGRaiL61Ge+IWJI3IOy9RyBmXQ0to3z7Dp0ZHDyKuFLuPAKIwFBIBdAtGy7J/4HOd7Wwt5A1ubxRPwE3ku7gxUub4kHn5yso4B89AZWgF1avPla/Vey4Z7sIUeh5PEpBIQFdrrqEpnocQEE1K2yuF5wEYRVo70sIy9uhhSJ8VuHnu5OK5O7hISDQGW8ezCX3W4nkObqEf0E7m+WZrrqEJREff7sGz+7XYWp7XrjUcok5EfP3j44k6daIxrzDPC97ezbsMQ4ZQSVgkJeOwYb9F83sEeVbarZROfI9ateI6WadvuoWoXTtyJibS+ribKTGRv8IUFH02kBbjwu23E0VH027ZP4IAACAASURBVI5vcygsjChjcKH8EBxFBNADIR9pBV8Zh6A+a/L8AOszDR5sHc9moMXzaSK6cMFano8c4WeLyC6VN89DSzni46WXKhbPN91Er74s83z/Eut5tkufq1d38Wyw5qgvFH12FR8wgPLSZ1GcO+fL8wL5s7vuso7nsjIO2RZORK4YsK3qMoDKACrrPDYEQI6c0xsuO8pXex1TB0AagGlqRxdAAoBc+WcV+fcqgb6vojq6mZkchqA2evSG+Pqe+wkBoIkTDSr5iBG8IqsTxcXFVKtWLYqI6OTjJN6LD4kACkchAVcT0N28Qed0EkVGkkjMyMcfnyVJqkkcdsk9a6/DKroXnWWjc4bQtffBzp2c+3TmjOFTJ07MIyBWvlZ8Pf8PEykODYkrMxdZI6MgMjOJwsMny9frQ9lJK6J+eIt49+rfHvJJkqB8JniePt1JDkdPUi8Y8OsNWe411lzDRYt4ALl9lhH8978HiKtnd3Xx/ADepcqoT9zH2SKeDeqzAk+eOfw3EpfobfSxnufx44P0t9GGFs/NkE3puJG00hTKW1eItHnujOUUgaut5Xn4cCGeicjVb7H0vUnUogXbT4ve3klOh4Pej3yUune3IN/QhD6T08kLsDExtG3xPgoNJWoblU0H6txIBFAH/EqffGJSPiK3PovE+h04wOkqXbvSSy8q8/Z/KT+5Ph2OrEuVI4vo0CELZJw7190n0yi8eY68RIvQx1qezUCL5xoH6EDn4fbwvG6d8XO1eH7QSflNWtHhyLoUF2URz1bo8/sfUlqaTTxfDvq8dSvvcBupvKwgiD5bxrMZePMcU0SL2r/KPEdYyHNEhBjPFQh27OjGA3hYrrz8rvIKck5HAEtVfz8D4Bk/x/7Py9EdCuBj1d8fAxga6PsqqqPr2RooiENYWupxF/ue+xQBYZSSor+1CBFxCE5EhCENeffddwkARUR85yFDCEqoOTbLRqhnqKOwYUzE/+yoUUKnPvbYN7IsTxDgpAicI6CJ7IiXeshf3kaxgjvv/ECW8UVKRi7xLi4ImOpzbwjLOHkyUfv2QjPh9OlO4jzdWAK+p9rYTEAv2eE47iOjMFJT+YEvgIkT98vydSTgIAFbCKhC3sWJTF3DtWt5gEWLhE4fOfIjmdenyYGLBEwk7+JEpmV84gmimBgLeF5mH88m4M1zZayQee5r3TXcu5dLhBqNjpGh5rkm9trD8+OPG563XXA6ibp1I4qNpSOfL6NurU/TYvSiC4ihVlcdp+3bBWXyhgl9pv37uXVGx4707ScH6YbKv9MZxNMi9KV+/Qx10PIPRZ9Ft0E++ogNzyeepkcH7KWHMZEIoLtDP6cPP7RAPrPw5rn6Znt4HjmShMvl5uV58owV9vH89ddi56t5vj/fHp6t0OdKlZjnliddPLe86oS1+jxihNi55cGzWZSHPk+bRtS1qzU8q/TZUp5TUsTn7QoCOxzdNbKTO1IOKb4zWDgxgEEAJqv+Hg7gfT/Heju6jwN4XvX3CwAe1zjvXsgtj1JEV8pshiRpO7qaBtCXX3Lz6m3b/Jw7mICGxsODx4/nAQyE9RQVFVHdunUpJSWNtHJ1efcnhIA8awzjoiITJxPFxNwtG5o3USJi5d/ne8hmKsSxtJSTNwSX/MrKyuSQR1AYYuSfrUmzD7AoBHhW46qr8ohDvUGRCJWv4Xgf7k3J2L49h3AJolq1WcQF0KJJAigUsQRkWSdfXh4P8umnQqeXlZVRTMwI+dpVkn/eQN4LLqZkLCw0laSj5jkc4eS9YGWJjAcPuuYxEWjznF0heQ5FlKzP7a3l+e23Tekz5eVxcQeAnKGhRABtGj7BaFpyYJjUZ5o1i3Pio6PJKUlUEBVPW2dZGFJXUuLVONMgysrY8Adc4VWHa3egE0cttNovXCDaskX8GZiXx5VoKzLPM2e6eQaoIDTWWp4VfTZav0SBmueoKOa5VntrebZCnxWeY2Nlnt+xluezZ80lgHrzHFbJWp7LyrhAn0/lNQPnX048u/TZYp7btTOnzxUAdji6m/QOqDrHdkdX/brcdnSV56aHs/vee/zBsWN+zm1DQLpx42nFCs45MRh2q+TqJiRMdskwAHMpFeuJd4CGW2fUmcS0aWUUFvYhcQ5iMwI8d6JN7TYTcfEDwHCPVTV4N20OpaApTQGoOg4Hvh+MfwEPtGuX0OncLqqAgJfoZlSnT9E6+D1rFP36cfEVQWRmEkVG5lAkBtGTAN2DN63n+e67hXf6FBmBhRSPTtQZd1GoV7ucPyPc1ls+hWdgKAGbKjzPd+OtCqfPCs91cQ1NA6i6VyVm09dw2jRT+kxE/H++9BJXX2nd2oQwfjBuHBdRMYOcHK680rmzUMpAuWDhQi7oOG2a9ZVgLgeeTeozETHPgwbx/2r2nvGGos9jx5obZ+FComuu4bGs7jP644+8My4SdqtA4blDB6L//Mcy0SxFTg7vFj75pJyQbSEuB57/Kvr8J8MOR/ffAEYDSJbzZhMAJAQ55+/QZdLO0fXrHD7/PJHD4YrxyMzkSBf38fEUGvpAuRnJZWVl1KlTJwoPj6LIyC0EEO1AYxqEq4l3gbZaZ9TNns0tHUwgM5N7anrnFQv3K/VG5cpc3t4E7r+fqCm20z34lByq3R9Ler4uW8aDibRZkKFcwx1oTLMx2OM6WiLjqFFcft8EMjOJbozbQgTQIHxpPc8W4P77iV7Dc1QKh/U8791LNHo05ysJwq0rvq+KxHPthIs0BF9QA+yusPpsG89Ll5rWZxcaNyYaPNj8OHZhC+szffWV9WM/9xzR559bP65VsJLnH38kWr7c/DjesECfichenitXVjWONoHnnvOwwyokGjWyR58XLCB67DHrx7USVvG8dy/vQFvNs5X6bBfPVunznwgjjq4D+lAM4G1wm6GN8mtDkHPWA2goSVJdSZLCAQwBsEjn9y0F0EOSpCqSJFUB0EN+77JDRgbwySf+P9+/X/XH8eNAtWpASIjrLUlSfjsL4Bxuu60+MjIEBCkqAgoKDJ3icDgwe/ZsVKtWBZUqDUClSkvxLQ5gPnYC6A+gGQCgalX+H4XkUpCVBXz6KeB0Cg+RkQGcmrcCZ2uloWdyFiQJSE0Fpk8HJk0yIZuCpCTmyAQmTQKey2yK5amjQFIIUlOBzEzg1CmT10+RDzAlY0YGy3JVYgnyK9VwXUPLZHzhBWDlSlNDZGQAK76S/8ekGtbzTARcumRqiEmTgNu6nMAZRzXreb54kXVlxw7hIRSeT6e0xJgqE6znOSkJOHnStD4fOB2DvplDUZLasMLq84C+JTgaUst6nq+9Fti0CWjTxuRA4P9TmR+sRlER64wZKDzYIeOXXwKLF5sf54kngC5dzI/jDQvmbRe6dAFuvtn8ON6wQJ8B8NxVtSpQo4Y1cqmxfDnw1FPmxzl+HKhe3cMOswxEQGmp+XHs0uf164GJE83z/PPPQN26wObNlojlAQvmbQBA/frAkCHW82ylPkdEACkp5sfxxpNPAt99Z/24FRShOo97DEADIjqld2AiKpUk6f/ADmoIgKlEtE2SpFfBnvgiSZLaAZgPrqzcT5KkV4ioGRGdkSRpDNhZBoBXieiM7v+qgiEjA3juOS+nVoYkATNmyEaRavKaMQO4916gsFA5MgcAkJhYz7gAJ07wuO+/Dzz4oKFTa9SogXnz5qFfv364cCEdjwFoFNoAu0unIDUVGDvWAoMOYPnKyoDTp/khI4oDBxB/aCuW7IwAGlsglxoWTbAZTTYi49so4OqrLRBKheRk4LrrgJgY00NVOp6DkUQYKQU/1hCsmrRlHr5akQQ0smZIF7p2ZYPk559NDdOw0nGgWRKcWdaI5YJVD9KiIiQc2ILnxwzC88+bF8sDVunz/v3IqJWHjN0dgfBw6+QDgBtuABISTA/T7Ou3AHoTTqt1pXJloFUr8+MUFQHnztljGH/8MXDfffyMMcOznY6uVYbxrl3AGRvMEKv0uaQEWLaM75maNc3LpUaTJkD79kB+PlCpkvg4113Hq0B2oF07a8axy4k8eRKoVQt45x3DdpgHCguBP/6wT1esmLcPHQLy8oDoaMtEc8EqfV61CoiMBNq2NT+WGsnJQFqaNc+rLKuNBxkNG9ozbgWF3h3dvQAMb3EQ0bdE1IiI6hPRWPm9F4lokfz7eiKqRUQxRFSViJqpzp1KRA3k12dGv7uiYexY9e6sG0TsBAMA+vUD7r4bAL/nuamUCwCYPbu+8S+vWhVwOIQnhw4dOuDgwYOY/cEHmAZgx/uPg6gq8vIscnIB6x72l4PB9OCDwL/+ZX4cb1SvDqxeDfTqZc14WjesWezfD0yYABw9am6cxo2Bxx6z3qADWF+s4Nkug6laNebGrIwnTvBPu3QFMC/jnDlA586Go1F0YepUYPx4a8ayQ1cAYPJk0wsuKCsDXnyRr6PVqFKFf/4V5u3jx4HERPPjeMMqfT52DOjb15rda2/ccQewZo05J9durFwJfGaBqXj77cADD5gfxxtVqvBixF9h3r4c9Pmxx4BnnzU/jjcSE4EtW4B//MP6sa3C4cMchmnFdbwMoNfRzQewWZKkjyVJeld52SnYlYaMDP/RXfv38w4uRo0CHnkEAHDggPdRvKN79Ghd418eEsIPUxM3dUREBG5r3x7DATiSk4XH8QsrJ9jwcCAuzrxM3vj3vzmsxyzsDCO0Ajt3AoMHA9nZ1o+dlwc8/jiwfbu5cdq1YyclNtYSsTxgpWFsB8+hoab1GYC9xkjHjsAXX5hfiDh+nMO3Kle2Ri47cNddgfNTzODZZ4GZM82NER0NvPIK72BbDSvnbbt4vhz0+X//A2691dw4duqzVfjoI2D4cHvGnjWLny1mkZEB/POf5sfxxuUwb18O+vzAA8Brr5kfp6LbYdu28abF779bP/aePXyPb91q/dgVEHod3QUAxoLbDG1Uvf6GAaSm+v/s3nuBOZNOAGVlmDFDa4MgF0ASUlMFDXsrHvYtWgC5uRzaaTVq1OAwQpO5ka7Jy44dluuvB3r2NDcGkb0T7KBBwMiR5sbIyeGdNLNcaMGqB+mpUxxGZweSkoCzZ4HiYnPjrFvHu9d2IDWVd+rMwE6DqXZtYOhQ86HBdurz1Kmcp2WGZyLOAd21yzq51EhKcu/giOLCBb6OZvPutGCVPr/yChtfdvBcowZHNJWUiI9B5E4BsgMjRvDz1Qzs1OeDBzkcc8ECc+P8+iuwYoU1MnkjKYlDy83qc26uPREkgDV2WJs2fC92726NTGokJfFGwfnz5saxc97u2hUYONDcGIodZkeEBsCLOWajAvbtA5YsMW+HaMHKPOLLALpydInoc7sF+Stg7Fh2aLX8B+nSRQx6MAnzp7+Fe7Oe1LBJcuBw1MPYsYJfbsUEGxbGBQbsQOPGnBdiFk2acN6FHThxgos1dOokHsJ18SI/RO0ymP74g8NSzOByWDG+4w6+X9avD36sUSgynjjBOVWiMJPjFAxW/N9xcUDv3ub+R39wOjkHqkYNoJGJJGo7F4VKStioNcOz3fpsxbz91VfAPfew4VSnjiViuWCVPkdF8eKIHXj+eS6CZwalpZxaZFUeqDd27+bFu+uuEx/Dznk7NpYjfPbtMzeOnfpsxbx98SIvfo0bx8XHrIYV+uxw2PdsadyYc4DNOqitWllS/0ATZ8/yvdimjXg9kosX+f+06148csT8YsnlYIddJtC7o/s3LECgCsxJOAYAWPBbkp+NtFx07ChYcRng8Do5/1cYP/wAvPWWPTsDVuGZZ7hAih1Ys4ZzoHbvFh/D7vCyxMSKHRoVH88rxlbIaNc17NCBcxojIsTHOH6cx9i50zq5rMYNN3A+31VXWT+2JAHduvGuqRmUh2Fs5l60W5+tMIzt1ufHHgNatzY3zoQJwNy51sjkDSt2lcLCgNmzuUqrHXjlFfMhvXbzHBZmzb1o1y7a5aDPQ4eav4e++44XbuywwyTJGn155BHgP/8xP44WfvkFuOkmc1E0f/V5u0oVa/T5MsHfjm45IyNDO4S5ANEoQjiOQ+umLgZwEDffLFBxWf3Fo0eLnw8AX3/NuREOm26bBx8E3nzT3Bhm21wEgtIS4dgxc2N8+609LSCU8Y8dM3cdjh/nHeuoKOvkUiBJPHGbuYaAvQ5Qy5ZseJpZNd+7FxgzhnOS7cCsWcCAAeZ4tlNXrOL544+Bl1+2RCQfWKHPdhtMl4M+jx/PhqcZTJjA86IdyMsDbrsN+O038THsXty1guc77uBQx7/qvH056PM995gvRLlkCfDf/9pnhz3xhHkn1WxaTSAoPJspaFmzJofQm01F84fLYd62Qp8vE/zt6P4JGDvWt+r6UdREc2RjBTppnLEfgBP16plwdEtK2Ph29ysyjry8wInGZrFlC0/ioigs5JWqjz6yTiY1lNY4ZpyX2FguMGBHuCjAMhYUmGvhEBLCzp5dWL3aXPGewkJ+yNl1LxJxKwgzuZFKiJ9dMh4/DixcaI7nQYOsq9CthZQU7Z5qRtC+vTV9ZLWg6LMZGQsKOJ3D6pBgBU89pVWZ0Bj27bN33i4q4hxOUditz+HhHL69aZP4GDNn8rPFbOiuP6SkcE6TGX2uXds+wx0wr89lZexgNG1qnUxqtGjBNo6Za6A82+18thw/bi7v0m47bM0aYNEi8fMLCtjAfdemerVWzNvR0cCNN9rTzxlw67OZdLxKlbioo11Yvtw+jioYAjq6kiR9LUnSIn+v8hLySoMSwqzuUz0EM1ENp1AI3/zSiAiuuFy/vkBrIQVLlnDvLDMNvHNyOH/FLtSvzzlzoti3j3NU7ajEC3B/tMhIczKuW2dP+wcFrVvz7kVRkfgYEybYVzAEYIPMTI85xdg0s/ATDCkpHKYvCuUesSunXdHDnBzxMXbvNheeHQz165uT78QJIDPTfDEmf0hO5lQEM7s33box102aWCeXGomJ3O7KTDhhbq698/bo0VyoTxSKPtslozJvm7kXc3L42WJHxwHA/b+bebZ88QWw0cYaoenp5gpmhYQAGzZYUxlZC1FRfB1DdZWe0UZODuuaXQtXixezc2Wmkm552GFmdCUvjx35qlUtE8kDNWqY1+eVKzkVwS60bMn1L8wUzHztNWDpUutk8kbjxhW7m4GFCLajOx7AhACvvyGIjAzg88/dO7sHkILrsRrkRUlICDBkCD/8TO3omn2QKtUI7Zxg69XjRuOiTpryv9kloySxjGYm2A8+sKd1gYIbb+QJ3K4dYyuwdi2Hb4lGFyQkAO+8Y99qpxU85+Rw7qtdhdGUucCsPtu5WFC/vjl9Xr+e8xbN8BAIksTpGGbbutiJ8+c513vNGvExnnmGqyDaBbM8K/zadS8q+mzGiSwvfRa914l4weGLL6yTyRsvvGBNez07MX26uWih3r35GV2RebZ73jZrh9mtzw6HeX2ePNm+BReAe5YvXmzvzrtZ/P478Nxz5qI8LxMEdHSJ6BflBWAdgGNe7/0NE1B2dqtWBdbgeoyHZ5W/8HB2hqtU2YPo6GjUMBNmoewsiU6wJ09ySIrdhjGReHiY8r/Z6YxPnQq8/bb4+XYvFigoLRU77/hxDhe1cyVx924OmRENAU9K4p7GFTm64PBhe+Uzq8/Hj3NolZ0yDh/OK+fq0BUjKA99BszlX2ZkcHixXQgL41zvH34QH2PYMDbg7UK9ejxvi+qzkmtXkXepcnLsf/Z98w1HCIjg2DHWZztlVCCad/jZZ1xV+uJFa+VR48svgfffFz+/bVvg/vutk8cbyrwt+mxRQmHt1hUz+mz3hgPAixGvvCJ+vt274gpEdeXYMeDqq+2N/tu6FXj9dfPpRZcBdOXoSpLUD8BmAEvkv1v+HbpsDTIyOC3n2zEbUbfKOdf7VauyT5WRAezevRuNGjWCw0zxgagozo8RnWATE3nl5557xGUIhsaNuVefaLhHbi6Xm7ezrUuHDhwCLorymGDT0sQLj+3dyztpdhZfMRtdsGuXOSdUDxRHV/RB9f339j6koqL4XhQNAbd71V0Z+/rrxUMJc3I4DcFOfR4zhidbUZ5/+okXAe2C2Xn75EkOFzWTyhAMZsPoR4/mRVQ7eW7RgisHi8LuBcqICKBPH/GKxOXhXGzZwnnK330ndv7mzUBWlnhLGD0wO2//8ou9lWgVfRbVlWrV2D6yM0KjYUOeu8+dC36sFnJy7LfDOndmO0cUdu+KAxxxJmqH5eQAO3aILxLrgdnogssIej2nlwG0B3AOAIhoMwCbks/+grh0Cb1eaIvcR98HEc/Rp07B1UpIcXRNw+yqdni4PRXgFLRrxw9T0eIzbdrwaqwdTcoV7N8PfPih2EPg0iXevbB7go2PF+e5PHbRzBrGjz8O3HKLdfJooX59NihE80Mlyb5ccQW//Sa+mxgfz8ZSs2bWyqRGWRkX8RHt+asYI3bqc3w867IIz+Wlz2bm7e++43nVzlV7KwymyEh7eR4zRrzuABEwYgQ7onbit9+AOXPEzi2PhaukJNYVUZ6VxQI7eTYzb1+6xA7U5MmWi+UBs9FCksSRHnbh2muZ4w4dxM6/4Qbg0Uft5fnIEQ5T/+MP4+cq87bdGw5hYcCePWLnloc+W1EX4DKBXke3hIi87ygbe1P8xRCgGEdxcTH27dtnjaP79NOcryWCL77gcFE7W5KYxfDh5sKK9WDbNuCBB4Dt242fa3fRFQVmDGOlGIeduSWJibzia9ZgshPdurHBI7Kwk5sL3HknhwZVVDRrxq17lAqWdsDhMJc3WB7RD2YWXS4Hfc7Ntbe4DsAO0DvviLcYevBB4H//s1QkSyFJ3PbO7lzujz4Sbz1TXjxHR4sbxuWpzyIyKufYvXD1yCPAQw+Jnfv55zynVmQ7bPBg4NVX7f2OzZt58WnbNuPnlhfPZup8lKc+/72j68I2SZKGAQiRJKmhJEnvATBRHeNveCCA4u3btw9lZWXWOLq9e4u3E/nuO2DePHtX6QDgrruAu+82fh6R2OqeUZh5kDZsyM6PnS0gAL6PjhzhcECjyM3lqsh2VuOVJL6OZ84YP9fpLB9Ht0kTDtMXqUq4dSswbZq5iot6MGsW5/GI8HzmjL29DgHzRb2+/54rgNsJM0W9ymPVXRn/jz/Ewo9zcsxXOQ8GSeJFUJFQQqeTc3REDFYjOHaMQwnnzTN+7oUL9uaVKqhfX3zefvxxIDvbfp5F9dnp5IUhu+dtRRcPHzZ+bnmEfwPAwIHc2k0Ey5cDy5bZb4c9+CAv6BuF08nX3u6+02bm7aZNOf/Y7giN+vX5Wojoc3nN20rhsSsceh3dhwA0A1AEYCaA8wAesUuovxwChIvu2rULAKxxdC9c4JwyEQfD7mIcCs6d46q8RnH0KIch2h12VKcOTxAiD/vwcN5JS0iwXCwPKPeRSFGv2rWBHj2slUcLGzawM2gUR49yrnh53IubN3OejFGUl8HkdLJ8Ijz37cvtQuyGmeqYV11lX3smBXXriutzZCTQqZP9PD/1FM/dIotP5VV05ehRscrQ5aXPVarwcyU72/i5U6ZwT0szPTH1QLkGIvocG2tvGoIC0bDb/Hyge3cOo7cTjRqxYyHiSJbXwlVBAadziKQ/lZc+Hz4sFup/9Ch3fDBT+VoPzNhhISEcsWZ3ax0z+ty4MdC/v7XyaGHNGi7gdoVDl6NLRJeI6DkiakdEbeXfr/ya1OWFnBxWOo2+Y7t37wZgkaO7bRvQtSuwerXxc8urWrBoMQllwqtd23qZ1IiI4IlcZIJdsKB8QvTatAEee8zdu8oIXn8d+PRT62XyhmiOUXk5kQDwj38Ab7xh/LwA+mwpzKxq5+aWT+sDUX3evZuv/bFj9silICKC88latzZ+bo8eXLymWjXr5VIjPFx8B6e8FijHj+dwf6M8l5c+m5m3FX0urwVKEX1+9VV7e58rEN2NrFQJWLSIe7zbCYdDvDVQbm75zNtbtnBng1WrjJ9bXvqsLFCK2mF2yxgZyQuhIvo8ezZXbbYbrVpxK0mRBcrnn+fOFHajUiX7owMqAPRWXf5JkqQfvV92C/eXwahRHL6lccPt3r0b1atXR5UqVcx/j2g+2sWLXImwPCbY+vV5hV9pOaEX5dWKRPkOEWPk00/LZ/Jq3JgNTzvzO8xizRo2moxWuGzalAu2iBYsMwLR3cjyKKIEmNfn8tKVggLj+rxmDfDss+UTMjp+PNCvn/3fI4rCQmDkSGDuXOPnzpjBYYh2Q5Tn8jKMle8QDVEvD30WLep18SLw0ktiC9hGMWIE8PLLxs8rz5zSSZPEivQ99BA7QRWZ5xMnKva8fTnYYZ9/bn/kH8BpRR99ZPxaKBVpywPr17NOixbdvEygN3T5cQBPyK8XwK2GNtgl1F8OLVr4LXRhWcVlgHceYmONTw7HjwPJyUCDBtbIEQiiu1S5ubyaa2dxHQXTpom1jimv1ViAKwsadSK3bmWely+3RyY1LlwA5s83XpWwWjXWFbtX3QFzRYDKI4xQVJ+VUKryuBeHDOF8KKM9wHNyWJ/LY9fZ6eTcSKNo04ZzU+1GRAQv7ojs2HXrxjsLdkN03i4q4nujPHgWzS8tr2im6tV5t89oS5Ly1GeA5+5Ll4yd8/LLnCZgd10AANi4kSvyGkWjRuWTzlG9uti8feoU1/mwyh4MBNHogtxcDg0uDzvsk0+Ar74yfl556TPA97vR2jHZ2UBcHLBkiT0yqXH6NOuKHDl6pUJv6PJG1Ws1ET0KoLO9ov1FcOkSVyU9dUrzY0sdXUniIjtZWcbOU4pkDB5sjRyB0LQpF2syGnabnc0PejuT9xXUrs0TkRHk57OR1bixPTJ546ab2MkwgqwsDhW1OxQTcF8Ho/figgXGzxFF48Z8PYz2SV28GMjMtEcmNSSJ83iM9nVW8hTL415M+P/27jy8ivrcA/j3JQFcoHhBLg+yUwm4oCgpOwbw0YKCxSRJTAAAHEBJREFUaMUrdlGvqOAVrbRKob21KgVlqVtb7KMXbrnaulsFBJEKpGgEDSA7CAo8guwgawgmvPePd8YMIcmZCefMzEm+n+fJk3PmzDnnTX7LzG/mt9S3RkzQNcDd8pzKZTRcf/iDdYMLks5Hjlg+rMzwgKAqW28vXWrdRYuKUhOXV7t29jtojEOH2l2jMNK5c2db+iTI/yPMelvEJvSqzLEPCCfGLVuse2/QITjLl1sap3JdUFfbtpangpTno0dtFvqgdzAro7LluWVLa5CkevZvwOLr1i14uQyz3s7KsgvzQYR9HtajB3D99cHes3KlXUwKenG4Mip7HpZm/HZdru/5OVdEfggg4Jk+lSkvzxbMLWOtyUOHDmH79u3Ja+gCVvAWL67cDJ5h9OVv0cKuZAUdM/fTn1pXxzAcPGjLNOXm+n/Pxx/bCVaPHqmLy6tHD1uXMUg65+ZaA759+9TF5WrRwhoXQe5SnThhMyE//XTq4vJy0yqMsW+V9dJLwPDhwd5z6aXW1TGMdAbsinGQNDtxAli4EOjZM3UxeXXvbr+DpLNbnsOKsTLl+S9/sW5pYdXbQctz2IYOtTtAmZn+36MKPPNM5WfJDeqzz2yJobjW282bA+edF7zeXrgw3GMfYN/pV14eMGyYNcjDUJnyHKaWLa0rfNC1dIcNAx59NCUhneLQIWDs2GBjncOut7t0ifd5WMuWwctzGvJ7mX2J5+djAL8EMCRVQVUrubl2t8M92fJYt24dgCRNROW6916r1INccbvqKuCpp5IXgx/ffBNsnMKNN9o4tjCceaaNtQ2yVMWqVXaCVUY6p0ROjo3tK+MCSrlyc+0AHMZVdxGLMTfXfzqvWmUzhld2vc6gsrOBmTMt//v1+OPWIyGMLnquoqJgSxlddJF1JQwjnQG7cDV+vP903rLFxof16pXSsL6TnW1lOsiFq9xc+/+xPBsRu6Axdqz/96xcaePYFi1KXVxlCVJW6tSxZVbC6P4NWDf/Z58Nls4bNrDe9nLL84IF/t8TdnkeOhSYMydYmnXvHqx8JUNBQbDzsL59gVtuSV08XrVr2/8jyKzBGzbY+1hvm8qU5zRUYUNXRJoDgKq28vy0UdWrVbUSU8bRKXJz7e5lGVOdr3S6JF1SmfUJy3P++XbQ9tuVcMcOG7MZRvc31+uvW5dHv+M3V660GaXDKqg1a1q3niAnxg88YAP+Uz2lvcu9Yuk3xh07gPXrwzsZAawB2aaN/zEs7t8SVoy1atlae0HSbPZsO6kLqxF55Ih1Nfd7x3T/fivPlVnbr7Jycix/+S3PrVrZha5Uz9DqqlUreHl26+26dVMXl9cVV1jd7XdJku3brZtjmOW5d+9gY98WLLDlscLooue69dZgJ7mzZ4e7zqRbbwdppH3wgU2iFJag5TmKertfv2DvCbs8t2tnZdpv7wJ3+a4whma53nnHlmzcuNHf/kuW2EWrsM7DKlNv33OPHQPDSueg52FR1Nt9+lgdvH9/eN8ZskStnbfdByJSiSkfqUIFBdaNuJxMvWLFCpx11llonexJJubO9T/7r9ulIcyCd8klVln6rRwefRS45ppwp0nPybFxDUHWJE7GzNl+NWhgXV/8njCdOGHLrIQxGYfr9tstf51zjr/9c3Ot61yYs0lv3gyMGeMvnROU55Q4+2z7n/gtK++/bxcYKrOeaGW5/48gJyS1alV+mZDKyMmx/4nf8nzTTXbSFBb3wl///v72j6LeLiqy2Uznz/e3fxTluU0b//V2QYGNr3vmmdTH5XLr7SBlRcTqgbAELc8dOgAPPhhuOr/5pv9znCjqbcC63PpdbzaK8tyuHXD8uP9ziMcft3lBwj4PC1JvA3a3PyxBy3ONGsDDD9sF9rDceSewbFnql0+LUKKGrjfHhjSlXzWydKlVJOVUXitXrsTFF1+MGkEncklkxgwbY/rtt4n3zc217luVWWeysrKygEaN/FWwqnYQCPsglZNj3+1nHFBenq3JWpmFw0/HpEnA73/vb9/zzrNJecIat+nlp7eAqo2vCTudv/rKDjx+0nnx4grLc8rk5Nh4qriXZz8He1Vbn/aVV1Ifl9fNN1sXOL+N6/vuC2+ohJeqXZRKZPHi8NM5I8PWf5wyJfG+6VBvR1me8/L8ledHHrFusGFq2xZ47jmb0duPnj2BiRNTG1N5/JSVFSuiSedXX7VZ26tKvR338vzhh9brJOhKD6dr7Fhg1Ch/+zZqZDduLrwwtTGVpbp2XQag5TymZOje3e4YXXnlKS+pKlasWIH2qWh45OTYLIN+xg0sWGBxBpnA43SJ2Pg8P+MG1q612RXDGs/n+sEPrLuHn5kd5861sZ5h3tEFrMHgdzKJJUvsYB+23/7WDqiJ0lnEuvSMHx9OXK5Onazx4+eiy4IFFmdYE124evXyX57d8T9hl+c+fWwSt0TWrrXyEnT5ktOVlWUTDvmZ8XbNmmjWHfz4YzsRWrw48b6TJtlwjrDT2e94rzVroqm3g5Tn3Fz7m8KaRMmVk2OT0WzZknjf11/3t18yidikQ61aJd531y5rSPppcCaTqh37Hnoo8b6dO1te9NtwT5ag52FR1Nt+y7N7HhZ2Q7dTJ+sR9tVXiff95z/tb2nYMPVxeQ0YYMc/P3Jzw1k7vrRx42zujira2E3U0L1URA6KyCEAlziPD4rIIRHxcdZC5XLvYrVoUebJ1c6dO7Fnz57kjs919e5tXZ0SXWUtKrKJdYJOj54M/fsD27YlXidtwgQbMxtkwqBkOOMMW3Lpzjsr3u/gQZv9tGdP/110kyk/3+6yVOTdd20CjxdeCCcmr7Zt7U73yy9XvN+331qeDbqcwOmqXdsuGPz1r4kvalx+uU3EEXY69+5tdUiiCePefdcaGH67vybTSy/ZUjeJRFWeARv/+uCDFTdiDxywk5awxg97ZWXZmOwJEyre7/jx8NYUL23AABvTmuiOfN26tm8U9bZbnvfuLX+/Aweiq7dvuMGOfYnWrXfL84AB4cTlpQr87W+23FtFHnrIji3btoUTl0vELgpNnVpxvX38uP0t554b7lAJoKTeTnQeduKE1Tc/+lE4cXm55TnRhE9Rnoft3p145QG3PF9xRTTnYWvW2BCoirz7rl34mzYtlJBO0ry5XawIuydVWFQ1ZT8A+gJYD2AjgFFlvF4bwKvO64sBtHS2twRQAOAz5+cvib6rY8eOmlZGjFC97jrVoqIyX54zZ44C0Hnz5qXm+x9/XBVQnT07NZ9/uoqKVP/4R9UjR8rfZ88e1fr1VUeNCi+u0k6cUF28uPzXR4xQFVH99NPwYvJ64omK07mgQPX731dt1061sDDc2FQtnbOzVRs3Vj14sOx9PvpItUUL1eXLQw3tO2vWqGZmqt5xRzTf78drr6muW1fxPoMHR5fOrnXrKk5nILry7Cedoy7PiertggLVCy5QfeaZcONyueX5vPPKT+eorV2r+ve/W91dnrfeUq1ZM7p0VlU9erT8Ml1QoNq6dfT1dkXp/OGHlldHjw43NpdbnocMKX+fESNUe/dWPX48vLi80uE8bMIE1W++KX+f/fstH0SVzq4VK8p/7YEHoq23x41LXG9HXZ47dox3vV0KgHz12xb1u2PQHwAZAL6Aje2tBWA5gAtL7fNfbiMWwGAAr2pJQ3dVkO9Li4ZucbHq3r12EpKRoXrXXeXuOnHiRAWgu3fvTk0shYWqOTmqb79tz48eLflZu1b1/vtV589PzXcHNW+eNXLc+A4fVnX/L7t32/OoTJ5sxeiJJ1R37rT4CgrstX37LJ3vvju6+I4dU83KUm3Z0tLae+Fg/XrVW26x+OfOjS7GRYsshoEDVXfssG2FhRbr7NlW+TdtGm06jxqlet99dnJ8/HhJXtyzR/XJJ+1AFmUD0vX115bOhw+XxPj11/ZacbHq1q3Rxla7tqWztzwXF9vr11wTfTo/9NDJ5dm9EHngQEm9HXV5btPGynNurm0rKiqpt+NSnjt1Uv3iC0tbN53d8nzXXaqbNkUXn9crr5TU20eP2vHErSO3bYs2tquvLqm33fLsNsimTYtHOrv19vLlJfVfcbHqrFmqbdtGX54ffNBinDix5MKGW2+75Xno0OjiO3ZMtXNnu/CiaucO3vOwe+5Rfeed6OLz+ugja0x6z8Pc4/WBA9Gm89Spls7jx596HnbwoF20iku9nQ7nYVHXfT7EpaHbFcAcz/PRAEaX2mcOgK7O40wAe2ATYFXNhm6tWvYvB1S7dStprJXh1ltv1caNG4cXW5MmJbEBVjGMHBne91ekQ4eTYwPspDgODh5UvfLKk2Nr377k9REj7KAapQ8/LElfb5669tr4pPOYMaoNGpRcOb799pL/Z6NGqnPmRBuf9+6P2xjy/nTrFn06q5bcwS9dlnfujDoyM2aMNXa98a1aZa+9/HL06Vy6PLsX+156KT7p7JbnF1+05++/H7962y0vS5eemh/jUJ5VVTdvPjU2QPW556KOzHjrbffn17+213bvjv4OmurJ5dltSBQXl6Tz++9HG59bnvv1K9nWoEG86m3vsaVt2/ieh3XvfmpZ6dkz6qjMwYOqffqcHFurViWv/+Y30aeztzzXrVuy/eab45POY8aofu97JRcwYixIQ1ds/+QTkUEA+qrqnc7znwHorKrDPfuscvbZ6jz/AkBnAHUArAbwOYCDAP5bVU+ZVk1E7gZwNwA0b96845awJ2UIatw4m5myTx+bzKgCl112GRo1aoT33nsvnNgmTwYOHbLHderYxCyNGoXz3Yns3Wtjdb3rrZ5/PnDjjdHFVNqKFbZ0S3GxTXZwxx1RR3SyoiIbA7J1K3DvvbZtzhxb+iEu6XzsWMk4qVmzbNmA1q2BgQPDXT8wkfnzgU8+scc1athYq+zsaGNyuem8bl3Jtjp1gB//OPzJ0MpTujwPGWJj5OJk+XIrzzffbOOX1q2zSULilM6qNi5u0yYbQxe3ehsAdu608bCuuJVnN53dyZJq1LB5KVIxN0ZllC7PXbvaOMM4cctzy5a2PJ0q8MYb8UrngoKSZWWefRYoLIxXve164YWSpXLiVp7LOg9r3dpiDHNJoYp4y3O9ejZpWpy45fnLL23GbQCYN88mgopLOh896m9SxoiJyBJV9VWA49rQPQSgjqruFZGOsPV8L1LVcifAys7O1vz8/JT8LWE7cuQI6tWrh5EjR2LcuHFRh0NERERERBS5IA3dJC/QepJtAJp5njd1tpW5j4hkAqgHYK+qFqrqXgBQ1SWwsb5ZKYw1VvLz81FcXIzu3btHHQoREREREVHaSWVD91MAbUSklYjUgk02VXp9iekAbnMeDwIwT1VVRBqKSAYAiEhrAG0AfJnCWGMlLy8PANClS5eIIyEiIiIiIko/KVt9WlWLRGQ4bMKpDABTVXW1iDwGG0Q8HcAUAC+KyEYA+2CNYQC4AsBjIvItgBMAhqnqvlTFGjd5eXlo164dGjRoEHUoREREREREaSdlDV0AUNVZAGaV2vaw5/ExADeV8b43AbyZytjiSlWRl5eH66+/PupQiIiIiIiI0lIquy5TJXz++efYt28funbtGnUoREREREREaYkN3Zhxx+d269Yt4kiIiIiIiIjSExu6MbNgwQLUr18f7dq1izoUIiIiIiKitMSGbowUFxdj1qxZ6NevH2rUYNIQERERERFVBltTMbJo0SLs2bMHAwYMiDoUIiIiIiKitMWGboxMnz4dmZmZ6Nu3b9ShEBERERERpS02dGNkxowZyMnJQb169aIOhYiIiIiIKG2xoRsTGzduxNq1a3HddddFHQoREREREVFaY0M3JqZOnYoaNWrghhtuiDoUIiIiIiKitMaGbgwcP34cU6ZMQf/+/dGsWbOowyEiIiIiIkprbOjGwFtvvYVdu3bhnnvuiToUIiIiIiKitMeGbgxMnjwZrVu3xtVXXx11KERERERERGmPDd2ILViwAAsXLsTw4cNRowaTg4iIiIiI6HSxZRUhVcXo0aPRpEkTDBs2LOpwiIiIiIiIqoTMqAOozmbMmIFFixbh+eefx5lnnhl1OERERERERFWCqGrUMSRFdna25ufnRx2Gb4WFhWjfvj1EBKtXr0ZmJq85EBERERERlUdElqhqtp992bqKyMSJE7FhwwbMmTOHjVwiIiIiIqIk4hjdCGzatAljx47FTTfdxJmWiYiIiIiIkowN3Qjcf//9yMjIwJNPPhl1KERERERERFUO+8yGbPr06Zg5cyYmTZqEpk2bRh0OERERERFRlcPJqEJUUFCACy64AHXq1MGyZctQs2bNqEMiIiIiIiJKC5yMKqaefvppbNmyBfPnz2cjl4iIiIiIKEU4RjckO3fuxLhx4zBw4ED06tUr6nCIiIiIiIiqLDZ0Q/Lwww/j2LFjmDBhQtShEBERERERVWkpbeiKSF8RWS8iG0VkVBmv1xaRV53XF4tIS89ro53t60Xkh6mMMwytW7fGyJEjkZWVFXUoREREREREVVrKxuiKSAaAPwO4CsBWAJ+KyHRVXePZbQiA/ap6vogMBjAewM0iciGAwQAuAnAegH+KSJaqFqcq3lT71a9+FXUIRERERERE1UIq7+h2ArBRVb9U1eMAXgEwsNQ+AwFMcx6/AeBKERFn+yuqWqiqmwBsdD6PiIiIiIiIqEKpbOg2AfCV5/lWZ1uZ+6hqEYADABr4fC9E5G4RyReR/N27dycxdCIiIiIiIkpXaT0Zlao+r6rZqprdsGHDqMMhIiIiIiKiGEhlQ3cbgGae502dbWXuIyKZAOoB2OvzvURERERERESnSGVD91MAbUSklYjUgk0uNb3UPtMB3OY8HgRgnqqqs32wMytzKwBtAHySwliJiIiIiIioikjZrMuqWiQiwwHMAZABYKqqrhaRxwDkq+p0AFMAvCgiGwHsgzWG4ez3GoA1AIoA3JvOMy4TERERERFReMRuoKa/7Oxszc/PjzoMIiIiIiIiSgERWaKq2X72TevJqIiIiIiIiIhKqzJ3dEVkN4AtUceRwLkA9kQdBFEFmEcpHTCfUtwxj1I6YD6luCsrj7ZQVV/L7VSZhm46EJF8v7faiaLAPErpgPmU4o55lNIB8ynF3enmUXZdJiIiIiIioiqFDV0iIiIiIiKqUtjQDdfzUQdAlADzKKUD5lOKO+ZRSgfMpxR3p5VHOUaXiIiIiIiIqhTe0SUiIiIiIqIqhQ1dIiIiIiIiqlLY0A2JiPQVkfUislFERkUdD1VPIjJVRHaJyCrPtvoiMldENji//83ZLiLyrJNnV4jI5dFFTtWFiDQTkfkiskZEVovIz53tzKcUGyJyhoh8IiLLnXz6qLO9lYgsdvLjqyJSy9le23m+0Xm9ZZTxU/UhIhkiskxEZjrPmUcpVkRks4isFJHPRCTf2ZaUYz4buiEQkQwAfwbQD8CFAG4RkQujjYqqqb8C6Ftq2ygAH6hqGwAfOM8By69tnJ+7ATwXUoxUvRUB+KWqXgigC4B7nfqS+ZTipBBAH1W9FEAHAH1FpAuA8QCeUtXzAewHMMTZfwiA/c72p5z9iMLwcwBrPc+ZRymOeqtqB8+auUk55rOhG45OADaq6peqehzAKwAGRhwTVUOq+i8A+0ptHghgmvN4GoDrPdv/T80iAOeISONwIqXqSlW3q+pS5/Eh2AlaEzCfUow4+e2w87Sm86MA+gB4w9leOp+6+fcNAFeKiIQULlVTItIUwLUA/sd5LmAepfSQlGM+G7rhaALgK8/zrc42ojhopKrbncc7ADRyHjPfUqScrnOXAVgM5lOKGadL6GcAdgGYC+ALAN+oapGzizcvfpdPndcPAGgQbsRUDT0NYCSAE87zBmAepfhRAO+LyBIRudvZlpRjfmayIyWi9KWqKiJcc4wiJyJ1ALwJ4AFVPei9scB8SnGgqsUAOojIOQD+AaBdxCERfUdE+gPYpapLRKRX1PEQVaCHqm4TkX8HMFdE1nlfPJ1jPu/ohmMbgGae502dbURxsNPt9uH83uVsZ76lSIhITVgj92+q+pazmfmUYklVvwEwH0BXWDc69yaCNy9+l0+d1+sB2BtyqFS9dAdwnYhshg2Z6wPgGTCPUsyo6jbn9y7YRcNOSNIxnw3dcHwKoI0z010tAIMBTI84JiLXdAC3OY9vA/COZ/utzgx3XQAc8HQjIUoJZ0zYFABrVfVJz0vMpxQbItLQuZMLETkTwFWw8eTzAQxydiudT938OwjAPFVlrwRKGVUdrapNVbUl7Lxznqr+BMyjFCMicraI1HUfA7gawCok6ZgvzMPhEJFrYGMlMgBMVdWxEYdE1ZCIvAygF4BzAewE8DsAbwN4DUBzAFsA/Ieq7nMaHH+CzdJ8FMB/qmp+FHFT9SEiPQAsBLASJePKfg0bp8t8SrEgIpfAJkjJgN00eE1VHxOR1rC7Z/UBLAPwU1UtFJEzALwIG3O+D8BgVf0ymuipunG6Lj+oqv2ZRylOnPz4D+dpJoC/q+pYEWmAJBzz2dAlIiIiIiKiKoVdl4mIiIiIiKhKYUOXiIiIiIiIqhQ2dImIiIiIiKhKYUOXiIiIiIiIqhQ2dImIiIiIiKhKYUOXiIiokkSkgYh85vzsEJFtzuPDIjI5Rd/5gIjc6jxeICLZqfiecr57uIjcEdb3ERERVRaXFyIiIkoCEXkEwGFVnZTC78gEsBTA5apaJCILYOtjJnXtYBHJUNXiMrafBeAjVb0smd9HRESUbLyjS0RElGQi0ktEZjqPHxGRaSKyUES2iMiPRGSCiKwUkfdEpKazX0cRyRWRJSIyR0Qal/HRfQAsVdUiz7abROQTEflcRHo6n3WGiPyv8x3LRKS3s/12EfmTJ86ZItLLeXxYRP4gIssBdBWRJ0RkjYisEJFJAKCqRwFsFpFOyf+vERERJQ8bukRERKn3fVgj9ToALwGYr6rtARQAuNZp7P4RwCBV7QhgKoCxZXxOdwBLSm3LVNVOAB4A8Dtn270A1PmOWwBME5EzEsR4NoDFqnopgLUAbgBwkapeAuD3nv3yAfT08TcTERFFJjPqAIiIiKqB2ar6rYisBJAB4D1n+0oALQG0BXAxgLkiAmef7WV8TmNYI9TrLef3EuezAKAHrOEMVV0nIlsAZCWIsRjAm87jAwCOAZji3Jme6dlvF4B2CT6LiIgoUmzoEhERpV4hAKjqCRH5VksmyDgBOxYLgNWq2jXB5xQAKH1nttD5XYzEx/UinNyby/tZx9xxuc74304ArgQwCMBw2B1p9z0FCb6HiIgoUuy6TEREFL31ABqKSFcAEJGaInJRGfutBXC+j89bCOAnzmdlAWjufMdmAB1EpIaINANQ5lhbEakDoJ6qzgIwAsClnpezAKzy80cRERFFhXd0iYiIIqaqx0VkEIBnRaQe7Pj8NIDVpXadDeBFHx85GcBzTlfpIgC3q2qhiHwEYBOANbBG89Jy3l8XwDvOuF4B8AvPa90BPOLrDyMiIooIlxciIiJKIyLyDwAjVXVDBN99GYBfqOrPwv5uIiKiINjQJSIiSiMi0hZAI1X9VwTffRWADaq6OezvJiIiCoINXSIiIiIiIqpSOBkVERERERERVSls6BIREREREVGVwoYuERERERERVSls6BIREREREVGVwoYuERERERERVSn/D8a3cE9PhNNGAAAAAElFTkSuQmCC\n"
2157           },
2158           "metadata": {
2159             "needs_background": "light"
2160           }
2161         }
2162       ]
2163     },
2164     {
2165       "cell_type": "code",
2166       "execution_count": null,
2167       "metadata": {
2168         "id": "R2jkoZlAIaSb"
2169       },
2170       "outputs": [],
2171       "source": [
2172         "fmda_model, fmda_model_eval = create_fit_predict_RNN(hidden_units=7, dense_units=1, \n",
2173         "      samples=samples, timesteps=timesteps, features=1, \n",
2174         "      activation=['tanh', 'tanh'])\n",
2175         "fmda_model.fit(x_train, y_train, epochs=40, verbose=2,batch_size=samples)\n",
2176         "# Same model as stateless for prediction:\n",
2177         "w=fmda_model.get_weights()\n",
2178         "fmda_model_eval.set_weights(w)\n",
2179         "# prediction on the entire dataset from zero state\n",
2180         "mt = fmda_model_eval.predict(Et)\n",
2181         "m = scalery.inverse_transform(mt)\n",
2182         "plot_m(m,title='RNN prediction')"
2183       ]
2184     },
2185     {
2186       "cell_type": "code",
2187       "execution_count": null,
2188       "metadata": {
2189         "id": "NCZ_imOaUH4l"
2190       },
2191       "outputs": [],
2192       "source": [
2193         "x = tf.zeros([3,4])\n",
2194         "x.shape[0]\n",
2195         "trainsteps,outputs = x.shape\n",
2196         "trainsteps,outputs\n",
2197         "y = tf.zeros([trainsteps,features])\n",
2198         "print(x[1,:])\n",
2199         "print(x)\n"
2200       ]
2201     },
2202     {
2203       "cell_type": "code",
2204       "execution_count": null,
2205       "metadata": {
2206         "id": "0Oz3kVLljDwt"
2207       },
2208       "outputs": [],
2209       "source": [
2210         "tf.zeros([1,2,3])"
2211       ]
2212     },
2213     {
2214       "cell_type": "markdown",
2215       "metadata": {
2216         "id": "6uXVJj9koGF2"
2217       },
2218       "source": [
2219         "### 3.2 Acquisition and preprocessing of real data"
2220       ]
2221     },
2222     {
2223       "cell_type": "markdown",
2224       "metadata": {
2225         "id": "glIkYrvdhXo6"
2226       },
2227       "source": [
2228         ""
2229       ]
2230     },
2231     {
2232       "cell_type": "markdown",
2233       "metadata": {
2234         "id": "ZUluRmF9tqko"
2235       },
2236       "source": [
2237         ""
2238       ]
2239     },
2240     {
2241       "cell_type": "markdown",
2242       "metadata": {
2243         "id": "q3BpOBuzc91i"
2244       },
2245       "source": [
2246         "Data assimilation for fuel moisture from Remote Automated Weather Stations (RAWS) was developed in Vejmelka et al. (2016). First, they use regression from all RAWS in a given area to extend the data spatially from RAWS to a grid in the whole area, then they run the extended Kalman filter at each grid node. Here, we are interested in a simplified problem: estimate future fuel moisture at a single RAWS location from weather data.  "
2247       ]
2248     },
2249     {
2250       "cell_type": "markdown",
2251       "metadata": {
2252         "id": "c8Y6bL1Yc91i"
2253       },
2254       "source": [
2255         "#### 3.2.1 Acquisition of fuel moisture observations"
2256       ]
2257     },
2258     {
2259       "cell_type": "markdown",
2260       "metadata": {
2261         "id": "0CuXyWBFc91i"
2262       },
2263       "source": [
2264         "We try to load the data from a saved file first. If that fails, retrieve the fuel moisture data from sensors on weather stations in the Mesowest network. Get all stations with fuel moisture data in a spatial box within one hour, then pick one station and retrieve the whole time series."
2265       ]
2266     },
2267     {
2268       "cell_type": "code",
2269       "execution_count": null,
2270       "metadata": {
2271         "id": "LFrlbbMmc91i"
2272       },
2273       "outputs": [],
2274       "source": [
2275         "import json\n",
2276         "jfile = 'raws.json'; vars='fuel_moisture'; case = 1\n",
2277         "# jfile = 'raws2.json'; vars='fuel_moisture,precip_accum_one_hour'; case = 2\n",
2278         "def json_w(j,f):\n",
2279         "  print('writing json file',f)\n",
2280         "  json.dump(j,open(f,'w'),indent=4)\n",
2281         "try:\n",
2282         "    #! wget --no-clobber http://math.ucdenver.edu/~jmandel/data/math4779f21/raws.json\n",
2283         "    j = json.load(open(jfile,'r'))\n",
2284         "    print('loaded from ',jfile)\n",
2285         "    # Take the first station in the boulding box that has data between time_start and time_s2.\n",
2286         "    # Then retrieve data for that station between time_start and time_end\n",
2287         "    time_start = j['time_start']      # start of data time series\n",
2288         "    # time_s2    = j['time_s2']         # end of segment to read coordinates\n",
2289         "    time_end  = j['time_end']         # end of data time series\n",
2290         "    meso_ts  = j['meso_ts']           # get meso observations time series\n",
2291         "    obs_lon =   j['obs_lon']          # where we retrieved observations\n",
2292         "    obs_lat =   j['obs_lat']\n",
2293         "except:\n",
2294         "    print(\"can't read\",jfile,', creating')\n",
2295         "    # set up bounds\n",
2296         "    time_start = \"201806010800\"  # June 1 2018 08:00 in format yyyymmddHHMM\n",
2297         "    time_s2    = \"201806010900\"  # June 1 2018 09:00 in format yyyymmddHHMM \n",
2298         "    time_end   = \"201907200900\"  # June 20 2018 09:00 in format yyyymmddHHMM \n",
2299         "    #time_start=  \"201810230100\"\n",
2300         "    #time_s2=  \"201810230300\"\n",
2301         "    #time_end  =  \"201806022300\"\n",
2302         "    !pip install MesoPy\n",
2303         "    from MesoPy import Meso\n",
2304         "    bounding_box = \"-115, 38, -110, 40\"  # min longtitude, latitude\n",
2305         "    meso_token=\"b40cb52cbdef43ef81329b84e8fd874f\"       # you should get your own if you do more of this\n",
2306         "    m = Meso(meso_token)# create a Meso object\n",
2307         "    print('reading MesoWest fuel moisture data')\n",
2308         "    json_w(m.variables(),'variables.json')\n",
2309         "    meso_obss = m.timeseries(time_start, time_s2, bbox=bounding_box, \n",
2310         "                             showemptystations = '0', vars=vars)   # ask the object for data\n",
2311         "    json_w(meso_obss,'meso_obss.json')                        \n",
2312         "    # pick one station and retrieve the whole time series.\n",
2313         "    station=meso_obss['STATION'][0]\n",
2314         "    json_w(station,'station.json')\n",
2315         "    lon,lat = (float(station['LONGITUDE']),float(station['LATITUDE']))\n",
2316         "    print(station['NAME'],'station',station['STID'],'at',lon,lat)\n",
2317         "    e = 0.01   # tolerance\n",
2318         "    bb = '%s, %s, %s, %s' % (lon - e, lat - e, lon + e, lat + e)\n",
2319         "    print('bounding box',bb)\n",
2320         "    meso_ts = m.timeseries(time_start, time_end, bbox=bb, showemptystations = '0', vars=vars)   # ask the object for data\n",
2321         "    json_w(meso_ts,'meso_ts.json')                        \n",
2322         "    obs_lon, obs_lat = (lon, lat)   # remember station coordinates for later\n",
2323         "    j={'time_start':time_start,'time_s2':time_s2,'time_end':time_end,\n",
2324         "       'meso_ts':meso_ts,'obs_lon':obs_lon,'obs_lat':obs_lat}\n",
2325         "    json_w(j,jfile)\n",
2326         "    print('done')"
2327       ]
2328     },
2329     {
2330       "cell_type": "code",
2331       "execution_count": null,
2332       "metadata": {
2333         "id": "3bXopS3btyz0",
2334         "scrolled": true
2335       },
2336       "outputs": [],
2337       "source": [
2338         "# process the data retrieved for this station\n",
2339         "# print(json.dumps(meso_ts['STATION'][0], indent=4))\n",
2340         "from datetime import datetime, timedelta, time\n",
2341         "import numpy as np\n",
2342         "import matplotlib.pyplot as plt\n",
2343         "import pytz\n",
2344         "station = meso_ts['STATION'][0]\n",
2345         "time_str  = station['OBSERVATIONS']['date_time']\n",
2346         "obs_time = [datetime.strptime(t, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=pytz.UTC) for t in time_str]\n",
2347         "start_time = obs_time[0].replace(minute=0)     # remember obs_time and start_time for later\n",
2348         "end_time = obs_time[-1]\n",
2349         "obs_data = np.array(station['OBSERVATIONS'][\"fuel_moisture_set_1\"])\n",
2350         "# obs_data = np.array(station['OBSERVATIONS'][\"fuel_moisture\"])\n",
2351         "# display the data retrieved\n",
2352         "#for o_time,o_data in zip (obs_time,obs_data):\n",
2353         "#    print(o_time,o_data)\n",
2354         "%matplotlib inline\n",
2355         "plt.figure(figsize=(16,4))\n",
2356         "plt.plot(obs_data,linestyle='-',c='k',label='10-h fuel data')\n",
2357         "plt.title(station['STID'] + ' 10 h fuel moisture data')\n",
2358         "plt.xlabel('Time (hours)') \n",
2359         "plt.ylabel('Fuel moisture content (%)')\n",
2360         "plt.legend()\n",
2361         " "
2362       ]
2363     },
2364     {
2365       "cell_type": "code",
2366       "execution_count": null,
2367       "metadata": {
2368         "id": "lJQFB4rAYu9P"
2369       },
2370       "outputs": [],
2371       "source": [
2372         "# %debug"
2373       ]
2374     },
2375     {
2376       "cell_type": "markdown",
2377       "metadata": {
2378         "id": "F7bvUGx993Ae"
2379       },
2380       "source": [
2381         ""
2382       ]
2383     },
2384     {
2385       "cell_type": "markdown",
2386       "metadata": {
2387         "id": "pY4hPeATK9wZ"
2388       },
2389       "source": [
2390         "#### 3.2.2 Acquisition of weather data"
2391       ]
2392     },
2393     {
2394       "cell_type": "markdown",
2395       "metadata": {
2396         "id": "xhyjXqxVN6B2"
2397       },
2398       "source": [
2399         "Our weather data are results from atmospheric models, with assimilated observations from weather stations, satellites, radars, etc. The models can be run in reanalysis mode (for the past, with data for the period modeled)  or in forecast mode (for the future, with only past data assimilated - because future data are not here yet). We use the Real-Time Mesoscale Analysis ([RTMA](https://www.nco.ncep.noaa.gov/pmb/products/rtma/)) interpolated to the RAWS location. RTMA is a real-time product, posted hourly, and available only for few days in the past. We have our own collection of selected RAWS data over past few years, obtained as a side effect of running the fuel moisture modeling software [WRFXPY](https://github.com/openwfm/wrfxpy).\n",
2400         "\n",
2401         "First try to read the data already extracted for this RAWS and staged for download."
2402       ]
2403     },
2404     {
2405       "cell_type": "code",
2406       "execution_count": null,
2407       "metadata": {
2408         "id": "WlqJRP8Vc91o"
2409       },
2410       "outputs": [],
2411       "source": [
2412         "import json\n",
2413         "jfile = 'rtma.json'\n",
2414         "try:\n",
2415         "    ! wget --no-clobber http://math.ucdenver.edu/~jmandel/data/math4779f21/rtma.json\n",
2416         "    j = json.load(open(jfile,'r'))\n",
2417         "    print('loaded from ',jfile)\n",
2418         "    if j['obs_lat']!=obs_lat or j['obs_lon']!=obs_lon:\n",
2419         "      print('lon lat doesnot agree, need to load original RTMA files')\n",
2420         "      read_rtma=True\n",
2421         "    else:\n",
2422         "      read_rtma=False\n",
2423         "except:\n",
2424         "    print(\"can't read\",jfile,', creating')\n",
2425         "    read_rtma=True\n",
2426         "\n",
2427         "print('')"
2428       ]
2429     },
2430     {
2431       "cell_type": "markdown",
2432       "metadata": {
2433         "id": "THI6gElyHOOc"
2434       },
2435       "source": [
2436         "Next, functions to get the files, open as grib, and interpolate to the station coordinates"
2437       ]
2438     },
2439     {
2440       "cell_type": "markdown",
2441       "metadata": {
2442         "id": "2iBNHQg5hPxB"
2443       },
2444       "source": [
2445         "####<font color=red>Note: If read_rtma==True, the notebook will say it crashed when run the first time. This is because it needs to install different version of some python packages and restart runtime. Simply run it again.</fonr>"
2446       ]
2447     },
2448     {
2449       "cell_type": "code",
2450       "execution_count": null,
2451       "metadata": {
2452         "id": "mxZABVDxt0gd"
2453       },
2454       "outputs": [],
2455       "source": [
2456         "# Set up environment to read RTMA gribs\n",
2457         "# we will need current numpy for pygrib - needed on Colab, tensorflow is using numpy 1.19\\\n",
2458         "if read_rtma:\n",
2459         "  import subprocess,os\n",
2460         "  def load_rtma(path,file,reload=0):\n",
2461         "    url='http://math.ucdenver.edu/~jmandel/rtma/' + path \n",
2462         "    if os.path.exists(file):\n",
2463         "      if reload:\n",
2464         "        print(file + ' already exists, removing')\n",
2465         "        os.remove(file)\n",
2466         "      else:\n",
2467         "        print(file + ' already exists, exiting')\n",
2468         "        # add checking size here\n",
2469         "        return 0\n",
2470         "    try:\n",
2471         "      ret = subprocess.check_output(['wget','--no-clobber','--output-document='+ file, url,],stderr=subprocess.STDOUT).decode() # execute command from python strings\n",
2472         "      if os.path.exists(file):\n",
2473         "        print('loaded ' + url + ' as ' + file)\n",
2474         "        return 0\n",
2475         "      else: \n",
2476         "        print('file transfer completed, but the file is missing? ' + url)  \n",
2477         "      return 1\n",
2478         "    except:\n",
2479         "      print('file transfer failed: ' + url)\n",
2480         "      return 2\n"
2481       ]
2482     },
2483     {
2484       "cell_type": "markdown",
2485       "metadata": {
2486         "id": "dQ-uJI2sy6I3"
2487       },
2488       "source": [
2489         "Create a function to transfer RTMA files in GRIB2 format from the stash. The function returns zero if the file transfer succeeded. If the file is not available, it returns a nonzero value. Note: if needed, maybe in future add more sophisticated checks, check the return code of wget and if the file size is correct."
2490       ]
2491     },
2492     {
2493       "cell_type": "code",
2494       "execution_count": null,
2495       "metadata": {
2496         "id": "PL3gxK67AlBI"
2497       },
2498       "outputs": [],
2499       "source": [
2500         "if read_rtma:\n",
2501         "  def rtma_grib(t,var):\n",
2502         "    tpath = '%4i%02i%02i/%02i' % (t.year, t.month, t.day, t.hour)  # remote path on server\n",
2503         "    tstr  = '%4i%02i%02i%02i_' % (t.year, t.month, t.day, t.hour)  # time string for local path\n",
2504         "    gribfile = os.path.join('data',tstr + var + '.grib')\n",
2505         "    remote = tpath + '/' + var + '.grib'\n",
2506         "    if load_rtma(remote,gribfile):\n",
2507         "        print('cannot load remote file',remote,'as',gribfile)\n",
2508         "        return []\n",
2509         "    else:\n",
2510         "        try:\n",
2511         "            gf=GribFile(gribfile)\n",
2512         "            v = np.array(gf[1].values())\n",
2513         "        except:\n",
2514         "            print('cannot read grib file',gribfile)\n",
2515         "            return []\n",
2516         "        print('loaded ',gribfile,' containing array shape ',v.shape)\n",
2517         "        return gf[1]   # grib message\n"
2518       ]
2519     },
2520     {
2521       "cell_type": "code",
2522       "execution_count": null,
2523       "metadata": {
2524         "id": "OY1oTYKlfd17"
2525       },
2526       "outputs": [],
2527       "source": [
2528         "if read_rtma:\n",
2529         "    times = pd.date_range(start=time_start,end=time_end,freq='1H')\n",
2530         "    varnames=['temp','td','precipa']\n",
2531         "    j =    read_interp_rtma(varnames,times,obs_lat,obs_lon)      # temperature\n",
2532         "    for varname in varnames:\n",
2533         "        j[varname]=j[varname].tolist() \n",
2534         "    j['obs_lat']=obs_lat\n",
2535         "    j['obs_lon']=obs_lon\n",
2536         "    json.dump(j,open('rtma.json','w'),indent=4)\n",
2537         "    print('done')"
2538       ]
2539     },
2540     {
2541       "cell_type": "code",
2542       "execution_count": null,
2543       "metadata": {
2544         "id": "ccp10kurAlBI"
2545       },
2546       "outputs": [],
2547       "source": [
2548         "from scipy.interpolate import LinearNDInterpolator, interpn\n",
2549         "from scipy.optimize import root\n",
2550         "def interp_to_lat_lon_slow(lats,lons,v,lat,lon): \n",
2551         "    # on mesh with coordinates lats and lons interpolate v to given lat lon\n",
2552         "    interp=LinearNDInterpolator(list(zip(lats.flatten(),lons.flatten())),v.flatten())\n",
2553         "    return interp(lat,lon)\n",
2554         "def interp_to_lat_lon(lats,lons,v,lat,lon):\n",
2555         "    # on mesh with coordinates lats and lons interpolate v to given lat lon\n",
2556         "    points=(np.array(range(lats.shape[0]),float),np.array(range(lats.shape[1]),float))  # uniform mesh\n",
2557         "    def res(ij):  # interpolation of lons lats on the uniform mesh, to noninteger coordinates   \n",
2558         "       return np.hstack((interpn(points,lats,ij)-lat, interpn(points,lons,ij)-lon))\n",
2559         "    # solve for xi,xj such that lats(xi,xj)=lat lons(xi,xj)=lon, then interpolate to (xi, xj) on uniform grid \n",
2560         "    result = root(res,(0,0)) # solve res(ij) = 0\n",
2561         "    if not result.success:\n",
2562         "        print(result.message)\n",
2563         "        exit(1)\n",
2564         "    return interpn(points,v,result.x) \n"
2565       ]
2566     },
2567     {
2568       "cell_type": "markdown",
2569       "metadata": {
2570         "id": "jvnpq6S5AlBI"
2571       },
2572       "source": [
2573         "The interpolation function needs to  be tested."
2574       ]
2575     },
2576     {
2577       "cell_type": "code",
2578       "execution_count": null,
2579       "metadata": {
2580         "id": "NVMJBYI7AlBI"
2581       },
2582       "outputs": [],
2583       "source": [
2584         "def interp_to_lat_lon_test(lats,lons):\n",
2585         "    print('testing interp_to_lat_lon')\n",
2586         "    vx, vy = np.meshgrid(range(lats.shape[0]),range(lats.shape[1]),indexing='ij')\n",
2587         "    i, j = (1,2)\n",
2588         "    lat,lon = ((lats[i,j]+lats[i+1,j+1])/2,(lons[i,j]+lons[i+1,j+1])/2)\n",
2589         "    vi = interp_to_lat_lon(lats,lons,vx,lat,lon)\n",
2590         "    vj = interp_to_lat_lon(lats,lons,vy,lat,lon)\n",
2591         "    print(vi,vj,'should be about',i+0.5,j+0.5)\n",
2592         "    test_slow = 0\n",
2593         "    if test_slow:\n",
2594         "        print('Testing against the standard slow method scipy.interpolate.LinearNDInterpolator. Please wait...')\n",
2595         "        vi_slow = interp_to_lat_lon_slow(lats,lons,vx,lat,lon)\n",
2596         "        print(vi_slow)\n",
2597         "        vj_slow = interp_to_lat_lon_slow(lats,lons,vy,lat,lon)\n",
2598         "        print(vj_slow)\n",
2599         "        \n",
2600         "#gf = rtma_grib(start_time,'temp')      #  read the first grib file and use it to test interpolation\n",
2601         "#lats, lons = gf.latlons()\n",
2602         "#interp_to_lat_lon_test(lats,lons)\n"
2603       ]
2604     },
2605     {
2606       "cell_type": "code",
2607       "execution_count": null,
2608       "metadata": {
2609         "id": "vt-Mk8fIc91m"
2610       },
2611       "outputs": [],
2612       "source": [
2613         "#%debug\n"
2614       ]
2615     },
2616     {
2617       "cell_type": "markdown",
2618       "metadata": {
2619         "id": "LQbWB_3GAlBI"
2620       },
2621       "source": [
2622         "Now we are ready for a function to read the RTMA files and interpolate to the station coordinates"
2623       ]
2624     },
2625     {
2626       "cell_type": "code",
2627       "execution_count": null,
2628       "metadata": {
2629         "id": "b3JJH3XPAlBI"
2630       },
2631       "outputs": [],
2632       "source": [
2633         "if read_rtma:\n",
2634         "  import pandas as pd, json\n",
2635         "  def read_interp_rtma(varnames,times,lat,lon):\n",
2636         "    # read RTMA from start_time to end_time and interpolate to obs_lat obs_lon\n",
2637         "    ntimes = len(times)\n",
2638         "    time_str = 'time_str'\n",
2639         "    j={time_str:times.strftime('%Y-%m-%d %H:%M').tolist()}\n",
2640         "    for varname in varnames:\n",
2641         "        j[varname]=np.full(ntimes,np.nan)  # initialize array of nans as list\n",
2642         "    n=0\n",
2643         "    for t in times:\n",
2644         "        tim=t.strftime('%Y-%m-%d %H:%M')\n",
2645         "        should_be = j[time_str][n]\n",
2646         "        if tim != should_be:\n",
2647         "            print('n=',n,'time',tim,'expected',should_be)\n",
2648         "            raise 'Invalid time' \n",
2649         "        for varname in varnames:\n",
2650         "            gf = rtma_grib(t,varname)   # read and create grib object, download if needed\n",
2651         "            if gf:\n",
2652         "                lats,lons = gf.latlons()    # coordinates\n",
2653         "                v = gf.values()\n",
2654         "                vi=interp_to_lat_lon(lats,lons,v,lat,lon) # append to array\n",
2655         "                print(varname,'at',t,'interpolated to',lat,lon,' value ',vi)\n",
2656         "                j[varname][n] = vi\n",
2657         "            else:\n",
2658         "                print(varname,'at',t,' could not be loaded')\n",
2659         "        n = n+1\n",
2660         "    return j"
2661       ]
2662     },
2663     {
2664       "cell_type": "code",
2665       "execution_count": null,
2666       "metadata": {
2667         "id": "bMpYIZT6c91o"
2668       },
2669       "outputs": [],
2670       "source": [
2671         "# %debug\n"
2672       ]
2673     },
2674     {
2675       "cell_type": "markdown",
2676       "metadata": {
2677         "id": "KVXBjGA0CiXr"
2678       },
2679       "source": [
2680         "#### 3.2.3 Preprocessing and visualization of the weather data"
2681       ]
2682     },
2683     {
2684       "cell_type": "code",
2685       "execution_count": null,
2686       "metadata": {
2687         "id": "fNA3Vbo1c91o"
2688       },
2689       "outputs": [],
2690       "source": [
2691         "rtma = j\n",
2692         "td = np.array(rtma['td'])\n",
2693         "t2 = np.array(rtma['temp'])\n",
2694         "rain=np.array(rtma['precipa'])\n",
2695         "# compute relative humidity\n",
2696         "rh = 100*np.exp(17.625*243.04*(td - t2) / (243.04 + t2 - 273.15) / (243.0 + td - 273.15))\n",
2697         "Ed = 0.924*rh**0.679 + 0.000499*np.exp(0.1*rh) + 0.18*(21.1 + 273.15 - t2)*(1 - np.exp(-0.115*rh))\n",
2698         "Ew = 0.618*rh**0.753 + 0.000454*np.exp(0.1*rh) + 0.18*(21.1 + 273.15 - t2)*(1 - np.exp(-0.115*rh))"
2699       ]
2700     },
2701     {
2702       "cell_type": "code",
2703       "execution_count": null,
2704       "metadata": {
2705         "id": "tZIK59bJAlBJ"
2706       },
2707       "outputs": [],
2708       "source": [
2709         "%matplotlib inline\n",
2710         "plt.figure(figsize=(16,4))\n",
2711         "plt.plot(t2,linestyle='-',c='k',label='Temperature')\n",
2712         "plt.title(station['STID'] + ' Temperature')\n",
2713         "plt.xlabel('Time (hours)') \n",
2714         "plt.ylabel('Temperature (K)')\n",
2715         "plt.legend()"
2716       ]
2717     },
2718     {
2719       "cell_type": "code",
2720       "execution_count": null,
2721       "metadata": {
2722         "id": "LbyqcuXYAlBJ"
2723       },
2724       "outputs": [],
2725       "source": [
2726         "%matplotlib inline\n",
2727         "plt.figure(figsize=(16,4))\n",
2728         "plt.plot(td,linestyle='-',c='k',label='Dew point')\n",
2729         "plt.title(station['STID'] + ' Dew point (K)')\n",
2730         "plt.xlabel('Time (hours)') \n",
2731         "plt.ylabel('Dew point (K)')\n",
2732         "plt.legend()"
2733       ]
2734     },
2735     {
2736       "cell_type": "code",
2737       "execution_count": null,
2738       "metadata": {
2739         "id": "dfoOK2kSc91p"
2740       },
2741       "outputs": [],
2742       "source": [
2743         "%matplotlib inline\n",
2744         "plt.figure(figsize=(16,4))\n",
2745         "plt.plot(rh,linestyle='-',c='k',label='Dew point')\n",
2746         "plt.title(station['STID'] + ' relative humidity')\n",
2747         "plt.xlabel('Time (hours)') \n",
2748         "plt.ylabel('Relative humidity (%)')\n",
2749         "plt.legend()"
2750       ]
2751     },
2752     {
2753       "cell_type": "code",
2754       "execution_count": null,
2755       "metadata": {
2756         "id": "MWTJ5b2kc91p"
2757       },
2758       "outputs": [],
2759       "source": [
2760         "%matplotlib inline\n",
2761         "plt.figure(figsize=(16,4))\n",
2762         "plt.plot(Ed,linestyle='-',c='r',label='drying equilibrium')\n",
2763         "plt.plot(Ew,linestyle=':',c='b',label='wetting equilibrium')\n",
2764         "plt.title(station['STID'] + ' drying and wetting equilibria')\n",
2765         "plt.xlabel('Time (hours)') \n",
2766         "plt.ylabel('Fuel moisture contents (%)')\n",
2767         "plt.legend()"
2768       ]
2769     },
2770     {
2771       "cell_type": "markdown",
2772       "metadata": {
2773         "id": "jY3_eeBRc91p"
2774       },
2775       "source": [
2776         " "
2777       ]
2778     },
2779     {
2780       "cell_type": "code",
2781       "execution_count": null,
2782       "metadata": {
2783         "id": "PQKSRvRSAlBJ"
2784       },
2785       "outputs": [],
2786       "source": [
2787         "%matplotlib inline\n",
2788         "plt.figure(figsize=(16,4))\n",
2789         "plt.plot(rain,linestyle='-',c='k',label='Precipitation')\n",
2790         "plt.title(station['STID'] + ' Precipitation' )\n",
2791         "plt.xlabel('Time (hours)') \n",
2792         "plt.ylabel('Precipitation (mm/hour)')\n",
2793         "plt.legend()"
2794       ]
2795     },
2796     {
2797       "cell_type": "code",
2798       "execution_count": null,
2799       "metadata": {
2800         "id": "Dwbt4UXfro5x"
2801       },
2802       "outputs": [],
2803       "source": [
2804         "print(rain[1900:2000])"
2805       ]
2806     },
2807     {
2808       "cell_type": "markdown",
2809       "metadata": {
2810         "id": "_yRu_7WvHc6P"
2811       },
2812       "source": [
2813         "Precipitation from RTMA is in kg/m${}^2$. 1m water depth over 1m${}^2$ is 1m${}^3$ with mass 1000 kg thus 1 kg/m${}^2$ is the same as 1 mm of precipitation. RTMA values are accumulations over 1 h so these are values in mm/h. So 9999 mm/h = 10m/h makes no sense. Replace anything over 1m/h by nan and try again."
2814       ]
2815     },
2816     {
2817       "cell_type": "code",
2818       "execution_count": null,
2819       "metadata": {
2820         "id": "XPYO_Iuvc91q"
2821       },
2822       "outputs": [],
2823       "source": [
2824         "rain[rain > 1000] = np.NaN"
2825       ]
2826     },
2827     {
2828       "cell_type": "code",
2829       "execution_count": null,
2830       "metadata": {
2831         "id": "GYWTfbBBc91q",
2832         "scrolled": true
2833       },
2834       "outputs": [],
2835       "source": [
2836         "%matplotlib inline\n",
2837         "plt.figure(figsize=(16,4))\n",
2838         "plt.plot(rain,linestyle='-',c='k',label='Precipitation')\n",
2839         "plt.title(station['STID'] + ' Precipitation' )\n",
2840         "plt.xlabel('Time (hours)') \n",
2841         "plt.ylabel('Precipitation (mm/hour)')\n",
2842         "plt.legend()"
2843       ]
2844     },
2845     {
2846       "cell_type": "markdown",
2847       "metadata": {
2848         "id": "Q_L0R2Njc91q"
2849       },
2850       "source": [
2851         "Fix some missing data, then we can use the data for up to 1942 hours until a biger gap."
2852       ]
2853     },
2854     {
2855       "cell_type": "code",
2856       "execution_count": null,
2857       "metadata": {
2858         "id": "_tkU7UJic91q"
2859       },
2860       "outputs": [],
2861       "source": [
2862         "# fix isolated nans\n",
2863         "def fixnan(a,n):\n",
2864         "    for c in range(n):\n",
2865         "        for i in np.where(np.isnan(a)):\n",
2866         "            a[i]=0.5*(a[i-1]+a[i+1])\n",
2867         "        if not any(np.isnan(a)):\n",
2868         "            break\n",
2869         "    return a\n",
2870         "\n",
2871         "rain=fixnan(rain,2)\n",
2872         "t2=fixnan(t2,2)\n",
2873         "rh=fixnan(rh,2)\n",
2874         "obs_data=fixnan(obs_data,2)\n",
2875         "Ed=fixnan(Ed,2)\n",
2876         "Ew=fixnan(Ew,2)\n",
2877         "\n",
2878         "print(np.where(np.isnan(rain)))\n",
2879         "print(np.where(np.isnan(t2)))\n",
2880         "print(np.where(np.isnan(rh)))\n",
2881         "print(np.where(np.isnan(obs_data)))"
2882       ]
2883     },
2884     {
2885       "cell_type": "markdown",
2886       "metadata": {
2887         "id": "XqQYnyI9DIy1"
2888       },
2889       "source": [
2890         "## 4 Results"
2891       ]
2892     },
2893     {
2894       "cell_type": "markdown",
2895       "metadata": {
2896         "id": "2tIC_Tqnc91r"
2897       },
2898       "source": [
2899         "### 4.1 Kalman filter with fuel moisture observations, followed by forecasting\n",
2900         "We run the model first with Kalman filter for 150 hours. The observations are the RAWS data\n",
2901         "After 150 hours, we run in forecast mode - the RAWS data are no longer used, and we run the model from the weather data without the Kalman filter. The weather data are taken to be RTMA interpolated to one RAWS location.\n",
2902         "In a real forecasting application, the model would be run from weather forecast rather than data."
2903       ]
2904     },
2905     {
2906       "cell_type": "code",
2907       "execution_count": null,
2908       "metadata": {
2909         "id": "aXnSQM7wc91r"
2910       },
2911       "outputs": [],
2912       "source": [
2913         "# run KF on an initial data seqment\n",
2914         "import numpy as np\n",
2915         "import matplotlib.pyplot as plt \n",
2916         "\n",
2917         "hours=1200 # total simulation\n",
2918         "h2 = 300\n",
2919         "m = np.zeros(hours) # preallocate\n",
2920         "m[0]= obs_data[0]             # initial state  \n",
2921         "P = np.zeros(hours)\n",
2922         "P[0] = 1e-3 # background state variance\n",
2923         "H = np.array([1.])   # all oQ = np.array([0.02]) # process noise variancebserved\n",
2924         "Q = np.array([1e-3]) # process noise variance\n",
2925         "R = np.array([1e-3]) # data variance\n",
2926         "for t in range(hours-1):\n",
2927         "    # using lambda construction to pass additional arguments to the model \n",
2928         "    if t < h2 and not np.isnan(obs_data[t]) and not np.isnan(Ew[t]) and not np.isnan(rain[t]): # advance model and run KF\n",
2929         "        m[t+1],P[t+1] = ext_kf(m[t],P[t],lambda u: model_moisture(u,Ed[t],Ew[t],rain[t],t,partials=1),Q,\n",
2930         "                    d=obs_data[t],H=H,R=R)\n",
2931         "    else:  # just advance to next hour, no process noise\n",
2932         "        m[t+1],P[t+1] = ext_kf(m[t],P[t],lambda u: model_moisture(u,Ed[t],Ew[t],rain[t],t,partials=1),Q*0.0)"
2933       ]
2934     },
2935     {
2936       "cell_type": "code",
2937       "execution_count": null,
2938       "metadata": {
2939         "id": "peMi-OF3c91r",
2940         "scrolled": true
2941       },
2942       "outputs": [],
2943       "source": [
2944         "%matplotlib inline\n",
2945         "plt.figure(figsize=(16,4))\n",
2946         "plt.plot(Ed[:hours],linestyle='--',c='r',label='Drying Equilibrium')\n",
2947         "plt.plot(Ew[:hours],linestyle='--',c='b',label='Wetting Equilibrium')\n",
2948         "plt.plot(obs_data[:hours],linestyle=':',c='k',label='RAWS data')\n",
2949         "plt.plot(m[:h2],linestyle='-',c='k',label='filtered')\n",
2950         "plt.plot(range(h2,hours),m[h2:hours],linestyle='-',c='r',label='forecast')\n",
2951         "plt.title(station['STID'] + ' Kalman filtering and forecast with real data')\n",
2952         "plt.xlabel('Time (hours)') \n",
2953         "plt.ylabel('Fuel moisture content (%)')\n",
2954         "plt.legend()"
2955       ]
2956     },
2957     {
2958       "cell_type": "markdown",
2959       "metadata": {
2960         "id": "3TnwXYcLc91r"
2961       },
2962       "source": [
2963         "Clearly, there is a problem - the forecast fuel moisture is too high. We need to assimilate also some parameters of the model, not just its output state. "
2964       ]
2965     },
2966     {
2967       "cell_type": "markdown",
2968       "metadata": {
2969         "id": "8SuVNg8TsW4d"
2970       },
2971       "source": [
2972         "### 4.3 Kalman filter on the augmented model"
2973       ]
2974     },
2975     {
2976       "cell_type": "markdown",
2977       "metadata": {
2978         "id": "FYAbWNCfk2wD"
2979       },
2980       "source": [
2981         "Run augmented filter and plot the result:\n"
2982       ]
2983     },
2984     {
2985       "cell_type": "code",
2986       "execution_count": null,
2987       "metadata": {
2988         "id": "Q3NHr3oBsDg6"
2989       },
2990       "outputs": [],
2991       "source": [
2992         "m,Ec = run_augmented_kf(obs_data,Ed,Ew,rain,h2,hours)  # extract from state"
2993       ]
2994     },
2995     {
2996       "cell_type": "code",
2997       "execution_count": null,
2998       "metadata": {
2999         "id": "hlkby_oTlB_f"
3000       },
3001       "outputs": [],
3002       "source": [
3003         "def plot_moisture(hmin,hmax):\n",
3004         "  print('training from 0 to',h2,'plot from',hmin,'to',hmax)\n",
3005         "  plt.figure(figsize=(16,4))\n",
3006         "  plt.plot(range(hmin,hmax),Ed[hmin:hmax],linestyle='--',c='r',label='Drying Equilibrium (%)')\n",
3007         "  plt.plot(range(hmin,hmax),Ew[hmin:hmax],linestyle='--',c='b',label='Wetting Equilibrium (%)')\n",
3008         "  plt.plot(range(hmin,hmax),Ec[hmin:hmax],linestyle='--',c='g',label='Equilibrium Correction (%)')\n",
3009         "  plt.plot(range(hmin,hmax),obs_data[hmin:hmax],linestyle='-',c='b',label='RAWS data (%)')\n",
3010         "  plt.plot(range(hmin,hmax),rain[hmin:hmax],linestyle='-',c='b',label='RTMA rain (mm/h)')\n",
3011         "  if hmin>=h2:\n",
3012         "    plt.plot(m[hmin:h2],linestyle='-',c='k',label='Filtered')\n",
3013         "  h1 = np.maximum(hmin,h2)\n",
3014         "  plt.plot(range(h1,hmax),m[h1:hmax],linestyle='-',c='r',label='Forecast (%)')\n",
3015         "  plt.title(station['STID'] +' Kalman filtering and forecast with augmented state, real data. Training 0:%i hmax' % h2)\n",
3016         "  plt.xlabel('Time (hours)') \n",
3017         "  plt.ylabel('Fuel moisture content (%)')\n",
3018         "  plt.legend()"
3019       ]
3020     },
3021     {
3022       "cell_type": "code",
3023       "execution_count": null,
3024       "metadata": {
3025         "id": "q-h5omKgnow2"
3026       },
3027       "outputs": [],
3028       "source": [
3029         "plot_moisture(0,hours)"
3030       ]
3031     },
3032     {
3033       "cell_type": "markdown",
3034       "metadata": {
3035         "id": "0w0YtHtqnza5"
3036       },
3037       "source": [
3038         "A detailed view of transition from training to forecast:"
3039       ]
3040     },
3041     {
3042       "cell_type": "code",
3043       "execution_count": null,
3044       "metadata": {
3045         "id": "B7sXGUotc91s"
3046       },
3047       "outputs": [],
3048       "source": [
3049         "plot_moisture(0,600)\n",
3050         "\n"
3051       ]
3052     },
3053     {
3054       "cell_type": "code",
3055       "execution_count": null,
3056       "metadata": {
3057         "id": "xy7sIs0z_Kk6"
3058       },
3059       "outputs": [],
3060       "source": [
3061         "plot_moisture(300,800)"
3062       ]
3063     },
3064     {
3065       "cell_type": "code",
3066       "execution_count": null,
3067       "metadata": {
3068         "id": "TvlCtT0X2ejp"
3069       },
3070       "outputs": [],
3071       "source": [
3072         "plot_moisture(800,1200)"
3073       ]
3074     },
3075     {
3076       "cell_type": "markdown",
3077       "metadata": {
3078         "id": "7W03QTo3c91t"
3079       },
3080       "source": [
3081         "Filtering by extended Kalman filter using RAWS data until 150 hours, then forecasting mode - running the model from interpolated RTMA only. For the first 60 hours the forecast is good, the equilibium correction made the model quite close to data. But then the big spike in equilibrium moisture around 230 hours attracted the solution, and it took a while for it to get back. The spike in the RAWS measurement is there but much smaller. The model becomes inaccurate during periods when the fuel moisture equilibrium is large.\n",
3082         "\n",
3083         "Possible reasons include: 1. There was something in the data we do not know about - maybe it rained but RTMA did not tell us. Try comparing with data from the RAWS itself? 2. The model is too simple, assumes the whole depth of the wood stick is wetting and drying at the same time. Perhaps the moisture got stored in the inside layers of the measurement stick. Try a two-layer model as in van der Kamp (2017) and make the state larger? "
3084       ]
3085     },
3086     {
3087       "cell_type": "markdown",
3088       "metadata": {
3089         "id": "owEI4EtTo7Ek"
3090       },
3091       "source": [
3092         "A detailed view of rain episode:"
3093       ]
3094     },
3095     {
3096       "cell_type": "code",
3097       "execution_count": null,
3098       "metadata": {
3099         "id": "C_hoDjgtpMEJ"
3100       },
3101       "outputs": [],
3102       "source": [
3103         "plot_moisture(900,1100)"
3104       ]
3105     },
3106     {
3107       "cell_type": "markdown",
3108       "metadata": {
3109         "id": "DRraWhwdpSkV"
3110       },
3111       "source": [
3112         "It seems there is some rain that the model does not know about."
3113       ]
3114     },
3115     {
3116       "cell_type": "markdown",
3117       "metadata": {
3118         "id": "gVQxv9Blc91t"
3119       },
3120       "source": [
3121         "### 4.4 A comment on the information flow in the Kalman filter and in neural networks"
3122       ]
3123     },
3124     {
3125       "cell_type": "markdown",
3126       "metadata": {
3127         "id": "CZmR4HPAc91t"
3128       },
3129       "source": [
3130         ""
3131       ]
3132     },
3133     {
3134       "cell_type": "markdown",
3135       "metadata": {
3136         "id": "_g_OTEg6ePb9"
3137       },
3138       "source": [
3139         "## 5. Conclusion"
3140       ]
3141     },
3142     {
3143       "cell_type": "markdown",
3144       "metadata": {
3145         "id": "aNxw7xI3FqFt"
3146       },
3147       "source": [
3148         "We have shown how to combine a model and data for improved forecasting of fuel moisture from weather forecast using the Kalman filter. Augmenting the filter state by a model parameter and joint estimation of augmented state resulted in an improvement of the forecast."
3149       ]
3150     },
3151     {
3152       "cell_type": "markdown",
3153       "metadata": {
3154         "id": "IWpmDwUPGElR"
3155       },
3156       "source": [
3157         "## Contributions of authors "
3158       ]
3159     },
3160     {
3161       "cell_type": "markdown",
3162       "metadata": {
3163         "id": "jujW1VFgGOCn"
3164       },
3165       "source": [
3166         "Not applicable."
3167       ]
3168     },
3169     {
3170       "cell_type": "markdown",
3171       "metadata": {
3172         "id": "HWslw7HmGZmP"
3173       },
3174       "source": [
3175         "## Acknowledgements"
3176       ]
3177     },
3178     {
3179       "cell_type": "markdown",
3180       "metadata": {
3181         "id": "xubqDAV2GjkZ"
3182       },
3183       "source": [
3184         "This Math Clinic was sponsored by the team of investigators of the NASA grant no. 80NSSC19K1091 *Coupled Interactive Forecasting of Weather, Fire Behavior, and Smoke Impact for Improved Wildland Fire Decision Making* under the NASA ROSES18 Disasters program. The author would like to thank Brian Zhang from the Math Clinic class for bringing the reference van der Kamp et al. (2017) to his attention."
3185       ]
3186     },
3187     {
3188       "cell_type": "markdown",
3189       "metadata": {
3190         "id": "ZsNZxOv7c91t"
3191       },
3192       "source": [
3193         "## References"
3194       ]
3195     },
3196     {
3197       "cell_type": "markdown",
3198       "metadata": {
3199         "id": "vFY-iS1Wc91t"
3200       },
3201       "source": [
3202         "J. Mandel, S. Amram, J. D. Beezley, G. Kelman, A. K. Kochanski, V. Y. Kondratenko, B. H. Lynn, B. Regev, and M. Vejmelka. *Recent advances and applications of WRF-SFIRE.* Natural Hazards and Earth System Science, 14(10):2829–2845, 2014. [doi:10.5194/nhessd-2-1759-2014](https://doi.org/10.5194/nhessd-2-1759-2014)\n",
3203         "\n",
3204         "R. E. Kalman. *A new approach to linear filtering and prediction problems.* Transactions of the ASME – Journal of Basic Engineering, Series D, 82:35–45, 1960. [doi:10.1115/1.3662552](https://doi.org/10.1115/1.3662552)\n",
3205         "\n",
3206         "E. Kalnay. *Atmospheric Modeling, Data Assimilation and Predictability.* Cambridge University Press, 2003. [doi:10.1017/CBO9780511802270](https://doi.org/10.1017/CBO9780511802270)\n",
3207         "\n",
3208         "D. W. van der Kamp, R. D. Moore, and I. G. McKendry. *A model for simulating the moisture content of standardized fuel sticks of various sizes.* Agricultural and Forest Meteorology, 236:123–134, 2017. [doi:10.1016/j.agrformet.2017.01.013](https://doi.org/10.1016/j.agrformet.2017.01.013)\n",
3209         "\n",
3210         "S. F. Schmidt. *Application of state-space methods to navigation problems.* volume 3 of Advances in Control Systems, C. T.  Leondes, ed., pages 293–340. Elsevier, 1966. [doi:10.1016/B978-1-4831-6716-9.50011-4](https://doi.org/10.1016/B978-1-4831-6716-9.50011-4)\n",
3211         "\n",
3212         "M. Vejmelka, A. K. Kochanski, and J. Mandel. *Data assimilation of dead fuel moisture observations from remote automatic weather stations.* International Journal of Wildland Fire, 25:558– 568, 2016. [doi:10.1071/WF14085](https://doi.org/10.1071/WF14085)\n"
3213       ]
3214     }
3215   ],
3216   "metadata": {
3217     "colab": {
3218       "collapsed_sections": [],
3219       "name": "fmda_kf_rnn.ipynb",
3220       "provenance": []
3221     },
3222     "kernelspec": {
3223       "display_name": "Python 3",
3224       "language": "python",
3225       "name": "python3"
3226     },
3227     "language_info": {
3228       "codemirror_mode": {
3229         "name": "ipython",
3230         "version": 3
3231       },
3232       "file_extension": ".py",
3233       "mimetype": "text/x-python",
3234       "name": "python",
3235       "nbconvert_exporter": "python",
3236       "pygments_lexer": "ipython3",
3237       "version": "3.8.5"
3238     }
3239   },
3240   "nbformat": 4,
3241   "nbformat_minor": 0