{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "**Important: This notebook will only work with fastai-0.7.x. Do not try to run any fastai-1.x code from this path in the repository because it will load fastai-0.7.x**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# A Linear Model for Bulldozers" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "from fastai.imports import *\n", "from fastai.structured import *\n", "from pandas_summary import DataFrameSummary\n", "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n", "from IPython.display import display\n", "from sklearn import metrics\n", "from sklearn.linear_model import LinearRegression, Ridge, RidgeCV, Lasso, LassoCV" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "set_plot_sizes(12,14,16)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load in our data from last lesson" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "PATH = \"data/bulldozers/\"\n", "\n", "df_raw = pd.read_feather('tmp/bulldozers-raw')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df_raw['age'] = df_raw.saleYear-df_raw.YearMade" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df, y, nas, mapper = proc_df(df_raw, 'SalePrice', max_n_cat=10, do_scale=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def split_vals(a,n): return a[:n], a[n:]\n", "n_valid = 12000\n", "n_trn = len(df)-n_valid\n", "y_train, y_valid = split_vals(y, n_trn)\n", "raw_train, raw_valid = split_vals(df_raw, n_trn)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def rmse(x,y): return math.sqrt(((x-y)**2).mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear regression for Bulldozers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data scaling" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
SalesID401125.03.147483e-151.000001-0.858580-0.551518-0.3083440.3553224.855369
MachineID401125.02.895953e-151.000001-2.761738-0.2929890.1396570.5672772.876309
ModelID401125.0-1.300773e-131.000001-1.102854-0.583548-0.3673720.2948194.871330
datasource401125.0-6.855920e-131.000001-1.524823-0.297450-0.2974500.1488684.165727
auctioneerID401125.0-1.064768e-131.000001-0.381738-0.321407-0.261075-0.1404125.591096
YearMade401125.06.797770e-161.000001-3.0814460.2941880.3284580.3455930.390145
MachineHoursCurrentMeter401125.08.635210e-141.000001-0.074396-0.074396-0.074396-0.074396150.038499
fiModelDesc401125.01.673709e+031263.3311631.000000631.0000001395.0000002292.0000004999.000000
fiBaseModel401125.05.591654e+02469.3102661.000000206.000000406.000000704.0000001950.000000
fiSecondaryDesc401125.03.668504e+0138.2282430.0000000.00000029.00000057.000000175.000000
fiModelSeries401125.09.192686e+0027.0068590.0000000.0000000.0000000.000000122.000000
fiModelDescriptor401125.01.223343e+0129.0419500.0000000.0000000.0000000.000000139.000000
fiProductClassDesc401125.03.226222e+0122.5966181.00000011.00000035.00000052.00000074.000000
state401125.02.350832e+0115.7328981.0000009.00000022.00000041.00000053.000000
Hydraulics401125.04.253801e+004.8093680.0000001.0000001.00000012.00000012.000000
Tire_Size401125.03.059847e+005.9507810.0000000.0000000.0000000.00000017.000000
Undercarriage_Pad_Width401125.04.311895e+007.7418940.0000000.0000000.0000000.00000019.000000
Stick_Length401125.06.535564e+0011.9233080.0000000.0000000.0000000.00000029.000000
saleYear401125.0-2.781277e-131.000001-2.623435-0.7117830.3309370.8522971.199870
saleMonth401125.02.443335e-141.000001-1.578894-0.994879-0.1188570.7571651.633187
saleWeek401125.0-9.469515e-151.000001-1.702718-0.891252-0.0797850.8669261.813637
saleDay401125.0-1.649883e-151.000001-1.793028-0.843733-0.0131010.8175321.766827
saleDayofweek401125.05.134902e-141.000001-1.850225-0.4275080.2838500.2838502.417924
saleDayofyear401125.03.377684e-151.000001-1.718597-0.926784-0.1156590.8789361.786624
saleis_month_end401125.03.491732e-141.000001-0.186900-0.186900-0.186900-0.1869005.350455
saleis_month_start401125.08.367190e-141.000001-0.161180-0.161180-0.161180-0.1611806.204230
saleis_quarter_end401125.04.067403e-141.000001-0.124679-0.124679-0.124679-0.1246798.020586
saleis_quarter_start401125.01.443002e-141.000001-0.079495-0.079495-0.079495-0.07949512.579339
saleis_year_end401125.0-1.624260e-141.000001-0.001579-0.001579-0.001579-0.001579633.343509
saleis_year_start401125.00.000000e+000.0000000.0000000.0000000.0000000.0000000.000000
...........................
Blade_Type_Angle401125.04.143347e-030.0642350.0000000.0000000.0000000.0000001.000000
Blade_Type_Coal401125.02.742287e-050.0052370.0000000.0000000.0000000.0000001.000000
Blade_Type_Landfill401125.06.232471e-050.0078940.0000000.0000000.0000000.0000001.000000
Blade_Type_No401125.01.852290e-030.0429980.0000000.0000000.0000000.0000001.000000
Blade_Type_None or Unspecified401125.02.849735e-020.1663890.0000000.0000000.0000000.0000001.000000
Blade_Type_PAT401125.09.625927e-020.2949470.0000000.0000000.0000000.0000001.000000
Blade_Type_Semi U401125.02.148208e-020.1449850.0000000.0000000.0000000.0000001.000000
Blade_Type_Straight401125.03.321409e-020.1791950.0000000.0000000.0000000.0000001.000000
Blade_Type_U401125.04.641945e-030.0679740.0000000.0000000.0000000.0000001.000000
Blade_Type_VPAT401125.08.842630e-030.0936190.0000000.0000000.0000000.0000001.000000
Blade_Type_nan401125.08.009773e-010.3992660.0000001.0000001.0000001.0000001.000000
Travel_Controls_1 Speed401125.02.492988e-050.0049930.0000000.0000000.0000000.0000001.000000
Travel_Controls_2 Pedal401125.02.846993e-030.0532810.0000000.0000000.0000000.0000001.000000
Travel_Controls_Differential Steer401125.01.216329e-020.1096150.0000000.0000000.0000000.0000001.000000
Travel_Controls_Finger Tip401125.06.541602e-030.0806150.0000000.0000000.0000000.0000001.000000
Travel_Controls_Lever401125.02.094110e-030.0457140.0000000.0000000.0000000.0000001.000000
Travel_Controls_None or Unspecified401125.01.743172e-010.3793830.0000000.0000000.0000000.0000001.000000
Travel_Controls_Pedal401125.01.037083e-030.0321870.0000000.0000000.0000000.0000001.000000
Travel_Controls_nan401125.08.009748e-010.3992680.0000001.0000001.0000001.0000001.000000
Differential_Type_Limited Slip401125.02.817077e-030.0530010.0000000.0000000.0000000.0000001.000000
Differential_Type_Locking401125.04.985977e-060.0022330.0000000.0000000.0000000.0000001.000000
Differential_Type_No Spin401125.05.135556e-040.0226560.0000000.0000000.0000000.0000001.000000
Differential_Type_Standard401125.01.697052e-010.3753740.0000000.0000000.0000000.0000001.000000
Differential_Type_nan401125.08.269592e-010.3782830.0000001.0000001.0000001.0000001.000000
Steering_Controls_Command Control401125.01.338735e-030.0365640.0000000.0000000.0000000.0000001.000000
Steering_Controls_Conventional401125.01.712160e-010.3766980.0000000.0000000.0000000.0000001.000000
Steering_Controls_Four Wheel Standard401125.03.440324e-040.0185450.0000000.0000000.0000000.0000001.000000
Steering_Controls_No401125.02.492988e-060.0015790.0000000.0000000.0000000.0000001.000000
Steering_Controls_Wheel401125.03.490184e-050.0059080.0000000.0000000.0000000.0000001.000000
Steering_Controls_nan401125.08.270639e-010.3781930.0000001.0000001.0000001.0000001.000000
\n", "

192 rows × 8 columns

\n", "
" ], "text/plain": [ " count mean std \\\n", "SalesID 401125.0 3.147483e-15 1.000001 \n", "MachineID 401125.0 2.895953e-15 1.000001 \n", "ModelID 401125.0 -1.300773e-13 1.000001 \n", "datasource 401125.0 -6.855920e-13 1.000001 \n", "auctioneerID 401125.0 -1.064768e-13 1.000001 \n", "YearMade 401125.0 6.797770e-16 1.000001 \n", "MachineHoursCurrentMeter 401125.0 8.635210e-14 1.000001 \n", "fiModelDesc 401125.0 1.673709e+03 1263.331163 \n", "fiBaseModel 401125.0 5.591654e+02 469.310266 \n", "fiSecondaryDesc 401125.0 3.668504e+01 38.228243 \n", "fiModelSeries 401125.0 9.192686e+00 27.006859 \n", "fiModelDescriptor 401125.0 1.223343e+01 29.041950 \n", "fiProductClassDesc 401125.0 3.226222e+01 22.596618 \n", "state 401125.0 2.350832e+01 15.732898 \n", "Hydraulics 401125.0 4.253801e+00 4.809368 \n", "Tire_Size 401125.0 3.059847e+00 5.950781 \n", "Undercarriage_Pad_Width 401125.0 4.311895e+00 7.741894 \n", "Stick_Length 401125.0 6.535564e+00 11.923308 \n", "saleYear 401125.0 -2.781277e-13 1.000001 \n", "saleMonth 401125.0 2.443335e-14 1.000001 \n", "saleWeek 401125.0 -9.469515e-15 1.000001 \n", "saleDay 401125.0 -1.649883e-15 1.000001 \n", "saleDayofweek 401125.0 5.134902e-14 1.000001 \n", "saleDayofyear 401125.0 3.377684e-15 1.000001 \n", "saleis_month_end 401125.0 3.491732e-14 1.000001 \n", "saleis_month_start 401125.0 8.367190e-14 1.000001 \n", "saleis_quarter_end 401125.0 4.067403e-14 1.000001 \n", "saleis_quarter_start 401125.0 1.443002e-14 1.000001 \n", "saleis_year_end 401125.0 -1.624260e-14 1.000001 \n", "saleis_year_start 401125.0 0.000000e+00 0.000000 \n", "... ... ... ... \n", "Blade_Type_Angle 401125.0 4.143347e-03 0.064235 \n", "Blade_Type_Coal 401125.0 2.742287e-05 0.005237 \n", "Blade_Type_Landfill 401125.0 6.232471e-05 0.007894 \n", "Blade_Type_No 401125.0 1.852290e-03 0.042998 \n", "Blade_Type_None or Unspecified 401125.0 2.849735e-02 0.166389 \n", "Blade_Type_PAT 401125.0 9.625927e-02 0.294947 \n", "Blade_Type_Semi U 401125.0 2.148208e-02 0.144985 \n", "Blade_Type_Straight 401125.0 3.321409e-02 0.179195 \n", "Blade_Type_U 401125.0 4.641945e-03 0.067974 \n", "Blade_Type_VPAT 401125.0 8.842630e-03 0.093619 \n", "Blade_Type_nan 401125.0 8.009773e-01 0.399266 \n", "Travel_Controls_1 Speed 401125.0 2.492988e-05 0.004993 \n", "Travel_Controls_2 Pedal 401125.0 2.846993e-03 0.053281 \n", "Travel_Controls_Differential Steer 401125.0 1.216329e-02 0.109615 \n", "Travel_Controls_Finger Tip 401125.0 6.541602e-03 0.080615 \n", "Travel_Controls_Lever 401125.0 2.094110e-03 0.045714 \n", "Travel_Controls_None or Unspecified 401125.0 1.743172e-01 0.379383 \n", "Travel_Controls_Pedal 401125.0 1.037083e-03 0.032187 \n", "Travel_Controls_nan 401125.0 8.009748e-01 0.399268 \n", "Differential_Type_Limited Slip 401125.0 2.817077e-03 0.053001 \n", "Differential_Type_Locking 401125.0 4.985977e-06 0.002233 \n", "Differential_Type_No Spin 401125.0 5.135556e-04 0.022656 \n", "Differential_Type_Standard 401125.0 1.697052e-01 0.375374 \n", "Differential_Type_nan 401125.0 8.269592e-01 0.378283 \n", "Steering_Controls_Command Control 401125.0 1.338735e-03 0.036564 \n", "Steering_Controls_Conventional 401125.0 1.712160e-01 0.376698 \n", "Steering_Controls_Four Wheel Standard 401125.0 3.440324e-04 0.018545 \n", "Steering_Controls_No 401125.0 2.492988e-06 0.001579 \n", "Steering_Controls_Wheel 401125.0 3.490184e-05 0.005908 \n", "Steering_Controls_nan 401125.0 8.270639e-01 0.378193 \n", "\n", " min 25% 50% \\\n", "SalesID -0.858580 -0.551518 -0.308344 \n", "MachineID -2.761738 -0.292989 0.139657 \n", "ModelID -1.102854 -0.583548 -0.367372 \n", "datasource -1.524823 -0.297450 -0.297450 \n", "auctioneerID -0.381738 -0.321407 -0.261075 \n", "YearMade -3.081446 0.294188 0.328458 \n", "MachineHoursCurrentMeter -0.074396 -0.074396 -0.074396 \n", "fiModelDesc 1.000000 631.000000 1395.000000 \n", "fiBaseModel 1.000000 206.000000 406.000000 \n", "fiSecondaryDesc 0.000000 0.000000 29.000000 \n", "fiModelSeries 0.000000 0.000000 0.000000 \n", "fiModelDescriptor 0.000000 0.000000 0.000000 \n", "fiProductClassDesc 1.000000 11.000000 35.000000 \n", "state 1.000000 9.000000 22.000000 \n", "Hydraulics 0.000000 1.000000 1.000000 \n", "Tire_Size 0.000000 0.000000 0.000000 \n", "Undercarriage_Pad_Width 0.000000 0.000000 0.000000 \n", "Stick_Length 0.000000 0.000000 0.000000 \n", "saleYear -2.623435 -0.711783 0.330937 \n", "saleMonth -1.578894 -0.994879 -0.118857 \n", "saleWeek -1.702718 -0.891252 -0.079785 \n", "saleDay -1.793028 -0.843733 -0.013101 \n", "saleDayofweek -1.850225 -0.427508 0.283850 \n", "saleDayofyear -1.718597 -0.926784 -0.115659 \n", "saleis_month_end -0.186900 -0.186900 -0.186900 \n", "saleis_month_start -0.161180 -0.161180 -0.161180 \n", "saleis_quarter_end -0.124679 -0.124679 -0.124679 \n", "saleis_quarter_start -0.079495 -0.079495 -0.079495 \n", "saleis_year_end -0.001579 -0.001579 -0.001579 \n", "saleis_year_start 0.000000 0.000000 0.000000 \n", "... ... ... ... \n", "Blade_Type_Angle 0.000000 0.000000 0.000000 \n", "Blade_Type_Coal 0.000000 0.000000 0.000000 \n", "Blade_Type_Landfill 0.000000 0.000000 0.000000 \n", "Blade_Type_No 0.000000 0.000000 0.000000 \n", "Blade_Type_None or Unspecified 0.000000 0.000000 0.000000 \n", "Blade_Type_PAT 0.000000 0.000000 0.000000 \n", "Blade_Type_Semi U 0.000000 0.000000 0.000000 \n", "Blade_Type_Straight 0.000000 0.000000 0.000000 \n", "Blade_Type_U 0.000000 0.000000 0.000000 \n", "Blade_Type_VPAT 0.000000 0.000000 0.000000 \n", "Blade_Type_nan 0.000000 1.000000 1.000000 \n", "Travel_Controls_1 Speed 0.000000 0.000000 0.000000 \n", "Travel_Controls_2 Pedal 0.000000 0.000000 0.000000 \n", "Travel_Controls_Differential Steer 0.000000 0.000000 0.000000 \n", "Travel_Controls_Finger Tip 0.000000 0.000000 0.000000 \n", "Travel_Controls_Lever 0.000000 0.000000 0.000000 \n", "Travel_Controls_None or Unspecified 0.000000 0.000000 0.000000 \n", "Travel_Controls_Pedal 0.000000 0.000000 0.000000 \n", "Travel_Controls_nan 0.000000 1.000000 1.000000 \n", "Differential_Type_Limited Slip 0.000000 0.000000 0.000000 \n", "Differential_Type_Locking 0.000000 0.000000 0.000000 \n", "Differential_Type_No Spin 0.000000 0.000000 0.000000 \n", "Differential_Type_Standard 0.000000 0.000000 0.000000 \n", "Differential_Type_nan 0.000000 1.000000 1.000000 \n", "Steering_Controls_Command Control 0.000000 0.000000 0.000000 \n", "Steering_Controls_Conventional 0.000000 0.000000 0.000000 \n", "Steering_Controls_Four Wheel Standard 0.000000 0.000000 0.000000 \n", "Steering_Controls_No 0.000000 0.000000 0.000000 \n", "Steering_Controls_Wheel 0.000000 0.000000 0.000000 \n", "Steering_Controls_nan 0.000000 1.000000 1.000000 \n", "\n", " 75% max \n", "SalesID 0.355322 4.855369 \n", "MachineID 0.567277 2.876309 \n", "ModelID 0.294819 4.871330 \n", "datasource 0.148868 4.165727 \n", "auctioneerID -0.140412 5.591096 \n", "YearMade 0.345593 0.390145 \n", "MachineHoursCurrentMeter -0.074396 150.038499 \n", "fiModelDesc 2292.000000 4999.000000 \n", "fiBaseModel 704.000000 1950.000000 \n", "fiSecondaryDesc 57.000000 175.000000 \n", "fiModelSeries 0.000000 122.000000 \n", "fiModelDescriptor 0.000000 139.000000 \n", "fiProductClassDesc 52.000000 74.000000 \n", "state 41.000000 53.000000 \n", "Hydraulics 12.000000 12.000000 \n", "Tire_Size 0.000000 17.000000 \n", "Undercarriage_Pad_Width 0.000000 19.000000 \n", "Stick_Length 0.000000 29.000000 \n", "saleYear 0.852297 1.199870 \n", "saleMonth 0.757165 1.633187 \n", "saleWeek 0.866926 1.813637 \n", "saleDay 0.817532 1.766827 \n", "saleDayofweek 0.283850 2.417924 \n", "saleDayofyear 0.878936 1.786624 \n", "saleis_month_end -0.186900 5.350455 \n", "saleis_month_start -0.161180 6.204230 \n", "saleis_quarter_end -0.124679 8.020586 \n", "saleis_quarter_start -0.079495 12.579339 \n", "saleis_year_end -0.001579 633.343509 \n", "saleis_year_start 0.000000 0.000000 \n", "... ... ... \n", "Blade_Type_Angle 0.000000 1.000000 \n", "Blade_Type_Coal 0.000000 1.000000 \n", "Blade_Type_Landfill 0.000000 1.000000 \n", "Blade_Type_No 0.000000 1.000000 \n", "Blade_Type_None or Unspecified 0.000000 1.000000 \n", "Blade_Type_PAT 0.000000 1.000000 \n", "Blade_Type_Semi U 0.000000 1.000000 \n", "Blade_Type_Straight 0.000000 1.000000 \n", "Blade_Type_U 0.000000 1.000000 \n", "Blade_Type_VPAT 0.000000 1.000000 \n", "Blade_Type_nan 1.000000 1.000000 \n", "Travel_Controls_1 Speed 0.000000 1.000000 \n", "Travel_Controls_2 Pedal 0.000000 1.000000 \n", "Travel_Controls_Differential Steer 0.000000 1.000000 \n", "Travel_Controls_Finger Tip 0.000000 1.000000 \n", "Travel_Controls_Lever 0.000000 1.000000 \n", "Travel_Controls_None or Unspecified 0.000000 1.000000 \n", "Travel_Controls_Pedal 0.000000 1.000000 \n", "Travel_Controls_nan 1.000000 1.000000 \n", "Differential_Type_Limited Slip 0.000000 1.000000 \n", "Differential_Type_Locking 0.000000 1.000000 \n", "Differential_Type_No Spin 0.000000 1.000000 \n", "Differential_Type_Standard 0.000000 1.000000 \n", "Differential_Type_nan 1.000000 1.000000 \n", "Steering_Controls_Command Control 0.000000 1.000000 \n", "Steering_Controls_Conventional 0.000000 1.000000 \n", "Steering_Controls_Four Wheel Standard 0.000000 1.000000 \n", "Steering_Controls_No 0.000000 1.000000 \n", "Steering_Controls_Wheel 0.000000 1.000000 \n", "Steering_Controls_nan 1.000000 1.000000 \n", "\n", "[192 rows x 8 columns]" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe().transpose()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "X_train, X_valid = split_vals(df, n_trn)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.31399415664841568" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = LinearRegression().fit(X_train, y_train)\n", "m.score(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.60966668735322171" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.score(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "preds = m.predict(X_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6197833720320716" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse(preds, y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD/CAYAAAAaGBpmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvVmMXFl65/c7d1/ixpp7MklmdZHsrlKru6VqTUuGJGhg\nezx+0cB+8CYDehgImIEA+82yLFiasTD24wCGYEOwxzYGkB4EyIAXDAQbYwnWAkndnq5WV3cXq4p7\n7hEZ692X44ebEYyMXJhksarIqvsHiGDeuPfcc5f4vvNt/09IKalQoUKFChXmoXzWE6hQoUKFCq8e\nKuVQoUKFChXOoFIOFSpUqFDhDCrlUKFChQoVzqBSDhUqVKhQ4Qwq5VChQoUKFc6gUg4VKlSoUOEM\nrqQchBC/KoT4thAiFkL8z3PbvyWE+L+EEMdCiCMhxB8IIdYvGacthPhfhRC+EOKhEOI/fAnXUKFC\nhQoVXjKuajnsAr8N/LOF7S3gd4GbwA1gDPxPl4zzO0ACrAL/EfDfCSHefo75VqhQoUKFTwHieSqk\nhRC/DVyTUv7yBd//BPAnUkrvnO9coA/8mJTy7sm2fw7sSCl/7bLzLi0tyZs3b155nhUqVKhQAb7z\nne90pZTLL3Ks9pLn8nPAexd8dxvIp4rhBO8CP/+sQW/evMm3v/3tlzC9ChUqVPjiQAjx8EWPfWnK\nQQjx48B/CfziBbvUgOHCtiFwxso4Ge9XgF8BuH79+kuaZYUKFSpUuApeSraSEOJN4F8A/4mU8v+9\nYLcJUF/YVqeMU5yBlPJ3pZTvSCnfWV5+IauoQoUKFSq8ID62chBC3AD+b+C/klL+80t2vQtoQohb\nc9u+xsVuqAoVKlSo8BnhqqmsmhDCAlRAFUJYJ9s2gX8J/I6U8r+/bAwppQ/8IfCPhRCuEOJfo3RB\nXaZQKlSoUKHCZ4CrWg6/AYTArwG/dPL/3wD+PvAG8JtCiMn03/QgIcSvCyH+xdw4/xCwgUPg94F/\nIKWsLIcKFSpUeMXwXKmsnxXeeecdWWUrVahQocLzQQjxHSnlOy9ybEWfUaFChQoVzqBSDhUqVPjc\nI8kKuuOIJCs+66m8NqiUQ4UKz4nXUdB8nDm/jte7iFGYcDiOGYXJZz2V1waVcqjwucYnIdheR0Hz\nceb8rGNfB+VRtw1WPJO6bXzWU3lt8LLpMypUeKUwFWwAS571UsacChhL1+iOI+q2gaF9cuusJCsY\nhckLnyfJCpKsoOXoLyQcp8dcdOwoTHjSD7H9mO0l76Xei6niEQI6NeuFxzY05dLn/3Hv8ecR1V2o\n8LnGJ7FinAqaKM0+FQticeV+3kr9stX7KEwYhCm6qjxT8E3HmUTZbLzp9V50bN02sA2FKC1e+r0Y\nhQn3uz73u/4nep9fR2vwk0ZlOVT4XONZK8aPg2etqD+p85xnDU23TYX5/Ar4eeY5HUdVYvITPbN4\n/xZX2YamsL3kzba9TNRtg+0lFyE+2fv8aT3L1wmVcqhQ4QXxshXPRa6NxfOcJ8im/0/z4ozimB4/\ntQouc53Mu8yiNDvXdXaecnqeczzP9RuawkbLea5xXgSf5CLidUWlHCpUeEVw1fjIoiCbF6oAuqqc\nuwKeH79uG2cE8fw4SVbQ82MsLcNP8lMWyWWr7Ged47w5T7/bHwZ858ExLdfknZsdatbziaeXEZup\n4g5PUSmHChVeEbyoa2NRqVykWObHv8w1BdDzY+7uT3hj2WG1bp+xSF70HBfNudyWcv8oYHcQs960\nuLPW+Fj34XnxSSQvvM6olEOFCufg01pFLq76XwRXVSrzFsfiMYsZTZZeiobNpkvN0kiy4kKL5Krn\nOG/O826rm0sev/BWAVKw2XSvdO3njfmi97KKO5xGpRwqVDgHn9Yqcv48wAud80X85YvHTDOaVjxz\nFmSeX7k/TyrodLy6bVx4zHS87jjicByT5qXyeXujdUoZX6akzwuMf5xnVcUdTqNSDhUqnINPYhV5\nnqC7LLj8aeJFrnf+eq6i5C67/iQ7G0iHy7OwXkSBV3GFq6NSDhUqnIOPu4o8TwhdFKyd//+zhOmz\nztmbREjJhXUJ0zEtXWMUJqR5KXQ7tYvjCBfNY/F65j/hbJHgs7KcoMy2miqC+fHOy8J6EYVWxRWu\njko5VKjwCeA8IXRRsBbOX2k/ryCbFoxJebFym69j6I4ThmFK09HR1YuV4UXzmL+exfPNu4ymf18m\nzKduocNxfGou88pjMebxIgq8iitcHZVyqFDhE8B5QuhZwdpFgXWZILvIRbO95CLlxcJvPhDsmfrM\ncrhMWM7PY/G8lwnn84LOV9n/IuXxrGK8q6CKK1wdldOtQoVPAM+inJj/fv7/SVaw2w/YGwTAxe6h\n8+gepu6h8wK389QaaV4KVVvXiLIcz3q2cJ26rPYGIe/vj+mOowv3W6TdiNKMJ/2Q+93xKVqO+WP2\nBsGFxXMXUYOcdw9eBxLA1wWV5VChwiuEqWsoL8oitLZjnlIcozBBFQpP+gFSSizdPXP8RfULaV4w\nilIOhhGqoqCpsDuIGQQJb2+0ZhXRUZqdyjpKsoL7Xf+EwkJDCBDi4vkvxlUsXUNKyft7I8IkRwhB\nb46k71nusKu4tZ61b4XnR6UcKlR4hTB1DfWDmKNxwjDIZgJzKvjGUcJHhz5Nx2CrnZ2qJL7MXZVk\nBWFS0KkZtBwTW9eAIYpQ2Bn45AWnOJWgjIW0HH3Gb+RZxinlcd78p5/T+a54oGuCcZQjpcQ2VMKk\nVHTTWMRl7rCL3E3nKZIqpvDyUCmHCl9YXOSzXqSR2Bn4s2Kw5xnnKucFZqvr/WHIwSjg1koDU9PI\n8hBDE/hxRt0uqNsGQZIxCmDF07m55J0SgpMo40F3TN0+Tc09pcJYqdlcaz1NB02ygoZlcO9ozEaj\njakrWLrGOErw45ysyInTnDRX8UyDnaGPH+c4hnrmWlShcDgJ2Wy658ZVLF1DVxU2m+7MWph+P3WH\n9SYR3XF0xlJ6Vqzi4xQSXiXD64uKKykHIcSvAr8MfBX4fSnlL59sN4DfA94BbgC/IKX840vG+WPg\nW0B2smlHSnnnxaZeocLHQ28Scb/rs73k0qlZ5+bsT2kkgAvpHJ6Hs8jQFLrj8rzXWg5RlhGlBZau\n8O37PT489BmEKQLB415I09WRUmBoCrqqMApT7h35tGoGTUcHmPnqdwY+33nYx9RUfu72U2vjYBRy\n7yiAtafXULqKxnz7UY/9QUzD0bmz1pid597RmFGUIqUkTHNUJeT9vTFxXnBrxTtlzewMQp70fQ5G\nMXdWI765vTyLpdRtg71ByDhOuNnxZtXW593D+12fIMnw+v7MzXUVF9HHKSS8yKVV1UNc3XLYBX4b\n+DuAvfDdnwL/FPiDK471q1LK/+GK+1Z4zfEq/8ikhDQr6E1KYdIPUuDsihe4kM4hyQrSvKB5slq/\nyOf/weGYcZjy9a02x0Hp/x/HCVEiyWXOkuti6xqbLYetlkuU5uRFAUh0VTAIUn60O8YxJLfWPFbr\n5qnzpXmBpgiajoEuJIfjkH4QM4oy/DDBszRWak9/uqMw4XiS4mg6P7ahowqFd5/0WfUsNpsurqmi\nq5Dlkr953OfL6w2ajoaKyrJnzKwqP844GoU8OQ4J04KdQUjzYMiNjkeUZvhxxl981CXOCoIkI0kL\nDF3BUDWundyjcpwcTYVJlNP3E5qOwfaSd+p5zNdoTF1b85lWL1JIaOkatq4ghJg96+n9+aLHLq6k\nHKSUfwgghHgHuDa3PaFUDAgh8k9ighVeb7zKP7Ilz2Icp0RpgZTMmgLNryDnaSQuKmzrB09pJy4S\nVOMw5f0DH4DVhs2SZ+CZBmkW4YcFD3pjhKLw1Wt1lmomD3qlC2cUZaiKRprn3D8eowuFn6pZrDWc\nU+dLsoKDUUzD1rENhUGQnWzP2R8lLNUgl8WpOSmKRAho1SyipKA7TtCEgq4pBEmOlHB3f8S3H/U5\n9hN++s1l1pvWLJDcHUfsDEIORxF5Ibm55CAQHI0TYMwwzHAMlSXPwtIFflTwnQfHrDUtvrndPuVW\ne9IPGEUpnq1SM82Z++m8uo/FXhPn1VhcFVGaESQFQpT/n7oOq9jFZxNz+K+FEP8N8D7wX1zkhhJC\n/ArwKwDXr1//9GZX4aXi4/zIXpbVcVlsIUxOgqS6dkp4Lh4HcL87JkrLfZY8i0mUcTAKqZnPbr/5\npZUajqFye7WBopRjD8IUIQRBmnOz7rB0smoHqNsxb2802B9GNF2NG20Px9AZhAmqUGfB3KlgnEQZ\ntl7GKJq2gV4v3UO2rrEz9PHM0gra7Qezlptvb7RoOj4rNZswzdhedkkyyThOMDWFJ8c+y57J9YbN\nz7y5zO01D886Xdm9veSy4llEWcZmwyXKstIiywsGQUbLMbjWcqjbBn6Uoauw3rTZatfO1GdkRYGm\nnE0BnrcYVjzOZFS9yLOfYnpuIc5WdJ/nIvwi4dNWDv8Z8AMgAf594H8XQnxdSvnR4o5Syt8Ffhfg\nnXfekZ/qLCu8NFxUdHQVwf+yrI6LxtkZ+Pxgd0TTMXBM7Uzns8UU0FGYUbe1mVDaGfjcPfDZaJqz\ngGpvEpPLs+OMo5zlukXTLY/tTSJcQyNOM3RVEGcFKyf7P+iO6U0S6rZOkOaEw5wVz2atYeFZOuMo\nLV00J0yqOwMfS9MIknKecSp5Y9lFV0/f1/1hyF/dOwJgvelwvePgmTqupdGqlfP67qMe//IHhxwO\nQ6QQ1C0Nw9AYhjE938CPcw5GEddaDq6p0qlZdGrlNbqWhkspYIdhyjCMubXinUpp/fJ649x4zEUK\nYTHraXpP55MDLlP+dw+GdMcJd9Y81ptnmwbNNxNarOi+am+Kzys+VeUgpfzLuT//FyHEfwD828B/\n+2nOo8Jnj6sI/pdl2l80zmbTJdsqqJk6nZp1ZjW6mAJat7WZS2V6/CBIUJUyFbQ3SUizgrWmdWYc\n249P9VjuBymqAoqi4FkaozDFj3OWvJTeJCFIc+rOyc9TSiZxynCQMQgSQBCmOY6hzQLm28vOqdW3\nlMzSXj888Gm5OnVbox9kRGnOIMw5HMdcazmnFLiUgieDkO4k5nrT4mdurRClKZO44N1HQ1brJj0/\nQVEkRSHYXnJntBdT3O/6/GB3yCBI6dRMvqR4F7Yeveg9eBZv0zwuG6M3SQiS0pp5FhbPcxHdyavm\nHv2k8FmnskrggnKaCp9nXEXwvyyqg8s6p7292ZptX0xVnef1WWQEne7/jeud2arY1lVGYTpzDXXH\n0cwFstl0Z0VmozCh5eizmgFVKOwO/ZmSsjSVSZyy0XCpWzp7g5CmbQKw4lnoqpjNx9I1sryYubam\n5xhHCa6hYWoCQ1VouxZ1S6dpGxRSstsPidKUUZCwd5JtVDN1PEvn3/nGJkfjkK9stNhqu4yjhGGQ\n0vMj8lzSGydoQrJUt8mKAjKomSpJVszcNG3XoOdH3F5p4J7c1/PcQZauoSrxLBi86EK6jKbjvH3n\nUbcNbq96JFkZW5kn9HvWe7JojXwRYxBXTWXVTvZVAVUIYQGZlDITQpg8FfDGyXexlKd1tRCiCfwt\n4E8oU1n/PeDngP/0pVxJhdcKnyTHzbNcVs+7CrzKXA1NwTE0JnFOlGZEKadWy1OXSHccMQhTmrY+\nE5SjMEEIBdfUqFkaUarhJzm5LMgKST/I0Ac+pqahqQXXm0+tF0NTWK3bPOmH7I/CE2ELx5MERSmL\n1rbaT2sPWjWD7jjiST/ifi8iy0M+OBijaQpt12S9YbHWtPjGjQ5RmjGOkpmV03ItkiynXdNxLYO1\nhoWmKAzC8vu8yGdumo0WwNPU3/PcQVAGgfPiaTD4PBfSRXjWvoamsN50Zu6iy8gFLxp7OvcvIifT\nVS2H3wB+c+7vXwL+EfBblIHlGyfb/+jkcxt4IIT4deBnpZR/F9Ap02G/DOTAj4C/J6V8/+NcQIVX\nA88TPP6k01unuffzFA3z555PPT0vPXI6xmLK5HnX8YPdPo+PQ7621WStUfqup9aBa6gIAZqizKV+\n5hSyIEhyPjgYo6uCJC9mrTgnURlLMFSF/VHISs3m9hqs1GwOJ+HMNVW3SyGfFWWmlZSSwSSjZhd0\nXIvdQYitlZaMa6hYukZvEvOwO2J/HNOydNY9jY8OI5y6TtPWcA2FKM34YH/Me0+GZLKMXTRtg3FU\nxlsMVeeNFReBgqYI0lzScnQsTWN36LM7CHn3UQ/XNNho2bRd60JajmlQe/pMppYHnF6hT6Ls3ELE\n+WMnUXbhs3qRVf8X0VJYxFVTWX+LUhGc993NS477J3P/PwK++Vyzq/Da4HlW4x/Hf3sVxVK3DXp+\nTJiU1a+6qsyE0zRLaJp6Ol1VLtJG7AxCojTD1E7n48+fexQmPOyF7A8jtpdS2m5ZiWxpOX6Snaym\nYcXTMDSF3X7Ae7sDXFOjU4Mgzbm/O6Y7SfnJm01W6zbHkwFt1yLOUj489NlshjQcgyAuXVN9YlSh\ncL87Zn8QlbEJS8cxVPpRjKpahGaGa2rkUrLXD9npR3z9epO/edznjz84JMvgJ6+30VTB3jhEUaBm\naPxwf4SpqkRZwThKT7KdVKIk54d7IwA2mhaTuEBXBPeOJGt1i7c3G+SyoDdJ+IuPunx06LPeNPnW\nl5a53i5jKIUs3Qu3Vr1ZjGLq5hECDkYxoyhle8k7807sDHzu7k/KeE7Dnt3/eZrvUZSeiWdM8SKr\n/i+ipbCIzzrmUOFzgudZaX2cVdmzFMtUgE9X2n6cczj2qdsailBoOfqsnmF+Dosr254fk2QKtqGc\nWu0u9if4+laTyUrKjY7Hg96Ydx8NeWvTY61u48c5qcxm/nQhwFQ1NAU2Gy4d16Rhadzr+ryx5DGK\nEoZhRsPJWa3bPD4O2R2EfO/JCFNTuLlcps2OwoT9Ycxaw2J72UVTFMI0wzE0Op5O27EI4oLVusVd\ndcjeMCaIU6KswFBU1ho633yjTc1SaddMbq+5jMOccZCyPypTObdaNtfbDustB0tX8O/nTJKMmqmx\n4llIBMOwzKia3p9OzaDlmrTchK22y+3VGpqi8LBXKlrb0E7I+8oV/3EQk+VlfYltKDOraPG5TmM4\ntq6eefbTmMVKzSaXxYXv1EVtTL8omUcvgko5VHgpeJ6V1ousyp4VfJziaaEURGnBOIrIcvBMA9dU\nzwiE+blMXRZJVlC3dDxTP8Xzk2QFLeepMEyygijLuXFCC+GZRjmGFEgJB6OIKM0ZBqWwbLsW1zoW\n4yjjcBKyveTRqVms1C2e9AM6rsmbqy5tpwwe31mrE6YpN5fgQXfCX9/rUbd00kzScHTWGnZZOGae\npJgOI26teHRqJuO4zIq6s1bnertMhdVVldW6xdsbTa61XT44GKEqkh/sjFnxLGqORn8v5XAU8eZK\nnbvZBE1T2Wha/O23VvnR3gBDVbENFV0TaKrJWuNpCupGw+X2asQbSzWajnFC7Ad31moc+wmaImb0\n4ELA/iDGNgT1ldJa6E2i2X1eDPzfWWucy6E0jVnksrj0nZpSlixmVz3Pe/gqV/t/EqiUQ4VXBhcR\n0kVpRpoXJ5XIl/+g5y2BnYFPkmksexrrTfvKP+jFqufptnl3FDx1d0DJWbTetGdcSULAtZbNe7sD\nHvRiRlHON2+WqbD3u+NTrKQ9P+av7/dZrptsNCyyHKIsI0hyhFDo1DT+8l7Ck36IooRIFN7WPSQF\n7z4a03J1sjxnbxByOApY9kx6k4S94ZD1hs3bG2VgWCJYbzrUbZ2dgc/9ownvPRkRpDnbHZcf36rz\n7sMBB+OUP/voEFUTHI8j/q2vbdJ2DSQK7z4ZstFM+NKyi2tpeJYx66FwrzumH+TcWnVZO4mhTIPZ\naS5JMjkLPEsJSZ6jF9rJNgtdLYX2RYuHj8PCOqUZn1ouVznmvPfii5TOWimHCq8MziNQm8YCmvZp\ndxCcv5KbFyDbS94pZTOtfp1nWp3GDqZKyNK1MxYCnJ9yqQqFlvuUs8jQlFPnHIUJK55D3dK53nGf\nCiVLxzOfuldsXWO9adC0DYZRRsPR2Wy6WJpKP4jpTWJcQ+FbX+qw4Zn8zd6EpZoOUrC9ZJPk4Bom\nT7yQcZSX7h5LI8tsGraGH+cIIU9qGgRpXrA3iLjWdljydL7/ZEyU5iSZ5M1Vj7W6hWWq7A8imq5J\nURSs1GzeWE5o2Dp1S8MxNUCUBX5xyoPDCQ/7AbahsFJbmgXMpym7dUs/Rcm95Fl8fat1rrBerFS+\nDJdZofPvR6dmzdqMvmg84YsWpK6UQ4VXBuf9+KaZP1MhMi8s5iuYpWRGC7GoKKYMpOMow7Nisrzg\n3lFAmhXomjJjRc0LKIqQYZjN3A/TTBlLU8mLsrJ5Z5BjaRoHowhFKKdoN6Y58d1xRJBk2Ibgy+ud\nmRIKkrIr2vZS6Ue/3x3z4eEEP5Zcb6uImBM//RhFKPxob0x3FPPwOOTr1z22VxvYlknfjxmHOZMk\n5kk/5s5q6bZ6f3/M+/tjvrpZJ0xzdLUo2VTTnDfXPLI854MDH9tQ+KntZY4Dye4goB9mjMOESVLw\n5prLRsPBMjT8KMU2dL77+JjuJGK5ZqJrKtNM9bL4L+NoEtMdRyiKwt2DIW8sewzCFENVeHTc5/ZK\nY1aFPb1PGy3nDGX2eb2nXxSLK/2Pm/zwRQtSV8qhwiuDiwjUxlFJqwycokCY9/1Pu6dNM14WlUiY\nFORFWenccnRur9WwdZVjP8U2lFmRWpBkjKJs1uls6jp6Y9lhtW7P6K+nFcnzK9/5893v+gzDlKaj\nM44SRlFKmBRoCiepp+V+UVrQdnU0RZAXCsMg5mH3GFURrDZM4qxAKhBnGT/a81EVlfWGze01jyDN\n+MFuQBBn1O0WN5dq9IOIx8cRf3X/mFwKVupl8dwkTpk8zPjgcMIoSvnxzSZRlnF3f4Kf5ChS8qgf\nIKXgHavFVtum6yfkumR/EPDRoc/+KOTHNup0PIlE0vczTE0Q5wVNx0CI0nUUn7jVVjyT9/eHfO9J\nmen0t2rLZ575eZTZi1bai+LjrvS/aG6kRVTKocJngucJ7k2F6SIFwrxlANAP4pkvf54Lx9I1bEPh\nRrsxy2iZBpkd4+kcpr0GHOMpf9I0U2aaDbPRKP+uLQSrp24QgCAp2UjbrkEuy9qG+4cT4rxge6mG\na6oMw5RBkBBnGW+tt1AUUIXCSt3gcBjyowOfrZbDm8sKSZ6z2XCoGSCFgmOq3Fzy+OBgBELh1lqd\ntlsGobdaNTqujqFqmLrKZssmSgsUBYI4RygCBcFX1j2KAhqmyk9/qUOSpvzZh306nkbd0qmZBt/a\nbnPsx2w23bI2xC3dSZ5lMAwSjichX73W5HrHYxInjEKLQuZca7kzC64owI9zrjXdc11Flq5Rt8tg\n/vT+LRbGvSgMrUxhvt8dX9qs6SJ80dxIi6iUQ4XPBFdZlc0rkDtryoU/0qmLYkqWtsiFA5yb0XKe\n8JhXOFNhdmetMXN1rHgmLcfkftdHV8vzLp7rST88WQkLRmFGqGY87odEaU6Y5DScUrjuDiJcU2Op\nZtGpmfhZTts1STKJa0aMowzTMxhHOasNC02Fu/tj+kHGtZZDp2ZwvePQtFV2+gHHfkKc56zVXfpB\nSrtmsOxZs+B6khWoikLT0RgEGd97MuBwFHNrtYahaTQ9H11VeTwISXLJWtPENQ38JKXhmCx5JoZW\nCvNJnHA4ycgk3FhySTL7hLVWxTW1mQJQFLjWdpkkKcOIM887SjMUoeCa6imW1vnP896HqyYXLCYN\nPA++aG6kRVTKocKnhvkf91VWZVOh27Qv5sRZFBjntaic7jetwp2OXbeNE2bWMUejiOsdd1bNvDPw\nCZOCaydjzFdV9ybRLPPlvHNtL7llHr9fEvGBQNcUrrVtbnZqjKMEz1Ro2DpLnknd1rnf9RkEJVV2\nkucoAgZBwvEkplUzWK1bgGSrXZDlBUkmMTSFLy27HPsJfT8GCqIkx7NUgiTlaBijCAVdhUGgYGiC\nay0HISQ108DQBIqAMM2oaYKaqjFOUrKsIE5T9o5zWjUDx9QRwLVWbZYOXBSw2SzTb/cGAVIyc82p\nQuFfPeqR5dByjFkF9c7AZxgms0rocZSQZPJM8H+ehnxecV9W+X4RVmo2g3pyqtHRs96hq+CLkNZa\nKYcKnxqeN0A4FRhpXlxoZVxkgcxbACWx3ATzpI8xPG0lOWVWnYQZ7+2OqFs6S15Jz13IYhYQn09t\nnc98WTzXKExmLUf7QcqSZ3A4ilEEXG87LHsmh6OI/VHMkmtQt3U808A2YnTVYhKn3NsPEVLi6BqH\nk7ikE5cFeQF31jx0VZmliXZqJn6SMYxygjhDIAiTHMfQ2R9GFIMQXVNIswBdU9lq2yhCYcUz+Vqz\nTSElf3XvmO8OQpK8bC5k6ippniMRFEJBorDetE6lAzdsnbc2GqgKs5jBnbXyPry/P+QvP+ozjsr6\njp+/szyroN4fRSy5BjVbI0wKdFXhztr5gn5x1T9f+X5esdx5yGWBZxlnenVc5R26DF+EeESlHCp8\nanheH+680J0XxueNeVH64yhMeG93QHeScGetNksfVZWShmIUJqw3bGRdIIScWQ5hMuTxcUzHDXAM\njZZTttJ8b6dPzdRngfHpqnm+n3LvxE9/rVXm+g/DjKWagalpWLpGp2aQ5QWKopQUGHHGo+MQgeTW\nar1srxkVNG2VJ/2COMswVZUfHAxQlj3eWPFKRRSleJbB7ZWSmdU2dMIk5dZKgzDNaTgatqad1EwU\nHIyi0hpqmbP7IICmozIONFzTRAGkKliuGUghMLSylaqmiFOFiFDWcQB4lo6mlC66Dw/G3DsYs+bp\ntE9owqcprJ2aQSYLTFVBEQpLnkbbMc881+l5WrZJzYwYhgmTqIw/LKYnX4SrFk3Ov0OvGvfSZ22d\nVMqhwqeGF/XhXnbc9LuL0h8tXWOpZqKrgo5rzWocxmHOIBgyjjKSTPL1rSYbrad9oqUU7A5KuorV\nhsWKZ7I79PmzD3us1S1cs/zpzGfazAr2MpWRmZTbtJIlVUFw92CMa6rcXmuw1rA5Gse8+3iAoZ24\nPISgkAXJl/eyAAAgAElEQVSgkGQZQjFZaZjIQuH/+O4T+mHOKM5YOokfdMcJnqmfpFmWyrHlmihK\nGe8oM7RSDkcxy55FUUje3x/NLKD73TEfHvj4iSSVkn6UslSzMDWFtaZDmBT0g5hJFJFJSVZI8gKk\nDBkEZdA9SHK2l1w2WiX76bcf9ri7N2ajZXNrxZv1thiFCTeXPNYa9jMJDaer8qIo2Bv4DMIM19B4\ne7N15XfoedhdX1Xupc/aOqmUQ4XPBRYtCFUoHE5CLK0UYD0/QVcDclmc0GqkHI3Dk0I2fRY/mAai\n0yJnvWlzvWPjGGUWk6lpLLkGtq4wCFIAHEPB1FQeHweEac6D3hhHN8qgbyhRFTA1Dc8u6Pspf3nv\nmK9eq7Nad3hy3OfxccD1ts03b7YZRQn3j3yyrGCrbSNlgWeqfLg/YW8U0nYNrjXsWVGbEKXLTQjw\n45R7XZ+mH/Pmskciy9qPo2HMj/bGWFuCNM8J45xjP8HQApKTLKaOq2KqDnvDCYqAm50yw6lmKNQt\nu6QMV6Blm2RFqVy7k5iNpkmYZNzrjmdZYTfbLoYCN5ZqmJrKZtOdpatuL7mnkgYuI06EMuvLMjTq\nCGqmfuV3YZF593XFZ50tVSmHCp8LzFsQT/ohh6OSdG972QVZoEpo2NosaCplwQeHGS1bm9FAwNO8\n+0mYYWkKbafsj/yg53OtZXN73eOjQ593H/dJi4K1uo1tFHx04DOMErqjhI6XcWvVZbVuUxQwCMbc\nWmnw1w+6/KtHx0zilG9uSwZRQpLlCKUMbn90NOEvPuxhaSo/cbPJ417E0SSiKHJ0RbDVshnFOU/6\nAat1C1UpBeiDXkyW5RSF5HCUsDPwub3WwNAUHvQm3D8O2B2FZLkgTBL+v4fHrDYsRkHCvcMAy1DL\nDKRI4schSVoqU8/SWW/ZqEhGoUI/jOm4JkFSoKuCFc+hkAG7g5gH3XFZUJgVtGs2WSGRqZwVEE4D\n+FdZDc+7E7/1hjIrbrwqzqM/eR3xWWdLVcqhwmuL83j+63bZktOzDBqOpOUYDIOUmmOw1rCpWWVD\nHeskOF12CROznPq6XXYyu9cdczROOZyEeGZJ/aApCm3HpGcnSEoXy5JnsNlwcQ0NVVEYxwkCBUUI\nDkYhSSZ52AsZBilrDYvVhs1KTedxd0KUZKRZQXcQ8v0nI2qWxnrdRCgKGuBZCopikBeCpZrBsmew\n2arhGCrHQczhqCzu2x+F1Ayday2LKJEEacbeIACgaZvcXnHZHYUM/YQf7Y2JioKfu71CyzGRio9n\nCvYGPqsNC8/UcG2dXErqjoGGwNSV0h2klX0hbq96szhCmhcn8Q6VfpCiq6BrCkfDiFGccXOpxopn\nImXBIEhwDP0MeeG8JbHYX2Oxt/SzMLUaXEObZadd1Jv6dVYcnwYq5VDhtcV8Nst8oHJ7yaPjPg1a\n6urT1ee88Fmtn/Z/w9OaiWk665R/ab5V5Hx8YSpk3JNUyy+tePQmEX/y/hFpnvPVaw1qpsLOIMTQ\nVN5ar/OgN+a7j4f4UUkv8cN9lUlScGu1xp31Bl0/Zn8U86gfUhQ5nmUyjlI6rsn+MOB6x2WlZuPH\nGXVLP2koBKZulVXiQca9wx6OodKplRXSj45CFAFCCDbrFl9Z97h3OEEW8LAb8P39EaueyTe/tIQf\nxLy5XGO5UdZc9IOMOJO8tzvk7Q3BjaWnbVAPRhFCKNi6RmaVAX1NgXFcEKYFRVHwuFemCzdcnZud\n2qnspEVL4imr7tl+01fB1GpQFfATznR/+6z9+BfhVVRalXKo8NpiPof9vF4L0x/b1N00pYTeGYTU\nbY0oLYjTjI5r8bjvz2i9LU3jcFKuxt/b7bPd8ciKkgPIswwGQcrBaMitlQb7w4DeJCFMU47GKdtL\nLg+6YyZRgqqpKELQtA2ORjEKElUVUEAQpTiWzpdXPL6y7vHthwPWPB1FwDiIySVIWaApKsicHI0P\nD8f0w5i/vHfMz91ZxtTKa7ANhTwvu8HZusqTXkAhJW1HZxSlPOmOMXTQhcp60+KtzTpbrRo7vQAh\nJdeWHOJC4hgavVHEg15Zv7DVcbmzWsPQQFXKmElJBV4qh7pd1l8cjIITOpCMIE74ynqLn3lTZxSm\nqIrgLz7oEmUF120dx1Bm5IaL2USLsYJ5pX0ZY++8QJ2PPS32q57//lWLRbyKSqtSDhVeSZzXvnNx\nRRWmGVlefk591FNXwvyPzY9z/vSDAxxT42anhpSc9EAIeH/fZxz10VWVdk3nettFVeBwlBCnGUeT\nhN44BqGgnvjNd4cR3XGMH+fkEh71fPK8IMok4yhmpx9RFJKaqfHnH/awdQVVFfTDDFNT0DSFH7/W\nIs0L3lyt4Zg6pqbwvd0xRV5w93CCJsDQNbIip2lb1GzJcs1kfxiSFGVbzOW6yr3DgHGUMolzGraG\nEILeOKFd0xEK/HBvyPE44UsrLss1i51hSJErvPv4mO/vjbjfC5BC8OX1OkeTGFdXudGuYWswClO+\nvzPE1DV+4kaLd7adGZ0IlBZULguO/YxBeMz7+2N0RcUyNL5xvcP1Tpn6GxcS2yiJC8O0OOlNXcyC\n1NO04O44msUKpu6/KS5j7IWnAvW8/hzz+Kz9+BfhVVRalXKo8EriKu6FeY7++ZaR8zURddtgfzRk\nGGQgBJ2awdYJd1Ld0umNY9qORsvV2TypALY0jaZTWg5PBj4Ny2B/FBEkKX5UsNm0uLXicmulQZRl\nrNUtwjRlb1DSa2y2XJZck2M/4mgUo2oKNzs12q7B477POFJ5Y8Xg2E943A/QVYUbHZv9UcJqzcDQ\nVZCw2TQZRDlZLllvOLRcjV9c3eLYj7nWck+uM2G9aaEpCp6lI4RkFKa03bJhkCIUjsYhP3ljCUWB\nzWHE42MfoSj81M0OX17z2Oq41EydH+yOeGujjqmXnEjf3+kzDDMcXUFXxblVyVNlURSQpBJVkahC\nnRWp3eh4/NxtMDUVXVUxNDFjrV3ky7pMQF7E2HuedfA64lVUWldSDkKIXwV+Gfgq8PtSyl8+2W4A\nvwe8A9wAfkFK+ceXjNMG/kfg3wS6wH8upfy9F59+hdcNV/Wtzrd/DE+a/SwGF6c1BKooe0FPXRTT\nHsvTeMHNjgd3oG7rs4b3SVawMyyFZMtV2WzVMDRRdlQbRbQcg+W6xWa7pJVe8sxZeuxKrezAdjgJ\nudnx8EyD9/b6LHsm/SDlrY0GhibICslqw+Z4kjAMU1qOQZrBqmfinBR0HfsRhqZxreXQroWYmopn\n6wyCFE2Fa7ZF3VLZH4Z8dBSz3shpOiYPuxPqjsGSZ5TXBzzojfFMg5sdi51hyWJ7c8ml4RgIUfrf\nb63WsXWVu/tDtpc9HNMjTMpOcXkhibMM0NgdBgyDjKwoaJw0IHpvZ0Ca5yiKoGmbGJpAU5RZuupP\n3myVrKxZSaGxNwjw4xwJrDUcpj27e5MpZ5UycyfNuwDnea3Oo1/fGwRM4rI166smUF/F2MGL4qqW\nwy7w28DfARZJSv4U+KfAH1xhnN8BEmAV+Drwfwoh3pVSvnfFeVR4zXFV3+p8+8d5i2D+mMNJyOEo\nAcZ4ljEreHp/f3gqUB2l2Sy1c1osV8iQjw59/Cgh1HV2+kfkCASSIClYq1uM45S2Y56i+mjVylXv\ndx/12R9GcAv8JONvnoxoORqFFOyPAsZRztEoYskzeNgL6Qcx33/cRyoqS66GlIIf32rwze3lsstc\nkPDkOKLp6Gy1bYRQ+O6jPrahcmfdY3+U8KTvs3sc0q4ZOKbGJMlZ9kyiNGN/FPKnd3tsNE1WGxY/\n2hujKoIf26zTciyOg5goLfAsjZ4fcffQ52iSYOkqkzjn9lqNg2HMsV+m1x6MYnRVstFyadcM4ixl\nfxDzsBcgFEoSPlVhyTOwNIU0h2XPYBCUdOeaGtKbJDw69snzUjF1XJO7B2OCJOftjQauqZ77Tlz2\njpQV7yMGQYKmKs9NpvdJ41WMHbworqQcpJR/CCCEeAe4Nrc9oVQMCCHyy8YQQrjAvwv8mJRyAvyp\nEOJ/A/5j4NdeaPYVXjtc1bd63n6Lx0yppC1NwzHUc2m2S6bQYtYQKCvKgGeaS1wjwjUcBDmZVDGF\nYL1pk2Q5hqZy79CnayezTKVpUxpb16hZKmIM+8OIr6yXAupa02UQxsRpwcEwomXrDIKMrMjRFYUb\nbQdFU9AV+PDQZxSl+FFGz485GIY86Qc07To106CnRCR5gaeq7PdDTAO+slbHMwVBJlj2DNbqNj0/\nYm8QsjMMyoC3AnFazAr1frgzRNd8wjQBFN5cqdNxLd5aL6uVj/0YMYo4GEakWc5STWOpVpIDRqlk\nvWmxN4gQwEbLoumoOKZepu2GKUUO7+0PSQv4219Z5VrLYRyXSQJ1S6ftGPT8iJWajWtpLHsGvUnC\nOE7wk9NBZFUovL8/ZKVmn+n6N/8OvL1RZxKnp+IfrwpexdjBi+LTjDncBnIp5d25be8CP3/ezkKI\nXwF+BeD69euf/OwqfCo4z7c6q0rOixmx3UWNfxbH0lWFSZzhmurMnJ82pO+OI8ZhTi5zkkznST8k\nLwpWGxYt26SQkqIosAyNtzYc2o5Jmhd8eDDmKCirp6WUBEnphnrQ80mzAstQSHNJEGU8OvbZ6jh8\n43qHUZhQKwz+/KM9jv2Er27WqQmVYajSdFRMU2Or7fD/vH9EP8j4YH9MdxwxCDNqhoqhqewMQp4M\nQoIow9AVJmHGw15AnktuLLlsL9cZRTm6qhKkGY+PQ77zoE+Wg2uqPO5HFEVE3VZxTI1RnNHvhYzj\njLarY+sqy16Lm8teSeuhKBSypBlP8gIUBUUp6TMORwlSSo7GCYMwZq1psd4q6xaKAr77+BhLVxnG\nGZxYea6pMghLq257qSQJjLKi/NvyuLXaYLV+NtHglMW3djG9tqEp3FiqvdyX8iXiVYwdvCg+TeVQ\nA4YL24aAd97OUsrfBX4X4J133pHn7VPh84HFzmmL7qPLjpumckrJGXO+bht4dkyUCnRVYXvJnTUE\nGgRj/KRgxdO51ipjE55l8KA3Zm8UkWQ511oOihCztp7bSy77w5CDUcIwjDF0hYalz1Jpn/RD/Dhh\nvW6z2bR458YSWVHwdpqxPwwxdY1jP8bSBdeXHFxDJU7K2oO1ho1pqHy4P6YfZmy1LJqOSRgnrDRM\nPFNjteFwa6VOlGUzCybLC1RVIU1zNpoORVFg6CpbbRddFScpuAmFLDgcRcSZZBKn2IZGyzYJYp+6\nrfFjTh0hFI4nEZoK2x2PplOSE/5wf4If5URJwa0VE0vX+PMPD7l7MOGrmx7/xltrSCm52SkD1vPM\nqdOixCh9yqR6UTbR1BJ4FS2CLyI+TeUwAeoL2+rA+FOcQ4UXwGKf38VA2/ME4c7bd1qVPOUJSrLT\nwefFHPdpvQIIVjxzRq0wLU6bD2ZuL3lnehSPwoTiJAPq9knG0f2uT92OiRLJVsuibpvc7NTKdNmi\nmAnjYVhWZY+DlN5J/4WdoU/LNvnR3gAhJZ5t8NNvrMwK4+q2UwryomAQKDQtg5qpEOfg6pItp1YW\ntJk6yyf9HZZrBlkB+6OYr6w3mCQZD7pj8kKy2bLxTIPdoU/btTA0lfQkpUtTdFbr9il67S+tlPfw\n/b0h7+0MKArYG0Q87oV8dDhC11W+sdVCCCgKyaNuiB8mrDRcbnZs/vWvrHEwCnhrvTWLudi6zlrd\n5CvrLZpuWVOSnpAatmwTKNt8GprCSs3m7uEQVVxeqWxoZVxivlL68xDYfV3xaSqHu4AmhLglpfzg\nZNvXgCoY/YrjvD6/i99fNQh33r7TqmRgFjCeP89ijnvZGCelYeunqm3PY2edup52BiHjuOwvPd3P\nswzGccLjY58wLVjxLPw4wjENttoOrZpBC4O9QcD9rk+S5fxgd4yUEs/W0TQVTVV4cDjhj7sHdP0M\nU4PNtuBwEtKR5iwdN0xK6u39YcyDXkAYZyRSYmsKm62SXdVPMg5HCX6S0h0nIKAoBEd+xMNuSM9P\nWPZ8fvxaE1tXeDIIyXPJat0iSDKGYele2x+GjKPaLAg/vYfv7Q553I+oOzqgsDsM6QcZd1YNRmHM\no+OQSZxzPIn54LBgrRHjmCp31hq8ufrUwK/bBisNg7qjoShPn884SjgcJbTdsmq6bunULG2WONB0\nQlo148wzveg5f14Cu68rrprKqp3sqwKqEMICMillJoQwgRNOS4yT72IpT3f8lVL6Qog/BP6xEOLv\nU2Yr/SLwMy/pWip8Qpiu7Kd8Oud9P//5rLGmnxdVva54p/szXNRp7bweD1O+Hz/OGARjoixjpWY/\npdI+Ocf+MMQ2VD469Lnfm3BntXbiL1eI0ww/zlFFwu7Qpz9JuNcd03IM1hsm19o2NVNnfxiz1rB4\nf39MN0hZqum8tdEkLySqEFi6hmtk9IOESZjy3v4ITVHoOCqZo5EXBY+OfJ5I2GgLwiihaWt8edXl\ncT8kTCSmDYoQvLXhMQxTrrdrqKJgHOWoSDRdwTFUbq16xFlGEOd81PXZGQToWplmeuyXZITIAlVI\nKMAyBEmSoytgmQZFIdBVwVc3PT44EHTHMdtLDrauzrrndcfRjIZks+myM/BRhUKUZTRtnYal0x2X\ndSlpkZXZXJSJAaw9dRdNLcOWo1/6nK/6TlX4ZHBVy+E3gN+c+/uXgH8E/BbwPmWNA8AfnXxuAw+E\nEL8O/KyU8u+ebP+HwD8DDoEe8A+qNNZXH4amzKpYL/r+qqu7+X3nV/nAKf79RQtgfvxnzUVXFe53\n/Vka5UYrZm8YkaXlyjrOAn6wO+JGxy5TZVUFx9DxLAPPKlftf3HviLW6zcOez9EoYhJn3FpTeHPF\n483lBu/t9rnfHaOr8OX1GnGWs73sEMQFT/oT9scRP39bYRKn/M2TAZMo5aNugELZryErJDVdQdfL\n3skHw4gPDydsNm1ssySxC7OMJc0hTCSdmoal6zScsoPaJPUBgSIEhqaw7JlYust3H/VYcQ1cQ2Mc\n5rwX9Nk5jvjh3pBxnBKmBUGaUzd1HvdDCllwveNQmBpJJhmGGQ+PA/YGIVtth0mcMzpp7fntBz0Q\ngm/ebKOrCnlRBp7zAlY8k54fMwwyCgkrdZNRmBKmObdXvVMB5lGYMAjLSugozS58zlfpLV65nD45\nXDWV9bcoFcF539285Lh/svD3MfD3rjy7Cp9rXLZSfFaHN7g4FjK1dFa8km47iHPuHY7p+wl+VnBr\nyaVmlsR7jqGx3rBI87K2YnvJY28QcHyUsNGwaTkak0ijXdNZq9uESelXHwQJ+/2ItmPQcg1+9tYy\ndbsMaH90BEcDn48OHbbaDrqqstHQWW85aMB7O0N+dDgGx+CtJZc7a3XSvOBmx8JQdQ7HEXVb5816\njdurdYRSrr77YVkUGGUZDVun55cU2muNkkvqfnfM3iimYWm8vdHicBIyjkrFcmu1jhAZg6Dg1rJL\nx7P43uM+e8MISy97WuQS1psWWy2bhqnz9mZzllLam0RIBJxUNS9yGFm6hqXlfGXDo1MzabtlbEeI\ns6v/j2shfJ5qCV5lVPQZFU7h01yVXZSuOi/0k6xcZU4D1PPUznf3h9zdH4OA26vezMe+aOkcDiPe\nWm8yiSOyQiHKBG1Xm40nRCnwppXVq3WHYz+lH8RYmkbL1cgLMDVBnEnSosA2NBxbZRAm7A8jTE1l\nZxDQHcc4ukKYFhwMfYQo2GhaFLLga9c6APT8mEM/wVZLau+jSQJSstly0VWVcZxS9pYue0dbQuOH\ne33arsXD4zEtx2Sz6TAIE9K8mM3bVFWiJCdMUh70JrOWo5beOIkbjQkzn71xxGrTYaVusTuM6foZ\ntmFQtzTuH04YhBkSSZoXs0C3Zxl8acXF0koq7N4kmqUcA7y326coRKlET6qhp9lIixXPV0lTnsfi\nO/l5qiV4lVEphwqn8CqsyuYD4G8su6x4Zf3BYhVtyYZa0jP0JsmFTef7YYyuKbzRqJMXJb11lpe5\n/WGaz9wih5OQu/sTtpcdNls2j3ohnZpKVhh8f2eEIuDNVQ+BQts1WKs7KArEWcHBKOSv7vU5GMW4\nhkBKyf4wxk/Lpbala6w3QwAKBBsNm6ar03IMWm5Zg3HvyOer15r81BsdVCG4ezDhYS+kO47Y6Yc0\nTnz0W22HTk3n/b0JQkgGQUKcSUxNMIoyjscxDdtkq+3M7keUZhiaRp4VPB5GTKKcjmuw0TS5vdbA\nNhTuHfrsDhL2BgFBUmAoR7zzRgddLRWAIkqivYN+MqPjWPIsdgY+u/0I11RxTPXMc/i479Ti8Z+n\nWoJXGZVyqHAKr8KqrG4bXGvZjMIUzyqL2hYD0HXb4Naqx/ZyGShfDE7PrzY3my5ZXrb5nBLrPehN\nQEhWamXcYdrmMogzslye5PkbrNRsen5MzSz5l9Ya9syNstawZ/OydQ1DU+mOY2RR8KAfsN2qUXc1\nOq5FJgtWajbHQcTNjsu33lgC4EnfRxOCN5YdNEWl5ZisN0uGGkNT6E0S3lhyOV6JaLsWuSxoOSZ1\n68Syk4KWY3D3YMTt1TrLnkVa5Kx6zhmSOsdQ+NpWi3bNZ3vJo+noaMpTzqIwKXAMwU/cbPLhwYit\ntstm0z4zjmfqM3dRkhXYusqt1RqbTXd2Lxef5/zn4vN5loX6KryTX0RUyqHCKbzoquxluqMMTUFT\nFIZhVlYdW9qZeU3TXxcznnb7wcxNNAjLPs/T7570A26veoRpxt4wxD1x20yFY7m6VvjB3phH3Qlb\nnRrHShkY3172cAzt5Nq0Gcnd1H01ChO+ttWmN4n4o/f26Y0SHCPiWqdNlGXUTJ2PuiP+6n6Po0HM\nVttGURQGQUac5zi6iqML3jc11jybrY7N3iDGj1NMTaXp6tRtHVvXeG93iKn7bDZr1C2dv37QpTtJ\nMLQJy57JzUaDXJYZQY+PJ+wNQjo1k48OJxyNY1RVYSPLgZJGZOrC8+MMP5FoakHTtcjygsf9ksDP\n1jXuHg7puBZNpwzej8KEIMlmRYK6pnA4CGf1DYuEevN4HmuishQ+G1TKocJLwct2R83TcZ+HqeBJ\n84J+kM623+/6CAHXWvaMsXUam1BVhawoGEcpKmXHMksvfwK9ScT9rs+KZ9KwNL6/M+LDrs83ttoI\nAY+PfVzTYCUrBeb3Hg9BwC/cWSXOMo7GCddaDvvDgCBOOfIj4jwniDNGQYamCRqWwbuPBxwNI350\nNGK9ZnNjyUEX8MHBiFGYousK6w2bja5DmGR0RxG5lOi6yu3V/5+9N4uRLM/O+3533++NLfelKquq\nq/dlht1DcjiUKFGiQBiGAcsPBmxAfDAEPdjwk98Mm4YN+MGvNmzo2YZhGJAfbBmgQVqkKc5oyOHM\ndM9UV9delXtExn733Q83Iyqruqqne4bSdPfkBxQyY8mIqHtv/M//nPOd73PpWAo/eDRFEuCbVwu6\ntsosLlAlgf484c5pwFtbGW1Lp65jvnt/xFmQsNM2qakJ0pKsyPlxMSVMClZbOq3zBn6U5URZdm7n\nKRJnNYfTmHlcIovww/1J4299pc2ap1NWUJ0PCNb1s858r657n3lNXGYDX35cBodL/I3g5/2yvyzj\n6Nr6Uut/wbO/+LzFwtMylCWjJisqWqaMrTXlkrIqGQSNOqggQM9WqGuBvISWLS+ZNk3Zqqndrzo6\nr657SELNMCywdBFLlYnzCkWC/jxmEuaoEsyTioNxSFXXHE8ThkHCPCno2SrXV1wMVWS3Y/JgEJDk\nFZoMH+y2GQYZhiLSsjTKumaW5Gy2TFbdCl2VaJsqb2y59GcpVSlQlAWmJqPJIo4m8/qGg6XAzTUX\nV1fIywpTkXl05tOxFdZck5apEKYFG64G1CgSTKOKt7dcJBFO5wkDP6GqSmxNYhwmpHmNq6vosoSm\niEiiRFqUmGpTNnt9o5Hi7tpNqS7Jm9uCEJKX1afmGT7rmrjMBr78uAwOl/gbwc/7ZX/Z7vJ58568\nfOoc1rV1wrSgPq9vL3oSR9OQomqUV28fzwjTgl+72sU1ZGpAkxVUuZHciLJm4ZMEkQeDOT9+Mqao\nBQZ+xChopq8drSbJKhSxRldEbE3l/nxOfx5jqiKeobLbNRmFKf5pxmBeEWcF39rrUtcCYVbweBiy\n0zIYRCmCIPLKuoU7z3kwmmMWFfOkIEgyXl132GpbSBIokoytyeRFTbVS0rN17g0CgqTgo3nMNCxw\ndIVB2Oe1dY80r7h1OCbOCnY6JgM/5ngSklc1q55Ox9H5+GTGwSggyUoksWarZbLqaLy91SYpStYc\ngyDOmCUl617j7SAIoCsKfpKTlwXv7XQZh0kjOpgWTOIUQ5EY+hn3ByG7XYOOqTMKEvykEVB8mT/D\nJb78uAwOl/il4vO6f110DluI3AkCy53/PM6Is0aE72Qa86d3zwABx1CwdQUBcAyJrt0wnR6PUuq6\n8R348f6UnxxOWXF0upbG8aRhB5laE1Qm51IdXUtjzdE5mcb4Kby5ZbDTsYmzkroWmScJIJAUjevc\nhwcz+vOYGys2nqkiSQVvbbcAuH1S8yQOGPs5QVaSFTWITcDJ8pxBkDANM0xV4XiS8Ek/QJRArCDI\nSsqqRBYlsqLm2opFmldIokCQlXz/wZihH6OpCr/7+go9R0eoYBQWnPpTyrqmP0to2Tr3+j7aeWnt\nYJpy9zQ473PISJLAuqvTc1TapoYgwMksZRplSxG/vZ5J11aZxjkH45iTaXMMLgoofhkYcJf44rgM\nDpf4N47nS0kX5xte1tReUBgXAWPhG7DoGbiGyvb5z7ah8a2rMYrcqJNamoQsPvVkyIoKR5M5mJz3\nGMyGHiqJIqMw4u0dj46pNg50VYUfl+emNjJFlbDbsSjrhtE0ChJkUeStLRtb7xAkGWuuiSILdAyZ\nj45mrHoaLa1xlnMNGUOR+M6NDqIgMosyZllBx1C52rMp6go/Lhj4ceM+R42hGYRZwZVes9tPC6ir\niv/4DQcAACAASURBVH6Q8v6VLnFeIgjN5PhbW14zCZ0WZGXNmmuy7hn87dcErq5Y1GWFn+Zsti2K\nquJq1yHIclZtA1OVsFSJ9692SYsSQ5UwFHl57LOiWnoprNgGAz9euus5usIkyrA1BUUSXjiPcNlf\n+GrhMjhc4nPjb4qR9LKd5ChIuH08QxRFdjoGcVZSVCwX/ShrpK+3WhZJ0TjFLTKHizaSZ0GMa2jo\nikiYlpRVhWso3OvPORhHuIZCVpQ8GcVEabNrtzWFR2cR3x36vLOVsts12Wgb1LVAXVecTGIOxxGf\nnM7Ji5rrKzZPxgG3j2fMooyWpWIqKZ7ZWIU6usRmx8TPSx4NIrw1lbat0p+n9OeNwN2mq2Ibzb++\nn/DDJyO6ts4szrh9MkeXRbY7FvM4xrM0ikpg1TO52nV4PPKRRJnTWUKaF4giyELNMEjY7Vqse+by\nOM/jDEuTeX3DwzXUZ3wUBrOEB32fLK/OJ6RNLE3mSs/mZBoxiVIMRWaYF8sAtDj3othInphqgaXJ\nTKKcsq5Yt63zOZRkqZj7y7zeLvHz4TI4XOJz42WL+hf9Er9sJ9l4MjTDbf15wrqrs95qpCEW9pCT\nICPMCkRBJCsKwlTBNZ42rJvp3YxhkLFiqwhCzv4oJUhzasDTFVYclZahUZQV656BIAhUdc3t4ymz\nKOMHT0bcPvX5xm6Lb1xpczpPeTBoaKJFCXFWMvBTHF3meJpy5icok5gCWLF0rq9ajV90WREmJRtt\nlZ2OtfR9mIU5ozBj6qcIskBRVNw/C6hKuL5qIYsiflogIXM6jzBkhU1DXrrTUUN/nnLrZMo0yrE0\nma22gapK3D6Z85OjOe/ttNBVkY6pIwgshwp7Ts750DM9R+fHB2P+n08GuIrEjTWHtKxYO7dIvXPi\nE6QFQVpQlCwH3xbnYyGSuDiPC9+Go2nI0H86KAc/n8LqZTnql4vL4HCJz42XLeov+hJ/VsB4WfO6\n5+h8+0aXUZCdl1/kZ8pJb266jIIMQxUZ+ilJUXE0beYVgCV76ZU1hytda9nIHvo5FQKmIrHialzp\nNr7SLUtjnhRstBqhP9fU+fZ1jdc3HIK0YLtrc3PVo2vpbLd11s/LRfujmKqquNKzUWWB+2chiiRi\nKSKeqWFpCo7eSGv4aclu1+CVNZejacjpLKWoGy/nRSO9lGuudW0kSeSDvQ4dS+GNTQ8/SXl0FhMV\nJa9vtrA06fzYKCDA+lxDEgReXXd4fdPD1VW+93DAg0HIR4dTbE3h/T2ZjVYjt73QRFpkDgDv7XTY\nH4UkRYUogiY0zCVbV9npNJ4Qm55FfJ45LALDRZHEBfZ6zjJoXByUe/76+UWvt0v8m8FlcLjEL4wX\nfYmHfrJkFy28Gn4WVFlkt2uz230aXC4+tu6Z+EnOvX6AqUh4pkpWNHRKRRaRxKYEUtaNr/QgiGkb\nGrtdk5VcISsaW8yjachWq3F2ezwM+KtHY17fcPmtGx26lo4iCzwchDw+C8iKgjc22vQcHUOV6doa\nptpQX1VZ4J3tLp6pEaUFiixiaw27x09zqgpkseJwFGMqMkfTmDjNMBWZom7opUFcseqqfLDXoaxo\nmFW1QMuSkUTYaJd0LINVR+dwErLVNtBlmY+GE/qTmG7L4ErPZuAn3D6eY6sS7+16hGmJKjXN+VW7\n+ZuPTyasuQa7XbtRWX00ZBCk/L03NgiynLpqdJ86loZ3YXBt6CdEWXGuIxVztetgn/tG6MrTIHdx\nM2DrMkFS8Gjos9Wyfq6d/yXd9ZeLy+Bwic+Nz6KdPv8l/llDbJ+FrKgakbisYvV8xkEQIExLfrQ/\nRRRqHM0gSHOmYY5nNjv3JK+WEtIL45lVN6OsYBqVmKqEKECcNdPQGy2TW0dTfno0Y93VeGXN40/v\nnHI6jhnGOdMoY8s1udsPkESRDU/nStdkFheYqsjQb4x5qkogzHKirMJQG/G7WZwTZTkPBj51LfLe\nrkecFhxPUnRVoO3o1GXN43GIpyt4po4owN2+T1GWHE8TJmGGpUnEWU2aF+xPUqKsxNIk/uTjAaMg\n4ZtSs9P//sMJT8Yhu22Lt7dd4rzmZBoSpM1nAvjegzHrnk557ov9zz88Yp4009nfvNLhzqmPnxTM\n44BrqxauoXI0Dbl97PO9B2dkecWqq7HuTXh9w+MsyFBk8aUDb88PxV3iq4XL4HCJz40vkuZ3bR1F\neta2E/hcvYmL3tBFVfHj/SmC0HgOV3WNo8nMk7KxoHRV8qLGj3NEsWa37TXWnmXD519zDM6CBFVq\nGE5dS+N4FnLmJxyMQ4KkbMpPVU1/HnGvP2cwTREFcDWZuCzICthb0djr2ZzOYrKyJM0lTucJ/WlM\nRc1r6y6vrhvkZc0nJ3MUETRJIkhLhCqnKGqmSclZHOPVGtfXNH7tqscPHo4Js4qyKrEMFUUUWLFN\n4qJCEmAe55xMI66vmLyqyth6I9b3m9c65GXNOzttTE3ivZ0aV5e5tmKw0bI4HEdM4oZSutdtykqj\nzRRdErlz4tMxFTbbJq0kb4bpzqekNUXgzsmc/uy8VDdLuHsyZX8c4GoKwwD2hyGmKvLWdhtdbsyA\nnr82FppLez3z0hP6K4rL4HCJz42fx9TnRYY+8NkNxhfNNwDstC02WwayKHA0ienaDf/+LEgRxUb5\ntKwbae+jacI0LOj7zYT0JMzZ6VaUdcUsLtgfRcyiHEMV2O2YqJKIKkus2gbTIKfr6dxYcegYMp6l\n8t5ut/FxiAssVcQxFN40FVxd4sk4BkFgr2eTlxW3jmYkZcW1FQtRFLBUhfeuuAiIDP2YOK9xDZmd\nts2b3+lw63iCJEjoisCaZ1DXFaokIUkiqiRSIuCZOm9utZZN97d2Oqw62vKYWrrEmmdg6So1YGgi\nWVbTbSmI53H4as9hEiac+hmO0fRzUl0hLculVpUgQJA01F1HU9kvYjbbBgISV3oaUVpy7yziSs9m\nzTWWbKjnjXrmcUaQNgN1C+nuS3y1cHnWLvFC/CwG0udlKP0sY5fF6+iKjJ9kn7Ii7Tk6b2559OcR\nXUvD0mX2RyGiCJaqcOd0jq6KtAyVsqqXom+L5rVryJiKTJzNGfkpbUNDloC6Iily3t7ugiAwi1LG\nQUrXVbkpuvQslasrJquOiSDUPB42Pgq6DJMgo2trqLLIr13pocoTxmHKx8cT2qbOhqPQMmWurdjs\ndCzSouDGisc8yRkFCYN5zJ2TlMNxzN97Y50sr/j4ZMyqY/D2dgtXbzwmhBWLO32fK10TSYQ/+ukx\nUVJwdbVxnFMlkXXPoG1WJHnJMExQZYGyrKkq2OtqeKbGNMpQZZGWobDhGrRMlbKCsqzPVWqlpV9G\n19bZ61UEaY6rK3xjt0VWeHDu73AwCpAVkZ22/cy5fZHnQl5WS0vQ54X4LqmpX35cBodLPIPFFzgr\nqqWq6WJ+4KL66aInsM1nZwGfZexysbdgqI089UW65WJRSYqCcVhwNAtRApGfHs4YBhmPzkIenkX0\nbAXvXCnUNRpdJUVqNIA+PprxaBQwmGc8PIuoqPGTkh8dTBmFKYosYaqNyU2Q5hRljaZKGKrET498\nFNHH1htrznVP5+FZxEeHE35yOOHN3Ta7bYOHZwF//WSCIYnsrpjYmoapiXz/4Qg/LdBlmZ8czJBk\nkf/vTp/9UYity6x7jRje6Tzlw4MxqiRSVTUfXOtSVHAyCZnFJeMg42SW8Od3B0RZzZW2zkbbwk8K\n/ORpb+Puic/hKKZjKgzDjBVLZbvbZBaKLPLeTgtLl5EDkQdn/vkEtsydE583tz3e3ekAcDqPOZ6m\n1MC6a+DoMkfTsLEyHUZMw5zDaciK+/RcPk9AWNi1Dvx0eQ1cUlO/WrgMDpd4BosvcNt8Kmh38f4F\nFj2BF/UfPu8O8WJvYatl4erKM3TLhcGPo6ncXBfRZZlJlNG1m9f1DBkEgZ6lEGcVAk2NfhYXFFVT\ns384ijgcJyiSQM/RWHdNdjsCZVnx8ckMR2v6GD1HRZFETucxeV7RMVSivODxMOKtLY9rKwZVDSu2\nQstQqAURRRBYcw1kyaemYUJ5usZrGzZ5CX/9ZEKWV/hhRFwK7PWamQ1LS7jWc3h9o8U3r7TJihqh\nrjiYxIyijP1RyCzKsXSFbUlkzTUxNAFXV+hPE1qWQstUkUSBx6MQP87ZbDXeC6amMg1TgiRHV0V2\nOhZQM4+LpfRInFXsdAw6psInfZ/7pyGKLLLXswGQRJHNloajqQz8FElMibOKrq3yHWeFUZhwc/XZ\nJvSLCAgvm5C+pKZ+NfC5goMgCP8x8AfA28D/Wtf1H1x47HeB/wHYBb4P/EFd109e8jqPgTWgPL/r\nu3Vd/97P+dkvcY6XLcafZ5H+LAvGi39zsUzgGiqrjkZWVJxMY1RZwNGf8ucX8td7PYuNlvmp91jY\ngIZpiSRC29CW/giGIvHhwYiupWNqEpYqAzWurqDLMklRcKXTYZ5kHM8i1h2N7Y6FKgvEWclWy0IW\nY/7q8QhXl3hrw6FnKaiiwKpnoEgiHUtjt2ud78xzRAFeW3dwdJU4y/HTgne2O/zkaIxYC6hizXbb\n4gePR6y4Jv/gLYMHA5+ttsG/enhGx5T59vUefpSz5qg4hsL+MMTWJLy2jkTNraM5r63ZvLnpcTiJ\n+I1rK2RliSiIhGnEVsvEUGWCOMePM0QRplHGd26soSnNXIckwLdf6fF4FGCqIuqCRuqovLLqIYrN\neZqGGVlZ4RgKUHO16yxNeLKiIisLwqTizU0PU5VJ0ooNT0USROZJoxi76TkkRYEiKZ+ajViJG2e+\nu4MZ6+5TU6HnDZde5MHxfMZwWWr68uLzZg7HwH8D/APAWNwpCEIP+GfAfwT8n8B/DfxvwG98xmv9\n23Vd//HP9Wkv8UK8LF3/PGn857VgfL5MoEgij4Yh0yijZap07aeTtwuBvMYDuikdJXm1fI+FDeji\nb8PU55MTH00WcXWZnxz56IrAuzttNlo6j85CDiYR7+20ERCYRjNUSeJHT6aMgox384rrqxazuMDR\nc+6czvjwcMrVrs2VnsP9YcDdU5+bKw71uTDe9x+N+ItHY6Kk8VA4Hsf8zhtr7HQsyqrxV/izO0Mm\nYYosi9wdRARpwRsbEBUlh9OEOyczRknJ2xsuu12TBwOfg0nEWj/gaNZYkL6x5hJlBUFWcus44L3d\nNt+61kOVRe4NAvp+wkf7E0ZRRl2WZGVNlJTERcnhrJEA/7fe3ua7D4Z8eDDFUkXmSclu2+D33t7A\nUCSKEv7qyRBNlnljw8VPc8K04mQWkJU1D88Crq04vLLW9HV++HjKySxBkZqd/jhMOZjKWPqMJG/8\nGYK0QJNltttNQ3nRVB76CUfTmHuncw4nCW9slux2rb9xVd5L/PLxuYJDXdf/DEAQhPdppG4W+HeB\nW3Vd/+/nj/8hMBQE4bW6rj/5G/6sl3gJXpauf540/ouk+s8/d69nkRXmpzIHYJmFzOMMPy4p6/IZ\nkbyLf7swrU/ymu1zi8wK6DmNb8CDgc84yIjSDF2VOZ4k7K2YvLnp0J81rmq2pjCLC/y02TVbmsL1\nVZOsKBlMEtK8xDNl9noNf/87N6CliZSI9Ocxiti4z+myhCqLHE8EknOHtrwoUGUVV1fwTJXxWUBd\nlqy1THZEgb/7xjprroGfFRyOIm6uWVztWhxNYyRJpGUprLg6v3mji4BAklcUZYWpSmx7BuKVmqKo\nmcQZP34ywU8zakFAoCJKKvw0453tFmfzhFGYMY8TYlslLUpUWcJPMk5nKZZaIGy6bLUs8p2KeZLz\n4cGM+/2AYZBjahKOptCxFCpgo9VoR11ftVj3DCRBomvLCED8krKha6iMwpQ1tzlPC0e4n3dhvyw1\nfXnxi/Yc3gQ+XNyo6zoUBOHB+f0vCw7/iyAIIvAj4D+r6/rDFz1JEIR/DPxjgN3d3V/wY3698Vm7\n/S9iwfiiFP9lCqrA0iLz+Wb1xd/zssJQBeJc5MnIp2NpOLq6bBgv3ufNjTZ3BzPWXINrq84z7/mb\n11bxjMbExtUVAFZsA1kU2VtxWPeazyEIcDSJ0SWJb+y4+HHOcJ5i6hIbksHeqnte9kop64rff3eX\nvKj46ydD6lpgzdW53/cRRZG2pfC3X1lhGDTN+Y6l8cFeG1mUMDWRjZaBoQhcX/Xo+/H5/8FFEUVe\n22xjaRL9eUpeFiiSxKqjL4/X0E+I8wJVFsgL+NbVLp6hMgxSiryiqmFvxWSrbaGrIo7WeFknN0uo\namZhwjyvmQQp667JezsdLK2x8MzL5lxc7Tn4ScaqYzCJUmSx6euosshv31xd9nZGQcJ7u202vWf9\nnxcMstNZxDzOn/GHXrUNplHG37q5tixlfZHy0GddU5f48uAXDQ42cPbcfTPAecnz/wPgh4AA/KfA\nH51nGdPnn1jX9T8F/inA+++/X/+Cn/MSnwMvSvG/aGkKeOb3SZTTNjXkNOdkmjCLCzwjZRoVz0hr\nDIKYwTyjZca8anvPvFfbVnl13WPgp0ziFEdXOZyGDOYZN9ft5WIU5yUfHTYqqWVVEWYFbVOjqiFI\nS+7251iaxINBwCTMUSSRaZTx44MZ222TjbbOMGyE/7q2iq7IGGqFIJRsejqCIJCVFZIoMo8LJEnl\nbn/Og7OmgawpEh1LpaorDifZsmzmGgphVi532Kos8niUcutozizKqampOwKSCDtdi6NphK2rvLHp\nLY/n4STgeJLw7q7HZsfk//7whEdnEaueQctUaFs6ggiHk/gZxteqo3Fj7dmv48UgdTRtnr/mVp9i\nlQ395BmxQ0dvAscoTM/PVbqcfL44z/KzFvvLUtJXA79ocAgA97n7XMB/0ZPruv6LCzf/W0EQ/hHw\n2zT9ikv8kvGiFF9XZCQxXZaELmKxA6zO5So8XWHgJwhCjSQYzJOc/jTkh09ivnNjjZtrDiezmH/x\nSR9NlgmSjP68keCO0hLPEHk4CDgeRwiiwLvbHaxzI580r3g89OnaOkVZsuoYjIKUaZTzZ5+c0LF0\n/DRjs6WjqyLDeYqlSnzzaoehnzAMMq52LUZ+iigItA2BP7nVp6prLAU6psRgnpHmOaYsIAo1QZoR\n5wVBnPN4FFLWNQLgmjKyJCDUJXsrzUR2Q58V2GzprNgGWRkCKookUNc1YVpwN8p4NPRpm3rTrNYl\nHE1i4CcYqoRnqHQthY7dZrut8/HRlGGQ88q6hSSIlFVBnJWsdgze3vaIswJREKgqSPOCJC9RJIFV\nx6Rra4zDZKl/pMoiQz9BEJrpdVVuptdlUeB4EtGfhXznlXVWvaeL9UWxQ0dvXPSyoqJtaKy6GW1D\nW06/L66ZixPxL8oggqSRXXcN5bKU9CXHLxocbgH/aHFDEAQLuH5+/+dBTZNFXOJLgOdT/IX1ZpJX\nS9+Ei48tZhTSomAwz5hFOUM/w9Jl0qIizir+5b0R989CJEHkH75/hT/66TE/ejKlYzaBpChqrvQM\nylqgKisOJwnzNKNlNNO/iiSQZBBmKT/abwbebFWma0dkZc3904BpnOOZCqIgkmQ54zDj0cjnrc0O\nh5OIh8MISYB7/YD7gxmDWYYgwcEwoqgrdtsWH5/4ZGVNVlZ4hoJnaJRlyWCe0PdjNFlis22y5VmY\nmsSjUYAiCOe1fIXbpz6qLHCtZ5EWFWFS8GgUMgtzeo7GJMpIshJFlrjaM5lFGaMoJ0sLTuYJR6MI\nRWmsS19bdzmZJnzvwZBRmJOWHSxVAQTu9+fcOZnRNnRESeDxMGQSNlnKvX7A6xsuez0HW5d5Msr5\n6HCGIMCaa/BoGC5ltHuOjp9kzYzG4xHzpECWRN7d6RCkOVe6Dqrc9GFUWSBIC5QCRkHDpNIVmUcj\nf7lpWExIvyiDuFhGOpqGPBpGz2R8l/hy4vNSWeXz50qAJAiCDhTA/wH8d4Ig/EPgnwP/BfDRi5rR\ngiDsAjvAXwEi8J8APeAvnn/uJb4cuGi9+SKZ7sWMwpWOR8tsFFAHfkxeVZQVrDgyv32zi6XLvLXd\n8OKvdm2Kquad7RaPRwE/OZoTJCVFVbPdNlnxdDxNRhAFTFXmp0cz6rrm5prD9VULT5cZRRlVDTsd\nk2/stBmHCR1L515/xo/2Y/YnAVFaU9UltibjaRK1ICKJNVFWcTqL8EyV19YdNFXCTwoG8whTVdl0\nDbY7Fh1L5nSekpU1eV3RM3X2Vm1eWbUp6pqTWcQsKRj6Oe91DBzNYhpliIKAJEiIYsU4yBhHOYYm\nYagyO22dna7FPC7oz1NcXcbyNMoa1ts6k6Ap3bQtFU2W+Y29NnEhsNMxOBzHbLYM7g+Cc+mQnBur\nDgJgKAqRXOKaCm3r6S7e1pp5CFtTliSAizLaTflJ573dDrM4Y8XRuXU8ZxplyJJI19J4NAwpq4o1\nT0eXJZ6M4nO2WnUu+fHstfGi7PNiGWmhs3Spt/Tlx+fNHP5z4L+8cPs/BP6ruq7/8Dww/PfA/0wz\n5/DvL54kCML/BFDX9T+h6UP8jzSZRQL8GPj9uq5Hv+h/4hL/erCw3tQV+VPNxotlhCQv2Go17l9d\nW3uGuXSl67DRtpaLwWbH4INrvfMJYQNDURCEioGfYWsib2y16Fg6Sd5IcedlSZLXXOlZvL7poSsy\n9/pz9scRO20LU5XoORpdW8c1FMoSdrsmUVLy/rUWqqyw6jaPxVnFtRWHH+9PcQyR37q+xuks5tbx\njDCz2fQMVl0dXZEwVBFTCXB1mVdrhzVP57V1dyl33bU0RmGGpQookkxR5nTtRh68qGralkyStaio\neHe7Q5A1TV1bl7l9POPhMOTX97pUdY2rq9xYtanqxpGua+vnx6+DKovsjwIGfsrVns3VnsOjMx9L\nb/wukqJEFODb11c4C2JsTSFMCu7OQnRZ5hu7rWUZ6XnpdNdoPBt+bbfTyJwrMqMgIUjzZfN6Yce6\nuK3K4qd8IS5mAC9qMD8/O3Op0PrVwOelsv4h8IcveeyPgdde8tg/ufD7LeCdL/wJL/GvBS9jJo2C\nZLmjXMBPMibRs1IaJ9MYP81wdYUgLZHEdOn+dXPt6QIxCpJG4+h8+nnoZziagq3LuLpK11YIkpI0\nTzgLcw4nzXzAopn6wd7K8jMt9JfSomAcJPzwSYYiy3i6wlanWdDe2Pa4e+rjyzm3TwLCpMSzFN7Y\ncIjzCuqKVVeHuubRMOT2yYy7pz4tU8ZSJYKspKoqplFOmDQlKlmWiPImC/GTgq6tst02UWWJ42nI\nR4djsrxib9XCOT+elirTthVurnq07adsnlmU8S/u9InTkiQvMFW5ocgaKpvtpwODkiByrz9DFM6p\ntpKIqTZieUGaczCOeGNTx6wkxkHOo5HPumsyiTJuHU15PIrZbut8+8YKAA8Gc06mMW9utpef5/5g\nzpNhhL4rs9FqXOou2oBCU9abRQUjLcXSpGWgAT63oN4lI+mriUv5jF9RPM8YWfQQTmfJeZ35qb1j\ny3hWSmMUJHzvwRlRXnGta7Di6qzaFros46fNwrZoSmZFzdBPMBSJrq1SVhUDPybKSj4+nvBkGONZ\nMlVZ8eh0Rs+QaJsqaV4SZc3OtK4bm0vPSJknBZ+c+PzkcE7HUlh3NA5GEffOAn73tXU0WeL+IOR4\nErLi6EzClLOg8XEY+SmeqRDnJUINSVEQJRlFWVFVMA5z5kmIIoiIIvhpgalKdF2DnbbFwSjij0/7\nvL7p8uaWy5mf8mQYUxUV5bm0eJAUvL3lUdUVd/o+H+5P+c0bXZK84nAccTKJ+Ov9GY4hUVZdkrxG\nllhOn++PQv7y4Rk1Ag8GIX6Sse4afHOvTV5W3OvPeHgWcjZP2etZXO05PBkOGIbN/8PSFMK0xNYE\ndjrWctbku/fOuHUSUFTwO6+tMY8zHgwCHp4FeIaEKgvPbAAWWEhi+GlGmInPPH453fz1xmVw+BXF\n8yykUZBwMk3wTJk1x/hUHfnil3+RWWRFQVEJnPlNjdrRmqbwwnAHQJUFFFliHuesuTprns7JNOGT\nU5+zWYaiiLi6xo8eT7h/FpKVUIuNZIaf5MR5iaFI57Vyha6tEaWNxMROx0AUZf78bp+irnlr023m\nBcKEeVpwfUVm1dNJ8oppmDKNC1ZclbZhUVPStnSKskaSZPZWbKqy4IcHGbapIlEjSjLXega/eX2V\nrq3x/94+BqGmrmumUdM3CNOMrY5FRcVPj2b4cUMh7Zg6ZTHhk9M5cVbSsTXO/BRTkVh3VTq2gaFK\nDVtompGXYGky/XnE/UGIIguMopg0q9ho6bQMlcNJTFlV7PUsbq7bXD23O+3Y2vmxbthHq65O13a5\nue4thxE3WzonsxRTfVoWvLZqNVna+Tm9uAFY4KIvx8UhR7ikpH7dcRkcvkb4Iju5JC8oq+anKouc\nzmLmcf4pW8/n2UuL139vp7Us84zPjeUNpVpqJU3iJvBIQoWrS80A27k+U8tU6FoqAytCEERmcc7N\nDZeerbLqNDTPFUdnHCbNPIEgUtcVYdoMlFmazG7bBEHg5ppNVpQEaYEfZ1ztOvw7723xYOAjCALv\nbLewNJmTSczAj7mx5mGeN6ENtWlSW2rG9VUT6oY4J0oikyjHFRqP5a6t4ScZr6x5OIbKumtgqjI7\nHYOjicmZn7LuanRNle1O4+EANX/ntXVkSWKrpdJzTAbzGFNT+PYrXY6mEWfzjJ2ugaUpzTR0VnC1\n6/D+1RxLU/ikP0cVBW6sOTi6TMfSnplGb3oAKlutihVbXz627hXLwbSFTedrG20mUdMbCpKisUr1\nzpvCtbC8Zp6/fp4vCT0a+qzaxrJHsepcTjd/XXEZHL5G+CI7uYsN5bv9GY/OIiRJIC9rfno0wdFU\nNlrGM0HmorG8JIh87/6AsqrZbJvIIsyinFsnM66vOFhaEzj2xyEDP8czmgXpcJSQlgUrjs7tU58/\nuzNgGqZc7Tm0LYWHZxFxWXN9pdnVFmXFmqPxo4M5niETpTkH05QsKzicRfz9NzZ4bd3l4b0zPSpN\nNwAAIABJREFUfvhowiwu+I3rq9w+nvNnd/rc2p/wxpZHkFfEcXGuB+SSZCWf9ANEQSDIcj46mNBx\nNVZsnccnU56MY7qWiiaLDMOEooQkazj6D85Cfut6j5apcDAK+dO7AzY9k71VC2EacTCOsbWmUb7h\n6UiSSJwXJHnNo+GMd3c8jqcpHx1O+fuvraEpEj88mHD/LOLtLQ9TU3g48vn4cEZdw62jGWuOxlvb\nbV5ZdxmFPklWY6gxtqYy8GOOJwlvbnko0tPd/YcHIz4+nrPZaoLZWZBxOA3P/78z0rygrGq2uyZJ\nXpDkzRCdEaZstaxnGs5ZUXHreML+KMYzQlZdgzVXQ5GenaS/mGF8URHIS3y5cBkcvkb4Ijo1F53a\n+tOMqMh5c6VFUhR8uD+jbSlYmvRMkLn4+j/aH/Ent89IipJX1x2udE3ysuRwHLPuaufaSc008Yqt\nkFcVSVIhSxVhVjOLUm4dznjY9ylqUJSQcShTIRBnTcnmdBKD1ExZy6JAy5SZRwVRliNUNVUlUNeN\nlLSuymRVw3q6dTxlHGQMo5hxlHAcZrhKM3shSyKiINCyGgaWKUuUZc1ZkFILAl1LIUgrRn5KVtW0\nxhGGLLG3YnGc5fzkeE5Z1azYTQnt9vGMWVxgKSmPzwROJjGTOMPVZIoaXl2z8UyVOGs0ksZhRpRV\ntA0ZVRIJs4LDacz9s4BVp+DaikWclWR53RwHP6Yo4WimEBUVszRnwzPQFZFRUPFkFDEJs3P3NoWs\nfHq+0rwiTEr685S3t3W+eaXFzVUPRRZ5Mgz5eBKRlxXXV+1lppEWBUUlcjQNl6XBhViiJEh4hoxj\nKBhqw1p6fjJeEtNn/m6ByxLUVw+XweFrhJ+HFeIaKmstFVmGdU9Hl2WmvewZKeaLr+8aKgfjgP0z\nH0sVMCSRMM55fBbSNkWGQUxRuEtpb1UWibKCh2chPUelZVgcTUb0pxnf2G2hSSKupbBiafT9lM2W\nwW/c6FKUcLVrcjAOESURathuW8yiDNOXWHc0Xll1+WCvy6pj8NqmS9eRm51rWlLVNTuuRctSeX3D\nxc8KZn6Gpp4vcJqCa8h8cKWDKAkcTxN22gYrjsH+WYhrKry/69GxdT459WkZCjtti7c2XeZJQc/W\nuT/wWXEM1jyDNUdlFBVoMmy0DWxVQZNBQEAWRAwV3tjwGM1TtloG7263WTuX5JCEiJtrLjdWbLZb\nJh8dTFmzVX7/nU32RwFxVtOxZDZbJjfW3KWxkZ9kZEXNKIy5c+IvqbKLhb5tq3zrehdDkXhlzV2W\njRREXl13aVsqILDmNj2LJG+UWBf+GqMg4XASEaYFXVvnas/k+orNIIiX1FZB4IKMOy/sTSyus4s/\nL/Hlx2Vw+BWHKovcXPOYu9mS2dKxdFqm8sL0fx5n/ODxhO8+nDCPcqBCkTM6lsKHhylHkwQBAUNT\neXW9CVbHk6jxUTCbRegsSLk/CNhydT64vsKNNYvTWYqiKLy97aArCpVccTpLKGqB6SxFlUQ+Oppx\nPE4Z+ilxWvPOjteUakaNamta0CiXRin7o7BpgrcMNtsmd0594qJko2ugyDJ3TgL2xzG25rPVNll3\nDW6ue9w6mvDjoxlBWiBIErOk4NEwQJEE3tj0KCrIipppnNEyNSRRXIoBymlFnFeodU0/TSmKkoNx\nSsdR2O1YHE8ihlHOo2HAK+sur657HE5iXFNlnpX4acG9wZyfHs9xdJm/8/oKm20DPynIipqWqdBz\ntOUGYEElPZ1HTOMmy7i6srI8T3HWyG/vdExsXV5OLy929wtzn4UP9GKuZRHUj6YlHx/PaZkq39qT\nl5nmoldl6/qn3N4ufq7nr7PLjOGrhcvg8CuA5+vBL6sLw1OFzbysmAQZgyB+pgEZZQUbns472x6P\n+nN+cjRFFAWud7sookldw9UVm66lEqYFs3hOf56QFRWGIqPIIm9veaR5gaE01FdZdHh1zcFSGpmG\nw8kETZLo+zGnsxhTVdjrmWiySF2UbLW7zOOCdVthHmVIkoAk1mx5KrYms9czkeuapCxZdw3u9n1k\nqcazdNZcg7ah8NH+mDjLGM4TXFPB1hSOpzH3TkO2XJ0SgbqsSCv49Wtd9roWrqmw7uocTkI2XANB\nEDDURoQvLQqqSiPKM3qWzjQumCcZsiiw4RrsjwJe3/BwDYX3zu04G2E/kfd2OojCmCfjiFVb5dev\ndZDFGkOWGftRww6zVbrn8wlBUiz9tnuOzl7XYeinmKrE8SRansPtdqNce/GctoxPm/cszvvzC/hW\ny6LYqZYT1ovnPf9z8dpZ0dSTLnsLXw9cBodfASzqvYsd4/N14RcZ/gz8FD9plE+nboajq0hiyijI\nCNICW1N4PI65O4iRRWhZGq9vtGhZHoYiM0syRiEcTiKOJjGWJrPZNuhaGklRk5XwYDjDUGRahsY3\nrrTIKoG/fDTiZBax7hi4pkJZCYBAy1Y5HMfM0oqerVDWAg+GMRUQpgW2JjPXZSxVphRrDF2lLYuM\nw5R7ZyFbnkbPNihLuNv3eTAKKcuKtK7xDAVRgO8/HDEME379Rg9dkfmTT/qkecXvvbGGpshkRU3X\nVug5BqfzhJapYmoSeVlzPE05mkZQC4iCjKlKzBIBQRB5eObzZBzTsTR+763N5XlZMMZEsfFWeDiM\nCLKKVzccygqKuiKravKiwixliqpmGuf4ab7021blZiajZWqNLlVcPqPIuljsh37CJMpZdbRnzHsW\n5/xFsHWZN7faz9z3Ine3xfWyaE5f9ha+HrgMDl9DvChTuFgPvvhz6CefoiQufm64Bi3z2czBUCQE\noKwqfufVHpYikVUV/943NtnsuNR1zcE4xFAkPFdl3dPY6RikeaPmmZfVucZPxWtrNn5WNPLaaU7L\nVLjS1amqmuurFt+40saPC8K0pGfpdC2dnq1SVTWmIuHoEkFaY2sSSVFxpWciCgJ1DaIAPVtDU2W2\njmZstzUsTaGsICty/tYrPXqWgqWrtA2lod1SI4sChiJBXfHOhkclwLWVpmGbFAWrtoGhSBhKoysU\npWVjnlNpiNSsuTorrk6Sl2x3TA5HAZosMQozXEMmK6rljnoxayIJIo6u8MHVDo4uo0jS0gSpOdY1\n8zinbWhL0TtXV8iKmigrqGuB7baBIDzNFJp+xNPd/DTKmYQJG+cmPb8Ie2hJhb3Q47h43Tz/+yW+\nmrgMDl9DPJ8prDp8qh68qEE/GoZUdcWbm+1PcduzoqJba1i6vHwsyWUORiF/dqfPJErxdJUbKzaa\nqmMoEv/y3hkPznz2RwlbbZ3tjsmqY9CfJxxNI6KsRJFg6Kfsn0WMk4x5lPOvHgxxDRlbVYmykrio\nKMoaBLh7Oude3yfOCq6vWoyjAj8tuN1PMWURU5cpC3AMGc9QuX0yI85LjiYxr6w5vLJm8WQUc9PS\n2B+EPBhE7PYM1loG4zDn/llEWZbcOvY58SN+8HiMrSm8u9NizTOYxI3Hw5NJSFefI0gSa55GVpYM\n5hmrroqflsRFjSQ1Tm9+UiCJ4KcVj4cR0yjnL+6NEAWRdU8nK2r68whRkJhGGZIoYigiSVEyjQpk\nCaZhSpDWBGmKJMq0zJh1r6EXb7RMhn7C3b5PXcOr686zk8tJTpw9DUS3jmfnQ44qbVtdXiNhWi6D\n3sLM52XBIkgKbp/MuHMya0gCwKvrXiO7EjZzLbYuX/pEf01wGRy+hnheFO9luzjXUEnzRo7BUmVu\nrnvPaCvN42zJe9/rOUu2kqaKHIxjHk9CVAHmWcFW1+LJKODD/QnzNKeq4WAasT6K+PVrbQRBRBBq\nBAFOphH/14cn54NyjTVn328sL690LARJIE1LDsYxJ9OIJ+OYYRAxCXOCtOCDvQ6T45SDUUjHUnEL\niIuS1jTmeBLzaNQs9pMw52gW0TYNkrxks2Xy/tUuNTWns5R5VPDmlsea2yxgIqCeChyNAwylCQA9\nS0VE5HZ/yp0TH1GClqHxWze6fHC1h6WGGKpE19LxjIg4qxkFEbIkcnPNwTNV6srjw8MxZ37G3b7P\nKMyYxQ3TaN3VsHWFURCT5BWuruIYEifjlINRRF5VGKrE1a6GayjPlGwWSqsLIbwFLirmLu7f7ZgI\n1Djas7v803nMo7NoWTpcvPaLcDQN+fN7A8ZBzns73lJM8Wgacvc0AHihqN4ljfWricvg8DXE88yR\nrKheaMCiyiK7XYtxlJNXjZT1reNmKrdjxwhCY1TjJxV3+zM6ZlPDvtq1WfEUwlRCkQX2OhYSEGQF\nhiLSc0yurTm4moypKlztOkzjtPFbyFM+2p9TUWErAgI1niaz17WQhGZCOcpKBJFz8x4DhJqrXZ3H\no5DNtsmqq/Pn986o6pqqFqjKgq6l4moyhixyMom5uu6SZRUn05SOKdGxDN7c9DA1mb1uo4DqajId\nS2XoJzwcBmx6JpYqst0xWXNU1jwTTRUJ4oK8qHh326USBWQEbq65JEWBIMBgnlFWJT1HI85KruoW\nUDMOU0QRLFXm2orLmpuz7ja2neOgxFFldEUiTAomcUaR11xbsbix6rHhJWy3DQxFJs4LurZGx9Kp\n64T+PF7u0heubvB0h57mFUeTkO22xdBP6Dk6b2612Ok8pScvrhFdkVEk8ZnM4SIu7vq3Wha//coq\nUZrxznZ3mYVutSzyskKXny2bLbCYjF+UuS6zh68GLoPDrwA+a+e27pm8mpfEWcU8zjEVCUmEg3FM\nkBa8u+MhSyIHo5j9UcR7O21++GTM/jhhnpRIksStkzl+VuInOfMkx9VVbF3n5k0XR1cJspxpVDAO\nU+73fU79BEeTmVc19/oBxjzj29d6CLLI/YFPklf0g4RNz2KrbRClJWVdgyDx4MznbBZzMI6I0mZR\nLSsBW5Xw05KrPYNpWpAUcGPdYRgVjMIcx9Ao68a86MPDKUFSInhNE/rBWSM42LVUWoaGroocTlIG\nQSPDPQlT5knJRktnGpUkdc3d/hxVlgDIipLTWcLRNGG7bbLTURiFKT96MiXKm2Z5Vdfsdi1UReR4\nmnBvENPSZQZBjqWJgEDbUmibGklesO6Z7HYbqumCgmqqBUlR8vCsyUye36UvzvPhOOTWkc/RJOGN\nTW8ZCF60a7d1+TMltJ+/dj7Y677wNdZdY0mJff59Gv+HT1NeL/HlxmVw+Irh56nfPk83fD572Os5\nywa2o6ccTQOqqsKQYcU2MLWmPyFkMoIAr2246JKIH0NKSUdPcVWPuqpYd3R2OgY7HQtDkanqig3b\nwtEUNEXg/qlPkGasujqvrTiossCKafD6uoupikgCPBmHrLsmmy2Drq3gmTJJVmEkOfujkCwveGXF\nYdXTuH08Z3/iU59bZcoImIrAyI+J0pxZEJNX8PhszjiIcU2FLC9oWQqKLFGlJXs9myQt2GkZrHsq\n47giSDMivyBJy6bG7yoYkshHoymeodKfiVxfdVAVkXFQERcFptq4pumKjK1WqKqApytYmkrP1Wlb\nClFa8samR9dW0WQJWRKQRZGurWIoMlFW8pePxtxcc2iZClUFd/szeo5GmJbIosBez1xqJD0Z+dia\nwkbLXDa439xsIQhQFPWSUhxlAXX91AUOXkw5ff76Wlw74f/P3pvEWHam6XnPf+bxznFjzszIZCaZ\nTBbJKrImW+0uqdstWC3DgCUYWthwLwxBCy280U622rABL7zQxgIaAgwbsGFBsC1BlgU3NKtc3dXV\nza7iPCSZY8xx445nnr04cS8jg5HJZJFVrWTHCyQy7rnnnHsizn/P//3f973vm+RkRfiIZPfpY7Ki\nxNaUc8fYfAye/v8C//bjYnJ4xvDz5G/PthueF9nNC9AHs5A3H0wZhyldx2Ac1akRx9DouRJdx+D3\nPh6wP42JT46/c5yh6xPiomLFNXhupYGfFtw/DmojHjs/8ThQGfgx0zDDiwqMNZlff3EdS5MYBRk7\nk4QP9mcIoGOp9FyVvISmoZFkKcMo48Eowktyvn2lRavQGAQJg1mKrSv0k5z9WUKYlXx8PGU4iwGB\nJgtUWaISdRqrZRusNnRUWdCy9Dry92NKQMgSUVKw78UcTWPSfEbD0rjadfj4KODDwxlLjo6myGz1\nKwZeyk/vjzjyY3qOgX0iirczCTiepbWns5C54dQPxZ1xxI0Vh29e6pw0DUBRQtPU6LkG7+2OmYQp\nB7OQtDDYGQXcGQRcW7JPuq1qVzZNkbh37PHW9pSWpWHr9Ve5KEFX63Th7QN/0VI8izOqCprmp+TG\n88bReW3N9Wc9ajF6dkyOwwxZgiA9f5+LFcOzh4vJ4RnDzxuBnT3uPKG0oR8z8XNWmxovbzSxTYW2\nqXMwjWhbKivN2gjmxbUm13omx9sBAC0LXF2hilNMVSZMcxDVieCbzP1jn6NZiqGKE16DQlbA0E/I\ny9rPACGI4pKxH9NvGYRZznu7M9bbFle7dXrpuSWTMi+5N/CQhUzLVHl5rc2Vts2lnoWpSnyw79HS\nVYyuRUuR0DWZ4yChbRuUJeRFUctGnNQrHF2m1zY4mMZIoiJIMjY7Fpossd4yMRWFlqWw3NAYhbXR\nT8fReHG1Qdc2kETMrbUmW5lJz7HQlVqUcKNls9nxWW0Y+FlB+8QTuyynjIKEtqlTVSVlWSvOJlnJ\nv/lwH0kIbq42uNJ1GAYJSZ6fTJQGggoh5JMUYErfMVlrxVhaLal92qVPFhKTRspW1yUvS6IsZxbl\ndGxtoaY7J8TNcZYoN98WJDmaUivNBklBw3x0ZfC0DRAXeLZwMTk8Y/h5I7Czx51td4Va07+gou2Y\nvLDWpOcafHQw/YwhvJdkeFm5OJeQJUoh6DoWq00TU5XIcupIMim4Pwzwo4JrSyauodK0DaZRyjBO\nuXscnCiDmmy1TbpNG1sTvLkzoywL4rxEVxR+cHOJjqNzqRsQpAWSLFFWFesdk1cbbb59pcM/e3+f\nB6OIsZmz1jLotxyiLCfMYkSY4ugqWQlemqMIia5Vt76WksR6y+KTgU9cpPQcA1VTeGnZ5qX1Vk08\ni1OSIuVbl3WSvEJVZEZByjQq0FSZfrOBLNXF6SM/AsDWNZKiFggcR3U0fjBLOZjVXtNFCZMwpWVp\n7I4j/uDOEMdQ+c1XVmk7GrePpny4H9CyVA6mES2r7k5SZWkhdaLKEvkpOYtFyqgqcQ0NSYK1Zt32\nmuQVtl4/wOeEuLOqu2e3z6KU3UnEJEwRQpDm4WcEGT9POuMCzyYu7uSfUjwu2vvmpdaiNTLNS2Qh\n0bYV+o65OHbZNfnu5Q6aGBMXGb/+4jrrbYMwqXhpo4EkZFS5rlfcH3p8Y72JJAR916Rpazw3dYjT\nFC8p8aOMYz/hpfUGr17u8frRDF2W+eMHQyQhs9nWsDSNWZRzuWPzZ270ePVSk6KC6/0G4zDB1GTS\nvOT7V5coypK+Y+CaGrJc591/9nBMz1IJioqyrFhrqPgprDR01to2mlL7QrwwDFGkiuf6TXYnAcsN\n60TiI2Or6+LoEZKQKKqS9aZNlOVkJzOrpkgYSs1FmLd45kWJJCTKqlxs+85WgRAVa02bgR/Rd2sf\nhiDRkAQ0LW2x741+k6wo6doGlqagKeKRnP+8lbU2Qnqy0N3TENUet0+tsGshRLUg2V3g64+nmhyE\nEH8d+C3gG8Dfq6rqt06992vA3wEuAT8BfquqqgePOc8V4H8Gvgs8BP76iQf1BX7BOFtonBcb59ug\ndoNL84qsKHhvd4IQteOZeuJHUHj1ZPHG/SFRDqomkHOVe0c+miwDgigt6Td0WqbKvWOPO4OA1y63\nub7c5K3tER8d+FxqG4wjQdOuPSPCnSnOyXXdWG6yO/Z5brlBkufcHUSE8Yymq/PapQ6bnfphGGcl\n/9/Hh3zv6hJ+mrE9ithom9xaa5OXJW1Lw9LqAm/H9gnzkutLDlFakFcVmlzxxoMx9oHHzVWHtmXg\nGDJbXZdxmKCrMjvjEC/OmEYZsyhjGmYc+QlrTYMrXRdV0didBDiaysNRwMbJQx3qCNrRNd58OGat\nbTD0YzRF4vpygzirWd+TMGerV0fpflLw6qXOIxF529F4dbPL/WMPISpcQ+fYi8mKOq3TdYxHjJlO\n3+s5X2WOsyvHpyGqzbednpA+z7fhAl8fPO3KYQ/474A/DyxCSCFED/gHwH8B/GPgvwX+PvC9x5zn\n7wE/Bv7Cyb//Uwhxvaqqwc919Rc4F6cfDvOi4jw9MDxFaDtdfAR4f69mIgdpxiwuuLXi8uJGk45V\ny17cOw5I85JxmPFwNOPthwFJBfZeyDBI6dk6L6036Lv1/uMgZ+SnSCee0j+6PeD9/Rm3VhvIskSa\ny+ynBfvjmKKoeDgKuX8cMphFLLkGqoDtaYKfpDxHxds7U97dGROmJQezCC8uiNKCq32Xw1nMB/sT\nBrMUgEs9m46lUVHy1s6MIMqRgHGQo8iCIM356YMhcVby0X4DW5cwNZWD5ZhZnHM0jbE0mRvLNmkp\neDj0+ejQ59iLubHcQJFrTsbAyyiKgoGfsj0M0U9sV59faeIlKQfTmGM/Ji1qwttGx2LgpTiaYH+W\nstLU6bl1y+pczuSswc5H+x5LDYOrSwXHXso0qqVGoE4FCsEjD/BZlC7ulZdki/v9JJzX6HDetqFf\ns+obpoIkHvWUvsDXC081OVRV9Q8AhBCvAxun3vqPgfeqqvo/Tt7/beBYCPFCVVUfnj6HEOIG8C3g\nN6qqioD/SwjxXwJ/CfidL/uLXOBTzB8Oc2G2OZt2GCSLYuZ8G5xOMQmyvCDJau2iflPnxnLdJ78/\nCRECbKMmif3l1zbxk/vsj0PatsGlroWmKkgSi86nlq3QtjWKqkQIapKbAE2ReXmzlr/eGUXcWpdw\nNZntScz2OGAcpKRlxUrL4lLHRJFsVjsWYVzURWRD4ZbboqpqK05dlQiSjNuHGVVVsNl12GiZBEmB\noaj84IUlkrSgY+t8go+pSjRyhfWmha7KXFmySQtYslW+f22JN7dH7E8ihlFKVFhc7ztEmcEkyNAl\niX5TI84qqCrWWjobLZudSb1y8NNskRa60nXhOuxPIj488AnSAj/OmYQpWaFQFBVRWjxivHT6YTw3\n2Lm6ZHOpa9OxDVxdXawcqopzu4jmqaC5fet53IOzeFLa6fS2qv61cXUNW5cvUkxfY3zZmsMt4K35\ni6qqAiHEnZPtH56z792qqrxT29462f4ZCCH+KvBXAS5duvQlL/PrjfN608/KKpzlM8wj1PmDfOjH\ndOzairJhysRZwYurn+otdR2DMM15Z3vCnUOPKCv4leeWmYYpqy2DZVcDSWJ3FPH7nwy4udJkpWEh\ngL5jEmUFL603sHWZ6ysNtnouHx95XF2qGc9RljMJB5gSpBq82HdY7dksORphUrHS1BgGOVs9i7yo\nSWgvb7TZGQeoiuDYS3E1GdfSubna5NqSy4ORz+E0QgW2llwmYYqlSqy2alOfKz2HgZew3jaZhnWR\nWD0hl0miNuq53HOwNBlTk/n+9SWgpG3phGnB3WN/ce2SEBx58cJUZ/73fWmjzZVebZu6N42QBUhU\nXOlaHM5i+u6nQninuQJ+XNczllwdTTEWK4N5wXd+zzba1oJbcXrV0XU+1Vk6LcD3OI7MeY0Op1uc\nT4+X+Rh70vnOG5cXeLbwZScHBzibEpoC7mP2nZ6z7/p5J66q6u8Cfxfg9ddfr87b508zTn/xzutN\nPyurcOzFi/TDWc2k+UpjEmbYmkxeVjhGHfGfPv7dnQn/5J197hzVaRrHkFlqWpRURHmFIuC9/Snv\n7E0pXy5P9JQkjvyIh8OIo1nENM4ZeAl7k5AHo5AXVlwQgkmQ8NbOlHf2PKK0QFd1mq7JHw4mCCoG\nvknTVNFVmYNpwIcHPsezhDivLUcP/QQBGKqKrsh0HI2Bl/LGgwmTMGW9OSPJy7pDKCpYbproqsQn\nRz7bwxBTl/GinAqwdZUKCVuXmcUpe+Oc/VmMa6hcW7JJi4qDacQnhz6DWV0QfzAIaDs6li7TtfVH\nUniOoSDLgjuHAW89HOOYGoosoasKR36EJFGn4U5xBWZxRpyVC/Xcs9yB051Fj1t1jMOMsiqZRfli\ndfHzaBydHV+nZcCfdL4LTaVnG192cvCBxpltDcD7kvte4AzORmGnv3jnLf/PTh73jgPysmQlrtMe\npibhxTm3D6a4hspG22S9VUsgfLg/IS9BokOa1ymh9/en3B+GXOk4qBJ8fDBDlmG1YdB3DRqGQpwX\nSAi8MON4GpBUMpYiIQmdsiwX/gVhmrI3jPnwcIZKrfa5PQrpNzWeX7O5dzhjvWXScxS2hxmTIMOU\nJRq6zPEsZuDFPL9scXWpwTjIOJwGQIWpKsRFjqFIPDj2eXAc0DJklmyHhiETZBWWKmjbOkMvQVcl\nWqbCLM7Yapg0DIXlhsHOJGSlYTIJU3ZGIVFe8HDgc225gak1yMuKW2styrLWTzI1ia2+zWrTOlkl\n5VRVyf4kpWHU7OWtrsvHnRlxqtJv6Lx2uYefZlQl/IsPDkizEkuX+N7VPpJ0spLIS2RRS4OfvbdB\nUn+GcVLjON19duzFyEJClkATCtMqf2QV+VVwZOaF8balLjrbzta5LljRzza+7OTwHvCfz18IIWzg\n2sn28/a9KoRwT6WWXgH+9y95DX8qcDYKO/3FOy8lcHby2OrZjMK65hBnOVs9l3vHHgeTugB7Y7mW\nfPaTjAfDiFmckpcVL6422erZmKqEa6pcX3ZYnuocejF5WWFrMklRcegljKKUrCiIM4k/ejClQOBo\nCq9ILXRFIisgSQtmkcy9YcCeF6McSEyjjA8OPDq2wa2VNgiFlqWR5hCkJQdegp8WJCU8GNaWmN/Z\nauOaGgh4/yBnlpbkZY6lqRwHGT97OGV3GrLVdfj+tRaSEBz7CZamEKQ5ezszWrZKddJhFaUljqHx\n8aHHwE9RJYk4K9ifJvhxwijKeUGpSXyTKENXJdqOxrt7M1aaBt/e6ixWYZMoQ5VrPaE0iS5UAAAg\nAElEQVR5x5AkwWbbIcwKXt1sLVZ27+6O+Xjf5+E4pOOobHRsri25jMNa12nOaTjLR9idRFQVLDdy\nnBNJ9dMriDnz2jVlnl9xHztOngbncWTmtY4by+4ijXa2znXBin628bStrMrJvjIgCyEMIAf+IfA/\nCCH+EvBPgP8aePtsMRqgqqrbQog3gb8lhPibwH8AvExdkP5TiSe1D559IJyNws5+8U4fN389j+o0\nRWKtbS3SDfNtWz0XV1cR4tOIc61p8+sv9tkdhVxfadJz9MVk1HMN2qbOu7sjvrneokDwm6+skeQF\npqYy8iPKUuDFGSstnYNJylJD40rPwdU1llyDKM2QJMGNvs3tQ5+Wo/L8cgPnw0Oo4M/eXObWZouV\nhklZVaw2TQ6mEaYm6DomYZxwdxjxymYbW1fQFcG/c7XHzZUEV1fRNAlX19ifhtwbhGz1DC51XVRZ\ncH25AVRkRYUXpzRMlUmY8fHhjNcud0nyov7MOON6v8kszmiaCoaqMAwSXr/cw9Jr3oOhKtzoN8mL\nkuWGyaWu80i0LAsJRY4euW/Xl91Fam+OK12X3/jGMoezBFMV3Og3sY1PVwPn5eofJ9V9enz8IltN\nz+NXPOmaLvBs4mlXDn8T+FunXv+nwH9TVdVvn0wM/yPwv1HzHP7KfCchxO8AVFX11042/RXgfwHG\n1DyHv/ynsY01zWt57DtHPklestkxudx1F/3vO+OQrZ5NzzUWS/XHfeHmk8I8Zw11/vr+MGCrV3fN\nnC5UNkyN7ZHP/iTi1lqbnmuwPwl5c7s2ouk6GqtNmyAuGPopti7zcBjwwd6En9w75tqyy91Dn9uH\nPhtti51xxNUlh6Gf0HF09sYxeVkSxCVxntO2XKKsQBY5syjhyEvZHkVc7VksNwze2Z1we99bdEPJ\nsuBS2+aN0TGKqFcrXVfHj1MEsDvLGIcp//eb27xxf8h60+a1rTavXupgaSphmnM4i8izguNZzIOj\nGR13xgurDv2mzcEk5MW1FllZcm8Qkhc5fpzz3v6UjqWyPYp4ebPJkR8xi3KOpgltu+Rqz2VvGjDy\nM94/mPHyepPn+i4vrrY58qNFwXfOFfGSiCgtgYC2qfPx0ZTGSR2nthvVGfoxfpLx4lqb71xVHrmn\nAJMg5d7Q40a/Sdv59P5/Xk3pcWzlsw5uT8tZOBuwzFtk11v2IwZRZ6/pbJrpAs8WnraV9beB337M\ne/8ceOEx7/21M6/vAz/4Atf3tcQsSnlvb8a9owBVFViajCIHFCWUJ22fQjzakjr3BYbzhdJapkrf\n1WmYtT/BvOXwbDpqFqW8cX/M9jBEVSSuLbm8tzfj2I9ZadRM3KxIOQ5SjryYT448LE3id9/d55Mj\nnw/3ZzRNjSQriIuc7XHE/UHANM7RJLg/Donzks2GjqoqyEJgGxpJlvP+3ozdScQsTrh/bOKfqKwW\nZYGQZBqGQlJO+emDMVlZYOkarqaSFzVx7fmVuRpszr+5P+DBKOMj3cNLc/ykZL1tsjuO2JvERFnG\nB3tT/KSkbSlM4wxNnjKJMw5nMaMgZxDEbLQs8rwkzCI+PvAJ0wJJQFkJvDjl2E/RZYkHo4i8hKNp\nxMNJRJIUyJKEIteSGQBdWz8p7KdYmoKpScRZyZvHI97emaJJAl1T2OyYXOs73Dmq9z0rv31aevvO\noNav+q6z9MTx9CRhvDnOmvKcJ6HyNIXlzzP3OX1Np9NMF3i2cCGf8SeAhqlxa63BSkPHNTRUWSAE\nKJKEqSqocoRr1FHaRttkFmWPNWM5W3uAT7/g83TRWX/o16+0WW8ZixTGjWWXhinXaZKyJC9LXrvc\nZnsUEcQpsiL4wY0+S7bG61sdLFUmKeFK1yZMa8ex3VGEqVasdywoS9baBrKssNVz2JkEWKqBq0tM\nIpdhmCBVsDetfR3apkolCW6uukzjDFtTkaSKnm1QVlBUFUd+zCvrbZqWyt44omOr/MHdAZdbDjfX\nG6y4Gls9h422xSeHU6hAkyW8MOXVSy22+i55UTEKMq72rRPZDpvnlmutosNZgmvUEfSVrsvuNGAw\nVVhvGzRPRPPSvODVzSb7s5jNtoWuSPRdk5aVLArRdWHfAupiQy33bdacgJOVQ9sy6Do6hiLjJ5/y\nIs7e056t07RUbvQf77cw3/9xMhqnMf+c+f9fxDHw9P9nz/Oka7pIMz27uJgcviJ8kfpB7cDmPGLm\nsjuJkCUQJERZbUqz1XNRJIlplNOx889IJYz9lNtHU7a67rnpgblE93w1Eaa1X/CVrsu1fmNxjUme\nE6clu5MQVRHsjyI+OvRYaRjkVcG7d6bIsoSmyIxmKUrH5JWNNgezmP1ZgCJkRkHCwTSiqirWWjZJ\nVtG3Fd7ZHvOTO8dM44z1psEoqj2k07JkFmZoisDLSzqmwrt7U6gEN1dVNtoOXhgT5xWTKKNpqkRZ\nzpblcm/gMQtzXlxv0bVMvLQkHIQUQnC5Y6EqCn98b8jhJKYQJcMwQxmFpHlFEGd8tDfj1maDhqlR\nlBWyVNGyNBxdwYtSPjqorVMP/YirPRtdUVAkQVFUTKOMb1/ucn/oMZjlANxYabI98vn9O0OuLVlc\n6boIIRiHdWFaklmkn9Zb7iKlY+u1k9t8bMzTPn3HXHSJffNSd5HKedL4mq8KnzQmzxr7nI7o5x1w\nT8OB+DyDoPkxp9NMF3j2cDE5fAE8idTztPID52HOXt6f1A4JpiYtmMzzFNOJg+YjuH005acPJkzD\njI2O/Uh64HS0N1/ib4/q1JV6Ko0xi1KGfp0+CdKCpqny0cGMH318jK4rWKpgb5pAmZOUgnvDkG/E\nLRxN4cEoYmcYoCgS4yjlcBITZiU7k5h4vcU0znh7d8of3T/GizIaukolSZi6oKFrVKJCJAJXrQiT\njMmJXWmSV7y37zEKYvw4R5YkNlsmUVaiyBK7k4SBn9B2dHoNFRnB/qz2XJYQhEnGLMnJq5K8KHl7\nZ0rFBFOVmQQJQQYpBTdXm4RpTstSWW4aHMxCfnj7mHGYkRUlllFzPqZRwVpLI8oK7h6GzKKMKCtO\nfJoVZlHK/iTi7pGPH+dUlcRWz17IiBx5CV6cLtJPp1M6p8fGPF0zaaTkBY+kiT5vfMFn/Rm+CM/g\ngpNwgbO4mBy+AJ70BTqvp3vuzDXvRT+LeWF6FmX0XZMwyRFCsNa0GEf1cQ1TWkT/ZzFPN2x1XSSp\n7pDZnQSEaU2cyopPma1bPZvlhlEXiU2djw6m9B2TSZiRZAWXuiZ910RTBKYmE2c5aVFhagrrzQzX\nUPjk0Ks9jpebdF0NP8lZdZo0bJNpmDAJUxC1R4JraKy3LVaaJg1V4mCa0WsoJFnFasvENlSGflz/\nbpbGWsPgh7ePyIqS55ZM8kri1prDOMyYBCnfv9pFUmRMVeF636Fjq0gCXF1FVSQ22hZRXtC2NPpu\nC/OE1TyNUu4cBpQV3FhpUFU546Bga8nCNTRKKkxVpu+YjIMUXRV872oLKon1Ts1MLsqKKz2XLC/p\nuVM2WrWiappXLDfMkzRh+2Rc6DSMT5nEaV6iynVqqWVFj/zt5zWiOdZbNlleYqgyqiw90v30tPIW\nn/f+43DBSbjAWVxMDl8AT/oCnV56n+4gKhZa+492o8yilEmY8U/f2WOWZnzv6hJFUXIcpKRF7emc\nFSU3lpuPjeRsQ+Ha0qc97A+HPu/uzuhYCqriszuJWGkYvLjWPLlGgSprfLA/5s4gpGXK7E1TBrMQ\nS9f4/rU2RVnrKGUVhElB0za40rN54/6InUnNEm5aCe/szfDilCXH4IoQJHlJJQTrLZMkLxhFGbIU\nEWU5N9aarHdzdsYxEy+glekkeULP0YnyAiHB7763z7v7Y7K0YjBLURUJR1cIsxxTk7k98HF0hT+8\nO2SzY9J3Dd56OObOcci1nknbthiHEdMwZ8nVeWGlQVqWjIIcP83oWAZNU2Wz22DoJ4zDjPfvDUnS\ngpcvtVBliT+4M+RwltJ3Db55uY0iwdEsoWEqi4ns1lqboR+zP43YnSTcKsuFlPZ3ri7xcOhz79hD\nkaRFZ5KmCBqOxvNOk3d3x7z1cMorl0peWm8/cj8dQ2GlWRMRW5ZyrnTF4/Ak+Yunweft+7hV84VE\nxtcXF5PDF8DTftnO6yA67/1REDNLc5K0xNIk0hySrCCIyxOWLaw0Hi+a9tlOpIwkL8grmeBEZnqr\nZyEE3B0EzOKMNC+Zhil5UTIO637/KK/w04Sf3JtgazJRUhAkxYKPsNTQeXtnQiVKkCSivCRMU/w4\nJy9rpqwiC7ykYHsU0LFNVps6+7OYO0cBhiIQQuLB0GcaZfjJ5CRVZKBpCnvbU+4c+4ymKbqmkIsC\nL8y4ezxFQma9axHGFcdeyOQkj58WcH8YcuzFLNkappbyYBjxYBhgmwoCsAyFSZghC4msrPj4yOPB\nKECVJXRFMApS/LjmNjRMlet9B1uTudKrGeSmKrM9jphGGfvThKap0nMz7hwF/OG9MeMwpShKKmpN\nJoA37o/ZGYcESYFjqAszn3l6yNU12raKqz9d8fdJq9VfZirocZ91kY76+uJicnhKfJEI6bwOotPn\nCdOcsiy50W+iSILDaVz7A8hSnSJp2Rx5MUJUj01JwadpK/lEEnu9ZaMqEn3HZBgk9F2NF1fb2CcF\n0IEv2B6GTMKUrZ7NkRdxve/QMFVmUcFqS2Pg5fQchb1pjKhK4rTAj3K+f63LWstivWlQUHK5YyHJ\nFXvjmMsdC0NTmEQJSVYiCfjW5S4DP6Zt1Zacti6z0da5cxjQMmWGYcZ3trrEecX1JZOmqRAtuay0\nTfpNg1mYEaQ5spB4cb2BpUkoUm0D+vJmCyEEtiYY+znPLVusthy+sRlze9/DizOuL7vsjCMutXVc\ns0HDlDE1DUMVTMNaxnqjZfHJwGO5USu4WobCy5faHE5D/DgjTApuLDtUlWAcxiiSTNvUWWvl/LkX\n+gRxTttRWW2ai3v+ymYL15S5tdZCkiBIDJI8X9zHrqNzuVt3M6V5+ZnisiwkhkGysP180mr1l5kK\nOv1Zp78LnyfdcrGaeHZxMTk8Jb5IhPSkFcZc9K6qYKUJbVtn4GWMo4SuXbe2+mld8Kyqz6akTmOu\nVXTkRxQl9F19UWguqpK0MCiq+gFk6wo741rmYhJm3D3y2Z0lbDRLbKM23VFkkKWCMC3Jc9ifJjwc\nj2kYKpe7tXrqLMmZhDmXuiaKJJGVUAmBJEkoskKQpJQVHHp1O26/UXE0S7ENFVXJiIuCB9McVZLZ\n8xLWWxZeXGEbGoZWcW3Z5djPKICryy5NU6OqKkxdw48zKiHwkxxbV7F1HcfQ0VWVJVfn5lqTfsPg\njXtjPjrw2J8l2KrMc6syHUdfkAJlqdZVWmoaPBxHfHzoAxWzOCdOciZRxr1ByJJr8NpWm66tceTF\npHnBOErQFIUX1+pzHXkJtv6pf/OSq1MBunpazqJc3Mc4q/9+0yjH1pXPFI/PFq6fNJZ+mfyB0591\nVnDvT3JFc4FfHC4mh6fEl4nSzkZaG22TnVHIzx6MaZgKklTRNj9NPyVZySehx2bbXsg3x1lOWcK9\nobcoQJcleHG6eH1aOmMuzDZfVRiqwkbbQoiSZLnBckPnjx8O2WharLRMirKibdX9/LIQvL09YclR\nUGSHSRAzCiJmQXpiMC9jqC66DBUlMhUH0xBFEsyihGXXxFIVJmHM2M8IooQfH87qVFlRkSUp/Y6L\nrcDhNCSrqhMCnqDv1sxhQ5E4nsZESc40iNFUjaYp8daDIWuuhmuoSFWBJCR2Rz5lWXKpm6PLMkEc\nk5Ww0dIpi4o0yXlne0wQpTQdjY5V5/IdTUUREGUZrq4SxxltRyPKC17ZbNK0dII454/uDykKeH7F\noe+YeEnK9ihAkSRGQUxRlNw99lAlmStdh5ZZey6kefmZiDvNSzba5iOrgtPjal64Ps0hGPspf3x/\ngJAkvnWpS9vRvlB0/vNG8o87ThYSXpyy2jDPPe6iuP31wMXk8JT4MlHaWRc2VZZ48+GY9/dntC2V\nnqNDBb/6/Ao91+BHtw95d2eKF2XcXGsxi2t29JwxO29dnUeZLSvh+ZUmaV6yPwk5mEY8HEW0TJWq\ngmmU07U1Ho4CFElgGwqSEEgIJlGGY6rcGwSkRc7lToO3Hh7z1s6Epqmx2TEI05IHo4AHA58oy1lp\nWkiyTJ6X7EwiHgwCshKCOCOr4Lluyu1Dn1mUkVcloyDhg90JYVrg6CpZWTEIMw49i/ujAFmC60su\nPcfg4yOfD/Z9kixDSDJeFFNVAlkWUJVsT1KCNOPXbq1xfxCQpDl7XsJyw+B636VhKPzBvQlpXnC5\nY+FnJfFhTpSVvLU75eZyk+dXHfoNkyTPuT8K2J3EOKqEl5bIo5Ciqgiygpc6Fv/oZzv88PYAU1NQ\n5FrRNS9K3tmdMfAiigKalsosypFl+I0XBR1b5+4gWHAZ5g/XYy9mEn0qs/248WUbdXvs3M719tGU\nf/HhEYiaq/BdZ+kzwopPevj/vJH844478qOTcRc9Iutx3u9ygWcXF5PDLwFzHsOcu1BVYGgyuibT\nNDWKEg5nCbuTgOdXmqy2TLqOjqMrGKrEessmzvIFY3a+UjgbZc75DMdegqAusmYnjOe7A487xxGO\nJmjZBkM5YRLW/gV+nPPRoUeSFRiKwvOrLgfTiEmcE2cVL220OJioDIMMNZFY79gsN3TyAtKqxFZl\nBn6KqQg0pU7h3DnyURXBZsdmydV5OPQphaBjaxi6zM3VFrauMPITVEVmrWlSlBBlFVlVYGoKQqqI\nMxlZCFqWxiyKoQBLVdho2RxMI7JMYGsyLUNBlgEqrnYtHEvn1qrDw1FEQ5eZxjmSLNGzVFxTxdQk\nLneaeFFBx/G51LKI8xxFkngwCrnaq7vA/t3nlnAMCUvTWG0ZRGktaHhtyUIRNZnvWs/h2IvISkHD\nVBe8FD/JCNIC+KyS7pNw9qF8o9/k115IEZK0aF8+y2N50sP/543kH3fc0zCkL/DsQ1SnXcj/LcXr\nr79evfHGG3/Sl/HUOE+obM5nuHLi57s/iTjyQrwoZ39ak7cqIdhoWyy5BvvjgN1ZzK8810cIGIcp\nbUtbsE6PvZgoyxn6tbS2pghapo6mCIKk4GAa4xgyeQFJllEBsyjj+nKD+8c+K8265fTYT5iGGXcO\nZ2Ql3FpzmUY5Qq6Z0ld6Nutti/W2xY8+PuJoHFNK8IPn+0DF7f0Zt488jmYxPdvgV1/o0bZNjv2I\ntBDcXHMxVZUPd4f83icjVlsGDVtjMInptwwUSWKzYyMJ+MndIaYqo8kSlSgZ+hnv7IyxNYmXL3Xp\nWgpvb3u8sN5gq+dgqDJVVfHO3gQVwSzJkQX0XJMfPL+MpSvcH3oYikKYZuyMQ673Gxx5EV3boGmp\nyEJ6RNzOj3MeDD10RQEqkrxgrWkzDBJ2xz4d20BItbvd7iQEUdGxDPYmEaMgZrNjkRYlshBc6bpE\nWe3oNpdHaZjawsDnrNjdeUJ48Knb2vzns+9/EYG788bms1o8fpav/ZcFIcQfV1X1+s9z7MXK4ReA\ns0v+e8ceh9MYWZJOCpMGl3s2ti7zz98/4JOjiCzLGYQpXUvn5c0mB5OYvWmMqchYusr9YUDHUvn3\nbvTRFIl7xwE745DdcUSYZNiGyvMrDb6z1SHKCvYnEa6p0G/ozOKC/WnMZsfESzLGYQ4iputofHIU\n8Pb2mFGQoCkye9OIOC1JywJb1yiqioGfLRzSPjg6IjohdvVcgx/fG/P+7oRpXNCzA0xd4eYa9FyN\n0EvZGcd8+4rFUsumksbcOY7QRhF3hhFNU+HPv7TCctPghx8NeHtvhqFIfOdKhyCuaoHAkYckJCok\nvn+9z41VlztHAUM/5TdfWav/3kHB7cMZs6Reld1aa/LKpbpbaBblPAxD9iYRk6DuQEryiu1xxKWO\njSzxSIrk04JxxCzKKKsKP8nrv/co4krXQlcVgiRfsJi1hkCSKoZ+yt4kpgI22habHXtxr2ZxRsNQ\nFwKK54ndzcdN3+Xc4i/wGaE8YOEI9zQPyPOEGJ/V4vGzfO3PAi4mh18ATi/Hj72Yg0lMw1RZbnya\nWtgdhfyrDw+wNJn1lk7fcfGzAkuVaJg6hiKx2TX43tUloizHixO8pODhyGfkp6y0LLaWLDY7FnGa\nM/BjHF0mSHIcTaVpKVzqWpiqigBWWwZtq5ZzWGsXWKrMT+8d83AQcLXn8t1rXXRJwtAlJn7KwTRB\nkyVeWKsdX1ebJqoseG7JQZZkmrpMGGe8stFk2albYa/2HV7fauEnJTeWG7TthFkYMwkzNlo237rU\nYRbGpKVE06j9ntuWxtCPWWsZvLLeZLNj8sJKk92Rx/7Epm8pJFS8dqmNDMR5TstQudazUSSBLCQa\ntswrG/VkUJQlN1frFuGBlxAmKa6ucGPZpiglbiy7jKMERUhEeY4iJBpGjiwEfpwTpjmaIug5Gls9\ni7KqWGvadG2DzXbIesvm0IvYaNmMwwRDlYGarW5rCrJUd1MpkrRoR93q2eRl+diVw3nj5vQq4rRw\nIpwvlPe0KaPHMa6fxeLxs3ztzwIuJocvifOWtqcLckKAqkisNI1HhMh+fGfADz8esOzqbHYdFFXl\ntfUWQz/l4TCkLCte22qz3rHqbiNFZRLEvPlwwr1hwDc3W7y82am7e4KE/WnC3jRCkWt7yLIShGnB\nLCpOHLtqkb/bhx4Sgvf3pvyzD48Z+TGvXerwn3x3E1dXuXcc0DATBkFORUVeCVxDZRbnaIrEjdUW\nslTxB3eHTMKMVzfa/MVvXuL5ldpJ7qODKbcPfPy09i/emSQkxYxrfYflhsH+JGIYRLQsnaQoefPh\nGIFEy1JYbpi8vNmma+u8tzcDSaLVMFlrWfQaOmVV8nCYIyuCo6D2hUjzgkmQ07RU1lsmLUuj62gc\nzhIeDgOmUV5PlB2bF9fqa1zHYn8Scm87IMsLFFnmyEsoqjr6n4S10N/SSZ1gFqVc6to8t+zWAoZZ\n3W4sSRJFVZ1E7hIvbdSM53m0P18lnhVMnLcmn21RPq9d9PQqAj79+fSxXyRqPlssfpaLx8/ytT8L\nuJgcviQ+b2nbdYyFNpIf59w/9lDkunD5wrJLx9FRZXB0mTQriZKUrqUwilJGfs1CloVE01JZcjXi\nrKQsK/quSVWVlCUM/YSyrHMcbUtjpWFiawEVFQ+OQ0ZBymDi03brh9TBtLbaXHY0LrsGK22dhwOf\nJC/YniSYimC9beCHGe88GLHetbm13kBTJLI8x8tLjrwIR5H4+GDKvaHPr17v0mtYHM0i7h35/Oj2\nIc8t2fhpye39KR/tz7i1VkuEj7wUP4rxooo7xzMkAS9vdFhulRyMQ958OAZKtjoWu+OA23sTbu8J\nsrLgV24sIcsKQy/m9z46oGnpDE/UU2u9JUFZgioL1loGXbuiZansT0Jcvdabcg2NoZ8giQpLU7F0\nCVWuj7M0ibZlk+QFAy/mw/0psiTjmjLKCctbFvDyZpe8rCVONEVaOOnN25UnYcaHB1NuCekzHT1z\n9dW2qS/qFtf7zUce+L+IqPiLtr+eNhA6j8x5ke//euNicvgcfN6X4PO+xKejm3vHHm9v14YzcZZj\n6CqjIEUgkKWYvWnEJMhRZZiEde67c/Jg8eKcfkOja+i8ZnRIspJJmOMnHm9vz9geB+iyxHN9l5tr\nTYqq5I/uj/jZ9oTdcW0Ys96yWWkZjP2Mh8ceSVHhWBIDL+df3z5CUxRGQUIJXO5Y3Dvy+ehgxsq4\nNgaqKrgzCPhgf8zBJEUROUkBZVUxmEVc6TUYhgm7Q59ZUhe7VVnw/p6HZSjYhoIQgn0vIilKgijl\n/rBWis0LuBK5bB9HDIKMJUfF1hXeP5hx7CcEcYasyPRdgz/34irvbI95b39KkleYikTD0DB1haqq\nGAYpVVUhhKBhqIzDlNtHAQM/5eZak66TUVTQsjTitGQa5VRVxbGf0jBUTA3CtODDfY80L1hpGqSF\nzCeHHp8c+Sw5Bps9h66tM4kybL1O8+yMI8yTduVhEPPOzgxVlj5j1DNXX9WV4MQQR2Bpj5fT/qrw\nRVVan2QgdJHv//rjYnL4HHzel2BOZnpcB8j8HA1To++YXO7FbBQ6u+MYL83JshxLVxnMQrqWSttW\nuNpzGPoRiqzSd0xURSJKC8I0PymE5oRJRcsWqJJM31VYa3UZhQmmquDH9X49R+UHN5Y49hvEacpG\nx6Fp6TwYevRcjSzP0RSZo0nI5b5D19b4cD/gOIhZbxusNDQMRSarSvwwYRzkXGpqrLdXePPBkI5t\nEMQZUVay0TK4tGTxouaw17Px4oxvbjYJ8pKeXdcWVhyFYVjy/EoDUxWsNXR+fH8MRUXXNVhyNZqm\nzJ3jkKapsdo0sVQZL8oQAnYnId+5Uhv+/IevrrPRtsirEiEEW12LIE6YhAVXuib7fsL1vouhypiq\nxI1lm42Og6YIdFnmzlFNMlxpzK1FE5YbOk1Tw1QV8qLklc0mxckqbeBHdKwul7s2DVN5xCJzfp/N\nICHO6ns/bzk9a9ST5iWmKrPVs2hbOpoiY2nSL6Ut9IuqtD7JQOgi3//1x8XkcA4+TzvmLJ7UAQI8\n8nPbNmhbKrqm8Ltv73NvFCJERVkKupbC86tNSioalkFV1TIYbUPD1GTe35sRpDmzMEdIFesti4qK\nooAlQ0KTZXbGEboqMfTrzp2bJ4qsdf66ZkDvjEN0peQ7VzvsjSMOZykg0bB0JClElSSqEjqOxZIb\n8+bOlO1hSA68SpNbGy1eWu9SUXF92SXJCt7ZmeLFOZe7TZqmQcdWmEY5ilLxF17dQJbgR7eHPBwH\nLNkaL653ubpkc2O9gxenfHIYIMuQlgJFVvDjksAquLHWpGGoKDLcOQrwsopZlLHcNPiPvrXBOMyQ\npVpY8KcPhgRpztCLiYoKU5FZa1tMwpSeW7uxFSXcPpzx3q7HLMr59RdXiPMCL5SbaMEAACAASURB\nVM5ZbdX1gTqdIrF0Qlabv15t6Xxj81El1dMBw1bPfSRIOM/acxal+EnBSrNmF/cbBn1Xf6xEyleJ\nL6rSerZW8vOe6wLPJr6SESmEuAn8HeA1YAD8jaqq/uE5+/0W8D8B0anNf7Gqqn/9VVzHl8Vpqe1x\nmAHna8ecxdkuk6wosTWZICkQoqJlqqfkEwI+PowZ+wltWyOI64jeixJurTXQNY00K6mqirQoGXgJ\nQVIgC8GNFedEMTWjrAT704CVpoWty1zpulTVlGkQE8Q6pibh6tpCfuP3Pj7i5mqDNK94OAxxNHh7\ne0LX0Xllo0mUpfzum7sst01eXm+yMwkZ+Al+kuFqEroskRQFD4Y+JVCVJVkJSZphKAp5WeAaFo6u\nMApC9qchw2mCaSgM/QgBTIIIqaxwdIUffXTITz4RPLfcIKsK7ux79FyT17faaFLJ3aOAOC2IYp9j\nSabr6lRlSZDl/L9vjek1Nb5zpYdrKuiKQtOU+fZWBz/J0GSBJOBq3yUvCzRJ4u7AY8npEeU5hirz\nzUtN1ts2QVJQltCxlYUDW1aUtEx1UUcoSxgHMYKKICkWEt3wWY7BXGZ7bxwiBLiG9gif4fM8GE6P\nw8fxHT7PafACF/gq8KUnByGEAvwj4HeAfx/4VeAfCyG+WVXV7XMO+XFVVX/my37uLwKfJ7X9OJzt\nMplHs8de7eS21bMXk87eJOEP7x1zMI2ggqqSMLwY19KxTJ2igvf3Z0hCUAHHfkbDVBZdOGle4Zo6\n+5OQjw5DvKjk21e7JEXBOMz48DBkmpbcWmtiaSXjsOQndwb84b0xD44DKiEYzBIahswsKdhsW/zG\nS8v8Pz8b8Pt3R9xcdtC3ZN7a8TiYBsRFRZ5m5AiyvHY/+2Tg4xgqaVmhAbIiYWsKAgkEHE4i7g8D\nvLhuC1VkmSwvGIUZioBBEPNwGJOXKXeOA/KTonrXCdnoWIzDgtuDiHujkLwEiYq2o2OpCncHHg9G\nEW1bwdU1Njo2kCAE9BsmdqJwZxBwbckmSgtmccbtgxl70whDkbENlbGfngjq6Xx04DGNMlqWSlHV\nD9s5byDO8oUY3oNhxPYoXtyLuUR3XTN4dAycztd3newRPsPZiPu8wGM+Ds/yGb6M09sFLvBF8VWs\nHF4A1oC/XdV0638phPg94D8D/quv4Py/NJyV2j5ttPK0kdn8HIaqLAzk07xidxwS5xkrDZ2VpoEi\nBBJ1G2TP0TkOEt7dnaDJEkuugSFX6LrGWquWleg62mIlYCgKigS745COozIJEpIsx1QF15csLvcs\n1lsmXadOcd1caxAlOatNnWmUs9rQsXWZsZeS5CV3jzxurrn4cc4Lay5FVaFKJSsnEh4IgZ/mUFUc\neTFXOg5tV+fuwEOVKg68hJYt8/rlFv2WybWeTcNU2RkHiEpgaxLTpGC1aSAA11AwZIGpN2gaKtMg\n5XLHYL1t1zl9IyGIUpZcHcuQKQrq+kxR4moNVpoGXVvjuX7tw63KgrwsmUU5riFjaTJbPZcjL0ZT\nBJ1rPe4NPF6/0qWoSvb1iL5jYhsKWz170XE0v3dZUT6y6lttmDh6rUcVZyWuoRCmOVVVCwUmeYGh\nKo9E/PN8vWtoi8DgtET3046hJ/EZLvL+F/hF4quYHM5xN0YALz1m/28KIY6BEfC/Av99VVX5V3Ad\nXxpno7qfJzI7fY44UwjSOg1RVAWDWYqtF5iqgmOU7E9iDr2YAy/GTwviE6bzqxtteq7JJQ10tc6T\nW5pClOVMwxxMGAYZJYK7RwEfFR6KItM0VFZbBpIkY+vKQiK6rARX+m5tBlQIDE0hLSDOKz46Drg/\nibi53OCF9SZxWvDB9oiH4xBFknit67DWMtkdR9wf+Ri6Rrdh0DJV7giZhyOfYz+hqCTyClqWjuyA\nn+QcTmO8JMdPc4I0p23pmKrM3iTGtgxWXJ3bRx5emPFa1+a55QYDP2EW5ZiGRts1+M5Wl8NZxD99\n95BpnNI0NLaWXMqqIinqNtV5XeBgmlCUJctNA0liIXveczVe3uws8vpJXi2kzOc1otMBgCrXaaia\nH+LSdjTajrbgHhRVtZBd77kaQtTM9zhjwU04na+fr0DO6/r5vDH0JD7DRd7/Ar9IfBWTw4fAEfA3\nhBB/G/iz1Kmlf3XOvj+knjQeALeAv///s/emMZKk6X3f7407Iu+j7qt7uqfn6NndmSX3EKljyZVM\nUIABSYABQTJBfZDXFqEv+kBTsEQYsgRKsA3Ksg5bFEyRtkjDkmySsEzTpEQutQdF7nJ3dmZnpqen\n764zK+/MyLgj/CEqc7Kqsqqru6tnanbiBzSqKzIi8qnI443n+j9ACPzdozsKIb4EfAlgfX39HMx8\nNEdjuE97ZzZ9fMHQKFs2eU0litv0Rj5+HHOtnmfgBez2R1Q1A1kRqCLh3v6Anu1yqZZL7+73ByDA\n8UNyetp1qyuCRs/h7c0+xBEgI0sgSOg5PrYXplVOnk9eVzAVgUigmlexvYiR61MyJDbK6eCfqJcQ\nxjG252NKIEsxliJ40BrwoDmiYTuoQrA/0NO8RxTyXD3HatlipWpiqRLNQTo5LY5jXt0o0xl5dIYh\nXhRRMlKV2LWaiUTCwIm4Vs8jyRLPLxQYjFwMTaPn+swXdBaLBm9udtnp2ry90+W19QplS0WT0qQ1\nSZqTaQ48bmx3aQxcqnmd5sDjpeUipirjBOHBjO60oc12Qxp9l67t0hx47PVHBJHg+kqRpbI1yTms\nViw0Je3AfmurQ15XqeUN5gvpHX3x4G+Z7ngeuP4kv3TS++BR7zs4nls4y/v1cY57FFkuIwPOYXFI\nkiQQQvwZ4B8CPwV8E/iXgDdj3ztTv74phPhvgJ9kxuKQJMnPAT8HqfDe09o5i6MfgqOewlnvzE76\nME0frykSLyyWaA5cek7EH9xt0XN95i7VCRG0nBhNiSnJOjcaNg87DpamMF8yWCiZPGw5LFUMFoo6\nIKWqrGULL4zohzHdgYc18LHdmCiBrpOOGe27Pr1RSMlMewy6bkgiYOCFfGe7j+eHEMN7+zYjNySI\nI/wwRpCgaypfu9ukPwrZ63lEEakW0cBDlWSQBIslk9dWKxi6wrt7aZx9t++R12SuLuaRhEzLHhFG\nMbYfISHx3FyOkRfy3v6Iek7lE+sFWiOfnY5DGA3oeQHKSqra+sbDHm/tdNjueizmdWQpj+1FFIyI\nBOg5aYL+D+518MKQq/U8c0WT+aGHEBKbHYcoShVqNUXi7tDh5t6A4UHntBcmVPMqSVIEOJRzGHd8\nf+dhj7Kl8dnLysw7+ryhTHJNszSOHvU+Oqm67Sy9CE9y3KPIchkZcE7VSkmSvEHqLQAghPg68Itn\nOZTZYakPhKMfgif1FMbnGceUT7vj6th+qjSqCvKKxZ1GDyHLLBd0oiRmo2pSMjU2KhaGJvHycglL\nUwjCiEs1K5W5tn38UYgiy3Rsn6vzFn1boZbTWalYPL9YxNJl/DBOZ1WrLm4Y0/d8JMAPI1aKOj94\npUZ76KGrMkGQoCngRQkJCUM3AJFQz+cICyELRQ3HD1BkCVNTkUSCLsnMFQwUWbDXG6FLAstUCcKA\nuZrBtfkCu70R7273EUnMQt6kltdYr1oMHJ/m0KVk6dQsNc09DD0kQyanCcqGQslSuLpQ4KUFiz98\n2OXTayX8WOb5eTmtfhr5XFkooskSCwUdxw9YruZpDVMtK0tTieKQ5iAgjhM6Q5/eKGC9ZlLUFao5\nAycMKehaKrHthukQoINr54cxK+UcznJEkpw8snXohuz1HfL6Ya/BD2NaQxc/TCYVTrMqjcbjXsda\nTGd9D56l8umsPG759tFjMg/je4/zKmX9JHATkICfAJaAX5ix348C30qSZE8I8SJpwvpfnYcNT8LR\nD8GTxnCnE5mPuuP66nsNfv9OE0lI5HSJ+60Rkkjr3f0AYiHx8qLGWj3HXNEgjGEUhEiSjBNEDL2I\nB20bL4gZjNIqGl0RKKqCrMhUCwb1qfr8xsBj6MfcbgzYH7rIQqAqMlfm8qxULBCC7251iWWBrCmU\nJBldSvBCgR2ENIYOZctgvpSjoMmoikxv5DPwQ2QEbphwd6tNcxggC4EuC+JEwlBkXt2I2ep5NIYe\nQRxRyOksV3K4EewNQ/pezMCzKVupOOBm38P1A2p5g/ttl5BUwrxe0CgXLDY7I6IoImcYtIYBTpiO\n43xhscSLB/0c7+72uN8asdlxuTIvY/sJ+0Mfozmi7wbc2rOp5FSuLZaO6RiNhyrJEkRxNHk/rFas\nKa2k4x+Zra7Nnf0R1xbzh74kx1VL3ZE/qXCaVWkEEMVMtJieJL912nvuLBy9UTrLuTIP43ub8+q8\n+THgLwMq8BXgTyVJ4gkh1oG3gZeTJHkAfBH4BSFEHtgD/gXwM+dkw2NzXgm96fr2sY7SSfzR5+fZ\n6jgUdIWNqsFXb7fI6xpLFYP7+0M+sVZhvqARxBILJY2FgompKpSttMLGDUPmCwYP2zYtTaaU03l+\nIY8TRCwWTUpTMW9DVSiZCp9aK3GpZtEbuaiKSpzEzBcNovhAWrqsE0aCnC4TJgmWKvPOTh9TlRAC\n6nmDGEFOl5CFRBgn9EcBYRSSCIEbRLQGProiYRkyAyfk5ZUy1+ZLFA2NkiahaTILRYu5g7DLpZrF\nWsUkiBNqeTUtS62YBEFIKWegqxK1vE6SCAauz0JRZ7Gk4/gRK+Uc/aLP0AuOdRavlHOEa/EkR2Cq\nMotFg2pOo2ho5PS0BHbW3fa4OuholdCj7qRPGn4z7jL2wzR/8ahKow+z6uhJvOasWup7m2zYzzNi\nXAYbxjF+mDDwfAq6hhuGPNgf8uZmj+WaSXfo8/W7DYqazlLJ4pXVMktljVu7Qy7PF/j0Ro0gjLnZ\n6E0G0jR6Lr/+5iZBlPDDLy2wdhBKGYcvDEVhu2fTGfq8uzdgsaSnCqNG+vx5XWXghtxp9NjueBQt\nmZGfUDFVdFXQtH0eNh2qeZV60aA58HDdEDcKKVsGy2WdRj/g2lIex4vpuB7P1QvkdIXvbnXpDH1y\nhsJiyWC5bLE/8FClhCvzJTa7Npaq0OiNELKEqSpsdW10WeXllQJFQ5vke4ZuyP/35hbv7Q/53KUq\nbhjRd0NeXiodhDLSv3WrZ1PQNWp5/VBy2A8ThEhQpPcX73vNAaYmHyw6AbW8xmLJmjzfVtdmpZwj\nbyjHwiZj4cSiqU6OOe31Hx/rh/Gp5z16zKxBQGOO2vhB8jRhpCwE9eGQDfu5gExGdg49mgN3kvhc\nLJq8udnjK7dayHcS9vsjtocJGkPq+Q4POyOWSwaNQcDDjsNCyaA78vnW/S4An8vP8frDNn94v0tR\nV3CuRMfCF7KUSk3s9RzutUe8tycxXzApWQphDCVTxdJkXn/Q463dAa7vg0gb2fK6Qs/16Yx8dDmt\ncOo6ASM/JEoS8rpKyVRJEont7oiioXK7ZXNz1yavyXzrfpvWyMdUZdYqFnN5nZ4XktdlHrQdmsOA\nMIrYG7iAYLVi0hn6BElMe+Tx0lJp4oltdW3e27PZHbjc2Bvw7s6Aruuz13W5uliY/K3jUNGV+fxk\nkE4qve1PxPc0RaJle7zxsIcsC5IkoeeErNcsLE2ZPN/N3SEALyyWjg1temu7w7s7A+aKxuSY017/\n8bEt2zvxvLNKp2cNAhpz1MYPkqcJI2UhqI8e2eIwxZPc3Zx0zDikYOnpkHhLFaxU8jh+yH7PY6cz\nZKGqYKqCIgmyAkkSIxOxWjWpmAoJgo7to8oSeUPGPGi0urZQZKXcpj3w+J1396iYKr1RyEJJp17Q\nuFQtIAmBJqf5/jgOKecU6jmV7a4HRPSdEImE1aKOF8hYhsblmoWmyOz2HO53bAxFRpcFL+lFwijh\nfmfAUjmHKSls9ofYbkDX9tjuDJjLayxXc1hqHS+M6Y187CDE0CXqhRyWJvHcnEXRCJAEGKpMwVBo\nDFw6tkc9p6MK2OvZrJRNWnYPCcFiSeNS3UAIWCikY1DT7ufwoDFNIiZmrWIxnze5td+jN4pYrRqs\nlK2J5xDHsNMZcXnOIqerbHVsSpbG8/N5DFXhftOm7wSsVoxJeGh8199zfN7c7DHyfdaqOa7M5w5J\ndD9KrXecyJ4+7/TPo8fMan4bMyuE9UHdlT9NGCkLQX30yBaHKZ7k7uakY8bCZfWCwVrl/Q/ub353\nmy/f2qXlQW8nJKcLUMEOYBjCd7d71Is5CobCTt9Fvt1isWQy8iK2ug7LZRMvihi4EW/u9Hlzt09e\nU1Bkmcs1i5yh8VwdiqZKcxjRGroM/JhRQDqvuu+idKA1Cmj0PCQpJkoEl0yYr1iQCB50HNyQtN9B\nV7i+VkORoOOFqEKi7fm0hyH3mw7dUUCcQBC1yekqr21UqeVVfuu7e2wNfGQpYG7RJEGw2w8oGOls\nhSgB14/41r0OuwOfpZKHHUaUTI04EeiqgheEOGFCQszDtsNu10FRZO42U1mP8XP3nIDRQkiUxNxu\njNjsjCiYdV5cKk9ej9+/s887u0M+vVFGVyXadkglp6ay3UHIW9tdOnbA91+uTMI1mpIu7N/ZHHJ3\nf0gtr/PpjQJLZevQ+M6T1HqPljHPeuykY04KGeUN5ZjH8EHdlT9Nji5r2PvokS0OUzyLpNz0h8IP\nY9arOf7cq+t89e4eL9aLSIpEUVfZ7Iyww5DPXKrzfRsVcobGZnvIpXoBS5MZuCG1fHoXaqohX3xp\nnpWyiSZDwVQII1iv5dio5yZ3q5+7EvLKcoGhF1CydPKGzF7PR1dhMAq5sdNPQ00JPD9fYL2WBxJW\nygYP2kNkSUKIhE+u1jBVGVOTWa/maA08dnsjhk5Ed+TTGnm8tlHh5dUyyyWLoqHhvRCxXDa4VDNZ\nruRxgpCiqaJIEs/Vc7Rsl/mCScFS2W27bMybzBdzyCLm6nyJoR+Q11Q2uzYLBZN7B/Mn3CDk5aUy\n210bXVGwdJmBG6RjOg2F779UYa1qHJPKnpbQVhWJYD0+lJi+vlxm4PnHksqGqrBY0qnndRaK+kRw\n7yLdCV8kWzK+d8gWhyke5+5m2pUfJztnhRn8MGan69C2XaIkoTnw+MyVOq+sFvm9u20Gts9+zyGR\nBVdqRfJqqub6ykqe1bLFN+41WSwZxEk6z+Dbd/e5sTdClQR5Q+aVtSpxkqqDDr10jsNOd5RWBFUL\nNIYOq3KOt3e6aIpBEAR843aX+ZLO/tDlvUbA8/N5ek7At+7t88Zmn1eWCzh+yFubfW61eiwX91ir\n5NgfOPyz7TbXFqpcmitwd7dPkIS8ulalYCj8+xsNPrVaYhQkxHGIFyXs9l0URQYEW+1UZG/o+rTt\nkM9dkfjs5Tq7NQdVErx+v4MfJ5Qtnc4oIIlturbPrb1hOlt6rkAtb9AaevhRwsP2AFUWrNfytEcu\nfVdGCLA0lb6bJsUhnXzXGvoslczJtqqlE8bpa1YvGGzUc8DxmQpuEBJFAj8MSBL90HulaGrHVFln\nhXgeFfY5LUF99PyPc+yz6J7O+PiQLQ5PyGkzHI4mGd/a7vKw5WDoEp2BjxvGvLHd4Z3NLkMPIkAD\n3s31qeVNri0WqeQ1eqOA3323SdlQMHQFxw9pDFzu7g8ZugF5Q+VB28HQZLYO5jhcXy6zUrEoW2ra\nzdz3aQ4c3tkdUtYVbrWG3N4bUrEUbD+g64Tc3h+ysjOgO3TZHfh852GbKIE7DQc3gXe2PUpam56f\nap3cbzep3GvSddLfb+27VHIyQzfhze0uOU1HEONHCUISlPQuqiLTtj1GXsjQ8/Aiwf7QZb2WZ6vr\nMnA83tzsERPTsz1kRaFje3QcHy9IuFKz+IFr81yZj7jdGPLGwx4P20OEECw0bK4tFCgYCgM3pDsK\nWKumDYMAb233edCyWa/lsLR0292mTd8NJsnqk24KiqZGlAy4vW/TcyJy+vuJ6HEhwLQq66z3waPC\nPqe9d2apvp712GfRPZ3x8SFbHJ6Qk2rgZyUZry+XWSoZE89BFhIvL+b4cl6n0R8hIyjldZZLFvWc\nxmotx7X5EkGU6vyMPYcwjnHcgHf3bBo9h6Kl8Eeuzk88B0WSuFRPvwA1RcJQ0v6IT6yUWCh1WSga\nvNZ1eP1Bl6uLOXpORKPvUslpLJZMgjCceA7DQ55DjnreYLNjc6/Z4+Xl+jHPYaFkcLc5mngOeV3g\nR4K+4x2M5NQZOD5t20eRwA/hc1dqFE2N3X7qOVyu5fDjhC++tHDgOUR0bZ9RmLBWNdmo5anlDQxF\nQZdhuaxjqIK1aoH5oo4iyYRxmmyv5qZDRkUWiwa1/PvbLtdzhHGMIp3el6IpEteXK+R15VgH9Ljo\nYKyxdNL74FFhn9PeO0fP/zjHnmRHRsZZ+Fj3OZylrvxpzz8OCxRNjYGbTmczVYW3ttt852EPSQIv\niGkOPOYKBjk9reL5oReXsHSFt7c7NAYuJIKiKR9IVwjuNHpossJKzeJKvUjL9njYsVksmpQtdSLV\n4IcxD9tDbu4NGboucSSxMZejOfRo2x5EMfdaDhHxREBvr+fTc33kGB50RnQdn3rewPVCojjhlbUS\nIy/i3d0+K1WL1VqOVt/FDSJWKhYFQ+Ol5SJvbXcZjAI0RcL2Y5aKKl03QpEEr21UWSxa3G8PGXlp\nMtn1E2p5jb7rs1BMhxjZXshWx6VoyTw/V8IJwsmiOXBDFBlaA4/FkoWpyWiKNMkLjF/bsWS2pkgU\njPR1sL0INwy5VCsc6z2A40N8Psj3zWnvpyw8lPE4ZH0OT8hJdeWP8yE8bd/psEDJ9Og5IZfrORpD\nh//3zV3e3OwjyTF9O6Dn+BiqTN7SWCxaVHI6G/UcX73Z4lajTwTULY1awUAC7rZHeEHAC4vpnOO7\n+zY3doesVAyuL5cmUg19x+eb9zr8+5t7bLVHFAydjZpJyw7YHzjYfkh74BIlgvli2ojXHvr0nFS+\notXzCWIw1FQIK0ngzd0OrhfTtmMKRot63mTgBYRRQrWgsV7Nc2uvzzuNIQM3wFAETggVQyZGEMUx\njb7PZ56r8Nb2gEbPwQ0iwkRQMmT8KGG5YrJasbjftHlnr89K0SJJIIzS6iQhIEkStrsO2x2HlYrJ\nUjkNp40H8Yxf2+bAnwz0qeUDWkOfB22bKErluY/2HsD7Q3yEYNL1Pn59z9KP8CzIegUyPkg+1ovD\nrLpyP4y5udtjr+eyUDK4tlg61uE6zdFGqaOS36l8QsLeYETL9lirmuQ1lcWCRrSUozsM2G3ZaAKW\nSjrrlQKrFYPhyGerLbhcMymYEv1RKnpXyyn4ieAlzWK/63Nvf8C1uRzECYqIWSnqVHMqN/cGfPt+\nB0sXdIcOc5aO70UYmowsBM8vWNRzKjt9hzgO0GSJK7U8kiJhBx5anKBFEFmgCpBkQXeQ4EYgwpDF\nogXRCFWFJA6o5xS8JOKzl2ssFI20oqndp5bXqZsmozDi2kIJTYb7bZvuyONh04YkJo7B0mTyhspa\nxeRue8Ree4TvpSqxVUPFlBMKukpj4FK2VBaKOkGYIBNTt1RURcZUYOQF3G/ZdOyAkiVzda5EEkNz\n4GCoaXd5Y+Bwbb6ApkrM5022OyN2+yPefNhnraqzXiuyWjFRJIkkgXstmygepOElQzmxH+Fo9/JJ\n3cxHbyhOu8E4qyBe5lVknDcf68VhVl15c+DSGvo0bR9FTmW8j3a4TjP9gZ0l+T2uiR81YxRJoEgS\nDzs2HSdClhVu77fYd9KE9EIiU8xryIrCHzzoUtAVrswXKJgaez2foZ3Okw7idELZ3e6IB60RUZJQ\nNtPqo8WyRa1o8B9ut1JpbZHQ8yKqlsxcyWJ/4HKzMeTqfI44ge2uS3cUY2mCthvSc3z2By6uH+GF\nIElQ1AWuK2hHaQhyqw+yEpIoEh0nZuCH1IWEqeuUTY1a3uBXv/WQh92A5iCgW44xdZmek069CxOJ\n++0RbpD+LVs9B1ORuFQrECfwYN/mdmuELicslXOUDIVRnPD2dg8/SihbGtcWCrRsDz9O9Zz2Bz7b\n/VSmfLTZp+cGvLhU5HK9QM/12e55BFHCg/aIgRuyWs3x6ZUazYHL3abNN++2eHu3T21X449eg89e\nrk28yIcdm+2uR9myeWGxNPN9A8e7l0/qZj5rMcOsfU/yGDKvIuO8+VgvDrMomhqX6nmKlkLVMmZ2\nuB69Sxt/GE9LDr6wWJjEsBVJ4lNrDqYmM1fQ+O0bO1ypFfjM5QqVgsVCUaM1CMibMnN5AxCsVyxG\nfkglp9N3QuoFlWvzOd7Y6vH5K3UkIWj0Ha6vllkoWEQHHcGLZZ39QcBSyaBt+/RGHj035HK9gCJi\nNuo59jojCnmdK/UcjaFPuz9i4MW4fogXx1xdKNDouDzoDGgOXC7VSnz++Rq3doc0Bmmo6pOrJQZ+\nyJ98aQlJgtZwja+8u8dLy2WWSwZCFiwUTJbKJi8NCvhhRMnScYOIW40BpiozV0hnVVyqWbzc9yiY\nMuWcxnzBxA3S/EDX8SaJ4fHrUjF1GkMHWUh4YYQkoDU8kOY2tUmPw2o5x0bdwfZ8LtcKNAfuZKRn\n0ZRZq+aoFxQ2asVDSr3XlyuULftYD8RRjnYvnybId9rP0/Y9iazXIeO8+dgnpGclHsfdr+OBL0c5\n7fGjGv4FI62Fv9+yedixyakKYRTzsOumIaIIdEVgqioQsdXx+PRGmasLRQqGxm7PYaszZKGYJlxH\nfkTLdrm+VKHn+Pzbt3d4eblE0VIPJVfvNge0hwFeEFDO6VQsjXd2+nz3YYeu4yNLEq8sFXjYcTFU\ngaapyMTpKE9DZegG1HIq95sjTE3mfstBETGjEKqWgiJLPGgOedhz+WPPz5PXJWQhI0sJqixjBzEd\n22epbHC5nuPm7pAkjnntUo3cwbwESOdgf+29JnES84UXF2gMHN7Z7GF7EZ+9Wue5uQJDLyQhbVqL\nk5iNWiE9tmsznzdxghAhmCThx+Gc8WNhHJMkYjJTAeBuc4Djx6xWzEOvxCSixwAAIABJREFU4axk\nM5wtQf0segrO69xZ2OnjSZaQfkJOqiN/0tLD6XOORfBq+YDbDZuv3tznbnuAqSioskTf86mbOrWi\njoKg74f0nAA3jImSBFmWqeUDvv2gw82dwSThutUZ0R0FqLLE21s9/u2NPd7d6fPqRu1QctUNYgZu\n2kCmKDY/eLVGnMS8vtXjzl4XTVG52ejR7PuEgKlIqLJMJa9jKek8aFVAe+TjBiEdJ8QLQgSpLpKh\nSQzsAD8GPwhRFZXwoCJIVxXmCxqWIhNECXcbNtt9h6KhslQ1kYREdxQAcL815LtbPZCgmte5u2/z\n1dtNPNdjs+fy+St1Bm5AkgiKlkJOSxcmgJu7Q7pFnzB6P3E8LaA3fqzvBiRJMpmpAOAGMaZ2vIx1\nVrIZOLXf4Fn2FJzXubOwU8bj8rFeHGbVkZ/lDuukhqTx/OGVsslK2Zp4DoYik9dlHnYK5FQFS5Pp\nOiH1vIIiK/RG6UhLSSQ0+h6fXKuwVDYpGBqykFgq6hPP4fKB9MS1+RILBZMoTiaew1Fht/VKjrmC\njhCCjVqB5VKOztDjm6ZCJODzz9XY7XoTzyGJI3RVoWSqtJ2ApbzK7caIgqVyd98mpwq8WEw8h5EX\nMvBiPnOpQtfxDnkO1YJB1UolwiUh2Ot5VPIqV+pFBl6q2mqoEmVLZamokyQJr23UedAeULMU+k44\n03PwwhBDSWc4s8ghz2EshjefNw89NpZNd8Pw2LS1o6/xScnm0/oNnmVPwXmdOws7ZTwuH+uw0iym\nQ0ZHq48e59iz3p29u9vj5u6Qa4t5ajn9sY9/XMbVWK2hz/MLBZYr1jH700loHPt5XnYdfZ7HOe9p\n1/hJH8vI+F4lCyudI9N3WONKltVK2pD1KG0cQ1WoWOns4aEb0nd8hIA4hq+81yCKIz6xWqWe1zFV\nhW8/aPHlG7tstUdIssRnLlWYKxrcb6pcqufJ6TIjL80xXKoV6Iw8TE2edAJvdRwetmxqRZ3PXZqj\nkn+/pPJWo8fACRm6AaVcmry9tTcgp0K9aNEcukRxzL3mkP2By7u7Az65VsY+GICzP/D58jsNDFWi\naOkslVSawxBZhpyu4gYhqpTKkFtqwju7NtudEYYqU8npLJTTfox6wUAmwdJV7jSHXK7l2O45bHdc\nPrVWwg1i3t5s4UeCxZJBwVSQJZnd7oiXl8vsDz36I5dyzqBje0hCECfp4HHbiyaS3KaqcK81ZL/n\npUl3x0eRZCDBCcJUvkST6I58Njs2G9UCbhhOBgKl90jv5yWmy5c1RaI5cA/lNWa9B6YbHs/SHJcN\nz8m4yGSLwxGmQ0ZCpP8Gno/tpx/A0/Rt5gtp3Lsx8Bh4Ac1B2pl7d3/A77zbIAwT9vsBn3muhiLD\nr31nk9+73aJnpxU291s2r6xU0FSZza7DasViuzOiMwrY6aZJblkWEw2hb99vcasxZKViUbE0Ppef\nA9JE7ddvtbizN8CLExYLBpIE7+z2kCXBlXqeoR8jIbA0mRu7PXa6Du/u9imYKlVL51ajz3c2u8Qh\nFC2ZvK4w9EPiCAxVECYCkpi1ah5dk7mzN6A5DFBlKJgqNUtDNxRyiky9oJPECTsDj4qh0PNDbC9m\nv++iqjI3d/tEJCwVLdaqFl4Q0nUD9vouHSdgv+9S0FT6foQsYup5k+bQo2iqk2E+igzfedij0XOw\ndJWViknBUAijhLv7Q1q2Ty2nESUJOV3FC2OimMlAoHRxeD8vMV2+XMvp3G3ah/Ias94D47xEvRCc\nqTkuG56TcZHJFodTqOUNVFk6dfjKOM9QNg/r7hiqQkFXaY88/MDk+zYqVE2VT23UJp7DDz2/gIzA\n8yLiJOH7n6tweS5PFEusVlNv5XItd6LnYGky9ZzO+lzukET1SjnH9eUCBV1BUwRrtXQ4zXzRJIgi\nXlgo4IURQQwlQ+ETq0Xe3R3w/HyBtuOxWrb43OUqFWubgq4ghETZktkbBMTEzOUNvCDEDWKeXyiy\nUFBmeg62G6LIElVTYbFs8cZml7yhEMUJYZhwfbVE1/ap5RQ0WeHqQv6RnoOmpNLhFUtHlaVDnoOu\nyPRHPn6UsFo1MVWVtp2GrzYiuDJv4QYJqsyU52Ad8xyOli9risTleg4hTi9SmM5LnPR+OXrM9M/H\nIcshZDxrziXnIIR4CfjHwPcB+8BPJknyKyfs+9eAnwJM4P8E/kqSJN6sfcdc5BnSJ8Wyx26/LCRu\nNnrECVRzGivlHG07bbTrjTy+ca/DH7lSZb2WpzcKeNix+dRqFUliphS0oSq0hl46e6CUI0riQ6GF\nztDnZqNH1dJ5a7tPNacwVzBxwxBTURh4AQPH580HPTb7Dj9wpc5nL9f59oM272x3GbjpDAgkmYql\n0LN93tmzubndwYlCSqZOHMHV+TwbcwVymsRrG3UaA4f9gUsQxJgHzXu1nMF2z0YSEl4YEieC9/Z6\nWIrC84tFbD/gza0eqyWLYk6hqGs4YUhBT7/wxnO3W0OXb9xtc22hwFothxeGVCyDWl6fhO7G4Z7m\nwOVec4QbBKzXchiKwt3WYDJ/GzhU6nr0+o1fu93eiL4TcKleONYVP/3ajudXL5VN4Oylpk8aFvog\nwklZyOp7hw815yCEUIBfA/5n4E8BfwL4v4UQryVJcvPIvj8C/HXgh4Ft4FeAv3Ww7ULwuB+Mk+7g\n3i+JBF1RGHo+O12XMIp50HZ40LK5udPnbtuhZ/v84AvzvLfT52HbYa/ncmW+gCxJx6SgZcnjdmNI\nxw5QL0vHOrZvNnp8634XQxE8aLsoAubLBlEE5ZyCQPDGgw7fetBm6Eb4QUIUJ/zWO3u8vdVFIPHO\nbh/L0MiracnprUaflh0TAjIOsoC3dnu8sFCimtfpOiEdO+Rmo48fRhQtnc+PQl7bKNNzQh60bHpO\niBuE3NkfgYhpDD32ui43GgMuVS2WKzlUGYIIypYCArp2Ot70rc0u39nscGM7x6c20vkVa1WTK/N5\nmgP/ULinaGp4YY83HvbojALmizqNvk/ZciaLw3Spa8FItx2XWe/TGfqoyvFrPH4t0lLhdH51TpeB\ns5eaPmlY6IMIJ2Uhqww4n7DSi8Ay8PeT1A35bSHE14AfA376yL4/DvwvSZK8BSCE+NvAL3GBFofH\n/WCcVNZ6tCTS9lQ2Ow55XeX6sspi0eBK3eRrtzv84JUK9aLOQmGOm7t9FoomtbxGxdKPLT6GqmAo\nysypZfD+xLOFgsndpo2uCiqWjntwRy5EwlJJ53I9R8fx+dRqmaWyhSIJXpjLEUQJz89bhEgTz+G9\nRpmbOx16ns98wcQLYtYqJq9uVBECNuoF3CDkhaXcIc9hsWRRNFTmCwZDL73TvrZgE4YJ5ZzGWsVk\nuWZyfamEoghMRaHv+akCraFOvIjLtRwLRXOm51DQ1UPhHk2RWK3kaQ7SmQ4b1Txlyzl0rcb/n/Yc\njr5215eL9J1g5jUe779UNMnpyqGJctOPn8aThoU+iHBSFrLKgPNZHMQJ216Zsf06qZcx5jvAghCi\nliRJ6xxseWpO+mCcJJZ2FtnmVGI6QVMk9gYOiiSzeSBVnZDQdUJ2Bn2uzOX5zHM1WkMfJ4jIH2Q1\nt9ojfufdXTaquTRhrQgSB3777W1WqzmESJPUmiKhSBKvrdfo2j59NyAaBnzrfpsfuDJHLadzrz1g\n6EaMvIDry2UiEr55v4Xnx6zXcyhCYHsht/b7xElM2dLQFcF/8tlLuFHMWjUtfX1vb0iQxIhI4t+8\nvsVCKdVVenmljKXL9J0QVXYPKn88Rn7IdselPfSo5VXuNANqOZ2Xlops1PLc2R9wc6fFwA15Z6fP\nK6sVVssWSSEhiGL+4ucvU8lrDN2Q+60BQZRWB41luMevje2GbHaGXF8ppaXBQ+dQxVHR1GbOYR5P\n8msOXe41h1yuF6gXdIIw5t3d3kQ87+j7YOyNjDnrnfbR8bFnnR73QcxiPo/nyEJTH33OY3G4ATSA\nnxRC/H3gh0hDS78zY9880Jv6ffz/AnBocRBCfAn4EsD6+vo5mHk2zjpx61GyzdOP73RddnsOcRzT\nd2M6tstO34MkxgsTTFXCCWDoBVyq5emNfPpueFBCq/B7t/f5zbd3WS5ZOEGErsq8/qDDneaQpbxB\npaBTMjVKljqZbPb6wza/fWOPra6N7ycMnJAffjnm2/d7fOPePltdh5XtHuuVPLt9l/bIRZYkDEWm\nZXvstm1iQJUFlqGz1R2xUs3j+BEJ8PZ2j4F7MJa0N0KVBZW8yV7fY6FsTqaxjSe3feteh3d3evTd\ngKWyyXPzBXRZEEQxvVHAN+62ea/Rp237dO2Q+80RVxcLlPRUcVVVJD6Xn2Ora6dzMA68hbEM9/g1\nuL0/4I3NPp/ekIiS+FDF0aOmsd1t2nzjTos7LZsrcyM+c7k2maYHHJP2Pq8v6SeZHnfR+ajbn3EO\ni0OSJIEQ4s8A/5A00fxN4F8Cs5LMQ6A49fv4/4MZ5/054OcgTUg/rZ1Py0kiaSdVMk0/HkQxURxj\najJ+GKHJRe40h6yWTUZBxPPzRTa7I3RFZqGokySCzshDkdJKqe+/VKM19FgopYN0CqbMD7+4wOV9\na6bnUDQ1Xl2r4gQxURiw3ff4gStzXK4X0BSJ9arJrd0eVxdLlHMKrp/OudZVacpzsCeeQxgmXF8p\nMVcyqOY0kgSuzOVpDUYMvYRG30VTBQVd5ZNrlYnnUM1pk8ltZUvhxaUC+32X+aLGer3ARjVPx/Go\nmDpFQ+XqvIUA7jRsLs/nkCWFtZpBECaTcNlKOUe4FqMrCqosJp7D+DUY73dtvoR6cMc69hymX5cx\n0x7g5XqOgiHz3JTnMJ6md7T7/DxDLqd1QX9UQzsfdfsznlGHtBDi68AvJknyT49s/2XgbpIkf+Pg\n9x8GfjlJksXTzvek1UoXxbUd2+GHMV0nmNkZfLTqafp3SBOdlYNBNh90hcusiqyxuJ8bxBiqdOZO\n57N2Kn9QHc1Z53TG9zIfeoe0EOKTwE1AAn4CWAJ+Ycau/yvwC0KIXwJ2gL95wn7nwrNybR8nRjwu\ni7y12+PGnk1OV7g6b3Fzd0jfCfjTn1xBCHivMYQ4RhIJfpgmSecLh++8DFVh4Po0B+4hddDp0srG\n0CGvqWx2bVbLOTqOR3foc7c9YqNi8uZmn1pexlAUvrvVY65oEMVQzcmAwPZiLtUN3t626douSxUL\nSxXc2BlydTHHwIkpmiqX5nL0Rj5ekGCqgrbj80MvLE1i97NUUiumznbPJogSdqI0lv/8fCmdGXFE\n/bRoapNu87GC65MMyHnUYvhB3eFelBuVjIyzcl5NcD8G/GVABb4C/KkkSTwhxDrwNvBykiQPkiT5\nDSHEf0uajxj3OfzX52TDMZ7VB/9xYsTjssjfeHOHm3t95gom2+0C393tMXADZCGoF01ef9glr8n0\nvYjVisULi4dzH2NvYpY66HRpZaPv4wUh+0Ofh60RXpjQ6Dv03Ih3t7q8sdVHU0EWMtttG02T0RSZ\nnC4jgAiJqinzoDWi5wTUCjqaJOi4EX/4oE0M5DSFH7gyR8FUaY98drsuUZIwXzD5tFo91k08Lh3V\nFZvm0EcSAtsL6IwCbC9itfp+RdD473thUZp0m4+/TJ90QM5pfBAJ3se1KSPjInAui0OSJD8J/OSM\n7Q9Ik9DT234W+NnzeN5H8aw++I8TIzZUhaWSwR+/WqVsqswXdV5dL7NYNhiMAn7kE8sIkXYqI6Xq\nn0VDm7mgnaQi64cxFUtlqWhSto57Dklcouf6FHSVpZtNSpZEFMGD5pD5svVIz6GoS9zZd1ivG3Ts\niKKp8upGGVNV6IzSprqhF/DqWnVi43R56TheXzF19ocOuiITRgkt2z3mOcxSPz3tOp9VJfXD5iLa\nlJFxGpkq6zlxUthgHNMumyoDL8Dx0zkCj8o5nJUnOS6Ls2dkfDz40HMOH0XOMmHrceLaJ4UNiqY2\n0V9SpLR0s7E/4kF3xAvzRZ6bi3l7u0sUJ6xULG7u9vjD+y1MRcbUFSqWjqXJx/R6xs8tC4mB67NU\nNI/Z1Bn6fPNekyhOuFTPo8iCoReiKzJD12fkB2x3HRp9lzhOaNoOmixTMnUu1XO8vdOnYsrkDY3N\njs2legEB3NztMV8yWa/mWCpbx3IAY0XT0+QpniZfkMXvMzKePR/bxWH8ZR5EMX03wA3SpOesXoWj\n22c9dlLYQFNSCYy7TZu+G9Ab+bzxsMt2b8Re12Ov7/LNe12ESPi+jQoPWg4POjY5VaJeMFkqGwez\njYNDk8nGz92yvYk8RC05XMt/s9Hj391o4AYxn1hxyOkqfTegaCiAoO8GjNyQvYFH3/FoHyiUrlfz\nrJZ03mva5FWZvKGw23e5XB8hBLy11WeuoPODz8+R05VjOYCxoulp8hRPky/I4vcZGc+ej+3iMP4S\nt72Ina7LXOF4nP9x4tqn5TeMg+lvqgKXajlWygY7vRHr1QKLJRNZJJiayidWK6zXbDqjwkzPYeCm\n5bCmqiBLIAsJU5W5XLdm1vJfmy/xxReDY55DXleBhKGXTmk7yXNYO8FzWC0bE89hVg5grGh6mjzF\nWa/rLLL4fUbGs+djn3PY6Y6427S5XE9DJM+C5sEwHSHg2kLh0CLyOPH/kya1ZbmDjIyMWWQ5hzMy\nK1Y9ntkw6y706HSvvpMO79EUiVo+/TIePz7ddwCHZaF7Bw1w9YLKw/aInuMz8iLu7A+o5TX6boil\nyjzstCARPL9QPCQTPd0nIEvv35GP+xrGd+rT3b59x6fnBGx1huR1DU0VPGg5rFctoiQmSQQFQ6Uz\n8ug5ITlNQpEEiixTzemM/JDX77foOiErJYNKXiNOBKsVi5KlHupKhnThcoIQx48mMten9YOMO8uP\n/szyCBkZF4OP1eIwK1Z9Wjjo6HSv5iD9wi0fdCoDM/sO4LAsdNsO6Ax9giiiOfCRZcFuz+F2w6Zk\nyJQsnZEX0RwGCJFg6fIhYbjxueYPYvhREk/6HqIY3CAkbyiH9JyaA5+3t3vc3h9Q0FUkYGfgsVzQ\n0bT0ZS+YCntdl6btkleVNPxlyCxXTHY7Ll+51aTvuMwVTRYLBroqc3U+z0vLpUN6RuPrsNkZEUXJ\nROb6tH6QsSbV0Z/T+2ZkZHx4fKwWh8eNVR/tKyjo6sRzOK0uHw7LQg88n74TMF8waQwcTE1m5BW5\nVBuwWE61gy7XCzSGDiTimEz0SRLTp+k9FXSVak7jct18Ms9hKaSaU87sOVyu51gs6Th+dKoO0VFN\nqlmeQ0ZGxofPxz7ncN5kZZYZGRkXhafJOXzsv73GWkBj/Z6nZRw26Tv+uZwvIyMj48PgYxVWOsq0\nsig8OtY9a+DPWGRuHGYxVOWQYF6j5/J7txsYmkwSg6UrFAyF+YLJzb0BSRwRI7hUz7NeS8MxzYHL\nyI8YeD5Vy2CpbM4U2dvq2hRNlcXS+41oO12HxmAECOYLBkVDY6tnYygKQRRxY6fPXt/l+kqRV5ar\nuGHI3f0h/+FWk+srJYZewErVYrFo8fZ2l1rBoD/yMTUJSUpLZy/VCjhBeEhcb9q2oyGizJPKyPjo\n8bFeHPqOj+PHqPL7GkWnfYHNGvgzFpkbJ2jnC4cXmdcftvl37+wThhGaJmOpChu1HLX8kLe2B/RG\nHroq86l1D0uTGXjBZDhQdxSyXjPJ6fJMkb3bezaVvIalvd+I9tZ2lxs76XiMF5eK1PIqt/ZsZBkG\nTsjXbzVp2S6b7RGaIhPF8Ct/+JA3d3q8vtnBUFXWaxYrZYMbewM0SRBEAllKMFWFuYKBH8WEEYfE\n9aZtm04uw9nnKmdkZFwcPtaLQ9HUWCUd49kZBY8U6puVAB6LzBWM95vUpheZV9eqOH4403Oo5Y1D\nnoMQ4AYxcwWN1Yo18RxmJXSXiiY5TaFoqofsub5cZq6gMe055HRl4jnU8xp7fZcXFvPUcgaaIviz\n37fG0i3zmOewUDQe6Tmclmw+STwvIyPj4pMlpHnyJPLR405raPuwNYOOzlnoOz6bHQdTkyYT4jIy\nMr63yJrgnpInlfY+q77SrH3P046z2jo9Z6Foapi2hxukC1IW8snIyJgmWxxmMN3dPEtVdMz0YnBS\nN/CdxoA7+wM+tVYlp8ns9dOOZk2RaA1d/DAhiCK8MGK5lDv1+R6lZjo+n6aISQf3OHl9tzmk0R/h\n+CFhFLNctpCFoDVweGOzwx+7Oo+uSvRGAZudISXL4OpcYdKJPU5q53R5EkKb7gyfZdtZr2NGRsbF\nI1scZjDd3TxLVXTM9J3+OKQ0vW/f8fnarX1uNgYossRGPced/RGKLFHL6dxt2nRHPn0nJE5SIbzT\nnu9Raqbj85UtbdLBPU5ev/6gx4PmEDuIuLM/4upigaKh8fq9NnfbI8Iw5oWlEu9s93ivMWC+YBAn\n8WQhGCe116s5avmA1tA/1Bk+y7azXseMjIyLR7Y4zOCkjuTTOKkb+AevzrFUMnh1rYqlK5Pza4rE\n5XoOP7Rmeg5nfY7px8bn0xRxaJ+lookmy7y0lMf2Q0qGxnzRRJUFC0WN9/YGfP65OXRVomppbNTM\nQ57DUtGcJLXHnkPRUA91hs+y7UmuY0ZGxsXgY5mQPpqcfZoB9Sedf1oA76TnycjIyHiWfOgd0kKI\nS0KIXxdCdIQQu0KIfySEOOaVCCG+IISIhRDDqX8/fh42PA7jEMzdpj2zk/lpu5zHx2917VOfJyMj\nI+Oicl5hpX8CNIAloAz8FvATwP84Y9/tJElWz+l5n4jp/oRZoQ5DVZAl75gU9lk9iaMCeCc9T0ZG\nRsZF5bwWh8vAP0qSxAV2hRC/AVw/p3OfO5oisVw5ebCPG4QzpbDhbAnV6UT19FwDWUhs92x0RUGV\nBUKAIkmH5kPPCnHNCoGNtx+doTB0Q241eiSJ4FItnz4ehPSdEEOVcIMYQ5VoDj12ui6rVYNPrtbQ\nFInd3ojN9ggniDAUiVuNAUslk3JOo2hoNAYj2nbEZy5V0VXpkIzI0RkNZw2nTc/MODoTIyMj48Pj\nvBaHfwD8eSHEl4EK8KPAT5+w77wQYg8YAb8K/M0kSexzsuNcKJoathdOyk6fdizlIcmLho104EkI\nAUVDPTQf+qQqpFlSFbNmKGx1bX7/TgcAP4oII9jsjOiOAiQBcZIgCcG9ps1Wb8SVWoFa3qCW03lr\nu88f3m1hBzFhELLZdShbOs/PFyhZCrcbQ4Z+SBhFvLxSntg7a0ZDc+Afs/mka3PSTIyMjIwPj/Na\nHH4X+M+APiADv0j6xX+UG8CrBz83Dvb7WeA/P7qjEOJLwJcA1tfXz8nMs6EpEm4YTcpOX1gsPdWX\n1rTkRV5XTvUcZh07KwQ23n50hsJKOcfnngsPeQ6LJf2Y5/DiUmHiOYyrp64vFykZyomew/MLuWOe\nw/TfN+05nDWcdnRmRkZGxsXgqauVhBAScA/4p8B/D+SBnwfeTZLkv3zEsZ8H/p8kSWqn7Xee1Upn\nzR90hj43Gz2uzZeo5M//S2uWgumzkMx4kqqpo+NRs/GdGRkfTT5s+YwqsEaac/AATwjxz4G/A5y6\nOAAJIM7BhjNz1vxBdNAAFiXnM+fhJDue5XjMo2NDzxLmGR83PR41G9+ZkfHx46kXhyRJmkKIu8Bf\nEUKMPYcfB75zdF8hxBeAO8BDYBX4e8CvPa0Nj8NZ8wdPm2c4qx3Pcjzmk1ZNHQ31ZOM7MzI+fpxX\nzuHPAf8D8FNABPwO8NcAhBBD4EeTJPkK8Gngl0iT1i3SvMR/dU42nImzJj2fdXL0aEXTRXoOTZFY\nKr9fzfWs7MvIyLi4nMunPkmS14EvnPBYfur/P0uagM7IyMjIuMBkGcaMjIyMjGNki0NGRkZGxjGy\nxSEjIyMj4xjZ4pCRkZGRcYxsccjIyMjIOEa2OGRkZGRkHOMjMexHCLEP3D+yuQ40PwRzHofMxqfn\notsHF9/Gi24fZDaeB7Ps20iSZO5JTvaRWBxmIYT45pNqhnxQZDY+PRfdPrj4Nl50+yCz8Tw4b/uy\nsFJGRkZGxjGyxSEjIyMj4xgf5cXh5z5sA85AZuPTc9Htg4tv40W3DzIbz4Nzte8jm3PIyMjIyHh2\nfJQ9h4yMjIyMZ0S2OGRkZGRkHONCLw5CiEtCiF8XQnSEELtCiH8khJgpMy6E+AtCiPtCCFsI8atC\niOpFsU8I8QUhRCyEGE79+/Fnbd/Bc78khPhtIURPCHFLCPFnT9n3rx38HT0hxM8LIfSLZKMQ4i8J\nIaIj1/ELz8CevyqE+KYQwhNC/MKRx74ohLghhBgJIX5HCLFxynkuHewzOjjmT15AG+8JIZyp6/mb\nz9I+IYQmhPjXB8+bPOr1E0JUhRC/cvC5vi+E+AvnYd852/hlIYQ7dQ3ffcb2fV4I8VtCiLYQYl8I\n8a+EEEunnOeJruGFXhyAfwI0gCXgVeBPAD9xdCchxHXSGdY/BiwAo4NjL4R9B2wnSZKf+veLz9q4\ng4Xq14B/QzrO9UvAvxBCXJux748Afx34InAJeA74WxfJxgN+78h1/PIzMGubdMztzx+xtQ78X8BP\nH9j6TeD/OOU8/zvwbaAG/A3gXwshnqgh6RnaCPAfT13P/+hZ2nfAV4H/FNg9w3n+MeCTfq7/IvA/\nHXzeL5KNAH916hq+8Iztq5Amny8BG8AA+OennOfJrmGSJBf2H/AO8Kenfv/vgH86Y7+fAX556vcr\nBxejcEHs+wKw+SFcv1eAIQeFBwfbfhP42zP2/WXgZ6Z+/yKwe8Fs/EvAVz/A6/d3gF+Y+v1LwNen\nfs8BDvDijGOvAd70exD4CvBfXBQbDx6/B/zJD+oaHnlsE/jCKcfmDj7H16a2/W/A37soNh7s82Xg\nL38Y1/Dg8U8Dg/O+hhfdc/gHwJ8XQlhCiBXgR4HfmLHfdaZmVidJcpuDC3JB7AOYF0LsCSHuCiH+\nvhAi94xtAxAnbHtlxvZD1/Dg/wtCiNqzMOyIPbO2zbIR4DUhRFOOFdYGAAAEKUlEQVQIcVMI8dOz\nwnjPkKPvMxu4fbB91r53kiQZTG37zgn7niePY+OYXzoIT/ymEOJTz9i+x+EaECVJcnNq2wdxDZ+E\nv3vwvvzaswh1PoI/Drx1wmNPfA0v+uLwu6R/RJ90Bf8m6dzpo+SB3pFtPaDwTK07u303SMNOS8AP\nA9/HBzMu9QZp2OsnhRDq/9/O+YRWcUVh/PeZSEID4h/URTEE/0ApJXbhToKbtsFKqUU31YWLrroS\ntCqIGMlGRXdWyK5F6aZSXbiQQFWoBNRuJGJpXRhRhAqKgolBhB4X5746vpkEJ3nz3lucHzyYzL0z\n98v37rwzc85lJH2Bp74+KOhb72Ftu2oPy2j8Aw8aK4BtwLfAvor1ZSkzz1o1J8uOu5O36YmrwKik\nxZWpK0erPCzLATwN+yGe7rkoaU0zBpbUDxxm5utgzh62bXCQtAAYxfOnPfhLpZYAxwu6TwKL6vYt\nwnNxLddnZv+a2V9m9p+ZTQD7ge1VacuM+xrYCmzBc6d7gV/xQFZPvYe17co8LKvRzO6Z2UTy8TYw\nTBN8zFBmnjV9Ts5lXDMbM7NpM3tpZkeB58BAxRrfl1Z5WAozu2FmL8zslXktcQz4supxJa0FLgG7\nzezaDN3m7GHbBge8mLYK+DGZ/hQvuhSZfgf4/3FY0mqgC7hb0LcV+uoxitMpDcfMxs1sk5ktM7NB\n/A7nZkHXdzxM24/T/9UuGnOH0iQfE/XzrAevbxU90t8BVkvK3qGtn6FvIymjsYhmezobd4FOSesy\n+5rh4Xyp3MO0Au13vDZ3dpauc/awbYODmT0BJoDvJXWmR91dvJsXr/EL8JWkgXQxDAPn6/K9LdMn\nX8raK2cVcAxfoVM5kvoldae6yA94auvngq5ngO8kfSxpCXBohn4t0yhps6SVafsjfEVOw31M32c3\n0AF0JG2dwAXgE0nbUvthYNzM/q4/R8rx3gKG0vHfAP3Ab+2iMc3JjWnpZrekffgT8FiF+pDUldoA\namPnfkxTveQ8MCypR9JG4Gu8oDpvGqFR0mJJg7VjJe3EawCjVelL9c0rwGkzG5ntHPPysKoKe4Oq\n9J/iKwGe4e8pPwesSG2TwECm7w7gATCF/2AsbRd9wB7gEb7E9iFwiopXUmU0nkj6JvFH0LVpf2/a\n15vpuwd4jNdQfgK62kkjcDLpmwLu4TcBCyvQcwS/+8t+jqS2z/A6yXT67vsyx40AI5m/+1KfaeAf\nGrgqqBEa8XrZePLzKXAZ2NAEffcL2vpS20HgUuY8S/E63hR+fe9okofvpRFYDvyJp2meA9eBz6vU\nBwyl7cnsJ3NcQzyMdysFQRAEOdo2rRQEQRC0jggOQRAEQY4IDkEQBEGOCA5BEARBjggOQRAEQY4I\nDkEQBEGOCA5BEARBjggOQRAEQY4IDkEQBEGON2zbLfge5+ejAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(preds, y_valid, alpha=0.1, s=2);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature selection from RF" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'YearMade, Coupler_System, ProductSize, fiProductClassDesc, ModelID, Hydraulics_Flow, saleElapsed, fiSecondaryDesc, Enclosure, fiModelDesc, SalesID, fiModelDescriptor, MachineID, ProductGroupDesc, ProductGroup, Drive_System, Hydraulics, state, saleDay, Tire_Size, saleDayofyear'" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "keep_cols = list(np.load('tmp/keep_cols.npy'))\n", "', '.join(keep_cols)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df_sub = df_raw[keep_cols+['age', 'SalePrice']]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df, y, nas, mapper = proc_df(df_sub, 'SalePrice', max_n_cat=10, do_scale=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "X_train, X_valid = split_vals(df, n_trn)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.67602943126238957" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = LinearRegression().fit(X_train, y_train)\n", "m.score(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.42592074374245537" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse(m.predict(X_valid), y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from operator import itemgetter" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('saleElapsed', -145.64883869187287),\n", " ('ProductSize_Compact', -0.54007475122954363),\n", " ('ProductSize_Mini', -0.50048058229134851),\n", " ('Drive_System_Two Wheel Drive', -0.26738317785805954),\n", " ('ProductGroupDesc_Skid Steer Loaders', -0.24922453667794642),\n", " ('ProductGroup_SSL', -0.24922453667794109),\n", " ('Enclosure_None or Unspecified', -0.24279691741993142),\n", " ('Enclosure_nan', -0.18422637193293984),\n", " ('Drive_System_nan', -0.17481049937861393),\n", " ('Hydraulics_Flow_Standard', -0.16350014357513842),\n", " ('Enclosure_EROPS AC', -0.13844787814745835),\n", " ('Enclosure_OROPS', -0.11883972857575564),\n", " ('ProductSize_nan', -0.091923065651293712),\n", " ('MachineID', -0.074919067087428459),\n", " ('Drive_System_Four Wheel Drive', -0.070763049128190758),\n", " ('Enclosure_EROPS', -0.054481426247864562),\n", " ('Hydraulics_Flow_High Flow', -0.04086147315765426),\n", " ('ProductGroupDesc_Track Type Tractors', -0.0040345196773952097),\n", " ('ProductGroup_TTT', -0.0040345196773863279),\n", " ('Coupler_System_nan', -0.0033786325283386986),\n", " ('Tire_Size', -0.0029100702750870511),\n", " ('saleDay', -0.0018416299990260399),\n", " ('SalesID', -0.00054830445029807606),\n", " ('state', -0.00024678007480360975),\n", " ('Coupler_System_None or Unspecified', -5.2370856060690585e-06),\n", " ('ProductGroupDesc_nan', 0.0),\n", " ('ProductGroup_nan', 0.0),\n", " ('fiModelDesc', 4.2934486685908269e-06),\n", " ('Hydraulics', 0.00040543370646162202),\n", " ('fiModelDescriptor', 0.0021681557153456765),\n", " ('fiSecondaryDesc', 0.0027035894408982131),\n", " ('Coupler_System_Yes', 0.0033838696139043556),\n", " ('Hydraulics_Flow_nan', 0.004228336726749049),\n", " ('fiProductClassDesc', 0.0056127773827328031),\n", " ('ModelID', 0.015501818523116384),\n", " ('ProductGroup_WL', 0.02704461444028361),\n", " ('ProductGroupDesc_Wheel Loader', 0.027044614440295156),\n", " ('ProductGroup_TEX', 0.052690045537289176),\n", " ('ProductGroupDesc_Track Excavators', 0.052690045537290064),\n", " ('ProductGroupDesc_Backhoe Loaders', 0.059547357765127318),\n", " ('ProductGroup_BL', 0.05954735776512976),\n", " ('ProductGroup_MG', 0.11397703861262443),\n", " ('ProductGroupDesc_Motor Graders', 0.1139770386126262),\n", " ('Drive_System_No', 0.17580439323345765),\n", " ('ProductSize_Small', 0.17871767761687707),\n", " ('Hydraulics_Flow_None or Unspecified', 0.20013328000603833),\n", " ('ProductSize_Medium', 0.25052367123948038),\n", " ('ProductSize_Large', 0.28820495005131264),\n", " ('Enclosure_EROPS w AC', 0.28910815935957146),\n", " ('Drive_System_All Wheel Drive', 0.33715233313139936),\n", " ('ProductSize_Large / Medium', 0.41503210026451676),\n", " ('Enclosure_NO ROPS', 0.44968416296443187),\n", " ('saleDayofyear', 7.1497706071154195),\n", " ('YearMade', 145.69251462398279),\n", " ('age', 182.96050934738616)]" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted(list(zip(X_valid.columns, m.coef_)), key=itemgetter(1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.634974200475658" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = LassoCV().fit(X_train, y_train)\n", "m.score(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.452103421164379" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse(m.predict(X_valid), y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.015888143202334452" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.alpha_" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('ProductSize_Mini', -0.32283011739021739),\n", " ('ProductGroupDesc_Skid Steer Loaders', -0.29197866480532003),\n", " ('ProductSize_nan', -0.16481153369955914),\n", " ('Enclosure_OROPS', -0.10072067167233209),\n", " ('MachineID', -0.077025231732003333),\n", " ('age', -0.07146167736242677),\n", " ('saleDayofyear', -0.005420434471588245),\n", " ('ProductGroup_SSL', -0.00026018612542580649),\n", " ('state', -0.00020510032574012273),\n", " ('ModelID', -0.0),\n", " ('saleElapsed', -0.0),\n", " ('SalesID', -0.0),\n", " ('Hydraulics', -0.0),\n", " ('saleDay', -0.0),\n", " ('Coupler_System_None or Unspecified', -0.0),\n", " ('Coupler_System_Yes', -0.0),\n", " ('ProductSize_Compact', -0.0),\n", " ('ProductSize_Large', 0.0),\n", " ('ProductSize_Medium', 0.0),\n", " ('ProductSize_Small', 0.0),\n", " ('Hydraulics_Flow_High Flow', -0.0),\n", " ('Hydraulics_Flow_None or Unspecified', 0.0),\n", " ('Hydraulics_Flow_Standard', -0.0),\n", " ('Hydraulics_Flow_nan', 0.0),\n", " ('Enclosure_EROPS', 0.0),\n", " ('Enclosure_EROPS AC', -0.0),\n", " ('Enclosure_NO ROPS', 0.0),\n", " ('Enclosure_None or Unspecified', -0.0),\n", " ('Enclosure_nan', -0.0),\n", " ('ProductGroupDesc_Backhoe Loaders', -0.0),\n", " ('ProductGroupDesc_Track Excavators', 0.0),\n", " ('ProductGroupDesc_Track Type Tractors', 0.0),\n", " ('ProductGroupDesc_Wheel Loader', -0.0),\n", " ('ProductGroupDesc_nan', 0.0),\n", " ('ProductGroup_BL', -0.0),\n", " ('ProductGroup_MG', 0.0),\n", " ('ProductGroup_TEX', 0.0),\n", " ('ProductGroup_TTT', 0.0),\n", " ('ProductGroup_WL', -0.0),\n", " ('ProductGroup_nan', 0.0),\n", " ('Drive_System_All Wheel Drive', 0.0),\n", " ('Drive_System_Four Wheel Drive', 0.0),\n", " ('Drive_System_No', 0.0),\n", " ('Drive_System_Two Wheel Drive', -0.0),\n", " ('Drive_System_nan', -0.0),\n", " ('fiModelDesc', 5.509329640857254e-06),\n", " ('fiProductClassDesc', 0.0022891561283628222),\n", " ('fiSecondaryDesc', 0.0030514019161731946),\n", " ('fiModelDescriptor', 0.0034724295356978328),\n", " ('Tire_Size', 0.0095336232150601847),\n", " ('YearMade', 0.088383969701718024),\n", " ('ProductGroupDesc_Motor Graders', 0.11373349421170943),\n", " ('ProductSize_Large / Medium', 0.15991368864779024),\n", " ('Coupler_System_nan', 0.2023810180165819),\n", " ('Enclosure_EROPS w AC', 0.34461861098943347)]" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coefs = sorted(list(zip(X_valid.columns, m.coef_)), key=itemgetter(1))\n", "coefs" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "skip = [n for n,c in coefs if abs(c)<0.01]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df.drop(skip, axis=1, inplace=True)\n", "\n", "# for n,c in df.items():\n", "# if '_' not in n: df[n+'2'] = df[n]**2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "X_train, X_valid = split_vals(df, n_trn)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.63678168860529394" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = LassoCV().fit(X_train, y_train)\n", "m.score(X_valid, y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4509826980922721" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse(m.predict(X_valid), y_valid)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('ProductSize_Mini', -0.77420353132504083),\n", " ('ProductSize_nan', -0.37649627504627403),\n", " ('ProductGroupDesc_Skid Steer Loaders', -0.31232507784064917),\n", " ('MachineID', -0.092899281127635194),\n", " ('Enclosure_OROPS', -0.034526809361612412),\n", " ('age', -0.024367657576137017),\n", " ('ProductSize_Large / Medium', 0.08968235308777571),\n", " ('YearMade', 0.15983396599807115),\n", " ('Enclosure_EROPS w AC', 0.40652833657308551),\n", " ('Coupler_System_nan', 0.42191856864836064),\n", " ('ProductGroupDesc_Motor Graders', 0.49456961585974812)]" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coefs = sorted(list(zip(X_valid.columns, m.coef_)), key=itemgetter(1))\n", "coefs" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.savez(f'{PATH}tmp/regr_resid', m.predict(X_train), m.predict(X_valid))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }