Commit 93307071 authored by Ryan Randles Jones's avatar Ryan Randles Jones
Browse files

added elbow graph and facet grid

parent 6a1740ce
%% Cell type:markdown id: tags:
# Notebook Setup
%% Cell type:code id: tags:
```
``` python
# must run
import sqlite3
import slurm2sql
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import seaborn as sb
import plotly.express as px
import matplotlib.ticker as ticker
import numpy as np
```
%% Cell type:code id: tags:
```
``` python
from RC_styles import rc_styles as style
```
%% Cell type:code id: tags:
```
``` python
from sklearn.cluster import KMeans
```
%% Cell type:code id: tags:
```
``` python
# must run
# creates database of info from March 2020 using sqlite 3
db = sqlite3.connect('/data/rc/rc-team/slurm-since-March.sqlite3')
```
%% Cell type:code id: tags:
```
``` python
# must run
# df is starting database
df = pd.read_sql('SELECT * FROM slurm', db)
```
%% Cell type:code id: tags:
```
``` python
# voluntary
# for displaying all available column options
pd.set_option('display.max_columns', None)
df.head(5)
```
%% Cell type:code id: tags:
```
``` python
# must run
# converts units in ReqMemCPU column from bytes to gigs
df['ReqMemCPU'] = df['ReqMemCPU'].div(1024**3)
```
%% Cell type:code id: tags:
```
``` python
# must run
# converts Elapsed time to hours (from seconds)
df['Elapsed'] = df['Elapsed'].div(3600)
```
%% Cell type:code id: tags:
```
``` python
# must run
# df_completed is dataframe of all completed jobs
df_completed = df[df.State.str.contains('COMPLETED')]
#df_completed.head(5)
```
%% Cell type:code id: tags:
```
# must run
# df_batch is df with only batch jobs
df_batch = df[df.JobName.str.contains('batch')]
#df_batch.head(5)
``` python
```
%% Cell type:markdown id: tags:
# Average RAM per CPU Requested by User
# ReqMemCPU,Corecount,Runtime
%% Cell type:code id: tags:
```
# must run
# df_2 is database of completed jobs with only User and ReqMemCpu
# it is used for the user dataframes
df_2 = df_completed.loc[:,['User','ReqMemCPU']]
#df_2.head(5)
``` python
UpperlimitGB = 50
```
%% Cell type:code id: tags:
```
df_2['ReqMemCPU'] = df_2['ReqMemCPU'].apply(np.ceil)
#df_2.head(5)
``` python
df_1 = df_completed.loc[:,['ReqMemCPU', 'Elapsed', 'AllocCPUS']]
df_1.head(5)
```
%% Cell type:code id: tags:
```
# must run
# fills empty strings in User column with NaN and then filters them out to give a dataset of users with no empty strings
%%%% Output: execute_result
nan_value = float("NaN")
df_2.replace("", nan_value, inplace=True)
df_2.dropna(subset = ["User"], inplace=True)
#df_2.head(5)
```
ReqMemCPU Elapsed AllocCPUS
0 8.000 144.090278 6
1 8.000 144.090278 6
2 8.000 144.090278 6
7 6.000 50.001389 4
9 78.125 150.001389 2
%% Cell type:code id: tags:
```
# must run
# count = count of jobs per user
# mean,std,min,25%,50%,75%, and max refers to the gigs of memory per cpu requested by that user for all their jobs
df_user = df_2.groupby('User')['ReqMemCPU'].describe().reset_index()
#df_user.head(5)
``` python
df_1['ReqMemCPU'] = df_1['ReqMemCPU'].apply(np.ceil)
```
%% Cell type:code id: tags:
```
# voluntary
# description of number of jobs run per user - can be used to choose the Upper Limit Job Count
df_user['count'].describe()
``` python
df_1['Elapsed'] = df_1['Elapsed'].apply(np.ceil)
```
%% Cell type:code id: tags:
```
# must run
# variable for to be used in names of plots to describe the max job count per user
# max = 367257
UpperlimitJobCount = 100
``` python
df_1_sorted = df_1.sort_values(by='AllocCPUS', ascending=True)
df_1_sorted.head(5)
```
%% Cell type:code id: tags:
%%%% Output: execute_result
```
# must run
# creates database from df_user that returns all jobs per user up to the UpperlimitJobCount defined above
jobscount_cutoff = df_user[(df_user['count'] <= UpperlimitJobCount)]
#jobscount_cutoff.head(5)
```
ReqMemCPU Elapsed AllocCPUS
824465 10.0 1.0 1
1101525 10.0 1.0 1
1101524 10.0 1.0 1
1101523 10.0 1.0 1
1101522 10.0 1.0 1
%% Cell type:code id: tags:
```
# must run
# df_user_graph is df_user sorted in ascending order by count for easy readibility of graph
df_user_graph_full = jobscount_cutoff.sort_values(by='count', ascending=True)
df_user_graph_full.head(5)
``` python
df_runtime = df_1_sorted[(df_1_sorted['ReqMemCPU'] <= UpperlimitGB)]
df_runtime.head(5)
```
%% Cell type:code id: tags:
%%%% Output: execute_result
```
df_user_graph = df_user_graph_full.loc[:,['User','count','mean']]
df_user_graph.head(5)
```
ReqMemCPU Elapsed AllocCPUS
824465 10.0 1.0 1
1101525 10.0 1.0 1
1101524 10.0 1.0 1
1101523 10.0 1.0 1
1101522 10.0 1.0 1
%% Cell type:code id: tags:
```
``` python
style.default_axes_and_ticks()
style.figsize()
user_graph1 = sns.scatterplot(x="count", y="mean",data=df_user_graph)
runtime_graph = sns.scatterplot(x="ReqMemCPU", y="AllocCPUS",data=df_runtime)
#hue="AllocCPUS")
#, size="AllocCPUS")
plt.title('Average Requested RAM per CPU by User for all Users Running %i Jobs or less'%UpperlimitJobCount)
#plt.title('Average Requested RAM per CPU by User for all Users Running %i Jobs or less'%UpperlimitJobCount)
plt.xlabel('Job Count Per User')
plt.ylabel('Average Requested RAM per CPU (Gigs)')
plt.xlabel('ReqMemCPU')
plt.ylabel('AllocCPUS')
#plt.yscale("log")
plt.show()
```
%% Cell type:code id: tags:
```
kmeans = KMeans(n_clusters=3)
model = kmeans.fit(df_user_graph[['count', 'mean']])
# Now, we can get the predicted model labels, or Centroids, in the form of an array:
model.cluster_centers_
```
%% Cell type:code id: tags:
```
# attach predicted cluster to original points
df_user_graph['predicted'] = model.labels_
df_user_graph.head(5)
```
%% Cell type:code id: tags:
%%%% Output: display_data
```
# Create a dataframe for cluster_centers (centroids)
centroids = pd.DataFrame(model.cluster_centers_, columns=["count", "mean"])
```
![](data:image/png;base64,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)
%% Cell type:code id: tags:
```
``` python
style.default_axes_and_ticks()
style.figsize()
## Plot scatter by cluster / color, and centroids
colors = ["red", "green", "blue"]
df_user_graph['color'] = df_user_graph['predicted'].map(lambda p: colors[p])
ax = df_user_graph.plot(
kind="scatter",
x="count", y="mean",
c = df_user_graph['color']
)
centroids.plot(
kind="scatter",
x="count", y="mean",
marker="*", c=["r", "g", "b"], s=550,
ax=ax
)
```
%% Cell type:markdown id: tags:
# trying the same above graph using diffrerent syntax
%% Cell type:code id: tags:
```
df_user_graph_cluster = df_user_graph_full.loc[:,['count','mean']]
#df_user_graph_cluster.head(5)
g = sns.PairGrid(df_runtime, y_vars=["Elapsed"], x_vars=["ReqMemCPU", "AllocCPUS"], height=4)
g.map(sns.regplot, color="blue")
#g.set(ylim=(-1, 11), yticks=[0, 5, 10]);
```
%% Cell type:code id: tags:
%%%% Output: execute_result
```
kmeans = KMeans(n_clusters=3, random_state=111)
kmeans.fit(df_user_graph_cluster)
print(kmeans.cluster_centers_)
```
<seaborn.axisgrid.PairGrid at 0x2aab37653310>
%% Cell type:code id: tags:
%%%% Output: display_data
```
plt.scatter(df_user_graph_cluster['count'],df_user_graph_cluster['mean'], c=kmeans.labels_, cmap='rainbow')
plt.scatter(kmeans.cluster_centers_[:,0] ,kmeans.cluster_centers_[:,1], color='grey')
#plt.yscale("log")
```
%% Cell type:markdown id: tags:
# ReqMemCPU,Corecount,Runtime
%% Cell type:code id: tags:
```
UpperlimitGB1 = 50
```
%% Cell type:code id: tags:
```
df_4 = df_completed.loc[:,['ReqMemCPU', 'Elapsed', 'AllocCPUS']]
df_4.head(5)
```
![](data:image/png;base64,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)
%% Cell type:code id: tags:
```
df_4['ReqMemCPU'] = df_4['ReqMemCPU'].apply(np.ceil)
```
%% Cell type:code id: tags:
```
df_4['Elapsed'] = df_4['Elapsed'].apply(np.ceil)
```
%% Cell type:code id: tags:
```
df_4.sort_values(by='AllocCPUS', ascending=True)
```
%% Cell type:code id: tags:
```
df_4_cutoff = df_4[(df_4['ReqMemCPU'] <= UpperlimitGB1)]
df_4_cutoff
```
%% Cell type:code id: tags:
```
``` python
style.default_axes_and_ticks()
style.figsize()
user_graph5 = sns.scatterplot(x="ReqMemCPU", y="Elapsed",data=df_4_cutoff)
#hue="AllocCPUS")
#, size="AllocCPUS")
#plt.title('Average Requested RAM per CPU by User for all Users Running %i Jobs or less'%UpperlimitJobCount)
plt.xlabel('ReqMemCPU')
plt.ylabel('Runtime')
#plt.yscale("log")
g = sb.PairGrid(df_runtime)
g.map(plt.scatter);
plt.show()
```
%% Cell type:code id: tags:
%%%% Output: display_data
```
df_runtime_graph_cluster = df_4[(df_4['ReqMemCPU'] <= UpperlimitGB1)]
#df_runtime_graph_cluster.head(5)
```
%% Cell type:code id: tags:
```
kmeans = KMeans(n_clusters=4, random_state=111)
kmeans.fit(df_runtime_graph_cluster)
print(kmeans.cluster_centers_)
```
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiUAAAImCAYAAACM+fpFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzde9xcdXnv/c+VcKagQjiokAQteEBAQR+poj7WbtivbqdT3WqVk1aLRkJxt9M+1Ty1u9ruSJVprSYYGg9FAVvdVcd5aktqW6oUrFYkQd2CB5KAaCXgITYcTHI9f6w1ydxzrzWz1qw16zTf9+t1vyb3b61Z6zd31qy55ne4fubuiIiIiJRtSdkVEBEREQEFJSIiIlIRCkpERESkEhSUiIiISCUoKBEREZFKmKugxMwOMLOVZnZA2XURGdB1KVWla1OKNldBCXACcFf4KFIVui6lqnRtSqHmLSgRERGRilJQIiIiIpVQ2aDEzLaa2TfM7Lbw57yw/Gwz22xmd5rZJjM7tuy6ioiISHZVH7z0Mnf/6uAXM1sCXAu8xt1vMrPfB64AXltWBaXZWp3eXsCGirzfbRcWzEecv24K/XtJMWKuy0f63fbBZdRHmqNuN4uzgIfc/abw9w3AK0qsjzRYzI3XwvKyzl83hf29pBhjrsuDWp3ew0XXR5ql6kHJdWa2xcyuMrNHA8uBbYON7r4DWGJmR5VWQ2myuICgqECh7gHJQFNehwTG/X8eVFgtpJGq3H3zPHe/28wOBt4NrAM+WXKdZA40pIVCRKR2KttS4u53h48PA1cBzwW2AysG+5jZMmCvuz9QSiWlcRSQzEar09tcdh2kGK1O72dl10Hqq5JBiZkdbmaPCv9twCuB24AvA4ea2TnhrquAj5dTS2moJAGJz7wWzXN62RWQwlS5BV4qrqoXz3HA35jZUmAp8HXgUnffa2YXAVeb2SHAVuDC8qopc0izSUREZqSSQYm7fwd4Rsy2m4HTiq2RCPS77bnt1kn62ludnlqRRGRq+sYnslDch2oZH7ZV+YDflGLfLSnLpX4mXZe7C6mFNJK5V+W+N3tmtpJgcamT3H1rqZWRSohKjhY+FpYwbdx1mdPAWx86xvC/k9jU77bPS3OycFDr8BiSLf1u+4w0x5BqiLs2x1yXu/vd9oGFVE4aqZLdNyJFiEuORhCElN5V0+r07iNZALELuKTfbV8/4yologCk2cYEJK6ARLJS943Ms7KTo02yLOF+hwFrZ1kRkSFVf99IjSkoEWmG5WVXQEQkKwUlIs2wvewKiIhkpaBE5lmVZtpE2ZFwv13AmllWRGRI1d83UmMKSmRuhTNqRm+klUmO1u+2jyE6MNlJsDClh4+VGeQqzVf1943Um6YEi5RM16VUla5NKZoiWxEREakEBSUiIiJSCQpKREREpBIUlIiIiEglKCgRERGRSsi89o2ZXTxmswMPEozevtXnaaqPiIiIpJLHgnx/SbKkOdvM7I3ufkMO5xQREZGGySMo+fUJ2w8Hngr8GtAzs+e4+605nFdEREQaJHNQ4u7XJNnPzNYCW4D/B3hl1vOKiIhIsxQ20NXd7wU+ADy/qHOKiIhIfRQ9++ZbwNEFn1NERERqoOig5DjgPws+p4iIiNRAHgNdEzGzAwkGu34l5fP+J/CHwGnu/lUzOxu4GjgU2Apc6O4/yLe2UlWtTm8vYENFjV2dtNXp7QaWll2PHGzpd9tnDH5pdXo3AOeO2X9Tv9s+L+9KRJx3JueZBxHvw1GNfV/KbGW+aMxs+YSfJ5vZS4C/J5iFsyHFsc8EziZYnh0zWwJcC6x291OAzwFXZH0NUg8xN0ILyxulQQEJwOmtTm8zJApIAM4N98tNzHlzP888SBCQQEPflzJ7ebSUbCVZnhKAK9z940l2NLODgfXAq4Abw+KzgIfc/abw9w3h+V+b8PxSb3E3wkk3yDpqSkAycHr4OCkgGUi6X1Jxx8v7PPMg6futie9LmbE8gpIPMz4oGWR07bn7nSmO+3bgWnffarbv2l5O2GoC4O47zGyJmR3l7g+krLeIiIhUSB55Sl6TQz0WMLNfAJ4JvDnvY4uIiEg15TYQKWyxOC7sdsnqBcBTgLvMbCtwAnAD8PPAiqFzLgP2qpVkbsS1yDVxTaU9ZVcgZ1vCx00J90+6X1Jxx8v7PPMg6futie9LmTHLY408M3sz8HvAkcBu4OPA6919V+aDB8ffCrwY+DrwTeDV7n6Tmf0+8ER3n5TqfnCclQRdSSe5+9Y86iaz0+r0fsbC1rzB4M9Gzb6Juy4bNNhVs29qasy1qdk3MhN5rBJ8EbCWYOzIrQTjPl4FPAy8Luvxh7n73vB8V5vZIYRTgvM8h1RDREBC+Pvufrd9YAlVKkPcN4Za/w3KCgQUgOQjfG9GBSS1vi6lGvIY6Pp64G7gue5+j5kdBHwMuMDMLnf3zMnS3H3l0L9vBk7LekypvLhrs7DcOhWgv4FUka5LmZk8LqLTgCvd/R4Ad3/EzP4X8CvAk4Ev53AOmRMJcyCISAW1Oj1HXTeSQR4XzhEE3SjDtg5tE0lEAYlIIyhxmkwtj6DEgNELcPC7omVJI0lAsnvmtRCRcZK8B/XlQqaSVx/gM83soaHfBy0k55jZo0d3dvdP5HReaYAULSQaSCdSsn63faBaNWVW8gpK3hT+jPpDFs4gsPD3JkxzlBwkvbn1u23dAEUqQAGJzFIeQUmiHCEiMZLc3JSESaQ69J6Vmckjzfw1eVREJIZG8ovUjN6zMi3NK5fKUpeNiMh8yRzNmtnjzez7ZtadsN+fmtm9ZnZc1nNKo8zTejZp6W8jVTTp+tN6QjK1PJrY3ggcBLxtwn5/CBwc7i8C7GvmHb3JqcsG/W2kmmKuywGtJySZZF6Qz8z+HfiKu1+SYN8NwFnu/qxMJ52SFuSTKtJ1KVWla1OKlsc3rlNInkr+tnB/ERERkQXyCEoOAh5JuO8jBF04IiIiIgvkEZT8ADg54b4/H+4vIiIiskAeQckXgF8zs7HTi83sQOCVwC05nFNEREQaJo88JVcDLwM+ZGavc/dFXTlhQPIBYAXwGzmcUyouIhW1Zo2kVHA67y3A54FVBMtA7AE29Lvty0bqdANw7shz9zL+C47+7xtmimtzwTXQ6vQ2A6cPbd/S77bPyKt+Ul+ZZ98AmNlG4HUEo7Q/DGwGfkKwMN8zgIuAlcD73f0NmU84JY0kL8aYG5Y+nCJEXZcVWl9k/SAwiQlIktL/fQ3lfG16v9teEhGQDCgwkdwyur4e+B7wO8D/ZPEifA8Bf0yQq0SaL+6GVYUP2bqoyt9qFTBoLZk2IIHqvB7Jbtr/y8HzogKSceUyR3IJSjxobvkDM3sv8N+ApwFHErSWfBX4W3e/L49ziUihtKK3iBQm17VvwsDjL/M8poiUak/ZFRCR+VHZPl4z+5SZbTazr5jZ583s6WH5KWZ2i5ndGT4mnY4sxdGaLdlV5W+1YejfWdY0qcrrkeym/b8cPG9LzPa4cpkjuQx0XXBAs+cAqwlylxzN4v5Hd/cnJjjOo9z9x+G/28D/dPczzeyfgA+6+7VmdiHwWnf/xYR1W4kGuuYuaqZN+KjZNwnEXZcVGOy6aOBhq9P7GYtbWFPPvkkyO6vV6Z0PrAWWA9uBNf1u+/p0L6EYdaprGjlem5p9I4nkGpSY2SUE36weAe4Afhi1n7u/MOVxLwYuB34ZuBM42t33mNlS4H7g5CRjVhSU5E8zbbLL4cbvY/Yb/TBIO4NmePbNYEbdqJ39bvvIpAdMcs2EH/IbgcOGtu8CLqnah32d6prWFLNv9L6XTHIdUwKsIVjf5jx335H1YGb2foIbqAH/FTgR+K677wEIA5N7w3INpC2HZtrMTtK/4bj9RrelnUEzPPsmKiAZVx4nyTWzloUf8oS/rwWq9kFfp7rmIc31JpJK3hHtccAH8ghIANz9N9x9OUGw8648jikiqZQ1+2Z5yvIy1amuIpWWd1Dyf4DH5HxM3P0jwAuBe4DHh902hI+PA+7O+5wiApQ3+2Z7yvIy1amuIpWWd1Dyv4BLzexxWQ5iZj9nZicO/d4CHiBYzO824FXhplcBX1EOlFJpps3sJP0bjttvdFvaGTTDs292xuwTVx4nyTWzhmBcxrBdYXnV1KmueUhzvYmkMovZNxcC64AesJXF37Tc3f9owjGOC59/ePj8B4DfcfdbzezJwDUELTI/BC529zsS1m0lGug6tbgZE1rnJptx12WCwa4OXAhcG7Ff5P9DisGu6yPWvhkd7JpqkOvQcTT7pgamGIR9wfDr1r1B0sp79s0pwN8TrHMTx929lH5qBSXT0yyb2Rlz4z8fuG7MUzf1u+3zZlo5mWsxs2/WEaR9iLIXuKjfbV+ve4ZMI+/ZN1cBxwJvIlhxNHJKsNSSZtkUb+2E7VnWohGZ1qox25awf9aR7hmSWt5ByS8A73L39+Z8XJF5pNkbUkWTWrp13crU8m5C+zHKFyKSF83ekCqaNCNL161MLe+g5GPAS3M+plSDZtkUb9LsjSxr0YhMa8OYbXvZf93qniGp5R2UXA0cES6m94tmdpKZLR/9yfmcUoBwYNrozUQD1mYonMVwQcxmDXKVUoQzstaz+H7wEOEg13A/3TMktbxn3+xl/zocsQfW7BuR/XRdSlXp2pSi5T3Q9e2oaa62lFOgekpaKXhTv9s+L0E+k32tNeH05T8HloXbdgBvmiZXR8R51SoUoczcKOG5o3LjDNP9Q1LLPXlalSnqj6ecAuXJcXn4PO1gf4AxziaCZIYfBA4e2fYI8OtpPijHBEIKTIYUtTJxTJ6SJAHJgO4fkoouFhlQToHqKfNvnyQggSCAWMvigATgICbnWok6XpryeTVuZeIizp3HCtYii+TdfYOZHQH8FsFN5DiCNPC3mNky4FLgY+7+jbzPK9Mp+du4NMO4wetzNbC9wC6VMlcmTnWOVqfnwIMEQepSginFS1BXsUTI9SIws2OAfwfeChwNPAE4FMDddwCvBl6f5zllegpIJCfKS8GCLpUVBO+rFcDGsDxvZa5MPM0941D2J11bGnEMC+9HMufyjkz/GDgeeDbwPBZfeD3gRTmfU6aXqE945rWQKtqRcL9NjM+nkvYDLC73Sh1yshTZpdLElYn1BUlyD0peDFzl7rcS/WH2HeDEnM8ps6Mm1fm0qd9tH8PkQGBTv9s+L8/uiXAw6+h56zLItbAulfBvfgmwjeBeu42cB7mKlCHvMSXLgG+N2b4XOCTnc8oM9LttfWupudH/w7BvP/FzygoEahKARNlO0GUTVZ67MABRECKNkve34O8DTxyz/Rmo/7lKlAa62rL8PzwSUTax5SPD+XamLG+iJnapRJnV/UH3Hck9KPkM8Doze+zoBjN7NnAxwbgSqQClga62mP+fJB7pd9uLpujGdI0MZOoi6XfbR7I4ANkZls+FeelSSXhdji7a9+BQ2Z6I5+u+I0D+aeaPB75MMLr608DrCJLsHESwUN+9wFnu/kBuJ01Xv5UoeZpUjK5LqSpdm1K0XCNTd/8+cDbwb8BrCUZTXwS8guAb2vPKCkhERESk2nJPnubudwNtMzsSeBJBYPItBSPlaHV664BV7E9atCFc5VNqRP+PUiW6HmVWZtaH5+4/cfcvufsXFZCUI7xxrGZh0qLVYbnUhP4fpUp0PcosVXJgkZkdbWafMbM7zOx2M/tEmC0WMzvbzDab2Z1mtsnMji27vhW2KmW5VJP+H6VKdD3KzGTuvjGz0VHWk7i7TzqvA+909xvDc7wLuMLMLiEYOPsad7/JzH4fuIJg/IqEEqSPXzpmm1REmJ78ujG7LE2SeyTCToK038Pvw+39bjsqx8ZYBa71ItURd/+Iux4Tz6zR9SR5tJQY8BDwDwRTgif9/N2kA7r7A4OAJPQFgqREZwEPuftNYfkGgkG0Ekq4nk3aQFIKliAgyeIIFn8hWd7q9LalOUjBa71IfSVa10bXk0A+A123AKcTJEa7Dvigu381h+MCYGZLgDcSTDFeTjD3HwgW+TOzJWZ2lMat7JMkE+uGmddCsipiCfpRadOhj1vrRd9uZViS+5KuJ8neUuLuTweeCfxvglWAN5vZF83sDWb2qKzHB94L/BTQIKoxWp3e+a1Ob+uE3fYA6zVKvhaKWII+q8LWepH6S9DioetJ8hno6u63uvtq4LHABcCPgPXAvWZ2nZlNtTKwmV0JnAz8mrvvZWRtCTNbBuyd91aSkWbPWP1u+wAFJLVRh+UY4upYh7pL8SZ1xeh6ktyTpz3i7n/l7ucCJwHvAJ4NbDKzN6c5lpmtJRhD8qvu/nBY/GXgUDM7J/x9FfDxfGpfa1HNnqO0rkS9lLFeStqb/7ys9SILTXsvGXTFxNH1JDOdErw3/HGC/sTE5zKzU4G3AI8Dbjaz28zsk2FryUXA+8zsm8ALgFTBTtOEA8gmzZrQuhI1E844uGBGh98J7B4pSz37Jm6tF+A5rU5vd6vT8/BRXa8NkmFNJhjTFTMvawfJeHmvfXMQ8BLg14EXEdz4PgV8EPis53myKTRtHYcEM2229bvtlQVVR6YUd10mnEkVJ9MCe9MaSqw1SmOZaijq2sx4XYK+JMkYuVwYZnaWma0Dvgd8FFgGvAl4rLu/yt3/oeyApKHG3RjU7Fl/WW785+ZWi3SUWKv5slyXeTxfGiyP5GlbgFOB+4EPAx9y9y1ZjyvxhtadGEfNnlKG2MRahdZCRGopjzwlTwMeBG4Fngj8sdnYQNjdvZ3DeefSmObxBRSQSEn2EB2AKGGfiEyU1yrBh5K8uVjdONkkaQbX31g2lXTeDUQHzUrYJwO6P0msXAe6Vl2dB7qmGFymQWQ1M2aga55vzr0sHEM2mBU3LNHg2DDXxIdJ3iWzE3iAYObFQwRfYlKdcxrj1lEJU+oPzwSZau2fiHMOulaXErQObZjVAN8izhUz0DXrdZlLXfN8/dOuudPq9DYTZDQf2NLvts+Ypg4SUFBSA0nXs+l323m1fEmBZjTDYVpjg4Tw5n0t+dYt98BkKKHgcP6eXQRTTt9B9NTUTIFJkTOPijrXjIKSganrmufrH3etjAtMIgKSAQUmGegbdT1oPZv5U9YMhUndsGvJv26zmCk0bh2VWaUzL3LmURNmOWWpa56vf9y1Mk5UQDKuXBLI9Zu1mX1wiqe5u78uz3o0RYoVf2fWRCzzZ+ib8CP9bvvgkc11WYekjHVUipx51IRZTlnqmufr15o7FZJ3c/9r2D+IafTDdFy5gpIRSZvv1WUjM3RQq9N7eCQwWbD+VIXF1XOW9S9y5lETZjll6QbK8/WPu1akYHl33xwH3Ab0gOcAjw5/ngt8GvgKcKy7Lxn6qVNkX6REg1pnXgspS1X+bw8a+X0N+ddtFjOFxq2jMquF3+K6UGfRtVrkuWYlSzdgnq9/2jV34vJxKU9XBnkHJX8K/MDdX+ruX3D3n4Q/t7j7S4Ad4T4So9Xp7U04kEyzbBqsqv+34cC/C0n3jXQ7+9czeXBk20xm34xbRyUczDoagGSefRN2oa5n/99mDzNKr1/kuaooz9c/7Zo74WDW0QBEg1wzynvtm/uBt7r7VTHbVwNvc/dluZ00harPvknRZaM0zQ1S0JTgqel6m18znn2ja0sWyfvb2MHACWO2nxDuI9HUZSNV80jZFZDG0r1MFsk7KLkJ+E0ze/7oBjN7AfCbwL/mfM5GCFtJJlGXjRTte2EeB5E86V4mkfKeufHbBIHJP5vZvwPfCMufDDwT+AnQyfmctZek20bNnJJA5vEZEYmkVgAbW52e1lOS3CggkTi5BiXu/nUzO5Mg6cyLgWeFm34K/DXw++7+nTzPWWdpUsfPui7SCOfOaBzKYcB1rU7vuozHGcyyyStZWuIgLCKN+LEsTHe/E7glpm5ZzpMoXXnNRC1RkMbOvCoizZN7tOruW939fOBRwGPDn0e7+/kKSPbTWjYyTqvT+1nZdZiBc8k3e+u5rU7vhkk7DbX+rCB4z61gYUACcMSYumU5z8Y57/4aDZJ39rvtI0upidTCzBJveTCt5z9mdfwGSPRNQwHJ3FJSvGSSBDlRacSLOs8gXXmTWkvStJKYup4ljdxvfGZ2BPBbBG/i44CL3f0WM1sGXAp8zN2/Me4YTZZyoTV124hkV1S6cKUrF8ko12/hZnYM8O/AW4GjgScQNpO6+w7g1cDr8zxnnaQNSNRKIpKLotKFzypTrMjcyLul5I+B44FnE7wRfzCyvQe8KOdz1onGkEhSu1EXThJJUtSvYfHS9EWdJ0m6chEJ5Z3R9bvAh939LWZ2NHAf8Evu/k/h9suAt7v7UROOcyXw34GVwGnu/tWw/BTgGoJWmPsJuoa+maJ+Kykho6sGtco4Vc/omqMqzb5ZzsL35F7gszF1q+Tsm1ant4uFA3Yf7HfbWcfOLDDDjK6jM3h07xMg/6DkYeBSd/9ATFByKXClu49945jZOQTrD3weePFQUPJPwAfd/VozuxB4rbv/Yor6raTgoESp42WSmBt/mq6+ss1k/ZpZaXV624ge55F5/ZuiRAQkA7kGJrNOMz9CgYnkPiX4+8ATx2x/Bgn6V939Jne/e7jMzI4FzgQ+GhZ9FDgzHMdSZcpDItOoS0AC+U7zLUITBqRGBSTjyuugTte8zEjefdafAV5nZu9lZM0MM3s2cDHw7imPfSLwXXffA+Due8zs3rD8vumrPDtKHS9SnDCXyHCAVKsWHEknosWrNi1dEi/vD8O3EQzQ+wrwDoIWgFeb2UeBzwHfA/4k53NWUtLU8QpIpOrC67TS32IjAhJImPRM6iemC255WC41lusHort/Hzgb+DfgtQQfyhcBryAY5HaOuz8w5eHvBh5vZksBwsfHheVVNOkmri4bGacq18emmH/H7VOW2GysEWW7Y/aNK6+iB1OWN00TuuAkQq4DXRcc2OxI4EkEH87fcvcHzOy5BLNvEk0LNrOtLBzoeiPw/qGBrq9z9xemqNNKZjzQNeEARXXZyD5zNPtmYEu/2z4jpnUDhrpdWp3ew8BBOZxzO3AC2b6I7QCWDf0+VfdQxOsePe6wqBlLcbOYcr+vFDzQFWALcHrMtu0EwfrozKkFsrTqtTq9dcAqYCmwB9jQ77YvG9q+eaR+W/rd9hnTnq+Jss5Ayy0oCWfbPBF4wN2/NbLtbODtBDlK9rr7gROO9R7gpQQ5T3YA97v7qWb2ZIIpwY8BfkgwJfiOFHVcyQyDEs20kWk0YPbNNHYSrDcTZxPwf5NPQDJLqQKTMYFYXuo8+yYX095fw4BkdcSm9f1u+7KIgGRAgUkoYpVxCHL1XJI0MMkcVZvZUjPbQLDOzS3AHWZ2s5kda2ZHmtn1wL8CLyRY/+G0Scd098vd/QR3P8Ddj3f3U8Pyb7j7s939lPAxcUBSEM20kbw0OSCB8QEJBB/cVQ9IIH2AMeuZSnWefVO2VRPK41pw4srn0bj1nxLJY/bNbxKkjr8H+ALw8wTjStYTNJf+X8BHgD9y92/ncL7KUXI0EZHaW5qyXBbLPNYnj6DkIuB24BfcfReAma0H3kiQdfUcd78lh/NUkrpsREQaYQ/RAcieoitSY9uBqGnZidd/yuNb+ykEqeV3DZW9L3z8kyYHJCF12Yikt3PC9k2M5DpKaBPFzgZKe65Z163Os2+m+f8eleXvu2FC+ZaY7XHl82gNwRiSYanWf8ojKDmcIJPrsMHvt+dw/EpqdXp7Ew74UpeNyGK3EAxijzMYU5I2oD+X6HEbg5kbWYzWN/Xsm3D/0Q/OcX+HqCArLvDKfe2bgi1l/P/RdoLlRzx8HA0GMiXLC2fZrGd/y8gewkGu4fYzIs6pQa5DwsGsl7Dw/ynxIFfIYfaNme0FLnT364fKFq17UwV5zb5Rl43kqY4zHGpmE8ESFXHTbhMfZ94yxFbk2tQXuzmSV5r5Xzaz44d+P4wgSnq5mT19ZF939z/L6bxlUZeNSH3kNeOlbmv8NIW+3M2RvIKS88OfUW+IKHOgtkGJ1rMRmV9TtBJsI+hP/z0mJN1KmwdDibykifIIShJnVK27pOvZFFQdEam+FcC1LL5vnN7q9DYPgogxAcmifcfsv2g/kbrJHJS4+7/kUZGa0Ho2IpJW3H3j9Jh/T9p33P5NTOSl++ocyav7ptG0no2ISCGcxfdaC7vN9s2EGRVzj97Z77aPnLSezTgR67iMXXdn6DXcTXTCsFTnr6Osa9/oQ3SCFDNt9LcUGaPfbVuR3ZtZzzWor7pkCzXub706DDAWGHOPPiJc0HE1+5OiLY07TsRxB+u4rAiPP3icxIjPYJr4/HUU8zfbGJYnog/SyTTTRiRfeSabiht4vmXkMetxs9Q57v6wJebfk/Ydt3/TE3lFrU8z7h4dt35S3Do3w6LWcclLkvPXUea1bxSUxFByNJHZiElCNY0H+9320ohj7ZuFMuW59obH3SdDnbcBF46rY4LjL5pVM8eJvPJahybJcRKv1zKj89dRJda+aRwlRxOZraQfnuO+GAyyl046VsTU261Er8+xrd9tr0x6nJQm9qmnPf4cBCBR8lqHJslx4tZxKer8dVSJtW+aSF02Ivma9v0St5ZJljVOMq/PITOR5BqJWp9m3PPi1tOJW+dmWNR1kpck56+jzO+tzGnm62RSmvmkLSSoy0ZyVJFU3k0z9j2adYbAvCjw2lzf77Yvm3APznX2TZLkc3WZfVOl6zlrXRSUhNRlI2VRUDIz+vKQUQ7X5i7GDBYdvp+GwcPqMcfK7f8zbfbcKhua8TL8d95FyoXwqkJv2P3UZSPSLPoCUb40s1cmzUjJ8/+zScnnMs94qZK5H+iqLhuR5pqzFqfa3aOG/n+ikqaN2x9ge7/bntVA1DrJPOOlSmp1AectTZdN3d7sIjJ3LOGCoVU0TSvI8lanty33mtRP3MyWxDNeqqSWH7RmdoqZ3WJmd4aPJ097qAT7zNM3LRGpt3nrspq2NaBJyecaNZuslkEJwXSq9e5+CrAeuHpG56ldc6iISI2tp4AcHk1KPhcOZr2EIFGfh4+1HOQKNRxTYmbHAmcC/yUs+iiwzsyOcff78jqPZtmIiBQrnCq7aLrsLB97qJUAACAASURBVMYG1TEAiRMGILUMQkbVsRXgROC77r4HIHy8NyxPK+5CV5eNlE3XoEyjiOtmVucYd9xGjZuQeHUMSnITds2MvhHUZSOli7k2RcYp5N6V07WZ6r4bzrIZDUA0+6aBapc8Ley+uRM42t33mNlS4H7g5EndN5MyuoqUQdelVJWuTSla7VoE3P0HwG3Aq8KiVwFfyXM8iYiIiBSvdgNdQ6uAa8zsD4AfAhcnfN5guegTzDSOVXJ1j7vvnvK5ui5llnRtShVFXpe1DErc/RvAs6d46mPDx8/nWB0RgJOArVM+V9elzJKuTamiyOuydmNKsjCzg4FnAd8jmAt/AsGb7XnAPSVWbRb02oo19bfRiOtyWBVf6ySqczGS1nkW12Yd/16TNO01Vf31NKelZFru/jBw0+D3oebIe5o2iEuvrT5Gr8thdXytqnMxiqhz3LVZx7/XJE17TXV9PbUb6CoiIiLNpKBEREREKkFBiYiIiFTCvAclPwLeFj42jV5bM9TxtarOxSizznX8e03StNdUy9czV7NvREREpLrmvaVEREREKmKughIzO8DMVprZXE2FlmrTdSlVpWtTijZXQQlBMpm7wkeRqtB1KVWla1MKNW9BiYiIiFSUghIRERGpBAUlIiIiUglzP3ip1entBYbX5PZ+tx0brLU6vc3A6UNFW/rd9hlD23cBhw5tfzB8XFDW77YPS1nPdcAqgqXE9wAb+t32ZWmOkeAc5wNrgeXAdmBNv9u+Ps9ziEg+0t67ZnzuYeuBS2O27wE2RGwvrO5SbaVeBGZ2pZndZWZuZk8bKt9qZt8ws9vCn/OGtp1tZpvN7E4z22Rmx057/pg3loXlUfuPBiQAp4flUQEJ4e+LysJ9k9ZzHbCaICAhfFwdluciDEg2AisI/iYrgI1huYhUSNp7VwHnHrZ6zPalMdsLqbtUX9mR6aeA5wPbIra9zN2fHv7cAGBmS4BrgdXufgrwOeCKDOePe+PElY8GJKPlo8HHOGn2XZWyfBprgdHWm8PCchGpiAlBwbhgIS+zOkcRdZeKKzUocfeb3P3uFE85C3jI3QdLaW8AXpF/zSpnacryaSxPWS4iBUvQSiFSa2W3lIxznZltMbOrzOzRYdlyhlpV3H0HsMTMjiqlhsXZk7J8GttTlotIgRSQyDyoalDyPHc/A3gWwZswt7ETGW1JWT7Og5N32WdDyvJprAFGx7nsCstFpEQpApI6L2ZW57pLTioZlAy6dNz9YeAq4Lnhpu0EAzABMLNlwF53f6CIeoWzbEYDkOHZN5tinjraopFq9k04y2b90HH2AOvznH0TzrK5hKAlysPHSzT7RqRcaQKSGsxg2UNwnxwNQBy4sPjqSNVUbkqwmR0OHODuPzYzA14J3BZu/jJwqJmdE44rWQV8vMj6DU//TeEf+932eZN3G3vey4BcpwBHnON6QEGISEXUOCDZNO6ep/QDEqfUoMTM3gO8FDge+KyZ3Q+0gL8xs6UEAzm/TjCnHXffa2YXAVeb2SHAVqoVXZ+bslxEJFKNAxImfQnTFyCJU2pQ4u6XA5dHbHrGmOfcDJw2s0qJiFRDLQMSkSx0MYuIVEzCRGIKSKRxKjempOompJnfRHRXTdwAWBGRBRJ221Q5IFl0v4sYQ3IH8CJmuGyG1FNVL+pKmpRmPuxH3TGyfUfWQa4iMh+SjiOpcECy6H4Xs4TFucxw2Qypr6pe2FU1Ns18q9O7AVg2sm1ZWC4iEqnV6e1tdXpOsnEkVV4jJup+F7WERZQ8l82QmlJQki/NvhGRVFJmavV+t53n8hKzMHq/S7pURdVflxRAQYmISEmmCEjqeM/WUhWSWB0vcBGR2puTgASil7AQiVTXi1xEpLZand4u5iMgiVrCIk6eC4xKTWlKcDpbiB7sOs2CfCIyvw5NuF+tA5KB4Qyu4Syb1RG75bnAqNRU7S/2ImVYkE95SkQESJwYDWBvTQOSsfe7IhYYlfpSS0lKUy7IJyLShMRouShigVGpp0Zf+CXQlGARidSAxGhJ6X4nU1NLSUoT0syLiCySZsXfWdelCK1O7/xwHEnc9nUEydKUZl4WqHtEXqhJaeZFREalCUga0EoysDFML7/I0EBXpZmXRUp9A5jZlWZ2l5m5mT0tLDvazD5jZneY2e1m9gkzO2boOW5mW8zstvDntAKrPDbNPBroKiJD5jQggSCt/NqYbXHp5JVmXkpvKfkU8HyC+esDDrzT3Z/k7qcB3wauGHnec9z96eHP7QXVdaJwIarRAGSTFuQTmT9zHJAMxKWXj0snrzTzUu6YEne/CcDMhsseAG4c2u0LwBsLrVgGCkBERAEJEJ9efg/RAYiSp0npLSVjmdkSgoDk0yObbgy7bt5hZgcXWKW4JGlKniYigAKS0C6C9PJR4pKkKXmaVDsoAd4L/BQYHgC13N2fSdDt81TgrUVVJpxlMxr9b9fsGxEZMs8BiRN0x18SN/smnGUT1c2t2TdS3SnBZnYlcDLQcvd9GRDd/e7w8Sdm9n7gt4uqUziafNlI8bJJ098mHG8tQd/rdmBN3HFmNYUuTR1EZLyE2VqbGpBAEJCtAP681ekNygb3l70EX4TvB44ced45095HpVkq+cYws7XAWcCvuvvDQ+WPMbNDw38fALwMuK3Aqq0lGFU+bNwo81hhMLCR4A08eCNHTqOb1RS6NHUQkfGUrXWBZcA1wIfYf39ZGj4uAw4a2X+q+6g0T6ktJWb2HuClwPHAZ83sfuAVwFuAO4Gbw0Gwd7n7S4AnA1ebmQMHAjdTYPcNwZsrTfk44wKc0W8L46bQZWktSVOHWGptkXk3R9la00j7+RI3W0fmSNmzby4HLo/YFPnmdvdbiM8VUjdxb8Co8llNoUtTh0hDrS2D4GbQ2oICE5kH85atdYaS/A2l4So7pmQObCe6hSVqGt2sptClqUOcXFpbROomRTAC89NtI5KJ3iTlWUMwbW5Y3DS6WU2hS1OHOJlbW0TqRgGJyGzojVKSsGvjEoLpc2On0YWzbNazv2VkD7A+6+ybNHUYI65VJU1ri0htKCARmR1135Qo/PBPFACEAUju8/jT1CHGGhaOKYH0rS0idaKARGRG9IaRTHJqbRGphYR5SEABichU1FKSs1andwNw7lBR4xfky6G1RaTylD4+lZ8BPwaOZn+ytNHcJCKLzPsbJ1cRAQnAuWG5iNSUApLUfga8qd9tL+l328cAv87+1tQ4mjItainJ2WhAMqlcRCpOAclUFqQFGG5NTTlQWOaM3kAiIjEUkGQSlxYg7u+pQEUUlIiIRFFAkllcWoC4pI9Zk0FKA+iNlM6WuA3huJEdMZvjykWkghSQZDYuLcCskkFKA0wcU2Jmz5/mwO7+uWmeV2X9bvuMVqe3mej1d8aNG1kWVTiPM3VEqk4BSS5i0wL0u+3LWp0eBAuKLiVoIdmQNRmkNEOSga43Mt2o6KyLxVVSGJhkHiU+bqaOAhORciggycekPEWzSgYp9ZckKPn1kd8N+E3gFOA64Oth+anAq4A7gXV5VbDBNFNHpHoUkIiUaGJQ4u7XDP9uZm8CjgGe5O73jmz7I+AW4Ig8KykiMmsJs7UqIEmg1entAg4dKnqw322PriYussg0b67LgKtHAxIAd78HuJqgJWUsM7vSzO4yMzezpw2Vn2Jmt5jZneHjyUm2FUwDV0UaJGG3jQKS5A4d/T0MVETGmiZ52oksXu5+2H+G+0zyKeDPgc+PlG8A1rv7tWZ2IUGQ84sJthWi1entQbOWRBoj6TgSBSSZHRr+rbcDR7GwRX1HmPlV5tw0b7K7gAvN7JDRDWHZxcDWSQdx95vc/e6R5x8LnAl8NCz6KHCmmR0zbtsUr2EqCkhEmiXNwNZZ12VOGLCCxV38y1qd3n0l1EcqZpqWkj8laKH4kpmtB+4Iy58MrAaeQjDVaxonAt919z0A7r7HzO4Ny23MtqIuZgUkIg2hmTaVE5k6QeZL6qDE3Tea2eHAHwNXsf8bhAEPAr/r7hvzq2L5Wp3e+QTrOGQ5xvA3re3AJqJn2myKef42FqZt3t7vtldkqZPIvFJAIlJNUy3I5+7vNrMPAecBJ4XF3wH+wd1/lKE+dwOPN7OlYUvIUuBxYbmN2TYzYUCykWCBqbwsB06I2fYLEXUYDUgAlrc6vW0KTESSS9kFq4BEpGBTrxLs7j8GPpZjXXD3H5jZbQT5Tq4NH7/i7vcBjNs2Q2vJNyAZiLvZRU2njlvYKq5cREYoIBGpvqmDEjNbCfwScBxwnbtvNbODgOOB77v7IxOe/x7gpeH+nzWz+939VILxKNeY2R8APyQYODswbtus6IO/QpSaXzJQQCJScVO98czsT4BvAn8BvB14QrjpEIIMr5dOOoa7X+7uJ7j7Ae5+fBiQ4O7fcPdnu/sp4eMdQ8+J3TZDcStdSsHGpeYvoz5SHwkTo4ECEpFSpX7zmdkbgN8F1hN8QOwbLObuPwE+DbTyqmAFrGF8XpZpxU0xfDCiLC4wmreASan5JTUNaq0NTbuWqVpKLgU+6e7/A/hKxPYtwJMy1apCwoWlLgG25XjY7cQHFD+IqMOKiP01+0ZkAgUktXJ72RWQ8k0zpuQU4H1jtt9Hw+abh4HJ9VlWB+532wtujGOak+PGsLyFYNDtcoIAZc20dRGZBwpIqqffbVur09tN9CrypxZdH6mead6IDwGHj9m+AsgyLbjO4oKWqAAkcZfM0LTkFezPiLgxLJ8nkTlcxpTLnFJAUkmD92lUQDKuXObING/GLwIvidoQppm/CPjXLJWqqR3E50y5J6IsaqzKLqJbQKKmJR9GxoRudRPOshkNQDT7RhZQQFJJw+/TPTH7xJXLHJmm++ZdwA1m9hHgg2HZ8WZ2HvA2gqRgTf0GvwU4PWbbrcQPuFzUJdPvtq9vdXow0iUTdhVNfP6E8sZSACLjKCCpnKi/8waCJUlGbSigPlJx06SZ/6yZvZFghd9B8PGR8PER4BJ3vyWn+lVKv9s+o9XpbSY6MEk9A2QwViXBrtsJumyiykUEBSQVtege1e+2Lwu/kK0i6LLZA2zod9uXFVw3qaBp08z/hZl9Gng5wUJ8RpC35GPu/t0c61c5YWCSesBr+JxpuxrWsDjVfVxXj8jcUUBSSbH3qDAAURAii0z95nT377v7e919tbtf6u5/1qSApNXpeYqES0lNlehrZFqyh4+XxHT1iMwjBSTV8hC6R8kUpk4zP8zMDgDawFFA392/n8dxK8Band7e4RtZ2H0zTtzqvwNTJfpK0dUjMlcSfnlQQFKsQ4YDkqGV1gfj5+4AXoS6b2TENBld32lmXxr63YDPEizOdzVwu5k9Mb8qlm7fN7Ax40n26Xfb543mJBGR2UjYbaOApEQxKQ3OZf8U4KXA6lant66cGkqVTPNG/a/A54d+bwHPJ5iVMxj4+uaM9aqqsQEJBOuzZEmyJiLJJB1HooCkdElXWl8164pI9U3TfXMiwaDWgRZwl7u/GcDMTgUuyKFudTWpe0aJvkQySjOwddZ1kUjD97mkqQuUPE2maik5CNg99PsLCbpvBr4DPDZLpRpMib5EMtJMm+obuc8lTV2g5GkyVUvJ3cAvABvDVpEnAH8wtP1Y4Kc51K2KxiVPG0vjTESyU0BSS1EpDaIoeZpMFZT8FfBWMzuWYAGlnwCfGdr+DODbWSplZiuBTw0VPRo40t2PMrOtBNPNHgq3/Z67p55mO40wR8keMkylHhZODx7u7lFLikgMBST1FJO9+ijgiKHddmj2jcB0H67vAP6SoLXEgYvd/UcAZvYo4FeAf8xSKXff6u5PH/wQBCjD02FfNrS9kIAEoNXp7WJ2AQlMmcdEpOkUkNRbv9u+vt9trwz/b37MwoAEYFmCdAsyB6ZJM/8w8LrwZ9ROgvEkowvNTc3MDiIYOFtaC0JMAJFV3PHyPo9IrSkgqZ9Wp3dfv9s+JmZzXBf4VF3j0iy5voHdfa+7/9jdf5bjYX8F+K673zpUdp2ZbTGzq8zs0TmeK44CBZESKCCprWVlV0DqaaqMrmZ2CHA58BKCga4QzLr5JPBed38wn+oB8Fr2r0YM8Dx3v9vMDgbeDawDLszxfJJSRLbGuNWORRJTQCIyf6bJ6HoM8CXgCuApwHfDn6eEZV8K98nMzB4PvAC4blDm7neHjw8DVwHPzeNcMp2YbI0bw3KRqSggabQtKctljkzTUvIu4KnAbwNXufsjsG/sx2rgynCf1+RQv1cDf+vu94fnOBw4wN1/HKa3fyVwWw7nEaaeDRSVrfGwsFytJZKaApJmaHV6N8TcPz5P9PiRz0eUyZyZ5g3dAj7g7u8eBCQA7v6Iu/8Z8KFwnzy8hoVdN8cBN5rZFuCrwCnApTmda65lmA0Ul60xaRZHkX0UkDRK3P0j7p6te7lM1VJyEHDrmO3/DvzadNVZyN1PGfn9OwR5UIo2aeXfASf6hvpIRFnVTDsbaDtBl01UuUhiCkgaKer+Efd/rASTMlVLyZeAM8dsPwv44nTVqaYUK/8aiwOQR/rd9sEzqFZVrGHxFPBdYblIIgpImkvjyySNaVpKOsA/mtntwPvcfTeAmR1AMKbkpcCL8qti7dzIwm8HN5ZTjWLEZGuc2ewbZcFtHgUkjafxZZLYNEFJF7ifYDru283sO2H5E4AjCVLM/2kwDnUfd/d5CVQix2XU4IMzrotq4qrGYQAy85vOuHEvNfj7SgQFJHNB48sksWne5E8gCGa2Az8iWMPgqPDf24EDgZNGfp4QeaT5Ufnka+GH+mgAUrVWCGXBbR4FJM2n8WWS2DRp5lfOoB5SARULQKThwlaSSRSQ1JvGl0kqU2V0FRkW0QSvDxIZK2G3ja6jettG9PiyPcDSiP33zL5KUnUKStJ5EDi07EpUScyHi7U6vb36QJEoSceR6Pqpt363vTJm09eITp72tdnVRupi2rVvngj8FvBs4DEsHpvi7v7EjHWrotICkgrPOlHOAUkszcDWWddFSnNqynKZI9OsfXMaQfK03yBIpPYE4D+BQ4CVBE1wGtiUowzZVkUqQzNtJBTVdTOuXObING/8txMkCDuD/flI3uTujwPeADyaIF/JPNoRUz5xWu0EmnUitaaARIbEjR3RmBKZKig5B/gLd7+D/U2sBuDuG4G/I1gtuIkmrWJ5K9WfVpu3uGZ2Nb8LoIBEFtmQslzmyDQ3gCMIEqTB/pTqhw9t/1eCwKVx+t32GYwPTM4Fjh8pG/29UcIPkdEAZFYfLnEtTllbomRGFJDMrdj3ZL/bvgxYz/6WkT3A+rBc5tw0A13/g/CD1t13mtl/EqzWO/AYGtw32O+2z2h1euNaAUZHlZ/e6vQ2hwHNsDQZVONm/Tw4ph6FKerDpN9tn1fhAb8yQgHJ3HK9J2Va0wQltwHPHPr9X4A3mdkXCVpeLgM251C3Joma/pbGISnLG0s3u3pQQDLXxv6/tzq9dSwcd7gUWN3q9FBriUwTlFwPrDazQ939QeCtBIHJP4fbH6RhGfxS3GDTSDN4dTuwIqo8fIOvInhj7wE2VOGNPauEaq1ObzMLg7wtEa1QlT9HkykgkXBl4MEincPXwkPEf5la1er03sDCz6Xd/W77wNnUUqoo9Q3B3f/a3Z8fBiS4+1cI5pf/FnA5cLq735S1Yma21cy+YWa3hT/nheVnm9lmM7vTzDaZ2bFZz5WkOgWcY5rzH0XwjWPQXTb4xrGukFrFGJdQLeNxR4MFCLvHshw34Tk8/Mn0GpouTQCvgKTRriH4IjV6LYxr3V3K4i/KB7Q6vZ/lWTGptlwyurr73cB78jjWiJe5+1cHv5jZEuBa4DXufpOZ/T7BTJ/XzuDcVRK3yuYRMeWrCLrRJmp1ej8ZOc5gvMx2olNEJzGrhGpx3WBZu8fSHEvZamOkbFHU7KxmyzNbuDKPz5G63VjPAh4aaonZALyixPpUVaKBxhEBCQQfKkbwLedDYTOsLFR2y1nlpA1IFNSJSJSJEaiZfXCK47q7v26K5426zswMuIlgnMpygkWeBifZYWZLzOwod38gh/M1RdIkRHEtLQMHAX9OMI5IJJICEmmqkbExWVqPJaEkzWKvmeK4DmQNSp7n7neb2cHAu4F1wCczHnNe5JmEaFmOx6qDLeTbHdRoGtQqBdhdxknDgGQjcFhYtALYGM4SUmAyIxNvEu6+ZIqfzHlKwnEquPvDwFXAcxmZhWJmy4C9c95KsigJEXBzq9Pb2ur09oaP6oJJKEGCPAkpIJEZGA1Aypx9s5b9AcnAYWG5zEjuA4jM7DDgeHf/ToZjHA4c4O4/DrtvXkmQH+XLwKFmdk44rmQV8PE86l1X4fTffYNaU0b3O5nchRO3nk9jDab/TkiSJwpIJGcVm/4bN8EgrlxykCgoMbNHgIvd/a/C348ArgP+X3e/fWT3lwAfJltW1+OAvzGzpeFxvg5c6u57zewi4GozOwTYClyY4TxNNC66XxCU9LvtI2MGuw48DLwp9xpK7SWcGq2ARKZSkfxLsfmhCq7HXEl6wzhgZN+DgBcDx+ReI8Ddv+Puz3D30939VHd/ubt/L9x2s7uf5u4nu/t/cff/mEUdaixVdN/vto/sd9vW77YNuIBgILGHj6+dsu9Ua9Q0WMJuGwUkMpWhjK9l519aA+waKdtFw5KDVo3mfxdkpCtglh/OU0f3YQCSOgiZ0Noy7EVpjy3VknQciQISyWDVmPLCWkv63fb1rU4PNPumUApKyhGXYj4Pa1g4pgQSRvfTLHaXIiCBBi/UOA/SDGyddV2kkQbXTdx9ovD7x7Rf1GR6+jbTMOGb6BIWdsNcMim6jwhIAM4Ny8dJGpBIjWmmjRRg0Jobl2cpaf6lBVqd3rpWp7c7XCZid9nLcMh4aimphz1Ef0uIfJNOGd2nWSBQ5ogCEinIoDV3AwtXEWaoPBWtSFw/aYKSXzaz48N/H0bwLfzlZvb0kf3OyqVmMuxigjV/Fqy6G5aLzIwCEinQc4Dr+932ZeFYjjxm31RifIoklyYoOT/8GfaGmH3Vp5yjig+4SpLrZECzb2pEAYkUbF+gMJp/KYPKjE+RZJIGJS+caS1koqoOuIrJdbITuIWUg2alOhSQSAlmESik6vqW8iUKStz9X2Zdkabrd9vW6vTuo4FryfS77SPLroPkTgGJFG0WgUJu41OkGBroWqxEAUmr09tKdbpn5k7MTKRhje2eVAuJlOiHeR8w5/EpUgAFJQVJuY7KYL2aa1j4f/RIv9s+ON+aZReVEjrcVLsbQYKABJJ9aNeOAhIp2UxakXMcnyIFUFBSXaPr1wAc1Or0Hq5SYBI35W5ktzpNw5vLKdApAhJla5WZGfmCM1CbLzWSnW4u9XPQjI477Xo1Uf21ceKm50mJ0gQkNLjrSipheM2bgbLWvpESKCiRImkaXsWkDUjUSiIl0peaOaAbTA2F6ZInpX9Pq4iMrpqGVyEKSKRm9KVmDmhMSTVtI3ql32Hntjq9G6Jyf7Q6vfNJmGgt4cDOvGgaXkUoIJEa0peaOVDJoMTMjgY+AjwReAT4JvAGd7/PzBy4Hdgb7n6Ru99eTk1no99tr0w4W2dRMBEGJB9hfyvYCuAj4SDT60f2LTIgATi5wHNJDM2ykZqq5JeaqNmHGpQ7varecBx4p7s/yd1PA74NXDG0/Tnu/vTwp1EBCbA74/M/xOL/1yVh+aiiZ5rM5cyWClJAIlW1nv1fOEfdXGRFkhiafTjoWtKg3IwqedNx9wfc/cahoi8wuTujKbK2XsXNzpnVrB2pkbCVZBIFJFKKsIUhrpvmLwusSlLjFvyTKVSy+2aYmS0B3gh8eqj4RjM7APg74A/d/eFSKidSIwm7bRSQSGnCpTgOjNkcV16YiK4aLfiXszrcfN4L/BQYNIctd/dnAs8Hngq8tayKidRF0nEkCkikZJVdGyymq0ZyVumWEjO7kmBwZMvd9wK4+93h40/M7P3Ab5dYxbJFDYZ9hOiumkdmXBepqDQDW2ddF5G8pJllmBN1yRSgskGJma0FzgL+26B7xsweAzzk7g+G3TcvA24rsZpli/qgeZjooGRWXVyb0ADWytJMG2miMCDZyP7lOAbrhS2aZZjyuONm0qhlpACVvAmZ2anAW4DHATeb2W1m9kngycC/mdlmYAvwM9R9M+qIFOWTUshPFOZJyXycCmlMa4ECEmmwtSxeH+ywsHwqCWbSpMmT8uC09Zh3lWwpcfevEX8zPb3IujRZv9s+L49cJaMJ3FKuiFw1jVgBWAGJNNzylOVJjJtJcxlBnpSka30dmqEec003o3pLMr1zrH63fV6/227EB7EEFJBIje1IuN/2lOVJjJ1JE3bjrEeZZWeqki0lkpg+UPI3bppf5SkgkTrrd9vHJGxpXcPCMSUAu8LyRCLGjzjR7519QUgYmFxW89bgSpv3m1LSqFzmx3fLrkBGCkik8cLBrJcQrBPm4eMlSQe5xowfiXvvVDK9fVPNe0tJFefEP1R2BdJKubhb1WXpky6VsrVK3YXJ0xIJA5BpZ9rEjR9xgm7xWq1jU8L06JmZ96Ckig5Js3PWgaqtTi9uCnHS5zcpIKklddlIgxT1RTGui9b63XaSz8XdVOTzc1bTo8uiG1T9lRaQhBSQlChNUKiARGSfuDEhSceKVCIgCeU+PbpMVfrDSvG0SF+NpWyl0sA8qb2RAabb+912VRdq3VnguWYxPXpqWbuSFJRUkEZ2yyRpAxK1kkgDLW91etsGgcmEbKyj4t47ebX8/lxOx0liO0GXTVR5ofLoSlJQInMtIqqvPAUkIvsshwWzaQYG2ViJCUzipv6PzUEyFPhMcn+CffKSeXp0jsZ1JSUKSnSzkqxq26ozFNWvIPiQr2pT8D4KSEQijcvGGiVumm/s9N+IacTjFNZSknV6dM4ydyWppUSyims6rIOoqL6yFJCILDahuzsy1xPS3wAAIABJREFUgOh325e1Oj1I3t0DcGmKaqWaRZlVxunRecrclaSgRLKqbV4P6ld3TfsVSSe2O2aQnTXFsVKNN2l1eltpQN6QlDJ3JSkomSOtTm83GZIBReRE2US9pwTXppVHidFEplJmNtYVQ4+1zRuSRr/bvj5sgdLsG0lk0uCvWDFJ2jKtLlwBa4Dryq7EJAm7bRSQSOMNFg9NOENxS4WysR4GXNfq9D5MTbLETitrV1ItgxIzOwW4BjiaYJTzxe7+zXJrVSuDpbjTmFkAUmJW2D8v4ZypJP3bKCCReTDUJZLE6a1Ob12SAKDANO1TfzGsi6x/y7reyDYA6939FIKlpK8uuT51U5lVcEtOU1/FtY/2SZM+ftZ1EamIwUy5pCYOTo2ZhbcxLJ+VJNOKayePv2XtghIzOxY4E/hoWPRR4EwzO6a8WtXO2Ln4BavzmJSZ0Xo2IrlI8h4qI017Zb4Y5izz37KON7MTge+6+x6A8PHesFyS0VLc1aeARKQYZaRpr9IXwzxl/lvqhjZf9gDrm9qXOWcUkIjkIy6HxiwzPDf1i2Hmv2UdB7reDTzezJa6+x4zWwo8LiyXMSKW5HYSzOoIHy8geqZKkmNMOn5ZXTg7mG5cSdljOBSQiCSzKcE+SXNr5HGvSpKkrc4y5ymp3Y3N3X8A3Aa8Kix6FfAVd79vmsPlVrHqiHtNF4wWhB9s4/4G+z78wtHTF7AwlfEFMcdIvCx4gjokOe5UTaH9bvsYgsBk2I4J9SkqIIj9GyogkZLN6r65Z8Kxt7Pw/jNpJd5N/W77vEknTZqmPcW9agewZaRsS7/btn63fUCDA5JcUt6be/0+l83syQRTgh8D/JBgSvAdCZ63ErgLOMndt0Ihsz8Gf+Dhc3i/217S6vR+xsLWqt39bvvAqINE1DP2w6nA6W2x0tQ35XF3s3CQ2J6IFqBaibouYXZ/Q5GkUlybaelalki1DEqmFfcGEymTrkupKl2bUjRFqiIiIlIJtW72nsKg2f8EM6XHkFzd4+67p3yurkuZJV2bUkWR1+W8BSWPDR8/X2otpIlOArZO+VxdlzJLujaliiKvy3kbU3Iw8CzgewQjvU8geLM9D7inxKrNgl5bsab+NhpxXQ6r4mudRHUuRtI6z+LarOPfa5Kmvaaqvx61lLj7w8BNg9+HmiPvadogLr22+hi9LofV8bWqzsUoos5x12Yd/16TNO011fX1aKCriIiIVIKCEhEREakEBSUiIiJSCfMelPwIeFv42DR6bc1Qx9eqOhejzDrX8e81SdNeUy1fz1zNvhEREZHqmveWEhEREamIuQpKzOwAM1tpZnM1FVqqTdelVJWuTSnaXAUlBMlk7gofRapC16VUla5NKdS8BSUiIiJSUQpKREREpBIUlIiIiEglaPBSAq1O73xgLbAc2A6s6Xfb12fdV2SScdeTrjURqZpWp7cOWAUsJVjEcUO/274s6fPnKk+Jma0kGLR1UtIFisIb/0bgsKHiXcAlox8AafYVGYi7LsddT+G/da3JTE1zz5T5FQYkqyM2rU8amKj7ZrK1LLzxE/6+NuO+IpOMu550rYlI1axKWb6Ium8mW56iPM2+IpNMcz3pWhORsixNWb6IWkom256iPM2+IpOMu550rYlI1exJWb5IaUGJmR1tZp8xszvM7HYz+4SZHRNuczPbYma3hT+nDT2vZWbfMLNvmdlfm9loE3be1hD01Q/bFZZn2VdkknHXk641EamaDSnLFymzpcSBd7r7k9z9NODbwBVD25/j7k8Pf24HMLOfIxjc13L3nwd2Ar8zy0qGgwYvAbaFdd5GzGDCNPuKTDLuetK1JiJVEw5mXc/+lpE9pBjkChWafWNm/x14o7v/kpk5cIS7/3Rkn5cDr3b3F4e/PxO4xt1PTXiOlWgkuVSMrkupKl2bUrRKjCkxsyXAG4FPDxXfGHbdvMPMDg7LlhN8IxzYDpxYUDVFRERkhioRlADvBX4KrAt/X+7uzwSeDzwVeGtZFRMREZFilB6UmNmVwMnAr7n7XgB3vzt8/AnwfuC54e7bgRVDT18O3F1cbUVERGRWSg1KzGwtcBbwq+7+cFj2GDM7NPz3AcDLgNvCp/w98CwzOzn8fRXwsWJrLSIiIrNQ5pTgU4G3AI8Dbg7Hj3wSeDLwb2a2GdgC/Iyw+8bddwKvB/4/M/sW8CjgyjLqLyIiIvkqLaOru38NsJjNp495Xg/ozaRSIiIiUprSx5SIiIiIgIISERERqQgFJSIiIlIJCkpERESkEhSUiIiISCUoKBEREZFKUFAiIiIilaCgRERERCpBQYmIiIhUgoISERERqQQFJSIiIlIJCkpERESkEhSUiIiISCUoKBEREZFKUFAiIiIilaCgRERERCpBQYmIiIhUgoISERERqYQDpn2imT0a+GXg8cDX3f1vc6uViIiIzJ2xLSVm9hIz65nZsSPlZwJfAz4C/AnwaTP7BzM7MOmJzexoM/uMmd1hZreb2SfM7Jhw29lmttnM7jSzTcPnH7dNRERE6mtS980rgBPd/Qcj5R8CHgt8FLgc+EfgF4FLU5zbgXe6+5Pc/TTg28AVZrYEuBZY7e6nAJ8DrgAYt01ERETqbVJQchbwz8MFYSvJacCn3f1Cd18HnAfcShDEJOLuD7j7jUNFXwBWhOd8yN1vCss3DB133DYRERGpsUlByXHAt0bKnkfQyvGRQYG7O/A3wFOmqUTYAvJG4NPAcmDb0LF3AEvM7KgJ20RERKTGJgUlFlH2rPDxppHy7wOHT1mP9wI/BdZN+XwRERGpuUmzb7YBzxgpex5wt7v/x0j5o4AH0lbAzK4ETgZa7r7XzLYTdOMMti8D9rr7A+O2pT1vlFandz6wlqBFZjuwpt9tX5/HsUVmTdevyHxq0nt/UkvJDcAFZvZiMzvMzP4HcCJBN8uoMwn+GImZ2VqCcSK/6u4Ph8VfBg41s3PC31cBH0+wLZPwP3UjQdBj4ePGsFyk0nT9isynpr33JwUl7yLoVukBO4E/BX4MXDm8k5kdArQIZsMkYmanAm8BHgfcbGa3mdkn3X0vcBHwPjP7JvAC4M0A47blYC1w2EjZYWG5SNXp+hWZT41674/tvnH3/zCzZwG/C/w8wbTdrruPtog8G/hXUrRauPvXiB6zgrvfTDDDJ9W2jJanLBepEl2/IvOpUe/9iRldwwDkNyfs8y/Av+RVqZIsGK8yUi5Sdbp+ReZTo977WvtmvzXArpGyXWG5SNXp+hWZT41671uQYiRmo9kfjHmuAw8CdwGfdfcf51y33JnZSoL6nuTuW0e3N2kEs9THpOsyKV2/kre8rk2ZrSa99ycFJXsTHMOB/wR+y90/kFfFZkFvMKkiXZdSVbo2pWiTxpS8cML2w4GnAr8BXG1m33H3f57wHBEREZFFJs2+STJ49TNm9hfAFuC3GVkrR0RERCSJXAa6uvtPgA8TTA0WERERSS3P2TfbgUfneDwRERGZI3kGJScCP8rxeCIiIjJHcglKzOwI4NXAF/M4noiIiMyfsQNdzez5E55/GPAU4BLgBOB1OdVLRERE5sykKcE3EuQhGccI8pRc6u7/mEelREREZP5MCkrezvigZJDR9R/cXeNJREREZGqT8pT8YUH1EBERkTk3cZVgADM7BngCsMPdvz3bKomIiMg8Gjv7xsyWmNkG4HvAzcCdZnZTGKSIiIiI5GbSlODLgNcD3wc+AdwOPAe4esb1EhERkTkzqfvmYuD/AGe7+04AM9sIvMbMHq3BrSIiIpKXSS0lTwL+chCQhN4LLAVOmVmtREREZO5MCkoOB+4dKbt3aFsmZnalmd1lZm5mTxsq32pm3zCz28Kf84a2nW1mm83sTjPbZGbHZq2HiIiIlC9JmvnRPCWD3y2H838KeD6wLWLby9z96eHPDRAMvAWuBVa7+ynA54ArcqiHiIiIlCzJlOBfNrPjh34/jCAwebmZPX1kX3f3P0t6cne/CcAscXxzFvDQ4HnABmAr8NqkBxAREZFqShKUnB/+jHpDRJkDiYOSCa6zIFq5CVgTDqpdzlCrirvvCKctH+XuD+R0XhERESnBpKDkhYXUYrHnufvdZnYw8G5gHXBhSXWh1emtA1YRDPDdA2zod9uXlVUfmS+6/kTqS+/fdMx90np7BVTCbCvwYnf/asS204BPu/tJZvYs4EPu/rRw2zJgq7v/XMLzrCRYq+ckd9+a5DnhBbU6YtN6XViSh3HXpa4/KdM090zZT+/f9CYOdDWzw81s7Ie+mf2cmWWejTN0vkeF/zbglcBt4eYvA4ea2Tnh76uAj+dx3jFWpSwXyVPUDQ1gdavTi+pWFZGStTq9ba1Oz4l//+rzI8akNPNPAn4IrJlwnLcAD5jZE9Oc3MzeY2b3ACcAnzWzrwHHATea2RbgqwT5UC4FcPe9wEXA+8zsm8ALgDenOecUlqYsF8lFq9PbPGGXjQpMRKql1eltIxj/OI4+P2JMGlOyCrgPeNuE/f4IeHW4/+8mPbm7Xw5cHrHpGWOeczNwWtJziNTY6RO2HwasBa4voC4iksykgASCsSUSYVL3zS8B/9vdH/7/2zv3eDmqKt9/f0R5OaBCQEEwAeT9EAGvXkHFAfGjd849iHoRRAwgDgoqepzREQV8ZfyoZ+QiCSiIRl4+kcNhUBGFO6CMoogRVOQVAoJCBAR5BJOs+8fenVTqVHVXdVc/qnt9P5/+9Dm7du9aVbVq16q191q7WSUze5IwjHJQVYI5jlOIIh2g4ziDxVn9FmBQaWWUbAPcXLCt3wGlhm8cx+mYpf0WwHGcwqzEJ7k2pdXwzTrAqoJtraJYhti6sZTst1F/GDjdZjGth3DmjE1MPQH8DdiUoJdbkT9m/QSwQarMwxQdp03GJqZWsXaGcyM74/nS6cnxOb2Rqr60MiLuA3Yp2NYusf6wsXXJcsepii0L1lsfmE3oCOfQfBJd2iAh1j8+hi86jlOQDIOE+H8614YbJAVp5Sm5Bjhc0slm9re8SjFk+HDge1UKNyDk5cCvYu2fwsRIjORb8+LpyfEX9lIGp+fM7vH+jgPcW+I4xcl9PkxPjvf0GTEstPKUnAFsBnxX0iZZFSQ9G/guoQP9QrXiOZBpkADsUSBk1HHK4GGKjlOQ6CVxKqapp8TMfiHp48ApwJ2SLgZ+DTwCbEQI3T0Y2Bg4xcxu6LK8o0revIJW8w0cpwwepug4BRibmFpJj73lo0LLBfnM7GOS7gY+RchFAmtP5PkT8D4z+0p3RHQcp0d4mKLjFKPVKEP/12+pKUVWCcbMzpV0HrAvsBvBM/IIIePqT8zs790TsV743A+nD6yk+NBLVmSAR984TgFyJrbOYHpyfBgjUXtCIaMEIBoeV8ePk0GzuR8dGiZ5oaGLO2jTGR7KzAVJd6ieM8FxClDUIMH75Y4obM1JepGkvMWFkHS8pD2rEau2dGXuRzRo0oruHhgnSbvuYl8YzHGKUcQgMe+XO6Owp4Qw2XVdYEHO9tcCBwCHdCqUMxNXdKcFoliytTQeceM41bBqenLc76cOKWOUvBg4vcn2/we8tzNxHMdpk5XNDNexiakVZBsgHUfcxJWK5xMyHy8FPjw9Oe6LBDq1J6XbuXhOkuooMxlnNvBgk+0P0/tkT70gzy2eVZ43luhjjE47lBmSaRU5k7e9o4ib2GmfTcgk28goe3Ysd5zakqHbeXikTYWUMUruB3Ztsn03mhstdSVvjZsZ5T73w6mSOIO/VYdnFJisGrcvYI1npKqFweYDG6bKNozljlNnsnQ7jXmkTbWUGb65Eni7pLPNbK2VgyXtAhwDXFylcANCntsus9wNEKdKquzwogFSdaRNqfvDcWpEng67IdJFyhglnyRMYr1e0rnAjbF8T+Bo4CngE9WKNxAsJbjvssodZ9Tx+8MZVly3+0CZPCW3SzoA+CrwrtTmm4GjzOzWCmUbFD5MGFdMuvEej+UziCutHkeYVOhJqZy+0gN9LHV/OM4gk7pfVgErWPs56brdZUq5oMzsF2a2G7AXcGj8vMjMdjezX3RDwH4TowiOBe4ijN/fBRybFV0QFfp41kQ5+JLwTt/ohT6WuT8cZ5DJuF/WIRgkj+K63TNk1p+Jw5I+B7wBmAvsbmY3xfIdgEXApsBfgCMbHphm2wrucy5wJ7CNmS2p6FBW0yzscnpyvMxQWVbbHnY5pDTTy06uezf10RkNut1nDgrxPrsgZ7PfLz2k9GQdSdtJer+kM+Ln/ZK2a2PflwCvIFifSc4CFpjZDoRogS8W3DYI5CXO6SihjoddjiYVXPeu6KPjDBOJ+ywPv196SCnrT9IngA8x8yJ9RtJ8Mzu5aFtmdm1sM9n+5oShoVfHoouAMyRtRuiUM7eZ2QNljiOPChbTy1sYrdMEVc3CLt1bMrwUuu4Z80Zupnn4fscJ0xyn7uSsVZaF3y89pMzaN0cDJwE/Aw4Gto+fg4HrgJMkzetQnq2BP5rZSoD4fW8sb7atY5otpleima4kqMLDLkeVltc9Z97IHjR/u+tUHx2n1pQwSMDvl55SZvjmeIJBsr+ZXWpmt8fPpcCrgJ8D7+6GkD2i48X0upigqnACN2eoKHLdyyyoV5U+Ok7dKdqv+/3SY8oM3+wM/JuZrUhvMLMVkr4O/HuH8twNPE/SLDNbKWkWsGUsV5NtA0OXElR52OVoUuS6Fx7v9sl6jlOYx/FIm75QxlPyFPAPTbZvFOu0jZndT0jKdlgsOgz4lZk90GxbJ/usAx52OZoUvO5Fx7t9XNxxiuH9ax8p8+Z0PfDPks4xsz8nN8QJqu8gDO8UQtLphAyxzwWulPQXM9uV4I5eJOlk4CHgyMTPmm3rlLxl3wdiMb14g/hNMmIUuO5nEYZWW+Hj4o6zhtz+3pcK6S+F85RIegXwI0IimS8Dv42bdgWOInhKDjCza7ogZyW0irmvIPrGcUrTaS6IJtE3nlXY6YhhzlPi/f1gUip5mqQx4AxmRrwsBU4ws8sqlK1y2r3BPHW8003q0PH7PTCa1EE3W+G6Wy/KppmfBrYBXgK8OX7+B7DtoBsk7eKp451Rx+8Bp6647taP0hldzWyVmV1vZt+Mn1+Y2apuCDcg5IVclgnFdJw64/eAU1dcd2tGaaNkBPFU3c6o4/eAU1dcd2tGbvSNpDvaaM/MrJ11cAaZbqWOd5y64PeAU1dcd2tGs5DgpYTcCKNOXsilh1g6o4LfA05dcd2tGaWib+qOR984g0gdIhz8HhhN6qCbrXDdrRdulBRgbGLqEUIelgaPTk+Ob1ypcM7I0kwvxyamfgAclCgyYGH82ztap6vUySjxfno48ImuLchQdICNYrnjdI0MgwTCGlDH42GOjrOasYmpVXg/PRQ0m+j64zbaMzM7oAN5BpG0orcqd5yqSBskrTiO6heDdJyBJhokytns/XTNaDbRdVt8oqvj1AkPc3RGkTyDxKkhuUaJmc0t25ik9TqSZgjIcbk3WDo9OT6nzXZ9spbTiswwx7GJqcOB+cDzCVF1H/YVUJ26MzYx9XfKLSrr1IBK5pRI2lvSQuDeKtqrKy0MEoDnj01M3dVGu54q2SnCjDDHaJCcDcwhvFHOAc6O5Y5TS0oYJI92WxanWto2SiRtIuk9km4Efk54i3+gMskGh7whrKzyInMAnt+GDJ4q2WnFghzP2Xxgw1TZhrHccepKEYPEPPqmfpQ2SiS9RtI3gD8CnwfWAz4G7G5mO1UsX9+Znhxfh5kGiMXyXuGpkp2mNBnKyzOC2zGOHacu9LqPdiqi0HhcjFU/GngbsBWwDPg2cDhwkpld3CX5BoIBUG5Pley0y1LCkE1WueMMHdOT4z7xtcY0NUokvYVgjLyS8AC8DHg3cDmho3tLtwXsNnGOR/Ktse3JqMAVtB7Caedh4KmSR5NlwOwiFccmpoxs3f0wYU5Jcgjn8VjuOLVhbGLqAVrfDyt6IYvTPVp5AM4jGB8nAlua2RvM7FIzG4oLn2GQQJuTUSOLaO69aMvgia75BYm2V5I/h8AZHt5LxtBhk/ozdDdG2RwL3BV/exdwrEffOHWiqEEyPTn+9F7I43SPVsM3y4G5wDjwkKSLzeyJrksFSFoCPBk/AB80sx9IeinwRWADYAlwhJnd3+Zuqh5vn0/2MMtd05Pjc9tsE1htmLgRMlrMZ2YOBhEMizzjdobuRgPEjRCnzuQaJD5cM1y0Mkq2AI4gDOGcByyU9G2CR6AX4b9vNLObGv9IWgc4H5hnZtdK+gjw6Shf1yiRI8QnFTpV4vrkjCwFvSPOkNHUKDGzh4EzgDMk7QUcAxwGzCOE/xrwzC7LmGRv4Ekzuzb+fxbBW1K5URLH6BuLnyXnczRyhGRFPKwAstyHQzHc5fScPH1q+mYYdbcMfweuAg6gYHI+T+bndJMWqeOdIaZwVImZ3WBmxxO8J28Fbo6bzpF0o6SPSNq1YvkukLRY0kJJzyK8Ia4eMzezZcA6kjZps/1Wk04bi59lkVWeN57p45xOO/RKb55OmKBdKDmfJ/NzuklJg2RZN2Vxek/pFL1mtpwwPn1hKlT448Cp7bSZw8vN7O6Yuv40gsfmuxW1DcD05PicnMmuhUi9kQ7MOkGeVtypiLwF/pol8zshI9umT0B0ClHWIJmeHN+sm/I4vaej/BtmtsTMTiZMhn0dUFm+EjO7O34vJwyh7Esq54Kk2cAqM3uw3f1MT47PqWii1EC4Gj2tuFMhZZP2zcpJ//20WO44uRQ1SKYnxxU/bpAMIZUkBbPA983s/1TRnqRnSHpm/FvAm4EbgV8CG0jaL1Y9DvhWFfscIjytuNNt8sLeV5LvKfWF05xWFHmx8+GaIaffmUrzeA5wtaTFwE3ADsC7zGwVYT7LmZJuJSR1+1D/xBxIPGLD6TZ5Sfs8mZ/TTcy9I8PPQBolZnaHmb3IzPYws13N7E1mdl/c9lMz293MtjezV5vZnyva7bCkbM+bvOtpxZ2yZN4TnszP6QO+ls2I4C7VNeSlcjeKzxfJq7u4XaHawNOKDw9ldG8V2S8Zy6YnxzdrkvNhGfANSi5j0CSZ3wqy+xUPi3dmkAotz9N3N0hGCL/QkSZvf5mrBOc0s5CZBsji6cnxF1YmaAs8rfhQsbBgvWXTk+OzmDnevjo6IX5nbq/S8xGjbNIGiEffODPICC13g8RBZgMTydp1YgjzncA2ZrYEMmd8z7gJUtZ8M1YCf6T1/I2BudGKHH+b7f4a2CNR1FPjrE5k6SXA2MTUClrrXK9ZSfCg/JQ1YefNvDmNDkYkkqxlvCE36uS1sRB4ORk61SqRW8b2m4Hdm+wvM9S0pMwNuZcSvJQvayZjRvsN8uoeTshuXfm9myRPNzulRaTNyunJcffijygjbZQ0uTFW39wJa75q+m6YFDn+NttNGyQN3DDJoIlRMqw352Ky9aMd8lZSXpAwftq5f9cyTDrsB/KGtFZ7owq0n6ybZZA0qLRf6YZRUiT019ezGV0G4m29j+QpfrK8GwZJs333kiLH3w55D5yqHkROvalSD/LWRjku9d1pu+22A/lz947L+btV3ayFGhsMQr+SS8FcJMMSdOC0wagbJY7jDCezUt9VtVcls3L+blW3luH9JbK1emj5COPjdjkMgus8a74HqbH5vgjmOINPctJuFQZFVe2k2yzafrLuWpmt60AJg8RDy0ecUfeU9NPwaLrvnJu48X9VC6DlydDpeckLge5laHStidd/WKlSDx7NKf9R/G73rTvdbidv73nX8qycv7P4UeLvD9O9e7dyShgk5gaJM+pGST/HX1vtu4hsnYxzQ35n2dEDMU5m7Wto9BAw0HMD2qQRavxC1g5BNpo/TC3Wn6FTQN66VztCbqh/EdZqN6OdMg//BzNkWMsjkGg/jx0TdS8EfphTr2gYeU8oaZCM+vPIwYdvBo6xialHgI0KVp+VM8RTdGXgUguulQkfdgPESXHX9OT43MY/TZKvlaKJR2n1vIv0vgoOzc6Yt5HRTtEH7qZFjjdGC70rp820PAfkNJO3snPPcYPEaQdXhAGipEHSIGuIp+jKwM0WVkvLljmcNOTDDE51dGsORLeWVSjy+6L7+EsF+02Xl13Buae4QeK0i3tKBouyBkkzNgQuGJuYuoD8Gz8vtX7W+HapEMRuJWUbIcqkmB9lCi+rMDYx9QPgoILtzhmbmHp8enI8veJ2q313StHjyZsY2/dwWjdInE5whRgN8jwah+bUzysvhHtVKmHkDJKxianDxyamloxNTK2K3608fYWXVShpkDTYYGxi6vEW+/4KreeXbFp0hyWWicjruwc1IWMaN0icTNxT0pzHqfYtaC16HHac1VHkJZ6aHWVrt+OoZWInp39EAyTpIZjDGk/fFdOT46/J+218YM+YPxXbLJIKvxkbtNj+TwXaLjWUlHc8KQbuHithkOAGiZOHK0ZzumaQ1ISkd6M2IYjOQNJKT+aTf78dFD0dhUkYOXPo7oO6SCKzy9rxAtWJMgYJ3mc4TXBPidMKQXiz6cU8kVb78LkqtWW1t6DNoZSDUp7FGYvmtdluYVKel8ZCe8uB9Vv89EjgKNb2Ap09NjFFgQi5LDlKGWjdpqxB4ver0ww3SpwyHMHMTrkyms1FyTGK1tpepSxO5cypeLhydq+GP3P2M4f8RfHSZE1gT05Ez1tUEOCK+F3U2OqpF8INEqdq3ChxChHfEhexRmfmAIvGJqageOec13arN1ylvvO2V0KLjvap6cnx9arcn1NbqtK7PIMEynt+ejanxA0Spxu4kjhFOYuZRuzTgAvorkHSUwp0tOuOTUwt75U8zlAwdFFnbpA43aKWnhJJOxDe2jclJCY60sxu7a9Ug8/YxNQK2l/Ir8ocKkkKGSTdctWX7FwbrNsNWZyhZRgfyG6QOF2hrspyFrDAzHYgrBfxxT7LUxeqWshvKGjTIHGckaZQeuxeAAAS10lEQVREviE3SJzS1E5hJG0O7AVcFIsuAvaStFn+r5wUnS7kNyy4QeI45fHkaE7XqKPSbA380cxWAsTve2O5U4wy62N4TgHHccrgBonTNq44o0mZ9TEa+SWGbrKe4ziV4waJ0xF1VJ67gedJmgUQv7eM5WUZVS9AY8G9VsefXAjszJw6Zc5hVt0qMsW2ex17/btB24czfPRTN90gcTqmdgpkZvcDNwKHxaLDgF+Z2QNl24o30CB1/kbn8jRrYyWwoBF90+T4ZywEFn+zgDVelkZbWW1kyZDZYeX9PpavSJWvKNpuEUrIXsn+yjCAuukMPv3UTTdInEqQWf36PUk7EUKCnw08RAgJvqXA7+YCdwLbmNmSLoroOIVxvXQGFddNp9fUMk+Jmf0eeEm/5XAcx3EcpzpqaZR0QCPqZCvJo0GdSrnHzNLDTUVxvXS6ieumM4hk6uWoGSVbxO9r+iqFM4xsAyxp87eul043cd10BpFMvazlnJJ2kbQe8GLgPsJEza0IN9vLgXv6KFo38GPrLW2/jWboZZJBPNZWuMy9oajM3dDNOp6vVgzbMQ368binxMyWA9c2/k+4I+8Ztklcfmz1Ia2XSep4rC5zb+iFzHm6Wcfz1YphO6a6Ho+HcDmO4ziOMxC4UeI4juM4zkDgRonjOI7jOAPBqBslDwMfi9/Dhh/bcFDHY3WZe0M/Za7j+WrFsB1TLY9npKJvHMdxHMcZXEbdU+I4juM4zoDgRonjOI7jOAPByBolknaQdJ2kP8Tv7fstU7tI2lTS5ZJukfQbSRdL2ixue6mkX8fjvELS5v2Wt10knSLJJO0W/x+aY8uiLjoqaYmk30u6MX5eE8sH5vpI+pykO5P6E8tzz3G/z38TmTPPd9zW9XPe7/PSDnW8/s1ot88fpHsyFzMbyQ/wY+CI+PcRwI/7LVMHx7IJsH/i/88CXyYYnbcB+8XyjwDn9lveNo9xL+B7hLTEuw3TsTU55lroaOOapMoG6voA+wFbp2Vtdo77ff6byDzjfPfynPf7vIzK9W9xPKX7/EG7J3OPrd8C9OmCbk6YkTwr/j8r/r9Zv2Wr6PjeAFxJSA99U6J8NvC3fsvXxvGsB1wHzE0YJUNxbE2OuTY6mmOUDOT1Scra7BwP0vkvYZR0/ZwP0nkZletf8Lha9vmDek+mP6M6fLM18EczWwkQv++N5bVG0jrAO4FLgecDdzW2mdkyYB1Jm/RJvHb5OHC+rZ0qeViOLY+66egFkhZLWijpWdTj+jQ7x4N+/tPnG3pzzgf9vJShztd/NSX6/DrckyNrlAwzXwD+BpzRb0GqQNL/BPYBFvZbFieXl5vZCwlvYmJIdG+A8fPtJBmqPn9UjZK7gedJmgUQv7eM5bVF0ueA7YFDzWwVsBSYk9g+G1hlZg/2ScR2eCWwM3CnpCWElS9/ALyA+h9bM2qjo2Z2d/xeTjAe96UeutfsHA/s+c8539Cbcz6w56UNann9k5Ts8+twT46mUWJm9wM3AofFosOAX5nZA/2TqjMkzQf2Bg6OnRXAL4ENJO0X/z8O+FY/5GsXM/u0mW1pZnPNbC5hCe7XECZ21frYmlEXHZX0DEnPjH8LeDNB7oHXvWbneFDPf5PzDT0454N6Xtqhjtc/SRt9/sDfk8BoTnS1MMlnJ+BnwB/i9479lqmDY9kVMOAWwo10I/DduO1lwG+AW4EfAs/pt7wdHusS1kxUG6pjyzjWgddRYFvgV8Bi4GZCJ7fFoF0f4HSCQbsC+BNwc6tz3O/znyVzs/Pdq3Pe7/MyKte/xfG01ecP0j2Z9/E0847jOI7jDAQjOXzjOI7jOM7g4UaJ4ziO4zgDgRsljuM4juMMBG6UOI7jOI4zELhR4jiO4zjOQOBGieM4lRNXY/1qv+WoGknz4rHt329ZnLWJqydfnSq7OiZddGqCGyUdIGn/2EElP3+TdIOk90l6Wo/kaOz7piZ1bmzU64VMRZB0gKRvSrpb0nJJj0r6paRPSdoqUW9e6hyvkvRXSddKOjLV5ldjnbk5+2y0Na+rBzeE5Oh78rOi3zI6w4mkZ0t6IurZW/stTx6S9ol90B1R3sck3STpNEk7JerlPTt+Kem9jUyyse6pzQzhRFunpsqfK+lzcf+PSnpE0q2Svi7pkG6dg07pyUNzBLgIuJywDsVzgSOB/yCkR39Hj2R4EthV0ovN7PrkBkl7Ay+MddbvkTy5KCwg9UXg7YQFoi4kJPNZl5Ch8HjgWMJKnUlOB64nGNNzY51FkrYys/k9Ed6BNfqeZlWvBXFGhrcQVgu/EzgaOK+/4sxE0inAKcAyQp/2W0JftStwKHCCpGeb2aOJnyWfHVsC84DT4m/afnZImgP8HNgYuAA4M256AfAq4Cjg4nbb7yZulFTDDWZ2fuMfSQuB3wNvl3SS9SY18TXAXgRluz617WjCjXIDcFAPZGnFqQSD5CJgnpk9ldwoaYJwc6e5xsy+naj3FUJGww9K+oyZ+Zt6b1hL3x2nBxwDXAVMAadJ2tbM7uizTKuRdDShX7sKeL2Z/TW1/V8JfZpSP00/O84Efkd4dnzUzP7cpkgfILzUHWxmUxnyPrfNdruOD990ATN7DPhvggJu1yiXtIWkMyUtlfSUpHslfUlS2iOApF0lfT+6/x6UdIGkzZuM1T9FsIgPk7R+op31COs2XAD8PUveonIl3Ii7RHfkfZIel/QjSTvGOofE4asnFMZ435FqY3PgXwgekqPTBkk8fw+b2fsyT+7a9e4mvI1sDGzWqr7TXyQdKunSqGfLJS2TdImkPTLqLlGYD7CXpB9H1/aDkhZl6OX6UTdvifr4sKTfSPpsRrsHSroi1nlS0mJJx+XIe6yk30dZb5N0IjMfKk6XkbQXsCewiOCBWEF40eqkzVdI+qHCMPATsc86JqfuCyR9RdI9if5xKnqgkbQu8CnCSr2Hpg0SADN7wsw+ZGaPNJMrbr+OoGfbdnCI28fvH+Xs508dtN1V3FPSPRrGyIMAkp5PULZ1gS8DtxNcae8EXiVpn4YyS9qG4PlYj7Ac9d3AGPD9Fvs8F3gP8HqCF4L497PjthlDHGXkSrCIcAPOJxgDE8APJH0U+AzBVXgu4e3mi5J+a2bXxt/+L8IQ0tfM7MkWx9OUaHA9n9BJPdxJW04pNlRYYTTNUy063ROAvwBfIqw/sh3BRf0TSXuZ2a2p+lsROtXvAN8meAKPBvaJw5SPx3oLYvnXCMOmTyN0yv+YbCwayGcRXhg+BTwGvBo4U9J2ZvYvibonAp8Hfg18GNiQ8PZ5f5Pjc7rDMYT+5jtm9piky4C3STrZwsq4pZA0BnyXoIOTwKOEhQ3PiR6YkxJ19yHo4NMJ/eNNwCaE1ctfRljkbl/CsP15nXrFJYnQ/0LwbrfL7fH7WEmnWZ3Wk+n34jt1/gD7ExZFOhmYTXhA707oJA34WaLuFKFD2yrVxj6Eh+qpibIL4+9flSgT4UYy4KupNgy4LP79S+CKxLYrgF/Evy8Ll3yt35aR69S4r2kI6ybF8vfE8keArRPlmxHmsVyUKJuMdQ8pcZ7nxd8cFc/z5sCLgUtiebL9r8ayuS3amtdv/anbJ6HveZ/LUjqZ1tNnZLS5M7AcWJgqXxLbODFV/r5Y/qFE2YPA5S1k3yLq4oUZ2/4vsBLYNv7/LILB8ltgw0S9rQgPRwP27/f1GIUP4QXmoaQuAePxGrw2Q2euTpVdDSxJ/D+L4KV9GNgyUb4u8JOoB9vHMhGMkCeBPTJkWyd+vzvK8/4Sx9W4l5LPjj2As2P5dYm6pzbTuURbpybKtgX+GsuXEjzlJwJ79/uatvr48E01fAx4gPBwXwy8izCJaBxAYanxfwIuBZ6UNLvxIdxItxHneihMAh0jGBJXNXZgQdM+U0CWc4EDJG0taWvggFg2gzJypTg9ytPgmvh9qYUhlYbMDxDmfGyfqLtx/G7qxszhXMJ5/jNhEtfrCF6bY9toy2mfLxE8DOnPSc1+ZGFYEwU2jnrW0JGXZPzkEWBhqmxhLH99ouyvhEneuzXZ/RsJnscvJ/U8yjBNGMo+MNY9iOAZWWBrvDGY2T2Ezt3pHYcQjMRFibLLCXrTzhDO3gTv6rlmdm+j0MIw8mcIejAei/ckTDj9ipktTjdka7w0nfRpyWfHrwnHdClwcBttJWW7gxDcsCAWHU7w/P0iDlnu3Un73cSHb6rhS4QlxJ9O8JR8kPBW1Rie2JGg7MfETxaNSVubA/9AmCib5rcFZLmQ4I14G8HSf4o1QzlpysjVrOyh+H1nRt2HgDmJ/xs37kY5+2vGxwkG0CqCy/X3tvZM9jLUx505eNxqZleW/ZGkFwGfILzZPSO1OUt37rDUnCMzWy7pDtYebz+REI3xm7jtKoKhMZ14cOwcv5vJ/Zz43Wi73XvQqY5jCA/teyS9IFF+BfAmSbPNrMwwxzbx++aMbY2yxvVvvEz9qkWbnfRpjWeHEbxzfzCzB9toB1J9mpktIQyZniBpC2A/4K2El97LJO3awb66hhsl1ZDspL8n6VrgWsL49ZtZMznufNa2+JM8UYUgZvaQpEsIwxQCLjGzh3KqtyvXypy6eeXJyYGNXCovIgxHleE3BR6GDXk3zNn+jFQ9pwfEuUv/RejAP0HwjjxG6EhPIxjibWFmUwp5aV5HGOs/kPAwu0bSgdGwaejgkcB9OU0NTDSHs3pu3asI1+4POdWOIOhPP0n2aWUpYuB33KeZ2X0E4+dbki4geE5eR+j7Bwo3SrqAmf1U0nnAkZJOJ3TABqxbQAEfIIxb75SxbZeCIpxLiIsHyIwsiNxWQq6q+E+CB+mtkj5lZssrbr/xxr0z2W+1O6fqOb3h9QTD438nhyUBJG1KmFeSZltJ6ya9JXFy87akvBjxje984Pw4WfDTwL8SXPHfIuTBAVhWQNcbxslOzIxeKHoPOp1zFMEgOZbsieyfJAx3lDFKGtd214xtu6TqNAyhPVu0+RPCpNmDJW1qZn8pIU8Rkn1aVn6gsn3afxOMkud1KFdX8Dkl3eMTBM/Bx6OSXg4cIuml6YpxjH0zADNbSZiQuo+kVyXrEDrZIlwJfBT4CDkhYXFfheWqCjO7H/gsIfnZOTGcLr3fjSV9vs1dTBEMrRPSbUvakuC5WkrI2eL0joYXba2QWknHEiIXstiYMD8rybti+SXx97MkPStZIc53arjcN4nf3yQYPh+TtEF6R5KeGQ0egB8S3jqPl7Rhos5WhM7c6TJxbt08gnf0HDP7dvpDGJbeXdKLSzR9A+H+P0qJXB2Snk5IVWCEPgTCHI+bgaMlzTBiYp/cmI9yEmH45huSZgzjKIStz5e0cXpbAX5I8Coem/59/P/tcfuVifL9c/S8MWcRBnQo0j0lXcLMbpP0deAtkl5OCLG9FvgvSV8jdJrrEN76xgnhjKfGn38EeC1h3O8LwD0ERSpkIMRx9E8WFLWMXFVxKiEa4u3AfvE83UaYAb8n8CbCXJiWuUrSmNktkj4N/Btwg6RvECbGbhf3txFwZDT+nPbYS9IROdsuMbO/ZZR/D3gcOE/SGYS5RvsSXMi3k90X3Q6cEiew/pIwSfFogpfk9FhnI+A+SZcSdPd+wryBd8Z9TEOYpCrpncA5wO+iJ/Mu1kTMHUx4U14Sh0A/CnwO+Gm8LzYkeB1vpT03vVOOg4CtCWG4eXyH0Jccw8yEkZmY2UpJJxCGjq+X9CXC/LRDgZcC8y2GppuZSTqK8GL3c0mNkOBnEYYJvw98IdY9NwYWnALcJimZ0XVnQp+2OfDvRU9AQuaHFBJKnkmYN7WIkCZia8Lcwa2B41LD9B8A9pU0TTDE/kow/t9AuI+uInitB49+h//U+cOaUKwP5GzfmfCGeFX8fzbBS/AHwhDGw8BvCCGJu6R+uzthMtdjhJDHCwhK3TQkuIW8M0KCy8jFmtC0uanfzyUVkpbYdjWJkLzUtgMJrvV7CEbIo4SHzyeALRL15sX231ji2hxKuPEeJiSN+1Pc1z791pu6fmgdEmzACxI6mdbTVxAM4EfjdflPYLcsHSGGdxJyk/w43gcPESa0PidRb11CR/9zQg6U5fG35xJDO1Pt7kt4IN0fde7eqCcTwPqpuv9MGHpdTjCaTyQMKXhIcPd1rTH5c/cW9W6JurQBBUKCE+WvJHggHol93q+AY3L2sSNhaPBPCZ25BNgro+4+hPl5d8Z2Hyf0pf+R1EdaPDty5Hg1wbO9jJCuYVn8/8CMui8lBDxcT3gp+3s8T9cB7wfW6/c1zvsoHoBTExQW1FtkZvP6LYvjdAuFlV2XmNn+fRbFcZwe4nNKHMdxHMcZCNwocRzHcRxnIHCjxHEcx3GcgcDnlDiO4ziOMxC4p8RxHMdxnIHAjRLHcRzHcQYCN0ocx3EcxxkI3ChxHMdxHGcgcKPEcRzHcZyBwI0Sx3Ecx3EGgv8P/a9D9FgTi1AAAAAASUVORK5CYII=)
%% Cell type:code id: tags:
```
plt.scatter(df_runtime_graph_cluster['ReqMemCPU'],df_runtime_graph_cluster['Elapsed'], c=kmeans.labels_, cmap='rainbow')
plt.scatter(kmeans.cluster_centers_[:,0] ,kmeans.cluster_centers_[:,1], color='grey')
#plt.yscale("log")
plt.xlabel('ReqMemCPU')
plt.ylabel('Runtime')
```
%% Cell type:markdown id: tags:
# Average RAM per CPU by Job
%% Cell type:code id: tags:
```
# must run
# df_3 is database with only JobStep, User, JobName, ReqMemCpu, ArrayJob, and ArrayTaskID
# it is used to pull out needed information and create separate datasets to compare
df_3 = df_batch.loc[:,['ReqMemCPU','JobID']]
#df_3.head(5)
```
%% Cell type:code id: tags:
```
df_3['ReqMemCPU'] = df_3['ReqMemCPU'].apply(np.ceil)
#df_3.head(5)
```
%% Cell type:code id: tags:
```
# must run
# variable for to be used in names of plots to describe the max gigs measured
UpperlimitGB = 50
```
%% Cell type:code id: tags:
```
# must run
# creates database from df_3 that returns all RAM per CPU requested up to the UpperRAMlimit defined above
gig_cutoff = df_3[(df_3.ReqMemCPU <= UpperlimitGB)]
#gig_cutoff.head(5)
``` python
df_runtime_cluster = df_1_sorted[(df_1_sorted['ReqMemCPU'] <= UpperlimitGB)]
#df_runtime_graph_cluster.head(5)
```
%% Cell type:code id: tags:
```
# renames JobID column to JobCount since that's what it is now
df_cpu_per_job = gig_cutoff.groupby('ReqMemCPU').count().rename(columns={'JobID': 'JobCount'}).reset_index()
#df_cpu_per_job.head(5)
``` python
Sum_of_squared_distances = []
K = range(1,10)
for k in K:
km = KMeans(n_clusters=k)
km = km.fit(df_runtime_cluster)
Sum_of_squared_distances.append(km.inertia_)
```
%% Cell type:code id: tags:
```
df_cpu_per_job['ReqMemCPU'].describe()
``` python
plt.plot(K, Sum_of_squared_distances, 'bx-')
plt.xlabel('k')
plt.ylabel('Sum_of_squared_distances')
plt.title('Elbow Method For Optimal k')
plt.show()
```
%% Cell type:code id: tags:
```
style.default_axes_and_ticks()
style.figsize()
cpu_per_job = sns.scatterplot(x="ReqMemCPU", y="JobCount",data=df_cpu_per_job)
cpu_per_job.set_yscale('log')
#cpu_per_job.yaxis.set_major_locator(ticker.MultipleLocator(100000))
#cpu_per_job.yaxis.set_major_formatter(ticker.ScalarFormatter())
%%%% Output: display_data
plt.title('Number of Jobs Requesting RAM per CPU for all Jobs %i gigs or less'%UpperlimitGB)
![](data:image/png;base64,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)
plt.xlabel('Requested RAM per CPU (Gigs) per Job')
plt.ylabel('Job Count')
plt.show()
```
%% Cell type:code id: tags:
%% Cell type:markdown id: tags:
```
df_cpu_per_job_cluster = gig_cutoff.groupby('ReqMemCPU').count().rename(columns={'JobID': 'JobCount'}).reset_index()
df_cpu_per_job_cluster.head(30)
```
#
%% Cell type:code id: tags:
```
``` python
kmeans = KMeans(n_clusters=3, random_state=111)
kmeans.fit(df_cpu_per_job_cluster)
kmeans.fit(df_runtime_cluster)
print(kmeans.cluster_centers_)
```
%% Cell type:code id: tags:
%%%% Output: stream
```
print(kmeans.labels_)
```
[[31.01418718 1.76035076 2.01066712]
[ 9.07246984 1.16428982 1.31854662]