{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# **Feedback Prize - Predicting Effective Arguments**","metadata":{}},{"cell_type":"markdown","source":"#### **The dataset presented here contains argumentative essays written by U.S students in grades 6-12. These essays were annotated by expert raters for discourse elements commonly found in argumentative writing:**\n\n> **Lead** - an introduction that begins with a statistic, a quotation, a description, or some other device to grab the reader’s attention and point toward the thesis\n\n> **Position** - an opinion or conclusion on the main question\n\n> **Claim** - a claim that supports the position\n\n> **Counterclaim** - a claim that refutes another claim or gives an opposing reason to the position\n\n> **Rebuttal** - a claim that refutes a counterclaim\n\n> **Evidence** - ideas or examples that support claims, counterclaims, or rebuttals.\n\n> **Concluding Statement** - a concluding statement that restates the claims\n\n#### **Your task is to predict the quality rating of each discourse element. Human readers rated each rhetorical or argumentative element, in order of increasing quality, as one of:**\n\n> **Ineffective**\n\n> **Adequate**\n\n> **Effective**\n","metadata":{}},{"cell_type":"markdown","source":"# **Importing Libraries:** ","metadata":{}},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\npd.set_option(\"max_colwidth\", None)\n\nimport matplotlib.pyplot as plt\nplt.rcParams.update({'font.size': 14})\nplt.rc('legend',fontsize=10)\nimport seaborn as sns\nimport plotly.express as px\n\nimport tensorflow as tf\nfrom tensorflow.keras.models import Model\nfrom tensorflow.keras.optimizers import Adam\nfrom tensorflow.keras.layers import Dense, Input, Dropout\n\nimport transformers\nfrom transformers import TFBertModel\nfrom transformers import AutoTokenizer\n\nimport warnings \nwarnings.filterwarnings('ignore')\ntf.config.experimental_run_functions_eagerly(False)","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-07-20T10:43:37.785768Z","iopub.execute_input":"2022-07-20T10:43:37.786048Z","iopub.status.idle":"2022-07-20T10:43:37.793044Z","shell.execute_reply.started":"2022-07-20T10:43:37.786014Z","shell.execute_reply":"2022-07-20T10:43:37.792328Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Loading Dataset :**","metadata":{}},{"cell_type":"code","source":"train_data = pd.read_csv(\"../input/feedback-prize-effectiveness/train.csv\")\ntest_data = pd.read_csv(\"../input/feedback-prize-effectiveness/test.csv\")\nsubmission_data = pd.read_csv(\"../input/feedback-prize-effectiveness/sample_submission.csv\")\n\nprint(f\"TRAIN SIZE  : {train_data.shape}\\nTEST SIZE   : {test_data.shape}\\nSAMPLE DATA : {submission_data.shape}\")","metadata":{"execution":{"iopub.status.busy":"2022-07-20T11:11:37.082369Z","iopub.execute_input":"2022-07-20T11:11:37.083211Z","iopub.status.idle":"2022-07-20T11:11:37.227362Z","shell.execute_reply.started":"2022-07-20T11:11:37.083175Z","shell.execute_reply":"2022-07-20T11:11:37.226614Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Exploratory Data Analysis :**","metadata":{}},{"cell_type":"code","source":"train_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:43:45.896320Z","iopub.execute_input":"2022-07-20T10:43:45.898952Z","iopub.status.idle":"2022-07-20T10:43:45.918518Z","shell.execute_reply.started":"2022-07-20T10:43:45.898812Z","shell.execute_reply":"2022-07-20T10:43:45.916773Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Types of discourse ","metadata":{}},{"cell_type":"code","source":"print(f\"DISCOURSE TYPES :  {train_data.discourse_type.unique().tolist()}\")","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:43:55.481713Z","iopub.execute_input":"2022-07-20T10:43:55.481972Z","iopub.status.idle":"2022-07-20T10:43:55.489446Z","shell.execute_reply.started":"2022-07-20T10:43:55.481946Z","shell.execute_reply":"2022-07-20T10:43:55.488687Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Types of effective discourse ","metadata":{}},{"cell_type":"code","source":"print(f\"EFFECTIVE DISCOURSE : {train_data.discourse_effectiveness.unique().tolist()}\" )","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:43:58.470655Z","iopub.execute_input":"2022-07-20T10:43:58.471111Z","iopub.status.idle":"2022-07-20T10:43:58.479095Z","shell.execute_reply.started":"2022-07-20T10:43:58.471075Z","shell.execute_reply":"2022-07-20T10:43:58.478176Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Total discourse type count ","metadata":{}},{"cell_type":"code","source":"x_axis = train_data.discourse_type.value_counts().index\ny_axis = train_data.discourse_type.value_counts().values\nfig = px.bar(x = x_axis,y = y_axis,\n             color = x_axis,\n             title = 'Total count of discourse types in dataset ',\n             labels = {'x' : 'Discourse types ','y' : 'Total discourse type count '})\nfig.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-07-20T10:44:01.655801Z","iopub.execute_input":"2022-07-20T10:44:01.656076Z","iopub.status.idle":"2022-07-20T10:44:01.753777Z","shell.execute_reply.started":"2022-07-20T10:44:01.656045Z","shell.execute_reply":"2022-07-20T10:44:01.753130Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Total count of discourse effectiveness","metadata":{}},{"cell_type":"code","source":"x_axis = train_data.discourse_effectiveness.value_counts().index\ny_axis = train_data.discourse_effectiveness.value_counts().values\nfig = px.bar(x = x_axis,y = y_axis,\n             color = x_axis,\n             title = 'Total count of dicourse effectiveness',\n             labels = {'x' : 'Discourse effectivenss','y' : 'Count of effective discourse'})\nfig.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:44:08.211518Z","iopub.execute_input":"2022-07-20T10:44:08.212395Z","iopub.status.idle":"2022-07-20T10:44:08.292553Z","shell.execute_reply.started":"2022-07-20T10:44:08.212344Z","shell.execute_reply":"2022-07-20T10:44:08.291773Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Count of discourse effectiveness with respect to discourse types","metadata":{}},{"cell_type":"code","source":"fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(22, 10))\neffectiveness_order = ['Ineffective', 'Adequate', 'Effective']\neffectiveness_colors =  ['lightgreen', 'blue', 'red']\nsns.countplot(data = train_data, x = 'discourse_type', \n              hue='discourse_effectiveness', \n              hue_order = effectiveness_order, \n              palette = effectiveness_colors)\nplt.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-07-20T10:44:14.376490Z","iopub.execute_input":"2022-07-20T10:44:14.376754Z","iopub.status.idle":"2022-07-20T10:44:14.736568Z","shell.execute_reply.started":"2022-07-20T10:44:14.376725Z","shell.execute_reply":"2022-07-20T10:44:14.735884Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Histogram of train word counts","metadata":{}},{"cell_type":"code","source":"train_data[\"discourse_num_words\"] = train_data.discourse_text.apply(lambda x: len(x.split()))\n\nplt.hist(train_data[\"discourse_num_words\"], bins=100)\nplt.title('Histogram of Train Word Counts',size=16)\nplt.xlabel('Train Word Count',size=14)\nplt.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-07-20T10:44:20.026642Z","iopub.execute_input":"2022-07-20T10:44:20.027420Z","iopub.status.idle":"2022-07-20T10:44:20.471196Z","shell.execute_reply.started":"2022-07-20T10:44:20.027368Z","shell.execute_reply":"2022-07-20T10:44:20.470476Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Preprocessing** ","metadata":{}},{"cell_type":"markdown","source":"## Bert Encoder","metadata":{}},{"cell_type":"code","source":"def bert_encoder(texts,tokenizer,max_len = 256):\n    input_ids  = list()\n    token_type_ids = list()\n    attention_mask = list()\n    \n    for text in texts:\n        token  = tokenizer(text,max_length = 256,truncation = True,padding = 'max_length',add_special_tokens = True)\n        input_ids.append(token['input_ids'])\n        token_type_ids.append(token['token_type_ids'])\n        attention_mask.append(token['attention_mask'])\n        \n    return np.array(input_ids),np.array(token_type_ids),np.array(attention_mask)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:44:27.235873Z","iopub.execute_input":"2022-07-20T10:44:27.237206Z","iopub.status.idle":"2022-07-20T10:44:27.247763Z","shell.execute_reply.started":"2022-07-20T10:44:27.237153Z","shell.execute_reply":"2022-07-20T10:44:27.247009Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Bert Tokenizer","metadata":{}},{"cell_type":"code","source":"# Bert Tokenizer\nmodel_path = '../input/huggingface-bert-variants/bert-base-cased/bert-base-cased'\ntokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=True)\n\n# tokenizer = transformers.BertTokenizer.from_pretrained(model_path)\ntokenizer.save_pretrained(\".\")","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:44:45.451419Z","iopub.execute_input":"2022-07-20T10:44:45.451686Z","iopub.status.idle":"2022-07-20T10:44:45.519334Z","shell.execute_reply.started":"2022-07-20T10:44:45.451652Z","shell.execute_reply":"2022-07-20T10:44:45.518471Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Adding seperator \"[SEP]\" between discourse type and discourse text ","metadata":{}},{"cell_type":"code","source":"SEP = tokenizer.sep_token\ntrain_data['inputs'] = train_data.discourse_type + SEP + train_data.discourse_text\ntrain_data['inputs'].iloc[0]","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-07-20T10:44:50.134522Z","iopub.execute_input":"2022-07-20T10:44:50.134793Z","iopub.status.idle":"2022-07-20T10:44:50.161120Z","shell.execute_reply.started":"2022-07-20T10:44:50.134761Z","shell.execute_reply":"2022-07-20T10:44:50.160375Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Creating Labels","metadata":{}},{"cell_type":"code","source":"# creating label\nnew_label = {\"discourse_effectiveness\": {\"Ineffective\": 0, \"Adequate\": 1, \"Effective\": 2}}\ntrain_data = train_data.replace(new_label)\ntrain_data = train_data.rename(columns={\"discourse_effectiveness\":'label'})\ntrain_data[['label','inputs']].head()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-07-20T10:45:09.902848Z","iopub.execute_input":"2022-07-20T10:45:09.903076Z","iopub.status.idle":"2022-07-20T10:45:09.921576Z","shell.execute_reply.started":"2022-07-20T10:45:09.903050Z","shell.execute_reply":"2022-07-20T10:45:09.920915Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Split dataset","metadata":{}},{"cell_type":"code","source":"# split dataset\nfrom sklearn.model_selection import train_test_split\nX_train, X_valid, y_train, y_valid = train_test_split(train_data['inputs'], train_data['label'], test_size=0.2, random_state=42)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:45:49.327690Z","iopub.execute_input":"2022-07-20T10:45:49.329075Z","iopub.status.idle":"2022-07-20T10:45:49.339092Z","shell.execute_reply.started":"2022-07-20T10:45:49.328255Z","shell.execute_reply":"2022-07-20T10:45:49.338234Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = bert_encoder(X_train.astype(str),tokenizer)\nX_valid = bert_encoder(X_valid.astype(str),tokenizer)\n\ny_train = y_train.values\ny_valid = y_valid.values","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:46:40.571658Z","iopub.execute_input":"2022-07-20T10:46:40.571935Z","iopub.status.idle":"2022-07-20T10:46:58.171580Z","shell.execute_reply.started":"2022-07-20T10:46:40.571904Z","shell.execute_reply":"2022-07-20T10:46:58.170805Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## batch-wise data","metadata":{"_kg_hide-output":true}},{"cell_type":"code","source":"AUTOTUNE = tf.data.experimental.AUTOTUNE\n# batch_size = 8,lr = 3e-6,max_len = 512,\ntrain_dataset = (tf.data.Dataset.from_tensor_slices((X_train,y_train)).repeat().shuffle(2048).batch(16).prefetch(AUTOTUNE))\nvalid_dataset = (tf.data.Dataset.from_tensor_slices((X_valid,y_valid)).batch(32).cache().prefetch(AUTOTUNE))\ntrain_dataset","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-07-20T10:47:06.288347Z","iopub.execute_input":"2022-07-20T10:47:06.289086Z","iopub.status.idle":"2022-07-20T10:47:06.437910Z","shell.execute_reply.started":"2022-07-20T10:47:06.289046Z","shell.execute_reply":"2022-07-20T10:47:06.437260Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Sample input to BERT model ","metadata":{}},{"cell_type":"code","source":"for k,_ in train_dataset.take(1):\n    print(k)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-07-20T10:47:10.263131Z","iopub.execute_input":"2022-07-20T10:47:10.263673Z","iopub.status.idle":"2022-07-20T10:47:10.429514Z","shell.execute_reply.started":"2022-07-20T10:47:10.263632Z","shell.execute_reply":"2022-07-20T10:47:10.428704Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Build Model**","metadata":{}},{"cell_type":"code","source":"def build_model(model_bert,max_len = 256):\n    input_ids =      Input(shape=(max_len,), dtype=tf.int32, name=\"input_ids\")\n    token_type_ids = Input(shape=(max_len,), dtype=tf.int32, name=\"token_type_ids\")\n    attention_mask = Input(shape=(max_len,), dtype=tf.int32, name=\"attention_mask\")\n\n    sequence_output = model_bert.bert(input_ids, token_type_ids=token_type_ids, attention_mask=attention_mask)[0]\n\n    clf_output = sequence_output[:, 0, :]\n    clf_output = Dropout(0.1)(clf_output)\n    out = Dense(3,activation = 'softmax')(clf_output)\n\n    model = Model(inputs = [input_ids,token_type_ids,attention_mask],outputs = out)\n    model.compile(Adam(learning_rate = 2e-05),loss = 'sparse_categorical_crossentropy',metrics = ['accuracy'])\n    \n    return model","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-07-20T10:47:21.173170Z","iopub.execute_input":"2022-07-20T10:47:21.173723Z","iopub.status.idle":"2022-07-20T10:47:21.181471Z","shell.execute_reply.started":"2022-07-20T10:47:21.173686Z","shell.execute_reply":"2022-07-20T10:47:21.180543Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![Screenshot from 2022-07-20 13-34-13.png](attachment:bec85c73-c4a3-4a05-8d0b-a8ab16e0f0bc.png)","metadata":{},"attachments":{"bec85c73-c4a3-4a05-8d0b-a8ab16e0f0bc.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA1cAAAGVCAYAAAASfQtmAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAwdEVYdENyZWF0aW9uIFRpbWUAV2VkbmVzZGF5IDIwIEp1bHkgMjAyMiAwMTozNDoyMiBQTT+IT6kAACAASURBVHic7N13eFRl+vj/92QmM5NM2qSRXkggFUJCQgmQhITQmzT5rogouoLKLup+2dXP6rrLR0Us6NpRLKCiCCIgNfQWIPQSEgIEUiBASO9l5vcH35yfMaiggwG9X9fFdcHM8Jz7tOc893Oe8xxVQECwGXHLBNrO5r+74Y2Yv7PRpG3vcH4R47nBPHNpHoNV23j9zw8y/7CmvUMSQvxBBPebwYQkw3W/Kz++gLeXX/mNIxK3E3WjI73uvRfXoy+zItOmvcMRQghUZrNZkishhBBCCCGE+JWs2jsAIYQQQgghhPg9kORKCCGEEEIIISxAkishhBBCCCGEsACZmaCdlJWVceDAAa5evdreoQhxR9Dr9URERBAUFGSxMs+ePcuJEyeora21WJlCiDuLo6MjgwYNslh51dXVHDt2jLy8PIuVKYS4vUVERBAREQFIctVuCgsLefPNN2lsbMTW1ra9wxHittbQ0EBlZSUPPPCARZOrvXv38uGHH2JnZ4dWe2fO5imE+OWuXr2KRqOxaHJVWlrK559/zrFjx3Bzc7NYuUKI209jYyMXLlzgnnvukeSqvTU0NHDhwgVmzpyp7AwhxPVdunSJ119/nYqKCouWW1lZiU6nY/r06Xh6elq0bCHE7W/lypV8+eWXFi2zsbGRy5cv069fP8aNG2fRsoUQt5fi4mLee+89ysrKlM8kuWpnnTt3Jioqqr3DEOK2VlhYiMFw/Xcd/VoGg4GwsDD8/f1vSflCiNvX4cOHb1nZPj4+cn0X4neuqKgIFxeXVp/JhBZCCCGEEEIIYQGSXAkhhBBCCCGEBUhyJYQQQgghhBAWIMmVEEIIIYQQQliAJFdCCCGEEEIIYQGSXAkhhBBCCCGEBUhyJYQQQgghhBAWIMmVEEIIIYQQQliAJFdCCCGEEEIIYQGSXAkhhBBCCCGEBWjaOwAhfk5jYyPV1dUAaDQa7OzsbslyqqqqaGpqUv5tZWWFjY0N1tbWt2R5llJZWUlzc7Pyb7VajY2NDRqNnN5C3AyTyURdXR0NDQ2oVCpsbW0tcv7X1NTQ0NCg/FulUmFjY4NWq/3VZd9K1dXVNDY2Kv++U+rEP5rm5mZqa2tpampCpVLh4OCASqVq77D+MOrr66mtrQVAp9NhY2NzS5ZTXl6O2WxW/q3RaLCxsUGtVt+S5VnKD+O2trZGr9ff9nH/GnLn6g5hMpk4deoUhYWF7R2KxZhMJnJzczl//vxP/m7Xrl0kJCTg4+PD4MGDb1k8Tz75JD179sTZ2ZnAwEDGjBnDjh07btnyLOX+++8nLi4OZ2dngoODmTRpEhkZGe0dlrgDmM1m8vLyOHfuXHuHclsoKSnh+eefp0uXLnTs2JG1a9dapNwXX3yR3r174+7ujp+fHwMHDmT9+vUWKftW+r//9/+2qhNHjx7Ntm3b2jss8QMnTpxg2rRpBAcHExISQmlpaXuH9LtgMpnIycmhqKjoJ3+3fPlyevTogbe3N88+++wti2fQoEFER0fj6upKaGgojzzyCCdPnrxly7OUAQMG0LVrV9zc3IiIiOBvf/vb7/6aI8nVHaK2tpZhw4bxzDPPtHcordTV1bFp0yZycnJu+v/W19czefJkHnnkkZ/8XVJSEkePHiUmJuaXhnlD3n//fZYvX45Go2HUqFFs3LiR5OTkW7rMG9XY2MimTZvIzs5u893SpUtZtmwZ1tbWTJo0iRUrVtC7d+92iFK0MJlMbNy4kczMzOt+v3XrVvbt2/ebxZOWlsahQ4fafF5fX8+MGTOYNm3abxbL7czV1ZXnn3+el156CWdnZ4uVO3v2bFatWoW7uztJSUns3buXESNGWKz8XystLY1jx461+fydd97h22+/RavVMnz4cDZv3syAAQPaIcLfv/T0dNLT03/R/+3atSufffYZ99xzD3q93sKRWcaP1UG3s5qaGkaOHMkrr7zyk7+bOHEiK1asoFOnTrc0nj179vDBBx9gb2/PzJkzWbhwIZGRkbd0mTfqypUrbN26lQsXLrT5Lj09nblz5+Lq6sozzzzDu+++S1BQUDtE+duR5OoOodFoGD9+PAkJCe0dSitXr17lT3/6EwsXLrzp/6tWqxk+fDiDBg26BZH9vlRWVjJx4kQWLFjQ3qGIG9DQ0MDdd9/Ne++9d93vp0yZwj/+8Y/fLJ4xY8bwwgsvtPlcrVaTmpp6S+8Ii9vf+PHjee2119o7jD+0J554gieeeKK9w7hlfqwOup1pNBrGjRtHjx492juU215GRgZTpkxh06ZN7R3KbUEeyrhD6HS6O65i+jlarZa///3v7R2GEH9Y1tbWPPbYY+0dhhBC3Hb0ej2zZ89u7zDEHUiSqztAdnY2b731FjU1Nbi4uPDCCy9QWVnJN998w+7duwF47LHHOHLkCPv370er1RIbG8vw4cNxcHAgKyuLL774gsLCQhwdHZkxYwZffvkl+fn52Nra0qdPH/r374+TkxM7d+5k8eLF1NXVERMTw6OPPkp5eTnffvst27dvR6fTMWvWLAICAli3bh2ffPIJFRUVrFq1igsXLqBSqZg2bRqxsbE/uU65ubksWLCAixcvAteG5LVMwFBdXc3OnTvZunUrZWVleHt7M2HChDZlmEwm9u/fz6ZNm8jPz0etVhMREUH//v3p3LmzRR7o/f66Azz88MNkZ2ezb98+NBoN0dHRjBo1CkdHR06dOsXixYvJy8vDwcGBRx99lGXLlnH+/HlsbGzo3bs3KSkpGI1G0tPTWbx4MdXV1XTp0oWZM2dSWVnJypUr2bx5MzqdjpkzZ9K5c2fS0tL49NNPqaqqYt26dVy9ehWVSsUDDzxAfHz8Ta1PQ0MDu3btYvfu3RQVFaHVaomOjmbIkCG4uLhQW1vbqrEdEBDA3XffTXBwMK+99poyvrt37948+OCDNDU1kZ2dzfr16zl79iwAHTt2ZPTo0XTs2JG6ujrWr1/PypUrAbjrrruor69nz549lJSUoNfrefnll7G1tf3V++q3YDKZ2LdvnzL8wcrKioiICAYPHoyvry8AmzdvZuHChVRXV7Np0yamTp0KwL333ouDgwOff/45V69epaGhQfkuPj5e+XttbS2bN29m165dFBcX4+DgQGxsLKmpqbi4uJCfn8+nn35Kbm4ucO15ni+//JJTp07h4OBAUlIS/fr1w8bGhvT0dBYtWkR9fT379+9XljFkyBB69erFp59+quy39957T5mooKmpiczMTNLS0pTvAwMDGT58OKGhoVRVVbF69Wo2bNigrNvly5fZvXs3JpOJrl27MnbsWIxG489u09LSUpYvX86uXbuAa3XZ0aNH2bt3LzY2NvTt25eUlBSOHj3KunXrqKysJCQkhIkTJypD98xmMyUlJWzfvp2DBw9SUlKCg4MDffr0YejQoVhZWSm/y8nJYf369eTk5GAymQgMDCQ5OZmoqCjldz908OBB3nnnHeWh7C5dujBt2rRfNQSrpqaGtWvXsmbNGuDa0KLy8nJ2795NU1MTERERTJgwAaPRSF5eHl999RVZWVnY2dnxwAMPsGnTJk6fPo21tTWxsbEMHjwYNzc3Dh06xJdffklxcTFBQUE8/fTT1NbWkpaWxooVK9BqtTzwwAPExcWxY8cOFi1aRG1tLbt27VKOjzFjxjBs2LCbWh+TycSePXvYvn27cm506dKFIUOG4OXlRV1dHY8//rgysUeHDh2YOHEiXbp04aOPPlKuZd26dWPGjBnKM7lr1qwhJyeH5uZm/P39lWPQbDazZcsWFi9eDEBKSgpOTk7s2LGDK1euYDabeeONN27ZBEiWcuLECRYvXsyZM2cAlH0QHh7Ok08+CVwbvrt7925l2+p0OiIjIxk8eDB+fn7XLddkMpGWlsaSJUuUz8aOHUtqaiqNjY2sWbOGvXv3UlFRgdFopHfv3iQmJuLk5MTZs2eZP38+V65cQa1W8z//8z8sXbqUc+fOYTQaGTRoELGxseh0up9dv/T0dD777LM2dVBqaioNDQ2tnuFrOe6ys7OZO3cuAL6+vnTp0kW5Zjg7OzNlyhSWL1+utGmSkpLo27dvq319+fJlVqxYwYkTJ2hoaMDLy4vU1FSio6NvaCKZ48ePM2/ePODaNe0f//iHMgFDWVkZa9asYd++fdTX1xMaGkpYWFibMpqbm9m4cSPbt2+npKQEOzs7oqOjSUhIwNvb2yJtlMLCQhYtWqQ8mvHiiy+yZMkSsrKysLe3JyEhgcTERGxtbdm3bx+fffYZ1dXVeHl5MWbMGFauXElRURFGo5HU1FR69eqFjY0Nq1ev5ptvvkGn05GcnMy4ceMoKipi0aJFZGVlYWtry7x58zCZTHzzzTd89NFHXL16lQ8//JCtW7eiUql44YUXcHd3v6n1KSkpYceOHRw4cICrV69ib29PfHw8Q4cORa1Wc/r0aebMmaP8PiYmhrvvvhtnZ2ceffRRGhoasLGxYciQIQwbNoz6+nrlml1YWIhOpyMiIoKRI0fi4eFBcXExS5cuVZ5TnzlzJnv27OHo0aPU1NQQFhbGjBkzbuhY/z4ZFngHcHd3Z+zYsZw8eZIlS5ZgMpmwtbWlV69eODo6smLFCubNm4dGo2HYsGE4OjrywgsvKBcdd3d3hgwZwvnz5/nkk0+YPXs2/v7+pKamYmVlxZw5c/j4448pLy+nY8eOjBs3ji+++EK5vavX6+nRowdarZZvv/2WK1euABAWFsbo0aPR6/VERkYyceJEJk6cqDQyf4qLiwtDhw7l4sWLfPTRR8psd7W1tSxdupRnn32WiooKUlJSCA0NZd68eVy6dKlVGTt27OD555+nurqaIUOGkJyczIEDB3jqqadaPSz5xRdfcM8997B79+5WM9bciJZ1d3V1ZdWqVbz++uuYzWaGDh2Kq6src+bMUYZEuru7M3jwYC5cuMDChQuZPXs2Pj4+DBo0CK1Wy9y5c/nggw8oLS0lICCAMWPGsHTpUtLS0oBrdye7d++OwWBgxYoVyvqGhIQwZswYdDodYWFhynYODAy8qXVp2Wb//Oc/UavVDBw4kICAABYtWsS8efMoKyvD2tqaUaNGsXfvXg4cOEDPnj1xd3dHpVKRnJxMbm4uLi4u9O7dm+bmZtLT03niiSc4cuQIvXv3Jj4+nt27d3P//feTnZ2NRqMhMjJSSRJfffVVLly4QFJSEjExMXz++efU19ff9Hq0l4MHDzJ9+nRqa2tJTU0lIiKCtWvX8tJLLykTs3Tq1IkJEyag1Wrp1KkTEydO5P/8n/9DcHAwPj4+jBo1CoPBoDQuJ06cSK9evYBrHQuvvfYa//nPfzAYDIwYMYLAwEA++OAD5syZw+XLlzEajQwcOJDy8nIWLVrEa6+9hqenJ/3796e4uJjZs2crz24EBAQwfvx4NBoNfn5+SixRUVE4OTmRmppKRUUFixYtUs7BpqYmNm/ezN/+9jeysrLo06cPffv2Zf/+/UyePJmtW7ei0+mIjo7Gz8+PtWvX8sYbb1BVVaUcU3PmzPnRIZE/ZGtrS8+ePXFycmLFihW8/vrr6HQ6hg8fjslk4l//+hfPP/88GRkZ9OjRA19fX+bPn8/777+vlFFdXc2XX37Jxx9/jLe3NwMHDsRgMPDss8/ywQcfKL/LycnhpZde4ujRo/Tr14/U1FQuXLjAAw888JMPhnt5eVFRUcHp06cZOXIkiYmJaDQaVq9ezX333ce6detazap3I7RaLVFRUXTs2JH169fz3//+l/LyclJSUggMDOSll17izTffBMBoNJKcnExtbS1ffPEFzz//PK6urgwdOhQ3NzfefPNN5s2bx+XLl/Hx8WHEiBFs2bKF7777Drh2hzIyMhJvb2++++67Vh0hd999N9bW1gQGBirHR3h4+E2tC8D+/fuZMWMG9fX1pKamEhYWxsqVK5k7dy6FhYXK0PZDhw6RlpZG79698fLyAqBXr16UlpYqnX1ms5kTJ07wl7/8hW3bttG9e3f69evH8ePHeeSRRzhy5AhWVlZ07tyZ2NhYtm3bxuuvv87JkyeJj48nLi6OL7/88o6oWzw8PJTriaurq1In9O/fH7j2XPOCBQt45plnaGxsZMiQIXTv3p2VK1fyt7/9jaNHj163XJVKRYcOHbh06RLNzc2MGTOG8PBwampqePbZZ3nhhRfw8vJi6NChODs789///pd33nmH0tJSXFxcGD58OPn5+Xz00UcsWLAAf39/+vbtS05ODs8999yPPk/6QwEBAYwbN65NHRQdHU1cXBxNTU0sWbKEqKgo5bhzd3enc+fOFBcXExERQVRUFCNHjuTw4cN8+OGHvPXWWwQHB5OSkkJFRQX/+te/WLZsGTU1NcC1xxWmTZvGkiVLlA7XS5cu8Y9//IO0tLRWswL/GE9PTyZOnMiRI0dYtWoVJpMJuNbh+sorrzB37lyMRiPDhw/H2dmZTz/9tM1EIkuWLOG5557Dw8ODESNGEBERwcqVK3nzzTeVdhTACy+8wNixY3/Rs+uOjo4MGDCAmpoaPv/8c15++WXc3d1JSUmhvLyc2bNnKwmsn5+fMlHXBx98wMcff0xoaChJSUlcunSJp556ijVr1tDQ0EB4eDhDhgzhq6++Yv/+/QA4ODiQnJzMpUuX+OqrrzCZTKjVaqKjo0lMTMRgMNC7d2/lGL7Zjo3q6mqWLl3K/Pnz8fDwYODAgTg4ODB79mzmz5+PSqXCzc2N6OhoNm3aREVFhdJmUqlUjB8/ngMHDuDr60t4eDj19fUsXryY//mf/6G8vJyBAwfSvXt3lixZwuOPP05eXh4Gg4H4+Hj0ej3ffPMNL7zwAlqtliFDhtChQwc2bNhw03U7yJ2rO4LRaCQpKQk3NzflYcGW7Ds8PBydTkdwcDBDhw7FycmJsLAw1q9fz5YtW5g8eTLOzs707t0bT09PampqmDBhAklJSVhbW9O9e3fKy8uZP38+sbGx9OvXDy8vr1ZTZLY06jt37txqCl5/f380Gg1arZbAwEBSU1NveJ0cHByIj49v03uTnZ3NggUL8PX1Zfr06YSGhtLc3ExgYCCLFi3Czc1N+e3+/fvJz8/nqaeeIi4uDrPZTEhICI899pgydTvA2bNn2b59O+PHj7/pbd+y7hEREeh0Ojp27KhcjKKioli3bp1yd8LJyYmePXvi7e1NTU0N48aNY8CAAWi1Wrp3705VVRUffvgh3bt3JyUlBU9Pz1bbU6vVEhoaSmhoaKvP/fz8sLOzw9raWkmKf6nS0lJ8fHyYPn06dnZ21NfXU1dXx4cffsiECRPo0qULgwcPJisriw8++IDa2lqcnJyAa/ussbGRGTNm4OvrS1FREW+++SbV1dVMnTpVSRC6du1KYmIizzzzDEuWLCEoKIiYmBhsbW0JCgpi+PDh+Pn50djYSGpqKg4ODr94fX5rLb2PM2fOVLaHTqfjlVdeYeDAgfj6+uLr64ubmxvW1tb4+fm12V/u7u7o9Xqlp/D7NmzYwKJFixg+fDh//vOfcXFxobq6WhmeEhERwZQpU+jRowf+/v5YWVnRtWtXRowYgUajwWAw8OSTT3L48GH69euHp6cnnp6eqNVq3N3d2yzv++W0yM/P55133gHgwQcfVCaSiY+Pp0ePHjz99NOsXbuWzp07ExUVhY2NDX5+fgwaNAgPDw8SEhJYtWoVa9eu5S9/+QsGg+Ent2lLXdZyjgUFBTFo0CAcHR0JDg5m+fLl7N+/n1dffZXIyEiSk5PZunUrS5Ys4amnngL+/9c19O7dm8mTJ6PT6ejfvz9nzpzhX//6F5MmTcJgMHD+/HkOHDjAX/7yF0aPHo2VlRV9+vRh+fLllJeXXze+mpoaXnvtNby8vHj11Vfx9vZWtld+fj47duygX79+SuPrRmk0GoKDg4mOjsbW1hZfX19SU1Px9vYmKSmJ1atXs3r1ap544gns7e3p3r07gYGB1NfXM2TIEMaOHYuNjQ09e/akubmZjz76iKioKO6++27c3NxaNWw0Gg0dO3aka9eurXrtvb298fb2RqPRKD37v9TVq1cxGo389a9/xd7enoaGBjQaDfPmzWPo0KF4enqSnJzMo48+ytNPP01ZWRmurq4A2NnZYTKZmDJlCtHR0dTV1TFv3jzy8vKYO3cuycnJWFlZKSMFnnrqKdatW4efnx89e/bE3t4eX19fhgwZQufOnWlqaiIpKUmpu25nLi4uxMfH4+joCNBmH+zevZuPPvqI2NhYHnroIXx8fGhqalKS4fnz5zN37tw2d/9LS0t599136d+/P/feey9ubm6oVCo++eQTFi9ezPTp03nooYewsbGhX79+NDU1sXDhQqKiohg2bBh9+/bF09MTlUpFdHS0cge4sbGR5557jqysLLp27fqz02n/XB300EMPsWvXLnJzc5UOQ2tra2xsbIiKimLEiBHo9XqCg4Nxdnbm6NGj3H333fTu3Ru1Wk1UVBSzZs3i9ddfp2fPnoSGhjJnzhx27tzJG2+8wV133YVGoyEuLo7p06czZ84cevXqhYuLy8/ul9TUVF555ZVWdcOmTZtYsmQJo0aNYvr06bi6ulJTU4PZbObbb79tVUZLojJlyhQMBoNyV2Xz5s2tEv+jR4+ydetWKioqfjKm67GzsyM2NpbAwEDUajWRkZGMHDkSjUajjEY6cOAAKSkpeHh44OHhgYODA1evXmXChAnExcUpd5lnzJjBSy+9RHx8PIGBgdjZ2bXav7a2tnTv3r1VHahWqwkJCSE6Ohq9Xk9ERMQvrkeam5uprq6mR48e3Hfffej1evr378+5c+f43//9X+677z6cnJwYM2YMhw8f5syZM62mvndxccFsNjNt2jQcHR3Zs2cPH374If7+/jz00EMEBwfT1NSEn58f48aNIyQkhOeee46uXbsq7a7o6Gjuuusu7Ozs6Nu3L2VlZb9oZI3cufqdiI2NxdHRESsrKxwdHfH19aW8vLxNg0Gn0zFw4EDlHQO+vr5069aNgoICTp069YsydEvKz89n//79dOvWjZCQEDQaDTqdjpiYmDZ3xAICAqiqquKVV15Rhu2FhYWxevXqVj2vs2bNIisri+HDh//q2/AxMTEYjUasrKxwcHDAz8+PiooKysrKWv1Or9czYMAA5R0U3t7exMTEUFRURFZWVqt33vyWRo8ezcKFC3F0dEStVmNra0tkZCRms5msrCxMJhNarZaRI0diNptZu3at8v6OxYsXk5iYqNzmLy0tZf369QQHBxMXF4dWq0Wr1RIREUFYWBhpaWlcvny51fIjIiLw9vZGrVaj1+vp3LnzHfWui5SUFDZs2IDRaFTWoVOnThgMBnJycqirq/tV5aenp3Pu3DmGDx+Oi4sLVlZW2NvbExUVhUql4sCBA606DgD69++PXq9Ho9Hg5uaGs7MzV69eVfbbzbp06RKbNm0iNDSUbt26YW1trST2KSkp5OTktJnpsEuXLri7u6NWqzEYDHTs2JHKykquXr1608vv3r07Dg4OWFlZYTQacXd3x9HRkbCwMOU9d97e3uTn5yv/x8nJiccff5y//e1v2NraolarcXBwoGfPnly+fJlTp04B1y6+BoOBjz/+mG+//ZaqqipcXV05fvw4PXv2bBPLxYsXeeCBBzhy5Agvvvgivr6+rRLRqVOncvz4ce67776bHjbyQxEREXh4eCjbMCgoiKqqqjbbUKvVkpCQgMFgwMrKCjc3N3r27El5eTnHjh37xfv91xo4cCDfffcdTk5Oyrv2QkJC0Ov1nDp1SmlMjhkzBicnJ5YtW6Ycy6tXryYkJAR/f39UKhUNDQ0sX74cT09PEhIS0Ol0WFtb07lzZ8LDw9m8ebMypLxFcHAwHTt2RKPRoNfrCQkJuaPqlh9z5MgRTpw4Qf/+/fHx8UGtVqPT6ZRtcfTo0TZ3PM6ePUtKSgpNTU385S9/UUYfAGzcuJErV65w9913K43nls7CyspKjh492qoeU6lU9OnTR9kHnp6e2NnZceXKFYtcx+Lj4+nevTuffvopJSUlABQUFHD8+HESEhLaDL21sbFRjomWDorIyEhOnTpFbm4uJpOJjz/+GBsbG4YNG6bUjf7+/kRGRnL48OFfNQ34wYMHOX/+PAMHDsTV1RUrKyvs7OyIiopq1fkLEBkZyenTp3nqqac4evQoWq2WcePG8d///hcfHx/ld5988gl5eXlER0f/4rhaJCcnK+vs6uqKi4sLV69eVe7qtWjp4G7Zr2FhYYSGhnLs2DHy8/NvepSPJdjb2/PYY4/x9NNPYzAYlHo8Li6Oq1evkpWVBVxL2AcMGMDp06fJyMhQ2q2vvPIKkydPVjoqsrOzOXToEPHx8XTs2FE5d6Kjo3Fzc2PXrl1t2m59+vTB3t6+VRvvx4aL/xRJrn4nWhojcK0y1Gq1mM3mNr2p3/9dy28NBgM2NjaUl5f/ZHJlNptv6QlnNpupqamhsbERg8HQ6u6NSqVSejlbjBkzhk8//RSj0cgDDzygjCHesmVLq5fqarVaDAaDRV6q23LSfb/s621ne3v7Vhf2H27nn7oo3crtnJeXx+OPP06XLl3w9PTEaDQyYcIEzpw506ry9fDwYMyYMWRkZLBnzx4KCgrYuXMnd911l9LzXVdXR2VlJYsXL8bLywuj0YjRaMTZ2ZkTJ05ga2vbqgEM3PEvN75y5QrPPPMM3bp1w9vbW3n+YP/+/dTW1rY67m5Wc3MzlZWV1NfXM3LkSFxcXJRtmpqaSllZGbW1tW06TL7/XJNarUaj0WAymX7RMdRyDtbW1mIwGNokDB4eHjQ3N1NcXNzq8x/2cLb8v5u9mwNtzzG1Wo1Wq20VS8s6tmhsbGT37t1MnjyZ0NBQ3NzcMBqNPPnkk5jNZqURHxMTw0cffUSfPn3497//TefOnUlOTmbZsmVt9l1tbS2vvvoqZWVl7N69m4ULF7b5vxAPTgAAIABJREFUjbW1tcVeNPzDOkqn0123brGzs2tzDtnY2GBnZ0dlZeVPJvi3sv6+fPkyTz31VKtzY8iQIRw+fJja2lpl2QaDgSlTppCZmcnGjRu5dOkSu3fvJiEhQXmGrr6+nvLycrZu3YqPj0+rumXLli0YDIY2DWStVvu7e7mxyWSiqqqK5ubmNtcUjUaDs7MzNTU1re54VFRU8Oc//xlvb2/Wrl3LunXrlGOoqalJuc7HxsYq29VoNDJp0iSlrO934KhUKqWxCtfOR7VaTXNzs0WOJysrK6ZMmQLA66+/TkNDAwcPHqShoYE+ffq0+X1LJ/L347O3t8fa2pqSkhJqa2spKSmhoKAAf3//VsfOhx9+iEajaXNdulHNzc1UVVVhNpuv2xb44Z3SWbNm8dlnn1FQUMDQoUMJCgpi+vTpHD58uNV5rdfrlc6SX+v71wMrKys0Gs112xTXawu2dLr+XKfYrapHmpqa2LdvH1OmTCEsLAx3d3eMRiMzZ86koaFBOS5VKhUxMTHExsayevVq8vLyOHXqFFu2bOHBBx8Erp071dXV1NbWMmvWLKUso9FIQEAARUVFmM3mVsMzAWWI4a8lydUfTGlpaatGdHNzM+Xl5dTX1+Pi4qJcnHQ6XaseUJPJRGVlZZukQKVSYWVlpZxsV65c4eLFizc0pvmHWipJg8FAWVlZq0ZCc3Nzm5Pg8uXLdO7cmffff5+cnBxWrlyJwWDgz3/+M998881NL9+SSktLW12gTCZTq+3c0lDUarWt9kfLxfR6zwp8fzsXFxdz8eLFG77TeOrUKWpraxk7dizr1q3jtdde4/Tp05SWlrJ06VKCg4NbVZiOjo4MGTKEkpIStmzZwldffUXXrl2VnmW4NkTA3d2de+65h6KiIkpLS5U/OTk5bN269Za/m+y3ds899/Duu+8qw2JKSkpIS0u77lS9399fJSUlXLhwQdlfarVa+a6mpobz58/T0NCAq6srdnZ2rF69mpKSEmV7Xr58mWPHjvHiiy8qz6ncjO8vr7Kykvz8/Os2wlUqFXZ2djg5OVFeXt7qGDabzeTm5mJtbY23t/dNx3ArZWdnM3XqVCorK5XJe0pLS3njjTdQqVTKuldUVGBnZ8fzzz/PkSNH2LhxI926deO+++7jrbfealWmWq3mqaee4uuvv2b8+PE8+eSTrF279lcl0JZQUVFBVVWV8m+TyaQ0iJ2dnZUhLD+sW1qSzB/2YEPrY7WsrIyCgoIbfl4pNzeXyspKxo0bx8cff8zs2bPJzs5W7mzHxMS0atxptVpGjRqFyWRizZo1fPfdd7i5uREWFqY09vR6vTKM8MKFC63qljNnzrBnzx5lGPLvxff3QUNDA7m5udTW1mI0GtHpdBQXF7eq7xsaGigqKsLBwaHVO9msra1ZvHgxn3/+OeHh4fz73/8mIyMDk8mERqOhQ4cO6PV6Dh061Gq7Xrx4kSNHjjBr1qyfHTL3S/xUHTRgwAC6dOnCe++9R3Z2NmlpaYwYMUIZ7vV9P7wr39TURElJCSaTCXd3d2xsbJTh2QUFBa3W8fz582RkZNz0ZC3fXwej0YhGo6G4uLhVXVBXV9fmLsi5c+dITk7m22+/5fTp07zxxhvk5uYyc+ZM9u7d+4tisJSSkpJW14CmpiZlsqyWO50qlQq1Wt2qLmhubqasrOy69eD3k5KCggJlYpkbkZmZSXZ2Nvfffz/FxcUsXLiQ/Px8SktLeeutt5SO7BbBwcEkJCRw4MABjhw5wptvvsnUqVOVjgArKyucnJxwcnLi1Vdf5cqVK8pxUFJSwsmTJ/nkk09u2bvJJLn6g2mZ2aXl7smpU6fYu3cvwcHBrZ71CQ0NJS8vj4sXLyoVfU5OTpsLbsut08rKSqqqqnj99dd5++23f/T5hZ8TEBBAfHw8GRkZHD58mPr6eqqrq9m2bVubl9O9/fbbvPTSSxQUFCg9GQ899BC1tbWteqbOnDnD1q1b20yIcSuZTCa+/fZbpZfw9OnT7N69m4CAAMLDw5XtHBISQn5+vtLwPn/+PNnZ2dfdzo6Ojsp2fuedd3j99dfbPED7Y0aPHk1mZiYFBQW4ubkRGRmJTqejurqavLy8Ng0ulUpF586d6d+/P6tXr+brr7+mb9++rXrmXFxcGDlyJLm5uaSnp1NdXU1jYyMXL17kueeeY9asWe0ytOBWMZlMFBQU4ODgQPfu3dHr9dTX11NYWNjmeFepVBiNRqXRu2DBAl5++WXljo+rqyvl5eXKLG0zZ87k9OnTJCQk0KlTJ9asWUNhYSFNTU3U1dWxd+9eZs2axYoVK37RNnVzc6OiooKamhpWrVrFP//5TwoKCq77W09PTwYPHkxmZibp6enU1tZSW1vLoUOH2LFjB927d7fI8BVLamnYBAQEEBAQgJWVFeXl5Zw5c6bV9tqyZQszZ84kMzOT5uZmQkNDmTZtGiqVqs0LurVaLS4uLtjb2zN37lz69u3L448/zp49e5Qy8/Pz2bZtGwUFBb/oLt0vYTKZWL9+PSUlJTQ1NVFQUMDWrVtxd3enW7duSsdNUFAQhYWF5Ofn09jYyIULFzhx4sR1hw26uroqx+pXX33F7NmzKSoquqF4Hn74YXbs2EFeXh5Go5Ho6Gilc66goOC6z5F4enoyatQotm/fzsKFCwkPD2+VsOt0OiZOnMjly5fZsmULVVVVNDY2cunSJV5++WX++te//mbb+7fi7OxMZWUltbW1nDx5kqlTp5KZmUlMTAzdunVjw4YN5OTk0NjYSFVVFXv37uXs2bP06NGDjh07KuXY2Njg5uaGg4MDr732GlqtlhdeeIFTp04pkzF5eXnx9ddfU1xcTFNTE9XV1cokNtu3b78l9fZP1UHW1tY8+uijlJaW8vzzz3P16lWSk5OvW05zczNr1qxR7vIfPXqUI0eOEBUVRWBgIFZWVjzyyCM0NjayatUq5RrcMpPd448/fsPXzevp0aMHwcHBrFq1ivz8fJqbmykpKWHPnj1t7ug//PDDfP7551RUVKDX60lKSmL48OGUlJS0ujt0+PBhZYKG30rLDKJVVVXU1dWxf/9+Tpw4Qc+ePZVHMNRqNV5eXuTl5XH16lXq6+vJzMwkPz+/zfmn0+nQ6XRUVVVRWVnJX//6V5YuXXrD52lCQgJnz56lpKQEf39/ZRhfRUUFZ8+ebVOOlZUVSUlJdOzYkfnz57Nx40buu+++Vr8JDw+nZ8+e7Nmzh6ysLOrr62lsbCQnJ4d//OMfvPvuu7esHlE/99xzz92SksVPKioq4rvvvmPYsGE/2xN98eJFvvnmG9atW0dxcTEeHh7KNLXffPMNx48fx87ODjs7O3x8fHj//ffZvn07xcXFODo64ubmhpOTkzJ1aWBgIGfOnGH//v2sWLGCvLw8pk6dSv/+/ZUhXxqNhr1791JQUEBhYSFZWVlkZ2dTWFioDBfy8/PDZDJx/vx5srKyKC4uJicnh5SUFCIjI39yvPuVK1dYvXo1a9asIS8vTzmZQ0NDcXR0ZN++fWRlZZGfn8/x48fZt28fBQUFVFdX4+bmhq2tLQ0NDezevZvCwkJycnLIyMhg7dq1+Pr6MmnSJGW7vvPOO/zzn/+kS5cuhISE/Ogt3zVr1rBx40a2bt2KXq9Hr9ej0+k4ffo0y5Yt49ixYxgMBuzs7JQZy7Zt28alS5cwGo3KMK6VK1eSl5dHQEAAubm5ynY+e/Ys999/PwMGDFAaQNbW1tfdzgUFBdja2qLX65Vtk5eXR2ZmJiUlJeTk5JCQkEB0dDTffvstW7duZdu2bdja2lJXV8eBAwda/Vm3bh2TJk3CwcGB7Oxszp8/z/nz5zl58iR79+7l2LFj6HQ6TCaT8ryawWCgpqaGpUuX0rlzZyZPntxqaGZLbNnZ2co49hMnTrBlyxZyc3N55plncHd3JzMzkyVLlnDgwAGlxy8oKOi6vZI/prKyknXr1hEYGEhcXNwN/7+fc+DAAc6ePcvAgQN/9uF3lUpFU1MTWVlZnDt3jvz8fDIzM8nIyODgwYPAtQo/LCwMtVqtHLvl5eVkZ2fTq1cv4uLi0Gg0VFRUkJ6ejslk4tChQ3h7ezN8+HACAwPRarXs2LGD3NxcTp06pSQ1Xl5eTJw4EZVKxYYNG1i1ahVnz57F09NT2XcLFy5kz5491NfXKxNN6PV6SkpKOHDgAHV1dRw7doyQkBCioqKUGeXOnj2Lh4cHTU1NhIaG4uXlxcmTJzl+/LjS29sy/PNf//oXPj4+HDlyhK+//prDhw+j1WpxdHTE29ubBQsWsHnzZi5cuICzszNGo7HNkN7vq6urY9++fSxbtqxVXabX61m0aBFbt26lrq4ODw8PNBoNu3fvVs4xNzc3tFot7u7uFBcXk5WVRV5eHrm5uWRmZrJjxw5OnTqFu7u7Moxqz549nDlzhnPnznHw4EFWrlyJjY0NjzzyCN7e3mRkZPDNN98o54TRaMTBwYHc3Fw2bNjAiRMn0Gq12Nrasn79ev7+97/j6elJZGTkjw553bZtG+vWrVOmKNbpdOj1ei5cuMDXX3/NgQMHlG3o5eXFp59+yqZNmygoKMDV1VWpxzdv3kxmZiY+Pj4UFhZy6NAhvvvuOw4ePMjEiRMZPXq0cl5pNBoyMjI4d+4cFy9eVOqW8+fPK0OlPT090Wg0FBUVcfjwYaqrq8nMzCQqKoq+ffuyadMm0tLSlBkiTSZTm7plw4YNDB48mICAALKzs8nNzSU/P5+TJ0+yb98+Dh8+jJWVFSqVioiICKysrNDpdKjVar7++mucnZ154IEHWj2DolarCQ4OJjc3l4yMDPLy8jhx4gTbt28nJyeHWbNm4efnx5kzZ/jyyy9JT09X7sy1PLB/o44cOcKuXbt49NFHb/j//JyysjI2btxIYGDgz76WpEVlZSXp6ek0Nzezb98+HBwcGD9+PH5+fhgMBjIyMjhz5gy5ubns3LmTVatW0aNHD6ZPn45Op2PLli2sWLGC/Px8HB0dsbe3R6vVcujQITZu3MjFixexsrIiLi4OW1tbNm7cSEFBAVlZWezfv5/09HQiIyMZPnw4zc3NrFy5kjVr1ijD62xtbSkrK+OLL75QZo9rmUzrRp5tu14d9P02R0BAACtWrODgwYPMmDHjukMCFy1apHSi5OTksHfvXpYvX05lZSUzZsyge/fuaDQaunbtyqVLl9i1axcFBQVkZmaya9cujh8/zqRJk25oIo6CggK+/PJL0tLSKC8vx83NDYPBQEREBGazmW3btinX0cOHD3Po0CEuXLiAyWTC3t4eFxcXLl++zI4dOygpKeH48ePs3LmTjIwMYmNjGTZsmDKEb+bMmbz00ks/2x785JNP2LFjB/v27cPGxgYbGxu0Wi3p6emsXLmSM2fO4O7urpxfn376qdJBZjAY8PX1xcbGhvnz59PQ0IC3tzc5OTmkp6ezbNkyTCYTTz75JOHh4ajValQqFdXV1Rw4cIDCwkKlrZeTk0NRURHOzs6o1Wo8PT1pamri1KlT5OXlKdfHe++9F09PTz7++GN27tzJ4cOHsbGxobi4uE09snHjRh5++GGam5uVtl9LPb5z505OnTqFq6srarVamfjExcWFM2fOsGzZMkaPHs2ECRNa7VcXFxecnJw4cOAAWVlZnDlzhmPHjrFp0yaampp45JFHMBgM7N69m+XLl3Py5EkcHR3Jycmhe/fuP3tMt6iqqmLr1q3Y29uTlJQESHLVbm4muSopKWHfvn106tRJmRnKzc1NGU/au3dvtFotbm5uBAUFkZaWRqdOnYiIiECr1eLv74+rqyvLly+noKCABQsWkJeXR0lJCZ6enkyYMIHU1FTs7e2VZYaGhuLr64vJZKKpqYmuXbsqPWRmsxkXFxc6deqEtbU1ISEh6HQ6mpqaSEhIICEh4Wen4CwvL+fgwYPKFNL19fV06NCBoKAgAgIClCEi1dXV2NnZMXbsWAIDAwkICMBkMuHr66v0IDU2NlJSUkJzczNdunRh0qRJdOnSpdXyAgIC6NWrF66urj+aXO3bt4+ysjISExMJDg6mubkZHx8fSktLqaqqUt7/4OrqSlBQEBs2bCA4OFiZgcvPzw83NzdWrlzJ+fPnef/997lw4QIlJSV06NCB8ePHM2jQoFYX/pCQECVJbWxsJDIykl69ehEYGIhKpWqznW1sbGhsbKR37970798fe3t7du7cSW1tLYmJifj7+1NVVdXmT2xsLElJSSQkJODj44PZbKa2tlZ56D8yMlKZfKOlUrGysqKpqYmcnBwGDRqkTD/domWq327duqHX66moqKCxsRFfX1/uv/9+IiIiaG5uJi8vj8LCQuLi4pTZ71qmT71Rt0NyBdfewRMUFISVlRU1NTXY2toSExNDTEyMMu6/ZRKIsLAwDAYD9fX19OjRg5SUFGXIQmhoKO7u7lRWVhIUFMRdd91Fhw4d0Gg0dOnShaCgIOrr6ykrK0Oj0RAbG8vYsWPx8PCgtraWw4cP4+joSGJiInV1dfj6+mIwGDh27Bhdu3bF19cXvV5PaGgoNjY2RERE4OTkRE1NDZGRkQwbNgytVsvRo0dxcnIiMTGR2tpaXF1d6dSpE15eXnTr1g2tVktFRQVms5m4uDimTZum7Nfc3FyKi4vp0aMHjo6OGI1GgoKCWL9+PYGBgcTExKDVavHx8cHDw+NHt2ljY6MybLV3797odDpcXV1xc3Njz549yuQ2Wq2WDh06kJubi5OTE3379qWqqgo/Pz9CQ0Pp2rUrrq6uNDY2KvVJ//796dSpE3q9HkdHR/r06aM08MvKyqivr6djx47cf//99OnTR+nVrKyspEePHtjZ2eHq6oqzszPZ2dn069dPGULr4+NDhw4d8Pb2plevXnh4ePzoMxNHjx6lqKiIXr16ERYWRn19Pb6+vtTW1lJUVESPHj0wGo04OTkpdbi/vz+xsbHKMEwvLy8luXrxxRepqanh8uXLODk5MXr0aEaNGtVqeFhQUBBBQUGYzWbq6+uVYTT+/v7o9XocHBwICgrC2tqa8PBwHBwcqKuro1u3bgwePBij0UhGRgalpaXKHdXr1S2RkZEkJiYqU8hbWVlRW1uLra0tsbGxdOvWTZntNCYmRkm0zGYzZ86cITY2lhEjRrSaxVClUuHk5ERsbKzyLFl9fT2enp786U9/Uu6cXrx4kVOnThETE4O3tzfV1dWEh4e32g4/53ZJroKDg/Hy8qK0tBQvLy/uvvtufHx80Gg0hISEEBYWpgzJsra2Jjk5mUmTJil1/vHjx3F0dKRnz57U19fj7++PtbU1V65cIT4+HldXV+U6kpiYSEBAANXV1VRWVqLX6+nbty/Dhg3D1dWV6upqMjIy8PLyIjExUZlhraVTNyYmRhmCFxERcUPP0V6vDvp+p4tWq+Xy5ctcuXKFf//739dtQyxatIjy8nLeeust8vPzKS8vJyAggHvuuUd5tx9cS/p69+7d6m6gi4sLo0ePpk+fPjf0nqsrV64oCWe3bt0wm83KcMPIyEhl5s7q6mo6dOjA8OHDCQoKwtnZWZmdMz4+Hh8fH2XSK61WS58+fRg3bhz+/v6tlhcZGalMpvBj1q9fj7W1NX379sXDwwOtVouHhwe5ubkYDAYSEhKoq6vDx8cHR0dHDh48SGRkJP7+/uh0OkJCQjAYDMyfPx+tVsvzzz9Pfn4+lZWVdOrUicmTJ9OzZ09l+7TMBOjm5kZTUxMqlYq+ffsSFhZGSEgIVVVVeHt74+/vj729PUFBQcC183fkyJFKsrt+/Xrs7OyIj4/HxcXluvVIUlISqamp9OzZU1lefX09bm5uJCUl0alTJ3Q6Hfb29so7xdRqNTU1NZw8eZInn3xSaTe1UKvVdOzYkfDwcMxmszKcMTQ0lEmTJhEYGEhDQwNZWVk0NTURHx+PlZUVVVVVJCYm/uwx0uJ6yRVm0S4OHjxojouLM2dkZPxmy5w0aZLZ19f3N1veH9XUqVPNfn5+5vr6+vYO5VfbsmWL+bHHHjPv37+/XeMoKCgwjxs3zvz2229btNz333/fPG7cOPO5c+csWq4Qt8LTTz9tDggI+F0cr4cPHzZPnz7dvGnTpnaN45NPPjGHh4dbtMyzZ8+aJ0yYYH7vvfcsWu7v3eTJk81z58790e8HDBhg9vPz+w0j+n3q3r27OSoqqr3DsIj58+ebn3jiCfOVK1faLYaLFy+aH374YfNzzz2nfHbnTtslhLglVq1aRV5eHqNGjWLTpk34+Phc9+3zQghxMzZs2MDBgweZOnUqaWlpGAwGi96JFneWzMxM0tLSGDlyJKdPn+bgwYO89NJL7R2WuI1VVlby3XffYWtrS3BwMDt27GDChAm33TvtZEKLP4C9e/cyatQoVq5cSVFREeHh4Xz00Ue3dJl/+tOfCAsL+9E/M2fObPOekjvd/v37GTt2LEuXLuXixYt07dqV+fPnt3dYN+3cuXM8++yzDB8+nPLycu66665f9BI9IQA+/vjjn6wLRowYwa5du9o7zNvayZMnmTJlCu+//z6FhYWkpKTw2muvtXdYN+3ChQu8+OKLpKSkcOLECe69996fHAYlbn8tw8R+7M+zzz573Rkq4drjAUuWLCE1NZX//Oc/zJkzhw4dOrT53aZNm0hOTiY9PZ2LFy8SFxfHkiVLflXcPxVzWFgYc+bM+VXl347WrFlDr169OHHiBFlZWcoL3+8kjY2NZGRkMG3aNKZMmUJ4eDi9evW67V7xcntFI26J2NhYFi9e3GpWlF/7wsufs2DBgp+csrjl5cC/J9HR0SxatKjVdr6Rsd23m2nTpnH//fejUqnQaDR35DqI28ekSZMYP378j37fMsGB+HEhISG8++67raaLvxPPy0mTJjFu3DhlimfZ73e+9evX/+TsgtbW1j96rPbo0YO0tDRMJhNWVlbo9frrPhOdmJhIr169lOW0vMvz18jIyPjJ739v70yDay/6TkxMbLUd77Rz0Gg08uKLL/Kf//xHOQ5ut8QKJLn6Q1Cr1b/5nYebmQnu96I9tvOtYG1t/bu8sIj2IcfTr2dlZfW7qFM1Gs3PTnYk7iw3MzHRD93oNVOj0Vi8Af1HPA5vxXb8rbUkhLd7UijDAoUQQgghhBDCAiS5EkIIIYQQQggLkORKCCGEEEIIISxAkishhBBCCCGEsABJroQQQgghhBDCAiS5EkIIIYQQQggLkORKCCGEEEIIISxAkishhBBCCCGEsABJroQQQgghhBDCAiS5EkIIIYQQQggL0LR3AH902dnZqNXq9g5DiNva5cuXqaqquiVlV1dXc+LECUpKSm5J+UKI29f58+dvWdn5+fkcOnTolpUvhGh/xcXFFBcX4+npqXwmyVU70Wq1eHt788UXX2Bra9ve4YjvKSoqwsnJCb1e396hiP+nsbGRhoYGHB0dLVqug4MDDQ0NvP/++2i1WouWLYS4/V29ehUfHx+LlmltbU2HDh3YtWsX2dnZFi1bCHF7aWxs5OLFi/Tr10/5TJKrduLt7c2MGTOkt/w29OCDD/Loo48SHR3d3qGI79Hr9YSHh1u0zJ49e2Jvb09tba1FyxVC3DkcHBwsWp7RaOSee+4hPz/fouUKIW5f32+fqMxms7kdYxHitqPT6fj6668ZOXJke4cihBBCCCHuIDKhhRBCCCGEEEJYgCRXQgghhBBCCGEBklwJIYQQQgghhAVIciWEEEIIIYQQFiDJlRBCCCGEEEJYgCRXQgghhBBCCGEBklwJIYQQQgghhAVIciWEEEIIIYQQFiDJlRBCCCGEEEJYgCRXQgghhBBCCGEBklwJIYQQQgghhAVIciWEEEIIIYQQFiDJlRBCCCGEEEJYgCRXQgghhBBCCGEBklwJIYQQQgghhAVIciWEEEIIIYQQFiDJlRBCCCGEEEJYgCRXQgghhBBCCGEBklwJIYQQQgghhAVIciWEEEIIIYQQFiDJlRBCCCGEEEJYgCRXQgghhBBCCGEBklwJIYQQQgghhAVIciWEEEIIIYQQFiDJlRBCCCGEEEJYgCRXQgghhBBCCGEBklwJIYQQQgghhAVIciWEEEIIIYQQFiDJlRBCCCGEEEJYgMpsNpvbOwgh2su2bdt49913KS0tVT7bsmULkZGRuLm5AaBSqRg3bhx/+tOfsLW1ba9QhRBCCCHEbU7T3gEI0Z5sbW25cOECO3bsaPX5oUOHlL8bjUbGjh0riZUQQgghhPhJMixQ/KGFhIQQFRWFWq2+7vdWVlZERUURExPzG0cmhBBCCCHuNJJciT80BwcHunXrRocOHa77vZWVFaGhoYSEhPzGkQkhhBBCiDuNJFfiD69nz5506tQJlUrV6nOVSoWHhwdxcXHY2dm1U3RCCCGEEOJOIcmV+MPr1KkT4eHh6HS6Nt8FBAQQHx/fDlEJIYQQQog7jSRX4g9Pp9PRt29f3N3dW32u1+sJDw+nY8eO7RSZEEIIIYS4k0hyJQSQmJiIh4dHq89cXFxISUlBq9W2U1RCCCGEEOJOIsmVEICnpydxcXGtplt3cXGhf//+7RiVEEIIIYS4k0hyJQTXZgUcNmwY9vb2ANjY2JCQkKC8SFgIIYQQQoifI8mVEP9PUlKSkkzZ2Nhw1113tXNEQgghhBDiTqJp7wB+z5qamqiursZsNrd3KOIGJScnk5mZiYuLC2FhYZSVlbV3SOIG6XQ6bGxs2jsMIYQQQvyBSXJ1C+Xm5vLZZ59RV1fX3qGIG1RUVASAra0t8+bNa+doxI2ysrIiPj6eESNGtHcoQgghhPgDk+TqFjp37hxvvPEG99xzT3uHIm6Qq6srUVFR9OjRg6qqqvYOR9ygtLQ0amtrJbkSQgghRLuS5Oo38Pbbb7d3COImpKWlkZycjFqtbu9QxA0aP358e4cghBBCCCETWgjx/7F339FRlfkbwJ8pyaTMpPd2t5W6AAAgAElEQVSGKUQISQhCQkzoBBBERaUIKgKKPytVCSvqIsuuoihNVASxUHSRKLAiUkRABBSQUILpvUh6ZiZt2vv7g809jEGlDAaW53NOziF3bvnee+eGeea+73t/i8GKiIiIiK4EwxXRbzBYEREREdGVYLgiIiIiIiKyAYYrIiIiIiIiG2C4IiIiIiIisgGGKyIiIiIiIhtguCIiIiIiIrIBhisiIiIiIiIbYLgiIiIiIiKyAYYrIiIiIiIiG2C4IiIiIiIisgFlRxdA573//vt4/fXXYWdnh3HjxmH+/PkdXdIlqa6uxrhx41BUVPSn83bu3BmdOnXCvn37YDKZ/nDe4cOH4/nnn8dLL72EQ4cOQQhh9bpCoYCPjw9SUlLw+OOPw9/f/6r243I0Nzfjtttug9FoBADEx8fj9ddfR3Bw8EXnP3fuHObPn4/du3cDAO644w787W9/Q2Bg4F9S79SpU7Fv3z7pGHp7e2P+/PkYNmzYX7J9IiIiopsF71xdJx599FHs3r0bMpkMVVVVHV3OJTObzXBwcMDatWuRkZGBjIwMzJ49G3q9HvPmzZOmbd26FUFBQbjnnnuwY8cOhIaGws/PD/v375fmaftZuHAh7OzsYDKZsGbNGnz++ecoKChAcnIyMjIycPLkSWzduhU9e/bEihUr8Nxzz6Guru4v22dHR0ekp6dj5cqVyMvLw759+7B9+/aLzmuxWJCdnY1PPvkEcrkcixYtwpIlSxAQEHDJ22tsbERsbCxmzZp1RfW+88472Lx5M8rLyxEfH4/9+/djyJAhV7QuIiIiIvp9DFfXCYVCAXt7e8hksr90u2lpaQgLC8O///3vK1peLpfDzc0Nzs7OUKlUUKlUUCrP3xBVKpXSNEdHR7i6usLR0REqlQpyuRxyuRz29vbSPG0/arUaarUaCoUCdnZ2sLe3l7alUqng7OyMLl26YPbs2ejZsyfS0tJQU1Njs2PS5sSJEwgMDMSSJUvavaZSqWBvbw9XV1fY2dlh586dKC4ubjdfY2Mj1q9fj4CAAMhkMtjZ2cHOzu6yz3Pb8b0SFx7DtveZXM5Ln4iIiMjW2CyQroq3tzc2bNjwp/OFhYVh8eLFAIDy8vKLzmMwGHDu3Dn06dMHI0eO/NN1urq6wsnJCSaTCc3NzZdXuI0EBgbirrvuwqefforvvvsODz30EBQKhfR6ZmYmzpw5g1GjRmHbtm1XtA1nZ2ccPnzYViUTERER0TXCcHUdMplMKCwsRH5+Ppqbm6HRaNClSxf4+PhI81gsFlRWViIvLw/19fWQyWTw8PBA165d4erqCoPBgJycHOTm5gIAYmJi0NTUhLKyMrS0tMDOzg5+fn44evQompqacOzYMTg4OEAmk2HIkCFwdHT8y/e7vLwcb775JgYOHIj77rvvd+cTQqC5uRnHjx9HRUUFbrvtNqtjI4RAbW0tcnNzUVtbCyEE3NzcEBkZCS8vL1gsFuTn5yMjIwMAEBERATs7OxQXF6OpqQlCCISFhWH//v1oaWnBmTNnsHXrVshkMiQnJ8PT01PalpubG4YPH44vvvgCu3fvxsCBAxESEgLg/Hl87733MHr0aBgMhovuR0VFBQoKCqDT6SCEgLe3N8LDw+Hu7g4AqKqqwpEjR2CxWODq6op+/fqhpaUFGRkZUkhNTk5GUVERzp07B6VSiaCgIEREREh3qy6HEAKlpaUoKiqCTqeDTCaDr68vIiIioNFoYDKZsHPnTqnPnFqtRnR0NHx8fJCeni7dvfP390dCQgKEEKivr0dOTg5qamoghICrq6t0LgCgoKAAp0+fBgCEhobC0dERxcXFaGxshBACw4cPv6J9ISIiIvqrMVxdZ4QQyMvLQ1paGn799VdUV1ejoKAAcXFxmDNnDgICAmCxWPDLL79g7dq1KCkpgZubGwCgoqICPXr0wLPPPgsnJydkZWVhzZo1+OGHHzB+/Hh06tQJNTU1KCwsxIEDB/DPf/4TJ0+eRHNzM06dOoXm5mbIZDL069cPjo6OaG5uxvbt2+Hk5IS+fftCo9HYdF/Ly8uxdu1aqNVqAEBtbe1Fm9a1yczMxMqVK2GxWFBXV4effvoJzs7OmD59uhRGhBAoKSnBmjVrkJGRAQ8PD8jlclRWVqJz586YMWMGfHx8UFRUhPXr1+O7775Dv379kJiYiOrqahQXF2Pz5s348MMPcfjwYbS2tiIrK0vqDxcVFWUVrtqmjRw5El988QV++uknBAQEQKlU4vjx48jLy8PLL7+Mzz77rN3+lJaWYuHChTAajXBxcYFOp4Ner0diYiIefPBB+Pj4oKamBnv27MHWrVvh6uqKo0ePSufro48+wvHjx7FgwQIYjUZUVFSgtLQUZrMZs2bNQv/+/S/7nBQVFeEf//gHZDIZnJ2dodVq0dTUhMGDB2Ps2LFwcHDA3r17sWnTJuj1ejz++OPw9fWFj48PMjIy8MYbb8DNzQ0PPPAA4uPjUVFRgdWrV+PkyZPw8PCAQqFAVVUVwsLCMG3aNAQGBqKkpAQbN27E3r170bt3b/Tv3x9VVVUoLS1FWloaysvLrY45ERER0fWK4eo6YzKZ0NDQgMjISDz22GMwm83YvHkzUlNTYW9vj9dffx1VVVVYtWoVjhw5glmzZmH48OGwWCz4z3/+g//7v/+Ds7MzUlNTcd9990EulyM7Oxu1tbWYOnUqoqOjUV1djW3btmHixInw8PBAVlYWpkyZgnHjxlnVotPp8MYbb8DPzw/dunWzebgym83S3QngfP+kPxpF0Gg0QqfTATh/587f3x91dXUoKChAS0sL7O3t0dLSgo8++gibN2/GtGnTMGbMGCiVSuzZswfTpk2DTCbDokWLMHjwYKjVamRlZUGn0yE+Ph4JCQnQ6/Xo1asXRo8ejejoaBw8eBD3338/Zs6c+bt1eXl5ISUlBTt27MD27duRlJQEb29vLFq0CJMnT5bu0PxWbm4u9u/fj3Xr1iEmJgZarRbr16/HZ599hoiICNx5553o0qULli1bhpycHJSVlQEAPD098eijj0Kv1yMrKwvl5eWYMWMGfH19cfjwYTz99NPYunUrkpKSYGdnd1nnJDMzE0ePHsUnn3yCLl26oLa2FqtWrcIHH3yAbt26ISkpCW+++SYcHR3x8ccfIyUlBdHR0QDOj/D4zTff4MEHH8SwYcNgNBrx8ccfY+PGjXjmmWcwfvx42NvbY+/evZg5cyaEEHjzzTfRv39/uLi4IDs7G3q9HnFxcbj99tvR1NSE+Ph4ODk5XdY+EBEREXUU9mq/DoWGhmLQoEFwdXWFh4cHxo8fDx8fH6xduxZarRZlZWXYsmULYmJiMHToULi6usLd3R1jx45FQEAANmzYAK1Wa7XOvn37olu3blCpVAgMDMSTTz75pwMkuLi4YP78+Zg5c+bvBoSrERwcjGeffRZz587F3Llz8cQTTyAsLOx354+JiZHmfeGFF/DSSy8hKCgIb7/9NrZs2QIhBPR6PT755BMEBgZi1KhR8PT0hKurK0aOHImIiAh88MEHqK+vt1pvXFwcevbsCWdnZ/j6+uK55567rGaRMpkM8fHx6N+/P3bv3o1Tp05h3759qKmpwahRo353uaioKKxcuRLx8fFwcHCAj48PkpOTYW9vj7Nnz15yP7KUlBQEBQVBpVIhIiICnTp1QkVFhRREL0dsbCyWL1+OuLg4ODg4ICAgAP369YPBYEBmZqbUvHHixIlQKpXYtGkTWltbAQD79++HWq1GbGws5HI5DAYDPvzwQ/j4+GD06NHw8vKCi4sLRowYgcjISHz88cftRnmMjo5GQkIC1Go1fHx8MHPmzA5pokpERER0JXjn6jqjVCrh4eEBZ2dnaZpGo4G/vz/y8vJw7tw56HQ6lJeXY+fOncjJybEa+a2yshJqtRolJSXo1q2bNN3T0/Oy+604ODhg+PDhV79Tl8jPzw/Tp0+Xmjn+EXt7e4SEhCAlJQVbt25FWloaHnzwQbS0tKCwsBD19fUYO3as1bHJyMhATU0N8vLy0LNnT2l628AYV8PLywvDhg3Dd999h/Xr16OsrAxPP/00XF1d0djYeNFlNBoNSktL8cgjj6CqqgpNTU3Q6/XIy8tD3759YTAYrN4HvycgIEDaT4VCAScnJxiNRuk5XJfD1dUV2dnZ+OCDD1BVVYWWlhY0NDQgLy8PdXV1MJvNAICQkBCMHDkSBw4cwNGjRxEbG4s9e/agT58+UhBvaWlBfn6+9Cy0C8/F2bNnpX5x8fHx0nQXF5dL2mciIiKi6xHD1XXGYrFc9EOxXq8HcH4Agbbhy0eMGIE5c+a0G9ZboVC0e6jujTD0toODAyIiIi5rGUdHRyiVSlRWVgI4P+y4o6MjevXqhRUrVlx0v3/78F6ZTHbRodEvZ7h0mUyGgQMHomfPnti6dSu6d++OESNG/OEyf/vb37BhwwbMmTMHQ4cOhUajQWZmJl599VWYzeZ2D07+PReOTthWy6Uu+1tPPvkk9uzZg9TUVAwYMABqtRonTpzAwoULYbFYpPWqVCpMmDABaWlp2L59O/R6PYQQ6N69u3RHtO1cxMbGYvXq1Zd0LuRy+V/+OAIiIiIiW7n+P3HfZMxmMyoqKlBRUSFNy8vLQ3FxMWJiYuDn5wcvLy/Ex8dDp9PB0dER4eHh0s8XX3whNdm6FEqlEgqFAhaLBQAwYcIELF269Jrs27WQlZUFrVaL6OhoyGQyODg4YMCAAWhqaoJcLrc6Nnv37sUdd9xxycdGLpdLDzMGgNTUVLzyyivtmly2cXNzw/33349OnTph2rRpf3g3zGKxYOfOnVAqlXjuuecQFxeH8PBw+Pv7X3Y/KVsYOXIkvv76a2zZsgUuLi549tln0b17d4SHh8PX17fdMZPJZAgPD8egQYOwd+9erFixAmFhYVbNOu3t7ZGSkoLm5mYIIazOxYEDBzBy5MhLPhdERERENwKGq+tEU1OT9CDczMxMvPfeezh16hQOHz6MGTNmQKlU4p133oFMJsMtt9yCZ599Fr/88gveeustHDt2DLm5uVi1ahWWLl2Kl156CXK5HI2NjWhoaIDZbIZWq0VVVZUUotp4e3vD09MTZ8+exb59+6yaaVVWVqJ3794YNWoUioqK/nQfTCYT6uvrodPpYLFYoNVqUVlZaXUXpbm5GdXV1TAYDDAajaiurkZ1dfXvrrO+vh61tbUAzjczq6ysxLlz55Cbm4uPPvoIa9asgaurK5599lnI5XK4uLjgb3/7G/R6PRYuXIhDhw4hNzcX69atw5IlS7Bo0SIolUq0tLSgrq4OJpMJjY2NqKysbHfHUK1WIzQ0FFlZWTh48CDOnj2LLl26wNHREdXV1aivr5f2oa1/1P33348zZ85ITRItFguqqqqg1+ulwUrawtngwYOh1+vx+uuvIzs7G2fPnsUXX3yBU6dOoampCXV1dWhpaUFVVRUMBgNMJhNqamrQ1NQErVYLvV4Pi8WC2tpa6d/V1dVobW1Fa2sr6urqYDAY0NDQIA1J33YMf/vT1NQEmUyGESNGoLKyEitWrEBubi5OnTqFzz//HDk5OdDr9airq5POp6enJ0aPHo2MjAyUlJQgPj7eqkmfg4MDXnzxRRiNRixYsAAHDx5Ebm4uNm7ciCVLlmD+/PnSuaitrbU6Fxcbup6IiIjoeicTV9p+iP7U7t27MWbMmHYDKFzMxx9/jBUrVsDOzg4DBw5E165dkZaWhurqaoSGhuLJJ59EUlKSNL/RaMRPP/2EjRs34syZM1AoFIiMjMSUKVOQkJCApqYmbNy4Ee+9957Vdr7++murZ0I1Njbiq6++woYNG9DS0oJRo0Zh8uTJcHR0RG1tLaZPnw5vb288//zz7Zoa/lZ+fj7eeustHDlyxGr6999/Lw1K8Pnnn+PNN9+0GhXQw8MDu3btuug6n3rqKRw9erRdMzc7Ozt4eXnhtttuw4QJE9C5c2ep2ZnZbEZGRgY++eQTnDhxAmazGeHh4ZgwYQIGDRoEs9mMHTt24JVXXrFa5+rVq9GjRw/pd4PBgH379uH9999HfX09hgwZgilTpsDb2xsDBw6UBoxwd3fH1KlTMXbs2Hb119XVYciQIVbT7rzzTjz99NNwcHDAe++9h3379qGhoQHBwcHo0aMHsrKycOrUKYSEhGDSpEl49dVXpeDn7e2NcePGobCwEF999ZW0zokTJ2LSpEkYNGiQNK1Tp05ITU3Fp59+ioMHD/5pU8Fly5YhKioKK1aswKFDh6DX6xEWFobo6GicOHECOTk5CAsLwyeffAIHBwcA578ImDlzJjp37oy///3v7YZMt1gsyMzMlIaNN5vNCA0Nxfjx4zF48GDIZDLs3r0b8+bNs1puxYoVuP322/+w3guNGTMGgYGBN9RdVyIiIvrfw3B1DV1OuCK6EeXm5mLFihXo27cvRo8e3WF1MFwRERHR9YDNAonosmRmZmLXrl3Q6/X46aefYLFYLusuExEREdH/KvYmJ6LL8uOPP+L111/H0KFD0dLSguHDhyMgIKCjyyIiIiLqcAxXRHRZ+vbtC6VSCaVSieDgYHTv3p3DpxMRERGB4YqILtNvh1wnIiIiovPY54qIiIiIiMgGGK6IiIiIiIhsgOGKiIiIiIjIBhiuiIiIiIiIbIDhioiIiIiIyAYYroiIiIiIiGyA4YqIiIiIiMgGGK6IiIiIiIhsgOGKiIiIiIjIBhiuiIiIiIiIbIDhioiIiIiIyAaUHV3AzeD999/v6BKI/qcVFhYiMDCwo8sgIiKimxzD1TXk4uKCHj16YPXq1R1dCl2G48ePIzw8HG5ubh1dCl0ihUKB4ODgji6DiIiIbnIyIYTo6CKIricqlQqff/457r777o4uhYiIiIhuIOxzRUREREREZAMMV0RERERERDbAcEVERERERGQDDFdEREREREQ2wHBFRERERERkAwxXRERERERENsBwRUREREREZAMMV0RERERERDbAcEVERERERGQDDFdEREREREQ2wHBFRERERERkAwxXRERERERENsBwRUREREREZAMMV0RERERERDbAcEVERERERGQDDFdEREREREQ2wHBFRERERERkAwxXRERERERENsBwRUREREREZAMMV0RERERERDbAcEVERERERGQDDFdEREREREQ2wHBFRERERERkAwxXRERERERENsBwRUREREREZAMMV0RERERERDbAcEVERERERGQDDFdEREREREQ2wHBFRERERERkA8qOLoCoI1VUVCA7Oxsmk0maZrFYcPLkSTg7O0vTgoKCEBYWBjs7u44ok4iIiIhuADIhhOjoIog6yvfff4+FCxeisLAQMpkMAJCbmwt/f384OztDCAG5XI7p06fjscceg1LJ7yOIiIiI6OL4SZFuagEBAXByckJ2drYUroQQKC0thUwmg0wmQ2RkJPz9/RmsiIiIiOgPsc8V3dRCQ0MRGxsLe3t7CCFw4Y1cIQQsFgtuvfVWdO/evQOrJCIiIqIbAcMV3dTkcjl69+6NyMhI6c7VhRwdHREdHY1OnTp1QHVEREREdCNhuKKbXo8ePRAWFtZuukwmQ3h4OPr06XPR4EVEREREdCGGK7rp+fv7o0ePHnBxcbGaLpPJEBISgp49e3ZQZURERER0I2G4IgIwaNAgBAQEWE1zcXFBQkICvL29O6gqIiIiIrqRMFwR4XzTwFtuuQUKhUKa5uXlhaFDh3ZgVURERER0I2G4IgKg0WgwcOBAaDQaAOcHuggLC+MogURERER0yRiuiP5r5MiRUKvVAAC1Wo3hw4fDycmpg6siIiIiohsFwxXRf0VGRiI6OhpyuRwqlQr33HNPR5dERERERDcQhiui/1IoFBg3bhxkMhl69eqF0NDQji6JiIiIiG4gMiGEAICCggLMmTMHO3bsgEql6ui6iDqM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tyIhIQHdunW74m3/r0lPT0d2dvYVL+/i4oK4uLiL9gHSaDRwdnbGkiVL0KNHDzQ2NuLgwYMIDQ3Fk08+yXD1P8jBwQFdunTB66+/juTkZBgMBhw7dgwymQxTp069qjvHNTU1SE9PR15eHhobG/Hll18iPj7+mo14SURERHSpOjRc5efnWz2n5XIFBAQgNDT0T8OVXq/HmTNn0LVrV3Tt2hVnzpxBQEAAw9UFioqKrupc+Pr64pZbbrlouAoJCcFrr72GH3/8EdnZ2TCbzUhOTkZKSorV84Dof4erqytWrlyJgwcPIi8vDwaDAV27dsUTTzyBqKioSx6q/GJ0Oh3OnDmDbt26oVu3bjh16hT8/f0ZroiIiKjD3VR9roiI6M+xzxUREdGVYZ8rIiIiIiIiG2C4IiIiIiIisgGGKyIiIiIiIhtguCIiIiIiIrIBhisiIiIiIiIbYLgiIiIiIiKyAYYrIiIiIiIiG2C4IiIiIiIisgGGKyIiIiIiIhtguCIiIiIiIrIBhisiIiIiIiIbUP52wvPPP4/58+d3QClERHQ9MBgM8PHx6egyiIiIbjgyIYQAgMbGRpw6dQqlpaUdXRNRh5owYQJmzZqFXr16dXQpRB1Go9EgLi4Ofn5+HV0KERHRDUMKV0R0nkqlwueff4677767o0shIiIiohsI+1wRERERERHZAMMVERERERGRDTBcERERERER2QDDFRERERERkQ0wXBEREREREdkAwxUREREREZENMFwRERERERHZAMMVERERERGRDTBcERERERER2QDDFRERERERkQ0wXBEREREREdkAwxUREREREZENMFwRERERERHZAMMVERERERGRDTBcERERERER2QDDFRERERERkQ0wXBEREREREdkAwxUREREREZENMFwRERERERHZAMMVERERERGRDTBcERERERER2QDDFRERERERkQ0wXBEREREREdkAwxUREREREZENMFwRERERERHZAMMVERERERGRDTBcERERERER2QDDFRERERERkQ0oO7oAoo5ksVhgMpnaTTeZTDAYDNLvcrkcCoUCMpnsryyPiIiIiG4gDFd0U8vKysI333wDrVYrTTObzdi8eTNOnz4NAJDJZOjTpw/69u0LOzu7jiqViIiIiK5zDFd0U6upqcFnn32Gn376yWr6p59+Kv3b3d0dnp6e6Nev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Bf9/+tzJkydpamrCbrcTFRVFXV0dtbW1WCwWIiMjMZvN5z3HqGvXrm5ragzDoK6ujvLychobG4Gz0/ViYmIICgpy9cvLy+PZZ59lxowZ5OTkUFtbS1tbG0FBQbRv395tvVdbWxuVlZVUVlbS3NyMxWIhJCSEqKio8/qVlpZSXV1NW1sbISEhBAYGUlZWRktLCyEhISQkJGC3210jYE1NTfj7+xMbG0tgYOD33ivjbw8Mrq6u5vTp07S0tGA2m/H393d92b9QeNq3bx+RkZFERER867HPjdQkJSWdty7qHIfDwZ49e84bjTu3NiowMJDIyEi3+9LS0sKxY8fcpt1ZrVaysrLcjnHuPldVVdHU1ITFYiE4OJjo6Gi3402aNIlPP/2UnTt3UllZSWNjI2azmbCwMCIjI90CqsPhcE0DdDgc2Gw2wsPDCQ8Pd/vctLa2cvz4cerr6zGbzUREROBwOKiqqsLpdBIVFUV8fDyGYXDq1CnXqGFoaCgxMTHfG4rPUbgSERGRq8n5q9zlimc2m2nXrh3t2rVza79QEPj7qWEXYjKZCAkJISQk5KLObbPZSExMdNtd8EL1RUVFudZWfVe/uLi486bCXeg6fH19v3V06LucW1sWHBx8Sa/7+531vs3F1GO1WsnOzr6kc9vt9u/c+fGci73P5/j4+JCamvqdfaxWKwkJCSQkJHxnP5vNRnJy8nnt33zQsslkIjQ09EdftyYiIiJyJVC4ku90blfBc1PpWltbcTgcF9x97qfmcDi+c+2O2Wz+1h0OrwVtbW2ue2QYBs3Nzfj4+Jy3y6SIiIiIeMa1+a1TLlpFRQWPPfaYa33No48+yhNPPOG2y5+3vPjii2RkZHzrz7333suOHTu8XabXbN++nXvuuYe1a9dit9vp2bMnf/rTn7xdloiIiMjPltZcXSEuZc2VyLVCa65ERETkaqKRKxEREREREQ9QuBIREREREfEAhSsREREREREPULgSERERERHxAIUrERERERERD1C4EhERERER8QCFKxEREREREQ9QuBIREREREfEAhSsREREREREPULgSERERERHxAIUrERERERERD7B6uwA5yzAMPvvsM0pLS71disgVo6WlxdsliIiIiFw0hasrRN++fSkqKlK4ugLk5+eTkJBAUFCQt0u55uXk5BAREeHtMkREREQuiskwDMPbRQgUFhZ6uwT5m4yMDF5//XWGDBni7VIEiI6Oxt/f39tliIiIiHwvjVxdIZKTk71dgvyN0+kkKipK74mIiIiIXBJtaCEiIiIiIuIBClciIiIiIiIeoHAlIiIiIiLiAQpXIiIiIiIiHqBwJSIiIiIi4gEKVyIiIiIiIh6gcCUiIiIiIuIBClciIiIiIiIeoHAlIiIiIiLiAQpXIiIiIiIiHqBwJSIiIiIi4gEKVyIiIiIiIh6gcCUiIiIiIuIBClciIiIiIiIeoHAlIiIiIiLiAQpXIiIiIiIiHqBwJSIiIiIi4gEKVyIiIiIiIh6gcCUiIiIiIuIBClciIiIiIiIeoHAlIiIiIiLiAQpXIiIiIiIiHqBwJSIiIiIi4gEKVyIiIiIiIh6gcCUiIiIiIuIBClciIiIiIiIeoHAlIiIiIiLiAQpXIiIiIiIiHmD1dgEi3tTY2EhtbS1Op9OtvbKykuLiYgBMJhNBQUEEBwdjMpm8UaaIiIiIXAVMhmEY3i5CxFvWrVvHCy+8wPHjx11te/fuJSEhgeDgYACsVisTJkxg3Lhx+Pj4eKtUEREREbnCaeRKrmlRUVG0tbWxa9cut/bCwkLg7KhVQkIC7dq1U7ASERERke+kNVdyTUtKSqJbt274+vp+a5/MzEyys7N/wqpERERE5GqkcCXXND8/P3JyckhISLjgeipfX18yMjJISkr66YsTERERkauKwpVc83r16kWnTp345vLDc1MC+/TpoymBIiIiIvK9FK7kmhcXF0dWVhaBgYFu7YZhkJCQQN++fb1UmYiIiIhcTRSu5JpnsVgYNGgQsbGxbu1BQUF0796dmJgYL1UmIiIiIlcThSsRIDc3l5iYGLd1V5GRkdx00016tpWIiIiIXBSFKxEgMDCQQYMGERQUBIDZbCY2NlZTAkVERETkoilcifzNrbfe6gpXfn5+DB06lICAAC9XJSIiIiJXC4Urkb+5/vrrSU1NxWQy4e/vz7Bhw7xdkoiIiIhcRazeLkC8r76+nvLycpqbm71ditfl5OSwfv164uLiMJlM5Ofne7skr4uMjCQyMtLbZYiIiIhc8UzGNx/uI9eczZs3M2vWLE6cOOHtUryuurqaHTt20L59e9LT071dzhVhzJgxjBo1yttliIiIiFzxNHIlVFRUUFpays0330xaWpq3y/G6+fPnM3r0aKzWa/t/j5qaGt577z2OHDni7VJERERErgrX9rdHcQkODqZfv3706dPH26V43XXXXUeHDh2u+S3YS0tLWb9+vbfLEBEREblqaEMLkW9QsBIRERGRH0LhSuQbFKxERERE5IdQuBIREREREfEAhSsREREREREPULgSERERERHxAIUrERERERERD1C4EhERERER8QCFKxEREREREQ9QuBIREREREfEAhSsREREREREPsHq7ALn6GYZBS0sLra2tAPj6+mK1/rw+Wi0tLbS0tJzXbjKZMJvNWK1WrFarHkAsIiIicg3TyJVcttraWl5++WXS0tKIiopiyZIl3i7J4/70pz+Rk5NDZGQkMTEx9OjRg169ejF48GBGjhzJ9OnT2bZtG42Njd4uVURERES8ROFKLlu7du14/PHHee2114iNjfV2OT+KqVOnsnLlSjIyMujbty979uxh9+7dLFmyhLFjx7Jz504mT57Me++9R11dnbfLFREREREvULgS+YEsFguxsbEMHz6cGTNm0KVLF15++WXWrVvnmiIpIiIiItcOhSsRD0hJSWHkyJEA5OXlcerUKS9XJCIiIiI/tZ/XrgPyk6moqGDRokUcOHAAq9VKTk4O9fX139p36dKl5Ofn09LSQmxsLL/4xS/Izs7Gx8eHnTt38tZbbwGQkZFB7969WblyJdXV1cTFxXH33XeTlJQEnN0848SJE3z66afs37+f1tZWEhISyM3NpUePHlgsFgAcDgf79u3j888/p6ioCJPJRKdOnbjjjjtITEz8Ue7J9ddfT3JyMmvWrOHUqVNERERgGAYlJSUsX76cAwcO0NraSnx8PDfddBOZmZlYrVY2b97M/PnzAejduzcpKSmsXr2auro6EhMT+eUvf0lMTIzr+gsLC/nss884fPgwTqeTDh06MGjQILp164bZfPbfS1pbW/n666/54osvKC4uxmKxkJqayh133EFcXNyPcv0iIiIi1zqNXMklq6ys5OGHH+aNN96gQ4cO3HDDDVRXV7NixQpOnz7t1re6upopU6bw/vvv06lTJ/r160dJSQlPPPEEn3/+Oa2trcTGxnLjjTeyadMm3nzzTTZs2EBGRgbp6eksWrSIp556ira2NgBOnjzJSy+9xOrVq8nOzmbgwIFUVVXxyCOP8PXXXwNng9X//u//8uijj/L111/To0cPcnJy+OKLLxg7diyHDh1y1bdp0yYmTpzIf//3f1/2ZhSRkZEEBwdTVVVFTU0NhmFQXFzM1KlT+fjjj0lLS6Nv374cPnyY3/zmN2zatAnDMEhISKBv376sW7eOmTNnsmPHDrKzs0lNTWXevHn87ne/c52jqKiIGTNmsHXrVnr06MGAAQM4fvw4kyZNYt++fcDZYPXJJ5/w2GOPceTIEfr06UN2djZLly5l0qRJFBYWXtZ1ioiIiMiFaeRKLtm7777L8uXLee655xg3bhy+vr5UVlZy7NgxVq1a5dZ3xowZrFmzhpdffpm7774bm81G7969mTJlCv/1X/9Fr169iI6OZsiQIcycOZPGxkb69etHTk4OTqeT/Px83n33XWpqaggPD6eyspI1a9YwcuRIRo4cicViYcCAAaxdu5aamhoAysrKeOONN2hqamL8+PH06tULgK5du3LDDTfw3HPP8c4777j6rl+/nuTkZBwOx2XdF4vFgtlsxjAM15qrF198ke3bt/Piiy9y2223YbFY6NGjB2PGjOHZZ59lxYoVxMXFMXDgQGbNmkVAQAC5ubl07doVh8PB1q1b+fDDD3n55ZcJCQmhuLiYzZs3M2nSJIYPH47FYiE3N5fly5e7rr+goIBZs2bh4+PDhAkTyMrKoq2tjYyMDAYPHswrr7zC66+/flnXKiIiIiLn08iVXLLPPvuM+vp6Ro0aRUBAABaLhaioKDIyMggODnbrO2/ePHx8fBg2bBh+fn5YrVaSkpLIzMxk586dFBUVufWPioriuuuuw2634+fnR8eOHXE4HBw/fhyAgIAAoqKi+Oijj1i4cKErdK1atYoBAwYAZ6chrlq1irS0NHJycrDb7djtdrp160ZaWhorV66koqICgNtvv50tW7bwyCOPEBQUdFn3paGhgaamJqxWK6GhoZhMJt5//31CQ0MZOnQovr6+2Gw2UlJSyMjI4P/+7/84ceKE2zHi4+NJTU3FZrPh5+dHSkoKzc3NlJSUABAaGkpwcDALFixg8eLF1NfXExkZydatW+nTpw8AxcXFbNiwgezsbDIzM7HZbPj4+JCTk0NSUhJr1qyhqqrqsq5VRERERM6ncCWXxOFwUFdXh81mIyQkxNVuMpkIDAzE39/f1dbS0kJVVRUlJSXEx8cTFBREUFAQwcHBvPXWWxiGwbFjx9yOb7fb3Y5ht9sxmUw4nU4AkpOTmTt3LrfffjsvvfQSaWlp5Obm8sEHH+B0OjEMgzNnzlBfX8+8efOIiopyO++BAwew2WyusGaz2QgODsbX1/eyHwBcUFBAWVkZWVlZhISE0NLSQnV1Nbt376Z9+/ZudSxcuBCz2UxBQYHbMXx8fPDz83P7HXBdf1ZWFnPnzuWGG27gmWeeISUlhUGDBvHXv/4VwzAwDIPGxkYaGhp44YUXiIiIcDvvuTBbWlp6WdcqIiIiIudTuJJLYrVaiYiIwOFwcPLkSVe7YRg0NDS4rVuy2+3Ex8cTFxdHWVkZ9fX1rp+SkhJ2797NsGHDLun8TU1NmEwmnnzySXbs2MHGjRsZMGAA//qv/8r06dMxmUwEBAQQERHB/fffT1VVldt5i4qKWLduHdnZ2R67JwCNjY2sXLmSo0eP8qtf/YrQ0FDsdjvt27enW7dulJeXu9Vx4sQJdu3axS9+8YtLOs/p06cJDAzk+eefZ/fu3axdu5bu3btz33338eqrr2IymQgKCiIsLIzHHnuM6upqt/MWFhayfPlyMjMzPXr9IiIiIqJwJT/AbbfdRkhICHPnzqWmpobW1laOHz/Ozp07z9sxcPLkyTgcDpYtW8apU6dwOBzU1NQwf/58HnzwQSorKy/p3Hv37mXMmDHs3LmT1tZWOnbsyP33309ISAi7d+8Gzk4tvOWWWzh8+DBbt26lsbGR1tZWSktLefLJJ/ntb3+LYRgAlJeXs2nTJoqKii55zdW5UbJjx47x/vvv8/HHHzN48GDuuusu1+jbuHHjqK+vZ+XKldTX1+NwOKiqquKNN95gypQpNDc3X9I5N2zYwAMPPEB+fj5Op5MuXbrwwAMPYLPZyM/PB6BDhw4MHjyYPXv2sGvXLpqammhtbeXEiRM8/vjj/P73v3dtECIiIiIinqMNLeSSjRw5kvz8fBYtWkRTUxMJCQnU1dVRVFSEv78/X3zxBSEhIeTm5vLAAw9w/Phx3n//fQoKCggPD6e2tpY9e/Zw3333ER4eTkVFBQsXLnSNbi1fvpy+ffuyb98+Nm3aRGtrK0uWLKGhoYG4uDjCw8N5++23yczMxGw2s2/fPlJTUxkzZgxwNlw98MAD/PGPf2Tu3LlkZmYSGBjI8ePHKS0tZdq0aa4tyzds2MATTzzBmDFjmDJlynlrxs7Zvn07a9asobKykjNnzvD2229jMpk4ffo0hYWFFBUVMXjwYMaNG+faNh5gypQpVFRUkJeXx/79+wkNDaWqqoo9e/bw8MMP4+Pjw4kTJ1i0aBEVFRUcPHiQTz/9lL59+7J161a2bt2KYRiu64+KisJmszF//ny6dOkCwJ49e+jRowf33nsvcDZcTZ48mT//+c/MmTOHtLQ0AgICKCoqoq6ujqeeesp1/SIiIiLiOZZp06ZN83YR4l0HDx5k165d9OvXj/j4+O/t7+fnR58+fYiJiaG+vp7m5mZSU1MZPHgwnTp1wmKx4OvrS1paGoGBgfTr14927dpRW1tLfX09oaGh3HHHHeTm5uLj40NNTQ0bNmwgMzOTLl26YLFYSE5O5uDBg7S2ttK/f38AgoOD6dWrF926dcNqtVJVVeUKXKNGjWLIkCGYTCbMZjMxMTF069YNi8VCdXU1Z86cISEhgfvvv5/rrrvOdS2GYRAeHk6vXr3o0KEDVuuF/71h3759HDp0iG7dunHddddRV1dHXV0dAB07duSf/umfGD58OLGxsW5rtwICAujTpw9BQUHU1tbS0NBAREQEI0aMoE+fPlitVsrLy/nqq6/IysoiKSkJu91OcnIyu3btwmq1MmDAAAzDICwsjN69e5ORkQGc3RK/sbGRxMRExo4d69rQw2w2k5CQQNeuXYGz2+E3NTWRlJTEhAkT6Ny580V9LhoaGli7di3BwcEMHDjwol4jIiIici0zGefmR8k1a+nSpbz77rv85je/ce04J3JulC8uLo6nn37a2+WIiIiIXPE0N0hERERERMQDFK5EREREREQ8QOFKRERERETEAxSuREREREREPEDhSkRERERExAMUrkRERERERDxA4UpERERERMQDFK5EREREREQ8QOFKRERERETEAxSuRETsDl4eAAAAyElEQVREREREPEDhSkRERERExAMUrkRERERERDxA4UpERERERMQDFK5EREREREQ8wOrtAuTK4HA4qKqqoqyszNulyBWioqKCxsZGb5chIiIictVQuBIAysrKmDt3LsuWLfN2KXKFaGxsZNu2baSmpnq7FBEREZGrgsKV0KVLF371q19RXV3t7VLkCtOxY0cGDhzo7TJERERErgomwzAMbxchIiIiIiJytdOGFiIiIiIiIh6gcCUiIiIiIuIBClciIiIiIiIe8P8AL+9d3PoDd2cAAAAASUVORK5CYII="}}},{"cell_type":"code","source":"transformer_layer = (TFBertModel.from_pretrained(\"../input/huggingface-bert-variants/bert-base-cased/bert-base-cased\"))\nmodel = build_model(transformer_layer,max_len = 256)\nsave_best = tf.keras.callbacks.ModelCheckpoint(\"./Model.h5\",monitor = \"val_accuracy\",save_best_only = True,verbose = 1)","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-07-20T10:49:47.122367Z","iopub.execute_input":"2022-07-20T10:49:47.122619Z","iopub.status.idle":"2022-07-20T10:49:52.469731Z","shell.execute_reply.started":"2022-07-20T10:49:47.122589Z","shell.execute_reply":"2022-07-20T10:49:52.468974Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2022-07-20T10:50:06.891219Z","iopub.execute_input":"2022-07-20T10:50:06.892034Z","iopub.status.idle":"2022-07-20T10:50:06.913923Z","shell.execute_reply.started":"2022-07-20T10:50:06.891967Z","shell.execute_reply":"2022-07-20T10:50:06.913148Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Model Training**","metadata":{}},{"cell_type":"code","source":"%%time\nprint('\\n\\nModel Training..................................\\n')\nmodel.fit(train_dataset,steps_per_epoch =350,validation_data = valid_dataset,epochs = 20,callbacks = [save_best])","metadata":{"execution":{"iopub.status.busy":"2022-07-20T11:15:28.332373Z","iopub.execute_input":"2022-07-20T11:15:28.332633Z","iopub.status.idle":"2022-07-20T11:15:33.299728Z","shell.execute_reply.started":"2022-07-20T11:15:28.332606Z","shell.execute_reply":"2022-07-20T11:15:33.298886Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data['text'] = test_data.discourse_type + '[SEP]' +test_data.discourse_text\ntest_data.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-20T08:33:06.800675Z","iopub.execute_input":"2022-07-20T08:33:06.801072Z","iopub.status.idle":"2022-07-20T08:33:06.819123Z","shell.execute_reply.started":"2022-07-20T08:33:06.801037Z","shell.execute_reply":"2022-07-20T08:33:06.818018Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_text = bert_encoder(test_data.text.astype(str), tokenizer)","metadata":{"execution":{"iopub.status.busy":"2022-07-20T08:33:07.526501Z","iopub.execute_input":"2022-07-20T08:33:07.527135Z","iopub.status.idle":"2022-07-20T08:33:07.542384Z","shell.execute_reply.started":"2022-07-20T08:33:07.527090Z","shell.execute_reply":"2022-07-20T08:33:07.541056Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Prediction**","metadata":{}},{"cell_type":"code","source":"preds = model.predict(test_text, verbose=1)\npreds","metadata":{"execution":{"iopub.status.busy":"2022-07-20T08:33:10.414583Z","iopub.execute_input":"2022-07-20T08:33:10.415553Z","iopub.status.idle":"2022-07-20T08:33:19.816784Z","shell.execute_reply.started":"2022-07-20T08:33:10.415491Z","shell.execute_reply":"2022-07-20T08:33:19.815746Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preds > 0.5","metadata":{"execution":{"iopub.status.busy":"2022-07-20T08:33:19.818821Z","iopub.execute_input":"2022-07-20T08:33:19.819121Z","iopub.status.idle":"2022-07-20T08:33:19.825536Z","shell.execute_reply.started":"2022-07-20T08:33:19.819088Z","shell.execute_reply":"2022-07-20T08:33:19.824818Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Submission**","metadata":{}},{"cell_type":"code","source":"submission_data['Ineffective'] = preds[:,0]\nsubmission_data['Adequate'] = preds[:,1]\nsubmission_data['Effective'] = preds[:,2]\nsubmission_data","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_data.to_csv(\"submission.csv\", index=False)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.read_csv(\"submission.csv\")","metadata":{},"execution_count":null,"outputs":[]}]}