{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Fairness and Explainability with SageMaker Clarify - Spark Distributed Processing"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"This notebook's CI test result for us-west-2 is as follows. CI test results in other regions can be found at the end of the notebook. \n",
"\n",
"\n",
"\n",
"---"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Runtime\n",
"\n",
"This notebook takes approximately 30 minutes to run.\n",
"\n",
"## Contents\n",
"1. [Overview](#Overview)\n",
"1. [Prerequisites and Data](#Prerequisites-and-Data)\n",
" 1. [Import Libraries](#Import-Libraries)\n",
" 1. [Set Configurations](#Set-Configurations)\n",
" 1. [Download data](#Download-data)\n",
" 1. [Loading the data: Adult Dataset](#Loading-the-data:-Adult-Dataset) \n",
" 1. [Data inspection](#Data-inspection) \n",
" 1. [Encode and Upload the Dataset](#Encode-and-Upload-the-Dataset) \n",
"1. [Train and Deploy XGBoost Model](#Train-XGBoost-Model)\n",
" 1. [Train Model](#Train-Model)\n",
" 1. [Create Model](#Create-Model)\n",
"1. [Amazon SageMaker Clarify](#Amazon-SageMaker-Clarify)\n",
" 1. [Detecting Bias](#Detecting-Bias)\n",
" 1. [Writing DataConfig](#Writing-DataConfig)\n",
" 1. [Writing ModelConfig](#Writing-ModelConfig)\n",
" 1. [Writing ModelPredictedLabelConfig](#Writing-ModelPredictedLabelConfig)\n",
" 1. [Writing BiasConfig](#Writing-BiasConfig)\n",
" 1. [Pre-training Bias](#Pre-training-Bias)\n",
" 1. [Post-training Bias](#Post-training-Bias)\n",
" 1. [Viewing the Bias Report](#Viewing-the-Bias-Report)\n",
" 1. [Explaining Predictions](#Explaining-Predictions)\n",
" 1. [Viewing the Explainability Report](#Viewing-the-Explainability-Report)\n",
" 1. [Analysis of local explanations](#Analysis-of-local-explanations)\n",
" 1. [Visualize local SHAP values](#Visualize-local-SHAP-values)\n",
"1. [Clean Up](#Clean-Up)\n",
"\n",
"## Overview\n",
"Amazon SageMaker Clarify helps improve your machine learning models by detecting potential bias and helping explain how these models make predictions. The fairness and explainability functionality provided by SageMaker Clarify takes a step towards enabling AWS customers to build trustworthy and understandable machine learning models. The product comes with the tools to help you with the following tasks.\n",
"\n",
"* Measure biases that can occur during each stage of the ML lifecycle (data collection, model training and tuning, and monitoring of ML models deployed for inference).\n",
"* Generate model governance reports targeting risk and compliance teams and external regulators.\n",
"* Provide explanations of the data, models, and monitoring used to assess predictions.\n",
"\n",
"This sample notebook walks you through: \n",
"1. Key terms and concepts needed to understand SageMaker Clarify\n",
"1. Measuring the pre-training bias of a dataset and post-training bias of a model\n",
"1. Explaining the importance of the various input features on the model's decision\n",
"1. Accessing the reports through SageMaker Studio if you have an instance set up.\n",
"\n",
"In doing so, the notebook first trains a [SageMaker XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) model using training dataset, then use [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/) to launch SageMaker Clarify jobs to analyze an example dataset in CSV format. This notebook specifically showcases how to use Spark distributed processing for executing clarify jobs. "
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prerequisites and Data\n",
"### Import Libraries"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from sagemaker import session, get_execution_role\n",
"from io import StringIO\n",
"from s3fs import S3FileSystem\n",
"import sagemaker\n",
"import json\n",
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import os\n",
"import boto3"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Set Configurations"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Region: us-west-2\n",
"Role: arn:aws:iam::000000000000:role/service-role/AmazonSageMaker-ExecutionRole-20220304T121686\n"
]
}
],
"source": [
"# Initialize sagemaker session\n",
"sagemaker_session = session.Session()\n",
"\n",
"region = sagemaker_session.boto_region_name\n",
"print(f\"Region: {region}\")\n",
"\n",
"role = get_execution_role()\n",
"print(f\"Role: {role}\")\n",
"\n",
"bucket = sagemaker_session.default_bucket()\n",
"\n",
"prefix = \"sagemaker/DEMO-sagemaker-clarify\""
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Download data\n",
"Data Source: [https://archive.ics.uci.edu/ml/machine-learning-databases/adult/](https://archive.ics.uci.edu/ml/machine-learning-databases/adult/)\n",
"\n",
"Let's __download__ the data and save it in the local folder with the name adult.data and adult.test from UCI repository$^{[2]}$.\n",
"\n",
"$^{[2]}$Dua Dheeru, and Efi Karra Taniskidou. \"[UCI Machine Learning Repository](http://archive.ics.uci.edu/ml)\". Irvine, CA: University of California, School of Information and Computer Science (2017)."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"adult.data saved!\n",
"adult.test saved!\n"
]
}
],
"source": [
"from sagemaker.s3 import S3Downloader\n",
"\n",
"adult_columns = [\n",
" \"Age\",\n",
" \"Workclass\",\n",
" \"fnlwgt\",\n",
" \"Education\",\n",
" \"Education-Num\",\n",
" \"Marital Status\",\n",
" \"Occupation\",\n",
" \"Relationship\",\n",
" \"Ethnic group\",\n",
" \"Sex\",\n",
" \"Capital Gain\",\n",
" \"Capital Loss\",\n",
" \"Hours per week\",\n",
" \"Country\",\n",
" \"Target\",\n",
"]\n",
"if not os.path.isfile(\"adult.data\"):\n",
" S3Downloader.download(\n",
" s3_uri=\"s3://{}/{}\".format(\n",
" f\"sagemaker-example-files-prod-{region}\", \"datasets/tabular/uci_adult/adult.data\"\n",
" ),\n",
" local_path=\"./\",\n",
" sagemaker_session=sagemaker_session,\n",
" )\n",
" print(\"adult.data saved!\")\n",
"else:\n",
" print(\"adult.data already on disk.\")\n",
"\n",
"if not os.path.isfile(\"adult.test\"):\n",
" S3Downloader.download(\n",
" s3_uri=\"s3://{}/{}\".format(\n",
" f\"sagemaker-example-files-prod-{region}\", \"datasets/tabular/uci_adult/adult.test\"\n",
" ),\n",
" local_path=\"./\",\n",
" sagemaker_session=sagemaker_session,\n",
" )\n",
" print(\"adult.test saved!\")\n",
"else:\n",
" print(\"adult.test already on disk.\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loading the data: Adult Dataset\n",
"From the UCI repository of machine learning datasets, this database contains 14 features concerning demographic characteristics of 45,222 rows (32,561 for training and 12,661 for testing). The task is to predict whether a person has a yearly income that is more or less than $50,000.\n",
"\n",
"Here are the features and their possible values:\n",
"\n",
"1. **Age**: continuous.\n",
"1. **Workclass**: Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked.\n",
"1. **Fnlwgt**: continuous (the number of people the census takers believe that observation represents).\n",
"1. **Education**: Bachelors, Some-college, 11th, HS-grad, Prof-school, Assoc-acdm, Assoc-voc, 9th, 7th-8th, 12th, Masters, 1st-4th, 10th, Doctorate, 5th-6th, Preschool.\n",
"1. **Education-num**: continuous.\n",
"1. **Marital-status**: Married-civ-spouse, Divorced, Never-married, Separated, Widowed, Married-spouse-absent, Married-AF-spouse.\n",
"1. **Occupation**: Tech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-specialty, Handlers-cleaners, Machine-op-inspct, Adm-clerical, Farming-fishing, Transport-moving, Priv-house-serv, Protective-serv, Armed-Forces.\n",
"1. **Relationship**: Wife, Own-child, Husband, Not-in-family, Other-relative, Unmarried.\n",
"1. **Ethnic group**: White, Asian-Pac-Islander, Amer-Indian-Eskimo, Other, Black.\n",
"1. **Sex**: Female, Male.\n",
" * **Note**: this data is extracted from the 1994 Census and enforces a binary option on Sex\n",
"1. **Capital-gain**: continuous.\n",
"1. **Capital-loss**: continuous.\n",
"1. **Hours-per-week**: continuous.\n",
"1. **Native-country**: United-States, Cambodia, England, Puerto-Rico, Canada, Germany, Outlying-US(Guam-USVI-etc), India, Japan, Greece, South, China, Cuba, Iran, Honduras, Philippines, Italy, Poland, Jamaica, Vietnam, Mexico, Portugal, Ireland, France, Dominican-Republic, Laos, Ecuador, Taiwan, Haiti, Columbia, Hungary, Guatemala, Nicaragua, Scotland, Thailand, Yugoslavia, El-Salvador, Trinadad&Tobago, Peru, Hong, Holand-Netherlands.\n",
"\n",
"Next, we specify our binary prediction task: \n",
"\n",
"15. **Target**: <=50,000, >$50,000."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Age
\n",
"
Workclass
\n",
"
fnlwgt
\n",
"
Education
\n",
"
Education-Num
\n",
"
Marital Status
\n",
"
Occupation
\n",
"
Relationship
\n",
"
Ethnic group
\n",
"
Sex
\n",
"
Capital Gain
\n",
"
Capital Loss
\n",
"
Hours per week
\n",
"
Country
\n",
"
Target
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
39
\n",
"
State-gov
\n",
"
77516
\n",
"
Bachelors
\n",
"
13
\n",
"
Never-married
\n",
"
Adm-clerical
\n",
"
Not-in-family
\n",
"
White
\n",
"
Male
\n",
"
2174
\n",
"
0
\n",
"
40
\n",
"
United-States
\n",
"
<=50K
\n",
"
\n",
"
\n",
"
1
\n",
"
50
\n",
"
Self-emp-not-inc
\n",
"
83311
\n",
"
Bachelors
\n",
"
13
\n",
"
Married-civ-spouse
\n",
"
Exec-managerial
\n",
"
Husband
\n",
"
White
\n",
"
Male
\n",
"
0
\n",
"
0
\n",
"
13
\n",
"
United-States
\n",
"
<=50K
\n",
"
\n",
"
\n",
"
2
\n",
"
38
\n",
"
Private
\n",
"
215646
\n",
"
HS-grad
\n",
"
9
\n",
"
Divorced
\n",
"
Handlers-cleaners
\n",
"
Not-in-family
\n",
"
White
\n",
"
Male
\n",
"
0
\n",
"
0
\n",
"
40
\n",
"
United-States
\n",
"
<=50K
\n",
"
\n",
"
\n",
"
3
\n",
"
53
\n",
"
Private
\n",
"
234721
\n",
"
11th
\n",
"
7
\n",
"
Married-civ-spouse
\n",
"
Handlers-cleaners
\n",
"
Husband
\n",
"
Black
\n",
"
Male
\n",
"
0
\n",
"
0
\n",
"
40
\n",
"
United-States
\n",
"
<=50K
\n",
"
\n",
"
\n",
"
4
\n",
"
28
\n",
"
Private
\n",
"
338409
\n",
"
Bachelors
\n",
"
13
\n",
"
Married-civ-spouse
\n",
"
Prof-specialty
\n",
"
Wife
\n",
"
Black
\n",
"
Female
\n",
"
0
\n",
"
0
\n",
"
40
\n",
"
Cuba
\n",
"
<=50K
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Workclass fnlwgt Education Education-Num \\\n",
"0 39 State-gov 77516 Bachelors 13 \n",
"1 50 Self-emp-not-inc 83311 Bachelors 13 \n",
"2 38 Private 215646 HS-grad 9 \n",
"3 53 Private 234721 11th 7 \n",
"4 28 Private 338409 Bachelors 13 \n",
"\n",
" Marital Status Occupation Relationship Ethnic group Sex \\\n",
"0 Never-married Adm-clerical Not-in-family White Male \n",
"1 Married-civ-spouse Exec-managerial Husband White Male \n",
"2 Divorced Handlers-cleaners Not-in-family White Male \n",
"3 Married-civ-spouse Handlers-cleaners Husband Black Male \n",
"4 Married-civ-spouse Prof-specialty Wife Black Female \n",
"\n",
" Capital Gain Capital Loss Hours per week Country Target \n",
"0 2174 0 40 United-States <=50K \n",
"1 0 0 13 United-States <=50K \n",
"2 0 0 40 United-States <=50K \n",
"3 0 0 40 United-States <=50K \n",
"4 0 0 40 Cuba <=50K "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"training_data = pd.read_csv(\n",
" \"adult.data\", names=adult_columns, sep=r\"\\s*,\\s*\", engine=\"python\", na_values=\"?\"\n",
").dropna()\n",
"\n",
"testing_data = pd.read_csv(\n",
" \"adult.test\", names=adult_columns, sep=r\"\\s*,\\s*\", engine=\"python\", na_values=\"?\", skiprows=1\n",
").dropna()\n",
"\n",
"training_data.head()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Data inspection\n",
"Plotting histograms for the distribution of the different features is a good way to visualize the data. Let's plot a few of the features that can be considered _sensitive_. \n",
"Let's take a look specifically at the Sex feature of a census respondent. In the first plot we see that there are fewer Female respondents as a whole but especially in the positive outcomes, where they form ~$\\frac{1}{7}$th of respondents."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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jtLS0pSWlqacnBzFxsaa7WVlZerfv79cLpd27typuXPnatasWZo9e3ZdTwkAADRAnnXdYVpamtv+kiVLFBAQoN27d+tnP/uZebx58+ZyOp019nHgwAGlpaUpOztbPXr0kCQtWrRIkZGROnjwoDp06KDly5frwoULWrp0qex2u8LCwvTll19q9uzZSkpKks1mq+upAQCABuSW35NTWloqSWrZsqXb8eXLl8vf31933323pkyZojNnzphtWVlZcjgcZsCRpJ49e8rhcGjbtm1mTVRUlOx2u1kTExOjo0ePKj8/v8axlJeXq6yszG0DAADWVOcrOd9lGIaSkpL005/+VGFhYebxRx99VKGhoXI6ncrNzVVycrI+//xzZWRkSJKKiooUEBBQrb+AgAAVFRWZNSEhIW7tgYGBZltoaGi181NSUvTqq6/W1fQAAMBt7JaGnAkTJuiLL77Q1q1b3Y7Hx8ebP4eFhenHP/6xIiIi9Nlnn6l79+6SVOPlJsMw3I5fWVN10/HVLlUlJycrKSnJ3C8rK1NwcHAtZwUAABqCWxZynnnmGX300UfasmWLfvCDH1yztnv37mratKm++uorde/eXU6nU8eOHatWd/z4cXO1xul0mqs6VYqLiyX934rOlex2u9vlLQAAYF11fk+OYRiaMGGC1qxZo02bNtV42ehK+/btU2VlpYKCgiRJkZGRKi0t1Y4dO8ya7du3q7S0VL169TJrtmzZooqKCrMmPT1dLper2mUsAADQ+NR5yBk/fryWLVumDz74QL6+vioqKlJRUZHOnz8vSTp06JCmTZumXbt2KT8/X+vXr9fDDz+sbt26qXfv3pKkjh07asCAAYqPj1d2drays7MVHx+vIUOGqEOHDpK+fcTcbrcrLi5Oubm5Wrt2raZPn86TVQAAQNItCDkLFixQaWmp+vbtq6CgIHNbtWqVJMnLy0sbN25UTEyMOnTooIkTJyo6OlobNmyQh4eH2c/y5cvVuXNnRUdHKzo6Wl26dNH7779vtjscDmVkZOjIkSOKiIhQQkKCkpKS3O65AQAAjVed35NzvW8cDg4OVmZm5nX7admypZYtW3bNms6dO2vLli21Gh8AAGgc+NtVAADAkgg5AADAkgg5AADAkgg5AADAkgg5AADAkgg5AADAkgg5AADAkgg5AADAkgg5AADAkgg5AADAkgg5AADA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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"training_data[\"Sex\"].where(training_data[\"Target\"] == \">50K\").value_counts().sort_values().plot(\n",
" kind=\"bar\", title=\"Counts of Sex earning >$50K\", rot=0\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Encode and Upload the Dataset\n",
"Here we encode the training and test data. Encoding input data is not necessary for SageMaker Clarify, but is necessary for the model."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:8: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. \n",
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
" \n"
]
}
],
"source": [
"from sklearn import preprocessing\n",
"\n",
"\n",
"def number_encode_features(df):\n",
" result = df.copy()\n",
" encoders = {}\n",
" for column in result.columns:\n",
" if result.dtypes[column] == np.object:\n",
" encoders[column] = preprocessing.LabelEncoder()\n",
" # print('Column:', column, result[column])\n",
" result[column] = encoders[column].fit_transform(result[column].fillna(\"None\"))\n",
" return result, encoders\n",
"\n",
"\n",
"training_data = pd.concat([training_data[\"Target\"], training_data.drop([\"Target\"], axis=1)], axis=1)\n",
"training_data, _ = number_encode_features(training_data)\n",
"training_data.to_csv(\"train_data.csv\", index=False, header=False)\n",
"\n",
"testing_data, _ = number_encode_features(testing_data)\n",
"test_features = testing_data.drop([\"Target\"], axis=1)\n",
"test_target = testing_data[\"Target\"]\n",
"test_features.to_csv(\"test_features.csv\", index=False, header=False)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"A quick note about our encoding: the \"Female\" Sex value has been encoded as 0 and \"Male\" as 1."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Target
\n",
"
Age
\n",
"
Workclass
\n",
"
fnlwgt
\n",
"
Education
\n",
"
Education-Num
\n",
"
Marital Status
\n",
"
Occupation
\n",
"
Relationship
\n",
"
Ethnic group
\n",
"
Sex
\n",
"
Capital Gain
\n",
"
Capital Loss
\n",
"
Hours per week
\n",
"
Country
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
0
\n",
"
39
\n",
"
5
\n",
"
77516
\n",
"
9
\n",
"
13
\n",
"
4
\n",
"
0
\n",
"
1
\n",
"
4
\n",
"
1
\n",
"
2174
\n",
"
0
\n",
"
40
\n",
"
38
\n",
"
\n",
"
\n",
"
1
\n",
"
0
\n",
"
50
\n",
"
4
\n",
"
83311
\n",
"
9
\n",
"
13
\n",
"
2
\n",
"
3
\n",
"
0
\n",
"
4
\n",
"
1
\n",
"
0
\n",
"
0
\n",
"
13
\n",
"
38
\n",
"
\n",
"
\n",
"
2
\n",
"
0
\n",
"
38
\n",
"
2
\n",
"
215646
\n",
"
11
\n",
"
9
\n",
"
0
\n",
"
5
\n",
"
1
\n",
"
4
\n",
"
1
\n",
"
0
\n",
"
0
\n",
"
40
\n",
"
38
\n",
"
\n",
"
\n",
"
3
\n",
"
0
\n",
"
53
\n",
"
2
\n",
"
234721
\n",
"
1
\n",
"
7
\n",
"
2
\n",
"
5
\n",
"
0
\n",
"
2
\n",
"
1
\n",
"
0
\n",
"
0
\n",
"
40
\n",
"
38
\n",
"
\n",
"
\n",
"
4
\n",
"
0
\n",
"
28
\n",
"
2
\n",
"
338409
\n",
"
9
\n",
"
13
\n",
"
2
\n",
"
9
\n",
"
5
\n",
"
2
\n",
"
0
\n",
"
0
\n",
"
0
\n",
"
40
\n",
"
4
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Target Age Workclass fnlwgt Education Education-Num Marital Status \\\n",
"0 0 39 5 77516 9 13 4 \n",
"1 0 50 4 83311 9 13 2 \n",
"2 0 38 2 215646 11 9 0 \n",
"3 0 53 2 234721 1 7 2 \n",
"4 0 28 2 338409 9 13 2 \n",
"\n",
" Occupation Relationship Ethnic group Sex Capital Gain Capital Loss \\\n",
"0 0 1 4 1 2174 0 \n",
"1 3 0 4 1 0 0 \n",
"2 5 1 4 1 0 0 \n",
"3 5 0 2 1 0 0 \n",
"4 9 5 2 0 0 0 \n",
"\n",
" Hours per week Country \n",
"0 40 38 \n",
"1 13 38 \n",
"2 40 38 \n",
"3 40 38 \n",
"4 40 4 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"training_data.head()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Lastly, let's upload the data to S3"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from sagemaker.s3 import S3Uploader\n",
"from sagemaker.inputs import TrainingInput\n",
"\n",
"train_uri = S3Uploader.upload(\"train_data.csv\", \"s3://{}/{}\".format(bucket, prefix))\n",
"train_input = TrainingInput(train_uri, content_type=\"csv\")\n",
"test_uri = S3Uploader.upload(\"test_features.csv\", \"s3://{}/{}\".format(bucket, prefix))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Train XGBoost Model\n",
"#### Train Model\n",
"Since our focus is on understanding how to use SageMaker Clarify, we keep it simple by using a standard XGBoost model."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:sagemaker:Creating training-job with name: sagemaker-xgboost-2023-02-07-03-49-15-216\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"2023-02-07 03:49:15 Starting - Starting the training job..\n",
"2023-02-07 03:49:29 Starting - Preparing the instances for training..........\n",
"2023-02-07 03:50:24 Downloading - Downloading input data....\n",
"2023-02-07 03:50:49 Training - Downloading the training image.....\n",
"2023-02-07 03:51:19 Training - Training image download completed. Training in progress......\n",
"2023-02-07 03:51:50 Uploading - Uploading generated training model.\n",
"2023-02-07 03:52:01 Completed - Training job completed\n"
]
}
],
"source": [
"from sagemaker.image_uris import retrieve\n",
"from sagemaker.estimator import Estimator\n",
"\n",
"container = retrieve(\"xgboost\", region, version=\"1.2-1\")\n",
"xgb = Estimator(\n",
" container,\n",
" role,\n",
" instance_count=1,\n",
" instance_type=\"ml.m5.xlarge\",\n",
" disable_profiler=True,\n",
" sagemaker_session=sagemaker_session,\n",
")\n",
"\n",
"xgb.set_hyperparameters(\n",
" max_depth=5,\n",
" eta=0.2,\n",
" gamma=4,\n",
" min_child_weight=6,\n",
" subsample=0.8,\n",
" objective=\"binary:logistic\",\n",
" num_round=800,\n",
")\n",
"\n",
"xgb.fit({\"train\": train_input}, logs=False)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Deploy Model\n",
"Here we create the SageMaker model."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:sagemaker:Creating model with name: DEMO-clarify-model-07-02-2023-03-52-02\n"
]
},
{
"data": {
"text/plain": [
"'DEMO-clarify-model-07-02-2023-03-52-02'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from datetime import datetime\n",
"\n",
"model_name = \"DEMO-clarify-model-{}\".format(datetime.now().strftime(\"%d-%m-%Y-%H-%M-%S\"))\n",
"model = xgb.create_model(name=model_name)\n",
"container_def = model.prepare_container_def()\n",
"sagemaker_session.create_model(model_name, role, container_def)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Amazon SageMaker Clarify\n",
"With your model set up, it's time to explore SageMaker Clarify. For a general overview of how SageMaker Clarify processing jobs work, refer [the provided link](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-processing-job-configure-how-it-works.html).\n",
"\n",
"When working with large datasets, you can use the Spark processing capabilities of SageMaker Clarify to enable your Clarify processing jobs to run faster. To use Spark processing for Clarify jobs, set the instance count to a number greater than one. Clarify uses Spark distributed computing when there is more than one instance per Clarify processor."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:sagemaker.image_uris:Defaulting to the only supported framework/algorithm version: 1.0.\n",
"INFO:sagemaker.image_uris:Ignoring unnecessary instance type: None.\n"
]
}
],
"source": [
"from sagemaker import clarify\n",
"\n",
"# Initialize a SageMakerClarifyProcessor to compute bias metrics and model explanations with instance_count > 1\n",
"clarify_processor = clarify.SageMakerClarifyProcessor(\n",
" role=role, instance_count=2, instance_type=\"ml.m5.xlarge\", sagemaker_session=sagemaker_session\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Detecting Bias\n",
"SageMaker Clarify helps you detect possible [pre-training](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-detect-data-bias.html) and [post-training](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-detect-post-training-bias.html) biases using a variety of metrics.\n",
"\n",
"#### Writing DataConfig\n",
"A [DataConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.DataConfig) object communicates some basic information about data I/O to SageMaker Clarify. For our example here we provide the below information:\n",
"\n",
"* `s3_data_input_path`: S3 URI of the train dataset we uploaded above\n",
"* `s3_output_path`: S3 URI at which our output report will be uploaded\n",
"* `label`: Specifies the ground truth label, which is also known as observed label or target attribute. It is used for many bias metrics. In this example, the `Target` column has the ground truth label.\n",
"* `headers`: The list of column names in the dataset\n",
"* `dataset_type`: specifies the format of your dataset, for this example as we are using CSV dataset this will be `text/csv`"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"bias_report_output_path = \"s3://{}/{}/clarify-bias\".format(bucket, prefix)\n",
"bias_data_config = clarify.DataConfig(\n",
" s3_data_input_path=train_uri,\n",
" s3_output_path=bias_report_output_path,\n",
" label=\"Target\",\n",
" headers=training_data.columns.to_list(),\n",
" dataset_type=\"text/csv\",\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Writing ModelConfig\n",
"A [ModelConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.ModelConfig) object communicates information about your trained model. To avoid additional traffic to the production models, SageMaker Clarify sets up and tears down a dedicated endpoint when processing. For our example here we provide the below information:\n",
"\n",
"* `model_name`: name of the concerned model, using name of the xgboost model trained earlier\n",
"* `instance_type` and `initial_instance_count` specify your preferred instance type and instance count used to run your model on during SageMaker Clarify's processing. Since we used two instances for the ClarifyProcessingJob, we recommend that you also increase the number of instances in the model configuration. This is to prevent the processing instances from being bottle necked by the shadow endpoint.\n",
"* `accept_type` denotes the endpoint response payload format, and `content_type` denotes the payload format of request to the endpoint. As per the example model we created above both of these will be `text/csv`."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"model_config = clarify.ModelConfig(\n",
" model_name=model_name,\n",
" instance_type=\"ml.m5.xlarge\",\n",
" instance_count=2,\n",
" accept_type=\"text/csv\",\n",
" content_type=\"text/csv\",\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Writing ModelPredictedLabelConfig\n",
"A [ModelPredictedLabelConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.ModelPredictedLabelConfig) provides information on the format of your predictions. XGBoost model outputs probabilities of samples, so SageMaker Clarify invokes the endpoint then uses `probability_threshold` to convert the probability to binary labels for bias analysis. Prediction above the threshold is interpreted as label value `1` and below or equal as label value `0`."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"predictions_config = clarify.ModelPredictedLabelConfig(probability_threshold=0.8)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Writing BiasConfig\n",
"[BiasConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.BiasConfig) contains configuration values for detecting bias using a Clarify container."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"bias_config = clarify.BiasConfig(\n",
" label_values_or_threshold=[1], facet_name=\"Sex\", facet_values_or_threshold=[0], group_name=\"Age\"\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"For our demo we provide the following information in BiasConfig API:\n",
"\n",
"* `label_values_or_threshold`: List of label value(s) or threshold to indicate positive outcome used for bias metrics. Here positive outcome is earning >$50,000.\n",
"* `facet_name`: Sensitive columns of the dataset, \"Sex\" is the category\n",
"* `facet_values_or_threshold`: values of the sensitive group, \"Female\" respondents are the sensitive group.\n",
"* `group_name`: This example has selected the \"Age\" column which is used to form subgroups for the measurement of bias metric [Conditional Demographic Disparity (CDD)](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-data-bias-metric-cddl.html) or [Conditional Demographic Disparity in Predicted Labels (CDDPL)](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-post-training-bias-metric-cddpl.html).\n",
"\n",
"SageMaker Clarify can handle both categorical and continuous data for `facet: values_or_threshold` and for `label_values_or_threshold`. In this case we are using categorical data. The results will show if the model has a preference for records of one sex over the other."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Pre-training Bias\n",
"Bias can be present in your data before any model training occurs. Inspecting your data for bias before training begins can help detect any data collection gaps, inform your feature engineering, and help you understand what societal biases the data may reflect.\n",
"\n",
"Computing pre-training bias metrics does not require a trained model.\n",
"\n",
"#### Post-training Bias\n",
"Computing post-training bias metrics does require a trained model.\n",
"\n",
"Unbiased training data (as determined by concepts of fairness measured by bias metric) may still result in biased model predictions after training. Whether this occurs depends on several factors including hyperparameter choices.\n",
"\n",
"\n",
"You can run these options separately with `run_pre_training_bias()` and `run_post_training_bias()` or at the same time with `run_bias()` as shown below. We use following additional parameters for the api call:\n",
"\n",
"* `pre_training_methods`: Pre-training bias metrics to be computed. The detailed description of the metrics can be found on [Measure Pre-training Bias](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-data-bias.html). This example sets methods to \"all\" to compute all the pre-training bias metrics.\n",
"* `post_training_methods`: Post-training bias metrics to be computed. The detailed description of the metrics can be found on [Measure Post-training Bias](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-detect-post-training-bias.html). This example sets methods to \"all\" to compute all the post-training bias metrics."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# The job takes about 10 minutes to run\n",
"clarify_processor.run_bias(\n",
" data_config=bias_data_config,\n",
" bias_config=bias_config,\n",
" model_config=model_config,\n",
" model_predicted_label_config=predictions_config,\n",
" pre_training_methods=\"all\",\n",
" post_training_methods=\"all\",\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Viewing the Bias Report\n",
"In Studio, you can view the results under the experiments tab.\n",
"\n",
"\n",
"\n",
"Each bias metric has detailed explanations with examples that you can explore.\n",
"\n",
"\n",
"\n",
"You could also summarize the results in a handy table!\n",
"\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"If you're not a Studio user yet, you can access the bias report in PDF, HTML and ipynb formats in the following S3 bucket:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'s3://sagemaker-us-west-2-000000000000/sagemaker/DEMO-sagemaker-clarify/clarify-bias'"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bias_report_output_path"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Explaining Predictions\n",
"There are expanding business needs and legislative regulations that require explanations of _why_ a model made the decision it did. SageMaker Clarify uses Kernel SHAP to explain the contribution that each input feature makes to the final decision.\n",
"\n",
"For run_explainability API call we need similar `DataConfig` and `ModelConfig` objects we defined above. [SHAPConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SHAPConfig) here is the config class for Kernel SHAP algorithm.\n",
"\n",
"For our demo we pass the following information in `SHAPConfig`:\n",
"\n",
"* `baseline`: Kernel SHAP algorithm requires a baseline (also known as background dataset). If not provided, a baseline is calculated automatically by SageMaker Clarify using K-means or K-prototypes in the input dataset. Baseline dataset type shall be the same as dataset_type, and baseline samples shall only include features. By definition, baseline should either be a S3 URI to the baseline dataset file, or an in-place list of samples. In this case we chose the latter, and put the mean of the train dataset to the list. For more details on baseline selection please [refer this documentation](https://docs.aws.amazon.com/en_us/sagemaker/latest/dg/clarify-feature-attribute-shap-baselines.html).\n",
"* `num_samples`: Number of samples to be used in the Kernel SHAP algorithm. This number determines the size of the generated synthetic dataset to compute the SHAP values. \n",
"* `agg_method`: Aggregation method for global SHAP values. For our example here we are using `mean_abs` i.e. mean of absolute SHAP values for all instances\n",
"* `save_local_shap_values`: Indicates whether to save the local SHAP values in the output location. Default is True."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"explainability_output_path = \"s3://{}/{}/clarify-explainability\".format(bucket, prefix)\n",
"explainability_data_config = clarify.DataConfig(\n",
" s3_data_input_path=train_uri,\n",
" s3_output_path=explainability_output_path,\n",
" label=\"Target\",\n",
" headers=training_data.columns.to_list(),\n",
" dataset_type=\"text/csv\",\n",
")\n",
"\n",
"baseline = [training_data.mean().iloc[1:].values.tolist()]\n",
"shap_config = clarify.SHAPConfig(\n",
" baseline=baseline,\n",
" num_samples=15,\n",
" agg_method=\"mean_abs\",\n",
" save_local_shap_values=True,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# The job takes about 10 minutes to run\n",
"clarify_processor.run_explainability(\n",
" data_config=explainability_data_config,\n",
" model_config=model_config,\n",
" explainability_config=shap_config,\n",
")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Viewing the Explainability Report\n",
"As with the bias report, you can view the explainability report in Studio under the experiments tab\n",
"\n",
"\n",
"\n",
"\n",
"The Model Insights tab contains direct links to the report and model insights.\n",
"\n",
"If you're not a Studio user yet, as with the Bias Report, you can access this report at the following S3 bucket."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'s3://sagemaker-us-west-2-000000000000/sagemaker/DEMO-sagemaker-clarify/clarify-explainability'"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"explainability_output_path"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Analysis of local explanations\n",
"It is possible to visualize the local explanations for single examples in your dataset. You can use the obtained results from running Kernel SHAP algorithm for global explanations."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Age', 'Capital Gain', 'Capital Loss', 'Country', 'Education',\n",
" 'Education-Num', 'Ethnic group', 'Hours per week', 'Marital Status',\n",
" 'Occupation', 'Relationship', 'Sex', 'Workclass', 'fnlwgt'],\n",
" dtype='object')"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"analysis_result_json = sagemaker.s3.S3Downloader.read_file(\n",
" explainability_output_path + \"/analysis.json\"\n",
")\n",
"analysis_result = json.loads(analysis_result_json)\n",
"shap_values = analysis_result[\"explanations\"][\"kernel_shap\"][\"label0\"][\"global_shap_values\"]\n",
"features = pd.Series(shap_values)\n",
"feature_names = features.index\n",
"feature_names"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"With Clarify Spark jobs, the output files that contain local SHAP values will be split into multiple files. You will need to collate them before you can visualize them."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 128 files in S3\n"
]
}
],
"source": [
"_s3 = boto3.resource(\"s3\")\n",
"my_bucket = _s3.Bucket(bucket)\n",
"s3_files = [\n",
" \"s3://{}/{}\".format(obj.bucket_name, obj.key)\n",
" for obj in my_bucket.objects.filter(\n",
" Prefix=prefix + \"/clarify-explainability/explanations_shap/out.csv/\"\n",
" )\n",
" if obj.key.endswith(\".csv\")\n",
"]\n",
"print(f\"Found {len(s3_files)} files in S3\")"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# For the sake of time, open a subset of the s3 files\n",
"num_files_to_open = len(s3_files)\n",
"local_shap_values = pd.DataFrame()\n",
"for file in s3_files[:num_files_to_open]:\n",
" output = sagemaker.s3.S3Downloader.read_file(file)\n",
" df = pd.read_csv(StringIO(output), sep=\",\")\n",
" local_shap_values = local_shap_values.append(df, ignore_index=True)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Visualize local SHAP values"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAXRCAYAAABxVdQKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdfbRWZYE//O/tAQGVc1AQUEQFXxDFV/AFTAEz0LLRSYt+JuZkKU1KiGaoNWP0wviK4aSUqZjLR6l0rPFhKZTgoPgCKMaoMWoqoCI/Fc9RQvQc7ucPH890gl0eFTbo57PWvVb3tfe+ru8+Lf/5enndlWq1Wg0AAAAAALCWzcoOAAAAAAAAGyslOgAAAAAAFFCiAwAAAABAASU6AAAAAAAUUKIDAAAAAEABJToAAAAAABRQogMAAAAAQIE2ZQeAj6M1a9bkhRdeSMeOHVOpVMqOAwAAAACbnGq1mtdffz3bb799Ntts/e0XV6JDCV544YX07Nmz7BgAAAAAsMlbsmRJdthhh/U2vxIdStCxY8ck7/wDXltbW3IaAAAAANj0NDQ0pGfPns1d2/qiRIcSvHuES21trRIdAAAAAD6A9X1csh8WBQAAAACAAkp0KNOECcnll5edAgAAAAAoUKlWq9WyQ8DHTUNDQ+rq6lKfpLZHj2Tp0rIjAQAAAMAmpbljq69fr0cm24kOAAAAAAAFlOgAAAAAAFBAiQ4AAAAAAAWU6AAAAAAAUECJDgAAAAAABZToAAAAAABQQIkOAAAAAAAFlOgAAAAAAFBAiQ4AAAAAAAWU6AAAAAAAUECJDgAAAAAABZToAAAAAABQQIkOAAAAAAAFlOgAAAAAAFBAiQ4AAAAAAAWU6AAAAAAAUECJDgAAAAAABZToAAAAAABQQIkOAAAAAAAFlOgAAAAAAFBAiQ4AAAAAAAWU6AAAAAAAUECJDgAAAAAABZToAAAAAABQQIkOJfrpxRfnrbZty44BAAAAABRQokPJqtVq2REAAAAAgAJKdCjZ23aiAwAAAMBGS4kOAAAAAAAFlOgAAAAAAFBAiQ4AAAAAAAWU6FCyypo1ZUcAAAAAAAoo0aFkbZqayo4AAAAAABRQogMAAAAAQAElOpSsaTP/GAIAAADAxkp7ByXZ8dz/zE9e2SOLOnQpOwoAAAAAUECJDiWpVCpJNss/HvMvZUcBAAAAAAoo0aFslUp2Hvf/lp0CAAAAAFgHJTqbjJ133jlXXHHFe75/ypQp6dSp0wdet1Kp5Pbbb//A8wAAAAAAmx4lOq0yZ86c1NTU5Kijjio7SmlWrFiRkSNHpq6uLnV1dRk5cmRee+21smMBAAAAAOuBEp1Wue6663LmmWfm3nvvzeLFi8uOU4oTTzwxCxYsyJ133pk777wzCxYsyMiRI8uOBQAAAACsB0p03rOVK1fml7/8Zb7+9a/nmGOOyZQpU1pc/+1vf5vddtstHTp0yNChQ3PDDTekUqm02KU9Z86cHH744enQoUN69uyZ0aNHZ+XKle8rz+WXX5699947W265ZXr27Jl//ud/zhtvvLHWfbfffnt23333tG/fPp/61KeyZMmSFtf/8z//M/3790/79u3Tu3fvfO9730tjY+M613ziiSdy55135uc//3kGDhyYgQMH5pprrskdd9yRRYsWFWZdvXp1GhoaWnwAAAAAgI2fEp33bOrUqenTp0/69OmTk046Kddff32q1WqS5Nlnn80JJ5yQ4447LgsWLMjpp5+eCy64oMXzCxcuzPDhw/O5z30uf/jDHzJ16tTce++9OeOMM95Xns022yyTJk3Kf//3f+eGG27I3XffnXPPPbfFPX/+85/zwx/+MDfccEPuu+++NDQ05Itf/GLz9bvuuisnnXRSRo8enccffzw//elPM2XKlPzwhz9c55r3339/6urqcvDBBzePHXLIIamrq8ucOXMKs06YMKH5+Je6urr07Nnzfb0zAAAAALBhKdF5z6699tqcdNJJSZKjjjoqb7zxRn7/+98nSSZPnpw+ffrkkksuSZ8+ffLFL34xp5xySovnL7nkkpx44okZM2ZMdttttwwaNCiTJk3KL37xi7z55putzjNmzJgMHTo0vXr1yhFHHJHvf//7+eUvf9ninrfffjv//u//noEDB6Z///654YYbMmfOnDz00ENJkh/+8IcZN25cvvzlL6d379751Kc+le9///v56U9/us41ly1blq5du6413rVr1yxbtqww63nnnZf6+vrmz1/vhgcAAAAANk5tyg7ApmHRokV56KGHcttttyVJ2rRpkxEjRuS6667LkUcemUWLFuXAAw9s8cxBBx3U4vv8+fPz1FNP5aabbmoeq1arWbNmTZ555pn07du3VZlmzpyZH/3oR3n88cfT0NCQxsbGvPnmm1m5cmW23HLL5pwDBgxofmaPPfZIp06d8sQTT+Sggw7K/PnzM3fu3BY7z5uamvLmm2/mz3/+c7bYYou11q1UKmuNVavVdY6/q127dmnXrl2r3g8AAAAAKJ8Snffk2muvTWNjY3r06NE8Vq1W07Zt26xYsWKdJfK7R728a82aNTn99NMzevTotebfcccdW5Xnueeey6c//emMGjUq3//+97PNNtvk3nvvzamnnpq33367xb3rKrffHVuzZk2+973v5XOf+9xa97Rv336tse7du+ell15aa/z//t//m27durXqHQAAAACAjZ8Snb+rsbExv/jFL3LZZZdl2LBhLa4df/zxuemmm7LHHntk2rRpLa7NmzevxfcDDjggjz32WHbdddcPnGnevHlpbGzMZZddls02e+dUor8+yuXd7PPmzWveFb9o0aK89tpr2WOPPZozLVq06D1nGjhwYOrr6/PQQw81z/nggw+mvr4+gwYN+sDvBQAAAABsXJTo/F133HFHVqxYkVNPPTV1dXUtrp1wwgm59tprc9ttt+Xyyy/Pt7/97Zx66qlZsGBBpkyZkuR/d31/+9vfziGHHJJvfOMb+drXvpYtt9wyTzzxRGbMmJErr7yyVZl22WWXNDY25sorr8xnP/vZ3HfffZk8efJa97Vt2zZnnnlmJk2alLZt2+aMM87IIYcc0lyA/8u//EuOOeaY9OzZM5///Oez2Wab5Q9/+EMWLlyYH/zgB2vN17dv3xx11FH52te+1nxu+mmnnZZjjjkmffr0adU7NKtW0+FvHAUDAAAAAJTHD4vyd1177bU58sgj1yrQk3d2oi9YsCArVqzIr3/969x2223ZZ599cvXVV+eCCy5IkuazwPfZZ5/cc889efLJJ3PYYYdl//33z3e/+91st912rc6033775fLLL89FF12Ufv365aabbsqECRPWum+LLbbIt7/97Zx44okZOHBgOnTokFtuuaX5+vDhw3PHHXdkxowZOfDAA3PIIYfk8ssvz0477VS49k033ZS99947w4YNy7Bhw7LPPvvkxhtvbPU7/KUn/u0zH+h5AAAAAGD9qFT/+uBq+JD88Ic/zOTJk7NkyZKyo2x0Ghoa0u8H96TdZm/lkVvHZasnnyw7EgAAAABsUhoaGlJXV5f6+vrU1taut3XsROdD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vTN58uSyIwEAAAAA64ESvSRDhw7NG2+8kXnz5jWPzZ49O927d8/cuXPz5z//uXl81qxZ2X777bP77ru3ep2333bW9oftmWeeyac//ekcdthheeSRR3L++edn9OjRufXWW8uOBgAAAAB8yJToJenTp0+23377zJo1q3ls1qxZOfbYY7PLLrtkzpw5LcaHDh2aJFm8eHGOPfbYbLXVVqmtrc0XvvCFvPTSS833Xnjhhdlvv/1y3XXXpXfv3mnXrl2q1epa6995552pq6vLL37xi+ax6667LnvttVfatWuX7bbbLmeccUZh/m9/+9vZfffds8UWW6R379757ne/26Kwf/TRRzN06NB07NgxtbW16d+/f/O/MHjuuefy2c9+NltvvXW23HLL7LXXXpk2bVqr/4avvPJK/s//+T/ZYYcdssUWW2TvvffOzTffvNZ9jY2NOeOMM9KpU6d07tw53/nOd1r8Td56662ce+656dGjR7bccsscfPDBLf5/+WuTJ0/OjjvumCuuuCJ9+/bNV7/61XzlK1/JpZdeWvjM6tWr09DQ0OIDAAAAAGz8lOglGjJkSGbOnNn8febMmRkyZEgGDx7cPP7WW2/l/vvvz9ChQ1OtVnPcccfl1VdfzT333JMZM2bk6aefzogRI1rM+9RTT+WXv/xlbr311ixYsGCtdW+55ZZ84QtfyC9+8YucfPLJSZKrr7463/jGN3Laaadl4cKF+e1vf5tdd921MHvHjh0zZcqUPP744/nxj3+ca665JhMnTmy+/qUvfSk77LBD5s6dm/nz52fcuHFp27ZtkuQb3/hGVq9enf/6r//KwoULc9FFF2WrrbZq9d/vzTffTP/+/XPHHXfkv//7v3Paaadl5MiRefDBB1vcd8MNN6RNmzZ58MEHM2nSpEycODE///nPm6//0z/9U+67777ccsst+cMf/pDPf/7zOeqoo/Lkk0+uc937778/w4YNazE2fPjwzJs3r3Dn/4QJE1JXV9f86dmzZ6vfFwAAAADY8NqUHeDjbMiQITnrrLPS2NiYVatW5ZFHHsnhhx+epqamTJo0KUnywAMPZNWqVRk6dGh+97vf5Q9/+EOeeeaZ5hL2xhtvzF577ZW5c+fmwAMPTPJO8X7jjTdm2223XWvNq666Kueff35+85vfNO9uT5If/OAHOfvss/PNb36zeezd+dblO9/5TvP/3nnnnXP22Wdn6tSpOffcc5O8s2P+W9/6VvbYY48kyW677dZ8/+LFi3P88cdn7733TpL07t27dX+4/1+PHj1yzjnnNH8/88wzc+edd+ZXv/pVDj744Obxnj17ZuLEialUKunTp08WLlyYiRMn5mtf+1qefvrp3HzzzVm6dGm23377JMk555yTO++8M9dff31+9KMfrbXusmXL0q1btxZj3bp1S2NjY15++eVst912az1z3nnnZezYsc3fGxoa8ol/f/R9vTcAAAAAsOEo0Us0dOjQrFy5MnPnzs2KFSuy++67p2vXrhk8eHBGjhyZlStXZtasWdlxxx3Tu3fv3HHHHenZs2eLXcx77rlnOnXqlCeeeKK59N5pp53WWaDfeuuteemll3LvvffmoIMOah5fvnx5XnjhhXzyk598z9l//etf54orrshTTz2VN954I42NjamtrW2+Pnbs2Hz1q1/NjTfemCOPPDKf//zns8suuyRJRo8ena9//euZPn16jjzyyBx//PHZZ599Wv33a2pqyr/9279l6tSpef7557N69eqsXr06W265ZYv7DjnkkFQqlebvAwcOzGWXXZampqY8/PDDqVara503v3r16nTu3Llw7b+cL0nz8TB/Pf6udu3apV27dq16PwAAAACgfI5zKdGuu+6aHXbYITNnzszMmTMzePDgJEn37t3Tq1ev3HfffZk5c2aOOOKIJO8Utesqaf96/K9L5Hftt99+2XbbbXP99de3OBO8Q4cOrcr9wAMP5Itf/GKOPvro3HHHHXnkkUdywQUX5K233mq+58ILL8xjjz2Wz3zmM7n77ruz55575j/+4z+SJF/96lfzpz/9KSNHjszChQszYMCAXHnlla3KkCSXXXZZJk6cmHPPPTd33313FixYkOHDh7fI8fesWbMmNTU1mT9/fhYsWND8eeKJJ/LjH/94nc907949y5YtazG2fPnytGnT5m8W7wAAAADApkeJXrKhQ4dm1qxZmTVrVoYMGdI8Pnjw4Nx111154IEHmo9d2XPPPbN48eIsWbKk+b7HH3889fX16du3799da5dddsnMmTPzm9/8JmeeeWbzeMeOHbPzzjvn97///XvKfN9992WnnXbKBRdckAEDBmS33XbLc889t9Z9u+++e84666xMnz49n/vc53L99dc3X+vZs2dGjRqV2267LWeffXauueaa97T2X5o9e3aOPfbYnHTSSdl3333Tu3fvdZ5j/sADD6z1fbfddktNTU3233//NDU1Zfny5dl1111bfLp3777OdQcOHJgZM2a0GJs+fXoGDBjQfO47AAAAAPDRoEQv2dChQ3PvvfdmwYIFzTvRk3dK9GuuuSZvvvlmc4l+5JFHZp999smXvvSlPPzww3nooYdy8sknZ/DgwRkwYMB7Wm/33XfPzJkzc+utt2bMmDHN4xdeeGEuu+yyTJo0KU8++WQefvjhwt3hu+66axYvXpxbbrklTz/9dCZNmtS8yzxJVq1alTPOOCOzZs3Kc889l/vuuy9z585tLvrHjBmTu+66K88880wefvjh3H333e/pXwKsK8eMGTMyZ86cPPHEEzn99NPX2iGeJEuWLMnYsWOzaNGi3Hzzzbnyyiubz37ffffd86UvfSknn3xybrvttjzzzDOZO3duLrrookybNm2d644aNSrPPfdcxo4dmyeeeCLXXXddrr322hbns7dKtZozhu74/p4FAAAAANYrZ6KXbOjQoVm1alX22GOPFj9WOXjw4Lz++uvZZZddms9Ar1Qquf3223PmmWfm8MMPz2abbZajjjqq1Ueh9OnTJ3fffXeGDBmSmpqaXHbZZfnyl7+cN998MxMnTsw555yTLl265IQTTljn88cee2zOOuusnHHGGVm9enU+85nP5Lvf/W4uvPDCJElNTU1eeeWVnHzyyXnppZfSpUuXfO5zn8v3vve9JO+cZf6Nb3wjS5cuTW1tbY466qhMnDix1X+77373u3nmmWcyfPjwbLHFFjnttNNy3HHHpb6+vsV9J598clatWpWDDjooNTU1OfPMM3Paaac1X7/++uubf1j1+eefT+fOnTNw4MB8+tOfXue6vXr1yrRp03LWWWflJz/5SbbffvtMmjQpxx9/fKvfIakm1TU5Z/je7+NZAAAAAGB9q1T/8nBsYINoaGjITp+/IKcf3ivfu2ZS2j37bNmRAAAAAGCT0tDQkLq6utTX16e2tna9reM4FyjJa9P/PZ03b8qadfxYLAAAAACwcVCis9EYNWpUttpqq3V+Ro0aVXa89aapjVOVAAAAAGBjpb1jozF+/PjCH+dcn/85BgAAAABAESU6G42uXbuma9euZcfYoLZ87bW0eeutsmMAAAAAAAUc5wIlWtmpUyrORAcAAACAjZYSHQAAAAAACijRAQAAAACggBIdStT5hRdSqVbLjgEAAAAAFFCiQ4lOuOKKtGlsLDsGAAAAAFBAiQ4AAAAAAAWU6FCySqVSdgQAAAAAoIASHUqmQgcAAACAjZcSHQAAAAAACijRAQAAAACggBIdAAAAAAAKKNEBAAAAAKCAEh0AAAAAAAoo0QEAAAAAoIASHQAAAAAACijRAQAAAACggBIdAAAAAAAKKNEBAAAAAKCAEh0AAAAAAAoo0QEAAAAAoIASHQAAAAAACijRAQAAAACggBIdAAAAAAAKKNEBAAAAAKCAEh0AAAAAAAoo0QEAAAAAoIASHQAAAAAACijRAQAAAACggBIdAAAAAAAKKNEBAAAAAKCAEh0AAAAAAAq0KTsAfKyNG5dsu23ZKQAAAACAAkp0KNN55yW1tWWnAAAAAAAKOM4FAAAAAAAKKNEBAAAAAKCA41ygBE1NTUmSpUuXptZxLgAAAADQag0NDUn+t2tbX5ToUIKnnnoqSbLXXnuVnAQAAAAANm1PPfVUDjzwwPU2f6VarVbX2+zAOq1YsSLbbLNNlixZYic6AAAAALwPDQ0N6dmzZ1599dVsvfXW620dO9GhBDU1NUmS2tpaJToAAAAAfADvdm3rix8WBQAAAACAAkp0KNOECcnll5edAgAAAAAo4Ex0KEFDQ0Pq6upSn6S2R49k6dKyIwEAAADAJqW5Y6uvX69HJtuJDgAAAAAABZToAAAAAABQQIkOAAAAAAAFlOgAAAAAAFBAiQ4AAAAAAAWU6FCCa665puwIAAAAAPCRsO2226Z3796ZPHnyWteuuuqq9OrVK+3bt0///v0ze/bsVs+vRIcNbOrUqRk3blzZMQAAAADgI+Hee+/N+eefn9GjR+fWW29tHp86dWrGjBmTCy64II888kgOO+ywHH300Vm8eHGr5q9Uq9Xqhx0aKHbwwQenX79+ue6661KfpLZHj2Tp0rJjAQAAAMAmpaGhIXV1damvr09tbW1GjRqVRx99NPfff3+Sd3q4Aw44IFdffXXzM3379s1xxx2XCRMmvOd17ESHDeitt97K/Pnzc8QRR5QdBQAAAAA+UoYPH5558+bl7bffbu7hhg0b1uKeYcOGZc6cOa2at82HGRL4215++eU0NTWla9euZUcBAAAAgI+Ubt26pbGxMS+//HKq1WqamprSrVu3te5ZtmxZq+a1Ex1KUKlUyo4AAAAAAB8p755c/pfd21/3cNVqtdXdnJ3osAF16dIlNTU1eemll8qOAgAAAAAfKcuXL0+bNm3SuXPnVKvV1NTUrLXrfPny5WvtTv977ESHDWjzzTdP//79M3PmzLKjAAAAAMBHyvTp0zNgwIC0bdu2uYebMWNGi3tmzJiRQYMGtWpeO9FhAxs7dmxOOumksmMAAAAAwEfCokWLsnDhwlx77bW5+eabm8fHjh2bkSNHZsCAARk4cGB+9rOfZfHixRk1alSr5leiwwY2YsSILF26NOecc07ZUQAAAABgk3foofYBHkgAACAASURBVIemR48emTRpUo4//vjm8REjRuSVV17J+PHj8+KLL6Zfv36ZNm1adtppp1bNX6m+e9o6sME0NDSkrq4u9Ulqe/RIli4tOxIAAAAAbFKaO7b6+tTW1q63dZyJDgAAAAAABZToAAAAAABQQIkOAAAAAAAFlOgAAAAAAFBAiQ4AAAAAAAWU6AAAAAAAUECJDgAAAAAABZToAAAAAABQQIkOJfrpxRdnZYcOZccAAAAAAAoo0aFk1bIDAAAAAACFlOgAAAAAAFBAiQ4AAAAAAAWU6FCyxs38YwgAAAAAGyvtHZSszZo1ZUcAAAAAAAoo0QEAAAAAoIASHQAAAAAACijRoWQVx7kAAAAAwEZLiQ4lad/nE+n8zDOpaWoqOwoAAAAAUKBN2QHg46rbceMyPtWM//zwPFt2GAAAAABgnexEh1JVks1qMvnuP5YdBAAAAABYByU6lK1Syb9Nf7rsFAAAAADAOijRPyaq1WpOO+20bLPNNqlUKlmwYMHffaZSqeT222/fAOnemylTpqRTp06tembnnXfOFVdc8YHWvfDCC7Pffvt9oDkAAAAAgE2TEv1j4s4778yUKVNyxx135MUXX0y/fv3KjvShFNxlufXWW7PnnnumXbt22XPPPfMf//EfZUcCAAAAANYDJfrHxNNPP53tttsugwYNSvfu3dOmjd+Ufb/uv//+jBgxIiNHjsyjjz6akSNH5gtf+EIefPDBsqMBAAAAAB8yJfrHwCmnnJIzzzwzixcvTqVSyc4775whQ4Zk9OjROffcc7PNNtuke/fuufDCCwvnOP7443PmmWc2fx8zZkwqlUoee+yxJEljY2M6duyYu+66K0ny+uuv50tf+lK23HLLbLfddpk4cWKGDBmSMWPGJEmGDBmS5557LmeddVYqlUoqlUqr3+vpp5/Osccem27dumWrrbbKgQcemN/97ndr3ff666/nxBNPzFZbbZXtt98+V155ZYvr9fX1Oe2009K1a9fU1tbmiCOOyKOPPlq47hVXXJFPfepTOe+887LHHnvkvPPOyyc/+cm/uat+9erVaWhoaPEBAAAAADZ+SvSPgR//+McZP358dthhh7z44ouZO3dukuSGG27IlltumQcffDAXX3xxxo8fnxkzZqxzjiFDhmTWrFnN3++555506dIl99xzT5Jk7ty5efPNN3PooYcmScaOHZv77rsvv/3tbzNjxozMnj07Dz/8cPPzt912W3bYYYeMHz8+L774Yl588cVWv9cbb7yRT3/60/nd736XRx55JMOHD89nP/vZLF68uMV9l1xySfbZZ588/PDDOe+883LWWWc1v2e1Ws1nPvOZLFu2LNOmTcv8+fNzwAEH5JOf/GReffXVda57//33Z9iwYS3Ghg8fnjlz5hRmnTBhQurq6po/PXv2bPX7AgAAAAAbnhL9Y6Curi4dO3ZMTU1Nunfvnm233TZJss8+++Rf//Vfs9tuu+Xkk0/OgAED8vvf/36dcwwZMiSPPfZYXn755axYsSKPPfZYxowZ01ysz5o1K/37989WW22V119/PTfccEMuvfTSfPKTn0y/fv1y/fXXp6mpqXm+bbbZJjU1NenYsWO6d++e7t27t/q99t1335x++unZe++9s9tuu+UHP/hBevfund/+9rct7jv00EMzbty47L777jnzzDNzwgknZOLEiUmSmTNnZuHChfnVr36VAQMGZLfddsull16aTp065de//vU61122bFm6devWYqxbt25ZtmxZYdbzzjsv9fX1zZ8lS5a0+n0BAAAAgA3PwdgfY/vss0+L79ttt12WL1++znv79euXzp0755577knbtm2z77775h/+4R8yadKkJO+U6IMHD06S/OlPf8rbb7+dgw46qPn5urq69OnT50PNv3Llynzve9/LHXfckRdeeCGNjY1ZtWrVWjvRBw4cuNb3d49emT9/ft5444107ty5xT2rVq3K008/Xbj2Xx8/U61W/+aRNO3atUu7du3e03sBAAAAABsPJfrHWNu2bVt8r1QqWbNmzTrvrVQqOfzwwzNr1qxsvvnmGTJkSPr165empqYsXLgwc+bMaT7vvFqtNj/zl94d/7B861vfyl133ZVLL700u+66azp06JATTjghb7311t999t1sa9asyXbbbdfiqJp3derUaZ3Pdu/efa1d58uXL19rdzoAAAAAsOlznAvv2bvnos+aNStDhgxJpVLJYYcdlksvvTSrVq1qPg99l112Sdu2bfPQQw81P9vQ0JAnn3yyxXybb755iyNeWmv27Nk55ZRT8o//+I/Ze++907179zz77LNr3ffAAw+s9X2PPfZIkhxwwAFZtmxZ2rRpk1133bXFp0uXLutcd+DAgWudHT99+vQMGjTofb8LAAAAALBxUqLznr17LvrChQtz2GGHNY/ddNNNOeCAA1JbW5sk6dixY7785S/nW9/6VmbOnJnHHnssX/nKV7LZZpu12J2+884757/+67/y/PPP5+WXX251nl133TW33XZbFixYkEcffTQnnnjiOnfS33fffbn44ovzP//zP/nJT36SX/3qV/nmN7+ZJDnyyCMzcODAHHfccbnrrrvy7LPPZs6cOfnOd76TefPmrXPdb37zm5k+fXouuuii/PGPf8xFF12U3/3ud8078VutWs1v/vng9/csAAAAALBeKdF5z/r165cuXbpk3333bS7MBw8enKampubz0N91+eWXZ+DAgTnmmGNy5JFH5tBDD03fvn3Tvn375nvGjx+fZ599Nrvsskvzj522xsSJE7P11ltn0KBB+exnP5vhw4fngAMOWOu+s88+O/Pnz8/++++f73//+7nssssyfPjwJO8c6zJt2rQcfvjh+cpXvpLdd989X/ziF/Pss88WHs8yaNCg3HLLLbn++uuzzz77ZMqUKZk6dWoOPvj9FOHVdFjVkH13XPeudwAAAACgXJXqh31QNazDypUr06NHj1x22WU59dRTy45TuoaGhtR12joXX/Rv+frPfpat/uqoGwAAAADgb2toaEhdXV3q6+ubN/2uD35YlPXikUceyR//+MccdNBBqa+vz/jx45Mkxx57bMnJNiLVdf+IKwAAAACw8XCcC+vNpZdemn333TdHHnlkVq5cmdmzZxf+WGeSHH300dlqq63W+fnRj360AZMDAAAAALzDTnTWi/333z/z589v1TM///nPs2rVqnVe22abbT6MWBulmqamsiMAAAAAAAWU6Gw0evToUXaEDW7L115LRYkOAAAAABst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xxyTp59+uvnZXr16JUn233//VCqVDBkyJMnax5ysXr06o0ePTteuXdO+fft84hOfyNy5c9fK+vvf/z4DBgzIFltskUGDBmXRokXv6+82d+7cfOpTn0qXLl1SV1eXwYMH5+GHH17rvhdffDFHH310OnTokF69euVXv/pVi+vPP/98RowYka233jqdO3fOscce2+Jv99cuv/zynHrqqfnqV7+avn375oorrkjPnj1z9dVXv6/3AAAAAAA2Xkr0jdia/4+9O42ysrrzxf89TDJWMcigCCjigJTGAUWciEPAWSNXyTWixsT+ozG00g6gMcGBOAVjsKMignDVBaZjtFeMF0XjhDMkEBMJCq2NdEAaVCqSiAz1f2FzrmXVMZQRDurns9ZZq85+9rP3bz8lb7613c/69TnppJPSuHHjPP/887nttttyySWXNHicOXPm5PDDD0+fPn3y3HPPZebMmTnuuOOybt26JMmqVasyYsSIvPTSS3nsscfSqFGjfP3rX8/69euTJC+++GKS5NFHH82SJUvyy1/+st55Lr744tx3332ZMmVKfvvb36ZXr14ZNGhQ3n777Vr9LrvssowdOzazZs1KkyZNctZZZzV4TUnyl7/8JWeccUaefvrpPP/889lpp51y9NFH5y9/+UutfpdffnkGDx6cuXPn5rTTTsv//t//O/PmzUuS/PWvf82hhx6a1q1b56mnnsrMmTPTunXrHHnkkfngg7rnlH/wwQeZPXt2Bg4cWKt94MCBefbZZ0vWunr16lRXV9f6AAAAAABbPse5bAEefPDBtG7dulbbJZdckn79+mXevHl54403st122yVJfvSjH+Woo45q0PjXX399+vbtm1tuuaXY1qdPn+LPgwcPrtV/4sSJ6dSpU1555ZVUVVWlY8eOSZIOHTqkS5cu9c6xatWq3HrrrZk8eXKxvgkTJmTGjBmZOHFiLrroomLfMWPGZMCAAUmSkSNH5phjjsn777+f5s2bN2hdhx12WK3v48ePT7t27fLkk0/m2GOPLbaffPLJ+c53vpMkueqqqzJjxozcfPPNueWWWzJt2rQ0atQod9xxRwqFQpLkzjvvTNu2bfPEE0/UCcuXL1+edevWpXPnzrXaO3funKVLl5as9ZprrskVV1xRq63HJQ82aL0AAAAAwOZnJ/oW4NBDD82cOXNqfb773e9m3rx56d69ezFAT5L+/fs3ePwNO9FLWbhwYU499dT07NkzFRUVxeNbFi1atNFzLFy4MGvWrMmBBx5YbGvatGn222+/4q7vDfbYY4/iz9tss02SZNmyZRs91wbLli3LsGHDsvPOO6eysjKVlZV577336tT98WfWv3//Yk2zZ8/OggUL0qZNm7Ru3TqtW7dO+/bt8/7779c60ubjNgTuG9TU1NRp+6hRo0Zl5cqVxc+bb77Z0OUCAAAAAGVgJ/oWoFWrVunVq1ed9pqamjptHw9qGzVqVKfvmjVravVp0aLFJ85/3HHHpVu3bpkwYUK23XbbrF+/PlVVVfUeZ1LKhvk3Jlxu2rRp8ecN1zYcHdMQZ555Zv77v/87N910U3r06JGtttoq/fv336i6PzrvPvvsk3vuuadOnw078D9q6623TuPGjevsOl+2bFmd3ekftdVWW30uXhYLAAAAANRmJ/oWbLfddsuiRYvy5z//udj23HPP1eqzIehdsmRJsW3OnDm1+uyxxx557LHH6p1jxYoVmTdvXr7//e/n8MMPT+/evYsvHN2gWbNmSVI8Q70+vXr1SrNmzTJz5sxi25o1azJr1qz07t37k5b5qT399NMZPnx4jj766PTp0ydbbbVVli9fXqff888/X+f7rrvumiTZe++989prr6VTp07p1atXrU9lZWWdsZo1a5Z99tmnzgteZ8yYkQMOOOAzXB0AAAAAsCUQom8BVq9enaVLl9b6LF++PEcccUR22WWXnH766Zk7d26efvrpXHbZZbXu7dWrV7p165bRo0fn1Vdfza9//euMHTu2Vp9Ro0blpZdeyrnnnpvf//73+dOf/pRbb701y5cvT7t27dKhQ4fcfvvtWbBgQX7zm99kxIgRte7v1KlTWrRokenTp+ett97KypUr66yhVatWOeecc3LRRRdl+vTpeeWVV3L22Wfnr3/9a7797W9/9g/tf9Z+1113Zd68eXnhhRfyzW9+s95d9//2b/+WSZMm5dVXX80Pf/jDvPjiiznvvPOSJN/85jez9dZb54QTTsjTTz+d119/PU8++WT++Z//OYsXL6533hEjRuSOO+7IpEmTMm/evFxwwQVZtGhRhg0btknWCQAAAACUjxB9CzB9+vRss802tT4HHXRQGjVqlPvvvz+rV6/Ofvvtl+985zsZM2ZMrXubNm2aqVOn5k9/+lO+8pWv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vfba3HfffbWC+U9j4cKF+b//9/9m+vTpmTp1aiZNmpRjjjkmixcvzpNPPpnrrrsu3//+9/P8889/qvHbtGmTyZMn55VXXslPf/rTTJgwIT/5yU9q9VmwYEF+/vOf51e/+lWmT5+eOXPm5Lvf/W7x+oQJE3LZZZdlzJgxmTdvXn70ox/l8ssvz5QpU+qd87nnnktVVVW23XbbYtugQYOyevXqzJ49u957Vq9enerq6lofAAAAAGDL96U7zuXBBx9M69ata7Vdcskl6devX+bNm5c33ngj2223XZLkRz/6UY466qgGjX/99denb9++tXYy9+nTp/jz4MGDa/WfOHFiOnXqlFdeeSVVVVXp2LFjkqRDhw7p0qVLvXOsWrUqt956ayZPnlysb8KECZkxY0YmTpyYiy66qNh3zJgxGTBgQJJk5MiROeaYY/L++++nefPmn7iOvffeO6ecckpGjhyZxx57rAFPoLb169dn0qRJadOmTXbbbbcceuihmT9/fh566KE0atQou+yyS6677ro88cQT2X///Rs8/kd3y2+//fb5l3/5l9x77725+OKLi+3vv/9+pkyZUvy93nzzzTnmmGMyduzYdOnSJVdddVXGjh2bk046KcmH/zfAK6+8kvHjx+eMM86oM+fSpUvTuXPnWm3t2rVLs2bNsnTp0nrrvOaaa3LFFVfUautxyYMNXi8AAAAAsHl96UL0Qw89NLfeemuttvbt2+euu+5K9+7di0FrkvTv37/B48+ZMycnn3xyyesLFy7M5Zdfnueffz7Lly8v7kBftGhRqqqqNmqOhQsXZs2aNTnwwAOLbU2bNs1+++2XefPm1eq7xx57FH/eZpttkiTLli1Lkuy2227Fa5deemkuvfTSWvdeffXV6d27dx555JF06tRpo2r7uO233z5t2rQpfu/cuXMaN26cRo0a1WrbUFND/eIXv8hNN92UBQsW5L333svatWtTUVFRq099v9f169dn/vz5ady4cd588818+9vfztlnn13ss3bt2k88h/6jx9ZsUFNTU297kowaNSojRowofq+urs5B/zp3o9cJAAAAAJTHly5Eb9WqVXr16lWnvaampk7bxwPRDcHvR/t+/PztFi1afOL8xx13XLp165YJEyZk2223zfr161NVVZUPPvhgo9ewYf6P11dfiNu0adPizxuurV+/Ptttt13mzJlTvNa+ffs68+y44445++yzM3LkyEycOLHWtUaNGtV5ZvWdRf7R+TfUUF/bhj8mNMTzzz+fb3zjG7niiisyaNCgVFZWZtq0aRk7duwn3rfhOXx03gkTJqRfv361+jVu3Lje+7t06ZIXXnihVts777yTNWvW1NmhvsFWW231uXiBLQAAAABQmzPR/8duu+2WRYsW5c9//nOx7bnnnqvVZ8NRK0uWLCm2fTSITj7c+V3q+JMVK1Zk3rx5+f73v5/DDz88vXv3Lr5wdINmzZolSfEM9fr06tUrzZo1y8yZM4tta9asyaxZs9K7d+9PWmZRkyZN0qtXr+KnvhA9SX7wgx/k1VdfzbRp02q1d+zYMX/5y1+yatWqYtvHn8Wm9swzz6RHjx657LLL0rdv3+y00075z//8zzr96vu9NmrUKDvvvHM6d+6crl275j/+4z9qPY9evXoVX/L6cf37988f/vCHWv8dPPLII9lqq62yzz77fPYLBQAAAADK5ku3E3316tV1zq1u0qRJjjjiiOyyyy45/fTTM3bs2FRXV+eyyy6r1a9Xr17p1q1bRo8enauvvjqvvfZanV3Po0aNyu67755zzz03w4YNS7NmzfL444/n5JNPTvv27dOhQ4fcfvvt2WabbbJo0aKMHDmy1v2dOnVKixYtMn369Gy33XZp3rx5nWNFWrVqlXPOOScXXXRR2rdvn+7du+f666/PX//613z729/+DJ/Wh0etjBgxIjfccEOt9n79+qVly5a59NJL873vfS8vvvhiJk+e/JnO/ff06tUrixYtyrRp07Lvvvvm17/+de6///46/Zo3b54zzjgjP/7xj1NdXZ3hw4fnlFNOKZ45P3r06AwfPjwVFRU56qijsnr16syaNSvvvPNOrSNYNhg4cGB22223DB06NDfccEPefvvtXHjhhTn77LPrHCUDAAAAAHy+fel2ok+fPj3bbLNNrc9BBx2URo0a5f7778/q1auz33775Tvf+U7GjBlT696mTZtm6tSp+dOf/pSvfOUrue6663L11VfX6rPzzjvnkUceydy5c7Pffvulf//++fd///c0adIkjRo1yrRp0zJ79uxUVVXlggsuqBNON2nSJOPGjcv48eOz7bbb5oQTTqh3Hddee20GDx6coUOHZu+9986CBQvy8MMPp127dp/tA0ty0UUX1XkZa/v27XP3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AAAAAFsiITqUW6GQHUY9VO4qAAAAAIB6CNHLZPLkyWnbtu0WM87nxfbbb5+bbrppo/t/Vs+nUCjkgQce+IfHAQAAAAA+X4ToH3PmmWemUChk2LBhda6de+65KRQKOfPMM//heYYMGZJXX321+H306NHZc889/+Fx6/P444/n0EMPTfv27dOyZcvstNNOOeOMM7J27doknz5ofuKJJ1IoFPLuu+9+1iVv8d55550MHTo0lZWVqayszNChQ7+UzwEAAAAAvuiE6PXo1q1bpk2blr/97W/Ftvfffz9Tp05N9+7d/+Hx16xZkxYtWqRTp07/8Fh/zx//+MccddRR2XffffPUU0/l5Zdfzs0335ymTZtm/fr1m3z+L6pTTz01c+bMyfTp0zN9+vTMmTMnQ4d6PSgAAAAAfNEI0eux9957p3v37vnlL39ZbPvlL3+Zbt26Za+99qrVd/r06TnooIPStm3bdOjQIccee2wWLlxYvP7GG2+kUCjk5z//eb761a+mefPmufvuu2vt/p48eXKuuOKKzJ07N4VCIYVCIZMnT06S3Hjjjdl9993TqlWrdOvWLeeee27ee++9jV7LjBkzss022+T6669PVVVVdtxxxxx55JG544470qxZszzxxBP51re+lZUrVxbnHj16dJLk7rvvTt++fdOmTZt06dIlp556apYtW1Zc16GHHpokadeuXa0d+vUdubLnnnsWx00+3HnfvXv3bLXVVtl2220zfPjwjV7TR23s83nggQey8847p3nz5vna176WN998s9b1X/3qV9lnn33SvHnz9OzZM1dccUVxp/7HzZs3L9OnT88dd9yR/v37p3///pkwYUIefPDBzJ8/v957Vq9enerq6lofAAAAAGDLJ0Qv4Vvf+lbuvPPO4vdJkyblrLPOqtNv1apVGTFiRF566aU89thjadSoUb7+9a/X2eV9ySWXZPjw4Zk3b14GDRpU69qQIUPyL//yL+nTp0+WLFmSJUuWZMiQIUmSRo0aZdy4cfnDH/6QKVOm5De/+U0uvvjijV5Hly5dsmTJkjz11FP1Xj/ggANy0003paKiojj3hRdemCT54IMPctVVV2Xu3Ll54IEH8vrrrxeD8m7duuW+++5LksyfPz9LlizJT3/6042q6Re/+EV+8pOfZPz48XnttdfywAMPZPfdd9/oNX3Uxjyfv/71rxkzZkymTJmSZ555JtXV1fnGN75RvP7www/ntNNOy/Dhw/PKK69k/PjxmTx5csaMGVPvnM8991wqKyvTr1+/Ytv++++fysrKPPvss/Xec8011xSPfqmsrEy3bt0+1XoBAAAAgM2rSbkL2FINHTo0o0aNKu4kf+aZZzJt2rQ88cQTtfoNHjy41veJEyemU6dOeeWVV1JVVVVsP//883PSSSfVO1eLFi3SunXrNGnSJF26dKl17fzzzy/+vMMOO+Sqq67KOeeck1tuuWWj1nHyySfn4YcfzoABA9KlS5fsv//+Ofzww3P66aenoqIizZo1S2VlZQqFQp25P/pHg549e2bcuHHZb7/98t5776V169Zp3759kqRTp04NOlN90aJF6dKlS4444og0bdo03bt3z3777bfR93/UxjyfNWvW5F//9V+LofeUKVPSu3fvvPjii9lvv/0yZsyYjBw5MmeccUZxrVdddVUuvvji/PCHP6wz59KlS+s9iqdTp05ZunRpvXWOGjUqI0aMKH6vrq7OQf8691OtGQAAAADYfOxEL2HrrbfOMccckylTpuTOO+/MMccck6233rpOv4ULF+bUU09Nz549U1FRkR122CHJh0HxR/Xt2/dT1fH444/na1/7Wrp27Zo2bdrk9NNPz4oVK7Jq1aqNur9x48a58847s3jx4lx//fXZdtttM2bMmOKu90/yu9/9LieccEJ69OiRNm3a5Ktf/Wq9a2uok08+OX/729/Ss2fPnH322bn//vtLHp3y92zM82nSpEmt57/rrrumbdu2mTdvXpJk9uzZufLKK9O6devi5+yzz86SJUvy17/+td55C4VCnbaampp625Nkq622SkVFRa0PAAAAALDlE6J/grPOOiuTJ0/OlClT6j3KJUmOO+64rFixIhMmTMgLL7yQF154IcmHR6F8VKtWrRo8/3/+53/m6KOPTlVVVe67777Mnj07P/vZz5J8uLu6Ibp27ZqhQ4fmZz/7WV555ZW8//77ue2220r2X7VqVQYOHJjWrVvn7rvvzksvvZT7778/Sd21fVyjRo1SU1NTq+2j9Xbr1i3z58/Pz372s7Ro0SLnnntuDjnkkAavqSHPp75we0Pb+vXrc8UVV2TOnDnFz8svv5zXXnstzZs3r3Nfly5d8tZbb9Vp/+///u907ty5QWsAAAAAALZsjnP5BEceeWQxMP74OeZJsmLFisybNy/jx4/PwQcfnCSZOXPmp5qrWbNmWbduXa22WbNmZe3atRk7dmwaNfrw7x0///nPP9X4H9WuXbtss802xd3a9c39pz/9KcuXL8+1115bPL971qxZdWpOUufejh071trlXl1dnddff71WnxYtWuT444/P8ccfn+9+97vZdddd8/LLL2fvvffe6HVs7PNZu3ZtZs2aVTwyZv78+Xn33Xez6667JvnwRbLz589Pr169Nmre/v37Z+XKlcXjYJLkhRdeyMqVK3PAAQdsdP0AAAAAwJZPiP4JGjduXDzyo3HjxnWut2vXLh06dMjtt9+ebbbZJosWLcrIkSM/1Vzbb799Xn/99cyZMyfbbbdd2rRpkx133DFr167NzTffnOOOOy7PPPPMJ+4er8/48eMzZ86cfP3rX8+OO+6Y999/P//n//yf/PGPf8zNN99cnPu9997LY489lq985Stp2bJlunfvnmbNmuXmm2/OsGHD8oc//CFXXXVVrbF79OiRQqGQBx98MEcffXTxbPfDDjsskydPznHHHZd27drl8ssvr/X8Jk+enHXr1qVfv35p2bJl7rrrrrRo0SI9evRo0No29vk0bdo03/ve9zJu3Lg0bdo05513Xvbff/9iAP6DH/wgxx57bLp165aTTz45jRo1yu9///u8/PLLufrqq+uM17t37xx55JE5++yzM378+CTJP/3TP+XYY4/NLrvs0qA1JElqarJNm/qPgQEAAAAAystxLn/HJ51f3ahRo0ybNi2zZ89OVVVVLrjggtxwww2fap7BgwfnyCOPzKGHHpqOHTtm6tSp2XPPPXPjjTfmuuuuS1VVVe65555cc801DRp3w4tAhw0blj59+mTAgAF5/vnn88ADD2TAgAFJkgMOOCDDhg3LkCFD0rFjx1x//fXp2LFjJk+enH/7t3/LbrvtlmuvvTY//vGPa43dtWvXXHHFFRk5cmQ6d+6c8847L8mHL9E85JBDcuyxx+boo4/OiSeemB133LF4X9u2bTNhwoQceOCB2WOPPfLYY4/lV7/6VTp06NCgtW3s82nZsmUuueSSnHrqqenfv39atGiRadOmFa8PGjQoDz74YGbMmJF99903+++/f2688cZPDPXvueee7L777hk4cGAGDhyYPfbYI3fddVeD6v9QTVJTk+e+f8ynuBcAAAAA2NQK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H398Fi9eXO6yAAAAAIDPmBB9E/qP//iP9O3bN6+++mqmTp2aBQsW5Lbbbstjjz2W/v375+233y53if+wjh07pmXLluUuY7M7//zzc//992fatGmZOXNm3nvvvRx77LFZt25duUsDAAAAAD5DQvRN6Lvf/W6aNWuWRx55JAMGDEj37t1z1FFH5dFHH81//dd/5bLLLkvy4a7miy++ON26dctWW22VnXbaKRMnTiyO88c//jHHHHNMKioq0qZNmxx88MFZuHBhkvqPNznxxBNz5plnFr9vv/32ueqqq3LqqaemdevW2XbbbXPzzTfXuufGG2/M7rvvnlatWqVbt24599xz89577yX58EiUb33rW1m5cmUKhUIKhUJGjx5dHPujx5wsWrQoJ5xwQlq3bp2Kioqccsopeeutt4rXR48enT333DN33XVXtt9++1RWVuYb3/hG/vKXv3yqZ3z33Xenb9++adOmTbp06ZJTTz01y5Ytq9PvmWeeyVe+8pU0b948/fr1y8svv1zr+rPPPptDDjkkLVq0SLdu3TJ8+PCsWrWq3jlXrlyZiRMnZuzYsTniiCOy11575e67787LL7+cRx99tN57Vq9enerq6lofAAAAAGDLJ0TfRN5+++08/PDDOffcc9OiRYta17p06ZJvfvObuffee1NTU5PTTz8906ZNy7hx4zJv3rzcdtttad26dZLkv/7rv3LIIYekefPm+c1vfpPZs2fnrLPOytq1axtUzw033JA99tgjv/3tbzNq1KhccMEFmTFjRvF6o0aNMm7cuPzhD3/IlClT8pvf/CYXX3xxkuSAAw7ITTfdlIqKiixZsiRLlizJhRdeWGeOmpqanHjiiXn77bfz5JNPZsaMGVm4cGGGDBlSq9/ChQvzwAMP5MEHH8yDDz6YJ598Mtdee22D1rPBBx98kKuuuipz587NAw88kNdff73WHxA2uOiii/LjH/84L730Ujp16pTjjz8+a9asSZK8/PLLGTRoUE466aT8/ve/z7333puZM2fmvPPOq3fO2bNnZ82aNRk4cGCxbdttt01VVVWefbb+F4Rec801qaysLH66dev2qdYLAAAAAGxeTcpdwBfVa6+9lpqamvTu3bve6717984777yTl156KT//+c8zY8aMHHHEEUmSnj17Fvv97Gc/S2VlZaZNm5amTZsmSXbeeecG13PggQdm5MiRxfufeeaZ/OQnP8nXvva1JKm1m32HHXbIVVddlXPOOSe33HJLmjVrlsrKyhQKhXTp0qXkHI8++mh+//vf5/XXXy+GxHfddVf69OmTl156Kfvuu2+SZP369Zk8eXLatGmTJBk6dGgee+yxjBkzpsHrOuuss4o/9+zZM+PGjct+++2X9957r/iHiCT54Q9/WFzrlClTst122+X+++/PKaeckhtuuCGnnnpq8RnstNNOGTduXAYMGJBbb701zZs3rzXn0qVL06xZs7Rr165We+fOnbN06dJ66xw1alRGjBhR/F5dXZ2D/nVug9cLAAAAAGxedqKXSU1NTZLk9ddfT+PGjTNgwIB6+82ZMycHH3xwMUD/tPr371/n+7x584rfH3/88Xzta19L165d06ZNm5x++ulZsWJFySNN6jNv3rx069at1i7r3XbbLW3btv3/2bvTKK2qO2/Yv1tGpVLMgyKKiAoqKENikHZCBYc2kjYRk2hCTIK0EwRwNq3BpEECams7RKPioz6GNgoLDa0SWg0K2oKC2HFAhSARQlCsEtswFPV+yGs9ltRtKCPcaK5rrbNWnX322ft/Tn371a59as3VuXPnmgA9SXbeeec6t2DZEs8991xOPPHE7L777vnCF76Qww8/PMlftpX5sA8/f6tWrbLPPvvU1DR//vxMnjw5ZWVlNcegQYOyadOmLFmyZItrqa6uTqFQqPNakyZNUl5eXusAAAAAALZ/QvStpGvXrikUCvnd735X5/WXXnopLVu2/Ksf5fzoVjAftcMOO9QE8h/4YJuSv+aDwPf3v/99jjvuuOy///657777Mn/+/Fx//fX1GispHiJ/tP2jfxAoFArZtGnTFs/zgffeey8DBw5MWVlZ7rrrrjzzzDOZOnVqkr9s8/LXfFDTpk2bcsYZZ2TBggU1x8KFC7N48eLsueeem93XoUOHrF+/PmvWrKnVvmrVqrRv377ezwEAAAAAbL+E6FtJ69atc/TRR+eGG27I+++/X+vaypUrc/fdd2fIkCHp0aNHNm3alMcff7zOcXr27JnZs2cXDbPbtm2bFStW1JxXVVXlhRde2KzfU089tdl5t27dkiTz5s3Lxo0bM2nSpHz5y1/O3nvvnTfffLNW/8aNG6eqqupjn3nffffNsmXL8sYbb9S0/e53v0tFRUXRbW3+Fi+99FJWr16d8ePH55BDDkm3bt2Krmj/8POvWbMmr7zySs3z9+7dO//zP/+Trl27bnY0btx4s7H69OmTRo0a1dpTfsWKFXnhhRdy8MEHf8pPCQAAAACUkhB9K/r3f//3rFu3LoMGDcpvf/vbvPHGG3nooYdqtk356U9/ms6dO+c73/lOTj/99JoPYz722GP5j//4jyTJ2WefncrKypxyyimZN29eFi9enDvvvDMvv/xykmTAgAH59a9/nV//+td56aWXcuaZZ+add97ZrJYnn3wyEyZMyCuvvJLrr78+9957b0aMGJEk2XPPPbNx48Zcd911ef3113PnnXfmpptuqnV/586ds3bt2syaNSurV6/O//7v/242x1FHHZWePXvmW9/6Vp599tn893//d7797W/nsMMOS9++fT/t15vddtstjRs3rql7+vTpueKKK+rsO3bs2MyaNSsvvPBChg4dmjZt2mTw4MFJkgsuuCBz587NWWedlQULFmTx4sWZPn16zjnnnDrHat68eb73ve9l9OjRmTVrVp577rmceuqp6dGjR82+9vVSXZ0fHbP5incAAAAAoPSE6FvRXnvtlXnz5mXPPffMkCFDsueee2bYsGE54ogjMnfu3LRq1SpJcuONN+ZrX/tazjzzzHTr1i0/+MEPavYib926df7rv/4ra9euzWGHHZY+ffrklltuqdkS5fTTT893vvOdmrB6jz32yBFHHLFZLaNHj878+fPTq1evXHHFFZk0aVIGDRqUJDnwwANz1VVX5corr8z++++fu+++O+PGjat1/8EHH5zhw4dnyJAhadu2bSZMmLDZHIVCIdOmTUvLli1z6KGH5qijjkqXLl0yZcqUT/W9fqBt27aZPHly7r333uy7774ZP358Jk6cWGff8ePHZ8SIEenTp09WrFiR6dOn16wy79mzZx5//PEsXrw4hxxySHr16pUf/ehH2XnnnYvOffXVV2fw4ME5+eST079//+y000554IEH0qBBg3o+RXVSVZXvHd6tnvcBAAAAANtCofqjG2rzudO5c+eMHDkyI0eOLHUp/P8qKyvT4dBv5JKTD8+Ym69Pk6VLS10SAAAAAHymVFZWpnnz5qmoqEh5eflWm8dKdCiR9xfOSONGf70fAAAAAFA6QnS2G8uWLUtZWVnRY9myZaUuEQAAAAD4O9Ow1AWw9S39jGwVsssuu2TBggUf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NQMHDsyQIUPyyCOP1FyvqKjIsGHD0q5du5SXl2fAgAFZuHBh0fGeeeaZHH300WnTpk2aN2+eww47LM8++2zN9c6dOydJvvrVr6ZQKNScf3TrlE2bNmXs2LHZdddd06RJkxx44IF56KGHaq4vXbo0hUIh999/f4444ojstNNOOeCAAzJ37tyaPr///e9zwgknpGXLlmnWrFn222+/zJgxo1a98+fPT9++fbPTTjvl4IMPzssvv1xz7aM1DR06NIMHD86Pf/zjmvdxxhlnZP369Vv4tmu766670rdv33zhC19Ihw4d8s1vfjOrVq3arN+TTz6ZAw44IE2bNs1BBx2URYsW1bo+Z86cHHroodlxxx3TqVOnnHvuuXnvvffqnLOioiK33nprJk2alKOOOiq9evXKXXfdlUWLFuU3v/lNnfesW7culZWVtQ4AAAAAYPsnRP+Uvf7663nooYfSqFGjJEl1dXWOP/74rFy5MjNmzMj8+fPTu3fvHHnkkXn77bfrHOPdd9/Nd77zncyePTtPPfVU9tprrxx33HF59913k/wlZE+S22+/PStWrKg5/6h/+7d/y6RJkzJx4sQ8//zzGTRoUL7yla9k8eLFtfpdcsklGTNmTBYsWJC999473/jGN7Jx48YkyVlnnZV169blt7/9bRYtWpQrr7wyZWVlm90/adKkzJs3Lw0bNszpp5/+se9o1qxZefHFF/Poo4/mnnvuydSpU/PjH//4r7zZuq1fvz5XXHFFFi5cmGnTpmXJkiUZOnToZv3OO++8TJw4Mc8880zatWuXr3zlK9mwYUOSZNGiRRk0aFD+6Z/+Kc8//3ymTJmSJ554ImeffXadc86fPz8bNmzIwIEDa9p22WWX7L///pkzZ06d94wbNy7NmzevOTp16vSJnhcAAAAA2LYalrqAz4MHH3wwZWVlqaqqyp///OckyVVXXZUkefTRR7No0aKsWrUqTZo0SZJMnDgx06ZNy69+9asMGzZss/EGDBhQ6/znP/95WrZsmccffzz/+I//mLZt2yZJWrRokQ4dOhSta+LEibngggtyyimnJEmuvPLKPProo7nmmmty/fXX1/QbM2ZMjj/++CTJj3/84+y333559dVX061btyxbtiwnnXRSevTokSTp0qXLZvP89Kc/zWGHHZYkufDCC3P88cfnz3/+c5o2bVpnXY0bN85tt92WnXbaKfvtt1/Gjh2b8847L1dccUV22KF+f9f5cGDfpUuXXHvttfnSl76UtWvX1gr7L7vsshx99NFJkjvuuCO77rprpk6dmpNPPjk/+9nP8s1vfrPmg6V77bVXrr322hx22GG58cYbN3uOlStXpnHjxmnZsmWt9vbt22flypV11nnRRRdl1KhRNeeVlZX5h38v/t8IAAAAAMD2wUr0T8ERRxyRBQsW5Omnn84555yTQYMG5Zxzzknyl1XLa9euTevWrVNWVlZzLFmyJK+99lqd461atSrDhw/P3nvvXbNyee3atVm2bNkW11RZWZk333wz/fv3r9Xev3//vPjii7XaevbsWfPzzjvvXFNDkpx77rn5yU9+kv79++eyyy7L888/v9lcH3d/XQ444IDstNNONef9+vXL2rVr88Ybb2zp49V47rnncuKJJ2b33XfPF77whRx++OFJstm76tevX83PrVq1yj777FPzHubPn5/JkyfX+v0MGjQomzZtypIlS7a4lurq6hQKhTqvNWnSJOXl5bUOAAAAAGD7J0T/FDRr1ixdu3ZNz549c+2112bdunU125Ns2rQpO++8cxYsWFDrePnll3PeeefVOd7QoUMzf/78XHPNNZkzZ04WLFiQ1q1bf6J9wz8a6tYV9H6w9cyH+2/atClJ8v3vfz+vv/56TjvttCxatCh9+/bNddddt8X3/y21/jXvvfdeBg4cmLKystx111155plnMnXq1CTZonf14VrPOOOMWr+fhQsXZvHixdlzzz03u69Dhw5Zv3591qxZU6t91apVad++fb2eAQAAAADYvgnRt4LLLrssEydOzJtvvpnevXtn5cqVadiwYbp27VrraNOmTZ33z549O+eee26OO+647LfffmnSpElWr15dq0+jRo1SVVVVtIby8vLssssueeKJJ2q1z5kzJ927d6/X83Tq1CnDhw/P/fffn9GjR+eWW26p1/0ftXDhwrz//vs150899VTKysqy66671mucl156KatXr8748eNzyCGHpFu3bkVXwD/11FM1P69ZsyavvPJKunXrliTp3bt3/ud//mez30/Xrl3TuHHjzcbq06dPGjVqlJkzZ9a0rVixIi+88EIOPvjgej0DAAAAALB9E6JvBYcffnj222+//Ou//muOOuqo9OvXL4MHD87DDz+cpUuXZs6cObn00ksz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ddfVul5RUZFhw4alXbt2KS8vz4ABA7Jw4cKi815zzTU5+uijc9FFF6Vbt2656KKLcuSRR/7N28YAAAAAANsXIfpW8MwzzyRJbr/99qxYsaLmPPlL6Dtt2rQ8+OCDefDBB/P4449n/Pjxte6/44470qxZszz99NOZMGFCxo4dm5kzZ9Y519q1a3PYYYflzTffzPTp07Nw4cKcf/752bRpU53933333Zxwwgnp0aNHnn322VxxxRW54IIL6ux7/vnnZ9y4cXnxxRfTs2fPTJ06NSNGjMjo0aPzwgsv5Iwzzsh3v/vdPProo/V+R+edd14mTpyYZ555Ju3atctXvvKVbNiwod7jrF27Nscdd1x+85vf5LnnnsugQYNywgknZNmyZbX6/exnP0vPnj3z7LPP5qKLLsoPf/jDmndaXV2d448/PitXrsyMGTMyf/789O7dO0ceeWTefvvtOuedO3duBg4cWKtt0KBBmTNnTp39161bl8rKyloHAAAAALD9a1jqAj6rHnzwwZSVldVqu+CCC/KjH/0obdu2TZK0aNEiHTp0qNVn06ZNmTx5cr7whS8kSU477bTMmjUrP/3pT2v69OzZM5dddlmSZK+99sq///u/Z9asWTn66KM3q+P//t//mz/96U955pln0qpVqyRJ165di9Z99913p1Ao5JZbbknTpk2z77775g9/+EN+8IMfbNZ37NixteacOHFihg4dmjPPPDNJMmrUqDz11FOZOHFijjjiiOIvqw6XXXZZzdh33HFHdt1110ydOjUnn3xyvcY54IADcsABB9Sc/+QnP8nUqVMzffr0nH322TXt/fv3z4UXXpgk2XvvvfPkk0/m6quvztFHH51HH300ixYtyqpVq2q2yZk4cWKmTZuWX/3qVxk2bNhm865cuTLt27ev1da+ffusXLmyzjrHjRuXH//4x7Xadr/gwXo9KwAAAACw7VmJ/gkdccQRWbBgQa3jrLPO+qv3de7cuSZAT5Kdd945q1atqtWnZ8+etc7r6vOBBQsWpFevXjUB+l/z8ssvp2fPnmnatGlN25e+9KU6+/bt27fW+Ysvvpj+/fvXauvfv39efPHFLZr7w/r161fzc6tWrbLPPvt8onHee++9nH/++dl3333TokWLlJWV5aWXXtpsJfqH5/vg/IP55s+fn7Vr16Z169YpKyurOZYsWZLXXnut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UpcCAAAAABQhRIcSKRQKSXbIIV8dX+pSAAAAAIAihOhQaoVCOl/461JXAQAAAADUQYjOZ8pjjz2WQqGQd955Z4vvOfzwwzNy5Mi/ad7JkyenRYsWf9MYAAAAAMBnjxCdelu1alXOOOOM7LbbbmnSpEk6dOiQQYMGZe7cuaUubZt6/PHH06dPnzRt2jRdunTJTTfdVOqSAAAAAIBPWcNSF8Bnz0knnZQNGzbkjjvuSJcuXfLHP/4xs2bNyttvv13q0raZJUuW5LjjjssPfvCD3HXXXXnyySdz5plnpm3btjnppJNKXR4AAAAA8CmxEp16eeedd/LEE0/kyiuvzBFHHJHdd989X/rSl3LRRRfl+OOPT5JUVFRk2LBhadeuXcrLyzNgwIAsXLgwSVJdXZ2jjjoqxxxzTKqrq2vG3G233XLJJZfUu5633nor3/jGN7Lrrrtmp512So8ePXLPPfds1m/jxo05++yz06JFi7Ru3TqXXnppzfxJsn79+px//vnp2LFjmjVrloMOOiiPPfZY0Xlvuumm7LbbbrnmmmvSvXv3fP/738/pp5+eiRMn1tl/3bp1qaysrHUAAAAAANs/ITr1UlZWlrKyskybNi3r1q3b7Hp1dXWOP/74rFy5MjNmzMj8+fPTu3fvHHnkkXn77bdTKBRyxx135L//+79z7bXXJkmGDx+e9u3b5/LLL693PX/+85/Tp0+fPPjgg3nhhRcybNiwnHbaaXn66adr9bvjjjvSsGHDPP3007n22mtz9dVX5xe/+EXN9e9+97t58skn88tf/jLPP/98vv71r+eYY47J4sWL65x37ty5GThwYK22QYMGZd68edmwYcNm/ceNG5fmzZvXHJ06dar3swIAAAAA254QnXpp2LBhJk+enDvuuCMtWrRI//79c/HFF+f5559Pkjz66KNZtGhR7r333vTt2zd77bVXJk6cmBYtWuRXv/pVkqRjx475+c9/ngsuuCAXX3xxHnjggdx9991p1KhRvevp2LFjxowZkwMPPDBdunTJOeeck0GDBuXee++t1a9Tp065+uqrs88+++Rb3/pWzjnnnFx99dVJktdeey333HNP7r333hxyyCHZc889M2bMmPzDP/xDbr/99jrnXblyZdq3b1+rrX379tm4cWNWr169Wf+LLrooFRUVNccbb7xR72cFAAAAALY9e6JTbyeddFKOP/74zJ49O3Pnzs1DDz2UCRMm5Be/+EX+9Kc/Ze3atWndunWte95///289tprNedf//rXM3Xq1IwbNy433nhj9t57709US1VVVcaPH58pU6bkD3/4Q9atW5d169alWbNmtfp9+ctfTqFQqDnv169fJk2alKqqqjz77LOprq7erIZ169Zt9hwf9uHxktRsD/PR9iRp0qRJmjRpUu/nAwAAAABKS4jOJ9K0adMcffTROfroo/Mv//Iv+f73v5/LLrssZ555Znbeeec69xNv0aJFzc//+7//m/nz56dBgwZFt0zZEpMmTcrVV1+da665Jj169EizZs0ycuTIrF+/fovH2LRpUxo0aFBTz4eVlZXVeU+HDh2ycuXKWm2rVq1Kw4YNPzZ4BwAAAAA+W4TofCr23XffTJs2Lb17987KlSvTsGHDdO7cuWj/0aNHZ4cddsh//ud/5rjjjsvxxx+fAQMG1Hve2bNn58QTT8ypp56a5C+B+OLFi9O9e/da/Z566qnNzvfaa680aNAgvXr1SlVVVVatWpVDDjlki+bt169fHnjggVptjzzySPr27fuJtqUBAAAAALZP9kSnXt56660MGDAgd911V55//vksWbIk9957byZMmJATTzwxRx11VPr165fBgwfn4YcfztKlSzNnzpxceumlmTdvXpLk17/+dW677bbcfffdOfroo3PhhRfmO9/5TtasWVPverp27ZqZM2dmzpw5efHFF3PGGWdstkI8Sd54442MGjUqL7/8cu65555cd911GTFiRJJk7733zre+9a18+9vfzv33358lS5bkmWeeyZVXXpkZM2bUOe/w4cPz+9//PqNGjcqLL76Y2267LbfeemvGjBlT72dIkp023wEGAAAAANgOWIlOvZSVleWggw7K1Vdfnddeey0bNmxIp06d8oMf/CAXX3xxCoVCZsyYkUsuuSSnn356/vSnP6VDhw459NBD0759+/zpT3/K9773vVx++eXp3bt3kuSyyy7LI488kuHDh2fKlCn1qudHP/pRlixZkkGDBmWnnXbKsGHDMnjw4FRUVNTq9+1vfzvvv/9+vvSlL6VBgwY555xzMmzYsJrrt99+e37yk59k9OjR+cMf/pDWrVunX79+Oe644+qcd4899siMGTPywx/+MNdff3122WWXXHvttTnppJPq+UaTVFfnd+P/sf73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AADAFgjRodhKStLjx38qdhUAAAAAwBYI0T9HLrnkkvTp02eHmWdrderUKVdfffVnMtf8+fNTUlKSt99+e6vvGTx4cMaNG/ep1p05c2ZatWr1qeYAAAAAAD5/hOifgTVr1mTMmDHp0qVLGjdunA4dOuSYY47Jgw8++JmuM3HixDpzjho1KsOHD/9M1/iwOXPm5PDDD8+uu+6aZs2apUePHjnttNPyzDPP1Guep556KmecccY2qrJ4HnnkkfTr1y9NmjRJly5dMmPGjGKXBAAAAAB8xoTon9Irr7ySfv365aGHHsoVV1yRpUuX5v77789hhx2Ws88++zNdq0WLFmnduvVnOmch559/fk466aT06dMnv/vd7/KXv/wlN910U/baa6/84Ac/qNdcbdq0SbNmzbZRpcXx8ssv56ijjsohhxySZ555Jj/4wQ8yduzYzJkzp9ilAQAAAACfISH6p3TWWWelpKQkTz75ZE444YR07949++yzT8aPH5/HH3+8dty0adPSu3fvNG/ePB06dMhZZ52Vd955p/b6pnYh9957b7p3754mTZpkyJAhee2112rHfLgNyyWXXJJZs2blt7/9bUpKSlJSUpL58+cn+SAA7969e5o1a5YuXbrk4osvzoYNG7b6mR5//PFcccUVmTZtWqZNm5ZDDjkknTt3zle/+tVcdNFFmTt3bu3Yv/71rznuuOPStm3btGjRIgcccED+9Ke6/b3/sZ1LSUlJfvGLX+Qb3/hGmjVrlm7duuV3v/vdVtf3YW+88Ua+9a1v5Utf+lKaNWuW3r17Z/bs2ZuNq6qqyjnnnJNWrVqldevW+eEPf5iampra6++//37OO++8tG/fPs2bN89BBx1U+31uyYwZM7Lnnnvm6quvTs+ePfOv//qvOe2003LllVducfz69etTWVlZ5wAAAAAAdnxC9E/hzTffzP3335+zzz47zZs33+z6h3to77LLLpk+fXpeeOGFzJo1Kw899FDOO++8OuPfe++9XHbZZZk1a1YWLlyYysrKnHzyyVtce+LEiTnxxBPz9a9/PatXr87q1atz8MEHJ0latmyZmTNn5sUXX8zPf/7z3Hzzzbnqqqu2+rlmz56dFi1a5Kyzztri9ZKSktqf33nnnRx11FH505/+lGeeeSbDhg3LMccck5UrV37kGpdeemlOPPHEPP/88znqqKPy7W9/O2+++eZW17jJf//3f6dfv36577778sILL+SMM87IyJEj88QTT9QZN2vWrJSWluaJJ57I9OnTc9VVV+UXv/hF7fXvfOc7WbhwYe644448//zz+eY3v5mvf/3reemll7a47mOPPZahQ4fWOTds2LAsXrx4i7+wmDJlSsrLy2uPDh061PtZAQAAAIDtT4j+KaxYsSI1NTXZe++9P3bsuHHjcthhh6Vz5845/PDDM3ny5Nx11111xmzYsCHXXnttBg4cmH79+mXWrFlZtGhRnnzyyc3ma9GiRZo2bZrGjRunXbt2adeuXRo1apQk+eEPf5iDDz44nTp1yjHHHJMJEyZsttZH+Y//+I906dIlpaWlteemTZuWFi1a1B4VFRVJkv322y9nnnlmevfunW7duuUnP/lJunTp8rE7y0eNGpVvfetb6dq1a/793/8977777haf8+O0b98+EydOTJ8+fdKlS5eMGTMmw4YNy69//es64zp06JCrrroqPXr0yLe//e2MGTOm9hcLf/3rXzN79uz8+te/ziGHHJK99torEydOzFe+8pX88pe/3OK6a9asSdu2beuca9u2baqqqrJu3brNxl944YWpqKioPT78FwYAAAAAwI6r9OOHUMimdiAf3pldyMMPP5x///d/z4svvpjKyspUVVXlv//7v/Puu+/W7mIvLS1N//79a+/Ze++906pVqyxbtiwHHnjgVtf1m9/8JldffXVWrFiRd955J1VVVSkrK6vXs/3jM5122mk59thj88QTT+SUU06pffZ33303l156ae677768/vrrqaqqyt///veP3Ym+77771v7cvHnztGzZMmvXrq1XjUlSXV2dn/70p7nzzjvzX//1X1m/fn3Wr1+/2V8GDBgwoM4zDRw4MFOnTk11dXWefvrp1NTUpHv37nXuWb9+/Uf2oP/H7+ij/j80btw4jRs3rvfzAQAAAADFJUT/FLp165aSkpIsW7Ysw4cPLzju1VdfzVFHHZXRo0dn8uTJ2W233bJgwYJ897vf3az1x5YC2K0J6Td5/PHHc/LJJ+fSSy/NsGHDUl5enjvuuCNTp06t13MtWLAgGzZsSMOGDZN80JqmVatWWbVqVZ2x3//+9/PHP/4xV155Zbp27ZqmTZvmhBNOyPvvv/+Ra2yad5OSkpJs3Lhxq2vcZOrUqbnqqqty9dVX1/acHzdu3Meu/2EbN25MgwYNsmTJkjRo0KDOtRYtWmzxnnbt2mXNmjV1zq1duzalpaXb7eWvAAAAAMC2p53Lp7Dbbrtl2LBhue666/Luu+9udv3tt99OkixevDhVVVWZOnVqBgwYkO7du+f111/fbHxVVVUWL15c+3n58uV5++23C7aLadSoUaqrq+ucW7hwYTp27JiLLroo/fv3T7du3fLqq6/W67m+9a1v5Z133sn111//sWMfffTRjBo1Kt/4xjfSu3fvtGvXLq+88kq91vs0Hn300Rx33HE55ZRTst9++6VLly5b7GP+4Ze8bvrcrVu3NGjQIPvvv3+qq6uzdu3adO3atc7Rrl27La47cODAzJs3r865Bx54IP3799/sFwQAAAAAwOeXEP1Tuv7661NdXZ0DDzwwc+bMyUsvvZRly5Zl+vTpGThwYJJkr732SlVVVa655pr853/+Z2677bbMmDFjs7kaNmyYMWPG5IknnsjTTz+d73znOxkwYEDBVi6dOnXK888/n+XLl2fdunXZsGFDunbtmpUrV+aOO+7IX//610yfPj333HNPvZ5p4MCBmTBhQiZMmJDx48dnwYIFefXVV/P444/nlltuSUlJSXbZ5YP/Ol27ds3dd9+dZ599Ns8991xGjBjxiXaUf1Jdu3bNvHnzsmjRoixbtixnnnnmZjvEk+S1117L+PHjs3z58syePTvXXHNNvve97yVJunfvnm9/+9s59dRTc/fdd+fll1/OU089lcsvvzxz587d4rqjR4/Oq6++mvHjx2fZsmW59dZbc8stt2TixIn1f4iamvT/UtP63wcAAAAAbHNC9E+pc+fOefrpp3PYYYdlwoQJ6dWrV4YMGZIHH3wwN9xwQ5KkT58+mTZtWi6//PL06tUrt99+e6ZMmbLZXM2aNcv555+fESNGZODAgWnatGnuuOOOgmuffvrp6dGjR/r37582bdpk4cKFOe6443LuuefmnHPOSZ8+fbJo0aJcfPHF9X6uK6+8Mv/rf/2vPPPMMzn66KPTrVu3fPOb38zGjRvz2GOP1fZYv+qqq7Lrrrvm4IMPzjHHHJNhw4alb9++9V7vk7r44ovTt2/fDBs2LIMHD067du222Frn1FNPzd///vcceOCBOfvsszNmzJicccYZtdd/+ctf5tRTT82ECRPSo0eP2v7vHTp02OK6nTt3zty5czN/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AAAAAPD5I0T/jKxZsyZjxoxJly5d0rhx43To0CHHHHNMHnzwwc90nYkTJ9aZc9SoURk+fPhnukaSvPLKKykpKcmzzz77mc+9M1i/fn3GjBmT3XffPc2bN8+xxx6bVatWFbssAAAAAOAzJkT/DLzyyivp169fHnrooVxxxRVZunRp7r///hx22GE5++yzP9O1WrRokdatW3+mc1J/48aNyz333JM77rgjCxYsyDvvvJOjjz461dXVxS4NAAAAAPgMCdE/A2eddVZKSkry5JNP5oQTTkj37t2zzz77ZPz48Xn88cdrx02bNi29e/dO8+bN06FDh5x11ll55513aq/PnDkzrVq1yr333pvu3bunSZMmGTJkSF577bXaMR9uw3LJJZdk1qxZ+e1vf5uSkpKUlJRk/vz5SZLzzz8/3bt3T7NmzdKlS5dcfPHF2bBhw2f63DfccEP22muvNGrUKD169Mhtt91W5/oll1ySPffcM40bN84Xv/jFjB07tvba9ddfn27duqVJkyZp27ZtTjjhhE9Uw69+9av0798/LVu2TLt27TJixIisXbt2s3ELFy7MfvvtlyZNmuSggw7K0qV1e5AvWrQohx56aJo2bZoOHTpk7Nixeffdd7e4ZkVFRW655ZZMnTo1RxxxRPbff//86le/ytKlS/OnP/1pi/esX78+lZWVdQ4AAAAAYMcnRP+U3nzzzdx///05++yz07x5882ut2rVqvbnXXbZJdOnT88LL7yQWbNm5aGHHsp5551XZ/x7772Xyy67LLNmzcrChQtTWVmZk08+eYtrT5w4MSeeeGK+/vWvZ/Xq1Vm9enUOPvjgJEnLli0zc+bMvPjii/n5z3+em2++OVddddVn9tz33HNPvve972XChAl54YUXcuaZZ+Y73/lOHn744STJb37zm1x11VW58cYb89JLL+Xee+9N7969kySLFy/O2LFjM2nSpCxfvjz3339/Dj300E9Ux/vvv5/Jkyfnueeey7333puXX345o0aN2mzc97///Vx55ZV56qmnsscee+TYY4+t/aXC0qVLM2zYsPzLv/xLnn/++dx5551ZsGBBzjnnnC2uuWTJkmzYsCFDhw6tPffFL34xvXr1yqJFi7Z4z5QpU1JeXl57dOjQ4RM9LwAAAACwfZUWu4DPuxUrVqSmpiZ77733x4798AsxO3funMmTJ+ff/u3fcv3119ee37BhQ6699tocdNBBSZJZs2alZ8+eefLJJ3PggQfWma9FixZp2rRp1q9fn3bt2tW59sMf/rD2506dOmXChAm58847NwvtP6krr7wyo0aNyllnnZUktbvur7zyyhx22GFZuXJl2rVrlyOOOCINGzbMnnvuWVv/ypUr07x58xx99NFp2bJlOnbsmP333/8T1XHaaafV/tylS5dMnz49Bx54YN555520aNGi9tqPf/zjDBkyJMkH3+mXvvSl3HPPPTnxxBPzs5/9LCNGjKj99+nWrVumT5+er371q7nhhhvSpEmTOmuuWbMmjRo1yq677lrnfNu2bbNmzZot1nnhhRdm/PjxtZ8rKyvzlWuf+0TPDAAAAABsP3aif0o1NTVJkpKSko8d+/DDD2fIkCFp3759WrZsmVNPPTVvvPFGnbYhpaWl6d+/f+3nvffeO61atcqyZcvqVddvfvObfOUrX0m7du3SokWLXHzxxVm5cmW95vgoy5Yty6BBg+qcGzRoUG2d3/zmN/P3v/89Xbp0yemnn5577rknVVVVSZIhQ4akY8eO6dKlS0aOHJnbb78977333ieq45lnnslxxx2Xjh07pmXLlhk8eHCSbPasAwcOrP15t912S48ePWprXbJkSWbOnJkWLVrUHsOGDcvGjRvz8ssvb3UtNTU1Bf8fNG7cOGVlZXUOAAAAAGDHJ0T/lLp165aSkpKPDblfffXVHHXUUenVq1fmzJmTJUuW5LrrrkuSzXqVbymI3ZqQfpPHH388J598co488sjcd999eeaZZ3LRRRfl/fff3+o5tsY/1vThELlDhw5Zvnx5rrvuujRt2jRnnXVWDj300GzYsCEtW7bM008/ndmzZ+cLX/hCfvSjH2W//fbL22+/Xa/133333QwdOjQtWrTIr371qzz11FO55557kmSrnnVTrRs3bsyZZ56ZZ599tvZ47rnn8tJLL2Wvvfba7L527drl/fffz1tvvVXn/Nq1a9O2bdt6PQMAAAAAsGMTon9Ku+22W4YNG5brrrtuiy+i3BQML168OFVVVZk6dWoGDBiQ7t275/XXX99sfFVVVRYvXlz7efny5Xn77bcLtotp1KhRqqur65xbuHBhOnbsmIsuuij9+/dPt27d8uqrr36ax9xMz549s2DBgjrnFi1alJ49e9Z+btq0aY499thMnz498+fPz2OPPVb7Qs/S0tIcccQRueKKK/L888/nlVdeyUMPPVSvGv73//7fWbduXX7605/mkEMOyd57773Fl4omqfOC17feeiv/8R//Ufud9u3bN3/5y1/StWvXzY5GjRptNle/fv3SsGHDzJs3r/bc6tWr88ILL9T2pAcAAAAAdg56on8Grr/++hx88ME58MADM2nSpOy7776pqqrKvHnzcsMNN2TZsmXZa6+9UlVVlWuuuSbHHHNMFi5cmBkzZmw2V8OGDTNmzJhMnz49DRs2zDnnnJMBAwZs1g99k06dOuWPf/xjli9fntatW6e8vDxdu3bNypUrc8cdd+SAAw7IH/7wh9od2vW1fPnyzc59+ctfzve///2ceOKJ6du3b772ta/l97//fe6+++786U9/SpLMnDkz1dXVOeigg9KsWbPcdtttadq0aTp27Jj77rsv//mf/5lDDz00u+66a+bOnZuNGzemR48e9aptzz33TKNGjXLNNddk9OjReeGFFzJ58uQtjp00aVJat26dtm3b5qKLLsruu++e4cOHJ0nOP//8DBgwIGeffXZOP/30NG/ePMuWLcu8efNyzTXXbDZXeXl5vvvd72bChAlp3bp1dtttt0ycODG9e/fOEUccUa9nSJLU1OTXZx5Q//sAAAAAgG3OTvTPQOfOnfP000/nsMMOy4QJE9KrV68MGTIkDz74YG644YYkSZ8+fTJt2rRcfvnl6dWrV26//fZMmTJls7maNWuW888/PyNGjMjAgQPTtGnT3HHHHQXXPv3009OjR4/0798/bdq0ycKFC3Pcccfl3HPPzTnnnJM+ffpk0aJFufjiiz/Rs5188snZf//96xyvv/56hg8fnp///Of52c9+ln322Sc33nhjfvnLX9b2JG/VqlVuvvnmDBo0KPvuu28efPDB/P73v0/r1q3TqlWr3H333Tn88MPTs2fPzJgxI7Nnz84+++xTr9ratGmTmTNn5te//nW+/OUv56c//WmuvPLKLY796U9/mu9973vp169fVq9end/97ne1u8z33XffPPLII3nppZdyyCGHZP/998/FF1+cL3zhCwXXvuqqqzJ8+PCceOKJGTRoUJo1a5bf//73adCgQb2eIalJ6d8rc0AXbWAAAAAAYEdUUrPpzZgU3cyZMzNu3Lh69wbn86eysjLlu38hV1x2ScZed10av/JK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I0cWuywAAAAA4DMmRP+QOXPmZJ999knjxo3TqVOnTJ06tc71LbX0aNWqVWbOnJkkeeWVV1JSUpK77rorgwcPTpMmTfKrX/0qr776ao455pjsuuuuad68efbZZ5/MnTu3YB2dOnXK5MmTM2LEiLRo0SJf/OIXc801dV8+WVFRkTPOOCN77LFHysrKcvjhh+e5556rvX7JJZekT58+ufXWW9OlS5c0btw4NTU1deaoqalJmzZtMmfOnNpzffr0yR577FH7+bHHHkvDhg3zzjvvbNW6SfL73/8+/fr1S5MmTdKlS5dceumlqaqqKvi8kyZNStu2bfPss88WHFPItGnT0rt37zRv3jwdOnTIWWedVVvrh917773p3r17mjRpkiFDhuS11177xDUvW7Ys999/f37xi19k4MCBGThwYG6++ebcd999Wb58eb2fAQAAAADYcQnR/68lS5bkxBNPzMknn5ylS5fmkksuycUXX1wbkNfH+eefn7Fjx2bZsmUZNmxYzj777Kxfvz5//vOfs3Tp0lx++eVp0aLFR87xs5/9LPvuu2+efvrpXHjhhTn33HMzb968JB+E3//jf/yPrFmzJnPnzs2SJUvSt2/ffO1rX8ubb75ZO8eKFSty1113Zc6cOVsMqEtKSnLooYdm/vz5ST5oUfLiiy9mw4YNefHFF5N80PamX79+adGixVat+8c//jGnnHJKxo4dmxdffDE33nhjZs6cmcsuu2yz9WtqavK9730vt9xySxYsWJA+ffrU+7veZZddMn369LzwwguZNWtWHnrooZx33nl1xrz33nu57LLLMmvWrCxcuDCVlZU5+eSTa6/Xp+bkg18slJeX56CDDqo9N2DAgJSXl2fRokVbvGf9+vWprKyscwAAAAAAO77SYhewPdx3332bhdbV1dV1Pk+bNi1f+9rXcvHFFydJunfvnhdffDE/+9nPMmrUqHqtN27cuPzLv/xL7eeVK1fm+OOPT+/evZMkXbp0+dg5Bg0alAsuuKC2loULF+aqq67KkCFD8vDDD2fp0qVZu3ZtGjdunCS58sorc++99+Y3v/lNzjjjjCTJ+++/n9tuuy1t2rQpuM7gwYNz0003JUn+/Oc/Z7/99suee+6Z+fPn58tf/nLmz5+fwYMHJ8lWrXvZZZflggsuyP/8n/+z9lknT56c8847Lz/+8Y9r162qqsqpp56axYsXZ+HChfnSl760Vd/tPxo3blztz507d87kyZPzb//2b7n++utrz2/YsCHXXnttbeg9a9as9OzZM08++WQOPPDAra55kzVr1tTZrb/JHnvskTVr1myxzilTpuTSSy+tc67j+ffV/4EBAAAAgO3qn2In+mGHHZZnn322zvGLX/yizphly5Zl0KBBdc4NGjQoL7300maB+8fp379/nc9jx47NT37ykwwaNCg//vGP8/zzz3/sHAMHDtzs87Jly5J8sGv+nXfeSevWrdOiRYva4+WXX85f//rX2ns6duz4kQF68kGI/pe//CXr1q3LI488ksGDB2fw4MF55JFHUlVVlUWLFuWrX/3qVq+7ZMmSTJo0qc71008/PatXr857771Xu+65556bxx57LI8++ugnDtCTD4L9IUOGpH379mnZsmVOPfXUvPHGG3n33Xdrx5SWltb5N9l7773TqlWrOt/n1tT8YSUlJZudq6mp2eL5JLnwwgtTUVFRe/xjOxkAAAAAYMf0T7ETvXnz5unatWudc6tWrarzeUsB6D/2EC8pKdns3JZe2Nm8efM6n//1X/81w4YNyx/+8Ic88MADmTJlSqZOnZoxY8bU6zk21bdx48Z84QtfqG3D8mGtWrUqWMeW9OrVK61bt84jjzySRx55JJMmTUqHDh1y2WWX5amnnsrf//73fOUrX9nqdTdu3JhLL720zk78TZo0aVL785AhQzJ79uz88Y9/zLe//e2PrXNLXn311Rx11FEZPXp0Jk+enN122y0LFizId7/73c3+XbYUbn/4+9yamjdp165d/va3v212/v/8n/+Ttm3bbrHWxo0b1+7eBwAAAAA+P/4pQvSt8eUvfzkLFiyoc27RokXp3r17GjRokCRp06ZNVq9eXXv9pZdeKrhT+R916NAho0ePzujRo3PhhRfm5ptv/sgQ/fHHH9/s8957750k6du3b9asWZPS0tJ06tRpq9YvZFNf9N/+9rd54YUXcsghh6Rly5bZsGFDZsyYkb59+6Zly5ZbvW7fvn2zfPnyzX5p8Y+OPfbYHHPMMRkxYkQaNGhQp0f51lq8eHGqqqoyderU7LLLB39Ucdddd202rqqqKosXL86BBx6YJFm+fHnefvvtOt/n1tS8ycCBA1NRUVHbDiZJnnjiiVRUVOTggw+u93MAAAAAADsuIfr/NWHChBxwwAGZPHlyTjrppDz22GO59tpr6/TWPvzww3PttddmwIAB2bhxY84///w0bNjwY+ceN25cjjzyyHTv3j1vvfVWHnroofTs2fMj71m4cGGuuOKKDB8+PPPmzcuvf/3r/OEPf0iSHHHEERk4cGCGDx+eyy+/PD169Mjrr7+euXPnZvjw4Zu1k/k4gwcPzrnnnpv9998/ZWVlSZJDDz00t99+e8aPH187bmvW/dGPfpSjjz46HTp0yDe/+c3ssssuef7557N06dL85Cc/qbPuN77xjdx2220ZOXJkSktLc8IJJ9Sr7r322itVVVW55pprcswxx2ThwoWZMWPGZuMaNmyYMWPGZPr06WnYsGHOOeecDBgwoDYAr0/NSdKzZ898/etfz+mnn54bb7wxSXLGGWfk6KOPTo8ePer1DAAAAADAju2foif61ujbt2/uuuuu3HHHHenVq1d+9KMfZdKkSXVeKjp16tR06NAhhx56aEaMGJGJEyemWbNmHzt3dXV1zj777NrwtUePHnXC+S2ZMGFClixZkv333z+TJ0/O1KlTM2zYsCQf7B6fO3duDj300Jx22mnp3r17Tj755LzyyisF24l8lMMOOyzV1dW1LxBNkq9+9auprq6u7Ye+tesOGzYs9913X+bNm5cDDjggAwYMyLRp09KxY8ctrn3CCSdk1qxZGTlyZO6+++561d2nT59MmzYtl19+eXr16pXbb789U6ZM2Wxcs2bNcv7552fEiBEZOHBgmjZtmjvuuKP2en1rTpLbb789vXv3ztChQzN06NDsu+++ue222+pVf62amrz4oyGf7F4AAAAAYJsqqfnHJt8UXadOnTJu3LiMGzeu2KWwjVRWVqb3ZX9OSUnSbc2KzJvp3xoAAAAA6qOysjLl5eWpqKio7bCxLdiJDkWy8opjcnbrZbln4XXFLgUAAAAAKECIzg7j0UcfTYsWLQoeAAAAAADbmxeL7oBeeeWVYpdQFP3798+zzz5b7DK2uwbV1cUuAQAAAAAoQIjODqNp06bp2rVrscvY7nbZuLHYJQAAAAAABWjnAkXU/O23492+AAAAALDjEqJDEb3bqlVKSkqKXQYAAAAAUIAQHQAAAAAAChCiAwAAAABAAUJ0KKLWr7+eEj3RAQAAAGCHJUSHIjrh6qtTWlVV7DIAAAAAgAKE6FBkXiwKAAAAADsuIToUmQgdAAAAAHZcQnQAAAAAAChAiA4AAAAAAAUI0QEAAAAAoAAhOgAAAAAAFCBEBwAAAACAAoToAAAAAABQgBAdAAAAAAAKEKIDAAAAAEABQnQAAAAAAChAiA4AAAAAAAUI0QEAAAAAoAAhOgAAAAAAFCBEBwAAAACAAoToAPD/s3ffcVJVB//Hv7M725ct7C5t6dIWkLYgQWPBUCwxYlCIigajeUJiQgyWaEwe25PHR3+JQZLYBRUbKBYUoqBUBem9L7Bs72W2Tv/9scwwdQttAD/v12teM/fOnTtn2r3nfs+5ZwAAAAAAAIIgRAcAAAAAAAAAIAhCdAAAAAAAAAAAgiBEBwAAAAAAAAAgCEJ0AAAAAAAAAACCIEQHAAAAAAAAACAIQnQAAAAAAAAAAIIgRAcAAAAAAAAAIAhCdAAAAAAAAAAAgiBEBwAAAAAAAAAgCEJ0AAAAAAAAAACCMIa6AMD32sMPS2lpoS4FAAAAAAAAgCAI0YFQeuQRKSEh1KUAAAAAAAAAEATDuQAAAAAAAAAAEAQ90YEQsNvtkqS8vDwl0BMdAAAAAAAAaDOTySTpRNZ2phCiAyGQlZUlSRo0aFCISwIAAAAAAACc37KysjRq1Kgztn6D0+l0nrG1AwiosrJS7du3V25uLj3RAQAAAAAAgJNgMpnUrVs3VVRUKDk5+Yw9Dz3RgRAIDw+XJCUkJBCiAwAAAAAAAKfAlbWdKfyxKAAAAAAAAAAAQRCiA6H09NPSc8+FuhQAAAAAAAAAgmBMdCAETCaTEhMTVS0pIT1dyssLdZEAAAAAAACA84o7Y6uuPqNDJtMTHQAAAAAAAACAIAjRAQAAAAAAAAAIghAdAAAAAAAAAIAgCNEBAAAAAAAAAAiCEB0AAAAAAAAAgCAI0QEAAAAAAAAACIIQHQiBV199NdRFAAAAAAAAAC4IaWlp6t27t1566SW/+1544QX16tVL0dHRyszM1Nq1a9u8fkJ04CxbsGCBHn744VAXAwAAAAAAALggfPPNN/rTn/6kmTNnatGiRe75CxYs0H333adHH31U27Zt0+WXX65rr71WOTk5bVq/wel0Ok93oQEEN3r0aA0ePFhz585VtaSE9HQpLy/UxQIAAAAAAADOKyaTSYmJiaqurlZCQoJmzJihHTt2aP369ZKacrgRI0boxRdfdD8mIyNDkyZN0tNPP93q56EnOnAWWSwWbdmyRVdffXWoiwIAAAAAAABcUCZOnKjNmzfLarW6c7gJEyZ4LTNhwgStW7euTes1ns5CAmheWVmZ7Ha7OnToEOqiAAAAAAAAABeUjh07ymazqaysTE6nU3a7XR07dvRbpqioqE3rpSc6EAIGgyHURQAAAAAAAAAuKK6Ryz2zN98czul0tjmboyc6cBalpqYqPDxcxcXFoS4KAAAAAAAAcEEpKSmR0WhUSkqKnE6nwsPD/Xqdl5SU+PVObwk90YGzKDIyUpmZmVq5cmWoiwIAAAAAAABcUJYtW6aRI0cqIiLCncMtX77ca5nly5fr0ksvbdN66YkOnGWzZs3StGnTQl0MAAAAAAAA4IJw4MAB7dq1S6+//rree+899/xZs2bpjjvu0MiRIzVmzBi98sorysnJ0YwZM9q0fkJ04CybOnWq8vLy9MADD4S6KAAAAAAAAMB577LLLlN6errmzJmjyZMnu+dPnTpV5eXlevLJJ1VYWKjBgwdr6dKl6tGjR5vWb3C6RlsHcNaYTCYlJiaqWlJCerqUlxfqIgEAAAAAAADnFXfGVl2thISEM/Y8jIkOAAAAAAAAAEAQhOgAAAAAAAAAAARBiA4AAAAAAAAAQBCE6AAAAAAAAAAABEGIDgAAAAAAAABAEIToAAAAAAAAAAAEQYgOAAAAAAAAAEAQhOhACL387LOyRESEuhgAAAAAAAAAgiBEB0LMYjSGuggAAAAAAAAAgiBEBwAAAAAAAAAgCEJ0AAAAAAAAAACCIEQHAAAAAAAAACAIQnQgxAwOR6iLAAAAAAAAACAIQnQgxIx2e6iLAAAAAAAAACAIQnQAAAAAAAAAAIIgRAcAAAAAAAAAIAhCdCDE7GH8DAEAAAAAAIBzFekdECLdHlysf5f3l9XAzxAAAAAAAAA4V5HeASESFhYmKVxDb54d6qIAAAAAAAAACIIQHQg1g0E9H14S6lIAAAAAAAAACIAQHeeVxx9/XMOGDWvTYwwGgz755JNTet7p06dr0qRJp7QOAAAAAAAAAOcfQvTzXFFRkX73u9+pd+/eioqKUrdu3XTDDTfo66+/PqvlOB1B9fnmhRdeUK9evRQdHa3MzEytXbs21EUCAAAAAAAAcJoRop/HsrOzlZmZqRUrVujZZ5/Vrl279MUXX2js2LG69957Q108P1arNdRFOG0WLFig++67T48++qi2bdumyy+/XNdee61ycnJCXTQAAAAAAAAApxEh+nnsN7/5jQwGgzZu3Kibb75Z/fr106BBgzRr1ix99913kqScnBzdeOONio+PV0JCgqZMmaLi4mL3OgINU3Lffffpqquuck9fddVVmjlzph566CG1b99enTp10uOPP+6+v2fPnpKkm266SQaDwT3tGnpl7ty57p7yb775plJSUmQ2m72ec/Lkybrzzjvb/B5s2rRJ48ePV2pqqhITE3XllVdq69atfssVFhbq2muvVUxMjHr16qUPPvjA6/78/HxNnTpVycnJSklJ0Y033qjs7Oygz/vcc8/p7rvv1j333KOMjAzNnj1b3bp104svvtjm1wAAAAAAAADg3EWIfp6qqKjQF198oXvvvVdxcXF+9yclJcnpdGrSpEmqqKjQ6tWrtXz5ch0+fFhTp05t8/O9+eabiouL04YNG/Tss8/qySef1PLlyyU1BdmSNG/ePBUWFrqnJSkrK0sLFy7UokWLtH37dk2ZMkV2u12LFy92L1NWVqbPP/9cd911V5vLVVNTo5///Odau3atvvvuO/Xt21fXXXedampqvJb7y1/+osmTJ2vHjh2aNm2abr31Vu3bt0+SVF9fr7Fjxyo+Pl5r1qzRN998o/j4eF1zzTWyWCx+z2mxWLRlyxZNmDDBa/6ECRO0bt26gOU0m80ymUxeFwAAAAAAAADnPkL081RWVpacTqcGDBgQdJmvvvpKO3fu1LvvvqvMzEyNHj1a8+fP1+rVq72C7tYYMmSIHnvsMfXt21d33nmnRo4c6R53PS0tTVJTcN+pUyf3tNQUOM+fP1/Dhw/XkCFDFBMTo9tuu03z5s1zL/POO++oa9euXr3fW+vqq6/WtGnTlJGRoYyMDL388suqr6/X6tWrvZa75ZZbdM8996hfv3566qmnNHLkSP3zn/+UJL3//vsKCwvTa6+9posvvlgZGRmaN2+ecnJytGrVKr/nLCsrk91uV8eOHb3md+zYUUVFRQHL+fTTTysxMdF96datW5tfKwAAAAAAAICzjxD9POV0OiU1/aFnMPv27VO3bt28AtuBAwcqKSnJ3Qu7tYYMGeI13blzZ5WUlLT4uB49eniF6pL0y1/+UsuWLVN+fr6kph7s06dPb/a1BFNSUqIZM2aoX79+7oC6trbWb2zyMWPG+E273oMtW7YoKytL7dq1U3x8vOLj49W+fXs1Njbq8OHDQZ/bt7xOpzPoa3jkkUdUXV3tvuTm5rb5tQIAAAAAAAA4+4yhLgBOTt++fWUwGLRv3z6/Mc1dgoW6nvPDwsLcgbxLoD8AjYiI8Jo2GAxyOBwtljPQUDPDhw/X0KFD9dZbb2nixInatWuXPvvssxbXFcj06dNVWlqq2bNnq0ePHoqKitKYMWMCDsPiy/UeOBwOZWZm6p133vFbxrcBQJJSU1MVHh7u1+u8pKTEr3e6S1RUlKKiolrzkgAAAAAAAACcQ+iJfp5q3769Jk6cqH//+9+qq6vzu7+qqkoDBw5UTk6OV6/nvXv3qrq6WhkZGZKaQuLCwkKvx27fvr3N5YmIiJDdbm/18vfcc4/mzZunuXPnaty4cSc9vMnatWs1c+ZMXXfddRo0aJCioqJUVlbmt5zrj1Y9p11D4YwYMUKHDh1Shw4d1KdPH69LYmKi37oiIyOVmZnpHhPeZfny5br00ktP6nUAAAAAAAAAODcRop/HXnjhBdntdl1yySVatGiRDh06pH379mnOnDkaM2aMxo0bpyFDhuj222/X1q1btXHjRt1555268sorNXLkSElNY4pv3rxZb731lg4dOqTHHntMu3fvbnNZevbsqa+//lpFRUWqrKxscfnbb79d+fn5evXVV/WLX/yizc/n0qdPH82fP1/79u3Thg0bdPvttysmJsZvuQ8++EBz587VwYMH9dhjj2njxo367W9/6y5LamqqbrzxRq1du1ZHjx7V6tWr9fvf/155eXkBn3fWrFl67bXXNHfuXO3bt09/+MMflJOToxkzZpzU66CPOgAAAAAAAHBuIkQ/j/Xq1Utbt27V2LFjdf/992vw4MEaP368vv76a7344osyGAz65JNPlJycrCuuuELjxo1T7969tWDBAvc6Jk6cqL/85S966KGHNGrUKNXU1OjOO+9sc1n+/ve/a/ny5erWrZuGDx/e4vIJCQmaPHmy4uPjgw5H0xpz585VZWWlhg8frjvuuEMzZ85Uhw4d/JZ74okn9P7772vIkCF688039c4772jgwIGSpNjYWK1Zs0bdu3fXT3/6U2VkZOgXv/iFGhoalJCQEPB5p06dqtmzZ+vJJ5/UsGHDtGbNGi1dulQ9evRo+4twOnXg/65v++MAAAAAAAAAnHEGp++A2MBZMn78eGVkZGjOnDmhLspZZzKZdPFf18hgsGvbhw8oOetQqIsEAAAAAAAAnFdMJpMSExNVXV0dtDPs6UBPdJx1FRUVev/997VixQrde++9oS5OyOQ8e4PuTTmoWJv/H7kCAAAAAAAAODcYQ10AfP+MGDFClZWVeuaZZ9S/f3+v+wYNGqRjx44FfNzLL7+s22+//WwUEQAAAAAAAAAkEaIjBLKzs4Pet3TpUlmtgXtmd+zY8QyVCAAAAAAAAAACY0x0IARc4zXlJierc0yMwvPzQ10kAAAAAAAA4LzCmOjA98Dnv/qVbEZOCAEAAAAAAADOVYToQAjVtG8vGQyhLgYAAAAAAACAIAjRAQAAAAAAAAAIghAdAAAAAAAAAIAgCNGBEEopKJCB//YFAAAAAAAAzlmE6EAI3Tx7tow2W6iLAQAAAAAAACAIQnQgxAz8sSgAAAAAAABwziJEB0KMCB0AAAAAAAA4dxGiAwAAAAAAAAAQBCE6AAAAAAAAAABBEKIDAAAAAAAAABAEIToAAAAAAAAAAEEQogMAAAAAAAAAEAQhOgAAAAAAAAAAQRCiAwAAAAAAAAAQBCE6AAAAAAAAAABBEKIDAAAAAAAAABAEIToAAAAAAAAAAEEQogMAAAAAAAAAEAQhOgAAAAAAAAAAQRCiAwAAAAAAAAAQBCE6AAAAAAAAAABBEKIDAAAAAAAAABAEIToAAAAAAAAAAEEQogMAAAAAAAAAEAQhOgAAAAAAAAAAQRCiAwAAAAAAAAAQBCE6AAAAAAAAAABBEKIDAAAAAAAAABAEIToAAAAAAAAAAEEQogMAAAAAAAAAEAQhOgAAAAAAAAAAQRhDXQDge+3hh6W0tFCXAgAAAAAAAEAQhOhAKD3yiJSQEOpSAAAAAAAAAAiC4VwAAAAAAAAAAAiCnuhACNjtdklSXl6eEuiJDgAAAAAAALSZyWSSdCJrO1MI0YEQyMrKkiQNGjQoxCUBAAAAAAAAzm9ZWVkaNWrUGVu/wel0Os/Y2gEEVFlZqfbt2ys3N5ee6AAAAAAAAMBJMJlM6tatmyoqKpScnHzGnoee6EAIhIeHS5ISEhII0QEAAAAAAIBT4MrazhT+WBQAAAAAAAAAgCAI0YFQevpp6bnnQl0KAAAAAAAAAEEwJjoQAmuInwkAACAASURBVCaTSYmJiaqWlJCeLuXlhbpIAAAAAAAAwHnFnbFVV5/RIZPpiQ4AAAAAAAAAQBCE6AAAAAAAAAAABEGIDgAAAAAAAABAEIToAAAAAAAAAAAEQYgOAAAAAAAAAEAQhOgAAAAAAAAAAARBiA6EwKuvvhrqIgAAAAAAAAAXhLS0NPXu3VsvvfSS330vvPCCevXqpejoaGVmZmrt2rVtXj8hOnCWLViwQA8//HCoiwEAAAAAAABcEL755hv96U9/0syZM7Vo0SL3/AULFui+++7To48+qm3btunyyy/Xtddeq5ycnDat3+B0Op2nu9AAghs9erQGDx6suXPnqlpSQnq6lJcX6mIBAAAAAAAA5xWTyaTExERVV1crISFBM2bM0I4dO7R+/XpJTTnciBEj9OKLL7ofk5GRoUmTJunpp59u9fPQEx04iywWi7Zs2aKrr7461EUBAAAAAAAALigTJ07U5s2bZbVa3TnchAkTvJaZMGGC1q1b16b1Gk9nIQE0r6ysTHa7XR06dAh1UQAAAAAAAIALSseOHWWz2VRWVian0ym73a6OHTv6LVNUVNSm9dITHQgBg8EQ6iIAAAAAAAAAFxTXyOWe2ZtvDud0OtuczdETHTiLUlNTFR4eruLi4lAXBQAAAAAAALiglJSUyGg0KiUlRU6nU+Hh4X69zktKSvx6p7eEnujAWRQZGanMzEytXLky1EUBAAAAAAAALijLli3TyJEjFRER4c7hli9f7rXM8uXLdemll7ZpvfREB86yWbNmadq0aaEuBgAAAAAAAHBBOHDggHbt2qXXX39d7733nnv+rFmzdMcdd2jkyJEaM2aMXnnlFeXk5GjGjBltWj8hOnCWTZ06VXl5eXrggQdCXRQAAAAAAADgvHfZZZcpPT1dc+bM0eTJk93zp06dqvLycj355JMqLCzU4MGDtXTpUvXo0aNN6zc4XaOtAzhrTCaTEhMTVS0pIT1dyssLdZEAAAAAAACA84o7Y6uuVkJCwhl7HsZEBwAAAAAAAAAgCEJ0AAAAAAAAAACCIEQHAAAAAAAAACAIQnQAAAAAAAAAAIIgRAcAAAAAAAAAIAhCdAAAAAAAAAAAgjCGugAAgFPjcDiCXpxOp5xOp/t2sGvXbUnu6WAX13O6bns+JtC07/xTZTAYmp3nut2aa9/bgaZbmt/WS1hYU/t1WFhYs/M8nxcAAAAAAIQOIToAtJHT6ZTNZpPNZpPVapXdbndPu277Xrtue8632+1yOBzu277TgW57huOuaVzYfIP11k43t1xb1xlsXmsaAdraOOGa9pzvEmgZ39vNzQumNQ09gRqGgs0LdJ9vQ1Rr5jU3vy2PCVaeYOUOdN2a985XoM8v0LV04rvjuu05r7nvnef33fd2oGnPS3h4eNBp123fawDfXy1ti5vrjOA5vzW3W+qo0Nx832V8X0Og+YGWae10S49v6/O1xenonNEara1T+C7XlulA+8Zg85vrENLS/We6Awngy3d72NqOW4G2oYGug81zaek35LoOdizV3DEUvn8I0QFcsFxht9VqldVqlcViadVtz4A80LXNZgv1S2vRyYarnhUCV2DUUqXa8zkDXQeb11zZfbU25PS93ZrrQAeqLQWRrmlXJfBkKoOtPfCjoQQ4NxgMBq9QvbnbgS5Go9FrOiwszG+e0Wh0r8f3vkDLAWebZwji2bjvurR2Xmsvrufyvd3cdKDrlu4LNO07D0DL2hq6t9RYLjXfuO55f2sC/tZOu257vq6W5p1sqNqWcDjQMUlrj108j1uaOz5padvY0rYy0HNeiAJ1vGjptqtuFxER0epr1yUyMlIRERHU/0KMEB3AOctut8tsNvtdLBaLLBZL0Nue02f6oCdYONLSvOZ2uIGufS/N9a6kZfz80ZqKa0vzT/djXPfZbDZt27ZNkjRkyBCFhYWdUmNBayv4rT1w8Lz2fU9b874H+o20tsdYcw1IvvPbcqB2Kgd7gQ76gvUOC3bQ19qDwdZuX1pzMOi63dz3oaXvcGuuT/bi+3rOpUZUV6jf1ktzYb/vPqml/VKwfZRvoy28v9d2u73Z72agZdoSTvvOD3RGm+90sNuBHo+WtbRdDnS7uWvf5Ztbxrcczc0PNq8t2//mfuMn8/tv62PO5jamuTpGsPtaqquc7O1A1229z3O+q+4nnQilm6tvBeNblwNaqzX1YNe8QLc9pw0GQ7P1UM/bgX4TvkOXBuLaR57tuqHRaPQL1n2vo6Ki/C6RkZHu2xEREdTPThIhOoAzzmazqbGxMejFMyD3nLZaraetDJ47G8+L73zXtGcrsdFoDHjh9H6cqnO5wcNqtbpD9KFDhyoiIiLEJQLOrmABpm+gGOg62JBdbVnGZrP53ed78Hc+nB3l2ejre9uzt2GgHogtNRIFuva9LbU9xArWGOh5UN3WxpwLPVQKDw/3+nw9p131pUAdAFozz/P7EGwIJ9/vzckMbXaqF+nc3q8DzbFarZo/f74k6fbbb/er97XUSaI1HSo8e0K7Hns6OmgEeo6WHuO6HWie7za7tWFsWzid3h062tIY1tx2p7kQ+lQupzqsY7D1+Jb/XBNsX+/bEN7aeqLv8K6uelygYWA977Nare7vtmteQ0PDSb8ug8HgFa5HR0e36hIZGXnOflZnCyE6gDax2+1qbGxUQ0OD1yVQOO6af6oH+K7W1MjISPfF1dIabNpzntFo/N5v7AEAbWMwnOjpfa40InkeoAW6NBfQt+bALlgvZFfP6OZ6PTfXC9O1fvjzDBZaM87/qVyaO3PgZJbzvAC4sJ3LQSdwpvg2FISS3W53D0Hb0qW5s/VdjQCuzKYtwsLCFBUVpZiYmFZdoqOjL7jtBiE68D3ncDi8wvD6+nr3tW9Y7uolfjJcrZ3R0dHNnlrkuu15fS7stIDvG4PBoO7du7tvAwg9V2BpNJ57VfhAvbVaun2yPQ8DXQebJ7Xtj4gD9Zyz2+1asWKFJGncuHFep0EH6+ncXI9n38AcAACgOa6OHdHR0Se9DlfHBt+AvbnRAVzTrk4TrmyoNQwGg1eoHhsb63XxnBcTE3Ne5D7nXg0cwCmzWq3uINwzFA8WlLeVZyDuefENyT1vc+oPcH4xGo0aN25cqIsB4DxxLvXWOt08h5fr3LnzOXNmAgCcLnSeAC58BoPBPTRtbGxsmx5rs9ncgXpzoxC4Lq7/p3NlUq0RKGh3XeLi4tzXocyWCNGB84TFYvEKxn0Dcs/bJzOWuCsId51247oONhbWhXiQDAAAAADfN3SeANAcV/geFxfXquXtdrvMZrM7XPcdDth3xANJ7uny8vJm1x0eHu4Xrp+tUJ0QHQgxh9Op4sJC1dXV+QXinvPaOq54eHi4VyDuG457XkdFRRGKAwAAAAAA4JR4Bt0tcTgcMpvN7pESPK99R1WwWCyy2+2qqalRTU2Nex2n8kerbUGIDoRYfX29Fi1a1KpljUajVyjuGY7HxsZ63ec5XicAAAAAAABwLgkLC3PnWC2x2Wx+wxRnZ2fryJEjZ6GkhOjAOSEmJkbt2rXz6zHue2luDE6L3aEFm/O16Vip+qbF6Y4fdFNSDGN2FlQ3am1WuTq1i1JqfKSOljeoU0KkSmstGtwlQd2SW95Qo0lZrUXhYVJybGSoi3LSvtpfqk93FCk2MlzTLumqi9MTzurz2xwOFVWb1TEhShHhYcour9cnO4rkdDo1aWhn9Upt29h0Z5Ldbte3334rSbrssssUHh5+xp+zzmLT4h3Fyqtq0OV9UvSDXsmSmt4343l0tozd4VR42OltxPxib4m+2FOi5NgI3TG6q3qnep9KWWwyK7eyQYO6tFNMRLjMNru+2l+mijqLxvZLVddWbuvMNrvWZlXIYJAuvyhFkcbm33e7wylTo/Wc2y5UNVhVYjLrorS40/5ZSFK9xa4tOVU6VFKr6gabxvRu7/6+ng2HS+v0xd4SxUWG6ydDOql93Nl5/51Opz7dWaSVB8qVGh+pnw7vpEGdz+529HRwOJ2qbrAqKYYOB74arHbFRLRte19sMqvI1KiMzu0UGR54m1Fvseuj7YU6WlavH/RK1viMtNNR3DYprTXLYnMoPSm0db9as01rDpUrNjJcP+zT/qT2b3Vmmw4W16rAZNbRsnpdnJ6gK/q0P+vf53qLXUt3F6uwulFX9E3R0K6JXveX1piVVVqn4hqzRvdMVufEk/9DvO+bb7LK9cHWQknSlMwuuuyi9pKa9m8LtxQov6pRV/Rtrx/1D/xbstodWn2oXGW1Fl3VL0WdEnjvvy9Ka8z6aHuh6sx2XTOogwZ2bhfqIp0Wm7IrtfJguTonRmvS0E5qF31240yzza73NuVra261+neM1x2juyoh+tTzljqLTfuLatUrJbbF+lx5nUWbj1VpV75Jm3OqlZ4YrRlX9FTfDq0bYuVc12C16z97SlRsMuvKvikBv7tGo1Ht2rVTu3Yn7jObzWctRDc4ff++HsAZZzKZlJiYqGpJYUlJOrJ6tfr06XNK63zwoz1asrvEPd23Q5wW/dfI0x48OZ1Ozd+Qp493FCoyPEw//0E3XTe442l9jtPBbLNr1cFyPfjRXtkcgTdzBkn3j7tIv7i0+1kt27ojFXpnY76sdoduGtZZ1w7q4LfM5mNVevO7XNVZ7PrJkI6aNLSz1/2HSupUb7Hp4vQEhZ3hA6Y6s00PfrRXqw6VK8wgXT+4o576yYCgB8ou+VWN2nysShelxWpwl9CHLB9vL9Sji/e7pyPCDbrn0u4qqjGrf4d43ZLZpc3BQVt8e7hCjy7ep5Iai1LiIvSLMd31r9VH1WB1SJKijGF6485hfgegoWK1WjV//nxJ0h133HHKf6S3t7BGs1cc0eGyOo3umawHxl3kVVE02+z62etbdaC41j3vusEdtDWnWsUmsy7tnaynfjLgnD4IPFhSo9lfH9WarHKlxEXqd1f10s0jupzUukpqzDpYXKuBndtpye4SPf3lIfd9cZHhem3aUPd3ZfaKI3r92xzZnU4lRBv1158M0L9WH9WB4jpJkjHMoDlTBuuqfqnNPmd+VaPufHOrCqvNkqSuSdGaP32EOiZEBVz+q/2l+ut/Dqm4xqzeqbH63xszNOQkGqYOldTqo+1FMki6aVhnpcRFaMnuYllsDl0zqKPSk0585l/sLdHzK46oyGTW2H6p+u/r+ikptum7uSOvWt8ertDBkjqtOlgmi92pzolRev6Wwa3aBtWabdqUXaUuSdHq3zE+6HLrDlfovg92q9Zi95rfOzVWU0Z00c9Gpbe4fTwVz684ole+OSbXni01PlIL78k8K7+NOSuP6KW1x7zmDe+aoNlTBistPvD3pDnHKuo1d12uCqsbdVW/FP1sZLqq6q36YGuBimuaPuPL+6ScruJLavr8Hl9yQHlVjeqWHKOnbuivS3o23wByureHZ8vG7EptzzMpo1O8fnjRiYDV4XTqg60FWnmgTJ0So3XXmG4qNpn1xJKDOlper/4d4/Tkjwe0qqH5mWVZmr8hVw6nlBRj1Iu3DvHbj9kdTk15dZP2Hd8mSdL4Aal6fsrFsjkc+iarQlUNVnVOiNK/V2drX1GtuiVHKy7KqGhjmKZkpp9S6G61O/To4v1aurtYDqc0snui5ky52L3tOFWlNWb9a/VR7Sqo0cVdEvTbK3sqrV3g38OB4lrd9dZ2VTU0/X9R9/YxunVkukZ2T9LAzvFqsDoUG9l8XeTLvSX68+L9qvPZBt0yooue+HF/SU3b88LqRl2c3k5RxjNTt2m02nXrXO/99mPX99PUzHQVVDdq1od7tDPf5L7PGGbQX28coBsu7nRGynMhWXOoXL9+b6d7O2+Q9OKtQ5TZPVHXv7BBJTUW97Izr+qlGVf01KGSOhkMUp+0ODVY7Zr+5jbtKmga6iAizKDRvZJV1WDV0K4JuveKXn7f/9PdecLhdOrfq47qw22FMoYbdPuors0ec322q0irDparU0KUpl3StcUGlyJToz7aVqg6i13XD+54XgbFeZUNCgszqMtpbFwqqG7UlFc3q6K+aRsTbjDon1NbrgOeLo1Wu7JK6xQRHqbKeqsuTm+nuMhTD7vf2Zinv35xoi7cOzVWC+7JPC3r9mWxO1Rvsft1SPztgl1acaDMPT2wc7wW3jPylI7Fv9pfqj99uk+1Zrsiwg267+reumtMdxVWN+qLvSWKDA/T9YM7Kik2Ql/sLdEfP94rq9072zCGGfThL0eqXzN119OlpY5NFrvDXQfOqWjQ6kNlSo2P0o8GpLZYN26w2nWbzz7lx4M76JmbBiqrtF6mxqbtlzGsqSPaO5vyVFVv0zWD0pTSkK9vv/1WDz30kKqrq5WQcOayB0J0IARcIXppuFERCe10bNWqUwrRS2vMuuof6+T7Y375tiFBDz5zKxs0Z+VRHSiu1fBuiZo5tpdSWtGTbf6GXD39ZVarn+dsM9vsemLJQX2+q1h2h9PvPfEVEW7Qivsudb/2A8W1mrPyiA6X1Wt0zyT94eqLTttBltTUgn7X/O3yzPX/b1KGfjLkxAHF7gKTbpu71Sv8//O1fXXbqK4y2+yauXC31mZVSGqqQLx821CvkKklVfVWbc+rVq/UWPVoH6tGq13rjlQqJiJMo3sl+1UEnl2WpTe+y/Wad3X/VD11Q3+/3qe7C0yauy5XB4prlV1e737/fzqss/7nJwNaXcZA6sw2bciuUmp85EkFdZNf2aR9RbVB7+/YLlLzp49odY9dXxabQ298l6sNRyvVKzVWd1/a3X0A0Gi166p/rJOpsfn/NpiQkabZtwxudpmv9pdq/oY8We0OTR7eWZOHn1xI2xyLzaGPt+dr8ZotSo8066n/uklRkZGyO5zafKxKxnCDRnRLDNjj7aPthXp57TFVN1h17aAOemhCH9nsTo2fs97r9UcZwzRpaCf98rLuenHtMf1nT4nqfQIBX6N7JmnencNP++t1Ka01663v8pRdXq8xvZM1JbNLiw2RVQ1WldaY9cdP9ml/gO/X23cNV3mtVfnHe9dflNZyT5F563P0j6+PyOZwKiLcoPgooyrr/f8wemy/VN19aTdNe2Ob1/y4yHC/cCU2Mlzf3H+Zoj0aivYW1mjRtkI55dTkYV20YEu+PtxW6PW420al68/X9vN77oo6i66evV4Wu8M9r1NClJbPHNOmnt/bcqs1/a1t7gOCyHCDoo1hMpmbyh8TEaa5dzQ1Lr289pieX+ndy2RAx3gN7ZqgWrNdS3YXB3yOPmlxWvzrS5otx/ojFZq5cLf7fbv+eKX9WHmDPtpeKJvDqZuGdlKfDnGaMOc7FVQ3Bl3XtYM66O+TBwW93+ZwaF9hrTomRKlDkKAtmPc35+vJpQf95v/ysu76w48uavaxZptd8zfkaUtOtfqmxWn6mG6t6sF+rKJeX+8vU0KMUf/3xSHVWx1+y1wzsIOeuzn4a3YpNpn18Y5Cma0OXd6nvX63cLfXd/vWzC5ac7hC+VUn3t+Hxl+k6WNOT2N3ncWmq/+xXjXmE9uixBijVt53qddvw5Pd4dS2YxVatWyp2kdYmw3Raxpt2plvUs+U2Dbtl0+G0+nU2qwK7S2q0dD0BI3p3d7r/meWZelNj333jUM66ulJAyVJz311WK+ty3HflxRjlM3hVK35xHYjItygf065WFf0DV6/25RdqZ+/td1rXpQxTCvuG+NVP1h9sEy/fn+X3+Pfu2u4/ueLLO0prPG7z9fztwxWh3aRenZ5lvYW1srucKpLYrR+f3XvgJ0Rik1mJcdGKNIY5he+SN6Bc4PVrr9/dVhf7S9Vanykfn1Fz6C9e305nU5NenmTDpWcaCDo1yFOH/9qVMB95K/f26nVhwL/YVq7aKNqGm3qnRqrm4d31jWDOvg1jtVb7LrqH996fVYuBklf/u4HeuO7XL23KV9OSe1jIzRnymCN6J7UqtfTnLJai97dlKe8qkZd0SdFdodTj3y6z2uZlLgIrZ51mWa8u1PfHK7wW0f72Ait/MOlijiFhsad+SatO1KhHu1jNG5A2imt61RVN1j1nz0larDadc3ADgGD3+oGqxZtK1RxjVn9OsSpS2K0hnRNaDb8+817O7XK53tyVd8UNdrs+u5oldf8uMhw9esQp215TQ0Wl/RI0tj+qXpmmffxmqeh6Ql67+5Mr3ltaSzMKq3TS2uylVPZoMt6t9evLu/htw197dtjeu5r73227zGPy79WHdULa7Ld02nxkfr015cEPas6v6pBt7y6xd0YFW5o6iwwtv/ZCYpPlanRqt8v3K0N2U2f5dh+qfrb5IGnpTOP7/ZdkoakJ+h9n8/7TFh5oEyPfLrPq77fLsqo524e5D6T4mQ4nU5d/vdv3Q0DLk/d0N/vOGhvYY0WbMmX2ebQpKGd3WcJOp1O2Z3OFuv1723K1/Mrj8jUaNOwrgl69qaB6poco7zKBk3453d+yz9xfT+N6pmsnimBzybekVetN7/Lk6nRqusGd9RPh53oGGe2NR0fVjeceL/CDNI/bh6shz/ZpwZr03Y+JS5Sb08fpmlvbFd5ncXvOSRp0tBO+t8bM5p9baciu7xef/lsv7bkVKtbcowentDH6/d2pKxOf168X9vzTOqWHKPLeidr4dYCd+YxuEs7vfnz4UG/41UNVj2zLEuf7ijyu69XaqyOltVLktKTovXUDf31+4V7vOpyd10cq9iCzWclRD8r5z9Mnz5dVVVV+uSTT1q1/KpVqzR27FhVVlYqKenUd/jfV7yP57a0SX/SJX1HK85Srx9urNCvE2u14kC5ahttbT7tymxzBAyLGwMc6EpNLYR3vbXdHQJkldbpQHFt0J2rxebQ0j3F+nxXsTYdq/K7//8tP6yL0poqhWuzyvXJjiKV1piVEGPU8K6JmpKZ7j7dqthk1sKtBaqst2hiRgeNPs2nv7+y9pg+CbDxDcZqd+qet3fo/yZlqHNilKbN2+oOUXIqGpRT0aB5dw5XRZ1Fy/aVKsxg0ISBaSc9VM4H2wrl2zH+/c35XhXKRdsK/XrPL9hSoNtGddXCLQXuAF2SjpTV67mvDzcb2Hj6Ym+JHvlkn8w2hwxq2uGuPVyhstqmHfLAzvGad8dwr9Pjvsuu9FvPigNl2pFXrffvznSfFp1dXq8739imRpv/9+6j7YW6ZUTnVvWy3l1g0t+/OqzDZfW6pEeS/jihj/KqGvXr93a6K2Xdk2P02rQh6prc+uFPgp2R4FJcY9GNL23UJzMuOalhfv706T4t3dN0Nsj6o5VaebBMS34zWtER4fpsZ1GLAbrUFEz6Kqxu1H/2lCjSGKaU2Ajd/9Fe933bjx8wnUyQXt1g1We7imVqsCo9KVoHiuvUKSFKmT0Sde97u1RSa5GUqG2Sst/coX/cMlj3vL1Dxyqa/rRlUOd2em3aUCUe/y1Y7Q5tzK7Unz16+y/YUqDwMIMu7pLg9/rNNocWbCnQigNlKq0NXCH0tSG7SnUWW5t7ndSabdqRZ1L39jFBP1uzza5p87Ypt7Lp9X19oEz7i2r15A0nGn/qLDZZ7U4lxUQot7JBD320VzvyTQo3SPYgX68HF+1VoampZ/ffvjqs//nJAL8zSzwVVjfqua+OyH68j4PV7gwYoEvSyoNlsjn8f2++AbrUFLy8vznfHUZuzanS9Le2u38XH24tVK8U//fmcGmd3zxJ2nisyitAl6Qik1l3vrFVBdVmZXZP1EMT+rQYEr+xPterR43F7pTFfqL8DVaHXl57TOMz0vwCdEnaX1yr/cXBG8ekpn1c1fGhO1w2HavU6oPlCjMY9INeyfrrF4e83rclu0s0JD1Bs1cccZ8t8u6mPP198qBmA3RJ+mJPiR4a3ydgD/7dBSbNXLhbRSazwg0GTbskXX+c2LfZ9Xl6e2NewPmt+Q09sGivvj7eg2r1oXKtOlSuj381qtlGjzWHyvXbBbta3H6uO+Iflvk6VlGvqa9tcW8LXv32mN/+cIHHAZfLq9/mnLYQfUeeyeugS5KqG2zaXVCjkT3868rZ5fX61bs7lFvZKKmrxnSN0e1qer+q6q2KjQp396z6an+p/vhx00FvmEG6+9KWGzZOxaOL93vVd6Zd0lV/uqbpu1RsMmv+Bu/G7093FmvxzmJ1SohSeZ33NqWqwX//ZLU79Zv3duq9uzOD9kh37YM8mW0OzVl5VI9d3989r6jGHPDx/16T3aoAXWrqxLGvqNbrd5pT2aAHP9qjXimxGtCpqQfeweJa3f/RHh0urVdCtFH3j7soYN11s8e8p7845G5ALKmx6L6Fe/TBL0e619mcnfkmrwBdkg6W1OnFNdm6+7Lufr3Aj5QF3qZKTY0wTcvU69nlh/W35Yf10IQ+uvMH3dzLHC6tCxigS5JTTfWzdzflu+dV1Fv12JID+uzXo1t8Lc2pM9t069wt7gauz3c1fZd8VdRZZbU79N1R/7qjqzxV9U3B83ub8+VwSlNGdNbdl/UIuHyt2aa/f3VYqw+Vq0titPp3jNN7mwvc94/qkaS5dww7I8N2taSwulG3zt3i7hX+r1VH9fq0YRrW7URdt85s09TXtyinwvsP7yLDDfrHzcFD30Db3DqL3et76zl/m8dvceOxqoB1cU878k06VFKrvh2Cf8ctNof+teqoluwpVm2jXfVWu/p1iNO9V/bUnxcfcAfYuwtqlFvZoL95HIvUmm16YXW23zqX7C72C9EdTqfe8tleldZadN/CXZIMiosKV7toozZmV6my3qqr+qUoJTbC/fySZHc69co3x4K+n2W1Fn2wtUCltWaN65+m4d0Tz8jZp1/tL9VH2woVER6m20alBz3OfXF1tjtAl5rqc2+uz9WMK3qechnK6/3rA4GOL06n/UW1OlZer8eWHPCr79eYbfrvz/dr2e9a38nC6XRqX1GtIo1h6pMWJ6vD6fV5u8xdl6NnlmWpT1qcHhrfRxHhYbp9UpzmFAAAIABJREFU3lZ3/fSzncW6eXhn7Sow6VhFg8w2h67un6onfzwgYCe5vYU1euo/JzoqbM8z6U+f7tNb00fIHOQ39diSpuXH9kvVczcP9NrmrzpYpt8t3C378d/zuiOVMjVY3XWaY+UNXgG6JDmc0vMrj7gDdKlpCJdXv80NGqBL0q58//2x1HR8Y7E5T3nomz98uMfdQzy3skEzP9it5yYP0viMNO0trNG0eVvd253cyga9v8V7m7e7oEZLdxcHPGbNLq/X7fO2Bj3ecQXoUtNZVo8vOehXl1t6uFE3n6WR2s5KiP7888+rLR3eL730UhUWFiox8dw4pR04E2L7XyqHpJrodvpPVp3+k7XJfd+89bmaPWVQq3vBdE2O0ageSX4HCX/5bL8OFNfq3it7evWG2Xi00i8E2JlvUlZpnfr49JI8UlanX7y1/XigFlhWaZ1++vIm3XtlT79e6isOlOuzXcX64JcjVVVv1c2vbnbvAN7fXKCnbhigycM7q85i0xd7SmVqtGr8gDR3b2Cn06lle0u18ViVxvRO0tX905o9Zcq310ZrHCiu1Yx3dyotPsIvfNqQXaX1Ryv0hw/2uCsF/1x1RO/clanu7Vu3pV5xoEyzVx5RqanxlMdN2xlgB7kjr1rZ5fXqlhyj8DCD5m/I1bz1uWq0OnTj0E6a9aPeiggPk8Xm0FNLD7orAU5JH/s0OOwtrNXLa7P1i0u7u3so9k6JDdjDtrzOqvkb8vTw8QBo8c6iZivth8vqWwzRaxptuuftHe73eumeEhVUN8pqd3pVynIqG3TjS5v0xW9/oKTYCG3KbuodPbJHUtDvx+RhnfV/zfTKkZoCu/c35+vB8d5nhlhsjqBjQ28+VqXFO4vcAbpLYbVZH28v1Ge7igMGDYFMHHiiN92eghrN35CrpXtKmg2wXliTrbc35iku0qjpY7pp3ICWtxvldRZNeW2ze9gOT2GSfD/F3YW1+s37u9wBuiTtKazRvPW5+v3YXvrH10f0zqZ8Ndr8D+wXHg/Kg2ltgC5JSTERim7jaelrDpXr/kV7VGexyyDpjtFd3d9ZTysOlLsDdJdPdhTpgfEXKT7KqKe/PKSFWwpkszt1Zd8UVdRb3b/HYAG6JHeALjVVjJ/7+ohuuLhT0AOJ/UW17gC9NUprWv/+7fDYfry1Ic/re2VzOGUJ8EJGBQgWpaaGrEBcB/JL95Qop7JBC+8ZGbQ8VfVW7S1qOUArNJn14daCFpcLplNClBKijdqRV61nlmVpV0GN+4BGkl+PLZePtxe5A3SpKVR8+JO9Sowx+h30eHJKfg0MLv/9+QEVHf9O2J1OvbkhT1f2S21xPPWyWov2FdWoIcjZGle30PuuoLrRHaC7ZJXWaf2RCv2wmTPJnl95pMUAXZJ6eOwPj5TVadneUiXGROj6izu493vzN+R5bccDrTbQvJpGW7P/M5Bf1SC7Q1775PyqBsVHGd2NfC5dk2JkkLw6HoQZpC5Beo0/syzreIDeZH1eg97emK8VB8q0Lc+khGij7r2yl6aO7KLHPz/gPuh1OJvC/54pserRPkbDg5y5c7IOl9b5dRh4d1Oe7hrTTZ0To1Vkagz4XjrlvU1qiUNN28FgIXpGkJB5W2611/TV/VL0xBL/5Vrz3XLZnFMdcL7DKf3hw9367VW9dP3gjnrgo706XNp0wG1qtOnxzw9o6sh0v8ddlHaiEf7Tnd7vpd3p1Jd7S1oVogfr1fiv1dlavr9Ub08fobioE4fcl/RMVm5lYcDH+L02Sf9veZauHdzBPVxSr9RYxUSEewUsLilx/vVYSTpcWn9SDdBS05AZS3eXaE9hjdcZIk33+X+XIo0G3TZ3q1LjIwPe3zs1Vh9tL9TzK4+65/396yOKjzZqaqb/5/SXz/bry72l7ufb6vPd2nSsSmuzys/aUBWe5m/I8xpWpcHq0AtrsvXK7UNV1WDVjtxqbc2t9gvQpaYG40c+2as19/8wYP3ylhFd/HryX9U3JWCDUGxEmN8ZQnsKWq53thRoPrs8y6tBRpL2FdVq1od7/OoLX+4t1WPX29xB3aJthQGPCdYdrtBX+0u96qoOpzNgQLnxWODf/Jd7S9U5UANOvVW7C0zKrWzQJT2T3WcZV9VbNeW1ze7v4/vHG2G6JkXrb5MHuc9uLaxu1Gvf5mhtVrnqLXb17RCnv1zXz+8/aIJZsrtYD3p0dFlxoEzz7hwWsIF2S67/a9uS4//ZtiTQf1hMzOigj7d7b9PqzHbtK6xRxikOeVNaa9aibYWqqrdq4sAOGto1QX/8eF/QMwFdCqvNqqizBB3myus5asz6r3d3uIckjAg36K4x3TW2X6pfPeZoedNva3ueSf/17g6N7ZfqVf9yqqkDm6ev9pcpIvxgwA5oKw76H69szqnW40sOaEJGmi7u0s49RJKvlQfL9MraY/rd2N6Sms7Auvf9XX4dHd/fUqCfDOmk177N0e4CkyLDDX6/pyMeobFLVb1F3ZKjveoknoprzH51pX+tOqp563PVYLXrhxe11zM3ZZzUfxgVVDd6DbEiNZ2l9/sPdmtsvxTtyDO12HAnNR0Tdk+O0SifIfRe+eZY0AA9kJIA+xZzcwdjp9lZCdHbGoZHRkaqU6dze6w0p9Mpu90uo5H/ZsXpZ3c69fLaY60O0aWm01yfX3lEy/aVujdCpkabXliTrfSkaN3kcepQVJAwMND8f3x9pNkA3cXUaPMbJ9XlYEmde4fr24L66rfH9KP+qfrpK5vclZvnvjqif996sa7ok6Kfvb7FvbN6b3O+oowG9UmL1y9/2F0TMvxP3z3ZcWiLa8wqDtBTKtwgvb8p3+vAv7zOqtfX5bhPA27O7gKTfrfgxA60utH/4OZnPgd3Nw/v4tcb/dbjyww6Pj6yp5Iai6779wZ1SojSlBFdNGfViQOTN7/LVWxkuH53VS8VmhpbtYOauz5Xb36XpxuGdNSTN/TXr6/oqfVHKwM+tsjUNG5zncUuRwvBX25FgwqrG5sd43BtVrlfD4bteSYFquc3WB167uvD2pprcoefAzrFa+4dwwKeKXDnD7op0himxTuLFBMRrk3HqgIewNd4PP+WnCo9seSgskrr1L9jvJ74cX+voWQWbSvUXz7b77cOl3nrc5VX1XyvVYOaxjSektlFt41q+pyX7SvRrA/3BAxBfBVWm91h+Lbcar358+FKjInQvPU5Kqu16Or+qZqa2cUrwPlgS0HAAF3yD9Bdjgao0O0trNEjn+7T4p3BK882hzPggfTJSItvW8XP7nDq8SUH3KGCU03h8bWDOvg16FgCVP7sDqdsdqc+2VGkdzaeOJBsbWNdSlyEX4/PslqLGq12r1DF06Au7WQMM3h9NyPDDXJKfmMgStKQrgka0ztZb6zPbXH4qkEeB091Zv8QOK1dpHqmxGr1oXIZJI3tn6q7AoxfWllvUU5lgy6/qL3WBjhd32V3QY2yy+v9TnGtrLfoSGm9Hl28zy+UCeTqfoGDg9aIDA/To9f2VZ3Zrv96Z6dfz5VmHxtgn1hvcUhyKCLcEPDzkKTM7okBz3hotNoDNkh+tK1AvVJiA/Zcb7Ta9eDHe7Vif5mckgJFHtMuSW+28azeYteB4sAHfcFeg0tLve4lKdoYpvvHNfW4Xn2815Xr+zt3fY4W3J2p9nGRzfag8hRm8A7TJw5MCxj2NFjtuv/DPe7f4+ieSXrkmr768+L92l1Qo4jjY/A+NOFEo2j39jG6dVS6VzB05+huQcejDdRwPX/jieDM1GjT018eUod2kX6nmUty/w9H/47xen3a0NPyB7Cf7SrSHI8A0sXhbOqB3jkxWhmd4hUbGXb8+3pqciobggawl13UXn3T4nSo1L8n9q/e3aF/3DxYsZHhSmsXrcnDOmmRR7ATbQzTxIEd/IamOBnHKhr04Ed7lVvRoCyfsjglWW1NY9u6ejKmxEVo5vGgY3tudcDfQUKMUYdK6nSopFZDuyYGHZ5nUJd2Gt41wasnsMuB4qbGjtsv6eqeN+tHvZVb0aCNrdym2Z3SA4v26N8/G6L4KKPio4x65Jo++u/PDvgte+cPumpQJ/8Gj14psc0G6LVmmyrqrOrePkZOp1P1VrviIo3aW1ijn7+5LWAw7yk5JkKVx99bs83pHjrP9yytrsdPw5/uMwSQJC3ZVewXopttdn21L3gjvEuw+kxrNP1BdJ1GdEtsdjzheotdTyw5oNWHymUMN+hnmekqqPYPx7NK6/STFzfocGl9i/tkk9muvKqGgCHt+Iw0PXfzIC3Y3LStmjoyXeMHpOn1dTl+25qLu7TTBp/A2fW+R4aHyWJ3KCYizKtR+Ae9klsMhxfvDHxmb6AGd7vTqc92Fem2UU3fdd9OCZ7leuzzA7qiz4k/LjeGNY353JYziQM24IQbNOW1Lcdvh+lvkwdq3IA0fbqzKODyeVWN+tnrWxQT0bQtWn2o3OtYZ0N2lSa9tEkf/2qUeyi+rNI6Ld9XqsQYo358cUevzlHv+TQ42J1OLdxa4A7RLXaH3lifq28PV3gda7j08TkrwGJ36JPtRdqRX61Bndtp8vDO7l7O3x6u0FP/OaicigZldIrXUzcMcJ/FfkXfFD0wrrf+9tWJs/cqG6ya+voW/ee3o5v9Y2W7o+lPtwPtq0przbr5lc3uzi9vbchTemKU8lvx++ucGBVwnVUNVm3JqVL35Bj3WRFzVp34Tx+pqZ7yyjfH9JsreirKGKaVB8uVGh/hFybXmu1Bv3e+Vgbp3HOoOPCZQgu3FGjhlgLdN7aX+neM19bcahVWN3r9piTpxbXHtCarQrNvGax/rj4acBvgcDh199vbvV6jwSC11H9mbP80/eLS7pq1aI9X451Lndkuq92h8LBw92v0HCLpm8MVevrLLD1708DmnyiAdtHhCg+TAvUPWXmw9R0YdxXU6Odvbdd/X9fPK/9o7efmMrBzO+3IM3l1OjJIWl5z+oc4DeSsDCA2ffp0TZo0yT1tNps1c+ZMdejQQdHR0frhD3+oTZtO9MJdtWqVDAaDqqqaKhdvvPGGkpKS9OWXXyojI0Px8fG65pprVFhY6PWYSy65RHFxcUpKStJll12mY8dOBHovvviiLrroIkVGRqp///7u8b4kKTs7WwaDQdu3n9ihV1VVyWAwaNWqVV5l+vLLLzVy5EhFRUVp7dq1kqTFixdr5MiRio6OVmpqqn7605+612OxWPTQQw8pPT1dcXFxGj16tHudrfHtt9/qyiuvVGxsrJKTkzVx4kRVVla26n309fjjj2vYsGFe82bPnq2ePXu6p12f1f/+7/+qY8eOSkpK0hNPPCGbzaYHH3xQ7du3V9euXTV37ly/9++jjz7S2LFjFRsbq6FDh2r9+vWteo2t+Xw3bdqk8ePHKzU1VYmJibryyiu1detWr/UYDAa9/PLL+vGPf6zY2FhlZGRo/fr1ysrK0lVXXaW4uDiNGTNGhw8f9nrcZ599pszMTEVHR6t3797u13s6mc1mmUwmr0tLWnuw6ZIUG6HHru8f8NRKV6ttncWml9Zk6/V1OUr1CaPG9ksJeNB/sKT50+Q9NRfQvrUhV9UBKgymBpvmrc/xqtzYnU796ZN9+mJvsV9rr9nm1J7CGs36cI925Pm34k8a2nID3OierR/e6Kp+qQFDnrxWbOxNjVbd8/aOoJXoPmlx+vvkgX6nNQ7q0k5z7xim8QPSNKZXsm4dma6K4//EPXVkul/5XWFFkcmsV77xb8hYtq8pdE+MMSolrnU94e3OpuDwySUHdc/bO4KfXlVer0kvb9Lt87bq813FijIG79Xy8jfHNPGf3+nrA6VBlwl0qplvoOJp1UHv3sP7i2r1xvoTp4RW1Vv07LIs3fDiBt37/9m77/im6vUP4J+TnbRN23Tv3dKWVSij7ClDlgzFgYA4kJ/regEFvSo4L6Iiet1eVNwDcCAiyJANsmehpYUOunfTNvP3R5rTnJxzkpTN9Xm/Xnlltj1Jc9bzfb7P8/URdI7Q4st7uuPjaV1Fvyv2RrlNRjMe+uYoe0KeXdqAh745yslweG9bvuh7ATxbj2f1jcbWx/vi/wbGsYHud//klznwhBW2waa7VhzAmsMl2J5bhcW/nsZbrQMrW89UYvKH+0QHvFxRy/mHDNV6g8sAuie6RfFP+H2UwtnmZ8obRWvJCqlsNAieOAmVDxicEsAbfBmUHACdlwI7BQLFUjdJpUopg2VTOvKCnt2ifEUD6AAQ7KPEkyMS2QFBtVyCUK1KMMijUUhxb59ozBueiPUP98azo/m1yx39erwU3+wvwqsbcgQb12VE+uLd2ztj02NZ+M/UTgjVKvH2ljzkV7YNoGw9U4mhy3bh8e+PY1tuFTKjffHE8ARM6iq8Pr21hRvs+2jHOQx6YyemfXoQ5wWyaR4dHIv7+8XAS2ErkzGlWzge6B/LCUK1x929IjE0JQjbc6vcBtDt2x8pw2BG7yh2UEuI1Qq8M7UTNjyShbVzemFEWpCtsWj3cCy/VbivgUouRXwgvwTVL8fKMHz5LnwhUKrl0e+O4Y/WADoANpAeG6BGkLcCHcN8kBLiLTrj87PdBej/2nb839fHeN/ZUK3SbY3SQUmusztTQrzw9OhkbD1TiZ+OlOCtLXmcAaCimmZ82zqL4CaBxpAqgYGKJ25KRFqYNwK85JjSLYxTFsTRJ7sKOANae/Jr8NDXR3Gs9bjBaLbik90FvH3O06OS8dn0DDx5UyK+mNmNE2S30xvM+M/WPMHBYaGT19NlDS77ymSXNuBDgf1ze+3Oq8YTq4UHnwK9FUgL90FehR4TP/jLbQC9f6IOWg+md+/IrcLot/cInuQyDINPp2cIfq+35VRxarI7l41oNllwpqwRM3pHQd765ewaqcXwDhefUfzTkRL4qvnv6YdDJW2NPP1VWPt/vdiZl9tyhPcpBVV6jH9vL+auOoERb+3iBcgcvXdHFzw4IFZwwN/5eNFfo8Art6Ti7l6RGJCkg671uEwswQUA9p2rxasb2mbSiR2D/nKkDD1j/TDFoaG1ViXDv0Yn4XhxPVu6z9G7f+aj/2s7MPLt3RiybCcGvbETPV7Zhskf7sNrG3PdBtAB4L5+wuWWzFbgH0Pi8PqkNKyd0xO/Pdwbdc1mwf2ZfaDMYrViW04lVu4pRE6Z3m22tEzCoH/ixdVa/tfPpzDtk4NY/OtpTHh/Hz7eIbyONhpMGPPOHlsJvGbbgMM7f+YLJmKU1LUgx4MAOmDbv7vqnTAyLRgr7s7Ax9O6onesP6QiDSgVcil0Iv2bJnQNxfZ/9sUfj/bBvX2i0TfeH3MGxOItp/1UQ4sJH+4sxF/q7miOHwiDhXHZ4NZfIFnlhXVn2DI+feLF/yfVeiMKa7jf4WdGJ+OerCjEBWjgJ7AOO9OqZHhmdBKi/FXQaeQY3iEIuQ7JHgazBS/9dgYWqy0o7EqT0YI1h0sEz3VMFitW7LLNVtucXYGJ7+/DW1vy8MK6M5j0wV8orrFl6LaYhJOJHPfNz/2SjWWbzmLfuRqcq2ribC/iW3spOZr7w3E8tzYbqw+V4IV1Z/BQa1+J2iYjHvn2GDvD4WRJAx5xKBkCAH4C2cYmixXTPjnIOaZztOFkOYa+uRP9XtuBMe/s4ZUH+eHABd7sUU8C6EqpBIvHdOCty1tOV2Dosp14+JtjGP/ePrYc5GGR2bvv/JmPFpMFf/6zD76e1R0ygW3DYA9npIT6CmfEl9S5Pr//ZHchFo/tgF/m9EK/BOFZfMcv1OPFdadRIvLZ9E3QcQLogO2YcnznEMHXq+US3Ns3GuM7h6C+2YQ5A2Lx/LgU3jFdv0Qdpy+BUE+K7TnCiS9FNU2ocRHH+f1EuWAA/WI5nz+76q03tEMgBie3PW+fXSqXMVDJJexxZHWLFacNV6eE9TVJo54/fz5++OEHfPrpp4iJicGSJUswYsQI5OTkQKcT3uDq9XosXboUK1euhEQiwV133YW5c+fiiy++gMlkwoQJE3Dffffhq6++gsFgwN69e9lgxOrVq/Hoo49i2bJlGDZsGH755RfMnDkTkZGRGDx4cLuXfenSpYiPj4efnx/Wrl2LiRMn4qmnnsLKlSthMBiwdm3bfMWZM2ciPz8fX3/9NcLDw7F69WqMHDkSR48eRVKS6xqYhw4dwtChQ3HPPfdg+fLlkMlk2Lx5M8yttUIv5nP0xKZNmxAZGYk///wTO3bswKxZs7Br1y4MGDAAe/bswTfffIPZs2dj+PDhiIpqq9H31FNPYenSpUhKSsJTTz2F22+/HTk5OR5l67v6/wJAfX09pk+fjuXLlwMAXnvtNYwePRpnzpyBj09bZt3zzz+P119/Ha+//jqeeOIJ3HHHHYiPj8eCBQsQHR2Ne+65Bw899BDWrVsHAFi/fj3uuusuLF++HP3790dubi7uv/9+AMCzzz570Z+hs5dffhmLFi3iPBY9bw0Yifhnc5NDVlllowEM4FEGU7CPktc8MdjH9nMPfX2UU38t2EeBjuFaZERqRQMUGVG+gtOGQrXKdmWX5lc24YWxgVi5p4ATHByeGoh1TmUwANuUvOWb+PVv7SxWW81a52zSKd3D8fVfRcguE685qTeakR7m47YOp59ahtsyw/DgV8d4z/WN98emU+VYsbsAp0oaIJcyiNFpcLZCD7VCgplZ0TBbrC7rYBfVNIkGMDJj/NA92hf3f3EYX7VmoWBrPh4ZFIcVd2fgxIV6bDxVzguGCk2l8lfL8cTqE/j1WBmssLIZlGIjyo5sTQeFSRhw6oAW17agY7gPov3VOFelx/EL/AEYk8WKJb/n8mZZrD50ASv3FsJosiDYR8EJUsQFaDgHxo6MAm9gb341DhXYpt6ddli+3HI99p2rwbqHeiPAS4F5wxNRVNOMXa0H/F4KKZ4ckciWVThYUMsr2VDRYMCKneehkEnQLyHA5QEHAIT7qnjLHuWvQlGNbaq9XMLwSigBntcuVMsYNJm4/6ELtc28YOGX+4owvksoHvagtrEY58yjuAC14P/YEzE6NdLCfJAV54+JGWEY+uZOlNa1vef6FjMSAoX/72crGjEkJRAnS+rx85FSqOQSTMoIE8ysKahuEvyeCzWm1ark+HR6V7y9JR95rY1FHx4Uxy6vs4QgL+SUN4oOdhgtVqSH+eC5MSlYtuksqvVGdI3U4uUJ7pv+3NEjEqPSg5FbrkdKiDeGvSk8KK03mLHjbBVu6x6BSH81bsuMQLXeiLe35gku16mSRixa21br0Tnz5fO9hbi9RwSySxvx8DfH2AyPb/YX4+tZ3ZEQqMGitdmc7cxf52vho5Rhs8jgxrrjZZiZFYWO4VqcrWjkNRlzdmv3CPhrFHhkcBys1rbAysCkAET6qdzO7HCmby154O6knGFss1AYAOO7hLCB1Y92nOdltgK2QE+3aF82C+2Nya4bAtv9a1Qy5nx9hJe9ZLJY8eqGXIzuGMxOtT1T1sDpgWFnBVBS24JmkwXlDQYc+zkbZfUG3N8vBj8dKcG+czVICPJCXkUjVjlk/ppbP8/4QA06hHjjoUFxomWq7J4ckYiGFhM2n66AlGFgdPpi5Vc2cfogCFUsKWud5TUqPQQXalvw2R5bubFbuoQiK0GHJ1afQG2TCRLGVuoiI8oX03pF8X+RkwMCU9+FMuf35tcgIdAL/915HhdqmzEgKRB39IgQnGJ/rkqPn46U4tdjpZzyVe7EBmjwwtgU/OOH46L9aDyp/W2xWtFstIgGr34VmTKfHOyFJ25KhFzC4Lm12YJTwR1F+avx6sQ0fLq7EO86ZKoBtu9IkJeCU8e8vMGAD7afw/Nj+Q3C/TRy/PxgT4x5Zy/ynIIzB87XwGq1YldeNVYd4pcw2XeuBj/O7okHB8RCbzAjRKvEI9/yG5B6ymwFHhkUh+fXnRF9zfnqZuw/V8vWThZqJh7opcDX+9uW12IFlm7MwZhOIfBRyVBa14LjF+qRGuqNMF8VfFQyPDwoDrnljfj9JHfQxjk4UFzbjCkf/sUJ2CmlDAYm6TCsQzD+yC7HhpPlvG34ltZsv5zyRnywXbgE1ZnyRmw5U4lFY1IwMysKe/OrsfpwCe77/LBt/WeAmX2i8Xhrrf7952s4A52Ox/UnLjR4NLtTJmEQ7qcSLAUHACkhPpzmtF4i3+3bukfAarXi4W+OepzZGOarxNxhiRfVEP5kia2xtqO3t+ZjcrdwXhmo+z8/LHjOs+V0JTKitMgubYTBZEG4rwrnPcyoZAAsGpvCq5lv99uJMry56SyKa5shlTBoNloQH6iBRqCOd7XeiPv7x+CV9fyShTqNnD1/fHxYW4+GhhYTlvyeg73nqhEf6IWz5Y040Xr+uOVMFfYX1OOerGjBMoi9Yv3wwrgOGP/uXl4ZmfUnytA7zh9DUgLRM9YPe/P522l/jRyRTsdsKrkUc4cnYu7wRKw5fAELfxSf5QkADwyIwdTMSEzNtJ2/frq7ABtOcde9kroW1DWZMKxD4EUlj9jVNpnwR3Y5/vVTNm+QePR/dsPQ2itnXOcQTvlGBrbs6JV7CjEyLQi/HOVuvy1WYFrPCPRLDEBWvD+nNFR+pR4bT3GzpXecrcaJC/Uorm3mlXMqrm3GmbJGtgSV0CAHYPtMZn91BL/+Xy9O+cuKBgPmrTrBJgqdrdDjse+PceqYV7sZjBCjVkh4g7AWqxWLfz3NORZadegCxncOQVqYt+BxF2BLDHxnaz7mDU/EbZnhnFmi3aJ8cW/faET6q/DZ7kIU1jTxZoPazRkYx7mfV6HHl/sKcbTY9XlNTZMRK/cUYGpmBP4xNB7HW/8fzrblVmJ85zDefi811Bv5IvvnfokB+FEgMSnER4lJGaGY9slBtiyjUibBff1ibGVPa5oxMCmAl3AQ6c8fcItyeKymyYiDBTV4789zOFpcDykD9IrzR8dwH2RE+WGgw3Z7R65wjwu7AYkyuN9JAAAgAElEQVQ6/OlwvJoQqEFFgwG1zSbBmZtVjQYcLKjFK+vPIKe8ERlRvhiRFoTfT5Tz4g76FjM+ntYVZ8oaUNtkwqd7CvDHKfczlK6kqx5Eb2xsxLvvvotPPvkEo0aNAgB8+OGH2LBhAz7++GPMmzdP8OeMRiPee+89JCTYNv4PPfQQFi9eDACoq6tDbW0txowZwz6fmtp2krp06VLMmDEDc+bMAQA8/vjj2L17N5YuXdruIPrixYsxfPhw9v6LL76IqVOncgKkXbp0AQDk5ubiq6++QmFhIcLDbRkBc+fOxW+//YYVK1bgpZdecvm3lixZgszMTLzzzjvsY+npttpNF/s5ekKn02H58uWQSCRISUnBkiVLoNfrsXDhQgDAggUL8Morr2DHjh2YOnUq+3Nz587FzTffDABYtGgR0tPTkZOTgw4d+Afczlz9fwFgyJAhnNe///778Pf3x9atWzFmzBj28ZkzZ+LWW28FADzxxBPIysrCv/71L4wYMQIA8Oijj2LmzJns61988UU8+eSTmD59OgAgPj4ezz//PObPn39Zg+gLFizA448/zt6vq6tD5hNfQhXFrcWllEmgkEowMj0IfmoZHvzqCM5X6ZFXaRutHpEWjJfGdxA94AKAB/rFYE9eNRvk8FXLML13FM6UNXAC6IAtm+q+vtEu61Q/PjQBOeWNONEaLAvVKnFbZjimdo/Ah9vP4YeDxYIlSpxF+qnQLdoPSyel4/1t51CtN6Bfgg5/nqlEqUhN3/wq18ESoWxVCcNg5cxu+PqvIuSUNyIz2g8mixXv/pnPjp4fLbKdyIa1DgQIxcA6hvtg8ZgOePjbo5yRfcA2bfLXE2XsZ2JX07pjq2+x1VHt5ybDr8loQZ6LOuF78muw4yx3p/Xutnzc2TOCnbLnfFAolzJQShk0tGagySQMIvxUnJ2yxWzF7Znh6Bbli3mrT7pcRlfhVqEg3bHieltdQxdz0gqqmzg12zaeKmenvAsRC/oyAHw1cuidRvqrGg2474tDaBTIwmtoMWPyB/vQ0GJGtE6NZ29OwWIvBaQSIFTLPdgQmtUBgK3juXRDLjKifXFApE6rv0aOF8Z3wBsbz3KmbTsOShkttoPIISmB8HbITr4pLYhzYChEytgOAl9zCEqq5RKkh/vwarBbrFZsPFku+llKGEAuASQS7nRfqYSB2WKFSibhDdCIBZicS5HYl1Ull6LRYEaPGD8suSWNLV1hslg4AXS7IG+FYBA92EeJHblVePCrI+zf+XxvIb6e1Z0zNdlksWDeqhO8APodPSLQMVy4vm9SsDfeFMgivrNnJNYeL2OzfryVUrwwrgO8FDJsz62EQirBC+tOc6atD0wKgEouRVacP3I7haCkrgU3dwzxuGmtv0aBzBjbiW+vOD/eyZTdL0dLkRntx041Hts5FG9v5Zd6EOK8mjYZLfj9RDnWHS/jTJHUG8z4Ym8hHh4UKxxIcDM74GyFHh3DtTgkUAPUUb8EHRtAljAMp3bJ+hPlLgPoPiqZ4PRoe/ZzergPrxa2neMBvhXAqkMlGN85FD1i/W3ZcSsP8b7TwzoEsQH03PJGvLYxFydLGtA1Sot5wxNFy4NUNxldNv3OLdcjM0aBw4W1uO+Lw4KvY8AfMP1yXyEu1DazzRHFmC1WLByR5HFTb1+1HG/d1gnNRjNWHbyAF37jBied69gKbfodM8Pu6RONe5yy7TY/1gezPj+EgwV12J1XjVs/2o+5wxJ4r3OWFOzN20dKJQwsTidrIT5KTsOqHWerUVTTxOuNcLSoDtM/FW6O7Uq3KF+MSAtGZYMBFheDlO56gqw+dAFvbDqLigYDesT44aXxqbwsVW+BWSyBXnLUt5gw6/PDiNapUSCwbfbXyNElUou4AA1CtSqM72IrQzA5I5QXRDdbrFAKzDwSKullxzAMMqJ8eUH05BBvPPrdMdHtV0LrNttHJWNnggi9R09N6RYGHw96zzjOEhvdMRhf/1XEznyUMgxu7hSMT3dzZ4Y0GS0orGnCgfO23gomixVShsE/hsaz39V/jU5GY4sJO85Ww1spxX19Y6BWSPHt/mJ0i/ZFYpAXvvmriJfx2mK24veTFWhoMeOju7rizc1n8b7T8Z29FN4xN7WujxTWYliHIAR6K7BsU55T80XbwODApAB0j/bDPoEApyOx3g6OTBYr5q86iYFJAbzBVJVMgs6RbfvboppmbDhVDj+1jNPMtm+8DiPTg7HrbJXHAfRHB8Xi/v6x7e410Nhiwn93nsdGgXIOLSYLLtQ246cjJfixtfTfyPRgwVI9gO04+GBBHR4eGItZ/WIw5YO/3P59CQNM7xWFWX2jRZOjdp6txOPfH2fv2/dPZyv08BWYPXKsuB539oiAt1LKaTqrkks4sxLa3qcZMz47yJ7HOJ/PAMCuvGqcLmvAhC6hsFit0BvM0GkU6BqlxeiOIVBIJYgW6Jnk75ARv2JaV3y6uwCf7i5gz/XUcikWjUkRHMA1mi349Zjt/GpMx2DsPFuJar2Zt9+OD1BjQucwfH+gGEq5BENTgtA9mr99TQzygp9GDqtH8wLEKWQSPPwNP6EKaEswqWky4uu/ivDczclYd7wMBdVNKK5twdYzldh6phI/HhbeNyeH+Ahm4YolYdU3mxCm5R9fyCQMgnwUyC5twNkKPbpG+iDQS4EKgaSc81VNOHmhAenhPtiTV41XN+Ygp6yRlyxzobYFZyv0SAq2badHpAbh8z2F7f40a5pMWPzracTo1MhqnaFQ22QUPJ48WdKARwbHY29+jWiynr2R+cIRSciMtvWESwzywoQuoWAYBqPSQzAqPQTP/5rNaULsaEzHtqzv1zbm4mOR3jhCXl6fgxMXGvDyhFSse6gXnlh9Ar+d4A7gmC222MfItGBsOFkOpUwCvdHMS3S002nkuLljCHbnVfMG9/KrmrBgzSlOX6MWkwWbT1fgt4d6iy7nmI4h+GDbObYSgEzC4LEhtjJmn+8txGsbcznHcGarrfHpzrPVAM5zmpULJRM5yozxwy1dw3C0qA4dI7QY3iEIZosV56qa0NBixJ0rDnJeL5VI8MAXh9HQOtNp59lqJAZ5YWznUF4ZqeTW719SsDeMZgs2f3ZtA+jANQii5+bmwmg0om/fvuxjcrkcPXv2xMmT4sEcjUbDBlgBICwsDGVltuxVnU6HGTNmYMSIERg+fDiGDRuGW2+9FWFhthrQJ0+eZLOL7fr27Ys333yz3cufmcltkHXo0CHcd999gq89cOAArFYrkpO506tbWloQECA+ZcHxd0+ZMkXwuYv9HD2Rnp4OicNIaEhICDp2bAsqSKVSBAQEsJ+/XefOndnb9s++rKzMoyC6q/+v/fc888wz2LRpE0pLS2E2m6HX63H+PHeD57gMISG2jWOnTp04jzU3N6Ourg5arRb79+/Hvn378OKLL7KvMZvNaG5uhl6vh0bDn556MZRKJZRKbkDOOYAukwBb/tEHvmo55nx1BN8d4G5ALVZbRl9ysBce6B8r+re6Rvnixwd7Yu2xUiikEoztHIIgbyVOiGRAuauHGuyjxPf39cCZskZoFBJOtuf4LqH4XGR6a2KQBjmtjZ1kEobN6huZFoyRrc0TX15/RjSA7o6fWo5JAgeGgO0E7N6+Mez9hhaTYHbGhboWpId5c7JpGQBf3tMNXSJ9UVLXLDhlWiZlcLTAfUZZs0DTJ0cahZQNfAkpqeP/baPZiqd/OoU3b+2EtDAfTOkWju8cGu4ZzVYwACZ0DkWgtwJjOoVg8a+neb/nbIUeC0Ym4d1t5zgZa47BpAhfFYo8qIfr7IyLWQCALYPFcUqfc2aGs3NVTfDXyDknnfGBGjw+NAGf7y3k1cIUKhHhyP6dO1nSgGmfHMDvD2cJ1iKOD7QdkInVaLTCFlSY3C0MG09WIMBbjvv7xUAtl6LFZMHApAB4K2WY3C3cZe1TvcGMnLJGdI1qOwH459AEmMxWrDteBq1Khnv6RGHfuVp21oZCyuCNKekYnByE5BBv/HSkFF5KKe7sEQG1XIpVB0s4WSqTM8IFu9DbWazAyPQQXgaEfQBJKKgkFCuSSxh8e293rDtRhhW7CmA0WxHso8DyWzuiQ4gP9EYzr2SKTCJBtyhfXrMwvcgU8ud+yUZysBcnqNnQYsbnewvxzOi2LIy8iibBA/CMqPY3Ldd5KbDmgR7YlF2BJqMZQ1IC2WBvXGsZg1CtEss25+FCbTP6JwbgqZFJKK9vwW0f72e/u7+fLMf84QmYkeU6OOjsqZHJKK83cA6g7fafr8XYd/diRFoQXp2YhpyyhosqBWRXVNMkWAe6vtmEw4XC2z1Xf07KMGzGb36leIZeRpQWSyaK12kU6lnBALi1ezgCvRWY0i0cK/cU4pPdBbYgoEyCx4bEo2dr86LC6mbR5RTaDx4prkePWH9kxvjh23szsWLXeRwpqoNEwmBociBmD4gFYKulP+vzQ+zsmfUnynG2Qo81D/QQDO68v+2cy8/rr3PVyIzxwyvrczjBEEd9E/yx3SkryGi28hqJCZEyQHxQ+49tVHIpJncPx9tb8zjBL1e8lVLMGRDrcpouYKs7frCA+537z9Z83JYZ7rKOs1AZBOf/ZUakFhKGX27u2/3FmDs8gZP59/HO8+0KoA9M0mFSRjgGJQdAJpFgU3aFYK1gwFam5N6+4uv9mbIGPP3TKfa7se9cDRb+eBKfTs/gvG5qZgRWHbrACbBUOGTanW8tEeA8mLFgRBLGdOJPFReaCQgIl1bLinc98DJnYCz2natmB4oTg7zQNdIXKxxKrDkK9Faws30cjessvN/tGeuHigYDL8veTy1DXIAGN3cKwe2ZEbwm386UMgknw04pk2LlzG7YlF2BsroWDEgKgFouxRd7izj7GX+NHDqNAq9uyGUfN1utWLbpLG7uGIIQrRIBXgp8eFdXNLSYoJBJ8MKvp/GGw6zKecMTXK4/O89Wo67ZiGk9I7H2aCk7cCiXMuxnlR4mPAhst7s1MP7nmUpOAN3RoYJadI/2c7stEBt4dB4sN5gtiNKpcVv3cKw+dAEGsxValQzP3pzM7vOr9QZM/Xg/ZwAjOdgLUzMjMCnDdt7oaRY3APSO111Us96HvjnKSyqyC/FRYsfZKrzmUEt6v0iihKP1J8vx4MA46I3ut41alQzzBEpI2RlMFjz+/QnR52ubTQjXKlHsdHzzR3YF1szuiVd/z8GJkgYkBWuwcGQyrw9RfqUed396ULC0j7PKRiPWHC7Bsinpgn2oHugXg3/+0Na/J8BLjlu7t52bMQyDGVnRmJEVjdK6FuRV6tEx3Ed0oOwf3x932YgesO1XHh4cj5Fv72a3g+G+efjynm54ZHAc3t92Di2tswJeGm+LQfhrFOgQ6i3Yk8ROIZXgwf62zN68Sj3MFiu8lVI80D+WN9AoxmC2YltOFd6Y3BEDXt/Bee5ESQOy4vzZ2a+A7fManipcfqRjuA9idGpOwkqoVolu0b6QSyUYmRaM3060betmZEXhrS15+Ha/7ZxQJmHw1KgkfLj9HIoFyopYrFZUNhoEZ8bZKWUShGjbBnq6Rfvh5QmpePqnU7zEgs4RPvjXqBTM/uqwaPb3H9kVbBDdTy1HbICad1yYEeWLcF8VNjyShV+PleLDHefYeIKdvc8OwzAYkRaMEWn87ybQ1nTUWYTDOpFT3tiuALrdz0dLMG94AnReCmTG+PGC6ACwYtd5bJ/bD/++JRVj3tkDfbV4XKBHa6nW58d2wLlKPa+RtlAJnrwK19vL5VvyOKV0TRYr6pqNKKppxivrz7g9V/hqXxHu6xuNIB8l7uoViXUnygSbJAO2UqJ/PNqH87+QShgkBXsJlt9tMVng/K3MKW/Ekzcl4q9zNWx2f2yAGvc4HDvJJAx81fJ2NSG9Eq56EN1eF8p5p2e1Wl3uCOVy7kk3wzCcGlMrVqzAI488gt9++w3ffPMNnn76aWzYsAG9e/d2+/fsAWPH32c0Cv9jvLy4AS+1WnxUxmKxQCqVYv/+/ZBKuRmz3t7uu727+t0X8zlKJBJezUyh9yn0WQs9ZrFwN7iOr7Evg/NrxLj7/86YMQPl5eVYtmwZYmJioFQqkZWVBYPBIPp77MvgarksFgsWLVrEqWNvp1KJ16i7EkwW28lMn3idy6y+3XnVLoPogG2a7myn16SGevMOIOICNB4HlOyj0I6+O3BBsBlfmK8SP9zfA7vOVqOkrgX9EnWCWXlC2VJ2o9KCAIbhnOBp5BIMSw1CsLctG14s089ZQ4tJNJsmK16H2AAN/jhVgSAfJR4eFMdmi4llGHt60J4e5oOseB3+u/M8Gg1mhGoVqKg3wGS1ZQw/e3Oyy4yrvvE6wSlQG05V4HxVE6J1aiwakwKVXIKVe9oypgxmK3IrGvFSa9mIKH81L0AZrVNDJpHgs+kZ+GR3AXLKGm2jyF1CsTu/Gmq5FP0SdfjHd8d5ndDby1clQ6PBDJPFasvwd5oO7qrmot1zNycjv7IJNU1GjEwLRqfWchyVjQa2/uLFMJqtWH+iDHf3Fi4d8OK4DhiRGoTjF+pRUtfCy/Ks1hsxd1gCFo8RHywsb3Bd9kgtl/BOZFVyKZ69OYUzNW9qZiRm9YlGcW0zesT4sdON+ycG8IJUn07vio92nEdZfQuGdgjCjN5RaDaZ8dGO86IZ5Jfa/FPCAB9N64KUUB+khPrgvn4x0LeYEeTTNkAhVjri+bEd8Mh3R5FbrodCKsGsvtEwmiw4UswP2jabLIIn2jV67slrqFbJa6QF2LZ7F0Mll7L18oUMTA7EQKdajB8KdJtfsaug3UH0EK0SX83qjm05lZj7w3HUCwRX158ox9CUcvSO83fZ9NIVP7UM23OrBIMmozuGuC394UyrkmH+TW1Z2c7bIbsOod748M6uLrcFg5MDsHzzWc5Bf79EHWcd+eewBMwZGItmo5kd5LCLD9TARykV/OzCfZW8k8xO4W2l4jqEeuPfIo2Y9uZX82pknylrRHZp27RqR+5KQP14pBSzB8RxSlHZhWmVWH5rJ3gppZj4/j5OwHdUejC+2S+cceXo0SHxCPIWnmXjjkIqQXygl+j/0dlL41NdNjy1ExqsbjKaUd1oFA2iG80Wt4GNLhE+WDmzm2CteYuVH2h2VUbLeaaDt1KKZ0ancAJUOoGeIyq5bT8rNvvF7s8c/nq371wNr6FntE6N7+7LxHf7i7Hq0AXBZqYWqy34Yc8w65egw4g04f/D7yJNG4trmjEyLYgtTTIiLdjlIABgK1/2y5xe2JNXDamEQc9Yf3x/UPg7+ezNyRjXORRqgdIUveP8odPIee8tyFuJ2AANL4g+oUsYp6794ORAhPgoOQNvwT4K1DaZEBugxtxhiZz9EmD7bo90CsQ8e3MyXlmfg0aDGTqNHK9MSEVBdRPveNJkseJMWQNnMN5bKcPJknreMcNbm/OwZGIaJ/nBkUYhhUomhUIlwaoHemDd8TLUNRkxPDUY0a2ZgEnBXhiSEigabDxWXI+qRoPL7WmHUNv2bUhKIGcavnMPGrEAepC3AhcEjhmevTkFC0YmoaCqCZH+Ks7M2V+OlvH6xBTXNuPW7uFsWYk+8TqXfXDspvWMcDuzQ0hueaNoAD3KX41XJqTi2V/4DVudEzmc2Y/HOkf4oqjG9SDO2M6uezdty610WQpSLrWVz3EOoqvlUoT7qvDGFNelxd7akudRAN3R7yfKBYPoI9KCEearYhM+JmWEIdhHeP8SolUKJqzYnSppcBtAH50ejIUjk/DML9mcz6i4thmf7S7A3OGJuD0zAmX1BiQEaTjlSpbckoa5PxzH6bJGaFUy3Nc3GiPSg7D+eDmaTRbc3DEEsQEaPNA6QG7XaDDhtY3cfmqAbdsuNKtse24VGg0mwZmfYzuFoEesH7bnVCFap8b9/WI4jUkdSRgG79/RBUs25OBIUR3SQr0xb3gi5K0llpZOSsO4ziHILm1AtyhfKGQS3P7ftn5xJosVy/44KzhDD7AlEuVWNIoG0AHgwQGxvOUb1zkU/9maxyv1mhrqg/RwH8zqE40lG/ifFwBOPzaGYfDiuFQ89t0xlDcYIJMwuK9fDHt+J5UwGNs5FL3i/HHnigPscYKfWo45A/iDr0KEZk/JJAynrOLpUtflW5KDvQSPxyzWtkH7rDjhmef1LWY0Gy3wUclQJTKwANi2u7c7NNnsk6DjBdHTwnxaM8TbuBvYXiuQpLZ041k8PjTBo2Qbs9WK8gYDgnxsA8RrHuiB306U4YV1Z3iJTs6z9h05l8cSI2UYJId449f/64XtuVWQShj0ifdnv/OA7Xszu38sXl4vXrLtarjqQfTExEQoFAps374dd9xxBwBbIPevv/7CY489dkm/OyMjAxkZGViwYAGysrLw5Zdfonfv3khNTcX27dtx9913s6/duXMnW/IlKMh2YHnhwgVkZNgyPhybjLrSuXNn/PHHH5wSIY7LYzabUVZWhv79+7f7/dh/t3MtbeDiPsegoCCUlJRwAu2evs9rbdu2bXjnnXcwevRoAEBBQQEqKi59Kke3bt2QnZ2NxETxjICrqclo5k2Nduauk7oYhmHw/h2d8faWPBwpqkNqqA8eHhTntmGPK2IbTJ1GAblUwqmBKKRvAn/AQOclx8SuYXiw9SAmyl+NHblViNGpMXtArGD9aHdCtSp0CvfhNSllYMuMt5dGcSaUJS6TMLitW7hogN3OTy3HnT0jEemvZgOCXkoZqvUG5JbrkRziJXrgZBfko8SDA2KxfDO/NEN5Qwt7QmUSCJY5Bhkf6B+DbTmV7AlpoLeCzdTXeSnY2ph2o9LbAoVv3toR23KqkFveiF6x/lh3vBT/FckqEzN3eAJGdwxBQ7OJd+IKAHf1jMS642Wi3/1QrRKDkgM5O1G7yRlhKK1rwZf7imAyW9hpYc5UMgkSgzQ4JjBl1VVgkGEYNjiaU97IqxHfJULr9v84ODkQr288yymPYSeXMlgwIsnt77BLC/MR/b466hiuxTKnEykvhQxfzeqOHw4U48cjJZzMDinD4Nbu4aInl0Bb/Wwpw+C2zHBolVK8v/08rK0/v2BkInrEtB3QeSlkLrNIHcUFavDzg72QX6mHzksOrUqOar0BW85UCtZFjNapUVPEXZ9HpnODRD4qGR4dHM+p53lL11CPPr/LxblmpdhjnuqfGID1j2Thj1MVWLw2m1ef+lhxHcZ0CsEzo1Pw8nrbQa5WJYO3UiZYs9HZwpFJeHINfzZb/wQdhqQEwmyxCp5Q3NEjAoFeCqw/WQZ/jQL39o1GlL+t8aVjkyOhhn/dorT477QMtwH6pGBvvDIhDW9sykVpXQsGJAZg0Vh+w0m1XCoYmFPJpfj3LWl49LtjnAGGsZ1CMDkjDI98dwy1Tbaa6Lf3iGAz2N0RGwj1FmmOOzI9mNNs0Zn9pL97tC+vKdT8mxKR3hrcX3G3baCsstGAYR2CML13FE6VNHBmKyhlEpjMFpittuDcs6OT3QZw3LktM5wTRJcwQEqIN2+Ksr9G7rKxnKM+8TpeZmt8oMZlneOaJqNgANmRVi2HhGEwMi0Yb2/J5/SKmNA1lLdPGZ4azDtxjfBTISvOHw/0j8GO3GpsPFWOQG8FZmZF8zI8h6YEISXEi9Mw7L6+MW4D6Pa/4yzASw6VQPm+KH81Hh+WgC/28QcH7D6b3hVFtS0I9lagW7R4oy2xXgFVeiPmDU/EMzenAFa4nMnkSC6VoJ/DoG7vOH9eUDQ+UIPbuos37QWAYalBbEalXb8EHXrH+WNvfjWbvZgU7MUL7msUUnw+MwMf7jiP/Ao9esf7Y2ZWlMtSiEImZYRjZHowimuaEROggUIqQX2ziTc4q5BKBPcrQjNvmk0WRPmr8cK4Dvhw+zkUVjdxyoDN6hPNbgu9lTLBUhyALeAiFnCUSxlb35ZEHZKCvXizA8d1DkGf1uCLTCLBe3d0wb78alyoa0HvOD8cL25ATnkjdudVc7JmAVtga8nENBTVNHMCi3Ipg1u6hrGfh9Dxs8HE3/cZTFbbYFbrqUiUvxovjkvFqxtyUKU3Ii5AhfyqZs6AV7ROzSvF5Cmhxo8A8PqkdIxICwLDMIINXgcl6aBWyHC4sA7hvipsz61kvwNShmEbQj46OB5HiurYgF+knwoDkwJwqNDWY2dEWjAeHuw6AOiiGiIA4N6+MegcocWBgiPseiWXMh433z5dJhw0DPdVIiNCi/UnS2Gycj+DAG/xnlydI7SCfWbaq0rvPrAf5a+GzkshmA1rP+/xVcsFg3aJQV5YM7snyutb4KuWs+vZLIeZy0K8FDIMTArgnK/KJQx+mdML//rpFG8d0SikiPBTo3OEljOrz1spxeCUQPiq5bxENzHROjXevq2T4HMShsGg5EAMak3e+EFgwLLWxWCMj0omONAmkzB4ZHAc+sTrRI+XbYH0fPY+A9uxFADMyIpGlE6Nz3YX4q9zNew5U5ivkrc9y4jyxcZHs3C6tBGhvkrB5tzBPkr89GBPbM6ugNFsxZCUQMGZUkK6RGp5PSr+OSyB0w+lS6T4d7dDiBe+v78HNp60lR11bLLcN96fHRSKC9Tgwf4xeNepBFfPGD92WW9KC+LMFmRga8we6K3EXT0jOcec03pFYvfZanYWc2KQF14cl4pvDxRjReuMuS4RWjwzmlvtwplQjKeiwYDUUG/RWUaOIv1UnGQQlVyKCV3CkBjkhds/3s/Zd03OEN5XAbaZAzelBnH+F/0SdDCaLZzzztsyw9mBliEp4g1ip/WKRFKwF7acrkBlowFrj7keuLwSrnoQ3cvLCw8++CDmzZsHnU6H6Ohotub2rFmzLup35uXl4YMPPsC4ceMQHh6O7OxsnD59mg2az5s3D7feeiu6deuGoUOH4ueff8aqVauwceNGALaM7969e+OVV15BbGwsKioq8PTTT3v0t3/UH94AACAASURBVJ999lkMHToUCQkJmDp1KkwmE9atW4f58+cjOTkZd955J+6++2689tpryMjIQEVFBTZt2oROnTqxAWExCxYsQKdOnTBnzhzMnj0bCoUCmzdvxpQpUxAYGNjuz3HQoEEoLy/HkiVLMHnyZPz2229Yt24dtNpL3/FdaYmJiVi5ciUyMzNRV1eHefPmuczU99QzzzyDMWPGICoqClOmTIFEIsGRI0dw9OhRvPDCC5dhycWZ9bWQatqyKJQy24lemK9wwBew7YDcZQK5EuStxCIXGbPtdUvXUHyzv4g3munpwdTUzAjkVtgCkxYLMCItCM+P68AJgDw2JJ6t33Uplk3piGd+th3sWKy2E/y5wxJcBtRSQrxxR48IfNlasoaBbUr02M6hyC5twOd7C2FoLZ+iVcnYbBq1QooJXULZbAyFVMI2Z3Ksc+yJe7Ki8cXeQs7UuGAfBecz7puga2s+2sqxY3hsgAa/PtQLG09VQMLYavl6WnNUwjAYmBTATn1OD7dl12/KLsfxC/WobDAgwl+Ns+V6wbp7UgmDgUmBooEtwBYY/npWd3y7vxhGswW94/zx89FSHC2qQ1qYj61ZmkhzK4Zh8NCgODzUOs153Lt7BYOujw2JR+84f9zy/j7OQYNGIcWodOFpgM4Sg7yweGwHLNuUi8pGW5PIVyaIl5+wiw3Q4LXJaXj9j7MorrGV+nhoYCzKGwxID/cRPGi8UvzUcszqG4O7ekVi2aY8bDhZjgAvOR4cEItByYGobDTirc15qG/hBwoeHxKPQcm2EwD7Qc64LmE4VdqAzhFaj2eGuBLrkCXur1Fg9QM98OwvpzjNEaUMg4UjkmxTlw+XQCWX4O5eUYJZUnf3jkLfBB3+Ol+D5GDviyrlcilGpYfgox3nOcHB8V0uLYjpp5ZjUkYY20DSkT2DZ1JGGEakBeFcZRPigzRoNprx+h9nsTO3CrrW//fJkgbOSVC3KF+M7hiCNYdLeNkuM7JsMzWkEgaf3J2BT3cXYHd+NbQqGab1jGSDZvYSJ2JmZkVje24VG8RWySRYODLZ4wz3MZ1CMKZTCCxWKyfDzFODkgOxZ34/fLv/AkrrW5AR5YshKYGQMAw2PdYHRwrrEOGnaleTuq5RvsiM9uUEX0ekBYn+jn8MiYfFasWvx0qhkktRUtvCGWCb2pqN9PSoZPzfN0eQW66HlGEwpXsYW98dsNXXfsvp5Hr5bR2x5Pdc/HWuBolBGvxjaAICvRUorG5CWpgPZ0DjYo3tZAs+rzp4AXKpBHf2jECfeB0u1Dbj37/nYP/5WiQHe+GfwxI8mmUE2DIUX52Yhn//noOSuhakh/ngpfGuG/AGeSuR2NrcV4z9pC7IR4nPZmTgg+3nbA24kgPYoJejO3tGoFpvwLf7i8EwDKZmhmPOgFh29mX/cAb9w4MREhLCKXtop5BJ8PmMblh9uATnq5rQL0HnNpnAbmhKIDIitWztZQa2/ZarRIceMX6cRl52kzLC0CnCF51cx6kB2IK2O3Kr4DwWH6pVIthHeUmJFgAQo9Ng0ZgOWLoxB7VNJiQEabB0Yrrbn3t8aDzK6mz1hOVSCaZmhmNc5xAwDIOfHuyJffk1kDAMesT6CW4LIvzUeO5m/iBbe3kpZEgKbgsi+KhkWDSmA55bmw29wQy13LYNE6ptnRnjyxscCvZRICFIg5QQb0zsGoaGFhNWHypBQXX7vi9Z8f6CZdAAYEq3cPYY77PpGfhyXxFOldQjwFuJyRlhgse9PRwCOMEpKgxOCUSLycILEPaN92cz9n2UMqw9VgqtSoYZWVFICXE9y3pkejD+szWfM4NmXOcQ3ndsfJdQjO4YjLpmEwK8FFh/ogyvrM9BaX0LOoR645XxqRdVxgWwDcY6rmeAbXba8NQg9nfe3TsSTzj0C1LKJLi7dzTn/Z2vasL3B4vRYrJgbKcQdqAsWqfGr//XC/vO1UAtl17UMceAxACE+6o4A98JQRpMzghHRpQve/z/6fQMrD5UApmUwa3dwj1OEMiM9kOuU3mMzBg/vDYxDX4qCTRlR/BDRSgsrSMbvmoZ7vIwQH8pMqP9EOCl4M1WcDQo2bZ+9I335237PR20FUrmceelCan49/ocbMupRISfCo8OiUe4rwpLJqZh7Dt7OWWTZrYeL705pSNeXn/G1tg6SIO5wxI8zsi9GN2i+IOlwT4K3kw5wPadH5oSCKmEQZcILWfwfUZWFKckqpDZ/WMhlTD45Whpa8nJaM5g7dCUIAxNCUJ2aQN+P1EGP40cYzuH8so5AraB1/Rw199dtZuZoGLmDbf1dbPPXhreIQi39+DuGCP81LwAr92YTqGQMAxuSgtGfJAX3t6Sh9wKW1KZcymyhwfHIzpAjWWb8lBW14K+CTosdkj0WDgyCRKGwfoTZQjwUmDOwFiM7SR8PuClkOGT6Rk4WVIPg8mCzhFaMIytpNc9faJ4s3zFDE8NxJrD3Gz0ThE+iA3QYHb/GLzXWl5QJrENGkf7q/HjkRKcLmtERqQWz41JEdy/dgzX4pPpGfjvzvOo1ttmiN/Vy/U24tWJaeh/pBRHimqRFuaDW7rYBl1/PlqKM2UNyIzxw1AXgXNnveP80TvOHyaLBWYL2NJG3pKrU+aFsTrX97gCZsyYgZqaGqxZswYA0NzcjPnz5+Orr75CfX09MjMz8cYbb6BHjx4AgC1btmDw4MGorq6Gn58fPvnkEzz22GOoqWk7WVyzZg1uueUWWK1WlJaWYvbs2dizZw8qKysRFhaG6dOn49lnn2UPct99910sXboUBQUFiIuLw9NPP41p06axv+/kyZO45557cPjwYbaZ5k033YTNmzdj0KBBvGVytGrVKjz//PM4ceIEtFotBgwYgB9++AGALTv8hRdewGeffYaioiIEBAQgKysLixYt4tTqFrN161YsXLgQ+/fvh1qtRq9evfD111/Dz8+v3Z8jALz33nt46aWXUFVVhUmTJiElJQUffPAB8vPzBf9XgC343rVrVyxbtox9LDY2Fo899hgee+wx5OfnIy4uDgcPHkTXrl0BADU1NfD392c/P1fc/X8B4ODBg7j//vtx9OhRREdH46WXXsLcuXPZZQBswbTVq1djwoQJACC4XEKfyfr167F48WIcPHgQcrkcHTp0wL333ita6/5yqKurg19AEB4Y9QgORnVEaFIE5o9KZ2siVzYasHxzHg4W1CIp2AsZkVoE+igxqLVR3fVkc3Y5Fv54ih3tTg/zxvt3dBFtliNEbzDDYrVeUjOp9nBsaumJExfqkVPeiG5RvpzASEOLCXqDWXTq4uVyrLgOL6w7g2PFdegcocXTo5J5B8v/2ZqHFbsK0GQwo2+CDv++JZVXzuBKMlksKK5pwRf7CvDlviKYLbYMt1cmpHl8Ung5HC2qw8PfHmUPGhkAN3cKwYvjOkAulWBPXhVe/M12MpYc7IWXx6e2K2AG2L4/eoPZ40yIG02LyYy6JhO85MAzH61BtVGOByYMRM+4q/d/dGS1WvH53iL8crQEWpUMM7Oi0cdN097ryc7cKry//RwqGgwYnhqEOQNi210WRcjp0gbM/uoIW4ZndHow/n1LWru2bbvOVmFXXjXiAzUYnW4r11JU04THvz+Oo8X1UMslmNUnGnMGejZ11tPlXn24BFIGmJgRdtGzq64neoMZ3x0oxqmSBnSJ1GJSRpjowJ+zw4W1+GxPIeqbTRjTKQTjHDLFrVYrcsr18NPILroEy43E3rzO02OBUyUN+OcPx5FXqYe3UorhqUEoap1ifltmhMcDpJ4wGo1YuXIlAGDatGm8MoSXg8FswR+nKlBU04T+iQFug5JFNU14+NtjOFXSACkDdI30xYMDY5EV59+uIGN2aQMWrc3GkaI6WKy2gbrXJqWxtWsvB4PZghq9sd3HSzVNRsiljMezmq6WxhYTcsobER/o5fJY4NdjpXjptzOo0hsR6afCyxNS0d3FzID2aDGZ8cvRMpy4UIf6ZlvzxT7x/hjfJfSiBhmd1eiNuOuTA2wASquSYcXdXZEaevGzuQ4W1OLdP/NRUteCwckBmDMw1qMZAharFQ0tJo9n7blS02TEe3/m42BBLVLDfDBnQCzve7n1TCV+PlICtUKKO3pEXNJ7vhjFtc14f9s55JY3okeMH+7rF+PxoKQ71XoDHv7mGA4U1IIBMDw1CEtuSYNCJmG3cxVGOWQJveGllGNClzCXZVgup5Ml9Xj5tzM4fqEBaWHekDIM/jpfA52XAg8NjGPrrTcaTFi45hT+yC6HVMJgckY4Fo5MuuRBv4tRXNuML/YWoqzegKEdAnlloa6mz3YXYNmms2g2WRDkrcBrk9Lx+8lyfO5Q0mxQUgBeuSWVXZeajGb8dKQEeRV69Ir1x+B2BDJvBFarFScuNMBbJUWMTrico8liwePfH+c0wB6UHIBlkzte1PH6xSZ6XG4GswUzPj2IQ62DhkHeCnx0V1e2RG9BdRNyyhrRKULLKbXjrsz29ehsRSP2Hj6BspN7seCJ+aitrb2iicJXJYh+++23QyqV4vPPP7/Sf4qQG0JdXR18fX1RC0Di54cja9ciMTERarWaVz//RnGmrAEmi/WqH2iSNgaTBS0myzUP7potVpitVjb7/mozWSw4U9YICQMEegtPDyTuWSwWtlF1amqqYOYlubaMZguOFNUhwEvByeK/HErrWuCtkl53wStCHFmtVhTXtkDnJRed7XQ5XI0g+sU6X9UErVommOXXHhUNBhRWNyE1zLvdpU+IOIPZgooGA0K1yusisNIeBrMFf56phN5gxqDkgMsSxCbXh3NVth40jmWprsftnNFsgUzCCAb16pqNkEquv0G2a6mu2YgLtS2ID9Swg/knLtTjdFkDMqJ8RQPJxDbAllfRiFCtileu7UZ2urQBNU1GZET5epzgcSM6dOgQduzYgfnzr3wQ/YpucUwmE06fPo1du3bhgQceuJJ/ipAb2oEDB3DggK0ZiEKhgFqt5lxUKpXgYzLZ9XPQ4DjdlVwbCpnksmS4XiqphIEU1+5EUSaR0GDOZSCRSJCe7n7aPbl25FLJZctqdHa1Ms8IuRQMwwjWE/87sfdHuVSB3gpONhq5PBRSyWUpd3YtKKQSj5oDkxuPUDBVKpWiV69e7O3rgaugHw3q8GlVct7n4mk/pb87P7UcGQJlcW50yW5mtZH28zgCd/78eaSl8Wu/6vV6aDQa9lro+VGjRmH27NmXtqT/g0aNGoVt27YJPrdw4UIsXLjwKi/RlXGjvs8vvvhCdPAnKCgI5eX82lkAEBMTg+PHj3v8dyQSCby8vNDU1ASLxQKDwQCDwYDaWteNKwFALpfzgutiQffrKeBOCCGEEEIIIeT6QMkThJDrkdVqRXNzM5qamqDX6znX9otjaegrzeOoWnh4OA4dOtTuPxAbG0vBOxEfffQRmpr43aUBQKe7ceq9unOjvs9x48axo/HO5HI5jEbhxgXtnfqmUasxc+ZM3sbB8eL8mD3gbjQaYTQaUVdX5/bvyGQyToDd+dp+23650WphEUIIIYQQQgghhJDrl9VqhcFg4ATCHS/Nzc2cQPlVqELuMY+j2zKZDImJiVdyWf52IiIi3L/of8CN+j59fHzg43P1pj4xDMMGs90NLlitVrS0tAgG2YVum81mmEwm1NfXo76+3qNlUSqVnKC688Ux6K5UKqleMiGEEEIIIYQQQsjfjNlsRnNzM5sYar/teF+v17P3LRZLu36/Wq2GRqNhL15eXpxrq9WK+fPnX6F314ZSxAm5ATEMwwawPQm4O47yOY7oOU+H0ev1aGlpYbPim5ubPV4mhULBBtTt1463hR67XurtEUL4TCYTVq1aBQCYOHEizSojhBBCCCGEkP9x9jLDLS0taG5uRktLC+e2Y4DcHhQXq9TgikKh4ATG1Wo1vLy8OAFz+313sSNPqjNcDnRGTMj/OHtWuVKphJ+f+2YZZrOZHSl0Nb3G8TYAtpZ7e8hkMiiVSigUCsFrsefkcjkF9Ai5wqxWKxoaGtjbhJD/fVarFWazGRaLhb043xd7zGKxwGq1cq7d3XZ3sWcp2a8dt0X21zjeF7oNQLBEndhj9ovjfcfft2vXLkilUs5rGYaBRCLhXDs/LvQaiUTCXtzdd3ehMnyEkEtByROE/G+xJ1M6XlpaWgQfc7w0Nze3O65j51hdwfniHCzXaDQ35HbmxltiQsgVJZVK4e3tDW9vzzo5WywWwSk7Qhf7a+zZ7iaTCSaTCY2Nje1eTolEAoVCwQbV7bed78vlcs5FJpPx7tOJJyGEkGvBHrS2B6Xtt4Uurp53fs7xvtBtsWsaMHMvJyfnWi+CIMfgvFQqdRlwtw8CePo6++32BPVdBfvFHqfjMUKuHUqeIOTacTwetMdI7LftffCcL66eu5gERyH2agNCF3sw3PGiVCr/5/flFEQnhFwSiUTCjih6yl7T3Xl6kNh0IceLfWdgD963p+SMGKEAu1QqhUwmE73YX2O/tr/eftv5/v/6zoQQd+wnZI5Zpq7uC/2c47XYY+7+vjNPMlQd7ztnqbp6XCijVehnyeXnmMnsmP3s6UUsG9uTa08C2SaTif3d1zPnQKvzbbHAqlBWtWNA1lW2tliGt3157NfO65/jteNt53Xf1X37bcfMd08vQpn4jtfO30NPvpdCMwPEvjf21wK2jNIbkatsfKEMfrHsfk9nBNhvO/5tse+h2MX+s54+5vic0G3nx5wfd7x295jz7fY8157XePLc5X7N9ULs2ELocXevdXd84+7YSOx4yd1r7BfH7UZhYSEkEglvO+f8M46PX8x205PffbE/I/Sc82OuPp+L+b9cKnfrsSfbEFfbIcfnnLd39sfsPye2PfR0O9ne7anY8jq/R6HPw9VtT9ch+22xfbrz4877cHfHh87HiM6B8iu537bP/nee8e94XyhITuV3hTHWy7nWE0I8UldXB19fX9QC0EZEAIWF13qRbhhWq1VwOpLYbYPBwI7GOo7MXkzNrkthDzjYA+uOwQhPrp1PLNuT1dXeE0pA/KDL3Umf47XYY1eKq4Mhsde4OnD25P6lnES0p5xBe3/+cjxnsVhQW1sLAPD29hZ9r87v2/H9C5VgIG08OQny5MTI1c8LPef8mPPjQtfOy+0Jd+uf82MXc3EVsLwROQ/ESiQS3gCt88Xd82IXx0C42P0bKZj1d+J88u5qEKi9ty/2Z1w9LvQYIYQQQvgYhmET/KRSKWemveO10GP2a8dA+d8lEM7G2GprodVqr9jfoUx0QsgNhWHaarz7+Phc9O+xWq28KU/OU6Mcr4Uec3zOPpJsH022nzDa2U8ar3bw/npzOQIyN2pw7EZmD6ZfK+4CvJeSGSf0ffI0U+VS3cjB3huVULkKodvO2dbOQWZ3Aej2XBwHVyloTTzBMAz7/blRtWdmiOOggdht58fEBtdcPXexg93tGWj3ZIDe+XV2zq8Vetz5MVe33d0X2z+5228S18QyZh3vtycj2X7taiDd1Ws8HdAXer3zTCGxjGTH116Oi2PGtKcXsc/G3ft399mLPeYpT9dfV9sQse2IWGKPJ9s2dxnYzs/Z/567v+H8uOPP2ZdVbLndfTbOt+08/d85f8c8uRZKfnN3zOjJDHdy/aIgOiHkb4lhGLZu+pVin7LvGFh3DLaL1bgVe+xiLu5OGh2vAfcnf5fqRjjJ8uTEwvGkQWw6pKcnAe4ea8/9q/mznp4kiX2mYs/ZH3O8vp65Cmq4C5C0JwDT3p/xZBk8WX6x9+uJ9pxwXsx3S6xsiLtSEISQa8++bpK/D0/2H+5ecz0cR7rajzg/R/scQgj530JBdEIIuUIkEskVDdJfba4Cda6uHX/Wk78hRigA5+6+q8Csq9cQ4in67hBCCCHuebKfpH0pIYSQ6xkF0QkhhHjEMdhMCCGEEEIIIYQQ8ndBc+gIIYQQQgghhBBCCCGEEBEURCeEEEIIIYQQQgghhBBCRFAQnRBCCCGEEEIIIYQQQggRQUF0QgghhBBCCCGEEEIIIUQEBdEJIYQQQgghhBBCCCGEEBEURCeEEEIIIYQQQgghhBBCRFAQnRBCCCGEEEIIIYQQQggRQUF0QgghhBBCCCGEEEIIIUQEBdEJIYQQQgghhBBCCCGEEBEURCeEEEIIIYQQQgghhBBCRFAQnRBCCCGEEEIIIYQQQggRQUF0QgghhBBCCCGEEEIIIUQEBdEJIYQQQgghhBBCCCGEEBEURCeEEEIIIYQQQgghhBBCRFAQnRBCCCGEEEIIIYQQQggRQUF0QgghhBBCCCGEEEIIIUQEBdEJIYQQQgghhBBCCCGEEBEURCeEEEIIIYQQQgghhBBCRFAQnRBCCCGEEEIIIYQQQggRQUF0QgghhBBCCCGEEEIIIUQEBdEJIYQQQgghhBBCCCGEEBEURCeEEEIIIYQQQgghhBBCRMiu9QIQ8rf25JNAUNC1XgpCCCGEEEIIIYQQQogICqITci0tWABotdd6KQghhBBCCCGEEEIIISKonAshhBBCCCGEEEIIIYQQIoKC6IQQQgghhBBCCCGEEEKICCrnQsg1YLVaAQB1dXXXeEkIIYQQQgghhBBCCLkx2WNr9ljblUJBdEKugfr6egBAVFTUNV4SQgghhBBCCCGEEEJubPX19fD19b1iv5+xXukwPSGEx2KxIDs7G2lpaSgoKICWmosS4lZdXR2ioqJonSGkHWi9IaT9aL0hpH1onSGk/Wi9IaT9xNYbq9WK+vp6hIeHQyK5cpXLKROdkGtAIpEgIiICAKDVammnSUg70DpDSPvRekNI+9F6Q0j70DpDSPvRekNI+wmtN1cyA92OGosSQgghhBBCCCGEEEIIISIoiE4IIYQQQgghhBBCCCGEiJA+99xzz13rhSDk70oqlWLQoEGQyaiyEiGeoHWGkPaj9YaQ9qP1hpD2oXWGkPaj9YaQ9ruW6w01FiWEEEIIIYQQQgghhBBCRFA5F0IIIYQQQgghhBBCCCFEBAXRCSGEEEIIIYQQQgghhBARFEQnhBBCCCGEEEIIIYQQQkRQEJ0QQgghhBBCCCGEEEIIEUFBdEKugXfeeQdxcXFQqVTo3r07tm3bdq0XiZCr4rnnngPDMP/f3r1HRV3mfwB/DzBcxGFEUW6uiqhwbNBEREgTDfOGKbUVmLqo6IorXlo3Szut2jkKuebmngw7ioStR6KQpCXvCl6A1rsIyqqoGGEocRGVm3x+f7h8f43DKIqMS75f58w58n0+3+f7PBOfnpnPfHlG7+Hk5KS0iwiWLl0KFxcX2NjYYOjQocjJydHro7S0FJMnT4ZWq4VWq8XkyZNRVlamF5OdnY2AgADY2NjA1dUVH374Ifg92tRaHDhwAK+88gpcXFygUqnw7bff6rWbMk+SkpLQu3dvWFlZoXfv3khOTm6ZSRM1w8NyZsqUKQZrj5+fn15MdXU15syZAwcHB9ja2mLcuHH48ccf9WIKCgrwyiuvwNbWFg4ODpg7dy5qamr0YtLT09G/f39YW1uje/fuWLduXctMmqgZoqKiMGDAAGg0GnTq1AnBwcHIy8vTizFlTvC9EbUGTcmboUOHGqw3oaGhejF8jUbPkpiYGPTp0wd2dnaws7ODv78/tm/frrS3urVGiMikEhISRK1Wy/r16yU3N1fmzZsntra2cuXKlac9NKIWt2TJEnnuueekqKhIeRQXFyvt0dHRotFoJCkpSbKzsyUkJEScnZ2loqJCiRk1apTodDrJyMiQjIwM0el0MnbsWKW9vLxcHB0dJTQ0VLKzsyUpKUk0Go2sWrXKpHMlelzff/+9vP/++5KUlCQAJDk5Wa/dVHmSkZEh5ubmsmLFCjl79qysWLFCLCwsJCsrq+WfBKJH8LCcCQsLk1GjRumtPSUlJXoxERER4urqKrt375bjx4/LsGHDpG/fvlJXVyciInV1daLT6WTYsGFy/Phx2b17t7i4uEhkZKTSR35+vrRp00bmzZsnubm5sn79elGr1fLNN9+0/JNA9AhGjhwpcXFxcubMGTl58qQEBQVJly5dpLKyUokxVU7wvRG1Fk3Jm4CAAJkxY4beelNWVqbXD1+j0bMkJSVFUlNTJS8vT/Ly8mTx4sWiVqvlzJkzItL61hoW0YlMzNfXVyIiIvSOeXp6ynvvvfeURkRkOkuWLJG+ffs22lZfXy9OTk4SHR2tHKuqqhKtVivr1q0TEZHc3FwBoPcCMTMzUwDIuXPnRETks88+E61WK1VVVUpMVFSUuLi4SH19fUtMi6jF3F8QNGWevPnmmzJq1Ci98YwcOVJCQ0Of/ESJnhBjRfTx48cbPaesrEzUarUkJCQoxwoLC8XMzEx27NghIvcK9WZmZlJYWKjEbNmyRaysrKS8vFxERBYuXCienp56fc+cOVP8/PyaPS+illRcXCwAJD09XURMmxN8b0St1f15I3KviD5v3jyj5/A1GpGIvb29bNiwoVWuNdzOhciEampqcOzYMYwYMULv+IgRI5CRkfGURkVkWufPn4eLiwvc3NwQGhqK/Px8AMClS5dw7do1vfywsrJCQECAkh+ZmZnQarUYOHCgEuPn5wetVqsXExAQACsrKyVm5MiR+Omnn3D58mUTzJCo5ZgyTzIzMw3Wq5EjR3K9olYpLS0NnTp1Qq9evTBjxgwUFxcrbceOHUNtba3e77uLiwt0Op1ezuh0Ori4uCgxI0eORHV1NY4dO6bENJYzR48eRW1tbUtOj6hZysvLAQDt27cHYLqc4Hsjas3uz5sGmzdvhoODA5577jn85S9/wc2bN5U2vkajZ9ndu3eRkJCAW7duwd/fv1WuNSyiE5nQjRs3cPfuXTg6Ouodd3R0xLVr157SqIhMZ+DAgdi0aRN27tyJ9evX49q1a3jhhRdQUlKi5MCD8uPatWvo1KmTQb+dOnXSi2msj4Y2inoZqgAAFRtJREFUotbMlHliLIZ5RK3N6NGjsXnzZuzbtw8ff/wxjhw5gpdeegnV1dUA7v2uW1pawt7eXu+8+/Pq/nywt7eHpaXlQ3Omrq4ON27caKnpETWLiODPf/4zBg8eDJ1OB8B0OcH3RtRaNZY3ADBx4kRs2bIFaWlp+OCDD5CUlITXXntNaedrNHoWZWdno23btrCyskJERASSk5PRu3fvVrnWWDxSNBE9ESqVSu9nETE4RvRbNHr0aOXfXl5e8Pf3h7u7O+Lj45UveXtYfjSWKw+Lkf9+EQ/zjH4rTJUnXK/otyAkJET5t06ng4+PD7p27YrU1FS94sb9uP7QsyAyMhKnT5/GoUOHHhr7pHPCWH5wraH/dcbyZsaMGcq/dTodevbsCR8fHxw/fhze3t4A+BqNnj0eHh44efIkysrKkJSUhLCwMKSnpxuN/19ea3gnOpEJOTg4wNzc3ODTruLiYoNPxYieBba2tvDy8sL58+fh5OQEwPBu8V/nh5OTE37++WeDfq5fv64X01gfgOHdu0StjSnzxFgM84haO2dnZ3Tt2hXnz58HcO93vaamBqWlpXpx9+fV/flQWlqK2trah+aMhYUFOnTo0FLTIXpsc+bMQUpKCvbv34/OnTsrx02VE3xvRK2RsbxpjLe3N9Rqtd56w9do9KyxtLREjx494OPjg6ioKPTt2xdr1qxplWsNi+hEJmRpaYn+/ftj9+7desd3796NF1544SmNiujpqa6uxtmzZ+Hs7Aw3Nzc4OTnp5UdNTQ3S09OV/PD390d5eTn+/e9/KzE//PADysvL9WIOHDiAmpoaJWbXrl1wcXFBt27dTDMxohZiyjzx9/c3WK927drF9YpavZKSEly9ehXOzs4AgP79+0OtVuv9vhcVFeHMmTN6OXPmzBkUFRUpMbt27YKVlRX69++vxDSWMz4+PlCr1S09LaImExFERkZi69at2LdvH9zc3PTaTZUTfG9ErcnD8qYxOTk5qK2tVdYbvkYjupdL1dXVrXOteaSvISWiZktISBC1Wi2xsbGSm5sr8+fPF1tbW7l8+fLTHhpRi1uwYIGkpaVJfn6+ZGVlydixY0Wj0Si//9HR0aLVamXr1q2SnZ0tEyZMEGdnZ6moqFD6GDVqlPTp00cyMzMlMzNTvLy8ZOzYsUp7WVmZODo6yoQJEyQ7O1u2bt0qdnZ2smrVKpPPl+hx3Lx5U06cOCEnTpwQALJ69Wo5ceKEXLlyRURMlyeHDx8Wc3NziY6OlrNnz0p0dLRYWFhIVlaW6Z4MoiZ4UM7cvHlTFixYIBkZGXLp0iXZv3+/+Pv7i6urq17ORERESOfOnWXPnj1y/Phxeemll6Rv375SV1cnIiJ1dXWi0+kkMDBQjh8/Lnv27JHOnTtLZGSk0kd+fr60adNG3n77bcnNzZXY2FhRq9XyzTffmPw5IXqQWbNmiVarlbS0NCkqKlIet2/fVmJMlRN8b0StxcPy5sKFC7Js2TI5cuSIXLp0SVJTU8XT01P69eun5I0IX6PRs2XRokVy4MABuXTpkpw+fVoWL14sZmZmsmvXLhFpfWsNi+hET8HatWula9euYmlpKd7e3pKenv60h0RkEiEhIeLs7CxqtVpcXFzktddek5ycHKW9vr5elixZIk5OTmJlZSVDhgyR7OxsvT5KSkpk4sSJotFoRKPRyMSJE6W0tFQv5vTp0/Liiy+KlZWVODk5ydKlS6W+vt4kcyRqrv379wsAg0dYWJiImDZPvv76a/Hw8BC1Wi2enp6SlJTUonMnehwPypnbt2/LiBEjpGPHjqJWq6VLly4SFhYmBQUFen3cuXNHIiMjpX379mJjYyNjx441iLly5YoEBQWJjY2NtG/fXiIjI6WqqkovJi0tTfr16yeWlpbSrVs3iYmJafH5Ez2qxvIFgMTFxSkxpswJvjei1uBheVNQUCBDhgyR9u3bi6Wlpbi7u8vcuXOlpKRErx++RqNnybRp05T/v3fs2FECAwOVArpI61trVCL/3WGdiIiIiIiIiIiIiIj0cE90IiIiIiIiIiIiIiIjWEQnIiIiIiIiIiIiIjKCRXQiIiIiIiIiIiIiIiNYRCciIiIiIiIiIiIiMoJFdCIiIiIiIiIiIiIiI1hEJyIiIiIiIiIiIiIygkV0IiIiIiIiIiIiIiIjWEQnIiIiIiIiIiIiIjKCRXQiIiIiIjKpoUOHQqVSPe1hPHMuXLgAlUqF6dOnP+2hEBEREbUqLKITEREREbVSly9fhkqlwqhRo572UFrU7du3sWLFCnh7e6Nt27awtrZG586d8eKLL2LRokW4ePGiXnxDkf7atWtG+/T09HxoIX/IkCFQqVTw8fF5YJxKpdJ7WFhYwNnZGcHBwThw4MBD5+fv7w+VSoWsrKwHxp05cwYqlQp9+vR5aJ9ERERE9ORYPO0BEBERERERGXPz5k0MHjwYp0+fRo8ePTBp0iS0a9cOV69eRU5ODqKjo+Hu7g53d/cnet3z58/j4MGDUKlUOHbsGE6dOoW+ffsaje/QoQMiIyMBAHfu3MGpU6ewbds2pKSkIDExEa+//rrRc8PDw5GVlYW4uDj4+fkZjYuNjVXiiYiIiMh0WEQnIiIiIqL/WZ988glOnz6N8PBwrF+/3uDu8UuXLqG6uvqJX3fjxo0AgAULFmDVqlWIjY3FP/7xD6PxDg4OWLp0qd6xDRs2YMaMGXjnnXceWEQPCQnB/PnzkZCQgE8++QQ2NjYGMbW1tdi8eTMsLS0xadKkx5sUERERET0WbudCRERERPSMuH37NpYuXQpPT09YW1ujffv2CAoKQkZGRqPxIoL4+HgMGTIE7dq1Q5s2bdCzZ09ERESgoKBAiTt27BgiIyOh0+mg1WphY2MDLy8vREdHo7a2tlljzszMBABERkY2uv2Km5sbPD09m3WN+929exfx8fFwdHTEihUr0KVLF2zevPmRi/XTpk2Dra0tLl++jBs3bhiN02g0ePPNN1FRUYGkpKRGY1JSUnD9+nUEBwejQ4cOyvENGzZg3Lhx6Natm/LfdPTo0UhPT2/yODt37owePXo02jZ48GBYWBjeeyUi2LBhA/z9/aHRaNCmTRsMGDAA8fHxBrFVVVX429/+hj59+sDOzg4ajQbu7u546623kJOT0+RxEhERET0tLKITERERET0DqqurERgYiGXLlsHW1hbz589HcHAw0tLSEBAQgK1bt+rFiwgmTJiAKVOmID8/HxMmTMCcOXPg7e2Nr776CsePH1di169fj+TkZHh5eWHmzJkIDw+HiGDRokUIDQ1t1rjbt28P4N6XYprK999/j6KiIrz11ltQq9WYNGkSfvnlFyQnJz9yXyLSpLiGLVoa7oC/X1xcnF5cg1mzZqG4uBjDhw/H22+/jaCgIBw6dAiBgYH417/+9cjjbQoRQWhoKGbMmIHS0lJMmjQJ06dPx82bNzFlyhS89957evETJ07EwoULYW5ujvDwcMyaNQu+vr7Yu3cvTpw40SJjJCIiInqSuJ0LEREREdEzYOXKlcjKysLEiRPx5ZdfKnd1z58/H76+vpg+fTpefvllaDQaAEBMTAy++uorBAYG4rvvvtPbYuTOnTu4c+eO8vOiRYuwdu1amJubK8dEBNOnT8fGjRtx+PBhDBo06LHG/cYbb2Dz5s0IDw/H0aNHMWLECPTr1w/29vYPPXfVqlVo27Zto20PujO8Ye/xyZMnAwDCwsKwYsUKxMbGPtKHAhs3bsTt27fRrVs3ODg4PDB20KBB8PDwQFpaGi5fvoxu3bopbUVFRdixYwe6dOmC4cOH6533n//8B25ubnrHCgsL4ePjg3feeQdjx45t8nibat26dUhMTMTMmTPx6aefKneq19TUIDg4GCtXrkRoaCief/555cOHgQMHIiMjA2Zm/38fV11dHW7duvXEx0dERET0pLGITkRERET0DPjiiy+gVqsRHR2tty1Knz59MGXKFHz++efYtm2bst92Q1E8JibGYI9uGxsbvWNdu3Y1uJ5KpcLs2bOxceNG7Nmz57GL6OPHj8fKlSvx4Ycf4qOPPsJHH30EAHB3d8eoUaMwb9489OzZs9FzP/7440e+3s8//4zU1FQ899xz6NevHwCgV69eGDhwIPbu3YsrV640Ot8bN24oe6JXVVXh5MmT2LlzJ8zMzLBq1aomXXvatGl49913ERcXh2XLlinH4+PjcffuXUydOlWvCA3AoIAOAK6urnj11VcRExODwsJCuLq6NnX6TfLpp5/Czs4Oa9as0dvqxdLSEsuXL8f27duRkJCA559/HsC9D1Ssra0Nxm5hYQGtVvtEx0ZERETUEridCxERERHRb1xFRQXy8/PRo0cPdO7c2aB96NChAICTJ08CAG7duoXc3Fy4ubkZLVD/Wk1NDVavXg1fX1/Y2dnBzMwMKpUK/fv3BwD89NNPzRr/O++8g59++gmJiYmYP38+Bg8ejIKCAqxduxZ9+vRBSkpKo+cVFRVBRBp9eHh4NHpOfHw86urqlLvQG/zhD3+AiCjbqtyvpKQEy5Ytw7Jly7Bq1SqcPHlS2S7n97//fZPmGRYWBgsLC8THx+ttA/PFF19ApVJhypQpBudcvHgR4eHhcHd3h7W1NVQqFVQqFWJiYgA0/7m/X0VFBXJzc6HVahEVFYWlS5fqPRITEwEA586dA3BvO57hw4cjPT0d/fv3R1RUFA4dOoSamponOi4iIiKilsQ70YmIiIiIfuMqKioAAI6Ojo22Ozk5AQDKy8sBAGVlZQDQ5DuYX3/9dXz33Xfo1asXQkJC0KlTJ6jVapSVlWHNmjWP/IWcjdFoNHjjjTfwxhtvKGNdvHgxPvvsM4SHh6OwsBCWlpbNvk5cXBzMzMwwceJEveOhoaF4++23ERcXh7/+9a8Gd1V7eHgohePH5ejoiKCgIGzbtg379u1DYGAgDh06hLy8PAwfPlxvixcAyMvLw8CBA1FZWYnAwECMGzcOGo0GZmZm2LdvHw4ePPhEnvtfKy0tBQBcvXpV7275+/16m5bk5GQsX74cCQkJWLx4MQDAzs4O4eHhWL58ucFfOhARERH9r2ERnYiIiIjoN87Ozg7Ava1KGtNwvCGuYYuNwsLCh/Z95MgRfPfddxg5ciRSU1P19kXPysrCmjVrmjV2Y7RaLT799FOkpqbiypUryM7OVu58f1yHDx9WCuG/+93vGo0pKCjAnj17MGLEiGZdy5jw8HBs27YNGzduRGBgoNEvFAWA1atXo7y8HAkJCQgJCdFr+/HHH3Hw4MEmXdPMzAx1dXWNtjV8sNKg4Xdk4MCByMrKalL/bdu2RVRUFKKiopCfn4/9+/cjJiYGf//731FdXY21a9c2qR8iIiKip4VFdCIiIiKi3zg7Ozt0794dFy5caHSP7PT0dABQ9rBu27Ytevfujby8PJw/f/6BW7pcvHgRABAUFKRXQAfQ5CLu41KpVGjTps0T66/hC0VHjx4NFxcXg/aSkhJ8++23iI2NbbEi+pgxY+Ds7Izk5GQUFhYiMTER9vb2ePXVVw1iG577cePG6R2vr69HRkZGk69pb2+PvLw81NfX691hf/PmTVy4cMEgtmfPnsjJyUFFRYVSVG+q7t27o3v37ggNDUXHjh2RkpLCIjoRERH9z+Oe6EREREREz4CwsDDU1tZi0aJFevttnzlzBnFxcdBqtQgODlaOz549G3fv3sWf/vQn3LlzR6+vqqoq/PLLLwD+/0tFDx06pBeTk5ODqKioZo/7888/x5EjRxpt27p1K86dO4d27dpBp9M16zqVlZVITEyEra0tEhMTsWHDBoPH119/jU6dOuHbb79FSUlJs65njLm5OcLCwnDnzh2EhISgsrISkyZNgpWVlUGssed++fLlOHv2bJOv6ePjg+rqamzZskU5Vl9fj3fffRdVVVUG8XPnzkVlZSX++Mc/4vbt2wbt+fn5uHLlCoB7f+Vw9OhRg5jS0lLU1tZyKxciIiJqFXgnOhERERFRK5ednd3ol04CgLe3N+bOnYuFCxciNTUVX375Jc6ePYvAwEBcv34dX331FWpra7Fp0yZoNBrlvFmzZiE9PR2JiYno2bMnxo0bBzs7OxQUFGDnzp2IjY1FcHAwfH194evri8TERBQVFcHPzw8FBQVISUlBUFAQvvnmm2bNbfv27YiIiECPHj0waNAguLi4oLKyEidPnsTBgwdhZmaGzz77rNEi86NISEjArVu3MHXqVLRt27bRGAsLC0yaNAmrV6/GP//5T8ybN69Z1zRm2rRpiI6OxuHDh5WfGzNr1ixs2rQJ48ePR0hICOzt7ZGZmYlTp05hzJgx+P7775t0vTlz5mDTpk2YOnUqduzYAQcHBxw4cACVlZXQ6XQGBfnZs2cjKysLmzdvxsGDBzF8+HA4Ozvj2rVrOHfuHH744Qd8/fXX6Nq1K65evYoBAwZAp9OhX79+cHV1xY0bN7Bt2zbU1dVh4cKFzXuyiIiIiExBiIiIiIioVbp06ZIAeOBj/PjxSnxlZaV88MEH0qtXL7G0tJR27drJ6NGj5eDBg432X19fLxs2bBA/Pz+xtbWVNm3aSM+ePSUiIkIKCgqUuOLiYpk2bZq4uLiItbW1eHl5ydq1ayU/P18ASFhYmF6/AQEB0tS3IufOnZOVK1fKyy+/LG5ubmJtbS3W1tbi7u4uYWFhcvToUYNzGvovKioy2q+Hh4feGPz8/ASA0eeiQXZ2tgAQLy8v5RgA8fDwaNJ8mmrIkCECQLy9vR8Yt3fvXnnhhRdEo9GIvb29BAUFyYkTJ+T99983mM/58+cFgISHhxv0s2vXLvH19RUrKyvp0KGDhIWFSXFxsQwaNEjMzc0bvfaWLVskMDBQ7O3tRa1Wi6urqwwbNkxWr14tN27cEBGRX375RZYsWSIvvviiODk5iaWlpbi6usqYMWNk9+7dzXiGiIiIiExHJfKrv+UkIiIiIiIiIiIiIiIF90QnIiIiIiIiIiIiIjKCRXQiIiIiIiIiIiIiIiNYRCciIiIiIiIiIiIiMoJFdCIiIiIiIiIiIiIiI1hEJyIiIiIiIiIiIiIygkV0IiIiIiIiIiIiIiIjWEQnIiIiIiIiIiIiIjKCRXQiIiIiIiIiIiIiIiNYRCciIiIiIiIiIiIiMoJFdCIiIiIiIiIiIiIiI1hEJyIiIiIiIiIiIiIygkV0IiIiIiIiIiIiIiIj/g9/Brd6mgIqaQAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"max_features_to_display = 15\n",
"feature_names = local_shap_values.columns\n",
"\n",
"fig = plt.figure(figsize=(max_features_to_display, max_features_to_display))\n",
"low = local_shap_values.min().min()\n",
"high = local_shap_values.max().max()\n",
"\n",
"i = 1\n",
"for feature_name in feature_names:\n",
" plt.subplot(max_features_to_display, 1, i)\n",
" shap_value = local_shap_values[f\"{feature_name}\"].to_frame()\n",
" feature = pd.Series([feature_name] * shap_value.shape[0]).to_frame()\n",
" df = pd.concat([shap_value, feature], axis=1, join=\"inner\", ignore_index=True)\n",
" df.columns = [\"shap_value\", \"feature\"]\n",
" num_rows_to_display = min(df.shape[0], 500)\n",
" df = df.sample(num_rows_to_display)\n",
" ax = sns.violinplot(\n",
" y=\"feature\",\n",
" x=\"shap_value\",\n",
" data=df,\n",
" size=6,\n",
" color=\"#f5f5f5\",\n",
" inner=\"quartile\",\n",
" bw=0.2,\n",
" cut=0,\n",
" orient=\"h\",\n",
" )\n",
" ax.set_xlim(low, high)\n",
" sns.stripplot(\n",
" y=\"feature\",\n",
" x=\"shap_value\",\n",
" data=df,\n",
" size=4,\n",
" orient=\"h\",\n",
" )\n",
" ax.vlines(0, -1, 1, color=\"#ff0000\", linewidth=2)\n",
" ax.set_ylabel(\"\")\n",
" ax.legend([], [], frameon=False)\n",
" i += 1\n",
"\n",
"\n",
"plt.xlabel(\"Local SHAP Values\", fontsize=14)\n",
"plt.tight_layout()\n",
"plt.subplots_adjust(hspace=0, wspace=0.1)\n",
"\n",
"plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"**Note:** You can run both bias and explainability jobs at the same time with `run_bias_and_explainability()`, refer [API Documentation](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SageMakerClarifyProcessor.run_bias_and_explainability) for more details."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Clean Up\n",
"Finally, don't forget to clean up the resources we set up and used for this demo!"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:sagemaker:Deleting model with name: DEMO-clarify-model-07-02-2023-03-52-02\n"
]
}
],
"source": [
"sagemaker_session.delete_model(model_name)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Notebook CI Test Results\n",
"\n",
"This notebook was tested in multiple regions. The test results are as follows, except for us-west-2 which is shown at the top of the notebook.\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
}
],
"metadata": {
"instance_type": "ml.t3.medium",
"kernelspec": {
"display_name": "Python 3 (Data Science 3.0)",
"language": "python",
"name": "python3__SAGEMAKER_INTERNAL__arn:aws:sagemaker:us-east-1:081325390199:image/sagemaker-data-science-310-v1"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}