{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"collapsed_sections":["B9zEH7lcwIY-"],"authorship_tag":"ABX9TyP97yrn425DiLa2CzLtDJf1"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# This notebook is intended to sample data from source"],"metadata":{"id":"OgJvkbgP881P"}},{"cell_type":"markdown","source":["## Import essential libraries"],"metadata":{"id":"B9zEH7lcwIY-"}},{"cell_type":"code","source":["# import libraries\n","import pandas as pd\n","import numpy as np\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","import glob\n","import os"],"metadata":{"id":"DSlfFQP39CYF","executionInfo":{"status":"ok","timestamp":1724876999278,"user_tz":240,"elapsed":3730,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":1,"outputs":[]},{"cell_type":"code","source":["# Mount the drive\n","from google.colab import drive\n","drive.mount('/content/drive')"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"scbbbV859E-M","executionInfo":{"status":"ok","timestamp":1724877080857,"user_tz":240,"elapsed":81584,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"da0687ec-971c-45b9-81b4-90a5a602353d"},"execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/drive\n"]}]},{"cell_type":"markdown","source":["## Some functions to help us"],"metadata":{"id":"lDHWKbfrwMWt"}},{"cell_type":"code","source":["def retrieve_month_data(year, month, folder_path):\n"," # Format the year and month to match the file naming convention\n"," year_str = str(year)\n"," month_str = f'{month:02d}'\n","\n"," # Define the pattern to match files for the given year and month\n"," file_pattern = f'citi_{year_str}{month_str}_*.csv'\n","\n"," file_paths = glob.glob(os.path.join(folder_path, file_pattern))\n","\n"," dfs = []\n","\n"," for file in file_paths:\n"," df = pd.read_csv(file)\n"," dfs.append(df)\n","\n"," # Combine all the dataframes into one\n"," combined_df = pd.concat(dfs, ignore_index=True)\n","\n"," return combined_df"],"metadata":{"id":"GHQzjWzI9Gd4","executionInfo":{"status":"ok","timestamp":1724877467469,"user_tz":240,"elapsed":166,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["def retrieve_sampled_month_data(year, month, folder_path, fraction=0.01, random_state=42):\n"," all_month_data = retrieve_month_data(year, month, folder_path)\n"," sampled_df = all_month_data.sample(frac=fraction, random_state=42)\n"," sampled_df = sampled_df.drop(columns=['Unnamed: 0'])\n"," return sampled_df"],"metadata":{"id":"VSAoAQ3VsYlW","executionInfo":{"status":"ok","timestamp":1724877650088,"user_tz":240,"elapsed":144,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":16,"outputs":[]},{"cell_type":"code","source":["def retrieve_sampled_year_data(year, folder_path, fraction=0.01):\n"," sampled_dfs = []\n","\n"," for month in range(1, 13):\n"," # Retrieve & Sample\n"," sampled_df = retrieve_sampled_month_data(year, month, folder_path, random_state=42)\n","\n"," # Append\n"," sampled_dfs.append(sampled_df)\n","\n"," # Combine\n"," combined_sampled_df = pd.concat(sampled_dfs, ignore_index=True)\n","\n"," #data type check\n"," combined_sampled_df = date_feature_engineering(combined_sampled_df)\n","\n"," return combined_sampled_df"],"metadata":{"id":"vcFkXrKn9MZn","executionInfo":{"status":"ok","timestamp":1724877469083,"user_tz":240,"elapsed":143,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["def date_feature_engineering(given_df):\n"," given_df['started_at'] = pd.to_datetime(given_df['started_at'])\n"," given_df['ended_at'] = pd.to_datetime(given_df['ended_at'])\n"," given_df['ride_date'] = given_df['started_at'].dt.date\n"," given_df['ride_year'] = given_df['started_at'].dt.year\n"," given_df['ride_month'] = given_df['started_at'].dt.month\n"," given_df['ride_day'] = given_df['started_at'].dt.day\n","\n"," # check if it's weekend or not\n"," given_df['ride_date'] = pd.to_datetime(given_df['ride_date'])\n"," given_df['is_weekend'] = given_df['ride_date'].dt.weekday.isin([5, 6])\n","\n"," # calculate the duration of the ride\n"," given_df['duration'] = given_df['ended_at'] - given_df['started_at']\n"," given_df['duration_minutes'] = round(given_df['duration'].dt.total_seconds() / 60, 1)\n","\n"," given_df = given_df.reset_index(drop=True)\n"," return given_df"],"metadata":{"id":"8cBpwuKU9j4w","executionInfo":{"status":"ok","timestamp":1724878049441,"user_tz":240,"elapsed":139,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":35,"outputs":[]},{"cell_type":"markdown","source":["## Data Source & Retrieve Data\n","Data can be accessed from https://citibikenyc.com/system-data"],"metadata":{"id":"x7tUf-7Fc4uc"}},{"cell_type":"code","source":["folder_path = \"/content/drive/MyDrive/afterschool_projects/ny_bike/citibike-tripdata\"\n","data202407 = retrieve_sampled_month_data(2024, 7, folder_path, fraction=0.01, random_state=42)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Cccb0dLp9PlB","executionInfo":{"status":"ok","timestamp":1724877683278,"user_tz":240,"elapsed":27871,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"ae647b0f-58c1-43b2-c8d0-887e7099f7b6"},"execution_count":17,"outputs":[{"output_type":"stream","name":"stderr","text":[":14: DtypeWarning: Columns (8) have mixed types. Specify dtype option on import or set low_memory=False.\n"," df = pd.read_csv(file)\n",":14: DtypeWarning: Columns (8) have mixed types. Specify dtype option on import or set low_memory=False.\n"," df = pd.read_csv(file)\n",":14: DtypeWarning: Columns (8) have mixed types. Specify dtype option on import or set low_memory=False.\n"," df = pd.read_csv(file)\n",":14: DtypeWarning: Columns (8) have mixed types. Specify dtype option on import or set low_memory=False.\n"," df = pd.read_csv(file)\n",":14: DtypeWarning: Columns (6,8) have mixed types. Specify dtype option on import or set low_memory=False.\n"," df = pd.read_csv(file)\n"]}]},{"cell_type":"code","source":["data202407.shape"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"acstjDJr_GVT","executionInfo":{"status":"ok","timestamp":1724877992209,"user_tz":240,"elapsed":137,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"215ecf2a-5538-4ac4-c21c-29cb7756711b"},"execution_count":27,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(47086, 17)"]},"metadata":{},"execution_count":27}]},{"cell_type":"code","source":["data202407.isna().sum()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":610},"id":"pYEFYB5v_qDl","executionInfo":{"status":"ok","timestamp":1724878000354,"user_tz":240,"elapsed":308,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"669fe980-0a36-4f91-c3cd-afa2c5a7a069"},"execution_count":28,"outputs":[{"output_type":"execute_result","data":{"text/plain":["ride_id 0\n","rideable_type 0\n","started_at 0\n","ended_at 0\n","start_station_name 0\n","start_station_id 0\n","end_station_name 0\n","end_station_id 0\n","start_lat 0\n","start_lng 0\n","end_lat 0\n","end_lng 0\n","member_casual 0\n","ride_date 0\n","ride_year 0\n","ride_month 0\n","ride_day 0\n","dtype: int64"],"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","
0
ride_id0
rideable_type0
started_at0
ended_at0
start_station_name0
start_station_id0
end_station_name0
end_station_id0
start_lat0
start_lng0
end_lat0
end_lng0
member_casual0
ride_date0
ride_year0
ride_month0
ride_day0
\n","

"]},"metadata":{},"execution_count":28}]},{"cell_type":"code","source":["data202407 = data202407.dropna()"],"metadata":{"id":"h7XS0ozF_sTc","executionInfo":{"status":"ok","timestamp":1724878001931,"user_tz":240,"elapsed":143,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":29,"outputs":[]},{"cell_type":"code","source":["data202407.shape"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"4F5dLGU8_0sr","executionInfo":{"status":"ok","timestamp":1724878002864,"user_tz":240,"elapsed":139,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"811c3744-6b58-4487-c5c6-2ad66bed16e4"},"execution_count":30,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(47086, 17)"]},"metadata":{},"execution_count":30}]},{"cell_type":"code","source":["data202407.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":309},"id":"iLqIzbnJAGbN","executionInfo":{"status":"ok","timestamp":1724878004019,"user_tz":240,"elapsed":485,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"d5a88fef-5339-43e5-f751-81a87ad34ed4"},"execution_count":31,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" ride_id rideable_type started_at \\\n","1120985 C00A9E6382932E6A classic_bike 2024-07-09 12:03:39.969 \n","619370 031CE5705DA05DF7 electric_bike 2024-07-14 13:57:05.636 \n","2075471 20F7951EEAD5CEC9 electric_bike 2024-07-15 13:38:21.594 \n","123236 8BA0DF2DDB523E40 electric_bike 2024-07-12 18:17:36.944 \n","441030 A3C83CEB20C4A614 electric_bike 2024-07-09 14:24:17.723 \n","\n"," ended_at start_station_name start_station_id \\\n","1120985 2024-07-09 12:08:49.318 Broadway & W 157 St 8123.06 \n","619370 2024-07-14 14:23:00.581 E 23 St & 1 Ave 5929.01 \n","2075471 2024-07-15 13:42:36.363 Beaver St & Fayette St 4840.06 \n","123236 2024-07-12 18:22:01.011 E 115 St & Lexington Ave 7599.09 \n","441030 2024-07-09 14:39:30.770 W 44 St & 5 Ave 6551.02 \n","\n"," end_station_name end_station_id start_lat start_lng \\\n","1120985 St Nicholas Ave & W 155 St 8085.05 40.834027 -73.945108 \n","619370 E 93 St & 2 Ave 7286.02 40.736502 -73.978095 \n","2075471 Cedar St & Myrtle Ave 4751.01 40.700990 -73.939210 \n","123236 Lenox Ave & W 117 St 7655.22 40.797911 -73.942300 \n","441030 E 72 St & York Ave 6889.12 40.755067 -73.980111 \n","\n"," end_lat end_lng member_casual ride_date ride_year \\\n","1120985 40.830663 -73.941323 member 2024-07-09 2024 \n","619370 40.782454 -73.948920 member 2024-07-14 2024 \n","2075471 40.697842 -73.926241 member 2024-07-15 2024 \n","123236 40.802557 -73.949078 member 2024-07-12 2024 \n","441030 40.766638 -73.953483 member 2024-07-09 2024 \n","\n"," ride_month ride_day \n","1120985 7 9 \n","619370 7 14 \n","2075471 7 15 \n","123236 7 12 \n","441030 7 9 "],"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","
ride_idrideable_typestarted_atended_atstart_station_namestart_station_idend_station_nameend_station_idstart_latstart_lngend_latend_lngmember_casualride_dateride_yearride_monthride_day
1120985C00A9E6382932E6Aclassic_bike2024-07-09 12:03:39.9692024-07-09 12:08:49.318Broadway & W 157 St8123.06St Nicholas Ave & W 155 St8085.0540.834027-73.94510840.830663-73.941323member2024-07-09202479
619370031CE5705DA05DF7electric_bike2024-07-14 13:57:05.6362024-07-14 14:23:00.581E 23 St & 1 Ave5929.01E 93 St & 2 Ave7286.0240.736502-73.97809540.782454-73.948920member2024-07-142024714
207547120F7951EEAD5CEC9electric_bike2024-07-15 13:38:21.5942024-07-15 13:42:36.363Beaver St & Fayette St4840.06Cedar St & Myrtle Ave4751.0140.700990-73.93921040.697842-73.926241member2024-07-152024715
1232368BA0DF2DDB523E40electric_bike2024-07-12 18:17:36.9442024-07-12 18:22:01.011E 115 St & Lexington Ave7599.09Lenox Ave & W 117 St7655.2240.797911-73.94230040.802557-73.949078member2024-07-122024712
441030A3C83CEB20C4A614electric_bike2024-07-09 14:24:17.7232024-07-09 14:39:30.770W 44 St & 5 Ave6551.02E 72 St & York Ave6889.1240.755067-73.98011140.766638-73.953483member2024-07-09202479
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n","
\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"data202407","repr_error":"0"}},"metadata":{},"execution_count":31}]},{"cell_type":"code","source":["df = date_feature_engineering(data202407)"],"metadata":{"id":"PLKLPsvM_2gp","executionInfo":{"status":"ok","timestamp":1724878005100,"user_tz":240,"elapsed":153,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":32,"outputs":[]},{"cell_type":"code","source":["df.columns"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"909_Z3MV_8cj","executionInfo":{"status":"ok","timestamp":1724878006986,"user_tz":240,"elapsed":137,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"03fc2640-4aa4-47c1-aaf6-579331ca1b59"},"execution_count":33,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Index(['ride_id', 'rideable_type', 'started_at', 'ended_at',\n"," 'start_station_name', 'start_station_id', 'end_station_name',\n"," 'end_station_id', 'start_lat', 'start_lng', 'end_lat', 'end_lng',\n"," 'member_casual', 'ride_date', 'ride_year', 'ride_month', 'ride_day',\n"," 'is_weekend', 'duration', 'duration_minutes'],\n"," dtype='object')"]},"metadata":{},"execution_count":33}]},{"cell_type":"code","source":["df.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":309},"id":"uUnwvLKIAnAd","executionInfo":{"status":"ok","timestamp":1724878012209,"user_tz":240,"elapsed":727,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"49618748-2610-4c9c-feec-13b25529cc0c"},"execution_count":34,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" ride_id rideable_type started_at \\\n","0 C00A9E6382932E6A classic_bike 2024-07-09 12:03:39.969 \n","1 031CE5705DA05DF7 electric_bike 2024-07-14 13:57:05.636 \n","2 20F7951EEAD5CEC9 electric_bike 2024-07-15 13:38:21.594 \n","3 8BA0DF2DDB523E40 electric_bike 2024-07-12 18:17:36.944 \n","4 A3C83CEB20C4A614 electric_bike 2024-07-09 14:24:17.723 \n","\n"," ended_at start_station_name start_station_id \\\n","0 2024-07-09 12:08:49.318 Broadway & W 157 St 8123.06 \n","1 2024-07-14 14:23:00.581 E 23 St & 1 Ave 5929.01 \n","2 2024-07-15 13:42:36.363 Beaver St & Fayette St 4840.06 \n","3 2024-07-12 18:22:01.011 E 115 St & Lexington Ave 7599.09 \n","4 2024-07-09 14:39:30.770 W 44 St & 5 Ave 6551.02 \n","\n"," end_station_name end_station_id start_lat start_lng end_lat \\\n","0 St Nicholas Ave & W 155 St 8085.05 40.834027 -73.945108 40.830663 \n","1 E 93 St & 2 Ave 7286.02 40.736502 -73.978095 40.782454 \n","2 Cedar St & Myrtle Ave 4751.01 40.700990 -73.939210 40.697842 \n","3 Lenox Ave & W 117 St 7655.22 40.797911 -73.942300 40.802557 \n","4 E 72 St & York Ave 6889.12 40.755067 -73.980111 40.766638 \n","\n"," end_lng member_casual ride_date ride_year ride_month ride_day \\\n","0 -73.941323 member 2024-07-09 2024 7 9 \n","1 -73.948920 member 2024-07-14 2024 7 14 \n","2 -73.926241 member 2024-07-15 2024 7 15 \n","3 -73.949078 member 2024-07-12 2024 7 12 \n","4 -73.953483 member 2024-07-09 2024 7 9 \n","\n"," is_weekend duration duration_minutes \n","0 False 0 days 00:05:09.349000 5.2 \n","1 True 0 days 00:25:54.945000 25.9 \n","2 False 0 days 00:04:14.769000 4.2 \n","3 False 0 days 00:04:24.067000 4.4 \n","4 False 0 days 00:15:13.047000 15.2 "],"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","
ride_idrideable_typestarted_atended_atstart_station_namestart_station_idend_station_nameend_station_idstart_latstart_lngend_latend_lngmember_casualride_dateride_yearride_monthride_dayis_weekenddurationduration_minutes
0C00A9E6382932E6Aclassic_bike2024-07-09 12:03:39.9692024-07-09 12:08:49.318Broadway & W 157 St8123.06St Nicholas Ave & W 155 St8085.0540.834027-73.94510840.830663-73.941323member2024-07-09202479False0 days 00:05:09.3490005.2
1031CE5705DA05DF7electric_bike2024-07-14 13:57:05.6362024-07-14 14:23:00.581E 23 St & 1 Ave5929.01E 93 St & 2 Ave7286.0240.736502-73.97809540.782454-73.948920member2024-07-142024714True0 days 00:25:54.94500025.9
220F7951EEAD5CEC9electric_bike2024-07-15 13:38:21.5942024-07-15 13:42:36.363Beaver St & Fayette St4840.06Cedar St & Myrtle Ave4751.0140.700990-73.93921040.697842-73.926241member2024-07-152024715False0 days 00:04:14.7690004.2
38BA0DF2DDB523E40electric_bike2024-07-12 18:17:36.9442024-07-12 18:22:01.011E 115 St & Lexington Ave7599.09Lenox Ave & W 117 St7655.2240.797911-73.94230040.802557-73.949078member2024-07-122024712False0 days 00:04:24.0670004.4
4A3C83CEB20C4A614electric_bike2024-07-09 14:24:17.7232024-07-09 14:39:30.770W 44 St & 5 Ave6551.02E 72 St & York Ave6889.1240.755067-73.98011140.766638-73.953483member2024-07-09202479False0 days 00:15:13.04700015.2
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n","
\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"df","summary":"{\n \"name\": \"df\",\n \"rows\": 47086,\n \"fields\": [\n {\n \"column\": \"ride_id\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 47086,\n \"samples\": [\n \"6CF923D27E1D98D3\",\n \"5A68720B9AB37AD6\",\n \"3A8A19939E6280F5\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rideable_type\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"electric_bike\",\n \"classic_bike\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"started_at\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2024-06-30 22:36:54.164000\",\n \"max\": \"2024-07-31 23:55:00.041000\",\n \"num_unique_values\": 47085,\n \"samples\": [\n \"2024-07-20 15:26:59.288000\",\n \"2024-07-06 13:25:27.091000\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ended_at\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2024-07-01 00:01:58.495000\",\n \"max\": \"2024-07-31 23:59:51.069000\",\n \"num_unique_values\": 47086,\n \"samples\": [\n \"2024-07-24 15:32:47.803000\",\n \"2024-07-20 15:20:28.703000\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"start_station_name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2061,\n \"samples\": [\n \"3 Ave & Franklin Ave\",\n \"Great Jones St\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"start_station_id\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2093,\n \"samples\": [\n \"8172.07\",\n \"6191.06\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"end_station_name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2067,\n \"samples\": [\n \"86 St & 35 Ave\",\n \"University Pl & E 14 St\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"end_station_id\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2818,\n \"samples\": [\n \"8144.09\",\n \"6515.01\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"start_lat\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.04119880903282505,\n \"min\": 40.633385,\n \"max\": 40.8863,\n \"num_unique_values\": 12854,\n \"samples\": [\n 40.703508139,\n 40.814295411\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"start_lng\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.029628605442546255,\n \"min\": -74.026823,\n \"max\": -73.84672,\n \"num_unique_values\": 12859,\n \"samples\": [\n -73.928224564,\n -73.911054134\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"end_lat\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.19224496834365118,\n \"min\": 0.0,\n \"max\": 40.8863,\n \"num_unique_values\": 2056,\n \"samples\": [\n 40.85472,\n 40.65496\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"end_lng\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.3421826658401405,\n \"min\": -74.03852552175522,\n \"max\": 0.0,\n \"num_unique_values\": 2052,\n \"samples\": [\n -73.914527,\n -74.00887308\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"member_casual\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"casual\",\n \"member\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ride_date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2024-06-30 00:00:00\",\n \"max\": \"2024-07-31 00:00:00\",\n \"num_unique_values\": 32,\n \"samples\": [\n \"2024-07-05 00:00:00\",\n \"2024-07-28 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ride_year\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 2024\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ride_month\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 2,\n \"samples\": [\n 6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ride_day\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 31,\n \"samples\": [\n 30\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"is_weekend\",\n \"properties\": {\n \"dtype\": \"boolean\",\n \"num_unique_values\": 2,\n \"samples\": [\n true\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"duration\",\n \"properties\": {\n \"dtype\": \"timedelta64[ns]\",\n \"num_unique_values\": 46321,\n \"samples\": [\n \"0 days 00:03:03.388000\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"duration_minutes\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 20.797872939299097,\n \"min\": 1.0,\n \"max\": 1385.3,\n \"num_unique_values\": 975,\n \"samples\": [\n 31.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":34}]},{"cell_type":"code","source":["# data might contain rides started in June and end in July\n","# They make up a very little portion of the dataset\n","# For the sake of analyzing more easily, we only consider\n","# rides started in July and end in July here.\n","df = df[df['ride_month']==7]"],"metadata":{"id":"DGVokdV4LTxy","executionInfo":{"status":"ok","timestamp":1724878169898,"user_tz":240,"elapsed":145,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":36,"outputs":[]},{"cell_type":"markdown","source":["## Export the sampled Data"],"metadata":{"id":"TLI-UdDvdHWU"}},{"cell_type":"code","source":["df.to_csv('/content/drive/MyDrive/afterschool_projects/ny_bike/citi_sampled_data_202407.csv', index=False)"],"metadata":{"id":"iPHoNYuEKl9q","executionInfo":{"status":"ok","timestamp":1724878299012,"user_tz":240,"elapsed":2344,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}}},"execution_count":37,"outputs":[]},{"cell_type":"markdown","source":["## Some Plots"],"metadata":{"id":"2-sVjWIUdEDa"}},{"cell_type":"code","source":["df_july = df\n","grouped_data = df_july.groupby(['ride_day', 'member_casual', 'is_weekend'])['duration_minutes'].mean().unstack('member_casual', fill_value=0).reset_index()\n","\n","# Set up the plot\n","fig, ax = plt.subplots(figsize=(12, 8))\n","\n","# Define custom RGB colors for member and casual\n","color_member_weekday = (0.1, 0.4, 0.8) # Darker blue for member (weekday)\n","color_casual_weekday = (0.6, 0.8, 1.0) # Lighter blue for casual (weekday)\n","color_member_weekend = (0.9, 0.4, 0.0) # Darker orange for member (weekend)\n","color_casual_weekend = (1.0, 0.7, 0.5) # Lighter orange for casual (weekend)\n","\n","# Loop through the grouped data and plot the bars\n","for index, row in grouped_data.iterrows():\n"," day = row['ride_day']\n"," is_weekend = row['is_weekend']\n"," member_duration = row.get('member', 0)\n"," casual_duration = row.get('casual', 0)\n","\n"," # Determine the colors based on weekend or weekday\n"," if is_weekend:\n"," member_color = color_member_weekend\n"," casual_color = color_casual_weekend\n"," else:\n"," member_color = color_member_weekday\n"," casual_color = color_casual_weekday\n","\n"," # Plot the bars for member and casual, stacking casual on top of member\n"," ax.bar(day, member_duration, color=member_color, label='Member' if index == 0 else \"\")\n"," ax.bar(day, casual_duration, bottom=member_duration, color=casual_color, label='Casual' if index == 0 else \"\")\n","\n","# Add labels and title\n","ax.set_xlabel('Day of the Month', fontsize=12)\n","ax.set_ylabel('Average Duration (minutes)', fontsize=12)\n","ax.set_title('Average Ride Duration per Day in July 2024', fontsize=16)\n","\n","# Add a legend\n","ax.legend()\n","\n","# Show the plot\n","plt.tight_layout()\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":807},"id":"s0JloG8GGK_X","executionInfo":{"status":"ok","timestamp":1724878301673,"user_tz":240,"elapsed":833,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"7d199f8c-50c7-4488-c81c-99623e538c4c"},"execution_count":38,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"iVBORw0KGgoAAAANSUhEUgAABKYAAAMWCAYAAADLc44dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/6ElEQVR4nOzdeZxVdf0/8NcFZRVkFVBBcV9BxEQUEbcQt0wq18Ql9yUlvylappaRlksm7gpa4pZbuaak4IYailouGS5gIm4BCjIoc39/9GB+TgwIw8CB4fl8PO7Duedzzvm879xzB+c1n8/nlMrlcjkAAAAAsJQ1KLoAAAAAAFZMgikAAAAACiGYAgAAAKAQgikAAAAACiGYAgAAAKAQgikAAAAACiGYAgAAAKAQgikAAAAACiGYAgAAAKAQgimAFVT37t1TKpXSuHHjfPzxx0WXs8IYMWJESqVStUeDBg3SsmXL9OjRI0OGDMmHH3443+PnHrOo+vXrl1KplMcee2wxql84a6+99jyvr0WLFllzzTWz44475tRTT82zzz67xOsoQm3fH+Zv7rX71Ufz5s3TqVOnbLfddjnxxBPz17/+NeVyuehSv9bS/Bw+9thjdX49HnrooSmVShkxYkSdnbMm06ZNy+23354jjjgim2yySZo1a5YmTZpknXXWyeGHH56XX355gcdXVlbmqquuSq9evdKiRYu0aNEivXr1ytVXX13jdVJZWZmnnnoqZ511Vvr06ZO2bdtm5ZVXTrt27bLrrrvmpptuWqTr6/7776/63u+yyy6L/PoBVjQrFV0AAEvfc889l5deeilJMnv27PzhD3/ID3/4w4KrWrE0b9483/nOd5Ikc+bMyTvvvJOnn34648ePz/Dhw/P4449n/fXXL7jKxbPddttlvfXWS5J8/vnn+eijj/LCCy/ksccey4UXXpgddtgh119/fdZZZ52CK104/fr1y+jRo/Poo4+mX79+RZezwunevXu22GKLJP/9ufXxxx/nxRdfzFNPPZXLLrss3bp1y4gRI9KjR49iC2Wx/frXv855552XJNlggw0yYMCAzJkzJ+PGjcvw4cPzhz/8Iddcc00GDRo0z7Fz5szJ9773vdx5551p1qxZdt555yTJI488kqOPPjqPPPJIbrnlljRo8P//Pv/mm29mu+22S5K0adMmW221VVq3bp0333wzjzzySNUxd9xxRxo1arTA2v/zn//kyCOPTKlUWi7CUoBlgWAKYAV03XXXJUnWWGON/Pvf/851110nmFrK2rVrN8+og3/84x/ZYYcdMmXKlJx88sm577775jnu1VdfXUoVLr4f/OAHOfTQQ6ttK5fLeeCBB3LyySdn9OjR2XbbbfP000+na9euxRRZx5an92d5s88+++Tss8+eZ/vjjz9eNQqvT58+GT16dLbaaqulX+BCuPHGGzNz5sx06dKl6FKWac2bN8/gwYNzzDHHVAvov/jii5x22mm5+OKLc9RRR1ULv+f63e9+lzvvvDNrrLFGHn/88aqfLW+99Vb69OmT22+/PX379s0JJ5xQdUypVMpOO+2U//u//8uuu+6ahg0bVrWNHj06e+yxR+6999786le/yllnnbXA2k888cRMmTIlxxxzTK644oq6+HYA1Hum8gGsYGbOnJmbb745SfL73/8+q6yySl5++eU899xzBVfGpptumsGDBydJHn744VRUVMyzz0YbbZSNNtpoaZdWZ0qlUnbfffc8++yzWX/99TNlypT84Ac/KLqsOrO8vz/Lo+233z6PP/54+vTpk5kzZ+bAAw/MnDlzii6rRl26dMlGG22UZs2aFV3KMm3IkCG58MIL5xk1uvLKK+c3v/lNNthgg8yePTu33HJLtfbKysqcf/75SZLzzz+/WuDdtWvXqrahQ4emsrKyqm3dddfNqFGjsttuu1ULpZJkhx12yOmnn57kv8Higtx111256aabMnjw4Gy99daL+KoBVlyCKYAVzO23357p06dns802y4477pj99tsvyf8fRTXXa6+9llKplNatW2fWrFnzPd9WW22VUqmUe+65p9r2L7/8Mtdee2369euXNm3apHHjxunatWuOPfbYTJo0aZ7zzF0PpV+/fpk5c2bOOuusbLzxxmnWrFnWXnvtqv2effbZ/PjHP87WW2+djh07plGjRunQoUP22muvPPLII/Ots1wu5/rrr89WW22VZs2apW3bthkwYECeeuqpan3X5L333svgwYOr6mnRokW+8Y1v5LLLLsuXX3453z5ro1u3bkn+OzLgk08+mad9QWvGTJo0KYcffng6deqUJk2aZP3118+ZZ56Zzz///Gv7/eMf/5jddtst7du3T6NGjbLGGmvk4IMPziuvvLJ4L2g+WrVqlUsuuSRJ8te//jXjxo2r1v51a+PMb62er25//PHHs9dee6V9+/Zp0KBB1Qi1Tz/9NNdcc0323XffrL/++mnevHmaN2+ezTffPGeeeWamTp1a7Zxzr4/Ro0cnSXbcccdq6x19deTbgur+5JNPcsYZZ2TTTTetuo569uyZCy64oMb36KvX5RdffJHzzz8/m266aZo2bZq2bdtm3333rdUIra/WeM0116Rnz55p3rx5WrVqld133z1jx46d77FL6nO9uBo1apQrr7wySfLGG2/k7rvvrtb+zjvv5Pzzz89OO+2ULl26pHHjxmnVqlX69OmTq666qlpIkSSPPvpoSqVSNtpoo/lOx5o1a1batm2bUqm00J+T+V23X1276a233sr3v//9dOzYMY0bN866666bn/zkJzUG1bVV289XTQYNGpRSqZShQ4fOd5/bbrstpVKpTsKaBg0aVP2c/N9r7umnn87777+fxo0bZ+DAgfMcO3DgwDRq1CjvvfdennnmmYXuc+700Jqu8bk++uijHHPMMdlwww1z7rnnLvS5ARBMAaxw5gZQhx9+eLX/3nLLLdV+Od5oo43Su3fvTJ06dZ5f8uZ6+eWXM27cuHTo0CF77LFH1fZPP/00u+66a4488siMGzcu3bp1y957753GjRvnyiuvTI8ePfLCCy/UeM5Zs2alX79+ueiii9K1a9fsvffe1f5qfsYZZ+TCCy/MrFmz0rNnz+yzzz5Zc801c++992bXXXfNb3/72xrPe/zxx+eII47ICy+8kK233jrf/OY3M2nSpPTt2zf33nvvfL9fY8aMyWabbZaLL744s2bNyq677prtttsuEyZMyIknnpg99tgjX3zxxXyPX1TTp09PkjRs2DDt2rVb6ONee+21bLXVVhk+fHhKpVL23nvvbLDBBrn44ouz8847Z/bs2TUe9+WXX2a//fbLd7/73Tz22GPZYIMNss8++6R9+/a56aabstVWW+XBBx+sk9f2vwYMGJA2bdok+e8Isbp0++23p1+/fnnzzTezyy67ZNddd03jxo2TJC+++GKOOuqoPPHEE+nYsWP22muv9OnTJ5MnT84vf/nLfOMb36h2Q4COHTtm0KBB6dChQ5Kkf//+GTRoUNXjf6cS1eTNN9/MlltumaFDh+bDDz/M7rvvnp122ilvvPFGTjvttPTp0yf/+c9/ajz2iy++yO67755zzz03Xbp0yR577JHmzZvnrrvuyrbbbpu33367Vt+jwYMH5+ijj06zZs3yrW99K507d84DDzyQ7bffPnfdddc8+y/Jz3Vd2HTTTasChP+9nn7/+9/n9NNPz9tvv50NNtgg++67b7bYYos899xzOeaYY/Ld7363WgC14447ZvPNN8/rr78+38D75ptvzieffJIdd9wxm2yySZ28hvHjx2eLLbbI448/nh122CF9+/bN5MmTc95552X//fevkz7q2txp4FdeeeV8R6oNGzYsSapNn1scb7zxRpKkU6dO1bbPvf423XTTNGnSZJ7jmjZtmk033bTavovT31cde+yx+eijj3LdddfV2DcAC1AGYIXx+uuvl5OUV1555fIHH3xQtX2jjTYqJynfeOON1fa/5ppryknK/fv3r/F8p5xySjlJ+Uc/+lG17QceeGA5SXnPPfcsT5kypVrbxRdfXE5SXn/99ctffvll1fZHH320nKScpNytW7fy5MmTa+zz/vvvL7/33nvzbH/qqafKLVu2LK+88srld999t1rbPffcU05SXmWVVcpPPvlktbYLL7ywqt8ddtihWtvkyZPLbdu2LZdKpfLll19enjNnTlXbRx99VN5pp53KScrnnHNOjbXWZPjw4eUk5bXWWqvG9rnfuz322KPG9rm1/q9vfOMb5STl733ve+XPP/+8avs777xTXnfddauOe/TRR6sdd8YZZ5STlHv16lV+8803q7Xdfvvt5YYNG5Zbt25d/s9//rPQr3GttdYqJykPHz78a/fdZZddyknKBx988EK9zrl22GGHGl/P3O1JysOGDavx2EmTJpUfeeSRau9nuVwuz5gxo3zIIYeUk5SPO+64he5zYeru1atXOUl57733Ln/22WdV2z/44IPylltuWU5SPvDAA6sd89XPRI8ePap9Jj7//PNy//79y0nKRx111HzrWVCNTZs2LY8aNapa2wUXXFBOUl511VXn+ewuyc/1gsz9vv/sZz/72n1/8IMflJOU+/TpU237s88+W3755Zfn2f/f//53uXv37uUk5dtuu61a29yff3vvvXeNffXs2bOcpHzHHXcs8mv532to0KBBVd+nM888s9r38OWXXy43b968nKT81FNPLXRfX/3e/6/afr7m1vm/n+3tttuunKR85513znOul19+uZyk3L59+/KsWbMWuv75eeCBB8pJyqVSqfziiy9Waxs8eHA5SXmfffaZ7/F77713OUn51FNPXaj+ZsyYUe7atWs5SXnw4ME17nPzzTeXk5R/+MMfVm2b+7N+5513Xqh+AFZkgimAFchpp51WTlIeOHBgte1zfxn932Bm+vTp5WbNmpUbNGgwT9gze/bscvv27ctJyn//+9+rtr/yyivlUqlUXn311cvTp0+vsY7dd9+9nKT85z//uWrbV3+JGjNmTK1e35AhQ2oMJOYGSEOGDKnxuLmhzv++/rnfrxNOOKHG4959993yyiuvXG7fvn25srJyoWqsKZj68ssvyxMmTKjqb6211ipPmDChxuNr+oXyiSeeKCcpN2/evPzRRx/Nc8xdd91VYzD18ccfl5s2bVpu0qTJPO/vXMcdd1w5Sfl3v/vdQr2+cnnRgqn999+/nKQ8YMCAatsXN5jaaaedFrrer5oxY0Z5pZVWKrdv336h+/y6uh9//PFyknKzZs3K77///jzH/O1vfysnKTdo0KA8adKkqu1zPxOlUqk8fvz4eY4bO3ZsOUl5nXXWWYRX+P9rPPnkk2ts32qrrcpJyuedd17VtiI/14sSTJ1++unlJOWNN954oc//0EMPlZOUv/vd71bbPnPmzHLbtm3LDRo0KL/99tvV2p5++ulyknLnzp2rhUhf5+sCn549e9b4s+SYY44pJymfe+65C93X0gymbrvttvmGMEcfffQCf/4uin//+9/l1Vdffb6B7JFHHllOUj7ooIPme465AevCBrpzX/Pqq69e48/XyZMnl9u0aVNed911yzNmzKjaLpgCWHim8gGsIL788svccMMNSf7/9L25DjnkkKy00koZM2ZMJkyYULW9RYsW+c53vpPKysp5Fn2977778uGHH2brrbeumhqRJPfff3/K5XIGDBiQFi1a1FjL3LWcnnrqqXnaVltttWy//fYLfC0ff/xxbrzxxvz4xz/OkUcemUMPPTSHHnpo1RpAr7/+erXXPbefgw46qMbzHXjggTVun3tXvLnrcP2vNdZYI+uvv34+/PDDqqkeC+udd96pWudlpZVWyrrrrpvzzz8/W2+9dV588cWss846C32uuevA7Lbbbmnbtu087d/61rey6qqrzrP90Ucfzeeff57tttsua6yxRo3nXtB7VRfmru2zoPVuauM73/nO1+7z1FNP5fzzz8/xxx+fww47LIceemiOO+64NGrUKB9++OF8p9Ytqq++P3OnA35Vz549071791RWVlZdw1/VpUuXdO/efZ7tG2+8cZLk3//+d63qGjRoUI3bDznkkGp1J0vnc10XFnQ9VVRU5M9//nPOOuusHHPMMVXv+VVXXZWk+s+N5L/Tvo466qhUVlbOc3e1uVPTjjnmmHkWy14ce+65Z421L+57vaR9+9vfTufOnTNq1Ki89tprVdunTZuWP/zhD2nYsGGOPfbYxepj+vTp2XPPPfPee+9l6623nu+07br085//PDfccEOaNGmS2267rcafr0cddVT+85//5Nprr7WoPUAtrVR0AQAsHffdd1/ef//9rLHGGunfv3+1tg4dOmT33XfPn/70p1x//fU577zzqtoOP/zw3HjjjRkxYkSGDBlStX348OFJksMOO6zaud58880k/13L6n8XVP9fH3744Tzbvm5B5GuuuSannHJKZsyYMd995q7TlPx3Qdq5i7fP79zz2z73tSzML9QffvhhNthgg6/db67mzZtXhScVFRV59dVX8+KLL+bZZ5/N0UcfPc/dphbk3XffTZJqd6D6qlKplLXXXjsvvvhite1zX9+oUaO+Nhiq6b2qCx999FGSVK01VVcWdB198MEHGThwYJ544okFnmP69Olp3br1YtcyN0yY3/uT/PeuYC+++GKNwUOXLl1qPKZly5ZJUutFsedXz9ztc6+rZMl/ruvK/K6nsWPHZr/99svEiRPne+xXf27Mddxxx+XXv/51rrvuupx99tlp0qRJPvzww9x+++1p3LhxjjzyyDqt/+ve6wXdiKJIK620Uo477rgMGTIkl112WS677LIkyQ033JAZM2ZUBVe19dlnn2XAgAF54YUX0qNHjzz44IM1ruM0NzRd0L8Pn332WZL//z2dn4suuihnnXVWGjdunLvuuivbbbfdPPvccMMN+fOf/5xjjz12vjfPAODrCaYAVhBzf5mcNWtWdthhh3na5/5CPGLEiJx77rlVowD69u2bddddN//85z/z1FNPZdttt80HH3yQ+++/P02aNJlnQd65Ixa22GKLGkd5fFWvXr3m2da0adP57j9u3LgcffTRadiwYc4///zstdde6dKlS5o1a5ZSqZSrr746Rx999HzvojU/8wtl5r6W73znO2nevPkCz1HTX9IXpF27dtXu5pYkd955Z/bbb7/ceuut6du3b4477rhFOueimvv61ltvvRp/6fqqjTbaqM77L5fLVQsQb7755ot07P/eRe1/Leg6+sEPfpAnnngivXv3zjnnnJPu3bundevWWXnllZMkq6++eiZPnrzI19GS0qBBMQPcv/r6l+Tnui49//zzSapfTzNnzsw+++yTKVOm5LDDDsuxxx6b9dZbLy1btkzDhg3zz3/+MxtuuGGN7/eaa66ZfffdN7fddltuvfXWDBo0KNdee20qKiry/e9/P+3bt6/T+ot6r//X132+anLkkUfm3HPPzY033pihQ4dmlVVWyeWXX55k8RY9nzFjRvbYY4889dRT6datWx5++OH5BsZzA9AFBZBz76y3oLD0d7/7XX70ox+lUaNGueOOO7LbbrvVuN/cmwQ899xz8wRT77//fpL//rs1t+2WW25Jx44d59svwIpKMAWwApg8eXLuv//+JP+dBvfkk0/Od9/33nsvDz74YNVd9kqlUg499ND89Kc/zfDhw7PtttvmD3/4Q7788st873vfS6tWraodP/ev4tttt13VX83ryu23355yuZwTTzwxP/7xj+dpr2k6Xdu2bdO4ceNUVFTknXfeqfHuWfO7q1nnzp2r7pq21VZbLXb9X2fffffN6aefnl/84hc566yzctBBB9U4Be9/zZ2Gt6C7s73zzjvzbJv7Xm244YbzhGRLw/333181Xe6b3/xmtbaVV145X3zxRT799NMap47V9HoWxowZM3L//fenQYMGuf/+++e5fmfMmFH1C2Vdmfv+zB11VJO5bfObUrkkvPXWW9liiy3m2T73OlpzzTWrti3Jz3Vd+cc//pHx48cnqX49jRkzJlOmTMmWW26Z66+/fp7jvm4a7kknnZTbbrstw4YNy8EHH5wrr7wySd3dYa4IS+Lz1bZt2xx00EG59tprc+ONN2aDDTbI66+/nk022SQ77bRTreqcOXNm9thjj4wZMybdunXLqFGjFvhHgC233DLJf6+FWbNmzTOq6vPPP88//vGPavv+r2HDhuWkk06qCqW+esfZ+fnb3/4237apU6dWTdFdVke8ARRt2fizDABL1IgRIzJnzpz06tUr5f/e+KLGx9yw53+n6hx66KFp0KBBbrvttsycOXO+0/iSZMCAAUmSP/3pT3X+P+GffPJJkmSttdaap23WrFm544475tm+8sorp3fv3kmSkSNH1njem2++ucbtc1/LbbfdVqt6a2PIkCHp1KlTPv7441x00UULdczcEXAPPvhg1ffoq/70pz9l6tSp82zfeeed06hRozz22GP54IMPFqvuRTVt2rSccsopSZJdd911noBkbkDz6quvznPsSy+9VDXqoTb9zpkzJy1btpwnlEqSP/zhD/MdKdWoUaMk/123bFHMHS3x4IMPZsqUKfO0v/DCCxk/fnwaNGiQvn37LtK5F8fvf//7BW7/6giQJfm5rguzZ8/OMccck+S/o/v23nvvqra5n4n5TZP7wx/+sMBzb7fddunZs2eee+65/OQnP8nEiRPzjW98I1tvvXUdVb/0LanP10knnZTkv+HO3ADz+OOPr9W5Pv/88+y5554ZPXp0VSjVrl27BR7Tu3fvdOzYMRUVFTX+e3DHHXdk9uzZWX311Wsc2XfllVfmhBNOqAql9txzzwX2d/fdd8/339O5/07uvPPOVduW1pRWgOWNYApgBTB3lMD8Fjuea+6ix/fee2+1dWLWXHPN7Lrrrpk+fXrOOOOM/P3vf0+XLl1q/Ct4jx49MnDgwEyaNCn77rtvjaN4ZsyYkZtuuqnGX9IXZO4CwDfccEM+/fTTqu2zZs3Kcccdl7feeqvG4+b+snTppZdm7Nix1dp++9vf5plnnqnxuP/7v/9Lq1atctFFF+XCCy/M7Nmz59nnrbfe+tpfbBdFs2bN8tOf/jRJcskllyzUAtzbb799ttxyy3z22Wc5/vjjq605NGnSpJx66qk1HtehQ4eceOKJmTFjRvbaa6+8/PLL8+xTUVGRP/3pT9UWNF4c5XI5DzzwQLbeeuu88cYb6dSpU6655pp59ttll12SJOecc0611/P2229n0KBBtZ5m16FDh7Ru3TpTp06dJ5gZO3ZstXXU/tfcEURzR1wsrD59+qRXr175/PPPc/TRR2fmzJlVbR999FGOPvroJMn++++/WOvwLKorrrii2gLnSXLxxRfn2WefTYsWLXLEEUdUbV+Sn+vF9eSTT2b77bfPE088kVVWWSU33XRTtSlxc39ujBo1Kq+88kq1Y6+++urceuutX9vHD3/4wyTJr371qyTL92ipZMl9vjbffPPstNNOefXVV/OnP/0pLVu2rPp3ZVHMmjUre++9dx599NGFDqWS/06FPO2005Ikp512WrV/E956662cfvrpSf77B4D/nTZ5zTXXVN38YGFCKQDqjql8APXc6NGj869//SuNGzeeZz2o/7Xppptmyy23zPPPP58bb7wxP/rRj6raDjvssDz00ENVd0KaO4qqJsOHD8/UqVPzwAMPZMMNN0z37t3TtWvXlMvlvP3223nxxRcze/bsvPrqqzXepWx+DjvssPz2t7/NCy+8kK5du2b77bdPw4YN8/jjj+fzzz/PD3/4wxrv1PTtb387Rx11VK6++ur06dMn22+/fTp16pSXX345r776ak455ZRcfPHFVSNi5lpzzTVzzz33ZODAgTn11FNzwQUXZLPNNkunTp0ybdq0vPrqq5kwYUJ69eqVgw8+eKFfx9f5wQ9+kAsvvDATJkzIb37zm2qL0c/P73//+/Tr1y+33HJLxowZkz59+mTmzJn561//mm7duqVdu3Z5+umn5znuV7/6VSZPnpyRI0dWrR+0zjrrZKWVVsq7776b8ePHZ8aMGXnggQcWeZ2pa6+9tir4qKioyEcffZTnn3++agRLv379cv3119c4Au6MM87IH//4x9x///3ZYIMN8o1vfCMffvhhnnvuuWy33XbZdttta3WnwIYNG+ass87KKaeckkMOOSTDhg3LOuusk4kTJ+app57KwQcfnDFjxtQ4lWngwIEZPnx4fvzjH+eRRx7JaqutllKplMMPPzzbbrvtAvsdOXJkdtppp9xzzz3p2rVr+vbtmy+++CKPPvpopk+fni233HKpT5E7+uijs9NOO2X77bfPGmuskb///e95+eWX07Bhw1x//fXzrIWzpD7XC+vuu++uCsS++OKLfPLJJxk/fnzV1Mvu3btnxIgR84y+69GjR771rW/lnnvuSY8ePdKvX7+0adMm48ePz+uvv54zzjjjaz9j++23X/7v//4vU6ZMSfv27ed7p85lUU1r6C2pz1fy3z8E/PWvf03y3z+GrLLKKot8jjPOOCOPPPJIkv+OdJtfuN6nT5/84Ac/qLbtxBNPzJgxY3LXXXdls802qwrhHnnkkcycOTPf+c535lm/b/z48VXrE66zzjr54x//mD/+8Y819lnEtGeAeq8MQL32/e9/v5yk/J3vfGeh9r/kkkvKScobb7xxte2zZs0qt2nTppykXCqVym+++eYCzzNnzpzyyJEjy7vvvnu5Q4cO5ZVXXrnctm3b8mabbVY+7LDDynfddVd59uzZVfs/+uij5STlHXbYYYHn/fDDD8vHHXdced111y03bty4vPrqq5cPPvjg8htvvFEePnx4OUl50KBB8xxXWVlZvuaaa8pbbrlluUmTJuVWrVqVv/nNb5bHjBlTvvHGG8tJygcccECNfU6ZMqX805/+tLzllluWW7RoUW7UqFF5zTXXLG+77bbln/3sZ+WXXnppgTV/1dwa11prrQXud/PNN5eTlFu0aFH+6KOPqrYnKc/vn+933nmnfOihh5Y7dOhQbtSoUXmdddYpn3baaeUZM2aUd9hhh3KS8qOPPlrjsffff3953333La+xxhrllVdeudyqVavyxhtvXN5///3LI0eOLM+YMWOhX+Naa61VVefcR/Pmzcurr756eYcddij/6Ec/Kj/77LNfe55XXnmlvO+++5Zbt25dbty4cXnDDTcs/+IXvyjPnj17vq/n617nXHfffXd52223Lbdq1aq8yiqrlLfaaqvy5ZdfXq6srKyq/6233prnuLnXULNmzape2/Dhw6vaF/T+fPzxx+UhQ4aUN95443KTJk3KzZo1K/fo0aP8q1/9qjxz5sx59l+Yz8SC+luYY6644oryFltsUW7atGm5ZcuW5d1226385JNPzvfYJfW5XpC57+lXH02bNi137Nix3Lt37/IJJ5xQHjVqVLmysnK+55g9e3b517/+dXnzzTcvN2vWrNymTZvyN7/5zfJf/vKX8ltvvbVQn8n99tuvnKQ8ZMiQxX4t/3t9Dho0aJ5r6asW9LNtfu6///5ykvIqq6xSY3ttPl9fV2e5XC5/+umn5YYNG5ZLpVL5tddeW+h6a+rn6x7z+37MmTOnfOWVV5a32mqrcvPmzcvNmzcvf+Mb3yhfeeWVNV4nc6/ThXksrLnv2c4771yr7wHAiqRULi8jt5wBgIIcfvjhGT58eC688MIMHjy46HJgiZo7gsb/Ai68qVOnZs0118ysWbPy1ltvLdUpl7X1u9/9LieddFI233zzvPTSS0ut32uvvTZHHnlkvvnNb+ahhx5aav0CsPyyxhQAK4R//OMfmTFjRrVtlZWVueaaazJixIg0adIkBxxwQEHVAcuyoUOHZsaMGfne9763XIRSU6dOrVpb8H/veLkkzZgxI0OHDk2SalPBAWBBjJgCYIVw6KGH5rbbbkuPHj2yxhprZMaMGXnllVfy9ttvp2HDhrnmmmtqvMsg1DdGTC2cp556Ktdff33eeuut/PWvf02zZs3y8ssvZ5111im6tPkaOXJkbr/99jz99NOZMmVKOnTokBdffHGJrPn1Vb/+9a/z97//PU888UTefPPN7LbbbnnggQeWaJ8A1B8WPwdghbDffvtl+vTpGTduXMaPH58vv/wyq622Wvbbb7+cfPLJ2WabbYouEViG/POf/8x1112Xpk2bZptttsn555+/TIdSSfLss8/m3nvvTceOHXPYYYflZz/72RIPpZLkvvvuy+jRo9OuXbsceuihueiii5Z4nwDUH0ZMAQAAAFAIa0wBAAAAUAjBFAAAAACFWOHWmKqsrMx7772XFi1aVC3+CQAAAEDdKJfL+fTTT7P66qunQYMFj4la4YKp9957b7m4zS8AAADA8mzSpElZc801F7jPChdMtWjRIsl/vzktW7YsuBoAAACA+mX69Onp3LlzVQazICtcMDV3+l7Lli0FUwAAAABLyMIsoWTxcwAAAAAKIZgCAAAAoBCCKQAAAAAKscKtMQUAAAAs++bMmZMvvvii6DKowcorr5yGDRvWybkEUwAAAMAyo1wu5/3338/UqVOLLoUFaNWqVTp27LhQC5wviGAKAAAAWGbMDaVWW221NGvWbLGDD+pWuVzOzJkz88EHHyRJOnXqtFjnE0wBAAAAy4Q5c+ZUhVJt27Ytuhzmo2nTpkmSDz74IKutttpiTeuz+DkAAACwTJi7plSzZs0KroSvM/c9Wtx1wARTAAAAwDLF9L1lX129R4IpAAAAAAohmAIAAACoB/r165eTTz656DIWyTK7+PmvfvWrDBkyJD/84Q9zySWXJElmzZqVH/3oR7nllltSUVGR/v375/LLL0+HDh2KLRYAAABYYtY4etxS7e/fV/Vc5GMOPfTQ3HDDDTn66KNz5ZVXVms7/vjjc/nll2fQoEEZMWJEHVVZPyyTI6aee+65XHXVVenWrVu17aecckr+/Oc/5/bbb8/o0aPz3nvvZd999y2oSgAAAID/r3Pnzrnlllvy+eefV22bNWtWRo4cmS5duhRYWe3NmTMnlZWVS+z8y1ww9dlnn+Wggw7KNddck9atW1dtnzZtWq677rpcdNFF2WmnndKzZ88MHz48Tz31VMaOHVtgxQAAAADJlltumc6dO+fOO++s2nbnnXemS5cu6dGjR9W2ysrKDB06NF27dk3Tpk3TvXv3/PGPf6xqf+yxx1IqlfLQQw+lR48eadq0aXbaaad88MEHeeCBB7LxxhunZcuWOfDAAzNz5sxqNXz55Zc54YQTsuqqq6Zdu3b56U9/mnK5XNVeUVGRU089NWussUaaN2+eXr165bHHHqtqHzFiRFq1apU//elP2WSTTdK4ceNMnDhxCXy3/muZC6aOP/747LHHHtlll12qbR83bly++OKLats32mijdOnSJU8//fTSLhMAAABgHocffniGDx9e9fz666/PYYcdVm2foUOH5sYbb8yVV16Zf/zjHznllFNy8MEHZ/To0dX2O/vss3PZZZflqaeeyqRJk/K9730vl1xySUaOHJn77rsvf/nLX/K73/2u2jE33HBDVlpppTz77LP57W9/m4suuijXXnttVfsJJ5yQp59+OrfcckteeumlfPe7381uu+2WN954o2qfmTNn5vzzz8+1116bf/zjH1lttdXq8ltUzTK1xtQtt9yS559/Ps8999w8be+//34aNWqUVq1aVdveoUOHvP/++/M9Z0VFRSoqKqqeT58+vc7qBQAAAPiqgw8+OEOGDMk777yTJHnyySdzyy23VI1KqqioyC9/+cs88sgj6d27d5JknXXWyRNPPJGrrroqO+ywQ9W5fvGLX2S77bZLkhxxxBEZMmRIJkyYkHXWWSdJ8p3vfCePPvpoTjvttKpjOnfunIsvvjilUikbbrhhXn755Vx88cU58sgjM3HixAwfPjwTJ07M6quvniQ59dRT8+CDD2b48OH55S9/mST54osvcvnll6d79+5L9puVZSiYmjRpUn74wx/m4YcfTpMmTersvEOHDs0555xTZ+cDAAAAmJ/27dtnjz32yIgRI1Iul7PHHnukXbt2Ve3/+te/MnPmzOy6667Vjps9e3a16X5Jqq293aFDhzRr1qwqlJq77dlnn612zDbbbJNSqVT1vHfv3rnwwgszZ86cvPzyy5kzZ0422GCDasdUVFSkbdu2Vc8bNWo0z7rfS8oyE0yNGzcuH3zwQbbccsuqbXPmzMmYMWNy2WWX5aGHHsrs2bMzderUaqOmpkyZko4dO873vEOGDMngwYOrnk+fPj2dO3deIq8BAAAA4PDDD88JJ5yQJBk2bFi1ts8++yxJct9992WNNdao1ta4ceNqz1deeeWqr0ulUrXnc7ctysLkn332WRo2bJhx48alYcOG1dpWWWWVqq+bNm1aLdxakpaZYGrnnXfOyy+/XG3bYYcdlo022iinnXZaOnfunJVXXjmjRo3KwIEDkySvv/56Jk6cWDX0rSaNGzee540FAAAAWFJ22223zJ49O6VSKf3796/W9tUFxb86ba+uPPPMM9Wejx07Nuuvv34aNmyYHj16ZM6cOfnggw+y/fbb13nftbHMBFMtWrTIZpttVm1b8+bN07Zt26rtRxxxRAYPHpw2bdqkZcuWOfHEE9O7d+9ss802RZQMAAAAMI+GDRvm1Vdfrfr6q1q0aJFTTz01p5xySiorK9OnT59MmzYtTz75ZFq2bJlBgwYtVt8TJ07M4MGDc/TRR+f555/P7373u1x44YVJkg022CAHHXRQDjnkkFx44YXp0aNHPvzww4waNSrdunXLHnvssVh918YyE0wtjIsvvjgNGjTIwIEDU1FRkf79++fyyy8vuiwAAACAalq2bDnftp///Odp3759hg4dmjfffDOtWrXKlltumTPOOGOx+z3kkEPy+eefZ+utt07Dhg3zwx/+MEcddVRV+/Dhw/OLX/wiP/rRj/Lvf/877dq1yzbbbJM999xzsfuujVK5XC4X0nNBpk+fnlVXXTXTpk1b4EUCAAAALF2zZs3KW2+9la5du9bpjdGoewt6rxYle2mwJIsEAAAAgPkRTAEAAABQCMEUAAAAAIUQTAEAAABQCMEUAAAAAIUQTAEAAABQCMEUAAAAAIUQTAEAAABQCMEUAAAAAIVYqegCoL64etzS6eeonkunHwAAAOqftddeOyeffHJOPvnkoktJIpgCAAAAlnFLayDAXLUdEPD+++/nvPPOy3333Zd///vfWW211bLFFlvk5JNPzs4771y3RdYTgikAAACAxfT2229nu+22S6tWrfLrX/86m2++eb744os89NBDOf744/Paa68VXeIyyRpTAAAAAIvpuOOOS6lUyrPPPpuBAwdmgw02yKabbprBgwdn7NixSZKLLroom2++eZo3b57OnTvnuOOOy2effVZ1jnfeeSd77bVXWrdunebNm2fTTTfN/fffnyQZMWJEWrVqVa3Pu+++O6VSqer5hAkT8q1vfSsdOnTIKquskm984xt55JFHlvyLXwyCKQAAAIDF8Mknn+TBBx/M8ccfn+bNm8/TPjdQatCgQS699NL84x//yA033JC//vWv+fGPf1y13/HHH5+KioqMGTMmL7/8cs4///ysssoqC13HZ599lt133z2jRo3KCy+8kN122y177bVXJk6cuNivcUkxlQ8AAABgMfzrX/9KuVzORhtttMD9vrrg+Nprr51f/OIXOeaYY3L55ZcnSSZOnJiBAwdm8803T5Kss846i1RH9+7d071796rnP//5z3PXXXflT3/6U0444YRFOtfSIpgCgBXBvecsvb72/NnS6wsAYBlQLpcXar9HHnkkQ4cOzWuvvZbp06fnyy+/zKxZszJz5sw0a9YsJ510Uo499tj85S9/yS677JKBAwemW7duC13HZ599lrPPPjv33XdfJk+enC+//DKff/75Mj1iylQ+AAAAgMWw/vrrp1QqLXCB87fffjt77rlnunXrljvuuCPjxo3LsGHDkiSzZ89OkvzgBz/Im2++me9///t5+eWXs9VWW+V3v/tdkv9OA/zfAOyLL76o9vzUU0/NXXfdlV/+8pd5/PHHM378+Gy++eZV518WCaYAAAAAFkObNm3Sv3//DBs2LDNmzJinferUqRk3blwqKytz4YUXZptttskGG2yQ9957b559O3funGOOOSZ33nlnfvSjH+Waa65JkrRv3z6ffvpptfOPHz++2rFPPvlkDj300Hz729/O5ptvno4dO+btt9+u09da1wRTAAAAAItp2LBhmTNnTrbeeuvccccdeeONN/Lqq6/m0ksvTe/evbPeeuvliy++yO9+97u8+eab+f3vf58rr7yy2jlOPvnkPPTQQ3nrrbfy/PPP59FHH83GG2+cJOnVq1eaNWuWM844IxMmTMjIkSMzYsSIasevv/76ufPOOzN+/Pi8+OKLOfDAA1NZWbm0vgW1IpgCAAAAWEzrrLNOnn/++ey444750Y9+lM022yy77rprRo0alSuuuCLdu3fPRRddlPPPPz+bbbZZbrrppgwdOrTaOebMmZPjjz8+G2+8cXbbbbdssMEGVQujt2nTJn/4wx9y//33Z/PNN8/NN9+cs88+u9rxF110UVq3bp1tt902e+21V/r3758tt9xyaX0LaqVUXtgVuuqJ6dOnZ9VVV820adPSsmXLosuhHrl63NLp56ieS6cfoJ6x+DkAsByYNWtW3nrrrXTt2jVNmjQpuhwWYEHv1aJkL0ZMAQAAAFAIwRQAAAAAhRBMAQAA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MAUAAABAIQRTAAAAABTCGlMAAAAAC7C01qFbEdegE0wBAAAAyyyhUP1mKh8AAAAAhRBMAQAAAFAIwRQAAAAAhRBMAQAAAFAIwRQAAAAAhRBMAQAAAFAIwRQAAAAAhRBMAQAAAFAIwRQAAAAAhRBMAQAAAFAIwRQAAAAAhRBMAQAAAFAIwRQAAAAAhRBMAQAAAFAIwRQAAAAAhRBMAQAAAFAIwRQAAAAAhVip6AIAAFYkV49ben0d1XPp9QUAUBtGTAEAAABQCMEUAAAAAIUQTAEAAABQiFqtMfXiiy/mySefzCuvvJKPPvoopVIp7dq1y8Ybb5xtt902W2yxRR2XCQAAAEB9s9DB1AcffJDLL788N954Y955552Uy+U0atQorVu3TrlcztSpUzN79uyUSqV06dIlgwYNyrHHHpsOHTosyfoBAAAAWE4t1FS+0047Leuss06uvvrq7Lnnnrn77rvz7rvvZtasWZk8eXLef//9zJo1K++++27uvvvu7Lnnnrnmmmuy7rrrZsiQIUv6NQAAAACwHFqoEVNjxozJH/7wh3zrW99KqVSa736rr756Vl999ey111659NJLc8899+SCCy6os2IBAAAAqD8WKph6+umnF/nEpVIp++yzT/bZZ59FPhYAAACA+s9d+QAAAAAoRK3uyjdx4sRMnDgxffr0qdr24osv5sILL0xFRUUOOOAAI6UAAJZRV49ben0d1XPp9QUALH9qFUyddNJJ+eyzz/LII48kSaZMmZIdd9wxs2fPTosWLfLHP/4xt99+e/bdd986LRYAAACA+qNWU/meffbZ7LrrrlXPb7zxxnz++ed58cUX8+9//zs777xzfvOb39RZkQAAAADUP7UKpj755JOsttpqVc/vvffe7LDDDll33XXToEGD7LvvvnnttdfqrEgAAAAA6p9aBVPt27fPO++8kySZOnVqxo4dm/79+1e1f/nll/nyyy/rpkIAAAAA6qVarTG1yy675NJLL03Lli3z2GOPpbKystpi56+88ko6d+5cVzUCAAAAUA/VKpj61a9+lX/+85859dRT06hRo/zmN79J165dkyQVFRW57bbbcuCBB9ZpoQAAAADUL7UKpjp06JAnn3wy06ZNS9OmTdOoUaOqtsrKyowaNcqIKQAAAAAWqFbB1FyrrrrqPNuaNm2a7t27L85pAQAAAFgB1Grx8ySZOHFijjnmmGy44YZp3bp1xowZkyT56KOPctJJJ+WFF16osyIBAAAAqH9qNWLqlVdeyfbbb5/Kysr06tUr//rXv6ruwteuXbs88cQTmTFjRq677ro6LRYAAACA+qNWwdSPf/zjtGrVKmPHjk2pVMpqq61WrX2PPfbIrbfeWicFAgAAAFA/1Woq35gxY3Lsscemffv2KZVK87R36dIl//73vxe7OAAAAADqr1oFU5WVlWnWrNl82z/88MM0bty41kUBAAAAUP/VKpjacsstc99999XY9uWXX+aWW27JNttss1iFAQAAAFC/1SqYGjJkSB588MEce+yx+fvf/54kmTJlSh555JF885vfzKuvvprTTz+9TgsFAAAAoH6p1eLnAwYMyIgRI/LDH/4wV199dZLk4IMPTrlcTsuWLXPjjTemb9++dVooAAAAAPVLrYKpJPn+97+ffffdNw8//HDeeOONVFZWZt11103//v3TokWLuqwRAAAAgHqoVsHUmDFjsvHGG6d9+/bZZ5995mn/6KOP8sorrxg1BQAAAMB81WqNqR133DEPP/zwfNtHjRqVHXfcsdZFAQAAAFD/1SqYKpfLC2yvqKhIw4YNa1UQAAAAACuGhZ7KN3HixLz99ttVz1977bWMGTNmnv2mTp2aq666KmuttVadFAgAAABA/bTQwdTw4cNzzjnnpFQqpVQq5bzzzst55503z37lcjkNGzbMVVddVaeFAgAAAFC/LHQw9b3vfS+bbbZZyuVyvve97+Wkk07K9ttvX22fUqmU5s2bZ4sttkiHDh3qvFgAAAAA6o+FDqY23njjbLzxxkn+O3qqb9++6dq16xIrDAAAAID6baGDqa8aNGhQXdcBAAAAwAqmVsHU4Ycf/rX7lEqlXHfddbU5PQAAAAArgFoFU3/9619TKpWqbZszZ04mT56cOXPmpH379mnevPkin3fo0KG5884789prr6Vp06bZdtttc/7552fDDTes2qdfv34ZPXp0teOOPvroXHnllbV5KQAAAAAUpFbB1Ntvv13j9i+++CJXXXVVLrnkkjz88MOLfN7Ro0fn+OOPzze+8Y18+eWXOeOMM/LNb34zr7zySrWg68gjj8y5555b9bxZs2aL3BcAAAAAxapVMDU/K6+8ck444YS88sorOeGEE3Lfffct0vEPPvhgtecjRozIaqutlnHjxqVv375V25s1a5aOHTvWSc0AAAAAFKPBkjhp9+7dM2bMmMU+z7Rp05Ikbdq0qbb9pptuSrt27bLZZptlyJAhmTlz5mL3BQAAAMDSVacjpuZ6+OGHF3t6XWVlZU4++eRst9122Wyzzaq2H3jggVlrrbWy+uqr56WXXsppp52W119/PXfeeWeN56moqEhFRUXV8+nTpy9WXQAAAADUjVoFU19d3+mrpk6dmjFjxuT555/P6aefvliFHX/88fn73/+eJ554otr2o446qurrzTffPJ06dcrOO++cCRMmZN11153nPEOHDs0555yzWLUAAAAAUPdqFUydffbZNW5v3bp11l133Vx55ZU58sgja13UCSeckHvvvTdjxozJmmuuucB9e/XqlST517/+VWMwNWTIkAwePLjq+fTp09O5c+da1wYAAABA3ahVMFVZWVnXdSRJyuVyTjzxxNx111157LHH0rVr1689Zvz48UmSTp061djeuHHjNG7cuC7LBAAAAKAOLJE1pmrr+OOPz8iRI3PPPfekRYsWef/995Mkq666apo2bZoJEyZk5MiR2X333dO2bdu89NJLOeWUU9K3b99069at4OoBAAAAWBSLFUx9+umneeedd/Kf//wn5XJ5nva+ffsu0vmuuOKKJEm/fv2qbR8+fHgOPfTQNGrUKI888kguueSSzJgxI507d87AgQPzk5/8pNavAQAAAIBi1CqY+vjjj3PCCSfkjjvuyJw5c+ZpL5fLKZVKNbYtSE3h1ld17tw5o0ePXqRzAgAAALBsqlUwdeSRR+bPf/5zTjrppGy//fZp3bp1XdcFAAAAQD1Xq2DqL3/5S0455ZRccMEFdV0PAAAAACuIBrU5qFmzZll77bXruBQAAAAAViS1CqYOPvjg3HXXXXVdCwAAAAArkFpN5fvOd76T0aNHZ7fddstRRx2Vzp07p2HDhvPst+WWWy52gQAAAADUT7UKpvr06VP19cMPPzxPe23vygcAAADAiqNWwdTw4cPrug4AAAAAVjC1CqYGDRpU13UAAAAAsIKp1eLnAAAAALC4FmrE1OGHH55SqZSrr746DRs2zOGHH/61x5RKpVx33XWLXSAAAAAA9dNCBVN//etf06BBg1RWVqZhw4b561//mlKptMBjvq4dAAAAgBXbQgVTb7/99gKfAwAAAMCissYUAAAAAIWo1V35vqqysjLTpk1LuVyep61NmzaLe3oAAAAA6qlaBVNffPFFzj///Fx//fWZNGlSKisra9xvzpw5i1UcAAAAAPVXrYKpo48+OjfccEO22Wab7LPPPll11VXrui4AAAAA6rlaBVO33357vv/972fEiBF1XA4AAAAAK4paLX7erFmzbLPNNnVdCwAAAAArkFoFUwcccEDuvffeuq4FAAAAgBVIrabyXXDBBTn88MOz55575vDDD0/nzp3TsGHDefbbcsstF7tAAAAAAOqnWgVTFRUVqayszAMPPJAHHnhgnvZyuZxSqeSufAAAAADMV62CqcMPPzx33XVX9t9///Tq1ctd+QAAAABYZLUKph566KGceOKJufjii+u6HgAAAABWELVa/Lxly5ZZb7316roWAAAAAFYgtQqmjjzyyNx8883WkAIAAACg1mo1lW+TTTbJPffcky233DKDBg2a71359t1338UuEAAAAID6qVbB1H777Vf19amnnlrjPu7KBwAAAMCC1CqYevTRR+u6DgAAAABWMLUKpnbYYYe6rgMAAACAFUytFj8HAAAAgMW1UMFU//79M2bMmEU++aOPPpr+/fsv8nEAAAAA1H8LFUytu+662XXXXbPxxhvn7LPPzuOPP57PPvtsnv0+/fTTPPbYY/nJT36SDTfcMAMGDMh6661X50UDAAAAsPxbqDWmLr/88vzf//1ffvvb3+byyy/Pz3/+85RKpbRp0yatW7dOuVzOf/7zn/znP/9JuVxOmzZtctBBB+WHP/xhunbtuqRfAwAAAADLoYVe/Lxr16655JJL8pvf/CaPP/54nn766bz22mv5+OOPkyRt27bNRhttlN69e6dPnz5ZeeWVl1jRAAAAACz/FvmufCuttFJ23HHH7LjjjkuiHgAAAABWEO7KBwAAAEAhBFMAAAAAFEIwBQAAAEAhBFMAAAAAFEIwBQAAAEAhBFMAAAAAFGKlxTn4008/zTvvvJP//Oc/KZfL87T37dt3cU4PAAAAQD1Wq2Dq448/zgknnJA77rgjc+bMmae9XC6nVCrV2AYAAAAASS2DqSOPPDJ//vOfc9JJJ2X77bdP69at67ouAAAAAOq5WgVTf/nLX3LKKafkggsuqOt6AAAAAFhB1Grx82bNmmXttdeu41IAAAAAWJHUKpg6+OCDc9ddd9V1LQAAAACsQGo1le873/lORo8end122y1HHXVUOnfunIYNG86z35ZbbrnYBQIAAABQP9UqmOrTp0/V1w8//PA87e7KBwAAAMDXqVUwNXz48LquAwAAAIAVTK2CqUGDBtV1HQAAAACsYGoVTH3VZ599lkmTJiVJOnfunFVWWWWxiwIAAACg/qvVXfmS5LnnnsuOO+6Y1q1bZ7PNNstmm22W1q1bZ6eddsrf/va3uqwRAAAAgHqoViOmnnnmmfTr1y+NGjXKD37wg2y88cZJkldffTU333xz+vbtm8ceeyxbb711nRYLAAAAQP1Rq2DqzDPPzBprrJEnnngiHTt2rNZ29tlnZ7vttsuZZ55Z4x37AAAAACCp5VS+Z555JkcfffQ8oVSSdOjQIUcddVTGjh272MUBAAAAUH/VKphq0KBBvvzyy/m2z5kzJw0a1Hr5KgAAAABWALVKj7bddtsMGzYs77zzzjxtEydOzOWXX57ttttusYsDAAAAoP6q1RpTv/zlL9O3b99stNFG+fa3v50NNtggSfL666/nnnvuyUorrZShQ4fWaaEAAAAA1C+1CqZ69OiRZ555JmeeeWb+9Kc/ZebMmUmSZs2aZbfddssvfvGLbLLJJnVaKAAAAAD1S62CqSTZZJNNctddd6WysjIffvhhkqR9+/bWlgIAAABgodQ6mJqrQYMG6dChQ13UAgAAAMAKZKGCqXPPPTelUilnnnlmGjRokHPPPfdrjymVSvnpT3+62AUCAAAAUD8tVDB19tlnp1Qq5bTTTkujRo1y9tlnf+0xgikAAAAAFmShgqnKysoFPgcAAACARWWlcgAAAAAKUatgqmHDhhk5cuR822+99dY0bNiw1kUBAAAAUP/VKpgql8sLbJ8zZ05KpVKtCgIAAABgxVDrqXzzC56mT5+ehx56KO3atat1UQAAAADUfwsdTJ1zzjlp2LBhGjZsmFKplIMPPrjq+VcfrVu3zu9///vsv//+S7JuAAAAAJZzC3VXviTZeuutc9xxx6VcLufyyy/Prrvumg022KDaPqVSKc2bN0/Pnj2z77771nmxAAAAANQfCx1MDRgwIAMGDEiSzJgxI8ccc0x69eq1xAoDAAAAoH5b6GDqq4YPH17XdQAAAACwgqlVMDXXu+++mxdeeCHTpk1LZWXlPO2HHHLI4pweAAAAgHqsVsHUrFmzMmjQoNxxxx2prKxMqVRKuVxOUv1ufYsaTA0dOjR33nlnXnvttTRt2jTbbrttzj///Gy44YbV+v7Rj36UW265JRUVFenfv38uv/zydOjQoTYvBQAAAICCLPRd+b7qjDPOyJ133pnzzjsvjz32WMrlcm644Yb85S9/yYABA9K9e/e8+OKLi3ze0aNH5/jjj8/YsWPz8MMP54svvsg3v/nNzJgxo2qfU045JX/+859z++23Z/To0XnvvfcstA4AAACwHKrViKk//vGPOeyww3Laaafl448/TpKsscYa2WmnnbLLLrtkp512yrBhw3LFFVcs0nkffPDBas9HjBiR1VZbLePGjUvfvn0zbdq0XHfddRk5cmR22mmnJP9d72rjjTfO2LFjs80229Tm5QAAAABQgFqNmPrggw+y9dZbJ0maNm2aJNVGNQ0cODB33nnnYhc3bdq0JEmbNm2SJOPGjcsXX3yRXXbZpWqfjTbaKF26dMnTTz+92P0BAAAAsPTUKpjq0KFD1UipZs2apXXr1nn99der2qdPn55Zs2YtVmGVlZU5+eSTs91222WzzTZLkrz//vtp1KhRWrVqNU8977//fo3nqaioyPTp06s9AAAAACheraby9erVK0888UROO+20JMlee+2VX//61+nUqVMqKytz8cUXL/a0uuOPPz5///vf88QTTyzWeYYOHZpzzjlnsc4BAAAAQN2r1Yipk046Keuss04qKiqSJD//+c/TqlWrfP/738+gQYOy6qqr5tJLL611USeccELuvffePProo1lzzTWrtnfs2DGzZ8/O1KlTq+0/ZcqUdOzYscZzDRkyJNOmTat6TJo0qdZ1AQAAAFB3ajViqk+fPunTp0/V886dO+fVV1/Nyy+/nIYNG2ajjTbKSist+qnL5XJOPPHE3HXXXXnsscfStWvXau09e/bMyiuvnFGjRmXgwIFJktdffz0TJ05M7969azxn48aN07hx40WuBQAAAIAla5HTo5kzZ+bggw/OwIEDc9BBB1Vtb9CgQbp3775YxRx//PEZOXJk7rnnnrRo0aJq3ahVV101TZs2zaqrrpojjjgigwcPTps2bdKyZcuceOKJ6d27tzvyAQAAACxnFnkqX7NmzfLII49k5syZdV7MFVdckWnTpqVfv37p1KlT1ePWW2+t2ufiiy/OnnvumYEDB6Zv377p2LFjndwBEAAAAIClq9ZT+Z5++ukceeSRdVpMuVz+2n2aNGmSYcOGZdiwYXXaNwAAAABLV60WP7/sssvy+OOP5yc/+Unefffduq4JAAAAgBVArYKp7t275913383QoUOz1lprpXHjxmnZsmW1x6qrrlrXtQIAAABQj9RqKt/AgQNTKpXquhYAAAAAViC1CqZGjBhRx2UAAAAAsKKp1VQ+AAAAAFhctRoxdeONNy7UfoccckhtTg8AAADACqBWwdShhx4637avrj0lmAIAAABgfmoVTL311lvzbJszZ07efvvtXH755Zk4cWJuuOGGxS4OAAAAgPqrVsHUWmutVeP2ddZZJzvttFP22GOPXHbZZRk2bNhiFQcAAABA/bVEFj/fc889c+utty6JUwMAAABQTyyRYGrChAmpqKhYEqcGAAAAoJ6o1VS+MWPG1Lh96tSpGTNmTC699NLss88+i1MXAAAAAPVcrYKpfv36Vbv73lzlcjkNGzbMd7/73fzud79b7OIAAAAAqL9qFUw9+uij82wrlUpp3bp11lprrbRs2XKxCwMAAACgfqtVMLXDDjvUdR0AAAAArGBqFUwlyauvvpoJEybk008/TYsWLbLeeutlo402qsvaAAAAAKjHFjmYuuqqq3Leeefl3//+9zxtXbp0yZlnnpkf/OAHdVIcAAAAAPXXIgVTp556ai666KK0adMmhx9+eDbbbLOsssoq+eyzz/Lyyy/n7rvvztFHH5033ngj559//pKqGQAAAIB6YKGDqWeffTYXXXRRvv3tb+fGG29M8+bN59nnt7/9bQ4++OD85je/yXe/+91stdVWdVosAAAAAPVHg4Xd8brrrkunTp0ycuTIGkOpJGnevHluvvnmdOjQIdddd12dFQkAAABA/bPQwdTTTz+d7373u2ncuPEC92vSpEm++93v5sknn1zs4gAAAACovxY6mJo0aVI23njjhdp3k002yaRJk2pdFAAAAAD130IHU9OnT0+LFi0Wat9VVlkln376aa2LAgAAAKD+W+hgqlwup1QqLfSJy+VyrQoCAAAAYMWw0HflS5Lf/OY3ufnmm792v3//+9+1LggAAACAFcNCB1NdunTJJ598kk8++WSh9wcAAACA+VnoYOrtt99egmUAAAAAsKJZ6DWmAAAAAKAuCaYAAAAAKIRgCgAAAIBCCKYAAAAAKIRgCgAAAIBCCKYAAAAAKMRKi3NwRUVFnn/++XzwwQfZbrvt0q5du7qqCwAAAIB6rtYjpi699NJ06tQpffr0yb777puXXnopSfLRRx+lXbt2uf766+usSAAAAADqn1oFU8OHD8/JJ5+c3XbbLdddd13K5XJVW7t27bLTTjvllltuqbMiAQAAAKh/ahVMXXjhhfnWt76VkSNHZq+99pqnvWfPnvnHP/6x2MUBAAAAUH/VKpj617/+lQEDBsy3vU2bNvn4449rXRQAAAAA9V+tgqlWrVrlo48+mm/7K6+8ko4dO9a6KAAAAADqv1oFU7vvvnuuvvrqTJ06dZ62f/zjH7nmmmuy9957L25tAAAAANRjtQqmfvGLX2TOnDnZbLPN8pOf/CSlUik33HBDDj744Gy11VZZbbXVctZZZ9V1rQAAAADUI7UKplZfffWMGzcuu+22W2699daUy+X8/ve/z5///OcccMABGTt2bNq1a1fXtQIAAABQj6xU2wNXW221XHvttbn22mvz4YcfprKyMu3bt0+DBrXKugAAAABYwdQ6mPqq9u3b18VpAAAAAFiB1CqYOvfccxfYXiqV0qRJk6y55prp27dv1lhjjVoVBwAAAED9Vatg6uyzz06pVEqSlMvlam3/u71hw4Y58sgjc9lll5nmBwAAAECVWiVF7777brp165ZBgwZl3LhxmTZtWqZNm5a//e1vOeSQQ7LFFlvkn//8Z55//vkcdNBBueqqq/LLX/6yrmsHAAAAYDlWq2DquOOOy0YbbZTrr78+PXr0SIsWLdKiRYtsueWWGT58eNZff/2cfvrp2WKLLTJixIj0798/N954Y13XDgAAAMByrFbB1F//+tfssMMO823fYYcd8vDDD1c933333TNx4sTadAUAAABAPVWrYKpx48Z55pln5ts+duzYNGrUqOr5l19+mVVWWaU2XQEAAABQT9UqmDrggANy44035tRTT82ECRNSWVmZysrKTJgwIT/60Y/yhz/8IQcccEDV/o8++mg22WSTOisaAAAAgOVfre7Kd8EFF2TKlCm56KKLcvHFF1fdba+ysjLlcjkDBw7MBRdckCSZNWtWevbsmW233bbuqgYAAABguVerYKpJkya59dZbc/rpp+fBBx/MO++8kyRZa6210r9//2y55ZbV9j3rrLPqploAAAAA6o1aBVNz9ejRIz169KirWgAAAABYgdRqjSkAAAAAWFy1DqYeeOCB7Lrrrmnbtm1WWmmlNGzYcJ4HAAAAAMxPrYKpO+64I3vuuWemTJmS/fffP5WVlTnggAOy//77p2nTpunWrZt1pQAAAABYoFoFU0OHDs3WW2+dF154Ieecc06S5PDDD89NN92Uv//975k8eXK6du1ap4UCAAAAUL/UKph65ZVXsv/++6dhw4ZZaaX/rp/+xRdfJEnWXnvtHHfccTn//PPrrkoAAAAA6p1aBVPNmjVLo0aNkiStWrVK48aNM3ny5Kr2Dh065K233qqbCgEAAACol2oVTG244YZ55ZVXqp5vscUW+f3vf58vv/wys2bNysiRI9OlS5c6KxIAAACA+qdWwdS3v/3t3HPPPamoqEiSnHnmmXnsscfSqlWrtG/fPo8//nhOP/30Oi0UAAAAgPplpdocdOqpp+bUU0+ter7nnnvmsccey5133pmGDRtmjz32yI477lhnRQIAAABQ/yxyMFVRUZGHHnooa6+9drp161a1ffvtt8/2229fp8UBAAAAUH8t8lS+Ro0a5bvf/W6eeuqpJVEPAAAAACuIRQ6mSqVS1l9//Xz00UdLoh4AAAAAVhC1Wvz8jDPOyGWXXZbXX3+9rusBAAAAYAVRq8XPx44dm7Zt22azzTZLv379svbaa6dp06bV9imVSvntb39bJ0UCAAAAUP/UKpi67LLLqr4eNWpUjfsIpgAAAABYkFoFU5WVlXVdBwAAAAArmFqtMQUAAAAAi6tWI6bmGjt2bB599NF88MEHOe6447L++utn5syZee2117LBBhtklVVWqas6AQAAAKhnajViavbs2dl3332z3Xbb5cwzz8yll16aSZMm/feEDRrkm9/8pvWlAAAAAFigWgVTP/3pT3PvvffmiiuuyOuvv55yuVzV1qRJk3z3u9/NPffcU2dFAgAAAFD/1CqYuvnmm3PsscfmqKOOSps2beZp33jjjfPmm28u8nnHjBmTvfbaK6uvvnpKpVLuvvvuau2HHnpoSqVStcduu+1Wm5cAAAAAQMFqFUx98MEH2Xzzzefb3rBhw8ycOXORzztjxox07949w4YNm+8+u+22WyZPnlz1uPnmmxe5HwAAAACKV6vFzzt37pzXXnttvu1PPvlk1ltvvUU+74ABAzJgwIAF7tO4ceN07Nhxkc8NAAAAwLKlViOmDjzwwFx11VV5+umnq7aVSqUkyTXXXJPbbrsthxxySN1U+D8ee+yxrLbaatlwww1z7LHH5uOPP14i/QAAAACwZNVqxNSZZ56ZsWPHpm/fvtl4441TKpVyyimn5JNPPsm7776b3XffPaecckpd15rddtst++67b7p27ZoJEybkjDPOyIABA/L000+nYcOGNR5TUVGRioqKqufTp0+v87oAAAAAWHS1CqYaNWqUBx98MDfddFP++Mc/Zs6cOamoqEi3bt3yi1/8It///verRlDVpf3337/q68033zzdunXLuuuum8ceeyw777xzjccMHTo055xzTp3XAgAAAMDiqVUwlfx36t7BBx+cgw8+uC7rWSTrrLNO2rVrl3/961/zDaaGDBmSwYMHVz2fPn16OnfuvLRKBAAAAGA+arXG1I9//OO88MILdV3LInv33Xfz8ccfp1OnTvPdp3HjxmnZsmW1BwAAAADFq1Uw9bvf/S5bbbVV1l9//fz0pz/Nyy+/XCfFfPbZZxk/fnzGjx+fJHnrrbcyfvz4TJw4MZ999ln+7//+L2PHjs3bb7+dUaNG5Vvf+lbWW2+99O/fv076BwAAAGDpqVUw9cEHH2T48OHZYIMNcsEFF2SLLbbIpptump///Od5/fXXa13M3/72t/To0SM9evRIkgwePDg9evTIWWedlYYNG+all17K3nvvnQ022CBHHHFEevbsmccffzyNGzeudZ8AAAAAFKNWa0y1aNEihxxySA455JBMnTo1d9xxR2677bb8/Oc/z9lnn53NN988+++/f04//fRFOm+/fv1SLpfn2/7QQw/VplwAAAAAlkG1GjH1Va1atcoRRxyRhx56KJMnT86FF16Yt956K2eeeWZd1AcAAABAPVXru/J91RdffJEHHnggt956a/785z/ns88+c+c7AAAAABao1sHUl19+mb/85S+59dZbc88992T69Onp1KlTDjvssOy3337Zdttt67JOAAAAAOqZWgVTRxxxRO6+++785z//Sbt27XLAAQdk//33T9++fVMqleq6RgAAAADqoVoFU3fffXe+/e1vZ7/99stOO+2Uhg0bzrPPf/7zn7Ru3XqxCwQAAACgfqpVMDVlypSstNK8h1ZUVORPf/pTbrrppjz44IOZNWvWYhcIAAAAQP1Uq2Dqq6FUuVzOqFGjctNNN+Wuu+7K9OnT0759+xx44IF1ViQAAAAA9U+tFz8fN25cbrrpptxyyy15//33UyqVsv/+++eEE07INttsY60pAAAAABZokYKpN998MzfddFNuuummvPHGG1ljjTVy0EEHZeutt85+++2XgQMHpnfv3kuqVgAAAADqkYUOpnr37p1nn3027dq1y3e+851ce+216dOnT5JkwoQJS6xAAAAAAOqnhQ6mnnnmmXTt2jUXXXRR9thjjxoXPwcAAACAhdVgYXe87LLL0qlTp3z7299Ox44dc/TRR+fRRx9NuVxekvUBAAAAUE8tdDB13HHH5YknnsiECRNy8skn5/HHH8/OO++cNdZYI2eddVZKpZIFzwEAAABYaAsdTM3VtWvX/OQnP8krr7yS5557Lvvvv38ee+yxlMvlHHfccTnqqKNy7733ZtasWUuiXgAAAADqiUUOpr6qZ8+eueiiizJp0qT85S9/Sf/+/XPrrbdm7733Trt27eqqRgAAAADqoTpZwbxBgwbZZZddsssuu+TKK6/MPffck5EjR9bFqQEW2eQ/n71U+um058+WSj8AAAD11WKNmKpJkyZNst9+++Wee+6p61MDAAAAUI/UeTAFAAAAAAtDMAUAAABAIQRTAAAAABRCMAUAAABAIQRTAAAAABRCMAUAAABAIVYqugCoL865etxS6eeoq3oulX6A+mXyn89ean112vNnS60vAACWb4IpAABYgQmuYdm1tD6fPpsUyVQ+AAAAAAohmAIAAACgEIIpAAAAAAphjSkAACiI9Z0AWNEZMQUAAABAIQRTAAAAABRCMAUAAABAIQRTAAAAABTC4ucA9dQ5V49bKv0cdVXPpdIPAABQ/wimlnN+8QQAAACWV4IpAAAA+B+T/3z2Uumn054/Wyr9wLLKGlMAAAAAFEIwBQAAAEAhTOUD6pQhzwAAACwsI6YAAAAAKIRgCgAAAIBCmMoHACwVS2uqb2K6LwDA8kIwBQDACumcq8cttb6OuqrnUusLAJYngikAAABgmbW0/pDgjwjFsMYUAAAAAIUwYorFJr0GAAAAasOIKQAAAAAKYcQUAAAAyxSzMmDFYcQUAAAAAIUQTAEAAABQCFP5AFhiDMP/r6X1fUiW/e8FAAB8lWAKYAkQyAAAAHw9U/kAAAAAKIRgCgAAAIBCmMpHvWDaFAAAACx/BFMA1GsWHmdZ45qEZZPP5v/nj77A0iSYAgAACiUUgmWXoJIlTTAFAMBSJ4iAeflcwLJLQLfkWPwcAAAAgEIIpgAAAAAohKl8UI8YXgqwYKbJAAAsW4yYAgAAAKAQgikAAAAACmEqHwDACsaURgBgWWHEFAAAAACFEEwBAAAAUAjBFAAAAACFEEwBAAAAUAjBFAAAAACFEEwBAAAAUAjBFAAAAACFEEwBAAAAUAjBFAAAAACFEEwBAAAAUIhlKpgaM2ZM9tprr6y++uoplUq5++67q7WXy+WcddZZ6dSpU5o2bZpddtklb7zxRjHFAgAAALBYlqlgasaMGenevXuGDRtWY/sFF1yQSy+9NFdeeWWeeeaZNG/ePP3798+sWbOWcqUAAAAALK6Vii7gqwYMGJABAwbU2FYul3PJJZfkJz/5Sb71rW8lSW688cZ06NAhd999d/bff/+lWSoAAAAAi2mZGjG1IG+99Vbef//97LLLLlXbVl111fTq1StPP/10gZUBAAAAUBvL1IipBXn//feTJB06dKi2vUOHDlVtNamoqEhFRUXV8+nTpy+ZAgEAAABYJMvNiKnaGjp0aFZdddWqR+fOnYsuCQAAAIAsR8FUx44dkyRTpkyptn3KlClVbTUZMmRIpk2bVvWYNGnSEq0TAAAAgIWz3ARTXbt2TceOHTNq1KiqbdOnT88zzzyT3r17z/e4xo0bp2XLltUeAAAAABRvmVpj6rPPPsu//vWvqudvvfVWxo8fnzZt2qRLly45+eST84tf/CLrr79+unbtmp/+9KdZffXVs88++xRXNAAAAAC1skwFU3/729+y4447Vj0fPHhwkmTQoEEZMWJEfvzjH2fGjBk56qijMnXq1PTp0ycPPvhgmjRpUlTJAAAAANTSMhVM9evXL+Vyeb7tpVIp5557bs4999ylWBUAAAAAS8Jys8YUAAAAAPWLYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQgimAAAAACiEYAoAAACAQixXwdTZZ5+dUqlU7bHRRhsVXRYAAAAAtbBS0QUsqk033TSPPPJI1fOVVlruXgIAAAAAWQ6DqZVWWikdO3YsugwAAAAAFtNyNZUvSd54442svvrqWWeddXLQQQdl4sSJRZcEAAAAQC0sVyOmevXqlREjRmTDDTfM5MmTc84552T77bfP3//+97Ro0aLGYyoqKlJRUVH1fPr06UurXAAAAAAWYLkKpgYMGFD1dbdu3dKrV6+stdZaue2223LEEUfUeMzQoUNzzjnnLK0SAQAAAFhIy91Uvq9q1apVNthgg/zrX/+a7z5DhgzJtGnTqh6TJk1aihUCAAAAMD/LdTD12WefZcKECenUqdN892ncuHFatmxZ7QEAAABA8ZarYOrUU0/N6NGj8/bbb+epp57Kt7/97TRs2DAHHHBA0aUBAAAAsIiWqzWm3n333RxwwAH5+OOP0759+/Tp0ydjx45N+/btiy4NAAAAgEW0XAVTt9xyS9ElAAAAAFBHlqupfAAAAADUH4IpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIpAAAAAAohmAIAAACgEIIp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Qk9PD3PmzGn3OERERNS1sDBFREREnc7T2/IMDAygUCgwfPhwKJVKhIWFtSh6qFQqREdHY/v27RBCwMfHB0eOHIG1tXWrY0+dOhV9+vSBWq3GtGnTXioeS0tLnD59GqtWrcLWrVvx4MEDuLq64vDhw5gyZcorz/Prr79GdHQ0YmNj8ejRIyQkJLSrMAUAX331Fdzc3LBjxw6sWbMGPXv2hJ2dHebPn4+xY8e+cmzPY2xsjLy8PKxevRqpqamora2Fk5MTdu3ahdDQ0FcaMzAwENHR0di7dy/27NkDIQQLU0RERDpAJrhjJBEREemQpqYmWFtbY+rUqfjmm2+kDoeIiIhIp3GPKSIiItIpBw8exO3btxESEiJ1KEREREQ6jyumiIiISCecPXsWRUVF2LBhA8zMzHDhwgWpQyIiIiLSeVwxRURERDohOTkZERERsLCwwLfffit1OEREREQErpgiIiIiIiIiIiKJcMUUERERERERERFJgoUpIiIiIiIiIiKSBAtTREREREREREQkCRamiIiIiIiIiIhIEixMERERERERERGRJFiYIiIiIiIiIiIiSbAwRUREREREREREkmBhioiIiIiIiIiIJMHCFBERERERERERSeK/dJfxT6dVJr0AAAAASUVORK5CYII=\n"},"metadata":{}}]},{"cell_type":"code","source":["df_july = df\n","grouped_data = df_july.groupby(['ride_day', 'is_weekend'])['duration_minutes'].mean().reset_index()\n","\n","# Set up the plot\n","fig, ax = plt.subplots(figsize=(12, 8))\n","\n","# Define custom RGB colors for weekdays and weekends\n","color_weekday = (0.1, 0.4, 0.8) # Blue for weekday\n","color_weekend = (0.9, 0.4, 0.0) # Orange for weekend\n","\n","# Loop through the grouped data and plot the bars\n","for index, row in grouped_data.iterrows():\n"," day = row['ride_day']\n"," is_weekend = row['is_weekend']\n"," avg_duration = row['duration_minutes']\n","\n"," # Determine the color based on weekend or weekday\n"," color = color_weekend if is_weekend else color_weekday\n","\n"," # Plot the bar for the average duration\n"," ax.bar(day, avg_duration, color=color)\n","\n","# Add labels and title\n","ax.set_xlabel('Day of the Month', fontsize=12)\n","ax.set_ylabel('Average Duration (minutes)', fontsize=12)\n","ax.set_title('Average Ride Duration per Day in July 2024', fontsize=16)\n","\n","# Show the plot\n","plt.tight_layout()\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":807},"id":"LS_inK9ZGXT-","executionInfo":{"status":"ok","timestamp":1724878302699,"user_tz":240,"elapsed":542,"user":{"displayName":"Wangsheng Wu","userId":"00552226409306193312"}},"outputId":"b5fe289d-2c8f-4ca7-a3e7-cac0ecb2bc28"},"execution_count":39,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB4IklEQVR4nOzde9zX8/0/8MenqJRSKR0IOZ9DpkXOh8RYTsOYnM82mo0Yw7ZfY3PYxjCjmLPNYTNsRGIyc8iYw0jkUJGpFBVd798fbl1fl64rdXX1rq7u99vtfZvP+/V6v9/P9/V5fz7telyv9+tdKYqiCAAAAACUqMmiLgAAAACApY9QCgAAAIDSCaUAAAAAKJ1QCgAAAIDSCaUAAAAAKJ1QCgAAAIDSCaUAAAAAKJ1QCgAAAIDSCaUAAAAAKJ1QCoAaevTokUqlkubNm+eDDz5Y1OUsNYYOHZpKpVJjadKkSdq0aZPNNtssgwYNyvvvv1/n9rO3mV/bb799KpVKhg8fvgDVz5vVV199jvNr3bp1Vlllleywww457bTT8uSTTy70OhaF+r4/1G32tfvFpVWrVunSpUu23nrrnHzyyXnooYdSFMWiLvUrlfk5HD58eINfj4cddlgqlUqGDh3aYPuszeTJk3P77bfnyCOPzAYbbJCWLVumRYsWWWONNXLEEUfk+eefn+v2VVVVueqqq9KrV6+0bt06rVu3Tq9evfK73/2u1uukqqoqjz/+eM4555z06dMnK664YpZddtl06NAhu+yyS2688cb5ur7uvffe6p/9zjvvPN/nD9AYLbOoCwBg8fGvf/0r//73v5MkM2fOzA033JDvfe97i7iqpUurVq2y3377JUlmzZqVN998MyNHjsyoUaMyZMiQPProo1l77bUXcZULZuutt85aa62VJPnkk08yceLEPPvssxk+fHguuuiibLfddrn22muzxhprLOJK583222+fRx55JA8//HC23377RV3OUqdHjx7ZdNNNk3z+vfXBBx/kueeey+OPP57LLrssm2yySYYOHZrNNtts0RbKAvvFL36Rn/3sZ0mSddZZJ/369cusWbPy9NNPZ8iQIbnhhhty9dVXZ8CAAXNsO2vWrHzrW9/KHXfckZYtW2annXZKkjz44IM59thj8+CDD+aWW25Jkyb/9zf7119/PVtvvXWSpH379tliiy3Srl27vP7663nwwQert/nTn/6UZs2azbX2Dz/8MEcffXQqlcoSEZQClEUoBUC1a665Jkmy8sor55133sk111wjlCpZhw4d5hht8J///CfbbbddJkyYkFNOOSV//etf59jupZdeKqnCBXfUUUflsMMOq7GuKIrcd999OeWUU/LII49kq622ysiRI9O9e/dFU2QDW5LenyVN//79c+65586x/tFHH60efdenT5888sgj2WKLLcovcB5cf/31+fjjj7Pqqqsu6lIWa61atcrAgQNz3HHH1QjnP/3005x++um55JJLcswxx9QIvmf7zW9+kzvuuCMrr7xyHn300ervljFjxqRPnz65/fbbs+222+akk06q3qZSqWTHHXfMD37wg+yyyy5p2rRpddsjjzySPfbYI/fcc09+/vOf55xzzplr7SeffHImTJiQ4447LldccUVD/DgAGgW37wGQJPn4449z8803J0n+8Ic/ZPnll8/zzz+ff/3rX4u4MjbccMMMHDgwSfLAAw9kxowZc/RZb731st5665VdWoOpVCrZfffd8+STT2bttdfOhAkTctRRRy3qshrMkv7+LIm22WabPProo+nTp08+/vjjfPvb386sWbMWdVm1WnXVVbPeeuulZcuWi7qUxdqgQYNy0UUXzTFadNlll80vf/nLrLPOOpk5c2ZuueWWGu1VVVW54IILkiQXXHBBjbC7e/fu1W2DBw9OVVVVdduaa66ZYcOGZbfddqsRSCXJdtttlzPOOCPJ56Hi3Nx555258cYbM3DgwGy55ZbzedYAjZtQCoAkye23354pU6Zko402yg477JADDjggyf+Nnprt5ZdfTqVSSbt27TJ9+vQ697fFFlukUqnk7rvvrrH+s88+y+9///tsv/32ad++fZo3b57u3bvn+OOPz1tvvTXHfmbPf7L99tvn448/zjnnnJP1118/LVu2zOqrr17d78knn8wPf/jDbLnlluncuXOaNWuWTp06Zc8998yDDz5YZ51FUeTaa6/NFltskZYtW2bFFVdMv3798vjjj9c4dm3efffdDBw4sLqe1q1b52tf+1ouu+yyfPbZZ3Uesz422WSTJJ+PCPjf//43R/vc5oh56623csQRR6RLly5p0aJF1l577Zx11ln55JNPvvK4f/zjH7PbbrulY8eOadasWVZeeeUccsghefHFFxfshOrQtm3bXHrppUmShx56KE8//XSN9q+aC6euuXm+uP7RRx/NnnvumY4dO6ZJkybVI9M++uijXH311dlnn32y9tprp1WrVmnVqlU23njjnHXWWZk0aVKNfc6+Ph555JEkyQ477FBjfqMvjnibW93/+9//cuaZZ2bDDTesvo569uyZCy+8sNb36IvX5aeffpoLLrggG264YZZbbrmsuOKK2Weffeo1MuuLNV599dXp2bNnWrVqlbZt22b33XfPE088Uee2C+tzvaCaNWuWK6+8Mkny6quv5q677qrR/uabb+aCCy7IjjvumFVXXTXNmzdP27Zt06dPn1x11VU1Aookefjhh1OpVLLeeuvVeQvW9OnTs+KKK6ZSqczz56Su6/aLczWNGTMm3/nOd9K5c+c0b948a665Zn70ox/VGlLXV30/X7UZMGBAKpVKBg8eXGef2267LZVKpUGCmiZNmlR/T375mhs5cmTGjx+f5s2bZ999951j23333TfNmjXLu+++m3/+85/zfMzZt4TWdo3PNnHixBx33HFZd911c/7558/zvgGWFkIpAJL8X/h0xBFH1PjfW265pcYvxuutt1569+6dSZMmzfEL3mzPP/98nn766XTq1Cl77LFH9fqPPvoou+yyS44++ug8/fTT2WSTTbLXXnulefPmufLKK7PZZpvl2WefrXWf06dPz/bbb5+LL7443bt3z1577VXjr+VnnnlmLrrookyfPj09e/ZM//79s8oqq+See+7JLrvskl/96le17vfEE0/MkUcemWeffTZbbrlldt1117z11lvZdtttc88999T58xoxYkQ22mijXHLJJZk+fXp22WWXbL311hk9enROPvnk7LHHHvn000/r3H5+TZkyJUnStGnTdOjQYZ63e/nll7PFFltkyJAhqVQq2WuvvbLOOuvkkksuyU477ZSZM2fWut1nn32WAw44IPvvv3+GDx+eddZZJ/3790/Hjh1z4403Zosttsj999/fIOf2Zf369Uv79u2TfD4yrCHdfvvt2X777fP6669n5513zi677JLmzZsnSZ577rkcc8wxeeyxx9K5c+fsueee6dOnT8aNG5f/9//+X772ta/VmPy/c+fOGTBgQDp16pQk6du3bwYMGFC9fPn2odq8/vrr2XzzzTN48OC8//772X333bPjjjvm1Vdfzemnn54+ffrkww8/rHXbTz/9NLvvvnvOP//8rLrqqtljjz3SqlWr3Hnnndlqq63yxhtv1OtnNHDgwBx77LFp2bJlvvnNb6Zbt2657777ss022+TOO++co//C/Fw3hA033LA6PPjy9fSHP/whZ5xxRt54442ss8462WeffbLpppvmX//6V4477rjsv//+NcKnHXbYIRtvvHFeeeWVOsPum2++Of/73/+yww47ZIMNNmiQcxg1alQ23XTTPProo9luu+2y7bbbZty4cfnZz36WAw88sEGO0dBm3/p95ZVX1jlC7fLLL0+SGrfMLYhXX301SdKlS5ca62dffxtuuGFatGgxx3bLLbdcNtxwwxp9F+R4X3T88cdn4sSJueaaa2o9NsBSrwBgqffKK68USYpll122eO+996rXr7feekWS4vrrr6/R/+qrry6SFH379q11f6eeemqRpPj+979fY/23v/3tIknxjW98o5gwYUKNtksuuaRIUqy99trFZ599Vr3+4YcfLpIUSYpNNtmkGDduXK3HvPfee4t33313jvWPP/540aZNm2LZZZct3n777Rptd999d5GkWH755Yt//OMfNdouuuii6uNut912NdrGjRtXrLjiikWlUil++9vfFrNmzapumzhxYrHjjjsWSYrzzjuv1lprM2TIkCJJsdpqq9XaPvtnt8cee9TaPrvWL/va175WJCm+9a1vFZ988kn1+jfffLNYc801q7d7+OGHa2x35plnFkmKXr16Fa+//nqNtttvv71o2rRp0a5du+LDDz+c53NcbbXViiTFkCFDvrLvzjvvXCQpDjnkkHk6z9m22267Ws9n9vokxeWXX17rtm+99Vbx4IMP1ng/i6Iopk2bVhx66KFFkuKEE06Y52POS929evUqkhR77bVXMXXq1Or17733XrH55psXSYpvf/vbNbb54mdis802q/GZ+OSTT4q+ffsWSYpjjjmmznrmVuNyyy1XDBs2rEbbhRdeWCQpVlhhhTk+uwvzcz03s3/uP/7xj7+y71FHHVUkKfr06VNj/ZNPPlk8//zzc/R/5513ih49ehRJittuu61G2+zvv7322qvWY/Xs2bNIUvzpT3+a73P58jU0YMCA6p/TWWedVeNn+PzzzxetWrUqkhSPP/74PB/riz/7L6vv52t2nV/+bG+99dZFkuKOO+6YY1/PP/98kaTo2LFjMX369Hmuvy733XdfkaSoVCrFc889V6Nt4MCBRZKif//+dW6/1157FUmK0047bZ6ON23atKJ79+5FkmLgwIG19rn55puLJMX3vve96nWzv+t32mmneToOQGMnlAKgOP3004skxb777ltj/exfRL8cykyZMqVo2bJl0aRJkzmCnpkzZxYdO3YskhQvvPBC9foXX3yxqFQqRdeuXYspU6bUWsfuu+9eJCn+8pe/VK/74i9QI0aMqNf5DRo0qNYwYnZ4NGjQoFq3mx3ofPn8Z/+8TjrppFq3e/vtt4tll1226NixY1FVVTVPNdYWSn322WfF6NGjq4+32mqrFaNHj651+9p+mXzssceKJEWrVq2KiRMnzrHNnXfeWWso9cEHHxTLLbdc0aJFizne39lOOOGEIknxm9/8Zp7OryjmL5Q68MADiyRFv379aqxf0FBqxx13nOd6v2jatGnFMsssU3Ts2HGej/lVdT/66KNFkqJly5bF+PHj59jmqaeeKpIUTZo0Kd56663q9bM/E5VKpRg1atQc2z3xxBNFkmKNNdaYjzP8vxpPOeWUWtu32GKLIknxs5/9rHrdovxcz08odcYZZxRJivXXX3+e9/+3v/2tSFLsv//+NdZ//PHHxYorrlg0adKkeOONN2q0jRw5skhSdOvWrUaA9FW+Kuzp2bNnrd8lxx13XJGkOP/88+f5WGWGUrfddludAcyxxx471+/f+fHOO+8UXbt2rTOMPfroo4skxcEHH1znPmaHq/Ma5s4+565du9b6/Tpu3Liiffv2xZprrllMmzater1QCqAmt+8BLOU+++yzXHfddUn+75a92Q499NAss8wyGTFiREaPHl29vnXr1tlvv/1SVVU1xwSvf/3rX/P+++9nyy23rL4dIknuvffeFEWRfv36pXXr1rXWMnvupscff3yOtpVWWinbbLPNXM/lgw8+yPXXX58f/vCHOfroo3PYYYflsMMOq57z55VXXqlx3rOPc/DBB9e6v29/+9u1rp/99LvZ82592corr5y1114777//fvXtHfPqzTffrJ7XZZlllsmaa66ZCy64IFtuuWWee+65rLHGGvO8r9nzvuy2225ZccUV52j/5je/mRVWWGGO9Q8//HA++eSTbL311ll55ZVr3ffc3quGMHsun7nNb1Mf++2331f2efzxx3PBBRfkxBNPzOGHH57DDjssJ5xwQpo1a5b333+/ztvp5tcX35/ZtwB+Uc+ePdOjR49UVVVVX8NftOqqq6ZHjx5zrF9//fWTJO+880696howYECt6w899NAadSflfK4bwtyupxkzZuQvf/lLzjnnnBx33HHV7/lVV12VpOb3RvL5rV7HHHNMqqqq5niK2uzb0Y477rg5JsZeEN/4xjdqrX1B3+uFbe+99063bt0ybNiwvPzyy9XrJ0+enBtuuCFNmzbN8ccfv0DHmDJlSr7xjW/k3XffzZZbblnnrdoN6Sc/+Umuu+66tGjRIrfddlut36/HHHNMPvzww/z+9783gT3AXCyzqAsAYNH661//mvHjx2fllVdO3759a7R16tQpu+++e/785z/n2muvzc9+9rPqtiOOOCLXX399hg4dmkGDBlWvHzJkSJLk8MMPr7Gv119/Pcnnc1d9efL0L3v//ffnWPdVkx9fffXVOfXUUzNt2rQ6+8yelyn5fPLZ2RO117XvutbPPpd5+WX6/fffzzrrrPOV/WZr1apVdXAyY8aMvPTSS3nuuefy5JNP5thjj53jqVJz8/bbbydJjSdNfVGlUsnqq6+e5557rsb62ec3bNiwrwyFanuvGsLEiROTpHpuqYYyt+vovffey7777pvHHntsrvuYMmVK2rVrt8C1zA4S6np/ks+f/vXcc8/VGjqsuuqqtW7Tpk2bJKn3BNh11TN7/ezrKln4n+uGUtf19MQTT+SAAw7I2LFj69z2i98bs51wwgn5xS9+kWuuuSbnnntuWrRokffffz+33357mjdvnqOPPrpB6/+q93puD51YlJZZZpmccMIJGTRoUC677LJcdtllSZLrrrsu06ZNqw6t6mvq1Knp169fnn322Wy22Wa5//77a523aXZgOrd/H6ZOnZrk/36mdbn44otzzjnnpHnz5rnzzjuz9dZbz9Hnuuuuy1/+8pccf/zxdT4oA4DPCaUAlnKzf5GcPn16tttuuznaZ/8yPHTo0Jx//vnVf/3fdttts+aaa+a///1vHn/88Wy11VZ57733cu+996ZFixZzTL47e6TCpptuWuvoji/q1avXHOuWW265Ovs//fTTOfbYY9O0adNccMEF2XPPPbPqqqumZcuWqVQq+d3vfpdjjz22zqdl1aWuQGb2uey3335p1arVXPdR21/Q56ZDhw41ntqWJHfccUcOOOCA3Hrrrdl2221zwgknzNc+59fs81trrbVq/YXri9Zbb70GP35RFNWTDW+88cbzte2Xn5b2ZXO7jo466qg89thj6d27d84777z06NEj7dq1y7LLLpsk6dq1a8aNGzff19HC0qTJohnw/sXzX5if64b0zDPPJKl5PX388cfp379/JkyYkMMPPzzHH3981lprrbRp0yZNmzbNf//736y77rq1vt+rrLJK9tlnn9x222259dZbM2DAgPz+97/PjBkz8p3vfCcdO3Zs0PoX1Xv9ZV/1+arN0UcfnfPPPz/XX399Bg8enOWXXz6//e1vkyzYBOfTpk3LHnvskccffzybbLJJHnjggTrD4tnh59zCx9lP0JtbUPqb3/wm3//+99OsWbP86U9/ym677VZrv9kPBPjXv/41Ryg1fvz4JJ//uzW77ZZbbknnzp3rPC5AYyaUAliKjRs3Lvfee2+Sz299+8c//lFn33fffTf3339/9dP0KpVKDjvssJx99tkZMmRIttpqq9xwww357LPP8q1vfStt27atsf3sv4ZvvfXW1X8tbyi33357iqLIySefnB/+8IdztNd2C92KK66Y5s2bZ8aMGXnzzTdrfUpWXU8v69atW/XT0bbYYosFrv+r7LPPPjnjjDPy05/+NOecc04OPvjgWm+7+7LZt97N7Slsb7755hzrZr9X66677hwBWRnuvffe6lvkdt111xptyy67bD799NN89NFHtd4uVtv5zItp06bl3nvvTZMmTXLvvffOcf1Omzat+pfJhjL7/Zk92qg2s9vquo1yYRgzZkw23XTTOdbPvo5WWWWV6nUL83PdUP7zn/9k1KhRSWpeTyNGjMiECROy+eab59prr51ju6+69fa73/1ubrvttlx++eU55JBDcuWVVyZpuCfJLQoL4/O14oor5uCDD87vf//7XH/99VlnnXXyyiuvZIMNNsiOO+5Yrzo//vjj7LHHHhkxYkQ22WSTDBs2bK5/ANh8882TfH4tTJ8+fY7RVJ988kn+85//1Oj7ZZdffnm++93vVgdSX3yybF2eeuqpOtsmTZpUfVvu4jrSDaAMi8efXQBYJIYOHZpZs2alV69eKT5/+EWty+yg58u35xx22GFp0qRJbrvttnz88cd13rqXJP369UuS/PnPf27w/wP+v//9L0my2mqrzdE2ffr0/OlPf5pj/bLLLpvevXsnSW666aZa93vzzTfXun72udx22231qrc+Bg0alC5duuSDDz7IxRdfPE/bzB75dv/991f/jL7oz3/+cyZNmjTH+p122inNmjXL8OHD89577y1Q3fNr8uTJOfXUU5Mku+yyyxzhyOxw5qWXXppj23//+9/Vox3qc9xZs2alTZs2cwRSSXLDDTfUOUKqWbNmST6fp2x+zB4lcf/992fChAlztD/77LMZNWpUmjRpkm233Xa+9r0g/vCHP8x1/RdHfizMz3VDmDlzZo477rgkn4/q22uvvarbZn8m6ro17oYbbpjrvrfeeuv07Nkz//rXv/KjH/0oY8eOzde+9rVsueWWDVR9+RbW5+u73/1uks+Dndnh5YknnlivfX3yySf5xje+kUceeaQ6kOrQocNct+ndu3c6d+6cGTNm1PrvwZ/+9KfMnDkzXbt2rXVE35VXXpmTTjqpOpD6xje+Mdfj3XXXXXX+ezr738mddtqpel1Zt7ECLI6EUgBLsdmjA+qa2Hi22RMc33PPPTXmhVlllVWyyy67ZMqUKTnzzDPzwgsvZNVVV631r9+bbbZZ9t1337z11lvZZ599ah29M23atNx44421/oI+N7Mn+73uuuvy0UcfVa+fPn16TjjhhIwZM6bW7Wb/ovTrX/86TzzxRI22X/3qV/nnP/9Z63Y/+MEP0rZt21x88cW56KKLMnPmzDn6jBkz5it/qZ0fLVu2zNlnn50kufTSS+dpsu1tttkmm2++eaZOnZoTTzyxxhxDb731Vk477bRat+vUqVNOPvnkTJs2LXvuuWeef/75OfrMmDEjf/7zn2tMXrwgiqLIfffdly233DKvvvpqunTpkquvvnqOfjvvvHOS5LzzzqtxPm+88UYGDBhQ71vrOnXqlHbt2mXSpElzhDJPPPFEjXnTvmz2yKHZIy3mVZ8+fdKrV6988sknOfbYY/Pxxx9Xt02cODHHHntskuTAAw9coHl35tcVV1xRYzLzJLnkkkvy5JNPpnXr1jnyyCOr1y/Mz/WC+sc//pFtttkmjz32WJZffvnceOONNW6Dm/29MWzYsLz44os1tv3d736XW2+99SuP8b3vfS9J8vOf/zzJkj1KKll4n6+NN944O+64Y1566aX8+c9/Tps2bar/XZkf06dPz1577ZWHH354ngOp5PPbH08//fQkyemnn17j34QxY8bkjDPOSPJ5+P/lWyWvvvrq6gcdzEsgBcD8cfsewFLqkUceyWuvvZbmzZvPMf/Tl2244YbZfPPN88wzz+T666/P97///eq2ww8/PH/729+qn3g0e/RUbYYMGZJJkyblvvvuy7rrrpsePXqke/fuKYoib7zxRp577rnMnDkzL730Uq1PI6vL4Ycfnl/96ld59tln071792yzzTZp2rRpHn300XzyySf53ve+V+sTmfbee+8cc8wx+d3vfpc+ffpkm222SZcuXfL888/npZdeyqmnnppLLrmkeiTMbKusskruvvvu7LvvvjnttNNy4YUXZqONNkqXLl0yefLkvPTSSxk9enR69eqVQw45ZJ7P46scddRRueiiizJ69Oj88pe/rDHxfF3+8Ic/ZPvtt88tt9ySESNGpE+fPvn444/z0EMPZZNNNkmHDh0ycuTIObb7+c9/nnHjxuWmm26qni9ojTXWyDLLLJO33347o0aNyrRp03LffffN97xSv//976tDjxkzZmTixIl55plnqkeubL/99rn22mtrHfl25pln5o9//GPuvfferLPOOvna176W999/P//617+y9dZbZ6uttqrXEwGbNm2ac845J6eeemoOPfTQXH755VljjTUyduzYPP744znkkEMyYsSIWm9f2nfffTNkyJD88Ic/zIMPPpiVVloplUolRxxxRLbaaqu5Hvemm27KjjvumLvvvjvdu3fPtttum08//TQPP/xwpkyZks0337z02+KOPfbY7Ljjjtlmm22y8sor54UXXsjzzz+fpk2b5tprr51j7puF9bmeV3fddVd1GPbpp5/mf//7X0aNGlV9u2WPHj0ydOjQOUbdbbbZZvnmN7+Zu+++O5tttlm23377tG/fPqNGjcorr7ySM8888ys/YwcccEB+8IMfZMKECenYsWOdT+RcHNU2Z97C+nwln/8R4KGHHkry+R9Cll9++fnex5lnnpkHH3wwyecj3OoK1vv06ZOjjjqqxrqTTz45I0aMyJ133pmNNtqoOoB78MEH8/HHH2e//fabY76+UaNGVc9HuMYaa+SPf/xj/vjHP9Z6zEVxqzNAo1AAsFT6zne+UyQp9ttvv3nqf+mllxZJivXXX7/G+unTpxft27cvkhSVSqV4/fXX57qfWbNmFTfddFOx++67F506dSqWXXbZYsUVVyw22mij4vDDDy/uvPPOYubMmdX9H3744SJJsd122811v++//35xwgknFGuuuWbRvHnzomvXrsUhhxxSvPrqq8WQIUOKJMWAAQPm2K6qqqq4+uqri80337xo0aJF0bZt22LXXXctRowYUVx//fVFkuKggw6q9ZgTJkwozj777GLzzTcvWrduXTRr1qxYZZVViq222qr48Y9/XPz73/+ea81fNLvG1VZbba79br755iJJ0bp162LixInV65MUdf2z/uabbxaHHXZY0alTp6JZs2bFGmusUZx++unFtGnTiu22265IUjz88MO1bnvvvfcW++yzT7HyyisXyy67bNG2bdti/fXXLw488MDipptuKqZNmzbP57jaaqtV1zl7adWqVdG1a9diu+22K77//e8XTz755Ffu58UXXyz22Wefol27dkXz5s2Lddddt/jpT39azJw5s87z+arznO2uu+4qttpqq6Jt27bF8ssvX2yxxRbFb3/726Kqqqq6/jFjxsyx3exrqGXLltXnNmTIkOr2ub0/H3zwQTFo0KBi/fXXL1q0aFG0bNmy2GyzzYqf//znxccffzxH/3n5TMztePOyzRVXXFFsuummxXLLLVe0adOm2G233Yp//OMfdW67sD7XczP7Pf3istxyyxWdO3cuevfuXZx00knFsGHDiqqqqjr3MXPmzOIXv/hFsfHGGxctW7Ys2rdvX+y6667F3//+92LMmDHz9Jk84IADiiTFoEGDFvhcvnx9DhgwYI5r6Yvm9t1Wl3vvvbdIUiy//PK1ttfn8/VVdRZFUXz00UdF06ZNi0qlUrz88svzXG9tx/mqpa6fx6xZs4orr7yy2GKLLYpWrVoVrVq1Kr72ta8VV155Za3XyezrdF6WeTX7Pdtpp53q9TMAaGwqRbGYPEIGABYzRxxxRIYMGZKLLrooAwcOXNTlwEI1e+SM/2s47yZNmpRVVlkl06dPz5gxY0q9zbK+fvOb3+S73/1uNt544/z73/8u7bi///3vc/TRR2fXXXfN3/72t9KOC8DizZxSACzV/vOf/2TatGk11lVVVeXqq6/O0KFD06JFixx00EGLqDpgcTZ48OBMmzYt3/rWt5aIQGrSpEnVcwl++cmWC9O0adMyePDgJKlx+zcAGCkFwFLtsMMOy2233ZbNNtssK6+8cqZNm5YXX3wxb7zxRpo2bZqrr7661qcJQmNjpNS8efzxx3PttddmzJgxeeihh9KyZcs8//zzWWONNRZ1aXW66aabcvvtt2fkyJGZMGFCOnXqlOeee26hzPH1Rb/4xS/ywgsv5LHHHsvrr7+e3XbbLffdd99CPSYASxYTnQOwVDvggAMyZcqUPP300xk1alQ+++yzrLTSSjnggANyyimn5Otf//qiLhFYjPz3v//NNddck+WWWy5f//rXc8EFFyzWgVSSPPnkk7nnnnvSuXPnHH744fnxj3+80AOpJPnrX/+aRx55JB06dMhhhx2Wiy++eKEfE4Ali5FSAAAAAJTOnFIAAAAAlE4oBQAAAEDpzCk1D6qqqvLuu++mdevW1ZOAAgAAADCnoijy0UcfpWvXrmnSpO7xUEKpefDuu+8uEY/5BQAAAFhcvPXWW1lllVXqbBdKzYPWrVsn+fyH2aZNm0VcDQAAAMDia8qUKenWrVt1nlIXodQ8mH3LXps2bYRSAAAAAPPgq6ZAMtE5AAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKVbZlEXAEujlY99upTjvHNVz1KOAwAAAPPLSCkAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASrdYhVIjRozInnvuma5du6ZSqeSuu+6q0V6pVGpdfvGLX9S5z3PPPXeO/uutt95CPhMAAAAA5maxCqWmTZuWHj165PLLL6+1fdy4cTWWa6+9NpVKJfvuu+9c97vhhhvW2O6xxx5bGOUDAAAAMI+WWdQFfFG/fv3Sr1+/Ots7d+5c4/Xdd9+dHXbYIWusscZc97vMMsvMsS0AAAAAi85iNVJqfkyYMCF//etfc+SRR35l31dffTVdu3bNGmuskYMPPjhjx46da/8ZM2ZkypQpNRYAAAAAGs4SG0pdd911ad26dfbZZ5+59uvVq1eGDh2a+++/P1dccUXGjBmTbbbZJh999FGd2wwePDgrrLBC9dKtW7eGLh8AAABgqbbEhlLXXnttDj744LRo0WKu/fr165f9998/m2yySfr27Zt77703kyZNym233VbnNoMGDcrkyZOrl7feequhywcAAABYqi1Wc0rNq0cffTSvvPJKbr311vnetm3btllnnXXy2muv1dmnefPmad68+YKUCAAAAMBcLJEjpa655pr07NkzPXr0mO9tp06dmtGjR6dLly4LoTIAAAAA5sViFUpNnTo1o0aNyqhRo5IkY8aMyahRo2pMTD5lypTcfvvtOeqoo2rdx0477ZTLLrus+vVpp52WRx55JG+88UYef/zx7L333mnatGkOOuighXouAAAAANRtsbp976mnnsoOO+xQ/XrgwIFJkgEDBmTo0KFJkltuuSVFUdQZKo0ePToTJ06sfv3222/noIMOygcffJCOHTumT58+eeKJJ9KxY8eFdyIAAAAAzFWlKIpiURexuJsyZUpWWGGFTJ48OW3atFnU5dAIrHzs06Uc552repZyHAAAAJhtXnOUxer2PQAAAACWDkIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdMss6gIAgEVv3LGVUo7T5aqilOMAALD4M1IKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIJpQAAAAAonVAKAAAAgNIts6gLAAAAFi/jjq2UcpwuVxWlHAeAxZORUgAAAACUzkgpAAAAWIwZvUhjZaQUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQumUWdQEAAACwuBp3bKWU43S5qijlOLA4MVIKAAAAgNIJpQAAAAAonVAKAAAAgNKZUwpYapkfAAAAYNERSgEAwGLGH04AWBq4fQ8AAACA0gmlAAAAACidUAoAAACA0gmlAAAAACidUAoAAACA0nn6HrDIeLIQAADA0stIKQAAAABKJ5QCAAAAoHSLVSg1YsSI7LnnnunatWsqlUruuuuuGu2HHXZYKpVKjWW33Xb7yv1efvnlWX311dOiRYv06tUrTz755EI6AwAAAADmxWIVSk2bNi09evTI5ZdfXmef3XbbLePGjatebr755rnu89Zbb83AgQPz4x//OM8880x69OiRvn375r333mvo8gEAAACYR4vVROf9+vVLv3795tqnefPm6dy58zzv8+KLL87RRx+dww8/PEly5ZVX5q9//WuuvfbanHHGGQtULwAAAAD1s1iNlJoXw4cPz0orrZR11103xx9/fD744IM6+86cOTNPP/10dt555+p1TZo0yc4775yRI0fWud2MGTMyZcqUGgsAAAAADWeJCqV22223XH/99Rk2bFguuOCCPPLII+nXr19mzZpVa/+JEydm1qxZ6dSpU431nTp1yvjx4+s8zuDBg7PCCitUL926dWvQ8wAAAABY2i1Wt+99lQMPPLD6vzfeeONssskmWXPNNTN8+PDstNNODXacQYMGZeDAgdWvp0yZIpgCgIVs3LGVUo7T5aqilOMAADB3S9RIqS9bY4010qFDh7z22mu1tnfo0CFNmzbNhAkTaqyfMGHCXOelat68edq0aVNjAQAAAKDhLNGh1Ntvv50PPvggXbp0qbW9WbNm6dmzZ4YNG1a9rqqqKsOGDUvv3r3LKhMAAACAL1msQqmpU6dm1KhRGTVqVJJkzJgxGTVqVMaOHZupU6fmBz/4QZ544om88cYbGTZsWL75zW9mrbXWSt++fav3sdNOO+Wyyy6rfj1w4MBcffXVue666/LSSy/l+OOPz7Rp06qfxgcAAABA+RarOaWeeuqp7LDDDtWvZ8/rNGDAgFxxxRX597//neuuuy6TJk1K165ds+uuu+YnP/lJmjdvXr3N6NGjM3HixOrXBxxwQN5///2cc845GT9+fDbddNPcf//9c0x+DgAAAEB5FqtQavvtt09R1D356N/+9rev3Mcbb7wxx7qTTjopJ5100oKUBgAAAEADWqxu3wMAAABg6SCUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0QikAAAAASieUAgAAAKB0yyzqAgAAYHGy8rFPl3Kcd67qWcpxAGBxJZRiqeT/bAIAAMCiJZRayghjAAAAgMWBOaUAAAAAKJ1QCgAAAIDSCaUAAAAAKJ1QCgAAAIDSmegcYBHy8AEAAGBpJZQCWIqVFYolgjEAAKAmt+8BAAAAUDojpQAAAFgsGdUNjZuRUgAAAACUTigFAAAAQOmEUgAAAACUTigFAAAAQOlMdA5LqbImjTRhJAAAALUxUgoAAACA0hkpBcBSz8hBAAAon5FSAAAAAJROKAUAAABA6YRSAAAAAJTOnFIAsIiZ0woAgKWRUIrS+eULAAAAcPseAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKVbZlEXAMDSbeVjny7lOO9c1bOU4wAAAPPGSCkAAAAASieUAgAAAKB0bt8DAAAAFmumfGicjJQCAAAAoHRGSgEAAFAro1OAhclIKQAAAABKJ5QCAAAAoHRCKQAAAABKJ5QCAAAAoHRCKQAAAABKJ5QCAAAAoHRCKQAAAABKt8yiLgAAYHGw8rFPl3Kcd67qWcpxAAAWd0IpAAAWG8JBAFh6uH0PAAAAgNItVqHUiBEjsueee6Zr166pVCq56667qts+/fTTnH766dl4443TqlWrdO3aNYceemjefffdue7z3HPPTaVSqbGst956C/lMAAAAAJibxSqUmjZtWnr06JHLL798jraPP/44zzzzTM4+++w888wzueOOO/LKK69kr732+sr9brjhhhk3blz18thjjy2M8gEAAACYR4vVnFL9+vVLv379am1bYYUV8sADD9RYd9lll2XLLbfM2LFjs+qqq9a532WWWSadO3du0FoBAABgaWC+PxaWxWqk1PyaPHlyKpVK2rZtO9d+r776arp27Zo11lgjBx98cMaOHVtOgQAAAADUarEaKTU/pk+fntNPPz0HHXRQ2rRpU2e/Xr16ZejQoVl33XUzbty4nHfeedlmm23ywgsvpHXr1rVuM2PGjMyYMaP69ZQpUxq8fgAAoG5GZvgZAI3fEhlKffrpp/nWt76VoihyxRVXzLXvF28H3GSTTdKrV6+sttpque2223LkkUfWus3gwYNz3nnnNWjNAAAAAPyfJS6Umh1Ivfnmm3nooYfmOkqqNm3bts0666yT1157rc4+gwYNysCBA6tfT5kyJd26dat3zQAAwJKlrFFKiZFKwNJriZpTanYg9eqrr+bBBx/MiiuuON/7mDp1akaPHp0uXbrU2ad58+Zp06ZNjQUAAACAhlOvkVLPPfdc/vGPf+TFF1/MxIkTU6lU0qFDh6y//vrZaqutsummm9armKlTp9YYwTRmzJiMGjUq7du3T5cuXbLffvvlmWeeyT333JNZs2Zl/PjxSZL27dunWbNmSZKddtope++9d0466aQkyWmnnZY999wzq622Wt599938+Mc/TtOmTXPQQQfVq0YAAAAAFtw8h1Lvvfdefvvb3+b666/Pm2++maIo0qxZs7Rr1y5FUWTSpEmZOXNmKpVKVl111QwYMCDHH398OnXqNM/FPPXUU9lhhx2qX8++hW7AgAE599xz8+c//zlJ5gi9Hn744Wy//fZJktGjR2fixInVbW+//XYOOuigfPDBB+nYsWP69OmTJ554Ih07dpznugAAAABoWPMUSp1++um5/PLL06ZNm+y3337ZZZdd0rNnz3Tt2rVGv3fffTdPP/10/v73v+fqq6/OL3/5y5x88skZPHjwPBWz/fbbpyiKOtvn1jbbG2+8UeP1LbfcMk/HBgAAAKiLJ2I2vHkKpUaMGJEbbrgh3/zmN1OpVOrs17Vr13Tt2jV77rlnfv3rX+fuu+/OhRde2GDFAgAAANA4zFMoNXLkyPnecaVSSf/+/dO/f//53hYAYGnkL7AAwNJkiXr6HgAAAACNQ71CqbFjx+axxx6rse65557LoYcemgMOOCB33XVXQ9QGAAAAQCM1z0/f+6Lvfve7mTp1ah588MEkyYQJE7LDDjtk5syZad26df74xz/m9ttvzz777NOgxQIAAADQONRrpNSTTz6ZXXbZpfr19ddfn08++STPPfdc3nnnney000755S9/2WBFAgAAANC41CuU+t///peVVlqp+vU999yT7bbbLmuuuWaaNGmSffbZJy+//HKDFQkAAABA41KvUKpjx4558803kySTJk3KE088kb59+1a3f/bZZ/nss88apkIAAAAAGp16zSm1884759e//nXatGmT4cOHp6qqKv37969uf/HFF9OtW7eGqhEAAACARqZeodTPf/7z/Pe//81pp52WZs2a5Ze//GW6d++eJJkxY0Zuu+22fPvb327QQgEAAABoPOoVSnXq1Cn/+Mc/Mnny5Cy33HJp1qxZdVtVVVWGDRtmpBQAAAAAdapXKDXbCiusMMe65ZZbLj169FiQ3QIAAADQyNVrovMkGTt2bI477risu+66adeuXUaMGJEkmThxYr773e/m2WefbbAiAQAAAGhc6jVS6sUXX8w222yTqqqq9OrVK6+99lr10/Y6dOiQxx57LNOmTcs111zToMUCAAAA0DjUK5T64Q9/mLZt2+aJJ55IpVLJSiutVKN9jz32yK233togBQIAAADQ+NTr9r0RI0bk+OOPT8eOHVOpVOZoX3XVVfPOO+8scHEAAAAANE71CqWqqqrSsmXLOtvff//9NG/evN5FAQAAANC41ev2vc033zx//etfc8IJJ8zR9tlnn+WWW27J17/+9QUuDgCAcq187NOlHOedq3qWchwAYPFVr5FSgwYNyv3335/jjz8+L7zwQpJkwoQJefDBB7PrrrvmpZdeyhlnnNGghQIAAADQeNRrpFS/fv0ydOjQfO9738vvfve7JMkhhxySoijSpk2bXH/99dl2220btFAAAAAAGo96hVJJ8p3vfCf77LNPHnjggbz66qupqqrKmmuumb59+6Z169YNWSMAAAAAjUy9QqkRI0Zk/fXXT8eOHdO/f/852idOnJgXX3zRaCkAAAAAalWvOaV22GGHPPDAA3W2Dxs2LDvssEO9iwIAAACgcatXKFUUxVzbZ8yYkaZNm9arIAAAAAAav3m+fW/s2LF54403ql+//PLLGTFixBz9Jk2alKuuuiqrrbZagxQIAAAAQOMzz6HUkCFDct5556VSqaRSqeRnP/tZfvazn83RryiKNG3aNFdddVWDFgoAAABA4zHPodS3vvWtbLTRRimKIt/61rfy3e9+N9tss02NPpVKJa1atcqmm26aTp06NXixAAAAADQO8xxKrb/++ll//fWTfD5qatttt0337t0XWmEAAAAANF7zHEp90YABAxq6DgAAAACWIvUKpY444oiv7FOpVHLNNdfUZ/cAAAAANHL1CqUeeuihVCqVGutmzZqVcePGZdasWenYsWNatWrVIAUCAAAA0PjUK5R64403al3/6aef5qqrrsqll16aBx54YEHqAgAAAKARa9KQO1t22WVz0kknZdddd81JJ53UkLsGAAAAoBFp0FBqth49emTEiBELY9cAAAAANAILJZR64IEH0rJly4WxawAAAAAagXrNKXX++efXun7SpEkZMWJEnnnmmZxxxhkLVBgAAAAAjVe9Qqlzzz231vXt2rXLmmuumSuvvDJHH330gtQFAAAAQCNWr1CqqqqqoesAAAAAYCmyUOaUAgAAAIC5qddIqdk++uijvPnmm/nwww9TFMUc7dtuu+2C7B4AAACARqpeodQHH3yQk046KX/6058ya9asOdqLokilUqm1DQAAAADqFUodffTR+ctf/pLvfve72WabbdKuXbuGrgsAAACARqxeodTf//73nHrqqbnwwgsbuh4AAAAAlgL1mui8ZcuWWX311Ru4FAAAAACWFvUKpQ455JDceeedDV0LAAAAAEuJet2+t99+++WRRx7JbrvtlmOOOSbdunVL06ZN5+i3+eabL3CBAAAAADQ+9Qql+vTpU/3fDzzwwBztnr4HAAAAwNzUK5QaMmRIQ9cBAAAAwFKkXqHUgAEDGroOAAAAAJYi9ZroHAAAAAAWxDyNlDriiCNSqVTyu9/9Lk2bNs0RRxzxldtUKpVcc801C1wgAAAAAI3PPIVSDz30UJo0aZKqqqo0bdo0Dz30UCqVyly3+ap2AAAAAJZe8xRKvfHGG3N9DQAAAADzw5xSAAAAAJSuXk/f+6KqqqpMnjw5RVHM0da+ffsF3T0AAAAAjVC9QqlPP/00F1xwQa699tq89dZbqaqqqrXfrFmzFqg4AAAAABqneoVSxx57bK677rp8/etfT//+/bPCCis0dF0AAAAANGL1CqVuv/32fOc738nQoUMbuBwAAAAAlgb1mui8ZcuW+frXv97QtQAAAACwlKhXKHXQQQflnnvuaehaAAAAAFhK1Ov2vQsvvDBHHHFEvvGNb+SII45It27d0rRp0zn6bb755gtcIAAAAACNT71CqRkzZqSqqir33Xdf7rvvvjnai6JIpVLx9D0AAAAAalWvUOqII47InXfemQMPPDC9evXy9D0AAAAA5ku9Qqm//e1vOfnkk3PJJZc0dD0AAAAALAXqNdF5mzZtstZaazV0LQAAAAAsJeoVSh199NG5+eabzRkFAAAAQL3U6/a9DTbYIHfffXc233zzDBgwoM6n7+2zzz4LXCAAAAAAjU+9QqkDDjig+r9PO+20Wvt4+h4AAAAAdalXKPXwww83dB0AAAAALEXqFUptt912DV0HAAAAAEuRek10DgAAAAALYp5Cqb59+2bEiBHzvfOHH344ffv2ne/tAAAAAGjc5imUWnPNNbPLLrtk/fXXz7nnnptHH300U6dOnaPfRx99lOHDh+dHP/pR1l133fTr1y9rrbVWgxcNAAAAwJJtnuaU+u1vf5sf/OAH+dWvfpXf/va3+clPfpJKpZL27dunXbt2KYoiH374YT788MMURZH27dvn4IMPzve+97107959YZ8DAAAAAEuYeZ7ovHv37rn00kvzy1/+Mo8++mhGjhyZl19+OR988EGSZMUVV8x6662X3r17p0+fPll22WUXWtEAAAAALNnm++l7yyyzTHbYYYfssMMOC6MeAAAAAJYCnr4HAAAAQOmEUgAAAACUTigFAAAAQOmEUgAAAACUTigFAAAAQOmEUgAAAACUboFCqY8++igvvPBCHn300YwYMWKOZX6NGDEie+65Z7p27ZpKpZK77rqrRntRFDnnnHPSpUuXLLfcctl5553z6quvfuV+L7/88qy++upp0aJFevXqlSeffHK+awMAAACg4SxTn40++OCDnHTSSfnTn/6UWbNmzdFeFEUqlUqtbXMzbdq09OjRI0cccUT22WefOdovvPDC/PrXv851112X7t275+yzz07fvn3z4osvpkWLFrXu89Zbb83AgQNz5ZVXplevXrn00kvTt2/fvPLKK1lppZXmqz4AAAAAGka9Qqmjjz46f/nLX/Ld734322yzTdq1a9cgxfTr1y/9+vWrta0oilx66aX50Y9+lG9+85tJkuuvvz6dOnXKXXfdlQMPPLDW7S6++OIcffTROfzww5MkV155Zf7617/m2muvzRlnnNEgdQMAAAAwf+oVSv3973/PqaeemgsvvLCh66nTmDFjMn78+Oy8887V61ZYYYX06tUrI0eOrDWUmjlzZp5++ukMGjSoel2TJk2y8847Z+TIkaXUDQAAAMCc6hVKtWzZMquvvnoDlzJ348ePT5J06tSpxvpOnTpVt33ZxIkTM2vWrFq3efnll+s81owZMzJjxozq11OmTKlv2QAAAADUol4TnR9yyCG58847G7qWxcbgwYOzwgorVC/dunVb1CUBAAAANCr1Gim133775ZFHHsluu+2WY445Jt26dUvTpk3n6Lf55psvcIGzde7cOUkyYcKEdOnSpXr9hAkTsummm9a6TYcOHdK0adNMmDChxvoJEyZU7682gwYNysCBA6tfT5kyRTAFAAAA0IDqFUr16dOn+r8feOCBOdrr+/S9uenevXs6d+6cYcOGVYdQU6ZMyT//+c8cf/zxtW7TrFmz9OzZM8OGDUv//v2TJFVVVRk2bFhOOumkOo/VvHnzNG/evMFqBwAAAKCmeoVSQ4YMaeg6kiRTp07Na6+9Vv16zJgxGTVqVNq3b59VV101p5xySn76059m7bXXTvfu3XP22Wena9eu1YFTkuy0007Ze++9q0OngQMHZsCAAdliiy2y5ZZb5tJLL820adOqn8YHAAAAQPnqFUoNGDCgoetIkjz11FPZYYcdql/PvoVuwIABGTp0aH74wx9m2rRpOeaYYzJp0qT06dMn999/f1q0aFG9zejRozNx4sTq1wcccEDef//9nHPOORk/fnw23XTT3H///XNMfg4AAABAeeoVSn3R1KlT89ZbbyVJunXrluWXX77e+9p+++1TFEWd7ZVKJeeff37OP//8Ovu88cYbc6w76aST5nq7HgAAAADlqtfT95LkX//6V3bYYYe0a9cuG220UTbaaKO0a9cuO+64Y5566qmGrBEAAACARqZeI6X++c9/Zvvtt0+zZs1y1FFHZf3110+SvPTSS7n55puz7bbbZvjw4dlyyy0btFgAAAAAGod6hVJnnXVWVl555Tz22GPp3LlzjbZzzz03W2+9dc4666xan8wHAAAAAPW6fe+f//xnjj322DkCqSTp1KlTjjnmmDzxxBMLXBwAAAAAjVO9QqkmTZrks88+q7N91qxZadKk3tNVAQAAANDI1Ss52mqrrXL55ZfnzTffnKNt7Nix+e1vf5utt956gYsDAAAAoHGq15xS/+///b9su+22WW+99bL33ntnnXXWSZK88sorufvuu7PMMstk8ODBDVooAAAAAI1HvUKpzTbbLP/85z9z1lln5c9//nM+/vjjJEnLli2z22675ac//Wk22GCDBi0UAAAAgMajXqFUkmywwQa58847U1VVlffffz9J0rFjR3NJAQAAAPCV6h1KzdakSZN06tSpIWoBAAAAYCkxT6HU+eefn0qlkrPOOitNmjTJ+eef/5XbVCqVnH322QtcIAAAAACNzzyFUueee24qlUpOP/30NGvWLOeee+5XbiOUAgAAAKAu8xRKVVVVzfU1AAAAAMwPs5IDAAAAULp6hVJNmzbNTTfdVGf7rbfemqZNm9a7KAAAAAAat3qFUkVRzLV91qxZqVQq9SoIAAAAgMav3rfv1RU6TZkyJX/729/SoUOHehcFAAAAQOM2z6HUeeedl6ZNm6Zp06apVCo55JBDql9/cWnXrl3+8Ic/5MADD1yYdQMAAACwBJunp+8lyZZbbpkTTjghRVHkt7/9bXbZZZess846NfpUKpW0atUqPXv2zD777NPgxQIAAADQOMxzKNWvX7/069cvSTJt2rQcd9xx6dWr10IrDAAAAIDGa55DqS8aMmRIQ9cBAAAAwFKkXqHUbG+//XaeffbZTJ48OVVVVXO0H3rooQuyewAAAAAaqXqFUtOnT8+AAQPypz/9KVVVValUKimKIknNp/IJpQAAAACozTw/fe+LzjzzzNxxxx352c9+luHDh6coilx33XX5+9//nn79+qVHjx557rnnGrpWAAAAABqJeoVSf/zjH3P44Yfn9NNPz4YbbpgkWXnllbPzzjvnnnvuSdu2bXP55Zc3aKEAAAAANB71CqXee++9bLnllkmS5ZZbLsnnT+Sbbd99980dd9zRAOUBAAAA0BjVK5Tq1KlTPvjggyRJy5Yt065du7zyyivV7VOmTMn06dMbpkIAAAAAGp16TXTeq1evPPbYYzn99NOTJHvuuWd+8YtfpEuXLqmqqsoll1ySr3/96w1aKAAAAACNR71GSn33u9/NGmuskRkzZiRJfvKTn6Rt27b5zne+kwEDBmSFFVbIr3/96wYtFAAAAIDGo14jpfr06ZM+ffpUv+7WrVteeumlPP/882natGnWW2+9LLNMvXYNAAAAwFJgvkdKffzxx9lnn31y44031txRkybp0aNHNtpoI4EUAAAAAHM136FUy5Yt8+CDD+bjjz9eGPUAAAAAsBSo15xSffr0yciRIxu6FgAAAACWEvUKpS677LI8+uij+dGPfpS33367oWsCAAAAoJGrVyjVo0ePvP322xk8eHBWW221NG/ePG3atKmxrLDCCg1dKwAAAACNRL1mJN93331TqVQauhYAAAAAlhL1CqWGDh3awGUAAAAAsDSp1+17AAAAALAg6jVS6vrrr5+nfoceemh9dg8AAABAI1evUOqwww6rs+2Lc00JpQAAAACoTb1CqTFjxsyxbtasWXnjjTfy29/+NmPHjs111123wMUBAAAA0DjVK5RabbXVal2/xhprZMcdd8wee+yRyy67LJdffvkCFQcAAABA47RQJjr/xje+kVtvvXVh7BoAAACARmChhFKjR4/OjBkzFsauAQAAAGgE6nX73ogRI2pdP2nSpIwYMSK//vWv079//wWpCwAAAIBGrF6h1Pbbb1/jKXuzFUWRpk2bZv/9989vfvObBS4OAAAAgMapXqHUww8/PMe6SqWSdu3aZbXVVkubNm0WuDAAAAAAGq96hVLbbbddQ9cBAAAAwFKkXqFUkrz00ksZPXp0Pvroo7Ru3TprrbVW1ltvvYasDQAAAIBGar5Dqauuuio/+9nP8s4778zRtuqqq+ass87KUUcd1SDFAQAAANA4zVcoddppp+Xiiy9O+/btc8QRR2SjjTbK8ssvn6lTp+b555/PXXfdlWOPPTavvvpqLrjggoVVMwAAAABLuHkOpZ588slcfPHF2XvvvXP99denVatWc/T51a9+lUMOOSS//OUvs//++2eLLbZo0GIBAAAAaByazGvHa665Jl26dMlNN91UayCVJK1atcrNN9+cTp065ZprrmmwIgEAAABoXOY5lBo5cmT233//NG/efK79WrRokf333z//+Mc/Frg4AAAAABqneQ6l3nrrray//vrz1HeDDTbIW2+9Ve+iAAAAAGjc5jmUmjJlSlq3bj1PfZdffvl89NFH9S4KAAAAgMZtnkOpoihSqVTmecdFUdSrIAAAAAAav3l++l6S/PKXv8zNN9/8lf3eeeedehcEAAAAQOM3z6HUqquumv/973/53//+N8/9AQAAAKA28xxKvfHGGwuxDAAAAACWJvM8pxQAAAAANBShFAAAAAClE0oBAAAAUDqhFAAAAAClE0oBAAAAUDqhFAAAAAClW2ZBNp4xY0aeeeaZvPfee9l6663ToUOHhqoLAAAAgEas3iOlfv3rX6dLly7p06dP9tlnn/z73/9OkkycODEdOnTItdde22BFAgAAANC41CuUGjJkSE455ZTstttuueaaa1IURXVbhw4dsuOOO+aWW25psCIBAAAAaFzqFUpddNFF+eY3v5mbbrope+655xztPXv2zH/+858FLg4AAACAxqleodRrr72Wfv361dnevn37fPDBB/UuCgAAAIDGrV6hVNu2bTNx4sQ621988cV07ty53kUBAAAA0LjVK5Tafffd87vf/S6TJk2ao+0///lPrr766uy1114LWhsAAAAAjVS9Qqmf/vSnmTVrVjbaaKP86Ec/SqVSyXXXXZdDDjkkW2yxRVZaaaWcc845DV0rAAAAAI1EvUKprl275umnn85uu+2WW2+9NUVR5A9/+EP+8pe/5KCDDsoTTzyRDh06NHStAAAAADQSy9R3w5VWWim///3v8/vf/z7vv/9+qqqq0rFjxzRpUq+cCwAAAIClSL1DqS/q2LFjQ+wGAAAAgKVEvUKp888/f67tlUolLVq0yCqrrJJtt902K6+8cr2KAwAAAKBxqlcode6556ZSqSRJiqKo0fbl9U2bNs3RRx+dyy67zK19AAAAACSp50Tnb7/9djbZZJMMGDAgTz/9dCZPnpzJkyfnqaeeyqGHHppNN900//3vf/PMM8/k4IMPzlVXXZX/9//+X0PXDgAAAMASql6h1AknnJD11lsv1157bTbbbLO0bt06rVu3zuabb54hQ4Zk7bXXzhlnnJFNN900Q4cOTd++fXP99dc3dO0AAAAALKHqFUo99NBD2W677eps32677fLAAw9Uv959990zduzY+hwKAAAAgEaoXqFU8+bN889//rPO9ieeeCLNmjWrfv3ZZ59l+eWXr8+hAAAAAGiE6hVKHXTQQbn++utz2mmnZfTo0amqqkpVVVVGjx6d73//+7nhhhty0EEHVfd/+OGHs8EGGzRIwauvvnoqlcocy4knnlhr/6FDh87Rt0WLFg1SCwAAAAD1U6+n71144YWZMGFCLr744lxyySXVT9WrqqpKURTZd999c+GFFyZJpk+fnp49e2arrbZqkIL/9a9/ZdasWdWvX3jhheyyyy7Zf//969ymTZs2eeWVV6pfz35CIAAAAACLRr1CqRYtWuTWW2/NGWeckfvvvz9vvvlmkmS11VZL3759s/nmm9foe8455zRMtUk6duxY4/XPf/7zrLnmmnOd46pSqaRz584NVgMAAAAAC6ZeodRsm222WTbbbLOGqmW+zZw5MzfccEMGDhw419FPU6dOzWqrrZaqqqpsvvnm+X//7/9lww03rLP/jBkzMmPGjOrXU6ZMadC6AQAAAJZ29ZpTanFx1113ZdKkSTnssMPq7LPuuuvm2muvzd13350bbrghVVVV2WqrrfL222/Xuc3gwYOzwgorVC/dunVbCNUDAAAALL3qHUrdd9992WWXXbLiiitmmWWWSdOmTedYFrZrrrkm/fr1S9euXevs07t37xx66KHZdNNNs9122+WOO+5Ix44dc9VVV9W5zaBBgzJ58uTq5a233loY5QMAAAAstep1+96f/vSnfOtb38qGG26YAw88MFdccUW+/e1vpyiK3H333Vl77bXTv3//Bi61pjfffDMPPvhg7rjjjvnabtlll81mm22W1157rc4+zZs3T/PmzRe0RAAAAADqUK+RUoMHD86WW26ZZ599Nuedd16S5IgjjsiNN96YF154IePGjUv37t0btNAvGzJkSFZaaaXsscce87XdrFmz8vzzz6dLly4LqTIAAAAAvkq9QqkXX3wxBx54YJo2bZpllvl8sNWnn36aJFl99dVzwgkn5IILLmi4Kr+kqqoqQ4YMyYABA6qPP9uhhx6aQYMGVb8+//zz8/e//z2vv/56nnnmmRxyyCF58803c9RRRy20+gAAAACYu3rdvteyZcs0a9YsSdK2bds0b94848aNq27v1KlTxowZ0zAV1uLBBx/M2LFjc8QRR8zRNnbs2DRp8n9Z24cffpijjz4648ePT7t27dKzZ888/vjj2WCDDRZafQAAAADMXb1CqXXXXTcvvvhi9etNN900f/jDH3LIIYfks88+y0033ZRVV121wYr8sl133TVFUdTaNnz48BqvL7nkklxyySULrRYAAAAA5l+9bt/be++9c/fdd2fGjBlJkrPOOivDhw9P27Zt07Fjxzz66KM544wzGrRQAAAAABqPeo2UOu2003LaaadVv/7GN76R4cOH54477kjTpk2zxx57ZIcddmiwIgEAAABoXOY7lJoxY0b+9re/ZfXVV88mm2xSvX6bbbbJNtts06DFAQAAANA4zffte82aNcv++++fxx9/fGHUAwAAAMBSYL5DqUqlkrXXXjsTJ05cGPUAAAAAsBSo10TnZ555Zi677LK88sorDV0PAAAAAEuBek10/sQTT2TFFVfMRhttlO233z6rr756lltuuRp9KpVKfvWrXzVIkQAAAAA0LvUKpS677LLq/x42bFitfYRSAAAAANSlXqFUVVVVQ9cBAAAAwFKkXnNKAQAAAMCCqNdIqdmeeOKJPPzww3nvvfdywgknZO21187HH3+cl19+Oeuss06WX375hqoTAAAAgEakXiOlZs6cmX322Sdbb711zjrrrPz617/OW2+99fkOmzTJrrvuaj4pAAAAAOpUr1Dq7LPPzj333JMrrrgir7zySoqiqG5r0aJF9t9//9x9990NViQAAAAAjUu9Qqmbb745xx9/fI455pi0b99+jvb1118/r7/++gIXBwAAAEDjVK9Q6r333svGG29cZ3vTpk3z8ccf17soAAAAABq3eoVS3bp1y8svv1xn+z/+8Y+stdZa9S4KAAAAgMatXqHUt7/97Vx11VUZOXJk9bpKpZIkufrqq3Pbbbfl0EMPbZgKAQAAAGh0lqnPRmeddVaeeOKJbLvttll//fVTqVRy6qmn5n//+1/efvvt7L777jn11FMbulYAAAAAGol6jZRq1qxZ7r///gwZMiRrrLFG1ltvvcyYMSObbLJJhg4dmr/85S9p2rRpQ9cKAAAAQCNRr5FSyee36x1yyCE55JBDGrIeAAAAAJYC9Rop9cMf/jDPPvtsQ9cCAAAAwFKiXqHUb37zm2yxxRZZe+21c/bZZ+f5559v6LoAAAAAaMTqFUq99957GTJkSNZZZ51ceOGF2XTTTbPhhhvmJz/5SV555ZWGrhEAAACARqZeoVTr1q1z6KGH5q9//WsmTJiQ3/3ud1lllVXyk5/8JBtssEE23XTT/PznP2/oWgEAAABoJOoVSn1R27Ztc+SRR+Zvf/tbxo0bl4suuihjxozJWWed1RD1AQAAANAI1fvpe1/06aef5r777sutt96av/zlL5k6dWq6devWELsGAAAAoBGqdyj12Wef5e9//3tuvfXW3H333ZkyZUq6dOmSww8/PAcccEC22mqrhqwTAAAAgEakXqHUkUcembvuuisffvhhOnTokIMOOigHHnhgtt1221QqlYauEQAAAIBGpl6h1F133ZW99947BxxwQHbcccc0bdp0jj4ffvhh2rVrt8AFAgAAAND41CuUmjBhQpZZZs5NZ8yYkT//+c+58cYbc//992f69OkLXCAAAAAAjU+9QqkvBlJFUWTYsGG58cYbc+edd2bKlCnp2LFjvv3tbzdYkQAAAAA0LvWe6Pzpp5/OjTfemFtuuSXjx49PpVLJgQcemJNOOilf//rXzS0FAAAAQJ3mK5R6/fXXc+ONN+bGG2/Mq6++mpVXXjkHH3xwttxyyxxwwAHZd99907t374VVKwAAAACNxDyHUr17986TTz6ZDh06ZL/99svvf//79OnTJ0kyevTohVYgAAAAAI3PPIdS//znP9O9e/dcfPHF2WOPPWqd6BwAAAAA5kWTee142WWXpUuXLtl7773TuXPnHHvssXn44YdTFMXCrA8AAACARmieQ6kTTjghjz32WEaPHp1TTjkljz76aHbaaaesvPLKOeecc1KpVExuDgAAAMA8medQarbu3bvnRz/6UV588cX861//yoEHHpjhw4enKIqccMIJOeaYY3LPPfdk+vTpC6NeAAAAABqB+Q6lvqhnz565+OKL89Zbb+Xvf/97+vbtm1tvvTV77bVXOnTo0FA1AgAAANDILFAoVb2TJk2y8847Z+jQoZkwYUJuvvnm7LTTTg2xawAAAAAaoQYJpb6oRYsWOeCAA3L33Xc39K4BAAAAaCQaPJQCAAAAgK8ilAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEq3RIVS5557biqVSo1lvfXWm+s2t99+e9Zbb720aNEiG2+8ce69996SqgUAAACgLktUKJUkG264YcaNG1e9PPbYY3X2ffzxx3PQQQflyCOPzLPPPpv+/funf//+eeGFF0qsGAAAAIAvW+JCqWWWWSadO3euXjp06FBn31/96lfZbbfd8oMf/CDrr79+fvKTn2TzzTfPZZddVmLFAAAAAHzZEhdKvfrqq+natWvWWGONHHzwwRk7dmydfUeOHJmdd965xrq+fftm5MiRcz3GjBkzMmXKlBoLAAAAAA1niQqlevXqlaFDh+b+++/PFVdckTFjxmSbbbbJRx99VGv/8ePHp1OnTjXWderUKePHj5/rcQYPHpwVVliheunWrVuDnQMAAAAAS1go1a9fv+y///7ZZJNN0rdv39x7772ZNGlSbrvttgY9zqBBgzJ58uTq5a233mrQ/QMAAAAs7ZZZ1AUsiLZt22adddbJa6+9Vmt7586dM2HChBrrJkyYkM6dO891v82bN0/z5s0brE4AAAAAalqiRkp92dSpUzN69Oh06dKl1vbevXtn2LBhNdY98MAD6d27dxnlAQAAAFCHJSqUOu200/LII4/kjTfeyOOPP5699947TZs2zUEHHZQkOfTQQzNo0KDq/t/73vdy//3356KLLsrLL7+cc889N0899VROOumkRXUKAAAAAGQJu33v7bffzkEHHZQPPvggHTt2TJ8+ffLEE0+kY8eOSZKxY8emSZP/y9m22mqr3HTTTfnRj36UM888M2uvvXbuuuuubLTRRovqFAAAAADIEhZK3XLLLXNtHz58+Bzr9t9//+y///4LqSIAAAAA6mOJun0PAAAAgMZBKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6ZaoUGrw4MH52te+ltatW2ellVZK//7988orr8x1m6FDh6ZSqdRYWrRoUVLFAAAAANRmiQqlHnnkkZx44ol54okn8sADD+TTTz/NrrvummnTps11uzZt2mTcuHHVy5tvvllSxQAAAADUZplFXcD8uP/++2u8Hjp0aFZaaaU8/fTT2XbbbevcrlKppHPnzgu7PAAAAADm0RI1UurLJk+enCRp3779XPtNnTo1q622Wrp165ZvfvOb+c9//lNGeQAAAADUYYkNpaqqqnLKKadk6623zkYbbVRnv3XXXTfXXntt7r777txwww2pqqrKVlttlbfffrvObWbMmJEpU6bUWAAAAABoOEvU7XtfdOKJJ+aFF17IY489Ntd+vXv3Tu/evatfb7XVVll//fVz1VVX5Sc/+Umt2wwePDjnnXdeg9YLAAAAwP9ZIkdKnXTSSbnnnnvy8MMPZ5VVVpmvbZdddtlsttlmee211+rsM2jQoEyePLl6eeuttxa0ZAAAAAC+YIkaKVUURU4++eTceeedGT58eLp37z7f+5g1a1aef/757L777nX2ad68eZo3b74gpQIAAAAwF0tUKHXiiSfmpptuyt13353WrVtn/PjxSZIVVlghyy23XJLk0EMPzcorr5zBgwcnSc4///x8/etfz1prrZVJkyblF7/4Rd58880cddRRi+w8AAAAAJZ2S1QodcUVVyRJtt9++xrrhwwZksMOOyxJMnbs2DRp8n93JX744Yc5+uijM378+LRr1y49e/bM448/ng022KCssgEAAAD4kiUqlCqK4iv7DB8+vMbrSy65JJdccslCqggAAACA+lgiJzoHAAAAYMkmlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEIpAAAAAEonlAIAAACgdEtkKHX55Zdn9dVXT4sWLdKrV688+eSTc+1/++23Z7311kuLFi2y8cYb59577y2pUgAAAABqs8SFUrfeemsGDhyYH//4x3nmmWfSo0eP9O3bN++9916t/R9//PEcdNBBOfLII/Pss8+mf//+6d+/f1544YWSKwcAAABgtiUulLr44otz9NFH5/DDD88GG2yQK6+8Mi1btsy1115ba/9f/epX2W233fKDH/wg66+/fn7yk59k8803z2WXXVZy5QAAAADMtkSFUjNnzszTTz+dnXfeuXpdkyZNsvPOO2fkyJG1bjNy5Mga/ZOkb9++dfYHAAAAYOFbZlEXMD8mTpyYWbNmpVOnTjXWd+rUKS+//HKt24wfP77W/uPHj6/zODNmzMiMGTOqX0+ePDlJMmXKlPqWvtiomjm1lOPM7WelhkV//MWlho9mllJCWtVRw6I+frLo34eyjr841LA4fx4W9fGTxePzsKhrWBzeBzUs+uMvLjUs6s/Doj5+sujfB/9GLh41LA7vw+LweVjUNSzq60ANS57Z51AUxdw7FkuQd955p0hSPP744zXW/+AHPyi23HLLWrdZdtlli5tuuqnGussvv7xYaaWV6jzOj3/84yKJxWKxWCwWi8VisVgsFoulnstbb70115xniRop1aFDhzRt2jQTJkyosX7ChAnp3Llzrdt07tx5vvonyaBBgzJw4MDq11VVVfnf//6XFVdcMZVKZQHOYP5NmTIl3bp1y1tvvZU2bdqUemz4ItciiwvXIosL1yKLE9cjiwvXIosL1+KiVRRFPvroo3Tt2nWu/ZaoUKpZs2bp2bNnhg0blv79+yf5PDAaNmxYTjrppFq36d27d4YNG5ZTTjmlet0DDzyQ3r1713mc5s2bp3nz5jXWtW3bdkHLXyBt2rTxQWKx4FpkceFaZHHhWmRx4npkceFaZHHhWlx0Vlhhha/ss0SFUkkycODADBgwIFtssUW23HLLXHrppZk2bVoOP/zwJMmhhx6alVdeOYMHD06SfO9738t2222Xiy66KHvssUduueWWPPXUU/nd7363KE8DAAAAYKm2xIVSBxxwQN5///2cc845GT9+fDbddNPcf//91ZOZjx07Nk2a/N9DBbfaaqvcdNNN+dGPfpQzzzwza6+9du66665stNFGi+oUAAAAAJZ6S1wolSQnnXRSnbfrDR8+fI51+++/f/bff/+FXNXC0bx58/z4xz+e43ZCKJtrkcWFa5HFhWuRxYnrkcWFa5HFhWtxyVApiq96Ph8AAAAANKwmX90FAAAAABqWUAoAAACA0gmlAAAAACidUGoxdvnll2f11VdPixYt0qtXrzz55JOLuiSWQueee24qlUqNZb311lvUZbEUGDFiRPbcc8907do1lUold911V432oihyzjnnpEuXLlluueWy884759VXX100xdKofdW1eNhhh83xPbnbbrstmmJp1AYPHpyvfe1rad26dVZaaaX0798/r7zySo0+06dPz4knnpgVV1wxyy+/fPbdd99MmDBhEVVMYzUv1+L2228/x3fjcccdt4gqprG64oorsskmm6RNmzZp06ZNevfunfvuu6+63Xfi4k8otZi69dZbM3DgwPz4xz/OM888kx49eqRv37557733FnVpLIU23HDDjBs3rnp57LHHFnVJLAWmTZuWHj165PLLL6+1/cILL8yvf/3rXHnllfnnP/+ZVq1apW/fvpk+fXrJldLYfdW1mCS77bZbje/Jm2++ucQKWVo88sgjOfHEE/PEE0/kgQceyKeffppdd90106ZNq+5z6qmn5i9/+Utuv/32PPLII3n33Xezzz77LMKqaYzm5VpMkqOPPrrGd+OFF164iCqmsVpllVXy85//PE8//XSeeuqp7LjjjvnmN7+Z//znP0l8Jy4JPH1vMdWrV6987Wtfy2WXXZYkqaqqSrdu3XLyySfnjDPOWMTVsTQ599xzc9ddd2XUqFGLuhSWYpVKJXfeeWf69++f5PNRUl27ds33v//9nHbaaUmSyZMnp1OnThk6dGgOPPDARVgtjdmXr8Xk85FSkyZNmmMEFSxs77//flZaaaU88sgj2XbbbTN58uR07NgxN910U/bbb78kycsvv5z1118/I0eOzNe//vVFXDGN1ZevxeTzkVKbbrppLr300kVbHEud9u3b5xe/+EX2228/34lLACOlFkMzZ87M008/nZ133rl6XZMmTbLzzjtn5MiRi7AyllavvvpqunbtmjXWWCMHH3xwxo4du6hLYik3ZsyYjB8/vsb35AorrJBevXr5nmSRGD58eFZaaaWsu+66Of744/PBBx8s6pJYCkyePDnJ57+AJcnTTz+dTz/9tMZ343rrrZdVV13VdyML1ZevxdluvPHGdOjQIRtttFEGDRqUjz/+eFGUx1Ji1qxZueWWWzJt2rT07t3bd+ISYplFXQBzmjhxYmbNmpVOnTrVWN+pU6e8/PLLi6gqlla9evXK0KFDs+6662bcuHE577zzss022+SFF15I69atF3V5LKXGjx+fJLV+T85ug7Lstttu2WeffdK9e/eMHj06Z555Zvr165eRI0emadOmi7o8Gqmqqqqccsop2XrrrbPRRhsl+fy7sVmzZmnbtm2Nvr4bWZhquxaT5Nvf/nZWW221dO3aNf/+979z+umn55VXXskdd9yxCKulMXr++efTu3fvTJ8+Pcsvv3zuvPPObLDBBhk1apTvxCWAUAqYq379+lX/9yabbJJevXpltdVWy2233ZYjjzxyEVYGsHj44u2iG2+8cTbZZJOsueaaGT58eHbaaadFWBmN2YknnpgXXnjBPI8scnVdi8ccc0z1f2+88cbp0qVLdtppp4wePTprrrlm2WXSiK277roZNWpUJk+enD/+8Y8ZMGBAHnnkkUVdFvPI7XuLoQ4dOqRp06ZzPBVgwoQJ6dy58yKqCj7Xtm3brLPOOnnttdcWdSksxWZ/F/qeZHG0xhprpEOHDr4nWWhOOumk3HPPPXn44YezyiqrVK/v3LlzZs6cmUmTJtXo77uRhaWua7E2vXr1ShLfjTS4Zs2aZa211krPnj0zePDg9OjRI7/61a98Jy4hhFKLoWbNmqVnz54ZNmxY9bqqqqoMGzYsvXv3XoSVQTJ16tSMHj06Xbp0WdSlsBTr3r17OnfuXON7csqUKfnnP//pe5JF7u23384HH3zge5IGVxRFTjrppNx555156KGH0r179xrtPXv2zLLLLlvju/GVV17J2LFjfTfSoL7qWqzN7Ifm+G5kYauqqsqMGTN8Jy4h3L63mBo4cGAGDBiQLbbYIltuuWUuvfTSTJs2LYcffviiLo2lzGmnnZY999wzq622Wt599938+Mc/TtOmTXPQQQct6tJo5KZOnVrjr6ljxozJqFGj0r59+6y66qo55ZRT8tOf/jRrr712unfvnrPPPjtdu3at8VQ0aAhzuxbbt2+f8847L/vuu286d+6c0aNH54c//GHWWmut9O3bdxFWTWN04okn5qabbsrdd9+d1q1bV8+JssIKK2S55ZbLCiuskCOPPDIDBw5M+/bt06ZNm5x88snp3bu3p0zRoL7qWhw9enRuuumm7L777llxxRXz73//O6eeemq23XbbbLLJJou4ehqTQYMGpV+/fll11VXz0Ucf5aabbsrw4cPzt7/9zXfikqJgsfWb3/ymWHXVVYtmzZoVW265ZfHEE08s6pJYCh1wwAFFly5dimbNmhUrr7xyccABBxSvvfbaoi6LpcDDDz9cJJljGTBgQFEURVFVVVWcffbZRadOnYrmzZsXO+20U/HKK68s2qJplOZ2LX788cfFrrvuWnTs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29tLR0fHFfcXFhZGaGgoNpsNq9VKQEAAixcvdpnb3t7Ovffey4QJzl8xh3sfd99995B5AKM69+rfaENERETGh86UEhERkeveiRMn6O7udioirVixgv379/PKK6/w0EMPYTabsdvtxMTEYLfbnZ5PTU0lJyeHEydOcP78eQ4ePMjWrVvHehpXZOLEiZfNsdvt+Pn5ORXa/u7SotblJCcnU1paypQpU0hKShpSdLpaw83FMIwxbUNERETGh4pSIiIict27eAh2dHQ08NcqmS+//JLCwkI2btzoyGtpaXH5/MqVK3n55Zepqqqiv78fNzc3kpKSLttvYGAgP/7445D4xV+rCwwMHPVchvtlvtEICQmhoaGBBQsWOG1jvFrJycls3LiRX3/9ddgDx+Gv+TY3N2O3250KV+P9PkREROTapO17IiIicl1rbGykuLiY4OBgnnnmGeD/q2cuXS1jsVhctuHj40NsbCyVlZVYrVZiYmLw8fG5bN9xcXF8++23HDhwwBH7448/KCsrIygoiFmzZo16PpMnTwagq6tr1M9etGLFCgYHBykuLh5yb2BgYNRth4SEYLFY2LRpE/PmzRs2Ly4ujpMnT1JdXe3U35YtWzCbzSxcuHBU/QLceuutwD97HyIiInJt0kopERERuW7s3LmTo0ePMjAwwKlTp2hsbKS+vp7AwEA+/fRTPDw8ALjtttuIiopi8+bN/Pnnn9xxxx3s2rWLtra2YdtOTU3lySefBHBZzHFl/fr1VFVVERsbS3Z2Nt7e3pSXl9PW1sYHH3xwVdvcPD09mTVrFtXV1dx33314e3sze/ZsZs+efcVtLFy4kIyMDDZt2sThw4dZunQpbm5utLS0UFNTw5tvvumY65XKycm5bM7q1avZtm0baWlpfPfddwQFBVFbW8u+ffuwWCxOZ35dqfDwcACys7OJjo5m4sSJrFy5ctTtiIiIyLVHRSkRERG5blzcinfLLbfg7e3NnDlzsFgspKenDyl42Gw2srKyKCkpwTAMli5dys6dO5k+fbrLtpcvX46Xlxd2u534+PgrGo+/vz/79+/n1VdfZcuWLZw7d465c+eyY8cOli1bdtXzfPvtt8nKyuKll17iwoUL5Ofnj6ooBfDWW28RHh7Otm3b2LBhA5MmTSIoKIiUlBQWLFhw1WMbiaenJ3v27GH9+vWUl5fT09PDzJkz2b59O2lpaVfVZmJiIllZWbz//vtUVlZiGIaKUiIiIjcIk6FTIEVEREQYGBhg+vTpLF++nHfeeWe8hyMiIiJyw9OZUiIiIiLAxx9/TGdnJ6mpqeM9FBEREZGbglZKiYiIyE3tm2++obm5meLiYnx8fDh06NB4D0lERETkpqCVUiIiInJTKy0tJTMzEz8/P957773xHo6IiIjITUMrpUREREREREREZMxppZSIiIiIiIiIiIw5FaVERERERERERGTMqSglIiIiIiIiIiJjTkUpEREREREREREZcypKiYiIiIiIiIjImFNRSkRERERERERExpyKUiIiIiIiIiIiMuZUlBIRERERERERkTGnopSIiIiIiIiIiIy5/wH9FbinmnjvggAAAABJRU5ErkJggg==\n"},"metadata":{}}]},{"cell_type":"code","source":[],"metadata":{"id":"DrAu1eX_KrRV"},"execution_count":null,"outputs":[]}]}