├── DL_6_Segmentation_clothes_9classes.ipynb
├── Embeddings_Img_similarity_birds.ipynb
├── Finetune_CNN.ipynb
├── README.md
├── Yolov7_ANPR_ir.ipynb
├── plate_OCR_comparison.ipynb
├── segmentation_A_validation.ipynb
└── train_plate_OCR_ir.ipynb
/README.md:
--------------------------------------------------------------------------------
1 | "# Colab_notebooks"
2 |
--------------------------------------------------------------------------------
/train_plate_OCR_ir.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "id": "view-in-github",
7 | "colab_type": "text"
8 | },
9 | "source": [
10 | "
"
11 | ]
12 | },
13 | {
14 | "cell_type": "code",
15 | "source": [
16 | "import os\n",
17 | "import tensorflow as tf\n",
18 | "import keras\n",
19 | "import numpy as np\n",
20 | "import cv2 as cv\n",
21 | "import random\n",
22 | "import matplotlib.pyplot as plt"
23 | ],
24 | "metadata": {
25 | "id": "pBDUdYmfXjJd"
26 | },
27 | "execution_count": null,
28 | "outputs": []
29 | },
30 | {
31 | "cell_type": "code",
32 | "source": [
33 | "!pip install roboflow\n",
34 | "\n",
35 | "from roboflow import Roboflow\n",
36 | "rf = Roboflow(api_key=\"VdwBRxsJsFmCMW94xJjd\")\n",
37 | "project = rf.workspace(\"object-detection-yolov5\").project(\"plate_ocr_ir\")\n",
38 | "dataset = project.version(2).download(\"folder\")"
39 | ],
40 | "metadata": {
41 | "colab": {
42 | "base_uri": "https://localhost:8080/"
43 | },
44 | "id": "sQLnkBqVr9SF",
45 | "outputId": "45dae32b-5a71-4656-b7b4-5e64e8fb1c0b"
46 | },
47 | "execution_count": null,
48 | "outputs": [
49 | {
50 | "output_type": "stream",
51 | "name": "stdout",
52 | "text": [
53 | "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
54 | "Requirement already satisfied: roboflow in /usr/local/lib/python3.7/dist-packages (0.2.14)\n",
55 | "Requirement already satisfied: numpy>=1.18.5 in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.21.6)\n",
56 | "Requirement already satisfied: chardet==4.0.0 in /usr/local/lib/python3.7/dist-packages (from roboflow) (4.0.0)\n",
57 | "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.15.0)\n",
58 | "Requirement already satisfied: wget in /usr/local/lib/python3.7/dist-packages (from roboflow) (3.2)\n",
59 | "Requirement already satisfied: PyYAML>=5.3.1 in /usr/local/lib/python3.7/dist-packages (from roboflow) (6.0)\n",
60 | "Requirement already satisfied: glob2 in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.7)\n",
61 | "Requirement already satisfied: opencv-python-headless>=4.5.1.48 in /usr/local/lib/python3.7/dist-packages (from roboflow) (4.6.0.66)\n",
62 | "Requirement already satisfied: urllib3==1.26.6 in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.26.6)\n",
63 | "Requirement already satisfied: idna==2.10 in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.10)\n",
64 | "Requirement already satisfied: kiwisolver==1.3.1 in /usr/local/lib/python3.7/dist-packages (from roboflow) (1.3.1)\n",
65 | "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from roboflow) (3.2.2)\n",
66 | "Requirement already satisfied: python-dotenv in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.20.0)\n",
67 | "Requirement already satisfied: cycler==0.10.0 in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.10.0)\n",
68 | "Requirement already satisfied: tqdm>=4.41.0 in /usr/local/lib/python3.7/dist-packages (from roboflow) (4.64.0)\n",
69 | "Requirement already satisfied: Pillow>=7.1.2 in /usr/local/lib/python3.7/dist-packages (from roboflow) (7.1.2)\n",
70 | "Requirement already satisfied: certifi==2021.5.30 in /usr/local/lib/python3.7/dist-packages (from roboflow) (2021.5.30)\n",
71 | "Requirement already satisfied: requests-toolbelt in /usr/local/lib/python3.7/dist-packages (from roboflow) (0.9.1)\n",
72 | "Requirement already satisfied: pyparsing==2.4.7 in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.4.7)\n",
73 | "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.28.1)\n",
74 | "Requirement already satisfied: python-dateutil in /usr/local/lib/python3.7/dist-packages (from roboflow) (2.8.2)\n",
75 | "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.7/dist-packages (from requests->roboflow) (2.1.0)\n",
76 | "loading Roboflow workspace...\n",
77 | "loading Roboflow project...\n",
78 | "Downloading Dataset Version Zip in plate_ocr_ir-2 to folder: 100% [11679295 / 11679295] bytes\n"
79 | ]
80 | },
81 | {
82 | "output_type": "stream",
83 | "name": "stderr",
84 | "text": [
85 | "Extracting Dataset Version Zip to plate_ocr_ir-2 in folder:: 100%|██████████| 9658/9658 [00:03<00:00, 3146.72it/s]\n"
86 | ]
87 | }
88 | ]
89 | },
90 | {
91 | "cell_type": "code",
92 | "source": [
93 | "train_path = \"/content/plate_ocr_ir-2/train\"\n",
94 | "valid_path = \"/content/plate_ocr_ir-2/valid\"\n",
95 | "test_path = \"/content/plate_ocr_ir-2/test\""
96 | ],
97 | "metadata": {
98 | "id": "jxpZw3bok3Ux"
99 | },
100 | "execution_count": null,
101 | "outputs": []
102 | },
103 | {
104 | "cell_type": "code",
105 | "source": [
106 | "class_names = subdirs = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'ch', 'd', 'ein', 'f', 'g', 'ghaf', 'ghein', 'h2', 'hj', 'j', 'k', 'kh', 'l', 'm', 'n', 'p', 'r', 's', 'sad', 'sh', 't', 'ta', 'th', 'v', 'y', 'z', 'za', 'zad', 'zal', 'zh']\n",
107 | "num_classes = len(class_names)"
108 | ],
109 | "metadata": {
110 | "id": "mK881Ni5lG2f"
111 | },
112 | "execution_count": null,
113 | "outputs": []
114 | },
115 | {
116 | "cell_type": "code",
117 | "source": [
118 | "labels_nums = [i for i in range(0,len(class_names))]\n",
119 | "print(labels_nums)"
120 | ],
121 | "metadata": {
122 | "colab": {
123 | "base_uri": "https://localhost:8080/"
124 | },
125 | "id": "7a98ohwtldP_",
126 | "outputId": "c743a4b7-2690-485b-aa4e-f3a70b363503"
127 | },
128 | "execution_count": null,
129 | "outputs": [
130 | {
131 | "output_type": "stream",
132 | "name": "stdout",
133 | "text": [
134 | "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41]\n"
135 | ]
136 | }
137 | ]
138 | },
139 | {
140 | "cell_type": "code",
141 | "source": [
142 | "train_imgs = []\n",
143 | "train_labels = []\n",
144 | "for indx, subdir in enumerate(subdirs):\n",
145 | " imgfolder = os.path.join(train_path, subdir)\n",
146 | " for imgname in os.listdir(imgfolder):\n",
147 | " img = cv.imread(os.path.join(imgfolder, imgname), 0)\n",
148 | " train_imgs.append(img)\n",
149 | " train_labels.append(labels_nums[indx])\n",
150 | "\n",
151 | "c = list(zip(train_imgs, train_labels))\n",
152 | "random.shuffle(c)\n",
153 | "train_imgs, train_labels = zip(*c)\n",
154 | "\n",
155 | "train_images = np.array(train_imgs)\n",
156 | "train_labels = np.array(train_labels)"
157 | ],
158 | "metadata": {
159 | "id": "83uEUjWSk3Xv"
160 | },
161 | "execution_count": null,
162 | "outputs": []
163 | },
164 | {
165 | "cell_type": "code",
166 | "source": [
167 | "valid_imgs = []\n",
168 | "valid_labels = []\n",
169 | "for indx, subdir in enumerate(subdirs):\n",
170 | " imgfolder = os.path.join(valid_path, subdir)\n",
171 | " if os.path.exists(imgfolder):\n",
172 | " for imgname in os.listdir(imgfolder):\n",
173 | " img = cv.imread(os.path.join(imgfolder, imgname), 0)\n",
174 | " valid_imgs.append(img)\n",
175 | " valid_labels.append(labels_nums[indx])\n",
176 | "\n",
177 | "c = list(zip(valid_imgs, valid_labels))\n",
178 | "random.shuffle(c)\n",
179 | "valid_imgs, valid_labels = zip(*c)\n",
180 | "\n",
181 | "test_images = np.array(valid_imgs)\n",
182 | "test_labels = np.array(valid_labels)"
183 | ],
184 | "metadata": {
185 | "id": "siVE8t-NncUb"
186 | },
187 | "execution_count": null,
188 | "outputs": []
189 | },
190 | {
191 | "cell_type": "code",
192 | "source": [
193 | "num=90\n",
194 | "print(class_names[train_labels[num]])\n",
195 | "print(train_labels[num])\n",
196 | "plt.imshow(train_images[num])"
197 | ],
198 | "metadata": {
199 | "colab": {
200 | "base_uri": "https://localhost:8080/",
201 | "height": 317
202 | },
203 | "id": "_bHSWkmIvQel",
204 | "outputId": "0d60b658-b955-452b-e8e9-94624c04232b"
205 | },
206 | "execution_count": null,
207 | "outputs": [
208 | {
209 | "output_type": "stream",
210 | "name": "stdout",
211 | "text": [
212 | "b\n",
213 | "11\n"
214 | ]
215 | },
216 | {
217 | "output_type": "execute_result",
218 | "data": {
219 | "text/plain": [
220 | ""
221 | ]
222 | },
223 | "metadata": {},
224 | "execution_count": 181
225 | },
226 | {
227 | "output_type": "display_data",
228 | "data": {
229 | "text/plain": [
230 | ""
231 | ],
232 | "image/png": "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\n"
233 | },
234 | "metadata": {
235 | "needs_background": "light"
236 | }
237 | }
238 | ]
239 | },
240 | {
241 | "cell_type": "code",
242 | "source": [
243 | "test_labels.shape"
244 | ],
245 | "metadata": {
246 | "colab": {
247 | "base_uri": "https://localhost:8080/"
248 | },
249 | "id": "0gyRuX2pmPA9",
250 | "outputId": "7db8dbfa-46fe-463e-83dc-ad6adfc61a46"
251 | },
252 | "execution_count": null,
253 | "outputs": [
254 | {
255 | "output_type": "execute_result",
256 | "data": {
257 | "text/plain": [
258 | "(792,)"
259 | ]
260 | },
261 | "metadata": {},
262 | "execution_count": 182
263 | }
264 | ]
265 | },
266 | {
267 | "cell_type": "code",
268 | "source": [
269 | "train_images = train_images / 255.0\n",
270 | "test_images = test_images / 255.0"
271 | ],
272 | "metadata": {
273 | "id": "yfyYxNfmoX7A"
274 | },
275 | "execution_count": null,
276 | "outputs": []
277 | },
278 | {
279 | "cell_type": "code",
280 | "source": [
281 | "model = keras.Sequential([\n",
282 | " keras.layers.Flatten(input_shape=(28, 28)),\n",
283 | " keras.layers.Dense(128, activation=tf.nn.relu),\n",
284 | " keras.layers.Dense(num_classes, activation=tf.nn.softmax)\n",
285 | "])"
286 | ],
287 | "metadata": {
288 | "id": "_pJZoNMtoX9h"
289 | },
290 | "execution_count": null,
291 | "outputs": []
292 | },
293 | {
294 | "cell_type": "code",
295 | "source": [
296 | "model.compile(optimizer='adam',\n",
297 | " loss='sparse_categorical_crossentropy',\n",
298 | " metrics=['accuracy'])"
299 | ],
300 | "metadata": {
301 | "id": "iIRIf8q8oYAB"
302 | },
303 | "execution_count": null,
304 | "outputs": []
305 | },
306 | {
307 | "cell_type": "code",
308 | "source": [
309 | "model.fit(train_images, train_labels, epochs=200)\n"
310 | ],
311 | "metadata": {
312 | "id": "BCrJBnmCoumW"
313 | },
314 | "execution_count": null,
315 | "outputs": []
316 | },
317 | {
318 | "cell_type": "code",
319 | "source": [
320 | "\n",
321 | "predictions = model.predict(test_images)\n"
322 | ],
323 | "metadata": {
324 | "id": "I-zjjit1qp1X"
325 | },
326 | "execution_count": null,
327 | "outputs": []
328 | },
329 | {
330 | "cell_type": "code",
331 | "source": [
332 | ""
333 | ],
334 | "metadata": {
335 | "id": "9F9xV8M1rSTv"
336 | },
337 | "execution_count": null,
338 | "outputs": []
339 | },
340 | {
341 | "cell_type": "code",
342 | "source": [
343 | "model.save('saved_model/simple_ocr_plates_model')"
344 | ],
345 | "metadata": {
346 | "id": "0zqoLC2FrSfm"
347 | },
348 | "execution_count": null,
349 | "outputs": []
350 | },
351 | {
352 | "cell_type": "code",
353 | "source": [
354 | "!zip -r /content/saved_model/simple_ocr_plates_model.zip /content/saved_model/simple_ocr_plates_model"
355 | ],
356 | "metadata": {
357 | "colab": {
358 | "base_uri": "https://localhost:8080/"
359 | },
360 | "id": "ey-ykb2QCM4t",
361 | "outputId": "7537b2fc-c6a4-4238-9ff7-40ff8507eb27"
362 | },
363 | "execution_count": null,
364 | "outputs": [
365 | {
366 | "output_type": "stream",
367 | "name": "stdout",
368 | "text": [
369 | " adding: content/saved_model/simple_ocr_plates_model/ (stored 0%)\n",
370 | " adding: content/saved_model/simple_ocr_plates_model/assets/ (stored 0%)\n",
371 | " adding: content/saved_model/simple_ocr_plates_model/variables/ (stored 0%)\n",
372 | " adding: content/saved_model/simple_ocr_plates_model/variables/variables.data-00000-of-00001 (deflated 24%)\n",
373 | " adding: content/saved_model/simple_ocr_plates_model/variables/variables.index (deflated 59%)\n",
374 | " adding: content/saved_model/simple_ocr_plates_model/keras_metadata.pb (deflated 85%)\n",
375 | " adding: content/saved_model/simple_ocr_plates_model/saved_model.pb (deflated 87%)\n"
376 | ]
377 | }
378 | ]
379 | },
380 | {
381 | "cell_type": "code",
382 | "source": [
383 | "ocr_model = tf.keras.models.load_model('simple_ocr_plates_model')"
384 | ],
385 | "metadata": {
386 | "id": "CblYQNhcrTZk"
387 | },
388 | "execution_count": null,
389 | "outputs": []
390 | },
391 | {
392 | "cell_type": "code",
393 | "source": [
394 | "test_img_path = \"/content/plate_ocr_ir-2/test/ch/c_250_png.rf.d3aa38e2f0156f1ca06bf9206f7966aa.jpg\"\n",
395 | "test_img = cv.imread(test_img_path, 0)\n",
396 | "test_img = np.expand_dims(test_img, axis=0)\n",
397 | "predictions = ocr_model.predict(test_images)"
398 | ],
399 | "metadata": {
400 | "id": "fGdGKKb6smlK"
401 | },
402 | "execution_count": null,
403 | "outputs": []
404 | },
405 | {
406 | "cell_type": "code",
407 | "source": [
408 | "class_names[np.argmax(predictions[0])]"
409 | ],
410 | "metadata": {
411 | "colab": {
412 | "base_uri": "https://localhost:8080/",
413 | "height": 36
414 | },
415 | "id": "9EHAGKHQtF2I",
416 | "outputId": "8969ef6c-8e41-4849-b206-8c976f4cdcbd"
417 | },
418 | "execution_count": null,
419 | "outputs": [
420 | {
421 | "output_type": "execute_result",
422 | "data": {
423 | "text/plain": [
424 | "'m'"
425 | ],
426 | "application/vnd.google.colaboratory.intrinsic+json": {
427 | "type": "string"
428 | }
429 | },
430 | "metadata": {},
431 | "execution_count": 124
432 | }
433 | ]
434 | },
435 | {
436 | "cell_type": "code",
437 | "source": [
438 | "test_imgs = []\n",
439 | "test_labels = []\n",
440 | "for indx, subdir in enumerate(subdirs):\n",
441 | " imgfolder = os.path.join(test_path, subdir)\n",
442 | " if os.path.exists(imgfolder):\n",
443 | " for imgname in os.listdir(imgfolder):\n",
444 | " img = cv.imread(os.path.join(imgfolder, imgname), 0)\n",
445 | " test_imgs.append(img)\n",
446 | " test_labels.append(labels_nums[indx])\n",
447 | "\n",
448 | "c = list(zip(test_imgs, test_labels))\n",
449 | "random.shuffle(c)\n",
450 | "test_imgs, test_labels = zip(*c)\n",
451 | "\n",
452 | "test_images = np.array(test_imgs)\n",
453 | "test_labels = np.array(test_labels)"
454 | ],
455 | "metadata": {
456 | "id": "hSoYI1ZWtHvY"
457 | },
458 | "execution_count": null,
459 | "outputs": []
460 | },
461 | {
462 | "cell_type": "code",
463 | "source": [
464 | "\n",
465 | "predictions = ocr_model.predict(test_images)"
466 | ],
467 | "metadata": {
468 | "id": "N8GAbNOXtpaH"
469 | },
470 | "execution_count": null,
471 | "outputs": []
472 | },
473 | {
474 | "cell_type": "code",
475 | "source": [
476 | "num=30\n",
477 | "print(class_names[np.argmax(predictions[num])])\n",
478 | "print(np.argmax(predictions[num]))\n",
479 | "plt.imshow(test_images[num])"
480 | ],
481 | "metadata": {
482 | "colab": {
483 | "base_uri": "https://localhost:8080/",
484 | "height": 317
485 | },
486 | "id": "uYc7UFeKuQVF",
487 | "outputId": "462cdd8e-3d62-4655-b727-daf3d535e0f8"
488 | },
489 | "execution_count": null,
490 | "outputs": [
491 | {
492 | "output_type": "stream",
493 | "name": "stdout",
494 | "text": [
495 | "zh\n",
496 | "41\n"
497 | ]
498 | },
499 | {
500 | "output_type": "execute_result",
501 | "data": {
502 | "text/plain": [
503 | ""
504 | ]
505 | },
506 | "metadata": {},
507 | "execution_count": 191
508 | },
509 | {
510 | "output_type": "display_data",
511 | "data": {
512 | "text/plain": [
513 | ""
514 | ],
515 | "image/png": "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\n"
516 | },
517 | "metadata": {
518 | "needs_background": "light"
519 | }
520 | }
521 | ]
522 | },
523 | {
524 | "cell_type": "code",
525 | "source": [
526 | "y_predicted = model.predict(test_images)\n",
527 | "y_predicted_labels = [np.argmax(i) for i in y_predicted]\n",
528 | "\n",
529 | "cm = tf.math.confusion_matrix(labels=test_labels, predictions=y_predicted_labels)\n",
530 | "\n",
531 | "import seaborn as sn\n",
532 | "plt.figure(figsize = (10,7))\n",
533 | "sn.heatmap(cm, annot=True, fmt='d')\n",
534 | "plt.xlabel('Predicted')\n",
535 | "plt.ylabel('Truth')"
536 | ],
537 | "metadata": {
538 | "colab": {
539 | "base_uri": "https://localhost:8080/",
540 | "height": 463
541 | },
542 | "id": "YFlWE2XiucRU",
543 | "outputId": "acf414c7-be13-4e04-df26-897415a4f37e"
544 | },
545 | "execution_count": null,
546 | "outputs": [
547 | {
548 | "output_type": "execute_result",
549 | "data": {
550 | "text/plain": [
551 | "Text(69.0, 0.5, 'Truth')"
552 | ]
553 | },
554 | "metadata": {},
555 | "execution_count": 173
556 | },
557 | {
558 | "output_type": "display_data",
559 | "data": {
560 | "text/plain": [
561 | ""
562 | ],
563 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGtCAYAAAAxhv80AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydeXgUVdrFzxsCgYQl7CaAgAoIKAYMIiibyKIiuIKCgg7KfCoK47iMyIwjOAIqiiKooLIpgooLgihI2JE1QEIIu2xJCASCkAUCyfv9kaZNk+50VVLbvXV/z3MfOlW33nPP7e3S1XWamBkKhUKhUCgUIhBi9wAUCoVCoVAotKIWLgqFQqFQKIRBLVwUCoVCoVAIg1q4KBQKhUKhEAa1cFEoFAqFQiEMauGiUCgUCoVCGJy8cPkcwHEAO/zs+ycABlArwLG9AOwGsA/Av0rQ0NrPrL6i1HS7voye7NaX0ZPb9WX05AR9xeUwsyNbQt9RvPX2Fzgr+RCvqXu/t21sPZRPxW3l3CPHeX3zx7hc+WifVj6sPu/b9wdf0/RmrhjekLdtT+LrWnUudT+z+opS0+36MnqyW19GT27Xl9GTXfpWv9fmndjPRjWrxuzYT1zOrE/GxdNZxbY3Hv0YDo6ZDQQIzrupbWvs338Qf/xxGBcuXMDXX/+IPnf3LHU/s/qKUtPt+jJ6sltfRk9u15fRkxP0Ff4xbeFCRNcS0ctE9IGnvUxEzctSs0bPtshLO4WcnYcC9omudwWOHE31/n00JQ3R0VeUup9ZfUWp6XZ9GT3ZrS+jJ7fry+jJCfqWUJBvXLMIUxYuRPQygLkACMBGTyMAXxFRqc7nhVSqgPrD78Pht+YZN1CFQqFQKNwMFxjXLCLUpLpDALRk5gtFNxLRuwCSAIzzdxARDQUwFABerNIa/VDbu69iwysQdmUdxMS9AwAIi6qJmCVvoW77rUhPP+Htl5pyDA3qR3v/rl8vCqmpx4ppae1nVl9RarpdX0ZPduvL6Mnt+jJ6coK+JRRYt+AwDDO+OANgF4CGfrY3BLBbS401de/nTbH/V+zLuZda7uF0v1/OrVCxAe/ff5CvbtLO+8Wn62/oUup+ZvUVpabb9WX0ZLe+jJ7cri+jJ7v0Lf9ybupONqpZNWazPnEZAWAZEe0FcMSz7UoA1wAYpqVA049GoFqHlgitUQWx8Z/g8NvzcPyruKDH5efnY/iIUfh50RyUCwnBjJnzsHPnnlL3M6uvKDXdri+jJ7v1ZfTkdn0ZPTlB3wrYwlM8RkEc4OqcMhcmCgFwE4B6nk0pADYxs6Zv8Ky94gFNA+t86vfSDVChUCgUCodxMS+FrNTLO5po2CKgQv3rLRm7aVcVMXMBM69n5vmetl7rogUoXJAUbW/GhqHWqvGou+ZtLBrSxrt9QfWO+GPmF8hO3YnMhPVYUL0jFlTviORxk3Bq2zqcil+LtCWL8eu1fYpp9OzRBUk7VmHXzjV46cVnShyPGX1Fqel2fRk92a3vZE/h5cO8bfqnE5GWsh0J2+J8toeXDzNN34q+otRU+gq/WH0+TWsrek6wpMCeRXX687o+r/Hqbi/zmeTDvKhOf15Upz//etVj3ts7Rk7nQzOWsNaalzenBxbJ7MlufRk92a3vdE9Vwht7W8/u/fjWDr05KWmXz/Yq4Y2l9e+Umm7Vt/q99vzhbWxUs2rMjg2gK0qwwJ7M9btw4XS2zzEXs3K9t0PDw3D5GTEZA4tk9GS3voye7NYXydO6tZuQeeq0331u8O9mT07QtwSV42IOpQ3safpKf3SNn4zo+2/F3re+LnVNUQKLZPRkt76MnuzWF8mTHmT072ZPTtBX+EeIhUtp2TN2Hpa3eQap89eg4d9UpLJCoVAoFD4IGEAnxMKlrIE9KfPX4Ire7UpdU5TAIhk92a0voye79UXypAcZ/bvZkxP0LaGgwLhmEUIsXDZt3oZrrmmMRo0aoHz58ujXry9+WrikxGPCG//10VvdXrHI2pvqs19PTTP6ilLT7foyerJbXyRPepDRv5s9OUFf4R+zAugMJVhgT8zHz6JGhxaoUKMKum6djL1vf4s63WIQcU00uKAAuUczsOPFT3XVNLuvKDXdri+jJ7v1RfL0+Yz3cWvHdqhZszqS96zFm2+8j9mzvvbbV0b/bvbkBH0rUAF0BhJaoZ6mgS2o3lFzzT6Zq0s9HoVC4Q4CZbRcTs6F8yaPROFGrA6gO793nWGLgLAmHcQOoDOaQIE9fTJXF2uT25bD1av/h6Zrx2LNE6282w/HNsWZ7z7F+fQdyN21Bodjm+JwbFOc/fkL5O5YidwdK3Hu0Bbk7liJuhGR3ta66bVYtex77ExYhaTtKzHy+WHefXrGWtp+JfW9PBRLT2CWlTXN8i9qTbfrO9lTzoXzPq1j1/bYtHUp4rcvw7ART3i3m6VvRV9Raip9hV/sDporawCdnnCflPZd+MRTz/HxwU9y3v4DnNK+S7F2ds48/nPq5xwd2cLbYpp14h6d7ufoyBbcpH4s79/7B3dudzdHR7awPbDo8lAsrYFZVtcULQRKZk9268voye36MnqyS9/q99pzu1ezUU0F0BXByHCfvG0JKDhzJqBWpdu6IHfpMp9tx9MzsCMhGQCQnZWDvXsO4IqoOmUaq1mBRVoDs+yuKUoIlIye7NaX0ZPb9WX05AR9S1ABdOZgVbhPhZhWyD+VifyjKQH71G8QjetaNcfWLQll0rc7sMjumqKEQMnoyW59GT25XV9GT07QV/jHtIULEV1LRN2IqPJl23uZpVlWKt1+G3J/WxZwf3hEOKbNmojXXhmHrLPZAfspFAqFQiEEKoCuECJ6DsCPAJ4FsIOI+hbZ/WYJxw0los1EtLmg4K+FgSXhPuVCULFLR+T+ttzv7tDQUEybORHff7MIixf+FrCMKIFFdtcUJQRKRk9268voye36Mnpygr4lqAA6L08CuJGZ7wHQBcC/iWi4Z1/Ay6WYeSozxzJzbEhIhHe7FeE+YbE34uKhIyg4keF3/4RJo7FvzwFMnTKzxDqiBBbZXVOUECgZPdmtL6Mnt+vL6MkJ+gr/mBVAF8LMWQDAzAeJqAuAb4moIUpYuATCyHCfyNdHIax1DEIiq6HuD1/j7KczkLPw58LTREv9nyZqe3MbPPBQX+xM2o0lq+YDAMaNmYi4pcVzYewOLNIamGV3TVFCoGT0ZLe+jJ7cri+jJyfoW4IKoPMUJYoD8DwzbyuyLRTA5wAGMnO5YDW0BtDp4XBsU8192yYf19QvPVvbT96bhdawLEB7YJYZNRUKhUIRHMsD6BJ+NS6ArlVPoQPoBgHwOWnHzBeZeRCATqUpGCiwp2hQXLCwuNv2ZXlbryN5yPjwQ5yZ9gmyP/8M3983wGd/4icTcWjvWuxf/zMWV7sKi6tdhfjXXsXB5FXYt/Yn7Fv7E9b0fVDXWLUGu+mpqTUsy98CQ2sI0uSPxmP/wY1Yv2lxqe8nq/qKUtPt+jJ6cru+jJ6coK/wg91Bc2UNoCsaFBcsLK5Z7Vif1rpRR25WO5ZbRrXjbZsTuV+vx7z79j34Mu+5czjn7jrI2xv25u0Ne/Ox977klDc+8/69vWFvXeFCWoPd7A5BUgF0cnuyW19GT27Xl9GTXfpWv9fmblvERjUVQFcEPYE9esLicrJzAQCh5UMRWj4URU+bZW9MwsU/z5o6VqOD3UQKtRMlBEpGT3bry+jJ7foyenKCviWoy6HNobSBPcHC4kJCQvB93JdYu3MJ1q3cgIT4pKA1aw2+C00Wf4D6bz2HclUjiu23M9jN7hAkGUOgZPRkt76MntyuL6MnJ+gr/CPEwqU0aAmLKygowL23DUSXG+5Cq9Yt0eTaq0usefKLxdjVaSj23jkcF45nImrUEDOGrlAoFAqFNagcF3PQG9ijNSzuEmfPZGHD2i3oeFv7EvtdzDhdeOcw49TcXxF+Q/GrlOwMdrM7BEnGECgZPdmtL6Mnt+vL6MkJ+pagThWZg97AHi1hcdVrRqJK1cJfIwirGIYOnW/Cgb0HSxxHaO3q3tvVerbHuT2HyjxWLYgSgiRjCJSMnuzWl9GT2/Vl9OQEfYV/zAqgMxQ9gT1aw+Jq162FcZP+i3LlQkAUgl8W/IYVS9d491/5wQuIuPl6hFavimt/n4709+ag8s3Xo2KLxgAzLhw9jqMjJ5dprEYHu4kUaidKCJSMnuzWl9GT2/Vl9OQEfUuw8FedjcKUADoj0BpAVzciUnPNKuXDNff9Olzbl6XapMZrrqk12M3uUDcVQKdQKBT2YHUA3bmN3xi2CKh404NCB9CVGa2hcunZp4u1mFtiELdhAVZuWojBTw/0bj97IcfbqtSpis/nT8aCVXPx48qv0O9v9/nsv/VEkrdtHz0IUZumI/Tnd3y233oiCQuqd8QfM79AdupOZCasx4LqHbGgekckj5uEU9vW4VT8WqQtWYxfr+2jOSzOH2UNtfO3GAlUs0qFSj6tWePG+OWXudi8ZSk2bV6CEc8+6d1nhr4e/6LWdLu+jJ7cri+jJyfoK/xgd9BcoKY1VE5PuI/WmtGRLTQHsC2q05/X9XmNV3d7mc8kH+ZFdfrzojr9+derHvPe3jFyOh+ascSUwCIzwuL0hPo5KaxOlJpu15fRk9v1ZfRkl77lAXS/z2WjmgqgK4KeUDmt4T56agYLYMtcvwsXTvtecn0xK9d7OzQ8DJefkRMpLM7IuSqNvgrWkktfRk9u15fRkxP0LUFdVWQ+wULlShPuE6xmaWn6Sn90jZ+M6Ptvxd63fL/MandgkVmhfmboq2AtufRl9OR2fRk9OUFf4R/LFi5ENKusNbSEyjmh5iX2jJ2H5W2eQer8NWj4NxtX1AZh5lwpFAqFwgYEDKAz5XJoIlpw+SYAXYkoEgCYuU+A44YCGAoA1SpFISLsr9wUraFyesJ99AbVlZaU+WvQds6/gJGlG6fdYXGA8XMlSgiUrMFWak6VvtNrKn2LsHDBYRRmfeJSH8AZAO8CmOBpZ4vc9gszT2XmWGaOLbpoAbSFygH6wn201iwN4Y3/+uivbq9YZO1N9dlvd2CRGaF+ZumrYC259GX05HZ9GT05QV/hH7MC6GIBDAfwKoAXmXkbEeUy88rSFNMaKgdoD/fRUzNYAFvMx8+iRocWqFCjCrpunYy9b3+LOt1iEHFNNLigALlHM7DjxU9LNU69fc0IizNyrsz0L0pNt+vL6Mnt+jJ6coK+FTCrADrf4kT1AbwHIB1AH2a+Uuux9aq31DSw9OzgV7BcQk9Y3dm83OCdAMytfJPmmn0yi7/RlxUzwuLMmCc9+gqFQuFWrA6gy13xuWGLgEpd/iZ+AB0zH2XmBwEsBvCFnmO1hsrpCUDTWjM9+7TmsLg+mauLtclty+Hq1f9D07VjseaJVt7tWQunIe/4DpzbsxrHul2DY92uwYkneyE3YQnOJa9A7o5lyHiqt9/5CBRYpHWc/hYNgWrqCfUzQ1+Pf1Frul3fyZ5KG6holL4VfUWpqfQVfrE7aC5Q0xrY46QAtGB9M18YxqeeGcIX/tjPJ3p14hO9OvH5LRv59KgX+USvTnz63y9y3vZ4R4QgKX15Pdmt73RPpXk9kcm/U2q6Vd/q99qcuGlsVFMBdEWwO4DNqL4XdySAz571PYAZFF74G0oUXhn5J0+WWl/WECYVrCWXvkietL6eyOrfzZ6coG8JAl4OLcTCxe4ANjPDhbI/+RARQ55C9VnfIOKJp5AzY2qpa9rtSUZ9GT3ZrS+SJz3I6N/Nnpygr/CPEAsXmal4V19kT/0QmYMeRPbUyag84iW7h6RQKBQKt2BR5D8RNSCi5US0k4iSiGi4Z/t/iSiFiLZ52p3BhizEwsXuADYzw4XCbu+JvLWrAAB5q5cjtFnzUte025OM+jJ6sltfJE96kNG/mz05Qd8SrDtVdBHAP5m5BYCbATxDRC08+95j5hhP+zlYISEWLnYHsJkZLlRw8iTKXx8DACgf0wYFKUdLXdNuTzLqy+jJbn2RPOlBRv9u9uQEfZlg5jRmjvfcPgsgGUC90tQyK4DOUOwOYDOqb5WX/4PyrWJAVauh+uxvkDN7OrI+eBuV//4sUK4cOC8PZz94p9T6soYwqWAtufRF8qT19URW/2725AR9S7DwV50vQUSNALQGsAHALQCGEdEgAJtR+KlMZonHmxlAVxZCK9TTNDAzAtjM4li3azT1u2LZPpNHolAoAqH1NcXu1xOFnFgeQLf4A8MWAeF3Dv87PL836GEqM/tccUJElQGsBPA/Zv6OiOoCyADAAMYAiGLmv5WkI8QnLiVh94uHnoWTngXJmTfv0NSv6sjFmmsqFDJh1n9a7H5NkRG1GHQHnkVK8UtjPRBReQDzAXzJzN95jkkvsn8agIXBdIT4jgsgTtLh5I/GY//BjVi/KfiCIlDNM2/eAapSHWH9XkDFx0ej4mOvI7RNNwBA+c4PoOLjY1Bx8H9Roe/TqFatqume9PSVUV9GT3brO/W5Z1VfGfXNuJ/M0Derr7DJuRZ9OZeICMBnAJKZ+d0i26OKdLsXwI6gY7Y7Ibesybl2Jx2akdyb/fYQzp7yPOfMfL3w9sSnOf9kGud8Popzv57A2e88ydlvD+G8DT/zW29/KGV6pFP0ZfRkt76Tn3si+XeSvkojFjg596cJbFQrSQfArSg8HZQAYJun3QlgNoBEz/YFKDxV5K7kXLuTDg1L7s3+E3z8cOHtC+dRcCoNVLk6Cg7t9H6ZqiD1AOrVi9Je02T/MurL6Mlufcc/9wT1L8p9qtKIHZacaxHMvIaZiZlbFb30mZkfZebrPdv7MHNasFqmLFyIqB0RVfXcrkRErxPRT0Q0noiq6a0nY9KhnppUtSZC6lyJgrQDPttDr78Vv/y6vFQ1RZpTlQgql75Izz2R/Ityn+rBzXNqGSry38vnAHI8t98HUA3AeM+26YEOIqKhRLSZiDYXFGSbNDTBKB+GsD5P48LyeUDeOe/m0HZ3gQvyMWfOdzYOTqFQKBRCY1FyrpGYdVVRCDNf9NyOZeY2nttriGhboIOKfiO56OXQMiYdaqoZUg5hfZ7CxeT1yN8b791crmUHlLu6Fc5/PaHU4xRpTlUiqFz6Qjz3TOwro75KIxY8OVcwzPrEZQcRPe65vZ2IYgGAiJoCuKC3mIxJh1pqVug5GAWn0nBxy1LvtpBGLVH+pl44//0k4GKeJZ7snlOVCCqXvgjPPTP7yqiv0ohVcq6VmPWJyxMA3ieiUSgMlvmdiI4AOOLZpwuRkg6NSu4NqXcNQlt2QMGJoyg36D8AgLzV36PCbQ8D5UJR8cHnAQCTq3bGM8P+Zaonu+dUJYLKpe/0556o/kW5T1UasUrOLSumJud6vqDbGIULpKNFg2aCoTU5Vw/XREYH7+Rh3+nU4J1MRGtg07HXb9NcU4XVKdyKSAnbCndjeXLut28Y9l5b6YFRlozd1MuhmfkMM29n5i16Fi3+MDrcp0JYBXz9ywz8sPxL/LRqHp59aajffmbpl9Tv8hfZkgKbtAbVIaySrZ6s6itKTbfr2+3J7rA6u/2LUlPpK/xid9CclQF0zWrH+rTWjTpys9qx3DKqHW/bnMj9ej3m3WdnYJGeYC2tQXV5G34WKoTJKfoyerJb3w5PTgqrU/ep0ndUAN2819moZtWYXRtABwA52bkAgNDyoQgtH3op3c8SfcMCmzQG1VHl6o7yJIq+jJ7s1rfbE2BvWJ3d/kWpqfQtgtm4ZhFCLFzMCvcJCQnB93FfYu3OJVi3cgMS4pMs0zcjhKikoLr8P3x//sFuT6Loy+jJbn27PelBRv+i1FT6ikAIsXAxi4KCAtx720B0ueEutGrdEk2uvdruIZWeIEF1+cnrbRycQqFQKByJSs41B7PDfc6eycKGtVvQ8bb2lukbGkIUJKgub9GnZdK3O4RJlGAtpS+GJz3I6F+UmkrfItTCxRzMCPepXjMSVapWBgCEVQxDh8434cDeg5bpGxlCpDeozgmeRNGX0ZPd+nZ70oOM/kWpqfQVgTArgM5QzAj3qV23FsZN+i/KlQsBUQh+WfAbVixdY5m+UYFNWoPq8lMPAEVyXOz2JIq+jJ7s1rfbE2BvWJ3d/kWpqfQtQgXQGYebA+j0hGWpADqFIjgqgE4hCpYH0M16xbgAukFjxQ+gMxIjwn32nU71aVff1BQ/rpmLheu+xn1P3uuzL7x8mLdN/3Qi0lK2I2FbnM/2QC+GZQ0syrlwvljr2LU9Nm1divjtyzBsxBPe7VVHLvZpD67IxZE+ryD1nlfxRuZVPvv2zPoSWak7kZGwHrNrdcHsWl2Q+P4nOLVzEzK2/Y4/fvwBc6+60xRPVvUVpabb9a32pPX55G/RIoN/u2va+XpqVd+SAkW1+tezwHY1dgfNWRlAp6dfacKq7A5MCtZv6T2jeXGPkZyZfJjnRA3gOVEDOO6hsfxV/Ud4TtQATvpwASd9uMBRnuzWl9GT3foyenK7voyvp0bp6wk/rBLe2PoAuhkvs1FNBdAVwe7AIK1hVWbpG1XzxIZdyMvM8jnm2MpEcH7hOc6TW/YhPKqGozzZrS+jJ7v1ZfTkdn0ZX0+d4N8S1FVFhRBRBSIaRES3e/4eQEQfEtEzRFRebz27A4PMGKsTPV31cGekxW23RN9u/272ZLe+jJ7cri/j66lZ+oqyY9ZVRdM9tcOJaDCAygC+A9ANwE0ABpukqyglLZ7ri4KL+Tj43Vq7h6JQKBQKq7DwkxKjMGvhcj0ztyKiUAApAKKZOZ+IvgBQ/L/0HohoKIChAEDlqiEkJAKA/YFBehAlBKoojft1Qr3bWyOu/5uO82S3voye7NaX0ZPb9WV8PTVL33EIeDm0Wd9xCSGiCgCqAAgHUM2zPQxAwFNFzDyVmWOZOfbSogWwPzBID6KEQF0iqksrNH+6N1Y9NgH5uXmO82S3voye7NaX0ZPb9WV8PTVLX1F2zPrE5TMAuwCUA/AqgG+I6ACAmwHM1VvM7sAgrWFVZukbVbPDlGdQp31zhNWogr6bJyFxwrdoMawPQsLKo+u8VwAAGVv2AU+scIwnu/Vl9GS3voye3K4v4+upE/xbARc4M8utJEwLoCOiaABg5lQiigRwO4DDzLxRy/FmBNDpQev19CKFVc2u1UVTv0czVpg6DoVC4S5kfD3Vit5sljPZBywNoMv5eLhh77Xh//e+2AF0zJzKzKme26eZ+VutixZ/BAr3qRsR6dNaN70Wq5Z9j50Jq5C0fSVGPj/Mu09rTUB7YJWecCE9+lr76tF/NGOFT/uiDdBmxWi0XfUGEh9v6d1+dvZQ7P1wIPp3vQrdb4pG95vq4eOnO+Hs7KHeNvn/OuLqxpUREqJtnHo8laWvKDXdri+jJ7fra+03+aPx2H9wI9Zv0pbkLfqc6gkUlXHhZgp2B82VNYAuOrKFT4tp1ol7dLqfoyNbcJP6sbx/7x/cud3dHB3ZwpQQIj3hQqLo58z9Lx+a9jJvefc5zpn7Xz4x81W+vf2NnPjBPzhn7n/5wCcv8uA7OnHntjFcPkyMECgn1XS7voye3K6vAuiMq2n1e232lGFsVFMBdEXQE+5zPD0DOxKSAQDZWTnYu+cAroiqU6aaZoQLOV2/dpVKaB5dGEYXEVYeV9WuiuNncgAA7yyOx4ierQEiXTXN7itKTbfry+jJ7foqgM4cfUsoYOOaRQixcCltuE/9BtG4rlVzbN2SUKaaZoQLiaSfkpmFXWmZuL5+LSxPPoraVSuh2RXVy1TT7hAoGYOtRNGX0ZPb9VUAnb2v527DrKuKbCc8IhzTZk3Ea6+MQ9bZbLuHIyw55y/ghbmr8eIdN6JcCOGzVUn4aHBXu4elUCgUCiNQAXTmoDfcJzQ0FNNmTsT33yzC4oW/lbmmGeFCIuhfyC/AP+euxp2tGqFbiwbYm34aKaez0G9K4Zfqjp/JQf164UhJzUV+PgsVAiVjsJUo+jJ6cru+CqCz9/W8TAi4cBHiVJHecJ8Jk0Zj354DmDplpiE1zQgXcro+M+P1H9ajce1qePSW5gCAJnUjsfzl+7H4+b5Y/Hxf1KkajqMpOcjPZ1M9iRKspfTd68nt+iqAzt7Xc7chxCcuesJ92t7cBg881Bc7k3Zjyar5AIBxYyYibunqUtc0I1zI6frbDp/Awu0H0aRuJPpN+RkA8OztN6Bj03p+dc30JEqwltJ3rye366sAOnP0LcGkLDczMS2ArqxoDaDzl88SiPRs439KXE+4kBnX6Juhf3b2UM01qzw6VXNfhULhTtwcQKeXi3kp1gbQvfukcQF0z08TO4DOaAKF+6Rnny7WYm6JQdyGBVi5aSEGPz3Qu11rTT36esKFtNbUEypXlmCjQPpVHp1arD0wew8Ot34EKTcOwpiE8t7tZsxpWfqKUtPt+jJ6cru+EYGeTvPkBH2FH+wOmitrAJ0TAoOM1rc71E7GOXVSTbfry+jJ7foyerJL3/IAureHsFFN6AA6IqpGROOIaBcRnSKik0SU7Nmm/dyOB5ECg+wMbBLJkyj6MnqyW19GT27Xl9GTE/QtgQuMaxZh1qmirwFkAujCzDWYuSaArp5tun8GU6TAIDsDm0TyJIq+jJ7s1pfRk9v1ZfTkBH2Ff8y6qqgRM48vuoGZjwEYT0R/M0lToVAoFAqFHiyM6jcKsxYuh4joJQAzmTkdAIioLoDHABwJdBARDQUwFACoXDWEhEQAECswyM7AJpE8iaIvoye79WX05HZ9GT05Qd8KWAXQeekPoCaAlZ7vuJwCsAJADQAPBjqImacycywzx15atABiBQbZGdgkkidR9GX0ZLe+jJ7cri+jJyfoK/xjyicuzJwJ4GVP84GIHgcwXU89kQKD7AxsEsmTKPoyerJbX0ZPbteX0ZMT9C1BwFNFlgfQEdFhZr4yWD+tAXQyYneonUKhUCjsweoAuuw3HjHsvTZi1BfiBtARUUKAlgigbmlqihQYVFZ9M0Lt7PYEACkzZyMndSf+TPgdK2u092l7R76Ji3kpWHtND9P0nVTT7foyenK7voyenKCv8IMZ4TAA0gHEAGh4WWsEIFUF0IlT00j9hL6jeOvtL3BW8iFeU/d+b9vYevxJipMAACAASURBVCifitvKuUeO8/rmjznKv9PnVER9GT25XV9GT3bpWx1Al/X6ADaqCR1AB2AhgMrMfOiydhCFX9LVhUiBQSoEKnC/M+uTcfF0VrHjGo9+DAfHzA74Y19qTuXSl9GT2/Vl9OQEfUsoKDCuWYQpCxdmHsLMawLsG6C3nkiBQSoESl+wUo2ebZGXdgo5Ow8F7KPmVC59GT25XV9GT07QV/jHrBwXhSIoIZUqoP7w+5DUf4zdQ1EoFAp3IuBVRUIsXEQKDFIhUNpqAkDFhlcg7Mo6iIl7BwAQFlUTMUveQt32W5GefsJUfRnnVBR9GT25XV9GT07QtwQLf2PIKMz6jouhiBQYpEKgtAcr5ew6jE3XDcGWtk9jS9uncT7tJLb1eMln0WK3f5HmVBR9GT25XV9GT07QV/hHiE9cRAoMUiFQgfs1/WgEqnVoidAaVRAb/wkOvz0Px7+K86vpFP9On1MR9WX05HZ9GT05Qd8SBDxVZHkAnVbcHEAnKytrtNfUr/Op300eiUKhUDgTqwPosl6537D32spj54sbQGcGgQJ7wsuH+bTpn05EWsp2JGyLK7ZPa009+mXpa0RNM/ybNaedT/3u096MDUOtVeNRd83bWDSkjXf77FpdsGfWl8hK3YmMhPWYXasLZtfqgsT3P8GpnZuQse13/PHjD5h71Z2mzKkVNZ2s/3BUO2/7xy33Yv/WNd529uRezHh1jHe/KJ6Uvpg1lb7CL1aH3WhtWgN7qoQ39mk9u/fjWzv05qSkXcX2yRhYZIZ/u+d0TtQAXnrPaF7cYyRnJh/mOVEDeE7UAI57aCx/Vf8RnhM1gJM+XMBJHy4Q5n4SSf+RK+/12x5tdD9npp/i4e2HereJ4knpi1fTrfpWv9eefeleNqoJHUBHRFWJaCwRzSaiAZftm6K3np7AnnVrNyHz1GlDa4oUWGSGfzvm9MSGXcjL9A2rO7YyEZxf+A34k1v2ITyqhmn6ZtYUSb8oLW+5HscPp+Nkygm/+0XxpPTFqKn0LaKAjWsWYdapoukACMB8AA8R0XwiunRe4Wa9xcwI7HF7YJHdNcuqf9XDnZEWt910fVkfJ6WZ/5v73IrfF6wOuF8UT0pfjJpKXxEIsxYuVzPzv5j5B2buAyAeQBwR1TRJT+EiWjzXFwUX83Hwu7V2D8U1lCsfija3t8XGRevsHopCoTASLjCuWYRZl0OHEVEIc6ETZv4fEaUAWAWgcqCDiGgogKEAQOWqISQkAoA5gT1uDyyyu2Zp9Rv364R6t7dGXP83LdGX9XGid/5v6NIaB3ccwJmMPwP2EcWT0hejptK3CAEvhzbrE5efANxWdAMzzwDwTwB5gQ5i5qnMHMvMsZcWLYA5gT1uDyyyu2Zp9KO6tELzp3tj1WMTkJ9b/GEk0v0kiv4l2vfpiN8X+P35MeE8KX0xaip9a+ACNqyVBBE1IKLlRLSTiJKIaLhnew0iWkpEez3/Vg82ZlM+cWHmlwJs/4WIiv9XOQh6Ans+n/E+bu3YDjVrVkfynrV48433MXvW12WqKVJgkRn+7ZjTDlOeQZ32zRFWowr6bp6ExAnfosWwPggJK4+u814BAGRs2Qc8scLUOZX1caKnb1ilMLTseAM+H/mx3/2ieVL6YtRU+tJxEcA/mTmeiKoA2EJESwE8BmAZM48jon8B+BeAl0sqZHkAHREdZuYrg/XTGkDnL0skEDkXzmvuKwpm+Ld7TmfX6qK576MZKwzXdzv+8lkC8VXaBhNHolC4D6sD6M4+19uwRUCVDxZqHjsR/QjgQ0/rwsxpRBQFYAUzNyvpWLMuh04I0BIB1C1NzUCBPTkXzhdrHbu2x6atSxG/fRmGjXjCu11rTT36ZelrRE2t3vX4t3tOH81YUax90QZos2I02q56A4mPt/Rufzm6s0/74dWxSElcj5QdG/DjqLE++0o7VhkeJ3r6fpW2waedur4SRi19G68tm4AGj8T67BPFk9IXs6bSt4CCAuOaRoioEYDWADYAqMvMaZ5dx6BljWBGOAyAdAAxABpe1hoBSDUygM4JgUFO0ZfRU7C+Ixs+7G0Tu7/Ix3Yd5teaDeZRVw3kvasT+Z1OI7z7RfEku76MntyuL6Mnu/StDqA788wdbFRD4cU1m4u0oX7WB5UBbAFwn+fv05ftz7QlgA7AQgCVmfnQZe0ggBV6i4kUGKRCoOzTr3NNPRzZtg8XzuWhIL8ABzcko2WvtkJ7klFfRk9u15fRkxP0LcHAALqiF9h42tSiUkRUHoX5bl8y83eezemeU0Tw/Hs82JBNWbgw8xBm9nsJAjMP0FtPpMAgFQJln3767iNo1PZaVIqsjPIVK6Bp1xhUi/IfHSSKJxn1ZfTkdn0ZPTlB3xIsSs4lIgLwGYBkZn63yK4FAAZ7bg8G8GOwIZuV46JQWM6J/alY9fFPeHz2K8jLOYe0nYdQoOO8q0KhUChM4xYAjwJIJKJtnm0jAYwD8DURDQFwCEC/YIWEWLiIFBikQqDs0weALV+vwJavVwAAur/YH2fSTgrtSUZ9GT25XV9GT07QtwKrriz2nIUJdNVRNz21zPqOi6GIFBikQqDsDUuLqFkVAFAtuiZa9mqL7Qv8R9SL4klGfRk9uV1fRk9O0LcEAX9kUYhPXEQKDFIhUPaGpQ34aATCq1dG/sV8LPj3dJw7kyO0Jxn1ZfTkdn0ZPTlBX+EfywPotKI1gE7hbvzlswRifOpKE0eiUCgUZcfqALozQ7ob9l5b9bOlloxdiFNFgFiBQSoEyjr98akrfdq26wiDlozB47/9DzzwOp99O2bNwdnUnTiesB6T63TF5Dpdsfjxl3E8cQMunDuCebf/DZPrdLXdU3j5MJ82/dOJSEvZjoRtccX2WTFW5Unpu9WTE/TNxqrfKjJ20BaF3ACoo6e/SIFBTtGX0ZOR+j/eN5q/7fkqn0w+zB/XG8gf1xvIczu/yF91fIFT1u3kb+8YxR/XG2i7pyrhjX1az+79+NYOvTkpaVexfXbPqZs9KX25Pdmlb3UA3enHurFRzaoxmxX5X+OyVhPARiKqTkQ19NYTKTBIhUA5Vz9tw26cO53lc8zpfan480Da5aUc4wkA1q3dhMxTpwOO0Ux95Unpu9WTE/QtQcAv55p1qigDhZG+l9pmAPUAxHtu60KkwCAVAiWGvlbs9mT3WJUnpe9WT07Qt4QCA5tFmLVweRHAbgB9mLkxMzcGcNRz+yqTNBUKhUKhUEiOKZdDM/MEIpoH4D0iOgLgNQBBP0cioqEo/JEmULlqCAmJACBWYJAKgRJDXyt2e7J7rMqT0nerJyfoW4GlX6o1CNOuKmLmo8z8IAp/VHEpgHANx3h/oOnSogUQKzBIhUCJoa8Vuz3ZPVblSem71ZMT9C1BwO+4mB5Ax8wLiGgpgKsBgIgeZ+bpemqIFBikQqCcq9/tw2cQ1b45KtaojIGbPsDmCfNx/nQ2bhkzCJVqVMEdM1/AyaRDQI/ljvEEAJ/PeB+3dmyHmjWrI3nPWrz5xvuYPetrR8yp8qT0ZfXkBH2FfywPoCOiw8x8ZbB+KoBOYTT+Mlr88czx5cE7mYi/LJNA5Fw4b+JIjENGTwqFGVgdQHe6f1fD3msj5y0XN4COiBICtEQAdUtTU6TAIBUC5Uz9Z44v92kLYhhd4l5HtxVjcGhwC+/2A1u/w0P3dUD3rs3Ro2sLTJ34T+SmrsbWlTNxX+9Y9Op2Hf72yG04sfcXUzzlXDjv0zp2bY9NW5cifvsyDBvxhM8+u+fUzZ6UvvyenKBvNiqA7q+wuXQAMQAaXtYaAUhVAXTi1HSjfkryJt625lfOO7GfMw8mcvduXTl5Yxzf2+cuXrvke847sZ/nTp/CE/73mjCenKQvoye368voyS59qwPoTj3QmY1qQgfQAVgIoDIzH7qsHUThl3V1IVJgkAqBEl+/dq0aaNHsGgBAREQ4rmrYAOknTuLQkRTExlwPAGjftg2WrlwjjCcn6cvoye36Mnpygr4lqByXQph5CDOvCbBvgN56IgUGqRAoufRT0tKRvHc/WrVshqsbN0Tc6t8BAEuWr8ax9AwhPdmtL6Mnt+vL6MkJ+lYg4qkiYX5kUaGwmpycXPzj1Tfw8nN/R+WICIwZ+Q/M/W4h+v3tWWTn5KJ8edMvylMoFArFZQjxyitSYJAKgZJD/8LFixjx6hu4q0dXdO9yCwDgqoYNMG3imwCAg4ePYtW6jYjfnqa5pt2enKIvoye368voyQn6lmDhKR6jEOITF5ECg1QIlPj6zIz/jJ2Iqxo2wOCH7vMeczKz8EcBCwoK8MnMueh3z53CeHKSvoye3K4voycn6FsBFxjXrEKIT1xECgxSIVDi629NSMJPvyxDk6sb4f7BhZcqDv/7YBw6moq53y0EANzeuQPuvasHgDeE8OQkfRk9uV1fRk9O0Ff4x/IAOq2oADqFXeSmrtbct1J0RxNHolAo3IbVAXQn7+ps2HttzUUrxQ2gMwORAoNUCJR1+nUjIr2tddNrsWrZ99iZsApJ21di5PPDfPZrrdmoyd0+rUOXJ7EpOQN/ZDAOnCjAmHfmefcd/2IGzqUmIStxHeKj2yA+ug1S3nobuYcTcHbbapzdthp7Bzwp1Jzq6ad1/sPLh/m06Z9ORFrKdiRsiyu2z25PSt85NZW++Yh4qsjSoBs9TaTAIKfoy+gpWN/oyBbeFtOsE/fodD9HR7bgJvVjef/eP7hzu7u9+0tTM1jdfQ++zHvuHM65uw7y9oa9eXvD3nzsvS855Y3PvH9vb9hbqDnV00/rPFUJb+zTenbvx7d26M1JSbuK7bPbk9J3Rk236lv9XnuiVyc2qokeQFcMIqpZ2mNFCgxSIVD26R9Pz8COhGQAQHZWDvbuOYArouqUWb+kutkbk3Dxz7N+jysJUebUqHm6nHVrNyHz1Gm/+5zkSem715MT9C1BBdAVQkTjiKiW53YsER0AsIGIDhFRZ731RAoMUiFQ9ukXpX6DaFzXqjm2bkkwrKaWupeoNfguNFn8Aeq/9RzKVY0otb7dc2r2PAXDbk9K372enKBvBSKeKjLrE5e7mPlSrOjbAPoz8zUAugOYYJKmQgEACI8Ix7RZE/HaK+OQdTbb8ronv1iMXZ2GYu+dw3HheCaiRg0xbAwiYNb8KxQKBWDewiWUiC5dal2JmTcBADPvARDw9+2JaCgRbSaizQUFf73giRQYpEKg7NMHgNDQUEybORHff7MIixf+5reP3pp66gLAxYzTQEEBwIxTc39F+A1NS61v95yaOU9asNuT0nevJyfoW4H6xOUvpgD4mYhuA/ALEb1PRJ2J6HUA2wIdxMxTmTmWmWNDQv76eF2kwCAVAmWfPgBMmDQa+/YcwNQpM/3uL01NPXUBILR2de/taj3b49yeQ6XWt3tOzZwnLdjtSem715MT9K1AxIWLKQF0zDyJiBIBPAWgqUenCYAfAIzRW0+kwCAVAmWfftub2+CBh/piZ9JuLFk1HwAwbsxExC0tnsuiR7+kuld+8AIibr4eodWr4trfpyP9vTmofPP1qNiiMcCMC0eP4+jIycLOqVHzdDmfz3gft3Zsh5o1qyN5z1q8+cb7mD3ra8d5Uvru9eQEfYV/LA+gI6LHmXl6sH4qgE6hBX/5LIFIzw5+FYvemourXaWpX5vUeM01RULrXJ3Ny9VcM+fC+dIOR6EQHqsD6NK7dDHsvbbuihXSBtC9XpqDRAoMCtRXawiXSJ7s1k/PPu3TYm6JQdyGBVi5aSEGPz3QZ58ZNdukxvu0V66rirAlExH+2weYO7C9d7tIc6qnn9a5yrlw3qd17Noem7YuRfz2ZRg24gmffXZ7MqOvGwL4nPw4NaOvFa/nViDiqSJTwmEAJARoiQDOuzWATmsIl0ieZNeX0ZPd+jJ6Muq5L2oAn7pPjXs9tzqALq1jZzaqiR5AVxfAIAB3+2kn9RYTKTBIT1+jQ7js9iSjvoye7NaX0ZPevrIF8Nk9p3brA+bcp1bABWRYswqzFi4LAVRm5kOXtYMAVugtJlJgkBnhQqJ4klFfRk9268voSW9frYji3+45tVtfDyqAruyYdVVRwMQtZh5ghqZCoVAoFAr5MWXhYjQiBQaZES4kiicZ9WX0ZLe+jJ709tWKKP7tnlO79fXguAA6tvQiJkOw46oi3YgUGGRGuJAonmTUl9GT3foyetLbVyui+Ld7Tu3W14MKoCs7QnziIlJgkJ6+Rodw2e1JRn0ZPdmtL6MnvX1lC+Cze07t1gfMuU8V/rE8gE4rMgbQBbqm/3JUAJdCIRdan/uAev6Lglmv51YH0B1p282w99oGm5ZJG0BXKkQJdiqpb5UKlbytWePG+OWXudi8ZSk2bV6CEc8+6d1XFn23hUDp6Vc3ItLbWje9FquWfY+dCauQtH0lRj4/zLvPbk8vR3f2aT+8OhYpieuRsmMDfhw11mefFWM1ombnOi2LtaP7t2BPwhrs2roKSZuWe7eL4klPXzcE8Dn5uW9GX633aVn1zYbZuGbhoK0Nu9HaRAx2CtY3OrKFt8U068Q9Ot3P0ZEtuEn9WN6/9w/u3O5ujo5sIVQIk0j6pZl/OzyNbPiwt03s/iIf23WYX2s2mEddNZD3rk7kdzqN8O63e0619r2tXvdiLe1wGt9z3f3FtoviSenL7ckufavfaw/deBsb1UQPoDMUu0OAzOh7PD0DOxKSAQDZWTnYu+cAroiqU6aadnsSSV/r/Nvtqc419XBk2z5cOJeHgvwCHNyQjJa92lqmb5Z/rYjkyc36Mnpygr4VqAA6D0QUS0TLiegLImpAREuJ6E8i2kRErfXWszsEyOzAovoNonFdq+bYuiWhTDXt9iSSflFKmn+7PaXvPoJGba9FpcjKKF+xApp2jUG1qJqW6Zv52GcG3pozFh/9PBl3DbxTeE9u1pfRkxP0rUDEhYtZVxVNAfAagEgA6wD8g5m7E1E3z772JukKR3hEOKbNmojXXhmHrLPZdg/HdTh9/k/sT8Wqj3/C47NfQV7OOaTtPISCAit/zcw8Rtz3D2QcO4nImpF466uxOLzvCBI3JNo9LIVC4XDMOlVUnpkXM/NXAJiZv0XhjWUAKgY6iIiGEtFmItpcUPDXm4jdIUBm9Q0NDcW0mRPx/TeLsHjhb2Ueq92eRNIHtM2/3Z4AYMvXKzDl7lfxaf8xyP0zGycPpFmmb2ZYV8axwp8tO33yNNb8sg7XxjQT2pOb9WX05AR9KxDxy7lmLVzOEVEPInoQABPRPQBARJ0B5Ac6iJmnMnMsM8eGhER4t9sdAmRW3wmTRmPfngOYOmWmIWO125NI+oC2+bfbEwBE1KwKAKgWXRMte7XF9gXrLNM3y1PFShVRKaKS93ZspzY4uPug0J7crC+jJyfoW4E6VfQX/wfgLQAFAHoCeIqIZgBIAfCk3mJ2hwCZ0bftzW3wwEN9sTNpN5asmg8AGDdmIuKWri51Tbs9iaSvdf7t9gQAAz4agfDqlZF/MR8L/j0d587kWKZvlqfqtSPx+qevAQDKlSuHZT8sx6YVm4X25GZ9GT05Qd8KRIz8tzyAjogeZ+bpwfppDaATKdjJX0aIP9Kzg18VpdCPKPPvL58lEONTV5o4EuPwl88SiJXHk0wciULhbKwOoNt/XU/DFgFX7/hV2gC610tzkNYQID1BQFYHFqVnn/ZpMbfEIG7DAqzctBCDnx7o3V4W/ZL6lTaozyh9K/qW1K+082+1p/GpK33atusIg5aMweO//Q888Dqffce/mIFzqUnISlyH+Og2iI9ug5S33kbu4QSc3bYaZ7etxt4B/j/ktPI+XXk8yadVjKmNKXEf4ZMVn6Dd4C4++8zQt6Km2/Vl9OQEfbMR8beKTAmHAZAQoCUCOG9kAJ0TAoOcoh+sX2mC+uz2ZLe+0z3te/Bl3nPncM7ddZC3N+zN2xv25mPvfckpb3zm/Xt7w96O8u/0OVX6zqjpVn2rA+h2X9uTjWqiB9DVBTAIwN1+2km9xUQKDBIlBEprUJ/dnuzWd7qn7I1JuPjnWb8aJaHmVOk7vabSVwTCrIXLQgCVmfnQZe0ggBV6i4kUGCRKCJQe1JyK4akotQbfhSaLP0D9t55DuaoRxfarOVX6Tq+p9K2BmQxrVmHKwoWZhzDzmgD7BpihqVAoCjn5xWLs6jQUe+8cjgvHMxE1aojdQ1IoFA5FxMuhhfitIpECg0QJgdKDmlMxPF3iYsZpoKAAYMapub8i/IamlujLOKdK372enKCv8I8QCxeRAoNECYHSg5pTMTxdIrR2de/taj3b49yeQ47yL9KcKn33enKCvhWImJxrVgCdoYgUGCRKCJTWoD67Pdmt73RPV37wAiJuvh6h1avi2t+nI/29Oah88/Wo2KIxwIwLR4/j6MjJjvLv9DlV+s6oqfStwcpTPEahKYCOiDoAaIQiCx1mnmXesLQH0Cm0ozWsz+6gPoV24qPbaOrXJjXe5JEoFAojsDqAbufVdxn2Xtti/6ISx05EnwPoDeA4M1/n2fZfFCbqn/B0G8nMP5dUJ+ipIiKaDeAdALcCaOtpscGOMxqRAoOcGgJV2qA+uz0ZpV/aAD4ne2qTGu/TXrmuKsKWTET4bx9g7sD23u1vRnVF/Bdz8GfqTqQlrsebUV3xZlRXvHttb+xb9gtO7N6Cfct+wYRmd6F1rauLtRvrNEFS/HIsX/SNz3YzPNk9p0rfOTWVvvkUMBnWNDADQC8/299j5hhPK3HRAiB4AB2AZHg+mbGyiRQY5BR9GT0ZqV+aAD6ne9Lad/yVA/nLB0bzjDtf5eO7DvP4Kwfy+CsH8vqPfuIVY+fy+CsH8oqxc3n9lAUcG9WxWHv3tUm8+LslvGrJWp/tMj5OlL4zarpV3+r32oRGvdmopkUPhWdvdhT5+78AXjA6gG4HAF0XmRNRNSIaR0S7iOgUEZ0komTPNm0/GFMEkQKDVAiUGPpaA/hE8hSs79GNu5F7OsvnmCbdb8SO+YU/LLlj/mo06VH8w9Q6UbVxa7f2+HHOIv+TZKMnpe8MfRk9OUHfRQwjogQi+pyIqgfrHHDhQkQ/EdECALUA7CSiX4lowaUWpO7XADIBdGHmGsxcE0BXzzb/3wAtAZECg1QIlBj6WhHJU2n8h9eqiuzjhQu47OOnEV6rarE+z7/+LD544yMUFJT8YyR2e1L66rVHNn0rMPKqIiIaSkSbi7ShGobwEYCrAcQASAMwIdgBJV1V9I42235pxMzji25g5mMAxhPR38pQV6FQWMitt7dHZkYmdiXuQZv2MXYPR6FQGIzG76ZogpmnApiq85j0S7eJaBoKk/dLJODChZlXegqNZ+aXi+4jovEAVpZQ9xARvQRg5qVBEVFdAI8BOBLoIM/qbCgAULlqCAkpjCoXKTBIhUCJoa8VkTyVxn9OxhlE1IlE9vHTiKgTiZyMMz77b2h7PTr2uAUdut2MsLAKiKgSgdGTRuE/z77hOE9KX732yKbvBogoipnTPH/ei8Kvp5SIlu+4dPez7Y4gx/QHUBPASiLKJKJTKPyNohoA+gU6iJmnMnMsM8deWrQAYgUGqRAoMfS1IpKn0vjf91s8rru/IwDguvs7Yu/SLT77J4+dit6xD6Bvu/4Y+dTr2LQm3u+ixQmelL567ZFN3wqs/K0iIvoKwO8AmhHRUSIaAuAtIkokogQUfqXkH8HqBPzEhYieAvA0gKs9BS9RBcC6kieCM4loOoClANYzs/cbgUTUC8AvwQZWFJECg1QIlBj6WgP4RPIUrO/dHzyDBu2bo1L1ynhq/QdY8958rJ/yE/pOeRat+nfGnykZWPD0JL+1tSDj40Tpu9eTE/StwMrEW2Z+2M/mz/TWCRhAR0TVAFQHMBbAv4rsOsvMp0osSvQcgGdQeCl1DIDhzPyjZ188MwdNzVIBdAqjcXMA35tRXTX3/ebCYc19t2bsL81wFApFAKwOoItv0New99o2R360ZOwBTxUx85/MfBDAywC4SKtMRFcGqfskgBuZ+R4AXQD8m4iGe/aVyligwJ7Lw8OcHCymdaxl0ZchhKlznZbF2tH9W7AnYQ12bV2FpE3Lvdv16Jc2gE+GOR2ZtrxYW3k9o+/S13HfsjE4/UgL7/Z5747G6oSfsDTuSzyPBngeDTDr3y9h2aq5WPrbF/juswl4uWozPI8GtnoqS1+lL0ZNpW8+FgfQGYOGsJhEAAmef/cCuAggKcgxSZf9XRmFp4feBbDNyAC6y8PDnBwspnWsTghBslP/tnrdi7W0w2l8z3X3F9suiieR9JfeM5oX9xjJmcmHeU7UAJ4TNYDjHhrLX9V/hOdEDeCkDxdw0ocLeE7UAGE8KX3xarpV3+oAuo3R97BRzaoxB/1yLjNfz8ytPP82AXATCr9cUxLpROS9dtLzHZfeKMyEuV7f0krOYDEzxmq3J7tDmETy5GT9Ext2IS/TN6ju2MpEcH5hjsvJLfsQHlVDKE9KX7yaSl8RCC1XFfnAzPEA2gXpNgiAz/VdzHyRmQcB6KRXU8ZgMTPGarcnM+eJGXhrzlh89PNk3DXwTuE9iaLvj6se7oy0uO2lrmm3J6UvRk2lbw0inioqKYAOAEBEzxf5MwRAGwCpAboDAJj5aAn71moenULhYcR9/0DGsZOIrBmJt74ai8P7jiBxQ6Ldw3IdLZ7ri4KL+Tj4nXoaKxQyIOJVMFo+calSpIUBWASgr5mDuhwZg8XMGKvdnsycp4xjJwEAp0+exppf1uHamGZCexJFvyiN+3VCvdtb4/dhU4T2pPTFqKn0FYEoceFCROUAVGHm1z3tf8z8JTOfs2h8AOQMFjNjrHZ7Mku/YqWKqBRRyXs7tlMbHNx9UGhPouhfIqpLKzR/ujdWPTYB+bl5QntS+mLUVPrWINWpIiIKZeaLRHSLZaMJgIzBYmaM1W5PZulXrx2J1z99DQBQrlw5qQkLzgAAIABJREFULPthOTat2Cy0Jyfrd5jyDOq0b46wGlXQd/MkJE74Fi2G9UFIWHl0nfcKACBjyz5s/tfnwnhS+uLVVPrWoCXx1mmUFEAXz8xtiOgjAPUAfAMg+9J+Zv7OzIFpDaDTGioG2B8s5uYAND34y2cJxMrjSSaOxJ3MrtVFc99HM1aYNg6Fwo1YHUC39ooHDPuayy3HvrVk7EG/nAugIoCTAG5D4fd4yPOvqQsXrYj0Ji/SWO1Ez2LE7oVr3YhITf3Ss4Nf9u4U9CxGVtZor6lf51PBEhT+wowFvt2PE4V8yPIf0QK7B1AKSvqOSx3PFUU7UBg+twNAkuffoL/eaDQiJR2q9Er79Cd/NB77D27E+k2LS6ynp6bWftH1rsA3C6Zj+e8LELfuRwz5+yOW6pvVt6R+17z3NNru+AwxK94tdlz0/92NW459i9AaVco0TjPuUzNq6unr5PvUSTVF0jfrMWU2DDKsWTfowOm3aQD+A+A1P+0/QZJzq6LwN45mAxhw2b4pRibnOiHp0Cn6MnoK1tfs5ORg/aIjW3hbTLNO3KPT/Rwd2YKb1I/l/Xv/4M7t7uboyBZCzamefgl9R/HW21/grORDvKbu/d62sfVQPhW3lXOPHOf1zR/TVdOMhGknJWw7/T51Sk2n65uVhG51cu7Kug+wUc0JyblpzDy6yBVFRdvoIOuh6Sg8pTQfwENENJ+ILn2udrPexZVISYcqvdK9acTH0zOwIyEZAJCdlYO9ew7giqg6lunbcZ+eWZ+Mi6ezih3XePRjODhmtt+fntWbHGpGGradCdtOv0+dUlMkfcCcx5QVFLBxzSpKWriU5XOfq5n5X8z8AzP3ARAPII6IapammEhJhyq90lkpr4Eww1NR6jeIxnWtmmPrlgTL9O2+Ty9Ro2db5KWdQs7OQ2Uepx5ESdgW6T51sye9fbXiuORckGHNKkr6cm63MtQNI6IQZi4AAGb+HxGlAFiFwh9c9AsRDQUwFACoXDWEhESUYQgKhT2ER4Rj2qyJeO2Vccg6mx38AIkIqVQB9Yffh6T+Y+weikKhkJSACxdmPlWGuj+h8Cqk34rUm0FExwBMKkFzKoCpgO/l0CIlHar0Svv09WCGJwAIDQ3FtJkT8f03i7B44W8B+4kyp3r9V2x4BcKurIOYuHcAAGFRNRGz5C3Ubb8V6eknSlVTK6IkbIt0n7rZk96+WnFacq6lX6o1CN0/sqgFZn4JwFEi6kZElYts/wXAc3rriZR0qNIr7U951YIZngBgwqTR2LfnAKZOmWm5vt33KQDk7DqMTdcNwZa2T2NL26dxPu0ktvV4ybtoKU1NrYiSsC3SfepmT3r7asVxybkGNqvQkuOiGyJ6FsAwAMkAPiOi4cz8o2f3/wAEv16sCCIlHar0SvemEbe9uQ0eeKgvdibtxpJV8wEA48ZMRNzS1Zbo23GfNv1oBKp1aInQGlUQG/8JDr89D8e/ivOrWZpxAuakYduZsO30+9QpNUXSB8x5TCn8EzA5t0xFiRIBtGfmLCJqBOBbALOZ+X0i2srMrYPV0JqcKxJaw8oAsQLLFIpgHI5tqrnvlZvVi7jCvVidnLuk7kOGvdf2SJ9rydhNOVUEIISZswCAmQ8C6ALgDiJ6F6W8Wkm2wKKSwsr8LVpE8CSrvoye7NCPHPkS6i76DrW/+Os3jqqP/g9qz5iG2jOmoc78r1B7xjShPCl9uT05Qd9sRDxVZEo4DIA4ADGXbQsFMAtAvlsD6NweViaivoye7NBPad+FTzz1HB8f/CTn7T/AKe27FGtn58zjP6d+LownpS+3J7v0rQ6gW1ynPxvVnBBAVxYGAfD5mjQzX2TmQQA66S0mY2CRG8PKRNSX0ZNd+nnbElBw5ozfYwGg0m1dkLt0mVCelL68npygbwUifuJi1lVFR5nZ7/VdzLxWbz3ZA4vcGFYmir6MnpygfzkVYloh/1Qm8o+mCOvJzfoyenKCvhWI+FtFZn3iotCIm8PKFIpLVLr9NuT+tix4R4VC4XqEWLjIGljk5rAyUfRl9OQEfR/KhaBil47I/W250J7crC+jJyfoW0EBGdesQoiFi6yBRW4OKxNFX0ZPTtAvSljsjbh46AgKTmQI7cnN+jJ6coK+Fcj2W0WOQcbAIjeGlYmoL6Mnu/QjXx+FsNYxCImshro/fI2zn85AzsKfC08TLfV/msjpnpS+vJ6coK/wjykBdEYgYwBdePkwzX1zLpw3cSSKklD3k73MrtVFc99HM1aYNo5gqMeJuzHr/rc6gO6HKwYY9l57z7E5QgfQFYOI/F/rqxGRAoO09p380XjsP7gR6zf5/gKCvwe5KJ5k1A90P1mlL+OcltSv3btP4t6EKbgjbpx3W8y/H8Zdq97GHb+Nxa2fjUD5quF+Fy1ufpzo6StKTZH0zXg9twIRL4c2K4CuxmWtJoCDAKoDqOHWALoq4Y19Ws/u/fjWDr05KWmXz3aRPMmor/V+uvy+crInJ+kH67f0ntG8uMdIzkw+zHOiBvCcqAEc99BY/qr+IzwnagAnfbiAkz5cYLsnJz1OnH6fyqhv1uu51QF08+s+zEY10QPoMgBsKdI2A6gHIN5zWxciBQbp6btu7SZkngr+m0SieJJV3+j7yQmenBxWdmLDLuRlZvkcc2xlIji/8P90J7fsQ3hUDUd5Aux9nNjtX0ZPevuacf9bQQGRYc0qzFq4vAhgN4A+zNyYmRsDOOq5fZXeYiIFBpkRLiSKJ1n1tSKSJ1HCyvxx1cOdkRa33RJ9UR4nevqKUlMkfT04L4DOuGYVZiXnTgDwBID/ENG7RFQF1vpSKBQS0uK5vii4mI+D3+kO4FYoFJJg2uXQzHwUwINE1AfAUgDhwY4hoqEAhgIAlauGkJAIAGIFBpkRLiSKJ1n1tSKSJ1HCyorSuF8n1Lu9NeL6v+k4T3pw+30qo74eHBdAZ5ty6THtqiIiupaIuqHwl6K7Arjds71XoGOYeSozxzJz7KVFCyBWYJAZ4UKieJJVXysieRIlrOwSUV1aofnTvbHqsQnIz81znCc9uP0+lVFfD44LoBMwOdeUT1yI6DkAzwBIBvAZgOHM/KNn95sAftFTT6TAID19P5/xPm7t2A41a1ZH8p61ePON9zF71tfCepJV3+j7yQmenBxW1mHKM6jTvjnCalRB382TkDjhW7QY1gchYeXRdd4rAICMLfuAJ1Y4xhNg7+PEbv8yetLb14z73wqsTLw1ClMC6IgoEUB7Zs4iokYAvgUwm5nfJ6KtzNw6WA03B9CpsCp7UcFi9qI1gM7O8DlAPU7cjlmv51YH0H0Z/Yhh77UDU78QOoAuhJmzAICZDwLoAuAOInoX0La8qxsR6W2tm16LVcu+x86EVUjavhIjnx/m3ecP0QOLylLTbk8y6OdcOO/TOnZtj01blyJ++zIMG/GEzz5RPNmtH14+zKdN/3Qi0lK2I2FbXLF9j2as8GlftAHarBiNtqveQOLjLb3bMx5shuwlnyLvxA6c378GGQ82Q8aDzXDqn3fgXNISnN+/Grnrv0XGoOL/TzLjcVLSY8UM/bL0tbqmjK/npb3v9eqbjYhXFZkVQBcHIOaybaEAZgHI11IjOrIFX2oxzTpxj073c3RkC25SP5b37/2DO7e7m6MjW6jAIpeHQIlY0436ZoS1ZQ7oymdGD+czI4fyxcMHOHNAV84c0JUv7EvmM6OHc+aArpz9yXjO/W6WlHPqJP1g/WR8PTerptUBdDOjB7JRTfQAukEAfL4mzcwXmXkQgE56ix1Pz8COhGQAQHZWDvbuOYArovz/goCbA4vs9iSjvoyenKBv1GM/f1cCOOuMzzHlouojf1cCAOBC4haUv6mjJZ7snlNRnicyvp6bpa/wj1k5LkeZ2e/1XcxcpgCG+g2icV2r5ti6JcHvfjcHFtntSUZ9GT05QV8rpamZf/QQyt94CwCgQrvOCKnh+6Yo65yK8jwpiiyv53Y/T8qCiL9VZNmPLBpBeEQ4ps2aiNdeGYess9l2D0ehUDiQnKlvoUL3vqj8xsdApXDwxQt2D0nhB/V67gxE/I6LaQF0RhMaGoppMyfi+28WYfHC3wL2c3Ngkd2eZNSX0ZMT9LVSmpoFaUeQPe4lAEDIFfVRPubmUtcUaU5FeZ4A8r2e2/08cRvCfOIyYdJo7NtzAFOnzCyxn5sDi+z2JKO+jJ6coK+V0tSkqp6rU4hQ8Z5HkLdsgSWe7J5TUZ4ngHyv53Y/T8qCCqAzibY3t8EDD/XFzqTdWLJqPgBg3JiJiFu6ulhfNwcW2e1JRn0ZPTlB36jHfvgzoxDa/AZQlWqoOmkezn07A6hYCWHd+wIALmxag7yVv+iqKeqcivI8kfH13Cx9KxAx8t+UADojqFe9paaBpWcHvzLBKagAOoVbMSOsLePBZppr1vpmt+a+CuMJlNFyOSK9npuF1QF00+obF0D35FGxA+iKQUQ19fRPzz7t02JuiUHchgVYuWkhBj890LvdH24OLJIx2MpufRk9Wa1vRqhfrW92F2sD/4xC+mvTkPH6Z3ir0e3e7XaH1VlRs6S+WgMAzfIk4+u5VfpmI+JVRWYF0I0DUMtzOxbAAQD7ABwC0FlLDZECg5yiL6Mnu/Vl9GS3vh2enBRWp8Iv5ZhTs2paHUD3Uf2BbFQTPYDuLmbO8Nx+G0B/Zr4GQHcAE/QWEykwSJQQKKXvXk9269vlySlhdXbfp4AKvxRFX+EfsxYuoUR06Yu/lZh5EwAw8x4A2k92exApMEiUECil715Pduvb7akodoTVOcl/METxJKu+FYh4qsishcsUAD8T0W0AfiGi94moMxG9DmCbSZoKhUKhCxVWp3A7Ii5cTLkcmpknEVEigKcANPXoNAHwA4A3Ah1HREMBDAUAKlcNISERAMQKDBIlBErpu9eT3fp2eyqKHWF1TvIfDFE8yaqv8I+ZVxUdAzAVQEdmvp6Z72TmqQC6BTqAmacycywzx15atABiBQaJEgKl9N3ryW59uz0VxY6wOif5D4YonmTVtwIV+e+BiJ4D8AyAZACfEdFwZv7Rs/tNAL8EPNgPIgUGiRICpfTd68lufbs8OSWszu77FFDhl6LoW4GVibdGYUoAnec0UXtmziKiRgC+BTCbmd8noq3MXDws4TJCK9RzZjKeQqEQDreH1anwS3GwOoDu/SuNC6AbfljsALoQZs4CAGY+CKALgDuI6F0ApTJmdWCQlrAmMwObnFTTKH01p0rfLk9ag+pqfbMbWQunIe/4DpzbsxrHul2DY92uwYkneyE3YQnOJa9A7o5lyHiqt1D+VfiluPpmI+KXc80KoIsDEHPZtlAAswDkixBApyWsyWmBTU4PYVJzqvRF8JT5wjA+9cwQvvDHfj7RqxOf6NWJz2/ZyKdHvcgnenXi0/9+kfO2x0vr3yk13apvdQDdOw0GslFNw9rgcwDHAewosq0GgKUA9nr+rW5XAN0gFH45t+gC6SIzDwLQSW8xuwODtIY1maVvdwiSmlMx5lQUfad7urgjAXz2rO9BzKDwcAAAhVdG/smT0vp3Sk2lLyUzAPS6bNu/ACxj5iYAlnn+LhFTFi7MfJSZ/V7fxcxr9dazOzDIjLHa7clufT2oOZVLXyRPl8j+5ENEDHkK1Wd9g4gnnkLOjKmW6Nvt382enKBvBVZeVcTMqwCcumxzXwAzPbdnArgnWB1TripSKBQKmah4V19kT/0QeWtXoULHrqg84iXgq752D0uhKDMOuKqoLjOneW4fA1A32AGW/Tp0WbA7MMiMsdrtyW59Pag5lUtfJE+XCLu9J/LWrgIA5K1ejtBmzS3R///2zjw+ivr+/89PDgNBINyCUdQKCCIGDQLKoRVRrJWKZ8FWW236VVGpbb1/RcEqYrXggRUVBSweqFhEUY4IyGk4A+EGAUEOgUAIgRDI+/fHTOJms5vshp2dnc9+njw+DzYz7/285jWzu/PZ2ZnXuO0/nj3Fgr7XUEplKaUW+7SscJ4v1kkv1R688cTAxe3AICeW1W1PbuuHg1mneul7yVMZpfv2kXxBBgDJGRdRumN7XPiPZ0+xoB8NInlVkW+IrN0q/6Zamd1KqeYA9v97qnuCJ34qcjswKNSwJqf03Q5BMuvUG+vUK/qx7qnuI/8guUMGql59GoyfSNH4dyh8+QVO/fP9kJiIHDvGoZf/pa3/WOnT6EeHGAhMmwzcAQyz//9f1eUOBdBFArcD6ExgU+Qx69TgBXZdeW5IdafN3OjwkhjikWgH0D3XMnIBdI9trTqATin1PlauW2NgNzAY6x6GHwFnAluBW0TE/wTeCnjipyKIfmCQVwObYjmEyaxTo+8FT6fN3Fih3ZGYzr6RYzjwyru8dNHV5dNnN+zKjrHjKfpxNQdzFzC7YdcKbcPjz3L82A7mndvbU/5jqU+j7zylSMRadYjIb0WkuYgki0i6iLwtIvtE5EoRaSUivaobtJR15EQAXSbwDfAecAZWqMxBIAfo6IUAOi/q6+jJbX0dPbmtr4unuc1ulNy+T8qyXn+TwjVbZW6zG8vbdx2zZH/2Mjnywx5Z2PZOLf3r7skt/WgH0A05s79EqkVrmZ064jIKGA58AcwH3hCR+ljBMqPC7cxLgUEmBEovfR09ua2vk6eChWs4fqCw0vPOHnInW4aOhwA/xevkX2dPsaBvCIxTA5dkEZkqIu9jXeH0MdaDmUCtcDvzUmCQCYHSS19HT27r6+jJl4ZXd+LYzv0Urd4aNU/h1HqlT6MfHaIZQBcpnLqq6KhSqjdQHxCl1G9E5DOlVE/ghEOaBoPB4CoJtU8h/cF+5N061O1FMRhCIqo3R4wQTg1c/g/rp6JS4GrgHqXUu8AO4E/BnmSH1WQBqMT6JCTUAbwVGGRCoPTS19GT2/o6eiqjVsvTSDmzKRnZ1uXSKc0bkTFtOM26LmP37p8c1TfbVD99Q2CculfRCmAQ8C9gu4g8KCJpInI+UK+K55WH15QNWsBbgUEmBEovfR09ua2vo6cyitZuI6f9XSzpdC9LOt1L8c59LO/9cPmgRVf/OnqKBf1oUKoi16KFI0dclFIPAPcCa4G3lVIPikhZqMyzwFfh9OelwCATAqWXvo6e3NbXyVPr1wdR/9LzSWpYl8ylb7DthQ/Z8352wL509K+zp1jQjwahXMYcazgSQKeUWgl0FZFCpdRZwMfAeBEZqZRaJiIdq+vD7QA6g8FgqIrZDbuGXNtz/wIHl8SgE9EOoHvyrP4R29c+s2VCVJbdqauKEkSkEEBEtmAl5fVRSr0EhGSsWZ208tax9XnMmTmJ1blzyFsxm8cfGlg+LxBuBwZFUz81OaVCe+etEezcsYLc5dmV5nnFU6zp6+jJbf1Y9hTqZ0/P/QsqtWczU2g853mazX2BL+66qHz6qnETOPTjavbkLuS1plfwWtMrmPqHR9izchElR3/gw15/LJ/u1c++WN6mXtZ3Gi9eVeRUAF02kOE3LQkYB5wIpY8Wae2krGW06SG9e9woLdLaSav0TNm04Xvp2fnX0iKtXUwEBrmpXzf17Art6qtukW6XXid5eWsrzfOKp1jS19GT2/qx7smJz57/9RsiH1/9hOxbs03+c/oA+c/pA+SDnn+X97v/TXbMXy0f93myfLoXP/tifZt6ST/aAXSPtvytRKp5PYDu90CF06RF5LiI/B7oEW5ne3bvZVXuGgAOFxaxYf1mTmveNGCt24FBbuvPn5dD/v4DAed51ZMJ1tJL30ueIvXZs3PROo76BdUd2PgjBzfvDNhXpPVr6l/HbeolfUNgnLqqaLuIBLy+S0TmnUzf6We0oH2HtixbkhtwvtuBQW7rh4qXPJlgLb30veTJl0h99tSUWP7s89I29ZJ+NIjmvYoihVM5Lo6QWieVN8eNYPBjwyg8dNjtxTEYDHGC2589busb9MWLV8F45u7QSUlJvDl2BJMmfsHUKTOC1rkdGOS2fqh4yZMJ1tJL30ueIPKfPeHihc8+L21TL+kbAuOZgcuLrwxh4/rNjB41tso6twOD3NYPFS95MsFaeul7yRNE/rMnXLzw2eelbeol/WhQGsEWLTzxU1GnLhdx0219WZ23jmlzPgFg2NARZE//tlKt24FBbuuPeXck3bp3plGjBqxZP49nnxnJ+HEfedqTCdbSS99LniL12XPlq/fRvGtbajU8lQE5L7P4xU8oPnCYy4b+ntoN69Jn7N/Yl7eVL28f7oh+LK1To28C6E4WRwLoIsHpDc4PacF2H67+ChqdCZTPEoyikmIHl8Rg0INgGSn+hPPZ81rTK0KuHXJ4WcT1Dd4h2gF0D511W8QGAS9t+cDTAXQnze7DByq0jMsyyF40mdk5U7jj3gHl0wPhdmBQNPWLSoortO5XdCVn2XSWrpjJwEF3V5jnFU+xpq+jJ7f1Y9nToWNHytuwkU+xfP1sps/7tML0Q8eOhNXvfXu+qdAmZwiXZz/NlbOGsvWOdhXmTX1jFOs3zGf5wq94sF5HHqzXkUfO6Ma8yR+waulM5k3+gIfTL3PMvxN91jQk021PsaDvNCaArmLY3J+x7kmUa7epWHeNTg6lDy8FBsWKvo6e3NbX0ZPb+rHuqSaBjpHU/+9NQ+Tda5+QPWu3yfNnDpDnzxwgC1//XGY994E8f+YAmfXcB7Jw1OSYWv+xvk7d9h9ObbQD6B5oeatEqnk9gG48kAE8BVxrt6eBC4H3wu3MS4FBJgRKL30dPbmt7yVPoQY6RlJ/+3frOOIXVtfqqotZ9Yl1XsuqT76lVe/MqPjXZZ3Gkn8TQHfyODVwuVhE7hGRhXYY3Xb78T1AtTdY9MdLgUEmBEovfR09ua3vJU/h4KR+auN6HN5j7ewP7zlAauN6UdHXcZ267T/WAugkgv+ihVMDl/1KqZuVUuX9K6USlFK3AvkOaRoMBoPBYAgDL14O7dTA5TbgJmCXUmq9Umo91r2L+tnzAqKUylJKLVZKLS4t/Tkd0kuBQSYESi99HT25re8lT+HgpH7R3gLqNLWudqrTNI2ivQVR0ddxnbrtP9YC6LwY+e/UvYq2AC8B1wFdgT8Aw4GxIvJ9Fc8bLSKZIpKZkFCnfLqXAoNMCJRe+jp6clvfS57CwUn9jTOW0v7G7gC0v7E7G6YviYq+juvUbf+xFkDnRRwJoFNKDQb62P1PBy4BZgGPKqU6isg/w+nPS4FBJgRKL30dPbmt7yVPoQY6RlL/1y/fxxld21K7wancs/Bl5v77ExaO+py+o+6nw609ObhjL5PvfSUq/nVZp7HkP9YC6GIzya1qHAmgU0qtxLqqKAXrJ6J0ESlQStUGFolIh+r6SDrldC+uT4PB4HFCDXV0KtDx2eahhdU9vvMbR/SdwO116iWiHUD357Nujti+9o0tEz0dQHdcRE6ISBGwSUQKAETkCDU8h8dLgUGxGgJl9GOnz3jXj2VPoYY6OqX/+M5vKrTZFwh9pz9Nv5lDOXB7u/LpBx6+kqOrvqR46wKKt86ncMI/yM+6kPxBl3E0dwrHtn/H0dwp5D9YOawu3tZpNGq9GkDnSRwKoFsEpNqPE3ym1weWmgA67/QZ7/o6enJbX0dPbugfeqy/FD43UAru6yMFD/WTE7u3S+HQLCmeNlGOfjZGCu7rI0c/GyNHp33kGU9GP/oBdHe3vEki1bweQNfDPtqCiPgeYUkG7gi3My8FBnklBMrox68nt/V19OSGvhTkU7p9k1VYfIQTu7ah0hqT1KELJYtmAFCyaAbJHbp6xpPRjz4mx8VGRAIe8xORvSKyMtz+vBQY5JUQKKMfv57c1tfRk9v6qmFTEtN/wYkta1F105ACKy5LCvJRdSveNNIrnoy+IRiOXFVkMBgMhihxSi1q3/0ExZ+MhqOBbv5ornMwBCeawXGRwhMDFy8FBnklBMrox68nt/V19OSafkIitf/0BCWLZ3F8xXwA5NABVL0G1tGWeg2QQwe95cnoR5Vo/sQTKZw6xyWieCkwyCshUEY/fj25ra+jJ7f0aw0YROmuHyjJnlQ+7fjKhSR37gVAcudeHM9d6ClPRt9QHZ444uKlwCCvhEAZ/fj15La+jp7c0E88px3Jna/kxI7vSX3UCqQrnjyW4ukTqf3Hx6jTtTel+/dwZMxznvFk9KOPF38qciSALhKYADqDwWAITn7WhSHXNhi9wsElMUSSaAfQ/a5lv4jta8dv/dTTAXQRx0uBQSbYSy99HT25ra+jp6pqm9VJK28dW5/HnJmTWJ07h7wVs3n8oYEV5ofaZ4PRKyq127Y04McHXmH3oNd4rn638uk7xo6n6MfVHMxdwOyGXSu0DY8/y/FjO5h3bu+wPKUmp1Ro77w1gp07VpC7PLvSvGisf11fU4YAOBRAlwj8GRgKXOY370kTQOedPuNdX0dPbuvr6Km62hZp7cpbRpse0rvHjdIirZ20Ss+UTRu+l56df10+3wn93L5PyrJef5PCNVtlbrMby9t3HbNkf/YyOfLDHlnY9s6w+qybenaFdvVVt0i3S6+TvLy1lebpuE2d6jPaAXQDzrxBItW8HkD3BtAT2Ae8rJR6yWdev3A781JgkAn20ktfR09u6+voKZzaPbv3sip3DQCHC4vYsH4zpzVv6qh+wcI1HD9QWOk5Zw+5ky1Dx0OQUwbC0Z8/L4f8/QcCznPCk9N9xoJ+NChFItaihVMDl0tEpL+IjAA6A6cqpT5VSqUAYf8G5qXAIBPspZe+jp7c1tfRU7i1ZaSf0YL2HdqybElu1PUbXt2JYzv3U7R6a9AaJ8LSdNymJoAuujg1cDml7IGIHBeRLGAFkA2c6pCmwWAweIbUOqm8OW4Egx8bRuGhw1HVTqh9CukP9mPb8A+jqmuIPbwY+e/U5dCLlVLXiMhXZRNE5Gml1A7g9WBPUkplAVkAKrE+CQl1AG8FBplgL730dfTktr6OnsKtTUpK4s2xI5jpKfgXAAAgAElEQVQ08QumTpkRsMZJ/VotTyPlzKZkZP8LgJTmjciYNpxmXZexe/dPNeozVHTcpl4OoPPi5dBO3avodmC/UqoTgFKqnVLqIeBHEUmu4nmjRSRTRDLLBi3grcAgE+yll76OntzW19FTuLUvvjKEjes3M3rU2IDzndYvWruNnPZ3saTTvSzpdC/FO/exvPfDFQYt4fYZKjpuUxNAF10cOeKilBoM9AGSlFLTsc5z+QZ4VCnVUUT+GU5/XgoMMsFeeunr6MltfR09hVPbqctF3HRbX1bnrWPanE8AGDZ0BNnTv3VMv/Xrg6h/6fkkNaxL5tI32PbCh+x5PztgPzXVH/PuSLp170yjRg1Ys34ezz4zkvHjPnLMk9N9xoJ+NIjmSbWRwpEAOqXUSiADSAF2AekiUqCUqg0sEpEO1fVhAugMBoMuBMpnCcbuw9VfmRMusxt2Damu5/4FIfcZKJ8lGEUlxSHXxjvRDqC7qeX1EdvXfrx1sqcD6I6LyAkRKQI2iUgBgIgcoYY/qXkpMMgEe+mlH21P8RDspePrpKra3YcPVGgZl2WQvWgys3OmcMe9AyrMc0K/5/4FFdqzmSk0nvM8zea+wBd3XVQ+fXzjy1k/7r8U/riavbkLGd/4csY3vpyVI99g/+oc9i5fwPf/+4wPzrmWopLiCq37FV3JWTadpStmMnDQ3RXmRWP9V1XXs+n5Fdr2TUtYnzuXtcvmkJfzTfl0p/RPptYQAIcC6BYBqfbjBJ/p9YGlJoDOO33Gu74bnnQP9tLxdaKL/oTm/WX6b4bI1N6PS/6abTKheX+Z0Ly/ZN/2nLyffrtMaN5f8l6dLHmvTvaMp8TkFvLL06+q0HZu2ym/aX9jpemxsE2jHUB3w5m/lkg1rwfQ9bCPtiAivkdYkoE7wu3MS4FBJthLL323PYF+wV5ur1OjX3XdT4vWciy/YljdrtkrkRPWR/m+JRtJbd7QU55qitvbNBpE+KBFVHDqqqKAP2iKyF4RWRluf14KDDLBXnrpu+0pHLzi3+11avRP7rV3zm97sjO74k0bveZJBIZPeI7Xv3yNXw24Nmid29vUEBinclwMBoPBoBntHuhL6fETbPl0ntuLclIM6vcX9u7aR1qjNIa//xzbNv7AykVhf6fWAi9eVeSJu0N7KTDIBHvppe+2p3Dwin+316nRr9lr7+xbenB6r44sGDjK85727toHwIF9B5j71XzOy2gTNf1YDKCLVIsWnhi4eCkwyAR76aXvtqdw8Ip/t9ep0Q//tdf88g60vfc65tz5IieOHPO0p1q1a1G7Tu3yx5k9LmLLui1R0zcBdCePJ34q8lJgkAn20kvfbU+gX7CX2+vU6Fddd+mo+2jatS0pDevSd/ErrHzxY9oNvJ6ElGSu+PAxAPYu2Qh3z/KMJ18aNEnj6bcGA5CYmMjMz74hZ9biqOnHWgBdNO8xFCkcCaCLBCaAzhCvmGAvg1uMb3x5yLW/2zvLseWINMEyWvyZvSfP4SWpnmgH0F175rUR29d+ue1LTwfQRRwdQqi82me860fbk5eCvWKpT6N/8vq/2zurUnvvIrho1hA6zXmGlX84v3z63pvbcHjaWxz7aRXFm+ay9+Y27L25Dfv/2oejedMo3vQtRxZ+zN7fd3TVE1gDEt9WK6MJo7Jf541Zb9D5jsvLpzulfzK1hgBEKzAGWB9OvduBRV7U19GT2/o6enJbX0dP8aif3/8KKRjyoBQ8niXHt22W/P5XSH7/K6Rk4xopGPKg5Pe/Qg6/8bwc+XScZzzFgn60A+iuSb9GItU8HUCnlDqklCqw2yGl1CHgF2XTw+3P7cAir+jr6MltfR09ua2vo6d41T+xNhcprPiRntg8nRNrcwEoWbmE5Eu6e8pTLOlHA3NV0c+8A3wGtBKRuiJSF9hmP64XbmduBxZ5RV9HT27r6+jJbX0dPRn9nzmxfSvJF18GwCmde5LQsKlnPbmtbwiMI1cVicgDSqmLgfeVUp8Br4IHT102GAwGQ1gUjR5O7TvuJ+WG31GydD5yvMTtRTJUQTSvKlJKbQEOASewbsacWZN+HLscWkSWKKV6AQOB2UCt6p6jlMoCsgBUYn0SEuoA7gcWeUVfR09u6+voyW19HT0Z/Z8p3fkDh4c9DEDCaekkZ3TxrCe39aOBC8m5V4jI3pPpwLGripRSlwAXi8jLwOPAf5RSwW8KAYjIaBHJFJHMskELuB9Y5BV9HT25ra+jJ7f1dfRk9H9G1UuzHyhq/eZ2js2c7FlPbusbAuPIERel1GCgD5CklJoOXALMAh5VSnUUkX+G05/bgUVe0dfRk9v6OnpyW19HT/Gqn3rfkyS1vRBVtz71XvmQox+/C7Vqk3JVXwBKcuZybPZXnvIUS/rRIJJZbr6/mtiMFpHRvnLANKWUAG/4zQtdx4kAOqXUSiADSAF2AekiUqCUqg0sEpEO1fVhAugMBoMhdtl7c+D7+wSi8cR1Di6JXkQ7gO6K9Ksitq/9Zvv0KpddKXW6iOxQSjUFpgP3i8iccHWc+qnouIicEJEiYJOIFACIyBFCvGoqNTmlvL3z1gh27lhB7vLsCtMDtapq/YnVEKhY6zPe9XX05La+Dp6a1Umr0Dq2Po85MyexOncOeStm8/hDA8vn6ei/8cR1FdqAg83ZPfhN9j79NsPP6lVh3oGHr+Toqi8p3rqA4q3zKZzwD/KzLiR/0GUczZ3Cse3fcTR3Cmlp9V31dDK1JoCuekRkh/3/HmAS1q8xNerIibC5RUCq/TjBZ3p9YGkofdRNPVvK2tVX3SLdLr1O8vLWiu/0QK2qWl0Di3T25La+jp7c1tfFU4u0dhVaRpse0rvHjdIirZ20Ss+UTRu+l56dfy0t0tpp6T+cukOP9ZfC5wZKwX19pOChfnJi93YpHJolxdMmytHPxkjBfX3k6GdjZPgLr8aMJ7f0ox1A1/P0KyVSrZpxQR2grs/j+cA1MRNAB/Swj7YgIr5HWJKBO8LtbP68HPL3H4horY6BRTp6cltfR09u6+voCWDP7r2syl0DwOHCIjas38xpzZtWqtPRf3V1UpBP6fZN1h/FRzixaxsqrTFJHbpQsmgGACWLZnD99dfEjKdY0I8GpSIRa9XQDJirlFoBfAd8ISJfVfOcgDgycBGRgHd+E5G9IrLSCc1w0TGwSEdPbuvr6MltfR09+ZN+Rgvad2jLsiW5UdP3yjZVDZuSmP4LTmxZi6qbhhTkA9bgplnTxjHjKRb0dUJENovIhXY7P9yLdHxxLMfFYDAY4pHUOqm8OW4Egx8bRuGhw24vTmxxSi1q3/0ExZ+MhqNHKs124mIRQ9V4cY3H7cBFx8AiHT25ra+jJ7f1dfRURlJSEm+OHcGkiV8wdcqMqHkKp9a1PhMSqf2nJyhZPIvjK+YDIIcOoOo1QAryUfUasOenfTHjKRb0o4ELAXQnjWMBdLGOjoFFOnpyW19HT27r6+ipjBdfGcLG9ZsZPWps0Bod/YdSV2vAIEp3/UBJ9qTyacdXLiS5cy8Akjv34vPPv44ZT7GgbwiMJ464jHl3JN26d6ZRowasWT+PZ58ZyfhxH51UrY6BRTp6cltfR09u6+voCaBTl4u46ba+rM5bx7Q5nwAwbOgIsqd/q73/6uoSz2lHcucrObHje1IffQWA4sljKZ4+kdp/fIw6XXtTun8Pz2fdHjOeYkE/GnjxiIsjAXSRoF6dcyK+YEUlAc8ZNhgMhrAJlM8SjN2HQ7sqUlfysy4Mqa7B6BUOL0nsE+0Aui4tLo/Yvnbhj7Oisuwx+1NRUUlxhdb9iq7kLJvO0hUzGTjo7krzQ6n1R8fAIh09ua2voye39XXwtPvwgUot47IMshdNZnbOFO64d0D5dB39h1PXYPSKCu22LQ348YFX2D3oNZ6r3618en7WhTUOq9NxnRqCEO2wm1CblwKDYkVfR09u6+voyW19HT3Fu36k+iy4r0+Nwup0WqfR3td2at5DItWitcyOHHFRSg1USjW2H5+rlJqjlDqglFqklLog3P68FBgUyyFQRj82+ox3fR09xbt+JPusSVidjus0WkgE/0ULp34qukdE9tqPRwL/FpE04BHgP+F25qXAIK+EQBn9+PXktr6OnuJd3ylPoYbV6bhODcFx6qoi336bisgkABGZpZSq65CmwWAwGHTBhNVFBS+uR6eOuHyslHpXKXUOMEkpNUgp1VIp9QdgW7AnKaWylFKLlVKLS0t/Tpz0UmBQzIdAGX3X+4x3fR09xbt+xPusIqwOqBRWp+M6jRalSMRatHDqXkVPALOA94GHgKHAVKAVMKCK540WkUwRyUxIqFM+3UuBQbEeAmX03e8z3vV19BTv+pHuM9ywOh3XabSI5Emz0cLJALrVwEARyVFKnQ9cA6wRkYPhduSlwKBYDoEy+rHRZ7zr6+gp3vUj2WdNwup0XKeG4DgSQKeUGgz0wRoYTQcuwToCcxXwtYRwV8ikU0733g9vBoPBYKgxoQbVgb5hddEOoLvwtEsjtq9dsWu+pwPobgIuA3oA9wE3iMhQ4Grg1pp0GCywJzU5pUJ7560R7Nyxgtzl2ZXmhdpnOPonU+uVPuNdX0dPbuvr4Ml89kS+T/+guqrC6mY37MqOseMp+nE1B3MXMLth1wptw+PPcvzYDuad29uRZT03rUV5a9fsLJYunMaqZd+wJvdbRj77VPm8ZnXSKrSOrc9jzsxJrM6dQ96K2Tz+0MAK86ONFy+HdiQcBlgW6LH99/JIBtDVTT27Qrv6qluk26XXSV7e2krzTAiU0Y+FPuNdXxdP5rPHXU9zm90ouX2flGW9/iaFa7bK3GY3lrfvOmbJ/uxlcuSHPbKw7Z2O6LdpklmhdTyru7RpkinnN+8syxevlFuuuVPaNMmUFmntKrSMNj2kd48bpUVaO2mVnimbNnwvPTv/unx+tAPoLmjWRSLVPB1ABxxTSqXajy8um6iUqg+UhttZOIE98+flkL+/+vuC6BhYpKMnt/V19OS2vo6ewHz2uOGpYOEajh8orPS8s4fcyZah4yHAqRBOLWvRYeuS7aTkJJKSk4KerLpn915W5a4B4HBhERvWb+a05k0D1kaDUpGItWjh1MClh4gUAYiI70AlGbgj3M6cCOzRMbBIR09u6+voyW19HT2Fg47+3fbkS8OrO3Fs536KVm+Nqn5CQgKTsv/LvNXTmD97EblL86pcToD0M1rQvkNbli3JrbbWKbz4U5FTl0MHvA2ziOwVkZVOaBoMBoMhvkmofQrpD/Zj2/APo65dWlrKDb8cwOUX/ooOHc+n1Xm/qLI+tU4qb44bweDHhlF46HCVtYaKOHk5dMRwIrBHx8AiHT25ra+jJ7f1dfQUDjr6d9tTGbVankbKmU3JyP4XACnNG5ExbTjNui5j9+6fHNcHOFRQyKJ5S+j+y65sWLspYE1SUhJvjh3BpIlfMHXKjCr7c5po/sQTKZz6qSiiOBHYo2NgkY6e3NbX0ZPb+jp6Cgcd/bvtqYyitdvIaX8XSzrdy5JO91K8cx/Lez9cPmhxSr9BozTq1jsVgJRaKVza8xI2b9gSdDlffGUIG9dvZvSosUFrooUXfyryxBGXcAJ7xrw7km7dO9OoUQPWrJ/Hs8+MZPy4j06qT68EFunoyW19HT25ra+jJzCfPW54av36IOpfej5JDeuSufQNtr3wIXvezw7Yl5PL2qRZY4a98hSJiQkolcBXk2cwa/rcgH126nIRN93Wl9V565g25xMAhg0dQfb0b6tcbsPPOBJAFwlCDaALlJEQjKKSgKfeGAwGQ9iYzx53md2wa8i1PfcviLj+uWktqi8CDpUUhdXvjvy8qAbQtW6SGbFBwPqfFns6gC7iBAsBKioprtS6X9GVnGXTWbpiJgMH3V0+PdQ+w9E/mVqv9Bnv+jp6cltfB086fvaEE5bmtqee+xdUaM9mptB4zvM0m/sCX9x1UYV5Bx6+kqOrvqR46wKKt86ncMI/yM+6kPxBl3E0dwrHtn/H0dwppKXVD1l/44EfK7RfXNKa/839gCnzP6Lfn24on7778IFKLeOyDLIXTWZ2zhTuuHdAhXnRxos/FUU16CacpmNgkhf7jHd9HT25ra+jJ130wwlL84qnxOQWcuix/lL43EApuK+PFDzUT07s3i6FQ7OkeNpEOfrZGCm4r48c/WyMDH/hVde3abT3tec2vkgi1TwdQKeUOkcpNUYp9YxS6lSl1JtKqVVKqYlKqbPC7U+nwCSv9Rnv+jp6cltfR0+66ocalhbrnqQgn9Lt9hU+xUc4sWsbKq0xSR26ULLIuqqnZNEMrr/+Gkf0a1obDUwA3c+8C+QAhcBCYC3WTRe/AsaE25mOgUle6TPe9XX05La+jp501felqrA0L3lSDZuSmP4LTmxZi6qbhhTkA9bgplnTxo7rOxFqeDJ48acipwYudUXkdREZBtQTkRdF5AcReRto4JCmwWAwGBxAm7C0U2pR++4nKP5kNBw9Uml2rF6sYqiIU5dDlyqlWgNpQKpSKlNEFiulzgUSgz1JKZUFZAGoxPokJNQB9AxM8kqf8a6voye39XX0pKs+hBaW5glPCYnU/tMTlCyexfEV8wGQQwdQ9RogBfmoeg3Y89M+5/RrUBsNKt6Vxxs4dcTlYeBzYCzwG+AxpdQGYD7w/4I9SURGi0imiGSWDVpAz8Akr/QZ7/o6enJbX0dPuupDaGFpXvBUa8AgSnf9QEn2pPJpx1cuJLlzLwCSO/fi88+/dky/JrXRoBSJWIsWjhxxEZGZSqnfA6UikqOUysc6x2W1iHwZbn86BSZ5rc9419fRk9v6OnrSVT/UsLRY95R4TjuSO1/JiR3fk/roKwAUTx5L8fSJ1P7jY9Tp2pvS/Xt4Put2x9dpOLWGwDgSQKeUGow1UEkCpgOXALOAq4CvReSf1fURagCdwWAwGCJDoHyWYLiROVJT8rMuDKmuwegVDi9J9Rw/tiOqAXRnNrwgYvvabftXRmXZnRq4rAQygBRgF5AuIgVKqdrAIhHpUF0fZuBiMBgihY4ptzp6cpt1rduHXNtm/SpHliHaA5f0hu0jtq/dvn+Vp5Nzj4vICREpAjaJSAGAiBwBanQmUKymZ8aavo6e3NbX0ZPb+m57eu3159m05TsW5kytsj+n9I2n2NVvMvQhzpr9IWdMeqPC9Hr9r+eMyW9xxmejafjQXVHxZAiCE6l2wCIg1X6c4DO9PrDUJOd6p89419fRk9v6bniqm3p2hXb1VbdIt0uvk7y8tZXmecW/jp7c1t94fm/Z/vuHZNtN90rx+u9l4/m9rWl3/l0Oz18qGzN+JRvP7y3fd7/ZMU/RTs71T0s+mebp5Fygh320Bal4rVUycEe4nbmdHukVfR09ua2voye39d32BDB/Xg75+6s/R8NL/nX05Ib+0SWrKD14qMJz6t96HQfe/hBKSgA4sf9gVPxHA5OcayMiAX9QFZG9IrIy3P7cTlr0ir6OntzW19GT2/puewoHL/kPFS95clu/jOSzTqfWxe05fcJIWrzzAintW0dV31ARpwLoDAaDwWDQApWYSGK9uuzo/yAp7dvQ7F9PwKefur1YESGaUf2RwqmfiiKK2+mRXtHX0ZPb+jp6clvfbU/h4CX/oeIlT27rl3F8914KZ8wDoHjVOpBSGjduGDV9J4nw+a1RwRMDF7fTI72ir6Mnt/V19OS2vtuewsFL/nX05LZ+GYez51P7EisLJrnl6ajkZPbu3R81fUNFPPFTkdvpkV7R19GT2/o6enJb321PAGPeHUm37p1p1KgBa9bP49lnRjJ+3Eee9q+jJzf0mw5/lNqdOpCYVp+WM95j/6jxFHz6NU2feYgzJr2BlJSw5/EXouI/GkQzqj9SOBJAFwlMAJ3BYDAYYpXCb4aHXHvqFQ+HXBvtALrG9VpHbF+7t2C9pwPoIk4sBxbFkr6OntzW19GT2/o6eop3fR09VVW7a/9B7ho+lhueGMUNT77Of6cvKp83YcZ39H38NW548nXO7PfkSekbAuBQAF0S8GfgKyDXblOB/wOSTQCdd/qMd30dPbmtr6OneNfX0VN1tdumvC5L//uCHJn7nuyd/rb06t5FVn34b5n95lD5Xd+r5eA378qRue/JKSmnh6Uf7QC6BqeeK5FqXg+gG491r6KngGvt9jRwIfBeuJ3FemBRrOjr6MltfR09ua2vo6d419fRU3W1TdLq0rZlcwDq1E7hnOaN2XOggInfLOGP117GKcnWKaQnSiXkPt3AXFX0MxeLyD0islBEttttoYjcA3QMtzMvBRbFc7CXjvo6enJbX0dP8a6vo6dwanfsPcDabbu44Jx0tu7ex9IN2xgw9C3+OOxdUk6puJs1AXQnj1MDl/1KqZuVUuX9K6USlFK3AvnBnqSUylJKLVZKLS4tPezQohkMBoPBEBmKjh7jr69N5O+/vZpTa6dwvLSUg4eP8N6Td/GXW66iWdNabi9ilZQiEWvRwqnLoW8DngdGKaXyAYV1g8Vv7HkBEZHRwGioeFWRlwKL4jnYS0d9HT25ra+jp3jX19FTKLUlx0/w0GsfcW2X9vS6uC0AzRrU48qLzkMpxQXnnA5AQgKUloavHw1i9criqnDqXkVbRORWEWkCdAW6ANPsad+H25+XAoviOdhLR30dPbmtr6OneNfX0VN1tSLCU+98zjnNm/D7q7uWP+eKjm3IWbsFgC279qHUz4OWcPUNgXHkiItSanKAyb8smy4i14fTX6wHFsWKvo6e3NbX0ZPb+jp6ind9HT1VV7tsww9MWZBLq/Sm3DL4DQDuv/GX3NC9I/8YM5l+/+91khMT2fNTcch9ukE07+ocKRwJoFNKLQVWA28BgvVT0fvYPxOJyOzq+qhX55yQF6yoJODNqA1xQGpySsi15nViCIVwXlN1T6kdUt3uwwdqujha0KxOWsi1oa4rL733D43PCrm29q2DoxpAVyf1rIgNAg4XbfF0AF0msAR4AjgoIrOAIyIyO5RBiz+vvf48m7Z8x8KcqZXmBXpBxmpgkVf79JJ+Va+Vmvbpticd9b3iqarXk/+gpcXppzFx8jt8s2Ay2fP/x11/vj2qnsKpdbPPqtZToEGLm+/9cGqD1R0an8Wug4e5e8wM+r0yhX6vfMF/F6yt8Nxx89aQ8Y8J5B8+Wu2yG3AmgM7nmu50YCLwKrAtnOfWTT1bytrVV90i3S69TvLy1orv9LqpZ3sqsMiLfca6vv/rIdTXSix70l0/1j2F+npqkdauQsto00N697hRWqS1k1bpmbJpw/fSs/OvpUVaO0/5d6LPmqwnt9/7kfJf9MFTsvXNR2TJSw9I0QdPyU9jn5BeXS+WlS//RYo+eEo2v/F3uaNPD+nZKUN2vP1o1ELcylqtWmdKpFq0ltnRyH87v+VmrNTcsIPnypg/L4f8/aEdPozlwCIv9uklfQj9teIVTzrqe8lTOJ89e3bvZVXuGgAOFxaxYf1mTmve1NP+negz1PUUbr+Rfu9H0n+TurVp26IhAHVSkjmnST32FBQB8K+pSxl0dUdQUf2FqJwIH6yIClG5V5GIfCEij0dDyyuBRV7p00v64eAVTzrqe8lTTUk/owXtO7Rl2ZLck9J327/T67Sq9XQy/VaF2/535Beydmc+F6Q35ps122lSrzZtTmtQUztxiWdusmgwGAxeILVOKm+OG8Hgx4ZReMgEaQYjHtdTUXEJf/vgW/7e52ISExRvz8nj3l92cHWZJIL/ooV2A5dYDyzyWp9e0g8Hr3jSUd9LnsIlKSmJN8eOYNLEL5g6ZcZJLadTtW73CaGtp5r0Gwpu+S85UcpfP/iWazucxZXtzmB7fiE7DhRyy6ip9Hnpf+wpKOK3//mKNm3aRDX/P5o/FSmlrlFKrVNKbVRKPVrTZdZu4BLLgUVe7NNL+uHgFU866nvJU7i8+MoQNq7fzOhRY4PWeMm/U+s0lPVUk35DwQ3/IsLTny3k7Cb1+d1lVsJuq2ZpfPPIjUx9qC9TH+pL03qpvP9/17Bu3Tr3YnQdRCmVCLwG9AHaAb9VSrWrSV9ORf5HlDHvjqRb9840atSANevn8ewzIxk/7qOAtbEcWOTFPr2kD6G/VrziSUd9L3kK57OnU5eLuOm2vqzOW8e0OZ8AMGzoCLKnf+tZ/070Gep6CrffSL/3I+l/+bafmLJiC62apXHLqC8BuL/XhXRvfXpA3WgSxZNqLwE2ishmAKXUB0BfrMy3sHAkgC4ShBpA53awkMFdvBRCZfAGob6mQg2fAxNAF2oAXTjrySvv/XDC5yD6AXS+9wU8WY4f2xF02ZVSNwHXiMjd9t+/AzqLyMCwhaJ9zXgEfkPLimSd233Gu76OntzW19GT2/o6eop3fS958koDsoDFPi3LZ95NwFs+f/8OeLVGOm4brcGKWRzJOrf7jHd9HT25ra+jJ7f1dfQU7/pe8qRDw7rh8tc+fz8GPFaTvrQ7OddgMBgMBkPMkQO0UkqdrZQ6BevehYFuyFwtnjg512AwGAwGg3cRkeNKqYHA10AiMEZE8mrSlxcHLqMjXOd2n/Gur6Mnt/V19OS2vo6e4l3fS560QES+BL482X5i9qoig8FgMBgMBn/MOS4Gg8FgMBg8gxm4GAwGg8Fg8AwxfY6LUuo8rGS9snjBHcBkEVkTJf1LABGRHDua+Bpgrf07XVXPGyciv4/GMoaDz5ncP4rIDKVUf+BSYA0wWkRKXF1Ag8FgMBiqIWbPcVFKPQL8FvgA2G5PTsfa8X4gIsNOou/zsAZDi0Sk0Gf6NSLylf14MNY9FZKA6UBn4BvgKqxr0f9p1/lfzqWAK4BsABG5vorl6IYVg7xKRKb5zesMrBGRAqVUbeBR4CKseORnReSgT+0DwCQR+aEa3/+1/aQCB4BTgU+BK7FeC3f41Z8D9APOAE4A64EJIlJQlY7BEGmUUh4kfg8AAAyMSURBVE1FZI8D/TYSkX2R7tdgMDiI26E0VYTVrAeSA0w/BdgQRj9/8Pv7AWAd8BmwBejrM2+pz+OVWJdspQIFQD17em0g1/c5wHvA5UBP+/+d9uOeftrf+Tz+E7AcGAzMAx71q80DkuzHo4ERQDe7/lO/2oPAj8C3wL1AkyDrItf+PwnYDSTafytfTz7raRrwJDAf6+ZY/8QaOF3u9usjgq+zpg7128htbwGWqT4wDFgL7Af2YR1tGwakhdjHVL+/6wHPAeOB/n7zRvn9fRrwuv1aagQ8Zb/PPgKa+9Q19GuN7PdqA6ChX5/X+Pl7G8gFJgDN/GqHAY3tx5nAZmAjsNX3vWq/p58EfhHC+sjE+kLzHtYAf7r9fswBOvrUnQoMsd/XB4GfgIXAnQH6TAL+DHxle8kFpgL/R4DPxCqWbbTP40S7z6HAZX51T/r9nQo8DPwdqAXciZW3MRw4NQTd9QGmdfB5nGyv38nAs0CqX+1An+10LjAH64vWIuACv9pPgdurWy7gHGAM8Iy9Ld4EVgETgbP8ahOAPwJfACvs18MH+H3uObGdTAtxnbm9AFVszLVAywDTWwLrwuhnm9/fK8te5MBZWLHED9p/L/OpC/jY/nu5z+ME4C/2B1aGPW1zkGXx7TMHe4AB1AFW+tWu8Xm8NJh+Wb/2cvTG+uD+yX4z3QHU9albhTXwawAcwt4J2B9Oa/z6XMnPA5tUYJb9+MwA6+Okd4h2P1N9HpsdYgg7RLs2pJ0iVn7CI8BpfuvuEWCaz7SLgrSLgZ1+fX5i+/8N1o7oEyAlyOv2K+B+rKOHubbuGfa0//nUlQLf+7US+//Nfn36ftl4C2vH1BLrPfmZ/2va5/E3QCf7cWt8UkxtnX8B24Dv7L5aBNlO32Edmf0t8ANwkz39SmCBT93/sAYA6cBDwP8DWgFjsY6g+vb5PtbruYtdn24/fh340K/W/zXt+9re7rduJgCDgCXAS1V8vnwEvAiMAmYCrwLdgReA8X61h7C+2BXYjw9hHZ09BBQE2U4vAu9ifbn7NzDOr888n8dfADfYjy8H5vnV7gA+xvrc+Qi4ATglwHaaA9yD9dpbBfwV67V3F5DtV/sO1mdIN6wvjEOwjrTPAO53cjuZFlpzfQGCLph1PslGrBHsaLt9ZU+7xq82N0hbCRT71eb5/X2q3e9LVByQLML+JgAk+Eyv7/9Gt6enY43eX8VvsORTswJrJ9kIv7hnKg8GJmIfLbLfSJn249ZAjl+t/wdPMnC9/cb6yWf6X7B2qluxjqjMxPrmsRIY7NfHSn7eATWg4gf7Kr/akHaI9vSQdoqYHWJIO0R7Wkg7RaoY8PvOw9rxZNte/NsRv+f5D6KfwDqC2CjAdvIduPt/ofB97/3V3qYX+Ez7PshyL61iWfz/XsPPRzEXVrENffvsjrUD32X7z/J7XlWefOet8JuXY/+fgHXenO+8Skcsgs2zt9Vmv9d02d/HfOp8jxInYX2efgqkEOSLGdaR2F38fEpBoCOzLwPj8BnMB9pWfutiOfYRiSB9+r4W/T/r/GuX2f/Xw7r3zZdYA/d3gN7hbqcgGgvt/1Oo+IUy4tvJtNCa6wtQ5cJZb+ouwI1264J9FMCvbjeQgbVj8W1nYZ2I6lubjX1kxGdakv3mO+EzLSXIMjXG73Cl3/xf4fcNymfeFp8X62bsowFYgyf/D9n6WN9KNmENokrs58wGLvSrXVbF8vgfhm2BvbME0rBufHVJgOc9iDUIeBPrSErZIKoJMMevNqQdov13SDvFAOvD7BCDbG9C3Cli/fT3MBV3Ms2wBnozfKatAloFWS8/BPCe4DftTqyjP1uDLSfwTLD1ZP9d9kXgJaAuwY9ibscarP3Vfn8on3n+O6D77XXwS6xv1COxvvU/jc+RBP/Xlz0tEevL1Dt+0xdgHem8GesLwW/s6T2pOGidD3SzH19PxXu2+L9HFtr9+X5hSgBuxTovz7d2A3BmddsKv8GRPW0w1ntqg9903/fMmKpea/a0i7He0w/Yy1lpW9nbph/W57j/0V3/1+8/sT77zgEexzpK1BL4AzDFrzbQtmqE9XNNts+0JVhfJC4B9vLzF8FzA7xOlmAfFcX6UjXHZ95qJ7eTaaE11xcgIiasw/jdgsyb4Pd3Oj5HBvzmXRbJ5Qpj+VOBs4PMqwdcaH84NAtS09qh5Tofa2BzXjV1Ie0Q7ekh7RQxO8SQdoj2tJB2ilhHzp7HGojmYx1eX2NPa+hTdxPQJsh6+Y3f38OBXgHqrqHyDnEIAc5FwNp5fBxE73qsHcSuIPMH+7Wyn19Pw+8nCHv65cCHWD+vrsT6hp6FzzkJWCf/h/oeuRDriONU4Dx72x+wX6eX+tV9Z6/3uWXrF+uLwAN+fZ5lL+MerHP91tuPP8TvcwK4D78vMr6vS5/H7+F3pNqefjdQ4jftrSDb6RfA3CBaCVgDl2/x+7Joz3/HrzXz2U4zA9TfifWFbS/Wz06rsc6Hqe9XNyfQ8gTo70qscxvXYP0E9AnWYGIPPuc52rW/xDoqugHrS2Znn201PMB2+sneRmX91Xg7mRbi+87tBTDN+42KO8T9VNwhNvCrDWmniD47xCSfmojvEO3aDlTcKba2pwfaKZ4H9PJfX1T++fU8+8O+yrpqavuEURtUH+uE+PY10K9xbZh9tg2xz7ahrHt7WmesowONgMuAvwHXBnmtXMLPP0+2wxpwV6oNta6K2l/hM4APUtsd+EcQ/c411D8f6wvEyfrv7NdnVeu0a6jLatc0stt7wWoCPKfS54hpIa47txfANL0bfld1RaI2Un367RAjvpxueKqqltCvqAupzv77/kjXOqgfqv9w+1wboqdq6+y/B2MNqhdjnaA+E+u8pTnAE9XUZgeqDbUuArUBl/UkPTnh/6T1sc6982+FZY/9+vSv+zxYrWkhfK65vQCm6d0IcqLyydR6pc9Y0yf0K+pCqnOqVkf9GvRZbRRDOLVO9Bnv+oQXhbEs1FrTqm8xnZxr8AZKqdxgs7DOdQm71it9ekkf65yhQgAR2aKUuhz4WCnV0q4Nt86pWh31w+nzuIicAIqUUpvEDnwUkSNKqdIa1jrRZ7zrZ2JdxPAE8HcRWa6UOiIis6nMxWHUGqrBDFwMkaAZcDXWORa+KKwTR2tS65U+vaS/WymVISLLAUSkUCl1HVYw1wU1qHOqVkf9cPo8ppRKFZEirB0eAEqp+liX9Nek1ok+41pfREqBfyulJtr/7ybIPjWcWkMIuH3IxzTvN8K7qiukWq/06TH9kK6oC7XOqVod9cPsM+QohlBrnejT6FeaHzQK42RqTavcYvZeRQaDwWAwGAz+JLi9AAaDwWAwGAyhYgYuBoPBYDAYPIMZuBgMHkUpdUIptVwptUopNVEplXoSfb2rlLrJfvyWUqpdFbWXK6UurYHGFqVU45ouo8FgMIAZuBgMXuaIiGSISHvgGNb9WcpRStXoqgURuVtEVldRcjkQ9sDFYDAYIoEZuBgMevAtcK59NORbpdRkYLVSKlEp9YJSKkcplauU+jOAsnhVKbVOKTUDaFrWkVJqllIq0358jVJqqVJqhVJqplLqLKwB0l/soz3dlVJNlFKf2Bo5SqnL7Oc2UkpNU0rlKaXeonJeicFgMISNuY7cYPA49pGVPlh3vgbrjrbtReR7pVQWcFBEOimlUoB5SqlpQEegDdZ9WJph3cRujF+/TbDuDt7D7quhiOxXSv0HKBSRf9l1E4B/i8hcpdSZWPdYaosVnT5XRIYopX4F3OXoijAYDHGBGbgYDN6ltlJquf34W6w8l0uB70Tke3t6b6BD2fkrQH2gFdADeF+shNAflVLZAfrvgnX33e8BRGR/kOXoBbRTqvyASj2l1Km2Rj/7uV8opfwD8gwGgyFszMDFYPAuR0Qkw3eCPXg47DsJuF9EvvaruzaCy5EAdBGRowGWxWAwGCKKOcfFYNCbr4F7lFLJAEqp1kqpOlh3ur3VPgemOXBFgOcuBHoopc62n9vQnn4IqOtTNw3rjsrYdWWDqTlAf3taH6BBxFwZDIa4xQxcDAa9eQvr/JWlSqlVwBtYR1onARvseeOABf5PFJGfgCzgU6XUCuBDe9bnwA1lJ+cCDwCZ9sm/q/n56qansQY+eVg/GW1zyKPBYIgjTOS/wWAwGAwGz2COuBgMBoPBYPAMZuBiMBgMBoPBM5iBi8FgMBgMBs9gBi4Gg8FgMBg8gxm4GAwGg8Fg8Axm4GIwGAwGg8EzmIGLwWAwGAwGz2AGLgaDwWAwGDzD/wf59auTMTqMqQAAAABJRU5ErkJggg==\n"
564 | },
565 | "metadata": {
566 | "needs_background": "light"
567 | }
568 | }
569 | ]
570 | },
571 | {
572 | "cell_type": "code",
573 | "source": [
574 | ""
575 | ],
576 | "metadata": {
577 | "id": "U_H89_rKwtxu"
578 | },
579 | "execution_count": null,
580 | "outputs": []
581 | }
582 | ],
583 | "metadata": {
584 | "colab": {
585 | "name": "train_plate_OCR_ir.ipynb",
586 | "provenance": [],
587 | "authorship_tag": "ABX9TyPQrYJnR64nbEC/oCmeXRi9",
588 | "include_colab_link": true
589 | },
590 | "kernelspec": {
591 | "display_name": "Python 3",
592 | "name": "python3"
593 | },
594 | "language_info": {
595 | "name": "python"
596 | },
597 | "accelerator": "GPU",
598 | "gpuClass": "standard"
599 | },
600 | "nbformat": 4,
601 | "nbformat_minor": 0
602 | }
--------------------------------------------------------------------------------