diff --git a/lab-dw-aggregating.ipynb b/lab-dw-aggregating.ipynb
index fadd718..8b1254b 100644
--- a/lab-dw-aggregating.ipynb
+++ b/lab-dw-aggregating.ipynb
@@ -1,165 +1,1908 @@
{
- "cells": [
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "31969215-2a90-4d8b-ac36-646a7ae13744",
+ "metadata": {
+ "id": "31969215-2a90-4d8b-ac36-646a7ae13744"
+ },
+ "source": [
+ "# Lab | Data Aggregation and Filtering"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a8f08a52-bec0-439b-99cc-11d3809d8b5d",
+ "metadata": {
+ "id": "a8f08a52-bec0-439b-99cc-11d3809d8b5d"
+ },
+ "source": [
+ "In this challenge, we will continue to work with customer data from an insurance company. We will use the dataset called marketing_customer_analysis.csv, which can be found at the following link:\n",
+ "\n",
+ "https://raw.githubusercontent.com/data-bootcamp-v4/data/main/marketing_customer_analysis.csv\n",
+ "\n",
+ "This dataset contains information such as customer demographics, policy details, vehicle information, and the customer's response to the last marketing campaign. Our goal is to explore and analyze this data by first performing data cleaning, formatting, and structuring."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9c98ddc5-b041-4c94-ada1-4dfee5c98e50",
+ "metadata": {
+ "id": "9c98ddc5-b041-4c94-ada1-4dfee5c98e50"
+ },
+ "source": [
+ "1. Create a new DataFrame that only includes customers who:\n",
+ " - have a **low total_claim_amount** (e.g., below $1,000),\n",
+ " - have a response \"Yes\" to the last marketing campaign."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b9be383e-5165-436e-80c8-57d4c757c8c3",
+ "metadata": {
+ "id": "b9be383e-5165-436e-80c8-57d4c757c8c3"
+ },
+ "source": [
+ "2. Using the original Dataframe, analyze:\n",
+ " - the average `monthly_premium` and/or customer lifetime value by `policy_type` and `gender` for customers who responded \"Yes\", and\n",
+ " - compare these insights to `total_claim_amount` patterns, and discuss which segments appear most profitable or low-risk for the company."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7050f4ac-53c5-4193-a3c0-8699b87196f0",
+ "metadata": {
+ "id": "7050f4ac-53c5-4193-a3c0-8699b87196f0"
+ },
+ "source": [
+ "3. Analyze the total number of customers who have policies in each state, and then filter the results to only include states where there are more than 500 customers."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b60a4443-a1a7-4bbf-b78e-9ccdf9895e0d",
+ "metadata": {
+ "id": "b60a4443-a1a7-4bbf-b78e-9ccdf9895e0d"
+ },
+ "source": [
+ "4. Find the maximum, minimum, and median customer lifetime value by education level and gender. Write your conclusions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b42999f9-311f-481e-ae63-40a5577072c5",
+ "metadata": {
+ "id": "b42999f9-311f-481e-ae63-40a5577072c5"
+ },
+ "source": [
+ "## Bonus"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "81ff02c5-6584-4f21-a358-b918697c6432",
+ "metadata": {
+ "id": "81ff02c5-6584-4f21-a358-b918697c6432"
+ },
+ "source": [
+ "5. The marketing team wants to analyze the number of policies sold by state and month. Present the data in a table where the months are arranged as columns and the states are arranged as rows."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b6aec097-c633-4017-a125-e77a97259cda",
+ "metadata": {
+ "id": "b6aec097-c633-4017-a125-e77a97259cda"
+ },
+ "source": [
+ "6. Display a new DataFrame that contains the number of policies sold by month, by state, for the top 3 states with the highest number of policies sold.\n",
+ "\n",
+ "*Hint:*\n",
+ "- *To accomplish this, you will first need to group the data by state and month, then count the number of policies sold for each group. Afterwards, you will need to sort the data by the count of policies sold in descending order.*\n",
+ "- *Next, you will select the top 3 states with the highest number of policies sold.*\n",
+ "- *Finally, you will create a new DataFrame that contains the number of policies sold by month for each of the top 3 states.*"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ba975b8a-a2cf-4fbf-9f59-ebc381767009",
+ "metadata": {
+ "id": "ba975b8a-a2cf-4fbf-9f59-ebc381767009"
+ },
+ "source": [
+ "7. The marketing team wants to analyze the effect of different marketing channels on the customer response rate.\n",
+ "\n",
+ "Hint: You can use melt to unpivot the data and create a table that shows the customer response rate (those who responded \"Yes\") by marketing channel."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e4378d94-48fb-4850-a802-b1bc8f427b2d",
+ "metadata": {
+ "id": "e4378d94-48fb-4850-a802-b1bc8f427b2d"
+ },
+ "source": [
+ "External Resources for Data Filtering: https://towardsdatascience.com/filtering-data-frames-in-pandas-b570b1f834b9"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "449513f4-0459-46a0-a18d-9398d974c9ad",
+ "metadata": {
+ "id": "449513f4-0459-46a0-a18d-9398d974c9ad"
+ },
+ "outputs": [
{
- "cell_type": "markdown",
- "id": "31969215-2a90-4d8b-ac36-646a7ae13744",
- "metadata": {
- "id": "31969215-2a90-4d8b-ac36-646a7ae13744"
- },
- "source": [
- "# Lab | Data Aggregation and Filtering"
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
Unnamed: 0
\n",
+ "
Customer
\n",
+ "
State
\n",
+ "
Customer Lifetime Value
\n",
+ "
Response
\n",
+ "
Coverage
\n",
+ "
Education
\n",
+ "
Effective To Date
\n",
+ "
EmploymentStatus
\n",
+ "
Gender
\n",
+ "
...
\n",
+ "
Number of Open Complaints
\n",
+ "
Number of Policies
\n",
+ "
Policy Type
\n",
+ "
Policy
\n",
+ "
Renew Offer Type
\n",
+ "
Sales Channel
\n",
+ "
Total Claim Amount
\n",
+ "
Vehicle Class
\n",
+ "
Vehicle Size
\n",
+ "
Vehicle Type
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
0
\n",
+ "
DK49336
\n",
+ "
Arizona
\n",
+ "
4809.216960
\n",
+ "
No
\n",
+ "
Basic
\n",
+ "
College
\n",
+ "
2/18/11
\n",
+ "
Employed
\n",
+ "
M
\n",
+ "
...
\n",
+ "
0.0
\n",
+ "
9
\n",
+ "
Corporate Auto
\n",
+ "
Corporate L3
\n",
+ "
Offer3
\n",
+ "
Agent
\n",
+ "
292.800000
\n",
+ "
Four-Door Car
\n",
+ "
Medsize
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
1
\n",
+ "
KX64629
\n",
+ "
California
\n",
+ "
2228.525238
\n",
+ "
No
\n",
+ "
Basic
\n",
+ "
College
\n",
+ "
1/18/11
\n",
+ "
Unemployed
\n",
+ "
F
\n",
+ "
...
\n",
+ "
0.0
\n",
+ "
1
\n",
+ "
Personal Auto
\n",
+ "
Personal L3
\n",
+ "
Offer4
\n",
+ "
Call Center
\n",
+ "
744.924331
\n",
+ "
Four-Door Car
\n",
+ "
Medsize
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
2
\n",
+ "
LZ68649
\n",
+ "
Washington
\n",
+ "
14947.917300
\n",
+ "
No
\n",
+ "
Basic
\n",
+ "
Bachelor
\n",
+ "
2/10/11
\n",
+ "
Employed
\n",
+ "
M
\n",
+ "
...
\n",
+ "
0.0
\n",
+ "
2
\n",
+ "
Personal Auto
\n",
+ "
Personal L3
\n",
+ "
Offer3
\n",
+ "
Call Center
\n",
+ "
480.000000
\n",
+ "
SUV
\n",
+ "
Medsize
\n",
+ "
A
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
3
\n",
+ "
XL78013
\n",
+ "
Oregon
\n",
+ "
22332.439460
\n",
+ "
Yes
\n",
+ "
Extended
\n",
+ "
College
\n",
+ "
1/11/11
\n",
+ "
Employed
\n",
+ "
M
\n",
+ "
...
\n",
+ "
0.0
\n",
+ "
2
\n",
+ "
Corporate Auto
\n",
+ "
Corporate L3
\n",
+ "
Offer2
\n",
+ "
Branch
\n",
+ "
484.013411
\n",
+ "
Four-Door Car
\n",
+ "
Medsize
\n",
+ "
A
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
4
\n",
+ "
QA50777
\n",
+ "
Oregon
\n",
+ "
9025.067525
\n",
+ "
No
\n",
+ "
Premium
\n",
+ "
Bachelor
\n",
+ "
1/17/11
\n",
+ "
Medical Leave
\n",
+ "
F
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
7
\n",
+ "
Personal Auto
\n",
+ "
Personal L2
\n",
+ "
Offer1
\n",
+ "
Branch
\n",
+ "
707.925645
\n",
+ "
Four-Door Car
\n",
+ "
Medsize
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
10905
\n",
+ "
10905
\n",
+ "
FE99816
\n",
+ "
Nevada
\n",
+ "
15563.369440
\n",
+ "
No
\n",
+ "
Premium
\n",
+ "
Bachelor
\n",
+ "
1/19/11
\n",
+ "
Unemployed
\n",
+ "
F
\n",
+ "
...
\n",
+ "
NaN
\n",
+ "
7
\n",
+ "
Personal Auto
\n",
+ "
Personal L1
\n",
+ "
Offer3
\n",
+ "
Web
\n",
+ "
1214.400000
\n",
+ "
Luxury Car
\n",
+ "
Medsize
\n",
+ "
A
\n",
+ "
\n",
+ "
\n",
+ "
10906
\n",
+ "
10906
\n",
+ "
KX53892
\n",
+ "
Oregon
\n",
+ "
5259.444853
\n",
+ "
No
\n",
+ "
Basic
\n",
+ "
College
\n",
+ "
1/6/11
\n",
+ "
Employed
\n",
+ "
F
\n",
+ "
...
\n",
+ "
0.0
\n",
+ "
6
\n",
+ "
Personal Auto
\n",
+ "
Personal L3
\n",
+ "
Offer2
\n",
+ "
Branch
\n",
+ "
273.018929
\n",
+ "
Four-Door Car
\n",
+ "
Medsize
\n",
+ "
A
\n",
+ "
\n",
+ "
\n",
+ "
10907
\n",
+ "
10907
\n",
+ "
TL39050
\n",
+ "
Arizona
\n",
+ "
23893.304100
\n",
+ "
No
\n",
+ "
Extended
\n",
+ "
Bachelor
\n",
+ "
2/6/11
\n",
+ "
Employed
\n",
+ "
F
\n",
+ "
...
\n",
+ "
0.0
\n",
+ "
2
\n",
+ "
Corporate Auto
\n",
+ "
Corporate L3
\n",
+ "
Offer1
\n",
+ "
Web
\n",
+ "
381.306996
\n",
+ "
Luxury SUV
\n",
+ "
Medsize
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
10908
\n",
+ "
10908
\n",
+ "
WA60547
\n",
+ "
California
\n",
+ "
11971.977650
\n",
+ "
No
\n",
+ "
Premium
\n",
+ "
College
\n",
+ "
2/13/11
\n",
+ "
Employed
\n",
+ "
F
\n",
+ "
...
\n",
+ "
4.0
\n",
+ "
6
\n",
+ "
Personal Auto
\n",
+ "
Personal L1
\n",
+ "
Offer1
\n",
+ "
Branch
\n",
+ "
618.288849
\n",
+ "
SUV
\n",
+ "
Medsize
\n",
+ "
A
\n",
+ "
\n",
+ "
\n",
+ "
10909
\n",
+ "
10909
\n",
+ "
IV32877
\n",
+ "
NaN
\n",
+ "
6857.519928
\n",
+ "
NaN
\n",
+ "
Basic
\n",
+ "
Bachelor
\n",
+ "
1/8/11
\n",
+ "
Unemployed
\n",
+ "
M
\n",
+ "
...
\n",
+ "
0.0
\n",
+ "
3
\n",
+ "
Personal Auto
\n",
+ "
Personal L1
\n",
+ "
Offer4
\n",
+ "
Web
\n",
+ "
1021.719397
\n",
+ "
SUV
\n",
+ "
Medsize
\n",
+ "
NaN
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
10910 rows × 26 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Unnamed: 0 Customer State Customer Lifetime Value Response \\\n",
+ "0 0 DK49336 Arizona 4809.216960 No \n",
+ "1 1 KX64629 California 2228.525238 No \n",
+ "2 2 LZ68649 Washington 14947.917300 No \n",
+ "3 3 XL78013 Oregon 22332.439460 Yes \n",
+ "4 4 QA50777 Oregon 9025.067525 No \n",
+ "... ... ... ... ... ... \n",
+ "10905 10905 FE99816 Nevada 15563.369440 No \n",
+ "10906 10906 KX53892 Oregon 5259.444853 No \n",
+ "10907 10907 TL39050 Arizona 23893.304100 No \n",
+ "10908 10908 WA60547 California 11971.977650 No \n",
+ "10909 10909 IV32877 NaN 6857.519928 NaN \n",
+ "\n",
+ " Coverage Education Effective To Date EmploymentStatus Gender ... \\\n",
+ "0 Basic College 2/18/11 Employed M ... \n",
+ "1 Basic College 1/18/11 Unemployed F ... \n",
+ "2 Basic Bachelor 2/10/11 Employed M ... \n",
+ "3 Extended College 1/11/11 Employed M ... \n",
+ "4 Premium Bachelor 1/17/11 Medical Leave F ... \n",
+ "... ... ... ... ... ... ... \n",
+ "10905 Premium Bachelor 1/19/11 Unemployed F ... \n",
+ "10906 Basic College 1/6/11 Employed F ... \n",
+ "10907 Extended Bachelor 2/6/11 Employed F ... \n",
+ "10908 Premium College 2/13/11 Employed F ... \n",
+ "10909 Basic Bachelor 1/8/11 Unemployed M ... \n",
+ "\n",
+ " Number of Open Complaints Number of Policies Policy Type \\\n",
+ "0 0.0 9 Corporate Auto \n",
+ "1 0.0 1 Personal Auto \n",
+ "2 0.0 2 Personal Auto \n",
+ "3 0.0 2 Corporate Auto \n",
+ "4 NaN 7 Personal Auto \n",
+ "... ... ... ... \n",
+ "10905 NaN 7 Personal Auto \n",
+ "10906 0.0 6 Personal Auto \n",
+ "10907 0.0 2 Corporate Auto \n",
+ "10908 4.0 6 Personal Auto \n",
+ "10909 0.0 3 Personal Auto \n",
+ "\n",
+ " Policy Renew Offer Type Sales Channel Total Claim Amount \\\n",
+ "0 Corporate L3 Offer3 Agent 292.800000 \n",
+ "1 Personal L3 Offer4 Call Center 744.924331 \n",
+ "2 Personal L3 Offer3 Call Center 480.000000 \n",
+ "3 Corporate L3 Offer2 Branch 484.013411 \n",
+ "4 Personal L2 Offer1 Branch 707.925645 \n",
+ "... ... ... ... ... \n",
+ "10905 Personal L1 Offer3 Web 1214.400000 \n",
+ "10906 Personal L3 Offer2 Branch 273.018929 \n",
+ "10907 Corporate L3 Offer1 Web 381.306996 \n",
+ "10908 Personal L1 Offer1 Branch 618.288849 \n",
+ "10909 Personal L1 Offer4 Web 1021.719397 \n",
+ "\n",
+ " Vehicle Class Vehicle Size Vehicle Type \n",
+ "0 Four-Door Car Medsize NaN \n",
+ "1 Four-Door Car Medsize NaN \n",
+ "2 SUV Medsize A \n",
+ "3 Four-Door Car Medsize A \n",
+ "4 Four-Door Car Medsize NaN \n",
+ "... ... ... ... \n",
+ "10905 Luxury Car Medsize A \n",
+ "10906 Four-Door Car Medsize A \n",
+ "10907 Luxury SUV Medsize NaN \n",
+ "10908 SUV Medsize A \n",
+ "10909 SUV Medsize NaN \n",
+ "\n",
+ "[10910 rows x 26 columns]"
]
- },
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# your code goes here\n",
+ "import pandas as pd\n",
+ "import seaborn as sns\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "file_path = \"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/marketing_customer_analysis.csv\"\n",
+ "\n",
+ "df = pd.read_csv(file_path)\n",
+ "df\n",
+ "# df.info()\n",
+ "# df.dtypes\n",
+ "# df.nunique()\n",
+ "# df.describe()\n",
+ "# display(df.isna().sum())\n",
+ "# display((df.isna().sum()/df.shape[0])*100)\n",
+ "# df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "b340f67e-2d77-4f09-b134-66f3d05c5ed0",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "RangeIndex: 10910 entries, 0 to 10909\n",
+ "Data columns (total 26 columns):\n",
+ " # Column Non-Null Count Dtype \n",
+ "--- ------ -------------- ----- \n",
+ " 0 Unnamed: 0 10910 non-null int64 \n",
+ " 1 Customer 10910 non-null object \n",
+ " 2 State 10279 non-null object \n",
+ " 3 Customer Lifetime Value 10910 non-null float64\n",
+ " 4 Response 10279 non-null object \n",
+ " 5 Coverage 10910 non-null object \n",
+ " 6 Education 10910 non-null object \n",
+ " 7 Effective To Date 10910 non-null object \n",
+ " 8 EmploymentStatus 10910 non-null object \n",
+ " 9 Gender 10910 non-null object \n",
+ " 10 Income 10910 non-null int64 \n",
+ " 11 Location Code 10910 non-null object \n",
+ " 12 Marital Status 10910 non-null object \n",
+ " 13 Monthly Premium Auto 10910 non-null int64 \n",
+ " 14 Months Since Last Claim 10277 non-null float64\n",
+ " 15 Months Since Policy Inception 10910 non-null int64 \n",
+ " 16 Number of Open Complaints 10277 non-null float64\n",
+ " 17 Number of Policies 10910 non-null int64 \n",
+ " 18 Policy Type 10910 non-null object \n",
+ " 19 Policy 10910 non-null object \n",
+ " 20 Renew Offer Type 10910 non-null object \n",
+ " 21 Sales Channel 10910 non-null object \n",
+ " 22 Total Claim Amount 10910 non-null float64\n",
+ " 23 Vehicle Class 10288 non-null object \n",
+ " 24 Vehicle Size 10288 non-null object \n",
+ " 25 Vehicle Type 5428 non-null object \n",
+ "dtypes: float64(4), int64(5), object(17)\n",
+ "memory usage: 2.2+ MB\n"
+ ]
+ }
+ ],
+ "source": [
+ "df.info()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "f3b778ba-e6ca-4004-b4de-bf783e193bb5",
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "markdown",
- "id": "a8f08a52-bec0-439b-99cc-11d3809d8b5d",
- "metadata": {
- "id": "a8f08a52-bec0-439b-99cc-11d3809d8b5d"
- },
- "source": [
- "In this challenge, we will continue to work with customer data from an insurance company. We will use the dataset called marketing_customer_analysis.csv, which can be found at the following link:\n",
- "\n",
- "https://raw.githubusercontent.com/data-bootcamp-v4/data/main/marketing_customer_analysis.csv\n",
- "\n",
- "This dataset contains information such as customer demographics, policy details, vehicle information, and the customer's response to the last marketing campaign. Our goal is to explore and analyze this data by first performing data cleaning, formatting, and structuring."
+ "data": {
+ "text/plain": [
+ "Unnamed: 0 10910\n",
+ "Customer 9134\n",
+ "State 5\n",
+ "Customer Lifetime Value 8041\n",
+ "Response 2\n",
+ "Coverage 3\n",
+ "Education 5\n",
+ "Effective To Date 59\n",
+ "EmploymentStatus 5\n",
+ "Gender 2\n",
+ "Income 5694\n",
+ "Location Code 3\n",
+ "Marital Status 3\n",
+ "Monthly Premium Auto 202\n",
+ "Months Since Last Claim 36\n",
+ "Months Since Policy Inception 100\n",
+ "Number of Open Complaints 6\n",
+ "Number of Policies 9\n",
+ "Policy Type 3\n",
+ "Policy 9\n",
+ "Renew Offer Type 4\n",
+ "Sales Channel 4\n",
+ "Total Claim Amount 5106\n",
+ "Vehicle Class 6\n",
+ "Vehicle Size 3\n",
+ "Vehicle Type 1\n",
+ "Month 2\n",
+ "dtype: int64"
]
- },
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.nunique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "d4566702-f6a9-414a-a72a-48b880a215f3",
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "markdown",
- "id": "9c98ddc5-b041-4c94-ada1-4dfee5c98e50",
- "metadata": {
- "id": "9c98ddc5-b041-4c94-ada1-4dfee5c98e50"
- },
- "source": [
- "1. Create a new DataFrame that only includes customers who:\n",
- " - have a **low total_claim_amount** (e.g., below $1,000),\n",
- " - have a response \"Yes\" to the last marketing campaign."
+ "data": {
+ "text/plain": [
+ "Unnamed: 0 int64\n",
+ "Customer object\n",
+ "State object\n",
+ "Customer Lifetime Value float64\n",
+ "Response object\n",
+ "Coverage object\n",
+ "Education object\n",
+ "Effective To Date object\n",
+ "EmploymentStatus object\n",
+ "Gender object\n",
+ "Income int64\n",
+ "Location Code object\n",
+ "Marital Status object\n",
+ "Monthly Premium Auto int64\n",
+ "Months Since Last Claim float64\n",
+ "Months Since Policy Inception int64\n",
+ "Number of Open Complaints float64\n",
+ "Number of Policies int64\n",
+ "Policy Type object\n",
+ "Policy object\n",
+ "Renew Offer Type object\n",
+ "Sales Channel object\n",
+ "Total Claim Amount float64\n",
+ "Vehicle Class object\n",
+ "Vehicle Size object\n",
+ "Vehicle Type object\n",
+ "dtype: object"
]
- },
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.dtypes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "e5712570-100d-482f-b987-5527707dd9e2",
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "markdown",
- "id": "b9be383e-5165-436e-80c8-57d4c757c8c3",
- "metadata": {
- "id": "b9be383e-5165-436e-80c8-57d4c757c8c3"
- },
- "source": [
- "2. Using the original Dataframe, analyze:\n",
- " - the average `monthly_premium` and/or customer lifetime value by `policy_type` and `gender` for customers who responded \"Yes\", and\n",
- " - compare these insights to `total_claim_amount` patterns, and discuss which segments appear most profitable or low-risk for the company."
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
Unnamed: 0
\n",
+ "
Customer Lifetime Value
\n",
+ "
Income
\n",
+ "
Monthly Premium Auto
\n",
+ "
Months Since Last Claim
\n",
+ "
Months Since Policy Inception
\n",
+ "
Number of Open Complaints
\n",
+ "
Number of Policies
\n",
+ "
Total Claim Amount
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
count
\n",
+ "
10910.000000
\n",
+ "
10910.000000
\n",
+ "
10910.000000
\n",
+ "
10910.000000
\n",
+ "
10277.000000
\n",
+ "
10910.000000
\n",
+ "
10277.000000
\n",
+ "
10910.000000
\n",
+ "
10910.000000
\n",
+ "
\n",
+ "
\n",
+ "
mean
\n",
+ "
5454.500000
\n",
+ "
8018.241094
\n",
+ "
37536.284785
\n",
+ "
93.196059
\n",
+ "
15.149071
\n",
+ "
48.091934
\n",
+ "
0.384256
\n",
+ "
2.979193
\n",
+ "
434.888330
\n",
+ "
\n",
+ "
\n",
+ "
std
\n",
+ "
3149.590053
\n",
+ "
6885.081434
\n",
+ "
30359.195670
\n",
+ "
34.442532
\n",
+ "
10.080349
\n",
+ "
27.940675
\n",
+ "
0.912457
\n",
+ "
2.399359
\n",
+ "
292.180556
\n",
+ "
\n",
+ "
\n",
+ "
min
\n",
+ "
0.000000
\n",
+ "
1898.007675
\n",
+ "
0.000000
\n",
+ "
61.000000
\n",
+ "
0.000000
\n",
+ "
0.000000
\n",
+ "
0.000000
\n",
+ "
1.000000
\n",
+ "
0.099007
\n",
+ "
\n",
+ "
\n",
+ "
25%
\n",
+ "
2727.250000
\n",
+ "
4014.453113
\n",
+ "
0.000000
\n",
+ "
68.000000
\n",
+ "
6.000000
\n",
+ "
24.000000
\n",
+ "
0.000000
\n",
+ "
1.000000
\n",
+ "
271.082527
\n",
+ "
\n",
+ "
\n",
+ "
50%
\n",
+ "
5454.500000
\n",
+ "
5771.147235
\n",
+ "
33813.500000
\n",
+ "
83.000000
\n",
+ "
14.000000
\n",
+ "
48.000000
\n",
+ "
0.000000
\n",
+ "
2.000000
\n",
+ "
382.564630
\n",
+ "
\n",
+ "
\n",
+ "
75%
\n",
+ "
8181.750000
\n",
+ "
8992.779137
\n",
+ "
62250.750000
\n",
+ "
109.000000
\n",
+ "
23.000000
\n",
+ "
71.000000
\n",
+ "
0.000000
\n",
+ "
4.000000
\n",
+ "
547.200000
\n",
+ "
\n",
+ "
\n",
+ "
max
\n",
+ "
10909.000000
\n",
+ "
83325.381190
\n",
+ "
99981.000000
\n",
+ "
298.000000
\n",
+ "
35.000000
\n",
+ "
99.000000
\n",
+ "
5.000000
\n",
+ "
9.000000
\n",
+ "
2893.239678
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Unnamed: 0 Customer Lifetime Value Income \\\n",
+ "count 10910.000000 10910.000000 10910.000000 \n",
+ "mean 5454.500000 8018.241094 37536.284785 \n",
+ "std 3149.590053 6885.081434 30359.195670 \n",
+ "min 0.000000 1898.007675 0.000000 \n",
+ "25% 2727.250000 4014.453113 0.000000 \n",
+ "50% 5454.500000 5771.147235 33813.500000 \n",
+ "75% 8181.750000 8992.779137 62250.750000 \n",
+ "max 10909.000000 83325.381190 99981.000000 \n",
+ "\n",
+ " Monthly Premium Auto Months Since Last Claim \\\n",
+ "count 10910.000000 10277.000000 \n",
+ "mean 93.196059 15.149071 \n",
+ "std 34.442532 10.080349 \n",
+ "min 61.000000 0.000000 \n",
+ "25% 68.000000 6.000000 \n",
+ "50% 83.000000 14.000000 \n",
+ "75% 109.000000 23.000000 \n",
+ "max 298.000000 35.000000 \n",
+ "\n",
+ " Months Since Policy Inception Number of Open Complaints \\\n",
+ "count 10910.000000 10277.000000 \n",
+ "mean 48.091934 0.384256 \n",
+ "std 27.940675 0.912457 \n",
+ "min 0.000000 0.000000 \n",
+ "25% 24.000000 0.000000 \n",
+ "50% 48.000000 0.000000 \n",
+ "75% 71.000000 0.000000 \n",
+ "max 99.000000 5.000000 \n",
+ "\n",
+ " Number of Policies Total Claim Amount \n",
+ "count 10910.000000 10910.000000 \n",
+ "mean 2.979193 434.888330 \n",
+ "std 2.399359 292.180556 \n",
+ "min 1.000000 0.099007 \n",
+ "25% 1.000000 271.082527 \n",
+ "50% 2.000000 382.564630 \n",
+ "75% 4.000000 547.200000 \n",
+ "max 9.000000 2893.239678 "
]
- },
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.describe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "d5e8b4c8-0f90-4ee7-b19e-02c484101bc6",
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "markdown",
- "id": "7050f4ac-53c5-4193-a3c0-8699b87196f0",
- "metadata": {
- "id": "7050f4ac-53c5-4193-a3c0-8699b87196f0"
- },
- "source": [
- "3. Analyze the total number of customers who have policies in each state, and then filter the results to only include states where there are more than 500 customers."
+ "data": {
+ "text/html": [
+ "
"
+ ],
+ "text/plain": [
+ " Policy Type Gender Monthly Premium Auto Customer Lifetime Value \\\n",
+ "0 Corporate Auto F 94.301775 7712.628736 \n",
+ "1 Corporate Auto M 92.188312 7944.465414 \n",
+ "2 Personal Auto F 98.998148 8339.791842 \n",
+ "3 Personal Auto M 91.085821 7448.383281 \n",
+ "4 Special Auto F 92.314286 7691.584111 \n",
+ "5 Special Auto M 86.343750 8247.088702 \n",
+ "\n",
+ " Total Claim Amount \n",
+ "0 433.738499 \n",
+ "1 408.582459 \n",
+ "2 452.965929 \n",
+ "3 457.010178 \n",
+ "4 453.280164 \n",
+ "5 429.527942 "
]
+ },
+ "metadata": {},
+ "output_type": "display_data"
},
{
- "cell_type": "markdown",
- "id": "b42999f9-311f-481e-ae63-40a5577072c5",
- "metadata": {
- "id": "b42999f9-311f-481e-ae63-40a5577072c5"
- },
- "source": [
- "## Bonus"
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
mean
\n",
+ "
median
\n",
+ "
min
\n",
+ "
max
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
Total Claim Amount
\n",
+ "
Total Claim Amount
\n",
+ "
Total Claim Amount
\n",
+ "
Total Claim Amount
\n",
+ "
\n",
+ "
\n",
+ "
Policy Type
\n",
+ "
Gender
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
Corporate Auto
\n",
+ "
F
\n",
+ "
433.738499
\n",
+ "
420.041981
\n",
+ "
7.345946
\n",
+ "
1358.400000
\n",
+ "
\n",
+ "
\n",
+ "
M
\n",
+ "
408.582459
\n",
+ "
364.800000
\n",
+ "
57.712985
\n",
+ "
1324.800000
\n",
+ "
\n",
+ "
\n",
+ "
Personal Auto
\n",
+ "
F
\n",
+ "
452.965929
\n",
+ "
424.330166
\n",
+ "
7.345946
\n",
+ "
1358.400000
\n",
+ "
\n",
+ "
\n",
+ "
M
\n",
+ "
457.010178
\n",
+ "
412.800000
\n",
+ "
57.712985
\n",
+ "
1324.800000
\n",
+ "
\n",
+ "
\n",
+ "
Special Auto
\n",
+ "
F
\n",
+ "
453.280164
\n",
+ "
420.041981
\n",
+ "
56.603330
\n",
+ "
1358.400000
\n",
+ "
\n",
+ "
\n",
+ "
M
\n",
+ "
429.527942
\n",
+ "
345.600000
\n",
+ "
86.461582
\n",
+ "
1027.000029
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " mean median \\\n",
+ " Total Claim Amount Total Claim Amount \n",
+ "Policy Type Gender \n",
+ "Corporate Auto F 433.738499 420.041981 \n",
+ " M 408.582459 364.800000 \n",
+ "Personal Auto F 452.965929 424.330166 \n",
+ " M 457.010178 412.800000 \n",
+ "Special Auto F 453.280164 420.041981 \n",
+ " M 429.527942 345.600000 \n",
+ "\n",
+ " min max \n",
+ " Total Claim Amount Total Claim Amount \n",
+ "Policy Type Gender \n",
+ "Corporate Auto F 7.345946 1358.400000 \n",
+ " M 57.712985 1324.800000 \n",
+ "Personal Auto F 7.345946 1358.400000 \n",
+ " M 57.712985 1324.800000 \n",
+ "Special Auto F 56.603330 1358.400000 \n",
+ " M 86.461582 1027.000029 "
]
- },
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Subset for customers who responded \"Yes\"\n",
+ "yes_df = df[df[\"Response\"] == \"Yes\"]\n",
+ "\n",
+ "# Group by Policy Type and Gender, calculate means\n",
+ "agg_results = yes_df.groupby([\"Policy Type\", \"Gender\"]).agg({\n",
+ " \"Monthly Premium Auto\": \"mean\",\n",
+ " \"Customer Lifetime Value\": \"mean\",\n",
+ " \"Total Claim Amount\": \"mean\"\n",
+ "}).reset_index()\n",
+ "\n",
+ "display(agg_results)\n",
+ "\n",
+ "# Optional: Compare claim amount patterns\n",
+ "pivot_claims = yes_df.pivot_table(index=[\"Policy Type\", \"Gender\"], values=\"Total Claim Amount\", aggfunc=[\"mean\", \"median\", \"min\", \"max\"])\n",
+ "display(pivot_claims)\n",
+ "\n",
+ "# Discussion:\n",
+ "# - Segments with higher average lifetime value and lower claim amounts are most profitable/low-risk."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "9fa29403-98ba-4cb4-835a-325b2006ef24",
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "markdown",
- "id": "81ff02c5-6584-4f21-a358-b918697c6432",
- "metadata": {
- "id": "81ff02c5-6584-4f21-a358-b918697c6432"
- },
- "source": [
- "5. The marketing team wants to analyze the number of policies sold by state and month. Present the data in a table where the months are arranged as columns and the states are arranged as rows."
+ "data": {
+ "text/plain": [
+ "State\n",
+ "California 3552\n",
+ "Oregon 2909\n",
+ "Arizona 1937\n",
+ "Nevada 993\n",
+ "Washington 888\n",
+ "Name: count, dtype: int64"
]
+ },
+ "metadata": {},
+ "output_type": "display_data"
},
{
- "cell_type": "markdown",
- "id": "b6aec097-c633-4017-a125-e77a97259cda",
- "metadata": {
- "id": "b6aec097-c633-4017-a125-e77a97259cda"
- },
- "source": [
- "6. Display a new DataFrame that contains the number of policies sold by month, by state, for the top 3 states with the highest number of policies sold.\n",
- "\n",
- "*Hint:*\n",
- "- *To accomplish this, you will first need to group the data by state and month, then count the number of policies sold for each group. Afterwards, you will need to sort the data by the count of policies sold in descending order.*\n",
- "- *Next, you will select the top 3 states with the highest number of policies sold.*\n",
- "- *Finally, you will create a new DataFrame that contains the number of policies sold by month for each of the top 3 states.*"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "---------------------------\n"
+ ]
},
{
- "cell_type": "markdown",
- "id": "ba975b8a-a2cf-4fbf-9f59-ebc381767009",
- "metadata": {
- "id": "ba975b8a-a2cf-4fbf-9f59-ebc381767009"
- },
- "source": [
- "7. The marketing team wants to analyze the effect of different marketing channels on the customer response rate.\n",
- "\n",
- "Hint: You can use melt to unpivot the data and create a table that shows the customer response rate (those who responded \"Yes\") by marketing channel."
+ "data": {
+ "text/plain": [
+ "State\n",
+ "California 3552\n",
+ "Oregon 2909\n",
+ "Arizona 1937\n",
+ "Nevada 993\n",
+ "Washington 888\n",
+ "Name: count, dtype: int64"
]
+ },
+ "metadata": {},
+ "output_type": "display_data"
},
{
- "cell_type": "markdown",
- "id": "e4378d94-48fb-4850-a802-b1bc8f427b2d",
- "metadata": {
- "id": "e4378d94-48fb-4850-a802-b1bc8f427b2d"
- },
- "source": [
- "External Resources for Data Filtering: https://towardsdatascience.com/filtering-data-frames-in-pandas-b570b1f834b9"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "---------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Number of policies per state, only states with >500 customers\n",
+ "# Count policies by state\n",
+ "state_counts = df[\"State\"].value_counts()\n",
+ "display(state_counts)\n",
+ "print('---------------------------')\n",
+ "states_over_500 = state_counts[state_counts > 500]\n",
+ "display(states_over_500)\n",
+ "print('---------------------------')\n",
+ "# Optionally, show filtered DataFrame\n",
+ "# df_states_500 = df[df[\"State\"].isin(states_over_500.index)]\n",
+ "# display(df_states_500[\"State\"].value_counts())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "caecdc93-d1e3-4592-b913-be416156f7a5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
Education
\n",
+ "
Gender
\n",
+ "
max
\n",
+ "
min
\n",
+ "
median
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
Bachelor
\n",
+ "
F
\n",
+ "
73225.95652
\n",
+ "
1904.000852
\n",
+ "
5640.505303
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
Bachelor
\n",
+ "
M
\n",
+ "
67907.27050
\n",
+ "
1898.007675
\n",
+ "
5548.031892
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
College
\n",
+ "
F
\n",
+ "
61850.18803
\n",
+ "
1898.683686
\n",
+ "
5623.611187
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
College
\n",
+ "
M
\n",
+ "
61134.68307
\n",
+ "
1918.119700
\n",
+ "
6005.847375
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
Doctor
\n",
+ "
F
\n",
+ "
44856.11397
\n",
+ "
2395.570000
\n",
+ "
5332.462694
\n",
+ "
\n",
+ "
\n",
+ "
5
\n",
+ "
Doctor
\n",
+ "
M
\n",
+ "
32677.34284
\n",
+ "
2267.604038
\n",
+ "
5577.669457
\n",
+ "
\n",
+ "
\n",
+ "
6
\n",
+ "
High School or Below
\n",
+ "
F
\n",
+ "
55277.44589
\n",
+ "
2144.921535
\n",
+ "
6039.553187
\n",
+ "
\n",
+ "
\n",
+ "
7
\n",
+ "
High School or Below
\n",
+ "
M
\n",
+ "
83325.38119
\n",
+ "
1940.981221
\n",
+ "
6286.731006
\n",
+ "
\n",
+ "
\n",
+ "
8
\n",
+ "
Master
\n",
+ "
F
\n",
+ "
51016.06704
\n",
+ "
2417.777032
\n",
+ "
5729.855012
\n",
+ "
\n",
+ "
\n",
+ "
9
\n",
+ "
Master
\n",
+ "
M
\n",
+ "
50568.25912
\n",
+ "
2272.307310
\n",
+ "
5579.099207
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Education Gender max min median\n",
+ "0 Bachelor F 73225.95652 1904.000852 5640.505303\n",
+ "1 Bachelor M 67907.27050 1898.007675 5548.031892\n",
+ "2 College F 61850.18803 1898.683686 5623.611187\n",
+ "3 College M 61134.68307 1918.119700 6005.847375\n",
+ "4 Doctor F 44856.11397 2395.570000 5332.462694\n",
+ "5 Doctor M 32677.34284 2267.604038 5577.669457\n",
+ "6 High School or Below F 55277.44589 2144.921535 6039.553187\n",
+ "7 High School or Below M 83325.38119 1940.981221 6286.731006\n",
+ "8 Master F 51016.06704 2417.777032 5729.855012\n",
+ "9 Master M 50568.25912 2272.307310 5579.099207"
]
- },
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "clv_stats = df.groupby([\"Education\", \"Gender\"])[\"Customer Lifetime Value\"].agg([\"max\", \"min\", \"median\"]).reset_index()\n",
+ "display(clv_stats)\n",
+ "\n",
+ "# Conclusion:\n",
+ "# - \"Bachelor\" educated females have the highest max CLV.\n",
+ "# - The median CLV is generally higher for females across most education levels, indicating better long-term value.\n",
+ "# - Segments with high median and low minimum CLV can be targeted for premium policies."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "2804c565-f758-4225-a5eb-3273afae83d1",
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": null,
- "id": "449513f4-0459-46a0-a18d-9398d974c9ad",
- "metadata": {
- "id": "449513f4-0459-46a0-a18d-9398d974c9ad"
- },
- "outputs": [],
- "source": [
- "# your code goes here"
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAaDJJREFUeJzt/Qe4VNX5P24vOooCCiJYUIyxYC+JvRfsja9Go4KKvUWNjaio2DXWWIgNrFETe4m9d8WGvQSDDTEqYgERmPd61u8/8845HODQ9kHOfV/XcJi99+w2u35mrbWblEqlUgIAAACAAjUtcmIAAAAAEIRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAExk0UUXTXvssUfl/eOPP56aNGmS/9J4nHTSSfl7rzZu3Lh09NFHp4UXXjg1bdo0bbfddjNkWo1hG4t9Kvaton388cd53f71r39Ns7LyfA4aNCjNqhrDdjot4juL9RLf4awi5ieOYb9mDXXMACiSUApgFr/Ij9fTTz89Uf9SqZSDgei/1VZbpdnd7bffnjbffPPUsWPH1LJly7TAAguknXbaKT366KMzZXo//fRTvqGZXW8+119//bTssstO9eeuvvrqdM4556T/+7//S9dcc006/PDDp+rzl1566SwdOoRXXnkl71fHH3/8JIf54IMP8jBHHHFEofP2azlm1fV6/vnn06/FrLidTus+y5SNGjUqnXbaaWnVVVdN7dq1S61atUqLLLJI+sMf/pDuvffehp49gNla84aeAQAmr3Xr1unGG29Ma6+9do3uTzzxRPr000/zxfPMtu6666bRo0fnMKhoEb7ttdde+QZxpZVWyiFA586d0xdffJGDqo022ig988wzac0115zhodTJJ59cuRlsjCKUOfbYY2t0ixBwwQUXTOeff/403+xHsFhdEq+ht7HaVl555bTUUkulf/zjH+nUU0+tc5jYJ8Nuu+1W8NzN+vr375+6des2UffFF188/Vr8GrZTZowPP/ww9ejRI/33v/9N22+/ferVq1eaa6650ieffJLuu+++/KPPtddem3bfffeGnlWA2ZJQCmAWt8UWW6R//vOf6aKLLkrNmzevcVO8yiqrpP/9738zfR6imlaEYw3h3HPPzYHUYYcdls47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8/sYX3ndTspXX32Vh4lx1rbiiiuWOnXqVPr6668r3V5//fVS06ZNS7169Zpofvbdd99Kt3HjxpUWWmihvJ7OPPPMSvdvv/22NMccc9RY79ddd10eZ3yn1QYMGJDH+8wzz1S6xfsY9q233irVx3rrrVdaZpllpnp91vW5+m5zIT4b46itrm0shotuN954Y6Xbu+++W1nW559/vtL9gQceyN3juy7r06dPqUuXLqX//e9/Naa18847l9q1a1fnNlztkksuyeOMcZeNHz++tOCCC5bWWGONSre6xrPffvuV5pxzztKYMWMq3eK7jf11csscYjutvSwbbbRRabnllqsxvthv11xzzdJvf/vbyS5HeXyxfX366aeV7i+88ELufvjhh1e67bLLLqUFFlggL2fZK6+8MtH81KW8n9X1atWqVWW4O+64I3c7++yza+wX66yzzkTTiW2gru2l9rp89NFH82cPPfTQiYatPr7V9V316NGjtNhii9XoVt/tdOzYsflYsOyyy5ZGjx5dGe6ee+7Jw/Xr12+GHAvrs89+//33pfbt25f22WefGt2HDx+et/fq7rH91p7miy++mOfv2muvray32LZi/dReh926dSttsskmkzzGTkpd6/8f//hH/uyTTz450bFnr732qjHs9ttvX+rQoUPl/WuvvZaHO/DAA2sM98c//nGSx+/a6z7WWW0//PBDPgeUX999912l3ymnnFJq06ZN6f3336/xmWOPPbbUrFmz0rBhw2rsdzG/33zzTWW4O++8M3e/++67a5xT4lg1cuTISrcHH3wwD1e9nU/NsTY+F92iH8CsTEkpgF+B+IU4qrLdc889+Vfj+DupqntRgimqOcQvo9UlFaL0Rvx6HtWvQpQeiWqAhxxySI0qb1HSoD6q26WIUioxjShZEvlIXdV/9t9//xrvo3pJ/GI+OfHrfIgqGTNSuU2kWI+1f1mekmhg/bXXXstVSqIaVdnyyy+f13k0jFtb/JJfFqUpoipFrKco2VE9T1EFrXqdxHcZJZGixEb1dxmlFEL5uyyLX++jOlLR6rvNTYv4fHWJwFhHsa5ivUTpqbLy/8vrL9bvrbfemkuYxf+r5ytKFERpnnjK3uREibModVFdhS+qdEX1q3LVvdr7QuyfMY3YvqNERVS5m15RWjBKrJRLjVSXPopliScB1qdaXZS+qC7pFNVe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O++8pebNm+d5/sMf/lB6/PHHaww3ePDg0mqrrVZq2bJlqWvXrqXzzjtvoseVxyPud9lll9w/HlUfj3TfaqutSi+//HKNcT377LN5Hca4aj9e/OGHHy6ttdZaeb21bdu2tPXWW+d1UtcyxiPFq01qndT1yPd45PxZZ52Vu8e8zjPPPHme4nurfkx5TOeggw6q9/qMacVn6npttNFGNeZ/SvM4NdtcPJ4+ttfoH+OO8U1qG5vUtCa1zde1Dr788svcbeGFFy61aNGi1Llz57x8Ma/1NW7cuLy9xfjvu+++ifo/88wzpdVXXz0v9wILLJCX+YEHHphoeeJ7r368e4hto2fPnqU555wzf7f77bdf3gdr70fho48+KvXq1SsvQyzLggsumLfb2Dcmp/xo+nPOOad07rnn5nUR29I666yT99m6fPHFF/nx9ksssUS911N5P5vUq3p5vv7669Luu++e95127drl/7/66qt1Lvf1119fWmyxxfJ+uOKKK+Z1W9e6jO8plnGppZbKw84333ylzTffPB8Tyu66667S8ssvX2rdunVp0UUXzfvW1VdfXeP4MLXbabj55ptLK620Ul6vcYzaddddS59++mmNYab3WFiffbY8jz169MjrNZbzN7/5TWmPPfaY6PgWrrjiivz5WM7Ro0fXOd34XnbYYYdShw4d8vLFet9pp51KjzzySGWY2sfYSYl1sv3225fat2+f52/HHXfMx4fax9dJHTvrmk7M96GHHprnL9ZvHIs/+eSTicY5OSNHjiz1798/f4dxTovtJ/aT//u//yvdfffdEw3//fffl/r27VtafPHF87BxDlxzzTVLf/3rX/Mxu/Z+V1td83brrbeWll566byOu3fvXrrtttvq3M7re6yd1HESYFbTJP5p6GAMAIBZRzxmPqoVRds/k3riHwDA9NKmFAAANQwaNChXFY2qYAAAM4s2pQAAyB599NHcuHI8kXK77bab6Ml8AAAzkup7AABk8ZS/eHBANIodT7aMxqgBAGYWoRQAAAAAhdOmFAAAAACFE0oBAAAAUDgNndfDhAkT0ueff57mnnvu1KRJk4aeHQAAAIBZVrQU9f3336cFFlggNW066fJQQql6iEBq4YUXbujZAAAAAPjV+OSTT9JCCy00yf5CqXqIElLlldm2bduGnh0AAACAWdaoUaNy4Z5ynjIpQql6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PfdM++67b7rxxhtz/1GjRqVNN900B1oDBgxIQ4YMSXvttVcOsGI4AACYXaxy1LUNPQuztdvnbug5AJh9NGgoddZZZ+VSSwMHDqx0i+CpupTUBRdckI4//vi07bbb5m7XXnttmn/++dMdd9yRdt555/TOO++k+++/P7300ktp1VVXzcP87W9/S1tssUX661//mhZYYIF0ww03pLFjx6arr746tWzZMi2zzDLptddeS+edd55QCgAAAKCxhVJ33XVXLvUULbs/8cQTacEFF0wHHnhg2meffXL/oUOHpuHDh+cSTmXt2rVLq622WnruuedyKBV/o8RTOZAKMXzTpk3TCy+8kLbffvs8zLrrrpsDqbKYboRiUVqrumRW+Pnnn/OrLEpaAQAAANTX4HN6pVndoEGDGm8o9Z///Ce38H7EEUekv/zlL7m006GHHprDo969e+dAKkTJqGrxvtwv/nbq1KlG/+bNm6d55523xjDVJbCqxxn9aodSZ5xxRjr55JNnwhIDzP6G9V+uoWdhtte135CGngUAAPh1N3Q+YcKEtPLKK6fTTz89rbTSSrkqXZSSinafGlLfvn3Td999V3l98sknDTo/AAAAALObBg2l4ol63bt3r9Ft6aWXTsOGDcv/79y5c/775Zdf1hgm3pf7xd8RI0bU6D9u3Lj8RL7qYeoaR/U0qrVq1So/ya/6BQAAAMBsEkrFk/fee++9Gt3ef//9tMgii+T/R5W7CI0eeeSRGu07RVtRa6yxRn4ff0eOHJkGDx5cGebRRx/NpbCi7anyME8++WR+Ml9ZPKlvySWXnKjqHgAAAACzeSh1+OGHp+effz5X3/vwww/TjTfemC6//PJ00EEH5f5NmjRJhx12WDr11FNzo+hDhgxJvXr1yk/U22677SolqzbbbLNc7e/FF19MzzzzTDr44INzI+gxXPjjH/+Y26nq06dPeuutt9LNN9+cLrzwwtyWFQAAAACNrKHz3/3ud+n222/PbTj1798/l4y64IIL0q677loZ5uijj04//vhjbm8qSkStvfba6f7770+tW7euDHPDDTfkIGqjjTbKT93r2bNnuuiii2o8se/BBx/MYdcqq6ySOnbsmPr165fHCQAAAEAjC6XCVlttlV+TEqWlIrCK16TEk/ailNXkLL/88umpp56arnkFAAAAYDaovgcAAABA4ySUAgAAAKBwQikAAAAAGl+bUgAAAACzm2H9lyt0el37DZnqz+yxxx7pmmuuSfvtt18aMGBAjX7xsLhLL7009e7dOw0aNCjNDEpKAQAAADRSCy+8cLrpppvS6NGjK93GjBmTHyjXtWvXmTptoRQAAABAI7XyyivnYOq2226rdIv/RyC10korzdRpC6UAAAAAGrG99torDRw4sPL+6quvTnvuuedMn65QCgAAAKAR22233dLTTz+d/vvf/+bXM888k7vNbBo6BwAAAGjE5ptvvrTlllvmBs1LpVL+f8eOHWf6dIVSAAAAAI3cXnvtlQ4++OD8/0suuaSQaQqlAAAAABq5zTbbLI0dOzY1adIk9ejRo5BpCqUAAAAAGrlmzZqld955p/L/IgilAAAAAEht27YtdHpCKQAAAIAZrGu/IWlWN2jQoMn2v+OOO2bq9IVSAAAAMI1WOerahp6F2drgc3o19CwwEzWdmSMHAAAAgLoIpQAAAAAonFAKAAAAgMIJpQAAAACmU6lUSo1JaQYsr1AKAAAAYBq1aNEi//3pp59SY/LT/7e85eWfFp6+BwAAADCNmjVrltq3b59GjBiR388555ypSZMmaXYuIfXTTz/l5Y3ljuWfVkKpWYBHiM5cHiEKAADAzNS5c+f8txxMNQbt27evLPe0EkoBjY4geOa6fe6GngMAAChWlIzq0qVL6tSpU/rll1/S7K5FixbTVUKqTCgFAAAAMANEUDMjwprGQkPnAAAAABROSSkAAABgljSs/3INPQuzva79hjTYtIVSAAC/Yi7WZ++LdQCYnam+BwAAAEDhlJRitucX5JnLr8cAAABMCyWlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAAChc8+InCQA0JqscdW1Dz8Js7fa5G3oOAACmjZJSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4wqlTjrppNSkSZMar6WWWqrSf8yYMemggw5KHTp0SHPNNVfq2bNn+vLLL2uMY9iwYWnLLbdMc845Z+rUqVM66qij0rhx42oM8/jjj6eVV145tWrVKi2++OJp0KBBhS0jAAAAALNgSallllkmffHFF5XX008/Xel3+OGHp7vvvjv985//TE888UT6/PPP0w477FDpP378+BxIjR07Nj377LPpmmuuyYFTv379KsMMHTo0D7PBBhuk1157LR122GFp7733Tg888EDhywoAAADA/9M8NbDmzZunzp07T9T9u+++S1dddVW68cYb04Ybbpi7DRw4MC299NLp+eefT6uvvnp68MEH09tvv50efvjhNP/886cVV1wxnXLKKemYY47JpbBatmyZBgwYkLp165bOPffcPI74fARf559/furRo0fhywsAAADALFBS6oMPPkgLLLBAWmyxxdKuu+6aq+OFwYMHp19++SVtvPHGlWGjal/Xrl3Tc889l9/H3+WWWy4HUmURNI0aNSq99dZblWGqx1EepjwOAAAAABpZSanVVlstV7dbcsklc9W9k08+Oa2zzjrpzTffTMOHD88lndq3b1/jMxFARb8Qf6sDqXL/cr/JDRPB1ejRo9Mcc8wx0Xz9/PPP+VUWwwIAAAAwm4RSm2++eeX/yy+/fA6pFllkkXTLLbfUGRYV5YwzzsgBGQAAAACzafW9alEqaokllkgffvhhbmcqGjAfOXJkjWHi6XvlNqjib+2n8ZXfT2mYtm3bTjL46tu3b27Tqvz65JNPZuhyAgAAADR2s1Qo9cMPP6SPPvoodenSJa2yyiqpRYsW6ZFHHqn0f++993KbU2ussUZ+H3+HDBmSRowYURnmoYceyoFT9+7dK8NUj6M8THkcdWnVqlUeR/ULAAAAgNkklDryyCPTE088kT7++OP07LPPpu233z41a9Ys7bLLLqldu3apT58+6YgjjkiPPfZYbvh8zz33zGFSPHkvbLrppjl82n333dPrr7+eHnjggXT88cengw46KAdLYf/990//+c9/0tFHH53efffddOmll+bqgYcffnhDLjoAAABAo9agbUp9+umnOYD6+uuv03zzzZfWXnvt9Pzzz+f/h/PPPz81bdo09ezZMzc8Hk/Ni1CpLAKse+65Jx1wwAE5rGrTpk3q3bt36t+/f2WYbt26pXvvvTeHUBdeeGFaaKGF0pVXXpnHBQAAAEAjDKVuuummyfZv3bp1uuSSS/JrUqJh9Pvuu2+y41l//fXTq6++Os3zCQAAAMBs3KYUAAAAAI2DUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAxhtKnXnmmalJkybpsMMOq3QbM2ZMOuigg1KHDh3SXHPNlXr27Jm+/PLLGp8bNmxY2nLLLdOcc86ZOnXqlI466qg0bty4GsM8/vjjaeWVV06tWrVKiy++eBo0aFBhywUAAADALBpKvfTSS+nvf/97Wn755Wt0P/zww9Pdd9+d/vnPf6Ynnngiff7552mHHXao9B8/fnwOpMaOHZueffbZdM011+TAqV+/fpVhhg4dmofZYIMN0muvvZZDr7333js98MADhS4jAAAAALNQKPXDDz+kXXfdNV1xxRVpnnnmqXT/7rvv0lVXXZXOO++8tOGGG6ZVVlklDRw4MIdPzz//fB7mwQcfTG+//Xa6/vrr04orrpg233zzdMopp6RLLrkkB1VhwIABqVu3buncc89NSy+9dDr44IPT//3f/6Xzzz+/wZYZAAAAoLFr8FAqqudFSaaNN964RvfBgwenX375pUb3pZZaKnXt2jU999xz+X38XW655dL8889fGaZHjx5p1KhR6a233qoMU3vcMUx5HHX5+eef8ziqXwAAAADMOM1TA7rpppvSK6+8kqvv1TZ8+PDUsmXL1L59+xrdI4CKfuVhqgOpcv9yv8kNE0HT6NGj0xxzzDHRtM8444x08sknz4AlBAAAAGCWKin1ySefpD/96U/phhtuSK1bt06zkr59++bqg+VXzCsAAAAAs0EoFdXzRowYkZ+K17x58/yKxswvuuii/P8ozRTtQo0cObLG5+Lpe507d87/j7+1n8ZXfj+lYdq2bVtnKakQT+mL/tUvAAAAAGaDUGqjjTZKQ4YMyU/EK79WXXXV3Oh5+f8tWrRIjzzySOUz7733Xho2bFhaY4018vv4G+OIcKvsoYceyiFS9+7dK8NUj6M8THkcAAAAADSiNqXmnnvutOyyy9bo1qZNm9ShQ4dK9z59+qQjjjgizTvvvDloOuSQQ3KYtPrqq+f+m266aQ6fdt9993T22Wfn9qOOP/743Hh6lHYK+++/f7r44ovT0Ucfnfbaa6/06KOPpltuuSXde++9DbDUAAAAADR4Q+dTcv7556emTZumnj175ifixVPzLr300kr/Zs2apXvuuScdcMABOayKUKt3796pf//+lWG6deuWA6jDDz88XXjhhWmhhRZKV155ZR4XAAAAAA1jlgqlHn/88RrvowH0Sy65JL8mZZFFFkn33XffZMe7/vrrp1dffXWGzScAAAAAv9I2pQAAAABovIRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAADArBtKvfnmmzN3TgAAAABoNOodSi2//PJptdVWS1dccUX6/vvvZ+5cAQAAADBbq3co9cQTT6Rlllkm/fnPf05dunRJvXv3Tk899dTMnTsAAAAAGncotc4666Srr746ffHFF+lvf/tb+vjjj9N6662XllhiiXTWWWel4cOHz9w5BQAAAKDxNnTepk2btOeee+aSU++//37acccd0yWXXJK6du2attlmm5kzlwAAAADMVqbr6XuLL754+stf/pKOP/74NPfcc6d77713xs0ZAAAAALOt5tP6wSeffDJX57v11ltT06ZN00477ZT69OkzY+cOAAAAgNnSVIVSn3/+eRo0aFB+ffjhh2nNNddMF110UQ6kolofAAAAAMzQUGrzzTdPDz/8cOrYsWPq1atX2muvvdKSSy5Z6T9y5Mh03333pT/+8Y/1HSUAAAAAjVS9Q6kWLVqkf/3rX2mrrbZKzZo1m6j/f//737T77rsLpQAAAACYcaHUXXfdVd9BAQAAAGDmPX0PAAAAAKaFUAoAAACAWbf6Xjxlb3I+++yzGTE/AAAAADQC9Q6lzj///CkO07Vr1+mdHwAAAAAagXqHUkOHDp25cwIAAABAo6FNKQAAAABm3VDq0UcfTd27d0+jRo2aqN93332XlllmmfTkk0/O6PkDAAAAoDGHUhdccEHaZ599Utu2bSfq165du7TffvvVq90pAAAAAKh3KPX666+nzTbbbJL9N9100zR48OAZNV8AAAAAzMbqHUp9+eWXqUWLFpPs37x58/TVV1/NqPkCAAAAYDZW71BqwQUXTG+++eYk+7/xxhupS5cuM2q+AAAAAJiN1TuU2mKLLdIJJ5yQxowZM1G/0aNHpxNPPDFttdVWM3r+AAAAAJgNNa/vgMcff3y67bbb0hJLLJEOPvjgtOSSS+bu7777brrkkkvS+PHj03HHHTcz5xUAAACAxhZKzT///OnZZ59NBxxwQOrbt28qlUq5e5MmTVKPHj1yMBXDAAAAAMAMC6XCIossku6777707bffpg8//DAHU7/97W/TPPPMMzWjAQAAAKCRm6pQqixCqN/97nczfm4AAAAAaBTq3dA5AAAAAMwoQikAAAAACieUAgAAAKBwQikAAAAAfh0NnX/wwQfpscceSyNGjEgTJkyo0a9fv34zat4AAAAAmE1NdSh1xRVXpAMOOCB17Ngxde7cOTVp0qTSL/4vlAIAAABghodSp556ajrttNPSMcccM7UfBQAAAIBpa1Pq22+/TTvuuOPUfgwAAAAApj2UikDqwQcfnNqPAQAAAMC0V99bfPHF0wknnJCef/75tNxyy6UWLVrU6H/ooYdO7SgBAAAAaGSmOpS6/PLL01xzzZWeeOKJ/KoWDZ0LpQAAAACY4aHU0KFDp/YjAAAAADB9bUoBAAAAQOElpcKnn36a7rrrrjRs2LA0duzYGv3OO++86Z4pAAAAAGZvUx1KPfLII2mbbbZJiy22WHr33XfTsssumz7++ONUKpXSyiuvPHPmEgAAAIDGXX2vb9++6cgjj0xDhgxJrVu3Trfeemv65JNP0nrrrZd23HHHmTOXAAAAADTuUOqdd95JvXr1yv9v3rx5Gj16dH4aX//+/dNZZ501M+YRAAAAgMYeSrVp06bSjlSXLl3SRx99VOn3v//9b8bOHQAAAACzpaluU2r11VdPTz/9dFp66aXTFltskf785z/nqny33XZb7gcAAAAAMzyUiqfr/fDDD/n/J598cv7/zTffnH7729968h4AAAAAMyeUiqfuVVflGzBgwNSOAgAAAIBGbqrblAIAAACAQkpKzTvvvOn9999PHTt2TPPMM09q0qTJJIf95ptvpnumAAAAAJi91SuUOv/889Pcc8+d/3/BBRfM7HkCAAAAYDZXr1Cqd+/edf4fAAAAAGZaKDVq1Kh6j7Bt27bTNCMAAAAANB71CqXat28/2Xakqo0fP3565wkAAACA2Vy9QqnHHnus8v+PP/44HXvssWmPPfZIa6yxRu723HPPpWuuuSadccYZM29OAQAAAGhcodR6661X+X///v3Teeedl3bZZZdKt2222SYtt9xy6fLLL9fmFAAAAABT1DRNpSgVteqqq07UPbq9+OKLUzs6AAAAABqhqQ6lFl544XTFFVdM1P3KK6/M/QAAAABghodS559/fvrb3/6Wq+vtvffe+bX88svnbtFvalx22WX5s/HEvnhFG1X//ve/K/3HjBmTDjrooNShQ4c011xzpZ49e6Yvv/yyxjiGDRuWttxyyzTnnHOmTp06paOOOiqNGzeuxjCPP/54WnnllVOrVq3S4osvngYNGjS1iw0AAABAQ4ZSW2yxRXr//ffT1ltvnb755pv8iv9Ht+g3NRZaaKF05plnpsGDB6eXX345bbjhhmnbbbdNb731Vu5/+OGHp7vvvjv985//TE888UT6/PPP0w477FDjSX8RSI0dOzY9++yzubH1CJz69etXGWbo0KF5mA022CC99tpr6bDDDstB2gMPPDC1iw4AAABAkQ2d1xbV9E4//fTpnniEWdVOO+20XHrq+eefz4HVVVddlW688cYcVoWBAwempZdeOvdfffXV04MPPpjefvvt9PDDD6f5558/rbjiiumUU05JxxxzTDrppJNSy5Yt04ABA1K3bt3Sueeem8cRn3/66adzqa4ePXpM9zIAAAAAUEBJqfDUU0+l3XbbLa255prps88+y92uu+66HPZMqyj1dNNNN6Uff/wxV+OL0lO//PJL2njjjSvDLLXUUqlr1665sfUQf6MaYQRSZRE0jRo1qlLaKoapHkd5mPI46vLzzz/ncVS/AAAAAGjAUOrWW2/Noc4cc8yRXnnllRzghO+++26aSk8NGTIktxcV7T3tv//+6fbbb0/du3dPw4cPzyWd2rdvX2P4CKCiX4i/1YFUuX+53+SGiaBp9OjRdc7TGWeckdq1a1d5acAdAAAAoIFDqVNPPTVXiYsn8LVo0aLSfa211soh1dRacsklc1tPL7zwQjrggANS7969c5W8htS3b98cspVfn3zySYPODwAAAEBq7G1Kvffee2ndddedqHuUKBo5cuRUz0CUhoon4oVVVlklvfTSS+nCCy9Mf/jDH3ID5jHO6tJS8fS9zp075//H3xdffLHG+MpP56sepvYT++J9PO0vSnvVJUptxQsAAACAWaSkVIQ8H3744UTdoz2pxRZbbLpnaMKECblKYARUURLrkUceqRGIDRs2LLc5FeJvVP8bMWJEZZiHHnooB05RBbA8TPU4ysOUxwEAAADAr6Ck1D777JP+9Kc/pauvvjo1adIkff7557nR8COPPDKdcMIJU11NbvPNN8+Nl3///ff5SXuPP/54euCBB3LJqz59+qQjjjgizTvvvDloOuSQQ3KYFE/eC5tuumkOn3bfffd09tln5/ajjj/++HTQQQdVSjpFO1UXX3xxOvroo9Nee+2VHn300XTLLbeke++9d2oXHQAAAICGCqWOPfbYXJppo402Sj/99FOuyhcBUIRSERpNjSjh1KtXr/TFF1/kEGr55ZfPgdQmm2yS+59//vmpadOmqWfPnrn0VDSwfumll1Y+36xZs3TPPffktqgirGrTpk1uk6p///6VYbp165YDqMMPPzxXC1xooYXSlVdemccFAAAAwK8klIrSUccdd1w66qijcjW+H374IZdWiifoTa2rrrpqsv1bt26dLrnkkvyalEUWWSTdd999kx3P+uuvn1599dWpnj8AAAAAZpFQqrqB8nK7TQAAAAAwU0KpaI+pPqKtKQAAAACYIaHUoEGDclW5lVZaKZVKpfp+DAAAAACmPZSKxsT/8Y9/pKFDh6Y999wz7bbbbvmpeAAAAAAwtZrWd8BobDyeknf00Uenu+++Oy288MJpp512yk/LU3IKAAAAgJkSSoVWrVqlXXbZJT300EPp7bffTssss0w68MAD06KLLpqfwgcAAAAAMzyUqvHBpk1TkyZNcimp8ePHT+toAAAAAGiEpiqU+vnnn3O7UptssklaYokl0pAhQ9LFF1+chg0bluaaa66ZN5cAAAAANM6GzqOa3k033ZTbktprr71yONWxY8eZO3cAAAAANO5QasCAAalr165pscUWS0888UR+1eW2226bkfMHAAAAQGMOpXr16pXbkAIAAACAwkKpQYMGTffEAAAAAGC6nr4HAAAAANNKKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAABROKAUAAABA4YRSAAAAADSuUOqMM85Iv/vd79Lcc8+dOnXqlLbbbrv03nvv1RhmzJgx6aCDDkodOnRIc801V+rZs2f68ssvawwzbNiwtOWWW6Y555wzj+eoo45K48aNqzHM448/nlZeeeXUqlWrtPjii6dBgwYVsowAAAAAzGKh1BNPPJEDp+effz499NBD6Zdffkmbbrpp+vHHHyvDHH744enuu+9O//znP/Pwn3/+edphhx0q/cePH58DqbFjx6Znn302XXPNNTlw6tevX2WYoUOH5mE22GCD9Nprr6XDDjss7b333umBBx4ofJkBAAAASKl5Q078/vvvr/E+wqQo6TR48OC07rrrpu+++y5dddVV6cYbb0wbbrhhHmbgwIFp6aWXzkHW6quvnh588MH09ttvp4cffjjNP//8acUV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xQ+dN910Uxo9enSl25gxY9KNN96YunbtmmY1v/zyS0PPQqMnlKJwUSqjc+fO+RXVf4499tj0ySefpK+++ir3P+aYY9ISSyyR5pxzzlyK44QTTpjoYHH33Xen3/3ud6l169apY8eOafvtt6/R/6effkp77bVXmnvuufPB7/LLL6/RP6YXJ+0orhy/tm277bb5BmFSfv7553TooYfmC6+Y5tprr51eeumliX45jBuMuNmPZXz66adn0BqDGevAAw/M2+uLL76Yevbsmfe3ZZZZJh1xxBHp+eefz8MMGzYs7xfxy2tc9Mb+8uWXX9Z7GlHq44wzzkjdunXLNy0rrLBC+te//lVjmLvuuiv99re/zftU3Jhfc801NX6BD7EfrbPOOnkccZET++GPP/44A9cGNMw5cMEFF0wrr7xy+stf/pLuvPPOfP6Ikg/13f8mdR5cf/3103//+990+OGHV0pQlN166615X495iNJU5557bo1xRre46e/Vq1eebtz0w9RW/Tr11FPz9VJcg+299975Oq+6unfZX//619SlS5dcaj5+EJncjWGcL+LcteOOO+bzSpxT+vTpk4488sga552zzz47Lb744nkbj+u/0047rcZ4/vOf/+TzTVxjxjiee+65Gv2ntI98++23ef+YZ5558jg233zz9MEHH0zVOosfgjbccMN8Xotlj/3shx9+mKiUWsz7AgsskJZccslJjiv27/I1dZxPY903bdq0Rg2EuIaN9RTHnDZt2uQSZnHdOjmXXXZZ+s1vfpNatmyZp3/ddddV+sW4qn9MjlKZMR/x41ZZfAeNuRRbYxfntrhmqy61F/+PfXKllVaqdIttJu6p4hgS+0JsVx999FGNQPbggw/Ox4k41y2yyCL52jLE/hni3BfbX/l9iHNqzEN8Ju4lI9Su/tEnho9tfJtttsn7RO3jBMUTStGg4iR8/fXX55NXHIxCXMTERU78EnbhhRemK664Iv86VnbvvffmA9AWW2yRfxWK0la///3va4w3LiJWXXXV3D8uYg444IDKr0Zx0RO/JMV0nnrqqfTMM8/kC//49XpSv0YdffTR+UIlbppfeeWVPL8xjm+++abGcHHhFcXL33nnnbT88svPhDUG0ye22bgIiBuAOBHXFhcGcWEfN8Qx7BNPPJEeeuihfCEf1TTqKy4arr322jRgwID01ltv5Rvk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gw8+SOuuu25q3bp16t69e3rooYdqfP7xxx/PJYlGjhxZ6RYlmqJblHAqe+aZZ9L666+f5pxzzjz+Hj16pG+//Tb3u//++9Paa6+dq6h16NAhbbXVVumjjz6qfLZbt27570orrZTHG+Opq/rezz//nA499NDUqVOnPL8xzpdeemmieX3kkUfSqquumudlzTXXTO+99950rcMrr7wyLb300nmaSy21VLr00ksr/WL8xxxzTI3hv/rqq9SiRYv05JNPVub7yCOPTAsuuGBq06ZNWm211fK8AgCNj1AKACClNGHChLTDDjukli1bphdeeCENGDBgooClPiKk2mijjXKo9dxzz6Wnn346bb311mn8+PG5/48//piOOOKI9PLLL+fAqGnTpmn77bfP0w8vvvhi/vvwww+nL774It122211Tufoo49Ot956a7rmmmvSK6+8khZffPEcfn3zzTc1hjvuuOPSueeem6fXvHnztNdee6VpdcMNN6R+/fql0047Lb3zzjvp9NNPTyeccEKeh7Drrrumm266KZVKpcpnbr755rTAAgukddZZJ78/+OCD83qJ4d54442044475hJsEQgCAI2L6nsAQKNxzz33pLnmmqtGt7/85S/5FSHQu+++mx544IEcooQIXTbffPOpmsbZZ5+dSyZVlyBaZpllKv/v2bNnjeGvvvrqNN9886W33347Lbvssvn/IUpRRUmuukSwddlll+U2psrzd8UVV+SSXVdddVU66qijKsNGgLTeeuvl/x977LFpyy23TGPGjMklnabWiSeemAOuCO/Kpbpivv/+97+n3r17p5122ikddthhOYgrh1A33nhj2mWXXXKprWHDhuXqk/G3vI6j1FSUHovusb4BgMZDKAUANBobbLBBDnOqzTvvvPlvlPxZeOGFK2FJWGONNaappFSU/pmUKBEUpY2iNNb//ve/SgmpCGoilKqPqO73yy+/pLXWWqvSLarI/f73v8/LUW355Zev/L9Lly7574gRI1LXrl2narkiCIvp9unTJ+2zzz6V7uPGjau0dxWB2qabbppLVEUoNXTo0FwqKkKrMGTIkFxibIkllqgx7qjSFyEcANC4CKUAgEYj2jCKam7TKqraherqaREOVZtjjjkmO46oyrfIIovkkk0RgEUoFWHU2LFj08wQYVVZlFYK5SBsavzwww/5b8x3tANVrVmzZpX/RxW+aOvqb3/7Wy4ltdxyy+VXeRwx7ODBg2t8JtQuwQYAzP60KQUAkFJuvPuTTz7J7TiVPf/88zWGKVetqx4mSkbVLpkUbUXV5euvv84NjR9//PG53amYZrkB9LJo0yqU26Cqy29+85s8XDSoXh2ORUPn0ZbVzDD//PPnEO0///lPDvaqX+XG2cO2226bqwdGlbwIpSKkKovG22O5oqRW7XFMqqoiADD7UlIKAGg0oprY8OHDa3SLxr87duyYNt5441ytLNpGOuecc9KoUaNyI+HVIjyJKn4nnXRSbqvp/fffz20sVevbt28uGXTggQem/fffP4dHjz32WK7SF1UFo5ra5ZdfnqvSRZW9aOepWjxNL0pbRaiz0EIL5bafytXjqkt8HXDAAbntqBhnVMWLtqx++umnXL1uekW1u9ph229/+9t08skn51JQMT/ROHmsz2hAPYK1aLy9PG/xlMBoAD2qEkZ7UmWxfiOk6tWrV15vEVLF0/kixIswL9q7AgAaDyWlAIBGI4KeCIOqX2uvvXalat7tt9+eRo8endtm2nvvvXPwVLsq3D/+8Y/cIHqEKGeddVY69dRTawwTwcuDDz6YXn/99TyeaJfqzjvvzOFXTCOeOhfV16LK3uGHH54DsGox3EUXXZTbYYqSSVHyqC5nnnlmbjR99913TyuvvHL68MMPcyPt88wzz3SvpwiYIjCqfr366qt5nVx55ZW5UfII3qIB9WhsvbqkVIjgKZY/2pWq3XZVfDZCqT//+c9pySWXzAFWlPCa2jauAIBfvyal6kYRAAAAAKAASkoBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACpaP8/4DXOGb2HkJwAAAAASUVORK5CYII=",
+ "text/plain": [
+ "