From 7eacc72837939a8aac866ffe9bf7875859233fa4 Mon Sep 17 00:00:00 2001 From: John Yaist Date: Thu, 10 Oct 2024 14:31:37 -0700 Subject: [PATCH 1/6] update aed sample for 2.4 syntax --- ...r_AED_devices_using_raster_analytics.ipynb | 1452 ++++++++++++++++- 1 file changed, 1451 insertions(+), 1 deletion(-) diff --git a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb index 08e0a7d2f6..c8345b9b7f 100644 --- a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb +++ b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb @@ -1 +1,1451 @@ -{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# Finding suitable spots for placing heart defibrillator equipments in public\n", "In this sample, we will observe how site [suitability analyses](https://en.wikipedia.org/wiki/Suitability_analysis) can be performed using the ArcGIS API for Python. The objective of this sample is to find locations in the city of Philadelphia that are suitable for placing [AED (Automated External Defibrillator)](https://en.wikipedia.org/wiki/Automated_external_defibrillator) for public emergencies."]}, {"cell_type": "markdown", "metadata": {}, "source": ["\n", "
Image of an AED device attached to a wall at San Diego Convention Center during Esri UC
"]}, {"cell_type": "markdown", "metadata": {}, "source": ["The criteria for suitable places are those that have high incidence of [OHCA (Out of Hospital Cardiac Arrests)](http://www.sca-aware.org/sca-news/aha-releases-latest-statistics-on-out-of-hospital-cardiac-arrest) and be accessible to public, such as commercial areas.\n", "\n", "As inputs, we start with geocoded OCHA (Out-of-Hospital Cardiac Arrest) point data, along with a few base layers for the city of Pittsburgh published as feature layers. As output, we need to generate a list of locations that have a high incidence of heart-attacks and located within commercial areas, allowing easy access at times of emergencies."]}, {"cell_type": "markdown", "metadata": {"toc": true}, "source": ["

Table of Contents

\n", "
"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Getting set up"]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": ["from arcgis.gis import GIS\n", "from arcgis.mapping import WebMap\n", "from arcgis.widgets import MapView\n", "from arcgis.features import FeatureCollection, use_proximity\n", "from datetime import datetime"]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": ["gis = GIS(url='https://pythonapi.playground.esri.com/portal', username='arcgis_python', password='amazing_arcgis_123')"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Load input datasets"]}, {"cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", " Pittsburgh heart attacks\n", " \n", "
OHCA in PittsburghFeature Layer Collection by api_data_owner\n", "
Last Modified: June 21, 2018\n", "
0 comments, 102 views\n", "
\n", "
\n", " "], "text/plain": [""]}, "execution_count": 5, "metadata": {}, "output_type": "execute_result"}], "source": ["ohca_item = gis.content.get('a5719916dff4442789a59680c25a4284')\n", "ohca_item"]}, {"cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", " Pittsburgh heart attacks\n", " \n", "
Map showing cardiac arrest information in PittsburghWeb Map by api_data_owner\n", "
Last Modified: March 11, 2020\n", "
0 comments, 44 views\n", "
\n", "
\n", " "], "text/plain": [""]}, "execution_count": 8, "metadata": {}, "output_type": "execute_result"}], "source": ["ohca_map_item = gis.content.get('b8b6cf2bcbeb4903a5372b7f4cbfb252')\n", "ohca_map_item"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Let us take a look at the layers available in this item"]}, {"cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["Heart attack incidence\n", "Streets\n", "Zoning\n", "Boundary\n"]}], "source": ["for lyr in ohca_item.layers:\n", " print(lyr.properties.name)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Let us display the Web Map item to view these layers on a map."]}, {"cell_type": "code", "execution_count": 38, "metadata": {"scrolled": false}, "outputs": [{"data": {"application/vnd.jupyter.widget-view+json": {"model_id": "8ff5bc3f8762484aae0242dd1c2eb0e8", "version_major": 2, "version_minor": 0}, "text/plain": ["MapView(layout=Layout(height='400px', width='100%'), legend=True)"]}, "metadata": {}, "output_type": "display_data"}, {"data": {"text/html": ["
"], "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["map1 = MapView(item=ohca_map_item)\n", "map1.legend=True\n", "map1"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Outline of the analysis\n", "The idea of this analysis is to find places suitable for placing the AED devices. Based on prior knowledge we happen to know areas that are commercial, accessible to public and showing a high incidence of out-of-hospital cardiac arrests are good candidates. We will build the suitability model by performing these steps:\n", "\n", " * use **Zoning** polygon layer to identify commercial areas and build a `600` feet buffer around them\n", " * perform density analysis on **Heart attack incidence** point layer\n", " * perform spatial overlay to find overlapping locations"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Create a 600 feet buffer around commercial areas\n", "The `Zoning` feature layer contains polygon features that represent different zones such as commercial, residential etc. We need to select those features that correspond to commercial zones and create a buffer of `600` feet around them. The `600` feet area roughly corresponds to two-blocks, a walk able distance in case of an emergency."]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Select commercial zones\n", "To select the commercial zones using a query, we need to know what columns and values are available. Hence, let us construct a small query that gives the first few rows / features."]}, {"cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": ["zoning_flayer = ohca_item.layers[2]\n", "zoning_sdf = zoning_flayer.query(result_record_count=5, return_all_records=False, as_df=True)"]}, {"cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
objectidareaperimeterzoning_zoning_idzon_newsymbolacressqmilescodenamexycode_2zoning_groupedSHAPE
011.591398e+0752563.17625521R1D-L80370.1080.576R1D-LSingle-Unit Detached Residential/Low Density1.340082e+06429618.202356R1D-LResidential{'rings': [[[-80.01772016299998, 40.4977767210...
128.107219e+041524.91035522R2-L80370.1080.576R2-LTwo-Unit Residential/Low Density1.338226e+06432380.904671R2-LNon Commercial{'rings': [[[-80.01757926499994, 40.4981592720...
232.591469e+0614071.08445526R2-L8360.4610.094R2-LTwo-Unit Residential/Low Density1.335954e+06430498.618340R2-LNon Commercial{'rings': [[[-80.02201914599993, 40.4938213470...
348.370962e+055395.62555517RP8519.3060.030RPResidential Planned Unit Development1.340037e+06431409.546743RPResidential{'rings': [[[-80.01117829099985, 40.4967724760...
459.650762e+03441.32365519RM-M840.2230.000RM-MMulti-Unit Residential/Low Density1.339642e+06431798.332613RM-MResidential{'rings': [[[-80.01130567899997, 40.4967769370...
\n", "
"], "text/plain": [" objectid area perimeter zoning_ zoning_id zon_new symbol \\\n", "0 1 1.591398e+07 52563.176 2 5521 R1D-L 80 \n", "1 2 8.107219e+04 1524.910 3 5522 R2-L 80 \n", "2 3 2.591469e+06 14071.084 4 5526 R2-L 83 \n", "3 4 8.370962e+05 5395.625 5 5517 RP 85 \n", "4 5 9.650762e+03 441.323 6 5519 RM-M 84 \n", "\n", " acres sqmiles code name \\\n", "0 370.108 0.576 R1D-L Single-Unit Detached Residential/Low Density \n", "1 370.108 0.576 R2-L Two-Unit Residential/Low Density \n", "2 60.461 0.094 R2-L Two-Unit Residential/Low Density \n", "3 19.306 0.030 RP Residential Planned Unit Development \n", "4 0.223 0.000 RM-M Multi-Unit Residential/Low Density \n", "\n", " x y code_2 zoning_grouped \\\n", "0 1.340082e+06 429618.202356 R1D-L Residential \n", "1 1.338226e+06 432380.904671 R2-L Non Commercial \n", "2 1.335954e+06 430498.618340 R2-L Non Commercial \n", "3 1.340037e+06 431409.546743 RP Residential \n", "4 1.339642e+06 431798.332613 RM-M Residential \n", "\n", " SHAPE \n", "0 {'rings': [[[-80.01772016299998, 40.4977767210... \n", "1 {'rings': [[[-80.01757926499994, 40.4981592720... \n", "2 {'rings': [[[-80.02201914599993, 40.4938213470... \n", "3 {'rings': [[[-80.01117829099985, 40.4967724760... \n", "4 {'rings': [[[-80.01130567899997, 40.4967769370... "]}, "execution_count": 13, "metadata": {}, "output_type": "execute_result"}], "source": ["zoning_sdf"]}, {"cell_type": "markdown", "metadata": {}, "source": ["The column `zoning_grouped` contains zoning categories. We are intersted in those polygons that correspond to the `Commercial` category."]}, {"cell_type": "code", "execution_count": 14, "metadata": {"scrolled": true}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namezoning_grouped
0Urban Industrial DistrictCommercial
1Local Neighborhood CommercialCommercial
2Local Neighborhood CommercialCommercial
3General IndustrialCommercial
4Educational/Medical InstitutionalCommercial
\n", "
"], "text/plain": [" name zoning_grouped\n", "0 Urban Industrial District Commercial\n", "1 Local Neighborhood Commercial Commercial\n", "2 Local Neighborhood Commercial Commercial\n", "3 General Industrial Commercial\n", "4 Educational/Medical Institutional Commercial"]}, "execution_count": 14, "metadata": {}, "output_type": "execute_result"}], "source": ["zoning_commercial_fset = zoning_flayer.query(where=\"zoning_grouped = 'Commercial'\")\n", "commercial_zone_df = zoning_commercial_fset.sdf\n", "commercial_zone_df.head(5)[['name','zoning_grouped']] #display the first 5 results"]}, {"cell_type": "code", "execution_count": 15, "metadata": {"scrolled": true}, "outputs": [{"data": {"text/plain": ["(317, 16)"]}, "execution_count": 15, "metadata": {}, "output_type": "execute_result"}], "source": ["commercial_zone_df.shape"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Let us draw the selected polygons on a map"]}, {"cell_type": "code", "execution_count": 55, "metadata": {"scrolled": true}, "outputs": [{"data": {"application/vnd.jupyter.widget-view+json": {"model_id": "9163d7b0dc6e45f7a6732c82cf30c72c", "version_major": 2, "version_minor": 0}, "text/plain": ["MapView(layout=Layout(height='400px', width='100%'))"]}, "metadata": {}, "output_type": "display_data"}, {"data": {"text/html": ["
"], "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["zone_map = gis.map(\"Pittsburgh, PA\")\n", "zone_map"]}, {"cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": ["zone_map.draw(zoning_commercial_fset)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Thus, from `965` zoning polygons, we have narrowed down to `317`.\n", "\n", "### Create buffers around commercial zones\n", "\n", "The ArcGIS API for Python allows you to define definition queries or filters on Feature Layers. When you run a spatial analysis on those layers, only the features that fit the filter criteria you specified will be used. Thus, you can use the 'where' clause you used earlier (to get commercial zones) to set as a filter on the `zoning_flayer` and pass that as the input to the `create_buffers` tool. The advantage of this workflow is, you are not sending the features from the local `FeatureSet` object to the tool, instead, you are asking to the tool to get the features directly from the feature layer which is **colocated** with the tool. This paradigm of colocating the compute with the data is highly preferred to improve efficiency and scalability of your analyses."]}, {"cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": ["# create a filter using the where clause from earlier\n", "zoning_flayer.filter = \"zoning_grouped = 'Commercial'\""]}, {"cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", " commercial_buffers_28_05_2021_09_36_44\n", " \n", "
Feature Layer Collection by arcgis_python\n", "
Last Modified: May 28, 2021\n", "
0 comments, 0 views\n", "
\n", "
\n", " "], "text/plain": [""]}, "execution_count": 19, "metadata": {}, "output_type": "execute_result"}], "source": ["# create a timestamp to create a unique output\n", "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", "\n", "# create buffers\n", "commercial_buffers = use_proximity.create_buffers(input_layer=zoning_flayer,\n", " distances=[600],units='Feet', \n", " dissolve_type='Dissolve',\n", " output_name=f'commercial_buffers_{timestamp}')\n", "commercial_buffers"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Draw the results on the `commercial_zone_map` created above"]}, {"cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": ["zone_map.add_layer(commercial_buffers)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Create a density map to find areas of high heart attack incidence\n", "To calculate the density, we use `calculate_density` tool available under the `raster` module and provide the `Heart attack incidence` feature layer as its input. This layer has a column named `num_incidence` that additionally specifies the number of heart attacks that happened at each point location. Below we bring up a few of the features to get an idea."]}, {"cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
objectid_1fid_1idpop2000noyesnum_incidenceSHAPE
01010100{\"x\": -79.97274830899988, \"y\": 40.437756305000...
128996100{\"x\": -79.97639852099996, \"y\": 40.437202953000...
2312135100{\"x\": -79.98023401899997, \"y\": 40.438334899000...
3413143100{\"x\": -79.9818761219999, \"y\": 40.4383995900001...
45252615100{\"x\": -79.98428402499985, \"y\": 40.437456611000...
5628298100{\"x\": -79.98319929899998, \"y\": 40.436778390000...
67303142100{\"x\": -79.98183133499987, \"y\": 40.437055132000...
7851520400{\"x\": -79.98873209699991, \"y\": 40.435164507000...
8970710200{\"x\": -79.98717537399989, \"y\": 40.437418760000...
9107273536100{\"x\": -79.9918783149999, \"y\": 40.4381269750001...
\n", "
"], "text/plain": [" objectid_1 fid_1 id pop2000 no yes num_incidence \\\n", "0 1 0 1 0 1 0 0 \n", "1 2 8 9 96 1 0 0 \n", "2 3 12 13 5 1 0 0 \n", "3 4 13 14 3 1 0 0 \n", "4 5 25 26 15 1 0 0 \n", "5 6 28 29 8 1 0 0 \n", "6 7 30 31 42 1 0 0 \n", "7 8 51 52 0 4 0 0 \n", "8 9 70 71 0 2 0 0 \n", "9 10 72 73 536 1 0 0 \n", "\n", " SHAPE \n", "0 {\"x\": -79.97274830899988, \"y\": 40.437756305000... \n", "1 {\"x\": -79.97639852099996, \"y\": 40.437202953000... \n", "2 {\"x\": -79.98023401899997, \"y\": 40.438334899000... \n", "3 {\"x\": -79.9818761219999, \"y\": 40.4383995900001... \n", "4 {\"x\": -79.98428402499985, \"y\": 40.437456611000... \n", "5 {\"x\": -79.98319929899998, \"y\": 40.436778390000... \n", "6 {\"x\": -79.98183133499987, \"y\": 40.437055132000... \n", "7 {\"x\": -79.98873209699991, \"y\": 40.435164507000... \n", "8 {\"x\": -79.98717537399989, \"y\": 40.437418760000... \n", "9 {\"x\": -79.9918783149999, \"y\": 40.4381269750001... "]}, "execution_count": 21, "metadata": {}, "output_type": "execute_result"}], "source": ["ha_incidence = ohca_item.layers[0] #the first layer in the input feature layer collection\n", "ha_incidence_fset = ha_incidence.query(result_record_count=10, return_all_records=False)\n", "ha_incidence_fset.sdf.head(10)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["#### Calculate density"]}, {"cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": ["from arcgis.raster.analytics import calculate_density\n", "from arcgis.raster.functions import *"]}, {"cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["\n"]}], "source": ["# create a timestamp to create a unique output\n", "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", "\n", "ha_density = calculate_density(ha_incidence, count_field='num_incidence', \n", " output_cell_size={'distance':150,'units':'feet'},\n", " output_name = f'ha_density_{timestamp}')\n", "print(ha_density)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Let us display the density raster on a map"]}, {"cell_type": "code", "execution_count": 11, "metadata": {"scrolled": false}, "outputs": [{"data": {"text/html": [""], "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["density_map = gis.map(\"Pittsburgh, PA\", zoomlevel=11)\n", "density_map"]}, {"cell_type": "markdown", "metadata": {"collapsed": true}, "source": ["Use the `stretch` [raster function](http://pro.arcgis.com/en/pro-app/help/data/imagery/stretch-function.htm) to enhance the density layer before adding it to the map:"]}, {"cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": ["density_layer = ha_density.layers[0]\n", "\n", "stretch_rf = stretch(density_layer, stretch_type='StdDev',num_stddev=2)\n", "colormap_rf = colormap(stretch_rf, colormap_name='Gray')"]}, {"cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": ["density_map.add_layer(colormap_rf, {\"opacity\":0.5})"]}, {"cell_type": "markdown", "metadata": {}, "source": ["From the `density_map`, we see certain regions (in shades of white) have a higher density of heart attack incidences compared to the rest."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Reclassify the density raster\n", "Calculate density tool returns the number of incidences per sq.mile. We are interested in the number of heart attacks at a larger scale of about 5 square blocks. In Pittsburgh, each block spans about 300 ft in length, thus 5 sq. blocks cover an area of 1500 x 1500 sq.feet. We apply `remap` raster function to convert the density from sq. miles to that in 5 block area"]}, {"cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": ["import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import numpy as np"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Plot the histogram to view actual density values and its distribution. The `histograms` property of the `ImageryLayer` object returns you histogram of each of its bands."]}, {"cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": ["density_hist = density_layer.histograms"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Construct the X axis such that it ranges from min value to max value of the pixel range in the image."]}, {"cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": ["x = np.linspace(density_hist[0]['min'], density_hist[0]['max'], num=density_hist[0]['size'])"]}, {"cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [{"data": {"text/plain": ["Text(0, 0.5, 'Number of pixels')"]}, "execution_count": 33, "metadata": {}, "output_type": "execute_result"}, {"data": {"image/png": "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WnXr1tXVV1+tSI/WiGeeeUZt27ZV3bp1dc4552jFihUFy6677jo1a9ZMSUlJ6tSpk95///2CZcWvwxNPPKF77rlH//znP5WYmKj27duXWMvo0aPVqlUr1a5dW+3atdPkyZMlSYsWLdKVV16pOXPmKDExUcnJyRo3bpxefPFF3XfffUpMTFTfvn3L3Ee+p556Sm3bti1Y/umnn+5Tx9dff60WLVpo4sSJJdY5Y8YMtWnTRnXq1NE111xT5JqVd93MTE888USJ13zx4sXq3r276tSpo/r16+v8888vst3ixYtLPO//+7//029/+9siNVx77bW6/vrrS6y/sLLen1dffbVuvPHGIuv37dtXDz/8sCRp7dq1+u1vf6sGDRqoRYsWeuSRRwrWK+lvIaz27dsrMTGxYDKzgu6KmZmZSktLU3Jysnr06KFFixYVbLdo0SL16NFDycnJSktLU2ZmZsGySy+9VFdddZXOPfdcJSYm6rTTTtO3336r66+/XnXr1lWbNm2KdAMs6xx37dqlSy+9VHXr1lW7du00b9680OcIlMrdYzZJel/SccHr2yT9XzCNDNpGSroveN1H0puK3Gk4WdLcoP3nkpZJqhtMyyT9PFg2L1jXgm1/XV5NnTp18nhqPuL1ggnA4a158+Y+Y8aMIm0TJkzw0047rcR1Tj75ZH/uuchQse3bt/ucOXPc3X3ZsmUuyXNzcwu2Gz9+vLdq1cqXLFni27dv94EDB/rFF1/s7u4LFy70WrVq+fvvv+8//vij33jjjZ6QkFBwnFGjRnlCQoJPnjzZ9+zZ499//71nZWX5nDlzPDc315ctW+Zt2rTxhx56qOB4krxv376+detWX7BggVerVs3PPPNMX7Jkiefk5Hjbtm392WefLfE6lFVr/r6zs7NLvY6SvE+fPr5lyxZfsWKF169f39988013d588ebK3atXKv/rqK8/NzfU777zTTznllIJtn3/+ef/uu+88NzfX77//fk9JSfFdu3aVeh1GjRrlF110Uam1uLu/8sorvmbNGt+zZ49PnDjRa9as6WvXri3x9+vunp6e7rfcckvU+3jllVe8SZMmPnfuXN+7d69nZ2f78uXL3f2n98snn3zizZo182nTppVY48aNG7127do+adIk3717tz/44INetWpVf+qpp6K6bmVd86FDh/pdd93le/bs8V27dvn7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RAIAAABAaNy1CQCQcbh7CpKhqedRtp9/jYk/WXdhSpVMia2pd4TKVfRIABnk+eefV7du3dS1a1dNnz493eEAAAAkRCIBZIi9e/fq+uuv13PPPadVq1bp8ccf16pVq9IdFgAAQFwkEkCGeP3119W1a1d16dJFhx9+uCZMmKC5c+emOywAAIC4SCSADLFhwwZ16tQp+jw/P18bNmxIY0QAAACJMdgayBDufkCZmR1QNnPmTM2cOVOS9P7776ukpCT0trZs2aJ27dolfP3E0DVmrobamktoa26irbkpl9taUvLT6OMTld621sbSHH/XYttZK1ltraysPOg6UoFEAsgQ+fn5Wr9+ffR5VVWVTj755AOWmzJliqZMmXJQ2yopKVFFRcVB1ZEtaGtuoq25ibbmJtqau7i0CcgQ/fr105o1a7Ru3Tp99dVXeuKJJzRq1Kh0hwUAABAXPRJAhmjZsqUeeOABjRgxQnv37tVVV12lHj16pDssAACAuEgkgAxy8cUX6+KLL2727RzspVHZhLbmJtqam2hrbqKtucviDfDMZSUlJZ7Oa9eYEREAAADZxMyWu/sBd3dhjAQAAACA0EgkgEPA3r17deaZZ2rkyJGSpHXr1mnAgAEqLCzUv//7v+urr75Kc4TJsX37do0bN06nn366unfvrtdee01bt27VsGHDVFhYqGHDhmnbtm3pDjMpZsyYoR49eqhnz56aOHGidu/enTPH9aqrrlL79u3Vs2fPaFmi4+juuummm9S1a1f16tVLK1asSFfYTRKvrVOnTtXpp5+uXr166Zvf/Ka2b98efW3atGnq2rWrunXrpgULFqQj5IMSr721fvnLX8rM9Mknn0jKzWMrSb/+9a/VrVs39ejRQ7fddlu0PJuPbby2rly5UgMHDlSfPn1UUlKi119/XVJ2H9f169dryJAh6t69u3r06KH77rtPUu5+PjWKux9SP3379vV0+vr3n4n+AKlyzz33+MSJE/2SSy5xd/fx48f7448/7u7u1157rf/mN79JZ3hJc8UVV/hvf/tbd3f/8ssvfdu2bT516lSfNm2au7tPmzbNb7vttnSGmBRVVVVeUFDgu3btcvfI8Xzsscdy5ri+/PLLvnz5cu/Ro0e0LNFxnD9/vl944YW+b98+f+2117x///5pibmp4rV1wYIFvmfPHnd3v+2226Jtfffdd71Xr16+e/duX7t2rXfp0sVramrSEndTxWuvu/s///lPHz58uHfu3Nm3bNni7rl5bBcvXuxDhw713bt3u7v7pk2b3D37j228tg4bNsyfffZZd48cy0GDBkUfZ+tx/fjjj3358uXu7r5jxw4vLCz0d999N2c/n2JJqvA436vpkQByXFVVlebPn69rrrlGUuSfB4sXL9a4ceMkSaWlpXr66afTGWJS7NixQ3/961919dVXS5IOP/xwtWnTRnPnzlVpaamk3GmrJNXU1OiLL75QTU2Ndu3apby8vJw5ruedd57atm27X1mi4zh37lxdccUVMjMNHDhQ27dv18aNG1Mec1PFa+vw4cPVsmXkXigDBw5UVVWVpEhbJ0yYoCOOOEKnnHKKunbtGv0vb7aI115J+u53v6u77rprv0k4c/HYPvTQQyorK9MRRxwhSWrfvr2k7D+28dpqZtqxY4ckqbq6OjovUjYf17y8PBUXF0uSWrdure7du2vDhg05+/nUGCQSQI67+eabddddd6lFi8jb/dNPP1WbNm2iX1Ty8/O1YcOGdIaYFGvXrlW7du105ZVX6swzz9Q111yjnTt3atOmTcrLy5MU+SOwefPmNEd68Dp27Khbb71VnTt3Vl5eno4//nj17ds3J49rrUTHccOGDerUqVN0uVxr96xZs3TRRRdJyt22zps3Tx07dlTv3r33K8/F9q5evVpLly7VgAEDNGjQIL3xxhuScrOt9957r6ZOnapOnTrp1ltv1bRp0yTlTlsrKyv15ptvasCAAYfs55NEIgHktGeeeUbt27dX3759o2Ue505tsf8FzFY1NTVasWKFvvOd7+jNN9/UMccco+nTp6c7rGaxbds2zZ07V+vWrdPHH3+snTt36rnnnjtguVw4rg3J1fNZku688061bNlSkyZNkpSbbd21a5fuvPNO/exnPzvgtVxsb01NjbZt26Zly5bp7rvv1mWXXRa9RKSubG/rQw89pBkzZmj9+vWaMWNGtLc4F9r6+eefa+zYsbr33nt13HHHJVwuF9raEBIJIIe98sormjdvngoKCjRhwgQtXrxYN998s7Zv366amhpJkUufarucs1l+fr7y8/M1YMAASdK4ceO0YsUKdejQIdqVvHHjxuilBNnsxRdf1CmnnKJ27dqpVatWGjNmjF599dWcPK61Eh3H/Px8rV+/PrpcrrS7vLxczzzzjObMmRP94pGLbf3oo4+0bt069e7dWwUFBaqqqlJxcbH+93//Nyfbm5+frzFjxsjM1L9/f7Vo0UKffPJJTra1vLxcY8aMkSSNHz8+eqlWtrd1z549Gjt2rCZNmhRt36H2+RSLRALIYdOmTVNVVZUqKyv1xBNP6Pzzz9ecOXM0ZMgQ/elPf5IU+bAfPXp0miM9eCeddJI6deqkDz74QJK0aNEinXHGGRo1apTKy8sl5U5bO3furGXLlmnXrl1y92hbc/G41kp0HEeNGqXf//73cnctW7ZMxx9/fPQSg2z1/PPP6xe/+IXmzZuno48+Olo+atQoPfHEE/ryyy+1bt06rVmzRv37909jpAevqKhImzdvVmVlpSorK5Wfn68VK1bopJNOyslje+mll2rx4sWSIpc5ffXVVzrxxBNz8tiefPLJevnllyVJixcvVmFhoaTsfs+6u66++mp1795dt9xyS7T8UPp8OkC8Edi5/MNdm3CoWrJkSfSuTR999JH369fPTz31VB83blz0DiLZ7s033/S+fft6UVGRjx492rdu3eqffPKJn3/++d61a1c///zz/dNPP013mEnxk5/8xLt16+Y9evTw//iP//Ddu3fnzHGdMGGCn3TSSd6yZUvv2LGj/+53v0t4HPft2+fXXXedd+nSxXv27OlvvPFGmqMPJ15bTz31VM/Pz/fevXt77969/dprr40uf8cdd3iXLl38tNNOi94RJ5vEa2+sr3/969G7NuXisf3yyy990qRJ3qNHDz/zzDN90aJF0eWz+djGa+vSpUu9uLjYe/Xq5f379/eKigp3z+7junTpUpfkRUVF0ffn/Pnzc/bzKZYS3LWJma1TjJmtAQAAkE2Y2RoAAABA0pBIAAAAAAiNRAIAAABAaCQSAAAAAEIjkQAAAAAQGokEACArHHvssfs9nz17tm644Yak1F1ZWak//vGPodbZvn27fvOb3xxUHbEGDx6sdN5VMB0qKip00003SUru8QSQGs2WSJjZLDPbbGbvxJS1NbOFZrYm+H1CUG5mdr+ZfWhmb5lZccw6pcHya8ysNKa8r5m9Haxzv+XanOMAgJSoqanJiEQiHfbu3ZvW7ZeUlOj+++9PawwAmq45eyRmS7qwTlmZpEXuXihpUfBcki6SVBj8TJH0kBRJPCT9VNIASf0l/bQ2+QiWmRKzXt1tAQAOEVu2bNHYsWPVr18/9evXT6+88ook6fXXX9fZZ5+tM888U2effXZ05vPZs2dr/Pjx+rd/+zcNHz5cZWVlWrp0qfr06aMZM2bsV/fnn3+uoUOHqri4WEVFRZo7d64kqaysTB999JH69OmjqVOnHlBHZWWlzj33XBUXF6u4uFivvvpqtM677rpLRUVF6t27t8rKyvbb3r59+1RaWqof//jH2rt3ryZPnqyePXuqqKjogNgkafLkyfr2t7+tc889V6eddpqeeeYZSZEkYerUqerXr5969eqlRx55RJL00ksvaciQIfrWt76loqKi/epKtL3ly5erd+/eOuusszR16lT17NmzwWNy7LHH6vvf/7769u2rCy64QK+//roGDx6sLl26aN68edFYRo4c2ejjCSDDxJulLlk/kgokvRPz/ANJecHjPEkfBI8fkTSx7nKSJkp6JKb8kaAsT9L7MeX7LVffDzNbA0B2atGiRXQ22d69e3unTp38+uuvd3f3iRMn+tKlS93d/R//+Ieffvrp7u5eXV3te/bscXf3hQsX+pgxY9zd/bHHHvOOHTtGZ6CNnfm9rj179nh1dbW7u2/ZssVPPfVU37dvn69bt8579OgRXa5uHTt37vQvvvjC3d1Xr17ttX9/nn32WT/rrLN8586d7u7RGAYNGuSvvfaaT5gwwe+44w53d6+oqPALLrggWue2bdsOiK+0tNRHjBjhe/fu9dWrV3vHjh39iy++8EceecRvv/12d3ffvXu39+3b19euXetLlizxo48+2teuXXtAXYm2V1RU5C+99JK7u9966637tTsRSdEZmi+99FIfNmyYf/XVV75y5Urv3bv3Afvssccea/B4AkgPJZjZumVq0pWoDu6+UZLcfaOZtQ/KO0paH7NcVVBWX3lVnHIAQI466qijtHLlyujz2bNnR8cUvPjii1q1alX0tR07duizzz5TdXW1SktLtWbNGpmZ9uzZE11m2LBhatu2bYPbdXf98Ic/1F//+le1aNFCGzZs0KZNmxpcb8+ePbrhhhu0cuVKHXbYYVq9enU01iuvvFJHH320JO0Xw7XXXqvLLrtMP/rRjyRJXbp00dq1a3XjjTfqkksu0fDhw+Nu67LLLlOLFi1UWFioLl266P3339cLL7ygt956S3/6058kSdXV1VqzZo0OP/xw9e/fX6eccsoB9cTbXnV1tbZv365BgwZJki6//HI999xzDbb/8MMP14UXRi4WKCoq0hFHHKFWrVqpqKhIlZWV9a6b6Hi2bt26we0CSJ1UJxKJxBvf4E0oj1+52RRFLoNS586dmxIfACCD7du3T6+99pqOOuqo/cpvvPFGDRkyRH/5y19UWVmpwYMHR1875phjGlX3nDlztGXLFi1fvlytWrVSQUGBdu/e3eB6M2bMUIcOHfT3v/9d+/bt05FHHikpkpgkGtZ39tlna8mSJfre976nI488UieccIL+/ve/a8GCBXrwwQf15JNPatasWQesV7c+M5O769e//rVGjBix32svvfRSwrbH296vfvWrhPHWp1WrVtH1WrRooSOOOCL6uKampt51Ex1PAJkl1Xdt2mRmeZIU/N4clFdJ6hSzXL6kjxsoz49THpe7z3T3Encvadeu3UE3AgCQWYYPH64HHngg+ry256K6ulodO0Y6rGfPnp1w/datW+uzzz6L+1p1dbXat2+vVq1aacmSJfrHP/4Rd526z6urq5WXl6cWLVroD3/4Q3Rg8/DhwzVr1izt2rVLkrR169boOldffbUuvvhijR8/XjU1Nfrkk0+0b98+jR07VrfffrtWrFgRN8annnpK+/bt00cffaS1a9eqW7duGjFihB566KFoL8zq1au1c+fOhPtAUtzttWnTRscff7z+9re/SYokVs0t0fEEkFlSnUjMk1R756VSSXNjyq8I7t40UFJ1cAnUAknDzeyEYJD1cEkLgtc+M7OBwd2aroipCwBwiLn//vtVUVGhXr166YwzztDDDz8sSbrtttv0gx/8QOecc069dyjq1auXWrZsqd69ex8woHnSpEmqqKhQSUmJ5syZo9NPP12S9LWvfU3nnHOOevbsqalTpx5Qx3XXXafy8nINHDhQq1evjvYCXHjhhRo1apRKSkrUp08f/fKXv9xve7fccouKi4t1+eWXa8OGDRo8eLD69OmjyZMna9q0aXHj79atmwYNGqSLLrpIDz/8sI488khdc801OuOMM1RcXKyePXvq2muvbbAnINH2HnvsMV1//fU666yz9usl+Pjjj3XxxRfXW2dTJDqeADKLRcZPNEPFZo9LGizpREmbFLn70tOSnpTUWdI/JY13961BMvCAInde2iXpSnevCOq5StIPg2rvdPfHgvISRe4MdZSk5yTd6I1oTElJ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\n", "text/plain": ["
"]}, "metadata": {"needs_background": "light"}, "output_type": "display_data"}], "source": ["fig = plt.figure(figsize=(10,8))\n", "ax = fig.add_axes([0,0,1,1])\n", "ax.bar(x,density_hist[0]['counts'])\n", "ax.set_title(\"Histogram of heart attack density layer\")\n", "ax.set_xlabel(\"Heart attacks per sq. mile\")\n", "ax.set_ylabel(\"Number of pixels\")\n", "\n", "ax2 = fig.add_axes([0.25,0.2,0.7,0.7])\n", "ax2.bar(x[-200:], density_hist[0]['counts'][-200:])\n", "ax2.set_title(\"Histogram of heart attack density layer - zoomed\")\n", "ax2.set_xlabel(\"Heart attacks per sq. mile\")\n", "ax2.set_ylabel(\"Number of pixels\")"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Convert units from sqmile to city blocks\n", "The inset histogram chart has the histogram zoomed to view the distribution in the upper end of the density spectrum. We are interested in selecting those regions that have a heart attack of at least 5 per 5 block area. To achieve this, we need to convert the density from square miles to 5 square blocks."]}, {"cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [{"data": {"image/jpeg": "iVBORw0KGgoAAAANSUhEUgAABLAAAAHCCAYAAAD/8zCiAAAgAElEQVR4nOyd63LjuJKtsV0jV0Wf93/U7qiywp7zYw/c6XTeAZCgtL4IhyUSBMCriMWVyf80AMBq/vfsDgAAAAAAAACW85+zOwDAI/NydgcAAAAAAAAAAAAAALCAgAUAAAAAAAAAAAAAtgYCFgAAAAAAAAAAAADYGghYAAAAAAAAAAAAAGBrIGABAAAAAAAAAAAAgK2BgAUAAAAAAAAAAAAAtgYCFgAAAAAAAAAAAADYGghYAAAAAAAAAAAAAGBrIGABAAAAAAAAAAAAgK35n7M7AAAAAKzmx48foXLv7++LewIAAAAAAACo8J+zOwDAE/C/Z3cAgGcjKlhFgbAFAAAAgAAYXwOwEJxgAKwHAhYAi5ktWEWAqAUAAAAABsbXACwEJxgA64GABcBkzhCsPCBoAQAAAE8PxtcALAQnGADrgYAFwCA7ClYWELMAAACApwTjawAWghMMgPVAwAKgwNVEKwkIWQAAAFYS+a3Eb9GhYHwNwEJwggGwHghYACR4BOGKg8EDAACAUWb+PuJ3aRkYXwOwEJxgAKwHAhYADpWb8peXl1C5j4+PdN2rwIABAABAhiMe6uC3aSoYXwOwEJxgAKwHAhYACpkb86hgleUMgQuDBQAAABazfh+zv3H4fRoG42sAFoITDID1QMACgBG5MV8lWEU4QtTCIAEAAADH+32c8dsY+Y3Db1QZjK8BWAhOMADWAwELgP9jlnBl1bPqpnuFqIUBAgAAgNbmCFe8jshvjPXbht+oEhhfA7AQnGAArAcCFnh6RoWrGTlAZt+IzxS0MEgAAIDnRfuN034XR34Ttd8bCFnTwPgagIXgBANgPRCwwNMyIlytTFw782Z8lpCFAQIAADwfGfFq9u+i9Luj/abhNyoMxtcALAQnGADrgYAFno6qcHXE25YouwlZGCAAAMDzIP3mnfHbyH97IGINgfE1AAvBCQbAeiBggacgeoO9g3DFmXVTDhELAABAhIh4NfOFJ5XE7dIy+I1ywfgagIXgBANgPRCwwENzhHCVfetSRUjaRcTC4AAAAB6bUfFq9E2EmXxXELHSYHwNwEJwggGwHghY4CFZnd/qqFeFU2bclMOFBQAAQGNEvJrxu0iJhgrycviNMsH4GoCF4AQDYD0QsMBDMfKq76OEK05GVBq9MUdSdwAAABqegLXqjYTZtw/S8nBhpcD4GoCF4AQDYD0QsMBDUBWuZoYJSnVlbqKj4lL1xnyWeDXaDwAAAPsxU7yq5o6svnkQIlYYjK8BWMj/nN0BAAAA+5PNxTFLtIrUw8tYN9QvLy/TRabOinp//PiBAQIAADwxs1980pelvy0rfxsBAGAmUIgBWA8cWODSzH4iPEO08rBEn8qbmDxW3/hDxAIAgOvDf98899Xqt/ZmE7YjF1YIjK8BWAgcWAAAAERmClejebGyWM6l2U+aj3hqDScWAABcmxm/dSt+L0fAbxMA4GjmZ8oFAABweaLi1Y8fP8yy/U+q31p2Bkfc6B8ZcrHbwAUAAMC1sRxhUpkVL1kBAIAMcGABAAD4wsgrvqWyXvkrclauECl3CQAAgMcj87sLAADPAgQsAAAAn4yIVzsKV5XwBq/8DoluEbYBAKgycl3GdWcNZ/9WAgDAVYCABQAAoLVWF69GnxJnQhLOFo/Obp8CNxYAIMosgYTWg2vPPN7f3yFiAQBAAAhYAAAAXGEqkxPLYjR/Rl/+DCFpJ/GKAjcWAEBitSACMQsAAMDRQMACAIAnpyJejebEGmX2mwQ72iBsV/GqAzcWAKBzhpMH16C1wJ0FAAD/BQIWAAA8MSvFK0u4ityMewOhqoiVXWZUvMoM6EYHKXBjATAX6Zzc9RyLXj9GHip410O4snSsMEHrbYAjzuYZv3d0P+7+MAcA8PhAwAIAgCdlVLxancx9xkAos5xUtnKzPjJom5EHBSIWADoznCwzBPiZRPozywlL68mIWa1B0JpJdH96YffYJwCAqwEBCwAAQGttXLxa+RZCTZRZFUrYWk68mjkI6HWNbDuIWACcG3YVbbt6ns4QrUb7yOuHOyuHtn8qv7WRtqT9M/pbgf0IADgaCFgAAPCEWAOX1TmxqswQZaJPoaPi1cqbd7yVCoAc1fNlZp6+rKC+4hzX1qfalrYcv/5lBC2IWf9Ct4X1W5v9nZX2T/b4RPggAGA3/nN2BwB4Av737A4AQMkKVDuIV5So2JQJCawIWEcNuka257MPDMFjkz03okJVtt7MebZKBBjNOTgDazvsdE09C0moiohXo7+x3u+bJVJF54EvYHwNwELgwAIAgCfibPFqZrLZLLPEq6Nv2uHEAuBfMufCrBA6D6sez6Xkwa9Hq0S4GVg5ryK5s+DK+i9RR1a2vr5NuRNLczfDfQUA2BEIWAAA8MQcJV5FBl1estkj2E284u1mBzDIhQUegRmiVWXwH7luZROZS1jn6BGCVSWEMnKd1gSpZxSzou4rbxpH23devqvR/JGPsE8AANcEAhYAADwJ2bxXFlHxamayWdpW9uZ5xhuYdrhhn5HgHYArcKRoNZIDy1s2K/QcwYycXxnhpDVfzIrky9rhGjyLEfFq5IHQjIcaj7QfAADXAzG6AKwHObDAFmQcVqNvJORlKlgDmkxOD6uuTPjgjjft2SS+AOzOqOg08na+WULSDjmxOjPEKis00KPiat3VCVvFEqYy4lX0wVFkm/YydHp2GlDB+BqAhcCBBQAAT0DVfVUVr2YwGuLgcXXxqrWv/RoZZAJwNiPCVTX33qrr18qcWJyPj48lIlW1rLZ+njMr48q6qiNLE6aqyd01JLeblvdq9e8sAADMBgIWAAA8IdaAZ2V4yRk8y8351QZzAHSqrqlKbqCVYYUrwgW98zrbz9XhipqQ7uW9qgpZu1/3PLFqtngltR/Ne3WF7QkAABCwAADgwVmZ+woAAKocJVyNvB01w4q3rF49311WmKqU31V00YQo63smiXs0hJBuUypiaS4suLIAADsDAQsAAJ6MqPvKGzhVc1/t8HapRwgfBODKzHZPHe3QiqC9eS/CbgLCaLL6WUJWtOxOeHmvMuJVJoRQ2x4QqAAAVwYCFgAAPDBXf3ofATfiPiPHwa6DQnBdKuJ3RozK1L/yGpnJFcVZ4eaKUn17LCWb8yoaJngVN1ZUrIqKV9Xwwda+vr1WcmfxXIrWdwAAOBsIWAAA8KSMvHkQXIMZg/MdHHPgMVgd+jdD5Ir2jZMVlaLtS+fcLHFr5TU9m4h9phvr7OuU55rKJnHPCLLeNomGDcKlBQDYFQhYAADwROwkQnmDDO3m+ehX1O8wIKqwwlmye6gO2JeZrqjMMlnhqnqNHA2x04jmOYr2Y4SKoyybiD3rxtpVxGpNznOVTeJuPWiy2swcb7tsLwAAiAABCwAAHpRdwwdn3ihLN+m4EV8PBjwgQ9TRWUnqPst1FRV+soJStP4ZDq6Z52T298NzamZC/7JldxKxvFDBTla8ygqTfLtEXFhSWa0+AAA4CwhYAAAALsOMAckzCC9HiJcQsUCEiHg1+22Es4SrzHk0ku/K60drMYFrl4cWllNzhmiScW0diRYaGBGz6PxseD+HhmVqIpbELtsRAAAs9oklAQAAAP6PyE30TPfVTqGVV2KXATPYkxni1cvLi7jMKvGq1z3z2KZ1Vuvv20HaHruSTdafyb0YCa076/rE3VW0L14S91HxipeLbj9r2+M6DwDYCTiwAADgCVl5Q/rx8TE0wJr1BPhZnyRjsAF2YFS8yogcs+o/+tyZlch952td1qk524l1lFM0EiqYEa8qwhXvj+TEmuFeg/sWAHAm13iEAwAA4OmhN8wj7qtHFnjOWLdH3p6ghideeQ6kZxCvMnjOrd2dWRlnlVZ+pOzqfeu5rax5VfEq4sirrDdcVwCA3YEDCwAAwHSqLqwZbx5cAZ44AxAjIl5pVAfimWvNTPFqdSL1SLuSW6mzszOrtTlvHORlz8zj5IUOZsSrrOjnvX1whjsNObIAADsAAQsAAB6U9/f3U5+iZkWs6I1xNT+Wx9Vvzs/c1xD4QGv7iFdHO260eTuJWauIXjNnXCOi1+gjQwkzoYPSchHxKivQeonbNXHQCt/ENR4AsAsQsAAAACwjImJ5A5LITTNurAE4l6xjJFJupvPqDKy38dH5Ubzr3NHiWWu+82eEq72ZMBo6mEmYHg2N5eveWvuW90rKhVUVrSBoAQDOAgIWAAA8ITPcWdE6RgYR/Ab5yg6plSBfCdidzBvpRo7nHc+FWX3KCFRHhzdWBSNvuRERKzs/S1aw0sQoSbzKvq1TOja4YNWRRKw+3RO06PIAAHAGELAAAABcGjwFBuBcqqGDI+JV1X0luUKzgn6/5pwdtkuJXAdH+hupvyJGVYmIWCtDCTO5rqRyUfGq+gbC1tqn66q19k3I8kQs+hlhhQCAnYCABQAAYEuq7qtVT4dxsw7Ad6qhg6tyV0XEKE3EyvZByi10FqvDB6OC2YrQPe3aG2lrdSihd6xLwpYmfvH6MsJvh+e/au1fIUtzY0VELF4WAADOYu/kAQAAAIZYHYK36kb2rNDB3XPq7AoGNM9JRLBZJeqMXhNWvPH0/f398+9Mfvz48eVvZRsS2etopHxmPTLhdhWy7itt/aTE71obLy8vn38WUrm+r+h0zQHWy2U+AwDAkcCBBQAAYBuyA7/KQPHswSUAj8yZ7qtO1E3VRSzNjTXSr5Eww6gAlHkDIGfWdfBIR041H9aqUMKo+4p+tkIHpeWyubA0qJPK+m45sXp/+Ge4sgAAR4JHzQAAAEKscCxE6sk4LVa5MgAAXznTfdWJvME0cn36+Pgwr28jrqrschn3EnXbZF1P3KU14tjKhJGOurbODlm13FeZ/vC6IrmwtHXX9j/dp9x9JX2n7dNpvR1JkIMTCwBwNP85uwMAPAH/e3YHAIjm2PBuRq0b81GngoQ1QJWWiwhQ1fYiy5/FmYOHHbcHWE9ESFiRvF1jRACp1Jntb6T8ihDmGaJ89BzPhH6PPrCItkXLjT6EsQQnHj5o5b7ywvi0aXR6FL7O7+/vX6bR7/wznWaV48sAjK8BWAlCCAEA4MmQEhhztETI1rLZN3n1Zax+Zpa7qvg0CsQrcDQ7ui3o+W9d3zLhgVadM8IMj0DbFhlhiyYDz7adFdCiy/CwtWoooVSX1h5ti06bLTx64lXleLMSuGufpd90JHgHAJwNBCwAAADTiOZ9GXVBnclON+k7D5wBOAvpGiKJDJm3CPI6aX2R615F4OdklveuUdL28K69npCVuTZaZatvDhx5K6G1bplw2WgooRaKKOG9mZC3I72JkM7Lili8LohYAIAzgcURgPUghBCcjhWGkJknlZlJ1UVVDTtZVc8RnC1e7bANwDlErwvZ68cZx3QmEXd0eWuZqFCR7UeWaG6wyvIzQgm95bJtzXqzrRf+Nxo+GAkvpNMj8JBBOo1+t0IDpXl8WaneJwXjawAWghMMgPVAwAJbEA1HiAhYvNwMIgmZK8t5y1fqitY3m7NFq9aefmAC2lj+K6lsZJkjqQhJGSEru22O2i7Za2xGxLLqqbRtLbtKxNJyVWnfowJWtD7eDwov421/KXdVVcSS6tH68CRgfA3AQhBCCAAA4As0z5UV9qK9gr7SnseMNxRGyISuHBUqscugvrX1A5KZOdTAGlYejzPC7Ho9lGydVgiiFi4oXQ+19Zm1nrOhfYrml+JlrbrotuH1WW1L5WeQud5X33SY7U/me9Tpx7c/DyPsZfj+oaGBtE4pRFELOcQ1GgAwGyjEAKwHDiywBdUwQmm+xOjbkTRmilfRm+kdnFi7DXBnr+eq9cOAaS2j4YNS2ehyuwjGkXWNOFlnbEtvWY3Zb/uTyq6ob9RdVQlZ1PZlxk2VDTnUvkv9iOaclN7IqIUBWiGDmTcT8nafBIyvAVgIHFgAAPAk8Kf+1hsF+byIY8BKcizNj3CU84pzphNrN+FqJitDUqW3bD3hwOlhGdmXkcTeVjue20p7W5vnZJ3pxMqeP9HrM3dZWY4obV2qb37UXETVNwl65Sr50FblibTcV1wU89DcVtQ1pTkM+f7IJnWXlgMAgBGgEAOwHjiwwDZk812NOAFGWPWWwuxN9FFOrCuIVtX1iwzwVoSN8X2HAdQczkzgPuslDBlG3VaR5VflFJOWm5ELcHbidW26VJfkIsrMj/RDIpJDkrup6PysA0tzX1niVeTNktyNFc2DlU3qbrXxBGB8DcBCcIIBsB4IWGAbrJve6A3x6hw4FjMGqJWb6FVvJ7yCcNWZsW5ZwTRKdiD7RAOp6YwIkjOuJ2e5MluLH7+VY78axr3TNq1ev6XlooK0d26PCGqdyL72vo8IWPzYiSR150jbSRKYpM/3+/3LNC+UkNcpfX9wML4GYCE4wQBYDwQssBWjLiyrbJUznBVnurFWCVfVV6tHiG6vzMB+pgsrKlhBzBpjljA5sr8zuZGsZSKMOK6yx3vl/Jjtkp3h0MrU74nP/HtEyKqIWBk09xWdtkLAktxXkWNE235REUubZuXA4nVK3x8YjK8BWAhOMADWAwELbEXlSX816bLH6sHSrD50RvJ4zRCtRvOqSMwS5qLC1YyXB0QEDM+hERk4g++MCOArRe9s0u5MXqxOdN2rIlb2fDg6xHv0/Iicc57AbAlWR4hYmYTu9LsValgVsDLnVkXEqoYS0vaeNLE7xtcALAQnGADrgYAFtqI6yIyIJzPy2HSOCAni7CCocVaIVhLVUJuscJV1D0Tyukj98wa4kengKzPdRlpZieib6ioCSZTIumanS/NWbWNa/oxraycjWFnzPJdPpL4smWNA2vdZ0Uqqy7umemjbLZsDSwoltD5r3x8UjK8BWAjeQggAAOAL7+/ym7H4m7e0ZUc4c2DV2r8DAWs9jhgEHiVa8Ta9dYoKEVHhKitmSfOziZjpQE07zqv1z+jjrlSElRExXCvPj1G6T71jeOScpdc/fo3sbxy0pve+0umtfb/eatffKtK2PuP60pp+zkXm03l9G72/f32bHi/f2vfjg86LENlWZ23PGdDtQ6e1Jr8Rkk+jxyvdD/xzJ/I7AwAAFlCIAVgPHFhgOyJhgtZAY+YN+843s0fn5opu1+oAd5XDTBIzKnliKNF1HA0xyoQY8vaOyDe0CxGxcUZ4qIXl3vHcd3y6Va/Xz+z6Z6fPcHLx+VVmhyVWHVhWHiXN2RN1+1BBMUJm/+zmwGptrgurf+bL8vqfLJQQ42sAFoITDID1QMAC2zEqYFnLeewsWEkcIWJ523BFbhtvQBehmg/GCq+R6s700wozqkzT2pnNzgO5jBgzK5QwmpQ9k9R7JO/ZaP6r7HbLbNtR8apyfamKY9Y+iO5Lad9WQgqzeI5Cb/9I1z/++QwBq0/L5MLi87V5UnvSvAcD42sAFoITDID1QMAC2xEN7VkhnFyRFSLWGaKVhLZu0STXI8JVNYSQE3HfRAa4ELK+UwkHtabTeVmi4kfFcRdhNIwyEzq7chvPeDgxcn2K5LmK7E/LQaQtJ/VBI7KO2WMg6rzSRC5eR7SfHGlbRZxTlktLW8b6TJd9IDC+BmAhyIEFAABPiJXnit6Qz87HclVo7hUJPtCTBkyrwwOrSDlQWpNzlVgCpyRWRYWriPvK2wfe+njltTw6tN0j8p9l+7+Sing1w4kVgeY44tP7NqTHsDQti5bjyprHcwRp07JUlskKMtVlLPh5ph3v1nmg5Vqy2unTaP07Q4+LSI61GesjnSP8fKH7he8Dflzz5a16AQAgCgQsAAAAJvxm9ZmJigvZweXZ29YSsbTyvIzluooIV1E3gTSf9t8Tojh9XkXIqhAZtEXFupVkhaqMu8iaJmFdgzSBig/0pTJ0WpSMiKUtM5Oo+8pqPypajYrwmXPHOmel+ZKIwqfPFk28dfEEpt0fEGliVWsxMYovL30GAIAsELAAAOBJibqwvPKr0J7Kn81McSGzPjPDrrS+RNxNUp8y4pUkXFXcOjwMibbD1yOybtaAmAsevP0MmTxPZw30IuJVVsySvlMsFyNdThOzIsKl586qol0zq+6qqHgoMSJeRcUwq06rLWk7a6KWJihHxOj+W6UJmr1slREBu/eNO6xaa5/T+2daXqqjL5t1YY1eUzxhiotdmfoAAMADAhYAAIBvWCJWa/Pyn8xa9gxhKytkVPo4MlCS6hgRTCLilSZgaGUyDixpsOf1e4YwoQ18ZwiZkZDEowd3WXedtAzfN5So20dab74/pEF7RLRaIWJZfYowY5ns9SKSv0mbH+mvdO2R6qH5k+g58ePHd2ekd1xYIYW0vWw4sLdtve1ROS6sMMKqiDWa0y8bElhxbgEAgAWSzAGwHiRxB1vj3fDOEFGOYgeH1gxGQnUig/DIoMEaDFkuKipqRJxZldCz3j9tfSKJoKUExNr0SFLoKNb+seo9QsQaEa+8PGdSG1m0fc73H51v7XdpvlQnxRNYJSEos12j7quIeFVxXlnClbfukbYl8Umar53D1vnLk4xH6tP6oa2XRPQ3VNqWkqhPy1vHi3UMRH4bpG2ROX+sz9Fy0jX4AcD4GoCFwIEFAABPjvfUthoGcwa75xSxGH3Cr5XTcltF3FjScnxeRLyKCFla/ZH+UVeGFE4YDUPirgbJuUOpCFmWc8vaL6udWFnxqirA0OlSH7R1jCb/toiGFEp9ttDWJxp+lznXpPIrxCtPuKqKkt5vjTY/4rLSlpFCCntf+jFU/Y2L9iMT5ic5rziSG5rnY/PaiDBy3YHDCgCwAghYAAAAQiJWa9dwY11NxLK26Yz10ASTagjNiHgVde/QaRG0HFgj+XO05WkbIwM0a78cLWJ54lVkn/NltHr5dKsvfLqW98yaRqdntl8ltCzqntK+V873bB0Z8Srr8JH6Y+Htrw7PkyXtR03giohYvY0sI9dnmgur16Xlv+JlJJGKrm9r+n6QjuvsunNBXwsdfDBXFQBgEyBgAQAAaK3FhB9+o+oNVs5KlLszkfVaIcBVBBNahvfLc33Q+VEhS6rX2hbcPaHl2bGwBrtSnaO5dDjSfrHqnD0wjIpX1jxN4JKW49OjRBxYfZpWNurc4YKJd93T1i2yHUbcV5lzxSrriVeWcDVDhGstJkhKbsjMZ/4bJznuVuY07PVnXVh8WS5ieeuW6ZsG3e5aOTiuAABHgBhdANaDHFjgUuzoXsoOdqvrEG0nc5M+K4/KTKQBiLZO0uA1ImZo+Vw8Fxadxj9b6+Dld6nkdOHTtO9au1ky+0Urn2GmeJVx1Y0M/jteHqtojjNr3/JlOTPEpxkiYNV1pc3LCpBZN5bnArLO1WpOJu1YiPSHM/r7Il3fLJF/1jVTQtoereXyB/LP/NqJHFgAgJnAgQUAAOALO4bgrQxhrNQ5qx/Z7VxxrVjtctcPLe85KyLiFS3LHVm8PP0e2S7cmcHXSQoTskIKR51YfN00LEFKcjesCCn0hBDLXeft74iQpbWRXQfPgcXLSNc2bZmMmy8iEGXEK295a3qlb15fom4sqf+RPkbcV16ZrBOr90sLBT77N9AKH9ScWL2clB9Lqt/6XukvAAAcAQQsAAAA34jcAJ+BltC2wlkhiqtFK2nZqACitWW5Q6Q2LSGLf/bEq4iLg4pX9DNdf0uIyopYvV+VPDrZfcLbksp3Iu1HxSvPDeLN175r/YigCXaWCCUJWZTKMlrfKNq6RsSrjCgVLVMVECP7LxtGqM2XRMNIKKBV1qqjt3WU+MIFKD6v9ycSPsgFLkvI8oiUizilED4IADgCWBwBWA9CCMHl2UnI8gZeWcfESka22+w+VkPRrAG2FzroiRwZJ4olEmlhX1pY0oxwQiv8SOun129v+dkDRM1hMyperXJhafs5E+7E53llskSFq8j8VQ4o7dyKtB0V6qz+tGaH7WXCf+m0ajjh6D7PEA0j5N8zIboU7zfIu85UQzajYYYIIQQAZIEDCwAAgAu9uTxbzBp1YUWWPWsdK64ICWkwYDl/LGeLNk3qa9adReuT6rXab81O4t4dCjykUHNiRKH1aOFHWt8lZxXtN18+48SawSzxKjPInnGueftRmu+5eXhZjYzTaQfxKjvfqntEmKRltHBNKWxQmscdw5Ljkp47/Bz2zuWZRF1YHSlcUKtHc25l+xeZpmG1R4UsWu+DiVcAgMVAwAIAAJBiRs6dVYyE3pwpzM1wlUnlNSHLEly08FFrcGyV9UQtunw2xIz3mYf1cRGLL5cNOeJ1ZQe+2n6x9skqEUtzdFifR8SriJDjUREcteVH6+p1aFjH8mzxSrt+ZBxRXvvRerLnMA/17cvR80o6z/i53pfnwhWtj3/eBS5mWaJVa1/XVxKxWqs5eDWHI/0uiU5cmNKWAQCAGUDAAgAAsBxNQDiSzCDvCI5wgmUFE63N6IDWEiYkUeTHjx+uyyqC5LSi0yNCkzY4lpaJTov011teK9vaeJib5ZSy3EIZIUuqPyOsUDRHDhVBostb7p5Im5So8ykiSB0pXs1yv0n1R+um1yh6XFsiFi8vnfu0bsuRVXFheQJYxNFnubAkF5UkcFl1ZYSsSDhnJqQZohUAYCUQsAAAAByO5vKJUBGidhGvZoUIZpnt5JFCyrRyvB9e2ai4wfvuiVham1ZSZ+mz5sLi7XqMiljZ9ugyvU7eRp8vfZaEk6gLqy9viS9Rx50W6hpx1XhOHEmsitRt9T0jCM8Qr84S5CN90AR1Pk9zXlnnJq0348jKElmu8sDGc2Fp31v7KmLx9rLXB9p3K/eYlVNMqiu6DAAAeEDAAgAAcBqR/DOjnDnIy4ZxrOzXWaEzo+tkhSpZIpbUD20wXO2XJJJJIT8amT5YIlakvUjIl9V2L5sRsuiynsvI65OWJ6nPy7qpLDcWz6+UdRNJeGLdqHh1tnBl7VNNLG1NFns8Eas1XZyKuEut+StyYVlOKzovKph//R4AACAASURBVFp5oYOVB0SScEWnRwUnLc8VAADMAgIWAACAU8kMELNOqhHxqpJDpMpZg8/IQC0SPsjLnz2Yno0UmhQRniKhfryuUWdchKz7Smons481UUvrd1aM6tuQC1HR0EJtf0aFMYnoOmVCCTP1ev2xsELcsnjLRx1uURec5MKyys8QsyNo7qgREUtbn9a+Clm8DO8TJSJejbqvAABgBAhYAAAALs1M8epI0aq144UraaCWFUyO3kZnEXF4ZUIVW/OdH1bbXhtRNIePR9V9ZYlXmRBCa34XIbiQ1b97QpYmVPHtLeU9q/TXE6Fmi1czkBKKz7oW8O2sOaHod+u6ZeXC0pbtbXourNFzUMpVVRWx+PLSuvb17fVKZHJgWeJV1H0FMQsAMAIELAAAAJdgNBQwM6BcyYxBZ8TZ8yjMHCivxhvceuFN2TxOlf5p0+g29kLXIueSF0qWzXnWyYQS8lBALwxNCvOi0yShJUL02hUNGZwlXEmiSUdzYWmurCPPU7ofLKeVNC+yLBWxrPkcqQ/SNhkVsXhfvPDBzO8EF6qkaZ54FfkMAABVIGABAAA4nUqoyiznVdVF0bESEs9E6ueOQhYXGKL71gpbiq6fJexkRZ9V2zTqeJshdnn1S/VKnyOilSeOeeJVVPyQcn5x10xVxJK+03Z4n62+caLLZYWtUTIiliRSeQLXrDyH2TBCy4VlfaYCEM1rFxGxpHKSE6r3sSpiaeUz4YMUy2VYEa+keq0QQwAAyAABCwAAwPZU8slY5aSykWVmlK/gDe5Hkw5ry0vtZpwWtCwVG6ywlxm5dyT3AJ+3agBFB587Mfs4tUStrEOrItBwh4zlnsqKWNq0CDNdWUeFDFoiFkc6j+m8jGuLzl+FJla11tTjgF+XNDdWVMTq0HZ7vbyPlojF18vLg0X7ZG3jSAhhnyaJV9Yy0ufdro0AgGsBAQsAAMBDMCpeHSFEVcg4U2a7ho4KC/KcBZHlO5J45eV+8QZUlYHXDJfUarztO3JOSKGJUr1Vd5HmttHcWJ6IRct44liWijMrs10iTkzvXNZErIgoFTlXtTLRc8Qrx/endgz0slYZLkJHnF20f961mO8LL6dV1HlFWR1CqJVF6CAAYDX/ObsDADwB/3t2BwC4AiOuqqpDyyq7A1nxKDJIyCTy5X3gokT/LoWKRT9L9fB2+TxtXTzxig/AIjlbpOWkeRrZ7W2F80TqldDOGWk/0M98n3n71FqWt0P7ofUxSiVvj7ZvLffeCJH1m+Eg7UTOZw3rfIzs19F9mhFRZuRl0urhbVv9k8pJZTiRvGd0euTcyfzOWddQOt8TryrX0AcG42sAFgIHFgAAJJkpeDzJzdw0Itv+WcWrIxl1Zmm5XbR8Ln0Zqz+8fr5MZuBr1S3VcTV2PrY4vK+a20RzYvG6LKfWbOeVx8x8fVJZaVtpOZko2vnI82H1/lqhhN46SW1X4fuST+t9k0IGNUce7T93Rc12Y3GXmhVSSPvH28+EEHpCuvVQIOq2ejLxCgCwGAhYAADgsHIQw+vGDV6eSKjNUblkdqdyfFkDLD7Q5YNa7bM0cJYGzb39DFnxSlpfad4R5ybO/69Ix4kmCGiigiRqcHFLCz/rZFw0GSqurAwR8URrxxKxpHJc7KECdETIirgpKXwfakKUFyboiVi0L1bIJBey+PHFy/BlI3mxeN2zQwg19yd3nvJ51jXzqiI/AGBfIGABAIDCGSIHFweeHW/wFhncVcWrzMBxh5v0kT54y0oDV809FRWx+GfNJRDZX1JoH1+vSgjSSOigxejxcta1gQ/kpfmWOJl17mnlo/neJBeWNp+7s2jftT7P/o3IbJvow4/otpLELC4Q0XKSg1JyI0niTLQfkXme604Tp7TPtC1LyJLcWLwMX2dLyJIcp5oYKDnCpHKcyP2FJVxJ8yPXU6s9AADIghhdANaDHFgXozooiQ4+KoPXZ7j50/L0zJqvlfGWqTIqUswW0DIheF6feB4WnjNHy6nEy9PPdLnOSOiRNtDyvkfEK15/tE/estH6s9cDL7dONAcW/cyXkerSlpfalvrJ+9vJhj15+9Y6dmZSubZkf4+yx5yGdC5q5302B1Z2f2rlrDA3uo81N2bknLfq5mUtcTtzjEXyYknzotvb64fmPvW2V8bp+uBgfA3AQnCCAbAeCFgXITNQmJ1DpmLxfyQiN96ZG3k+32pDKz+LkcFwNVEzZ9aglvZppojF66PTs2RdV5Hv/PPIdq8O1q06PTICVv9O96cmOnrCVqR+Ol/qaxRLdND2L53mnSMrrg+Zdc2E32nTRs532ofoeewJWRrRvkf2ef+ePfe1aday3nJSWW2fjPz2WdMtIusxsh2fCIyvAVgITjAA1gMBa3NWhJRFwzskRt00V6QiQM0UsFaJV5QZjqyZ7r0ZwtosEUurk8+LrseMgddo2OAK91X1vB8VsOg0y3kVdWFp37X+RqjsczqNf45SFdxmhx92rPWpnvNREUv6zpeny2r95ETciBGnVFW0yk7jnzUBzFu/UQcyRZqvbfeoA81zPFptPDgYXwOwEJxgAKwHAtbGjIaUjQ5CRsK6HunGcCQ88AriVWvn5MlaIV51KiIWL2O5Nvh0j2zYT3TQlRWvKud0ZEA7cr57AlafFhGwKp8zomXWORkRCqwBN69D285WP2aIUSPXIet4qTr7ItfcSghhVoz2yIotkeuBVS4zTZsvlZPKRM+FkdBrrT8rRL0nAuNrABaCEwyA9UDA2pSqeHXEk3PKzFw4u5IVsGY9mT5KvGrtWAFrlnDlDWpniFhaPXR6hGp+HOm7trxUf7V/Wj0Z8UoqG7lmRQQsOj8aMmg57rJiR/bcrAoQdLpH5to/4titEg2RzKy/d+1dEUKYwVsva1tUwgWtaZZwEz32ZolYVtlM+48sXs0IbVXA+BqAheAEA2A9ELA2xLtxOVK4ksjmL9n9RtFjpoA1csPv9W1kOx8lYI2KV946VkUsPn2m+4oyY8CZcU1EOEq86kTDby2xYZYLiy4/KnbQ9aqEYlYErIoAXjl2K3VZx0/GgSTV5fVDChPl0/m0CKOiQlRUybiNrLpmuLGs3/vsvUj1oUw1FJtOs6bvwOx7OGP9ML4GYCE4wQBYz8MLWJWnfGdxhOvKu4EcERIeVcSqClgr3VeZgWOE1QLWiHBVWZ/IoJV+H3VfRXO4jDgFjhKupPpGRC5OZNtF8mDR7yPC1YjYEb32WsIVnR/ZzpnrRvU3xVp2hvtME1re3+W38vV5fLq1vtoxIs3zqF6PRxxEVfFrhTievb5UHsJxZonAs9ZpFasfPgrrifE1AAvBCQbAeh5KwJp5I3D0zc0q8Wp27hJOZgC7yw1jlsgAm0/PztPKRfoiMSuEbASrD6uEK4q0/SMD3BkOnNb8Adgqd4RHNn/dTPGqU8kh54V6zhCx+rTovh8JI21tbBtqfZgVxpUJhdbIileSkBURI7S+StNnCJLSsryOiGgfEetmCVmjQnnmWlO9n8lcm7IOxt0ErCNd8619WV+MrwFYCE4wANbzEALWETcCK292VohXM/MnzRrwSmWvwCyRKiJgzRCvOtFtPVu8Olu4onjuuIpLoxJKWHUNVMJ6RjhCvGotHkZI542Eg1rClSV4zNj3EjOEK9qfiMBUFausNjJOUClskH8eEbGs/npCllYHZ1TEbM0+l615lWtIJGxzhYi14p6s6mLcTcAacUV6BH9fMb4GYCE4wQBYz2UFrKOfXnFm3fycIV5Fwx04K0KOdqcaPmjNO0K8au14AWulcFV197SWF7H45xkOnOigteK6WiFcWfXOFl9aG3Nh0e+WiMWXs0JKI4JH1YFDWbHtss6pyHWqGn7niSSSaBURsqIiltZ3qf9ZN/MsV1prcXHGKhsR+zJC14jwAwHrOyvd8hLG9RvjawAWghMMgPVcUsCaYfPvzHSfzLbYd6pP0qvttVYTEx5RxKoKWDPdV9XBwMoB9Mw2IqE2WSqD9OjAXaovSjZkSCvD540wct4esY/4vJkille31Y+zHqJUxJmsWJjdRhqeYNLFKSpaaYKW5eDSiGwrTsRpNhJeGX0QZIk0u4tYqwUsq087ClhnOq6F9cb4GoCF4AQDYD2XErBWWq8pK/IBVRnJb2KVj5IVFx5NxDpKwDp6/3Wqx/oscWxVKFxra0QsrW7eTmIwIX7PhBlVGXFdzerHDBeWNi0qXFWELK3Pq0Ut7/qScX1GRSvNnTYqYEWFrFERi/bZ6ndUTMiK2rze7HWxElboiVbR79I8qW1OxW00mqpgVwErelzMvHZY12sIWACsBScYAOu5jIB1tP26c6aYlQkdzIYZZpkdYvSIAlY1fHCVeNXaGgFrRp0rhatO5JzIDvwz7sdMyG10wHp0uGClfIZZLixtWiRMsDJN6ru1HtUyUntVIVabLglV2merbg1NdJL+t9ba/X4fFrF6mUoIZbT8yDaJErkuHCViRQWgikOcUnWoZVxpvPwqZhx/I0j3YhCwAFgLTjAA1nMJAWvkhsi7OYjexJwhZI24r1bdFFUcVld1YVXdV3xexX01a//NFrCuIl51MiIWn+fttxkhHtEBmTR/tG2v3qP2U+b8qIg0K0SriovHWi4qolTFqxHhSnOsRfotHd9RpxWddr/fW2vt8//b29tnnVbYHCd7LxG5VqwWso4WsTKhhLztUfFKWgervYjbKnONnckK8VQi61y73+8YXwOwEJxgAKxnewGrckM0cvO4KuQqS1TUOFK86lQcVld0YR0RPnjE/quIFyvqyYajzqByHllhY6uExcjAana45yrXlbRsZqBWPX+ybqzItMh0rW9aOa28t/ws8SojXEnzPZHXElOowKAJWN2BZc1v7buIFRGwONXjMiKSRuqP4glU1vVE2jba90ooYYSKQ77ycGyXMMLsvYNWLkvkmg4BC4C14AQDYD1bC1ijA4IRzhayqoOjzDao5KHozBCxnk3AOiucYIaAdbZ4ZYUEWWSuFRmhsbqfKg5Gq1ymrWhd1bYj53PkOrba+ThLtKocI56gOiLQVcQrS7iiy0pCltY/S2yRwgCpu0oSraTpnogVFVsyYaARJ1rWjZX5Dc6IWCtdWFYfJVYIMt66atOPeJBWFa9GthPH2m4QsABYC04wANazrYC1Q7hca7GbmzNy92hlZ1jSOzMGut5N784ilnUjOisM7ah8GCMC0qiYO0tIoUS30ywBy6ov0peMo2mGU20H15XGChGLzo+em6MC9ArRLXLtGBGvPMGKz7OcWLyPvY2IgKWFCnIXFi13v99NpxZtg3+uEtmuETdWVrTwrg2VUMKzXFijwkz2vuKsMMIZ17VIfRKZa/fv378xvgZgIf9zdgcAAPuzUrzq9Xs3OP0GZIaQtUq8qtxEeusV2TbPxqgD7mpUj/nRc+X9/X25cC3V//Hx8W2/Vc6BlQ7OGeLVCuEqg7T96ba35nO3Xl+XPo87hXg5yo8fP1LTI+1G1kWqr0JWvKLCVWut3W63L+X55/6dQr9zEaS30de//4b0aZ3b7dZeXl4+nVYd+r33jbZl7cuKyMrr6fud7lP+ne5PPu9M+Dbm30fqsspJaNtC2kdSW/TeI9IX615lxn3MLPGqeoxI7seZ96UAgDgQsAB4Uma5jWYh3RxISDfuGVYJGqP1WjdC3o1k9kZzZ1YLTiuP5+pN+qrQwVXLRRjdzpKINZORAVVWvKq6rkb2T0YczNZjCUPStamXo9+58NTnWYKVdm2kfZohYmTcV5IjiM6zxCvPncXrldaLrm+/9nuhwFyUau37fvNELN4nvnz2N4jvX+17RcSix1qlbxbV31t+/aHfM7/nFbeqdq/l3VtI07X+zb4POVu8kurgQtaV77sAuBoQsAB4QlaJV3z5GTd20fZGnlRGyYYoWNtPW0ftRmhEpHoEF1dk35399L3C1ffLCGfvr5nnRVS8Wi1cRYi6rGh/LFFAEkw8IatP80QprQ3JCSaJGJZg54WeZfFEq4h4pYli1jpwoYcKWd1lxbez5L7Sfk+tbSjtv+hvU8R1R797IlbHEm89Vp97M4WOingllY0KMWe4sKz1OUO84vU98+83AGcCAQsAMIw3QKg8jW0tdzO5wq0RqbN6E0nLRJ6ERup7FBdWht1DBEf2w7PsQ4kZ+7VyHnjLjOTZ8vpy1mCoKmLxcpmQQ6m8JnppYYLcWSP1O0t0WWnwTP9HxKvubOIhhNRRFf0tiRw7nvNKOz75clw0tJxztLyE5qCSvtM2JRErEzLq9TOaw+mIa3T0OlYVaLzjZ6YLK3pv562Ld55WxCupzoxg90z3XQCcDQQsAEBrbSx/U6Rc1Y3V2vqBXVZw6szMrZC18z/rzdLZrp2ZzExsW6krMnCZyRlio3eejD5FnyFeHZnjivYn4rKqiFityW4sScjSykddV1rfRkMJJfcTr08qI/0meOIVd115oYSUSBgaXZaLUfS7JlTx44DvD/rf6p/Vf815xUVLLyeW5wz0+tHXK1Kuwkr31QjRe4usC8tylLf2/fiNkL3virq4rPnPeK8FwM7s/egaADCd6E3CToPXRxItNCICGS+32iIPzmPGDfNI2OWZx9Lswdms+qqD1zPEq1lUnSieU43PtwQ/T1wYzb80Ey5E0enUjdXav4KRJV5xRxb/6/OpEEbr5e6ul5eXdrvdvghq/Tutk/aHzu/TeV8l+H6T/rSyVDyj02lZ/l1qr0/3/ngb2npQpP6vOha9a9jq+zXvd6J6L9KPpZnilRdaqNWVaVfrw+6OcAAeBTiwAAAlqo6t6g3dqFMiyxn5FWau47M6tM4ks+9mH8sjx84VhU+pz9b6rzgfou4rjbPFq4rDKlMuixRSqIX1cGeO1a+VSIIVFXq4yMNFLKksd115LqzWvr8d8Ha7tfv9HnbMcaeJFpbJRSO+LO0DXd7qd69D259W+KDkxKLbiratHZuR8zh7rnoCbba+I37Lo78hmZBBa3qWrHiVqSu6DO6pANgDSMUAgMuwy0B7pfOJ15V1YUXrfVaOFA2qN7szb5LPeCJcDckdrT/zJH9WXzxGRa5diDqxMpwp+M4kco5xIUsLLeTTuAuLI5WVwhnpPN6W5vqi9UTEtJFrjeeuklxZ0nfqxpJcfZYLrMOX1erh8z331dWcmFkXljV99Heocs911j0PXFgArAcOLABAierT9tGnWEc7sUbyK3T4dsrkkOjLR7fZ0dvnaLIuC+k4PcOpEWXFubHjk+Mz9sER2yGSS2fn8/PI/XL0/h9dt+jyUvigNk9Dc2FJdOdTT6jtobmjqJOKO64k51Pvm3U8e8Kn5LjT3FXciUXrkHJfafB9qJX3wmBpGS5oRcJlZ+TPm81sFxatr3r9ne2qGhGYrJxeO1/XAXg0IGABAA5lxs3YzJuF7JPkGXkTIolBvXV8lBumaNiQBg+HiQ5QZw/Ud9kXR4tYOz5tPuLcqCSsjpbZldEQwRHOFJxXrbeUS4qLXa3Z4exR0YrCnVm9Ht4eF7e4kET75F1bPJFICvmzRCypXS5kWe1G+9exhLiKWGUtY7W7K9Y1l4tYrcXWSzuud3ZfAQCOAQIWAE/GaJ4Ta5lnw9o+0afs0RvUHV00RzJyrGnLzhKxRvOjzOZKTqyrsGPOGo/qsR09L7Lnj5dXMBI+XWGX3ylJONLmS0S2GXVGaUgOrNfX1/b29vY5rW8zLnBlnE4ZNCErI1pZ0/i9jUck3E8StbzQwkxurB2uIZzIw4HI74wlZFnngXZsn31+X/nBBABXBAIWAGAIKemrV/bRybq0tO0yaud/RrIJpvnAaRZn7w8tvCfzBHw2USHBKzciPEYHV9ntgwHMV1Y6ICJJzSNYx9moM3Q2Xj6hLlxJvxnWdupvKaTlqHDVxayIy0rDE21o/+j1OCNc0e98X430XepvNIxQmhYVs7z+HnU8WtfCTLig9VDlSpz9uw4A+C8QsAAAKpmBovTE8+o/9pYjYOaTwJXhXVfeB9rxVx1cWmJrVRSpCBeWMDl7n3kDh5G2Rgcf1jZfKWKNMmsgf3VWuq+q7UTgxw797oUkS9MirideLroMT/4eCUvnYYjv7+9fhCpOn0cFIO7CosIEDemz8kR5+a+k6VR4j7itaJtU2OQus9FrlRUyHHVdjeTF8tg5r2NnNLQ7un5nb4cr33MBcBUgYAHwhGRcKtUbo5U/4isHgrs9Eaw81XxUrIFIJheW58bqaHVk86VksdaxgpVs+WiRMxOqHBGxWosnZbaYeS7tMIA5YxA389o5o66R3y7pWkKnd6FIE7mi/eeOIykXVifrPOPH9O12ay8vL+1+v4t1dyGr958KWx8f/30LoOaQ0tZL+m45emj9UTcWnzbbgRVdj4p4tXvIoET0nkT6baleZ0fTNcxA2z/PdA8GwC5AwAIAfGGmiLWCnW8WVrzd5hmoOKq8YzIiYrVm77OVx1rlRt7qa+TYmRlWOHPQMCJi9eWvwFGC8y7X6igZ99XswWo/vqxrUMQJKuVwkubxz9xxpK0jFa+87VXJ8USvh13w0UQiaV7HCxe0rjFSfi1rfTTRKuvAygjgM5xYVpkMmYcBO2E9ULHKR6k+wLLKrygLAKgDAQuAJyU7aNzh5mj24O/s9VnFIzmzMuKWdEPfmr2fI0LWKqTcL1V4/60b6Ug+EsslMUr2+nJ2/iGPXc617PVs1TathF5r5WeTDYvXkphb7ky6jJVjy6qnte/hg1y8yuTCshxdfPnutrrdbp/rEEna7ola0cF9VMjSRKusA6siOmjOKW1dM64rS7C7Ap4LSypn1bWCyG9K5LjY5doPwLMBAQuAJ6YiYrV2/I3UGTcJo4MwMEbVhVUVX+nN6tliVpaKGOU9BV+9Dc4Ssc5+Qr5CXK4cO7sIgmddS6XQQO96Ionp3FVFp/fPfV7197MLWdyhJdUjCVf97YJSCGH/TIUq6sLiriutHEdzeHWsc4BvO239LNFKavssF5ZVJtIeLeP93o0+aDz6Xstz2K1k9Lcg4y4EAMwFAhYAT05l0HiUkPVsT7cQRqi7GjLhPdKAJXPMjopZR+9HLbyJ9qe1mpC1kkdxYmVFqdFtPnrd9bahVr8l4q/YL5nQQg4/VrxjxxOxWvt+HklhgHQ67WckjDCCJF7x9eTXytfXV9X1Q9eFClWSWNXLSTm0ej80p5E1rfeDXtM7mpglCXVW2OBsF1YkFxb/HhWusr8/K0MJj/gdW3EfuTpiAOIVAOcCAQsA4A4aW9Pf3EYZvWGYOYg+MzQMrCeSo2aGi7B6HFXyVUUHKxGk8ETLlXWWkLWLiDVzvaMC5pHuo6tcB61+zlqHfnxpwrh2jeBijwQXVriIwsWr3p60bj9+/BAFq4gTS+tPa+3LGwmpKKe5q/ofFfgkoUsTrPq28gb93jkTdVzxsrTuWcdQVLSKlI0Ia9nfuoqAU70Gete71Q90rAetq8Qx3j4A4FggYAEAWmv7J72OoIUyHDV4G20LN0JfiTitKiKWVd7qS2tzBkAjdVRELkvM2kHIOkrEOvL82sFNWdlGjxYe7Z3nnruzI4UE0mW084YeA29vb+319fWLeEXD9Oh0ChWspM9SWalvFH7+S4JVF6do3R8fH6oDK0rmvLCEwrPPr1WilUTlty7zsObse7dVzBSxPLecVQ4AMBcIWACAT66QK4gy+wY2uj6r7enPSkWkit7Yt/Z9/1ZCYWcKorOPoYrTShNajhayKiJWa/Fzdsag2UJyulihmysYPS53vqbNCF/UrhWSiMXr5TmzKFoIqeTGogKVJi5p0y2kc572l4tk3MVlhQ1q3yU0YckKo6Pzpfr4ekXalK4n2VDfCFHRavY1oOI6bi334pBon7Xfj7MfgnS09Y9ghbxmygMA5gIBCwDwhSNzBWUYuQGcIToc6eQa5dluoiIiVi/X2riQlRVPjhIGeDvczUHPITp4j+TI6mVXkhWxtGVWkxX9eP9mDGZnrnPk+Dx6Gx9xzlgiVmtz3D80XI8KS9L5x4Uh7brE94X2nQph/Tzh4lgXrvi6dacV/96dWv0zDWPkdXEqbhUtTQEPD5TEKitEccbx7K3PqMhhPazp9WRcx5m2z3a3VYj8FlhpLyLbxtouz3bfBcCZQMACAIhUB/UWlbxAq1g1QLpCeNPOzAgV9I7do3JmZOpaEebAb84loYo+KfccQxFX1hkuHktQPOO88rbTWUL4rH1zplOr0jZ3T2kiQOS6QfuRFbHo9al/vt1uXxxSUiihFeZoIQlWHe4M639WyGAXrvg8aVtoObGk9ul6VbDEKi232KzrwqhgZfXT+y3Uynj1enjbJiLUnCXmZEXKWYIexCsAjgUCFgDApBJmpbG7SBN18mTqiZbXyOTVyNR7Nao5QFa7sSQiy46ECHUyjinu+NDcWL0t69iR2lgpakTPxZXHuxQO5rXnCQezOUpY2imE2got1PByBXnhbNnjjDui+vbj56R0jkbFNT7PO860EEIaRkj7z51WkqgVZSQfVLSsta9GxJ1IXyrinCa8jIhYtN5K7sSrM+q4i2yP0dxmAIAaELAAACEs6/UzEgltas2/ccINz3ciA+RZiWxnu7GiA0yJ7E22J2pJA3Lu7rDcWJFjc+Z1wMqrcyRWiCAXsVrLncPPft08Ekv09nIFUSLOw4+Pj083FT9++G/B7XYTXVhSfixJXMscQ1QIo//pumnHrxWqyIVDnjur93P0IUs1N5b3EGmWC2umk4wuH7lviIpYM/pE21lR72pm93PFfgcAxIGABQAo8YyCVvamsS9TZWa+ikewuI/kAKm6sWaEAVp1aCEuFbScV5qLQ3NjRUMKZ+ENNHdCGpRrecbAXkgiVsc6BiMiDM1jJdFFql6mO64kFxYXmfkxR8WX/pmKRhr9XPfC+6iratSlZAlFI/mEImHMVv3VUH+pHouoE86rY8bDmlGq9xDRbHOvFQAAIABJREFUa6JU/27XfwhXAOwBBCwAwBR2y4vDqYhPZ+I96dS29yMIVRYjOUAqbqzR40RbVko6PIqX80oSsiLlom6sDN7g8exz01pny5GjrdejD3IsQWCWWFAhe72I4AlAFl3I+vj4aG9vb9+mj7qwov3y3FFavivNhSUtL7lBdwjLqoaCWlSPB+03adXDmioZ4Sa7LTK50s74XdD69+jXdAB2BgIWAGA5lZu7swewrcXzT7Q2t7+ZG/jK0+2rk80BknVjVQYE0nxpWlS4Gs3ZwZ0ddD4fFGtC1Sw3VnRdKufQyhdDZHKBtWZf52YJOLuc156IUpm3Cu2a3VrtmIs4e3pIYWv/7nsaYkdD7fg0np/qdruZghMVi/hx1qe/v79/fu5CWZXeR+tNhNzdpl1XODPEq1nnSCanWLbNaE6qERGrtTn3JSPHyqhDLVr+CMGus8s1GIBnBgIWAGBLMk+Sj2blU8/IDfyju6xay2/PbIigdYM/wzHiiVcZ4SqSD4wuawlZmoglleHzpP5lkgRn1ski2lbGOaYNqrN1ZKicx9Xj8oi8PBW087ZyPa2GCc9Cap+GDnKBhzuc+l/vE3VgRR2LswUD3gZN2C65tCgjTjWPTL3SQ6gIK4WK2Y5w7fysCllVwS6zX2afe6t5llQNAFwBCFgAgEuTuUGL3DSe9dSzklvhmcMKK9s/IzzOHmB44tVISKEXOtjLSCJWX4aXkZanbWj9rvTfY0Q4mZHHa1WOq1nXiQgr8plJOaVWhwqOtqmtf3Ufe/mnqIuK7zseNqglTaciWEfLLaWJgVJZy4k1+pvBt0kX4/rnSJtHhKi1Nn6tivSn+qAk6zZuTb5ezroHyOQtG8lxtgsj+bsAAOuAgAUAeAhWJzCV8J56ev2p2NQjN0rPYnG3tn/WjTXTicXrssSrjHCluZ+k5a3cVnx5y40ltTP7HJvhdvPOi4iAY+W24vVYrDz/NIEiyoiQlTkfqkLTqAhW/R2oDlQlIakLQ6+vr18cSx0plJC6maxQws7b21t7fX0N9ZuHEb6/v39xefF1yrqbqJus97fvf3q9rebEqvbtzDqlNiJO2hkPU1YJybOua7uKPZX123VdAHh0IGABAJ6KmS6sXrY1fWCbvcGJPrV8dPdVdABaEbGk5WaLWBIZYUsqY83TRCYtLDDixqLLcyJOlhlEj4OosBMJCYwIYhYzt0FkUFURtTKhkbw/q11W2XZnhnRnQ6d42/Q7F5kksYrSy/Y/SaTiIhZdR82V1deLCln0Pxe1pGU96DWFiler3ItXJHKvMVIXr7e1OdeiSujcLPdcpS+rueo9FQCPBAQsAMBDMSsXVeWpZ2vrctRExasdbvCOxstvEw0p9Mprx0DGNSVNj4QUemgDRct1ZU33toUm8pyRk05Dc1RFRawzkPrKyYhanpts9HpRcVqNXqOjQsDIQDMbRuj1gb99kItVfTqFhh3yhPBaP6zjhf9OUPcV/c77xdfFQxPSIGbJ0P2WTVngnUd8O0dCFjNkUh9UHOe7ANEKgL2AgAUAeDhWuW+yN4wzbhYzeSV2vwmMUh3ceiGd2j5uzQ4pnOE6sYQgTjUfVl9PLwcWnadtk4irZ8QdpdW5AknMWZETagaWeNrJCAERIWsVUaFKK5cVuqoPESrX4Wib0nQpHxadLuXD6vMl51bvn3eeSWGDUgihtnwEHjbY29DgLtBHFwpmhhL2sq3lHMuzmCFe7Xb97Tz6cQjA1YGABQB4SFaKWK3Fk8aPEBGvrButK96EjTpfrAGlFwp6VGhUNCywtbnJ3K11jwizK1xJK+rUjntNyJo9iFrhwuTbiYuVkeWrIZVSPyvrGF3OchJ5TpVebpTM4Nyaxx9oSIna+R+fT+ki1sfHx5dwQt5v6VinTixJxOJ/I9Brj+UOveJv1ApGQ9pnOc8jZM+NncUrHH8AXBMIWACAh2VlHqSVN4zRG8Srhw6uvOGuhBVaA+Q+j06Xps1kpE4th1VVzNIElEgfsstpRI9xLuRJ80fdWFkBJ+usokj9qrjKVgkGK8MIrbqz7pNIW5TsoFwLnetCE3cn9XxYHx8f35xV2nRaX69H2t7a7wUXse73+5fpNGywC1mZ845eEyUy7kFJXH0E0Wv096LiNJ5BRYg6Wry6+rEBAIgBAQsA8NDMFLFa+x5q1lk1iKJte+XOZqf8Rx1LyMqKWLOpJHXn5TjSgK8TEbOiA8Sqc6m6PXnfJaJCjzZ9xIFXXa9IeKUlTkhi3U7hkaNhhBKV0G6rXan+SNno9uWCG8+HxadJ02k9fTrvm+U+5cIV7Q93YPVpdP1o36T17qKVlsQdYYQ+mePaEolnCVnefvCO/9Xi1bMeJwAACFgAgCegImK15rt0eBud7I2jdSMWudk7S+DaUbDSyLjoIiFMZxBpOyp2zGBGfdFjPyv0aEKeJGRVzpVqaCfHatsLG/TWMepgWRFGqVEJI5TOU+2aPdIviYxopbmPuLDEhSip77fb7UtSdxo62KHuK+5+koRNScTqDqw+jYYWSutv0Y+tiBOLL6NNe1QXVpSRsPfMPUl0e0auE6uEq2fZ5wAAHwhYAICnwHsqqTmsom4sqa1RIoOqo10WVxKtOJaLThsgS8fAkflGOlXhrCJoRcLdZmGJJ1YCcms9qFsrMviNJDqP7O/KMZHZ1l6OM1rubAGgEkbohQtK52hra3KORYUrfv3griO6ranLqE+nea94Hiwubkk5r3p7/HoVDSHkLiz6uX+nnyUsoYo7seh2iPKIIlb24YlG9BwY2VbR/TX6IC5bJwDgeYGABQB4Kma7sToznTmVnBLZMlkyg/PotjgrxCkjVnrzLKHLQ1tmlVgSCcOzGD3GPaGqNVk4iKyrJGhpIo8XVpghskwm5FOr1xLdtHW0RCypj9mQuKPxHijMaiNSNy9HfyekcDj6WQolpMtaogQVsej24E4sa/2oiEWFLCpc0Wk85FCCt+u5r2i/e3nt+JXmPzKVENnZ7uDMtoZwBQA4GghYAICnY6Ybiy/Dl8uQzSlxxA396AA9u9yRgxRvoCANCiKCVVYk9eBlV+RbOoKI20gayPIyXNSKCFWeyDNjPXr/M0QTt2siH1/HqIh1pIMlcl5Fy65wP3oOP6ucB3dh0TA7elxKbitNyOr7spfhQhYtJ60PFdK4eCWFEdLlZxwzUTHKE7Gu7sKazYiIVfndhXAFADgLCFgAgKclImRF3Vh8OU50oBol6gyo4q2jdaMcTdrs1XuEmMUHidoAupqLpOLQmjVIP9opU93vXFzyQvp4WJYnRHtCjtUWLychbeeqQ06qUxOzuJAlCXXWIF8SCKT2pD5J/dHKejnAsu4SScDLoG2PGddUHsKnubDe3t7a6+vrl+uPliOLv4mQv4Ww910KydT6KIUSUuGKf18JPXa9UMFnFbGivwnRkMIVAtPI7/Uz7EMAwDwgYAEAnp5ImGBFyJLqGenfURwxWPdCpGhbo0+Hozf+Vr4drSxvc0R4ijxBn+n+idY70/ESca1JYlNEtKLT+YDYcipZ/bKY5YzTlqfboWMN3jWhLiMQ8Payfc4uLyGdR9Y5N0I1XFuaR48xabvw3w0uOPJjlbqzeD9p3isqkkccWL1tT8Tqy9HzrkIkmTtfL8qjilgr3ISdlWG1s9q64j4DAOwBBCwAAPg/PJdNa+NCVqVPWl8iZTMcIVxF2pYG1NGbZGkbRMUsTcTSXFTZMMJInV6/NCKigdZOxW03+5jnia9b+3d7cVHGG7BKApck5tDplb52RtyKvH9avVzM0txq2rbxRCxaRwRtnWeLepSouyRSh4XlXPKW4+7NTndlSaIjPya5YESFLIl+feht8Hp4WdpfScTiQhYXtXqZzLbRkM7pSN66qpNyJ7IPSVYKXhIIEQQA7AoELAAAIGTDCuky1nIjfeHtR8tmWDEgrYZNaq4Qb7nINqjs30i5SBjhDKRBTDacc2Rfj4g31v6TBq1RwaovJ4k01jSt3ci69Hoi5SJIudaktqwBPBextDLaOkdCNzPrMLJ9Ig8TtPpm5/OJDOS58K2J3dL1RxOsWvvuvur7lIYq0v1J3U6WC4wLV/2z5caiy1WmcSwHIV1XbZmooxDEgWgFALgCELAAAEAg68aiy7U2LmRlxKsRZglXmUF7ZMApDaYzTiwPb/9yd1Q0bJCHwkWesledWRZ82ch+toQxbV5FpJD2oSVg0c/ZAaolbLUmh+l5ZNY5sw/5sd7RnCZWvitPxOpteM6vCJlrRWY7R8+BVQPrzGC+KlJLzjlpf2ruK94+v5Z47UrilVa/FlrI65SWjaKdl5ljGCJWntnCFbY/AGAlELAAAEAhIkC0NlfIqgwCqjeLM8SrGc4iywUTeSpfpSISVYWlUWEqM0D2xKusMGVNi7SnIQk2noDlhcr1OngolxVSKPWHkzkHqsKj1hcvpEpzl0VFLF53hKxYpx273raaHTaVcWlyvG3kiUhWGKF0XPN+SCIWdWNRV1ZrMQcsbUsKJ/TCB7kQFoFvm0hYqxUy6IlcV0TbdyvCCGcIj1Y9AAAwm/+c3QEAnoD/PbsDYJzITWM2lItSfQK6UrzKumtWinWRUBarTgtvPblw433ny0TKS+W0adZ0q22tXqs967vXXw/u6ODT+EDamuaFRmltjIihK/M9UbxjXxIRJJHBWtaqv7X6tW3kmlgtS8lcD2YN5Ol58uPHj8/v/P/tdvv8zL/zeXR6a/+KWbQt79ojrad23lj/++f7/d7e39/b/X7/nNen0WX4NNoO70/kum4dw5HjexeOOG8sZriudt6+J4PxNQALgQMLAAACRJ58Wi6ZnW70pPUYyV+zwnFyZFhI9qm2FTaYXd5zVmXKckbcVXRQTAfjmXo8brfbtwF0n6aF/vXPliOLOq4sN5bm3rCoHv+R/ab1IeJG8ZxYfXnNycLrt/DWd8XgO+NonSFatTYvZLsfc/xYjLiwKD9+/Gj3+73dbrd2v9+/CdoR4V/qGy3HxWH6n4pXnmhKl+HrIE3ry1dDZ+m8R3JiScxwYY2KtY+2TQEA1wICFgAABBkVsSrMdl9VxauZwpXWr4yINTOUcAS+v6UwIkmEik7T2ssKW9J8LjrR75pwJX2W6tLa5ftMErG4YNX3Oxcxej+lgXKnLxsVsqLMEq208lo4bWv2QF0TsXgZqY2R83mWK9Nj1sB5tXDFw/rofwoXJz3BpW9n6byyjjfteuk5sFpr7X6/f2lHErEqrkYrLJCuYyR0ts/TBC4ILv9l9LjHdgQA7AAELAAASHCkiDVboJklXq0KlfKcJr3MUTfRGbHIE6RG2prxxL3D67HEKf6dC1za8h3rHKD7lQ84pYEpF7Ko8MXXJePG4tvEO7ZG3EcZLDFLEqu06ZKI1VrNfWb1kde/K0c5rqz8U97x5iVs99qzrlF8OTpPCr/t4hUVkCURS/puYYmpfPtYOa4ssco6D65OxfVrAfEKAHAlIGABAECSI0SsmeJV9EZ3hngVXefqU3pv3lEDlawDKiNMjTq2Iscn7a8lXvFcO5oLK5p/h65j/68JWF2ootOokCWFE0rCFkcTsrw+a0SP+Wr4m3WcR0UsXrflPpPOt6McVqs4QriS2tRccBo0TDACPe/p+cOvARn3Ff3MBaouaEkiVhYuNkl9rYQOWtOfTYSJrC/EKwDA1YCABQAAi6iKWEeJVzyHSna+VjaC5f6IDPJm31BX3FJWHdVQwta+D0Cr7ixvnSTHVBevuGAlCVdUtOJCllQ/b4uX6S4PLkzx+qIiWZ//9vYmijTSshlh1Wu3gubOGRWx6HSpPd5WpH8jZTqrB8ZnCFe97ogwyHl7e/smHkt08YheRyvt0br6575sPx+5G4uLWLQM/0/pxyM9DqXjfSR0MOtI3JXsQxE+PdOOxxW2FwDgucBbEgBYD95C+IBEB2krBayRcKeMeGXVtTJU0sqrEp2XISPiSQJMdJo3P1u/VUZzSGkClSVeacKVVLe0ThTu/ujT6ECaOjy8/9whwv/zgbbWvoQ3mFzpQrLCvngZ7TywlpnBzPWf1a+zhCsOPT+9c69yLkr18vY1rHOPTrNELOs85XVIbWp4x71XnzQ92vZRzH4olAXi1VIwvgZgIXBgAQDARbGeJkfFq2g7M+rRsMIEK8x8yq6JF9nQvowTK1NXtr4M0cF1a344IYe7LKhTgrozJEeWFC7U6SGE/L+FFWpH+8q3zRHwY9k6V6LOlD6vtXkvgpjF6Lkb3ddHQkMJf/z4922E1b7wc4G2Q12cfZpXF12e1+OJU9J0qT+W+4+3T+dRV1bGXSVNv6ITaxUQrwAAVwYKMQDrgQPrAVnpwGpt7UBrRuhgZL2sAQon68KyHFheWxqRdZ3pnpLmR5bzHE+8Lklk6uFJ9L8kVN1ut5AzhNdvHUMR9xUfFL+9vX0uc7/fv5Xp06JuLdq+5VTagREXFl/eWkfrnJnlFsls48w5PFu4kuqrCneWKzLidHx9fRXL02lSO1af+fpJ54R1PkqORs19JbXp7Q+tf3zZjPtwRyfWGS4siFeHgPE1AAuBAwsAABYxcvM525VE612NdlNuPfXOru+RT9AzLixtesSJ1Zqc/6qj1aV97/D+cfi6SaGCkbAmuiztL4e6UXr/6HTaZh8Uv76+fs7rohrdNlRoixwX1JFBHRp9++5MxoXVmu5M4WQFmsq1hC4zazvPChf0jpuK27X3gZ6f9DyVyt5ut89lfvz48SUvluS+ks7/6DpZAo8U/qcJwLScBj8OtX70srRP9LvnruJtXZmKc9arz+MRthsA4LGBgAUAAAuYcdO5SsTy2hwp4w3mjhpYrGonIlZp0zURq/e3l+HrwadbopX2vdehub54e/0zd1Jlc/JoSANOOl0SsuiAviOJWVG4iEWndSyhKMoR53BUpOrzq/0aCaeUQjOtPkTOYW1+dN1mXCOk0DerP5qIRcUKSeCRriU8ZJDW189/j4iI1T9b8/l0Cc2NqZ1zmsgdEbF6vTuHEnoPF1qbI2IdeT4AAMBqIGABAECSI23/K0WsiNh0BY4Q+uggwhKrWtOdUn0aRXJjWctqTouIE0tqh8IdV/QzFac08UpyYVlY7gkuZFG6G+vl5eUzmXRr9lvbNKQBbZ9Ot8kIK1xHWfh6tZbrF98OlWuD1ofqNpGOjbMH6p6YpfVPOlc1txV1clEBi14TuHgVDSXUwmo98YoLWZ2ISMn7Iolx3J0ZEbGy03ZmRMQ6+5wAAIDZQMACAIAEM8Qr7Sm0V+fo4Dd7Axx5Opxl55vkzPpqghOflxG3Im4sLaSQzvfqlaZJ6y25r+hnKbSQ1sW/87ajeCGJVMTioZORY14KHxzts0ZWsBkRaTJErw0zrgeSSGiFNUa3/Wh4VHa7ettME5CybqxI2CAXkPi5J83jSP3SHIp0Gv9Ml9fak7a1d1zMErF2I/q7w9120fLRPgAAwFWAgAUAAJPQbiyzTiftZnKXm3DrabB1Mz5z8HgGfL0zIlZrdn6r1vS8L56Tiw5+ufOq+uSehxL2/5ITRws71I6DjAjSB6D0rYIUaR9In/t3TQT0xJRMn2cNBlcMKiUXVGY5i6hQQeuMhj1yNOdQZpnochpSuJrXtnas8nql81cKG+SidW+Di2LUFakJIdyRJ+3zqKDIl5fCR3l52kZfRhKWq+GEfB12cmFlHp7M/q2EeAUAuBoQsAAAIIh1gzmSG0ZbTrqxrLqxMk9tR8OmVgzgKzftKwYlERGrtfZtQEmXjU6n3zU3lhRSqH2my0axRFk6jzqyaBvWsaQNkimWSNjaf8MJaU4sTbiTXCy8D1YIU4aqSETRltX6VBGkIsuMOk4z23KVQH+Uiy3icuKuLKsfnpDFQwhpndw92dv23JHSMtRx1b9TkYzO52V7f6V2pHBWzXGliU1VwQr8F4hXAIArAgELAAACHCVeSXVoQtbozfhIiOAMoYvWleXMG29PxOJlMm4sTcjS3FhREYsihdZFw+16Hy0k8UpyY9BBKxepeHlpYK4ty+v2+iyJWFIdM/DqygpXI4xco7LnvuVsGz2XM6LeiMsrs70yYlZFyLLOCXosv76+fplOnVieiNVa+3Q+9rb7d/pZc0zRsnR9petSJGww6pi6sgur9+PI9gAA4GpAwAIAgAG0wcNMtBvrFQNsjiVyzRCxdnoinh2gchGL16GJVXR5Le+VFBLUP2vhg/x7/yyJWdxRQaf19eG5bqrw5fnAlQ8ieV9oOQoXCVtr5uA+cqxJ55oV7jSTquBSCacboXrOR0T3SJmIMzO7LSODealM5NzwQg2zQpZ2fGvnGXVHVkUs2k8qSH18fHyZzgUrHvJIrzsRoYrPk8gIVldg5MFSpg0AALgqELAAAMBBu5k8QrzidR8hZEUcRrQs7UO2HY3R8MHOrFCpKJYbKypWSfM0Nxbtv+a+4svT6RGRShLfZm0vbfApDUb5AF8T3vjgXjtG6XJ0YO0dM1lRzCs7S7jK9qdCxH23KpwxwgrhKtpe9JzQBK2okEXbs85FKlbdbrdvAlZGxOpIjio+jQpZ9H8/p/k1iIvX0vUg65iyHvpY23YXoWuViLXDugEAwCgQsAAAwGCmeBURebyBi3WDbd2ca24p7UY5I2JJ/dbWtTowH0ET/0YHCJlt6rmx6DzaN0nEibixtHmaw4oKN1poXybMkG6f7GBMWkepb9qyXDCknyk7ODay7qkjQwyz9H1cvUZl8eqpCFfRvmnnfacSblgRsiTX1cvLS3t9fW0vLy/tdrt9E7AsN5bXb8uFRcWp+/3+bV6fFhGyPEeVtB2q5/iuubFmhhRCuAIAPBIQsAAAQGGGeFXJFdNa/O1dmeVXi1h82QqRAX01ZGrFE23N3aMNPjQ3Fq9LErKksEIudEnhgr0/UpgOHcRJjixtntQ/rW3aPicysPIGmJpAJfVHq0dbN69/0cGvdxxXXULRY99yqsxgdchThBWhhRqSE1Brp3LN5Oc6F6N521SkouIVFbA0Jxb97/WZb2PJfXW/39vtdvucz4UrTcji24Az83y8ElVhFKIVAOBRgYAFAAAJVopX0rKzHSIzRKze/myqwtTORNxYrcWELMnFJc33nBvc1dTblNxOPGRHE3iooBbth7RN+jajn1cfByvcVt6gPDOfMipYaeVGz+doe1nXFK+XO4CkctHtucIJ5olZreXyZnEHI3dQdVGKilf9OxewqHilObJ6mxEnFheu3t7evjmuuphF/3MhS1p3yx1VFami5/kuYYQSu/YLAACOBAIWAAAIRAYZUYfWCNUwp9nhhL1OWrb3YQZR8WrXG3htm7bmu7G0Mp6Q1YmIR5Ybi7qt+MBRcmPRNiW0tjPho5pAwR0b0Xp3QltHOq+TWbeRc2OlMB1te8bys7dpFkls8fpjbXN6jeAOKSpKaeKV9EcdWZKgxfuk5Xx7f39XwwTpf/pHRfCXl5d2v98/26B1r9xHM0UxAAAAxwMBCwAAgkRCLCzxKppfRKpzhROr1837oPVTEmkq7gJtWd63R8NzY/UyrdlClhRWqIlYtG3el16GClPckdW/9zeR0Tr7NI4l5nlhhHyArDmzjqJyflmCStVB5LVj4TmEeJ1RQSXL6Hntra/n3vLaz+znaih1NtyQi0pcuKLOq58/f37O62KWNI2HF2qhhVKfpfNTEq/oX3dm/f79WxSzfvz48VmOX1O8fTLqltrZbQUAAEAGAhYAADCkwUlk0JYZtFvljryhzrqrsuEy1f5IrAwDGiU6qLfcWLQeTcjycuNwEUuCDtp4wnY+vQ9y+3S6D7x1lsSOigtLcnrQ/70M/S45tSrHZlY0seaNiFeRvke2rVQmmr+N15FN6C8REfusuiLb1GrfaseiKtxHr5+akMUFKPr369evL//5dMuNxUMKaZtSH6VzswtTXMTqwtXtdvv8/OfPn295t1prX0Qs6v68miMXAADAOiBgAQBAkozLqBKSIz0VXh3iYLmrvIFs799o+xY7D1Qq6x4N1+T7wHJj9XKWiCXlzeJOK206X9f7/d4+Pj4+Ezb3/5poFdlOkjhBB8z0Pxet+HK0Tuv4mXlsaXVVxCurXzOvBZYbs7UxIWuWcGSFXXr1HiF+WC4qjcj1kzqieqigJ1z9/Pnzi2ilCVuWiOXlwYq6r2juq9+/f7cfP360t7e3T9eVFB759vb2uZ49xBAAAADoQMACAACHqvtqJJ9MJrRBKlsZ4FYHslJ7WbHCYsdQwxl5ziJON0vIiopYUiih5LaSjiMuXGkDSj4QlfrnhafR/tHPdKBM+9Cn88F0xxOuKJHcSd4yViikREa8OuJY1wSVSFhhFm/9IvstImpl92tkXSJhmJ2smEXrpuclFZmoC4uKU1S4kr7TkEIackhzYnERS1oHzQ359vamOq/6/9vt9um++v3792f9/TOFClzRY2wXRy4AAIB1QMACAACCN+DIhgPO5KhEsyNCFq9jlF3Eq5mJ+TmWQCAJWZKI1dr3NxH2slK4kzbI5iGDfRp1W/XP7+/v7fX19Zv7ivaZ9okLWtJ24OvtiVjcnSWFEtI6NbGL9yErckTEK+2YrYQUWu1HiYhSXED1lovgrZ/mqMuGDmbEq8z1JCPWj2w3nmSdili/fv0Sxar+X/rMl9PcWPzthNr6a28d7OLVr1+/2u/fv78IWLTe/lkSr3o7/Y9eVypiMwAAgMcBAhYAAAzCb/JniVdnJ5idIWRVOSp8irJSpBqFhuZJrisqDnERi2PtTx4y2KHf6eceDkTrpcKa1T8NTbDgApTlyqIiVi+rtTUaujciUo2IV6PXBknY5EjXgMr5L/W1Kl5F2oiKHDOuJZFQQKl9bftx9xNPuk7fNsjFq//3//7fF+Hqr7/++vKdLkOFK5rgvQtlfX0kB6cXPvjz58/258+fz7Z7+CBfF2t7nuFCBAAAsD8QsAAAAJhYoUWDBYU1AAAgAElEQVSdWWJWNmxrlJ1FK44mYtF5kojV5/fpdBtKbivpM//eHRH9P29Xcl/1fkSh4hL/rIUxWUJX1H0lofU7EgZYCY+LtDebSEhra7IrqxN5EUV03bztFxULtf6sEEQ00V/C2t7UdcWFH+qkksSr/v+vv/76ImRpYYVSPiwqXElvIaTnEhWw/vz580XA+v3796c4RtdJCpXs9f78+fPz8/v7v29I5dcQS+DKCJ8AAACuBQQsAAAwuILAUXlSHXUDcDxXVrY+bXmt3VlcYb9KVESs1uyQwqjbqrXvwpUkZPX2JNEjK2DRZaiTKipeWW1yUYz+70TFlhkilbdMVLzKiFzaW+as+ZbjaIZwRadlRcEzxSurfs+ZRbczLSvlveJ/XMTqriv6mYpYWrJ3TcDS+kwFrI+Pj8+wwR5CSJ1iPQE9z6/FtxcNG+xtfHx8fHkzodSXCBC1AADgMYCABQAAQaQb+lXhgyuxBoyt5XJcaQOzmU4RiFdfqYpYFhG3VW+vDyjpfypk9XalY0rqj+Tw6HBhiTuoPPGK/rfcV7Ss1k+pnNVnb55GZZBePd+88z4jZo20LU2Lbrvsup8hYEQFLZ4jioo+VBCiTqzX19cvjiwqXnXRiopaPKSwi1mZ3y6aWP7Xr1+fzqnuwuLCWy/f/zS6SE2dk/2thHTbZc5Pi5WORgAAAGuAgAUAAA/EjBv7jJgVzf9SAU/KdbiI1Zr+hsKqiNUHilzMkqAC1v1+/xJ+RPtghZ11NIHICinUxCstdFAKSeTtcSLurKgIlhG2qvOi+10LCbT2S1Woj65LVBT0tveuAoX0AIB+5gncJfcVdVZRoYqKV/1PCiukbyEcpQtTUljiy8tLe319/RTj+HagTq4uiNHzlb4ogp+rfHt60zS0YwoAAMB+QMACAIAnYNShMcOVFWWlcDVDZKsM+FYMivj2pm4sLmJF+9AdVe/v/33DYEfLecXnS5+5oNWxXFm0v1z80oSrPs0St+g0Wp5vU6kflFUuqUqIZXV5bZnImwe1dYmW0+ZnRMFZ++1MqBDdWvviuKIiVheAtLcH3m63L3muuHglubFWuYWpiGW5rt7f39vb29uXc5Y6PF9fXz9Fre7C4nn8+D72XHq77X8AAAB5IGABAABwqQhZnahotPPgYnSwlx3YZ9BCCqmIlaHX1d8wyEMEJSGLikJcwOp94fV7+1sSKCwhSptfFa9GBJBZx3ImbG5Wm9L567mzrH5FymXdbFGn25WgYg/PF8VzVNE3B/KE7tRlxd1Yff4R6/LXX3+ZrqueO4t+7zm0qDB3v98/XVg0lxa99nAijio4rQAA4JpAwAIAgAtTCX0abS8r5uwywKy4r1a5FGbXq4UUVsMJKd2NZQlZvZwkZvX+dfo06syy2ubLR4Ur73PE2SPNt/oZIRM+WK3TIxLKqdVtiaIZoTYa7lwRr64uTki5sKh4RcMI+//X19dvYYXcjfXr169D14O3R11X9O2FmnjVXVj3+/1zG9zv989tRPez57LKTgcAALAnELAAAGBTIi6FbB0zyLixrsoV100LKaTHjSRi9ZAdTaD68ePHpxurl5cELC5m9fZo32j/+HQJzYVF51uOLE+88sSkyDmXdRNpRM/vbB+rrqjW4onbtTxa3nJW+1lX1ioi22/0eiGF1vLk59SB1d1XXbSiObF6CB93Yx0tXnV6TivuuqIC1tvb25ccWP0z3wZSGKFF9Dz3pgMAANgHCFgAADCRikPpqjzqul59nayQwta+i1jd1SCF+nBhS3J3RUIHqYMiK0J4LouMcGXVwdc9ws4D3mjfsoLUzLcRZtxu0ePmjH0SdaRZZWi4HX8LIXVgSU4sKlL179SVdUTYoMXPnz9Ft1UXqugbFqXQyR5K2KdrZEMH4b4CAIDrAQELAAA2ZIYb4YiB3FVErEj44BXWI0pWxLKWp2JUH1zSeiMCVg87q4TPactIg1VJuOrfIyGDVxvQZkPoRnN4eTnVqrmxMoJUVbw6Y99Gc4dReNggz4vV/7Rk7t2RRfNinU1/QyF3W1l/2rp7IlZrsXN6RSgvAACA9UDAAgCAAehAvzMq6lztRvoqItaz4YlYUjn+nYcL0mldvOKurNZkAUtqu5rgPypi0f9e+SxXOk9niTeWsNXavFDJ1XnIzoKH1vbtZr2tj7+Z8PX19VtIHQ0zpGGF3ZG1Azz5PP9O14W6seh0SuQFFZHrBgAAgGsBAQsAADYiOnDbbbB2dRHryn234A4o6Q2FmhvLErK6w4nXQQfolqDVySTWjybzXi1c8bojaG9Lo1AHW2Y5r29VwUgimui9QkW0spa9Kn0bU2GKu5A01xIXfCovrliJ5LLqfe5ClrT+HTqvJ3PnZPNeefMAAADsBQQsAABYQCXReXUAt4vAddXk7lfrbwUqNrUm58HqiZGlXFia+4p/lsSsXn9fniINsGmIorYuFEmw4uVmhAnOOqe4UEVFKknE4mRErRnhdnQfVcIHM+3ytkfrqtTJqYiIHp7grwlPkqBDRSBJ1NoJ2lea00sS6Fr7dzvw/GAeUbGbzwMAALA/ELAAAOD/8AZg2qBDGvR7y/AyGXa/4d7NjbWbC+EsIiGFVm4sSciin6l4ZTm+aFtSjqDIANNzGUUEq93Po44loEQEL05WKLfmRcWtSt0aV9lvs6HXVCnhO3cu0Xx1uyC5w6ig1dr38ErpDY39s+bCokC8AgCAxwICFgAALKZ6k1x1X+3AVd1Yjw4XsVrzE7pbdXjiFQ9h7O31ZSleTpuoELWLI5FjOa34vNa+C4ue+MeJbIfR68cR15/RfbfrNbICz5lFxR0uWO147ZXyWFl95qKchXW873pNAAAAkAcCFgAATMByYVXq0ojcdO90Y76bGwt8P1atBO+RerLildRGJCEzbVdjJI+S1KfqclqbURErMj9LVLzKtDH73J557Xok4cpDc2c9G/TtoxCvAADgMYGABQAABhlhaoaINet18jsBEWs/LBGLzreSvEv1ZcWrzNvrtHZXoQltM5FEqtaaKnJF6ogwa1C/mxBwlWti5+PjQw1L18q39n278zC5XbeD9BtGp0nr1cv0P6lsNF+eVRYAAMA1gIAFAAAJPDGmKmLtOuCYxc4i1s59qyAlYZeQRKzW9BC/aKih9eZD3kcpB5bFisFnZt/ztypqRF1YWlnNqUWnZxxZXk6w2eL4SiH/DFYkcqe8v79/Ji7vny2Rqn+nYpUnBu0AFaNov2nfLeeUVidHW/cdtwkAAIAcELAAAGAy0UHuyNu2rp6YGtTJigNSeTp45PMlNxaFClkRwdYTrqy2VmElH48IWtpb+qLMErGyeIP9Wdt/NwHqClARi06jziMq/tBtrJXZTZynfed97tOpmCWJXFyo0+DbBwAAwGMAAQsAAJJEBwWzBnFXDR28EmcM9M7MU+O1LSXhl467rJglbedZx7PVttWmJOBJy2ho6+2F9knhgrxvnljV51fCCGnbvF2rnNQHEMfaXv38oEINFXa4+HO/39v9fv+c3j/3eVqI4ln0PvK/j4+P9vb21u73++c6v729fa5HNLcdQgYBAODxgYAFAAD/hyZizEzQniVz840b9e9k9tuRItZVkixHhaxehs7TnIizt7OXgJ4niI+KWRkhyxKxrL7R+r3k7rNcWJ2IeDX7pRE7iSlZZmzzkfWnbixLyOqf+3Tu6joL2i/uEqPCG/3OwyPp/9a+hhtyNxedDwAA4HGAgAUAAAWOEDuiT53BPLLum7OJ9nOm2KGJWZKIo+XN0pK5R6F9kNZN6iMPX4yK1TPO9YhDynpDYXQ56XuFVQN/rd6rnW+zRDt6rElhclSQovPv9/unY4kLVnT679+/2+1220LE6v35/ft3+/PnT/vz58/nd8mVRd1XkngFAADgOYGABQAAAVYNbCW0wVE1xAfksRw7Z1Ppjyf4ZLByRvFj1HMveu4pDU0s432sCFmSc2yWiMXb4Hh5r6qhghY7CAI7n28Ss/vIQ/14rqf39/f29vbWbrebKPZwser19bXdbrf248ePLQSsLlR18YqLb/Q7FemoG+vt7e2Ls8rLh4XfRAAAeEwgYAEAwAAzHTvWDTfEqxozwj9XDK6z/VoRcucdN9YxZyVBp2149URfeMDr5PXSMEEuBHgCVTR0eKZgbYlZUQeVlwh+Rl6sM7iaC7KCdbzzPFhduJKEHUkA4mLWnz9/2u12a79+/TpwDf/lfr9/Oq7+/Pnz+Z0KWrzvUjgkDzfkwKEFAADPAQQsAAAIYokO1UFX9m1KleV34FEGo7MG11HxauV284QsSwCx8k1ZddJ2I/XRej3nlyZIWU6rSFjhaqw3EM7Oe3UlznixwmoiLzmgedN4GKHlvKKuq5eXl3a73drLy8vn99ba4SLW/X5v//zzT/vnn3/a33//3X7//t3+/vvv9s8//3xxY3VBSwojpKKd9GZByYX1TOcJAAA8GxCwAACA4A2aPOeMNcjO3lR7g3rcpPusSpa+WvA4cuBuCSNZF48nbLVWy4MkJVrn56olYmnTPAfYShcWJbOdV4QRdna7pjyCiCUdW96xTsVLnqi9i1ZdpLrdbl8cVz1s8MePH59/lKNELCpe/f79+/NzF6v4f+q+4p+pA6v/tbbf8QoAAGA9ELAAACBJJvyrcoMdGZzixn0PZgtZ0XoqwlzmTXi8rVHBpCJsadvCEqoiIpZVtyZyjQihUltHn79Xdm9dScTyjhNtPaQQWBoy10Up7lDq4YF9/svLy+ef1J+eCP6vv/4aXVWTLkx151UXr/hfF7bofy2xexex6JsJ6XohfBAAAJ4DCFgAAMCIDJgyuXsiZG68rzYQvcrgc4QZg2xv+dFjjYYmWX1YJWJJSM6qTnWbeiKWND2yjIW2b7R6JMFwZBuveBPhTuyUF2vkjZlWffSYoOcqF7K6cNXdVTRskDqu+AsSqHvpfr+3v/76a3py9+6c6q4qyYHVBS0eSkhzZWnCFXdeIXwQAACeDwhYAAAwgDUAzywbATfmezMiYlnLRd7i5/VLqs96E5623EqHQ/VNn16ZMxw8M9pb8ebB1ftwNUfvy4poHOmfV29/K+H9fm8vLy+f4hWd1h1Zf//992edmuOwtfb5Fj8qDv38+bP9+vVrWMiiYX80QTsXryRBi06zcn3RNxRabx8EAADw2EDAAgAAgcpAaeXAEDfrjwMfvFphRZzK4F3LwxYRso4Wsc6kGioY3Z8Sj+aUOoIVbwWlzHZYWfV6wmtr7YvzioYH0mVponYKd3BxAasLTj1/Fk38bqEll+8iFA0H/PPnT/v777/VkEIudvEQQk+sQvggAAA8FxCwAABA4ezcK48ysD17Ox5Jdl2j4tXsHFtRIUsTsbTyZ3B0wvuR+WAuM8WsiHC1OrSU0l1YXSjq9XUn1u/fvz+nSe3wZOeScPXz588vbzHszi4qiPFrBn874tvb25ecXPStgjSUUAoptIQrWm9vi64TXFgAAPCcQMACAACDM3Kv4Kb8cfEGyRXhKhKOxJFcWZowdVRI4ao3Rq5s/+w+g3+pCuXVxOvZ+jI57vq60HOThhLSOv/8+dNa+/e8pa6r/pk7pbpw1cMH+RsMLRcWFa+4MMbDCD03Fndf0fBDKljRa48lXOG3EwAAHh8IWAAAEGC1i+jRb7yfyYUVhW8POoCt5sTyykdcVpowZbm3tLorfZTajJTV5mePO2u/ZJYbhTpNZrGLa24XRhxSM+rxlpNcWDRJ+z///PNtWc11RZ1RXbjSwgcjDiwvjJCKVlpuLDqNJm/vwhv94+4r6T8AAIDHBwIWAAAEmRmu8uiC1Q6c5Y7RxDpLoPLEq9GBNndZtfZ10McHqV5YIS3L+xgdTM5wvnhik/cWwGhfqst4zLoO4E1s/yUjlI+eUyMvV8i0zd1HXcjq/PPPP18EJSosUYGpJ2zvQtbtdvsMH6RvM+wJ3bWk8P38pg6s/r+LUL0NScjiohYvywUxzX3F/wMAAHgOIGABAEAB3DTnOTIc88zQrhH3RlWQyfTJEqlmClkjRHKDVfJRjQiL2bayRIU/uE3Gqb4gYfSNoJV2vf0tiZfUsfTr168votLPnz/b7XZrv379an///Xd7fX395sCKhBByB1Z/y2EXobo41T9TZxYXrCzhiruvotsFAADAYwIBCwAAwKGsFrJ2zEukiSQjriyO5Jawyq0WsqpUxStv/kxX3Gz3Fd+uUvjgyPaF4P4vFRHpKLeVt7y1H7ugdLvdvoX23W63z/89hLC7sHji9tfX1y/teiGENFSxt8sFKUmo4kIX7TPPs8VFM7ivAADgeYGABQAA4BRW5MU6W7yqvqUuKmpF29HKaGGw7+/vpwtZ0bxfWaFv1M21QmidMfCe4UiZJZBdmUq+uRG3VjVEkV4vaRghTXT+8fHRfv78+em86uJSd2F1p1UPHeThg54DS3sTIQ8llP4klxV92yCtiydqt3JdwYkFAADPBQQsAAAApzFTxNpVvNL6xR0OvGxGjIkihRLS6RkhSxs4Zp1gFl4IpbW9ovtjhbvKwhOeLPeVtM217WsN7B9VrMq6obLi1aowQW95Sr9mdhGL57V7f3//dGF1kYqKV5JwZYUPSsK0FkYYEbK0stxhxUMH6X/r2vOoxzYAAID/AgELAADAqcwIKbyCeCUJVVHxKiuOSfBBnzQwjQhZETdWpO8eIyGDlRDDSpkss8QrL5QMjDErzHCmcMXF5y5idYGqC1Z9PhWwuGhFBSvp7YNWv6mAxN9GSMUoSciyRKsuyPX/WuggbVvbTjgHAADgcYGABQAAYAtWhBQewYyE41p9nhAT6Uf2DYR9mua2yoQVVpjtuqqIUmeKV5U6I9v+2UOtqvt4J+GKQkUseo726R8fH+3t7e0zSTvNdcVDBrvwRd9AyNvmx5omLkkiFc1lZbmtJGHMclx5LlAIWQAA8HhAwAIAAHBpznJfRQepmgDjObK80LZq+9Rd1dq/g0A+6Mu4sWj/qkJJZP0y4lXGwWWVs8p7y7QmD6It8WrEfWXVAXyOFK+qwhWFilW03i78UCFLE66o+4r2yxLOuAuKuqe48NQTtHuCFU/OrpWh7XpoIdMAAACuCwQsAAAAl2VEvBp5Sh8d2K4Qr2bnweLCkydkee4tzeklERUAKsLVDNFKWyZCNDdVVbyqiltaP56JGU7Ps8WrjiRifXx8fBOyXl5ePt1a/U2D1HHVy0Ta18SnPu3t7e2zH5Jwxef1eizBSjperVx8nGhuPgAAAHvzn7M7AMAT8L9ndwCAq5AdWGbEheygsFKH5eDIiFrR3FhSmx5WInAvrM0LWRsdFGbEq6pwVU3ELSHVlUmqvkK8Gpl2dUbCAs9K8J6tI7IczWNFP1uCFXdg8XqtY9USpSKfo2V5P6T+VHmUcwBsAcbXACwEDiwAAACXZERkWLFMRLzSlvHEq1E3kRfq18MBJTeWlBtLCxesuNoqOcQiAt+oIGGREa5aWy9egblcSbxq7Xv+QH5sdEcW7Usv051ZkeuVVL+WGys6zysfYUYePji0AADgGkDAAgAAcDlWDgYrRMWSTOigJ3p5bVllvNBBOsDVRKzeF2nQ6OWeyTjZsq6rGW8SzB4/s8WrLFGnFdiTGdcrHvIr7feIaBXNvcXrpNP5NKmMNN36HmHmCyWQPwsAAPYEAhYAAIBLYYkPRwtXrcXfmjcjPGhWLiwvr9UMEavSz6zraiTU8ohjpSpejYYOakDUGgvDPeuFERk8NxaFClo0IXv2xQRRB2FG4Bp5w2AmD18EiFkAALAPELAAAAA8BDuLV9pyldBBbXpkcC2F/FmhgxkRS6o/ymiSdi+/mFbXSo4Ur7R2nlmoemb4edra12OBhxRmRC+pDb6MlDsvIlJljttouLJ0XZwRagghCwAAzgECFgAAgMsw8uav2WTEkZlvPYuKZFYdkuOqz6+KWHz5TH9ofdr3qnBVDSNsrT7QPUK80trzRC3wXPD9roUYVo916bjKClTaORChIijxc7+y7vzaBwAA4BggYAEAALgEO4lXnIwjKhpSODsfliU0aYOxqojVmj4ojOzHqutq9hsbZ4UijYhXXp0RUSsyHfhw59IVmSm6WC4sPj8j6lYYcUZVHaRwYwEAwPFAwAIAALAFWTGqmlupMyPcLVImm2S9muMrKohpuaskscqqSwpTkoSsSJ+0aRXX1cwwwoww14kO4qPiVSV0MDr90eChcDu1u6v4lT02rOM/IkhJ7c0UVUfeJjgiZD3LOQYAAGcDAQsAAMD2VEQIb7BYEbVGXWAzB7DVhO5WAnbLcRVxbUUHcp5w1fvGp88OI4z2cyRMsjNLvMrWCb4iiU1eTqhZaCLWUcJb9m2Z0Tqiola1zREqglZFyIKIBQAAxwABCwAAwEMxIhJll82EAa6i0kbmLYKUqDurNT33jlaethGdXgkjlMpxpGT3rfnutSyRgX820fXM/ELgO6Mi1BkilnZsVoQn7xjKOp6OPiYzYX/Z/kHEAgCA9UDAAgAAsDUZ99UOITrV0LnMMjPWcyTvlVcH76/VB8os19Vo/ivNgZEdoFrhf5bQhBDBucwO37NEqNb8Y390+QjeMeHlpLLKZdrxmP2WwCjIXwUAANcEAhYAAIDTib4pbifxapcE8kczw31kCUwV8cpyXc1w5FVzhUXJul1mJ2h/JOdIxMk0I4zQEsVGc2JF3Yveclq7kWWrYYEz8M7Z2TmzrPU5wyUGAABABwIWAACAy1NNfN5abTD2aOJVJXF7dJ5UlrctzZuZA8vrA0VaD237RFxqUt2VvFcR5xbQqbiwjhCxWvMFmxn7OCNIZRKwW+2seqjA653xBkOcRwAAcA3Oj7UAAADw1Iy6r0bEq14mmwR9lMpgafdcRpF8YGeKV739Sj+tvlrlsqwOEdwhxHZnRpPzc97f38Oiz4pzutebeXNgVbxatQ4RXl5ecGwDAMCTAAcWAACA7cmKV6M5pqohPGcMoqrJn0cEMc2RpL2ZUKtDKhMRqrxlvfalaZE3KkbezjiDHQXKK6GdE9QxFSljlePLtKaf/5ncWJzoNSV7zMxwXe12nFbeHggAAOBaQMACAACwHSNC0AyH1NEhgnSQ3AfQI+FLo30ZIbLtRp1X1rJaPzJvjKSCw8rQomzi9pUD82cMo5opYvXlWhsXsqQ6Z5FJ1F59E+HZnJW36tnOHwAAOAP4bQEAAJxG5U11najb5hHogzFL5Ki8HY/WfRQrwgYt8SobIiotH+m/9L3C7uLAVZgtvmTOsUjY3tFih9Sm1k+tf9kwwTOPZYQUAgDAYwIHFgAAgK2IDDyuOjiJuqaq5SyHR8R5YQlbswfcntgz+gbCUTGJOpKqbyo70sEFvlN9I2FrupsqE7IbdWR1ZgnwkXxVmWWvKqpGnVgzwiRxLgIAwDFAwAIAALAtRydXH2H0DWfSwDgSWigNkisD2Iwrqzqg1baRFSZolamIV1Ifdh2g7564/6pkQgQlMTmbdy76Zr6VIoh3/DyScDULiFcAALAf13yEDQAA4Gl5ltBBKWzQCiWMhPdYIUO8jcz8LBX3lVYmUnd/S5kloHnHlZcsPtK3lTy72KARDSXMunCqYYD0zYAr91m0nUxoYbUfZ1I9FyFeAQDAnsCBBQAAAByI9SY0yV3FXVd0WmvfBZvMgDHyJrJZ4tWI+6qjlenTNfEqylnJnzsj+y5S5mwxYTdGnVh9mdbqIvpZ++RIx9WqF07MYESAgngFAADHs+evCQAAAPAARNwfvIwmOnAhiU7PDqT4MpLjQipzFtXB74xBc+bthRE8kVCatiqk81nIuKu8stYb+3YXNHofVzqudqOyXqN5swAAAKwDDiwAAADbsOtT+tVUnFh9emvtiyMrijUQj5TTyh8RzinlvrLeFsjLUnj/z3ZhRai4r2aXvxqZvFVeWctRdMb5EOmHxJHH+Y4urIoL7dHPEwAA2B0IWAAAAMBCom85y4hYrTVRyOrwgWLFUZB9U5nWb1rfmQNYK/xw9qDUylXWibY5y321uyh3JpVE7d4bBmk9O5E9Drz+Z5PZ7yZiUSBeAQDA/kDAAgAAsA27D3AsPFdGJLeOJGK11r7kv2rtu+Oqkgcr6z7IDN6yb2mbDd8PK/sya1BrhZVq7UVddB7PMjBf8bbBqJB1BiOiZfSYqL6R8YjtNet6VikPAABgDRCwAAAAgElEQos8d5JUTgsdbK0WPijVo/W3ytkiVieaHH7VANVzY1XzM2XEK7ivYmgiVmv+ccTPyRl9OYPKeVBJZL9ayMpuv1liMAAAgLVAwAIAAHApqk6Jo/AGst7bAzUhS3NcSQOvSgghbwNcD+T08anmt8pcY55VMNxFyMoe8xCvAADgOkDAAgAAABZhiVlVIYtOk5bn7WrMTgSuJUj3ktHvEDY6mgA/kvNKKtf/S+GDWfcVxKs4IyJWa+clZrfInEPWcSEJ5lnOFLIgXgEAwGMDAQsAAMC2ZBKC7+TCktDErKyQxcvOGmjNCBlsbc/B/QhcbJLmUaJiVqUPtP5oPyJ1gu9Uc9odidY/q2/v7+/icvx4mSVkZbdTNRRz5osqcG4AAMC+QMACAACwFSOOnF0Glh6S28ATsjpazitvvSODskroU+QtbJF9ssu+mxn+FRGzIu4rC4hXNaIJ2r2cdq0dL9qOvKRAc0rSOunxYwlZEbFpRNjW3q5aOUf/f3v3uuQ4bqwLlJ629/u/70SXz4+zuc2GcUmAAAVJa0VMeEoCL6UiFcY3iaTwCuAzCLAA2FpPFVZt/I5yE8CR5YGRRu6r+vLkKsXe5fM/jtgT/2oVUHeXD/acX21ZYe791v5oiyxtiwTK0c+9dO9cjx8ZE/Xz89NcTnk95vX3uAZKrc9pRoXm6HeY8ArgcwiwAGADrTDrNNrzquTuxLq0z9L4p3te1c5lJAAqbXvd/vfv31Oqr2aGVybn/01pOqgAAB6JSURBVK23MXvPdTvr864FV5FQqyV9Amcp0GoFWef7TwRZUT3Vie4PgPcgwALgbb2yAfiMCU8t5LnKLTV8WqQybPeeQVetz/HJ6qvW0sFWOCW8esaKJ+ZdlQKq6+u512rn1FsJdg20cmHWNcgqhVjXca8Iskq/o/AK4P0JsAB4id0CjahVzbmPIx5oPS3aML8nUHwy1EqPNdI3Kt1fafuR6qvaMVpN22v7MTFvu9NofGaQ1QqpesKs0mvn67nvnVK1Zy0MSqux0hDrHHc919TMIKs3uKptA8CeBFgAPG5WcPF09VXvZKc0cYo0hj7tEPSVms63nna2w7mfesKk0eqryFMJI9VXwqtnjV6rtUrJqFwlVRpStUKraDXW9f3cUwevYdIZxEYa3V+DrNy+z3G1cxsNsu70/nOPALwfARYAj4lMTu6GUq8MTaJVPLVxuWqnV6j1wdmtYfvqc0jDpVKYdf33WiVWbftIU/ncPiLbs1bk/i/1rUqDqVaQdR2X219L7emC1zGlUPZ87xpY5V7LbdvTED9ynqXjRI8BwPsQYAGwxEiokJvY7BCQRMxa5tc7CZ55DrleWyPLq2Y8HTId27NMqkek+ip97/pztA9WOr60v9Z55d4r7Y99pPdEKZyqBVmlMen+I/dFbtlfbclgeu6lUDYaYqXn3DrPCE/hBPh8AiwAblm5HLC273cOu+5a1RMrulTwGlK1nvL3ir9JtBfXrKWDuffuNG7vDa9MyvfWE161gqtaVVbuWLVzyj1Z8Hw92v8qXWZYqs4q7afnnGv7aHGPAHwGARYAITODiMiE5Z3Cq95AKdq8/Y5oJUXOrksFS+404o6Omdm4vafvlfDqfdW+p0qVVtfXS8FWbT+1Yx/Hn9dQaXlerh9W6f2rXADWCrHScxoJnlvcIwCfQ4AFQNadwGL0v6iPHvOpcCW6xCYn2tvoSdfjtp4qmIZE0fdepXQOreV3taWDucCqdOx0n5G+V8Kr91a75keqrmrjrvusPY2wdh7pMsL0+60UZLWqLkdCrNPM6lL3B8DnEWAB8IeeMOhuJVWv0cqr1nnO6B21S9Pg6O+Saxa/c5VVTuuce5cX5QKjXHiVbtu7dFB49XlmhVe5iqxIiFU6h1oT9FoD9lYV1lW6jPBuiHWXewPgcwmwADiOox0EtUKgVeFH6bh3z7c0tjXJulOFFfHUJG+k31VuH6+utLqrp+9V+vN1m56lg+k2wqv31fO9GAmvcq+3QqzrcUrfi+nr0XDqOP47oMq9FgmxVnNfAHw+ARbAl+vtNdXaJrqPETOqrSLbPxUiHcdzgVXt+K0Q6+57T+g9fil8aj0lsBZu1ZYOliq5hFfv6254VVoyGAmxrvvPBVrp8Y/jz2un5+mD0T5YuRDratV3q3sC4HsIsAC+VGmyv2qZXnQ/o3qPX5v0nPsqTbZyk7eRydmrw6vTJ1RS9egJr2YtHUz33zov4dW+er9rRsKr0jbn+JEm7ul3VK3nVe2148hXZZ2vp5/Biios9wLAdxJgAXyh3MSj9V/va2Mj28wW7TkTHdPqEZPbPjqJemoJzSrvEnC1qrBKS/iOI9ZUPfKkwcj42lMIc8ftOSZrzQivrmNq4VWkR1Z6Xq3vvlJPrJ6eV6czmKqFWdcQ6zzP0eDePQCAAAvgi0Sqrl5RmTXD3fCsNLHrmXA9vfzwKje5G/1MZiwVvBt6RY+TjotOciN9f65ja2FWT/WV8Op9jYRX13/PVU21wqu06iryNMLcuRxH+TuiVoV19rIqOe/z63LEXHCV23ftvAAgR4AF8CVaVVerqrJa2+2mZ3ngK6uwIvtKJ6Y1o4HTU9VZs3pstZb21aq0zp8jlVi5gKt1POHVa6xcIp1b2peGUa3w6n/+53/+2DYXXEW+v9PziiwN7P3eyj1xcGYVFgDfTYAF8AV6w6tIcDVakfUOctVY0RCrZ9nh6ETu20ONnsbzV9HwqtV4Pbd9rfqqdvzceUTGs4/S92Op71V0GeFx5MOr0WWEkTAqHXPtX9UK8aJ9sVzXAIwSYAF8uFr4dLcqa7Qiaxet8CgaOM0KplruTPzuVjCNVlo99XTCa/+e0nupnr5X6c/R6qvIMXNM8vfRW11aWjqYG1P7jwWl8CpSgVW6DyKVmOmYtAn7uUww9zuprAJgJQEWwAfrCa8+oSKrd9J/Pee7VVO7hV254/YYCZ5WhVW58KwUqPU2WC9pLSW87qOn91XkXIRX+xh9YEVt6eD5fimYqlVv1Xpg9ZxTeq+mfatq+yrdj6Vg6zy2cAuAuwRYAB9qJLy6U61VGvOk6PFLTxw8jnywkS4pLI3dPcSa5amqqtZx7/TtSvebe731c23frRCqdEzh1XuLXI+l7810mWEutLruIxdcRY5/Daiu91St+XqrCuv8Dkv/o8B13Lt9zwGwHwEWwJfoDa+iFVm1fitP6Z30p+eWhknHUQ6yWsHTynBqtH/M6r/FU43cZxw7Ehj1NHLvOVZv1Revdbf6qhQypYFV7Vjp+aSBVlqNFTm/0zWUqlVfXZ80eB1X+648zyl9SmHKNQ9ADwEWwAfqDalmhFqRSdNoyBHpVZXqmRilFVbHca/KamXQ1RtivboqLudO4JWr/orsr/XZjr4/0ry9VH3F83rvj5H76fp9Wut9lY5rVWGVlhJGfofr0wJzIdbI7+d6BmA1ARbAh2n1r0pfLy0/ibye+7l2zNa5XuXCpJxaz5XS/lrnEwmfruNeEWJFfqfZ4dVTlVbncdJJdeQ6yPXmKckFSa1waUbz9t798h5G7o3e/xBQagof/d4/r8NSiFU7j9w4AHiSAAvgS+QCqZ7wqjXRmt0Pq7V92o/qFA20rvsoje3pefV0iJX+TrWn8O2uNxir9eCKfnbRSfjs5u210IzvdCcUzm1b29/1+6U3jNLDCoBX2/8Z5wCERZYCzg6v/vrrrz/Gnf9Endtf/4koHatnP61zjVQ1tBoo9+6jNKal93NP9R5zJHSJ9JaqmRX6XLeNVF+ZtH+u3cPD3h6Ddyskr0sZAWA3KrAAPlRtEjIaXkV7ZUXOoaZ3yWCuEum6n54eWumEtne54Molh6vMnLD2LPuryS0jTPc58jTEUnjVGpv7OT3f0phaILZ7gAJ3nde7J24CcJcAC+DDtSqEauNGwqvoMXqU+mHVwqyRIKu0/fn6nRCrdx+1/Tyh929VC6tGG69H9IRYkUbr0WbuI2GWCTu9Std36fW791XtCZs/Pz/FgLb1+vV/VTQCMEqNMMCHiDT/TcdFXxsNr67L/O4sb2stF6xtkxsfXV5Ye21kOWHvPmr7meXp5UKlEKcWDKWv5So5WuFUax8lmq9/r9zffvbf+26gk9u2tr9S9V8ubD0DqFJAVdp/634EgFEqsAA+UO9j1e/ue3YD95rccr9ahVWpoqpVyXVuu0slVu08R0VCttVaDdlrT1NL3+uZZEfOK7pvywc5jnvVT9EnAKYN2NPXruMjx7sbntVCsMjxAaCHCiyALzVSfdUKxqKVVrnG7aON3HO/U2Rs7nyi282oxEqPHznuzGqplZVXuT5TveFObZ931KpqossHI2MsH3wfvX+b1vhStV9a1VTbPlf9dL1Oc8eIVj6l13u6vO96ftf/Pfd/PX7p90m3i/zeANAiwAL4Ak9XZOXG9IZT0W1GlhXWms5Hw6S7IdbI0wlr5xjV+3nWjC7L63kaYXQ51Aql/aeBAp9rVoVSaWlsLthJA6Y0DLqOu4ZWPz8/fwRNpX/Ocddj5cKl2rlHQrTS/eG+AWCUAAuA4zjiIcyM6qIRvaFL67itICtyjJbeEKu1j6tIFdtoZdsMPU/7u+qtwrpOxkf2Hem5Zfng54v8jSPjI0v3ak/lywVL1/+9Bl6lgOx8r/TPOT4XXuWqvyLVV7Xrv/T7AkAvPbAAvlirsuiu2YFJ7al8uX5VEbUeWa0J1+x+V5F9rDTjbz/6NML0vevP132Wema1+mVFzvvO+9cxlg9+h/PvWntKYO5+v77fe22kPa9q12WuX2B6juk1GwmvWtVXuWBN1SIAMwiwAL7Q7GDpyabfPSFWJIQqbTs6puVOiHUc6yaAK/6GpRAqfS+VC7UiDbLPzy3a9L636ua6jYn454lck5HtSmPPRuyR75m71Uq545SqIlsVWGnVWC3Myo1LjwcAowRYAF8oEgZ8ijshVs+2tfG9wVcrpDvNClF6wqtIEDWrCqt07Mi4HrWlfbOWD/L+ekOs4/jviqk0lD3fv/7v33//ffzrX/+63X+rJu2zVQqxrq///fff/7dNKei67js9ltAXgLsEWADcNrKsa9RuwUA0nOpZSlgak9tnqmeS+ETl3MwqrNJ+R89rptbywd2uW/KiIWpp2+M4/rjez59rwfY1tLr+b6mK61pheL1H0grE2u9wPedSiJULr0ohVq13lmsfgFkEWABfoDTpuhsCRJd1zQqx3mEiFK3aioRYI54IpZ6qwmotJRy9fktLqUqvpeGUSpLPFq3wi17fpeqsqzTEan1fp/dX9Hs2d+2n/a9q/bCO4/+HWOnywdaSQfcMADMIsAA+xKww6rqfVpgQPX5uwhYNtXpCq90nSSNLCY/jPYK73lCqtl3LjBArZ9bywd7jsJ/IdRUJaa/3wClXkfXz81MNr0rndg3T0kqs1j6u26fB1flararqHH+tyrruO9cjCwDuEGABfKBVFVetY/Xsf3YoU5okzT5OJISaXYXV24vrCblrrOfvf6cKK7Kv2nGvx1tht78VY6Ih1ql0P0RCrLMCK93HuW30fqtVh5WqoqL9sGrhVS60ch8AMNs/Xn0C8AX+/eoT4HtcJzPnBOZ8Lf2557XW+9fXc9usNDO4ijbjzo3raeQdCVGeCuTuyk2US9dGeh3VrrEV11z6meaat5f6A13HlPoG1bbJvcZ76P0uK12Xue/kX79+/XG9pz9fx1zfz+03er6l759acJW+luuPVdoGvoz5NSzkBoP1BFg8ZiScqk2GekOsdPvSud3RmhDdCXheEWD1jIvu/2kjIVYtKI1eu9FjR/42rQArUq1S+jm3X97LyPdX6bs0F1Bd/732Xu7fa+dXW4acu5bPn0sh7TW8igRe8IXMr2EhNxisJ8DiUZHAaiToKo3JjUvfX+1ukNNT7VQa21sxNSvEqm37pFYVSOQ6G70uR661VoBV+rm13CrdtwDrc4yG8Lnvykg41Xo/93N6vFTkum8FV6Vxwis4jsP8GpZyg8F6AiweNaMKq/Ra7udWkFXSGzqsCql6j1fbT08VVjo+Oq5mtyBrVRVWbd8R0eqr62ul5YO5MQKsz3Y3yOqpxrqO7/mPDzW56z9SeXjtfdWq0oIvZn4NC7nBYD0BFo+bHWKlr+/S/ypn1uRpVoDVs69WAPUO1Vi1a2FmFVb6eun4qchSqvO1SP+r63YCrO8yK8gq9cZK/722zfW1iGhYm74e+Xf4cubXsJAbDNYTYPESM6uuotVY17GtcxrxxOToboh0pworcvzIOewUYt2pwiq9H6n6yz3NLaen+ur892iAVWuWzWe50yMrEmTlfq6FV7nziTzE4Pz32jUtuIIq82tY6J+vPgEAnvP7938eu359tHvttfT14/jP5Cj9+RybOidXMyc5rwhpRs//r7/+mnq+v379qp7LjOOV9h+ZqJ/Xy7mf2jalay66/9qYlt6/p0k6JSP3S+QaTa/1c5v0nkm/i3tC82gFYiSoBYCVBFgAHyoXTKVKIdZV+notyLq+lh7n3T01SYuGT60Qa1RPhdmqpaJ3QtURuc87es1GQwi+UyTYKl0f6bWfC4av38u14+X2nTvPSCWi4AqAV1HiCOtZQshLRZZeRZ7udrfv1UjAMHuC9MQ59PbBKm0TDT1Gjte7r5bWMr7oEwkjy6N6l02VtJb3tfpfRX9O95UeG6Lfu9GncNbug9aS5Z5+cECW+TUspAIL4MOVKrFKVS7HEau6uk5oru+f0knUDpOe1jmWxo3u/52sPPfo8sB0SVS0grDnOCsa58MdaVVj65rMVV1FKrpqx+2pyAKAV5EQw3oqsNhCtAn2jKqrnqdhrfbkExFHq6HuVlGt2r5Hq6H/yAMEog8TyF1vkQC1Z9IeXU6lAotZeu6pOyJBFhBmfg0LqcAC+BK5Plel3kLX944jVnU1UgGwUqknzIpA650nebPOPVf9FGm2no4tVWFFtk3Pp7VNa/w7/115f7nvrut1m1Zi9cp9T7vmAdiZAAvgi/Q0wq4FWdf30zFXT1Y/pdLJWS7QunN+o82Se9x5muCKp/DNMvLkwasZYdmM957sMwal79jR7wjXIgDvRoAF8GV6Kq5K75fG7KL2JMS0Z9JKu30uI0pBYK/RsCo9l1Lfn/T90valc0vfv14b6XVS+lm/IJ7mOgPgmwiwAL5QafJ/HOMVV7XQ6CmRKqv09/hWoxPfnkqnGXqDr9zft/cJkK39AgDwPAEWwJfKhVTHMVZxVVpCePXEcsJceFH6PUvjV5xLTe1ze/UywFeFNrXQqlWFlY5tHSc3NlJ9Ff1sBF8AAHMIsAC+XCTIuo6rjc0pNVOfLXr+tWDkOn7UDoHFDucw4snqrtqT11IzP89fv35Z9gUAMECABcBxHO0g6zjqYVQrGFoh18+q1Rept2pnRmPwEaPVV6+u2npCTxVWTi28qlVfjbjTiB8AgP8QYAHwh+iSu1O0wmrFEsLoksHeaqzSMWbbPUjKhS+jFVJ3n/hY277n7xkNrwAA2IsAC4CsSJP24ygHPGnQMSsciPRGOo93txrrVXaqvtq10X1uuWEpyBq59mpPFlRRBQDwPAEWACE9ywaPo3+SHw1KWhViuwYuM31SpVApRExfjwSS17E1uWtz9mda63WlDxYAQD8BFgDDahP0Xq3AK1dt0zrOzlVYpc9utLrnW6uCekPLGZ/TjL5WQiwAgD6f/5+pAXjc79+/i/+MigYGI8HCOwUJo0sHS9s+JXrs3JK91j5+fn5CTxIsjYkeZ9Q3VAUCAKymAguAR92p2ppVPfXqpYaj1Vc7B21PVbHV/uavDi/TyqxWlZUqLACAOP9JEIAtzKrU2t3s8Opdlw7WKq1q75VeG9HbK6sUnEXCu1JguuNDBAAAdiTAAmBLnxbYrPDJn8XqEKu0/d39pkHVNaASYgEAjBNgAcBDPnHp4Cyt37EUYo18NjM+z1pQlYqGWIIsAIAyARYA24oEDe8S7lg6+N8ijdevalVT0WulNm7WtZQLqSIhVjoOAID/EGAB8HbeLbwZDUZmhlc7BH0jVVbREOt8b8UTMEt6lwsKsQAAxgmwAGChWnAyEkS9W3g3o8qqJ8RarRUu9YZYlhQCAMQIsADY2hOVM6vcCa8iQc6M89hB5PdaHWKN7m+k0ioNplrVWIIsAAABFgAsIbzKu9PXbFWI1bufSAAVCbGi1Vi5YwIAfBsBFgBMtsuywafCqxnhyp3f8c7vObpt5HeOPn3wSjUWAECeAAuAr5MLS56o5omENLtVTEW0znmkcqq3gX1vs/bZjd0jAVWpyioXYqnGAgD40z9ffQIA8Al6Q5yo3auvZvr5+fkjuPn9+3c2rDk/k1LI82Tl2fVYf/31V/bvFRl3/p6R/eX2CQDw6VRgAfBxrpP+nkn+SCAws5Jnxn5mVxbNsqJ/1c/Pz8ufyhhdAjh7XG4sAMAnE2AB8JVaS9FaeoKi0aWDveHMjsFVr5Gg6wyyZoZZd/YlxAIAmM8SQgDImBUGPVUh9I7hVW2JYGQpYU7u864FQJHtW3LL+e4sJ+wZBwDwLf7x6hOAL/DvV58AvLtceHENJUbez42bLRo49DYsj27/lJ4qoPTzLm0baXa+m54qunTs7HEAvIT5NSxkCSEAb681eb/7ZMARd/f7LdU2PeHdrv29Tq0gtTZ2xnJCAIBP5v8FAbC9kf5QPQHQ7LDoyfBp50AnZ8bf5Qyy3uV3fyLE2r06DQDgLgEWAF+hFXbMagI+o/H6u1Rf/fr1a0pwcqdC7hpm7RBq9SyJzI1XYQUAkGeNLqynBxZMEFmeNTqmJBomjAZO79D7akVlz0gF0d1g5+kKpdX9sPTCAtiS+TUs5AaD9QRYMMlos/Y7IdYqd8Or2j4iXvkZjC6Bm1mdtPr3762si4RYI2MAeJT5NSykTh2At3adxEdDoVdO8mvL3J4Ir2Yt+3uFmUsrX7Hk0PJAAIBx/p8UAG8jEjb0hFhPhhet460Or945uLqa1avsaof+WZ/wtwEAWOmfrz4BAOjx+/fv/5rs//z8/FHdkhuTG3eOPc0OEaKByBPh1S5mVSFdP7OZlU3n53vnM7OMDwBgPgEWAB+hJ8Q6jnzokQseokHGSGjxVL+rT5f7HO+GWqNB1ujfyd8XAKBOkzlYTxN3WGBmw/YnexONLH9712btqdrnvPI8Z/19a+cY+Rtp4g7w8cyvYSE3GKwnwIJFoiFWbWx0+xF3ezXNCiN2CbFeFWBFz2Gl1rXQG06V9ifAAngp82tYyA0G6wmwYKFVIdYrzQ4hdvi9dwivUk+FWbPDq+gYAB5nfg0L6YEFwFvr6XW1smH7DJ8aQLyq6qml1g9t5v5rIsEUAAASYniCCix4QCuQ2rEC6MnA6pWBXSsg2iVMnBFk3W3Mr/oK4K2ZX8NCbjBYT4AFD7oTZPXuq2ZFoHANLkbCllcERZHz3CXAOkXOeUV/s9HwqrQ/AB5nfg0LucFgPQEWPCwaiOy+tC3qqVCuV/S8dguwVooGV7mxwiuA7Zlfw0JuMFhPgAUv0huMPB1oze53tFtgtNv5vEotYLobXrX2D8CjzK9hITcYrCfAghf69HAkZ4dle7tWha0WDZN6AinhFcDbML+GhdxgsJ4ACzbxSUFJy6urn74hwOoNj2Y/lVB4BbAd82tYyA0G6wmwYDPvGpiMeEWQ9C4N5nv1BEa9y0N7emP1ngsAjzG/hoXcYLCeAAs29w7hyR2jvb1GP5d3CbBmhUCjvcxKxxdcAbwt82tYyA0G6wmw4IOkQcsTgcIrK6NGzuHpwKxkxd/mbuP9kYbukW0B2IL5NSzkBoP1BFjAEk9WSPUe79Uh1oyw505YNaOZe+++AHg582tYyA0G6wmwgOVGgp+VS/2eqvZKjYY9T4RVvccRXAG8HfNrWMgNBusJsIDHPBFkPRFi9RznONY2WB851uy+WAC8BfNrWMgNBusJsIDHrVxe+FSA1TrmU6FV6zhPBGIAvAXza1jIDQbrCbCAl7izFK8VPr0ixBqxohJKYAVAgfk1LOQGg/UEWMBLrQqydg6xRkKmmaGVkArgK5lfw0JuMFhPgAVsYUWQ9cSTCXvMDJo0XAegk/k1LOQGg/UEWMBWZvfH2iXEigZOM3paCawAyDC/hoXcYLCeAAvY0swgq3dfs4KsmVVSgisAbjK/hoXcYLCeAAvY2kiQNaMaq7WvmqeXCgquAAgwv4aF3GCwngALeAuzqqhW9Np61dMEBVcAdDC/hoXcYLCeAAt4KzsEWXcJrgB4AfNrWMgNBusJsIC3NKs5+9NBVil8ElwBsJj5NSzkBoP1BFjA24uGUK8Msu4EV7XtASDI/BoWcoPBegIs4GPsGGRZLgjAJsyvYSE3GKwnwAI+zowgq3dfV63QSdUVAC9gfg0LucFgPQEW8LFmBlm5ffcGTIIrAF7I/BoWcoPBegIs4OPNavg+KhpcHYfwCoBlzK9hITcYrCfAAr7GyHLA0UCrJ7Q6Ca8AWMj8GhZyg8F6AizgK61+6mAPwRUADzC/hoXcYLCeAAv4eq8KswRXADzI/BoWcoPBegIsgP/1VJAluALgBcyvYSE3GKwnwAIomBVoCawA2ID5NSzkBoP1BFgAA3LhlqAKgI2ZX8NCbjBYT4AFAACfz/waFhp7bjUAAAAAPESABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDW/vnqEwAAANjFr1+/mmN+//79wJkAcPWPV58AfIF/v/oEAACoiwRXKUEWCfNrWMgNBusJsAAANjUSXKUEWfwv82tYSA8sAADgK80Ir2buB4AyARYAAAAAWxNgAQAAX2d21ZQqLIC1BFgAAAAAbE2ABQAAAMDWBFgAAAAAbE2ABQAAAMDW/h/Rj4zb9SxvWAAAAABJRU5ErkJggg==\n", "text/plain": [""]}, "execution_count": 34, "metadata": {}, "output_type": "execute_result"}], "source": ["conversion_value = (1500*1500)/(5280*5280)\n", "density_5blocks = density_layer * conversion_value #raster arithmetic\n", "density_5blocks"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Let us remap this continuous density raster to a binary layer representing whether a pixel represents high enough density or not."]}, {"cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [{"data": {"image/jpeg": "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\n", "text/plain": [""]}, "execution_count": 35, "metadata": {}, "output_type": "execute_result"}], "source": ["density_classified_color = colormap(density_5blocks, colormap_name='Random',astype='u8')\n", "density_classified_color"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Next, we classify the density raster such that pixels that have heart attacks greater than 5 get value 1 and rest become 'no data' pixels."]}, {"cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [{"data": {"image/jpeg": "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\n", "text/plain": [""]}, "execution_count": 36, "metadata": {}, "output_type": "execute_result"}], "source": ["#remap pixel values to create a binary raster\n", "density_classified = remap(density_5blocks, input_ranges=[5,16], output_values=[1],astype='u8',no_data_ranges=[0,5])\n", "density_classified_viz = colormap(density_classified, colormap_name='Random', astype='u8')\n", "density_classified_viz"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Through classification, we have determined there are 3 hotspots in our density raster. Let us overlay this on a map to see which areas these hotspots correspond to."]}, {"cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [{"data": {"application/vnd.jupyter.widget-view+json": {"model_id": "bd02416875c7467ca7fcb692b339a5bb", "version_major": 2, "version_minor": 0}, "text/plain": ["MapView(layout=Layout(height='400px', width='100%'))"]}, "metadata": {}, "output_type": "display_data"}, {"data": {"text/html": ["
"], "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["density_map2 = gis.map(\"Pittsburgh, PA\")\n", "density_map2"]}, {"cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": ["density_map2.add_layer(density_classified_viz)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Perform overlay analysis"]}, {"cell_type": "markdown", "metadata": {}, "source": ["The site selection condition requires two inputs, the heart attack density layer (which we created earlier) and the accessibility layer (from the buffer analysis). To perform overlay, we need to convert the buffers layer to a raster layer of matching cell size as that of the density raster layer. To perform this conversion we use the `convert_feature_to_raster` method."]}, {"cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": ["from arcgis.raster.analytics import convert_feature_to_raster"]}, {"cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["\n"]}], "source": ["# create a timestamp to create a unique output\n", "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", "\n", "# convert zoning buffer polygon to a raster layer of matching cell size\n", "buffer_raster = convert_feature_to_raster(commercial_buffers.layers[0],\n", " output_cell_size={'distance':150, 'units':'feet'},\n", " output_name=f'buffer_raster_{timestamp}')\n", "\n", "print(buffer_raster)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Query the layer to quickly visualize it as an image"]}, {"cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [{"data": {"image/jpeg": "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\n", "text/plain": [""]}, "execution_count": 39, "metadata": {}, "output_type": "execute_result"}], "source": ["buffer_raster = buffer_raster.layers[0]\n", "buffer_raster"]}, {"cell_type": "markdown", "metadata": {}, "source": ["The `raster` module of the Python API provides numerous raster functions. Of which we use the [bitwise_and](http://desktop.arcgis.com/en/arcmap/10.3/manage-data/raster-and-images/local-function.htm) local function which returns an image with pixels that match in both the input rasters."]}, {"cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [{"data": {"image/jpeg": "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\n", "text/plain": [""]}, "execution_count": 40, "metadata": {}, "output_type": "execute_result"}], "source": ["bool_overlay = bitwise_and([buffer_raster,density_classified])\n", "bool_overlay"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Let us overlay this final result on a map to visualize the regions that are suitable to locating new AED devices."]}, {"cell_type": "code", "execution_count": 4, "metadata": {"scrolled": false}, "outputs": [{"data": {"text/html": [""], "text/plain": [""]}, "execution_count": 4, "metadata": {}, "output_type": "execute_result"}], "source": ["map3 = gis.map(\"Carnegie Mellon University, PA\")\n", "map3"]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": [" \n"]}], "source": ["map3.add_layer(bool_overlay)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Conclusion\n", "Thus, in this sample, we observed how site-suitability analyses can be performed using ArcGIS and the ArcGIS API for Python. We started with the requirements for placing new AED devices as -- high intensity of cardiac arrests and proximity to commercial areas. Using a combination of feature analysis and raster analysis, we were able to process and extract the suitable sites. The analyst could convert the results from raster to vector, perform a centroid operation on the polygons, followed by reverse geocode to get the addresses of these 3 suitable locations for reporting and further action."]}], "metadata": {"esriNotebookRuntime": {"notebookRuntimeName": "ArcGIS Notebook Python 3 Standard", "notebookRuntimeVersion": "4.0"}, "kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10"}, "toc": {"base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": false, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": {}, "toc_section_display": true, "toc_window_display": false}}, "nbformat": 4, "nbformat_minor": 4} \ No newline at end of file +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Finding suitable spots for placing heart defibrillator equipments in public\n", + "In this sample, we will observe how site [suitability analyses](https://en.wikipedia.org/wiki/Suitability_analysis) can be performed using the ArcGIS API for Python. The objective of this sample is to find locations in the city of Philadelphia that are suitable for placing [AED (Automated External Defibrillator)](https://en.wikipedia.org/wiki/Automated_external_defibrillator) for public emergencies." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
Image of an AED device attached to a wall at San Diego Convention Center during Esri UC
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The criteria for suitable places are those that have high incidence of [OHCA (Out of Hospital Cardiac Arrests)](http://www.sca-aware.org/sca-news/aha-releases-latest-statistics-on-out-of-hospital-cardiac-arrest) and be accessible to public, such as commercial areas.\n", + "\n", + "As inputs, we start with geocoded OCHA (Out-of-Hospital Cardiac Arrest) point data, along with a few base layers for the city of Pittsburgh published as feature layers. As output, we need to generate a list of locations that have a high incidence of heart-attacks and located within commercial areas, allowing easy access at times of emergencies." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "toc": true + }, + "source": [ + "

Table of Contents

\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting set up" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from arcgis.gis import GIS\n", + "from arcgis.map import Map\n", + "from arcgis.features import FeatureCollection, use_proximity\n", + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Setting `verify_cert` to False is a security risk, use at your own risk.\n" + ] + } + ], + "source": [ + "gis = GIS(\n", + " url='https://pythonapi.playground.esri.com/portal', \n", + " username='arcgis_python', \n", + " password='amazing_arcgis_123',\n", + " verify_cert=False\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load input datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + " Pittsburgh heart attacks\n", + " \n", + "
OHCA in Pittsburgh
Feature Layer Collection by api_data_owner\n", + "
Last Modified: December 19, 2023\n", + "
0 comments, 19 views\n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ohca_item = gis.content.get('a5719916dff4442789a59680c25a4284')\n", + "ohca_item" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + " Pittsburgh heart attacks\n", + " \n", + "
Map showing cardiac arrest information in Pittsburgh
Web Map by api_data_owner\n", + "
Last Modified: December 20, 2023\n", + "
0 comments, 9 views\n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ohca_map_item = gis.content.get('b8b6cf2bcbeb4903a5372b7f4cbfb252')\n", + "ohca_map_item" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us take a look at the layers available in this item" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Heart attack incidence\n", + "Streets\n", + "Zoning\n", + "Boundary\n" + ] + } + ], + "source": [ + "for lyr in ohca_item.layers:\n", + " print(lyr.properties.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us display the Web Map item to view these layers on a map." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "map1 = Map(\n", + " location=\"Pittsburgh\",\n", + " item=ohca_map_item\n", + ")\n", + "map1" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "map1.legend.enabled = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Outline of the analysis\n", + "The idea of this analysis is to find places suitable for placing the AED devices. Based on prior knowledge we happen to know areas that are commercial, accessible to public and showing a high incidence of out-of-hospital cardiac arrests are good candidates. We will build the suitability model by performing these steps:\n", + "\n", + " * use **Zoning** polygon layer to identify commercial areas and build a `600` feet buffer around them\n", + " * perform density analysis on **Heart attack incidence** point layer\n", + " * perform spatial overlay to find overlapping locations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a 600 feet buffer around commercial areas\n", + "The `Zoning` feature layer contains polygon features that represent different zones such as commercial, residential etc. We need to select those features that correspond to commercial zones and create a buffer of `600` feet around them. The `600` feet area roughly corresponds to two-blocks, a walk able distance in case of an emergency." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Select commercial zones\n", + "To select the commercial zones using a query, we need to know what columns and values are available. Hence, let us construct a small query that gives the first few rows / features." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "zoning_flayer = ohca_item.layers[2]\n", + "zoning_sdf = zoning_flayer.query(result_record_count=5, return_all_records=False, as_df=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zoning_groupedareasymbolcodezon_newzoning_idsqmilesperimeterzoning_namexycode_2acresSHAPE__LengthobjectidSHAPE__AreaSHAPE
0Residential15913975.080R1D-LR1D-L55210.57652563.1762Single-Unit Detached Residential/Low Density1340081.85462429618.202356R1D-L370.1080.16610610.000157{\"rings\": [[[-80.01772016299998, 40.4977767210...
1Non Commercial81072.18880R2-LR2-L55220.5761524.913Two-Unit Residential/Low Density1338225.89947432380.904671R2-L370.1080.00517320.000001{\"rings\": [[[-80.01757926499994, 40.4981592720...
2Non Commercial2591469.283R2-LR2-L55260.09414071.0844Two-Unit Residential/Low Density1335954.10812430498.61834R2-L60.4610.04485330.000026{\"rings\": [[[-80.02201914599993, 40.4938213470...
3Residential837096.2585RPRP55170.035395.6255Residential Planned Unit Development1340036.67889431409.546743RP19.3060.01734940.000008{\"rings\": [[[-80.01117829099996, 40.4967724760...
4Residential9650.76284RM-MRM-M55190.0441.3236Multi-Unit Residential/Low Density1339641.74626431798.332613RM-M0.2230.00131450.0{\"rings\": [[[-80.01130567899997, 40.4967769370...
\n", + "
" + ], + "text/plain": [ + " zoning_grouped area symbol code zon_new zoning_id sqmiles \\\n", + "0 Residential 15913975.0 80 R1D-L R1D-L 5521 0.576 \n", + "1 Non Commercial 81072.188 80 R2-L R2-L 5522 0.576 \n", + "2 Non Commercial 2591469.2 83 R2-L R2-L 5526 0.094 \n", + "3 Residential 837096.25 85 RP RP 5517 0.03 \n", + "4 Residential 9650.762 84 RM-M RM-M 5519 0.0 \n", + "\n", + " perimeter zoning_ name \\\n", + "0 52563.176 2 Single-Unit Detached Residential/Low Density \n", + "1 1524.91 3 Two-Unit Residential/Low Density \n", + "2 14071.084 4 Two-Unit Residential/Low Density \n", + "3 5395.625 5 Residential Planned Unit Development \n", + "4 441.323 6 Multi-Unit Residential/Low Density \n", + "\n", + " x y code_2 acres SHAPE__Length objectid \\\n", + "0 1340081.85462 429618.202356 R1D-L 370.108 0.166106 1 \n", + "1 1338225.89947 432380.904671 R2-L 370.108 0.005173 2 \n", + "2 1335954.10812 430498.61834 R2-L 60.461 0.044853 3 \n", + "3 1340036.67889 431409.546743 RP 19.306 0.017349 4 \n", + "4 1339641.74626 431798.332613 RM-M 0.223 0.001314 5 \n", + "\n", + " SHAPE__Area SHAPE \n", + "0 0.000157 {\"rings\": [[[-80.01772016299998, 40.4977767210... \n", + "1 0.000001 {\"rings\": [[[-80.01757926499994, 40.4981592720... \n", + "2 0.000026 {\"rings\": [[[-80.02201914599993, 40.4938213470... \n", + "3 0.000008 {\"rings\": [[[-80.01117829099996, 40.4967724760... \n", + "4 0.0 {\"rings\": [[[-80.01130567899997, 40.4967769370... " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zoning_sdf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The column `zoning_grouped` contains zoning categories. We are intersted in those polygons that correspond to the `Commercial` category." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namezoning_grouped
0Urban Industrial DistrictCommercial
1Local Neighborhood CommercialCommercial
2Local Neighborhood CommercialCommercial
3General IndustrialCommercial
4Educational/Medical InstitutionalCommercial
\n", + "
" + ], + "text/plain": [ + " name zoning_grouped\n", + "0 Urban Industrial District Commercial\n", + "1 Local Neighborhood Commercial Commercial\n", + "2 Local Neighborhood Commercial Commercial\n", + "3 General Industrial Commercial\n", + "4 Educational/Medical Institutional Commercial" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zoning_commercial_fset = zoning_flayer.query(where=\"zoning_grouped = 'Commercial'\")\n", + "commercial_zone_df = zoning_commercial_fset.sdf\n", + "commercial_zone_df.head(5)[['name','zoning_grouped']] #display the first 5 results" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(317, 18)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "commercial_zone_df.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us draw the selected polygons on a map" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "34638148a6f1424aa2ea208da0dbab8b", + "version_major": 2, + "version_minor": 1 + }, + "text/plain": [ + "Map(center=[4930406.458085613, -8904997.912665661], extent={'xmin': -8915239.305818643, 'ymin': 4916958.923276…" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zone_map = gis.map(\"Pittsburgh, PA\")\n", + "zone_map" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "zone_map.content.draw(zoning_commercial_fset)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "zone_map.center = [40.403312, -79.991391]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have narrowed down the count from `965` zoning polygons to `317`.\n", + "\n", + "### Create buffers around commercial zones\n", + "\n", + "The ArcGIS API for Python allows you to define definition queries or filters on Feature Layers. When you run a spatial analysis on those layers, only the features that fit the filter criteria you specified will be used. Thus, you can use the 'where' clause you used earlier (to get commercial zones) to set as a filter on the `zoning_flayer` and pass that as the input to the `create_buffers` tool. The advantage of this workflow is, you are not sending the features from the local `FeatureSet` object to the tool, instead, you are asking to the tool to get the features directly from the feature layer which is **colocated** with the tool. This paradigm of colocating the compute with the data is highly preferred to improve efficiency and scalability of your analyses." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "# create a filter using the where clause from earlier\n", + "zoning_flayer.filter = \"zoning_grouped = 'Commercial'\"" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + " commercial_buffers_10_10_2024_13_23_32\n", + " \n", + "

Feature Layer Collection by arcgis_python\n", + "
Last Modified: October 10, 2024\n", + "
0 comments, 0 views\n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# create a timestamp to create a unique output\n", + "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", + "\n", + "# create buffers\n", + "commercial_buffers = use_proximity.create_buffers(input_layer=zoning_flayer,\n", + " distances=[600],units='Feet', \n", + " dissolve_type='Dissolve',\n", + " output_name=f'commercial_buffers_{timestamp}')\n", + "commercial_buffers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Draw the results on the `commercial_zone_map` created above" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "zone_map.content.add(commercial_buffers)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a density map to find areas of high heart attack incidence\n", + "To calculate the density, we use `calculate_density` tool available under the `raster` module and provide the `Heart attack incidence` feature layer as its input. This layer has a column named `num_incidence` that additionally specifies the number of heart attacks that happened at each point location. Below we bring up a few of the features to get an idea." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
noyespop2000idobjectid_1num_incidencefid_1SHAPE
01001100{\"x\": -79.97274830899994, \"y\": 40.437756305000...
110969208{\"x\": -79.97639852099996, \"y\": 40.437202953000...
2105133012{\"x\": -79.98023401899997, \"y\": 40.438334899000...
3103144013{\"x\": -79.98187612199996, \"y\": 40.438399590000...
41015265025{\"x\": -79.98428402499997, \"y\": 40.437456611000...
5108296028{\"x\": -79.98319929899998, \"y\": 40.436778390000...
61042317030{\"x\": -79.98183133499998, \"y\": 40.437055132000...
7400528051{\"x\": -79.98873209699997, \"y\": 40.435164507000...
8200719070{\"x\": -79.98717537399995, \"y\": 40.437418760000...
9105367310072{\"x\": -79.99187831499995, \"y\": 40.438126975000...
\n", + "
" + ], + "text/plain": [ + " no yes pop2000 id objectid_1 num_incidence fid_1 \\\n", + "0 1 0 0 1 1 0 0 \n", + "1 1 0 96 9 2 0 8 \n", + "2 1 0 5 13 3 0 12 \n", + "3 1 0 3 14 4 0 13 \n", + "4 1 0 15 26 5 0 25 \n", + "5 1 0 8 29 6 0 28 \n", + "6 1 0 42 31 7 0 30 \n", + "7 4 0 0 52 8 0 51 \n", + "8 2 0 0 71 9 0 70 \n", + "9 1 0 536 73 10 0 72 \n", + "\n", + " SHAPE \n", + "0 {\"x\": -79.97274830899994, \"y\": 40.437756305000... \n", + "1 {\"x\": -79.97639852099996, \"y\": 40.437202953000... \n", + "2 {\"x\": -79.98023401899997, \"y\": 40.438334899000... \n", + "3 {\"x\": -79.98187612199996, \"y\": 40.438399590000... \n", + "4 {\"x\": -79.98428402499997, \"y\": 40.437456611000... \n", + "5 {\"x\": -79.98319929899998, \"y\": 40.436778390000... \n", + "6 {\"x\": -79.98183133499998, \"y\": 40.437055132000... \n", + "7 {\"x\": -79.98873209699997, \"y\": 40.435164507000... \n", + "8 {\"x\": -79.98717537399995, \"y\": 40.437418760000... \n", + "9 {\"x\": -79.99187831499995, \"y\": 40.438126975000... " + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ha_incidence = ohca_item.layers[0] #the first layer in the input feature layer collection\n", + "ha_incidence_fset = ha_incidence.query(result_record_count=10, return_all_records=False)\n", + "ha_incidence_fset.sdf.head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Calculate density" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "from arcgis.raster.analytics import calculate_density\n", + "from arcgis.raster.functions import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create a timestamp to create a unique output\n", + "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", + "\n", + "ha_density = calculate_density(\n", + " ha_incidence, \n", + " count_field='num_incidence', \n", + " output_cell_size={'distance':150,'units':'feet'},\n", + " output_name = f'ha_density_{timestamp}'\n", + ")\n", + "print(ha_density)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us display the density raster on a map" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "density_map = gis.map(\"Pittsburgh, PA\")\n", + "density_map" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "density_map.zoom = 11" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } + }, + "source": [ + "Use the `stretch` [raster function](http://pro.arcgis.com/en/pro-app/help/data/imagery/stretch-function.htm) to enhance the density layer before adding it to the map:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "density_layer = ha_density.layers[0]\n", + "\n", + "stretch_rf = stretch(density_layer, stretch_type='StdDev',num_stddev=2)\n", + "colormap_rf = colormap(stretch_rf, colormap_name='Gray')" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "density_map.content.add(colormap_rf, {\"opacity\":0.5})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the `density_map`, we see certain regions (in shades of white) have a higher density of heart attack incidences compared to the rest." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reclassify the density raster\n", + "Calculate density tool returns the number of incidences per sq.mile. We are interested in the number of heart attacks at a larger scale of about 5 square blocks. In Pittsburgh, each block spans about 300 ft in length, thus 5 sq. blocks cover an area of 1500 x 1500 sq.feet. We apply `remap` raster function to convert the density from sq. miles to that in 5 block area" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the histogram to view actual density values and its distribution. The `histograms` property of the `ImageryLayer` object returns you histogram of each of its bands." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "density_hist = density_layer.histograms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Construct the X axis such that it ranges from min value to max value of the pixel range in the image." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "x = np.linspace(density_hist[0]['min'], density_hist[0]['max'], num=density_hist[0]['size'])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Number of pixels')" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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WnXr1tXVV1+tSI/WiGeeeUZt27ZV3bp1dc4552jFihUFy6677jo1a9ZMSUlJ6tSpk95///2CZcWvwxNPPKF77rlH//znP5WYmKj27duXWMvo0aPVqlUr1a5dW+3atdPkyZMlSYsWLdKVV16pOXPmKDExUcnJyRo3bpxefPFF3XfffUpMTFTfvn3L3Ee+p556Sm3bti1Y/umnn+5Tx9dff60WLVpo4sSJJdY5Y8YMtWnTRnXq1NE111xT5JqVd93MTE888USJ13zx4sXq3r276tSpo/r16+v8888vst3ixYtLPO//+7//029/+9siNVx77bW6/vrrS6y/sLLen1dffbVuvPHGIuv37dtXDz/8sCRp7dq1+u1vf6sGDRqoRYsWeuSRRwrWK+lvIaz27dsrMTGxYDKzgu6KmZmZSktLU3Jysnr06KFFixYVbLdo0SL16NFDycnJSktLU2ZmZsGySy+9VFdddZXOPfdcJSYm6rTTTtO3336r66+/XnXr1lWbNm2KdAMs6xx37dqlSy+9VHXr1lW7du00b9680OcIlMrdYzZJel/SccHr2yT9XzCNDNpGSroveN1H0puK3Gk4WdLcoP3nkpZJqhtMyyT9PFg2L1jXgm1/XV5NnTp18nhqPuL1ggnA4a158+Y+Y8aMIm0TJkzw0047rcR1Tj75ZH/uuchQse3bt/ucOXPc3X3ZsmUuyXNzcwu2Gz9+vLdq1cqXLFni27dv94EDB/rFF1/s7u4LFy70WrVq+fvvv+8//vij33jjjZ6QkFBwnFGjRnlCQoJPnjzZ9+zZ499//71nZWX5nDlzPDc315ctW+Zt2rTxhx56qOB4krxv376+detWX7BggVerVs3PPPNMX7Jkiefk5Hjbtm392WefLfE6lFVr/r6zs7NLvY6SvE+fPr5lyxZfsWKF169f39988013d588ebK3atXKv/rqK8/NzfU777zTTznllIJtn3/+ef/uu+88NzfX77//fk9JSfFdu3aVeh1GjRrlF110Uam1uLu/8sorvmbNGt+zZ49PnDjRa9as6WvXri3x9+vunp6e7rfcckvU+3jllVe8SZMmPnfuXN+7d69nZ2f78uXL3f2n98snn3zizZo182nTppVY48aNG7127do+adIk3717tz/44INetWpVf+qpp6K6bmVd86FDh/pdd93le/bs8V27dvn7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RAIAAABAaNy1CQCQcbh7CpKhqedRtp9/jYk/WXdhSpVMia2pd4TKVfRIABnk+eefV7du3dS1a1dNnz493eEAAAAkRCIBZIi9e/fq+uuv13PPPadVq1bp8ccf16pVq9IdFgAAQFwkEkCGeP3119W1a1d16dJFhx9+uCZMmKC5c+emOywAAIC4SCSADLFhwwZ16tQp+jw/P18bNmxIY0QAAACJMdgayBDufkCZmR1QNnPmTM2cOVOS9P7776ukpCT0trZs2aJ27dolfP3E0DVmrobamktoa26irbkpl9taUvLT6OMTld621sbSHH/XYttZK1ltraysPOg6UoFEAsgQ+fn5Wr9+ffR5VVWVTj755AOWmzJliqZMmXJQ2yopKVFFRcVB1ZEtaGtuoq25ibbmJtqau7i0CcgQ/fr105o1a7Ru3Tp99dVXeuKJJzRq1Kh0hwUAABAXPRJAhmjZsqUeeOABjRgxQnv37tVVV12lHj16pDssAACAuEgkgAxy8cUX6+KLL2727RzspVHZhLbmJtqam2hrbqKtucviDfDMZSUlJZ7Oa9eYEREAAADZxMyWu/sBd3dhjAQAAACA0EgkgEPA3r17deaZZ2rkyJGSpHXr1mnAgAEqLCzUv//7v+urr75Kc4TJsX37do0bN06nn366unfvrtdee01bt27VsGHDVFhYqGHDhmnbtm3pDjMpZsyYoR49eqhnz56aOHGidu/enTPH9aqrrlL79u3Vs2fPaFmi4+juuummm9S1a1f16tVLK1asSFfYTRKvrVOnTtXpp5+uXr166Zvf/Ka2b98efW3atGnq2rWrunXrpgULFqQj5IMSr721fvnLX8rM9Mknn0jKzWMrSb/+9a/VrVs39ejRQ7fddlu0PJuPbby2rly5UgMHDlSfPn1UUlKi119/XVJ2H9f169dryJAh6t69u3r06KH77rtPUu5+PjWKux9SP3379vV0+vr3n4n+AKlyzz33+MSJE/2SSy5xd/fx48f7448/7u7u1157rf/mN79JZ3hJc8UVV/hvf/tbd3f/8ssvfdu2bT516lSfNm2au7tPmzbNb7vttnSGmBRVVVVeUFDgu3btcvfI8Xzsscdy5ri+/PLLvnz5cu/Ro0e0LNFxnD9/vl944YW+b98+f+2117x///5pibmp4rV1wYIFvmfPHnd3v+2226Jtfffdd71Xr16+e/duX7t2rXfp0sVramrSEndTxWuvu/s///lPHz58uHfu3Nm3bNni7rl5bBcvXuxDhw713bt3u7v7pk2b3D37j228tg4bNsyfffZZd48cy0GDBkUfZ+tx/fjjj3358uXu7r5jxw4vLCz0d999N2c/n2JJqvA436vpkQByXFVVlebPn69rrrlGUuSfB4sXL9a4ceMkSaWlpXr66afTGWJS7NixQ3/961919dVXS5IOP/xwtWnTRnPnzlVpaamk3GmrJNXU1OiLL75QTU2Ndu3apby8vJw5ruedd57atm27X1mi4zh37lxdccUVMjMNHDhQ27dv18aNG1Mec1PFa+vw4cPVsmXkXigDBw5UVVWVpEhbJ0yYoCOOOEKnnHKKunbtGv0vb7aI115J+u53v6u77rprv0k4c/HYPvTQQyorK9MRRxwhSWrfvr2k7D+28dpqZtqxY4ckqbq6OjovUjYf17y8PBUXF0uSWrdure7du2vDhg05+/nUGCQSQI67+eabddddd6lFi8jb/dNPP1WbNm2iX1Ty8/O1YcOGdIaYFGvXrlW7du105ZVX6swzz9Q111yjnTt3atOmTcrLy5MU+SOwefPmNEd68Dp27Khbb71VnTt3Vl5eno4//nj17ds3J49rrUTHccOGDerUqVN0uVxr96xZs3TRRRdJyt22zps3Tx07dlTv3r33K8/F9q5evVpLly7VgAEDNGjQIL3xxhuScrOt9957r6ZOnapOnTrp1ltv1bRp0yTlTlsrKyv15ptvasCAAYfs55NEIgHktGeeeUbt27dX3759o2Ue505tsf8FzFY1NTVasWKFvvOd7+jNN9/UMccco+nTp6c7rGaxbds2zZ07V+vWrdPHH3+snTt36rnnnjtguVw4rg3J1fNZku688061bNlSkyZNkpSbbd21a5fuvPNO/exnPzvgtVxsb01NjbZt26Zly5bp7rvv1mWXXRa9RKSubG/rQw89pBkzZmj9+vWaMWNGtLc4F9r6+eefa+zYsbr33nt13HHHJVwuF9raEBIJIIe98sormjdvngoKCjRhwgQtXrxYN998s7Zv366amhpJkUufarucs1l+fr7y8/M1YMAASdK4ceO0YsUKdejQIdqVvHHjxuilBNnsxRdf1CmnnKJ27dqpVatWGjNmjF599dWcPK61Eh3H/Px8rV+/PrpcrrS7vLxczzzzjObMmRP94pGLbf3oo4+0bt069e7dWwUFBaqqqlJxcbH+93//Nyfbm5+frzFjxsjM1L9/f7Vo0UKffPJJTra1vLxcY8aMkSSNHz8+eqlWtrd1z549Gjt2rCZNmhRt36H2+RSLRALIYdOmTVNVVZUqKyv1xBNP6Pzzz9ecOXM0ZMgQ/elPf5IU+bAfPXp0miM9eCeddJI6deqkDz74QJK0aNEinXHGGRo1apTKy8sl5U5bO3furGXLlmnXrl1y92hbc/G41kp0HEeNGqXf//73cnctW7ZMxx9/fPQSg2z1/PPP6xe/+IXmzZuno48+Olo+atQoPfHEE/ryyy+1bt06rVmzRv37909jpAevqKhImzdvVmVlpSorK5Wfn68VK1bopJNOyslje+mll2rx4sWSIpc5ffXVVzrxxBNz8tiefPLJevnllyVJixcvVmFhoaTsfs+6u66++mp1795dt9xyS7T8UPp8OkC8Edi5/MNdm3CoWrJkSfSuTR999JH369fPTz31VB83blz0DiLZ7s033/S+fft6UVGRjx492rdu3eqffPKJn3/++d61a1c///zz/dNPP013mEnxk5/8xLt16+Y9evTw//iP//Ddu3fnzHGdMGGCn3TSSd6yZUvv2LGj/+53v0t4HPft2+fXXXedd+nSxXv27OlvvPFGmqMPJ15bTz31VM/Pz/fevXt77969/dprr40uf8cdd3iXLl38tNNOi94RJ5vEa2+sr3/969G7NuXisf3yyy990qRJ3qNHDz/zzDN90aJF0eWz+djGa+vSpUu9uLjYe/Xq5f379/eKigp3z+7junTpUpfkRUVF0ffn/Pnzc/bzKZYS3LWJma1TjJmtAQAAkE2Y2RoAAABA0pBIAAAAAAiNRAIAAABAaCQSAAAAAEIjkQAAAAAQGokEACArHHvssfs9nz17tm644Yak1F1ZWak//vGPodbZvn27fvOb3xxUHbEGDx6sdN5VMB0qKip00003SUru8QSQGs2WSJjZLDPbbGbvxJS1NbOFZrYm+H1CUG5mdr+ZfWhmb5lZccw6pcHya8ysNKa8r5m9Haxzv+XanOMAgJSoqanJiEQiHfbu3ZvW7ZeUlOj+++9PawwAmq45eyRmS7qwTlmZpEXuXihpUfBcki6SVBj8TJH0kBRJPCT9VNIASf0l/bQ2+QiWmRKzXt1tAQAOEVu2bNHYsWPVr18/9evXT6+88ook6fXXX9fZZ5+tM888U2effXZ05vPZs2dr/Pjx+rd/+zcNHz5cZWVlWrp0qfr06aMZM2bsV/fnn3+uoUOHqri4WEVFRZo7d64kqaysTB999JH69OmjqVOnHlBHZWWlzj33XBUXF6u4uFivvvpqtM677rpLRUVF6t27t8rKyvbb3r59+1RaWqof//jH2rt3ryZPnqyePXuqqKjogNgkafLkyfr2t7+tc889V6eddpqeeeYZSZEkYerUqerXr5969eqlRx55RJL00ksvaciQIfrWt76loqKi/epKtL3ly5erd+/eOuusszR16lT17NmzwWNy7LHH6vvf/7769u2rCy64QK+//roGDx6sLl26aN68edFYRo4c2ejjCSDDxJulLlk/kgokvRPz/ANJecHjPEkfBI8fkTSx7nKSJkp6JKb8kaAsT9L7MeX7LVffDzNbA0B2atGiRXQ22d69e3unTp38+uuvd3f3iRMn+tKlS93d/R//+Ieffvrp7u5eXV3te/bscXf3hQsX+pgxY9zd/bHHHvOOHTtGZ6CNnfm9rj179nh1dbW7u2/ZssVPPfVU37dvn69bt8579OgRXa5uHTt37vQvvvjC3d1Xr17ttX9/nn32WT/rrLN8586d7u7RGAYNGuSvvfaaT5gwwe+44w53d6+oqPALLrggWue2bdsOiK+0tNRHjBjhe/fu9dWrV3vHjh39iy++8EceecRvv/12d3ffvXu39+3b19euXetLlizxo48+2teuXXtAXYm2V1RU5C+99JK7u9966637tTsRSdEZmi+99FIfNmyYf/XVV75y5Urv3bv3Afvssccea/B4AkgPJZjZumVq0pWoDu6+UZLcfaOZtQ/KO0paH7NcVVBWX3lVnHIAQI466qijtHLlyujz2bNnR8cUvPjii1q1alX0tR07duizzz5TdXW1SktLtWbNGpmZ9uzZE11m2LBhatu2bYPbdXf98Ic/1F//+le1aNFCGzZs0KZNmxpcb8+ePbrhhhu0cuVKHXbYYVq9enU01iuvvFJHH320JO0Xw7XXXqvLLrtMP/rRjyRJXbp00dq1a3XjjTfqkksu0fDhw+Nu67LLLlOLFi1UWFioLl266P3339cLL7ygt956S3/6058kSdXV1VqzZo0OP/xw9e/fX6eccsoB9cTbXnV1tbZv365BgwZJki6//HI999xzDbb/8MMP14UXRi4WKCoq0hFHHKFWrVqpqKhIlZWV9a6b6Hi2bt26we0CSJ1UJxKJxBvf4E0oj1+52RRFLoNS586dmxIfACCD7du3T6+99pqOOuqo/cpvvPFGDRkyRH/5y19UWVmpwYMHR1875phjGlX3nDlztGXLFi1fvlytWrVSQUGBdu/e3eB6M2bMUIcOHfT3v/9d+/bt05FHHikpkpgkGtZ39tlna8mSJfre976nI488UieccIL+/ve/a8GCBXrwwQf15JNPatasWQesV7c+M5O769e//rVGjBix32svvfRSwrbH296vfvWrhPHWp1WrVtH1WrRooSOOOCL6uKampt51Ex1PAJkl1Xdt2mRmeZIU/N4clFdJ6hSzXL6kjxsoz49THpe7z3T3Encvadeu3UE3AgCQWYYPH64HHngg+ry256K6ulodO0Y6rGfPnp1w/datW+uzzz6L+1p1dbXat2+vVq1aacmSJfrHP/4Rd526z6urq5WXl6cWLVroD3/4Q3Rg8/DhwzVr1izt2rVLkrR169boOldffbUuvvhijR8/XjU1Nfrkk0+0b98+jR07VrfffrtWrFgRN8annnpK+/bt00cffaS1a9eqW7duGjFihB566KFoL8zq1au1c+fOhPtAUtzttWnTRscff7z+9re/SYokVs0t0fEEkFlSnUjMk1R756VSSXNjyq8I7t40UFJ1cAnUAknDzeyEYJD1cEkLgtc+M7OBwd2aroipCwBwiLn//vtVUVGhXr166YwzztDDDz8sSbrtttv0gx/8QOecc069dyjq1auXWrZsqd69ex8woHnSpEmqqKhQSUmJ5syZo9NPP12S9LWvfU3nnHOOevbsqalTpx5Qx3XXXafy8nINHDhQq1evjvYCXHjhhRo1apRKSkrUp08f/fKXv9xve7fccouKi4t1+eWXa8OGDRo8eLD69OmjyZMna9q0aXHj79atmwYNGqSLLrpIDz/8sI488khdc801OuOMM1RcXKyePXvq2muvbbAnINH2HnvsMV1//fU666yz9usl+Pjjj3XxxRfXW2dTJDqeADKLRcZPNEPFZo9LGizpREmbFLn70tOSnpTUWdI/JY13961BMvCAInde2iXpSnevCOq5StIPg2rvdPfHgvISRe4MdZSk5yTd6I1oTElJ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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(10,8))\n", + "ax = fig.add_axes([0,0,1,1])\n", + "ax.bar(x,density_hist[0]['counts'])\n", + "ax.set_title(\"Histogram of heart attack density layer\")\n", + "ax.set_xlabel(\"Heart attacks per sq. mile\")\n", + "ax.set_ylabel(\"Number of pixels\")\n", + "\n", + "ax2 = fig.add_axes([0.25,0.2,0.7,0.7])\n", + "ax2.bar(x[-200:], density_hist[0]['counts'][-200:])\n", + "ax2.set_title(\"Histogram of heart attack density layer - zoomed\")\n", + "ax2.set_xlabel(\"Heart attacks per sq. mile\")\n", + "ax2.set_ylabel(\"Number of pixels\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Convert units from sqmile to city blocks\n", + "The inset histogram chart has the histogram zoomed to view the distribution in the upper end of the density spectrum. We are interested in selecting those regions that have a heart attack of at least 5 per 5 block area. To achieve this, we need to convert the density from square miles to 5 square blocks." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "conversion_value = (1500*1500)/(5280*5280)\n", + "density_5blocks = density_layer * conversion_value #raster arithmetic\n", + "density_5blocks" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us remap this continuous density raster to a binary layer representing whether a pixel represents high enough density or not." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "density_classified_color = colormap(density_5blocks, colormap_name='Random',astype='u8')\n", + "density_classified_color" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we classify the density raster such that pixels that have heart attacks greater than 5 get value 1 and rest become 'no data' pixels." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#remap pixel values to create a binary raster\n", + "density_classified = remap(density_5blocks, input_ranges=[5,16], output_values=[1],astype='u8',no_data_ranges=[0,5])\n", + "density_classified_viz = colormap(density_classified, colormap_name='Random', astype='u8')\n", + "density_classified_viz" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Through classification, we have determined there are 3 hotspots in our density raster. Let us overlay this on a map to see which areas these hotspots correspond to." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "density_map2 = gis.map(\"Pittsburgh, PA\")\n", + "density_map2" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [], + "source": [ + "density_map2.content.add(density_classified_viz)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Perform overlay analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The site selection condition requires two inputs, the heart attack density layer (which we created earlier) and the accessibility layer (from the buffer analysis). To perform overlay, we need to convert the buffers layer to a raster layer of matching cell size as that of the density raster layer. To perform this conversion we use the `convert_feature_to_raster` method." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "from arcgis.raster.analytics import convert_feature_to_raster" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# create a timestamp to create a unique output\n", + "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", + "\n", + "# convert zoning buffer polygon to a raster layer of matching cell size\n", + "buffer_raster = convert_feature_to_raster(commercial_buffers.layers[0],\n", + " output_cell_size={'distance':150, 'units':'feet'},\n", + " output_name=f'buffer_raster_{timestamp}')\n", + "\n", + "print(buffer_raster)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Query the layer to quickly visualize it as an image" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "buffer_raster = buffer_raster.layers[0]\n", + "buffer_raster" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `raster` module of the Python API provides numerous raster functions. Of which we use the [bitwise_and](http://desktop.arcgis.com/en/arcmap/10.3/manage-data/raster-and-images/local-function.htm) local function which returns an image with pixels that match in both the input rasters." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bool_overlay = bitwise_and([buffer_raster,density_classified])\n", + "bool_overlay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us overlay this final result on a map to visualize the regions that are suitable to locating new AED devices." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "map3 = gis.map(\"Carnegie Mellon University, PA\")\n", + "map3" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " \n" + ] + } + ], + "source": [ + "map3..content.add(bool_overlay)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "Thus, in this sample, we observed how site-suitability analyses can be performed using ArcGIS and the ArcGIS API for Python. We started with the requirements for placing new AED devices as -- high intensity of cardiac arrests and proximity to commercial areas. Using a combination of feature analysis and raster analysis, we were able to process and extract the suitable sites. The analyst could convert the results from raster to vector, perform a centroid operation on the polygons, followed by reverse geocode to get the addresses of these 3 suitable locations for reporting and further action." + ] + } + ], + "metadata": { + "esriNotebookRuntime": { + "notebookRuntimeName": "ArcGIS Notebook Python 3 Standard", + "notebookRuntimeVersion": "4.0" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": false, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 8c3b17da67302b8f8cfaff38ab77d67c7e4f0b86 Mon Sep 17 00:00:00 2001 From: John Yaist Date: Thu, 10 Oct 2024 14:41:35 -0700 Subject: [PATCH 2/6] update buffers map --- ...r_AED_devices_using_raster_analytics.ipynb | 56 +++++++++---------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb index c8345b9b7f..af1f1cbf93 100644 --- a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb +++ b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -56,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -103,7 +103,7 @@ " \n", "
OHCA in Pittsburgh
Feature Layer Collection by api_data_owner\n", "
Last Modified: December 19, 2023\n", - "
0 comments, 19 views\n", + "
0 comments, 20 views\n", " \n", " \n", " " @@ -262,7 +262,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -272,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -456,7 +456,7 @@ "4 0.0 {\"rings\": [[[-80.01130567899997, 40.4967769370... " ] }, - "execution_count": 18, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -474,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -543,7 +543,7 @@ "4 Educational/Medical Institutional Commercial" ] }, - "execution_count": 19, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -556,7 +556,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "metadata": { "scrolled": true }, @@ -567,7 +567,7 @@ "(317, 18)" ] }, - "execution_count": 20, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -585,23 +585,19 @@ }, { "cell_type": "code", - "execution_count": 42, - "metadata": { - "scrolled": true - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "34638148a6f1424aa2ea208da0dbab8b", - "version_major": 2, - "version_minor": 1 - }, + "text/html": [ + "" + ], "text/plain": [ - "Map(center=[4930406.458085613, -8904997.912665661], extent={'xmin': -8915239.305818643, 'ymin': 4916958.923276…" + "" ] }, - "execution_count": 42, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -613,7 +609,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -622,7 +618,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -642,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -652,7 +648,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -660,13 +656,13 @@ "text/html": [ "
\n", "
\n", - " \n", + " \n", " \n", " \n", "
\n", "\n", "
\n", - " commercial_buffers_10_10_2024_13_23_32\n", + " commercial_buffers_10_10_2024_14_39_26\n", " \n", "

Feature Layer Collection by arcgis_python\n", "
Last Modified: October 10, 2024\n", @@ -676,10 +672,10 @@ " " ], "text/plain": [ - "" + "" ] }, - "execution_count": 46, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -705,7 +701,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ From 50f64b631e6f52e450b55777b6745719da5ef379 Mon Sep 17 00:00:00 2001 From: John Yaist Date: Fri, 11 Oct 2024 10:30:56 -0700 Subject: [PATCH 3/6] remove credentials from gis login --- ...r_AED_devices_using_raster_analytics.ipynb | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb index af1f1cbf93..d0dff256df 100644 --- a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb +++ b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb @@ -56,24 +56,11 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Setting `verify_cert` to False is a security risk, use at your own risk.\n" - ] - } - ], + "outputs": [], "source": [ - "gis = GIS(\n", - " url='https://pythonapi.playground.esri.com/portal', \n", - " username='arcgis_python', \n", - " password='amazing_arcgis_123',\n", - " verify_cert=False\n", - ")" + "gis = GIS(profile=\"your_enterprise_profile\")" ] }, { @@ -103,7 +90,7 @@ " \n", "
OHCA in Pittsburgh
Feature Layer Collection by api_data_owner\n", "
Last Modified: December 19, 2023\n", - "
0 comments, 20 views\n", + "
0 comments, 21 views\n", "
\n", "
\n", " " @@ -638,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -718,7 +705,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -893,7 +880,7 @@ "9 {\"x\": -79.99187831499995, \"y\": 40.438126975000... " ] }, - "execution_count": 48, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -913,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ From 1f03869404027957fccccfe8de636c6d768dc4bb Mon Sep 17 00:00:00 2001 From: John Yaist Date: Fri, 11 Oct 2024 10:40:07 -0700 Subject: [PATCH 4/6] add output cell for calc dens --- ...spots_for_AED_devices_using_raster_analytics.ipynb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb index d0dff256df..57fa950606 100644 --- a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb +++ b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb @@ -912,7 +912,16 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs":[ + { + "name": "stdout", + "output_type": "stream", + "text": + [ + "\n" + ] + } + ], "source": [ "# create a timestamp to create a unique output\n", "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", From f5be18222148dea373bf53495d2953cf6982e6bb Mon Sep 17 00:00:00 2001 From: John Yaist Date: Fri, 11 Oct 2024 10:56:20 -0700 Subject: [PATCH 5/6] fix typo in adding layer --- ...r_AED_devices_using_raster_analytics.ipynb | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb index 57fa950606..f9cf31b1a4 100644 --- a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb +++ b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb @@ -912,16 +912,15 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs":[ - { - "name": "stdout", - "output_type": "stream", - "text": - [ - "\n" - ] - } - ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], "source": [ "# create a timestamp to create a unique output\n", "timestamp=datetime.now().strftime('%d_%m_%Y_%H_%M_%S')\n", @@ -1390,7 +1389,7 @@ } ], "source": [ - "map3..content.add(bool_overlay)" + "map3.content.add(bool_overlay)" ] }, { From f1efbcf592a1aa6e244dac3e33bdb36d9704c804 Mon Sep 17 00:00:00 2001 From: John Yaist Date: Fri, 11 Oct 2024 11:07:41 -0700 Subject: [PATCH 6/6] update output --- ..._suitable_spots_for_AED_devices_using_raster_analytics.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb index f9cf31b1a4..6d999dffad 100644 --- a/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb +++ b/samples/04_gis_analysts_data_scientists/finding_suitable_spots_for_AED_devices_using_raster_analytics.ipynb @@ -1270,7 +1270,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n" + "\n" ] } ],