{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "2021-07-23-tv-recommender-sweettv.ipynb",
"provenance": [],
"collapsed_sections": [],
"toc_visible": true,
"mount_file_id": "1zkfLIWjQgSJBKSCjG5omGLAb6FRolSgS",
"authorship_tag": "ABX9TyN0KuBnSNw+sb6qMle3catl"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "Nk7rQKVZuH7f"
},
"source": [
"# SweetTV Recommendation System\n",
"> building a tv-show and movie recommender system using lightfm and lightgbm models on sweet.tv's streaming dataset\n",
"\n",
"- toc: true\n",
"- badges: true\n",
"- comments: true\n",
"- categories: [LightFM, HyperOpt, Kaggle, Movie, Streaming]\n",
"- image:"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9e9cNJhnUeak"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Pr5yN9ocVG_O"
},
"source": [
"[sweet.tv](https://sweet.tv/en) is a streaming service that offers access to TV-channels, Ukrainian films, world-class movies, cartoons, and the best series"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wN6SZZSirDX2"
},
"source": [
"## Planning"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hJbU1_5WrLZT"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HxxyhJHtqxF2"
},
"source": [
"## Setup"
]
},
{
"cell_type": "code",
"metadata": {
"id": "9NcKbY8EmaiL"
},
"source": [
"!pip install lightfm"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "idqGxCJCq4ax"
},
"source": [
"import ast\n",
"import tqdm\n",
"import scipy\n",
"import datetime\n",
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"from tqdm.notebook import tqdm\n",
"from matplotlib import pyplot as plt\n",
"\n",
"from sklearn.preprocessing import LabelEncoder\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.feature_extraction.text import CountVectorizer \n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"\n",
"import lightgbm as lgb\n",
"from lightfm import LightFM\n",
"from lightfm.datasets import fetch_movielens\n",
"from lightfm.evaluation import precision_at_k, auc_score\n",
"from lightfm.cross_validation import random_train_test_split\n",
"\n",
"from hyperopt import hp, tpe\n",
"from hyperopt.fmin import fmin\n",
"\n",
"%matplotlib inline\n",
"sns.set_style('whitegrid')"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "GdizjewFRrq_",
"outputId": "a2cd9771-8a22-4dfb-cf6f-677bfef6dd44"
},
"source": [
"!pip install -q watermark\n",
"%reload_ext watermark\n",
"%watermark -m -iv"
],
"execution_count": 62,
"outputs": [
{
"output_type": "stream",
"text": [
"Compiler : GCC 7.5.0\n",
"OS : Linux\n",
"Release : 5.4.104+\n",
"Machine : x86_64\n",
"Processor : x86_64\n",
"CPU cores : 2\n",
"Architecture: 64bit\n",
"\n",
"lightgbm : 2.2.3\n",
"IPython : 5.5.0\n",
"scipy : 1.4.1\n",
"hyperopt : 0.1.2\n",
"numpy : 1.19.5\n",
"seaborn : 0.11.1\n",
"matplotlib: 3.2.2\n",
"tqdm : 4.41.1\n",
"pandas : 1.1.5\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zguHoz5JVO1f"
},
"source": [
"## Data loading"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZW44lJ6KVga1"
},
"source": [
""
]
},
{
"cell_type": "code",
"metadata": {
"id": "ygd-g5xEVUyp"
},
"source": [
"!pip install -q -U kaggle\n",
"!pip install --upgrade --force-reinstall --no-deps kaggle\n",
"!mkdir ~/.kaggle\n",
"!cp /content/drive/MyDrive/kaggle.json ~/.kaggle/\n",
"!chmod 600 ~/.kaggle/kaggle.json\n",
"!kaggle competitions download -c sweettv-tv-program-recommender"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-feOG4ALVZoy"
},
"source": [
"!unzip -qqo /content/sweettv-tv-program-recommender.zip"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "oMvqZwyiVk_G"
},
"source": [
"## EDA"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oFUpGnbArZ-b"
},
"source": [
"**dataset11-30week.csv** - the training set. `vsetv_id` is the same as `channel_id` in export_arh_*.csv files."
]
},
{
"cell_type": "code",
"metadata": {
"id": "WUcG0MONd-wd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"outputId": "62fba7c2-eba0-4556-d38e-c93811912c49"
},
"source": [
"df = pd.read_csv('dataset11-30.csv')\n",
"df.head()"
],
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" user_id | \n",
" vsetv_id | \n",
" start_time | \n",
" stop_time | \n",
" duraton | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 3398461054087191302 | \n",
" 6 | \n",
" 2020-03-09 00:00:02 | \n",
" 2020-03-09 00:01:53 | \n",
" 111 | \n",
"
\n",
" \n",
" | 1 | \n",
" 17226860011138219284 | \n",
" 353 | \n",
" 2020-03-09 00:00:02 | \n",
" 2020-03-09 00:03:26 | \n",
" 204 | \n",
"
\n",
" \n",
" | 2 | \n",
" 18417531283109304442 | \n",
" 332 | \n",
" 2020-03-09 00:00:05 | \n",
" 2020-03-09 00:01:26 | \n",
" 81 | \n",
"
\n",
" \n",
" | 3 | \n",
" 3677642666679759206 | \n",
" 7 | \n",
" 2020-03-09 00:00:08 | \n",
" 2020-03-09 01:07:41 | \n",
" 4053 | \n",
"
\n",
" \n",
" | 4 | \n",
" 15105343836194894915 | \n",
" 108 | \n",
" 2020-03-09 00:00:10 | \n",
" 2020-03-09 00:02:34 | \n",
" 144 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" user_id vsetv_id ... stop_time duraton\n",
"0 3398461054087191302 6 ... 2020-03-09 00:01:53 111\n",
"1 17226860011138219284 353 ... 2020-03-09 00:03:26 204\n",
"2 18417531283109304442 332 ... 2020-03-09 00:01:26 81\n",
"3 3677642666679759206 7 ... 2020-03-09 01:07:41 4053\n",
"4 15105343836194894915 108 ... 2020-03-09 00:02:34 144\n",
"\n",
"[5 rows x 5 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "RyRuvRR3elsS",
"outputId": "a0243d97-a2c1-41be-d759-75e6551f7b8b"
},
"source": [
"df.info()"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 5821987 entries, 0 to 5821986\n",
"Data columns (total 5 columns):\n",
" # Column Dtype \n",
"--- ------ ----- \n",
" 0 user_id uint64\n",
" 1 vsetv_id int64 \n",
" 2 start_time object\n",
" 3 stop_time object\n",
" 4 duraton int64 \n",
"dtypes: int64(2), object(2), uint64(1)\n",
"memory usage: 222.1+ MB\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uXaTbqxLeP8X"
},
"source": [
"df.start_time = pd.to_datetime(df.start_time)\n",
"df.stop_time = pd.to_datetime(df.stop_time)\n",
"df['date'] = df['start_time'].dt.date"
],
"execution_count": 7,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 306
},
"id": "1d2LNs8keQ4o",
"outputId": "c63b8f10-1d06-4015-d6e2-e20cfff8e3f3"
},
"source": [
"df.describe(include='all', datetime_is_numeric=True).T"
],
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" count | \n",
" unique | \n",
" top | \n",
" freq | \n",
" mean | \n",
" min | \n",
" 25% | \n",
" 50% | \n",
" 75% | \n",
" max | \n",
" std | \n",
"
\n",
" \n",
" \n",
" \n",
" | user_id | \n",
" 5.82199e+06 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 9.29473e+18 | \n",
" 2.24447e+15 | \n",
" 4.92875e+18 | \n",
" 9.24975e+18 | \n",
" 1.38644e+19 | \n",
" 1.84438e+19 | \n",
" 5.2006e+18 | \n",
"
\n",
" \n",
" | vsetv_id | \n",
" 5.82199e+06 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 498.091 | \n",
" 3 | \n",
" 6 | \n",
" 175 | \n",
" 935 | \n",
" 1531 | \n",
" 572.814 | \n",
"
\n",
" \n",
" | start_time | \n",
" 5821987 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2020-05-05 03:15:37.239014656 | \n",
" 2020-03-09 00:00:02 | \n",
" 2020-04-01 00:05:17 | \n",
" 2020-04-25 22:00:58 | \n",
" 2020-06-02 21:35:18 | \n",
" 2020-07-26 23:58:42 | \n",
" NaN | \n",
"
\n",
" \n",
" | stop_time | \n",
" 5821987 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2020-05-05 03:40:17.770906624 | \n",
" 2020-03-09 00:01:26 | \n",
" 2020-04-01 00:23:54.500000 | \n",
" 2020-04-25 22:17:34 | \n",
" 2020-06-02 22:10:13.500000 | \n",
" 2020-07-26 23:59:58 | \n",
" NaN | \n",
"
\n",
" \n",
" | duraton | \n",
" 5.82199e+06 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 1480.46 | \n",
" 61 | \n",
" 133 | \n",
" 396 | \n",
" 1452 | \n",
" 342145 | \n",
" 3123.74 | \n",
"
\n",
" \n",
" | date | \n",
" 5821987 | \n",
" 139 | \n",
" 2020-03-22 | \n",
" 88255 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" count unique ... max std\n",
"user_id 5.82199e+06 NaN ... 1.84438e+19 5.2006e+18\n",
"vsetv_id 5.82199e+06 NaN ... 1531 572.814\n",
"start_time 5821987 NaN ... 2020-07-26 23:58:42 NaN\n",
"stop_time 5821987 NaN ... 2020-07-26 23:59:58 NaN\n",
"duraton 5.82199e+06 NaN ... 342145 3123.74\n",
"date 5821987 139 ... NaN NaN\n",
"\n",
"[6 rows x 11 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 8
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rt4B8r9Cr5i8"
},
"source": [
"**export_arh_*.csv files** - supplemental information about train data (TV program schedule). Contains tv_show_id - have to predict 5 of these for the submission user_ids."
]
},
{
"cell_type": "code",
"metadata": {
"id": "hhYpovGmd-wf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 479
},
"outputId": "5a42aadb-d92b-4880-bf27-29c3ee52a8d1"
},
"source": [
"df_info = pd.read_csv('export_arh_11-20-final.csv').append(pd.read_csv('export_arh_21-30-final.csv'))\n",
"df_info.start_time = pd.to_datetime(df_info.start_time, format='%d.%m.%Y %H:%M:%S')\n",
"df_info['stop_time'] = df_info['start_time'] + pd.to_timedelta(df_info['duration'], unit='s')\n",
"df_info = df_info[df_info.tv_show_id != 0].copy().reset_index(drop=True)\n",
"df_info.head()"
],
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" channel_id | \n",
" channel_title | \n",
" start_time | \n",
" duration | \n",
" tv_show_title | \n",
" tv_show_id | \n",
" tv_show_category | \n",
" tv_show_genre_1 | \n",
" tv_show_genre_2 | \n",
" tv_show_genre_3 | \n",
" year_of_production | \n",
" director | \n",
" actors | \n",
" stop_time | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 3 | \n",
" 1+1 | \n",
" 2020-03-09 07:40:00 | \n",
" 5400 | \n",
" 'ТСН. Неделя'. | \n",
" 2400480 | \n",
" Инфо | \n",
" общество и политика | \n",
" NaN | \n",
" NaN | \n",
" 1997 | \n",
" NaN | \n",
" NaN | \n",
" 2020-03-09 09:10:00 | \n",
"
\n",
" \n",
" | 1 | \n",
" 3 | \n",
" 1+1 | \n",
" 2020-03-09 09:10:00 | \n",
" 8400 | \n",
" 'Голос страны', 10 сезон, 8 эп. 'Бои'. | \n",
" 700475 | \n",
" Развлечения | \n",
" музыка | \n",
" NaN | \n",
" NaN | \n",
" 2010 | \n",
" NaN | \n",
" NaN | \n",
" 2020-03-09 11:30:00 | \n",
"
\n",
" \n",
" | 2 | \n",
" 3 | \n",
" 1+1 | \n",
" 2020-03-09 19:30:00 | \n",
" 2700 | \n",
" ТСН. | \n",
" 2400480 | \n",
" Инфо | \n",
" общество и политика | \n",
" NaN | \n",
" NaN | \n",
" 1997 | \n",
" NaN | \n",
" NaN | \n",
" 2020-03-09 20:15:00 | \n",
"
\n",
" \n",
" | 3 | \n",
" 3 | \n",
" 1+1 | \n",
" 2020-03-09 20:15:00 | \n",
" 14100 | \n",
" Премьера. Х/ф 'Любовь без памяти', 1-4 с. | \n",
" 90082508 | \n",
" Фильмы | \n",
" мелодрама | \n",
" NaN | \n",
" NaN | \n",
" 2019 | \n",
" Андрей Комаров | \n",
" Алина Гросу, Артем Алексеев, Ирина Мак | \n",
" 2020-03-10 00:10:00 | \n",
"
\n",
" \n",
" | 4 | \n",
" 3 | \n",
" 1+1 | \n",
" 2020-03-10 00:10:00 | \n",
" 6900 | \n",
" Х/ф 'Сделано в Америке'. | \n",
" 90080911 | \n",
" Фильмы | \n",
" боевик | \n",
" биографический | \n",
" комедия | \n",
" 2017 | \n",
" Даг Лаймэн | \n",
" Том Круз, Донал Глисон, Сара Райт | \n",
" 2020-03-10 02:05:00 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" channel_id ... stop_time\n",
"0 3 ... 2020-03-09 09:10:00\n",
"1 3 ... 2020-03-09 11:30:00\n",
"2 3 ... 2020-03-09 20:15:00\n",
"3 3 ... 2020-03-10 00:10:00\n",
"4 3 ... 2020-03-10 02:05:00\n",
"\n",
"[5 rows x 14 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LjBepX8Xe_Zx",
"outputId": "6104a551-3442-4a5d-86b7-94ae5caf9eca"
},
"source": [
"df_info.info()"
],
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 237118 entries, 0 to 237117\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 channel_id 237118 non-null int64 \n",
" 1 channel_title 237118 non-null object \n",
" 2 start_time 237118 non-null datetime64[ns]\n",
" 3 duration 237118 non-null int64 \n",
" 4 tv_show_title 237118 non-null object \n",
" 5 tv_show_id 237118 non-null int64 \n",
" 6 tv_show_category 237118 non-null object \n",
" 7 tv_show_genre_1 226331 non-null object \n",
" 8 tv_show_genre_2 141357 non-null object \n",
" 9 tv_show_genre_3 43902 non-null object \n",
" 10 year_of_production 234747 non-null object \n",
" 11 director 205092 non-null object \n",
" 12 actors 205934 non-null object \n",
" 13 stop_time 237118 non-null datetime64[ns]\n",
"dtypes: datetime64[ns](2), int64(3), object(9)\n",
"memory usage: 25.3+ MB\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "_ERF3vr1d-wg",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "8632bd96-6666-417e-f70b-9e503d468c32"
},
"source": [
"print('No. of users:', df.user_id.nunique())\n",
"print('No. of channels:', df.vsetv_id.nunique())\n",
"print('No. of TV shows:', df_info.tv_show_id.nunique())\n",
"print('Data dates:', df.start_time.min(), df.start_time.max())\n",
"print('Data dates info:', df_info.start_time.min(), df_info.start_time.max())"
],
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"text": [
"No. of users: 4914\n",
"No. of channels: 202\n",
"No. of TV shows: 8234\n",
"Data dates: 2020-03-09 00:00:02 2020-07-26 23:58:42\n",
"Data dates info: 2020-03-08 23:00:00 2020-07-27 06:00:00\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "wbK229Xid-wi",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 251
},
"outputId": "4e1eced5-79c5-4d35-a08f-6fe90ef00af6"
},
"source": [
"ax = df.groupby(['date']).size().plot(figsize = (20, 7));\n",
"ax.set_title('Views by time', fontsize = 15);"
],
"execution_count": 18,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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7ADW/KkwMDvo2Y9VHfUN4D7g/8EKwL6cwkt4E1aodgewB3ijaZpPzXPcHYl/fz+F1xjG2lVvL/BgYn1ryjTNQaz38ThW2+L/Yg2ILwaeXeShIiIiIsviiMcXq3IXERERkfWWaFmsNU3zmkyvRURERCSd1MonIiIikiGGYVwM7MMaqP6mDC9HREREJO0UTImIiIhkzl1ABfA10zR/lunFiIiIiKSbWvlERERERERERCQjNPxcREREREREREQyImtb+Z5++um4x+PJ9DIki0UiEXQNLU7vkaw3XWMWvQ+y3nSNLU3vkaSDrjO9B5Ieus6Wtth7FAqFBvfu3VuZrrVkbTDl8XjYuXNnppchWay5uVnX0BL0Hsl60zVm0fsg603X2NL0Hkk66DrTeyDpoetsaYu9RwcPHjydzrWolU9ERERERERERDJCwZSIiIiIiIiIiGSEgikREREREREREckIBVMiIiIiIiIiIpIRCqZERERERERERCQjFEyJiIiIiIiIiEhGKJgSEREREREREZGMUDAlIiIiIiIiIiIZoWBKREREREREREQyQsGUiIiIiIiIiIhkhIIpERERERERERHJCAVTIiIiIiIiIiKSEQqmREREREREREQkIxRMiYiIiIiIiIhIRiiYkg1pKhojNBXL9DJERERERERENjQFU7Ihfe3+U7z/rs5ML0NERERERERkQ1MwJRvS0W4/PWPTTE6rakpEREREREQkUxRMyYbU7Z8AYCQ0meGViIiIiIiIiGxcCqZkQ+oasYKpwfFIhlciIiIiIiIisnEpmJINJzQ5zUhoCoDBcVVMiYiIiIiIiGSKginZcLpHJ2a+HlLFlIiIiIiIiEjGKJiSDadzZHYwpYopERERERERkUxRMCUbTtesiqnBoCqmRERERERERDIlJ9MLEEm37tEJXE4HxR6nKqZEREREREREMkjBlGw4XSMT1BR5yXNFNWNKREREREREJIMUTMmG0zU6QX2pj9jkBENBVUyJiIiIiIiIZIpmTMmG0z0apr7ER4nXpVY+ERERERERkQxSMCUbynQ0Rm/gTDA1OB4hHo9nelkiIiIiIiIiG5KCKdlQegNhorE49aU+ir0uItMxgpPRTC9LREREREREZENSMCUbSvdoGIC6Eh8lPheABqCLiIiIiIiIZIiCKdlQukZDADOtfACDmjMlIiIiIiIikhEKpmRD6RqZAM4OplQxJSIiIiIiIpIZCqZkQ+kaDVOW78bndlGcDKaCqpgSERERERERyQQFU7KhdI1OUF/iAzgTTKliSkRERERERCQjFEzJhtI9K5hyuxwUenM0Y0pEREREREQkQxRMyYYRj8fpGpmgLhFMAVQUeBhUxZSIiIiIiIhIRiiYkg1jJDTFxFSU+tIzwVR5vpshVUyJiIiIiIiIZISCKdkwukfP7MiXVF7gZiioiikRERERERGRTFAwJRtG58i5wVRFgUcVUyIiIiIiIiIZomBKNoyuZMXU7Fa+Ag/DoUmisXimliUiIiIiIiKyYSmYkg2je3QCX66L0rzcmdsqCtzE4zASUtWUiIiIiIiISLopmJINw9qRz4vD4Zi5rTzfA6B2PhEREREREZEMUDAlG0bX6AT1pXln3VZe4AZgaFwD0EVERERERETSTcGUbBjdoxNnDT4Hq5UPYDCoiikRERERERGRdFMwJRvCxGSUoeAk9SXes24/08qniikRERERERGRdFMwJRvCfDvyART7cnE5HZoxJSIiIiIiIpIBCqZkQ+hOBlMlZ8+YcjodlOW7GQqqYkpEREREREQk3XJSOcgwjL8B3g3EgcPAO4Fa4H+AcuAg8KemaU4ahuEB/hPYCwwBbzRNsy1xno8Bfw5Egb82TfO+xO2vBL4MuIDvmKb5+bV6gSJwpmKqbk4rH0B5vptBVUyJiIiIiIiIpN2SFVOGYdQDfw3sM01zN1Z49CbgX4Avmaa5DRjBCpxI/HskcfuXEsdhGMauxOMuAl4JfM0wDJdhGC7gq8B1wC7gzYljRdZM18gELqeDmqJzg6mKAo9mTImIiIiIiIhkQKqtfDmAzzCMHCAP6AFeAvwscf8Pgdcmvr4h8T2J+19qGIYjcfv/mKYZMU2zFTgJXJn456Rpmi2maU5iVWHdsLqXJXK27tEJaoq85LjOveTLC9wMaVc+ERERERERkbRbspXPNM0uwzC+CLQDE8D/YrXujZqmOZ04rBOoT3xdD3QkHjttGIYfq92vHnh81qlnP6Zjzu1XLbWuSCRCc3PzUoeJAPBc9xAlbs66ZsLhMM3NzTgi4/QHJnQ9zSP5HomsF11jFr0Pst50jS1N75Gkg64zvQeSHrrOlman92jJYMowjFKsCqYtwChwG1YrXkZ5PB527tyZ6WVIlhi9s4d9m0vPumaam5vZuXMn23tPckdzgC3bLsSb68rgKu0n+R6JrBddYxa9D7LedI0tTe+RpIOuM70Hkh66zpa22Ht08ODBtK4llVa+lwGtpmkOmKY5BfwCeD5QkmjtA2gAuhJfdwGNAIn7i7GGoM/cPucxC90usiaisTi9/jB1Jb55768ocAMwqDlTIiIiIiIiImmVSjDVDjzPMIy8xKyolwLHgPuBNySOeTvwy8TXdya+J3H/703TjCduf5NhGB7DMLYA24Engf3AdsMwthiG4cYakH7n6l+aiKUvEGY6Fqe+dP5gqjzfA8CQduYTERERERERSaslgynTNJ/AGmJ+CDiceMy3gL8HPmQYxkmsGVLfTTzku0B54vYPAR9NnOcocCtWqHUv8D7TNKOJOVXvB+4DmoFbE8eKrInu0QkA6heomCpPVEwNBVUxJSIiIiIiIpJOS86YAjBN85PAJ+fc3IK1o97cY8PATQuc57PAZ+e5/R7gnlTWIrJcXUsEUxUFVsXUoCqmRERERERERNIqlVY+kazWOZIIphZq5UtWTCmYEhEREREREUkrBVNy3usenaA0L5c89/wFgnnuHPLcLoY0/FxEREREREQkrRRMyXmva3RiwR35ksoL3AwFVTElIiIiIiIikk4KpuS81zUyseB8qaTyfA+DqpgSERERERERSSsFU3Jei8fjdI9OLDhfKqmiwK0ZUyIiIiIiIiJppmBKzmv+iSmCk9GUKqaGgqqYEhEREREREUknBVNyXpvZkS+VGVPjk8Tj8XQsS0RERERERERQMCXnue7RRDC1RCtfeYGH6VicwMR0OpYlIiIiIiIiIiiYkvNcVyKYWmpXvooCNwCDaucTERERERERSRsFU3Je6xqZwJvrpDzfvehx5fkeAA1AFxEREREREUkjBVNyXuv2T1BX4sPhcCx6XHmiYmpoXBVTIiIiIiIiIumiYErOa10jE0sOPoczwdRgUBVTIiIiIiIiIumiYErOa12j4ZSCqbK8RDA1poopERERERERkXRRMCXnrfBUlMHxSErBVI7LSWleLkMafi4iIiIiIiKSNgqm5LzVneKOfEnlBR4NPxcRERERERFJIwVTct7qHg0DUF+aYjCV71YwJSIiIiIiIpJGCqbkvNU1GgJIqZUPoKLAw6Ba+URERERERETSRsGUnLe6RiZwOqCm2JvS8RUFqpgSERERERERSScFU3Le6hoNU13kJdeV2mVeXuDBPzHF5HRsnVcmIiIiIiIiIqBgSpbhh4+18ak7j2Z6GSnrGg2l3MYHUF7gBmAkpKopERERERERkXRQMCUp+9nBTu56pjvTy0hZ1+hEyjvyAZTnewAYHNecKREREREREZF0UDAlKZmcjmH2jjEUnGQqav9Wt+lojO7RMJvK8lJ+TEWiYkpzpkRERERERETSQ8GUpORE/xiTiUAqGyqKevxhorE4jWXLaeWzKqaGtDOfiIiIiIiISFoomJKUHO0KzHzdH7B/cNMxHAKgcRkVU+WqmBIRERERERFJKwVTkpIj3f6Zr/vH7B9MtSeDqdLUg6lCTw5ul5NBBVMiIiIiIiIiaaFgSlJypMs/M6+pfyyc4dUsrX04RI7TQW2xN+XHOBwOygvcDGVBq6Jkh9DkdKaXICIiIiIiYmsKpmRJ0Vic5p4xXmRU4nBkSSvfyAT1pT5yXMu7xMsL3AwFVTElq3eofYRLPvW/tA4GM70UERERERER21IwJUtqHRxnYirKpY0llOW5s6aVbzltfEnl+R5VTMmaeKJlmOlYnBN9Y5leiswSnoryzu8/yZEu/9IHi4iIiIjIulMwJUs6khh8vru+mMpCDwNZ0MrXORxa1uDzpPICt2ZMyZpo7rF+b/qyIMjdSE70jXO/OcCDzw1keikiIiIiIoKCKUnBkS4/3lwnWyvyqSry2r5iKhiZZig4SWOZb9mPrSjwMDgeIR6Pr8PKZCOZCab89g9yN5LWIau1snt0IsMrERERERERUDAlKTjS7WdnbRE5LidVhR7bz5jqGLF25Nu0koqpfDeR6RjByehaL2vdHDw9wodve4ZoTGGaXYSnorQkZkv1Bc7/YCqbgtzTiZ9LjwJDERERERFbUDAli4rF4hztCrC7rhiAqkKroihm4xCkfWgVwVSBByCr5kz9z5Pt3Hawk4dOqDXJLk72j88Ehed7K1/bYJCX/L8P8pXfncj0UlKiiikREREREXtRMCWL6hgJMRaZ5qK6IsAKpqZjcYZD9p3D1D5sBVMrGn5e4AbIqjlT+9uGAbjtQEeGVyJJxxJtfNuqCug/jyummnsCvOEbf6B1MMjjrUOZXk5K2hIVU10KpkREREREbEHBlCxq9uBzgKoiL4Ct2/k6RyYo9ORQkpe77MdW5GdXxVT/WJi2oRAlebn85lgfw8HsCdTmE4/HmZyOZXoZq9bcE8CX6+KKpjJ6z9Ng6uDpEd74zT+Q43RwZVMZLQPBTC8pJaeHQjgcMBaeZiw8lenliIiIiIhseAqmZFFHuv3kuhxsry4ArIopsAIRu2ofDtFQlofD4Vj2YysKrYqpoSwJePa3jgDwset2MBWNc8dTXRle0eo88NwAl/7T/2Z9wNbcE8CoKaSu2MtoaIrwVPbMLEvFwycGeNt3nqAs381tf3U1115YQY8/TDAynemlLSoQnmIoOMmuWqsCVHOmREREREQyT8GULOpIl58Lqwvx5LgAqCpMVEzZeG5Ox3CITSvYkQ+gLD8RTGVJxdT+tmF8uS5uvLyBPQ3F3HqgI6sGUc91rDtAaDKK2TuW6aWsWDwe53jvGDtri6gutn5fBmz8+7Jc9x7p4c9/cIDN5Xnc+ldX01iWx9ZKK7huHbR31VSyje/52yoAtfOJiIiIiNiBgilZUDwe52j3mcHnAFVFVsWUXT9ox+Nx2odDKxp8DuDJcVHozcmaGVP724a5bFMJuS4nN+1r5HjvGIe7/Jle1or1JipY2obsHXAspjcQZjQ0xa7aQqoTra/nSzvfbQc6eO+PDrG7voif/uXVM0H11sp8AE4NjGdyeUtKBmdXX1AOQM/o+fFzERERERHJZgqmZEE9/jDDwUl21xfN3ObNtYIbuw50HhiLEJmO0bjCYAqgosCzYCtfLBbn1v0dtNjgA/hYeIrmngBXNJUB8JpL6/DkOLk1i4egJwOcbA6mmhODz3fUFlGdCHL7bPr7shzffaSVD//sWZ6/rYL/fvdVFM+a4dZUno/Dge3nTJ1O7Nh5RVMZLqdDO/OJiIiIiNiAgilZ0JFE5c1F9cVn3V5V6LFtK1/HSGJHvlUEU+X57nlb+YKRad7z3wf5yM+f5a/++2DGh3QfPD1CLA5XbrGCqSJvLq+6uJZfPt2dtTONkgFOm81bwhbT3GO1Ie6oKaQ6UVHUZ+PNAlJxvDfAZ351jD++qJrvvH0fee6cs+735rpoKPXRYvOfW9tgkNpiLwWeHGqKvHT7FUyJiIiIiGSagilZ0JHuAE4H7KwpOuv2qkKvbYOp9uFEMFW6imCqwM3QnFa+zpEQr//6Y/yuuY+b9jbwXN843364ZVVrXa39bcO4nA4ubSyZue2mfQ2Mhae572hvBle2cslWvmRlSzY61hOgscxHoTeXkrxc3DlO21YYpuqp9lEAPvGqXTPz5ubaWlHAqf7MVxIupnUoSFO51XZYW+xVxZSIiIiIiA0omJIFHe3ys62qAJ/77A+iVUUe2+7K1zFsfdBsKF3Z8HOA8gIPQ8Ezwdv+tmFu+I9H6Rqd4AfvvJIv3LSH63bX8O+/O5HRyp79bSPsrisi33OmeuV5W8ppLPPx0/3Z1843HY0xOB7B4bBa+WKx7Bzi3twTmAlzHQ4H1UWerJ8xdbTbT6E3h8ZFNhXYWplP66C9f26nh0I0VVjBVF2Jj27NmBIRERERyTgFU7KgI93+swafJ1UVeugPRGy5+1v7cIiaIi/e3PmrOlJRke9mODhJNBbn1gMdvOXbj1Psy+WO9z2fay+sBOBTr7mIXJeT/3vHkYy8D5HpKE93jM7Ml0pyOh3ctLeRx04N0TGcXVVHA+MRYnGrQi88FaPPpuHnYiYmo7QNBtlZe6bKsLrQm/Uzpo50BdhVW4TD4VjwmK2VBUxMRW0bwvknphgOTtJUblVT1pZ46fWHbR2kiYiIiIhsBAqmZF79Y2H6ApFz5kuB1coXmY4RCE9nYGWL6xgOLVrVkYryAg+xOHzsF8/ykZ89y1Vbyrn9vc/ngsqCmWOqi7x85JUGj5wc5JdPd6922ct2uNPP5HSMK7aUnXPfG/Y24HDAbQc7076u1Ui28V211XpNbYPZFawBPNc3ZoVrs4OpYi/9WTxjajoa43hvgN3z/C2Y7YLEznx2HYCerG5MVkzVl/iYjMYYDGbvz0ZERERE5HygYErmdbTb2llsd13ROfdVJXYaG7BhRYsVTK18vhRYM6YAbj3QyTv+qIkfvPOKs3YgS3rrVZu5tLGEz/zqGKOh+XfxWy9Ptg0DsG9z6Tn31ZX4uGZ7JT870EE0i6pBkgPCr9pSDmTnznzJHfl21hbO3FZd6KU3ELZlhWEqWgaDhKdiXDTP34LZksHtKRvsWDmf5PW0JdnKV2wF2GrnExERERHJLAVTMq+jiR35ds3zYbSy0Aqm7FYFEpmO0hMIr2rwOYBRXUhJXi6ffd1uPvWai8hxzf9r4nI6uOXGixmdmOKWe46v6jmX60DbCBdU5lNe4Jn3/pv3NdDtD/PYqcG0rms1ku1ul28qwe1yZm0wle92nXUNVhd5CE1GGY/Yr8IwFUe7E7tzztPWO1tVoYd8t4sWuwZTiQq8TWVnWvkAejQAXUREREQkoxRMybyOdAXYUpFPoffcSqGqQusDnd125useDROPn/nguVLbqwt56h9ezluv2rzksTtri3j3NVv46YEOnmgZWtXzpioWi3OgbZgr52njS3r5rmpK8nKzagh6byBMrstBRYGHxjJfRgfLr1Rzzxg7aotwOs/MYqousn5f+mwW5KbqaFcAT45zplVvIQ6Hg62VBbTY9OfWNhSkrvjM/Ln6EqtiqkvBlIiIiIhIRimYknkd6fYv2LqTbOWz28587Ylh35vKVxdMAYsOeZ7rgy/dTkOpj4/ffpjIdHTVz70Us2+MQHj6nMHns3lyXLz20nr+92hf2tsMV6rPH6aq0IvT6WBLRT6nh7JrxlQ8Hqe5N3BWGx+cCab6bToUfClHuv3sqC1asHJwtgsq8207Y6p1MDgzXwqg2JdLnttFjz87fy5ghdQfvu2ZtIXiIiIiIiLrQcGUnGM0NEnnyMSCw44LPTl4c522a+VL7kK32la+5cpz5/CZ1+7m1ECQbzzQsu7Ptz8xX2qxYArg5n2NTEZjGRnOvhK9gTDVidBzc3k+bUPBrNoxrWt0grHw9FmDz4GZ12TX3eoWE4/HOdYdWHK+VNLWygK6RieYmFz/gHa5Tg8F2Vx+JphyOBzUFnvpzuKKqdahILcd7OS+o32ZXoqIiIiIyIopmJJznBl8Pn8w5XA4qCr02q6Vr2M4hDvHSVXh/HOX1tOLjSpefUktX73/5LoPf36ydZiaIi8NpYvvPrirrojd9UXceiA72vl6A2Fqiq3qoqaKfMJTMdtdY4tp7hkDYEfN2SFOVRa38nWOTBAITy/4t2Curcmd+QbtNWfKH5piJDTFloqzQ+u6El9WB1OHTo8AZPVrEBERERFRMCXnONKVHHa8cJVEVaHHlq18DaW+s+b7pNM/Xr8LT66TT9x+eN12YIvH4+xvG+aKLWUptRvevK+Ro90Bnu0cXZf1rKU+f3im7W1LorKl1abziubT3BPA4YAdNWe38hV4cijw5MwMd88mqfwtmG1rhbUzn93a+VoTg/Sbys+ek1VX7KM7i1v5DrVbv9fdfgVTIiIiIpK9FEzJOY50B6gv8VGa717wmKoij+2qWTpGQqsefL4aVYVePnrdDh5vGeZnBzvX5Tk6RyboC0S4sqk0peNvuLSe0rxcPvOrY+sWlq2FsfAUwckoNYlganNiTtjpLNqZr7knwOayPPI9OefcV13kycpg6mh3AJfTgTEnbFvIlop8HA77BVPJ62hLxZxgqsTHwFgkLbPh1sNT7aqYEhEREZHsp2BKznG0y8/u+sUrJKoKvQzYrDWpfSiU9vlSc735ik3s3VzK5+5pZji49kPHn2xNzJdaZEe+2Yp9uXz0uh3sbxvh54e61nw9ayUZ2iQrpupKfLhdzplKl2xwvHfsnPlSSdVF3qwMpo50+9leVTCzk91SfG4XdcU+27XytQ4GcTigsWxuK1+izdJvr79lqRiPTPNc3xj5bheD49joH38AACAASURBVJOEp7IzXBMRERERUTAlZxkLT9EyGFxypkxloYexyLRthhz7Q1MEwtMZrZgCcDodfO51FzMWnuaf7z625uff3zZMkTeHC6tSq2ABuGlvI5dvKuGWe5ptu0Nfcv5SMphyOR00lvk4PZgdO/OFJqdpGwouEUxlX/hxtDvArhTb+JK2Vuav+5y15WobDFJX7DsnYKsrsea0dWVhxdEzHaPE4vCyXdUAWb27oIiIiIhsbAqm5CzJAc4L7ciXlBwwbpc5Ux0jiR35MhxMARg1hbznhVv5xaEuHjs5uKbn3t82zL6msmXN0XI6Hfzzay9mJDTJF+4z13Q9a6U38aE6OfwcrLartiypmDreO0Y8zqLBVP9Y2NbtlHP1B8IMjEVSHnyedEFlAa0DQVu91rahEE0V5/5tSAZT2dgKl2zju253LZCdr0FEREREBBRMyRwzw46XauWz2U5jHcPJYGrxnerS5QMv2c7m8jw+cceRNWuxGRqPcGogyBVNqbXxzbarroh3/NEWfvxkO0932G8Qem+izS05Ywpgc7kVTNkp4FhIc4+1k+XcwedJ1UUepqLxdWnvXC/J3TlTHXyedEFlPsHJqG3+NgC0DQXZPGfwOUBtIgjtycLh4YfaR9lWVcCuRBiqYEpEREREspWCKTnLkW4/VYUeqgq9ix5nt4qp9mH7VEwBeHNd/PNrd9M6GORr959ck3Pub7MqJK7cktrg87n+5uXbqSr08InbDxON2Svs6QuEKfLm4HOfabVqqsgnPBWzVcCxkOaeAIXeHBpK5w9Gq20W5KbiaLcVUi+/lS+5M5892vlGQ5OMhqZmdnqczZvrojzfTdeoPf6OpSoej/NU+wiXbyqhutiDwwHdWfYaRERERESSFEzJWY52BZZs44NZwZRNPmi3D4coyculyJub6aXMuGZ7Ja+9tI6vP3iKE31jqz7f/rZh3DnOlH4+8yn05vIPr97F0e4A//346VWvZy31+sNntfEBNCV25msdtH87X3PPGDtrinA45m+xrC6yfl/6bBLkpuJIV4Cm8jwKl/k7tbXSCoDsMmcqef00VZwbTIHVzpdt1UZtQyFGQlNctqkUT46LygJP1r0GEREREZEkBVMyY3I6xsmBcXbWLj1YuzTPTY7TQf+YPYKpjpGJjA8+n8//ffUu8tw5fPz2w8RWWaV0oG2YSxtL8OSktkPafP7k4lqu2V7BF+8zbVPtBlbFVHXR3GDKChJO23zOVCwWx+wdW/T3Jvna+rNoZ76jPX4uWuZ8KbDaMfPcLk4N2OPndnrIqqbcMs+MKbDa+bKtle/Qaat68vJNVvVkXYmP7ix7DSIiIiIiSQqmMsg/MbXmw7FXo304SDQWZ1tVwZLHOp0Oqgo9tgk3OoZDtmnjm62iwMPHX7WD/W0j3HqgY8XnCUamOdId4MoVzJeazeFw8OnXXERkOsbn7m5e1bnWUm8gfNZ8KbA+bLtdTlptHkx1jkwwHplecPA5WLtYAvT67RHkLsUfmqJjeGLZbXxgXWNbK/NpsUmlW+tgEIcDGkrn//tgVUzZ4+9Yqp7qGKHQk8P2xN/q+hJfVu4sKCIiIiICCqYy6t4jPbz1u0/YZiByssJha8XSwRRAZZGXARtUTEVjcbpGJmhc4INnpt28r5Ert5TxuXuaV/x+PdU+SjQW54otqwumwJoB9Fcv3ModT3fz2KnMB6PT0RgDY5FzWvlcTgeNZT5OD4YytLLUHEsOPl8kmPLkuCjLd2dNK9/RHmu+1ErbRrdWFNhmxlTbUJC6Yh/e3PkrDetLfIxHpgmEp9K8spU7dHqUPY0lM7tz1pV46R6dyIqNAkRERERE5lIwlUGleW7icegcsccH75ZkMFU5/yyWuaoKPbaYMdUXCDMZjdmylQ+sCpLPvW43E1NRPvOrYyv68Phk2zBOB1y+qWRN1vTeF2+jsczHP9xxhMnp2Jqcc6UGxyeJxc/s9DjblgprZz47a+4J4HSAUb14C2x1kTdrWvmOrXBHvqStlfl0jU6s2Y6Uq9E2FGLLAvOlAGpLrOsuW2Y0BSPTHO8NnPW3oK7ER3gqxkgoe8I1EREREZEkBVMZlGwt6RyxxweiloFxKgs9KQ87tksr35kd+ebfEc0OtlUV8t4XbePOZ7q57ssP8/ODnSkFQsPBSb56/0l+9PhpdtUVLXsQ9UK8uS7+6TW7OTUQ5HuPtq7JOVeqLxHWzG3lA9hcbgVTdq4Eae4J0FSRf9aOgvOpLvLQmyXB1NHuADVFXioKPCt6/NbKAuJxewyubxsMsrl84dC6rsT6u5EtwdSznX5icbhs85ndObPtNYiIiIiIzKZgKoPqE1vLd9klmBoMsnWRyoK5qgq9jISmMl5x05EIpuxaMZX0wZdu54s37SEeh7+97Rmu/df7+eaDp+ZtITrc6efvbnuG593yO75wn4lRU8gtr7tkTdfz4h1VXHthJd95uJXIdOYqW3oXCaaaKvIJT8Xos0Fl3kKO944tOl8qqbrQa+vXMduRLv+Kq6WAmb8jLRkegD4SnMQ/MbVoxVT9TKiTHaHhoXZr8PlljWcqppKvQXOmRERERCQb5WR6ARtZsS+XQm+ObVr5Tg2M86qLa1M+vqrIqqYYGI/MfDDKhI7hEE7HmaoBu3I6HbxhbwOvv7yeB58b4NsPt3DLr4/zld+f5C1XbeJtV23mqY4RfvhYG4faR8lzu7h5XwNvv7qJ7Uu0ia3Uu1+whT/73pP86pkeXr+3YV2eYynJiqnq4nOrc5oSlS5tQ8FzZlDZwVh4ivbhEG+8onHJY6uLPAyOR5iOxshx2fe/CUxMRjk1MM51u2tWfI5kO3Cm50wl20CTOzzOp6LAQ47TkTXVRk+1j7C1Mp+SPPfMbaqYEhEREZFspmAqwxpK82zRyjccnGQ0NLXMiikrSOgPhDMbTI1MUFvsI9fGH/ZnczgcvMio4kVGFUe6/HzroRa++0gr33qoBbDCmH989S5ev7eBYt/atO4t5JrtFWyvKuB7j7Zy4+X1OByOdX2++fT6w+Q4HVTkzxdMWddj22CQ520tT/fSlmT2jgGws3bp4LC62Es8bs3UsmPIltTcGyAWh4tWOPgcIM+dQ12xN+M7880EU4v8XXM5HdQUe7Mi1InH4zzVPsqLjKqzbi/Ny8Wb68yK1yAiIiIiMpeCqQyrL/HZomIqWdlwQWVqO/KB1coH0J/hnfnah0O2b+NbyO76Yv79zZfxkVca/PLpbnbVFfHC7ZUzu22tN4fDwbtesIWP/eIwT7YOc1UGwp/eQJiqQs+8r7muxIfb5aRtKPO/I/NpTu7IV5NaKx9Yr9fOwdTRVQ4+T9paWcCpDFdMtQ5a1ZRLzZ+rK/HR7bd/K1/7cIih4CSXbz57EwSHw2G9hixpRxQRERERmS07SkzOYw2lPjpHMr/N93J35IMzrXyZDqY6hkO2HnyeiobSPN734m282KhKWyiV9LrL6inNy+W7j2RmCHpfIEz1AkGNy+mgscxHmw2GaM/nSFeAkrxcalMImqoTM7T6bD4A/Vi3n2Jf7qqrILdW5tMykNnB9W2DQepKfHhyFh9MX5clFVPJ+VKXbyo95776Ep9mTImIiIhIVlIwlWENpT7GI9P4JzK7zfepwXHcLufMToGpKM9343DAQAY/aE9MRukfi2RtxZQdeHNdvOWqTfymuY/2DFQm9frD8w4+T2pK7MxnR/tPD7Nvc2lKLZDJGVr9Ng+mjnQF2F1ftOq2zgsqCxiPTDOQweD69FBw0cHnSXUlPvoCYaIx++7+CPBU+yj5bhcXzjNzrjZLwjURERERkbkUTGVYQ2JnvkzPmTrVH6SpIg/XMqp1clxOyvM9Ga2YSrZBNiqYWpU/fV4TLoeDHzzWlvbn7gtEZqqJ5tNUkc/poVDGqwrnGhiL0DIQ5MotZSkdX57vweV0zOxCaEdT0Rhm7xgX1a18vlRSsvryVIZ25ovH47QOBtlcvvTfhtoSH1PROIPj9t418VD7CHsaS+b9O11X4qN/LJLRHTZFRERERFZCwVSGJSuUMh1MtQyOs7Ui9flSSVWFmQ2mOhRMrYmaYi+vvqSWWw90MBZOX/XeeGSa8cj04sFUeR4TU9GMt4zOtb9tGIArt6Q2l8vldFBZ4KEvYK/XMduJvnEmo7FVz5cCa8YUkLE5UyOhKQLh6UV35EuqL7GuPzu3woUmp2nuGZu3jQ/O7MzX57fv9SUiIiIiMh8FUxl2pmIqc8Odp6Ix2odCy5ovlVRV5KF/LHMVIMnWM7Xyrd67XrCF8cg0tx3oTNtzJuct1RSfuyNfUnJHtVabzZl6snWYPLdrWSFOdZHH1jOmjnb7AdakYqq2yIs31zkzvy7dku2fqbbyAfTYeHj44U4/0VicyzaVzHt/ciaYncM1EREREZH5KJjKsGJfLvluV0Y/THQMh5iOxWcqHJajqtBDfwYrQDpGJvDluijPd2dsDeeLSxpK2Le5lO8/1pq2WTt9iZ3QFq+YsoIFuw1Af6J1mL2bS8l1pf5ntLrIm9Hfl6Uc7Q7gy3WlFOYsxel0sLWigJbBzFRMJa+XphReS22xFerYeUbTofZRAC5bomLKzq9BRERERGQ+CqYyzOFw0FCal9FWvmRFwwUrqZgq9DI4HsnY0OD24RCbyvJWPahZLO96wRY6hif4bXNfWp4vOW9pseHndSU+3C4nbUsMZj/RN8bpNA1J94emON4b4Mqm1OZLJVUXeW09Y+pot59ddUXLmjW3mOTOfJnQNhjE6YDGFDZ0KPLmUODJsXW10VPtI2ypyKdsgRA+uTOkgikRERERyTYKpmygodSX0WAqOQNmRRVTRR5icRgKZqYKpGM4pPlSa+gVu6qpL/HxvUda0/J8M8FU8cLBlMvpoLHMt2jFlD80xRu/9Th/d9sza77G+Rw4PUw8TsqDz5Oqizz4J6YIT9lvQHUsFudYd2BN5kslba0soGMklJHX2zYUor7Uhztn6f+Zczgc1JV46fHbM9SJx+Mcah/lssb52/jA2l2zosBNt01fg4iIiIjIQnJSOcgwjBLgO8BuIA68CzCBnwJNQBtws2maI4ZhOIAvA68CQsA7TNM8lDjP24H/mzjtP5um+cPE7XuBHwA+4B7gg6Zp2msLrnVUX+qbGaScCS0DQSoK3BT7cpf92KpCazZQfyBCVeHC4cJ6iMfjdAyHuPqC1IZPy9JyXE7e8UdNfPaeZo50+XGt8/P1+cMUenPIcy/+p6ipPH9mZtB8vvTb5xgOTjIeniYyHcWTs74rf7J1GLfLyZ5FgoL5JFsW+wMRNqWwW1w6nR4OEZyMrmkwdUFlPvE4nB4KYdQUrtl5U9E2FExp8HlSbbGPbpvOmOocmWBwPMJlm+dv40uqK/HRZdPXICIiIiKykFQrpr4M3Gua5g5gD9AMfBT4nWma24HfJb4HuA7YnvjnL4GvAxiGUQZ8ErgKuBL4pGEYyf+X/XXgL2Y97pWre1nZpaHURyA8jX8ifbuhzbbSHfkAKhNh1EAGdkwbHJ8kOBnV4PM1dvMVjeS5XXz/0bZ1f67eQHjRNr6kpop8Tg+FiMfPzauP9wb4r8dPs7Uyn8lojCNdgfVY6lmeaB3m0sYSvLnLC8CSwZQd2/mOdK3d4POkCxJVmC1p3pkvHo/TOri8YKquxGfbiqlD7SMAXL7A4POkumKfWvlEREREJOssGUwZhlEMXAt8F8A0zUnTNEeBG4AfJg77IfDaxNc3AP9pmmbcNM3HgRLDMGqBPwZ+Y5rmsGmaI8BvgFcm7isyTfPxRJXUf84614bQkJiB0pWhdr6WgeCKduSDWRVTad6ZLx6Pc8s9zTgcsHeJKgJZnmJfLjftbeCuZ7oZnphe1+fqDUQWbeNLairPY2IqSv+cADQej/OpO49S6M3hW3+6F4BDp0fWZa1Jwcg0R7r8y27jgzPBlB135nuydRhvrpMLq9eusik5RL0lzYPrh4OTjIWnUxp8nlRX7GVwfNKWbZZPtY+S53ZhLPGzqSuxgqn5AlwREREREbtKpZVvCzAAfN8wjD3AQeCDQLVpmj2JY3qB6sTX9UDHrMd3Jm5b7PbOeW5fVCQSobm5OYXl299kovXiicPP4fCvfjes5RiLRBkKTlIQD67o/ZyMxgA4eqqT5oL0ffj81XE/v3hqiLddWkruWA/NzT1LP2iOcDh83lxDa+2amhg/jMb45dFhynzr9x51Do1xWa1vyZ+DM2QNPn/g4DEuqfHN3P5Q2ziPtwzz/udVMDXUSU1BDg8cOc0LKtevgu+pbmsXyxrX+LKvn7GIFXocPnGabW7/eixvRaKxOHc93cmV9T5OnTDX9NzleS4OneyiuWb+itD1+D1s7rf+puZMDNPcnGIIODEGwCOHjlJftPy25tVa7H141OxhW1kuJ55b/GeTE/ETmoyy/5mjFHrWuxFXso3+N29peo8kHXSd6T2Q9NB1tjQ7vUepBFM5wOXAB0zTfMIwjC9zpm0PANM044ZhpPU/0Xo8Hnbu3JnOp1w3VeMRuLsbCsrZuXNLWp/74OkR4DRXX7SVnTurlzx+PsW+LuLeorT9PA6eHuFbB1p5yY4q/unmfThXuINYc3PzeXMNrbWdwEubI9x7cpCP3XgBpQvsBLYa0Vic0XArxqZqdu7cseixBdUh+E0vFFSwc+cmAEKT0/zwjgfZVVvE37zmSlxOB1dvj/DIyUF27Nixbjs1/rrDxOV08Npr9lDgSWlM34x4PI7nZx2QV2Kra+/hEwOMhlt5ywt2sHNnzZqe26j1MzgZXfD1rsfv4bFQJ9DNCy41ZtoJlzLqHoJHBsgrr2Pntoo1XU8qFnofwlNRWkda+ctrty75e9I23QMHhsmvamTnGrZkyvlB/5u3NL1Hkg66zvQeSHroOlvaYu/RwYMH07qWVGZMdQKdpmk+kfj+Z1hBVV+iDY/Ev/sT93cBjbMe35C4bbHbG+a5fcMoy3fjy3VlZGe+llXsyJdUVehJWyvfwFiE9/7oILXFPr5086UrDqVkaR9+pUFwMsYtv16fFH1oPEI0Fk9pxlRdiY9cl4PWwdDMbV9/4BTd/jCfvuEiXInr4PLNpQyMRdb1d+mJ1mF21xUtO5QCa/e36iIvvX57tfLd+XQ3hZ4cXmRUrvm5jZpCzN4Awcj6toXO9lzfGG6Xk83LmD9XV2Jdh102m9F0qH2E6VicyzYt3bJcV2JVE9p1iLuIiIiIyHyWDKZM0+wFOgzDMBI3vRQ4BtwJvD1x29uBXya+vhP4M8MwHIZhPA/wJ1r+7gNeYRhGaWLo+SuA+xL3BQzDeF5iR78/m3WuDcHhcFBf6svIjKmWwSC5LgeNpb6lD15AVZHnnNk/62E6GuP9Pz6Ef2KKb7xtL8V56W+32Uh21BRx40XF3Hqgk8dbhtb8/MkB4NUpBFMup4PGsjxOJ3bmax8K8c2HWrjh0jquaDoz62lv4sP7wXWaMxWZjvJUx+iK5kslVRd5lpwx1TU6wak0DQyPTEe592gvr7ioZtnD3FPxyotqCE/F+N3x/qUPXiPNvWNsry4gx5Xq/h7MzDqzW6jz9QdOUZKXy/O2Ln3NnQmm7BWuiYiIiIgsJtX/1/4B4EeGYTwLXAp8Dvg88HLDME4AL0t8D3AP0AKcBL4NvBfANM1h4DPA/sQ//5S4jcQx30k85hTw69W9rOzTUOqjczS09IFrrGVgnE1lecv6ADdXVaGX/sD6B1Of//Vxnmgd5pYbL2bXGm5pLwt7y55SGst8fOL2w0Sm13YodLJqKJXh5wBbyvNpTQzR/szdx8hxOvjYdWeXnho1heS7XesWTD3b6WdyOsaVW8pXfI7qIu+iQW48Hucv//MAb/32E0wnZritp4eeG2QsPM31e2rX5fxXNJVRU+Tlzqe71+X88zneE2BHzfL+RnhyXFQWemy1M9+jJwd5+MQg73/xNgq9Swfx5flu3DlOBVMiIiIiklVS6kUxTfNpYN88d710nmPjwPsWOM/3gO/Nc/sBYHcqazlfNZT6eLpjNO3Pe2ogmPIMloVUFXoYGIsQj8fXba7Pr57t5juPtPL2qzfzussaln6ArAlvjpPP3LCbd3x/P994oIUPvmx7So8LT0Xx5DgXvR6SVUOptPIBbC7P57FTQzxg9vObY3185JXGOaGWy+ngsk2l6xZMPdlqZelXNK18J8jqIi+/P96/4O/LH04NcbQ7AMBDJwZ4yY6VzX5L1Z3PdFOW7+b56zRXyel08OpLavnhH9rwh6bWvdJxaDxC/1iEnbXL312wrthrm1a+WCzO5399nPoSH3969eaUHuN0Omz1GkREREREUrHyMhlZU/UleYyGphhP4xyW6WiM00PBVc2XAqgs9DAZjeGfmH/XLf/EFG/9zuO88/tP8oX7jnPP4R7aBoPEYqnNy3+ub4yP/OxZ9m4u5RN/smtVa5Xle5FRxfV76vjq/SdnZpIt5qHnBtj7md/wH78/uehxvYEwLqeD8gJPSuvYUpHHxFSUj/78ME3lefz5C+bfKODyzaUc7w2sy+/SE63D7KgppCRv5cPgq4s8hCajjC2wvm8/3EJFgZvyfDe37u+c95i1Epqc5rfH+rhudw25q6iaXMr1e+qYisa572jvuj1H0vFea3e95VZMgdUK12OT+V/3HOnhcJefD738Qjw5qbdY1pX4VDElIiIiIlll+dN7ZV00JGY8dY1MYNQs/7/0r0TnyART0ThbK/NXdZ6qRMVL/1hk3g/sn77rKI+3DLOtsoCHTgwSTQRSBZ4cdtYWclFdMXUlXtwuJ7k5TtwuJ+7Ev3NdTj53TzN57hy+9tbLcecoS82Ef3j1Th40+/nE7Uf48V9ctWAl1J3PdPO3tz7NVDTOT55s530v3rbggPpef4SqQs/M4PKlNFVY12lvIMz33rFvwQ/rezeXEovDMx2ja1oFNB2NcbBtmNfvXV3FXnKmVn8gTNGc9qyT/WPcbw7wNy+7kPHIFN9/tI3B8QgVKYZ3y/Xb5n4mpqJcv6duXc6fdElDMZvL87jr2W5uvqJx6QesQnOPVW22koqp2mIfDz43sK7Vn6mYisb4wn0mO2oKee1l9ct6bF2Jj0dODK7TykRERERE1p6CKZtIBlOdI6G0BVMtg1b1ywWrDaYKrQ/N/YEIF1afvfZ7j/Twi0Nd/PVLtvGhVxiEp6Kc6BvnaLefYz0BjnUHuO1AB8HJhecX5Tgd/OjdV6U0JFvWR1Whl49et5OP336Ynx/q4g3zhDM/eLSVT//qGFc0lXH9njr+4Y4j7G8b5qqt889j6guEZ0LNVDSVW9fpS3ZULdredmljCQ6HNQB9LYOpYz0BgpPRVQ0+hzPBVF8gwraqs39fvvtIK54cJ2973iZGQpN8++FWbj/UxV9cu3VVz7mQu57pprrIw5VNq3tNS3E4HFx/SR1fe+DkugZtYFVMVRZ6Uq7Em62uxEtoMop/YmpVVXGr9T9PtnN6KMT333FFysFtUl2Jj/6xMFPR2LpWwYmIiIiIrBUFUzZRn6yYSmMLRsuANUh6a8XqZ0wB9I+d3QIzMBbh47cfYXd9Ee9/iTWbyJvr4uKGYi5uKJ45LhaLE5qKMjkdYyoaY3I6RmTW1xWFHupLVr5roKyNN13RyM8PdfLZu4/xkh1VlOVbH9zj8Tj/9pvn+MrvT/KKXdX8+5svIxaPc8s9zdzxdPeCwVRvILysULSh1MctN17MS3dULXpcsS+X7VUFaz5nKjlfarUhTjKY6p3TMjY0HuHnh7p4/eUNlBdYwcrlm0r46YEO3n3NljWv4PFPTPGgOcCfXr15waq2tXT9njr+4/6T3HO4hz+7umndnud4b4AdKwz362d2tQtnLJgKRqb58u9OcNWWMl5kVC778fUlXmJxK/htKM1bhxWKiIiIiKwt/edUm6gs8ODJcdI5kr5g6tTAOGX5bkrzV/cBbHYrX1I8HudjvzjMeGSaf7v50kVb8JxOBwWeHMry3VQXeWksy2NbVQE7a4vY01iiUMomnE4Hn3vdxYyFp/ns3c0ARGNxPn77Eb7y+5O86YpGvvbWy/Hmushz5/CKXdXc/Wz3grv59fnDKQ8+B6vq5s1Xbkqpymrv5lIOtY+kPMcsFU+0DrOlIn9ZVV7zqS6ygty+OUHufz1+msnp2Fmzs27e18jJ/nGeWoeNEe472stkNLbubXxJRk0hRnUhdz2zfrvzTUdjPNc3zs7ale3aWTsTTGVuRtN3H2llcHySj163Y0VhZN2scE1EREREJBsomLIJh8NBfamPzpFQ2p7z1ECQrRWra+MDa1ZUnttFf+BMMPWzg538trmPj/yxcU57n2Qvo6aQ97xwKz8/1Mn9Zj/v+9GhxCypC7jlxovJmdU6dMNl9QTC0zxgDpxznmBkmrHINNXF69OeefmmUsbC05xKYVh7KmKxOPvbhtek5S3PnUOhN+es35fwVJT/+sNpXrKjim1VZyoYX72njjy3i1v3d6z6eee665luNpXlsWdW9eJ6u35PLfvbRtatMrRtKMjkdGzFFVN1Jdb12OPPTDA1NB7hmw+e4pUX1XDZppXt/Fhng3BNRERERGQ5FEzZSH2Jj640Vky1DARXPfg8qarQM9PK1zkS4tN3HeOqLWW86/nz75wm2esDL9nOprI83vWD/dx7tJd/fPUuPvzH51Z3XLOtgvJ8N798uuucc/QFrGtlORVTy7F3s/Whfq3a+U70jzMamlr1fKmk6iLvzHsAcMdTXQwFJ3n3NWf/vhR4cviTi2u565lugmu4y+DgeITHTg1x/Z7atA75TlZn3f3s+lRNHetZ+Y58ABX5HtwuJ10Zqjb6yu9PEp6O8eFXGis+R11x+tvCRURERERWQ8GUjTSU5qWtlS8QnmJwPMLWytXNl0qqKvTSPxYhFovzd7c9Qzwe54s37UnL7BpJL2+ui8/feDHl+R7+vzdeyrteSxrVVQAAIABJREFUMH/4mONy8upLavltcz+B8NRZ9/WuczC1pSKf0rzcNQumnmwdAljDYMoz8x7EYnG+80gru2qLuHqeeVw3X9FIcDLK3Yd71uS5AX59uIdoLM5r9ixvx7fV2lyez56GYu56Zu1ey2zHewLkOB1nVZ0th9PpoKbYm5FQp2dsih89cZqb9zVywSr+LvvcLsry3aqYEhEREZGsoWDKRhpKfQwFJwlNrl1lxEKSg89X8wFotsoiDwNjEb7/WBuPtwzzyesvorFMg3fPV3+0rYL9n3jpklvZ33BZPZPTMe490nvW7clqofVq5XM4HOzdXMrB9rUJpp5oHaau2Duze+ZqVRd6Z1r5HjwxwMn+cf7i2vkHnO/bXMrWynxuO7B27Xx3PdPDhdUFadsBdLbr99RxuMtP62Bwzc99vHeMbVUFi860W8oFlfkc7wms4apS859PjeByOvg/L9u+6nPVlXgVTImIiIhI1lAwZSPJD73p+EBxqt+avbNWrXzVhV66Rib4l3uP87KdVdy0r2FNziv2lUoL2GWNJWwuzzunna/Xb4Uy61UxBXD55lJaBoIMBydXdZ54PM6TrcNcuaVszdreqou99I+FrWqph1uoLvLwJxfPP4Tc4XBw875G9reNrMnMrO7RCZ5sG+b6S9Iz9HyuV19Sh8PBugxBP96z8h35ki5tLOXkwDhjc6r81tORLj8PtI7z5y/YMrNr42rUFfs0/FxEREREsoaCKRtJBlMdaWjnaxkcJ8fpYNMaVTVVFXmYjMYo8ORwy42XpHVujdiXw+HghkvreezU0FkzlfoCYQo9OeR7ctbtufcmhkc/tcqqqdNDIfrHIlyxRm18ANWFHqaicR49NcijJ4d4xx9tWbTK58bL63E5Hdy6BlVTdz9rtdGlaze+uWqKvVzZVMadz3QTj6/dron+0BTd/jA7VrgjX9Jlm0qIx+HZTv8arWxp33u0lQK3k/e88II1OV9diU8VUyIiIiKSNRRM2UhDqRUSpWPOVMtAkE1leeS61uYSSAZcn33tbioLPWtyTjk/vPbSOuLxsytkev1hqorW9zq5pKGEHKdj1XOmnmwdBuCqtQymElUxn7vnOHluF2+5ctOix1cVenmxUcX/z959xzd9X/sff2nY8t574AnGgNl7Ze/Q7D2bNG3Tpmmb9ua2t3umzf2lOzdtRrN3kzbNTpOQhGH2CMMIbGMwxtvgIWPJGr8/bBMIyzaa5v18PPIApI8+32NFBuvonPN5ZW0dvS73SV373xv3MjEnnnwvnMg5XIsmZVHZ1MW2hk6v7bmtoa/97mQrpiblJgCwoXb/Scc0GB6Ph6U7WpiWFUlcRJhX9sxOiKTT7jxitpuIiIiISDBSYiqIpMb0nQi1Z1+3z6/lzRP5AM4dl8779yzkgrJMr+0pI0NhagwTc+L51yHtfA0dPWT4aL7UgMhwE+Oz4k46MbVyZxtJ0eFem8cGn83Wqqjv4OrpucRHnTghcc2MXFq67HxkbR72dXe22NhU1x6wNr4BF0zIwGQ0eLWdbyDJVXqSFVPxkWEUpkazfrd/ElNVzTaaOu1MyvTO/DLoq5gC/7SFi4iIiIicLCWmgojRaCAroW9Wky+53B52ttq8+kbbbDJSnOb/QcoSGi6ZnM3mug4qm/qSB40dPV6ZpXMiU/MS2bhn/7CrjNxuD+VVLczM9958KfisYspggNvmHf1Uw887oySV1FgLL64efjvfG/2JoIsnBTaBnBxjYX5xCq9/6r12vor6DhKjwkjzQsXm5NwENtTu82qr4bEsr2rpu6YXE1OZCX2vLyWmRERERCQUKDEVZLITI33eyle37wAOp9urFVMix7NoUiZGA/xr/V7cbg9NnXafDj4fMC0vkZ5eNxXDPGVtRXUre9t7uKAsw6txpcZYMBsNnDcug1HJg5vzZjYZuXxqNoutTTR1DH2w9Y7GTh5fXsOsgiQy472XBBmuRZOyqG07gLXF7pX9Kho6Kc2M80oCcUpuAi1dDr+0VS+vbCU7IZKMGO/NW8vur5iq0wB0EREREQkBSkwFmZyEKJ+/GapqGTiRz3sVUyLHkxYbwbziFF7bWEdLlx2X2+PzVj7oS0wBw27ne2lNLXERZs4b793EVLjZyGO3zuAXl04Y0uOunp6Ly+3hlXV1J158iKrmLq57ZCVmo4H7Li8b0mN95dzx6YSbjXy08+RPGnS5PWxv6GRsxsm18Q2YnNv3uvH1nCm320N5dStzi5K9WpGXGmMhzGRQxZSIiIiIhAQlpoJMTmIkLV12enpdPrtGdbMNgMIADj+WU88lk7OpbTvA25sbAPzSypcZH0lWfMSwElPtB3p5e3MDl0zOJiLM5PXYThuTOuSDAopSY5iRn8jLa2pxOAfXnljTYuP6R1YAHp67Y1bQJKTjIsI4oySVJTU2XO6Ta5nb3dbNgV4XYzO90048NjMWi9no88TU1voO2g/0Mq84xav7Go0GMuIjlJgSERERkZCgxFSQyU4caMHw3RuK6uYu4iPDSIoO99k1RD7vvPHpWMxGHllSDeCXVj7omzO1bhiJqdc37sXudHP19FwfRDV8N8/Jp7rFxqI/L2Xd7uN/XbVt3Vz/yAp6XR6e/dLsoJsDd8nkbNoOuHh13Z6T2mdbf6tmqZcqpsJMRsqy432emBqYLzWnKNnre2fFRyoxJSIiIiIhQYmpIJOT2DdvxpftfFXNXRSlRnu1dUTkRGIjwjh7XPrB17Y/Wvmgr51vb3vPkN+kv7ymlrEZsUzI9k6yw1sWTcri0Zun09HTyxUPLeen/95Cl915xLq6/Qe49uEV2Bwunrl9FiUZwZWUAjh/fAYT0iL4+RtbqW8f/t95FQ2dGA0wOt171WCTcxPYVNc+6Mq04Vhe1UpRarRPqgezEyLZqxlTIiIiIhIClJgKMjkDFVM+TExVN9uCpp1HTi2XTc4GwGiAZD9V7A3MmTpRddGhrA2dbNzTzlXTc4MygXv2uHTe+/ZCbpqdx5PlNZz7u4/5cFvjwfsb2nu47uEVdPT08sztsxiXFVzJtQFGo4Fvz0vF6fJw7z8+HfYpeBX1HRSkRHu15XLyqAQcTjfbGoY3OP9EHE43q3a2eb2Nb0BWQiQNHT04h3kipYiIiIiIvygxFWTS4yIwGw3s2dftk/07e3pp6rTrRD4JiIVjUkmICiM11oLZ5J+/fkoz44gIMw5pztTLa2oJMxm4dHKWDyM7ObERYfz8kgn846tziLaYue2JNXzj+fVs3dvBdY+soM3m4OnbZ1GWEx/oUI8rKy6M7184liU7Wnhhde2w9tjW0MHYTO8m3ybnJgC+G4D+6Z79dDtczPVBGx/0JaZc/SdgioiIiIgEMyWmgozJaCAzIcJnrXw7mvpP5EtRxZT4X7jZyF1nFHPplGy/XTPMZGRSTsKg50w5nG7+ub6Os0vTSY4Z2nDyQJiWl8Qbd8/n22eP4d3NDVz4pyU0dvTw5G0zDiZXgt2Ns/KYW5TML9/YSm3b0JLynT291LYdYJyXE1PZCZGkxFjYsNs3iallla0YDDC70FeJqb72QM2ZEhEREZFgp8RUEMpJiPLZ8PNnVuwiIszIzIIkn+wvciJfWlDI9y8o9es1p+cnsnlvBzsaO0+49sNtTbTaHEE39Px4LGYT3zx7NG99cz6XT8nmydtmMi0vdL7HjUYD9185EYPBwL3/+BT3EE7p297//3Ssl2doGQwGpoxKYL2PKqaWV7UwPiuOhCjftLRmJ/j+IA0REREREW9QYioIZSdG+qSVr7atm9c27OX6mXk6kU9OKbfMzSchMoy7X9hAT6/ruGtfXlNLepyFBaN9M/vHl4rTYvndNZOZkR86SakBOYlR/PCiUsqrW3l6xa5BP66ivj8x5eWKKehr59vZYmN/t8Or+x5wuFi/ez9zi3z3GsvsT0xpALqIiIiIBDslpoJQTmIkjR127M7jv4Eeqr99UoXRAHcsLPDqviLBLi02gv+9aiIV9R3c/471mOsaO3pYbG3i8qk5fpuBJZ+5ZkYup41J5Tdvb6OmxTaox2xr6CA2wkyWD055nOKjOVNrdrXhcLl9Nl8KIMZiJj4yTK18IiIiIhL09M4rCOUkRgFQ78VPups6enhpzR6unJZDZnyk1/YVCRVnjk3n1rn5/H3ZTj6yNh11zavr6nB74KppOX6OTqCvfe43V5RhNhn47ssbcQ2ipW9bfSelGXE+OT2xLCceg8H7ianlVa2YjQafV7ZlJUQqMSUiIiIiQU+JqSA0MBvEmwPQH1lSjdPl5qunFXltT5FQ870LxlKSHst3X95I8+dOK/N4PLy8tpYZ+YkUpupwgEDJjI/kp4vGs2bXPh5ftvO4a91uD9saOhmb6d35UgNiI8IYnRbjk8TUlFEJRFvMXt338wpSotiyt2NIM7tERERERPxNiakglJM4kJjyzpypfTYHz67czRcmZZGXHO2VPUVCUUSYiT9dN4WOHif/9Y+NeDyfvWFft3sf1c02rgqhoecj1eVTszm7NI3737VS2XTsgfV1+w/QZXcyNsP786UGTMlNZEPt/sNeKyej/UAvm/bsZ44P50sNOG98Bg0dPazdPbgTKUVEREREAkGJqSCUGR+ByWg45mlKHo+HNz7dy7pBvtl4fNlOuh0uvnZGsTfDFAlJJRmx/PCiUj6yNvPE8pqDt7+0eg9R4SYuKssMXHAC9LX0/fryMmIsZm57Yg1NnUdva66o7wCg1EcVUwCTRyWwv7uXmlbvfFCwamcbbg8+nS814OzSdCLCjLy+ca/PryUiIiIiMlxKTAUhs8lIRlzEUVv5el1ufvivzdz13HpueGQla3e1HXevzp5enlhew3nj0xmT7rs3byKh5KbZeZw1No373tpGRX0HNruTNz7dy0VlmT5vr5LBSYuN4O+3zqCly84tf19NR0/vEWu2NXRiMODTv9smHxyA7p2qo2WVLUSEGZkyKsEr+x1PtMXMWWPTeWtTPU6X2+fXExEREREZDiWmglR2YuQRrXz7ux3c8vdVPLtyN7fNKyA9zsIXH1/NtoaOY+7z9IpddPQ4ueuM0b4OWSRkGAwG7r9yIvFRYdz9/HpeXV+HzeHi6hlq4wsmk3MT+OuN09jR2MkdT66hp/fwk0q3NXSQlxTl02TimPRYosJNbNjtnTlT5VWtzMhPwmI2eWW/E1k0KZOWLgcrqo//IYaIiIiISKAoMRWkchIjqTukYqqyqYtLH1zGmpp9PHDVJH68aBxP3z6LyHATNz22it1HaTM54HDx2JKdLByTSllOvD/DFwl6yTEWfnf1JHY0dfGzf2+hICWa6XmJgQ5LPmfhmFQeuHoSK3e2cffz6w+r/NlW3+nT+VIAJqOBsux4rwxAb+60Y23sZI4f2vgGnF6SRozFrHY+EREREQlaSkwFqZyESBo6enA43XyyvZnL/m8ZnT1Onv/yLK7oP8o+NymKZ26fRa/LzY2PraSp4/A5LC+u3k2rzcFdmi0lclQLRqfy5YWFON0erpqeg8FgCHRIchSXTM7mJ4vG8d7WRn74r814PB66HU52ttp8diLfoSaPSmBrfccRFVtDVV7dCsA8Pww+HxARZuLccem8vbkeh1PtfCIiIiISfJSYClI5iVG4PfDAe1a++MRqshMiee2ueUzLSzps3ej0WJ744kxauuzc/PdVtHf3zWFxON387ZNqZuYnMbMg6WiXEBHgu+eW8LurJ/HFuQWBDkWO44vzCrjrjGJeWF3LA+9tZ3tjFx4PPq+Ygr6T+XpdHrbsPXbb9GCUV7UQG2FmQrZ/K1gvnpRJR4+TpZXNfr2uiIiIiMhgKDEVpHISIwH42yfVnFGSyj/unEtOYtRR107OTeDhm6ZT3WzjtidX0+1w8s/1e6hv7+FrZxT5M2yRkBNuNnL51Bwiw/0z80eG7zvnjuG6mbn8ZXElv3pzK+DbE/kGDAwqP9l2vuVVrcwuTMZk9G9l3vziVOIjw3h9Y71frysiIiIiMhg6fipIlWTEkhJj4Ypp2dx73tgTvpGZPzqFP147ma8/t447n1nHrlYbZdnxnDYm1U8Ri4j4lsFg4BeXTKDN5uDdLY1Eh5vIPUbC3pvS4yLIjI84qcTUnn3d7Grt5ta5+d4LbJDCzUYumJDB6xv30tPrIiLs+EnY3a3dXP7QcgpSoriwLJMLyzJJj4vwU7QiIiIicqpRxVSQSo6xsPoHZ/H9C0oH/en6BWWZ/PqyMj7e3kxNazdfP6NIM3NEZEQxm4z88dopLBidwpyiFIx+qj6anJvAhtp9w3788qq++VJz/Thf6lCLJmVhc7hYvK3puOs8Hg8/em0zBxxOOnuc/Oz1rcy+7wOu+utynli2k8bPzTIUERERETlZqpgKYsNJKl07cxS9Ljdrd+3j3HEZPohKRCSwIsJMPHXbTL9ec3JuAm9vbqCly05KjGXIjy+vaiUlJpwx6TE+iO7EZhcmkxJj4fVP93JBWeYx1729uYGPtzfz44vHcdv8AiqbunhrUz1vbarnp69v5WdvbGVGXhJfP7NYFbkiIiIi4hWqmBqBbpqTzx+uneK3SgIREX8zGAx+rQidnNs/Z2r30Nr56tsP8PPXt/LmpnrmFacErIrVZDRwUVkGH1Q00WV3HnVNZ08vP3t9C+Oz4rh5Th4AxWkx3H3WaN751kLev+c0vn32GBo6evjyU2vYXNfuzy9BREREREYoJaZEREROoCwnHpPRMOg5UzUtNr73yqcsvH8xT5bXsGhiFj+4sNS3QZ7AoklZ2J1u3t/aeNT7f/ef7TR12vnVZWWYTUf+eDCQpHr1a3NJig7nK0+vpbXL7uuwRUREpF9Pr4trHy5n7a62QIci4lVKTImIiJxAVLiZkvTYEyamKuo7uPv59Zz5wEe8ur6O62aO4qPvns4DV08iLcADxKeOSiQrPoI3Pt17xH2b69p5cnkNN8wadbA67FhSYiz87aZpNHfZueu59fS63L4KWURERA6xvbGTFdVtfFBx/JmRIqFGM6ZEREQGYfKoBF5YtZs5931AZLiJyDATUeEmIvp/7bI7WVbZSnS4iTsWFnL7/ALSYoPnNDuj0cDFk7J4fNlO2rt7iY8KA8Dl9vCDf24iKTqc/zpv7KD2mpiTwH2XlfGdlzfy67cq+Mmi8b4MXURERIAdjV0AVDV3BTgSEe9SYkpERGQQbp9fQLjJiM3u5ECviwMOFwd6XXT2OGnutONye7jnnDHcMif/YNIn2CyamMXDn1Tz7pYGrp6RC8Bzq3azcU87f7x2MvGRg4/7imk5bN7bzuPLaijLjufyqTm+CltERESAyuaBxJQtwJGIeJcSUyIiIoNQlBrDT78Q2pVBE7LjyEuO4vVP93L1jFyaOnu4/51tzCtO5guTsoa83/9cWEpFfQffe3UTxWkxTMw5fhugiIiIDF9lU19iqqbFRq/LTdhRZkKKhCK9kkVERE4RBoOBRROzWFbZQkuXnV+9WYG9180vLpkwrBMDw0xGHrx+KqkxFr7y9FpaNAxdRETEZ6qaujAbDTjdHna3dQc6HDnEpj3tNHb0BDqMkKXElIiIyClk0aQs3B748WubeW3DXu48vYjC1Jhh75fcPwy9zebga8+u0zB0ERERH3A43exq62ZOUTLwWfWUBJ7D6ea6R1bw7IpdgQ4lZCkxJSIicgopyYhlTHoMb21qID85ijtPLzrpPSdkx/PbKyayamcbv3xjqxeiFBERkUPVtNpwuT2cNz4D0AD0YPLpnv102Z2My4oLdCghS4kpERGRU8wlk7MB+PklE4gIM3llz0unZPOl+QU8Wb6LF1bt9sqeIiIi0megQmpybgIZcRGqmAoiy6taMRhgVkFyoEMJWRp+LiIicoq5fX4B84pTmJzr3WHl37tgLNubuvjRa5spSothRn6SV/cXERE5VVU2dWEw9B3GUpQWrZP5gkh5VSulGXEkRocHOpSQpYopERGRU0xEmMnrSSkAs8nIn6+bQm5iFF99ei179mkwq4iIiDfsaOoiOyGSyHATxakxVDd14fF4Ah3WKa+n18Xa3fuYW6RqqZOhxJSIiIh4TXxkGI/cMh2Hy80dT62l2+EMdEgiIiIhr7Kpi+K0vsNKitJi6LQ7aerUabiBtm7XPhxON3OLlZg6GUpMiYiIiFcVpcbwl+unYm3o4DsvbcTt1ie6IiIiw+Vye6hu7qK4/xTdov5fqzRnKuCWV7ViMho0vuAkKTElIiIiXnfamFT+58JS3t7cwJ8+3BHocEREREJW3b4D2J3ugxVTA79W6mS+gCuvbmViTjyxEWGBDiWkKTElIiIiPnH7/AKunJbDH97fwdub6gMdjoiISEiqbO4EPktIpcVaiLGYQ7piyu32cOcza1m8rSnQoQxbl93Jxtr9zClUG9/JUmJKREREfMJgMPCryyYwdVQC97y0kS172wMdkoiISMip7E9ADSSmDAYDRWkxIX0y39b6Dt7e3MBrG+oCHcqwra5pw+n2MLcoJdChhDwlpkRERMRnLGYTf71pGglRYdzx5Br+8P52Xly9m4+sTVgbOmnv7tWpQiIiIsdR2dRFSkw4CVHhB28rSo0+mLAKRUt2tACwqS50P7Qqr2ol3GRkWl5ioEMJeeZAByAiIiIjW1psBI/cPJ2vPbuOP7x/5LypiDAjmfGR/Pf5Yzl/QkYAIhQRkZFsQ+1+JmbHYzQaAh3KsBx6It+A4rQYXl1XR5fdSYwl9N7WL61sBqC6xRayX0N5VStTRiUQGW4KdCghL/T+74uIiEjImZAdzyf3noHD6aaps4fGjh7q23toaO/7/X+2NvKLN7Zyzrh0TCH6xkFERIJPVXMXlz64jD9eO5lLJmcHOpwh83g87Gjq4pLJWYfdfujJfJNyEwIR2rAdcLhYvXMfhanRVDfbqKjvCLlT7dq7e9m8t51vnTUm0KGMCGrlExEREb8JNxvJSYxiWl4SF0/M4ksLCvnBReP43gVjqdt/gPcrGgMdooiIjCBtNgcAS/tbx0JNc6edzh4nxamHV0wdTEyF4Ml8q2racLjcfPW0IgA27Qm9dr4VO1vxeGBOkQafe4MSUyIiIhJwZ5emkxUfwZPLawIdioiIjCA2uxOA8urWAEcyPJ8NPo897Pa85CjMRkNIzplasr2ZcJORRROzSI21sDkE50yVV7USEWZkcohVqwUrJaZEREQk4MwmIzfOyWN5VSvbGzsDHY6IiIwQ3Q4XAHv2HaC2rTvA0QxdZfPhJ/INCDMZyUuOCsmKqSU7WphRkEhkuImy7Hg2h+CpveVVrczITyLcrJSKN+hZFBERkaBw7YxRhJuNqpoSERGv6eqvmILQrJqqbOoixmImPc5yxH3FaTFUNdsCENXwNXX0YG3sZMHoVKBvBmVlUxfdDucJHhk8mjvtWBs7mVuUEuhQRgwlpkRERCQoJEWHc8mkLF5dV0f7gd5AhyMiIiNAd39iKiLMyIqq0ExMFaXFYDAceTBIUWoMNS02el3uAEQ2PEv6Z33NL+5L6kzIisPtgYr6jkCGNSQr+hOcmi/lPUpMiYiISNC4ZW4+B3pdvLymNtChiIjICGDrb+WbX5xCeXUrHo8nwBENTWVT1xGDzwcUpcbgdHvYHUItikt2NJMcHc64zDgAynLiAdhcFzqJqeVVrcRazEzIigt0KCOGElMiIiISNCZkxzM9L5GnV+zC7Q6tNw8iIhJ8uh1OTEYDp5WkUd/eE1JJnPYDvTR12hmdfvTE1MDcqVAZgO52e1ha2cr80SkYjX0VYBlxEaTEhLMphAagr6huZVZhEmaT0ineomdSREREgsotc/PZ1drNR9ubAh2KiIiEOJvdRVS4iTmFfW1X5SHUznfwRL5jVEwVpkYDhMwA9G0NnbR02Q+28QEYDAbGZ8WHzMl8e/cfYGeLjTmaL+VVSkyJiIhIUDl/QgZpsRaeWL4r0KGIiEiI63Y4iQ43U5QaTWqsJaQGoFc1Hf1EvgGxEWFkxEVQ1RQaA9CXVjYDHBx8PqAsO54dTV309LoCEdaQDCQ252q+lFcpMSUiIiJBJcxk5IZZeXyyvTlkPgUWEZHgZHO4iLKYMBgMzClMprwqdOZMVTZ3EW42kpsUdcw1RWnRVIbIv5VLdrQwOi2GjPiIw26fkB2Py+0JiQHoy6taSYwKoyQ9NtChjChKTImIiEjQuW5WLmEmA0+Xq2pKRESGz2Z3EmMxA32nqDV12qluCY0Ko8qmLgpTojEZjzyRb0BxagzVTV1Bn2zr6XWxcmfbEdVSABOy+4aIB3s7n8fjobyqhTlFyQdnZIl3KDElIiIiQSctNoKLyjL5x9o9dPUf9S0iIjJU3f0zpgBmh9icqcqmLoqO0cY3oCgthk67k6ZOu5+iGp7VNW04nG4WjDlyNlN2QiSJUWFBfzLf7rZu9rb3aL6UDygxJSIiIkHplrn5dNmdvLJ2T6BDERGREGXrnzEFkJ8cRUZcREjMmerpdVG7r/uYg88HFPXfXxXkJ/Mt2dFCuMnIrIKkI+4zGAxMyI4P+pP5lmu+lM8oMSUiIiJBacqoRCblxPNkeQ1ud3C3KIiISHDqdriI6m/lMxgMzClKZmV18M+Zqm624fEce/D5gIH7g33O1JIdLUzLSySqP0n4eROy49ne2BnUA9CXV7WSHmehMCU60KGMOEpMiYiISNC6ZW4+1c02lla2BDoUEREJQTa7k+j+Vj6AOYXJtHQ52BHkFUYDiaYTJabSYi3EWMxBXTHV1NlDRX3HUdv4BpRlx+N0e9je2OnHyAavb75UK3MKkzEYNF/K25SYEhERkaB10cRMUmLCeXTpzqD/dFtERIJPt8N1WJXOnKLQmDNV2diJ0QAFJ6jOMRgMFKXFUNUcvAPdl/V/uLSg+MjB5wPKsuMBgradb2t9By1d9oOvH/Guo9fRHUVJSYkJWAPUWa3Wi0tKSgqAF4BkYC0+kXDwAAAgAElEQVRwk9VqdZSUlFiAp4BpQCtwjdVqrenf4/vA7YALuNtqtb7bf/v5wB8BE/Co1Wr9jZe+PhEREQlhFrOJOxYUct/b23hs6U6+tKAw0CGJiEiI8Hg8fTOmLJ9VTOUmRZGdEMmK6lZumZsfuOBOoLK5i1FJUUSEmU64tig1muWVwZtoW7KjhcSoMMZnxR1zTU5iJPGRYYM6mW9ni43nVu7iO+eWDOr58YbnV+0m3GzknHEZfrneqWYoFVPfBCoO+fNvgd9brdZiYB99CSf6f93Xf/vv+9dRUlIyDrgWGA+cD/xfSUmJqT/h9SBwATAOuK5/rYiIiAh3LCjkggkZ/PqtChZbmwIdjoiIhIgDvS48Hoi2HF6PMacomRXVrUE9v7CyqeuEbXwDitNiaOjoCcpTbD0eD0t2tDB/dCpG47Fb4PoGoMcN6mS+X79VwSNLdvKnD3Z4M9Rj6uzp5Z/r6lg0MYuk6HC/XPNUM6jEVElJSQ5wEfBo/58NwJnAP/qXPAlc2v/7S/r/TP/9Z/WvvwR4wWq12q1W606gEpjZ/1+l1WqttlqtDvqqsC452S9MRERERgaj0cADV0+iJCOOu59bT2UQz9EQEZHgYbP3DdI+dMYU9M2Z2tfdi/UE84ze2lTPL9/Y6vcEltPlZmeLjaJBJqaC+WQ+a2MnzZ12FhQfe77UgAnZ8VgbOnE43cdcU9nUyX+2NpIYFcbDn1SzreHEiayT9eq6OmwOFzfPyfP5tU5Vg23l+wNwLxDb/+dkYL/Vah1Iye4Bsvt/nw3UAlitVmdJSUl7//psYMUhex76mNrP3T7rRAHZ7XYqKipOtEzkmHp6evQaOgE9R+Jreo310fMwOP89N55vvtnFLY8u5/cXZhFr8U/5/kig19iJ6TkSf9DrzL/Pwd6OXgD2tzZRUXHg4O2pnr63sf9avhXGxR/1sRXNPdz7zl6cbjDZO7j0GOt8YU+7g16Xh2hn56CeK0OnA4AlG7cT3hV7gtX+9eqW/QBkGPZTUXH8xFmipwuHy827Kz6lONly1DW/W9aExWTgt+em89239/KtZ1fxwAVZGD83kNxbrzOPx8OjH+9hTLKF8K56KirqT3rPYBFMfx+dMDFVUlJyMdBktVrXlpSUnO77kAbHYrFQWloa6DAkhFVUVOg1dAJ6jsTX9Brro+dhcEqBR1NzuP6RFfx5rY3Hb52B2aRzXAZDr7ET03Mk/qDXmX+fA8/eDqCW0fm5lJZmHry9FMhb3EK1zXzUWJo6e/jtP5eSlRBFXnIUj69v48r54xmd7p+kT+2WBmAPCyaNpnRU4gnXF7vcmP9dx4GwOEpLx/o+wCGwlq+iKDWahdPLTrg2MtXGbz5pwhaeRGnpqCPur28/wEc7d3LdzFGcO3sCPw1P5p6XNrKuPYqb5uQfttZbr7NllS3Utu/kgasmUVqac9L7BZPjPUdr1671ayyD+WluHvCFkpKSGvra7M6kb1B5QklJyUBiKweo6/99HZAL0H9/PH1D0A/e/rnHHOt2ERERkcPMyE/il5dOYMmOFn71VnB8yiciIsGp29FXGXXoqXwD5hQms7K6Fdfn2vR6XW7uenY97Qd6+dtN0/jd1ZOJsZj51osbjtti5k2VzX2VRYNt5QszGclLjgq6VveeXherdrayYPSxT+M7VF5yFLER5mOezPf3pTtxe/pmTwJcNiWbecXJ3P+OlcaOHq/FfainymtIig7noomZJ1wrw3fCxJTVav2+1WrNsVqt+fQNL//QarXeACwGruxfdgvwWv/v/93/Z/rv/9BqtXr6b7+2pKTE0n+i32hgFbAaGF1SUlJQUlIS3n+Nf3vlqxMREZER55oZo/jivHweX1bDi6t3BzocEREJUjZH/4ypo7R+zylKpqPHSUX94TOKfvVmBatq2vjtFRMpzYwjNdbCfZeXsWVvB3/8YLtf4q5s6iI9zkJcRNigH1OcFkNVs82HUQ3d2l376Ol1s2D0iedLQf8A9Kz4o57M136gl+dW7uaiskxyk6IOrv/VpWU4XG5++u8tXo0doG7/Af6ztZGrp+f67fS/U9XJ1L//N3BPSUlJJX0zpB7rv/0xILn/9nuA7wFYrdYtwEvAVuAd4OtWq9XVP6fqLuBd+k79e6l/rYiIiMhR/eDCUhaMTuGH/9rM6pq2QIcjIiJBqNt+7Iqp2YXJAJRXtR687dV1e3hieQ23zy/gksnZB28/b3wGV0/P4aGPqli7y/f/5lQ2dTE6bWhtg0WpMdS02Oh1+aeqazCWVbZgNhqY1f9cD8aE7DgqGjqP+DqeWbELm8PFV04rPOz2/JRo7j5rNG9vbuA/Wxu9EveA51buAuCGWUe2FYp3DXb4OQBWq/Uj4KP+31fTd6Le59f0AFcd4/G/An51lNvfAt4aSiwiIiJy6jKbjPzluqlc9n/L+OrTa/ngO6eREKUjnEVE5DNd/YmpGMuRb3vT4yIoTImmvLqVOxYWsrmune+/uonZhUl8/4Ij5zT9eNF4yqtb+faLG3n7mwuIPsqe3uDxeKhq6uKq6bknXnyI4rQYnG4Pu9u6D57SF2jLqlqZlJtw1Of/WCZkx+NwutnR2MW4rDigryXw8WU1LByTyvisI4fQ37GgkNc21PHj1zYzpyh5SNc7FrvTxQurajlzbPrBCi3xHU0MFRERkZAUHxXGb66YSKvNwfJDPvEWEREB6O5v5YsKP3ob1uyiZFbtbKO5085Xn1lLUnQ4f7l+6lEP1oixmPnd1ZOp3dfNL9/c6rOY69t7sDlcg54vNWAgGRUsc6Y6enrZtGc/84oGXy0FUJbdl3g6tJ3vlXV7aOmy89XPVUsNCDcbue/yiTR09PDAe9bhB32Itzc10GpzcPOcPK/sJ8enxJSIiIiErCmjEogIM7KmZl+gQxERkSBj6x9+fqzqpjmFyXTZnVz7cDlNHXb+euM0UmIsx9xvRn4SXz2tiOdX1fK+l9vGBgwkloqHWPVUmBoNQFVzcCSmVla34fbA3OLBzZcakJ8cTYzFzOa9fYkpl9vDI59UMyknnjnHaQmclpfIDbNG8eTyGj7ds/+kYgd4sryGgpRo5g8xfhkeJaZEREQkZIWZjEzKSfDLzA8REQkt3XYXRgNYzEd/2zswZ6qq2cYvLh3PpNyEE+757bPHUJoZx/de/ZSWLrtX4wVYVtWCyWhgbMbQZkzFRoSRERfBJ9ubfXZC3VAsq2whIszIlFEnfk4PZTQaGJcVd/Bkvnc2N1DT2s1XTyvCYDAc97H3nj+WlBgL33tlE/WdvVQ3d2Ft6GRzXTsbavezpqaN8qrWE/5/21zXzvrd+7lpdh5G4/GvKd7hm8ZYERERET+ZkZ/EQx9X0e1wHnXArYiInJpsDifR4eZjJjRSYy2cNTaNgpRorpkxuAHX4WYjf7hmMov+spTvv7qJh2+adsKEyWA5nG5eWbuHM8emkRg99LmJV8/I5c8f7mDebz7kvPEZ3Dwnj5kFSV6LbyjKq1qZkZ+ExTz00+zKsuN5duUunC43f/24ioKUaM4dn3HCx8VFhPHTL4zna8+u47ZXO4Dao66LsZj57wvGcsPMUUdNPD1VXkNkmIkrpuUMOXYZHv30JiIiIiFtWn4irsUeNtTuZ26RSu5FRKRPt91FlOX4iZHHbp0x5H1LMmK597wSfvlmBa+sq+NKLyUw3q9opKXLwfUzh3cK3D3njOGKqdk8u3I3L66u5c1N9ZSkx3LTnDwum5Lts4Htn9fcacfa2MmlU7JPvPgoJmTH0dPr5qnyXWyqa+fXl5VhGmTl0gUTMnj69pms37aTvNxszEYjZpOBMJOBMJMRjwce/qSaH/1rM6+tr+M3V5RRfMgJiPtsDl7bsJfLp+YQHxk2rPhl6JSYEhERkZA2dVQiBgOsqdmnxJSIiBxkczh9loy5bV4B72xu4Oevb2Hh6BTS4iJOes/nV+0mKz6ChWNSh71HXnI0/3NhKd8+ewyvb9zLk+U1/PBfm/nt29u4aU4e3z23xOftacurWgCYO8TB5wMGBqDf/+42UmIsXD518Akug8HAgtGppDhbKC09+uMWjE7hlXV1/OKNrVz4x6V8/Yxi7jy9iHCzkZfX1mJ3ujX03M80Y0pERERCWnxkGCXpsazZpQHoIiLyGZu9r5XPF4xGA/dfORG7082PXtuMx+M5qf1q27pZsqOFq2fkDro66Hgiw01cPSOXN74xn1funMvCMan830dVPLKk+qT3PpHyqlbiIsxM6E8wDVVBSgxR4SZ6et3cNj+fiLChtwMej8Fg4MppOXzwndM4f0IGv39/Oxf/eQlratp4ZsVuZuYnUZoZ59VryvEpMSUiIiIhb3p+Iut27cPlPrk3BiIiMnLYHC6iwr2b1DhUYWoM3z5nDO9uaeStTQ0ntdcLq3djNMDV03O9FF0fg8HAtLxE/nL9FC4qy+T+d60+PzBkWVULswuTh51gMxkNjM+KI8Zi5oZZvqtcSomx8KfrpvD3W6fT1ePkyr+Ws7utm5tULeV3SkyJiIhIyJuel0SX3Ym1oTPQoYiISJDo9mEr34AvzS9gYk48P35tM202x7D26HW5eWnNHs4oSSMrIdLLEfYxGAzcd0UZOYmR3PXcevYNM9YTqW3rprbtwLDb+Ab86OJxPHzTNL/MeTpzbDrv3XMaX5yXz/ziFM4bxKB18S4lpkRERCTkTc9PBGCNjz8FFhGR0NFt923FFIDZZOT+KyfS0dPLz17fMqw9PqhoornTznXDHHo+WHERYTx4/VRauxx85+WNuH1QZTwwX2pe8cnNfJyYk8Dck9xjKGIsZn6yaDzPfGkW4WalSfxNz7iIiIiEvOyESDLiIlhTozlTIiLSx+bw3YypQ43NiOOuM0bz2oa9/Gdr45Af//yq3WTERXB6yfCHng/WhOx4fnRxKR9ua/LJvKllla2kxlooTovx+t4ycikxJSIiIiHPYDAwPT+RNTWqmBIRkT7ddhdRFt9WTA248/QixmbE8oN/bqL9QO+gH1fb1s0nO5q5ekYuZpN/3p7fODvPJ/OmPB4Py6tamVuUjMHg25P/ZGRRYkpERERGhOl5iext72Hv/gOBDkVERALM4/FgcziJ8fGMqQHhZiP/e+UkWm0Ofv1mxaAf9/KaWgCunp7jq9CO4Kt5UzuaumjpsjOvyH8teDIyKDElIiIiI8L0/CQA1uxSO5+IyKmup9eN2wNRfmjlG1CWE8+XFxby4ppaluxoPuF6p8vNi2tqOW1MKjmJUX6I8DO+mDe1rLJvvtTc4pMbfC6nHiWmREREZEQYmxFLdLhJ7XwiIoLN4QQg2k+tfAO+edZoClOj+d4rm+iyO4+7drG1mcYO3w89PxZvz5taVtlKXnKU35NsEvqUmBIREZERwWwyMmVUogagi4gI3XYX4N+KKYCIMBP/e+VE9rYf4ObHVlLTYjvm2udX7SYt1sKZY9P8GOHhDp03dcOjK/jJa5t5qryGZZUtNLT34PEMrpLK6XKzsrpvvpTIUPn3u1RERETEh6bnJ/KnD3bQ2dNLbERYoMMREZEAOVgxFe7fiimAaXlJ/OnaKfzgn5u44I9L+MFFpdwwa9RhA8Hr9h/gI2sTXzu9mDA/DT0/moF5U4nRYWyq6+DVdXV0HlLpFR1uoigthjsWFLJoUtYx99m8t4NOu5O5mi8lw6DElIiIiIwY0/OScHtg/e79LBzj+2O3RUQkOHX3J6ai/DT8/PMWTcpien4i9/7jU374r828t7WR+6+YSEZ8BAAvra7FA1wzIzcg8R0qLiKMX15aBvQNjW/utFPZ3EVVUxdVzTbKq1r59osbSI4JP2biaWC+1BxVTMkwqJVPRERERozJoxIwGQ0BnTP1u/esvLS6NmDXFxERsPW38gWiYmpAZnwkT902k19cOoHVO9s49/cf89qGOlxuDy+tqWXB6FRyk4JrHpPBYCAtLoK5RSncNCefn35hPC/fOYeClGjufGYdO4/Rmlhe1crYjFhSYix+jlhGAiWmREREZMSIsZgpzYwN2Ml8u1pt/HlxpVeGyIqIyPDZ7APDzwPbJGQwGLhpdh5vfXMBxWkxfPOFDVz+0HLq23u4LgiqpQYjLiKMx26ZgdEAtz+xmvbu3sPu7+l1sbqmTW18MmxKTImIiMiIMj0vifW799Prcvv92k+V78LjgR1NXbR02f1+fRER6WNzDFRMBcf0moKUaF7+6lzuPb+ErXvbSYmxcPa49ECHNWijkqP4203Tqd3XzdefW3fYv7Hrdu/D7nQzr1htfDI8SkyJiIjIiDI9P5EDvS4q6jv8el2b3clLq2spTosBYNXOwLUTioic6j6bMRW4Vr7PMxkNfO30Yt791kKev2NWQIeeD8fMgiR+fVkZSytb+PnrWw/eXl7VisloYGZBUgCjk1AWWt8JIiIiIicwPa/vB+PVNf5t53t13R467U5+dekEosNNrKhu9ev1RUTkM5/NmAqOiqlDFabGMDo9NtBhDMtV03P5ysJCnl6xi6fKa4C+wecTc+J1Gq4MmxJTIiIiMqJkxEeQkxjJ2l3+q1jyeDw8sbyGiTnxzCxIYlp+khJTIiIB1O1wYjBARJje8nrbveeP5ezSNH72+lbe3lTPxj3tzNN8KTkJ+i4VERGREWd6XiKra/bh8Xj8cr2llS1UNdu4ZU4+BoOB2YVJbG/solVzpkREAsJmdxEdbsZgMAQ6lBHHZDTwh2unMDothq8/tw6X28NczZeSk6DElIiIiIw40/OTaO60U9t2wC/Xe2JZDSkx4Vw8KROA2YV9P6BrzlTwcDjdR5wkJSIjV7fDSXQQzZcaaWIsZh69ZTpJ0eFYzEamjkoMdEgSwpSYEhERkRFnen7fD8hr/NDOt6vVxofWJq6fOQqLue9NUFl2PFGaMxU09nc7+MJflnLZQ8v8VkUnIoHVZXcG5XypkSQnMYrn7pjNg9dPJSJMSUAZPiWmREREZMQZkxZLbITZLwPQnyrfhclg4IbZeQdvCzMZmZaXyIpqVUwFms3u5ItPrGZbQyfVzTYq6jsDHZKI+EG3wxVUJ/KNVGPSYzl7XHqgw5AQp8SUiIiIjDhGo4FpeYk+H4Buszt5aXUtF5Rlkh4Xcdh9swuTsTZ20mZz+DQGObaeXhdffnoNG2v388tLJ2AwwAcVjYEOS0T8wGZ3EqWKKZGQoMSUiIiIjEgz8vsGkO/v9l1i6NX1dXTandw6N/+I+z6bM6V2vkBwutzc/fx6llW2cv+Vk7hxdh6TchJ4f1tToEMTET/odriIDlfFlEgoUGJKRERERqRpeX1zpnw158nj8fDEsp2UZcczdVTCEfdPzIknMswU0u18Pb0uenpdgQ5jyNxuD//9yibe29rITxaN48ppOQCcXZrGxtr9NHX0BDhCEfE1m8NJlEUVUyKhQIkpERERGZEm5yaQFB3O159bz93Pr2dzXbtX919a2UJVs41b5+Yf9TjyMJOR6fmJIT0A/c5n1nLjoytDamC4x+Ph529s5ZV1e7jnnDF8cV7BwfvOKu2bg/KhqqZERrxuuyqmREKFElMiIiIyIkWEmXjjG/O5bV4+H25r4uI/L+W6h1eweFsTbvfJJ1qeXF5DSkw4F0/KPOaa2YXJbGvoZF8Izplq6bLz8fZm1uzax/ra/YEOZ9D+8P4Onlhew+3zC/jGmcWH3Tc2I5bshEjer1BiSmSkszmcRKtiSiQkKDElIiIiI1ZWQiQ/uGgcy79/Jj+4sJSaVhtffGI15/7hE15cvXvYbWq7W7v5YFsT180chcV87E/kZxUkAbByZ+i18723pRG3B8JNRp5cXhPocAbl70t38scPdnD19Bx+eFHpEZVsBoOBs0vTWFrZHJItiiIyOB6PB5vdSbSGn4uEBCWmREREZMSLiwjjjoWFfHLvGfzhmsmEm4z89yubuObhFTic7iHv91R5DSaDgRtm5R133cScBCLCjCHZzvf25noKUqK5YfYo3vy0PujnMtnsTn7z9jbOLk3jvssnHrW9Evra+Xp63SyvavFzhCLiL3anG7cHoixq5RMJBUpMiYiIyCkjzGTk0inZvHn3fP7fVZPYWLufP3+4Y0h77LM5eHFNLReUZZIRH3HcteFmI9PzkkIuMbXP5mB5VSsXTMjgljn5uDwenl25O9BhHdfyqlYcLje3zS/AZDx6UgpgVmES0eEm/rNV7XwiI5XN7gRQxZRIiFBiSkRERE45BoOBK6flcOW0HB5cXMm63fsG9TiX28PdL6zH3uvmztOKBvWYWQVJWBs72d8dOnOm3tvagMvt4cKyTPJTojmjJI1nV+4eVnWZvyy2NhEdbmJ6XtJx11nMJhaOSeXDbY0hNdRdRAav29HXqhul4eciIUGJKRERETll/WTRODLjI7nnxQ10O5wnXP+/71pZsqOFX1w6nnFZcYO6xuyiZDye0Joz9damBnKTIhnf/zXeMjefli47b22qD3BkR+fxePjY2sy84hTCzSf+8fas0nQaO+xsruvwQ3Qi4m+2/r/PNfxcJDQoMSUiIiKnrNiIMH539SR2tXXzqzcrjrv2rU31/PXjKq6fNYprZowa9DUm5sSH1Jyp9u5ellW2cOGEzINzmhYUp1CYEs0TQToEvbKpi7r9Bzi9JG1Q688oScVogPcrGn0cmYgEgs3eVzGlxJRIaFBiSkRERE5pswqT+fKCQp5duZvF244+d2hHYyfffXkjU0Yl8JNF44a0v8VsYlpeIiuqQ6Ni6j8VjTjdHi4oyzx4m9Fo4Ja5+Wyo3c+G2v0BjO7oPrI2A3B6Seqg1ifHWJg6KpEPtikxJTISDVTARquVTyQkKDElIiIip7x7zh3D2IxY/usfn9JmO3wWVEdPL19+ei1R4Wb+euM0LOahv9GZVZDMtoaOkJgz9famerITIpmUE3/Y7VdMyyHGYubJIKyaWmxtoiQ9lqyEyEE/5qzSdDbXdVDffsCHkYlIIAwMP4/S8HORkKDElIiIiJzyLGYTv79mMh0HevmfVzcdHIrtdnu458UN1LZ189CNU0mPO/4pfMcyu7BvztSqIJ8z1dHTy5IdLVwwIeNgG9+AGIuZK6fl8Mane2nq7AlQhEfqsjtZXdM26GqpAWeX9rX9fVCh0/lERprPWvlUMSUSCpSYEhEREQFKM+O459wxvLOlgVfX1QHw5w8reb+iiR9dPI4Z+cc/7e14JuXGYzEbg76d78OKJhwu92FtfIe6eU4evS4Pz6+s9XNkx7a8soVel4fThpiYKk6LYVRSFB9ozpTIiDPQyqeKKZHQoMSUiIiISL87FhQyMz+Jn/57C0+v2MUfPtjO5VOzuXlO3kntazGbmDoqMegHoL+1qZ6MuAim5CYc9f7C1BhOG5PKsyt34XC6/Rzd0X20vZkYi5npeUNLHBoMBs4uTWdZVeugTmQUkdBhc6hiSiSUKDElIiIi0s9kNPDA1ZPwAD/612bGZ8Xx68vKjmhrG47ZhclUNHTQ3t178oH6QJfdyUfbmzl/QgZG47G/3lvn5dPUaeedLQ1+jO7oPB4PH21rYl5xMuHmof9Ye3ZpGg6nm6U7WnwQnYgESrfdicEAkWFKTImEAiWmRERERA6RmxTFfZeXMS4zjodumEaEl97YzC5M6pszVROc7XyLtzXhcLq58BhtfANOG51KQUo0Tyzb6afIjm1HUxd723s4vSRtWI+fUZBEbISZ99XOJzKi2BwuosPNXvlQQUR8T4kpERERkc9ZNCmLt765gNykKK/tOSk3gXCzMWjb+d7eXE9qrIVpeYnHXWc0Grh5Th7rdu/n0z37/RTd0X1k7RtcPtTB5wPCTEZOG5PKh9uacfcPvBeR0NftcBIVrmopkVChxJSIiIiIH0SEmZg6KoHyquBLTHU7nCze1sz54zMwHaeNb8CV03KIDjfxxPIar8bR3t3LfW9V8I3n1+N0nXiG1UfWZkrSY8mMjxz2Nc8uTaely872Fvuw9xCR4NJldxFt0eBzkVChxJSIiIiIn5w1Np2t9R38c/2eQIdymI+tzRzodXFBWcag1sdGhHHltBz+vWEvf/5gB3an66Su39Pr4pFPqln4v4v52yfVvL5x7wmTXl12J6tr2jh97PCqpQacXpKKyWhgZW33Se0jIsGj266KKZFQosSUiIiIiJ/cOi+fWQVJfP/VTWzZ2x7ocA56a3MDydHhzMwf/Ml23z5nDOeNz+CB/2zn/D8s4ZPtzUO+rtvt4V/r6zjrgY/51VsVTM5N4O1vLuCMklR+/5/t1LcfOOZjl1W20OvycPqY4c2XGpAQFc70vERW7lFiSmSksDmcRIerYkokVCgxJSIiIuInYSYjf7l+KgmR4Xz1mbXs73YM6nH17Qe49uFyXlpd6/WYenpdfFjRyLnjMzCbBv+jYUJUOA/eMJWnbpsJwM1/X8XXnl173GTSoZZXtvCFB5fyrRc3EB8ZxjO3z+LJ22ZSmhnHz74wAafbw89f33rMx39kbSbGYmZ6/vFnYg3G2aXp7NznYE2QDqYXkaHpdriIsqhiSiRUKDElIiIi4kepsRYeunEqje127n5hAy738YduVzV3ceVD5ayobuOxpUM/Ca+2rZtfftTIH9/fwYrqVnp6D2+7+2R7MzaHiwsH2cb3eQvHpPLOtxbwnXPG8EFFE2c98DF/+7iK3v4ZUW63h9q2bhZva+KRT6q59x8b+cJflnL9oyvZZ+vl99dM4o1vzGf+6JSDe45KjuIbZxbz9uYGFvcPOD+Ux+PhI2sT84qTCRtCMu1YrpqeQ2asma88vZbaNlVOiYQ6m10VUyKhRN+tIiIiIn42ZVQiP/3CeP7nn5v4/X+2893zSo667tM9+7n18dUYDXDN9FxeXFNLTYuN/JToQV/rmRW7WL7LxvLd2/G8D+FmI1NHJTC7MJlZBcm8tnEvCVFhzC5MHvbXYzGb+MZZo7l0SjY/e30L9729jd3p5pAAACAASURBVBdW1xIVbqKquYue3s8GmafEhFOUGsMPLizlpjl5RIQdvarhjoWFvLq+jp+8toU5304+bN32xi7q23v45lmjhx3zoRKiwvnZWRl8950Gbn9yNa/cOZfYiDCv7C3H94+1e3hwcSWv3TWPOD3n4iXdDhfRqpgSCRlKTImIiIgEwHUzc9lYu5+/LK6kLCee88YfXrG0dEcLX3l6DYnR4Tx9+yzMRgMvrqnl3S0NfOW0okFdw+Px8OameqZlR/LY7QtYVdPGyupWVuxs5U8f7MDt2QHA1dNzvFJ5lJsUxaO3zOD9rY3830eVxEb0JbyK02L6/kuNITE6fFB7WcwmfnnJBK5/dCUPLq7kO+d+lrz7qL+K6rSSkxt8fljs8eE8dOM0bvn7Ku56bj2P3TJ9SK2NMnQHHC5++842mjvtvLS6li8tKAx0SDJC2OxOolQxJRIy9N0qIiIiEgAGg4GfXTKeioYOvvPSRoq+3pe8AXhrUz3femEDBSnRPHX7TNLjIgAYnxXHO0NITH26p509+w5wVWkq8VFhnDMunXPGpQPQfqCXNTVtbNzTzhVTs736tZ09Lp2z+69zMuYWp3Dp5Cz++nEVl07Jpii17/n5yNrM2IxYMuMjT/oah5pXnMIvLp3A91/dxC/e2MrPLpng1f29ZXNdOy+tqcXtOXobaGSYiW+ePYYYS3D/qP/Mil00d9rJTojk8WU13Do3X8lAOWkejwebKqZEQor+5hcREREJkIgwEw/dOI1ws5GvPL2GLruTZ1fu4uvPrWNiTjwvfWXOwaQUwHnjM1i/ez+NHT2D2v+tTfWEmQzMGRV1xH3xkWGcVZrOPeeMIS958K2B/vY/F5USEWbix69txuPx0NnTy+qaNq9WSx3qupmjuGNBAU+W7+LJ5TU+ucbJ8Hg8/OCfm3hhVS1vb2o46n+PLNnJ0+W7Ah3qcXXZnTz0cRULx6Ty40XjqNt/gHe2NAQ6LBkB7E43LrdHFVMiIUTfrSIiIiIBlJ0QyV+um8KNj63kkr8sparZxplj03jw+qlEhh/+if954zP43X+2897WRm6anXfcfT0eD298Ws+84hRiQ7hyIC02gv86r4Qfv7aFf2/ci8Vswun2cEZJms+u+b0LStnZ0s3PXt9CXnIUp/vwWkO1tLKFjXvaue/yMq6bOeqoa254dAVPldfwpQUFXmnR9IXHl+6kzebgO+eMYUJ2PHnJUTy2dCcXT8wKdGgS4rodfQc8RIeH7t97Iqea4PyXSkREROQUMrc4he9fUEpVs43Lp2Tzt5umHZGUAhiTHkNBSjTvDaKy5NM97dTtP8BFZZm+CNmvbpiVx8SceH75ZgWvf7qXWIuZaXmJPrueyWjgj9dOZmxGHHc9tx5rQ6fPrjVUDy6uJCMugsuP035527wC6tt7eDdIK5Dau3t5eEk154xLZ1JuAiajgdvmFbB+937W7toX6PAkxNnsTgCigryVVUQ+o8SUiIiISBD40oIC3r9nIf/vqknHrHIxGAycOz6d8qpW2rt7j7vfm/1tfOeOyzjuulBgMhr45aUTaOmy82Z/FZivK4GiLWYeu3U6UeEmbntiNU2dg2uf9KW1u9pYUd3GHQsLsZiPXQ1yRkka+clR/H3pTj9GN3iPLKmmy+7knnPGHLztymk5xEWYeWxpdQAjk5FgoGIq2GesichnlJgSERERCQIGg4HitFiMRsNx1503PgOn28OH1sZjrvF4PLz5aT3zi1OIjwrzdqgBMTEn4WD74uk+mi/1eZnxkTx2ywzabA4ue3A5W/a2++W6x/Lg4iqSosO5bmbucdcZjQZunZvPut372VC730/RDU5Ll52/L+tr2SvNjDt4e7TFzPWz8nhncwO1bd0BjFBCnc3RXzGlVj6RkKHElIiIiEgImZyTQFqshXc3HzsxtXGgjW+Ezev5r/NK+M45Y/j/7d15fNxVvfDxz2Rtk3Ql6b6mpKelBQqllKWVpeyooCAXBQRBvSAgiN6rXvXqS9CHR70u90FBRBEU2QVZZd8RKG3ZSnsKTaH7vic0aZJ5/pgp1NIlaSYzGfy8X6+8mvzW75z+TpL55nvO+cS+2Xtde6cnoW9JJjnl6ue577XFWbv31mYuXsfjs5dz7qHDWjWp86kHDKZbaRHXP9e5qqaueXIumzY3c+lRNR/ad/YhQylIJLj+uXeyH1gGzFqyni/d+DLrN+28mlEdq74hPceUFVNS3jAxJUmSlEcKClLD+Z6cs5z30kNWtnX/a4spLkxw9F59sxxdx+rWpZiLp9Rk/Q3n3oN6cM9Fkxg7oAcX/WUGP31oNi0tyazG8Jsn59KttIizDh7WquMrSos4bcJg7n9tCUvX5X4YIsDSdZv40wvv8un9BzGiquJD+/v36MrH9+nPrVPn52Vy52cPRR55cxnXP/tOrkP5l7axwYopKd+YmJIkScozx43pz6bNLTz91ooP7Usmkzzw+lIm11TRo+tHYxhfZ1DVrZS/fOkgPnvgYH79xFy+/KeX2ZCl5MncFRt54PUlnHXw0Db9n55zyDBakkn+9MI7HRdcG/z6ibdpSSa5ZMqHq6W2OG9SNXWNzdz60oIsRtZ+cekGHpu9nLKSQn7/bG3Wng19WH16KF95KyoLJXUOJqYkSZLyzMTq3vToWrzdVddeWbCWRWvf44SPwGp8nU1JUQE//tTe/PCkMTwRV/Cp3zzPvJV1HX7fa56cS2lRAedOGt6m8wb3LuPovfrylxfns2nz9qvrsmXB6npumTqff5swmMG9y3Z43N6DejBxeG+uf24eTc0tWYywfX779Fy6Fhfy27PGs35TEzc8/06uQ/qXVZeuJC0rtWJKyhcmpiRJkvJMcWEBU0b14bFZy9m8zZv3B9Kr8X3UhvF1FolEgs8fPIw/nzeRVRsbOOmqZ3l6zocr1zJl4Zp67pqxiNMnDKGyorTN55976HDW1G/m7hmLOiC61vvfx94ikUhw0RE7rpba4ouTq1m8bhMPvvHhxGtntGjte9zzymJOP3Awk2uqOHJUH657dt77Q8qUXfUNVkxJ+cbElCRJUh46Zkw/1r23mZfmrX5/25ZhfB9zGF+HO3jEHtxz0SQG9OzKuX+c2mGJn989XUsiAV/+WPVunX/g8N7s1b87f3huHslkdufF2qJ2xUbunL6Qsw4aSr8eXXZ5/JRRfRi2RxnXPZu7mNvi98+kJpj/4uTU/9FXp9Swtn4zN/7jndwF9S+srrGZRAK6FlsxJeULE1OSJEl56LCRVXQpLvin4XwO48uuwb3LuP38g5kwrDeX3voK1z1Tm9Hrr9jQwC1TF/Dp/QYxoGfX3bpGIpHg3EnDmbNsI8+9vSqj8bVGMpnkygdn06W4kAsOH9GqcwoKEpw3aTivLljL9PlrOjjC9llT18gtU+fzyX0HMDD9fzRucE8OG1nF756upc6qqayrb2iirLiQgoJErkOR1EompiRJkvJQ15JCPlZTxcMzl72/Qtz9ry2hpLCAoxzGlzXduhRz/RcmcPzYflxx/yyufHB2xqp8fv/sPDY3t3B+KxM6O/KJfftTWVHCH56bl5G42uKG59/h4TeX8dUpNW0ainjK+EH06FrMdc9kP+a2uPEf71Lf2My/H/bP/0dfnVLDmvrN/PmFd3MU2b+uusZmyrK8cqek9jExJUmSlKeOG9uPpes38erCtelhfEuYXFPpML4s61JcyFWf258zJg7hmqfm8s07X2v3xN3r0kmNE/cZwPDK8nZdq7SokDMmDuXx2cuzMln7FtPeXcOPHpjFlFF9+PLktg1FLCsp4oyJQ3ho5lLmr6rvoAjb573GZm74xzscOaoPoV+3f9o3fmgvJtdUcu3Tte+vEqfsqGtoorzEYXxSPjExJUmSlKemjOpLUUGCh2YuY8aCtSxet4kT93EYXy4UFiS44uSxXDKlhtteXsj5f57erpXwrn8+NXn2hUe0r1pqizMOGkJJYQF/zFLV1KqNDVz0l+n069GFn582breGVZ19yDCKCwv4xaNzOiDC9rvt5QWsrmvk/MO2/390yZQaVtU18pcX52c5sn9t9Y1NlDnxuZRXTExJkiTlqR5lxRxUvQcPz1zqML5OIJFI8LWjR3L5SWN4bPYyzvr9i6yr39ymayxbv4nLbn2FXz76FseO6cuoft0zElufbl34xL4DuH3aQta917aY2qq5Jcklt7zCqrpGrj5jPD3Kdq+Cr2/3Lpw3aTh3zVjE6wvXZTjK9mlqbuF3z9Sy/5CeTBjWa7vHHDCsN4eM2INrnqrlvcbdT1KqbeoamikvtWJKyicmpiRJkvLYsWP6UruyjtumLuBjIyvp3sVhfLl21sHDuOqz+/PqgnV86jfPcdOL7+4yGdTQ1MzVT87lyJ89yX2vLeErh4/g56eNy2hcXzh0GPWNzVx403QefH1Juyq6duZXj87h2bdXcvlJYxg7sEe7rnXB4SPYo7yEHz3wZqdaoe/+15ewcM17nH/YCBKJHVeDXTKlhpUbG7j5JaumssWKKSn/mJiSJEnKY0fv1Q+ADQ1NDuPrRE7cpz9/PHcCxYUFfOeuN5jwo0e56C/TeTIup7nlgwRLMpnksVnLOPYXT/N//z6bg0dU8shlH+M/jxtFeYYncB47sAdfP3oks5eu54KbpjP+8kf42q2v8PjsZTQ2tW9OrC2emL2c/338bT4zfhD/NmFIu6/XrUsxlx5Vwwu1q3ls1vIMRNh+yWSSa56qZc8+FRw1eucVihOr92Di8N5c89TcDksEdoR3V9XxxRumsmJDQ65DabO6xmYqnPxcyiv2WEmSpDzWr0cXxg3uyZuL1zNlF2+SlV2HjKjk75dOZubi9dwxbSF3v7KI+15bQt/upZy830Am71nFdc/W8mRcQXVVOTeceyCHjazq0JgunlLDBYeP4IXa1dz76mIefGMJd81YRM+yYo4f249D96ykd3kJvctL6FVWQs+yYkqLWjcsasHqei699RVG9+/O5SePzVjMpx84hOuff4cfPziLw0IVxYW5/dv6U3NWMGvJen5y6j6tmjvrkqNq+NzvXuTWqQs4cPuj/jqdH977Jo/NXs7Bry7mvEnDcx1Om9Q3NFHm5OdSXtllYiqEMBi4EegLJIFrY4y/CiH0Bm4FhgHvAKfFGNeEEBLAr4ATgHrgnBjj9PS1zga+m770FTHGG9LbxwN/BLoCDwCXxBg7T62uJElSJ/a9j49mwer3HMbXCSUSCcYO7MHYgT349gmjeGL2cu6YtpDrnpnHb5+qpVtpEd89cTSfP3gYJUXZSbgUFRYwqaaSSTWVXH7yWJ59ewX3vrqEe15ZzM0vLfjQ8WUlhfQqK6GyWymj+nZj7MDu7DWgB6P7d3t/yNSmzc185abptCSTXHPm/nQpzlxioLiwgG8fP5ov3fgyt0xdwFkHDc3YtXfHNU/NpV/3Lpw8bmCrjj+4eg8mDOvF1U/OZdwnO39V49NzVvDY7OUUFiR4aObSvEtM1TU2Z7zaUFLHak2PbQK+HmOcHkLoBkwLITwCnAM8FmO8MoTwLeBbwDeB44Ga9MdE4GpgYjqR9X3gAFIJrmkhhHtijGvSx3wJeJFUYuo44MHMvUxJkqSPrvFDezM+t+/V1QqlRYUcN7Y/x43tz4oNDTw/dyWHjKikqltpzmIqKSrgyFF9OXJUXzZtbmbeyjrW1Deytn4zq+saWVvfyJr6zaypb2Tpuk08/OZSbn05lbwqSMDwynLGDOjBhk2beX3ROq49azxD9yjPeJxHje7DxOG9+eUjczh53AC65SgJO2P+Gl6oXc13Txzd6kRiIpHgkikjOfP3L/L43A3sm7lisoxram7hivvfZEjvMk7Yuz/XPj2XVRsb2KMid89oWySTSeqsmJLyzi4TUzHGJcCS9OcbQgizgIHAScDh6cNuAJ4klZg6CbgxXfH0QgihZwihf/rYR2KMqwHSya3jQghPAt1jjC+kt98InIyJKUmSJH1EVXUr5aRWVtxkS5fiQkb33/kqgMlkksXrNjFz0TpmLl7PzMXrmPrOapas28SFR4zgmDH9OiS2RCLBd04czSeveo5rnprLfxw7qkPuszPNLUmufHA23bsUcfqBbZs/69A992Bk3woefnsDX+ug+DLh5pfmM2fZRq45czyDenXlmqfm8uisZRmZLywbGptbaGpJWjEl5Zk29dgQwjBgP1KVTX3TSSuApaSG+kEqabV1DfDC9LadbV+4ne2SJEmSOpFEIsHAnl0Z2LPrPyWhNmza3OETTu8zqCcnjxvAdc/M44yJQxnQs2uH3m9bv3hkDi/OW81PT92nza81kUhw6vhB/PiB2cxdsZERVRUdFOXuW1e/mZ8/MoeDqntz7JjUW7uBPbvy8Mz8SUzVN6QmmLdiSsovrf6OGkKoAO4ELo0xrg8hvL8vxpgMIWR1TqiGhgZmzZqVzVvqI2bTpk0+Q7tgG6mj+Yyl2A7qaD5ju2Yb5YeTRxRy/2tJvnf7S3xjUp+s3XfqwnquemIpx+zZjbHlG3frWRlT3kRBAq59+FXO2b93B0TZPtdOXcXa+s2cNaYrs2fPBmBC/2LujyuY9tpMyoozMwdaR/a1ZRs3A7B+1QpmzdrUIfdQfvB7+q51pjZqVWIqhFBMKil1U4zxr+nNy0II/WOMS9JD9bas37oIGLzV6YPS2xbxwdC/LdufTG8ftJ3jd6q0tJTRo0e3Jnxpu2bNmuUztAu2kTqaz1iK7aCO5jO2a7ZRfhgNnLeyhN8+PZevnTCOsQN7dPg9F619j5/f/gyj+nXjf88+tF0Tu49/fgVPz9/Ejz87isJWrOiXLXNXbOTe2fM4/cDBnHjoPu9v/2zpKu6e9QJL6c2JozMzcXtH9rXCZRuABew5bDCjMxSv8pPf03dtZ200bdq0rMayy7R3epW93wOzYow/32rXPcDZ6c/PBv621fbPhxASIYSDgHXpIX8PAceEEHqFEHoBxwAPpfetDyEclL7X57e6liRJkiS97ytHjKBn12J+dP8sksmOHbTR2NTChTdNp6k5ydVnjm/3aoNH79mNJes28fzclRmKMDN+fP8suhQXctnR4Z+2HzCsN73LS3ho5tIcRdY2dQ1NAJSVOpRPyietqcc8FDgLODKE8Er64wTgSuDoEMJbwFHpryG1ql4t8DbwO+ArAOlJzy8HpqY/frhlIvT0Mdelz5mLE59LkiRJ2o7uXYq59KiR/KN2FX9+cf77yYiO8H8enMUrC9byk1P3YXhl+1cbnDi4jB5di7lj2sJdH5wlT89ZwWOzl3PRkXt+aIXIwoIER43uwxOzl9PY1JKjCFuvvjE1x1R5iZOfS/mkNavyPQvsqM50ynaOTwIX7uBafwD+sJ3tLwOdeOFUSZIkSZ3F5yYO4ZapC/je3W/ww3tnsv+QXkyuqWRyTRVjB/bIyDC5B15fwvXPvcM5hwzjhL0zMyyspLCAT+47gNteXsD6TZvp3qU4I9fdXU3NLVxx/5sM6V3GFw4dtt1jjh3Tj9teXsg/aldx2Miq7AbYRhu3VEw5+bmUVzIzg50kSZIkZUlxYQF3X3gIN31xIudNqmZjQxM/e3gOJ/36OcZf8QgX3jSdu2csoql596p85q2s4z/veI1xg3vyXydkdp6aU8YPoqGphftfW7LrgzvYzS/NZ86yjfzXCaMpLdp+MufQPSspKynMi+F89Y2pxFR5B68QKSmzTExJkiRJyjulRYUcumcl3zp+FPd/dTIvf/cofnX6OI4a3Zdp767h0ltf4dhfPs3f31jSprmoNm1u5oI/T6OoMMGvz9ifkqLMvmXad1AP9uxTkfPhfOvqN/PzR+ZwUHVvjh3Td4fHdSku5PBQxSNvLqOlJasLsbdZXcOWoXxWTEn5xMSUJEmSpLxXWVHKSeMG8rPP7Ms/vn0k15w5HoDz/zydk3/z/C4nHG9uSTJj/hq+dusrzF66gV/82zgG9uya8TgTiQSnjh/EtHfXMG9lXcav3xpr6hq5+JYZrH1vM9/7+F4kEjsf+njsmH6s2NDAjAVrshTh7rFiSspP9lhJkiRJHymJRILjxvbjqNF9+Ov0Rfzi0Tl87ncvMrmmkm8eN4qxA3sAMH9VPc+8vYJn5qzk+bkrWb8pldj4+tEjOSL06bD4PrXfQH7y99ncOW0h3zg27PL41XWN9OxaTEEG5s6a9u5qLv7LDFZsbODyk8YyZkCPXZ5zxKg+FBcmeHjmMsYP7d3uGDrKloqpru1cPVFSdpmYkiRJkvSRVFRYwGkTBvPJcQP48wvvctUTb/Px//csk/asZP7qeuavrgdgQI8uHDe2H5Nqqjh0xB7sUVG6iyu3T9/uXfjYyCrunL6Qrx09coeTtTe3JPnG7a9y14xFdCkuYHhlBdVV5YyoLKe6KvV5dVUFFa2oEGppSXLtM7X89KHIwJ5dufOCQ9hnUM9Wxdu9SzEHVe/BQzOX8q3jR+2ywipX6hubKCspzEgCT1L2mJiSJEmS9JHWpbiQL06u5rQJg/nd07XcNWMRo/p147xJw5lUU0l1ZXnWky2n7D+Ii2+ewT/mrmJSTeWH9re0JPmvv77OXTMWceZBQygtKqR2xUbeWLSOB19fwpbpnhIJmDC0Nyfu05/jx/ajT/cuH7rW6rpGLrvtFZ6MKzhh735ceco+bV4R8Ngx/fju3W8wZ9lGQr9uu/WaO9rGhmbKSnyLK+Ube60kSZKkfwnduxTz9WMCXz9m18PnOtrRe/WlW5ci7pi24EOJqWQyyQ/ve5NbX17AxUfu+aF4G5qamb+qnrkrNvLmkg089MZSvn/PTH5w70wmDu/NifsM4Lgx/ajqVsrUd1JD91bXNXL5SWM486Chu5WEO2avvnzvb2/w0MylnTYxVd/YRHmpw/ikfGNiSpIkSZKyrEtxIZ/cdwB3Tl/I+k2b369gSiaT/OShyB+ff4cvThrOZUeP/NC5pUWF1PTtRk3fbhw3tj+XHT2St5Zt4L7XlnDfa4v53t1v8P2/vcG4wT15deE6Bvfqyl+/csj7c2vtjj7du7Df4J48/OZSvjqlZreusXjtezw6dwOjRiU7pEKtzoopKS+5Kp8kSZIk5cCp4wexaXMLD7y25P1tVz3+Nlc/OZczJg7hOyeObnUCp6ZvN7529EgevewwHrr0Y1x0xJ7UNzZz8riB3HvxpHYlpbY4Zkw/3li0noVr6tt87rR3V/PJq57lf55dwZxlG9sdy/bUNzZRYcWUlHdMTEmSJElSDowb3JMRVeXcOX0hANc9U8v/PDKHT+8/kMtPGrtbVUWJRILQrxuXHRP4+6Uf439O25dubZxPakeOHdMPgIdnLmvTeXdMW8hnr33x/Xmx5q7omMRUXaMVU1I+MjElSZIkSTmQSCQ4dfxgpr6zhisfnM0V98/ixL3785NT9umUK8sNryxnZN8KHpq5tFXHN7ck+T8PzOIbt7/KhOG9uO/iSQDMW1nXIfHVNzjHlJSPTExJkiRJUo58ar+BFCTgmqfmMmVUH37xb+MoKuy8b9OO2asfU99Zzeq6xp0et2HTZr5048v89ulaPn/wUP74hQMZ0LMre5QVdljFVL0VU1JestdKkiRJUo7069GF0w4YzNr6zfzy9HGUFHXepBSkhvNd9cTbfPfu15lcU0VNnwr27FNBz7KS94+Zv6qe826YSu3KOi4/eSxnHTT0/X2DuhdTu6JjKqY2NjRRXmLFlJRvTExJkiRJUg5deco+uQ6h1cYO7M5Ro/vw+OzlPPD6B0P6KitKqelTQXVVOQ+8voSWJPzp3AM5ZM/Kfzp/YPdinp2/kWQy8yvz1Tc2UVbqW1wp39hrJUmSJEmtkkgkuO7sCbS0JFm09j3eXr6Rt5ZvSP+7kXteWcyg3mVcfcb+DKss/9D5g3qUsH7TBlbXNbJHRWnG4mpsamFzc9KKKSkPmZiSJEmSJLVJQUGCwb3LGNy7jCNG9Xl/+64qoQZ1T60QWLuyLqOJqfrGJgDKrZiS8k7nHsAsSZIkScobuxqeNzCdmJqX4Xmm6hqbASh38nMp75iYkiRJkiRlRd+KIkoKC5i7MrMr89U3pCqmykodyiflGxNTkiRJkqSsKCxIMHSPsoyvzGfFlJS/TExJkiRJkrJmeGU5tSsyWzFVt6ViysnPpbxjYkqSJEmSlDXVVRXMX11PU3NLxq65JTHl5OdS/jExJUmSJEnKmuqqcjY3J1m45r2MXbM+PZTPiikp/5iYkiRJkiRlzYiqcgBqMzgBel1jqmKqwoopKe+YmJIkSZIkZc3wygqAjE6AXt+QrpgyMSXlHRNTkiRJkqSs6V1eQs+yYmpXZi4xtaViqmuxQ/mkfGNiSpIkSZKUVdUZXpmvvrGZrsWFFBYkMnZNSdlhYkqSJEmSlFXDKysyOpRvY0MT5aVWS0n5yMSUJEmSJCmrqqvKWb6hgY0NTRm5Xn1DE2Ulzi8l5SMTU5IkSZKkrNqyMt+8DFVN1TU2U+7E51JeMjElSZIkScqq6qr0ynwrMzPPVH1jE+UlDuWT8pGJKUmSJElSVg3pXUYiQcbmmapraKbMiikpL5mYkiRJkiRlVZfiQgb16krtyswkpqyYkvKXiSlJkiRJUtZVV1ZQuyIzQ/nqGpqd/FzKUyamJEmSJElZN7yynHkr60gmk+2+Vl1jE+WlVkxJ+cjElCRJkiQp60ZUlVPf2Myy9Q3tvla9FVNS3jIxJUmSJEnKuvdX5mvncL7GphYam1uosGJKyksmpiRJkiRJWTe8shyAue2cAP29xmYAK6akPGViSpIkSZKUdf26d6FrcSHzVrQvMVXX2ATgHFNSnjIxJUmSJEnKuoKCBMMry6ld2b6hfPXpxJQVU1J+MjElSZIkScqJ6qpyattbMdWQGspnxZSUn0xMSZIkSZJyorqynIVr6mloat7ta9Q1WDEl5TMTU5IkSZKknKiuqqAlCfNX1e/2Zsi4vgAADb9JREFUNerSk5+Xm5iS8pKJKUmSJElSTlRXpVfma8dwvnonP5fymokpSZIkSVJODK9MJabaMwH6B3NMWTEl5SMTU5IkSZKknOjWpZiqbqXMa0fF1IZNmwEoK7FiSspHJqYkSZIkSTlTXVlO7crdS0zd8+pifvXYWwzq1dU5pqQ8ZWJKkiRJkpQz1VUV1K5o21C+xqYWfnDPTL568wxG9+/OHecfQkFBooMilNSRTClLkiRJknKmurKcNfWbWVPXSK/ykl0ev2Tde3zlpunMmL+W8yYN51vHj6K40JoLKV+ZmJIkSZIk5cyWlflqV9YxfheJqWffWslXb5lBw+Zmfv25/Tlxn/7ZCFFSBzKtLEmSJEnKmeqqCoCdDudraUly1eNvcdYfXmSP8hLuuXiSSSnpI8KKKUmSJElSzgzq1ZWigsQOJ0BfW9/IZbe9yuOzl3PSuAH8+FN7U17qW1npo8LeLEmSJEnKmeLCAobsUca8FR9OTL2+cB0X3DSNZes3cflJYzjzoKEkEk5yLn2UmJiSJEmSJOVUdWUFtSs/GMqXTCa5+aUF/OCemVRWlHDbvx/MfkN65TBCSR3FxJQkSZIkKaeqq8p5+q0VNLckaWxq4bt3v8Gd0xcyuaaSX52+H71bsVqfpPxkYkqSJEmSlFPVleU0NrXw3Nsr+fEDs4jLNnDJlBq+OqWGwgKH7kkfZSamJEmSJEk5tWVlvnOuf4nuXYu5/pwJHB765DgqSdlgYkqSJEmSlFM1fSooLSpgVL9u/PqM/RnUqyzXIUnKEhNTkiRJkqSc6lVewhPfOJzKilJKigpyHY6kLDIxJUmSJEnKuQE9u+Y6BEk5YCpakiRJkiRJOWFiSpIkSZIkSTlhYkqSJEmSJEk5YWJKkiRJkiRJOWFiSpIkSZIkSTlhYkqSJEmSJEk5YWJKkiRJkiRJOWFiSpIkSZIkSTlhYkqSJEmSJEk5YWJKkiRJkiRJOWFiSpIkSZIkSTlhYkqSJEmSJEk5YWJKkiRJkiRJOWFiSpIkSZIkSTlhYkqSJEmSJEk5kUgmk7mOYbdMmzZtBfBuruOQJEmSJEn6CBk6fvz4qmzdLG8TU5IkSZIkScpvDuWTJEmSJElSTpiYkiRJkiRJUk6YmJIkSZIkSVJOmJiSJEmSJElSTpiYkiRJkiRJUk6YmJIkSZIkSVJOFOU6AGmLEMJg4EagL5AEro0x/iqE0Bu4FRgGvAOcFmNcE0I4A/gmkAA2ABfEGF9NX+s44FdAIXBdjPHKHdzzbOC76S+viDHekN7+d6A/qT7yDHBhjLG5NfGm9/0U+ATQCMwFvhBjXNuuBtrJPXPRRlvtvweojjGO3cH5271PCOEi4FJgBFAVY1zZ9hZRpuXbM9ZR/bAztUMI4UlS34/eS+87Jsa4fDvnjwf+CHQFHgAuiTEmQwifAX4AjAYOjDG+3Jo2UMfKt2cshFAG3E7qe3YzcG+M8VvpfZcBXwSagBXAuTHGd3e7cT64Z2dqoxLgKuBwoAX4Tozxzu2cbz/MI/n2jHVUP+ws7RBC6Ebq9+4tBgF/jjFeup3z7Wt5JN+esVz8zEtfu1O0U3r7Z4H/SsexGDhze+/XMvVez4opdSZNwNdjjHsBBwEXhhD2Ar4FPBZjrAEeS38NMA84LMa4N3A5cC1ACKEQ+DVwPLAX8Nn0df5JuoN/H5gIHAh8P4TQK737tBjjvsBYoAr4TBviBXgEGBtj3AeYA3x7N9uktffMRRsRQvg0sHFHwe7iPs8BRwEZ+UaujMmrZ2wn8UL7+mGnagfgjBjjuPTHh5JSaVcDXwJq0h/Hpbe/AXwaeLoNr18dLx+fsZ/FGEcB+wGHhhCOT2+fARyQ7mt3AD/ZjfbYns7URt8BlscYR6av8dQOYrYf5pd8fMY6oh92inaIMW7Y6vvQOFK/I/51BzHb1/JLPj5j2f6ZB52knUIIRaSSTUekX+drwEXbOT9j7/WsmFKnEWNcAixJf74hhDALGAicROqvRwA3AE8C34wxPr/V6S+QynhDqlO9HWOsBQgh3JK+xpvb3PJY4JEY4+r0cY+Q+qF2c4xxffqYIqCEVKa4tfG+GWN8eJvYTm11Q+xEZ2qjEEIFcBnwZeC2HYS8w/vEGGekt7WtEdSh8u0Z66h+2JnaoTXxhhD6A91jjC+kv74ROBl4MMY4K72tNZdSluTbMxZjrAeeSH/eGEKYviWGGOMT28R2Zmuu2Yp7dqY2OhcYlY6lBdjeX43th3km356xjuqHnawdSG8bCfThn6tbtuyzr+WZfHvGcvEzL33tztJOd5CqwioPIawCugNvbyfkjL3Xs2JKnVIIYRip7PSLQN90JwVYSqq0cVvnAQ+mPx8ILNhq38L0tm3t9LgQwkPAclJlkXe0Id5tnbtVbBnTCdrocuB/gPqdhNna+6gTypNnbEfxbmu3+2EnaAeA60MIr4QQvhdCSOzg/IWtuI86oTx5xraOtyepYbKP7SK2jMllG6VfL8DlIYTpIYTbQwjbu6f9MI/lyTO2dbwd0g87yfcjgNOBW2OMH/rjMPa1vJYnz9jW8Wb9Z176vsPIUTvFGDcDFwCvkxrGtxfw+9aev8MXtRMmptTppKsk7gQu3apyCYD0N47kNscfQaojfjOTccQYjyU150YpcOTuxBtC+A6pksybMhlbrtsohDAOGBFjvCsT11Pnk2/PWEf1w1y3Q9oZ6RLtyemPszJ4beVYvj1j6fL+m4H/3fIX0q32nQkcAPw0g7F1hjYqIvVX6OdjjPsD/wB+lqFrqxPIt2eso/phJ2iHrZ1OKys6lT/y7RnLxc+89LVz/Xt4ManE1H7AAFJD+TI1Nc12OZRPnUq6E9wJ3BRj3DLed1kIoX+McUm6dHf5VsfvA1wHHB9jXJXevAgYvNVlBwGLQggTgd+mt/13+rjDtznuya3jiTFuCiH8DTgphDAbuDe965oY4zU7iHdLbOcAHwem7CoT3xadpI0OBg4IIbxD6vtIn5CaPPcstmoj4NXt3Wd3XreyJ5+esY7sh52kHYgxLkr/uyGE8BfgwBDCTcC09LH3kJprY9A259vXOrl8esZijP+d/vxa4K0Y4y+3eS1HkZoj57AYY0ObG2MHOkkbrSJVubnl/rcD54XU3Br2wzyXT89YR/bDTtIOW669L1AUY5yW/tq+9hGQT89Yrn7mpa/dGdppHECMcW76HrcB3wqpydk75L2eiSl1GiE1dOD3wKwY48+32nUPcDZwZfrfv6WPH0LqB/hZMcY5Wx0/FagJIQwn1TFOBz4XY5xJupOlz+8N/Dh8MOnkMcC30xnqbumOXwScCDwTY1ywzfk7ipeQWp3gP0l9s2rVMKTW6CxtlB6HfHX6mGHAfTHGw9PHbH1+0fbu085mUAfKw2esQ/phZ2mHdB/qGWNcmf5F5ePAozG1Sui4re5DCGF9COEgUiXfnwf+X1tes7IrT5+xK4AepFYj2nr7fqR+0T0u7nji9DbrLG0UUyt93Uvql/fHgSmk5s+wH+a5PH3GMt4PO0s7bHWdz7JVJYt9Lf/l6TOW1Z956Wt3lnbqAuwVQqiKMa4Ajk7HtO374Yy910skkxkr5JDaJYQwidTkc6+TWiYXUktUvkhq4uMhpGb1Py3GuDqEcB1wCh/M9N8UYzwgfa0TgF+SWrbyDzHGH+3gnuem7wHwoxjj9SE1pv8+UkP4CkhNfPe1GGNTa+KNMT4QQng7ff6WrPULMcbzd6NZto23U7TRNvuHkUoajN3B+du9Twjhq6SSBv1IZf0fiDF+cXvXUPbk2zPWUf2ws7RDCKGc1MpCxenzHwUuS/8Cte35B/DB0tkPAhen3+x8itQv7FXAWuCVmBqqrBzKt2cshDCI1DwSs4Etfx2+KsZ4XQjhUWBv0hO2AvNjjJ/cjWbZNt5O0Ubp7UOBPwE9SS0P/oUY4/ztnG8/zCP59ox1VD/sTO2Q3lcLnBBjnL2TmO1reSTfnrFc/MxL37fTtFMI4XzgEmBz+vrnbFWRtfX5GXmvZ2JKkiRJkiRJOeHk55IkSZIkScoJE1OSJEmSJEnKCRNTkiRJkiRJygkTU5IkSZIkScoJE1OSJEmSJEnKCRNTkiRJGRBC+EEI4Rs72X9yCGGvbMYkSZLU2ZmYkiRJyo6TARNTkiRJW0kkk8lcxyBJkpSXQgjfAc4GlgMLgGnAOuDLQAnwNnAWMA64L71vHXBK+hK/BqqAeuBLMcbZ2YxfkiQp16yYkiRJ2g0hhPHA6aSSTicAE9K7/hpjnBBj3BeYBZwXY3weuAf4jxjjuBjjXOBa4OIY43jgG8Bvsv4iJEmScqwo1wFIkiTlqcnAXTHGeoAQwj3p7WNDCFcAPYEK4KFtTwwhVACHALeHELZsLu3wiCVJkjoZE1OSJEmZ9Ufg5BjjqyGEc4DDt3NMAbA2xjgui3FJkiR1Og7lkyRJ2j1PAyeHELqGELoBn0hv7wYsCSEUA2dsdfyG9D5ijOuBeSGEzwCEEBIhhH2zF7okSVLnYGJKkiRpN8QYpwO3Aq8CDwJT07u+B7wIPAdsPZn5LcB/hBBmhBBGkEpanRdCeBWYCZyUrdglSZI6C1flkyRJkiRJUk5YMSVJkiRJkqScMDElSZIkSZKknDAxJUmSJEmSpJwwMSVJkiRJkqScMDElSZIkSZKknDAxJUmSJEmSpJwwMSVJkiRJkqSc+P+i5XSGovt57wAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "a3sdasa3d-wj"
},
"source": [
"There are many signs in the names of TV programs - cinema, season, series, premiere"
]
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "O_A-fLXHd-wj"
},
"source": [
"for c in ['эп.', 'м/с', 'х/ф', 'д/ф', 'м/ф', 'т/с', 'премьера']:\n",
" c_index = df_info[df_info['tv_show_title'].str.lower().str.contains(c)].index\n",
"\n",
"for c in ['c.', 'c..']:\n",
" c_index = df_info[df_info['tv_show_title'].str.lower()==c].index"
],
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-_NRu2bHd-wl",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
},
"outputId": "27eae634-0af1-4e1c-8d6c-57cb21c5ddfb"
},
"source": [
"channel_info_df = df_info[['channel_id', 'channel_title']].drop_duplicates()\n",
"channel_info_df[channel_info_df.duplicated(['channel_id'], keep = False)].sort_values(['channel_id'])"
],
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" channel_id | \n",
" channel_title | \n",
"
\n",
" \n",
" \n",
" \n",
" | 27421 | \n",
" 75 | \n",
" Киев | \n",
"
\n",
" \n",
" | 27425 | \n",
" 75 | \n",
" Київ | \n",
"
\n",
" \n",
" | 40540 | \n",
" 288 | \n",
" Русский экстрим | \n",
"
\n",
" \n",
" | 158230 | \n",
" 288 | \n",
" Russian Extreme (HD REX) | \n",
"
\n",
" \n",
" | 99803 | \n",
" 1249 | \n",
" UA:Перший (спутник) | \n",
"
\n",
" \n",
" | 217053 | \n",
" 1249 | \n",
" UA:Перший | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" channel_id channel_title\n",
"27421 75 Киев\n",
"27425 75 Київ\n",
"40540 288 Русский экстрим\n",
"158230 288 Russian Extreme (HD REX)\n",
"99803 1249 UA:Перший (спутник)\n",
"217053 1249 UA:Перший"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "uMv8bc6ld-wm",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 332
},
"outputId": "8625c4ba-2fb8-4eef-cb5f-a73f5cb7c5a8"
},
"source": [
"show_info_df = df_info[['tv_show_id', 'tv_show_category', 'tv_show_genre_1', \n",
" 'tv_show_genre_2', 'tv_show_genre_3', 'year_of_production', \n",
" 'director', 'actors']].drop_duplicates()\n",
"show_info_df[show_info_df.duplicated(['tv_show_id'], keep = False)].sort_values(['tv_show_id']).head(3)"
],
"execution_count": 23,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" tv_show_id | \n",
" tv_show_category | \n",
" tv_show_genre_1 | \n",
" tv_show_genre_2 | \n",
" tv_show_genre_3 | \n",
" year_of_production | \n",
" director | \n",
" actors | \n",
"
\n",
" \n",
" \n",
" \n",
" | 100228 | \n",
" 900954 | \n",
" Фильмы | \n",
" драма | \n",
" криминал | \n",
" NaN | \n",
" 1995 | \n",
" Тим Роббинс | \n",
" Сюзан Сарандон, Шон Пенн, Роберт Проски | \n",
"
\n",
" \n",
" | 87489 | \n",
" 900954 | \n",
" Фильмы | \n",
" драма | \n",
" NaN | \n",
" NaN | \n",
" 1995 | \n",
" Тим Роббинс | \n",
" Сюзан Сарандон, Шон Пенн, Роберт Проски | \n",
"
\n",
" \n",
" | 92727 | \n",
" 2000444 | \n",
" Спорт | \n",
" спорт | \n",
" хоккей | \n",
" NaN | \n",
" 2018-2018 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tv_show_id ... actors\n",
"100228 900954 ... Сюзан Сарандон, Шон Пенн, Роберт Проски\n",
"87489 900954 ... Сюзан Сарандон, Шон Пенн, Роберт Проски\n",
"92727 2000444 ... NaN\n",
"\n",
"[3 rows x 8 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "tCMmbvNtd-wn",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 142
},
"outputId": "d8e1228c-09be-4001-bb4f-5e9d371a2506"
},
"source": [
"show_duration_df = df_info[['tv_show_id', 'duration']].drop_duplicates()\n",
"show_duration_df[show_duration_df.duplicated(['tv_show_id'], keep = False)].sort_values(['tv_show_id']).head(3)"
],
"execution_count": 24,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" tv_show_id | \n",
" duration | \n",
"
\n",
" \n",
" \n",
" \n",
" | 37204 | \n",
" 20088 | \n",
" 10500 | \n",
"
\n",
" \n",
" | 7 | \n",
" 20088 | \n",
" 1800 | \n",
"
\n",
" \n",
" | 9 | \n",
" 20088 | \n",
" 3000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tv_show_id duration\n",
"37204 20088 10500\n",
"7 20088 1800\n",
"9 20088 3000"
]
},
"metadata": {
"tags": []
},
"execution_count": 24
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "MLKAklhAd-wn",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 322
},
"outputId": "94b28686-42a0-4451-9f5e-5fad2a33e936"
},
"source": [
"ax = df_info['channel_title'].value_counts()[:25].plot(figsize = (20, 7), kind = 'bar');\n",
"ax.set_title('Top channels by transmission');"
],
"execution_count": 26,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJAAAAI3CAYAAADEGaFFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZhld10n/nfbiR0Y2VW2RIOAHwv96SCro+OgzLAFCeMAwrBEBgU1CIIjBGWRxZngT0QWQTEsAVFEcEGCIIKiOMPWiDDQfGYiBAj7Ejahm5Dp+eOcCpWi6nRVd1fde5LX63n66XvPOffkXbdvqm697/f7PXsOHz4cAAAAANjMNyw6AAAAAADLTYEEAAAAwCQFEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSALAwVXWbqrpw0TnWq6pfrarfP4rHXVBV/34nMi2rqvq3VdXH8Phvq6ovVtXe45kLADi+Tlh0AABgsarqi2vuXjnJoSSXjPcf1N0v3v1UV2xVdZskv9/dJy86y5F0998nqWN4/AeTfNPxSwQA7AQFEgBcwXX3pb+8V9UFSX6qu/96YYHYkqo6obu/uugcAMAVgwIJANhQVe1L8uQk9xg3vTTJI7v70OoImSTPSvLwJF9M8iubjVaqqmsmeUqS2ye5UpI3dPdd1+z/xSSPzDDy6Ze7+/nj9tOSPCnJDZN8Lslzu/tXx32nJnl/kp9M8sQMo6ee2t2/Nu7/1SQ3SXIwyX9M8sEkZ3T328b910vyjCQ/POZ/anc/fYPsJyU5J8kdk+xN8n+S3Lm7P77JU3eLqnp6kusm+bMkP9vdB6vqfyV5VHf/xXjeE5N8NMl/6O5/XPPf+1dJ/jLJvjWjw74zyQOTfM/49dwlycOr6p1JnpZkJcmXk7w8ycO7+yvjuQ4n+dkkv5jkW5K8OMmDu/twVd0oyXOT/OskFyd5XXf/xJrHnZnkYUmuk+S3krwgyYvGDK9Ocp/u/sr60VJV9cgkD0ly1SQfSfJz3f26qrplhtfLd45ZX9zdD1/z73hid391/Hf5nSQ/lOQzSZ7c3b+3lX9TAGDnWAMJANjMryS5dYaC4fuS3DLJo9fsv06Sb05y/SRnJHlOVW02lelFGQqe707yrUmeuu48VxvP84Akv11V1xj3/UuS+yW5epLTkvxsVd01l/VDGaZQ3TbJY6tqZc2+uyR5yfj4VyR5ZpJU1Tck+Ysk/zT+d2+b5Beq6vYbZD9jzHdKkmsl+ZkMBchm7p2hKLthhrJk9Tl7YZL7rDnuTkk+urY8SpLu/pcMZdVHuvubxj8fGXefnuRl49fz4gyF28My/Dv8wPh1/Ny6PHdOcosk35uhDFz9Gp+Y5K+SXCPJyRnKtLVun+RmGV4Dj0jynDH/KRlKpHut/8LHf/8HJ7lFd19lPMcF4+6nJXlad191fG5euv7xo5ckuTDJ9ZLcLcl/q6ofXbN/w39TAGBnGYEEAGzm3kl+vrs/kSRV9fgkv5vkMWuOeUx3H0ryhqo6L0NB8cS1J6mq62YoRK7V3ReNm9+w5pCLkzxhnI71qnHUTSV5U3f/7Zrj3llVf5jk32UY2bPq8d395ST/VFX/lKHsOjDue2N3v2rM8aIkvzBuv0WSb+nuJ4z331dVv5fknkles+55uDhDcXSj7n5nkv0bP12XemZ3f2j8b/5ahmLm0RlGbD2mqq7a3Z9Pct8Mxdp2/M/uXv3av7wuywVV9bsZnp/fWrP97O7+bJLPVtXfZCgEXz1+Xd+e5HrdfWGSN677b/36mPPd4+ipv+ru941f118muWmSc9c95pIk+5LcpKo+2d0XrNl3cZIbVdU3d/enkrxp/RdXVack+cEkp3X3wSTvqKpzMpSIrx8P2+zfFADYQQokAGAz10vygTX3PzBuW3XROFpms/2rTknymTXl0XqfXreWz5cyLqpcVbdKcnaGES/fmKGc+ON1j//YRo/dZN9JVXVCxuKkqj67Zv/eJH+/Qb4XjV/DS6rq6hmKoF/p7os3+Xo+tOb2pc9Jd3+kqv4hyX+qqj/NUKo9dJNzbGbtuVNV35nkN5PcPMMIrxPy9QXXZs/PIzKUfW+pqouSPKW7n7fm2LVT9L68wf3rrA/X3edX1S8k+dUk311Vr8kwpe4jGUaXPSHJe6vq/RmKv1euO8X1MrxWvrBm2wfGr2+zr+ck60EBwM4zhQ0A2MxHMhQtq75t3LbqGuN6PZvtX/WhJNccy5ft+oMM05RO6e6rZVgbZ89RnGejTO/v7quv+XOV7r7T+gO7++Lufnx33yTJv8kwJex+E+c+Zc3t9c/JuRmmgd09w2iiD29yjsNb3P7sJO9NcuNxatgvZ4vPT3d/rLt/uruvl+RBSZ41rot0TLr7D7r7hzK8dg5nWEcr3f1/uvteGaYwPjnJy9a9fpLhubpmVV1lzbZvS7LZ8wQA7BIjkACAzfxhkkdX1VszFAGPzTD6Zq3HV9UvJ7lVhmLlcetP0t0fHac8PauqzsywYPUPdPffbSHDVTKMSDk4LsL8nzOs23Os3pLkC+OCz09P8pUMC1FfqbvfuvbAqvqRJJ9K8p4kn88wFev/Tpz7zKp6ZYbRMb+S5I/W7PuzDAtJXzvJr0+c4+NJrlVVV+vuz00cd5Ux0xer6rsyLJj9yYnjL1VVqyXWhUkuyvBvPPV1beWclWFNqX/IsND1lzOM7EpV3SfJa7r7k2tGfl3mv9fdH6qq/5Hkv1fVf82whtQDMkynBAAWyAgkAGAzT0rytiTvTPKuJG8ft636WIbi4SMZFnT+me5+7ybnum+G4uW9ST6Rra9b83NJnlBVX8hQYG228PK2dPclGQqvf53hCmCfynCltattcPh1Mixc/fkMayu9IdNrF/1BhpLrfUn+OWues3GtppcnuUGSP5nI994MBd77quqz45XJNvJfM5RqX0jye7lsWXUkt0jy5nHNqVckeejqGkfHYF+GKYefyvD6+NYkjxr33SHDekpfzLCg9j3H52O9eyU5NcPr6k+TPK67//oYcwEAx2jP4cObjZAGANjY+ku3s3VV9dgk39nd9zniwQAAS8IUNgCAXVJV18wwJeu+i84CALAdprABAOyCqvrpDIt3/+UW138CAFgaprABAAAAMMkIJAAAAAAmKZAAAAAAmDTbRbTf8Y53HN63b99xP++hQ4eyE+fdSXPLPLe8yfwyzy1vIvNumFveRObdMLe8icy7YW55k/llnlveRObdMLe8icy7YW55E5l3w07m/dKXvvSpm93sZt+yfvtsC6R9+/ZlZWXluJ/3wIEDO3LenTS3zHPLm8wv89zyJjLvhrnlTWTeDXPLm8i8G+aWN5lf5rnlTWTeDXPLm8i8G+aWN5F5N+xk3v37939go+2msAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAAATLpCFEgHL75ky8eurKzsyHkBAAAA5uqERQfYDSeduDennnXecT/vBWefdtzPCQAAALBsrhAjkAAAAAA4egokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGDSCUc6oKqel+TOST7R3d8zbrtmkj9KcmqSC5Lco7svqqo9SZ6W5E5JvpTkJ7v77eNjzkjy6PG0T+ruc8ftN0vygiRXSvKqJA/t7sPH6esDAAAA4BhtZQTSC5LcYd22s5K8rrtvnOR14/0kuWOSG49/Hpjk2cmlhdPjktwqyS2TPK6qrjE+5tlJfnrN49b/twAAAABYoCMWSN39d0k+s27z6UnOHW+fm+Sua7a/sLsPd/ebkly9qq6b5PZJXtvdn+nui5K8Nskdxn1X7e43jaOOXrjmXAAAAAAsgSNOYdvEtbv7o+PtjyW59nj7+kk+tOa4C8dtU9sv3GD7ER06dCgHDhzYUtiVlZUtHXc0tpphJx08eHApcmzV3PIm88s8t7yJzLthbnkTmXfD3PImMu+GueVN5pd5bnkTmXfD3PImMu+GueVNZN4Ni8h7tAXSpbr7cFXt+ppF+/bt29FiaKuWIcOBAweWIsdWzS1vMr/Mc8ubyLwb5pY3kXk3zC1vIvNumFveZH6Z55Y3kXk3zC1vIvNumFveRObdsJN59+/fv+H2o70K28fH6WcZ//7EuP3DSU5Zc9zJ47ap7SdvsB0AAACAJXG0BdIrkpwx3j4jyZ+v2X6/qtpTVbdO8rlxqttrktyuqq4xLp59uySvGfd9vqpuPV7B7X5rzgUAAADAEjjiFLaq+sMkt0nyzVV1YYarqZ2d5KVV9YAkH0hyj/HwVyW5U5Lzk3wpyf2TpLs/U1VPTPLW8bgndPfqwtw/l+FKb1dK8pfjHwAAAACWxBELpO6+1ya7brvBsYeTnLnJeZ6X5HkbbH9bku85Ug4AAAAAFuNop7ABAAAAcAWhQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKpCV08OJLtnX8ysrKjp0bAAAA4IRFB+DrnXTi3px61nk7cu4Lzj5tR84LAAAAXH4ZgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMOmEY3lwVT0syU8lOZzkXUnun+S6SV6S5FpJ9ie5b3d/par2JXlhkpsl+XSSn+juC8bzPCrJA5JckuQh3f2aY8kFAAAAwPFz1COQqur6SR6S5Obd/T1J9ia5Z5InJ3lqd98oyUUZiqGMf180bn/qeFyq6ibj4747yR2SPKuq9h5tLgAAAACOr2OdwnZCkitV1QlJrpzko0l+NMnLxv3nJrnrePv08X7G/betqj3j9pd096Hufn+S85Pc8hhzAQAAAHCcHHWB1N0fTvIbST6YoTj6XIYpa5/t7q+Oh12Y5Prj7esn+dD42K+Ox19r7fYNHgMAAADAgh31GkhVdY0Mo4dukOSzSf44wxS0XXHo0KEcOHBgS8eurKzsWI6tZtiOncyb7Ezm7Th48ODCM2zX3DLPLW8i826YW95E5t0wt7yJzLthbnmT+WWeW95E5t0wt7yJzLthbnkTmXfDIvIeyyLa/z7J+7v7k0lSVX+S5AeTXL2qThhHGZ2c5MPj8R9OckqSC8cpb1fLsJj26vZVax+zqX379u140bIVy5Bhuxad+cCBAwvPsF1zyzy3vInMu2FueROZd8Pc8iYy74a55U3ml3lueROZd8Pc8iYy74a55U1k3g07mXf//v0bbj+WNZA+mOTWVXXlcS2j2yZ5T5K/SXK38Zgzkvz5ePsV4/2M+1/f3YfH7fesqn1VdYMkN07ylmPIBQAAAMBxdCxrIL05w2LYb0/yrvFcz0nyyCQPr6rzM6xx9NzxIc9Ncq1x+8OTnDWe591JXpqhfHp1kjO7+5KjzQUAAADA8XUsU9jS3Y9L8rh1m9+XDa6i1t0Hk9x9k/P8WpJfO5YsAAAAAOyMY5nCBgAAAMAVgAIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICiePi4MWXbPnYlZWVHTkvAAAAsDNOWHQALh9OOnFvTj3rvON+3gvOPu24nxMAAADYHiOQAAAAAJikQOIKy7Q7AAAA2BpT2LjCMu0OAAAAtsYIJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJJxzLg6vq6knOSfI9SQ4n+S9JOskfJTk1yQVJ7tHdF1XVniRPS3KnJF9K8pPd/fbxPGckefR42id197nHkgsAAACA4+dYRyA9Lcmru/u7knxfkgNJzkryuu6+cZLXjfeT5I5Jbjz+eWCSZydJVV0zyeOS3CrJLZM8rqqucYy5AAAAADhOjrpAqqqrJfnhJM9Nku7+Snd/NsnpSVZHEJ2b5K7j7dOTvLC7D3f3m5Jcvaqum+T2SV7b3Z/p7ouSvDbJHY42FwAAAADH17FMYbtBkk8meX5VfV+S/UkemuTa3f3R8ZiPJbn2ePv6ST605vEXjts22z7p0KFDOXDgwJaCrqysbOm4o7HVDNuxk3mT+WXeibzJPDNv1cGDBxeeYbtk3nlzy5vIvBvmljeReTfMLW8yv8xzy5vIvBvmljeReTfMLW8i825YRN5jKZBOSPL9SX6+u99cVU/L16arJUm6+3BVHT6WgJvZt2/fjhctW7EMGbZrbpnnljdZfOYDBw4sPMN2ybzz5pY3kXk3zC1vIvNumFveZH6Z55Y3kXk3zC1vIvNumFveRObdsJN59+/fv+H2Y1kD6cIkF3b3m8f7L8tQKH18nJqW8e9PjPs/nOSUNY8/edy22XYAAAAAlsBRF0jd/bEkH6qqGjfdNsl7krwiyRnjtjOS/Pl4+xVJ7ldVe6rq1kk+N051e02S21XVNcbFs283bgMAAABgCRzLFLYk+fkkL66qb0zyviT3z1BKvbSqHpDkA0nuMR77qiR3SnJ+ki+Nx6a7P1NVT0zy1vG4J3T3Z44xFwAAAADHyTEVSN39jiQ332DXbTc49nCSMzc5z/OSPO9YsgAAAACwM45lDSQAAAAArgAUSAAAAABMUiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMEmBBDNx8OJLtnzsysrKjp17p867ncw7lRcAAICNnbDoAMDWnHTi3px61nk7cu4Lzj5tR867U5l3Ki8AAAAbMwIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCWCNgxdfsuVjV1ZWduS8AAAAy+aERQcAWCYnnbg3p5513nE/7wVnn3bczwkAALBbjEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJIAZO3jxJVs+dmVlZcfODQAAXL6dsOgAABy9k07cm1PPOm9Hzn3B2aftyHkBAID5MQIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAHbVwYsv2fKxKysrO3JeAABge05YdAAArlhOOnFvTj3rvON+3gvOPu24nzMZiqmTTty75eO3W3pt59wAALAoCiQAmLBThVeyc6UXAAAcb6awAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAFzOHLz4ki0fu7KysiPnBQDg8uWEYz1BVe1N8rYkH+7uO1fVDZK8JMm1kuxPct/u/kpV7UvywiQ3S/LpJD/R3ReM53hUkgckuSTJQ7r7NceaCwCuqE46cW9OPeu8437eC84+7bifEwCAeTgeI5AemuTAmvtPTvLU7r5RkosyFEMZ/75o3P7U8bhU1U2S3DPJdye5Q5JnjaUUAAAAAEvgmAqkqjo5yWlJzhnv70nyo0leNh5ybpK7jrdPH+9n3H/b8fjTk7ykuw919/uTnJ/klseSCwAAAIDj51insP1Wkkckucp4/1pJPtvdXx3vX5jk+uPt6yf5UJJ091er6nPj8ddP8qY151z7mE0dOnQoBw4cONJhSba3vsN2bTXDduxk3mR+mXcibzK/zF4Xl+V1MfC6uKy55U3ml3mn/t/bjoMHDy5Fju2YW+a55U3ml3lueROZd8Pc8iYy74a55U1k3g2LyHvUBVJV3TnJJ7p7f1Xd5vhF2pp9+/bt+Jv6rViGDNs1t8xzy5vIvBvmljeReTfMLW8yv8zLkPfAgQNLkWM75pZ5bnmT+WWeW95E5t0wt7yJzLthbnkTmXfDTubdv3//htuPZQrbDya5S1VdkGHR7B9N8rQkV6+q1WLq5CQfHm9/OMkpSTLuv1qGxbQv3b7BYwAAAABYsKMukLr7Ud19cnefmmER7Nd3972T/E2Su42HnZHkz8fbrxjvZ9z/+u4+PG6/Z1XtG6/gduMkbznaXAAAAAAcX8fjKmzrPTLJw6vq/AxrHD133P7cJNcatz88yVlJ0t3vTvLSJO9J8uokZ3b3JTuQCwAAAICjcKyLaCdJuvtvk/ztePt92eAqat19MMndN3n8ryX5teORBQAAAIDjaydGIAEAbMvBi7c++Hg7C0Zu57wAAGzuuIxAAgA4FieduDennnXecT/vBWefdtzPCQBwRWQEEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAMA2bffqbq4cBwDMnauwAQBs005dNS5x5TgAYDkZgQQAcAWwnZFNRkwBAOsZgQQAcAWwU6OmjJgCgCsGI5AAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQCApXTw4ku2fOzKysqOnHc7dirvds8NADvhhEUHAACAjZx04t6cetZ5x/28F5x92nE/Z7JzeZOdywwAW2UEEgAAAACTFEgAAAAATFIgAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAwBXUwYsv2fKxKysrO3Le7ZpjZoDLgxMWHQAAAFiMk07cm1PPOu+4n/eCs0877udcNcfMAJcHRiABAAAAMEmBBAAAAMAkBRIAAAAAkxRIAAAAAExSIAEAAAAwSYEEAAAAwCQFEgAAAACTFEgAAAA75ODFl2z52JWVlR07N8CxOmHRAQAAAC6vTjpxb04967wdOfcFZ5+2I+cF2IgRSAAAAABMUiABAABwqZ2admfKHcybKWwAAABcaqem3ZlyB/NmBBIAAAAAkxRIAAAAAExSIAEAADBr1m2CnWcNJAAAAGbNuk2w84xAAgAAAGCSAgkAAAB2kSl3zJEpbAAAALCLTLljjoxAAgAAACYZNYURSAAAAMCkuY2aOnjxJTnpxL1bPn67pdd2zr0T511EXgUSAAAAcLmyU4VXsnOl17KXdKawAQAAADBJgQQAAADAJAUSAAAAAJMUSAAAAABMUiABAAAAMOmor8JWVackeWGSayc5nOQ53f20qrpmkj9KcmqSC5Lco7svqqo9SZ6W5E5JvpTkJ7v77eO5zkjy6PHUT+ruc482FwAAAADH17GMQPpqkl/s7pskuXWSM6vqJknOSvK67r5xkteN95PkjkluPP55YJJnJ8lYOD0uya2S3DLJ46rqGseQCwAAAIDj6KgLpO7+6OoIou7+QpIDSa6f5PQkqyOIzk1y1/H26Ule2N2Hu/tNSa5eVddNcvskr+3uz3T3RUlem+QOR5sLAAAAgOPrqKewrVVVpya5aZI3J7l2d3903PWxDFPckqFc+tCah104btts+6RDhw7lwIEDW8q3srKypeOOxlYzbMdO5k3ml3kn8ibzy+x1cVleFwOvi8uaW95kfpn9vzfwurgsr4uB18VleV0MvC4uy+tiMLe8yfwy+3/vso5H3mMukKrqm5K8PMkvdPfnq+rSfd19uKoOH+t/YyP79u3b8RfEVixDhu2aW+a55U1k3g1zy5vIvBvmljeZX+a55U1k3g1zy5vIvBvmljeReTfMLW8yv8xzy5vIvBu2k3f//v0bbj+mq7BV1YkZyqMXd/efjJs/Pk5Ny/j3J8btH05yypqHnzxu22w7AAAAAEvgqAuk8apqz01yoLt/c82uVyQ5Y7x9RpI/X7P9flW1p6puneRz41S31yS5XVVdY1w8+3bjNgAAAACWwLFMYfvBJPdN8q6qese47ZeTnJ3kpVX1gCQfSHKPcd+rktwpyflJvpTk/knS3Z+pqicmeet43BO6+zPHkAsAAACA4+ioC6TufmOSPZvsvu0Gxx9OcuYm53pekucdbRYAAAAAds4xrYEEAAAAwOWfAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCnpHEG0AACAASURBVCQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEkKJAAAAAAmKZAAAAAAmKRAAgAAAGCSAgkAAACASQokAAAAACYpkAAAAACYpEACAAAAYJICCQAAAIBJCiQAAAAAJimQAAAAAJikQAIAAABgkgIJAAAAgEknLDrAqqq6Q5KnJdmb5JzuPnvBkQAAAADIkoxAqqq9SX47yR2T3CTJvarqJotNBQAAAECyJAVSklsmOb+739fdX0nykiSnLzgTAAAAAEn2HD58eNEZUlV3S3KH7v6p8f59k9yqux+82WP279//ySQf2KWIAAAAAFcE336zm93sW9ZvXJo1kLZroy8GAAAAgONvWaawfTjJKWvunzxuAwAAAGDBlmUE0luT3LiqbpChOLpnkv+82EgAAAAAJEsyAqm7v5rkwUlek+RAkpd297sXmwoAAACAZEkW0QYAAABgeS3FCCQAAAAAlpcCCQAAAIBJy7KI9kJV1Tcm+a4kh5N0d39lwZFgS6rqOt39sUXnuCKoqr1JXtjd9150FgDmqaq+JUm6+5OLzgIA23WFXwOpqk5L8jtJ/jnJniQ3SPKg7v7LhQabUFV3XJ+vqn6mu39nUZkub6rq2zba3t0f3O0sU6rq7d39/YvOsV1V9SNJfj5JjZsOJHlmd//twkJtQVW9McmPKplZq6oeu9H27n7Cbme5vKqq92f4kGfVniSHu/s7FhTpiGaa+c7d/cpF5ziSqnpOdz9w0Tm2qqr2JHlchgvGfEOG18JXkzxj2b9PzPH7W1WdlOQBSb47yUmr27v7vyws1BaMH2h/53i3u/viRebZSFX9+NT+7v6T3cqyHVVVSR6YYcBAMrzv/L3u7sWluvypqg1/J+nut+92lq2a4/e4RTMCKXlKkh/p7vOTpKpumOS8JEtbICV5TFUd6u7XJ0lVPSLJj2QowpZSVf16kicl+XKSVyf53iQP6+7fX2iwzb03yfkZ3uR9R5L3ZfhF4HsXGWoDexYdYLvG0vaZSZ6Q5PEZvobvT/K8qnpwd79qkfmO4H1J/qGqXpHkX1Y3dvdvLi7StKp63kbbl/GN9DjK66eSnJzk1d39D2v2Pbq7n7SwcNP+Zc3tw1ny/y/n9JpY4wsZfs7tSfL6JLfJkj/PmWfmJyRZ+gIpyc0XHWCbHpbkB5PcorvfnyRV9R1Jnl1VD+vupy403bQHJvnNDK/dX0jyW4uNsyUvyvA+7vYZXtP3zlAYLK2quk2Sc5NckOG5PqWqzujuv1tkrg382MS+w0mWrkCqqh/IkOt3kzwnw/N70yR/U1U/3t1vWmS+zVTVrZM8I8lKkm9MsjfJv3T3VRcabNobkrw1l/1ZdzjJjy4mzpbM6ntcVd0xyaOS3GTc9O4kT97N358USMkXVsuj0fsyvOlbZndJ8sqq+qUkd8jQpp++2EhHdLvufkRV/ccMPxx/PMnfJVnWAqm7+6ZJUlXv6O5/vehAm5jjEMJfSnLX7v6nNdveUVVvy/CDcpkLpH8e/3xDkqssOMtW3SbDc74nyZOTPGKhaab9bpIrJ3lLkqdX1Ru6++Hjvh/PUEIvne5+SpJU1Y2T/GqSE5P8t0VmOoLbJ/lAhl+yPrHgLFvW3Z+uqm9Icv0kd+nuFyw40hHNMPOVq+qmWVd0LfOnxzNx3yT/obs/tbqhu99XVfdJ8ldJlrlA+uTqhyRV9TNJXjyDqfM36u67V9Xp3X1uVf1Bkr9fdKgjeEqG98qdJFX1nUn+MMnNFppqne6+/6IzHIXHJrnXulHuf1ZVr88wMvCOC0l1ZM9Mcs8kf5yhNL9fvjZCbVmd393LXBZtZDbf46rqp5M8KMN7+beNm2+e5OyqOrm7n7MbORRIyduq6lVJXprhl/G7J3nr6hDNZRyK2d2fqqq7JPnrJPuT3K27l71IWH2tnZbkj7v7c8No0qV1pXEo8ZWTfHtVvSDJz3T3wcXG+jonV9XTN9vZ3Q/ZzTBbdJ115VGSpLvfWVXXXkSgreruxy86w1H4bHe/PEmq6ilJDnT3exacaTO37O7vTZKqemaSZ1XVnyS5V5Z/5EaSPCvJS5J8OkMZdqvFxtnUKRk+fLhvhk80n7/M07ZH548j/66c4ZPk76+qH17yUVNzzHz9DL/ILvunxxsWXauWsPA6cW15tKq7P1lVJy4i0DbsGT/8u2qSQ0n+tKoeteRTzlenfn22qr4nyceSfOsC82zFiWunU3X3/17218Y4onz9NMFlnPZzw41er939hqralV+4j1Z3n19Ve7v7kiTPr6p/zDD6ZFl9S1X9QpKDST6S5M3d/fEFZzqSOX2Pe1iSH+ruz6zZ9vpxVNIbM4yw23EKpOGb3seT/Lvx/ieTXCnDEM2lGopZVV/IZUecfGOG6VV3q6rDSz6k8ZVV9d4MU9h+dlxEctnKmLVenORD4+1HZfiU/nUZhqAvk19adICj8C9HuW9hquovsvlor0MZRiX9dnd/aJNjFuniqnp4hhFTFyb57ap6QXefu+BcG/nG1Rvd/dUkDxznpr8+yTctLNXWXau7n5skVfWLiw6zme7+v0leVVUXZPgU68FZ7mnbSfITGUZOXZLkr7r7kqq6+4IzHckcM8/l0+OPZZhysJFlLLym1s1b9jX1fjrJIzO8ju+e4T3z85P87QIzHclzquoaSR6T5BUZfn5suM7JEnlbVZ2Tr43Mv3e+NsJg6VTV72Qox38kyTlJ7pZh9PAymppZspTvO0dfGj/Mfse4FMhHs/xXUP+9JNfM8Lv0v03yjKp63JKPvp3T97g968qjJJeOdt69EFf0RbTnZlyI8ZRlW8x5K6rqmkk+N76JvnKSqy7rEMEkqaqrJEl3f2G8f8Pu/ufFppq/qvpshumL6+3J0KpfY5cjHVFV/buJ3Sdk+ATuXt39A7sUacvGdTZ+LsMPxt9K8pkkv9ndZy402Aaq6veT/H53v3rd9p9K8uzuXspPY9csKvobSX4xwxu8J3T3dy8u1eaq6oFJ7pphnbfnd/c/LjgSS6KqXj+TAmlWquqSbPyL6p4kJy3r9zZ2T1XtS3Jmkh8aN/19kmd196HFpdpcVb2zu793zd/flOQvu/vfLjrbelX1iQyjg9fbk+Qe3b2Uo9+r6tszfIB9YoaRJ1fL8Jo4f/KBS6SqvjnJ33f3yqKzXB5U1ZuTPHD9TI6q+r4Mi8LfcjdyXOELpM2m/yzp1J8kSVW9q7v/v0Xn2K6q+jdJTs2akW/d/cKFBZowll1fZ6PWd5GOMDIm3X2XXYyzJUcoY9Ldb9itLMdTVZ3T3T+16Bzsvqp6/kbbl3WtiKr6vxnKo0NZ8/1jdfrgMqqqd2XjK5rJvEPGK1nt7e6l+4R+rleCmqNxBOvXWfKLR8zuvf3cVNWbu/tWVfWmDGsUfjrJu7v7RguO9nWq6oyp/Us6IptdMqfvcVX1QxlmyTw/wzI2ybAG0hlJ7tPdb9yNHKawJXdO8vkMa1csZcu/gbdX1S26+62LDrJVVfWiJDdM8o4MIyGS4Y31UhZIST6VYQjjl/O1NRYOZ5gyuEx+Y/x7T4Zho0tfYMy1IDqSZS2P5vhGuqqemOTx4zS2VNVVkzxtWQuZDJfiXrY1V6bcYNEBjsI/ZRjp99gk71xwlq2aY+YkSVXdP8mvZ5gC+5vd/RtHeswu+7F1t/9izf2lWn4g2fxDqVXL9uHUOo/JsOj+ny46yDacnuWfsnYZVfX+bPCBYHcv2/vOVa+sqqsn+f+TvD1D9nMWG2ljcy2IZviayLhEySMzXCFs7dpYyzyydTbf47r7jVV1ywyjFX9y3PyeJLfezVk9CqRhNfsHZZj/+LtJnjeuD7HMbpXk3lX1gQxDoufwqebNk9xkBot9r3pghtfFC5L87uovsstmbRlTVV+cQzmzwafyl7Hkr+M5mmNJfkKSN4+/xF47w5VInrHYSJPOSfL9iw6xDQ9J8twlXkz963T3fcbFcJ+UYT2Lx/Z4OfRlNcfMazw4wxVev5jkf+RrH1YshbVlclX94xKXy6v2Z/i5tyfJdTMsLrvMH06tdcMMa0HeNsPU3L9ecJ6t+PQMS4ObZ3hNvD7DukJLrbufON58eVW9MsNUzM8tMtNm5jhafzSr18ToxUn+KMNFk34mw8iYTy400ZHN5ntcVX3buIzNQgvyK/wUtlXjmjwPzfCpxW9098sWHGlT45zYr9PdH9jtLFtVVX+c5CHd/dFFZ9mqNfPRfyLJ07v7xQuONKmq3t7dS/9L7JrX754k5yW509r9S/46vsH6XwCXfTRgVZ2QoQz9ycynJE9V3TbJK5NclOSHl3nOf1W9M8OFGNZf+nwpRxWMa0rdP0NR9/wkf7isb/xXrRvB8YMZLr38pu5+8IIiHdEcM69a+/Okqv6uu3940Zk2M5effavGwuumi86xXVV1vQyv4W9P8pgl/7n3pST/O1+7EtQ/ZLjQxTJfvCXJvF7Pc1maYs3SCRuO1l/2D19n9prY3903W10ba9z21u6+xaKzHckcvset+9n88u7+T4vIcYUfgbRuNMSeDAuU/VGGSxsvpe7+wLhY1upCdX+/fjGtJfTNSd5TVW/JmlEQy9r6r1lf4YIkv5PkkVX1iO7+vsWl+nrrfkHZO1515NJfYpfxF9i1BVFVHVrmwmgDL6+qH+vuDyeXvil5ZpKlXZNsHD332+M6PQ9N8j+qatlL8h9O8vQkT8jw3D6jqh7Q3R9ZbLJNVYYRBusvfb6Uowq6+5wk59RwyY77J3lnVf1DhgUY/2ax6Ta1OoIj+drzfKdNjl0Ws8u85pP676iqV2TIfZPFprrcmdUnt+tGb+xJ8m1J3pQlfp+cZCVDvisluV6GKyudk+Q+iww1Zc37ucu8l1vG93HJvJammONo/WR+r4nRxePfH62q0zIUuJNTeBdtZt/j1r7PXNh7zCt8gZRhesesVNVDM0y5W53j//tV9ZzuXuYpHr+66ADb9GPr7u/f8KjFWzssPhnmoa9a2l9gZ+xBSf6sqn4sw5Sl/57l/4VwdiV5hukyd1+dYjUWuq/PMKVmGb1nbiMKqmpvhufzuzKs+fZPSR5eVQ/q7nsuNNwGunt26zbNMXO+NlXtKQtNcQTr3vCvll2XWtYPp2ZqqaYvbsW6D6beneS1VfXkReXZorXv51bfyy3z+7i5LU2xak555/aaSJInVdXVMlyR9hlJrprhCnLLbE7f4w5vcntXKZDm9Y1k1QOS3Gr1yijjD8X/mSVeI6S731BV106yOoTxLd39iUVmmjKD9RSSzPMXlKpaOwz3SlV101x21NTSLkbc3W+tqock+asMQ+P/fXcv+9zuWZXkVfVdGeaif3B1W3f/SVX9q8WlunypqqdmeF28Psl/6+63jLueXFW9uGSbq6ozk7y4uz873r9Gknt197MWm2xzc8yc5F2LDrBFa9/wL3XZlXzdVX6+df1Vf5bxaj9rfDDJR1enf1XVlTKsTbf0qupb87WFfH97kVmOZIbv5/5XkuskWfqlKeY4Wj+Z5Wsi3f3K8ebnMp91m+b0Pe77qurzGV6/VxpvJ19bD/mquxFCgTRMUfo/+dq0qj0ZSqVlXsh3T742XDTj7T2bHLsUquoeGa7U8LcZsj6jqn5pWafRVNW5SR667o3/U7r7vyw22WVV1e2TXGX981hV/ynJ57v7tYtJNmntm/2PJVn7xvlwkqW7UsMGCzBeOcMPx+dW1VJ/2r3RFMGqemBVXSfJy5ZpIeWxnDszyYEMz+1Du/vPx90PS/KihYWb9v/YO+8wyYryC7/LkiVJVESyHkWQIEgUQUVFoogi0R8oQSQpoiAZBEQBJUjOQRREkCxpSSIoGQGPIoooIHld4sIyvz+qeqe3t6dnZnd2qqqn3ufZp/tWTz8cx57b9371feesCsFLz/ZrqcUMgAeB/dw+nv3jwy1mgGxve+INoO2XJG1PMIfPlRI1Pw38h/zHMR8B5ms9f0laijwNW2dven5ay3HuXAys1nQ8Ia5l62kiaUPCtcaCwLMET5NHgKVT6upEk3XCJNjOKlGwiZKsKYrs1i/wM0G0S2iXHJfV/VMLxZzjbGcxPVALSOFmZUNCEelM2/cn1jMQziIkFDXiBjcGzkioZyDsC6zU6DqKMY83AFkWkICPNopHMPHCP8cRlQMI//+3cgsh1ji7ApLtUnYkmimpvXUSosFzM6MIF0srAf8efkUd2R74mO1XJC0K/FrSoraPJe8i+fKSzgBmAxaOHnU72t45sa6+uLu5eBQDAw62vXfGZtqjJY1qjEvEEbwZE2vqjxI1lzKOeTztC3HzAPsBWwyvnM7YPji1hqlgetvjGwe2x0vK/XN8KLAKcIPt5SWtTcb+R5FfEYpczX56PfTaVeTGQakFDJQSO3kipX0mIISfAPwY+F5KIYOgxHNcUkZ8Acn2ScBJkj4CfFfS/LbXS62rE7aPkXQzsEZc2tb2fQklDYTpWkbWXgCmSyVmAEwn6d22X4KJ7a85/r3M1G6EyvbzdeRn6GgYLkpajHLaXBuMZlKfplHAVTl1HjUxne1XAGz/U9JahCLSIuRdQPoZ8DngcgDbD0Qj8Fw5R9Ietm+NN1bHEaJ3c+Za4FeSTonHO8a1nClR85ySNiJ0FDxFKCi9nVhTO5a0fWvrou3bJJ2UQlAX85ykDW1fDhA/H88n1tQfb9l+QdJ0kqazPUbSz1KL6oelCYWv2QgJUFmOEzcozZqiUIr6TADYvgRA0n6N5wVQzDlO0jgm7aYjHk8PzGh7WO5Vc7whHlYkjSJc+G8DzEDmM9IAkg4FbgXO6GMEIUeulfQ74MJ4vBlwdUI9/XE08AdJF8fjLwOHJdTTF3NImr71Al/SDIT0kcrQUkybaxOTJd1JerOvH07MfyUt1+gEjZ1I6wNnknHSHYDtJ0Oo2UQm9PWzGfAF4FJJzxAMLjex/bfEmvrj+8AOwDfj8fWEVKWcKVHzLcCX6E2vWkTS9ravSStrMjqNgM0wbCpGBjsBF0g6IR7/m3DNnDMvS5qNcK18gaRngayvl2Nx4CuSPgYcI+kp4KBG6mtulGZNUSKlfSZaKMljuJhznO1Jvvviee5bhA2qS9u+aRow4gtIBOOsfxO8NZ4BZpa0Sc7zpcDjwObAcbESeRtwa5NXSHbY3ivO8ja6pk61PWwf9MFi+1xJd9Prx7NJph0bvwFOk7RLk6n6bMCx5N3iWioltrl+MJ4nXiN4m1xJKBrkyDbAJMXQWBzdpqmLI0eelLQa0BOLt7sTfJyyxPYzkj5LuNj4bQHFIwgFjdNsnwwTx8FmInyuc6U4za0BEpKWBC4DcisgPSbpC7Yn2YiStC7hGqkyRNj+O7BKvLag0SWaORsRgi6+DWxJSB89JKmifpB0PL033Y8DnyTYa8yaTFRnSrOmKI4CPxPNyb9LRguFhrlztt7CJZ7jJM0F7EG4bv4F4W/xheH679cCEtxI+KA3dxBkPV9q+yzgrGiC+xXgu4RdztxNGX8PvEX4/f6xn59NiqRVgIdtnxCP55C0su27EktrZT/gh8ATkhpdJgsTPLH2T6ZqgEh6H8HccuK5qN1YQkYU0+bawPZsMPHmdVHCOWMRSdsAt7Qz2U6F7T49mWz/fji1DJKdCEXb9xGKdNcRdoSypKkFejTwKUmHMYzpHVPIjcBngMaF3SyE3/Nqfb4jPcVpljRP80Wo7cckrZNSUx/sAVwVuyDuiWsrEgzts0uelHSq7R1S65gSJB0O/LglVGRP2/ulVdY3Ld355yQTMjju7uc4N0qzppiIJk3nw/a/Ovx4Skr7TECG59/+KOkcJ2leYE/CJM+ZwPIpvCtH9fSU1GFWAZB0OrAU8F9C99HtwL2Z+hQAbVtdPwFk2+oq6T5ghSbz0+kIxrMrdH5nGqIXz5Lx8DHbr6fUMxAkHUk4AT5C77hPT6YJHgBIWoLgFbMg4XP8JLCN7ceSChskkjYA5gZuzqmAVKn0haT7bS/X31pOFKr5b8D9hLCOaxrfgTkSzd+3oDdZ62HgFw2PupyQdG+u1w/9Iem+VmP13P/3NBXJGwxrxPVgkDSXm0JbWl5byfafhlvTQJD0E0JidbM1xYO2v59OVWfUPp3vUdsfSSqsCymoSFfUOU7Sq4Sk0bOAca2v2z5msjdNA2oHUpnMQ9g5fhl4EXg+5+JRpLRW11HNF86235GU7d9LLBg9lFrHINkYkO1c/Xgmo9A213ZmzmNtXzHsYrqUaPa9PuEL/RjCOXof29mlIAJIantRZPveduuZ8KqkFRoaoydE7oXyEjV/kNA1tR1hTP4i4Gzbf00ra3Lid8dZqXWMAEZLmqnxXR03rGZKrKk/jiVYEBxm+6rUYvrhNknrNnfgSpoT+BFhs3XpPt+ZkGhN8SVg9biUtTVFpKh0PkkfAI4gNA00F2MWTyaqH/oq0gE5F+lKOsf9hN7ieLLJo2xviCt9Y/uLAJI+TDAAHyNptO2F0irrSGmtro9L2g1opLnsTPVVGGoeJ5idZl9AkrSV7fMlfadlHRi+iv8Usld8XIPQsTiK8OWT86hgaZxIaCUeQ/CnG0cwS8515v9ugo/Cf5g0GvhTfb4jPXsAF0cT0VHAewg73jlTnOa4cXI9cH28uTof+Jak+4G9bf8hqcBymVXS8vSRJpl58fYC4EZJjWLdtmQ+FmZ7v7hRuX/83j4g4zHoHwG3xvH4P0vamlDoOBVYvvNb0xJTtkpJ2oLy0vnOAg4EfgqsTfjby/neCQor0kWKOcfZPii1BqgFpCJRSCX6BLAmMBdwE+HGMDskHW77B7RPYcvNlLOZnQjR1o351xsIPlOVoeM14H5JN9JURLK9WzpJffKu+Ji7z9hk2N4AJrboZjseWDjjbR8laVvbNwJIyrkr9LMEj7R7gCNsv5hYT7/Y/pOkDwHqXfJbKTX1R4maJc1DuNjfmjAmvytwObAcIXFysXTqiuYZQndiO7Iu3to+UtIDhM40gENt/y6lpv5o6rI8m/CZPVHSk7az82exfYFCIubV0ctyLLC27X8kltYWSbfbXqOkMcEmSkvnm8X2jZJGRbuBgyTdAxyQWlgHSivSFXWOk3Rcp9eH6x5qxBeQWjsKGmTeUfB5QsHoWNtPpRbTD58HfuDyUtieBb6aWsdgKNCQ+vL4L3tsnxIfD06tZSrI1sukC5g3fpfMGR9HAfMl1tQntm8Abojn5CslXQUck7N3mkK63TcJGycAN0s6JeeCTImagT8QUmk3bjG1v1vSyYk0FY/ttVJrmEruI3QM98TnuXN0y/GL9G4EZUcsEqxPSEn9fq7FIwDba8TH4jbUKC+d783owfo3SbsQuoZnS6ypP0or0jUo5Rx3T/8/Mu0ZsSbakjaz/StJLwFPEOKMJ5LzjaKkI1tN6tqt5UCs6K5F323bWe58S1oIOJ7e2e7bgN3dISUqJSUaUgNImpHguQEZ785L6rTb02P70GETM0iaiuTfoWkHPPMieVFIOrDdeq7fIy0bJ9MTOk7mt/2eRJL6JYZHzEBvW/nWwATb30inqjOFap7E/680JJ1D6G79ue0/p9bTIBZr+8R2tsm/pYWglIYmjWpfBFiPMFIzFrLtykbSeba37m8tRyTNwaSbrbnei6xE8A+aizAaNichLezOpMI6IOldBK+/6egt0l3gYYyYHyz1HDd4RnIH0reBXwFLAPsAnwYOiTuzubMO0FosWrfNWg58iFAtbfiuNGgc52oEdxbwC+DL8XiruJZjnDEUaEgdjYfPAf5J+Dy8X9LXMu2aard78i7g6wTD5GwLSPSO3Z1GgSN4hXCP7StTixgErZ+DEjwsVrK9bNPxTXGDImeK0Szp8qbnk72e+2ZEEycACxOKdTldE23Q8rw5xKAHyLaARHkhKI1RzAMJXe89hLTiQzK9iW2OZr+HvD8LzUxiihyDZj6WSMuAkLQjcDChC+kdMr8XcUzgi11Iu9meLHUrQ6az/Q7h93sOgKTPA9cmVdWZ4s5x7ZC0g+1Th+O/NZILSONhYtV5L0kLAgdK+i6wvzOMzZT0TYKZ8+KSHmx6aXYgV3PAR9wSjVgI89luTnc5W9IeydT0TzGG1E0cDXzWtgEkfZDgkZXdBYjtie3wkmYHdieY7P2SyVvlsyLXLpgu4xDC6EERFPqZmCBpCYckRCQtTm+3Za6UpHlV4EnCOfgu+ugazp147fYnMiuK2t628Tz60W3b6eczo7QQFAjfzbcCX4rHWxI2jT/T5zsSYTtLs96+kLQP8ANgFkn/i8ujCPdVw3LzOhV8F1ja9vOphQwESSsSNq9nj8djge1sZzHG1AfXSdrI9rOxkHscMDd5F5BKPMe1Y9i+t0dyAWknAElX0NsZM4qwc3UnMDqRrk78gmA8fQSwd9P6uFzbLwvmBUlb0Wv6vTnhhJIrJRlSN5ihUTwCsP3X6BmSJZLmJoyBbUnYVVnB9ktpVfVP3En5HmG3sDkGNlvT1gJpm7CUa7KSpDG08cTK/DOxFyFx9HHC73kRQhE3Z0rS/B5Ch+3mwBbAVcCFth9Oqqof4vnt+0wec53zZ7m0EcF2IShXJ9QzEN7bMlr+Q0lZJyA2kLSP7SNS6+iLqO0ISUfY3ie1nkHy7rYuyQAAIABJREFUd8L1cimcCexs+zYASWsQCkq5JrxCuD/9naSzgR0JQR3npZXULyWe4yaj4dc6HIzYApLtR+LTo5IKGQS2xxJmojePJ5EP2D5L0rySFsvUdO9YgHb6JK2UY6dXZDuCB9JPCRd7d5DvhT8UZEjdxN3RI+T8eLwlk7ZyZ4OknwCbEHbXlrH9SmJJg+ECws7r+oTC+deA55Iq6j7eR+hEay4g5Zys9F2C1vMJf3fZE01mP8CkiWZZd1yWpNn2BMIO8bWSZiIUkm6WdLDtE9Kq60jj/LYe9fw2TSgtBCVynaSvAhfF402BLFOV2vBlwkZx1tjeR9K7gQ8wafE2RxuCBvsAd0i6izI2Wyc0ikcAtm/PPOEV27dI2ppQgNm5hPH+ks5xfYV/NRguf9MRW0BqYPuW1BoGSzRsXZFwUXoWMCPhRmD1Tu9Lge2z49NLJG1g+z8Akj5J8CpYJpW2fni1IM8HbJ9TiiF1E98EvgU0vrhvA05MJ6cjexIuNvYD9m3yCCkhtnYe22dI2j2e726RlGvhtlQey7zjYRIa7e+SXs+8FZ5YgDmK4Ff4EPDdxvdIrpSoGSAWjtYjFI8WJYweZHkR3UQR57eWbvfFmz2nIF+PKUkbA0sCD9nueOOSGdsDexCujXsIUwWvRg+c3L+zi0DSNwjj/AsB9wOrEFIcc/4uPAW4iXBefiexloFwi6RTCJ0xPYTOmJslrQB5djk3neueA34p6Sao57ghZC/gJBKPmY/4ApKkcUw6wgb5f7l8EVgeuBfA9lPRlyVndgQuk7QBsAJhd+ULaSVNTtR3JvC2pAnAV2zfkVhWvxRmSA2A7TclnQRc1TzKliO2S5yFbtAoJD4taT3gKcI8emXoyH6UsQ9KGKU5EziX4GeyIaEztGOiVQYUp1nSucDShF3jg3NKMOuHUs5vzd3uWfvmNZB0ImH0+Q7gUEkfd8aJo824sIh5Sf8gnI9HAe9tGnvtsZ2lwTOheLQScKfttSV9CDg8sab+mKGQIkGDRghDa9Lr8uTb5VzMZE+h57hnbB+SWsSILyARRqw+BRxm+6rUYgbIeNs9knpgYmRi1tj+k6TdgOsI6QefsZ1jm/lhwCds/0XSysCPgU8m1jQQijGkbiBpQ0Js5ozAYpKWI6SkZLlLUTA/lDQnoYvqeGAOQgplZYiw/amSOgCbNk5mjSaoOXfSzW77tPj8J5Ky23FtQ4matyKkTe4O7FZQl2Up57dHCOEcjzQvSlqKfEfu1gSWtT1B0qyELuHcb64AkDSKMJ67mO1DJb2f4Iv0x8TS2mJ7scbzaLJeQvjMG7bfkISkmeJ18+QRjnlxjaQdCCmIzSNsWfrI2l47tYbBUthkT4nnuCw2/kZ8Acn2ftGEcf84V3iA7VwTzRpcFFsa55K0PcGv57R+3pOElrZtgFkJPk5nSMqxpfFt238BsH1XAZ1dDYoypI4cCHwcuBnA9v2SFuv4jsqgaZo/HwsUdzFSAnEk91wy7wCUdC1wOjB3zgWuFmZuMSifpfk4xxZ+CtRcapdlQee342k/oj0PYTR6i+GVMyDGR28sbL8WizKlcCJhROlThBvCV4CfEzpmKkPDvyXNBVwGXC/pJeCJxJr6Y/P42Gz+3QNk2eUVryPOaTr+MMGf5xMJZXUTJZ/jkjLiC0iNOVLgbGAx4ERJT9peP52qztg+StI6wP8IPkgH2L4+say+KKaVMTJ/i0HZJMfDZU42BRRjSN3EW7bHtmxYZVFZ7yZavTYaZFi8LZljKKMD8HTg68AJki4ETnfmKVvA04Tfb4Nnmo5zbeEvUXORxPHt9Ql+kMcQCjL7ZHhNtGS7grLt2+Iod458SNKD8fkoYIl43OhKyzkJamXbK0i6D8D2S7FLtARy38QGwPYX49ODFJI95yTvqPZJOr0KYRNJ7yVMGexHGIn+VlpJXUWJ57gPN2tsWh9WzSO+gMTks+gvAiWMhF0P5HaBNBmNVsbYWfK07Tfi8SzAAim19cFpwOwdjnOlJEPqBg9L2gIYHU1ndyPMIVeGlg8D30gtosspogPQ9q+BX0taCPg/4HJJzwNnAOfZfj2lvnYU2sJfnOaCOZHgOTWG0F0wjlAoze3Cv9N1RHbnisiHUwuYCt6SNJp4gxUnDUowTcb2Lqk1DJT4O14AaKQsvwf4VzpF/SNpaWApJk2OOzedoo58kWD8/WR8XNn2+LSSuooSz3Ef6vDasG3Cj/gCUokXejFq8EhgfkLFMXePAoCLgdWajifEtazaiW0fnFrDlFCSIXUTuwL7EubQLyRE7OY+e1wi4wqbSS+R0joA5yVc9M8OPAqsQ4iOXielqEplChgfu7K3tX0jgPKMuX5M0hdsX928KGld4PFEmjpiO/dxpE40EgTnl3QYsCmhgyNbJH0LuMD2y/H43cDmtrPcDJS0K8GK4L/0Fud6yK94OxGFFOu1CAWkq4F1gdsJI+g5shxwMqEwtxSwdLT/yG4MuoGkh0jYGTMYCj3H3UznQtGwjGOO+AJSofOlPwY2sP1oaiGDYPrmqrnt8QW1E2dPiYbUtl8jFJD2Ta2ly1lW0ssE8/qnCO3xB9t+Pq2srqKIDkBJuxA882YjjPwsZ/up+FrWu8aVSh/MG8fM54yPo4D5Emtqxx7AVZK+AtwT11YEViWM4FWGENsXSLoH+DThM7FxAdfM29v+eeMgjt1tT4bfJZHdAdl+IbWQQbApIdnsPtvbSlqA3o2fHDma3nS+2ZqOsxuDlnSO7a8BDxCSzQ4AHuz8rsoUsGLT81HATSTw/xvxBSTKnC/9bwFfhK08J2lD25cDSNoIqDewQ0cxhtRtjNUnIeeiV4nYHi1pOmAWYEHgK8A5wHpJhXURtt8k+K/k6pHW4OPAt/voSMs9PadSaUdjzLx53Pz0dHLaY/tvkpYhmGUvHZdvAXZsjPZXhg5JqwAPNwoykuaQtLLtuxJL68RoSaNsN8buRhM2BXPlSYJ5fUm8bvsdSW9LmgN4Fnh/alGtxFS7NwubklkKwPZWcUzwh4SR4gNs/6PjOysDprVgK+ntFEXcWkAqc770bkm/IiQfNMdQ/iadpH7ZCbhA0gmEiumTwDZpJXUVJRlSN4zVNyG05TZ2fzYntEJXhhjb7xAiuv8GHBZbzysjDNt9nnNz9D9qRdL7gEVounbJLemuGUm/IfhLXRP/BitDzz1NSWxZEwvNZ6XWMVAkzWb7lT5eW8L234db0yA4CVih6fiVNmu5cS3wq5iyDLAjeZtSPw7cLOkqJr0XyXkj5e6YHHcaoRPwFeAPaSW15d+SLiIEXdyXWswAeQRA0tyEbvftgNWBiyXdWZK3VylIWpzetNdhpRaQCpwvBeYAXgM+27TWA2RbQIoXGqtImi0et70oSY2krWyf35LENpGMvxiLMaRuMlY/2nZzK+YVknL2jSmSpqTJZopIealUGkg6EtiMcJE6IS73ANkWkAijJ9sCx0m6GDirII+6UjgEKKKAVCAPSNrH9kWNBUkzE7r1vwosmUxZ/0zs5IGwiSIp93ue7wM7EEaiIQTlZNdN18S/4r8ZybtTCoAY0X5E9Jg6WdK1wBy2cxyzWgb4GvBLSa8RNiLOb/hj5UgcX4NQmGv87TWKG18YfkX9I+ki218pybepSetMwKyEQvOwk/vJdDgoZr60ge1tU2sYKH0VZBqdMhkWZBoJfCUkrzVToiH1uyQtbvtxmJjUl30CYoHcTeg8+g+9X+ZZn+MqlTZsTPDbeLPfn8wE2zcAN0iak9BheYOkJwm73+fbfiupwO5gVknL07ILm/kmYCl8FjhB0jeAnQm+JkcRut+XSylsADwuaTdC1xEE/VmalTcxyvbJhE1tYGJi2J/TSWpPHK/7oO0tU2sZKLZ7JF1NKM5g+59pFfWN7WcIYUlHSlqDYAr/Y0mXAYfZfjipwA7YztI+ow/2jI8l+dA1tL5hO9nUxogvIBU2X1oiRRVkbJ8SH4tKYyvUkPrbhPbnxwkX/4sQdt8qQ8tngf0Ju0JH2H4xsZ6uQ9Ll7darn9eQ8jgh7ryYAhKApHmArYCtgfuAC4A1CLvLa6VT1jW8j7Dx11xAqgXyISB2jq8raS/gL8AzwOdyvnltYifCTfd+hM/DjeR/fXGlpE1svx5DZg4EPg98LLGuybA9QdIikmYswPajmXslrWT7T6mF9Ef87tga+Drhfv0A4HXgV/T6qGWHpLaj8rZzTLr7LbCC7SckHW87e3uHXJLjRnwBSdLhwI9bYjP3tJ113GcplFaQkXRch5ffBP5OiFkdN0ySOlKyIbXta+O43Yfi0l9K6i4ohaYuiE0IF6hXAceU4HlTEO8mFMkPp/p4TSteA+6XdCOT+m3s1vdb0iLpUoI5+XmE5NSn40u/quO6Q8ZjtostFkk6h/DZ/rntrDpN4sjXXkCjA+kLhHHMnXMfxbT9LGHMriTOIXxX/5gwmnkxsHJaSR15HPh93EB5tbGY4WRBMysDW0n6J0FzlqNKkn5N2GC4lGC0f0fTa59PpWuArNT0vDHh0wPkWEBq3nhYPZmKAhnxBSRgXds/aBzE2MwvEHYtKlOJpAM6vNxjO7cxq3s6vDY9oYX7N8A6wyOnX4o1pJY0A2F2d824dLOkU+pYx9DSMj56GaEbYlfC56UyBNj+hKT1gB8AYwibEv9LLKvbuDz+K4njbI9p90KL/1tlynkptYCp5ARgYUKnwfcTa2nlfkKy6wq2xwKnSlofuFzSJc3XzpWpx/YvJT0HXAJsYfvq1Jr64e/x33QUMmUAfC61gAFyNfA126+2vmB7gwR6Bkyji0fSfMAehM7h45OK6ptcw4ayZ1RPz8j+3Ul6EFip0fkgaRbgbtsfSausbyTNBHwJWJRJ02gOSaWpLyTt2Wb5XYSWzHlszzbMkqYaSVfbzsoQTtLdrTck7dZyQtLphC+Wc+LS1sAE299Ip6r7kHRgu/VSugJLQ9LmwO7Ar20f1d/PVwZOHOv4YDx0rsXm2O3XJ5knplYqAEj6mO3JNtWikfb+tksamc+epg74jxI6sy+CvLssASTNGm0UskfSMvR2vT+aW9dfNxH9mh4CXgA2sb1mP28ZdqJB+WOETqQl4nPItDMtJ2oHUvAjuFFSI1p1W3pvaHPlt8BYQrdM1iM/to9uPJc0O+HGalvglwTfgqyQdILtXfoaDbO9YW7Fo0iJhtQr2V626fgmSQ8kU9O9FBNzXSqSxjFp6sh0hDbuWkAaIiStRfhu/ifhd/x+SV+znWMKW2OHeH5gNeCmeLw2IR2zFpCGiLgJ2EzWF/5xV/77hNTfmRvrOY7h2b5H0rrAPgS9AA8DR9bi0TThnpbHrJG0KiEdbDZgYUnLEsatdk6rbHJikMFvgfcDDxLOE8tI+hewUe0YniYsYntjAElfSi2mDz6cWkCpjPgCku0j403rZ+LSobZ/l1LTAFjIdu4zsBORNDfwHWBLwg3ACrZzbTvfBtiF8m78SjSkniBpiWjUiaTF6Y3nrgwdNeZ6GmO7lPb9kjka+GzDe0XSBwmJkzkazG4LIOl6YKmG95Gk9wJnJ5TWjTxIGC0/ID7PnQsIJrjrEYyevwY8l1RRH0janjBm/j1CmifAisCPJC1k+9Rk4vohGhAfRPA16QFuBw6x/UJKXZ2wnfvmdSs/I4yEXQ5g+wFJ2XWZRA4lfIY/ZfsdAEnTAT8CDiOM9VeGAEkrxKczNyVkZrmh3c6QWtL6ddO1f0Z8AUnSQbYPAq5NrWUQ3CFpGdsPpRbSH5J+QvDnORVYxvYriSX1x98BbN+SWshgKNSQei9gTEvRa9u0krqSGnNd6QZmaDbutf3X6KOWMws1GWdD8KVbOJWYbsT2VjHq/IfAOOAA2/9ILKsT89g+Q9Lu8TrjFkm5JkJ9G1ijJbnzptiVdDvhui5XfgncSrB7gLCB+St6N4uzo003HQC5dtMB2H5SUvNSrpuAnwE+2igeAdh+R9IPCGNWWSLpN4Qur2uatWdOY7rkGaBhqD42kZYpoW66DoARX0ACNiTsUpTEGsD/SfoHYYQt55btPQka9wP2bfqiaWieI5WwPpivxXR4EnJNlyjRkNr2jbHopd6l7IteJVJjrivdwN3RN60RFLAlvV0RuXKjpN8ROqUANgNuSKin64gdzk8B2xG6TS6WdKftXdIq65PGd/LT0Xj/KWDuhHo6MaqleASA7RdaigY58t6WkJYfStosmZqBUVo33ZOSVgN64jXo7sCjiTX1xXjbb7cu2n5bUs7XnScSNlaPk3QxcFbuCYgEA/in+/+xbBnV/49UagEJ5m9XMMi1UBBZN7WAgWJ7utQaBslowjx3aSeQkwiG1CfG463jWnaG1B0MZpeUVA1mh56iY64rlcg3gW8BDUPZ2+g932VJ9NP7Ir2F/VNtX5pSUxdyD5P6j0GIm8+VH0Y/lj0JyURzEDp9cuR/kpa1PYk3YfS6GZdI00C5TtJXiUbUwKZA1vYUBXbT7QQcS9ik+g9wHZCd/1GkeZyqmVHATAn0DAjbNwA3xHPG5vH5k8BpwPmZbhJfBazQ70/ly46pBZRALSAVWDCw/UT8Av9EXLqt9Qu+MsU8nWOa3QAoyZC6UwRpD9VgdqjJ1W+sa5DUdizJ9r+GW0u3YvtNSScBVxWwA9vMvcA42zdImlXS7LZzv/kuBtuLpdYwGJq8NcYSTNVzZk/g8hgy0zB2XpHg27RVMlUDY3tChPh59AYbvCppR/Lsfi+xm062t5xkQVod+H0iPZ14mt5xqlaeGU4hgyX6eW1F2Bi+j+Cjtgbh73CtdMrKR9KnbN/UurEtaSGoiamdqAUkeKa0goGk3Qlfjo0P9vmSTrV9fEJZ3UIxhcQWijGkbhjMVoaH5u6jGL882varCSV1I1cRip+jWh5zHCsuEkkbAj8BZgQWk7QcwRR3w7TK+iaaEO9AGFFagrBTfzLw6ZS6uoEOnaxAvhf+MU1wfeAswg3tPMA+tq9Pqasdtm+X9HFC59//xeVHgFVsZ33TXWiwQWnddMczeadJu7Xk2M69WNsWSZcSbB7OAzZoGg37laRcR7g/Kqk51S5XyxKATxJSUtttbNcN7Q7UAhJk96U9AL4OrNy4CZR0JPAHwom7MnWUemFfnCG1pAWAw4EFba8raSlgVdtnJJbWlUjaFvgx8JakY2yXljSYLbaXAZA0imDWOQOhnb8ydBwIfBy4GcD2/ZJy7z75FkHzXQC2/yZp/rSSuobTCLHc7TZ9cr7wPxE4ExhDGEkZB5xOhsVmSQvHLsoDUmsZLE1JUJOQc3hEKd10klYFVmNyz9A5CFMdlaHjONtj2r1ge8XhFjNAHrK9fGoRA8H2gfEx6/ulHBnxBSTb35O0BvAB22dJmg+YLfO541FM2l0ygXI7Z7KinWFkCRRqSH02YRd233j8V0JKSi0gTRt2IaT0vQLcAdQC0tDzU2BZwnjKVsAWaeV0FW/ZHtti3tvT1w9nwpu2xzc0S5qe/DWXwr9sb5daxBQw3vZRkra1fSOApMnMfTPhMmI3iaRLbH+pn5/PibuBvxG8eRrXx1mHR0japt267XOHW0s/zEiw/pgeaO70+h/Ba6oylTR3WLbrtsy1w7JUJB0O/Nj2y/H43cCetvdLqyxfRnwBSdKBhJluEW5mZyCkvKyeUlc/nAXcFVsbRwEbUW+6RySFG1LPa/siSfvAxDSMLMfuuoRRtl8AkFRH2KYNawErxHjgO1OL6TIelrQFMDoWy3cjFEJz5pYYEz2LpHUIBrNXJNbULZRaiJs3dm3MGR9HAfMl1tQXzRuTiydTMWV8FtifMBZ2RCGbgyvFx6/Qa/7dA2RVQLJ9C+HcdrbtJ1Lr6VIaI1XzE7q9borHaxO+93K+ti+p0NxgXds/aBzYfknSFwgJ4pU2jPgCEvBFYHmC0SW2n5KU9ey07WMk3UwwUesBtrV9X1pVlUSUbEj9ajQH7AGQtAqhc6MyhEi6gvA7XlzS5YSbgqXSqupa3rH9Tnw+PqmS7mNXQrfim8CFhESlQzu+Iz17E0bOHyIku1xNGFeqTD3LShoLvA28DjwL/AW4zPZFHd+ZltMIXRuNR8j3M9HTx/PsaUqv2gS4UtJVwDG2X08srU9s7wogaY3G88yZSdKpwKI03U/mnvoau0s+AMzcWLN9azpFk9MYqZJ0PbBUw/tI0nsJ3fs5s19LpzAAmXeMjpY0U2NyQ9IsZJzOlwO1gBTaiXskNW5i35Va0ACZQPhC7wHe6ednK11K4XO73wEuB5aQ9HvCLmxtfx56GqNqRydV0cVIGkc4F88azSNH0XRxWpl6bL9GKCDt29/P5kIsJp4W/1WGENujYeJY4OyEnfqlgL0lLW77Ryn1deCepiS23Fm26Xw2S5Mxbs6muAC0ePNcRhgp3hV4TxpFg6KUYt3FhFCA08k0tKUVSd8AdgcWAu4HViF4yOZa9FqoyTgb4L9A29TXjFiL4Ms6CjgS+F5SNQPjAuDGmDgJwUP2nIR6sqcWkOAiSacAc8XElO3IdzcImCSF7RLCH2hNYRvhFGpI/RIhAUGEz7GB5ZIq6k4eSi2g2yk08acImjro2pJ5Ctv6hC6pRQjXW9nfeJeG7bcJ3yUvAY6bEaekVdWRQ4AiCkiNIl2htJ6TL0miYhBIOp5wrltI0nGNddu7pVPVkbdtn5RaxCDZnTAqeKfttSV9iHDtnCs3SvodoesWYDPghoR6BsLLti8BkHQ08KjtRxJr6ojtIyU9QAhB6QEOtf27xLKyZsQXkKKZ4ToE8zcBB+QYp9pCTWGrtHI25RlS/xrY0PbDAJLWBH4OLJNUVffxNJMaiUIcaUsjp/uQ9EXgJttj4/FcwFq2L0urrCtodNBtQugeOD8eb07Yjc2ZnxF0P2S7lK6CorH9LMGaIFdmlbQ8LcEnOaeDlYjtg1NrmAIasez3JFUxcK6QtDNwKWG0GMg+jOYN229IIo4s/UXt5q0ywfYu8fpizbh0qu1LU2oaAG/FDsDZgX8DP49+WVl39Ni+VtKfCL/r51PryZ0RX0ACiAWjiUWjuGs4dzw8L8MLv5rCVmmlREPqnYDLJG1ASHo5AvhCWkldySOlRKoWzIHNF3W2X44BDbWANJVEw1YkHd0SW3yFpLv7eFsuPAn8OcNriEo63kcYJ24t6Oc6QlMU0eevT3LuWLR9TvReWdi2U+sZAF+Lj3s1reW+OfXvuMFzGXC9pJeA3I3A7wXG2b5B0qySZrc9LrWoDmxOCIyYQLCleBE4hgxHwiRdCext+8/RX+peQiF3iTjZ87O0CvNlxBaQJB3Q4eWd6G2BHkV+88jNKWwAGwNnJtRTSU9xhtS2/yRpN+A64A3gM7afSyyrG5lT0kaEHcKnCAWlXGOjS2W6Nmsj9vt1GvGu6G3zOICkxYDcPQu/B1wt6RYm3aE/Jp2kSmIey91kuHBWJRRuLwTuoqDN1biZdhQwI7CYpOWAQ3ItetleLLWGwWK70Z14kKQxwJzAtQkldSRaq+xAaGpYglCAPhn4dEpdnYjf0d9tWf5WCi0DYDHbf47PtwWut71NDNP6PaGLuNKGkXyBuwPw0z5em5Bz+2tLChvUFLZKQYbUbTxNZiUUu86QlPUOYaHcQohVnQVYEFhE0va2r0krq6u4W9IxhBFMCBdLpYwhlMK3gZslPU64KVyE8D2eM4cBrxAM1WdMrKWSBy+lFtDlvAdYh9AFsQVwFXBhY1Q+cw4CPg7cDGD7fknZdfPEZLs+sZ1d+q+kuVuWeoBbC+gO/RbhM3EXgO2/SZo/raT2NPt2tSNTL6+3mp5/mhh4YXucpBpQ1YGRXEB6znbbVCJJWw23mMEg6TzbWxNa7VrXKiOTkgypj+r/RypDRWtSn6QlCe3btYA0dOwK7E/wHYMwEp3rjluRRH+CDwAfikt/aUTuZsyCtpdOLWIkIelwwobE6bZfSK2nldp9NG2xPYHQUXKtpJkIhaSbJR1s+4S06vrlLdtjWyx5cryJ3aDDaz1AdgUkwoZOD5N2pM0WjZO/YfufSVT1z5u2xzc+EzF1Mtei10ZAp+meHHlS0q4Er6YViN1ocZR0hpTCcmckF5BmkLQQMJ4wW/p602u5/nE2+EjzgaTRwMcSaankQTGG1E2eJosBT9t+Ix7PAiyQUls3Imme5hsp24/F4IDKEBEDDfaObc89tl9JranbkDQDsCO9ZqI3SzrF9lsd3paaqyV91vZ1qYWMIP5IGPX4KbBNYi2TIenBlqVGMt9HU+jpRmLhaD1C8WhR4DiC0XPuPCxpC2B0LJbvBtyRWNNktG5KlUBf43axm+pk4PPDq2jA3CLpB8As8bptZ+CKxJr64sXcjbLb8HVCMuZngM1svxzXVyHYxVT6YCQXkACuJrSVzy5pNkJy1R+AuZKq6oNokNw4kfwvLo8iFMFOTSaskgMlGlJfDKzWdDwhrq2URk7Xcqek+wlfhtfY7rH9dGpR3YSkZYBzieELkp4HvtY0W1+Zek4i7AieGI+3jmvfSKaof74JfFfSeHpb5Xtsz5FQU1dTQPLhg4RNwAPi88oQIulcYGnC9f3BhZ2DdyUk6b4B/ILgD3loUkVdju3fSNovtY4O7E0ocjxE2EC5Gjg9qaK+yb35YjJiaudObdbHAGOGX1E5jOrpKe7/72mCpOkIyQGbEU7Y/xdfyiqFLeo83fZ2qbVU8kLSqgTz9zeA9XI3pJZ0v+3lWtYesL1sKk3diKRRhN2V7QjFuYuAs23/NamwLkLSHcC+8aIDSWsBh9tereMbKwOm3bmhni8qkmYm3GB9hOA1BUDO10iSlgZ+CIwDDrD9j8SSuoboW/JqPGy+dm90emVZvJW0AHACIY3vTcJm2vcbHdqVaUNsHri99Vq0Mngk3Wt7hdQ6KsPDSO9Amojtd4DHgMMkvQAsRu+8bDYFJNvvSKodGhWgeEPq5yRtaPtygJgU9nxiTV2TkFs1AAAdjklEQVRHLIBfT4isXRs4H/hW7Era2/YfkgrsDt7VKB4B2L5ZUu4JYaUxQdIStv8OEM1lJyTW1C+SNqRp7M72lSn1dCHnAX8BPkcYRdgSeDSpog5EM9+nCAX91YGLJd1pe5e0yroD2+0SMUvgAoJ59jcIgRc/Imxm75VQU9cg6Tttlt8NbEgo3GWJpPUJn4NFCPfsORdCl22ajmkmZ82VKaQWkNpg++TUGvrhXkkr2f5TaiGV5JRsSL0TcIGkEwhfME+SoWdF6UiaB9iKMPLzX0Kb/OUEk/WLCcXyytTxuKT9CTezEH7fjyfU043sBYxpSWHL2otD0o8IXX8XxKXdJa1ue5+EsrqNJW1/WdJGts+R9AvgttSiOtAw84VeQ9/cx80r0xBJ7wXmtv3DuDRW0k7AIxRQQJI0L7AHwRLkeNtPJpbUjtlbjnuAZ4CtbD+UQM9A+RmwCfBQTtMw7bA9OrWGKaXVK7TSP7WAVCYrA1tKeoLQqltNGEcoJRtSx06CVWILMdV4eJrxB0JhY2Pb/25av1tS7sXyUtgOOJje9Jnb4lpliLB9YzSWVe9S9ilsXwCWix3OSDoHuA+oBaSho+Et9XIcDXsGyDLmGvo2862MaG4H5m5jsL6gpIdsZxeG0sLpBI+epwjF8jU7//jwY/vg1BqmkCeBP+dePOoCJvMKTS0od2oBqUw+l1pAJTuKMaSWtJXt81tbihsxpbaPSSKse1FfX4a2jxxuMd2I7ZeA3STNCbxje1xqTd1CTMlpx5JxTDfHyOhm5gJejM/nTCmkSzlV0ruB/QmdlbORYZR0h88xQAmf48q0YwfCBsSWTWujgN8DGyRRNDgWtr0xgKQvpRYzWCTtYDvXIKLvEdI8byF4YwH1Onka8EF6vUKPk1S9QvuhFpAKxPYTAJLmp8k0sjKimd72+MaB7fGSZkwpqAMNb5jWluLKECLp8qbnk72euT9WUURfujOJn2lJY4HtbN+TVFh30OkGqoferq8cOQK4T9IYwg3hmoRUncoQYbuRSHQLIQglV04Dfkvv2FozuX+OK9OWmwhJyrPafhRA0sbAg7b/mVJYJyQ1DJNnkbQ84bNdovdfu7/JXDgMeIVwr5frNX3x9OEVurOkB6heoW2pBaQCiaacRwMLAs8SvCAeJaSQVEYmxRhS2z4lPpbaUlwKqxLany8E7iLvi6TSOQPY2fZtAJLWILRC17HiqcR21j5HnbB9oaSb6e0E/b7tZxJK6jokte02sn3IcGvph3/lnAxXSYftHkm7ADdKupNgov0h8vfGOjo+PgM0OmLGJtIyxTSuSTNlQdtLpxbR7VSv0MFTC0hlciiwCnCD7eVjtXSrxJoqaSnGkLqvC/5Ij+1Dh01Md/MeYB1gc2AL4CrgQtsPJ1XVnUxoFI8AbN8u6e2UgrqNGHN9OOGCel1JSwGr2j4jsbTJkPQ5YHbbv7b9NOFCFEmbShpr+/q0CruKRmT7HgTD2VypnhqVPrF9jaRlCdf2bwJ35O4LaXvt1BoGi6S5CNfGi9J0D2x7t1Sa+uFqSZ+1fV1qIV1O9QodJKN6eup3WmlIutv2irG1bnnb70h6wPayqbVV0lKCIbWkPdssvwv4OjCP7dmGWVLXI2kmQiHpJ8DBtrONrS0RST8j7BpfSLhR3Ax4g9AGje1706nrDiRdQ+jq2tf2spKmB+7L0WBW0u8JF6LPtazPC1xhe9U0yroXSffZXj61jr6QNIEwivI28Dqhe/wvwGW2L0qprVKZEiQd124942IMku4A7iSYfr/TWLd9TjJRHZA0jnB9PJ7ewIAe23OkU9V9SBpVjbMHR+1AKpOXY6HgVkLXybP07sJVRhAlGlLbbrQ9I2l2YHdCHPcv6W2JrgwBsXC0HqF4tChwHHBpSk1dSqN4f2DL+vKEgtKnhldOVzKv7Ysk7QNg++14U54jM7UWjwBsPy+pRI+QEsj64r8RcR0Ln7MTkuKWAvaWtLjtH6XUV6lMARuRoWF9P8xs+zv9/1ge2K5eocPDByR9l8k70+q1Wx/UAlKZbETYwfo2IbVhTiC3ef/K8FCkIbWkuYHvED6/5wArxCSryhAh6VxgaeBqQtfRnxNL6lpKbOUvkFejT0EPgKRVyNdvYw5J09ueZIxR0gyETrXKECHpCsJnYvHm4IBcQwLiZ+Kl+M+xWy1nD5ZKpS9eyLVzpwPnSdoeuJJJU81e7PstaYm+t2vGw5ttX5lST5dyMXAycDohxbrSD3WErSAkLQksYPv3LetrAE/b/nsaZZXKwJH0E2ATQurIz3MetysZSe/Q25nYfKIfRW2BHlIKMvItlpj4czyhKPpnYD5gU9sPJhXWBkk/AhYAdrH9alybDTgWeN7291Pq6yYkfbLduu1bhltLpTKSkPQa8FfCuPZTwO8J13RvJBXWAUnfIiSbvUzvdVGP7SwTHON3yUrABXFpc+Bu2/ukU9V9SLrH9sdS6yiJ2oFUFj8D2p00xsbXOsUdV7qQQg2p9yTs/OwH7NsUMV8LG0OI7elSaxhB7AD8NLWILucl4JOACOcKExJScmQ/4IfAE5KeiGsLE9L69k+mqguphaJKJRkfBkYTuioXBL5M6ODIOdRnT2BJ21mmFLfhC8Bytt8BkHQOcB/t7wUrU84VknYmWDwU0ZmWmlpAKosFbD/Uumj7IUmLJtBTSU8776uJhtSExL6sqIWNShfyXLO3V2Wa8Gtgw0aKoKQ1gZ8D2ZloxzGlvSUdDCwZlx+z/XpCWV1JNJltdBKMio91I6JSmcbYfqLp8GHgeklHptIzQB4DXkstYpDMBTQKGXOmFNLFfC0+7tW01gNk2ZmWA7WAVBZzdXit+iqMQKohdaWSBXUWfNqzE3CZpA2AFYAjCLuz2RILRpNt+lSGlGMJJvWH2b4qtZhKZSQRLTQ+YPusmDKZe+T5q8D9ksYwaadJrslxRwD3Rb2jCF5Ie6eV1H3YXiy1htKoHkgFIelC4Cbbp7WsfwNYx/ZmaZRVUtLGkPrYakhdqQwfkl4mpGJOQq5GvqUiaVWC4fAbwHrtks4qIw9J8xFGAz8CHNDqE5kzkg4n2BCcbvuF1HoqlYEi6UBgRUC2PyhpQeBi26snltYnkr7Wbj1nM3BJ7yX4IAH80fYzKfV0IzHg4ps0mZUDp9h+K5mozKkdSGWxB3CppC2Be+LaisCMwBeTqaoko8WQeplqSF2pJGGj1AK6laaUrQazEm64z5BUi3QjnGiuDnA2sBhwoqQnba+fTtWg+COwBMFDbZvEWiqVwfBFYHngXgDbT8VO+GzJuVDUjKTPAbPb/rXtp4HL4/qmksbavj6twq7jJGAG4MR4vHVc+0YyRZlTC0gFYfu/wGqS1iYk0QBcZfumhLIqaamG1JVKYmzfImkBJt0lfDalpi7iqNQCphRJN9r+dH9rlamidVT7RYIPYBHYviy1hkplChlvu0dSD4CkbP/uJD1Eh1Fz2x8dRjkD4QBg4zbrNwNXALWANLSsZHvZpuObJD2QTE0B1AJSgdgeA4xJraOSnmpIXamkR9JXgJ8QLu5GAcdL2sv2r5MK6wIaKVuSFgOebkRES5oFWCCltr6QNDOhU2peSe+m19x5DuB9yYR1IbbXTq1hMMTPxtcJ43YzN9Ztb5dMVKUyZVwk6RRgLknbA9sBp/XznlSU0pHYYKZ2I9q2n8+5UFcwEyQtYfvvAJIWByYk1pQ1tYBUqVQqlcrUsS9hB+tZmOjJcgMhOawyNFwMrNZ0PCGurdT+x5OyI2HkfEHCuHmjgPQ/4IRUoroVSesxeUHmkHSKOnIe8Bfgc8AhBO/CR5MqqlSmANtHSVqHcF4TwX8sy86YlsS4EphD0vQx0XMi0aunhiYNPXsBYyQ9Tvi+XoQQSFTpg1pAqlQqlUpl6piuZWTtBaB2Bw4t09se3ziwPV7SjCkF9YXtY4FjJe1q+/jUeroZSScTur3WBk4HNiX4CuXKkra/LGkj2+dI+gVwW2pRlcpgiV2htzWKRpJmkbSo7X+mVTY5km63vYakcUw6ypar3cNvgNMk7WL7VQBJsxFSJ3+TVFkXYvtGSR8gFELjkt/s9J6RTi0gVSqVSqUydVwr6XfAhfF4M+DqhHq6keckbWi7YSa6EfB8Yk0dsX28pNWARWm63rJ9bjJR3cdqtj8q6UHbB0s6GrgmtagONFJ9Xpa0NPAMMH9CPZXKlFJSV+iWALazNvluYj/gh8ATkhrdUwsDZxASJytDgKSVgCdtP2P7TUnLAV8i/N4Psv1iYonZUgtIlUqlUqlMBbb3krQJsEZcOtX2pSk1dSE7ARdIOoGwa/wkmadWSTqPkLB1P71+Cj1ALSANHa/Hx9dijPgLwHsT6umPU6Mv1v6EZKXZCIa5lUppFNMVClwKrAAg6RLbX0qspyNxdG1vSQcDS8blx2y/3uFtlcFzCvAZAElrAj8CdgWWI6Rbb5pOWt7UAlKlUqlUKlOJ7d8Av5E0L+EmtjKERHPLVWIbP7ZfSSxpIKwILGW7z/SfylRzpaS5CCb29xIKdLka+WL79Pj0FmDxlFoqlamkpK7QUU3Pi/m7iwWjh1Lr6GJGN3UZbUbY/LsEuETS/Ql1ZU8tIFUqlUqlMgVIWoWwY/UicCjBIHdeYDpJ29i+NqW+bkDSVrbPl/SdlnUAbB+TRNjA+DPwHuDp1EK6FduHxqeXSLoSmNn22JSaOiGpbbdRxqbflUpffBM4P3aFAvwb2Dqhnk709PG8MrIZ3WRW/mlgh6bXao2kA/WXU6lUKpXKlHEC8ANgTuAmYF3bd0r6EMEPqRaQpp5GZHEp3hXNzAs8IumPwERDTtsbppPUXUiaGdiZMD7aA9wu6STbb6RV1ievxsc9gJ+lFFKpTCX/sF1KV+iykv5H6ESaJT6HfE20K8PDhcAtkp4njEPfBiBpSSDbjYgcGNXTUwuxlUqlUqkMFkn3214uPn/U9oebXrvP9vLp1FVSI+mT7dZt3zLcWroVSRcB44Dz49IWwFy2v5xOVf/U80OldGLk+SXAmbYfTa2nG5F0o+1P97dWmXJiJ/l7geuaEu8+CMxm+96k4jKmdiBVKpVKpTJlvNP0vNXcsu7ODAF9jfxEeppGmLKjFoqGhaVtL9V0PEbSI8nUDJx6fqiUzrLAV4EzJE0HnAn80vb/Or+t0h+xs3JWYN5out/wcJoDeF8yYV2I7TvbrP01hZaSqAWkSqVSqVSmjE5t8TOnk9VVvNpm7V3A14F5CN5TWSJpHL2FghmBGYBX67jEkHKvpFUaNwGSVgbuTqypTyRdQfhMLC7p8sZ6HWuslIbtcQTD+tNit+UvgJ9K+jVwqO3Hkgosmx0JY64LAvfQW0D6H2F0vlJJSh1hq1QqlUqlkj2SZgd2JxSPLgKOtv1sWlUDQ9IoYCNgFdt7p9bTLUh6FBDwr7i0MGDgbUKH2kdTaWtHHWusdAuSRgPrAdsCixJCJC4APgEcbvuD6dR1B5J2tX18ah2VSiu1gFSpVCqVSiVbJM0NfAfYEjgHONb2S2lVTRnV+2ZokbRIp9dtPzFcWiqVkUT0QBoDnGH7jpbXjrO9Wxpl3YWk1QgFuolTQ7bPTSaoUqGOsFUqlUqlUskUST8BNgFOBZbJPOlnEiRt0nQ4HbAikGs6WKm8bfs/zQuSdrJ9cipBnWgZa2yMpdQUqEqJfLSv83EtHg0Nks4DlgDuBybE5R6gFpAqSakFpEqlUqlUKrmyJ/AmsB+wr6TGegnxyxs0PX8b+CdhjK0ydFwl6au2/6Lw4TgVyDkR6ljgU8Bhtq9KLaZSmQrml3QhsCohUOIPwLdtP55WVlexIrCU7TouVMmKOsJWqVQqlUqlUikOSR8mmPfeDKwN7Gb71qSi+kHSfMD+wEeAA2z/PrGkSmXQSLoT+DlwYVz6KrCr7ZXTqeouJF1MOKc9nVpLpdJMLSBVKpVKpVKpDDGSFgKOB1aPS7cBu9v+dzpV3YekBYFrCMa9v0qtpxOSVmg6XAw4AHjS9vqJJFUqU4SkB1tN6iU9YHvZVJq6DUljgOWAPxI6cYGa2lhJTx1hq1QqlUqlUhl6ziJ0x3w5Hm8V19ZJpqjLkPQQwRNkduB8SfsC5Ja+1sTRLccvAu9KIaRSmUqukbQ38EvC3+BmwNUx9ADbL6YU1yUclFpApdKO2oFUqVQqlUqlMsRIut/2cv2tVaacvlLYavpapTJtkfSPDi/32F582MRUKpVhpXYgVSqVSqVSqQw9L0jail6PkM2BFxLq6RoknQycbvvu1FoGi6T1CP5HMzfWbB+STlGlMnhsL5ZaQ7fTkto4IzAD8Grm4RGVEUAtIFUqlUqlUqkMPdsRPJB+SrgJuAPYNqmi7uEx4FxJbwNnAOeVMDITC1+zEgy/Twc2JfibVCrFIWlpYCkmLYbWiPkhwvbsjeeSRhFSPFdJp6hSCdQRtkqlUqlUKpVKcUhanVCU2wi4ETjT9nVpVfVNw3i46XE24Brbn0itrVIZDJIOBNYiFJCuBtYFbre9aUpd3Y6k+2wvn1pHZWRTO5AqlUqlUqlUhhhJiwG7AovSdL1VE3SGFAOPAmsCSwOHStrW9uZpZfXJ6/HxtZge9wLw3oR6KpUpZVNgWeA+29tKWgA4P7GmrkLSJk2H0wErAm8kklOpTKQWkCqVSqVSqVSGnssI41VXAO8k1tJVRB+hrwOfAH4DbG37rjjm8a+k4jpzpaS5gJ8A9xJGG09LK6lSmSJet/2OpLclzQE8C7w/taguY4Om528D/yR0W1YqSakjbJVKpVKpVCpDjKS7bK+cWkc3IulWQnHuYtuvtbz2Qdt/TaNs4EiaCZjZ9tjUWiqVwSLpROAHwFeBPYFXgPttV5+3SqXLqQWkSqVSqVQqlSFG0hbAB4DrgDcb67bvTSaqkhRJMwM7A2sQuo9uB06yXcdSKsUiaVFgDtsPptbSTUhaiBDEsHpcug3Y3fa/06mqVMI8ZaVSqVQqlUplaFkG2B74EXB0/HdUUkWV1JwLfIRwU3gCwYD4vKSKKpVBEMdHJ8H2P4F/SDp++BV1NWcBlwMLxn9XxLVKJSnVA6lSqVQqlUpl6PkysLjt8amFVLJhadtLNR2PkfRIMjWVyuD5maQFbJ/ZWIjdlocBZ/b9tsoUMJ/t5oLR2ZL2SKamUonUAlKlUqlUKpXK0PNnYC6CuWxlCJE0m+1X+nhtCdt/H25NA+ReSavYvhNA0srA3Yk1VSqDYU3gqjhe9UvgROAt4DMZ/92VyguStgIujMebE5IbK5WkVA+kSqVSqVQqlSFG0s3AR4E/MakH0oapNHULkv4O7GP7oqa1mYH9gK/aXjKZuA5IehQQvUlxCwMmJCz12P5oKm2VykCRNDsh/fATwP/Z/mViSV2JpEUI466rEjzT7gB2s51z0mRlBFALSJVKpVKpVP6/vfsN1bsu4zj+PpuMSbnMkCD/lH/ygzOzdIWQGRpk09ETEWb+S1IUM2TIDDULKUrFfKAGMlqiJVGyGKM/ICWa80HqzNSlVzgpISeFgtqGqOv04HcfvTfOOU52335/O3u/4Ob87us+Dz6PxrmvXd/rqxFL8oXp6lV1/3udZa5JchjdDqH5dEupj6LbL7UWuHam6aTWBl8IZ1RV/3yvski7IsledEfWPgic4SJ4ac9hA0mSJEm7nSQrgR8CLwCnVNXGxpFmleSAqvrXDrWLq+q2VpmkdyPJq3TTMAATwPuA14BtdFN0i1plm2uSHAJ8E/gYQ2tnnGJVa+5AkiRJGrEkx9MdPzgSWEA3LbPFL1i7bjD9sBK4gG4C6VTg5iSXVFU1DTe73yZZXlVPJwmwCniqdShpZ1XVPq0z7EHWAqvpbl/7X+Ms0ltsIEmSJI3ercBy4G5gCXAucETTRHPHY8B9wLFV9TKwKskyYF2SNVV1VdN0MzsT+MVgP9ZJdPtM/tQ2kqSeeq2qbm4dQtqRR9gkSZJGLMkjVbUkyeNTy5GT/KWqPt062+4uyXFVtWGa+kLgmqq6ukGsnZLkI8DvgR9U1S9b55HUT0m+CnwcuIftL2J4tFkoCSeQJEmSxmFrkgXAY0luADYD8xpnmhOqakOSpcCVwOJBeSNwfc+bR0/Q7Y/ZB/h5kqsBvH1N0jSOBs4BTubtI2yTg/dSMzaQJEmSRu8cuobRpcAK4CDg9KaJ5ogkFwIXAVcAjwzKS4DrkhxYVauahZvdstYBJO02zgAOrarXWweRhtlAkiRJGqEk8+mOKJ1Fd0PRtY0jzTUrgBOq6qWh2r2DqaT1dMupeyPJbcBPquqRd/xlSeo8CewL/Lt1EGmYDSRJkqQRqqptST6aZIH/ezwWEzs0jwCoqhe7y8165xngziRv0t2q9LPp8kvSkH2Bp5M8zPY7kL7SLpJkA0mSJGkcngUeTLIO2DJVrKqb2kWaM15JckxV/XW4mOQY4NVGmWZUVTcCNyb5HHA+UEn+CPy0qu5pm05ST323dQBpOjaQJEmSRm/T4DWPbmmyRudyYF2S24Gp29iWAOcBZzdL9c4KeAo4EfgE8L0k51fVmW1jSeqbqrq/dQZpOhOTk5OtM0iSJEk7LcmHgW8ARw1KfwN+XFUvtEs1vSSnAV8HPg/8mm7y6M9JJoDnquqgpgEl9U6S44FbgCOBBcB8YEtVLWoaTHs8J5AkSZJGLMn+dLeEHQUsnKpXlVcw76IkB1fVc8B3WmfZSd+i2310dlVtnSpW1WSSL7aLJanHbgWWA3fTTVieCxzRNJFEN1YtSZKk0boLeBo4hO4Wtn8AD7cMNIesnXpIsqZlkJ1RVSdW1R3DzaOhz/7eIpOk/quqZ4D5VbWtqm4Hvtw6k+QEkiRJ0uh9qKpWJ7lssMvi/sFtOtp1E0PPhzZLIUnjszXJAuCxJDcAm3H4Qz1gA0mSJGn03hj83DzYgfM8sF/DPHPJ5AzPkjRXnEPXMLoUWAEcBJzeNJGES7QlSZJGLsky4AG6P/pvARYB11bVuqbB5oAk24AtdJNIewNTR8MmgMm+LZlN8v6q+u8Mnx1WVZve60yS+ivJfODOqjqrdRZpRzaQJEmSRiTJQuBi4HDgCWB1Vb3ZNpVaSrIJuLKqfjVUWwh8G1heVYc3Cyepl5KsB06uqtdbZ5GGeYRNkiRpdO6gO772ALAUWAxc1jSRWvsScGuSC4BL6G7mu5FuGfinWgaT1FvPAg8mWUc3cQlAVd3ULpJkA0mSJGmUFlfV0QBJVgMPNc6jxgZH1JYmWUl3M98LwClVtbFtMkk9tmnwmgfs0ziL9BaPsEmSJI1Ikker6tiZ3mvPk2QvYCVwAXA9cCrdF8JLqqpaZpMk6d2wgSRJkjQiQwueYfslz71c8KzxS/IkcB9wdVW9PKgtA34ErKmqqxrGk9RDSfYHrqA78rpwql5VJzcLJeERNkmSpJGpqvmtM6h3zquqDcOFqvpNkj8A1zTKJKnf7gJ+CSyju5jhPOA/TRNJOIEkSZIkjVWSpcCVdEvVATYC11fV79qlktRXSTZU1XFJHq+qTw5qD1fVZ1pn057NCSRJkiRpTJJcCFxEdxzlkUF5CXBdkgOralWzcJL66o3Bz81JTgOeB/ZrmEcCbCBJkiRJ47QCOKGqXhqq3TuYSloP2ECStKPvJ/kAcDlwC7CI7t8SqSkbSJIkSdL4TOzQPAKgql5M0iKPpJ5KspBu59HhwAHA6qo6qW0q6W3zWgeQJEmS5rBXkhyzY3FQe7VBHkn9dQfdEdcngKV0tzVKveEEkiRJkjQ+lwPrktwOTN3GtoTuVqWzm6WS1EeLq+pogCSrgYca55G24wSSJEmSNCZVtR74LN3f3V8bvOYBxw8+k6QpU8uzqao3WwaRpjMxOTnZOoMkSZI0JyU5uKqea51DUv8l2QZsGbydAPYGtg6eJ6tqUatsEniETZIkSRqntcCxAEnWVNXpjfNI6qmqmt86gzQbj7BJkiRJ4zMx9HxosxSSJO0iG0iSJEnS+EzO8CxJ0m7FHUiSJEnSmAztNBneZwLuNJEk7WZsIEmSJEmSJGlWHmGTJEmSJEnSrGwgSZIkSZIkaVY2kCRJkiRJkjQrG0iSJEmSJEmalQ0kSZIkSZIkzcoGkiRJkiRJkmb1f0IJlqJlg0AkAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "lP5RIGfRd-wo",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"outputId": "1c36f4b3-ae9c-46ea-8623-2e9ba214eca9"
},
"source": [
"tv_show_id_df = df_info[['tv_show_id', 'tv_show_title']].drop_duplicates()\n",
"tv_show_id_df[tv_show_id_df.duplicated(['tv_show_id'], keep = False)].sort_values(['tv_show_id']).head()"
],
"execution_count": 27,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" tv_show_id | \n",
" tv_show_title | \n",
"
\n",
" \n",
" \n",
" \n",
" | 7321 | \n",
" 30066 | \n",
" 'Наша Russia'. Дайджест, 1 эп. | \n",
"
\n",
" \n",
" | 7336 | \n",
" 30066 | \n",
" 'Наша Russia'. Дайджест, 16 эп. | \n",
"
\n",
" \n",
" | 7335 | \n",
" 30066 | \n",
" 'Наша Russia'. Дайджест, 15 эп. | \n",
"
\n",
" \n",
" | 7334 | \n",
" 30066 | \n",
" 'Наша Russia'. Дайджест, 14 эп. | \n",
"
\n",
" \n",
" | 7333 | \n",
" 30066 | \n",
" 'Наша Russia'. Дайджест, 13 эп. | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tv_show_id tv_show_title\n",
"7321 30066 'Наша Russia'. Дайджест, 1 эп.\n",
"7336 30066 'Наша Russia'. Дайджест, 16 эп.\n",
"7335 30066 'Наша Russia'. Дайджест, 15 эп.\n",
"7334 30066 'Наша Russia'. Дайджест, 14 эп.\n",
"7333 30066 'Наша Russia'. Дайджест, 13 эп."
]
},
"metadata": {
"tags": []
},
"execution_count": 27
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9cbqHlQmh4YU"
},
"source": [
"## Preprocessing"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FDcv7D7HiKb1"
},
"source": [
"**Algorithm for collecting data on TV program views**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "9L3cdFQyh5so"
},
"source": [
"show_lines = []\n",
"for i, row in tqdm(df.iterrows(), total = df.shape[0]):\n",
" \n",
" user_id = row['user_id']\n",
" vsetv_id = row['vsetv_id']\n",
" start_time = row['start_time']\n",
" stop_time = row['stop_time']\n",
" \n",
" # For each user session, we will find those programs that went on the channel that he watched\n",
" shows_remember_df = df_info[(df_info.channel_id == vsetv_id) \n",
" & (df_info.start_time < stop_time) \n",
" & (df_info.stop_time > start_time)][['tv_show_id', 'start_time', 'stop_time']].copy()\n",
" \n",
" # Remember which programs the user has watched\n",
" for j, row_j in shows_remember_df.iterrows():\n",
" show_lines.append([user_id, vsetv_id, start_time, stop_time, row_j['tv_show_id'], row_j['start_time'], row_j['stop_time']])\n",
" \n",
"show_lines_df = pd.DataFrame(show_lines,columns = ['user_id', 'vsetv_id', 'start_time', 'stop_time', 'tv_show_id', 'show_start_time', 'show_stop_time'])\n",
"show_lines_df.to_csv('dataset_with_shows.csv', index = False)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "TjcLCiA_o8b5"
},
"source": [
"## Feature engineering"
]
},
{
"cell_type": "code",
"metadata": {
"id": "vAAXgzGdo-wH"
},
"source": [
"def prepare_features(train, train_info, train_info_future, train_base):\n",
" \n",
" '''\n",
" Function to enrich data by adding features\n",
" '''\n",
"\n",
" final_shape = train.shape[0]\n",
" \n",
" # collect prediction rank\n",
" for user, group in train.sort_values(['user_id', 'user_show_freq'], ascending = False).groupby(['user_id']):\n",
" train.loc[group.index, 'user_show_rank'] = np.arange(0, group.shape[0])\n",
" train.loc[train[train.user_show_freq == 0].index, 'user_show_rank'] = 50\n",
"\n",
" # collect prediction rank\n",
" for user, group in train.sort_values(['user_id', 'lightfm_score'], ascending = False).groupby(['user_id']):\n",
" train.loc[group.index, 'user_lfm_rank'] = np.arange(0, group.shape[0])\n",
" train.loc[train[pd.isnull(train.lightfm_score)].index, 'user_lfm_rank'] = 50\n",
"\n",
" # mean rank\n",
" train['combined_rank'] = (train['user_show_rank'] + train['user_lfm_rank']) / 2\n",
"\n",
" # tv show channel\n",
" _temp = train_info[['tv_show_id', 'channel_id']].drop_duplicates()\n",
" _temp = _temp[~_temp.duplicated(['tv_show_id'], keep = 'first')].copy()\n",
" train = train.merge(_temp, on = ['tv_show_id'], how = 'left')\n",
" assert final_shape == train.shape[0]\n",
"\n",
" # add cat ids\n",
" _temp = train_info[['tv_show_id', 'tv_show_category', 'tv_show_genre_1', 'tv_show_genre_2', 'tv_show_genre_3']].drop_duplicates()\n",
" _temp = _temp[~_temp.duplicated(['tv_show_id'], keep = 'first')].copy()\n",
" train = train.merge(_temp, on = ['tv_show_id'], how = 'left')\n",
" assert final_shape == train.shape[0]\n",
" \n",
" # number of watches with diff thresholds\n",
" for threshold in [0.3, 0.8]:\n",
" c_new = f'user_show_freq_{threshold}'\n",
" features_threshold = get_features(train_base, threshold=threshold)\n",
" features_threshold.rename(columns = {'user_show_freq':c_new}, inplace = True)\n",
" train = train.merge(features_threshold, on = ['user_id', 'tv_show_id'], how = 'left')\n",
" train[c_new].fillna(0, inplace = True)\n",
" assert final_shape == train.shape[0]\n",
" \n",
" # alternative base\n",
" total_user_show_watch_df = train_base.groupby(['tv_show_id', 'show_start_time', 'show_stop_time', 'user_id', 'show_duration'], as_index = False).user_watch_time.sum()\n",
" total_user_show_watch_df['user_watch_perc'] = total_user_show_watch_df['user_watch_time'] / total_user_show_watch_df['show_duration']\n",
" total_user_show_watch_df = total_user_show_watch_df[total_user_show_watch_df.user_watch_perc <= 1].copy()\n",
" \n",
" # number of watches with diff thresholds\n",
" for threshold in [0.3, 0.5, 0.8]:\n",
" c_new = f'alt_user_show_freq_{threshold}'\n",
" features_threshold = get_features(total_user_show_watch_df, threshold=threshold)\n",
" features_threshold.rename(columns = {'user_show_freq':c_new}, inplace = True)\n",
" train = train.merge(features_threshold, on = ['user_id', 'tv_show_id'], how = 'left')\n",
" train[c_new].fillna(0, inplace = True)\n",
" assert final_shape == train.shape[0]\n",
" \n",
"\n",
" # number of watches with more recent time splits\n",
" for weeks_prior in [1]:\n",
" c_new = f'user_show_freq_week_{weeks_prior}'\n",
" split_date = train_base.start_time.max() - datetime.timedelta(days = weeks_prior * 7)\n",
" features_split = get_features(train_base[train_base.start_time >= split_date], 200)\n",
" features_split.rename(columns = {'user_show_freq':c_new}, inplace = True)\n",
" train = train.merge(features_split, on = ['user_id', 'tv_show_id'], how = 'left')\n",
" train[c_new].fillna(0, inplace = True)\n",
" assert final_shape == train.shape[0]\n",
" \n",
" train[f'user_show_freq_dif_week_{weeks_prior}'] = (train['user_show_freq'] - train[c_new]) / train['user_show_freq']\n",
" assert final_shape == train.shape[0]\n",
" \n",
" # new ranks\n",
" for user, group in train.sort_values(['user_id', f'user_show_freq_week_{weeks_prior}'], ascending = False).groupby(['user_id']):\n",
" train.loc[group.index, f'user_show_rank_week_{weeks_prior}'] = np.arange(0, group.shape[0])\n",
" train[f'user_show_rank_mean_week_{weeks_prior}'] = train[['user_show_rank', f'user_show_rank_week_{weeks_prior}']].mean(axis = 1)\n",
" assert final_shape == train.shape[0]\n",
" \n",
" train.drop(c_new, 1, inplace = True)\n",
" \n",
" # number of watches with more recent time splits\n",
" for weeks_prior in [1]:\n",
" c_new = f'alt_user_show_freq_week_{weeks_prior}'\n",
" split_date = total_user_show_watch_df.show_start_time.max() - datetime.timedelta(days = weeks_prior * 7)\n",
" features_split = get_features(total_user_show_watch_df[total_user_show_watch_df.show_start_time >= split_date], 200)\n",
" features_split.rename(columns = {'user_show_freq':c_new}, inplace = True)\n",
" train = train.merge(features_split, on = ['user_id', 'tv_show_id'], how = 'left')\n",
" train[c_new].fillna(0, inplace = True)\n",
"\n",
" train[f'alt_user_show_freq_dif_week_{weeks_prior}'] = (train['user_show_freq'] - train[c_new]) / train['user_show_freq']\n",
"\n",
" # new ranks\n",
" for user, group in train.sort_values(['user_id', c_new], ascending = False).groupby(['user_id']):\n",
" train.loc[group.index, f'user_show_rank_week_{weeks_prior}'] = np.arange(0, group.shape[0])\n",
" train[f'alt_user_show_rank_mean_week_{weeks_prior}'] = train[['user_show_rank', f'user_show_rank_week_{weeks_prior}']].mean(axis = 1)\n",
"\n",
" train.drop(c_new, 1, inplace = True)\n",
"\n",
" # Насколько часто пользователь смотрит канал\n",
" _temp = train.groupby(['user_id', 'channel_id']).size().reset_index().rename(columns = {0:'user_channel_count'})\n",
" _temp = _temp.merge(_temp.groupby(['user_id'], as_index = False)['user_channel_count'].sum().rename(columns = {'user_channel_count':'user_count'}),\n",
" on = ['user_id'], how = 'left')\n",
" train = train.merge(_temp[['user_id', 'channel_id', 'user_channel_count']],\n",
" on = ['user_id', 'channel_id'], how = 'left')\n",
" \n",
" # user gruop watch mean time+ rel to every watch\n",
" train = train.merge(train.groupby(['user_id'], as_index = False)['user_show_freq'].mean().rename(columns = {'user_show_freq':'group_user_show_freq'}),\n",
" on = ['user_id'], how = 'left')\n",
" train['user_show_freq_rel_group'] = train['user_show_freq'] / train['group_user_show_freq']\n",
" assert final_shape == train.shape[0]\n",
"\n",
" # show total duration in the future and relative to previous\n",
" _temp_1 = train_info.groupby(['tv_show_id'], as_index = False)['duration'].sum().rename(columns = {'duration':'tot_show_duration'})\n",
" num_days = (train_info.start_time.max() - train_info.start_time.min()).days\n",
" _temp_1['tot_show_duration'] /= num_days\n",
" _temp_2 = train_info_future.groupby(['tv_show_id'], as_index = False)['duration'].sum().rename(columns = {'duration':'tot_show_duration_future'})\n",
" num_days = (train_info_future.start_time.max() - train_info_future.start_time.min()).days\n",
" _temp_2['tot_show_duration_future'] /= num_days\n",
" train = train.merge(_temp_1, on = ['tv_show_id'], how = 'left')\n",
" train = train.merge(_temp_2, on = ['tv_show_id'], how = 'left')\n",
" train['tot_show_duration'].fillna(0, inplace = True)\n",
" train['tot_show_duration_future'].fillna(0, inplace = True)\n",
" train['popularity_drop'] = train['tot_show_duration_future'] / train['tot_show_duration']\n",
" assert final_shape == train.shape[0]\n",
" \n",
" return train"
],
"execution_count": 18,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "5nP59BKLpGmN"
},
"source": [
"## Evaluation metrics"
]
},
{
"cell_type": "code",
"metadata": {
"id": "PrBLS3FAoomS"
},
"source": [
"def apk(actual, predicted, k=5):\n",
" \n",
" '''\n",
" Function to get Average Precision at K\n",
" '''\n",
" \n",
" if len(predicted)>k:\n",
" predicted = predicted[:k]\n",
"\n",
" score = 0.0\n",
" num_hits = 0.0\n",
"\n",
" for i,p in enumerate(predicted):\n",
" if p in actual and p not in predicted[:i]:\n",
" num_hits += 1.0\n",
" score += num_hits / (i+1.0)\n",
"\n",
" if not actual:\n",
" return 0.0\n",
"\n",
" return score / min(len(actual), k)\n",
"\n",
"def mapk(actual, predicted, k=5):\n",
" \n",
" '''\n",
" Function to get Mean Average Precision at K\n",
" '''\n",
" \n",
" return np.mean([apk(a,p,k) for a,p in zip(actual, predicted)])"
],
"execution_count": 19,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "g2TGp97Jj3So"
},
"source": [
"## Utils"
]
},
{
"cell_type": "code",
"metadata": {
"id": "jiad0vvKj9x1"
},
"source": [
"user_col = 'cont_user_id'\n",
"movie_col = 'cont_tv_show_id'"
],
"execution_count": 21,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "2IN9Na-zpT6F"
},
"source": [
"def get_features(df, get_n = 5, threshold = 0.5):\n",
" \n",
" '''\n",
" Function to get target-like features by threshold\n",
" '''\n",
" \n",
" # filter by 80% watch time\n",
" df = df[df['user_watch_perc'] > threshold].copy()\n",
" \n",
" # calc how many times user viewed the show\n",
" df_views = df[['user_id', 'tv_show_id']].groupby(['user_id', 'tv_show_id']).size().reset_index()\\\n",
" .rename(columns = {0:'user_show_freq'})\n",
" \n",
" # get only top-5 for each user\n",
" df_top_views = df_views.sort_values(['user_id', 'user_show_freq'], ascending=False).groupby(['user_id']).head(get_n)\n",
" \n",
" return df_top_views"
],
"execution_count": 22,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "YF44scFhpVnH"
},
"source": [
"def get_target(df, get_n = 5):\n",
" \n",
" '''\n",
" Function to get target\n",
" '''\n",
" \n",
" # filter by 80% watch time\n",
" df = df[df['user_watch_perc'] >= 0.8].copy()\n",
" \n",
" # calc how many times user viewed the show\n",
" df_views = df[['user_id', 'tv_show_id']].groupby(['user_id', 'tv_show_id']).size().reset_index()\\\n",
" .rename(columns = {0:'user_show_freq'})\n",
" \n",
" # get only top-5 for each user\n",
" df_top_views = df_views.sort_values(['user_id', 'user_show_freq'], ascending=False).groupby(['user_id']).head(get_n)\n",
" \n",
" return df_top_views"
],
"execution_count": 23,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "cG6fMvEmj4Ha"
},
"source": [
"def df_to_sparse_interaction_matrix(x, has_seen = True):\n",
" '''\n",
" Pandas dataframe to LightFM format\n",
" '''\n",
"\n",
" interaction_x = x[[user_col, movie_col]].drop_duplicates().assign(seen=1).\\\n",
" pivot_table(index = user_col, columns = movie_col).fillna(0)\n",
" \n",
" return scipy.sparse.csr_matrix(interaction_x)"
],
"execution_count": 24,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "oqCl_X1ukQed"
},
"source": [
"## Baseline model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8i_0k8JOrjwp"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "PQRnphIbsmnD"
},
"source": [
"**export_arh_31-42-final.csv** - supplemental information about test data (TV program schedule)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZhrCoNRSkR66"
},
"source": [
"df_info_future = pd.read_csv('export_arh_31-42-final.csv', low_memory=False)"
],
"execution_count": 26,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "w-_hxZ1OkZF0"
},
"source": [
"df_show = pd.read_csv('dataset_with_shows.csv')\n",
"for c in ['start_time', 'show_start_time', 'stop_time','show_stop_time']:\n",
" df_show[c] = pd.to_datetime(df_show[c])\n",
"df_show['start_show_user_time'] = df_show[['show_start_time','start_time']].max(axis=1)\n",
"df_show['stop_show_user_time'] = df_show[['stop_time','show_stop_time']].min(axis=1)\n",
"df_show['user_watch_time'] = (df_show['stop_show_user_time'] - df_show['start_show_user_time']).dt.total_seconds()\n",
"df_show['show_duration'] = (df_show['show_stop_time'] - df_show['show_start_time']).dt.total_seconds()\n",
"df_show['user_watch_perc'] = df_show['user_watch_time'] / df_show['show_duration']"
],
"execution_count": 27,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "RajFnAsGkbZN"
},
"source": [
"# split on holdout by time\n",
"train_start_date = df_show.start_time.min()# + datetime.timedelta(days = 4 * 7)\n",
"split_date = df_show.start_time.max() - datetime.timedelta(days = 9 * 7)\n",
"train = df_show[(df_show.start_time <= split_date) & (df_show.start_time >= train_start_date)].copy()\n",
"val = df_show[df_show.start_time > split_date].copy()"
],
"execution_count": 28,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "UBGAw9QOkbV0"
},
"source": [
"# collection of signs and target by views\n",
"train_top_views = get_features(train[train['tv_show_id'].isin(val['tv_show_id'].unique())])\n",
"val_top_views = get_target(val)\n",
"overall_top_movies = train_top_views.groupby(['tv_show_id'], as_index = False)['user_show_freq'].sum().sort_values(['user_show_freq'])['tv_show_id'][-5:].values\n",
"overall_top_movies = overall_top_movies[::-1]"
],
"execution_count": 29,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "WqGh9k85kbR5",
"outputId": "49a96966-4fd5-480d-fc10-3a714cdff055"
},
"source": [
"# checking the accuracy of the solution\n",
"preds = []\n",
"trues = []\n",
"for user in train_top_views.user_id.unique():\n",
" \n",
" predict_n_movies = train_top_views[train_top_views.user_id == user]['tv_show_id'].values[:5]\n",
" actual_n_movies = val_top_views[val_top_views.user_id == user]['tv_show_id'].values[:5]\n",
" \n",
" if len(predict_n_movies) < 5:\n",
" predict_n_movies = list(predict_n_movies[:len(predict_n_movies)]) + list(overall_top_movies[:5 - len(predict_n_movies)])\n",
" \n",
" \n",
" preds.append(list(predict_n_movies))\n",
" trues.append(list(actual_n_movies))\n",
" \n",
"score = np.round(mapk(trues, preds, k = 5), 5)\n",
"print(f'MAP@{5} = {score}')"
],
"execution_count": 30,
"outputs": [
{
"output_type": "stream",
"text": [
"MAP@5 = 0.32872\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "B4wvqPLQkbOQ"
},
"source": [
"# view data\n",
"df_top_views = get_features(df_show[df_show['tv_show_id'].isin(df_info_future['tv_show_id'].unique())])\n",
"overall_top_movies = df_top_views.groupby(['tv_show_id'], as_index = False)['user_show_freq'].sum().sort_values(['user_show_freq'])['tv_show_id'][-5:].values[::-1]\n",
"\n",
"# forecast for the future\n",
"submission_df = pd.read_csv('submission.csv')\n",
"for index_row, row in submission_df.iterrows():\n",
" pred_n_movies = list(df_top_views[df_top_views.user_id == row['user_id']]['tv_show_id'].values[:5])\n",
" \n",
" if len(pred_n_movies) < 5:\n",
" pred_n_movies = list(pred_n_movies[:len(pred_n_movies)]) + list(overall_top_movies[:5 - len(pred_n_movies)])\n",
" \n",
" pred = ' '.join([str(int(x)) for x in pred_n_movies])\n",
" submission_df.loc[index_row, 'tv_show_id'] = pred\n",
" \n",
"submission_df.to_csv('baseline_submission.csv', index = False)"
],
"execution_count": 31,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "cU8kVB2hkbKo"
},
"source": [
"## Final model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fthmfzcMrt6B"
},
"source": [
""
]
},
{
"cell_type": "code",
"metadata": {
"id": "K_bxpN57j0JH"
},
"source": [
"# data from the past\n",
"df_info = pd.read_csv('export_arh_11-20-final.csv').append(pd.read_csv('export_arh_21-30-final.csv'))\n",
"df_info.start_time = pd.to_datetime(df_info.start_time, format='%d.%m.%Y %H:%M:%S')\n",
"df_info['stop_time'] = df_info['start_time'] + pd.to_timedelta(df_info['duration'], unit='s')\n",
"df_info = df_info[df_info.tv_show_id != 0].copy()\n",
"\n",
"# data for the future\n",
"df_info_future = pd.read_csv('export_arh_31-42-final.csv', low_memory=False)\n",
"df_info_future.start_time = pd.to_datetime(df_info_future.start_time, format='%d.%m.%Y %H:%M:%S')\n",
"df_info_future['stop_time'] = df_info_future['start_time'] + pd.to_timedelta(df_info_future['duration'], unit='s')\n",
"df_info_future = df_info_future[df_info_future.tv_show_id != 0].copy()\n",
"\n",
"# categorical features\n",
"for c in ['tv_show_category', 'tv_show_genre_1', 'tv_show_genre_2', 'tv_show_genre_3']:\n",
" df_info[c] = LabelEncoder().fit_transform(df_info[c].fillna('Nope'))"
],
"execution_count": 34,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "zArLX4bBj0JK"
},
"source": [
"### User_id, tv_show_id encoding for LightFM"
]
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "jCJloemlj0JK"
},
"source": [
"for c in ['user_id', 'tv_show_id']:\n",
" _temp = df_show[[c]].drop_duplicates().reset_index(drop = True)\n",
" _temp[f\"cont_{c}\"] = np.arange(_temp.shape[0])\n",
"\n",
" df_show = df_show.merge(_temp, on = [c], how = 'left')\n",
" \n",
"user_col = 'cont_user_id'\n",
"movie_col = 'cont_tv_show_id'\n",
"\n",
"_temp = df_show[['tv_show_id', movie_col]].drop_duplicates()\n",
"movies_dict = dict(zip(_temp[movie_col].values, _temp['tv_show_id'].values))\n",
"\n",
"_temp = df_show[['user_id', user_col]].drop_duplicates()\n",
"users_dict = dict(zip(_temp[user_col].values, _temp['user_id'].values))"
],
"execution_count": 35,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "7yqRiJGUj0JL"
},
"source": [
"### Checking the solution accuracy on holdout sample"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "jxpRoTeXj0JM"
},
"source": [
"**Split data to train / val**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "kZ2vHhmvj0JM",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "0a53e9c1-51ed-4e1a-e28a-17d5861d7abf"
},
"source": [
"train_start_date = df_show.start_time.min()\n",
"split_date = df_show.start_time.max() - datetime.timedelta(days = 9 * 7) # 9 weeks\n",
"\n",
"train = df_show[(df_show.start_time <= split_date) & (df_show.start_time >= train_start_date)].copy()\n",
"df_info_train = df_info[(df_info.start_time <= split_date) & (df_info.start_time >= train_start_date)].copy()\n",
"\n",
"val = df_show[df_show.start_time > split_date].copy()\n",
"df_info_val = df_info[df_info.start_time > split_date].copy()\n",
"\n",
"# We remember which TV programs can be validated\n",
"possible_movies_in_val = df_info_val.tv_show_id.unique()\n",
"print(train.shape, val.shape)"
],
"execution_count": 36,
"outputs": [
{
"output_type": "stream",
"text": [
"(2537448, 14) (1310248, 14)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OuN9J4Gaj0JN"
},
"source": [
"**Train LightFm**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "qe8XCgQKj0JN",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 100
},
"outputId": "41c09d0d-df27-4f0e-d207-988b2e22771c"
},
"source": [
"# sparse for lightfm\n",
"train_sparse = df_to_sparse_interaction_matrix(train)\n",
"\n",
"# fit lightfm\n",
"model = LightFM(random_state=42, loss = 'warp')\n",
"model.fit(train_sparse, epochs=15, num_threads=4, verbose = False);\n",
"\n",
"# collect user biases\n",
"user_bias_df = pd.DataFrame(model.user_biases, columns = ['user_bias_lfm'])\n",
"user_bias_df['user_id'] = list(sorted(train[user_col].unique()))\n",
"user_bias_df['user_id'] = user_bias_df['user_id'].apply(lambda x: users_dict.get(x))\n",
"\n",
"# collect item biases\n",
"show_bias_df = pd.DataFrame(model.item_biases, columns = ['show_bias_lfm'])\n",
"show_bias_df['tv_show_id'] = list(sorted(train[movie_col].unique()))\n",
"show_bias_df['tv_show_id'] = show_bias_df['tv_show_id'].apply(lambda x: movies_dict.get(x))\n",
"\n",
"# predict the top N current programs for each user from train\n",
"train_users = sorted(train[user_col].unique())\n",
"\n",
"# we can only predict films that will definitely be in the target\n",
"train_movies = sorted(train[train['tv_show_id'].isin(possible_movies_in_val)][movie_col].unique())\n",
"\n",
"get_n = 200\n",
"lightfm_predictions_df = pd.DataFrame()\n",
"for train_user in train_users:\n",
" \n",
" all_movies_df = pd.DataFrame(train_movies, columns = [movie_col])\n",
" all_movies_df[user_col] = train_user\n",
" all_movies_df = all_movies_df.astype('int32')\n",
" all_movies_df['lightfm_score'] = model.predict(all_movies_df[user_col].values,\n",
" all_movies_df[movie_col].values)\n",
" all_movies_df.sort_values('lightfm_score', ascending = False, inplace = True)\n",
" all_movies_df['lightfm_rank'] = np.arange(all_movies_df.shape[0])\n",
" \n",
" lightfm_predictions_df = lightfm_predictions_df.append(all_movies_df.head(get_n))\n",
" \n",
"lightfm_predictions_df['user_id'] = lightfm_predictions_df[user_col].map(lambda x: users_dict.get(x))\n",
"lightfm_predictions_df['tv_show_id'] = lightfm_predictions_df[movie_col].map(lambda x: movies_dict.get(x))\n",
"lightfm_predictions_df.head(1)"
],
"execution_count": 42,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" cont_tv_show_id | \n",
" cont_user_id | \n",
" lightfm_score | \n",
" lightfm_rank | \n",
" user_id | \n",
" tv_show_id | \n",
"
\n",
" \n",
" \n",
" \n",
" | 19 | \n",
" 20 | \n",
" 0 | \n",
" -0.982242 | \n",
" 0 | \n",
" 7981779138282146703 | \n",
" 2400480 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" cont_tv_show_id cont_user_id ... user_id tv_show_id\n",
"19 20 0 ... 7981779138282146703 2400480\n",
"\n",
"[1 rows x 6 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 42
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "v04z57D3j0JR"
},
"source": [
"**Choice of N movies for user based on views and LightFm results**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "c9d2gVqyj0JR",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "a6530d8e-7614-46e1-b9d4-1f93e5ec3c81"
},
"source": [
"get_n = 200\n",
"train_base = train[train['tv_show_id'].isin(possible_movies_in_val)].copy()\n",
"val_base = val.copy()\n",
"train = get_features(train_base, get_n)\n",
"val = get_target(val_base, get_n)\n",
"overal_val = get_target(val_base, 10000)\n",
"print(train.shape, val.shape)"
],
"execution_count": 43,
"outputs": [
{
"output_type": "stream",
"text": [
"(165997, 3) (120146, 3)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RSs1DNrKj0JS"
},
"source": [
"**Add LightFm as additional lines**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "GkhMyHmEj0JT"
},
"source": [
"# if incomplete recommendations (user watched = 0.8].groupby(['tv_show_id']).size().reset_index().rename(columns = {0:'show_watched'})\n",
"min_watch = 10\n",
"shows_watches = shows_watches[shows_watches['show_watched'] > min_watch].copy()\n",
"possible_movies_that_matter = shows_watches.tv_show_id.unique()\n",
"train = train[train.tv_show_id.isin(possible_movies_that_matter)].copy()\n",
"train.reset_index(inplace = True, drop = True)"
],
"execution_count": 46,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "UR-ReL0zj0JV"
},
"source": [
"# collecting signs\n",
"train = prepare_features(train, df_info_train, df_info_val, train_base)\n",
"train = train.merge(user_bias_df, on = ['user_id'], how = 'left')\n",
"train = train.merge(show_bias_df, on = ['tv_show_id'], how = 'left')"
],
"execution_count": 47,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "W1r1HxrXj0JV"
},
"source": [
"**Model validation**"
]
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "AMKJx4CNj0JW",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "e89671b3-ffec-46eb-b081-f5c3b944eb5d"
},
"source": [
"cat_columns = ['tv_show_category', 'tv_show_genre_1', 'tv_show_genre_2', 'tv_show_genre_3']\n",
"users_train, users_test = train_test_split(train.user_id.unique(), random_state = 42)\n",
"\n",
"X_train = train[train.user_id.isin(users_train)].copy()\n",
"X_test = train[train.user_id.isin(users_test)].copy()\n",
"y_train = X_train.pop(target_col)\n",
"y_test = X_test.pop(target_col)\n",
"\n",
"X_train = X_train.set_index([\"user_id\", \"tv_show_id\"])\n",
"X_test = X_test.set_index([\"user_id\", \"tv_show_id\"])\n",
"print(X_train.shape, X_test.shape)\n",
"print('Features:', list(X_train.columns))"
],
"execution_count": 48,
"outputs": [
{
"output_type": "stream",
"text": [
"(676824, 28) (225161, 28)\n",
"Features: ['user_show_freq', 'lightfm_score', 'user_show_rank', 'user_lfm_rank', 'combined_rank', 'channel_id', 'tv_show_category', 'tv_show_genre_1', 'tv_show_genre_2', 'tv_show_genre_3', 'user_show_freq_0.3', 'user_show_freq_0.8', 'alt_user_show_freq_0.3', 'alt_user_show_freq_0.5', 'alt_user_show_freq_0.8', 'user_show_freq_dif_week_1', 'user_show_rank_week_1', 'user_show_rank_mean_week_1', 'alt_user_show_freq_dif_week_1', 'alt_user_show_rank_mean_week_1', 'user_channel_count', 'group_user_show_freq', 'user_show_freq_rel_group', 'tot_show_duration', 'tot_show_duration_future', 'popularity_drop', 'user_bias_lfm', 'show_bias_lfm']\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "A9boEza2j0JW",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "460b4cd8-009a-42a3-cd61-a4cdfc5ee68d"
},
"source": [
"train_data = lgb.Dataset(X_train, y_train)\n",
"test_data = lgb.Dataset(X_test, y_test)\n",
"\n",
"param = {\n",
" 'task': 'train',\n",
" 'objective': 'binary', \n",
" 'metric': 'auc',\n",
" 'bagging_fraction': 0.8, \n",
" 'bagging_freq': 4, \n",
" 'colsample_bytree': '0.6', \n",
" 'feature_fraction': 0.75, \n",
" 'learning_rate': 0.01,\n",
" 'metric': 'auc',\n",
" 'min_data_in_leaf': 20, \n",
" 'num_leaves': 150, \n",
" 'num_threads': 4,\n",
" 'reg_alpha': 0.4,\n",
" 'reg_lambda': 0.32, \n",
" 'seed': 42,\n",
"}\n",
"\n",
"res = {}\n",
"bst = lgb.train(\n",
" param, train_data, \n",
" valid_sets=[train_data, test_data], \n",
" valid_names=[\"train\", \"valid\"],\n",
" categorical_feature = cat_columns,\n",
" num_boost_round=10000, evals_result=res, \n",
" verbose_eval=100, early_stopping_rounds=15)"
],
"execution_count": 49,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.7/dist-packages/lightgbm/basic.py:1209: UserWarning: categorical_feature in Dataset is overridden.\n",
"New categorical_feature is ['tv_show_category', 'tv_show_genre_1', 'tv_show_genre_2', 'tv_show_genre_3']\n",
" 'New categorical_feature is {}'.format(sorted(list(categorical_feature))))\n",
"/usr/local/lib/python3.7/dist-packages/lightgbm/basic.py:762: UserWarning: categorical_feature in param dict is overridden.\n",
" warnings.warn('categorical_feature in param dict is overridden.')\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Training until validation scores don't improve for 15 rounds.\n",
"[100]\ttrain's auc: 0.899065\tvalid's auc: 0.890476\n",
"[200]\ttrain's auc: 0.908111\tvalid's auc: 0.896364\n",
"[300]\ttrain's auc: 0.914384\tvalid's auc: 0.899388\n",
"[400]\ttrain's auc: 0.919506\tvalid's auc: 0.901092\n",
"[500]\ttrain's auc: 0.923837\tvalid's auc: 0.902236\n",
"[600]\ttrain's auc: 0.928072\tvalid's auc: 0.902798\n",
"Early stopping, best iteration is:\n",
"[587]\ttrain's auc: 0.927361\tvalid's auc: 0.90281\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZCFvFhDHj0JZ",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "6ccf2bae-77d3-4852-f59c-43bd585a3bc6"
},
"source": [
"X_test[\"lgb_score\"] = bst.predict(X_test, num_iteration=bst.best_iteration)\n",
"lgb_res = X_test.reset_index([0, 1])[[\"user_id\",\n",
" \"tv_show_id\",\n",
" \"lgb_score\"]].sort_values(\"lgb_score\",\n",
" ascending=False)\n",
"\n",
"preds = []\n",
"trues = []\n",
"for user, group in lgb_res.groupby(\"user_id\"):\n",
" predict_n_movies = list(group.tv_show_id)[:5]\n",
" actual_n_movies = val[val.user_id == user]['tv_show_id'].values[:5]\n",
" \n",
" preds.append(list(predict_n_movies))\n",
" trues.append(list(actual_n_movies))\n",
" \n",
"score = np.round(mapk(trues, preds, k = 5), 5)\n",
"print(f'Model MAP@{5} = {score}')\n",
"\n",
"# reference (baseline)\n",
"preds = []\n",
"trues = []\n",
"for user, group in lgb_res.groupby(\"user_id\"):\n",
" predict_n_movies = train[train.user_id == user]['tv_show_id'].values[:5]\n",
" actual_n_movies = val[val.user_id == user]['tv_show_id'].values[:5]\n",
" \n",
" preds.append(list(predict_n_movies))\n",
" trues.append(list(actual_n_movies))\n",
" \n",
"score = np.round(mapk(trues, preds, k = 5), 5)\n",
"print(f'Baseline MAP@{5} = {score}')"
],
"execution_count": 50,
"outputs": [
{
"output_type": "stream",
"text": [
"Model MAP@5 = 0.35283\n",
"Baseline MAP@5 = 0.31984\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZBZTslx4j0Jb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 380
},
"outputId": "9ec5e08d-5ea3-412a-e241-0060c94305ba"
},
"source": [
"lgb.plot_importance(bst, figsize = (15, 10));"
],
"execution_count": 51,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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IiIiIiIiMVNiQURERERERERipsSCiIiIiIiIiMRMiQURERERERERiZkSCyIiIiIiIiISMyUWRERERERERCRmdeIdgIiIiIiIiEg8PP3000ydOpVIJELbtm25++67ue222/j444+pW7cuHTp0ID09nbp16zJjxgwef/xxAJKSkkhLS6Ndu3asXLmSm266qbjPNWvWMHz4cAYPHhynu9r7NGNBRERERERE9jtr165l0qRJvPjii8ycOZOCggJmzZpF3759+fe//80rr7zC9u3bmTp1KgA///nPmTx5Mq+88grXXHMNt99+OwCtW7dm+vTpTJ8+nYyMDA444AB69eoVz1vb6zRjQaqcmbUCZrp7+2oe51BgJlAPGO7u71bXWPXq1auurkVqhJSUlHiHIFKt9IxLbadnXGq76njGc/IKKCgoICcnhzp16pCTk0PTpk057bTTitscd9xxrF27FoATTjihuLxjx4589913u/S5cOFCWrZsSYsWLao83ppMiYU4MLM67p4f7zh2Rw2N+UxgubsPLVlhZonuXlBVAyUkJNDqlllV1Z2IiIiIiMTZ6nG9ueKKKzjjjDOoX78+p5566k5Jhby8PKZPn86oUaN2uXbatGl07959l/JZs2aRmpparXHXREosVAMzux34HfADsAbIBFKBpcBpwHNmthS4j+D/wWLgGnffbmargS7u/qOZdQHuc/fTzSwNaAMcBRwC3Ovuj5cx/unACHdPDc8fAj5096fNbBzQF8gHXnf3EeE3//8Ajgi7uNHd50eN2Rr4L3BRKWMdCzxFMGsgATgfyAMSzexx4BTg/4B+7r7NzDqGYzUEvgSuAOoCs929s5kdH35Ov3D3/5rZl0AHd99aYtyOwL3AAeHndHL4ef8T+BUwLJw5MTyMbRFwrbsXmNnlwK3ARuAjYLu7X1faZykiIiIiIrXTpk2beOWVV3j00UdJSkri3nvv5dFHH+X0008H4OGHH6Z169YkJSWRlZVVfN3y5ct59tlnGTt27E7leXl5zJkzh759++5Uvj9QYqGKmdkvCV6ujyd4Yf4PQWIBoJ67dzGzBsDnwJnu/pmZTQKuAf5WQffHAScBScASM5vl7t/sRmxNgHOBdu5eZGY/C6v+Dtzv7u+Z2RHAa8COuUbHAKe5+7Yyur0a+Lu7TzGzekAicBhwNHCRu19pZi+En8lkYBJw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OCDD3R8GHiFYOlGRN4DLwtdX8kPiYD1wFlDo7tnARuBGgoRDTbwJ9DKzn4VxNjOzzsAHQAcz6xQed3l5DUj9Gj16NOeddx6jRo3irrvuomXLlg0dkoiIiIiIVIFmLEQpd88zs6kED+xfEjxQxwFPmFkrgm/0H3D3XWb2W4LNDDebWSzwCUEioir6AePNLA/YDVxTyfGjgcfMbDw/bN5IuOfD5wQJAQgSDpcDNdqZz92/Djef/HuYWAG4093/ZWapwBIz+z7sp0VN+pDa9dRTT1VYX3KWQknTp0+vi3BERERERKSKYoqKiio/SiRKmVk/SmwAWZ4NGzYUde9e5YkcIgcdrVuUaKcxLtFOY1yincZ4w0tPT0/v0aNHz7LqtBRCRERERERERGpMSyGkSsJNHh8vVZzj7mfUQ98pwG2lite4+y0/tm13fxV49ce2IyIiIiIicqhSYkGqxN3fBWr0iwq10PdjwGMN0beIiIiIiIhUTEshRERERERERKTGlFgQERERERERkRpTYkFEREREREREakyJBRERERERERGpMSUWRERERERERKTG9KsQIlIl3377LXfeeSf/+te/iImJ4e677yY+Pp677rqLnJwc4uLimDJlCieffDLfffcd48eP59///jcFBQWMHDmS4cOHN/QliIiIiIhIHVBiQUSqZNq0afTp04cHHniA3NxcsrOzGTt2LLfccgtnn302r732Gvfeey+PP/44Tz75JJ06deKvf/0rO3bs4Je//CXnn38+TZo0aejLEBERERGRWqalEAcJM2ttZjfXUlsdzOy92mirNpnZrxo6hvIcyg/E2XkFfPfdd7z11ltcdNFFQHA/WrZsSUxMDHv27AHgu+++IyEhAaC4vKioiD179tCqVSsaNVIeU0REREQkGum/9A8erYGbgb80dCB16FfA3XXZgZk1cvf86p4XGxtLh4lL6iKkA9626cl88tEXHHnkkUyaNIkPPviArl27MnnyZH71q19x3XXX8fvf/57CwkL+8Y9/AHDllVdy00030adPH/bs2cN9991HbKzymCIiIiIi0SimqKiooWOQKjCzfwBDAAc+BOa6+5Kwbi6w2N0XlnFeV+AxoAnBDJXhQB7wErAaOAv4Ehji7llmdirwV+BwYCswEmgMvOTuPczsFGAjcJy7f2ZmW4GT3P37Mvo+OmyrY1h0k7u/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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "I_9Z4wdkj0Jc"
},
"source": [
"### Final model training"
]
},
{
"cell_type": "code",
"metadata": {
"id": "BFiDxonaj0Jc",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "aa913fb3-9488-4275-acdc-d29bf9665143"
},
"source": [
"# Full Train\n",
"X_train = train.copy()\n",
"y_train = X_train.pop(target_col)\n",
"\n",
"X_train = X_train.set_index([\"user_id\", \"tv_show_id\"])\n",
"train_data = lgb.Dataset(X_train, y_train)\n",
"\n",
"final_model = lgb.train(\n",
" param, train_data, \n",
" categorical_feature = cat_columns,\n",
" num_boost_round=bst.best_iteration+100, verbose_eval=False)\n",
"\n",
"final_model.save_model('tuned_.txt')"
],
"execution_count": 52,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.7/dist-packages/lightgbm/basic.py:1209: UserWarning: categorical_feature in Dataset is overridden.\n",
"New categorical_feature is ['tv_show_category', 'tv_show_genre_1', 'tv_show_genre_2', 'tv_show_genre_3']\n",
" 'New categorical_feature is {}'.format(sorted(list(categorical_feature))))\n"
],
"name": "stderr"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
""
]
},
"metadata": {
"tags": []
},
"execution_count": 52
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lgpyz5m-sR1T"
},
"source": [
"### Implementation details"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vLU9ZKwvsWuD"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xjP_FRqZj0Jd"
},
"source": [
"### Collection of final data and forecast submission"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6u6q-GPtj0Jd"
},
"source": [
"**Update trained Lightfm model, now with all data**"
]
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "ksfc2zF2j0Jd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 100
},
"outputId": "92a43430-b2a4-4022-bc05-196fea4c37d5"
},
"source": [
"# sparse for lightfm\n",
"df_sparse = df_to_sparse_interaction_matrix(df_show)\n",
"\n",
"# fit lightfm\n",
"lfm_final_model = LightFM(random_state=42, loss = 'warp')\n",
"lfm_final_model.fit(df_sparse, epochs=15, num_threads=4, verbose = False);\n",
"\n",
"# predict the top N current programs for each user from train\n",
"train_users = sorted(df_show[user_col].unique())\n",
"\n",
"# we can only predict films that will definitely be in the target\n",
"train_movies = sorted(df_show[df_show.tv_show_id.isin(df_info_future['tv_show_id'].unique())][movie_col].unique())\n",
"\n",
"# collect user biases\n",
"df_user_bias_df = pd.DataFrame(lfm_final_model.user_biases, columns = ['user_bias_lfm'])\n",
"df_user_bias_df['user_id'] = list(sorted(df_show[user_col].unique()))\n",
"df_user_bias_df['user_id'] = df_user_bias_df['user_id'].apply(lambda x: users_dict.get(x))\n",
"\n",
"# collect item biases\n",
"df_show_bias_df = pd.DataFrame(lfm_final_model.item_biases, columns = ['show_bias_lfm'])\n",
"df_show_bias_df['tv_show_id'] = list(sorted(df_show[movie_col].unique()))\n",
"df_show_bias_df['tv_show_id'] = df_show_bias_df['tv_show_id'].apply(lambda x: movies_dict.get(x))\n",
"\n",
"# collect Lightfm recommendations for all users in the train\n",
"get_n = 200\n",
"df_lightfm_predictions_df = pd.DataFrame()\n",
"for train_user in train_users:\n",
" \n",
" all_movies_df = pd.DataFrame(train_movies, columns = [movie_col])\n",
" all_movies_df[user_col] = train_user\n",
" all_movies_df = all_movies_df.astype('int32')\n",
" all_movies_df['lightfm_score'] = lfm_final_model.predict(all_movies_df[user_col].values,\n",
" all_movies_df[movie_col].values)\n",
" all_movies_df.sort_values('lightfm_score', ascending = False, inplace = True)\n",
" all_movies_df['lightfm_rank'] = np.arange(all_movies_df.shape[0])\n",
" \n",
" df_lightfm_predictions_df = df_lightfm_predictions_df.append(all_movies_df.head(get_n), sort = False)\n",
" \n",
"df_lightfm_predictions_df['user_id'] = df_lightfm_predictions_df[user_col].map(lambda x: users_dict.get(x))\n",
"df_lightfm_predictions_df['tv_show_id'] = df_lightfm_predictions_df[movie_col].map(lambda x: movies_dict.get(x))\n",
"assert df_lightfm_predictions_df.user_id.nunique() == len(train_users)\n",
"df_lightfm_predictions_df.head(1)"
],
"execution_count": 54,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" cont_tv_show_id | \n",
" cont_user_id | \n",
" lightfm_score | \n",
" lightfm_rank | \n",
" user_id | \n",
" tv_show_id | \n",
"
\n",
" \n",
" \n",
" \n",
" | 20 | \n",
" 20 | \n",
" 0 | \n",
" -1.957515 | \n",
" 0 | \n",
" 7981779138282146703 | \n",
" 2400480 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" cont_tv_show_id cont_user_id ... user_id tv_show_id\n",
"20 20 0 ... 7981779138282146703 2400480\n",
"\n",
"[1 rows x 6 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 54
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4CPe546Cj0Je"
},
"source": [
"**Collecting basic features, enriching with recommendations from LightFM**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "YNmR8GeXj0Je",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "e7fb86f1-c420-4b11-dae9-e2d1b303c263"
},
"source": [
"# Basic recommendations - according to the top views\n",
"print(df_show.shape)\n",
"get_n = 200\n",
"\n",
"possible_test_movies = df_info_future['tv_show_id'].unique()\n",
"df_show_base = df_show[df_show['tv_show_id'].isin(possible_test_movies)].copy()\n",
"df_show_train = get_features(df_show_base, get_n)\n",
"overall_top_movies = df_show_train.groupby(['tv_show_id'], as_index = False)['user_show_freq'].sum().sort_values(['user_show_freq'])['tv_show_id'][-5:].values[::-1]"
],
"execution_count": 55,
"outputs": [
{
"output_type": "stream",
"text": [
"(3847696, 14)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0r1pWTPsj0Je"
},
"source": [
"# if incomplete recommendations (user watched = 0.8].groupby(['tv_show_id']).size().reset_index().rename(columns = {0:'show_watched'})\n",
"min_watch = 10\n",
"shows_watches = shows_watches[shows_watches['show_watched'] > 10].copy()\n",
"possible_movies_that_matter = shows_watches.tv_show_id.unique()\n",
"df_show_train = df_show_train[df_show_train.tv_show_id.isin(possible_movies_that_matter)].copy()\n",
"df_show_train.reset_index(inplace = True, drop = True)\n",
"\n",
"# collect features\n",
"df_show_train = prepare_features(df_show_train, df_info, df_info_future, df_show_base)\n",
"df_show_train = df_show_train.merge(df_user_bias_df, on = ['user_id'], how = 'left')\n",
"df_show_train = df_show_train.merge(df_show_bias_df, on = ['tv_show_id'], how = 'left')\n",
"print(df_show_train.shape)"
],
"execution_count": 57,
"outputs": [
{
"output_type": "stream",
"text": [
"(946395, 30)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qOKMgeG5j0Jg"
},
"source": [
"**Prediction submission**"
]
},
{
"cell_type": "code",
"metadata": {
"scrolled": true,
"id": "0E8mSyDnj0Jh"
},
"source": [
"# predict rank score\n",
"X_predict = df_show_train.copy()\n",
"X_predict = X_predict.set_index([\"user_id\", \"tv_show_id\"])[X_train.columns]\n",
"X_predict[\"lgb_score\"] = final_model.predict(X_predict, num_iteration=bst.best_iteration)"
],
"execution_count": 58,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "sT2WdCQGj0Jh"
},
"source": [
"pred_res = X_predict.reset_index([0, 1])[[\"user_id\",\n",
" \"tv_show_id\",\n",
" \"lgb_score\"]].sort_values(\"lgb_score\",\n",
" ascending=False)"
],
"execution_count": 59,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "GrJO3CyLj0Ji",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"outputId": "5c7aa6d8-1dba-47fb-9c50-db01631bb49f"
},
"source": [
"# create submission\n",
"submission_df = pd.read_csv('submission.csv')\n",
"for index_row, row in submission_df.iterrows():\n",
" pred_n_movies = list(pred_res[pred_res.user_id == row['user_id']]['tv_show_id'].values[:5])\n",
" \n",
" if len(pred_n_movies) < 5:\n",
" pred_n_movies = list(pred_n_movies[:len(pred_n_movies)]) + list(overall_top_movies[:5 - len(pred_n_movies)])\n",
" \n",
" pred = ' '.join([str(int(x)) for x in pred_n_movies])\n",
" submission_df.loc[index_row, 'tv_show_id'] = pred\n",
" \n",
"submission_df.to_csv('lfm_lgb6_submission.csv', index = False)\n",
"submission_df.head()"
],
"execution_count": 61,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" user_id | \n",
" tv_show_id | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 8377619604347126107 | \n",
" 240081 2400480 2400508 20088 2400467 | \n",
"
\n",
" \n",
" | 1 | \n",
" 8381667675275833309 | \n",
" 2400480 240081 6700482 12001682 2400467 | \n",
"
\n",
" \n",
" | 2 | \n",
" 8387147770138767246 | \n",
" 12001682 12002856 12001732 12002355 12002955 | \n",
"
\n",
" \n",
" | 3 | \n",
" 8397181578236218580 | \n",
" 240081 2400480 20088 2400467 6700482 | \n",
"
\n",
" \n",
" | 4 | \n",
" 8404698046253197367 | \n",
" 2400480 240081 20088 6200371 200432 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" user_id tv_show_id\n",
"0 8377619604347126107 240081 2400480 2400508 20088 2400467\n",
"1 8381667675275833309 2400480 240081 6700482 12001682 2400467\n",
"2 8387147770138767246 12001682 12002856 12001732 12002355 12002955\n",
"3 8397181578236218580 240081 2400480 20088 2400467 6700482\n",
"4 8404698046253197367 2400480 240081 20088 6200371 200432"
]
},
"metadata": {
"tags": []
},
"execution_count": 61
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xm1x6wdqpmRE"
},
"source": [
"## References\n",
"1. https://github.com/ndmel/2nd_place_recsys_cinema_challenge_2020 `code`\n",
"2. https://www.kaggle.com/c/sweettv-tv-program-recommender/overview `data`\n",
"3. [Google Image search service](https://www.google.com/search?q=sweet.tv+site&rlz=1C1GCEA_enIN909IN909&sxsrf=ALeKk00uJsjmdu5iUacItcKSdysJYoih4w:1626998276475&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj0tMby8PfxAhUf63MBHY7TCnEQ_AUoA3oECAEQBQ&biw=1366&bih=657) `site`\n",
"4. [Sweet.tv official site](https://sweet.tv/) `site`\n",
"5. [Google Translate service](https://translate.google.co.in/) `api`\n",
"6. [Microsoft PPT Translation service](https://translator.microsoft.com/) `api`"
]
}
]
}