From 4bc0c1f9253fdac290a5b4a4372a56394134de79 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Thu, 30 Nov 2023 21:21:33 +0800 Subject: [PATCH 01/31] update osm layer and natural area indicator --- city_metrix/layers/__init__.py | 2 +- city_metrix/layers/osm_open_space.py | 30 ------------------- city_metrix/layers/smart_cities_lulc.py | 39 +++++++++++++++---------- city_metrix/metrics.py | 7 ++--- 4 files changed, 28 insertions(+), 50 deletions(-) delete mode 100644 city_metrix/layers/osm_open_space.py diff --git a/city_metrix/layers/__init__.py b/city_metrix/layers/__init__.py index 82af9b3..71e6ee6 100644 --- a/city_metrix/layers/__init__.py +++ b/city_metrix/layers/__init__.py @@ -4,5 +4,5 @@ from .tree_cover import TreeCover from .high_land_surface_temperature import HighLandSurfaceTemperature from .smart_cities_lulc import SmartCitiesLULC -from .osm_open_space import OpenSpaceClass, OSMOpenSpace +from .open_street_map import OSMClass, OpenStreetMap from .layer import Layer, LayerGroupBy \ No newline at end of file diff --git a/city_metrix/layers/osm_open_space.py b/city_metrix/layers/osm_open_space.py deleted file mode 100644 index 4fa1d07..0000000 --- a/city_metrix/layers/osm_open_space.py +++ /dev/null @@ -1,30 +0,0 @@ -from enum import Enum -import osmnx as ox -import rasterio - -from .layer import Layer, get_utm_zone_epsg - - -class OpenSpaceClass(Enum): - leisure = ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'] - boundary = ['protected_area', 'national_park'] - - @classmethod - def to_dict(cls): - return {e.name: e.value for e in cls} - - -class OSMOpenSpace(Layer): - def __init__(self, **kwargs): - super().__init__(**kwargs) - - def get_data(self, bbox): - north, south, east, west = bbox[3], bbox[1], bbox[0], bbox[2] - rec_sites = ox.features_from_bbox(north, south, east, west, OpenSpaceClass.to_dict()) - - # Drop points & lines - rec_sites = rec_sites[rec_sites.geom_type != 'Point'] - rec_sites = rec_sites[rec_sites.geom_type != 'LineString'] - - return rec_sites.reset_index() - diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index e5b01ef..39588bd 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -1,8 +1,11 @@ from pystac_client import Client import rioxarray import xarray as xr +import ee -from .layer import Layer +from .layer import Layer, get_utm_zone_epsg +from .. import EsaWorldCover, EsaWorldCoverClass +from .. import OSMClass,OpenStreetMap class SmartCitiesLULC(Layer): @@ -11,24 +14,30 @@ def __init__(self, land_cover_class=None, **kwargs): self.land_cover_class = land_cover_class def get_data(self, bbox): - esa1m = EsaWorldCover.get_data(bbox).rio.reproject(grid=()) - osm_gdf = OSMOpenSpace().get_data(bbox) + esa1m = EsaWorldCover.get_data(bbox).rio.reproject(grid=()) + osm_gdf = OpenStreetMap().get_data(bbox) + crs = get_utm_zone_epsg(bbox) - make_geocube( + make_geocube( vector_data=osm_gdf, measurements=["index"], like=esa1m, - ) - - ulu = xr.open_dataset( - ee.ImageCollection("projects/wri-datalab/cities/urban_land_use/V1"), - engine='ee', - scale=5, - crs=crs, - geometry=ee.Geometry.Rectangle(*bbox) - ) - - + ) + + ulu = xr.open_dataset( + ee.ImageCollection("projects/wri-datalab/cities/urban_land_use/V1"), + engine='ee', + scale=5, + crs=crs, + geometry=ee.Geometry.Rectangle(*bbox) + ) + + ulu_data = ulu.ulu.compute() + + # ulu_data = ulu_data.where(ulu_data != self.NO_DATA_VALUE) + + # get in rioxarray format + ulu_data = ulu_data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) diff --git a/city_metrix/metrics.py b/city_metrix/metrics.py index e446f31..35b763a 100644 --- a/city_metrix/metrics.py +++ b/city_metrix/metrics.py @@ -1,5 +1,5 @@ from city_metrix.layers import Albedo, EsaWorldCoverClass, EsaWorldCover, HighLandSurfaceTemperature, TreeCover, \ - OSMOpenSpace + OSMClass, OpenStreetMap from geopandas import GeoDataFrame @@ -72,7 +72,7 @@ def built_land_with_high_land_surface_temperature(zones): def urban_open_space(zones): built_up_land = EsaWorldCover(land_cover_class=EsaWorldCoverClass.BUILT_UP) - open_space = OSMOpenSpace() + open_space = OpenStreetMap(osm_class=OSMClass.OPEN_SPACE) open_space_in_built_land = open_space.mask(built_up_land).groupby(zones).count() built_land_counts = built_up_land.groupby(zones).count() @@ -81,7 +81,6 @@ def urban_open_space(zones): def natural_areas(zones): - natural_areas = NaturalAreas() - natural_area_counts = natural_areas.mask(...).groupby(zones).count() + return NaturalAreas().groupby(zones).mean() From b4d6ac8b8d68a6dca5fa4c2a7031549f7768ce6b Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 1 Dec 2023 17:29:53 +0800 Subject: [PATCH 02/31] update osm and add ulu --- city_metrix/layers/__init__.py | 4 ++- city_metrix/layers/open_street_map.py | 33 ++++++++++++++++++++ city_metrix/layers/smart_cities_lulc.py | 40 +++++++++++-------------- city_metrix/layers/urban_land_use.py | 37 +++++++++++++++++++++++ city_metrix/metrics.py | 8 ++--- 5 files changed, 94 insertions(+), 28 deletions(-) create mode 100644 city_metrix/layers/open_street_map.py create mode 100644 city_metrix/layers/urban_land_use.py diff --git a/city_metrix/layers/__init__.py b/city_metrix/layers/__init__.py index 71e6ee6..a951c09 100644 --- a/city_metrix/layers/__init__.py +++ b/city_metrix/layers/__init__.py @@ -4,5 +4,7 @@ from .tree_cover import TreeCover from .high_land_surface_temperature import HighLandSurfaceTemperature from .smart_cities_lulc import SmartCitiesLULC -from .open_street_map import OSMClass, OpenStreetMap +from .open_street_map import OpenStreetMap +from .urban_land_use import UrbanLandUse +from .natural_areas import NaturalAreas from .layer import Layer, LayerGroupBy \ No newline at end of file diff --git a/city_metrix/layers/open_street_map.py b/city_metrix/layers/open_street_map.py new file mode 100644 index 0000000..c39b14e --- /dev/null +++ b/city_metrix/layers/open_street_map.py @@ -0,0 +1,33 @@ +import osmnx as ox + +from .layer import Layer + + +class OpenStreetMap(Layer): + def __init__(self, osm_tag=None, **kwargs): + super().__init__(**kwargs) + self.osm_tag = osm_tag + + def get_data(self, bbox): + north, south, east, west = bbox[3], bbox[1], bbox[0], bbox[2] + osm_feature = ox.features_from_bbox(north, south, east, west, self.osm_tag) + + # Drop points + osm_feature = osm_feature[osm_feature.geom_type != 'Point'] + + # Keep LineString for Roads Class + if 'highway' not in self.osm_tag: + # Drop lines + osm_feature = osm_feature[osm_feature.geom_type != 'LineString'] + + # keep only columns desired to reduce file size + osm_feature = osm_feature.reset_index().loc[:, ['osmid','geometry']] + + return osm_feature + + def write(self, output_path): + self.data['bbox'] = str(self.data.total_bounds) + self.data['osm_tag'] = str(self.osm_tag) + + # Write to a GeoJSON file + self.data.to_file(output_path, driver='GeoJSON') diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 39588bd..819597d 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -5,7 +5,7 @@ from .layer import Layer, get_utm_zone_epsg from .. import EsaWorldCover, EsaWorldCoverClass -from .. import OSMClass,OpenStreetMap +from .. import OpenStreetMap class SmartCitiesLULC(Layer): @@ -15,31 +15,25 @@ def __init__(self, land_cover_class=None, **kwargs): def get_data(self, bbox): esa1m = EsaWorldCover.get_data(bbox).rio.reproject(grid=()) + + open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], + 'boundary': ['protected_area', 'national_park', 'forest_compartment', 'forest']} + water_tag = {'water': True, + 'natural': ['water'], + 'waterway': True} + roads_tag = {'highway': ["residential", "service", "unclassified", "tertiary", "secondary", "primary", "turning_circle", "living_street", "trunk", "motorway", "motorway_link", "trunk_link", + "primary_link", "secondary_link", "tertiary_link", "motorway_junction", "turning_loop", "road", "mini_roundabout", "passing_place", "busway"]} + building = {'building': True} + parking = {'amenity': ['parking'], + 'parking': True} + osm_gdf = OpenStreetMap().get_data(bbox) crs = get_utm_zone_epsg(bbox) make_geocube( - vector_data=osm_gdf, - measurements=["index"], - like=esa1m, + vector_data=osm_gdf, + measurements=["index"], + like=esa1m, ) - ulu = xr.open_dataset( - ee.ImageCollection("projects/wri-datalab/cities/urban_land_use/V1"), - engine='ee', - scale=5, - crs=crs, - geometry=ee.Geometry.Rectangle(*bbox) - ) - - ulu_data = ulu.ulu.compute() - - # ulu_data = ulu_data.where(ulu_data != self.NO_DATA_VALUE) - - # get in rioxarray format - ulu_data = ulu_data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) - - - - - + \ No newline at end of file diff --git a/city_metrix/layers/urban_land_use.py b/city_metrix/layers/urban_land_use.py new file mode 100644 index 0000000..9b49dcc --- /dev/null +++ b/city_metrix/layers/urban_land_use.py @@ -0,0 +1,37 @@ +from .layer import Layer, get_utm_zone_epsg + +from rioxarray.raster_array import RasterArray +import xarray as xr +import xee +import ee + + +class UrbanLandUse(Layer): + def __init__(self, band=None, **kwargs): + super().__init__(**kwargs) + self.band = band + + def get_data(self, bbox): + crs = get_utm_zone_epsg(bbox) + dataset = ee.ImageCollection("projects/wri-datalab/cities/urban_land_use/V1") + ulu = (dataset + .filterBounds(ee.Geometry.BBox(*bbox)) + .select(self.band) + .reduce(ee.Reducer.firstNonNull()) + .rename('lulc') + ) + + ds = xr.open_dataset( + ee.ImageCollection(ulu), + engine='ee', + scale=5, + crs=crs, + geometry=ee.Geometry.Rectangle(*bbox) + ) + + data = ds.lulc.compute() + + # get in rioxarray format + data = data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + + return data diff --git a/city_metrix/metrics.py b/city_metrix/metrics.py index 35b763a..3f19ad1 100644 --- a/city_metrix/metrics.py +++ b/city_metrix/metrics.py @@ -1,10 +1,8 @@ from city_metrix.layers import Albedo, EsaWorldCoverClass, EsaWorldCover, HighLandSurfaceTemperature, TreeCover, \ - OSMClass, OpenStreetMap + OpenStreetMap, NaturalAreas from geopandas import GeoDataFrame -from city_metrix.layers.natural_areas import NaturalAreas - def built_land_without_tree_cover(zones: GeoDataFrame): """ @@ -72,7 +70,9 @@ def built_land_with_high_land_surface_temperature(zones): def urban_open_space(zones): built_up_land = EsaWorldCover(land_cover_class=EsaWorldCoverClass.BUILT_UP) - open_space = OpenStreetMap(osm_class=OSMClass.OPEN_SPACE) + open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'], + 'boundary': ['protected_area', 'national_park']} + open_space = OpenStreetMap(osm_tag=open_space_tag) open_space_in_built_land = open_space.mask(built_up_land).groupby(zones).count() built_land_counts = built_up_land.groupby(zones).count() From 10fec5fa821f664536fcadd5328baab3f289cd28 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 1 Dec 2023 20:38:23 +0800 Subject: [PATCH 03/31] update smart cities lulc fix natural area --- city_metrix/layers/natural_areas.py | 8 +- city_metrix/layers/open_street_map.py | 7 +- city_metrix/layers/smart_cities_lulc.py | 124 +++++++++++++++++++++--- 3 files changed, 119 insertions(+), 20 deletions(-) diff --git a/city_metrix/layers/natural_areas.py b/city_metrix/layers/natural_areas.py index b6d784c..af1729f 100644 --- a/city_metrix/layers/natural_areas.py +++ b/city_metrix/layers/natural_areas.py @@ -10,7 +10,7 @@ def __init__(self, **kwargs): super().__init__(**kwargs) def get_data(self, bbox): - esa_world_cover = EsaWorldCover.get_data(bbox) + esa_world_cover = EsaWorldCover().get_data(bbox) reclass_map = { EsaWorldCoverClass.TREE_COVER.value: 1, EsaWorldCoverClass.SHRUBLAND.value: 1, @@ -33,9 +33,3 @@ def get_data(self, bbox): ) return reclassified_data - - - - - - diff --git a/city_metrix/layers/open_street_map.py b/city_metrix/layers/open_street_map.py index c39b14e..fa2f361 100644 --- a/city_metrix/layers/open_street_map.py +++ b/city_metrix/layers/open_street_map.py @@ -19,9 +19,12 @@ def get_data(self, bbox): if 'highway' not in self.osm_tag: # Drop lines osm_feature = osm_feature[osm_feature.geom_type != 'LineString'] + # keep only columns desired to reduce file size + osm_feature = osm_feature.reset_index().loc[:, ['osmid','geometry']] - # keep only columns desired to reduce file size - osm_feature = osm_feature.reset_index().loc[:, ['osmid','geometry']] + else: + # keep only columns desired to reduce file size + osm_feature = osm_feature.reset_index().loc[:, ['osmid','geometry', 'highway', 'lanes']] return osm_feature diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 819597d..4feeff9 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -2,6 +2,11 @@ import rioxarray import xarray as xr import ee +import numpy as np +from rasterio.enums import Resampling +from geocube.api.core import make_geocube +import pandas as pd +from shapely.geometry import CAP_STYLE, JOIN_STYLE from .layer import Layer, get_utm_zone_epsg from .. import EsaWorldCover, EsaWorldCoverClass @@ -13,9 +18,44 @@ def __init__(self, land_cover_class=None, **kwargs): super().__init__(**kwargs) self.land_cover_class = land_cover_class + bbox = ZONES.total_bounds + def get_data(self, bbox): - esa1m = EsaWorldCover.get_data(bbox).rio.reproject(grid=()) + crs = get_utm_zone_epsg(bbox) + + # ESA reclass and upsample + esa_world_cover = EsaWorldCover().get_data(bbox) + + reclass_map = { + EsaWorldCoverClass.TREE_COVER.value: 1, + EsaWorldCoverClass.SHRUBLAND.value: 1, + EsaWorldCoverClass.GRASSLAND.value: 1, + EsaWorldCoverClass.CROPLAND.value: 1, + EsaWorldCoverClass.BUILT_UP.value: 2, + EsaWorldCoverClass.BARE_OR_SPARSE_VEGETATION.value: 3, + EsaWorldCoverClass.SNOW_AND_ICE.value: 4, + EsaWorldCoverClass.PERMANENT_WATER_BODIES.value: 4, + EsaWorldCoverClass.HERBACEOUS_WET_LAND.value: 4, + EsaWorldCoverClass.MANGROVES.value: 4, + EsaWorldCoverClass.MOSS_AND_LICHEN.value: 3 + # Add other mappings as needed + } + reclassified_esa = xr.apply_ufunc( + np.vectorize(lambda x: reclass_map.get(x, x)), + esa_world_cover, + vectorize=True + ) + reclassified_esa = reclassified_esa.rio.reproject(crs) + + esa_1m = reclassified_esa.rio.reproject( + reclassified_esa.rio.crs, + shape=(int(reclassified_esa.rio.height * reclassified_esa.rio.resolution()[0]), + int(reclassified_esa.rio.width * (-reclassified_esa.rio.resolution()[1]))), + resampling=Resampling.nearest + ) + + # OSM tags open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], 'boundary': ['protected_area', 'national_park', 'forest_compartment', 'forest']} water_tag = {'water': True, @@ -23,17 +63,79 @@ def get_data(self, bbox): 'waterway': True} roads_tag = {'highway': ["residential", "service", "unclassified", "tertiary", "secondary", "primary", "turning_circle", "living_street", "trunk", "motorway", "motorway_link", "trunk_link", "primary_link", "secondary_link", "tertiary_link", "motorway_junction", "turning_loop", "road", "mini_roundabout", "passing_place", "busway"]} - building = {'building': True} - parking = {'amenity': ['parking'], - 'parking': True} + building_tag = {'building': True} + parking_tag = {'amenity': ['parking'], + 'parking': True} - osm_gdf = OpenStreetMap().get_data(bbox) - crs = get_utm_zone_epsg(bbox) + def rasterize_osm(gdf, snap_to): + raster = make_geocube( + vector_data=gdf, + measurements=["Value"], + like=esa_1m, + fill=0 + ).Value + + return raster.rio.reproject_match(snap_to) - make_geocube( - vector_data=osm_gdf, - measurements=["index"], - like=esa1m, + # Open space + open_space_osm = OpenStreetMap(osm_tag=open_space_tag).get_data(bbox).to_crs(crs).reset_index() + open_space_osm['Value'] = 10 + open_space_1m = rasterize_osm(open_space_osm, esa_1m) + + # Water + water_osm = OpenStreetMap(osm_tag=water_tag).get_data(bbox).to_crs(crs).reset_index() + water_osm['Value'] = 20 + water_1m = rasterize_osm(water_osm, esa_1m) + + # Roads + roads_osm = OpenStreetMap(osm_tag=roads_tag).get_data(bbox).to_crs(crs).reset_index() + roads_osm['lanes'] = pd.to_numeric(roads_osm['lanes'], errors='coerce') + # Get the average number of lanes per highway class + lanes = (roads_osm.drop(columns='geometry') + .groupby('highway') + # Calculate average and round up + .agg(avg_lanes=('lanes', lambda x: np.ceil(np.nanmean(x)))) + ) + # Handle NaN values in avg_lanes + lanes['avg_lanes'] = lanes['avg_lanes'].fillna(2) + + # Fill lanes with avg lane value when missing + roads_osm = roads_osm.merge(lanes, on='highway', how='left') + roads_osm['lanes'] = roads_osm['lanes'].fillna(roads_osm['avg_lanes']) + + # Add value field (30) + roads_osm['Value'] = 30 + + # Buffer roads by lanes * 10 ft (3.048 m) + # https://nacto.org/publication/urban-street-design-guide/street-design-elements/lane-width/#:~:text=wider%20lane%20widths.-,Lane%20widths%20of%2010%20feet%20are%20appropriate%20in%20urban%20areas,be%20used%20in%20each%20direction + # cap is flat to the terminus of the road + # join style is mitred so intersections are squared + roads_osm['geometry'] = roads_osm.apply(lambda row: row['geometry'].buffer( + row['lanes'] * 3.048, + cap_style=CAP_STYLE.flat, + join_style=JOIN_STYLE.mitre), + axis=1 ) - \ No newline at end of file + roads_1m = rasterize_osm(roads_osm, esa_1m) + + # TODO Building + building_osm = OpenStreetMap(osm_tag=building_tag).get_data(bbox).to_crs(crs).reset_index() + building_osm['Value'] = 41 # 41 42 + building_1m = rasterize_osm(building_osm, esa_1m) + + # Parking + parking_osm = OpenStreetMap(osm_tag=parking_tag).get_data(bbox).to_crs(crs).reset_index() + parking_osm['Value'] = 50 + parking_1m = rasterize_osm(parking_osm, esa_1m) + + # Combine rasters + LULC = xr.concat([esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m], dim='Value').max(dim='Value') + # Reclass ESA water (4) to 20 + reclass_from = [1, 2, 3, 4, 10, 20, 30, 41, 42, 50] + reclass_to = [1, 2, 3, 20, 10, 20, 30, 41, 42, 50] + reclass_dict = dict(zip(reclass_from, reclass_to)) + LULC = LULC.copy(data=np.vectorize(reclass_dict.get) + (LULC.values, LULC.values)) + + # TODO write tif From af62df45304dfe0d4d0c0858918461df44fe4b2a Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 1 Dec 2023 22:09:38 +0800 Subject: [PATCH 04/31] use ulu in smart cities lulc --- city_metrix/layers/smart_cities_lulc.py | 44 +++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 4feeff9..cbd3e67 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -11,6 +11,7 @@ from .layer import Layer, get_utm_zone_epsg from .. import EsaWorldCover, EsaWorldCoverClass from .. import OpenStreetMap +from .. import UrbanLandUse class SmartCitiesLULC(Layer): @@ -18,8 +19,6 @@ def __init__(self, land_cover_class=None, **kwargs): super().__init__(**kwargs) self.land_cover_class = land_cover_class - bbox = ZONES.total_bounds - def get_data(self, bbox): crs = get_utm_zone_epsg(bbox) @@ -55,6 +54,7 @@ def get_data(self, bbox): resampling=Resampling.nearest ) + # OSM tags open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], 'boundary': ['protected_area', 'national_park', 'forest_compartment', 'forest']} @@ -77,16 +77,19 @@ def rasterize_osm(gdf, snap_to): return raster.rio.reproject_match(snap_to) + # Open space open_space_osm = OpenStreetMap(osm_tag=open_space_tag).get_data(bbox).to_crs(crs).reset_index() open_space_osm['Value'] = 10 open_space_1m = rasterize_osm(open_space_osm, esa_1m) + # Water water_osm = OpenStreetMap(osm_tag=water_tag).get_data(bbox).to_crs(crs).reset_index() water_osm['Value'] = 20 water_1m = rasterize_osm(water_osm, esa_1m) + # Roads roads_osm = OpenStreetMap(osm_tag=roads_tag).get_data(bbox).to_crs(crs).reset_index() roads_osm['lanes'] = pd.to_numeric(roads_osm['lanes'], errors='coerce') @@ -119,16 +122,53 @@ def rasterize_osm(gdf, snap_to): roads_1m = rasterize_osm(roads_osm, esa_1m) + # TODO Building + # Read ULU land cover, filter to city, select lulc band + ulu_lulc = UrbanLandUse(band='lulc').get_data(bbox) + ulu_roads = UrbanLandUse(band='road').get_data(bbox) + # Create road mask of 50 + # Typical threshold for creating road mask + road_mask = ulu_roads >= 50 + ulu_lulc = ulu_lulc.where(~road_mask, 6) + # 1-Non-residential: 0 (open space), 1 (non-res) + # 2-Residential: 2 (Atomistic), 3 (Informal), 4 (Formal), 5 (Housing project) + # 3-Roads: 6 (Roads) + mapping = {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 2, 6: 3} + for from_val, to_val in mapping.items(): + ulu_lulc = ulu_lulc.where(ulu_lulc != from_val, to_val) + + # ANBH is the average height of the built surfaces, USE THIS + # AGBH is the amount of built cubic meters per surface unit in the cell + # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php + # TODO + # anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") + # .filterBounds(ee.Geometry.BBox(*bbox)) + # .select('b1') + # .mosaic() + # ) + # ds = xr.open_dataset( + # ee.ImageCollection(anbh), + # engine='ee', + # scale=100, + # crs=crs, + # geometry=ee.Geometry.Rectangle(*bbox) + # ) + # data = ds.b1.compute() + # # get in rioxarray format + # data = data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + building_osm = OpenStreetMap(osm_tag=building_tag).get_data(bbox).to_crs(crs).reset_index() building_osm['Value'] = 41 # 41 42 building_1m = rasterize_osm(building_osm, esa_1m) + # Parking parking_osm = OpenStreetMap(osm_tag=parking_tag).get_data(bbox).to_crs(crs).reset_index() parking_osm['Value'] = 50 parking_1m = rasterize_osm(parking_osm, esa_1m) + # Combine rasters LULC = xr.concat([esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m], dim='Value').max(dim='Value') # Reclass ESA water (4) to 20 From ad038052608f198b4f67a6a2f8f321243ad86a30 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Thu, 7 Dec 2023 22:11:51 +0800 Subject: [PATCH 05/31] update import --- city_metrix/layers/natural_areas.py | 2 +- city_metrix/layers/smart_cities_lulc.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/city_metrix/layers/natural_areas.py b/city_metrix/layers/natural_areas.py index af1729f..4eb52b3 100644 --- a/city_metrix/layers/natural_areas.py +++ b/city_metrix/layers/natural_areas.py @@ -1,7 +1,7 @@ import xarray as xr from .layer import Layer -from .. import EsaWorldCover, EsaWorldCoverClass +from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass import numpy as np diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index cbd3e67..0d15a6f 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -9,9 +9,9 @@ from shapely.geometry import CAP_STYLE, JOIN_STYLE from .layer import Layer, get_utm_zone_epsg -from .. import EsaWorldCover, EsaWorldCoverClass -from .. import OpenStreetMap -from .. import UrbanLandUse +from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass +from .open_street_map import OpenStreetMap +from .urban_land_use import UrbanLandUse class SmartCitiesLULC(Layer): From e29eafbef28ba9ea4472cbcdc971125eec895466 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 8 Dec 2023 18:27:12 +0800 Subject: [PATCH 06/31] fix layer and update smart_city_lulc --- city_metrix/layers/esa_world_cover.py | 6 -- city_metrix/layers/layer.py | 2 +- city_metrix/layers/natural_areas.py | 2 + city_metrix/layers/smart_cities_lulc.py | 98 +++++++++++++++++++------ 4 files changed, 79 insertions(+), 29 deletions(-) diff --git a/city_metrix/layers/esa_world_cover.py b/city_metrix/layers/esa_world_cover.py index c73cf57..89231f8 100644 --- a/city_metrix/layers/esa_world_cover.py +++ b/city_metrix/layers/esa_world_cover.py @@ -49,9 +49,3 @@ def get_data(self, bbox): data = data.where(data == self.land_cover_class.value) return data - - - - - - diff --git a/city_metrix/layers/layer.py b/city_metrix/layers/layer.py index a525cee..1eab76b 100644 --- a/city_metrix/layers/layer.py +++ b/city_metrix/layers/layer.py @@ -75,7 +75,7 @@ def _zonal_stats(self, stats_func): aggregate_data = aggregate_data.where(~np.isnan(mask)) zones = self._rasterize(self.zones, align_to) - stats = zonal_stats(zones=zones, values=aggregate_data, stats_funcs=[stats_func]) + stats = zonal_stats(zones, aggregate_data, stats_funcs=[stats_func]) return stats[stats_func] diff --git a/city_metrix/layers/natural_areas.py b/city_metrix/layers/natural_areas.py index 4eb52b3..86e9288 100644 --- a/city_metrix/layers/natural_areas.py +++ b/city_metrix/layers/natural_areas.py @@ -32,4 +32,6 @@ def get_data(self, bbox): vectorize=True ) + reclassified_data = reclassified_data.rio.write_crs(esa_world_cover.rio.crs, inplace=True) + return reclassified_data diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 0d15a6f..f0f38fe 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -45,12 +45,11 @@ def get_data(self, bbox): vectorize=True ) - reclassified_esa = reclassified_esa.rio.reproject(crs) + reclassified_esa = reclassified_esa.rio.write_crs(esa_world_cover.rio.crs, inplace=True) esa_1m = reclassified_esa.rio.reproject( - reclassified_esa.rio.crs, - shape=(int(reclassified_esa.rio.height * reclassified_esa.rio.resolution()[0]), - int(reclassified_esa.rio.width * (-reclassified_esa.rio.resolution()[1]))), + dst_crs=crs, + resolution=1, resampling=Resampling.nearest ) @@ -138,37 +137,92 @@ def rasterize_osm(gdf, snap_to): for from_val, to_val in mapping.items(): ulu_lulc = ulu_lulc.where(ulu_lulc != from_val, to_val) + # 1-Non-residential as default + ulu_lulc_1m = ulu_lulc.rio.reproject( + dst_crs=crs, + shape=esa_1m.shape, + resampling=Resampling.nearest, + nodata=1 + ) + + # np.unique(ulu_lulc_1m.values) + # ANBH is the average height of the built surfaces, USE THIS # AGBH is the amount of built cubic meters per surface unit in the cell # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php - # TODO - # anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") - # .filterBounds(ee.Geometry.BBox(*bbox)) - # .select('b1') - # .mosaic() - # ) - # ds = xr.open_dataset( - # ee.ImageCollection(anbh), - # engine='ee', - # scale=100, - # crs=crs, - # geometry=ee.Geometry.Rectangle(*bbox) - # ) - # data = ds.b1.compute() + anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") + .filterBounds(ee.Geometry.BBox(*bbox)) + .select('b1') + .mosaic() + ) + ds = xr.open_dataset( + ee.ImageCollection(anbh), + engine='ee', + scale=100, + crs=crs, + geometry=ee.Geometry.Rectangle(*bbox) + ) + anbh_data = ds.b1.compute() # # get in rioxarray format - # data = data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + anbh_data = anbh_data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + + anbh_1m = anbh_data.rio.reproject( + dst_crs=crs, + shape=esa_1m.shape, + resampling=Resampling.nearest, + nodata=0 + ) building_osm = OpenStreetMap(osm_tag=building_tag).get_data(bbox).to_crs(crs).reset_index() - building_osm['Value'] = 41 # 41 42 - building_1m = rasterize_osm(building_osm, esa_1m) + building_osm['Value'] = building_osm['osmid'] # 41 42 + building_osm_1m = rasterize_osm(building_osm, esa_1m) + + # Extract values to buildings as coverage fractions + # Extract average of pixel values to buildings + # Reproject to local state plane and calculate area + def calc_majority_ULU_mean_ANBH_area(row): + mask = building_osm_1m == row['osmid'] + masked_ulu = ulu_lulc_1m.values[mask] + + # Extract values to buildings as coverage fractions + # when there is no majority class, use 1-Non-residential as default + if masked_ulu.size == 0: + majority_ULU = 1 + else: + unique, counts = np.unique(masked_ulu, return_counts=True) + sorted_indices = np.argsort(-counts) # Sort by descending order + + # Apply your specific logic + if unique[sorted_indices[0]] != 3: + majority_ULU = unique[sorted_indices[0]] + elif len(sorted_indices) > 1: + majority_ULU = unique[sorted_indices[1]] + else: + majority_ULU = 1 # Default to 1 non-residential + + # Extract average of pixel values to buildings + masked_anbh = anbh_1m.values[mask] + if masked_anbh.size == 0: + mean_ANBH = 0 + else: + mean_ANBH = np.mean(masked_anbh) + + # Reproject to local state plane and calculate area + Area_m = row.geometry.area + + return pd.Series([majority_ULU, mean_ANBH, Area_m]) + + building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(calc_majority_ULU_mean_ANBH_area, axis=1) + # TODO + # roof slope model # Parking parking_osm = OpenStreetMap(osm_tag=parking_tag).get_data(bbox).to_crs(crs).reset_index() parking_osm['Value'] = 50 parking_1m = rasterize_osm(parking_osm, esa_1m) - + # TODO # Combine rasters LULC = xr.concat([esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m], dim='Value').max(dim='Value') # Reclass ESA water (4) to 20 From 38b4cdd86d9591af6e4a7b1e08d9bad21cb3a567 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Mon, 11 Dec 2023 21:18:55 +0800 Subject: [PATCH 07/31] test roof slope decision tree --- city_metrix/layers/smart_cities_lulc.py | 35 ++++++++++++++++++++----- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index f0f38fe..b3cbc6e 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -7,6 +7,10 @@ from geocube.api.core import make_geocube import pandas as pd from shapely.geometry import CAP_STYLE, JOIN_STYLE +import geopandas as gpd +from sklearn.tree import DecisionTreeClassifier +from sklearn.metrics import accuracy_score +from sklearn.preprocessing import LabelEncoder from .layer import Layer, get_utm_zone_epsg from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass @@ -20,6 +24,11 @@ def __init__(self, land_cover_class=None, **kwargs): self.land_cover_class = land_cover_class def get_data(self, bbox): + # buildings sample classed LA for testing + buildings_sample = gpd.read_file('buildings-sample-classed_LA.geojson') + buildings_sample.to_crs(epsg=4326,inplace=True) + bbox = buildings_sample.reset_index().total_bounds + crs = get_utm_zone_epsg(bbox) # ESA reclass and upsample @@ -145,8 +154,6 @@ def rasterize_osm(gdf, snap_to): nodata=1 ) - # np.unique(ulu_lulc_1m.values) - # ANBH is the average height of the built surfaces, USE THIS # AGBH is the amount of built cubic meters per surface unit in the cell # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php @@ -163,7 +170,7 @@ def rasterize_osm(gdf, snap_to): geometry=ee.Geometry.Rectangle(*bbox) ) anbh_data = ds.b1.compute() - # # get in rioxarray format + # get in rioxarray format anbh_data = anbh_data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) anbh_1m = anbh_data.rio.reproject( @@ -180,8 +187,9 @@ def rasterize_osm(gdf, snap_to): # Extract values to buildings as coverage fractions # Extract average of pixel values to buildings # Reproject to local state plane and calculate area - def calc_majority_ULU_mean_ANBH_area(row): - mask = building_osm_1m == row['osmid'] + def calc_majority_ULU_mean_ANBH_area(row, building_raster, id_col): + # mask = building_osm_1m == row['osmid'] + mask = building_raster == row[id_col] masked_ulu = ulu_lulc_1m.values[mask] # Extract values to buildings as coverage fractions @@ -212,10 +220,25 @@ def calc_majority_ULU_mean_ANBH_area(row): return pd.Series([majority_ULU, mean_ANBH, Area_m]) - building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(calc_majority_ULU_mean_ANBH_area, axis=1) + # building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row:calc_majority_ULU_mean_ANBH_area(row, building_osm_1m, 'osmid'), axis=1) # TODO # roof slope model + buildings_sample['Value'] = buildings_sample['ID'] + buildings_sample_1m = rasterize_osm(buildings_sample, esa_1m) + buildings_sample[['ULU', 'ANBH', 'Area_m']] = buildings_sample.to_crs(crs).apply(lambda row:calc_majority_ULU_mean_ANBH_area(row, buildings_sample_1m, 'ID'), axis=1) + clf = DecisionTreeClassifier() + # encode labels + label_encoder = LabelEncoder() + buildings_sample['Slope_encoded'] = label_encoder.fit_transform(buildings_sample['Slope']) + + clf.fit(buildings_sample[['ULU', 'ANBH', 'Area_m']], buildings_sample['Slope_encoded']) + + # Predict and evaluate + y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) + accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) + print(f"Accuracy: {accuracy}") + # Parking parking_osm = OpenStreetMap(osm_tag=parking_tag).get_data(bbox).to_crs(crs).reset_index() From fb509b7acf0dfbcee18eada0148a0ee2180296ef Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Wed, 20 Dec 2023 18:20:22 +0800 Subject: [PATCH 08/31] create building classification class --- city_metrix/layers/building_classification.py | 181 ++++++++++++++++++ city_metrix/layers/smart_cities_lulc.py | 76 ++------ 2 files changed, 198 insertions(+), 59 deletions(-) create mode 100644 city_metrix/layers/building_classification.py diff --git a/city_metrix/layers/building_classification.py b/city_metrix/layers/building_classification.py new file mode 100644 index 0000000..4fde2e0 --- /dev/null +++ b/city_metrix/layers/building_classification.py @@ -0,0 +1,181 @@ +import xarray as xr +import ee +import numpy as np +from rasterio.enums import Resampling +from geocube.api.core import make_geocube +import pandas as pd +import geopandas as gpd +from sklearn.tree import DecisionTreeClassifier, plot_tree +from sklearn.metrics import accuracy_score +import matplotlib.pyplot as plt + +from .layer import Layer, get_utm_zone_epsg +from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass +from .urban_land_use import UrbanLandUse + + +class BuildingClassification(Layer): + def __init__(self, geo_file=None, **kwargs): + super().__init__(**kwargs) + self.geo_file = geo_file + + def get_data(self): + buildings_sample = gpd.read_file(self.geo_file) + buildings_sample.to_crs(epsg=4326,inplace=True) + bbox = buildings_sample.reset_index().total_bounds + + crs = get_utm_zone_epsg(bbox) + + # ESA reclass and upsample + esa_world_cover = EsaWorldCover().get_data(bbox) + + reclass_map = { + EsaWorldCoverClass.TREE_COVER.value: 1, + EsaWorldCoverClass.SHRUBLAND.value: 1, + EsaWorldCoverClass.GRASSLAND.value: 1, + EsaWorldCoverClass.CROPLAND.value: 1, + EsaWorldCoverClass.BUILT_UP.value: 2, + EsaWorldCoverClass.BARE_OR_SPARSE_VEGETATION.value: 3, + EsaWorldCoverClass.SNOW_AND_ICE.value: 4, + EsaWorldCoverClass.PERMANENT_WATER_BODIES.value: 4, + EsaWorldCoverClass.HERBACEOUS_WET_LAND.value: 4, + EsaWorldCoverClass.MANGROVES.value: 4, + EsaWorldCoverClass.MOSS_AND_LICHEN.value: 3 + # Add other mappings as needed + } + reclassified_esa = xr.apply_ufunc( + np.vectorize(lambda x: reclass_map.get(x, x)), + esa_world_cover, + vectorize=True + ) + + reclassified_esa = reclassified_esa.rio.write_crs(esa_world_cover.rio.crs, inplace=True) + + esa_1m = reclassified_esa.rio.reproject( + dst_crs=crs, + resolution=1, + resampling=Resampling.nearest + ) + + # Read ULU land cover, filter to city, select lulc band + ulu_lulc = UrbanLandUse(band='lulc').get_data(bbox) + ulu_roads = UrbanLandUse(band='road').get_data(bbox) + # Create road mask of 50 + # Typical threshold for creating road mask + road_mask = ulu_roads >= 50 + ulu_lulc = ulu_lulc.where(~road_mask, 6) + # 1-Non-residential: 0 (open space), 1 (non-res) + # 2-Residential: 2 (Atomistic), 3 (Informal), 4 (Formal), 5 (Housing project) + # 3-Roads: 6 (Roads) + mapping = {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 2, 6: 3} + for from_val, to_val in mapping.items(): + ulu_lulc = ulu_lulc.where(ulu_lulc != from_val, to_val) + + # 1-Non-residential as default + ulu_lulc_1m = ulu_lulc.rio.reproject( + dst_crs=crs, + shape=esa_1m.shape, + resampling=Resampling.nearest, + nodata=1 + ) + + # ANBH is the average height of the built surfaces, USE THIS + # AGBH is the amount of built cubic meters per surface unit in the cell + # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php + anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") + .filterBounds(ee.Geometry.BBox(*bbox)) + .select('b1') + .mosaic() + ) + ds = xr.open_dataset( + ee.ImageCollection(anbh), + engine='ee', + scale=100, + crs=crs, + geometry=ee.Geometry.Rectangle(*bbox) + ) + anbh_data = ds.b1.compute() + # get in rioxarray format + anbh_data = anbh_data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + + anbh_1m = anbh_data.rio.reproject( + dst_crs=crs, + shape=esa_1m.shape, + resampling=Resampling.nearest, + nodata=0 + ) + + return buildings_sample, esa_1m, ulu_lulc_1m, anbh_1m, crs + + + # Extract values to buildings as coverage fractions + # Extract average of pixel values to buildings + # Reproject to local state plane and calculate area + def calc_majority_ULU_mean_ANBH_area(self, row, building_sample_1m, id_col, ulu_lulc_1m, anbh_1m): + mask = building_sample_1m == row[id_col] + masked_ulu = ulu_lulc_1m.values[mask] + + # Extract values to buildings as coverage fractions + # when there is no majority class, use 1-Non-residential as default + if masked_ulu.size == 0: + majority_ULU = 1 + else: + unique, counts = np.unique(masked_ulu, return_counts=True) + sorted_indices = np.argsort(-counts) # Sort by descending order + + # Apply your specific logic + if unique[sorted_indices[0]] != 3: + majority_ULU = unique[sorted_indices[0]] + elif len(sorted_indices) > 1: + majority_ULU = unique[sorted_indices[1]] + else: + majority_ULU = 1 # Default to 1 non-residential + + # Extract average of pixel values to buildings + masked_anbh = anbh_1m.values[mask] + if masked_anbh.size == 0: + mean_ANBH = 0 + else: + mean_ANBH = np.mean(masked_anbh) + + # Reproject to local state plane and calculate area + Area_m = row.geometry.area + + return pd.Series([majority_ULU, mean_ANBH, Area_m]) + + # TODO + # roof slope model + def rasterize_building(self, gdf, snap_to): + raster = make_geocube( + vector_data=gdf, + measurements=["Value"], + like=snap_to, + fill=0 + ).Value + + return raster.rio.reproject_match(snap_to) + + def building_class_tree(self): + buildings_sample, esa_1m, ulu_lulc_1m, anbh_1m, crs = self.get_data() + buildings_sample['Value'] = buildings_sample['ID'] + buildings_sample_1m = self.rasterize_building(buildings_sample, esa_1m) + buildings_sample[['ULU', 'ANBH', 'Area_m']] = buildings_sample.to_crs(crs).apply(lambda row:self.calc_majority_ULU_mean_ANBH_area(row, buildings_sample_1m, 'ID', ulu_lulc_1m, anbh_1m), axis=1) + + clf = DecisionTreeClassifier(max_depth=4) + # encode labels + buildings_sample['Slope_encoded'] = buildings_sample['Slope'].map({'low': 41, 'high': 42}) + # drop records with NA in Slope + buildings_sample = buildings_sample.dropna(subset=['Slope']) + + clf.fit(buildings_sample[['ULU', 'ANBH', 'Area_m']], buildings_sample['Slope_encoded']) + + # plt.figure(figsize=(20, 10)) + # plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) + # plt.show() + + # Predict and evaluate + # y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) + # accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) + # print(f"Accuracy: {accuracy}") + + return clf diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index b3cbc6e..55885de 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -1,5 +1,3 @@ -from pystac_client import Client -import rioxarray import xarray as xr import ee import numpy as np @@ -8,14 +6,15 @@ import pandas as pd from shapely.geometry import CAP_STYLE, JOIN_STYLE import geopandas as gpd -from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score -from sklearn.preprocessing import LabelEncoder +from sklearn.tree import plot_tree +import matplotlib.pyplot as plt from .layer import Layer, get_utm_zone_epsg from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass from .open_street_map import OpenStreetMap from .urban_land_use import UrbanLandUse +from .building_classification import BuildingClassification class SmartCitiesLULC(Layer): @@ -24,11 +23,6 @@ def __init__(self, land_cover_class=None, **kwargs): self.land_cover_class = land_cover_class def get_data(self, bbox): - # buildings sample classed LA for testing - buildings_sample = gpd.read_file('buildings-sample-classed_LA.geojson') - buildings_sample.to_crs(epsg=4326,inplace=True) - bbox = buildings_sample.reset_index().total_bounds - crs = get_utm_zone_epsg(bbox) # ESA reclass and upsample @@ -181,63 +175,27 @@ def rasterize_osm(gdf, snap_to): ) building_osm = OpenStreetMap(osm_tag=building_tag).get_data(bbox).to_crs(crs).reset_index() - building_osm['Value'] = building_osm['osmid'] # 41 42 + building_osm['Value'] = building_osm['osmid'] building_osm_1m = rasterize_osm(building_osm, esa_1m) - - # Extract values to buildings as coverage fractions - # Extract average of pixel values to buildings - # Reproject to local state plane and calculate area - def calc_majority_ULU_mean_ANBH_area(row, building_raster, id_col): - # mask = building_osm_1m == row['osmid'] - mask = building_raster == row[id_col] - masked_ulu = ulu_lulc_1m.values[mask] - - # Extract values to buildings as coverage fractions - # when there is no majority class, use 1-Non-residential as default - if masked_ulu.size == 0: - majority_ULU = 1 - else: - unique, counts = np.unique(masked_ulu, return_counts=True) - sorted_indices = np.argsort(-counts) # Sort by descending order - - # Apply your specific logic - if unique[sorted_indices[0]] != 3: - majority_ULU = unique[sorted_indices[0]] - elif len(sorted_indices) > 1: - majority_ULU = unique[sorted_indices[1]] - else: - majority_ULU = 1 # Default to 1 non-residential - - # Extract average of pixel values to buildings - masked_anbh = anbh_1m.values[mask] - if masked_anbh.size == 0: - mean_ANBH = 0 - else: - mean_ANBH = np.mean(masked_anbh) - - # Reproject to local state plane and calculate area - Area_m = row.geometry.area - - return pd.Series([majority_ULU, mean_ANBH, Area_m]) - # building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row:calc_majority_ULU_mean_ANBH_area(row, building_osm_1m, 'osmid'), axis=1) + building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassification().calc_majority_ULU_mean_ANBH_area(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) # TODO # roof slope model - buildings_sample['Value'] = buildings_sample['ID'] - buildings_sample_1m = rasterize_osm(buildings_sample, esa_1m) - buildings_sample[['ULU', 'ANBH', 'Area_m']] = buildings_sample.to_crs(crs).apply(lambda row:calc_majority_ULU_mean_ANBH_area(row, buildings_sample_1m, 'ID'), axis=1) - clf = DecisionTreeClassifier() - # encode labels - label_encoder = LabelEncoder() - buildings_sample['Slope_encoded'] = label_encoder.fit_transform(buildings_sample['Slope']) + # buildings sample classed LA for testing + build_class = BuildingClassification(geo_file = 'buildings-sample-classed_LA.geojson') + clf = build_class.building_class_tree() - clf.fit(buildings_sample[['ULU', 'ANBH', 'Area_m']], buildings_sample['Slope_encoded']) + plt.figure(figsize=(20, 10)) + plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) + plt.show() # Predict and evaluate - y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) - accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) - print(f"Accuracy: {accuracy}") + # y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) + # accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) + # print(f"Accuracy: {accuracy}") + + building_osm['Slope'] = clf.predict(building_osm[['ULU', 'ANBH', 'Area_m']]) # Parking @@ -254,5 +212,5 @@ def calc_majority_ULU_mean_ANBH_area(row, building_raster, id_col): reclass_dict = dict(zip(reclass_from, reclass_to)) LULC = LULC.copy(data=np.vectorize(reclass_dict.get) (LULC.values, LULC.values)) - + # TODO write tif From b229a75b0bcadf4206a3eed4a4cf8b864649ec52 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Thu, 21 Dec 2023 13:14:22 +0800 Subject: [PATCH 09/31] update osm layer to keep tags and disable warning messages --- city_metrix/__init__.py | 5 ++++- city_metrix/layers/open_street_map.py | 26 +++++++++++++------------ city_metrix/layers/smart_cities_lulc.py | 2 +- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/city_metrix/__init__.py b/city_metrix/__init__.py index 296cdc1..9835e05 100644 --- a/city_metrix/__init__.py +++ b/city_metrix/__init__.py @@ -18,4 +18,7 @@ # set for AWS requests os.environ["AWS_REQUEST_PAYER"] = "requester" -warnings.filterwarnings('ignore', module='xee') \ No newline at end of file +# disable warning messages +warnings.filterwarnings('ignore', module='xee') +warnings.filterwarnings('ignore', module='dask') +warnings.filterwarnings('ignore', module='xarray') diff --git a/city_metrix/layers/open_street_map.py b/city_metrix/layers/open_street_map.py index fa2f361..15fc40a 100644 --- a/city_metrix/layers/open_street_map.py +++ b/city_metrix/layers/open_street_map.py @@ -12,22 +12,24 @@ def get_data(self, bbox): north, south, east, west = bbox[3], bbox[1], bbox[0], bbox[2] osm_feature = ox.features_from_bbox(north, south, east, west, self.osm_tag) - # Drop points - osm_feature = osm_feature[osm_feature.geom_type != 'Point'] - - # Keep LineString for Roads Class + # Filter out Point and LineString (if 'highway' not in tags) if 'highway' not in self.osm_tag: - # Drop lines - osm_feature = osm_feature[osm_feature.geom_type != 'LineString'] - # keep only columns desired to reduce file size - osm_feature = osm_feature.reset_index().loc[:, ['osmid','geometry']] - + osm_feature = osm_feature[osm_feature.geom_type.isin(['Polygon', 'MultiPolygon'])] else: - # keep only columns desired to reduce file size - osm_feature = osm_feature.reset_index().loc[:, ['osmid','geometry', 'highway', 'lanes']] + osm_feature = osm_feature[osm_feature.geom_type != 'Point'] + + # keep only columns desired to reduce file size + keep_col = ['osmid', 'geometry'] + for key in self.osm_tag: + if key in osm_feature.columns: + keep_col.append(key) + # keep 'lanes' for 'highway' + if 'highway' in keep_col and 'lanes' in osm_feature.columns: + keep_col.append('lanes') + osm_feature = osm_feature.reset_index()[keep_col] return osm_feature - + def write(self, output_path): self.data['bbox'] = str(self.data.total_bounds) self.data['osm_tag'] = str(self.osm_tag) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 55885de..2b3bb30 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -73,7 +73,7 @@ def rasterize_osm(gdf, snap_to): raster = make_geocube( vector_data=gdf, measurements=["Value"], - like=esa_1m, + like=snap_to, fill=0 ).Value From 004c515547cd828773ba4abadbdaaea9fb2b5fa3 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Thu, 21 Dec 2023 18:01:22 +0800 Subject: [PATCH 10/31] minor update --- .../{building_classification.py => building_classifier.py} | 2 +- city_metrix/layers/smart_cities_lulc.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename city_metrix/layers/{building_classification.py => building_classifier.py} (99%) diff --git a/city_metrix/layers/building_classification.py b/city_metrix/layers/building_classifier.py similarity index 99% rename from city_metrix/layers/building_classification.py rename to city_metrix/layers/building_classifier.py index 4fde2e0..e73b707 100644 --- a/city_metrix/layers/building_classification.py +++ b/city_metrix/layers/building_classifier.py @@ -14,7 +14,7 @@ from .urban_land_use import UrbanLandUse -class BuildingClassification(Layer): +class BuildingClassifier(Layer): def __init__(self, geo_file=None, **kwargs): super().__init__(**kwargs) self.geo_file = geo_file diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 2b3bb30..674ab92 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -14,7 +14,7 @@ from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass from .open_street_map import OpenStreetMap from .urban_land_use import UrbanLandUse -from .building_classification import BuildingClassification +from .building_classifier import BuildingClassifier class SmartCitiesLULC(Layer): @@ -183,7 +183,7 @@ def rasterize_osm(gdf, snap_to): # TODO # roof slope model # buildings sample classed LA for testing - build_class = BuildingClassification(geo_file = 'buildings-sample-classed_LA.geojson') + build_class = BuildingClassifier(geo_file = 'buildings-sample-classed_LA.geojson') clf = build_class.building_class_tree() plt.figure(figsize=(20, 10)) From 194f3690207e84de9f38cfd60f540620370bac49 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Tue, 2 Jan 2024 21:12:46 +0800 Subject: [PATCH 11/31] fix minor update --- city_metrix/layers/smart_cities_lulc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 674ab92..58cb92e 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -178,7 +178,7 @@ def rasterize_osm(gdf, snap_to): building_osm['Value'] = building_osm['osmid'] building_osm_1m = rasterize_osm(building_osm, esa_1m) - building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassification().calc_majority_ULU_mean_ANBH_area(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) + building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassifier().calc_majority_ULU_mean_ANBH_area(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) # TODO # roof slope model From 6744b6aac31d426f6407ad3da372504aa2d33341 Mon Sep 17 00:00:00 2001 From: Saif Date: Thu, 4 Jan 2024 13:34:08 +0100 Subject: [PATCH 12/31] notebook - test - urban land use layer --- notebooks/tutorial/test.ipynb | 1104 +++++++++++++++++++++++++++++++++ 1 file changed, 1104 insertions(+) create mode 100644 notebooks/tutorial/test.ipynb diff --git a/notebooks/tutorial/test.ipynb b/notebooks/tutorial/test.ipynb new file mode 100644 index 0000000..a343a8d --- /dev/null +++ b/notebooks/tutorial/test.ipynb @@ -0,0 +1,1104 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "03770867-4126-4b7b-b253-83c0b20bab0b", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import geopandas as gpd\n", + "from rasterio.plot import show\n", + "import rasterio" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2092a894-d280-4bcb-b720-9adc4faf0606", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'C:\\\\Users\\\\Saif.Shabou\\\\OneDrive - World Resources Institute\\\\Documents\\\\cities-indicators-framework\\\\citymetrix\\\\cities-cif'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# # update the wd path to be able to laod the module\n", + "os.chdir('../..')\n", + "os.getcwd()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d4f486ab-1c1b-4c23-8d23-89f5c4638fd7", + "metadata": {}, + "outputs": [], + "source": [ + "os.environ['GCS_BUCKET']='gee-exports'\n", + "os.environ['GOOGLE_APPLICATION_USER']='developers@citiesindicators.iam.gserviceaccount.com'\n", + "os.environ['GOOGLE_APPLICATION_CREDENTIALS']='C:\\\\Users\\Saif.Shabou\\OneDrive - World Resources Institute\\Documents\\cities-indicators-framework\\citymetrix\\credentials-citiesindicators.json'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e233e58e-89e5-4edc-b01b-d1526d2627f9", + "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", + "
geo_idgeo_levelgeo_namegeo_parent_namecreation_dategeometry
0BRA-Salvador_ADM4-union_1ADM4-unionBRA-SalvadorBRA-Salvador2022-08-03MULTIPOLYGON (((-38.50135 -13.01134, -38.50140...
\n", + "
" + ], + "text/plain": [ + " geo_id geo_level geo_name geo_parent_name \\\n", + "0 BRA-Salvador_ADM4-union_1 ADM4-union BRA-Salvador BRA-Salvador \n", + "\n", + " creation_date geometry \n", + "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load boundary\n", + "boundary_path = 'https://cities-indicators.s3.eu-west-3.amazonaws.com/data/boundaries/boundary-BRA-Salvador-ADM4union.geojson'\n", + "city_gdf = gpd.read_file(boundary_path, driver='GeoJSON')\n", + "city_gdf.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72fc7c8a-a2f5-499a-91ab-db075e6423f6", + "metadata": {}, + "outputs": [], + "source": [ + "from city_metrix.layers.urban_land_use import UrbanLandUse" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "e4a64ccb-e363-45b8-80f0-4bfe992e0c34", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "max() arg is an empty sequence", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32m:1\u001b[0m\n", + "File \u001b[1;32m~\\OneDrive - World Resources Institute\\Documents\\cities-indicators-framework\\citymetrix\\cities-cif\\city_metrix\\layers\\urban_land_use.py:24\u001b[0m, in \u001b[0;36mUrbanLandUse.get_data\u001b[1;34m(self, bbox)\u001b[0m\n\u001b[0;32m 16\u001b[0m dataset \u001b[38;5;241m=\u001b[39m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprojects/wri-datalab/cities/urban_land_use/V1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 17\u001b[0m ulu \u001b[38;5;241m=\u001b[39m (dataset\n\u001b[0;32m 18\u001b[0m \u001b[38;5;241m.\u001b[39mfilterBounds(ee\u001b[38;5;241m.\u001b[39mGeometry\u001b[38;5;241m.\u001b[39mBBox(\u001b[38;5;241m*\u001b[39mbbox))\n\u001b[0;32m 19\u001b[0m \u001b[38;5;241m.\u001b[39mselect(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mband)\n\u001b[0;32m 20\u001b[0m \u001b[38;5;241m.\u001b[39mreduce(ee\u001b[38;5;241m.\u001b[39mReducer\u001b[38;5;241m.\u001b[39mfirstNonNull())\n\u001b[0;32m 21\u001b[0m \u001b[38;5;241m.\u001b[39mrename(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlulc\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 22\u001b[0m )\n\u001b[1;32m---> 24\u001b[0m ds \u001b[38;5;241m=\u001b[39m \u001b[43mxr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_dataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mImageCollection\u001b[49m\u001b[43m(\u001b[49m\u001b[43mulu\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 26\u001b[0m \u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mee\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 29\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mGeometry\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mRectangle\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mbbox\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 30\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 32\u001b[0m data \u001b[38;5;241m=\u001b[39m ds\u001b[38;5;241m.\u001b[39mlulc\u001b[38;5;241m.\u001b[39mcompute()\n\u001b[0;32m 34\u001b[0m \u001b[38;5;66;03m# get in rioxarray format\u001b[39;00m\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xarray\\backends\\api.py:566\u001b[0m, in \u001b[0;36mopen_dataset\u001b[1;34m(filename_or_obj, engine, chunks, cache, decode_cf, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, drop_variables, inline_array, chunked_array_type, from_array_kwargs, backend_kwargs, **kwargs)\u001b[0m\n\u001b[0;32m 554\u001b[0m decoders \u001b[38;5;241m=\u001b[39m _resolve_decoders_kwargs(\n\u001b[0;32m 555\u001b[0m decode_cf,\n\u001b[0;32m 556\u001b[0m open_backend_dataset_parameters\u001b[38;5;241m=\u001b[39mbackend\u001b[38;5;241m.\u001b[39mopen_dataset_parameters,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 562\u001b[0m decode_coords\u001b[38;5;241m=\u001b[39mdecode_coords,\n\u001b[0;32m 563\u001b[0m )\n\u001b[0;32m 565\u001b[0m overwrite_encoded_chunks \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moverwrite_encoded_chunks\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 566\u001b[0m backend_ds \u001b[38;5;241m=\u001b[39m backend\u001b[38;5;241m.\u001b[39mopen_dataset(\n\u001b[0;32m 567\u001b[0m filename_or_obj,\n\u001b[0;32m 568\u001b[0m drop_variables\u001b[38;5;241m=\u001b[39mdrop_variables,\n\u001b[0;32m 569\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mdecoders,\n\u001b[0;32m 570\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 571\u001b[0m )\n\u001b[0;32m 572\u001b[0m ds \u001b[38;5;241m=\u001b[39m _dataset_from_backend_dataset(\n\u001b[0;32m 573\u001b[0m backend_ds,\n\u001b[0;32m 574\u001b[0m filename_or_obj,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 584\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 585\u001b[0m )\n\u001b[0;32m 586\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ds\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:937\u001b[0m, in \u001b[0;36mEarthEngineBackendEntrypoint.open_dataset\u001b[1;34m(self, filename_or_obj, drop_variables, io_chunks, n_images, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, ee_mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 929\u001b[0m ee\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39msetUserAgent(user_agent)\n\u001b[0;32m 931\u001b[0m collection \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 932\u001b[0m filename_or_obj\n\u001b[0;32m 933\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(filename_or_obj, ee\u001b[38;5;241m.\u001b[39mImageCollection)\n\u001b[0;32m 934\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parse(filename_or_obj))\n\u001b[0;32m 935\u001b[0m )\n\u001b[1;32m--> 937\u001b[0m store \u001b[38;5;241m=\u001b[39m \u001b[43mEarthEngineStore\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 938\u001b[0m \u001b[43m \u001b[49m\u001b[43mcollection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 939\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunk_store\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mio_chunks\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 940\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 941\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 942\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 943\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee_mask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 948\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 949\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 951\u001b[0m store_entrypoint \u001b[38;5;241m=\u001b[39m backends_store\u001b[38;5;241m.\u001b[39mStoreBackendEntrypoint()\n\u001b[0;32m 953\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m utils\u001b[38;5;241m.\u001b[39mclose_on_error(store):\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:152\u001b[0m, in \u001b[0;36mEarthEngineStore.open\u001b[1;34m(cls, image_collection, mode, chunk_store, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 149\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmode \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmode\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m is invalid: data can only be read from Earth Engine.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 150\u001b[0m )\n\u001b[1;32m--> 152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 153\u001b[0m \u001b[43m \u001b[49m\u001b[43mimage_collection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunk_store\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 156\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 157\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 158\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 159\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 160\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 161\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 162\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 163\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 164\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:242\u001b[0m, in \u001b[0;36mEarthEngineStore.__init__\u001b[1;34m(self, image_collection, chunks, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 239\u001b[0m x_max, y_max \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtransform(x_max_0, y_max_0)\n\u001b[0;32m 240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbounds \u001b[38;5;241m=\u001b[39m x_min, y_min, x_max, y_max\n\u001b[1;32m--> 242\u001b[0m max_dtype \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_max_itemsize\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 244\u001b[0m \u001b[38;5;66;03m# TODO(b/291851322): Consider support for laziness when chunks=None.\u001b[39;00m\n\u001b[0;32m 245\u001b[0m \u001b[38;5;66;03m# By default, automatically optimize io_chunks.\u001b[39;00m\n\u001b[0;32m 246\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchunks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_auto_chunks(max_dtype, request_byte_limit)\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:311\u001b[0m, in \u001b[0;36mEarthEngineStore._max_itemsize\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 310\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_max_itemsize\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mint\u001b[39m:\n\u001b[1;32m--> 311\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mmax\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 312\u001b[0m \u001b[43m \u001b[49m\u001b[43m_parse_dtype\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mdata_type\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitemsize\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_img_info\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mbands\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[0;32m 313\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[1;31mValueError\u001b[0m: max() arg is an empty sequence" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "city_urban_land_use = UrbanLandUse().get_data(city_gdf.total_bounds)\n", + "city_urban_land_use" + ] + }, + { + "cell_type": "markdown", + "id": "f8bdc82b-20f4-40c1-9bed-1cb53cec2fd9", + "metadata": {}, + "source": [ + "# Open Street Map" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2b619ebf-a90d-4630-ba7e-9e0b5526f278", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Authenticating to GEE with configured credentials file.\n" + ] + } + ], + "source": [ + "from city_metrix.layers import OpenStreetMap" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "696480f8-3f48-40df-98f3-29ece4d2f047", + "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", + "
osmidgeometryleisureboundary
029204845POLYGON ((-38.41202 -12.96888, -38.41160 -12.9...NaNprotected_area
129415494POLYGON ((-38.47611 -12.99642, -38.47608 -12.9...parkNaN
229415495POLYGON ((-38.44212 -12.99757, -38.44152 -12.9...parkNaN
348623160POLYGON ((-38.49373 -13.01117, -38.49374 -13.0...pitchNaN
448623169POLYGON ((-38.49005 -13.01025, -38.49002 -13.0...parkNaN
...............
156611371090POLYGON ((-38.49656 -12.92388, -38.49656 -12.9...parkNaN
156711773655POLYGON ((-38.41844 -12.94592, -38.41844 -12.9...trackNaN
156814205075POLYGON ((-38.44278 -12.98217, -38.44294 -12.9...parkNaN
156914325221MULTIPOLYGON (((-38.36285 -12.95008, -38.36278...parkNaN
157014938535POLYGON ((-38.51048 -12.92996, -38.51048 -12.9...trackNaN
\n", + "

1571 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " osmid geometry leisure \\\n", + "0 29204845 POLYGON ((-38.41202 -12.96888, -38.41160 -12.9... NaN \n", + "1 29415494 POLYGON ((-38.47611 -12.99642, -38.47608 -12.9... park \n", + "2 29415495 POLYGON ((-38.44212 -12.99757, -38.44152 -12.9... park \n", + "3 48623160 POLYGON ((-38.49373 -13.01117, -38.49374 -13.0... pitch \n", + "4 48623169 POLYGON ((-38.49005 -13.01025, -38.49002 -13.0... park \n", + "... ... ... ... \n", + "1566 11371090 POLYGON ((-38.49656 -12.92388, -38.49656 -12.9... park \n", + "1567 11773655 POLYGON ((-38.41844 -12.94592, -38.41844 -12.9... track \n", + "1568 14205075 POLYGON ((-38.44278 -12.98217, -38.44294 -12.9... park \n", + "1569 14325221 MULTIPOLYGON (((-38.36285 -12.95008, -38.36278... park \n", + "1570 14938535 POLYGON ((-38.51048 -12.92996, -38.51048 -12.9... track \n", + "\n", + " boundary \n", + "0 protected_area \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "... ... \n", + "1566 NaN \n", + "1567 NaN \n", + "1568 NaN \n", + "1569 NaN \n", + "1570 NaN \n", + "\n", + "[1571 rows x 4 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'], \n", + " 'boundary': ['protected_area', 'national_park']}\n", + "\n", + "city_open_space = OpenStreetMap(osm_tag=open_space_tag).get_data(city_gdf.total_bounds)\n", + "city_open_space" + ] + }, + { + "cell_type": "markdown", + "id": "6aebf55a-d761-4042-95aa-3674f914c7f4", + "metadata": {}, + "source": [ + "# NaturalAreas" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "72457e43-0181-4ef4-bec8-067a958da1b3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Authenticating to GEE with configured credentials file.\n" + ] + } + ], + "source": [ + "from city_metrix.layers import NaturalAreas" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e1855efc-a2e9-4cc7-9df0-650286186e1c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'Map' (y: 2878, x: 3722)>\n",
+       "array([[0, 0, 0, ..., 1, 1, 1],\n",
+       "       [0, 0, 0, ..., 1, 1, 1],\n",
+       "       [0, 0, 0, ..., 1, 1, 1],\n",
+       "       ...,\n",
+       "       [0, 0, 0, ..., 0, 0, 0],\n",
+       "       [0, 0, 0, ..., 0, 0, 0],\n",
+       "       [0, 0, 0, ..., 0, 0, 0]])\n",
+       "Coordinates:\n",
+       "    time         datetime64[ns] 2020-01-01\n",
+       "  * x            (x) float32 -38.65 -38.65 -38.65 -38.65 ... -38.3 -38.3 -38.3\n",
+       "  * y            (y) float32 -12.76 -12.76 -12.76 ... -13.02 -13.02 -13.02\n",
+       "    spatial_ref  int32 0
" + ], + "text/plain": [ + "\n", + "array([[0, 0, 0, ..., 1, 1, 1],\n", + " [0, 0, 0, ..., 1, 1, 1],\n", + " [0, 0, 0, ..., 1, 1, 1],\n", + " ...,\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0]])\n", + "Coordinates:\n", + " time datetime64[ns] 2020-01-01\n", + " * x (x) float32 -38.65 -38.65 -38.65 -38.65 ... -38.3 -38.3 -38.3\n", + " * y (y) float32 -12.76 -12.76 -12.76 ... -13.02 -13.02 -13.02\n", + " spatial_ref int32 0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "city_natural_areas = NaturalAreas().get_data(city_gdf.total_bounds)\n", + "city_natural_areas" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "d7f1f387-7d4e-4d0a-aae6-dd5e712023c0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Saif.Shabou\\anaconda3\\lib\\site-packages\\xarray\\core\\pycompat.py:37: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", + " duck_array_version = LooseVersion(\"0.0.0\")\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "city_natural_areas.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "8090dcb6-e6bc-443f-8a42-79a9ed8f31b4", + "metadata": {}, + "source": [ + "# Indicator urban_open_space" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3b873034-e421-414e-91b6-9e9fdb3fccc1", + "metadata": {}, + "outputs": [], + "source": [ + "from city_metrix import urban_open_space\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "f4046695-950b-47e4-a23b-0aafc722c0e9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: total: 15.1 s\n", + "Wall time: 44 s\n" + ] + }, + { + "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", + "
geo_idgeo_levelgeo_namegeo_parent_namecreation_dategeometrynatural_areasurban_open_space
0BRA-Salvador_ADM4-union_1ADM4-unionBRA-SalvadorBRA-Salvador2022-08-03MULTIPOLYGON (((-38.50135 -13.01134, -38.50140...0.4646030.028378
\n", + "
" + ], + "text/plain": [ + " geo_id geo_level geo_name geo_parent_name \\\n", + "0 BRA-Salvador_ADM4-union_1 ADM4-union BRA-Salvador BRA-Salvador \n", + "\n", + " creation_date geometry \\\n", + "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... \n", + "\n", + " natural_areas urban_open_space \n", + "0 0.464603 0.028378 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "\n", + "# for one geography\n", + "city_gdf[\"urban_open_space\"] = urban_open_space(city_gdf) \n", + "city_gdf" + ] + }, + { + "cell_type": "markdown", + "id": "9b447fd3-5bcf-4d74-b3e9-a54c1fb399bb", + "metadata": {}, + "source": [ + "# indicator natural areas" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "16ce8557-0438-456f-870b-ee6a71f83891", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Authenticating to GEE with configured credentials file.\n" + ] + } + ], + "source": [ + "from city_metrix import natural_areas" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "353bdc99-f02d-4d06-ae4c-8fe535e53c9d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: total: 2min 7s\n", + "Wall time: 2min 10s\n" + ] + }, + { + "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", + "
geo_idgeo_levelgeo_namegeo_parent_namecreation_dategeometrynatural_areas
0BRA-Salvador_ADM4-union_1ADM4-unionBRA-SalvadorBRA-Salvador2022-08-03MULTIPOLYGON (((-38.50135 -13.01134, -38.50140...0.464603
\n", + "
" + ], + "text/plain": [ + " geo_id geo_level geo_name geo_parent_name \\\n", + "0 BRA-Salvador_ADM4-union_1 ADM4-union BRA-Salvador BRA-Salvador \n", + "\n", + " creation_date geometry \\\n", + "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... \n", + "\n", + " natural_areas \n", + "0 0.464603 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "\n", + "# for one geography\n", + "city_gdf[\"natural_areas\"] = natural_areas(city_gdf) \n", + "city_gdf" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "07ec2376-78b2-400e-b61a-6672c02a6545", + "metadata": {}, + "outputs": [], + "source": [ + "from city_metrix.layers.urban_land_use import UrbanLandUse" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "58409ed9-2bba-4fe2-8fad-0fe0544bbc2b", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "max() arg is an empty sequence", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32m:1\u001b[0m\n", + "File \u001b[1;32m~\\OneDrive - World Resources Institute\\Documents\\cities-indicators-framework\\citymetrix\\cities-cif\\city_metrix\\layers\\urban_land_use.py:24\u001b[0m, in \u001b[0;36mUrbanLandUse.get_data\u001b[1;34m(self, bbox)\u001b[0m\n\u001b[0;32m 16\u001b[0m dataset \u001b[38;5;241m=\u001b[39m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprojects/wri-datalab/cities/urban_land_use/V1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 17\u001b[0m ulu \u001b[38;5;241m=\u001b[39m (dataset\n\u001b[0;32m 18\u001b[0m \u001b[38;5;241m.\u001b[39mfilterBounds(ee\u001b[38;5;241m.\u001b[39mGeometry\u001b[38;5;241m.\u001b[39mBBox(\u001b[38;5;241m*\u001b[39mbbox))\n\u001b[0;32m 19\u001b[0m \u001b[38;5;241m.\u001b[39mselect(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mband)\n\u001b[0;32m 20\u001b[0m \u001b[38;5;241m.\u001b[39mreduce(ee\u001b[38;5;241m.\u001b[39mReducer\u001b[38;5;241m.\u001b[39mfirstNonNull())\n\u001b[0;32m 21\u001b[0m \u001b[38;5;241m.\u001b[39mrename(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlulc\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 22\u001b[0m )\n\u001b[1;32m---> 24\u001b[0m ds \u001b[38;5;241m=\u001b[39m \u001b[43mxr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_dataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mImageCollection\u001b[49m\u001b[43m(\u001b[49m\u001b[43mulu\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 26\u001b[0m \u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mee\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 29\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mGeometry\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mRectangle\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mbbox\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 30\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 32\u001b[0m data \u001b[38;5;241m=\u001b[39m ds\u001b[38;5;241m.\u001b[39mlulc\u001b[38;5;241m.\u001b[39mcompute()\n\u001b[0;32m 34\u001b[0m \u001b[38;5;66;03m# get in rioxarray format\u001b[39;00m\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xarray\\backends\\api.py:566\u001b[0m, in \u001b[0;36mopen_dataset\u001b[1;34m(filename_or_obj, engine, chunks, cache, decode_cf, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, drop_variables, inline_array, chunked_array_type, from_array_kwargs, backend_kwargs, **kwargs)\u001b[0m\n\u001b[0;32m 554\u001b[0m decoders \u001b[38;5;241m=\u001b[39m _resolve_decoders_kwargs(\n\u001b[0;32m 555\u001b[0m decode_cf,\n\u001b[0;32m 556\u001b[0m open_backend_dataset_parameters\u001b[38;5;241m=\u001b[39mbackend\u001b[38;5;241m.\u001b[39mopen_dataset_parameters,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 562\u001b[0m decode_coords\u001b[38;5;241m=\u001b[39mdecode_coords,\n\u001b[0;32m 563\u001b[0m )\n\u001b[0;32m 565\u001b[0m overwrite_encoded_chunks \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moverwrite_encoded_chunks\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 566\u001b[0m backend_ds \u001b[38;5;241m=\u001b[39m backend\u001b[38;5;241m.\u001b[39mopen_dataset(\n\u001b[0;32m 567\u001b[0m filename_or_obj,\n\u001b[0;32m 568\u001b[0m drop_variables\u001b[38;5;241m=\u001b[39mdrop_variables,\n\u001b[0;32m 569\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mdecoders,\n\u001b[0;32m 570\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 571\u001b[0m )\n\u001b[0;32m 572\u001b[0m ds \u001b[38;5;241m=\u001b[39m _dataset_from_backend_dataset(\n\u001b[0;32m 573\u001b[0m backend_ds,\n\u001b[0;32m 574\u001b[0m filename_or_obj,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 584\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 585\u001b[0m )\n\u001b[0;32m 586\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ds\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:937\u001b[0m, in \u001b[0;36mEarthEngineBackendEntrypoint.open_dataset\u001b[1;34m(self, filename_or_obj, drop_variables, io_chunks, n_images, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, ee_mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 929\u001b[0m ee\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39msetUserAgent(user_agent)\n\u001b[0;32m 931\u001b[0m collection \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 932\u001b[0m filename_or_obj\n\u001b[0;32m 933\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(filename_or_obj, ee\u001b[38;5;241m.\u001b[39mImageCollection)\n\u001b[0;32m 934\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parse(filename_or_obj))\n\u001b[0;32m 935\u001b[0m )\n\u001b[1;32m--> 937\u001b[0m store \u001b[38;5;241m=\u001b[39m \u001b[43mEarthEngineStore\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 938\u001b[0m \u001b[43m \u001b[49m\u001b[43mcollection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 939\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunk_store\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mio_chunks\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 940\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 941\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 942\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 943\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee_mask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 948\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 949\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 951\u001b[0m store_entrypoint \u001b[38;5;241m=\u001b[39m backends_store\u001b[38;5;241m.\u001b[39mStoreBackendEntrypoint()\n\u001b[0;32m 953\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m utils\u001b[38;5;241m.\u001b[39mclose_on_error(store):\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:152\u001b[0m, in \u001b[0;36mEarthEngineStore.open\u001b[1;34m(cls, image_collection, mode, chunk_store, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 149\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmode \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmode\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m is invalid: data can only be read from Earth Engine.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 150\u001b[0m )\n\u001b[1;32m--> 152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 153\u001b[0m \u001b[43m \u001b[49m\u001b[43mimage_collection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunk_store\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 156\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 157\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 158\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 159\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 160\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 161\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 162\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 163\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 164\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:242\u001b[0m, in \u001b[0;36mEarthEngineStore.__init__\u001b[1;34m(self, image_collection, chunks, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 239\u001b[0m x_max, y_max \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtransform(x_max_0, y_max_0)\n\u001b[0;32m 240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbounds \u001b[38;5;241m=\u001b[39m x_min, y_min, x_max, y_max\n\u001b[1;32m--> 242\u001b[0m max_dtype \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_max_itemsize\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 244\u001b[0m \u001b[38;5;66;03m# TODO(b/291851322): Consider support for laziness when chunks=None.\u001b[39;00m\n\u001b[0;32m 245\u001b[0m \u001b[38;5;66;03m# By default, automatically optimize io_chunks.\u001b[39;00m\n\u001b[0;32m 246\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchunks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_auto_chunks(max_dtype, request_byte_limit)\n", + "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:311\u001b[0m, in \u001b[0;36mEarthEngineStore._max_itemsize\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 310\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_max_itemsize\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mint\u001b[39m:\n\u001b[1;32m--> 311\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mmax\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 312\u001b[0m \u001b[43m \u001b[49m\u001b[43m_parse_dtype\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mdata_type\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitemsize\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_img_info\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mbands\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[0;32m 313\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[1;31mValueError\u001b[0m: max() arg is an empty sequence" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "city_urban_land_use = UrbanLandUse().get_data(city_gdf.total_bounds)\n", + "city_urban_land_use" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "104b8268-3546-4c36-97e0-a8000f13e1df", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "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.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 76d3adee49ad5cefb224230388c613c88df43d2e Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 5 Jan 2024 13:43:26 +0800 Subject: [PATCH 13/31] predefine classes in osm layer --- city_metrix/layers/__init__.py | 2 +- city_metrix/layers/open_street_map.py | 32 +++++++++++++++++++++------ city_metrix/metrics.py | 8 ++----- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/city_metrix/layers/__init__.py b/city_metrix/layers/__init__.py index 3576bec..6a67aa7 100644 --- a/city_metrix/layers/__init__.py +++ b/city_metrix/layers/__init__.py @@ -4,7 +4,7 @@ from .tree_cover import TreeCover from .high_land_surface_temperature import HighLandSurfaceTemperature from .smart_cities_lulc import SmartCitiesLULC -from .open_street_map import OpenStreetMap +from .open_street_map import OpenStreetMap, OpenStreetMapClass from .urban_land_use import UrbanLandUse from .natural_areas import NaturalAreas from .layer import Layer, LayerGroupBy diff --git a/city_metrix/layers/open_street_map.py b/city_metrix/layers/open_street_map.py index 15fc40a..febae35 100644 --- a/city_metrix/layers/open_street_map.py +++ b/city_metrix/layers/open_street_map.py @@ -1,26 +1,44 @@ +from enum import Enum import osmnx as ox from .layer import Layer +class OpenStreetMapClass(Enum): + OPEN_SPACE = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'], + 'boundary': ['protected_area', 'national_park']} + OPEN_SPACE_HEAT = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], + 'boundary': ['protected_area', 'national_park', 'forest_compartment', 'forest']} + WATER = {'water': True, + 'natural': ['water'], + 'waterway': True} + ROAD = {'highway': ["residential", "service", "unclassified", "tertiary", "secondary", "primary", "turning_circle", "living_street", "trunk", "motorway", "motorway_link", "trunk_link", + "primary_link", "secondary_link", "tertiary_link", "motorway_junction", "turning_loop", "road", "mini_roundabout", "passing_place", "busway"]} + BUILDING = {'building': True} + PARK = {'amenity': ['parking'], + 'parking': True} + + class OpenStreetMap(Layer): - def __init__(self, osm_tag=None, **kwargs): + def __init__(self, osm_class=None, **kwargs): super().__init__(**kwargs) - self.osm_tag = osm_tag + self.osm_class = osm_class def get_data(self, bbox): north, south, east, west = bbox[3], bbox[1], bbox[0], bbox[2] - osm_feature = ox.features_from_bbox(north, south, east, west, self.osm_tag) + # Set the OSMnx configuration to disable caching + ox.settings.use_cache = False + osm_feature = ox.features_from_bbox(north, south, east, west, self.osm_class.value) - # Filter out Point and LineString (if 'highway' not in tags) - if 'highway' not in self.osm_tag: + # Filter out Point and LineString (if the feature is not ROAD) + if self.osm_class != OpenStreetMapClass.ROAD: osm_feature = osm_feature[osm_feature.geom_type.isin(['Polygon', 'MultiPolygon'])] else: osm_feature = osm_feature[osm_feature.geom_type != 'Point'] # keep only columns desired to reduce file size keep_col = ['osmid', 'geometry'] - for key in self.osm_tag: + for key in self.osm_class.value: if key in osm_feature.columns: keep_col.append(key) # keep 'lanes' for 'highway' @@ -32,7 +50,7 @@ def get_data(self, bbox): def write(self, output_path): self.data['bbox'] = str(self.data.total_bounds) - self.data['osm_tag'] = str(self.osm_tag) + self.data['osm_class'] = str(self.osm_class) # Write to a GeoJSON file self.data.to_file(output_path, driver='GeoJSON') diff --git a/city_metrix/metrics.py b/city_metrix/metrics.py index 3f19ad1..b8f8dbd 100644 --- a/city_metrix/metrics.py +++ b/city_metrix/metrics.py @@ -1,5 +1,5 @@ from city_metrix.layers import Albedo, EsaWorldCoverClass, EsaWorldCover, HighLandSurfaceTemperature, TreeCover, \ - OpenStreetMap, NaturalAreas + OpenStreetMap, OpenStreetMapClass, NaturalAreas from geopandas import GeoDataFrame @@ -70,9 +70,7 @@ def built_land_with_high_land_surface_temperature(zones): def urban_open_space(zones): built_up_land = EsaWorldCover(land_cover_class=EsaWorldCoverClass.BUILT_UP) - open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'], - 'boundary': ['protected_area', 'national_park']} - open_space = OpenStreetMap(osm_tag=open_space_tag) + open_space = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE) open_space_in_built_land = open_space.mask(built_up_land).groupby(zones).count() built_land_counts = built_up_land.groupby(zones).count() @@ -82,5 +80,3 @@ def urban_open_space(zones): def natural_areas(zones): return NaturalAreas().groupby(zones).mean() - - From c7c1d52c7da33cb039232199fcbf8b4f7c91ece9 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 5 Jan 2024 14:58:09 +0800 Subject: [PATCH 14/31] add progress bar to ULU; update OSM class --- city_metrix/layers/open_street_map.py | 6 +++--- city_metrix/layers/urban_land_use.py | 13 ++++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/city_metrix/layers/open_street_map.py b/city_metrix/layers/open_street_map.py index febae35..1e54522 100644 --- a/city_metrix/layers/open_street_map.py +++ b/city_metrix/layers/open_street_map.py @@ -15,8 +15,8 @@ class OpenStreetMapClass(Enum): ROAD = {'highway': ["residential", "service", "unclassified", "tertiary", "secondary", "primary", "turning_circle", "living_street", "trunk", "motorway", "motorway_link", "trunk_link", "primary_link", "secondary_link", "tertiary_link", "motorway_junction", "turning_loop", "road", "mini_roundabout", "passing_place", "busway"]} BUILDING = {'building': True} - PARK = {'amenity': ['parking'], - 'parking': True} + PARKING = {'amenity': ['parking'], + 'parking': True} class OpenStreetMap(Layer): @@ -50,7 +50,7 @@ def get_data(self, bbox): def write(self, output_path): self.data['bbox'] = str(self.data.total_bounds) - self.data['osm_class'] = str(self.osm_class) + self.data['osm_class'] = str(self.osm_class.value) # Write to a GeoJSON file self.data.to_file(output_path, driver='GeoJSON') diff --git a/city_metrix/layers/urban_land_use.py b/city_metrix/layers/urban_land_use.py index 9b49dcc..199a264 100644 --- a/city_metrix/layers/urban_land_use.py +++ b/city_metrix/layers/urban_land_use.py @@ -1,10 +1,10 @@ -from .layer import Layer, get_utm_zone_epsg - -from rioxarray.raster_array import RasterArray +from dask.diagnostics import ProgressBar import xarray as xr import xee import ee +from .layer import Layer, get_utm_zone_epsg + class UrbanLandUse(Layer): def __init__(self, band=None, **kwargs): @@ -26,10 +26,13 @@ def get_data(self, bbox): engine='ee', scale=5, crs=crs, - geometry=ee.Geometry.Rectangle(*bbox) + geometry=ee.Geometry.Rectangle(*bbox), + chunks={'X': 512, 'Y': 512} ) - data = ds.lulc.compute() + with ProgressBar(): + print("Extracting ULU layer:") + data = ds.lulc.compute() # get in rioxarray format data = data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) From 5be0b44e1247dbe3504f4406244fa9c2c63fbd5e Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 5 Jan 2024 15:00:48 +0800 Subject: [PATCH 15/31] separated layer for ANBH --- city_metrix/layers/__init__.py | 1 + .../layers/average_net_building_height.py | 40 ++++++++++++++++ city_metrix/layers/building_classifier.py | 21 ++------ city_metrix/layers/smart_cities_lulc.py | 48 ++++--------------- 4 files changed, 54 insertions(+), 56 deletions(-) create mode 100644 city_metrix/layers/average_net_building_height.py diff --git a/city_metrix/layers/__init__.py b/city_metrix/layers/__init__.py index 6a67aa7..3d0cbd7 100644 --- a/city_metrix/layers/__init__.py +++ b/city_metrix/layers/__init__.py @@ -10,3 +10,4 @@ from .layer import Layer, LayerGroupBy from .landsat_collection_2 import LandsatCollection2 from .sentinel_2_level_2 import Sentinel2Level2 +from .average_net_building_height import AverageNetBuildingHeight diff --git a/city_metrix/layers/average_net_building_height.py b/city_metrix/layers/average_net_building_height.py new file mode 100644 index 0000000..d022abe --- /dev/null +++ b/city_metrix/layers/average_net_building_height.py @@ -0,0 +1,40 @@ +from dask.diagnostics import ProgressBar +import xarray as xr +import xee +import ee + +from .layer import Layer, get_utm_zone_epsg + + +class AverageNetBuildingHeight(Layer): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def get_data(self, bbox): + crs = get_utm_zone_epsg(bbox) + # ANBH is the average height of the built surfaces, USE THIS + # AGBH is the amount of built cubic meters per surface unit in the cell + # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php + anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") + .filterBounds(ee.Geometry.BBox(*bbox)) + .select('b1') + .mosaic() + ) + + ds = xr.open_dataset( + ee.ImageCollection(anbh), + engine='ee', + scale=100, + crs=crs, + geometry=ee.Geometry.Rectangle(*bbox), + chunks={'X': 512, 'Y': 512} + ) + + with ProgressBar(): + print("Extracting ANBH layer:") + data = ds.b1.compute() + + # get in rioxarray format + data = data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + + return data diff --git a/city_metrix/layers/building_classifier.py b/city_metrix/layers/building_classifier.py index e73b707..055ad78 100644 --- a/city_metrix/layers/building_classifier.py +++ b/city_metrix/layers/building_classifier.py @@ -12,6 +12,7 @@ from .layer import Layer, get_utm_zone_epsg from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass from .urban_land_use import UrbanLandUse +from .average_net_building_height import AverageNetBuildingHeight class BuildingClassifier(Layer): @@ -79,24 +80,8 @@ def get_data(self): nodata=1 ) - # ANBH is the average height of the built surfaces, USE THIS - # AGBH is the amount of built cubic meters per surface unit in the cell - # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php - anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") - .filterBounds(ee.Geometry.BBox(*bbox)) - .select('b1') - .mosaic() - ) - ds = xr.open_dataset( - ee.ImageCollection(anbh), - engine='ee', - scale=100, - crs=crs, - geometry=ee.Geometry.Rectangle(*bbox) - ) - anbh_data = ds.b1.compute() - # get in rioxarray format - anbh_data = anbh_data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + # Load ANBH layer + anbh_data = AverageNetBuildingHeight().get_data(bbox) anbh_1m = anbh_data.rio.reproject( dst_crs=crs, diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 58cb92e..d6202c3 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -12,9 +12,10 @@ from .layer import Layer, get_utm_zone_epsg from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass -from .open_street_map import OpenStreetMap +from .open_street_map import OpenStreetMap, OpenStreetMapClass from .urban_land_use import UrbanLandUse from .building_classifier import BuildingClassifier +from .average_net_building_height import AverageNetBuildingHeight class SmartCitiesLULC(Layer): @@ -56,19 +57,6 @@ def get_data(self, bbox): resampling=Resampling.nearest ) - - # OSM tags - open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], - 'boundary': ['protected_area', 'national_park', 'forest_compartment', 'forest']} - water_tag = {'water': True, - 'natural': ['water'], - 'waterway': True} - roads_tag = {'highway': ["residential", "service", "unclassified", "tertiary", "secondary", "primary", "turning_circle", "living_street", "trunk", "motorway", "motorway_link", "trunk_link", - "primary_link", "secondary_link", "tertiary_link", "motorway_junction", "turning_loop", "road", "mini_roundabout", "passing_place", "busway"]} - building_tag = {'building': True} - parking_tag = {'amenity': ['parking'], - 'parking': True} - def rasterize_osm(gdf, snap_to): raster = make_geocube( vector_data=gdf, @@ -81,19 +69,19 @@ def rasterize_osm(gdf, snap_to): # Open space - open_space_osm = OpenStreetMap(osm_tag=open_space_tag).get_data(bbox).to_crs(crs).reset_index() + open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() open_space_osm['Value'] = 10 open_space_1m = rasterize_osm(open_space_osm, esa_1m) # Water - water_osm = OpenStreetMap(osm_tag=water_tag).get_data(bbox).to_crs(crs).reset_index() + water_osm = OpenStreetMap(osm_class=OpenStreetMapClass.WATER).get_data(bbox).to_crs(crs).reset_index() water_osm['Value'] = 20 water_1m = rasterize_osm(water_osm, esa_1m) # Roads - roads_osm = OpenStreetMap(osm_tag=roads_tag).get_data(bbox).to_crs(crs).reset_index() + roads_osm = OpenStreetMap(osm_class=OpenStreetMapClass.ROAD).get_data(bbox).to_crs(crs).reset_index() roads_osm['lanes'] = pd.to_numeric(roads_osm['lanes'], errors='coerce') # Get the average number of lanes per highway class lanes = (roads_osm.drop(columns='geometry') @@ -147,26 +135,10 @@ def rasterize_osm(gdf, snap_to): resampling=Resampling.nearest, nodata=1 ) - - # ANBH is the average height of the built surfaces, USE THIS - # AGBH is the amount of built cubic meters per surface unit in the cell - # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php - anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") - .filterBounds(ee.Geometry.BBox(*bbox)) - .select('b1') - .mosaic() - ) - ds = xr.open_dataset( - ee.ImageCollection(anbh), - engine='ee', - scale=100, - crs=crs, - geometry=ee.Geometry.Rectangle(*bbox) - ) - anbh_data = ds.b1.compute() - # get in rioxarray format - anbh_data = anbh_data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) + # Load ANBH layer + anbh_data = AverageNetBuildingHeight().get_data(bbox) + anbh_1m = anbh_data.rio.reproject( dst_crs=crs, shape=esa_1m.shape, @@ -174,7 +146,7 @@ def rasterize_osm(gdf, snap_to): nodata=0 ) - building_osm = OpenStreetMap(osm_tag=building_tag).get_data(bbox).to_crs(crs).reset_index() + building_osm = OpenStreetMap(osm_class=OpenStreetMapClass.BUILDING).get_data(bbox).to_crs(crs).reset_index() building_osm['Value'] = building_osm['osmid'] building_osm_1m = rasterize_osm(building_osm, esa_1m) @@ -199,7 +171,7 @@ def rasterize_osm(gdf, snap_to): # Parking - parking_osm = OpenStreetMap(osm_tag=parking_tag).get_data(bbox).to_crs(crs).reset_index() + parking_osm = OpenStreetMap(osm_class=OpenStreetMapClass.PARKING).get_data(bbox).to_crs(crs).reset_index() parking_osm['Value'] = 50 parking_1m = rasterize_osm(parking_osm, esa_1m) From eb1accb5ae9c6e8fed2dffba0a982e8444b36a15 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Wed, 10 Jan 2024 11:58:02 +0800 Subject: [PATCH 16/31] replace anbh with built up height --- .../layers/average_net_building_height.py | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 city_metrix/layers/average_net_building_height.py diff --git a/city_metrix/layers/average_net_building_height.py b/city_metrix/layers/average_net_building_height.py deleted file mode 100644 index d022abe..0000000 --- a/city_metrix/layers/average_net_building_height.py +++ /dev/null @@ -1,40 +0,0 @@ -from dask.diagnostics import ProgressBar -import xarray as xr -import xee -import ee - -from .layer import Layer, get_utm_zone_epsg - - -class AverageNetBuildingHeight(Layer): - def __init__(self, **kwargs): - super().__init__(**kwargs) - - def get_data(self, bbox): - crs = get_utm_zone_epsg(bbox) - # ANBH is the average height of the built surfaces, USE THIS - # AGBH is the amount of built cubic meters per surface unit in the cell - # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php - anbh = (ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") - .filterBounds(ee.Geometry.BBox(*bbox)) - .select('b1') - .mosaic() - ) - - ds = xr.open_dataset( - ee.ImageCollection(anbh), - engine='ee', - scale=100, - crs=crs, - geometry=ee.Geometry.Rectangle(*bbox), - chunks={'X': 512, 'Y': 512} - ) - - with ProgressBar(): - print("Extracting ANBH layer:") - data = ds.b1.compute() - - # get in rioxarray format - data = data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) - - return data From a0ee3c0b2a6d9fda4b23b57aceda00f690c373dc Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Wed, 10 Jan 2024 20:13:06 +0800 Subject: [PATCH 17/31] update reclassification method to be more efficient --- city_metrix/layers/smart_cities_lulc.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index d6202c3..8aa92be 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -15,7 +15,7 @@ from .open_street_map import OpenStreetMap, OpenStreetMapClass from .urban_land_use import UrbanLandUse from .building_classifier import BuildingClassifier -from .average_net_building_height import AverageNetBuildingHeight +from .built_up_height import BuiltUpHeight class SmartCitiesLULC(Layer): @@ -43,11 +43,14 @@ def get_data(self, bbox): EsaWorldCoverClass.MOSS_AND_LICHEN.value: 3 # Add other mappings as needed } - reclassified_esa = xr.apply_ufunc( - np.vectorize(lambda x: reclass_map.get(x, x)), - esa_world_cover, - vectorize=True - ) + + # Create an array of the same shape as esa_world_cover filled with default values + reclassified_esa = np.full(esa_world_cover.shape, -1, dtype=np.int8) + # Apply the mapping using advanced indexing + for key, value in reclass_map.items(): + reclassified_esa[esa_world_cover == key] = value + # Convert the NumPy array back to xarray.DataArray + reclassified_esa = xr.DataArray(reclassified_esa, dims=esa_world_cover.dims, coords=esa_world_cover.coords) reclassified_esa = reclassified_esa.rio.write_crs(esa_world_cover.rio.crs, inplace=True) @@ -70,7 +73,7 @@ def rasterize_osm(gdf, snap_to): # Open space open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() - open_space_osm['Value'] = 10 + open_space_osm['Value'] = np.int8(10) open_space_1m = rasterize_osm(open_space_osm, esa_1m) @@ -137,7 +140,7 @@ def rasterize_osm(gdf, snap_to): ) # Load ANBH layer - anbh_data = AverageNetBuildingHeight().get_data(bbox) + anbh_data = BuiltUpHeight().get_data(bbox) anbh_1m = anbh_data.rio.reproject( dst_crs=crs, From 09dec3eb3b9d4c8d34b6b89867c9cdffbe4bcbca Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Sun, 14 Jan 2024 17:24:24 +0800 Subject: [PATCH 18/31] update building classifier structure --- city_metrix/layers/building_classifier.py | 109 +++++++++++------- city_metrix/layers/smart_cities_lulc.py | 131 +++++----------------- 2 files changed, 96 insertions(+), 144 deletions(-) diff --git a/city_metrix/layers/building_classifier.py b/city_metrix/layers/building_classifier.py index 055ad78..60d4edd 100644 --- a/city_metrix/layers/building_classifier.py +++ b/city_metrix/layers/building_classifier.py @@ -8,6 +8,7 @@ from sklearn.tree import DecisionTreeClassifier, plot_tree from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt +from xrspatial.classify import reclassify from .layer import Layer, get_utm_zone_epsg from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass @@ -20,13 +21,14 @@ def __init__(self, geo_file=None, **kwargs): super().__init__(**kwargs) self.geo_file = geo_file - def get_data(self): + def get_data_geo(self): + geo_file = '/home/weiqi_tori/GitHub/wri/cities-cif/buildings-sample-classed_LA.geojson' buildings_sample = gpd.read_file(self.geo_file) - buildings_sample.to_crs(epsg=4326,inplace=True) - bbox = buildings_sample.reset_index().total_bounds + buildings_sample.to_crs(epsg=4326, inplace=True) - crs = get_utm_zone_epsg(bbox) + return buildings_sample + def get_data_esa_reclass(self, bbox, crs): # ESA reclass and upsample esa_world_cover = EsaWorldCover().get_data(bbox) @@ -44,11 +46,9 @@ def get_data(self): EsaWorldCoverClass.MOSS_AND_LICHEN.value: 3 # Add other mappings as needed } - reclassified_esa = xr.apply_ufunc( - np.vectorize(lambda x: reclass_map.get(x, x)), - esa_world_cover, - vectorize=True - ) + + # Perform the reclassification + reclassified_esa = reclassify(esa_world_cover, bins=list(reclass_map.keys()), new_values=list(reclass_map.values())) reclassified_esa = reclassified_esa.rio.write_crs(esa_world_cover.rio.crs, inplace=True) @@ -58,11 +58,14 @@ def get_data(self): resampling=Resampling.nearest ) + return esa_1m + + def get_data_ulu(self, bbox, crs, snap_to): # Read ULU land cover, filter to city, select lulc band ulu_lulc = UrbanLandUse(band='lulc').get_data(bbox) ulu_roads = UrbanLandUse(band='road').get_data(bbox) # Create road mask of 50 - # Typical threshold for creating road mask + # Typical threshold for creating road mask road_mask = ulu_roads >= 50 ulu_lulc = ulu_lulc.where(~road_mask, 6) # 1-Non-residential: 0 (open space), 1 (non-res) @@ -71,81 +74,101 @@ def get_data(self): mapping = {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 2, 6: 3} for from_val, to_val in mapping.items(): ulu_lulc = ulu_lulc.where(ulu_lulc != from_val, to_val) - + # 1-Non-residential as default ulu_lulc_1m = ulu_lulc.rio.reproject( dst_crs=crs, - shape=esa_1m.shape, + shape=snap_to.shape, resampling=Resampling.nearest, nodata=1 ) + return ulu_lulc_1m + + def get_data_anbh(self, bbox, crs, snap_to): # Load ANBH layer anbh_data = AverageNetBuildingHeight().get_data(bbox) - + anbh_1m = anbh_data.rio.reproject( dst_crs=crs, - shape=esa_1m.shape, + shape=snap_to.shape, resampling=Resampling.nearest, nodata=0 ) - return buildings_sample, esa_1m, ulu_lulc_1m, anbh_1m, crs + return anbh_1m + + def rasterize_polygon(self, gdf, snap_to): + if gdf.empty: + raster = np.full(snap_to.shape, 0, dtype=np.int8) + raster = xr.DataArray(raster, dims=snap_to.dims, coords=snap_to.coords) + + return raster.rio.write_crs(snap_to.rio.crs, inplace=True) + + raster = make_geocube( + vector_data=gdf, + measurements=["Value"], + like=snap_to, + fill=0 + ).Value + + return raster.rio.reproject_match(snap_to) # Extract values to buildings as coverage fractions # Extract average of pixel values to buildings # Reproject to local state plane and calculate area - def calc_majority_ULU_mean_ANBH_area(self, row, building_sample_1m, id_col, ulu_lulc_1m, anbh_1m): - mask = building_sample_1m == row[id_col] + + def extract_features(self, row, buildings_sample_1m, id_col, ulu_lulc_1m, anbh_1m): + # 3 features: + # majority of Urban Land Use(ULU) class + # mean Average Net Building Height(ANBH) + # area of the building + mask = buildings_sample_1m == row[id_col] masked_ulu = ulu_lulc_1m.values[mask] - + # Extract values to buildings as coverage fractions # when there is no majority class, use 1-Non-residential as default if masked_ulu.size == 0: - majority_ULU = 1 + majority_ulu = 1 else: unique, counts = np.unique(masked_ulu, return_counts=True) sorted_indices = np.argsort(-counts) # Sort by descending order - + # Apply your specific logic if unique[sorted_indices[0]] != 3: - majority_ULU = unique[sorted_indices[0]] + majority_ulu = unique[sorted_indices[0]] elif len(sorted_indices) > 1: - majority_ULU = unique[sorted_indices[1]] + majority_ulu = unique[sorted_indices[1]] else: - majority_ULU = 1 # Default to 1 non-residential + majority_ulu = 1 # Default to 1 non-residential # Extract average of pixel values to buildings masked_anbh = anbh_1m.values[mask] if masked_anbh.size == 0: - mean_ANBH = 0 + mean_anbh = 0 else: - mean_ANBH = np.mean(masked_anbh) - + mean_anbh = np.mean(masked_anbh) + # Reproject to local state plane and calculate area - Area_m = row.geometry.area + area_m = row.geometry.area - return pd.Series([majority_ULU, mean_ANBH, Area_m]) - - # TODO - # roof slope model - def rasterize_building(self, gdf, snap_to): - raster = make_geocube( - vector_data=gdf, - measurements=["Value"], - like=snap_to, - fill=0 - ).Value + return pd.Series([majority_ulu, mean_anbh, area_m]) - return raster.rio.reproject_match(snap_to) - def building_class_tree(self): - buildings_sample, esa_1m, ulu_lulc_1m, anbh_1m, crs = self.get_data() + buildings_sample = self.get_data_geo() + bbox = buildings_sample.reset_index().total_bounds + crs = get_utm_zone_epsg(bbox) + + esa_1m = self.get_data_esa_reclass(bbox, crs) buildings_sample['Value'] = buildings_sample['ID'] - buildings_sample_1m = self.rasterize_building(buildings_sample, esa_1m) - buildings_sample[['ULU', 'ANBH', 'Area_m']] = buildings_sample.to_crs(crs).apply(lambda row:self.calc_majority_ULU_mean_ANBH_area(row, buildings_sample_1m, 'ID', ulu_lulc_1m, anbh_1m), axis=1) + buildings_sample_1m = self.rasterize_polygon(buildings_sample, esa_1m) + ulu_lulc_1m = self.get_data_ulu(bbox, crs, esa_1m) + anbh_1m = self.get_data_anbh(bbox, crs, esa_1m) + buildings_sample[['ULU', 'ANBH', 'Area_m']] = buildings_sample.to_crs(crs).apply( + lambda row: self.extract_features(row, buildings_sample_1m, 'ID', ulu_lulc_1m, anbh_1m), axis=1) + clf = DecisionTreeClassifier(max_depth=4) # encode labels buildings_sample['Slope_encoded'] = buildings_sample['Slope'].map({'low': 41, 'high': 42}) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 8aa92be..abfd929 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -1,21 +1,15 @@ import xarray as xr -import ee import numpy as np -from rasterio.enums import Resampling -from geocube.api.core import make_geocube import pandas as pd from shapely.geometry import CAP_STYLE, JOIN_STYLE -import geopandas as gpd from sklearn.metrics import accuracy_score from sklearn.tree import plot_tree import matplotlib.pyplot as plt +from xrspatial.classify import reclassify from .layer import Layer, get_utm_zone_epsg -from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass from .open_street_map import OpenStreetMap, OpenStreetMapClass -from .urban_land_use import UrbanLandUse from .building_classifier import BuildingClassifier -from .built_up_height import BuiltUpHeight class SmartCitiesLULC(Layer): @@ -26,61 +20,18 @@ def __init__(self, land_cover_class=None, **kwargs): def get_data(self, bbox): crs = get_utm_zone_epsg(bbox) - # ESA reclass and upsample - esa_world_cover = EsaWorldCover().get_data(bbox) - - reclass_map = { - EsaWorldCoverClass.TREE_COVER.value: 1, - EsaWorldCoverClass.SHRUBLAND.value: 1, - EsaWorldCoverClass.GRASSLAND.value: 1, - EsaWorldCoverClass.CROPLAND.value: 1, - EsaWorldCoverClass.BUILT_UP.value: 2, - EsaWorldCoverClass.BARE_OR_SPARSE_VEGETATION.value: 3, - EsaWorldCoverClass.SNOW_AND_ICE.value: 4, - EsaWorldCoverClass.PERMANENT_WATER_BODIES.value: 4, - EsaWorldCoverClass.HERBACEOUS_WET_LAND.value: 4, - EsaWorldCoverClass.MANGROVES.value: 4, - EsaWorldCoverClass.MOSS_AND_LICHEN.value: 3 - # Add other mappings as needed - } - - # Create an array of the same shape as esa_world_cover filled with default values - reclassified_esa = np.full(esa_world_cover.shape, -1, dtype=np.int8) - # Apply the mapping using advanced indexing - for key, value in reclass_map.items(): - reclassified_esa[esa_world_cover == key] = value - # Convert the NumPy array back to xarray.DataArray - reclassified_esa = xr.DataArray(reclassified_esa, dims=esa_world_cover.dims, coords=esa_world_cover.coords) - - reclassified_esa = reclassified_esa.rio.write_crs(esa_world_cover.rio.crs, inplace=True) - - esa_1m = reclassified_esa.rio.reproject( - dst_crs=crs, - resolution=1, - resampling=Resampling.nearest - ) - - def rasterize_osm(gdf, snap_to): - raster = make_geocube( - vector_data=gdf, - measurements=["Value"], - like=snap_to, - fill=0 - ).Value - - return raster.rio.reproject_match(snap_to) - + esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) # Open space open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() - open_space_osm['Value'] = np.int8(10) - open_space_1m = rasterize_osm(open_space_osm, esa_1m) + open_space_osm['Value'] = 10 + open_space_1m = BuildingClassifier().rasterize_polygon(open_space_osm, esa_1m) # Water water_osm = OpenStreetMap(osm_class=OpenStreetMapClass.WATER).get_data(bbox).to_crs(crs).reset_index() water_osm['Value'] = 20 - water_1m = rasterize_osm(water_osm, esa_1m) + water_1m = BuildingClassifier().rasterize_polygon(water_osm, esa_1m) # Roads @@ -90,7 +41,7 @@ def rasterize_osm(gdf, snap_to): lanes = (roads_osm.drop(columns='geometry') .groupby('highway') # Calculate average and round up - .agg(avg_lanes=('lanes', lambda x: np.ceil(np.nanmean(x)))) + .agg(avg_lanes=('lanes', lambda x: np.ceil(np.nanmean(x)) if not np.isnan(x).all() else np.NaN)) ) # Handle NaN values in avg_lanes lanes['avg_lanes'] = lanes['avg_lanes'].fillna(2) @@ -113,53 +64,24 @@ def rasterize_osm(gdf, snap_to): axis=1 ) - roads_1m = rasterize_osm(roads_osm, esa_1m) - - - # TODO Building - # Read ULU land cover, filter to city, select lulc band - ulu_lulc = UrbanLandUse(band='lulc').get_data(bbox) - ulu_roads = UrbanLandUse(band='road').get_data(bbox) - # Create road mask of 50 - # Typical threshold for creating road mask - road_mask = ulu_roads >= 50 - ulu_lulc = ulu_lulc.where(~road_mask, 6) - # 1-Non-residential: 0 (open space), 1 (non-res) - # 2-Residential: 2 (Atomistic), 3 (Informal), 4 (Formal), 5 (Housing project) - # 3-Roads: 6 (Roads) - mapping = {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 2, 6: 3} - for from_val, to_val in mapping.items(): - ulu_lulc = ulu_lulc.where(ulu_lulc != from_val, to_val) - - # 1-Non-residential as default - ulu_lulc_1m = ulu_lulc.rio.reproject( - dst_crs=crs, - shape=esa_1m.shape, - resampling=Resampling.nearest, - nodata=1 - ) - - # Load ANBH layer - anbh_data = BuiltUpHeight().get_data(bbox) - - anbh_1m = anbh_data.rio.reproject( - dst_crs=crs, - shape=esa_1m.shape, - resampling=Resampling.nearest, - nodata=0 - ) + roads_1m = BuildingClassifier().rasterize_polygon(roads_osm, esa_1m) + + # Building + ulu_lulc_1m = BuildingClassifier().get_data_ulu(bbox, crs, esa_1m) + anbh_1m = BuildingClassifier().get_data_anbh(bbox, crs, esa_1m) + building_osm = OpenStreetMap(osm_class=OpenStreetMapClass.BUILDING).get_data(bbox).to_crs(crs).reset_index() building_osm['Value'] = building_osm['osmid'] - building_osm_1m = rasterize_osm(building_osm, esa_1m) + building_osm_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) - building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassifier().calc_majority_ULU_mean_ANBH_area(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) + building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassifier().extract_features(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) # TODO # roof slope model # buildings sample classed LA for testing - build_class = BuildingClassifier(geo_file = 'buildings-sample-classed_LA.geojson') - clf = build_class.building_class_tree() + buildings_sample = BuildingClassifier(geo_file = 'buildings-sample-classed_LA.geojson') + clf = buildings_sample.building_class_tree() plt.figure(figsize=(20, 10)) plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) @@ -170,22 +92,29 @@ def rasterize_osm(gdf, snap_to): # accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) # print(f"Accuracy: {accuracy}") - building_osm['Slope'] = clf.predict(building_osm[['ULU', 'ANBH', 'Area_m']]) + building_osm['Value'] = clf.predict(building_osm[['ULU', 'ANBH', 'Area_m']]) + building_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) # Parking parking_osm = OpenStreetMap(osm_class=OpenStreetMapClass.PARKING).get_data(bbox).to_crs(crs).reset_index() parking_osm['Value'] = 50 - parking_1m = rasterize_osm(parking_osm, esa_1m) + parking_1m = BuildingClassifier().rasterize_polygon(parking_osm, esa_1m) # TODO # Combine rasters - LULC = xr.concat([esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m], dim='Value').max(dim='Value') + datasets = [esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m] + # not all raster has 'time', concatenate without 'time' dimension + aligned_datasets = [ds.drop_vars('time', errors='ignore') for ds in datasets] + # use chunk 512x512 + aligned_datasets = [ds.chunk({'x': 512, 'y': 512}) for ds in aligned_datasets] + lulc = xr.concat(aligned_datasets, dim='Value').max(dim='Value') + # Reclass ESA water (4) to 20 reclass_from = [1, 2, 3, 4, 10, 20, 30, 41, 42, 50] reclass_to = [1, 2, 3, 20, 10, 20, 30, 41, 42, 50] - reclass_dict = dict(zip(reclass_from, reclass_to)) - LULC = LULC.copy(data=np.vectorize(reclass_dict.get) - (LULC.values, LULC.values)) - + lulc = reclassify(lulc, bins=reclass_from, new_values=reclass_to) + + return lulc + # TODO write tif From e4ac9effb85efd8874cb7829ef0f7c763947a35e Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Wed, 17 Jan 2024 18:43:43 +0800 Subject: [PATCH 19/31] update with fishnet --- city_metrix/layers/building_classifier.py | 14 +- city_metrix/layers/smart_cities_lulc.py | 174 ++++++++++++---------- 2 files changed, 104 insertions(+), 84 deletions(-) diff --git a/city_metrix/layers/building_classifier.py b/city_metrix/layers/building_classifier.py index 60d4edd..b04ce9e 100644 --- a/city_metrix/layers/building_classifier.py +++ b/city_metrix/layers/building_classifier.py @@ -22,7 +22,6 @@ def __init__(self, geo_file=None, **kwargs): self.geo_file = geo_file def get_data_geo(self): - geo_file = '/home/weiqi_tori/GitHub/wri/cities-cif/buildings-sample-classed_LA.geojson' buildings_sample = gpd.read_file(self.geo_file) buildings_sample.to_crs(epsg=4326, inplace=True) @@ -50,6 +49,9 @@ def get_data_esa_reclass(self, bbox, crs): # Perform the reclassification reclassified_esa = reclassify(esa_world_cover, bins=list(reclass_map.keys()), new_values=list(reclass_map.values())) + # Convert to int8 and chunk the data for Dask processing + reclassified_esa = reclassified_esa.astype(np.int8).chunk({'x': 512, 'y': 512}) + reclassified_esa = reclassified_esa.rio.write_crs(esa_world_cover.rio.crs, inplace=True) esa_1m = reclassified_esa.rio.reproject( @@ -75,6 +77,9 @@ def get_data_ulu(self, bbox, crs, snap_to): for from_val, to_val in mapping.items(): ulu_lulc = ulu_lulc.where(ulu_lulc != from_val, to_val) + # Convert to int8 and chunk the data for Dask processing + ulu_lulc = ulu_lulc.astype(np.int8).chunk({'x': 512, 'y': 512}) + # 1-Non-residential as default ulu_lulc_1m = ulu_lulc.rio.reproject( dst_crs=crs, @@ -89,6 +94,9 @@ def get_data_anbh(self, bbox, crs, snap_to): # Load ANBH layer anbh_data = AverageNetBuildingHeight().get_data(bbox) + # Chunk the data for Dask processing + anbh_data = anbh_data.chunk({'x': 512, 'y': 512}) + anbh_1m = anbh_data.rio.reproject( dst_crs=crs, shape=snap_to.shape, @@ -109,7 +117,7 @@ def rasterize_polygon(self, gdf, snap_to): vector_data=gdf, measurements=["Value"], like=snap_to, - fill=0 + fill=np.int8(0) ).Value return raster.rio.reproject_match(snap_to) @@ -171,7 +179,7 @@ def building_class_tree(self): clf = DecisionTreeClassifier(max_depth=4) # encode labels - buildings_sample['Slope_encoded'] = buildings_sample['Slope'].map({'low': 41, 'high': 42}) + buildings_sample['Slope_encoded'] = buildings_sample['Slope'].map({'low': np.int8(41), 'high': np.int8(42)}) # drop records with NA in Slope buildings_sample = buildings_sample.dropna(subset=['Slope']) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index abfd929..8e1f6d3 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -6,8 +6,9 @@ from sklearn.tree import plot_tree import matplotlib.pyplot as plt from xrspatial.classify import reclassify +import rioxarray -from .layer import Layer, get_utm_zone_epsg +from .layer import Layer, get_utm_zone_epsg, create_fishnet_grid from .open_street_map import OpenStreetMap, OpenStreetMapClass from .building_classifier import BuildingClassifier @@ -20,63 +21,6 @@ def __init__(self, land_cover_class=None, **kwargs): def get_data(self, bbox): crs = get_utm_zone_epsg(bbox) - esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) - - # Open space - open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() - open_space_osm['Value'] = 10 - open_space_1m = BuildingClassifier().rasterize_polygon(open_space_osm, esa_1m) - - - # Water - water_osm = OpenStreetMap(osm_class=OpenStreetMapClass.WATER).get_data(bbox).to_crs(crs).reset_index() - water_osm['Value'] = 20 - water_1m = BuildingClassifier().rasterize_polygon(water_osm, esa_1m) - - - # Roads - roads_osm = OpenStreetMap(osm_class=OpenStreetMapClass.ROAD).get_data(bbox).to_crs(crs).reset_index() - roads_osm['lanes'] = pd.to_numeric(roads_osm['lanes'], errors='coerce') - # Get the average number of lanes per highway class - lanes = (roads_osm.drop(columns='geometry') - .groupby('highway') - # Calculate average and round up - .agg(avg_lanes=('lanes', lambda x: np.ceil(np.nanmean(x)) if not np.isnan(x).all() else np.NaN)) - ) - # Handle NaN values in avg_lanes - lanes['avg_lanes'] = lanes['avg_lanes'].fillna(2) - - # Fill lanes with avg lane value when missing - roads_osm = roads_osm.merge(lanes, on='highway', how='left') - roads_osm['lanes'] = roads_osm['lanes'].fillna(roads_osm['avg_lanes']) - - # Add value field (30) - roads_osm['Value'] = 30 - - # Buffer roads by lanes * 10 ft (3.048 m) - # https://nacto.org/publication/urban-street-design-guide/street-design-elements/lane-width/#:~:text=wider%20lane%20widths.-,Lane%20widths%20of%2010%20feet%20are%20appropriate%20in%20urban%20areas,be%20used%20in%20each%20direction - # cap is flat to the terminus of the road - # join style is mitred so intersections are squared - roads_osm['geometry'] = roads_osm.apply(lambda row: row['geometry'].buffer( - row['lanes'] * 3.048, - cap_style=CAP_STYLE.flat, - join_style=JOIN_STYLE.mitre), - axis=1 - ) - - roads_1m = BuildingClassifier().rasterize_polygon(roads_osm, esa_1m) - - - # Building - ulu_lulc_1m = BuildingClassifier().get_data_ulu(bbox, crs, esa_1m) - anbh_1m = BuildingClassifier().get_data_anbh(bbox, crs, esa_1m) - - building_osm = OpenStreetMap(osm_class=OpenStreetMapClass.BUILDING).get_data(bbox).to_crs(crs).reset_index() - building_osm['Value'] = building_osm['osmid'] - building_osm_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) - - building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassifier().extract_features(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) - # TODO # roof slope model # buildings sample classed LA for testing @@ -92,29 +36,97 @@ def get_data(self, bbox): # accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) # print(f"Accuracy: {accuracy}") - building_osm['Value'] = clf.predict(building_osm[['ULU', 'ANBH', 'Area_m']]) - building_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) - - - # Parking - parking_osm = OpenStreetMap(osm_class=OpenStreetMapClass.PARKING).get_data(bbox).to_crs(crs).reset_index() - parking_osm['Value'] = 50 - parking_1m = BuildingClassifier().rasterize_polygon(parking_osm, esa_1m) + ZONES = create_fishnet_grid(*bbox, 0.1).reset_index() + lulc_tiles = [] + + for i in range(len(ZONES)): + print(i) + bbox = ZONES.iloc[[i]].total_bounds + + esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) + + # Open space + open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() + open_space_osm['Value'] = np.int8(10) + open_space_1m = BuildingClassifier().rasterize_polygon(open_space_osm, esa_1m) + + + # Water + water_osm = OpenStreetMap(osm_class=OpenStreetMapClass.WATER).get_data(bbox).to_crs(crs).reset_index() + water_osm['Value'] = np.int8(20) + water_1m = BuildingClassifier().rasterize_polygon(water_osm, esa_1m) + + + # Roads + roads_osm = OpenStreetMap(osm_class=OpenStreetMapClass.ROAD).get_data(bbox).to_crs(crs).reset_index() + roads_osm['lanes'] = pd.to_numeric(roads_osm['lanes'], errors='coerce') + # Get the average number of lanes per highway class + lanes = (roads_osm.drop(columns='geometry') + .groupby('highway') + # Calculate average and round up + .agg(avg_lanes=('lanes', lambda x: np.ceil(np.nanmean(x)) if not np.isnan(x).all() else np.NaN)) + ) + # Handle NaN values in avg_lanes + lanes['avg_lanes'] = lanes['avg_lanes'].fillna(2) + + # Fill lanes with avg lane value when missing + roads_osm = roads_osm.merge(lanes, on='highway', how='left') + roads_osm['lanes'] = roads_osm['lanes'].fillna(roads_osm['avg_lanes']) + + # Add value field (30) + roads_osm['Value'] = np.int8(30) + + # Buffer roads by lanes * 10 ft (3.048 m) + # https://nacto.org/publication/urban-street-design-guide/street-design-elements/lane-width/#:~:text=wider%20lane%20widths.-,Lane%20widths%20of%2010%20feet%20are%20appropriate%20in%20urban%20areas,be%20used%20in%20each%20direction + # cap is flat to the terminus of the road + # join style is mitred so intersections are squared + roads_osm['geometry'] = roads_osm.apply(lambda row: row['geometry'].buffer( + row['lanes'] * 3.048, + cap_style=CAP_STYLE.flat, + join_style=JOIN_STYLE.mitre), + axis=1 + ) + + roads_1m = BuildingClassifier().rasterize_polygon(roads_osm, esa_1m) + + + # Building + ulu_lulc_1m = BuildingClassifier().get_data_ulu(bbox, crs, esa_1m) + anbh_1m = BuildingClassifier().get_data_anbh(bbox, crs, esa_1m) + + building_osm = OpenStreetMap(osm_class=OpenStreetMapClass.BUILDING).get_data(bbox).to_crs(crs).reset_index() + building_osm['Value'] = building_osm['osmid'] + building_osm_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) + + building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassifier().extract_features(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) + + building_osm['Value'] = clf.predict(building_osm[['ULU', 'ANBH', 'Area_m']]) + building_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) + + + # Parking + parking_osm = OpenStreetMap(osm_class=OpenStreetMapClass.PARKING).get_data(bbox).to_crs(crs).reset_index() + parking_osm['Value'] = np.int8(50) + parking_1m = BuildingClassifier().rasterize_polygon(parking_osm, esa_1m) + + # TODO + # Combine rasters + datasets = [esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m] + # not all raster has 'time', concatenate without 'time' dimension + aligned_datasets = [ds.drop_vars('time', errors='ignore') for ds in datasets] + # use chunk 512x512 + aligned_datasets = [ds.chunk({'x': 512, 'y': 512}) for ds in aligned_datasets] + lulc = xr.concat(aligned_datasets, dim='Value').max(dim='Value') + + # Reclass ESA water (4) to 20 + reclass_from = [1, 2, 3, 4, 10, 20, 30, 41, 42, 50] + reclass_to = [1, 2, 3, 20, 10, 20, 30, 41, 42, 50] + lulc = reclassify(lulc, bins=reclass_from, new_values=reclass_to).astype(np.int8) + + lulc_tiles.append(lulc) + + lulc_mosaiced = rioxarray.merge(lulc_tiles) - # TODO - # Combine rasters - datasets = [esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m] - # not all raster has 'time', concatenate without 'time' dimension - aligned_datasets = [ds.drop_vars('time', errors='ignore') for ds in datasets] - # use chunk 512x512 - aligned_datasets = [ds.chunk({'x': 512, 'y': 512}) for ds in aligned_datasets] - lulc = xr.concat(aligned_datasets, dim='Value').max(dim='Value') - - # Reclass ESA water (4) to 20 - reclass_from = [1, 2, 3, 4, 10, 20, 30, 41, 42, 50] - reclass_to = [1, 2, 3, 20, 10, 20, 30, 41, 42, 50] - lulc = reclassify(lulc, bins=reclass_from, new_values=reclass_to) - - return lulc + return lulc_mosaiced # TODO write tif From 68a6aefbbb06a0ed07992ef80070e380c45f67bf Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Thu, 1 Feb 2024 23:35:27 +0800 Subject: [PATCH 20/31] deal with empty ulu layer --- city_metrix/layers/smart_cities_lulc.py | 21 +++++++++++++-------- city_metrix/layers/urban_land_use.py | 16 ++++++++++------ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 8e1f6d3..2c41c30 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -7,6 +7,7 @@ import matplotlib.pyplot as plt from xrspatial.classify import reclassify import rioxarray +import psutil from .layer import Layer, get_utm_zone_epsg, create_fishnet_grid from .open_street_map import OpenStreetMap, OpenStreetMapClass @@ -27,9 +28,9 @@ def get_data(self, bbox): buildings_sample = BuildingClassifier(geo_file = 'buildings-sample-classed_LA.geojson') clf = buildings_sample.building_class_tree() - plt.figure(figsize=(20, 10)) - plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) - plt.show() + # plt.figure(figsize=(20, 10)) + # plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) + # plt.show() # Predict and evaluate # y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) @@ -40,7 +41,9 @@ def get_data(self, bbox): lulc_tiles = [] for i in range(len(ZONES)): - print(i) + process = psutil.Process() + print(f'tile: {i}, memory: {process.memory_info().rss/10 ** 9} GB') + bbox = ZONES.iloc[[i]].total_bounds esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) @@ -97,7 +100,6 @@ def get_data(self, bbox): building_osm = OpenStreetMap(osm_class=OpenStreetMapClass.BUILDING).get_data(bbox).to_crs(crs).reset_index() building_osm['Value'] = building_osm['osmid'] building_osm_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) - building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassifier().extract_features(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) building_osm['Value'] = clf.predict(building_osm[['ULU', 'ANBH', 'Area_m']]) @@ -109,9 +111,12 @@ def get_data(self, bbox): parking_osm['Value'] = np.int8(50) parking_1m = BuildingClassifier().rasterize_polygon(parking_osm, esa_1m) - # TODO + # osm_df = pd.concat([open_space_osm[['geometry','Value']], water_osm[['geometry','Value']], roads_osm[['geometry','Value']], building_osm[['geometry','Value']], parking_osm[['geometry','Value']]], axis=0) + # osm_1m = BuildingClassifier().rasterize_polygon(osm_df, esa_1m) + # Combine rasters datasets = [esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m] + # datasets = [esa_1m, osm_1m] # not all raster has 'time', concatenate without 'time' dimension aligned_datasets = [ds.drop_vars('time', errors='ignore') for ds in datasets] # use chunk 512x512 @@ -124,9 +129,9 @@ def get_data(self, bbox): lulc = reclassify(lulc, bins=reclass_from, new_values=reclass_to).astype(np.int8) lulc_tiles.append(lulc) + # lulc_tiles.append(f'tile_{i}.tif') + # lulc.rio.to_raster(f'tile_{i}.tif') lulc_mosaiced = rioxarray.merge(lulc_tiles) return lulc_mosaiced - - # TODO write tif diff --git a/city_metrix/layers/urban_land_use.py b/city_metrix/layers/urban_land_use.py index d48b057..e2b82e3 100644 --- a/city_metrix/layers/urban_land_use.py +++ b/city_metrix/layers/urban_land_use.py @@ -14,13 +14,17 @@ def __init__(self, band='lulc', **kwargs): def get_data(self, bbox): crs = get_utm_zone_epsg(bbox) dataset = ee.ImageCollection("projects/wri-datalab/cities/urban_land_use/V1") - ulu = (dataset - .filterBounds(ee.Geometry.BBox(*bbox)) - .select(self.band) - .reduce(ee.Reducer.firstNonNull()) - .rename('lulc') - ) + if dataset.filterBounds(ee.Geometry.BBox(*bbox)).size().getInfo() == 0: + ulu = ee.Image.constant(1).clip(ee.Geometry.BBox(*bbox)).rename('lulc') + else: + ulu = (dataset + .filterBounds(ee.Geometry.BBox(*bbox)) + .select(self.band) + .reduce(ee.Reducer.firstNonNull()) + .rename('lulc') + ) + ds = xr.open_dataset( ee.ImageCollection(ulu), engine='ee', From 7a6af2821d96649dc483642012778975c7a267de Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Wed, 7 Feb 2024 16:53:05 +0800 Subject: [PATCH 21/31] update building classifier, ulu and osm layer --- city_metrix/layers/building_classifier.py | 20 ++++++--- city_metrix/layers/open_street_map.py | 4 +- city_metrix/layers/smart_cities_lulc.py | 51 ++++++++++++++--------- city_metrix/layers/urban_land_use.py | 17 +++++--- 4 files changed, 60 insertions(+), 32 deletions(-) diff --git a/city_metrix/layers/building_classifier.py b/city_metrix/layers/building_classifier.py index b04ce9e..ea88afd 100644 --- a/city_metrix/layers/building_classifier.py +++ b/city_metrix/layers/building_classifier.py @@ -177,19 +177,29 @@ def building_class_tree(self): buildings_sample[['ULU', 'ANBH', 'Area_m']] = buildings_sample.to_crs(crs).apply( lambda row: self.extract_features(row, buildings_sample_1m, 'ID', ulu_lulc_1m, anbh_1m), axis=1) - clf = DecisionTreeClassifier(max_depth=4) + # TODO: classifier parameters + clf = DecisionTreeClassifier() # encode labels buildings_sample['Slope_encoded'] = buildings_sample['Slope'].map({'low': np.int8(41), 'high': np.int8(42)}) # drop records with NA in Slope - buildings_sample = buildings_sample.dropna(subset=['Slope']) + buildings_sample = buildings_sample.dropna(subset=['Slope']).query('Area_m < 40000').reset_index() - clf.fit(buildings_sample[['ULU', 'ANBH', 'Area_m']], buildings_sample['Slope_encoded']) + # Set the random seed for reproducibility + np.random.seed(5511) + # 70% samples for training + num_train = int(0.7 * len(buildings_sample)) + train_indices = np.random.choice(len(buildings_sample), size=num_train, replace=False) + # Select these rows for the training set + train_buildings_sample = buildings_sample.iloc[train_indices] + # Select the remaining rows for the testing set + test_buildings_sample = buildings_sample.drop(train_indices) + + clf.fit(train_buildings_sample[['ULU', 'ANBH', 'Area_m']], train_buildings_sample['Slope_encoded']) # plt.figure(figsize=(20, 10)) # plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) # plt.show() - - # Predict and evaluate + # # Predict and evaluate # y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) # accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) # print(f"Accuracy: {accuracy}") diff --git a/city_metrix/layers/open_street_map.py b/city_metrix/layers/open_street_map.py index ad23ce3..36b8baa 100644 --- a/city_metrix/layers/open_street_map.py +++ b/city_metrix/layers/open_street_map.py @@ -27,11 +27,11 @@ def __init__(self, osm_class=None, **kwargs): self.osm_class = osm_class def get_data(self, bbox): - north, south, east, west = bbox[3], bbox[1], bbox[0], bbox[2] + north, south, east, west = bbox[3], bbox[1], bbox[0], bbox[2] # Set the OSMnx configuration to disable caching ox.settings.use_cache = False try: - osm_feature = ox.features_from_bbox(north, south, east, west, self.osm_class.value) + osm_feature = ox.features_from_bbox(bbox=(north, south, east, west), tags=self.osm_class.value) # When no feature in bbox, return an empty gdf except ox._errors.InsufficientResponseError as e: osm_feature = gpd.GeoDataFrame(pd.DataFrame(columns=['osmid', 'geometry']+list(self.osm_class.value.keys())), geometry='geometry') diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 2c41c30..90f1bed 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -8,12 +8,24 @@ from xrspatial.classify import reclassify import rioxarray import psutil +import warnings +warnings.filterwarnings('ignore',category=UserWarning) from .layer import Layer, get_utm_zone_epsg, create_fishnet_grid from .open_street_map import OpenStreetMap, OpenStreetMapClass from .building_classifier import BuildingClassifier +from cartoframes.auth import set_default_credentials +from cartoframes import read_carto +def read_carto_city(city_name: str): + set_default_credentials(username='wri-cities', api_key='default_public') + city_df = read_carto(f"SELECT * FROM smart_surfaces_urban_areas WHERE name10 = '{city_name}'") + return city_df + +columbia = read_carto_city('Columbia_SC') +bbox = columbia.reset_index().total_bounds + class SmartCitiesLULC(Layer): def __init__(self, land_cover_class=None, **kwargs): super().__init__(**kwargs) @@ -22,23 +34,15 @@ def __init__(self, land_cover_class=None, **kwargs): def get_data(self, bbox): crs = get_utm_zone_epsg(bbox) - # TODO - # roof slope model + # TODO: roof slope model # buildings sample classed LA for testing buildings_sample = BuildingClassifier(geo_file = 'buildings-sample-classed_LA.geojson') clf = buildings_sample.building_class_tree() - # plt.figure(figsize=(20, 10)) - # plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) - # plt.show() - - # Predict and evaluate - # y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) - # accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) - # print(f"Accuracy: {accuracy}") - ZONES = create_fishnet_grid(*bbox, 0.1).reset_index() - lulc_tiles = [] + # Initialize a dictionary to hold counts of unique lulc types + unique_lulc_counts = {} + total_count = 0 for i in range(len(ZONES)): process = psutil.Process() @@ -128,10 +132,19 @@ def get_data(self, bbox): reclass_to = [1, 2, 3, 20, 10, 20, 30, 41, 42, 50] lulc = reclassify(lulc, bins=reclass_from, new_values=reclass_to).astype(np.int8) - lulc_tiles.append(lulc) - # lulc_tiles.append(f'tile_{i}.tif') - # lulc.rio.to_raster(f'tile_{i}.tif') - - lulc_mosaiced = rioxarray.merge(lulc_tiles) - - return lulc_mosaiced + # Flatten the array as a 1D array + flattened_array = lulc.values.flatten() + # Count occurrences of each unique value + values, counts = np.unique(flattened_array, return_counts=True) + # Update the dictionary with counts, summing counts for existing keys (unique lulc) + for value, count in zip(values, counts): + if value in unique_lulc_counts: + unique_lulc_counts[value] += count + else: + unique_lulc_counts[value] = count + # Update total pixel count + total_count += flattened_array.size + + lulc_area_pct = {key: value/total_count for key, value in unique_lulc_counts.items()} + + return lulc_area_pct diff --git a/city_metrix/layers/urban_land_use.py b/city_metrix/layers/urban_land_use.py index 9ff8cb1..58d58d3 100644 --- a/city_metrix/layers/urban_land_use.py +++ b/city_metrix/layers/urban_land_use.py @@ -13,15 +13,20 @@ def __init__(self, band='lulc', **kwargs): def get_data(self, bbox): dataset = ee.ImageCollection("projects/wri-datalab/cities/urban_land_use/V1") + # ImageCollection didn't cover the globe if dataset.filterBounds(ee.Geometry.BBox(*bbox)).size().getInfo() == 0: - ulu = ee.Image.constant(1).clip(ee.Geometry.BBox(*bbox)).rename('lulc') + ulu = ee.ImageCollection(ee.Image.constant(1) + .clip(ee.Geometry.BBox(*bbox)) + .rename('lulc') + ) else: ulu = ee.ImageCollection(dataset - .filterBounds(ee.Geometry.BBox(*bbox)) - .select(self.band) - .reduce(ee.Reducer.firstNonNull()) - .rename('lulc') - ) + .filterBounds(ee.Geometry.BBox(*bbox)) + .select(self.band) + .reduce(ee.Reducer.firstNonNull()) + .rename('lulc') + ) data = get_image_collection(ulu, bbox, 5, "urban land use").lulc + return data From 613fc5b386d73cb0534f86f478248bb88fc948b5 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Tue, 27 Feb 2024 10:56:35 +0800 Subject: [PATCH 22/31] add open buildings and update to V2 --- city_metrix/layers/building_classifier.py | 139 ++++++++++------------ city_metrix/layers/open_buildings.py | 44 +++++++ city_metrix/layers/open_street_map.py | 2 +- city_metrix/layers/smart_cities_lulc.py | 73 +++++++----- city_metrix/layers/urban_land_use.py | 2 +- 5 files changed, 149 insertions(+), 111 deletions(-) create mode 100644 city_metrix/layers/open_buildings.py diff --git a/city_metrix/layers/building_classifier.py b/city_metrix/layers/building_classifier.py index ea88afd..d7ec284 100644 --- a/city_metrix/layers/building_classifier.py +++ b/city_metrix/layers/building_classifier.py @@ -9,11 +9,14 @@ from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt from xrspatial.classify import reclassify +from exactextract import exact_extract from .layer import Layer, get_utm_zone_epsg from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass from .urban_land_use import UrbanLandUse from .average_net_building_height import AverageNetBuildingHeight +from .open_street_map import OpenStreetMap, OpenStreetMapClass +from .open_buildings import OpenBuildings class BuildingClassifier(Layer): @@ -38,10 +41,10 @@ def get_data_esa_reclass(self, bbox, crs): EsaWorldCoverClass.CROPLAND.value: 1, EsaWorldCoverClass.BUILT_UP.value: 2, EsaWorldCoverClass.BARE_OR_SPARSE_VEGETATION.value: 3, - EsaWorldCoverClass.SNOW_AND_ICE.value: 4, - EsaWorldCoverClass.PERMANENT_WATER_BODIES.value: 4, - EsaWorldCoverClass.HERBACEOUS_WET_LAND.value: 4, - EsaWorldCoverClass.MANGROVES.value: 4, + EsaWorldCoverClass.SNOW_AND_ICE.value: 20, + EsaWorldCoverClass.PERMANENT_WATER_BODIES.value: 20, + EsaWorldCoverClass.HERBACEOUS_WET_LAND.value: 20, + EsaWorldCoverClass.MANGROVES.value: 20, EsaWorldCoverClass.MOSS_AND_LICHEN.value: 3 # Add other mappings as needed } @@ -65,27 +68,29 @@ def get_data_esa_reclass(self, bbox, crs): def get_data_ulu(self, bbox, crs, snap_to): # Read ULU land cover, filter to city, select lulc band ulu_lulc = UrbanLandUse(band='lulc').get_data(bbox) - ulu_roads = UrbanLandUse(band='road').get_data(bbox) - # Create road mask of 50 - # Typical threshold for creating road mask - road_mask = ulu_roads >= 50 - ulu_lulc = ulu_lulc.where(~road_mask, 6) + ###### ulu_roads = UrbanLandUse(band='road').get_data(bbox) + ####### Create road mask of 50 + ####### Typical threshold for creating road mask + ####### road_mask = ulu_roads >= 50 + ####### ulu_lulc = ulu_lulc.where(~road_mask, 6) + # 0-Unclassified: 0 (open space) # 1-Non-residential: 0 (open space), 1 (non-res) # 2-Residential: 2 (Atomistic), 3 (Informal), 4 (Formal), 5 (Housing project) - # 3-Roads: 6 (Roads) - mapping = {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 2, 6: 3} + ####### 3-Roads: 6 (Roads) + mapping = {0: 0, 1: 1, 2: 2, 3: 2, 4: 2, 5: 2} for from_val, to_val in mapping.items(): ulu_lulc = ulu_lulc.where(ulu_lulc != from_val, to_val) # Convert to int8 and chunk the data for Dask processing ulu_lulc = ulu_lulc.astype(np.int8).chunk({'x': 512, 'y': 512}) - # 1-Non-residential as default + ####### 1-Non-residential as default + # 0-Unclassified as nodata ulu_lulc_1m = ulu_lulc.rio.reproject( dst_crs=crs, shape=snap_to.shape, resampling=Resampling.nearest, - nodata=1 + nodata=0 ) return ulu_lulc_1m @@ -106,6 +111,25 @@ def get_data_anbh(self, bbox, crs, snap_to): return anbh_1m + def get_data_buildings(self, bbox, crs): + # OSM buildings + building_osm = OpenStreetMap(osm_class=OpenStreetMapClass.BUILDING).get_data(bbox).to_crs(crs).reset_index(drop=True) + # Google-Microsoft Open Buildings Dataset buildings + openbuilds = OpenBuildings(country='USA').get_data(bbox).to_crs(crs).reset_index(drop=True) + + # Intersect buildings and keep the open buildings that don't intersect OSM buildings + intersect_buildings = gpd.sjoin(building_osm, openbuilds, how='inner', predicate='intersects') + openbuilds_non_intersect = openbuilds.loc[~openbuilds.index.isin(intersect_buildings.index)] + + buildings = pd.concat([building_osm['geometry'], openbuilds_non_intersect['geometry']], ignore_index=True).reset_index() + # Get rid of any 3d geometries that cause a problem + buildings = buildings[~buildings['geometry'].apply(lambda geom: 'Z' in geom.geom_type)] + + # Value not start with 0 + buildings['Value'] = buildings['index'] + 1 + + return buildings + def rasterize_polygon(self, gdf, snap_to): if gdf.empty: raster = np.full(snap_to.shape, 0, dtype=np.int8) @@ -123,85 +147,48 @@ def rasterize_polygon(self, gdf, snap_to): return raster.rio.reproject_match(snap_to) - # Extract values to buildings as coverage fractions - # Extract average of pixel values to buildings - # Reproject to local state plane and calculate area - - def extract_features(self, row, buildings_sample_1m, id_col, ulu_lulc_1m, anbh_1m): - # 3 features: - # majority of Urban Land Use(ULU) class - # mean Average Net Building Height(ANBH) - # area of the building - mask = buildings_sample_1m == row[id_col] - masked_ulu = ulu_lulc_1m.values[mask] - - # Extract values to buildings as coverage fractions - # when there is no majority class, use 1-Non-residential as default - if masked_ulu.size == 0: - majority_ulu = 1 - else: - unique, counts = np.unique(masked_ulu, return_counts=True) - sorted_indices = np.argsort(-counts) # Sort by descending order - - # Apply your specific logic - if unique[sorted_indices[0]] != 3: - majority_ulu = unique[sorted_indices[0]] - elif len(sorted_indices) > 1: - majority_ulu = unique[sorted_indices[1]] - else: - majority_ulu = 1 # Default to 1 non-residential - - # Extract average of pixel values to buildings - masked_anbh = anbh_1m.values[mask] - if masked_anbh.size == 0: - mean_anbh = 0 - else: - mean_anbh = np.mean(masked_anbh) - - # Reproject to local state plane and calculate area - area_m = row.geometry.area - - return pd.Series([majority_ulu, mean_anbh, area_m]) - def building_class_tree(self): buildings_sample = self.get_data_geo() bbox = buildings_sample.reset_index().total_bounds crs = get_utm_zone_epsg(bbox) - esa_1m = self.get_data_esa_reclass(bbox, crs) - buildings_sample['Value'] = buildings_sample['ID'] - buildings_sample_1m = self.rasterize_polygon(buildings_sample, esa_1m) - ulu_lulc_1m = self.get_data_ulu(bbox, crs, esa_1m) - anbh_1m = self.get_data_anbh(bbox, crs, esa_1m) - - buildings_sample[['ULU', 'ANBH', 'Area_m']] = buildings_sample.to_crs(crs).apply( - lambda row: self.extract_features(row, buildings_sample_1m, 'ID', ulu_lulc_1m, anbh_1m), axis=1) + # building_sample has extracted data and saved in geojson + # esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) + # ulu_lulc_1m = self.get_data_ulu(bbox, crs, esa_1m) + # anbh_1m = self.get_data_anbh(bbox, crs, esa_1m) + + # # Extract 3 features for buildings: + # # majority of Urban Land Use(ULU) class + # # mean Average Net Building Height(ANBH) + # # area of the building + # buildings_sample['ULU'] = exact_extract(ulu_lulc_1m, buildings_sample, ["majority"], output='pandas')['majority'] + # buildings_sample['ANBH'] = exact_extract(anbh_1m, buildings_sample, ["mean"], output='pandas')['mean'] + # buildings_sample['Area_m'] = buildings_sample.geometry.area # TODO: classifier parameters - clf = DecisionTreeClassifier() + clf = DecisionTreeClassifier(max_depth=5) # encode labels - buildings_sample['Slope_encoded'] = buildings_sample['Slope'].map({'low': np.int8(41), 'high': np.int8(42)}) - # drop records with NA in Slope - buildings_sample = buildings_sample.dropna(subset=['Slope']).query('Area_m < 40000').reset_index() - - # Set the random seed for reproducibility - np.random.seed(5511) - # 70% samples for training - num_train = int(0.7 * len(buildings_sample)) - train_indices = np.random.choice(len(buildings_sample), size=num_train, replace=False) + buildings_sample['Slope_encoded'] = buildings_sample['Slope'].map({'low': np.int8(42), 'high': np.int8(40)}) + # Select these rows for the training set - train_buildings_sample = buildings_sample.iloc[train_indices] + build_train = buildings_sample[buildings_sample['Model']=='training'] # Select the remaining rows for the testing set - test_buildings_sample = buildings_sample.drop(train_indices) + build_test = buildings_sample[buildings_sample['Model']=='testing'] - clf.fit(train_buildings_sample[['ULU', 'ANBH', 'Area_m']], train_buildings_sample['Slope_encoded']) + clf.fit(build_train[['ULU', 'ANBH', 'Area_m']], build_train['Slope_encoded']) # plt.figure(figsize=(20, 10)) # plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) # plt.show() # # Predict and evaluate - # y_pred = clf.predict(buildings_sample[['ULU', 'ANBH', 'Area_m']]) - # accuracy = accuracy_score(buildings_sample['Slope_encoded'], y_pred) + # y_pred = clf.predict(build_train[['ULU', 'ANBH', 'Area_m']]) + # accuracy = accuracy_score(build_train['Slope_encoded'], y_pred) + # print(f"Accuracy: {accuracy}") + # len(build_train[build_train['Slope']==build_train['pred']])/len(build_train) + + # y_pred = clf.predict(build_test[['ULU', 'ANBH', 'Area_m']]) + # accuracy = accuracy_score(build_test['Slope_encoded'], y_pred) # print(f"Accuracy: {accuracy}") + # len(build_test[build_test['Slope']==build_test['pred']])/len(build_test) return clf diff --git a/city_metrix/layers/open_buildings.py b/city_metrix/layers/open_buildings.py new file mode 100644 index 0000000..2cf31b8 --- /dev/null +++ b/city_metrix/layers/open_buildings.py @@ -0,0 +1,44 @@ +import ee +import geemap +import pandas as pd +import geopandas as gpd +from shapely.geometry import Polygon, MultiPolygon + +from .layer import Layer + + +class OpenBuildings(Layer): + def __init__(self, country='USA', **kwargs): + super().__init__(**kwargs) + self.country = country + + def get_data(self, bbox): + dataset = ee.FeatureCollection(f"projects/sat-io/open-datasets/VIDA_COMBINED/{self.country}") + open_buildings = dataset.filterBounds(ee.Geometry.BBox(*bbox)) + openbuilds = geemap.ee_to_gdf(open_buildings).reset_index() + + # filter out geom_type GeometryCollection + gc_openbuilds = openbuilds[openbuilds.geom_type == 'GeometryCollection'] + if len(gc_openbuilds) > 0: + # select Polygons and Multipolygons from GeometryCollection + gc_openbuilds['geometries'] = gc_openbuilds.apply(lambda x: [g for g in x.geometry.geoms], axis=1) + gc_openbuilds_polygon = [] + # iterate over each row in gc_openbuilds + for index, row in gc_openbuilds.iterrows(): + for geom in row['geometries']: + # Check if the geometry is a Polygon or MultiPolygon + if isinstance(geom, Polygon) or isinstance(geom, MultiPolygon): + # Create a new row with the same attributes as the original row, but with the Polygon geometry + new_row = row.drop(['geometry', 'geometries']) + new_row['geometry'] = geom + gc_openbuilds_polygon.append(new_row) + if len(gc_openbuilds_polygon) > 0: + # convert list to geodataframe + gc_openbuilds_polygon = gpd.GeoDataFrame(gc_openbuilds_polygon, geometry='geometry') + # replace GeometryCollection with Polygon, merge back to openbuilds + openbuilds = openbuilds[openbuilds.geom_type != 'GeometryCollection'] + openbuilds = pd.concat([openbuilds, gc_openbuilds_polygon], ignore_index=True).reset_index() + else: + openbuilds = openbuilds[openbuilds.geom_type != 'GeometryCollection'].reset_index() + + return openbuilds diff --git a/city_metrix/layers/open_street_map.py b/city_metrix/layers/open_street_map.py index 36b8baa..a56ff6b 100644 --- a/city_metrix/layers/open_street_map.py +++ b/city_metrix/layers/open_street_map.py @@ -9,7 +9,7 @@ class OpenStreetMapClass(Enum): OPEN_SPACE = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'], 'boundary': ['protected_area', 'national_park']} - OPEN_SPACE_HEAT = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], + OPEN_SPACE_HEAT = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], 'boundary': ['protected_area', 'national_park', 'forest_compartment', 'forest']} WATER = {'water': True, 'natural': ['water'], diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 90f1bed..6c26e85 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -1,13 +1,13 @@ import xarray as xr import numpy as np import pandas as pd +import geopandas as gpd from shapely.geometry import CAP_STYLE, JOIN_STYLE from sklearn.metrics import accuracy_score from sklearn.tree import plot_tree import matplotlib.pyplot as plt -from xrspatial.classify import reclassify -import rioxarray import psutil +from exactextract import exact_extract import warnings warnings.filterwarnings('ignore',category=UserWarning) @@ -15,16 +15,9 @@ from .open_street_map import OpenStreetMap, OpenStreetMapClass from .building_classifier import BuildingClassifier - -from cartoframes.auth import set_default_credentials -from cartoframes import read_carto -def read_carto_city(city_name: str): - set_default_credentials(username='wri-cities', api_key='default_public') - city_df = read_carto(f"SELECT * FROM smart_surfaces_urban_areas WHERE name10 = '{city_name}'") - return city_df - -columbia = read_carto_city('Columbia_SC') -bbox = columbia.reset_index().total_bounds +ssc = gpd.read_file('SSC_CensusUrbanAreas2020.shp') +san_antonio = ssc[ssc['NAME20'] == 'San Antonio, TX'] +bbox = san_antonio.reset_index().total_bounds class SmartCitiesLULC(Layer): def __init__(self, land_cover_class=None, **kwargs): @@ -36,7 +29,7 @@ def get_data(self, bbox): # TODO: roof slope model # buildings sample classed LA for testing - buildings_sample = BuildingClassifier(geo_file = 'buildings-sample-classed_LA.geojson') + buildings_sample = BuildingClassifier(geo_file = 'V2-building-class-data.geojson') clf = buildings_sample.building_class_tree() ZONES = create_fishnet_grid(*bbox, 0.1).reset_index() @@ -55,13 +48,11 @@ def get_data(self, bbox): # Open space open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() open_space_osm['Value'] = np.int8(10) - open_space_1m = BuildingClassifier().rasterize_polygon(open_space_osm, esa_1m) # Water water_osm = OpenStreetMap(osm_class=OpenStreetMapClass.WATER).get_data(bbox).to_crs(crs).reset_index() water_osm['Value'] = np.int8(20) - water_1m = BuildingClassifier().rasterize_polygon(water_osm, esa_1m) # Roads @@ -94,43 +85,59 @@ def get_data(self, bbox): axis=1 ) - roads_1m = BuildingClassifier().rasterize_polygon(roads_osm, esa_1m) - # Building ulu_lulc_1m = BuildingClassifier().get_data_ulu(bbox, crs, esa_1m) anbh_1m = BuildingClassifier().get_data_anbh(bbox, crs, esa_1m) + # get building features + buildings = BuildingClassifier().get_data_buildings(bbox, crs) + # extract ULU, ANBH, and Area_m + buildings['ULU'] = exact_extract(ulu_lulc_1m, buildings, ["majority"], output='pandas')['majority'] + buildings['ANBH'] = exact_extract(anbh_1m, buildings, ["mean"], output='pandas')['mean'] + buildings['Area_m'] = buildings.geometry.area + # classify buildings + unclassed_buildings = buildings[buildings['ULU'] == 0] + classed_buildings = buildings[buildings['ULU'] != 0] - building_osm = OpenStreetMap(osm_class=OpenStreetMapClass.BUILDING).get_data(bbox).to_crs(crs).reset_index() - building_osm['Value'] = building_osm['osmid'] - building_osm_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) - building_osm[['ULU', 'ANBH', 'Area_m']] = building_osm.apply(lambda row: BuildingClassifier().extract_features(row, building_osm_1m, 'osmid', ulu_lulc_1m, anbh_1m), axis=1) - - building_osm['Value'] = clf.predict(building_osm[['ULU', 'ANBH', 'Area_m']]) - building_1m = BuildingClassifier().rasterize_polygon(building_osm, esa_1m) + if len(classed_buildings) > 0: + classed_buildings['Value'] = clf.predict(classed_buildings[['ULU', 'ANBH', 'Area_m']]) + # Define conditions and choices + case_when_class = [ + # "residential" & "high" + (classed_buildings['Value'] == 40) & (classed_buildings['ULU'] == 2), + # "non-residential" & "high" + (classed_buildings['Value'] == 40) & (classed_buildings['ULU'] == 1), + # "residential" & "low" + (classed_buildings['Value'] == 42) & (classed_buildings['ULU'] == 2), + # "non-residential" & "low" + (classed_buildings['Value'] == 42) & (classed_buildings['ULU'] == 1) + ] + case_when_value = [40, 41, 42, 43] + classed_buildings['Value'] = np.select(case_when_class, case_when_value, default=44) + unclassed_buildings['Value'] = 44 + buildings = pd.concat([classed_buildings, unclassed_buildings]) + else: + buildings['Value'] = 44 # Parking parking_osm = OpenStreetMap(osm_class=OpenStreetMapClass.PARKING).get_data(bbox).to_crs(crs).reset_index() parking_osm['Value'] = np.int8(50) - parking_1m = BuildingClassifier().rasterize_polygon(parking_osm, esa_1m) - # osm_df = pd.concat([open_space_osm[['geometry','Value']], water_osm[['geometry','Value']], roads_osm[['geometry','Value']], building_osm[['geometry','Value']], parking_osm[['geometry','Value']]], axis=0) - # osm_1m = BuildingClassifier().rasterize_polygon(osm_df, esa_1m) + + # combine features: open space, water, road, building, parking + feature_df = pd.concat([open_space_osm[['geometry','Value']], water_osm[['geometry','Value']], roads_osm[['geometry','Value']], buildings[['geometry','Value']], parking_osm[['geometry','Value']]], axis=0) + feature_1m = BuildingClassifier().rasterize_polygon(feature_df, esa_1m) # Combine rasters - datasets = [esa_1m, open_space_1m, roads_1m, water_1m, building_1m, parking_1m] - # datasets = [esa_1m, osm_1m] + datasets = [esa_1m, feature_1m] # not all raster has 'time', concatenate without 'time' dimension aligned_datasets = [ds.drop_vars('time', errors='ignore') for ds in datasets] # use chunk 512x512 aligned_datasets = [ds.chunk({'x': 512, 'y': 512}) for ds in aligned_datasets] lulc = xr.concat(aligned_datasets, dim='Value').max(dim='Value') - # Reclass ESA water (4) to 20 - reclass_from = [1, 2, 3, 4, 10, 20, 30, 41, 42, 50] - reclass_to = [1, 2, 3, 20, 10, 20, 30, 41, 42, 50] - lulc = reclassify(lulc, bins=reclass_from, new_values=reclass_to).astype(np.int8) + lulc.rio.to_raster(f'tile_{i}.tif') # Flatten the array as a 1D array flattened_array = lulc.values.flatten() diff --git a/city_metrix/layers/urban_land_use.py b/city_metrix/layers/urban_land_use.py index 58d58d3..f34408a 100644 --- a/city_metrix/layers/urban_land_use.py +++ b/city_metrix/layers/urban_land_use.py @@ -15,7 +15,7 @@ def get_data(self, bbox): dataset = ee.ImageCollection("projects/wri-datalab/cities/urban_land_use/V1") # ImageCollection didn't cover the globe if dataset.filterBounds(ee.Geometry.BBox(*bbox)).size().getInfo() == 0: - ulu = ee.ImageCollection(ee.Image.constant(1) + ulu = ee.ImageCollection(ee.Image.constant(0) .clip(ee.Geometry.BBox(*bbox)) .rename('lulc') ) From 737e8540d91ac0e188c9cb35bf6fcfec82b23f83 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Mon, 4 Mar 2024 17:41:00 +0800 Subject: [PATCH 23/31] update layers and building classifier --- city_metrix/layers/__init__.py | 1 + .../layers/average_net_building_height.py | 22 +- city_metrix/layers/building_classifier.py | 12 +- city_metrix/layers/esa_world_cover.py | 23 ++- city_metrix/layers/smart_cities_lulc.py | 190 +++++++++--------- 5 files changed, 120 insertions(+), 128 deletions(-) diff --git a/city_metrix/layers/__init__.py b/city_metrix/layers/__init__.py index 4ef9dd6..1869e13 100644 --- a/city_metrix/layers/__init__.py +++ b/city_metrix/layers/__init__.py @@ -13,3 +13,4 @@ from .world_pop import WorldPop from .built_up_height import BuiltUpHeight from .average_net_building_height import AverageNetBuildingHeight +from .open_buildings import OpenBuildings diff --git a/city_metrix/layers/average_net_building_height.py b/city_metrix/layers/average_net_building_height.py index 80ea6ab..a5b26f0 100644 --- a/city_metrix/layers/average_net_building_height.py +++ b/city_metrix/layers/average_net_building_height.py @@ -3,7 +3,7 @@ import xee import ee -from .layer import Layer, get_utm_zone_epsg +from .layer import Layer, get_utm_zone_epsg, get_image_collection class AverageNetBuildingHeight(Layer): @@ -11,29 +11,13 @@ def __init__(self, **kwargs): super().__init__(**kwargs) def get_data(self, bbox): - crs = get_utm_zone_epsg(bbox) # https://ghsl.jrc.ec.europa.eu/ghs_buH2023.php # ANBH is the average height of the built surfaces, USE THIS # AGBH is the amount of built cubic meters per surface unit in the cell # US - ee.ImageCollection("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") # GLOBE - ee.Image("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_GLOBE_R2023A") - - anbh = ee.Image("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_GLOBE_R2023A") - - ds = xr.open_dataset( - ee.ImageCollection(anbh), - engine='ee', - scale=100, - crs=crs, - geometry=ee.Geometry.Rectangle(*bbox), - chunks={'X': 512, 'Y': 512} - ) - with ProgressBar(): - print("Extracting ANBH layer:") - data = ds.b1.compute() + anbh = ee.Image("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_GLOBE_R2023A") + data = get_image_collection(ee.ImageCollection(anbh), bbox, 100, "average net building height").b1 - # get in rioxarray format - data = data.squeeze("time").transpose("Y", "X").rename({'X': 'x', 'Y': 'y'}) - return data diff --git a/city_metrix/layers/building_classifier.py b/city_metrix/layers/building_classifier.py index d7ec284..678d021 100644 --- a/city_metrix/layers/building_classifier.py +++ b/city_metrix/layers/building_classifier.py @@ -32,7 +32,7 @@ def get_data_geo(self): def get_data_esa_reclass(self, bbox, crs): # ESA reclass and upsample - esa_world_cover = EsaWorldCover().get_data(bbox) + esa_world_cover = EsaWorldCover(year=2021).get_data(bbox) reclass_map = { EsaWorldCoverClass.TREE_COVER.value: 1, @@ -95,16 +95,16 @@ def get_data_ulu(self, bbox, crs, snap_to): return ulu_lulc_1m - def get_data_anbh(self, bbox, crs, snap_to): + def get_data_anbh(self, bbox, snap_to): # Load ANBH layer anbh_data = AverageNetBuildingHeight().get_data(bbox) # Chunk the data for Dask processing anbh_data = anbh_data.chunk({'x': 512, 'y': 512}) - anbh_1m = anbh_data.rio.reproject( - dst_crs=crs, - shape=snap_to.shape, + # Use reproject_match, because reproject would raise OneDimensionalRaster with shape (1,1) + anbh_1m = anbh_data.rio.reproject_match( + match_data_array=snap_to, resampling=Resampling.nearest, nodata=0 ) @@ -155,7 +155,7 @@ def building_class_tree(self): # building_sample has extracted data and saved in geojson # esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) # ulu_lulc_1m = self.get_data_ulu(bbox, crs, esa_1m) - # anbh_1m = self.get_data_anbh(bbox, crs, esa_1m) + # anbh_1m = self.get_data_anbh(bbox, esa_1m) # # Extract 3 features for buildings: # # majority of Urban Land Use(ULU) class diff --git a/city_metrix/layers/esa_world_cover.py b/city_metrix/layers/esa_world_cover.py index 7682b31..ed5f823 100644 --- a/city_metrix/layers/esa_world_cover.py +++ b/city_metrix/layers/esa_world_cover.py @@ -25,17 +25,26 @@ class EsaWorldCover(Layer): STAC_COLLECTION_ID = "urn:eop:VITO:ESA_WorldCover_10m_2020_AWS_V1" STAC_ASSET_ID = "ESA_WORLDCOVER_10M_MAP" - def __init__(self, land_cover_class=None, **kwargs): + def __init__(self, land_cover_class=None, year=2020, **kwargs): super().__init__(**kwargs) self.land_cover_class = land_cover_class + self.year = year def get_data(self, bbox): - data = get_image_collection( - ee.ImageCollection("ESA/WorldCover/v100"), - bbox, - 10, - "ESA world cover" - ).Map + if self.year == 2020: + data = get_image_collection( + ee.ImageCollection("ESA/WorldCover/v100"), + bbox, + 10, + "ESA world cover" + ).Map + elif self.year == 2021: + data = get_image_collection( + ee.ImageCollection("ESA/WorldCover/v200"), + bbox, + 10, + "ESA world cover" + ).Map if self.land_cover_class: data = data.where(data == self.land_cover_class.value) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 6c26e85..943ad39 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -3,21 +3,16 @@ import pandas as pd import geopandas as gpd from shapely.geometry import CAP_STYLE, JOIN_STYLE -from sklearn.metrics import accuracy_score -from sklearn.tree import plot_tree -import matplotlib.pyplot as plt +from shapely.geometry import box import psutil from exactextract import exact_extract import warnings warnings.filterwarnings('ignore',category=UserWarning) -from .layer import Layer, get_utm_zone_epsg, create_fishnet_grid +from .layer import Layer, get_utm_zone_epsg, create_fishnet_grid, MAX_TILE_SIZE from .open_street_map import OpenStreetMap, OpenStreetMapClass from .building_classifier import BuildingClassifier -ssc = gpd.read_file('SSC_CensusUrbanAreas2020.shp') -san_antonio = ssc[ssc['NAME20'] == 'San Antonio, TX'] -bbox = san_antonio.reset_index().total_bounds class SmartCitiesLULC(Layer): def __init__(self, land_cover_class=None, **kwargs): @@ -27,36 +22,27 @@ def __init__(self, land_cover_class=None, **kwargs): def get_data(self, bbox): crs = get_utm_zone_epsg(bbox) - # TODO: roof slope model - # buildings sample classed LA for testing + # Roof slope model + # buildings sample from US buildings_sample = BuildingClassifier(geo_file = 'V2-building-class-data.geojson') clf = buildings_sample.building_class_tree() - ZONES = create_fishnet_grid(*bbox, 0.1).reset_index() - # Initialize a dictionary to hold counts of unique lulc types - unique_lulc_counts = {} - total_count = 0 + # ESA world cover + esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) - for i in range(len(ZONES)): - process = psutil.Process() - print(f'tile: {i}, memory: {process.memory_info().rss/10 ** 9} GB') + # Open space + open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() + open_space_osm['Value'] = np.int8(10) - bbox = ZONES.iloc[[i]].total_bounds - esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) + # Water + water_osm = OpenStreetMap(osm_class=OpenStreetMapClass.WATER).get_data(bbox).to_crs(crs).reset_index() + water_osm['Value'] = np.int8(20) - # Open space - open_space_osm = OpenStreetMap(osm_class=OpenStreetMapClass.OPEN_SPACE_HEAT).get_data(bbox).to_crs(crs).reset_index() - open_space_osm['Value'] = np.int8(10) - - # Water - water_osm = OpenStreetMap(osm_class=OpenStreetMapClass.WATER).get_data(bbox).to_crs(crs).reset_index() - water_osm['Value'] = np.int8(20) - - - # Roads - roads_osm = OpenStreetMap(osm_class=OpenStreetMapClass.ROAD).get_data(bbox).to_crs(crs).reset_index() + # Roads + roads_osm = OpenStreetMap(osm_class=OpenStreetMapClass.ROAD).get_data(bbox).to_crs(crs).reset_index() + if len(roads_osm) > 0: roads_osm['lanes'] = pd.to_numeric(roads_osm['lanes'], errors='coerce') # Get the average number of lanes per highway class lanes = (roads_osm.drop(columns='geometry') @@ -84,74 +70,86 @@ def get_data(self, bbox): join_style=JOIN_STYLE.mitre), axis=1 ) + else: + # Add value field (30) + roads_osm['Value'] = np.int8(30) - # Building - ulu_lulc_1m = BuildingClassifier().get_data_ulu(bbox, crs, esa_1m) - anbh_1m = BuildingClassifier().get_data_anbh(bbox, crs, esa_1m) - # get building features - buildings = BuildingClassifier().get_data_buildings(bbox, crs) - # extract ULU, ANBH, and Area_m - buildings['ULU'] = exact_extract(ulu_lulc_1m, buildings, ["majority"], output='pandas')['majority'] - buildings['ANBH'] = exact_extract(anbh_1m, buildings, ["mean"], output='pandas')['mean'] - buildings['Area_m'] = buildings.geometry.area - # classify buildings - unclassed_buildings = buildings[buildings['ULU'] == 0] - classed_buildings = buildings[buildings['ULU'] != 0] + # Building + ulu_lulc_1m = BuildingClassifier().get_data_ulu(bbox, crs, esa_1m) + anbh_1m = BuildingClassifier().get_data_anbh(bbox, esa_1m) + # get building features + buildings = BuildingClassifier().get_data_buildings(bbox, crs) + # extract ULU, ANBH, and Area_m + buildings['ULU'] = exact_extract(ulu_lulc_1m, buildings, ["majority"], output='pandas')['majority'] + buildings['ANBH'] = exact_extract(anbh_1m, buildings, ["mean"], output='pandas')['mean'] + buildings['Area_m'] = buildings.geometry.area + # classify buildings + unclassed_buildings = buildings[buildings['ULU'] == 0] + classed_buildings = buildings[buildings['ULU'] != 0] + + if len(classed_buildings) > 0: + classed_buildings['Value'] = clf.predict(classed_buildings[['ULU', 'ANBH', 'Area_m']]) + # Define conditions and choices + case_when_class = [ + # "residential" & "high" + (classed_buildings['Value'] == 40) & (classed_buildings['ULU'] == 2), + # "non-residential" & "high" + (classed_buildings['Value'] == 40) & (classed_buildings['ULU'] == 1), + # "residential" & "low" + (classed_buildings['Value'] == 42) & (classed_buildings['ULU'] == 2), + # "non-residential" & "low" + (classed_buildings['Value'] == 42) & (classed_buildings['ULU'] == 1) + ] + case_when_value = [40, 41, 42, 43] + classed_buildings['Value'] = np.select(case_when_class, case_when_value, default=44) + unclassed_buildings['Value'] = 44 + buildings = pd.concat([classed_buildings, unclassed_buildings]) + else: + buildings['Value'] = 44 + + + # Parking + parking_osm = OpenStreetMap(osm_class=OpenStreetMapClass.PARKING).get_data(bbox).to_crs(crs).reset_index() + parking_osm['Value'] = np.int8(50) + + + # combine features: open space, water, road, building, parking + feature_df = pd.concat([open_space_osm[['geometry','Value']], water_osm[['geometry','Value']], roads_osm[['geometry','Value']], buildings[['geometry','Value']], parking_osm[['geometry','Value']]], axis=0) + feature_1m = BuildingClassifier().rasterize_polygon(feature_df, esa_1m) + + # Combine rasters + datasets = [esa_1m, feature_1m] + # not all raster has 'time', concatenate without 'time' dimension + aligned_datasets = [ds.drop_vars('time', errors='ignore') for ds in datasets] + # use chunk 512x512 + aligned_datasets = [ds.chunk({'x': 512, 'y': 512}) for ds in aligned_datasets] + lulc = xr.concat(aligned_datasets, dim='Value').max(dim='Value') + + return lulc + + + def write(self, zones, output_path): + bbox = zones.total_bounds + if box(*bbox).area <= MAX_TILE_SIZE**2: + self.get_data(bbox).rio.to_raster(output_path) + else: + ZONES = create_fishnet_grid(*bbox, MAX_TILE_SIZE).reset_index() + # spatial join with fishnet grid and then intersect geometries with fishnet tiles + joined = zones.sjoin(ZONES) + joined["geometry"] = joined.intersection(joined["fishnet_geometry"]) + # remove linestring artifacts due to float precision + gdf = joined[joined.geometry.type.isin(['Polygon', 'MultiPolygon'])] - if len(classed_buildings) > 0: - classed_buildings['Value'] = clf.predict(classed_buildings[['ULU', 'ANBH', 'Area_m']]) - # Define conditions and choices - case_when_class = [ - # "residential" & "high" - (classed_buildings['Value'] == 40) & (classed_buildings['ULU'] == 2), - # "non-residential" & "high" - (classed_buildings['Value'] == 40) & (classed_buildings['ULU'] == 1), - # "residential" & "low" - (classed_buildings['Value'] == 42) & (classed_buildings['ULU'] == 2), - # "non-residential" & "low" - (classed_buildings['Value'] == 42) & (classed_buildings['ULU'] == 1) - ] - case_when_value = [40, 41, 42, 43] - classed_buildings['Value'] = np.select(case_when_class, case_when_value, default=44) - unclassed_buildings['Value'] = 44 - buildings = pd.concat([classed_buildings, unclassed_buildings]) - else: - buildings['Value'] = 44 - - - # Parking - parking_osm = OpenStreetMap(osm_class=OpenStreetMapClass.PARKING).get_data(bbox).to_crs(crs).reset_index() - parking_osm['Value'] = np.int8(50) - - - # combine features: open space, water, road, building, parking - feature_df = pd.concat([open_space_osm[['geometry','Value']], water_osm[['geometry','Value']], roads_osm[['geometry','Value']], buildings[['geometry','Value']], parking_osm[['geometry','Value']]], axis=0) - feature_1m = BuildingClassifier().rasterize_polygon(feature_df, esa_1m) - - # Combine rasters - datasets = [esa_1m, feature_1m] - # not all raster has 'time', concatenate without 'time' dimension - aligned_datasets = [ds.drop_vars('time', errors='ignore') for ds in datasets] - # use chunk 512x512 - aligned_datasets = [ds.chunk({'x': 512, 'y': 512}) for ds in aligned_datasets] - lulc = xr.concat(aligned_datasets, dim='Value').max(dim='Value') - - lulc.rio.to_raster(f'tile_{i}.tif') - - # Flatten the array as a 1D array - flattened_array = lulc.values.flatten() - # Count occurrences of each unique value - values, counts = np.unique(flattened_array, return_counts=True) - # Update the dictionary with counts, summing counts for existing keys (unique lulc) - for value, count in zip(values, counts): - if value in unique_lulc_counts: - unique_lulc_counts[value] += count - else: - unique_lulc_counts[value] = count - # Update total pixel count - total_count += flattened_array.size + print(f"Input covers too much area, splitting into {len(gdf)} tiles") + for i in range(len(gdf)): + process = psutil.Process() + print(f'tile: {i}, memory: {process.memory_info().rss/10 ** 9} GB') + + bbox = gdf.iloc[[i]].total_bounds + # Split the original path into name and extension + base_name, extension = output_path.rsplit('.', 1) + # Create a new path with '_i' appended before the extension + new_output_path = f"{base_name}_{i}.{extension}" - lulc_area_pct = {key: value/total_count for key, value in unique_lulc_counts.items()} - - return lulc_area_pct + self.get_data(bbox).rio.to_raster(new_output_path) From 9216b460ab4df4dbd7d644e3d13a3ff3a32c0abb Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Tue, 28 May 2024 18:40:49 +0800 Subject: [PATCH 24/31] use write() function from feature/write_layers --- city_metrix/layers/smart_cities_lulc.py | 46 ++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 943ad39..60d02b6 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -128,28 +128,28 @@ def get_data(self, bbox): return lulc - - def write(self, zones, output_path): - bbox = zones.total_bounds - if box(*bbox).area <= MAX_TILE_SIZE**2: - self.get_data(bbox).rio.to_raster(output_path) - else: - ZONES = create_fishnet_grid(*bbox, MAX_TILE_SIZE).reset_index() - # spatial join with fishnet grid and then intersect geometries with fishnet tiles - joined = zones.sjoin(ZONES) - joined["geometry"] = joined.intersection(joined["fishnet_geometry"]) - # remove linestring artifacts due to float precision - gdf = joined[joined.geometry.type.isin(['Polygon', 'MultiPolygon'])] + ## TODO: Remove this write() function after feature/write_layers been merged + # def write(self, zones, output_path): + # bbox = zones.total_bounds + # if box(*bbox).area <= MAX_TILE_SIZE**2: + # self.get_data(bbox).rio.to_raster(output_path) + # else: + # ZONES = create_fishnet_grid(*bbox, MAX_TILE_SIZE).reset_index() + # # spatial join with fishnet grid and then intersect geometries with fishnet tiles + # joined = zones.sjoin(ZONES) + # joined["geometry"] = joined.intersection(joined["fishnet_geometry"]) + # # remove linestring artifacts due to float precision + # gdf = joined[joined.geometry.type.isin(['Polygon', 'MultiPolygon'])] - print(f"Input covers too much area, splitting into {len(gdf)} tiles") - for i in range(len(gdf)): - process = psutil.Process() - print(f'tile: {i}, memory: {process.memory_info().rss/10 ** 9} GB') - - bbox = gdf.iloc[[i]].total_bounds - # Split the original path into name and extension - base_name, extension = output_path.rsplit('.', 1) - # Create a new path with '_i' appended before the extension - new_output_path = f"{base_name}_{i}.{extension}" + # print(f"Input covers too much area, splitting into {len(gdf)} tiles") + # for i in range(len(gdf)): + # process = psutil.Process() + # print(f'tile: {i}, memory: {process.memory_info().rss/10 ** 9} GB') + + # bbox = gdf.iloc[[i]].total_bounds + # # Split the original path into name and extension + # base_name, extension = output_path.rsplit('.', 1) + # # Create a new path with '_i' appended before the extension + # new_output_path = f"{base_name}_{i}.{extension}" - self.get_data(bbox).rio.to_raster(new_output_path) + # self.get_data(bbox).rio.to_raster(new_output_path) From 4329fb6c1e97b6a7a2ac65aa98dba6c667a44249 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Thu, 30 May 2024 16:29:32 +0800 Subject: [PATCH 25/31] move building classifier script and data to a folder --- city_metrix/layers/__init__.py | 2 +- .../V2-building-class-data.geojson | 303 ++++++++++++++++++ .../building_classifier.pkl | Bin 0 -> 4230 bytes .../building_classifier.py | 53 +-- city_metrix/layers/smart_cities_lulc.py | 10 +- ..._canopy_hight.py => tree_canopy_height.py} | 6 - 6 files changed, 337 insertions(+), 37 deletions(-) create mode 100644 city_metrix/layers/building_classifier/V2-building-class-data.geojson create mode 100644 city_metrix/layers/building_classifier/building_classifier.pkl rename city_metrix/layers/{ => building_classifier}/building_classifier.py (83%) rename city_metrix/layers/{tree_canopy_hight.py => tree_canopy_height.py} (98%) diff --git a/city_metrix/layers/__init__.py b/city_metrix/layers/__init__.py index 3ece2ef..65f826d 100644 --- a/city_metrix/layers/__init__.py +++ b/city_metrix/layers/__init__.py @@ -14,4 +14,4 @@ from .built_up_height import BuiltUpHeight from .average_net_building_height import AverageNetBuildingHeight from .open_buildings import OpenBuildings -from .tree_canopy_hight import TreeCanopyHeight +from .tree_canopy_height import TreeCanopyHeight diff --git a/city_metrix/layers/building_classifier/V2-building-class-data.geojson b/city_metrix/layers/building_classifier/V2-building-class-data.geojson new file mode 100644 index 0000000..50fa155 --- /dev/null +++ b/city_metrix/layers/building_classifier/V2-building-class-data.geojson @@ -0,0 +1,303 @@ +{ +"type": "FeatureCollection", +"name": "V2-building-class-data", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { "Area_m": 671.44561480618358, "ULU": "2", "ANBH": 2.8541435490588878, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.987058264177577, 29.966889196757386 ], [ -89.98686652659282, 29.966813395838088 ], [ -89.986821901560447, 29.966893672725497 ], [ -89.987013639368982, 29.966969473664751 ], [ -89.987058264177577, 29.966889196757386 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 516.3733447237405, "ULU": "2", "ANBH": 2.8925282955169682, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.692135877500547, 30.451290248018399 ], [ -81.691993192896291, 30.451272417990932 ], [ -81.691975399070998, 30.451370508822752 ], [ -81.692118083709516, 30.451388338882637 ], [ -81.692135877500547, 30.451290248018399 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 708.31979790754121, "ULU": "2", "ANBH": 2.734992504119873, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.949668875076995, 35.087506813803188 ], [ -80.949530621802523, 35.087502368751679 ], [ -80.949526151131295, 35.087555836365823 ], [ -80.949512739116102, 35.087555830916948 ], [ -80.949512739116102, 35.087649527263075 ], [ -80.949659933749871, 35.087653975990101 ], [ -80.949668875076995, 35.087506813803188 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 589.85487802118212, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.567218632889222, 30.04559680511316 ], [ -81.567080394930457, 30.045596762095503 ], [ -81.567075959931174, 30.045717165150752 ], [ -81.567214197898124, 30.045721671646103 ], [ -81.567218632889222, 30.04559680511316 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 813.45048313584323, "ULU": "2", "ANBH": 5.5869436264038086, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.590334672685628, 30.090366191457029 ], [ -81.590290085495482, 30.090343908464252 ], [ -81.590303386367381, 30.090317113632032 ], [ -81.590209778294238, 30.09027252573425 ], [ -81.590169624661286, 30.090334957992223 ], [ -81.590196393752308, 30.090343849237406 ], [ -81.590142939214118, 30.090433076239687 ], [ -81.590258799158605, 30.090486528158969 ], [ -81.590334672685628, 30.090366191457029 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 702.59877096058858, "ULU": "2", "ANBH": 8.5830526351928711, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.20521087615613, 29.907560905470763 ], [ -90.205166242646371, 29.907547470904536 ], [ -90.205179618388286, 29.907511793497296 ], [ -90.205099364005889, 29.907489499852396 ], [ -90.205081553563843, 29.907529685335938 ], [ -90.205090494547761, 29.907534084462377 ], [ -90.205068177855708, 29.907592105248455 ], [ -90.20505923687692, 29.907587617863264 ], [ -90.20504142645332, 29.907636717482539 ], [ -90.20505923687692, 29.907641102888828 ], [ -90.205045861176515, 29.907672367296488 ], [ -90.205090494547761, 29.907685713631967 ], [ -90.205103870263613, 29.907654537481964 ], [ -90.205161807909406, 29.907676777377429 ], [ -90.20521087615613, 29.907560905470763 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1490.2243913003435, "ULU": "2", "ANBH": 3.5181212425231938, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.10822538280793, 29.814392374700045 ], [ -90.108171871207446, 29.814240774311045 ], [ -90.107957896897361, 29.814294293192216 ], [ -90.108038092531487, 29.814517233695646 ], [ -90.108127278263822, 29.814494993042903 ], [ -90.108100522522435, 29.81442806897585 ], [ -90.10822538280793, 29.814392374700045 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 485.35336035847916, "ULU": "2", "ANBH": 2.5043432712554932, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.109251036187601, 29.810428247036416 ], [ -90.109219784571593, 29.810419352252563 ], [ -90.109215360828927, 29.810410435404968 ], [ -90.109206441994402, 29.810410442737947 ], [ -90.109197523161981, 29.81041486615208 ], [ -90.109077083450956, 29.810383699247868 ], [ -90.109054822123809, 29.810459497484747 ], [ -90.109228703409201, 29.810499629257674 ], [ -90.109251036187601, 29.810428247036416 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 158.9007347433878, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.161869044923279, 33.340983994149546 ], [ -112.16181555867756, 33.340983988333228 ], [ -112.161820015864762, 33.341077629899047 ], [ -112.161869044923279, 33.341077574177611 ], [ -112.161869044923279, 33.340983994149546 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 466.09842479773971, "ULU": "2", "ANBH": 9.1664628982543963, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.917755086642359, 34.153218109691373 ], [ -80.917665890564678, 34.153177982731243 ], [ -80.917590027407641, 34.153307284741224 ], [ -80.917674751106674, 34.153342954878774 ], [ -80.917755086642359, 34.153218109691373 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 743.72185792115988, "ULU": "2", "ANBH": 7.8471331596374512, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.942083905773387, 34.103459046310149 ], [ -80.942066105769257, 34.103253898635593 ], [ -80.941959052579719, 34.103258356643948 ], [ -80.94197246587143, 34.103463516513017 ], [ -80.942083905773387, 34.103459046310149 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 781.76420609245611, "ULU": "2", "ANBH": 8.8018970489501953, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.87048413703063, 34.096471588492967 ], [ -80.870439554780972, 34.096311103162392 ], [ -80.870341439969778, 34.096333345771207 ], [ -80.870350305770927, 34.096373507603154 ], [ -80.870270091343826, 34.096386894596542 ], [ -80.870296857640554, 34.096480525591794 ], [ -80.870417263646843, 34.096458261599686 ], [ -80.870426129439565, 34.096484947772524 ], [ -80.87048413703063, 34.096471588492967 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 726.32382179564161, "ULU": "2", "ANBH": 4.5755416600167624, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.73316858911123, 30.102923025526263 ], [ -81.733164080511742, 30.102856148568755 ], [ -81.732999098977871, 30.102860536063737 ], [ -81.733003607587435, 30.103007744232254 ], [ -81.733119495457473, 30.103007699787359 ], [ -81.733119495457473, 30.102927456052324 ], [ -81.73316858911123, 30.102923025526263 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 629.28706753223503, "ULU": "1", "ANBH": 11.324470685001163, "Slope": "low", "pred": "low", "Model": "testing", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.119735021661086, 33.67847550714076 ], [ -112.119565554283525, 33.67847549770282 ], [ -112.119565554283525, 33.678586943927478 ], [ -112.11973056438724, 33.678586978199803 ], [ -112.119735021661086, 33.67847550714076 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1094.1736535196151, "ULU": "1", "ANBH": 2.6820135116577148, "Slope": "high", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.711152339164983, 45.698240972554281 ], [ -122.711072024358714, 45.69820533911269 ], [ -122.711063123250682, 45.698218674706922 ], [ -122.711045318227235, 45.698209802112707 ], [ -122.711067619684357, 45.698183056723195 ], [ -122.710978464512323, 45.698142926772519 ], [ -122.710951689044677, 45.698169657616575 ], [ -122.710924936104348, 45.698160756007155 ], [ -122.710853566308245, 45.69823654171477 ], [ -122.710911601902055, 45.698263288252605 ], [ -122.710902610997607, 45.698272219646839 ], [ -122.710924954492029, 45.698285599692674 ], [ -122.710875877280174, 45.698339076032227 ], [ -122.710884825285575, 45.698339105038045 ], [ -122.710875825524653, 45.698352472298424 ], [ -122.710969553566528, 45.698392585388937 ], [ -122.711072108493767, 45.698285589947645 ], [ -122.711103228183106, 45.698298973518646 ], [ -122.711152339164983, 45.698240972554281 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 663.09264653039588, "ULU": "2", "ANBH": 6.3237127724713584, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.659689492217325, 33.265321963367853 ], [ -111.659685034456245, 33.265205969446107 ], [ -111.659635999084031, 33.265206003552073 ], [ -111.659631541322909, 33.265179226094432 ], [ -111.659564674906107, 33.265179242870296 ], [ -111.659569132667229, 33.265206020339143 ], [ -111.659515639533723, 33.265205968435936 ], [ -111.659515639533723, 33.265286287845136 ], [ -111.659578048189474, 33.265286266747708 ], [ -111.659582505950624, 33.265321941344816 ], [ -111.659689492217325, 33.265321963367853 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 525.97691493403511, "ULU": "2", "ANBH": 6.001619815826416, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.547873115504515, 33.239704423529282 ], [ -111.547783960465921, 33.239704389412523 ], [ -111.547783960465921, 33.239762387767826 ], [ -111.547757213954426, 33.239757917369658 ], [ -111.547752756202541, 33.239847110548325 ], [ -111.547868657752602, 33.239851533306243 ], [ -111.547873115504515, 33.239704423529282 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 474.07748950480692, "ULU": "2", "ANBH": 2.9435232613598199, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.68810663970396, 29.388494794066752 ], [ -98.688008488945883, 29.388494791299809 ], [ -98.68800403900002, 29.388628493103692 ], [ -98.68810663970396, 29.388632950944402 ], [ -98.68810663970396, 29.388494794066752 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 544.39261554812151, "ULU": "2", "ANBH": 3.9325231871838615, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.708301833461036, 29.395040703088327 ], [ -98.708199289750908, 29.395040740974824 ], [ -98.708203740867347, 29.395196786018538 ], [ -98.708301833461036, 29.39519677601681 ], [ -98.708301833461036, 29.395040703088327 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 471.95577399884098, "ULU": "2", "ANBH": 4.699925422668457, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.010847688850021, 35.312767214551968 ], [ -81.010820969888229, 35.312691454378346 ], [ -81.010651468629561, 35.312727070610435 ], [ -81.010678271935888, 35.312807322857971 ], [ -81.010847688850021, 35.312767214551968 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 701.75587735174315, "ULU": "1", "ANBH": 2.6740546226501465, "Slope": "high", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.83477120098506, 35.543271536450781 ], [ -80.83465969559002, 35.54320464554845 ], [ -80.834557144279245, 35.543320620500637 ], [ -80.834615093388592, 35.543351790698935 ], [ -80.834588315161056, 35.543383036747791 ], [ -80.834641871607204, 35.543414202922058 ], [ -80.83477120098506, 35.543271536450781 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1172.116608826426, "ULU": "2", "ANBH": 2.5001993233323243, "Slope": "low", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.832662033277771, 35.614563667761679 ], [ -80.832519353276879, 35.614505689743233 ], [ -80.832398974748386, 35.61470184622322 ], [ -80.832541654963379, 35.614759824304244 ], [ -80.832662033277771, 35.614563667761679 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 642.90550608881654, "ULU": "1", "ANBH": 7.0582991438201015, "Slope": "low", "pred": "high", "Model": "testing", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.988913350757173, 34.972863373033086 ], [ -80.988784102889525, 34.972725135746927 ], [ -80.988694902346197, 34.972783047035627 ], [ -80.988828703123446, 34.972921289819674 ], [ -80.988913350757173, 34.972863373033086 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 575.56953906996762, "ULU": "1", "ANBH": 3.5435673208856908, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.462628106378375, 42.712979886800383 ], [ -71.462476561133812, 42.712984342672968 ], [ -71.462476561133812, 42.713109172292832 ], [ -71.462628106378375, 42.713104716500389 ], [ -71.462628106378375, 42.712979886800383 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 587.25938241910649, "ULU": "2", "ANBH": 3.7754867076873775, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.794628043022897, 42.233234113879682 ], [ -70.79462359702913, 42.233180570123139 ], [ -70.794574509625576, 42.233180553395918 ], [ -70.794570063631269, 42.233122654183411 ], [ -70.794471979541953, 42.233127064398083 ], [ -70.794480871532414, 42.233202865608057 ], [ -70.794449658830416, 42.233207326793519 ], [ -70.794458550821332, 42.233283127888321 ], [ -70.794583401614034, 42.233274211694038 ], [ -70.794578955619841, 42.233234097144781 ], [ -70.794628043022897, 42.233234113879682 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 508.21203308753923, "ULU": "2", "ANBH": 3.8549953670688959, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.829355549295343, 42.246254644467754 ], [ -70.82927970101737, 42.246214519981763 ], [ -70.829177178803079, 42.246321548995539 ], [ -70.829190515765021, 42.246330461648917 ], [ -70.8291637511131, 42.246357258495536 ], [ -70.829230617376098, 42.246392925558659 ], [ -70.829257382024039, 42.246361701213694 ], [ -70.829270809711218, 42.246366129476783 ], [ -70.829351012915438, 42.246281440711179 ], [ -70.829337675958271, 42.246276955572185 ], [ -70.829355549295343, 42.246254644467754 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 384.87188461823092, "ULU": "2", "ANBH": 4.7534117885987612, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.393030478803709, 42.270793084702639 ], [ -71.392972494512222, 42.270770790557314 ], [ -71.393008191092761, 42.270712866828546 ], [ -71.392963615666773, 42.270699435563088 ], [ -71.39288334364602, 42.270815394493759 ], [ -71.392874374197916, 42.270810910644805 ], [ -71.392861055926062, 42.270833252248259 ], [ -71.392887783069753, 42.270842165880914 ], [ -71.39289666191705, 42.270828749760753 ], [ -71.392985903380449, 42.270859989630971 ], [ -71.393030478803709, 42.270793084702639 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 618.69951019986684, "ULU": "2", "ANBH": 5.3159231581096265, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.753109381158879, 42.124913622150977 ], [ -70.752997858285454, 42.124895777911107 ], [ -70.752939873640102, 42.125096462551859 ], [ -70.753033520199892, 42.125109819994478 ], [ -70.753051396527468, 42.125047400105501 ], [ -70.753029073803589, 42.125042940856872 ], [ -70.753042412992372, 42.12500278657226 ], [ -70.753082612041993, 42.125011732696201 ], [ -70.753109381158879, 42.124913622150977 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 358.01186955633835, "ULU": "1", "ANBH": 4.3927334014405588, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.724776176923768, 42.202965730056185 ], [ -70.724700402103707, 42.202970188158851 ], [ -70.724695955437241, 42.202956779917642 ], [ -70.724571085765774, 42.202961262451637 ], [ -70.724575532433434, 42.203028112771598 ], [ -70.724700402103707, 42.203023702880685 ], [ -70.724700402103707, 42.203014771662168 ], [ -70.724776176923768, 42.203010313576186 ], [ -70.724776176923768, 42.202965730056185 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 638.35584024669549, "ULU": "2", "ANBH": 3.0420589447021484, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.026911510797376, 42.036659102848873 ], [ -71.026898179948432, 42.036458408245721 ], [ -71.026786636093618, 42.036462889348101 ], [ -71.026795614014759, 42.036569939670798 ], [ -71.0268133884843, 42.036569916170961 ], [ -71.026817922787629, 42.036663518463747 ], [ -71.026911510797376, 42.036659102848873 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 8127.4451184722611, "ULU": "1", "ANBH": 9.2775395163027117, "Slope": "high", "pred": "low", "Model": "testing", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -123.089912803321184, 45.517825789833971 ], [ -123.089596211373291, 45.517825796309587 ], [ -123.089596257722562, 45.51758048036011 ], [ -123.089609621763827, 45.517580554645455 ], [ -123.089605174177422, 45.517388790747347 ], [ -123.089337578472623, 45.517388776232529 ], [ -123.089337657934706, 45.517406622457905 ], [ -123.089261815060127, 45.517406613977073 ], [ -123.089261762516813, 45.517433358753145 ], [ -123.089337605439326, 45.517433367233266 ], [ -123.089337606154004, 45.517491330685459 ], [ -123.089266225914812, 45.517491317504991 ], [ -123.089266279680899, 45.517580499757784 ], [ -123.08936433883251, 45.517580516629927 ], [ -123.089364389167358, 45.51782580066682 ], [ -123.08898980575816, 45.517825777664342 ], [ -123.088989872372508, 45.517995220466133 ], [ -123.089400061996287, 45.517995237706607 ], [ -123.08940005506436, 45.518048696041483 ], [ -123.089578422323484, 45.518048716281591 ], [ -123.089578355369724, 45.517995201439845 ], [ -123.089912873635114, 45.517995232575736 ], [ -123.089912803321184, 45.517825789833971 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 583.22103150700991, "ULU": "2", "ANBH": 10.819046974182127, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.744532309840565, 35.135727558173372 ], [ -80.744514550470697, 35.135638330205929 ], [ -80.74432723116557, 35.13566515044414 ], [ -80.744345075145148, 35.135754301664299 ], [ -80.744532309840565, 35.135727558173372 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 517.3965495367014, "ULU": "2", "ANBH": 6.7460541725158691, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.078866686652603, 29.923243523457337 ], [ -90.078746270568956, 29.923078568632253 ], [ -90.078688308432348, 29.923114255846706 ], [ -90.078817636124214, 29.923292619282581 ], [ -90.078857774851343, 29.923270268318603 ], [ -90.078848863052158, 29.92325694796752 ], [ -90.078866686652603, 29.923243523457337 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 823.44102407375578, "ULU": "1", "ANBH": 2.5016822814941406, "Slope": "high", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.973890548152767, 29.92046997249615 ], [ -89.973814723906202, 29.920461044163719 ], [ -89.973819209288351, 29.920407564799817 ], [ -89.973663146159282, 29.920389707124084 ], [ -89.973654175357865, 29.920456599784657 ], [ -89.973752284484291, 29.920465532624576 ], [ -89.973738899509442, 29.920550251115618 ], [ -89.973881577404669, 29.920563605235358 ], [ -89.973890548152767, 29.92046997249615 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 557.91110624535099, "ULU": "1", "ANBH": 3.833648681640625, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.981939238365499, 29.923729598127196 ], [ -89.981734092935184, 29.923711743687864 ], [ -89.98172519520773, 29.923787548440444 ], [ -89.981930269504318, 29.923809815327285 ], [ -89.981939238365499, 29.923729598127196 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 679.72064286632769, "ULU": "2", "ANBH": 7.0961347033198079, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.987905485112179, 29.923542306180639 ], [ -89.98788762135645, 29.923542304549137 ], [ -89.98788762135645, 29.92350665185225 ], [ -89.987700371685591, 29.923506634605751 ], [ -89.987700371685591, 29.923577939990206 ], [ -89.987740511943102, 29.923577943709574 ], [ -89.987740511943102, 29.923627010264426 ], [ -89.987847481253382, 29.923631432575895 ], [ -89.987847481253382, 29.923577953561932 ], [ -89.987905485112179, 29.923582459578142 ], [ -89.987905485112179, 29.923542306180639 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 273.10741016302336, "ULU": "1", "ANBH": 8.2484493255615234, "Slope": "low", "pred": "high", "Model": "testing", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.010981356041825, 29.923109716395818 ], [ -90.010914457942846, 29.923105309446335 ], [ -90.010909974351037, 29.92322568210832 ], [ -90.01097238884303, 29.923230177676899 ], [ -90.010981356041825, 29.923109716395818 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 496.64526638375912, "ULU": "1", "ANBH": 9.9678306579589844, "Slope": "high", "pred": "high", "Model": "testing", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.77168020470728, 45.297925198610187 ], [ -122.7715508155176, 45.297907373864874 ], [ -122.77151072113486, 45.298041137009513 ], [ -122.771595486663458, 45.298054540302189 ], [ -122.771599895740323, 45.298041131250898 ], [ -122.771640062137152, 45.298050024991689 ], [ -122.77168020470728, 45.297925198610187 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 326.8879926060938, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.518599423612187, 45.289207698001945 ], [ -122.518470141767253, 45.289207663920003 ], [ -122.518470106928604, 45.289274524094424 ], [ -122.518501314427397, 45.289274548366265 ], [ -122.518501273837941, 45.289305752259139 ], [ -122.518586043030524, 45.289305775197015 ], [ -122.518586083557366, 45.289274571305128 ], [ -122.51859938897816, 45.289274558173048 ], [ -122.518599423612187, 45.289207698001945 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 974.17340041142484, "ULU": "1", "ANBH": 2.8173563480377197, "Slope": "high", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.569116579261532, 45.55245519004275 ], [ -122.569045258409631, 45.552437271018803 ], [ -122.569058567650117, 45.55241054736495 ], [ -122.569031831998686, 45.552406082050766 ], [ -122.569058619434969, 45.552343671637033 ], [ -122.568964970619277, 45.552325819360675 ], [ -122.568875799171778, 45.552530952944025 ], [ -122.569063075019926, 45.55257107946646 ], [ -122.569116579261532, 45.55245519004275 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 568.51098604479853, "ULU": "2", "ANBH": 10.431868553161619, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.540988579897842, 45.438105993385619 ], [ -122.540828043453246, 45.43810597459656 ], [ -122.540828065123975, 45.438248611089278 ], [ -122.540943999628382, 45.438248689768422 ], [ -122.540944013995812, 45.4381772833204 ], [ -122.540984148185515, 45.438177287990733 ], [ -122.540988579897842, 45.438105993385619 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 15305.437529242456, "ULU": "1", "ANBH": 7.0779998879747108, "Slope": "low", "pred": "low", "Model": "testing", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.406285234317536, 30.285483081437569 ], [ -81.406276345405729, 30.285041619289807 ], [ -81.406053367551635, 30.285041617301005 ], [ -81.406057812020705, 30.285104006472732 ], [ -81.40556288105816, 30.28511291774003 ], [ -81.40556288105816, 30.285050559119892 ], [ -81.405339901112242, 30.28505055573428 ], [ -81.405348790133516, 30.285500925526161 ], [ -81.405451349237623, 30.2854964093852 ], [ -81.405455877600446, 30.2855900703454 ], [ -81.40556288105816, 30.285590038812359 ], [ -81.40555843656017, 30.285567824781861 ], [ -81.405598520891132, 30.285567755585991 ], [ -81.405598520891132, 30.28554993890064 ], [ -81.405763554064706, 30.285545516873295 ], [ -81.405763554064706, 30.285567787736937 ], [ -81.405879446048758, 30.285567816917457 ], [ -81.405875001569271, 30.285541061372271 ], [ -81.406048923082309, 30.285541066771547 ], [ -81.406048923082309, 30.285558883472493 ], [ -81.406080118220018, 30.285558840450751 ], [ -81.406080118220018, 30.285581198661568 ], [ -81.406191565260684, 30.285581197032791 ], [ -81.406187120799444, 30.285483087312237 ], [ -81.406285234317536, 30.285483081437569 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 468.44598528932175, "ULU": "1", "ANBH": 8.3511426515010285, "Slope": "high", "pred": "high", "Model": "testing", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.820880347746268, 32.743049746135611 ], [ -96.820804550187034, 32.74294267062502 ], [ -96.820728752716121, 32.742978346079873 ], [ -96.820737665251229, 32.742996208693498 ], [ -96.820728752716121, 32.743000637533029 ], [ -96.820795637642718, 32.743094308739622 ], [ -96.820813462732573, 32.743089823605253 ], [ -96.820817878122554, 32.743098757122375 ], [ -96.82087585058548, 32.743067566787857 ], [ -96.820866938031386, 32.743054162489123 ], [ -96.820880347746268, 32.743049746135611 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 318.40351397663824, "ULU": "1", "ANBH": 2.6028599739074707, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.626369906330794, 32.689834850791264 ], [ -96.62624053340339, 32.689830356097751 ], [ -96.62624053340339, 32.689901659075247 ], [ -96.626369906330794, 32.6899061537531 ], [ -96.626369906330794, 32.689834850791264 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 3788.5933462899384, "ULU": "1", "ANBH": 4.686663951385535, "Slope": "low", "pred": "low", "Model": "testing", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.706483379266913, 33.591081536288961 ], [ -111.706429795291001, 33.590979037535739 ], [ -111.706389675539754, 33.590996809425803 ], [ -111.706376302289314, 33.59097006211622 ], [ -111.706318351537277, 33.59099240672208 ], [ -111.706300520536601, 33.590956716500237 ], [ -111.706099830802899, 33.591032496669058 ], [ -111.706064168800921, 33.590965589755541 ], [ -111.7058501058128, 33.591045856433567 ], [ -111.705881401039491, 33.591099411495023 ], [ -111.705859021313444, 33.591108316249787 ], [ -111.705881401039491, 33.591152932773539 ], [ -111.705872485538876, 33.591157333928962 ], [ -111.705908147541308, 33.591224240807485 ], [ -111.705934894043068, 33.591215348312154 ], [ -111.705925978542524, 33.591201936177121 ], [ -111.706015133548092, 33.591166302500802 ], [ -111.706073084301437, 33.591268813693624 ], [ -111.706153323805637, 33.591237662419388 ], [ -111.706135492804762, 33.591197498596131 ], [ -111.706238112034043, 33.591157361122342 ], [ -111.706260400784998, 33.591201912806291 ], [ -111.706407506540302, 33.591148489245327 ], [ -111.706389675539754, 33.591117272777346 ], [ -111.706483379266913, 33.591081536288961 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 569.66054400372923, "ULU": "2", "ANBH": 3.3802261352539062, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.419429934853525, 32.849301223037507 ], [ -97.419300570176091, 32.849301198221816 ], [ -97.419300570176091, 32.849350230980228 ], [ -97.419269384085041, 32.849350199000355 ], [ -97.419269384085041, 32.849417116272534 ], [ -97.419429934853525, 32.849417087470151 ], [ -97.419429934853525, 32.849301223037507 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 568.45388304770302, "ULU": "1", "ANBH": 4.0848784446716309, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.117298288705683, 33.637719337667654 ], [ -84.11728048728169, 33.637630112506962 ], [ -84.117084268521907, 33.637661362872755 ], [ -84.117093128988742, 33.637696999519363 ], [ -84.117111011017798, 33.637692575437555 ], [ -84.117124382261267, 33.637746034211467 ], [ -84.117298288705683, 33.637719337667654 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 389.25053311288656, "ULU": "1", "ANBH": 3.7802813053131104, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.550940958905372, 33.432226057983726 ], [ -111.55078047980318, 33.43222609312938 ], [ -111.55078047980318, 33.432297430938149 ], [ -111.550940958905372, 33.432297395740449 ], [ -111.550940958905372, 33.432226057983726 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 531.8667025295963, "ULU": "1", "ANBH": 8.7348299142100441, "Slope": "high", "pred": "high", "Model": "testing", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.236536142450845, 33.982849294239948 ], [ -81.236473782084715, 33.982804672128275 ], [ -81.236326621506294, 33.9829562583799 ], [ -81.236389066034988, 33.983000886513643 ], [ -81.236536142450845, 33.982849294239948 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 287.28680222254627, "ULU": "1", "ANBH": 6.5011831533384603, "Slope": "low", "pred": "high", "Model": "testing", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.168080031610629, 33.944986997222472 ], [ -81.167964117108454, 33.944946916694782 ], [ -81.167932909328343, 33.945004853276401 ], [ -81.168048823877044, 33.945049491846632 ], [ -81.168080031610629, 33.944986997222472 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 569.95267352484973, "ULU": "2", "ANBH": 3.4257471561431885, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.20806928978844, 33.943350531092783 ], [ -81.207957806890789, 33.943346089461564 ], [ -81.207948894978031, 33.943493262333298 ], [ -81.208060377888501, 33.943497703996044 ], [ -81.20806928978844, 33.943350531092783 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 289.43042159398419, "ULU": "1", "ANBH": 3.9940059185028081, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.114539619428029, 33.944193316268574 ], [ -81.114419248121308, 33.944162064130204 ], [ -81.114396941530117, 33.944228981855282 ], [ -81.1145173128712, 33.944260234009384 ], [ -81.114539619428029, 33.944193316268574 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 6091.891825190045, "ULU": "1", "ANBH": 3.1521446276307534, "Slope": "low", "pred": "low", "Model": "testing", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.955777843422183, 33.936465692563687 ], [ -80.955590511531597, 33.936314083556475 ], [ -80.955688605683491, 33.936233810393858 ], [ -80.955331906762737, 33.935943982479948 ], [ -80.955095568594544, 33.936144603690003 ], [ -80.955639600795607, 33.936581652911386 ], [ -80.955777843422183, 33.936465692563687 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 254.60698079125922, "ULU": "1", "ANBH": 2.5893115997314453, "Slope": "low", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.916675950847093, 33.94339066667311 ], [ -80.916609031794266, 33.943350528237609 ], [ -80.916546669599825, 33.943430786599286 ], [ -80.916613504317837, 33.943466447156943 ], [ -80.916675950847093, 33.94339066667311 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 714.44398514002205, "ULU": "2", "ANBH": 6.6404824256896973, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.281570323867683, 29.533402138035505 ], [ -98.281543600915484, 29.533362071547671 ], [ -98.281534665430527, 29.533366495308002 ], [ -98.281507942491203, 29.533326340935375 ], [ -98.281441051676083, 29.533362059301489 ], [ -98.281409819281293, 29.533317441824831 ], [ -98.281360799479643, 29.533339743791903 ], [ -98.281378586899649, 29.533366485852625 ], [ -98.2813474380402, 29.533379852449471 ], [ -98.281418754751172, 29.533482417061631 ], [ -98.281570323867683, 29.533402138035505 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 628.58161955495063, "ULU": "2", "ANBH": 6.3392839431762695, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.635760780048543, 32.795127537921452 ], [ -96.635618016852234, 32.795007128144647 ], [ -96.635586871525604, 32.795038349335478 ], [ -96.63565372800457, 32.795096351092141 ], [ -96.635573500238181, 32.795163257798514 ], [ -96.635644840980802, 32.795225650532551 ], [ -96.635760780048543, 32.795127537921452 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 4795.0869493733735, "ULU": "1", "ANBH": 9.0513315200805664, "Slope": "low", "pred": "low", "Model": "testing", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.098084804124881, 32.734938654566399 ], [ -97.09784405356595, 32.734938577409238 ], [ -97.09784405356595, 32.734813784731188 ], [ -97.09754968545964, 32.734813744000114 ], [ -97.097545251472994, 32.73513034783749 ], [ -97.098084804124881, 32.735130385810209 ], [ -97.098084804124881, 32.734938654566399 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 429.25170016114811, "ULU": "1", "ANBH": 10.211642265319824, "Slope": "low", "pred": "high", "Model": "testing", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.598476952013414, 30.243946561408809 ], [ -81.598338688140387, 30.243754759826299 ], [ -81.598289672574083, 30.243781585960456 ], [ -81.598427936537789, 30.2439688430626 ], [ -81.598476952013414, 30.243946561408809 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 12189.228482396818, "ULU": "1", "ANBH": 3.3817975917029188, "Slope": "low", "pred": "low", "Model": "testing", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.597100845396611, 29.386501525830703 ], [ -98.596101978974644, 29.385092493711433 ], [ -98.595928052940806, 29.385186099486617 ], [ -98.596917943931558, 29.386599668074648 ], [ -98.597100845396611, 29.386501525830703 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 748.54786739920519, "ULU": "2", "ANBH": 4.7166206215873068, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.067924230134437, 33.950128412668967 ], [ -81.067857270590423, 33.950043621888938 ], [ -81.067674500223418, 33.950137317800667 ], [ -81.067736911719194, 33.950222030588137 ], [ -81.067924230134437, 33.950128412668967 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 464.60449819414151, "ULU": "2", "ANBH": 4.3800445161174055, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.262822600610164, 33.993350417626395 ], [ -81.262670953463953, 33.993350414443334 ], [ -81.262670953463953, 33.993439601787045 ], [ -81.262822600610164, 33.993439604994194 ], [ -81.262822600610164, 33.993350417626395 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 39632.039080295879, "ULU": "1", "ANBH": 7.2651605338954077, "Slope": "low", "pred": "low", "Model": "testing", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.430937900542588, 45.52100064940759 ], [ -122.428873371569821, 45.520996214136161 ], [ -122.428868959640241, 45.521669491918786 ], [ -122.430933458988989, 45.521678433962521 ], [ -122.430937900542588, 45.52100064940759 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 863.84629972618279, "ULU": "2", "ANBH": 3.209498863766906, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.700217509078428, 29.598933079542839 ], [ -98.700088188301024, 29.598933153743868 ], [ -98.700088188301024, 29.599138241934369 ], [ -98.700146130700318, 29.599138207544996 ], [ -98.700150665324742, 29.599115970288892 ], [ -98.700213058424666, 29.599115906644176 ], [ -98.700217509078428, 29.598933079542839 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 4049.9424245759174, "ULU": "1", "ANBH": 2.5, "Slope": "low", "pred": "low", "Model": "testing", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.981417636987729, 34.095138380303325 ], [ -80.981368563698979, 34.094902006275191 ], [ -80.981078760855894, 34.094937685048109 ], [ -80.981087698637651, 34.094982317493248 ], [ -80.981002958307741, 34.094991152897236 ], [ -80.980985082724061, 34.094906437020221 ], [ -80.980784403724442, 34.094933181420217 ], [ -80.980820154978474, 34.095107162069667 ], [ -80.980909280086138, 34.095093763929441 ], [ -80.980918217887051, 34.095125001980712 ], [ -80.981114427658198, 34.095098180902056 ], [ -80.981127834324425, 34.095178439526173 ], [ -80.981417636987729, 34.095138380303325 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 557.65851226677, "ULU": "2", "ANBH": 3.3531448841094971, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.394813232592284, 32.940503216406128 ], [ -96.394732984011284, 32.940409544184192 ], [ -96.394616997377042, 32.940480889017614 ], [ -96.394692859759203, 32.940570076562871 ], [ -96.394813232592284, 32.940503216406128 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1690.7638578026515, "ULU": "1", "ANBH": 3.6102752683658874, "Slope": "low", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.368426753087604, 32.498427930191163 ], [ -97.368315209807335, 32.498361046859785 ], [ -97.368065577761428, 32.498659735232714 ], [ -97.368177038192101, 32.498726623429114 ], [ -97.368426753087604, 32.498427930191163 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1100.241706688643, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.492924793382059, 32.632316870674771 ], [ -97.492648360691987, 32.632312374295601 ], [ -97.492643900777139, 32.632446144138321 ], [ -97.492679580103683, 32.632446156695465 ], [ -97.492679580103683, 32.63242386325939 ], [ -97.492920333449362, 32.632432805724847 ], [ -97.492924793382059, 32.632316870674771 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 983.24379856286339, "ULU": "1", "ANBH": 7.463934079924627, "Slope": "low", "pred": "high", "Model": "testing", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.490300879343962, 29.353709299075131 ], [ -98.490198294044831, 29.35370933459653 ], [ -98.490198294044831, 29.353664749922615 ], [ -98.490144782258525, 29.353664733308129 ], [ -98.490144782258525, 29.35371380283485 ], [ -98.490060118148449, 29.353713750495395 ], [ -98.490060118148449, 29.353816286422848 ], [ -98.490300879343962, 29.353816319805823 ], [ -98.490300879343962, 29.353709299075131 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 681.52217098552342, "ULU": "2", "ANBH": 8.7959098815917969, "Slope": "low", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.880334262289381, 35.182507990270949 ], [ -80.880240634193115, 35.182463397785902 ], [ -80.88012024299006, 35.182632802384823 ], [ -80.880213871227468, 35.182672986333777 ], [ -80.880334262289381, 35.182507990270949 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 3219.1298745501035, "ULU": "1", "ANBH": 4.9968258636606304, "Slope": "low", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.382145384705467, 29.459207194159525 ], [ -98.381913500087194, 29.45869886707256 ], [ -98.381463112477149, 29.458640885197269 ], [ -98.381445301066165, 29.458734471704101 ], [ -98.381846602386844, 29.458783597263764 ], [ -98.38205615963362, 29.459238400534613 ], [ -98.382145384705467, 29.459207194159525 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 605.53733213739088, "ULU": "2", "ANBH": 4.2251272201538086, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.79561377525431, 30.251379847344271 ], [ -81.795538028232244, 30.251384360932313 ], [ -81.795542449591409, 30.25138874705107 ], [ -81.795506828444928, 30.251393243213549 ], [ -81.795506828444928, 30.251384326473019 ], [ -81.79543992404345, 30.251384324542556 ], [ -81.79543992404345, 30.25148686701062 ], [ -81.79561377525431, 30.251482389846338 ], [ -81.79561377525431, 30.251379847344271 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 546.57205867307721, "ULU": "2", "ANBH": 4.6179661750793457, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.792494406897035, 35.362981139704665 ], [ -80.79240076070289, 35.362856300221765 ], [ -80.792307198918223, 35.362905406885147 ], [ -80.792396365752481, 35.363030235596156 ], [ -80.792494406897035, 35.362981139704665 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 552.28576538854395, "ULU": "2", "ANBH": 9.4722146987915057, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.481840246291654, 30.360119471028469 ], [ -81.481768870730221, 30.360119522901503 ], [ -81.481768870730221, 30.360066008584635 ], [ -81.48166189103587, 30.360066004493863 ], [ -81.48166189103587, 30.360177485333207 ], [ -81.481840246291654, 30.360177437579512 ], [ -81.481840246291654, 30.360119471028469 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 344.46833211185191, "ULU": "1", "ANBH": 8.2110681533813477, "Slope": "high", "pred": "high", "Model": "testing", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.398504103955901, 30.286553277783355 ], [ -81.398477350623452, 30.286437281319657 ], [ -81.398397090569702, 30.286450683961306 ], [ -81.398423843930345, 30.286566593081048 ], [ -81.398504103955901, 30.286553277783355 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2345.6484614117812, "ULU": "1", "ANBH": 2.5283102497124359, "Slope": "high", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.983914769508345, 35.252230446542001 ], [ -80.983678432311649, 35.252159154308629 ], [ -80.983562497823883, 35.252417736493072 ], [ -80.983794366629468, 35.252498004841243 ], [ -80.983861229035114, 35.252350883370134 ], [ -80.983914769508345, 35.252230446542001 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 502.63847963655411, "ULU": "2", "ANBH": 10.127964019775392, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.261108724808523, 33.743159225745792 ], [ -84.260966092631037, 33.743159233208281 ], [ -84.260966092631037, 33.743266224027387 ], [ -84.261108724808523, 33.743266216582732 ], [ -84.261108724808523, 33.743159225745792 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 842.73954712652653, "ULU": "2", "ANBH": 7.8681737225551869, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.742829889585806, 33.387425506119719 ], [ -84.742651531448345, 33.387416599764627 ], [ -84.74264260555735, 33.387554824051101 ], [ -84.742820963722608, 33.387563730433875 ], [ -84.742829889585806, 33.387425506119719 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 615.55483792838936, "ULU": "1", "ANBH": 2.798591136932373, "Slope": "low", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.859662713095162, 45.428090850935043 ], [ -122.859511044089956, 45.428090818888784 ], [ -122.85951559093408, 45.42823349388992 ], [ -122.859662640816765, 45.428233493679819 ], [ -122.859662713095162, 45.428090850935043 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 307.59843167312749, "ULU": "2", "ANBH": 4.6939363479614258, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.618645511977547, 30.496581342076592 ], [ -81.618596426119609, 30.496581407079201 ], [ -81.618596426119609, 30.496675003045489 ], [ -81.618587478608802, 30.496675037180616 ], [ -81.618587478608802, 30.496741854016022 ], [ -81.618645511977547, 30.49674192934966 ], [ -81.618645511977547, 30.496581342076592 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 556.67077155848483, "ULU": "2", "ANBH": 4.010792530474105, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.632724822120892, 35.348988529862957 ], [ -80.632689169825298, 35.34893057569758 ], [ -80.632631245397377, 35.348957265407606 ], [ -80.632617865187456, 35.348934982047439 ], [ -80.632568747942287, 35.348957295807054 ], [ -80.632577724544475, 35.348970689872488 ], [ -80.63252420365653, 35.348997390401671 ], [ -80.63258212816028, 35.34908661765143 ], [ -80.632675789624841, 35.349046446777976 ], [ -80.632658005810697, 35.34901527415645 ], [ -80.632724822120892, 35.348988529862957 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 878.04428576975738, "ULU": "2", "ANBH": 4.5329527854919434, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.547857230609694, 30.082981942887997 ], [ -81.547723476807846, 30.082848121873933 ], [ -81.54761642337418, 30.082928363439667 ], [ -81.547754697209683, 30.083062213334721 ], [ -81.547857230609694, 30.082981942887997 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 284.76472339527305, "ULU": "1", "ANBH": 3.4546267986297607, "Slope": "high", "pred": "high", "Model": "testing", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.686238270484836, 29.562618176611121 ], [ -98.686162455267876, 29.562586981286316 ], [ -98.686117872932769, 29.562676193404094 ], [ -98.686189154305836, 29.562707334851741 ], [ -98.686238270484836, 29.562618176611121 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2973.2403242276487, "ULU": "1", "ANBH": 6.5094478306456676, "Slope": "low", "pred": "high", "Model": "testing", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.375046513350682, 29.549726954771632 ], [ -98.374774515999036, 29.549602100027013 ], [ -98.37462735522648, 29.549847328379091 ], [ -98.374899352041197, 29.549967703427232 ], [ -98.375046513350682, 29.549726954771632 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 962.53764880978645, "ULU": "2", "ANBH": 11.218259228003417, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.578150722941473, 45.635902788236635 ], [ -122.57810619839421, 45.635902776739421 ], [ -122.578106141718479, 45.635884942863306 ], [ -122.578092821198453, 45.635884935684835 ], [ -122.578092749644, 45.635831402649401 ], [ -122.577976862825153, 45.635831428077246 ], [ -122.577976840485761, 45.635835857990521 ], [ -122.577918897094278, 45.63583587064651 ], [ -122.577918861186404, 45.635867082801759 ], [ -122.577905442225372, 45.635867107043417 ], [ -122.57790554015213, 45.635983033126386 ], [ -122.577976804284901, 45.635983027673738 ], [ -122.577976810253475, 45.63599637455993 ], [ -122.578039218395489, 45.635996383290802 ], [ -122.578039263063644, 45.635987523433258 ], [ -122.578150685830593, 45.635987476491586 ], [ -122.578150722941473, 45.635902788236635 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2625.377644455195, "ULU": "1", "ANBH": 2.5, "Slope": "low", "pred": "high", "Model": "testing", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.737701911205761, 34.037731841001779 ], [ -84.737412112754228, 34.037575799668133 ], [ -84.737305071866004, 34.037709547340931 ], [ -84.737336315392426, 34.037727409493414 ], [ -84.737291681778032, 34.037785424570068 ], [ -84.737550317149285, 34.037928099279057 ], [ -84.737701911205761, 34.037731841001779 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 693.57413279459774, "ULU": "2", "ANBH": 8.3423053939572256, "Slope": "high", "pred": "high", "Model": "testing", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -83.922912722494942, 33.846605891823074 ], [ -83.922845813512197, 33.8465969963923 ], [ -83.92285470239095, 33.846570196665581 ], [ -83.922738823634063, 33.846552355840821 ], [ -83.922716520584544, 33.846672765440069 ], [ -83.922890419508832, 33.846699488211527 ], [ -83.922912722494942, 33.846605891823074 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 804.95542175363869, "ULU": "2", "ANBH": 3.6797454695854199, "Slope": "high", "pred": "high", "Model": "testing", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.147455194680646, 33.980436865973104 ], [ -84.147441830181734, 33.980343258072423 ], [ -84.147187662609241, 33.980365507795646 ], [ -84.14719659914968, 33.980459159563779 ], [ -84.147455194680646, 33.980436865973104 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 518.51545227478641, "ULU": "2", "ANBH": 11.420080184936523, "Slope": "high", "pred": "high", "Model": "testing", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.055767178878114, 33.935734419162493 ], [ -84.05572702432957, 33.935658635842962 ], [ -84.055557536363111, 33.935725495855529 ], [ -84.055597691024147, 33.935796785624241 ], [ -84.055767178878114, 33.935734419162493 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 597.87136004174386, "ULU": "2", "ANBH": 4.6430115699768066, "Slope": "high", "pred": "high", "Model": "testing", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.196046042883893, 34.177234875898513 ], [ -84.195930042865655, 34.177141185738407 ], [ -84.195840910937335, 34.177221464226079 ], [ -84.19595683068458, 34.177315150597245 ], [ -84.196046042883893, 34.177234875898513 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 292.73841644988408, "ULU": "1", "ANBH": 2.5000536441802979, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.213124387968762, 34.243635363037527 ], [ -84.213021770968751, 34.243639821806546 ], [ -84.213021770968751, 34.243724503729474 ], [ -84.213124387968762, 34.243720044974843 ], [ -84.213124387968762, 34.243635363037527 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 442.74978807008108, "ULU": "1", "ANBH": 7.7836294174194336, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.164013210880213, 29.967928146638748 ], [ -90.164008780852441, 29.967789910861267 ], [ -90.163919608788973, 29.96778993306776 ], [ -90.163919608788973, 29.967821163078732 ], [ -90.163910677303534, 29.967825585153719 ], [ -90.163906175835677, 29.967870230219589 ], [ -90.163924038806485, 29.967870208105442 ], [ -90.163924038806485, 29.967923757834026 ], [ -90.164013210880213, 29.967928146638748 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 11221.69362507983, "ULU": "1", "ANBH": 9.2761694902619194, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.821884375118117, 35.27473999485003 ], [ -80.82164806381634, 35.273977513431142 ], [ -80.821630236943435, 35.273964108773882 ], [ -80.821425100888675, 35.274004228813006 ], [ -80.821429578740606, 35.274017613540934 ], [ -80.821233313411284, 35.274062230634613 ], [ -80.821474103783004, 35.274824720460472 ], [ -80.821884375118117, 35.27473999485003 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 236.71157138620259, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.476786396964286, 45.637066566940064 ], [ -122.476750719274278, 45.637066588089127 ], [ -122.47675075224889, 45.637062157909419 ], [ -122.476697297810233, 45.637062129674703 ], [ -122.476697274761889, 45.637160254146671 ], [ -122.47678650558349, 45.637160229892501 ], [ -122.476786396964286, 45.637066566940064 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 700.11223265143315, "ULU": "2", "ANBH": 6.7742644467805269, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.54016533029727, 30.355111900328204 ], [ -81.540120713253259, 30.355102981979385 ], [ -81.540142979923942, 30.355045054428693 ], [ -81.540049392895241, 30.355018291535 ], [ -81.540009212382017, 30.35513870716208 ], [ -81.540031479085741, 30.355143119989236 ], [ -81.540013648981414, 30.35520107328853 ], [ -81.540093926272263, 30.355218940282288 ], [ -81.540107319763962, 30.355174319783551 ], [ -81.540142979923942, 30.355183268372951 ], [ -81.54016533029727, 30.355111900328204 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1339.0537013844194, "ULU": "1", "ANBH": 28.11700558881148, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.057184396910117, 42.351284351545701 ], [ -71.056983723367622, 42.351266519619145 ], [ -71.056943552375557, 42.351458237647392 ], [ -71.057135339356378, 42.351529579965224 ], [ -71.057184396910117, 42.351284351545701 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 588.26834134500916, "ULU": "2", "ANBH": 9.4814596176147461, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.604183077321153, 34.069065981345986 ], [ -84.604151841305452, 34.068976763786665 ], [ -84.604009162001347, 34.069012443395351 ], [ -84.604053739335711, 34.069146212249727 ], [ -84.604125078976779, 34.069128414835603 ], [ -84.604111737751595, 34.069083778815475 ], [ -84.604183077321153, 34.069065981345986 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 211.41255914163511, "ULU": "1", "ANBH": 5.9915556907653809, "Slope": "low", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.840839986128628, 35.026287828355848 ], [ -80.840804340906686, 35.026238795929437 ], [ -80.840706274230868, 35.026292278240078 ], [ -80.840741919496409, 35.02633689420243 ], [ -80.840839986128628, 35.026287828355848 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 757.55132702756896, "ULU": "2", "ANBH": 3.3225994345250793, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.254287888807383, 33.894429738562607 ], [ -81.254113958395578, 33.89442976927522 ], [ -81.254113958395578, 33.894559088387219 ], [ -81.254287888807383, 33.89455905771478 ], [ -81.254287888807383, 33.894429738562607 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 408.13950644263866, "ULU": "2", "ANBH": 4.4099359481264786, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.211926910085538, 33.724533528946552 ], [ -112.21187342518688, 33.724479999709708 ], [ -112.211739621972967, 33.724573705463349 ], [ -112.211793106875362, 33.724627153694051 ], [ -112.211926910085538, 33.724533528946552 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 725.19868317309113, "ULU": "2", "ANBH": 3.7934516692629758, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.934275901846974, 30.043233484472164 ], [ -89.934271411835084, 30.043188867467684 ], [ -89.93424468556303, 30.043193350923826 ], [ -89.934235776801557, 30.043108613656106 ], [ -89.934088603762603, 30.043117533861935 ], [ -89.934084113728815, 30.043126436949329 ], [ -89.934088603762603, 30.043153243333983 ], [ -89.934070786165123, 30.043157643025815 ], [ -89.934070786165123, 30.043184447165643 ], [ -89.934093022525502, 30.043179961506123 ], [ -89.934102002590478, 30.043246888139667 ], [ -89.934275901846974, 30.043233484472164 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 862.70800303281101, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.593516163046715, 42.38863821582725 ], [ -71.593480486802591, 42.388557966759294 ], [ -71.593315416213272, 42.388598055359559 ], [ -71.593284267393145, 42.388531188002133 ], [ -71.593128161054054, 42.388566881478425 ], [ -71.593159400437372, 42.388638264708575 ], [ -71.593257464917741, 42.38861589367697 ], [ -71.593270866155706, 42.38864265144467 ], [ -71.593284267393145, 42.388638265904461 ], [ -71.593297578081163, 42.388669436956398 ], [ -71.593400169965221, 42.388647162638229 ], [ -71.593404606859778, 42.388664957689798 ], [ -71.593516163046715, 42.38863821582725 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 993.10931802495372, "ULU": "2", "ANBH": 8.0606374740600586, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.475795449236173, 29.621955457932547 ], [ -98.475764219062484, 29.621826140953445 ], [ -98.475523420625251, 29.62187070143073 ], [ -98.475541254419085, 29.621937587933697 ], [ -98.475608152115413, 29.621924263406125 ], [ -98.475621548407204, 29.621991082874072 ], [ -98.475795449236173, 29.621955457932547 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 250.97170212362568, "ULU": "2", "ANBH": 5.4124102592468262, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.080503356156569, 33.947760620167159 ], [ -81.080463186881005, 33.947622334825766 ], [ -81.08041417528419, 33.947631261475991 ], [ -81.080449797117907, 33.947769469363521 ], [ -81.080503356156569, 33.947760620167159 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 343.07767228722679, "ULU": "2", "ANBH": 3.5979955196380615, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -83.993723197771345, 33.688802769478336 ], [ -83.993616170745895, 33.688735860042527 ], [ -83.993562657162499, 33.688798288657281 ], [ -83.993669684282182, 33.688865198103997 ], [ -83.993723197771345, 33.688802769478336 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1162.6352149061008, "ULU": "1", "ANBH": 2.5, "Slope": "low", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.633464296121602, 32.564636603623363 ], [ -96.633303764643827, 32.564386921328214 ], [ -96.633201200812223, 32.564431505629223 ], [ -96.633357329444635, 32.564685715596916 ], [ -96.633464296121602, 32.564636603623363 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1412.876193580541, "ULU": "1", "ANBH": 3.2346639633178711, "Slope": "low", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.30620518763341, 33.980173815010353 ], [ -81.306178401971763, 33.980008778211513 ], [ -81.306156150552951, 33.980013277844748 ], [ -81.306138265445597, 33.979964241851675 ], [ -81.305991153981921, 33.979986477669726 ], [ -81.306000054569367, 33.980026690460939 ], [ -81.305973268836112, 33.980031121900375 ], [ -81.306000054569367, 33.98020054726571 ], [ -81.30620518763341, 33.980173815010353 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 939.36139515764876, "ULU": "2", "ANBH": 6.8654541746757198, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.408889817730241, 33.654547923227653 ], [ -112.408880904657281, 33.654503355911011 ], [ -112.408827426218366, 33.654512232105581 ], [ -112.408805143534877, 33.654396317026439 ], [ -112.408608964955548, 33.65442310056541 ], [ -112.408622334567553, 33.654494448362811 ], [ -112.408693639162564, 33.654485503309573 ], [ -112.408711465310773, 33.654570262937007 ], [ -112.408889817730241, 33.654547923227653 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 865.71161394853095, "ULU": "2", "ANBH": 4.5723695755004883, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.953241410977924, 45.514940736563226 ], [ -122.95320127350432, 45.51494071582129 ], [ -122.953205743786739, 45.514820325139766 ], [ -122.953098686225459, 45.514820358142579 ], [ -122.953098693051274, 45.514815852389368 ], [ -122.953031870934055, 45.514815874321229 ], [ -122.953031805021993, 45.514891651699351 ], [ -122.95307640212836, 45.514891674832803 ], [ -122.953071895100081, 45.5149228910159 ], [ -122.953036290814566, 45.514922929134976 ], [ -122.95303184543657, 45.514994255234377 ], [ -122.953085288669158, 45.514994226364209 ], [ -122.95308536892378, 45.514989777218958 ], [ -122.953183402578091, 45.514994277163233 ], [ -122.953183420397792, 45.514998694529119 ], [ -122.95324139682576, 45.514998724494419 ], [ -122.953241410977924, 45.514940736563226 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 472.79038244596671, "ULU": "2", "ANBH": 7.0006189346313477, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.690024005106224, 29.392182470461432 ], [ -98.689908051668354, 29.392182402969617 ], [ -98.689908051668354, 29.392298409286074 ], [ -98.690019555043449, 29.392298328181507 ], [ -98.690024005106224, 29.392182470461432 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 569.18516592796766, "ULU": "2", "ANBH": 9.2203121185302717, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.897327926596262, 34.152196968707621 ], [ -80.897265464897586, 34.152112268728729 ], [ -80.897207476763271, 34.15214347420703 ], [ -80.897216423989079, 34.15215685065705 ], [ -80.897189666716443, 34.152170262975559 ], [ -80.897176330280672, 34.152156896506142 ], [ -80.897113868463251, 34.15218810560507 ], [ -80.897180719487636, 34.152272795607487 ], [ -80.897327926596262, 34.152196968707621 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 637.69177430250022, "ULU": "2", "ANBH": 5.3307608371827664, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.981890324185983, 35.119714933625858 ], [ -80.981711907444804, 35.119634669043599 ], [ -80.981671772054383, 35.119688121058012 ], [ -80.981694116339398, 35.11970152927934 ], [ -80.98166291865671, 35.119741661278574 ], [ -80.981765449373015, 35.119790698125399 ], [ -80.98179217816454, 35.119750565405738 ], [ -80.981850188886085, 35.119777377606276 ], [ -80.981890324185983, 35.119714933625858 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 771.93487162477857, "ULU": "2", "ANBH": 4.7383804321289062, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.736089268787339, 30.103921812888053 ], [ -81.736084843855522, 30.103801474870213 ], [ -81.735902002101241, 30.103805877834951 ], [ -81.735902002101241, 30.103921824130449 ], [ -81.736089268787339, 30.103921812888053 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 928.45582310536111, "ULU": "2", "ANBH": 2.8535192304377932, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.696387187139067, 29.596088194130747 ], [ -98.69617314685587, 29.59605249391652 ], [ -98.696159711628525, 29.59610603209055 ], [ -98.696182047695331, 29.596106056857391 ], [ -98.696177597275494, 29.596128376804263 ], [ -98.696150810791693, 29.596123905352584 ], [ -98.69614190995587, 29.596172933208862 ], [ -98.696364851012603, 29.596204099567728 ], [ -98.696387187139067, 29.596088194130747 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1193.9539311065389, "ULU": "1", "ANBH": 6.8404445648193359, "Slope": "low", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.929625204931426, 34.160758448722191 ], [ -80.929549353181002, 34.160745078462618 ], [ -80.929460170329563, 34.161186510591207 ], [ -80.929540493961824, 34.16119996009958 ], [ -80.929625204931426, 34.160758448722191 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 765.86714792452779, "ULU": "2", "ANBH": 8.7933131423273387, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.528197051704581, 30.060325252392403 ], [ -81.528192614407686, 30.060178048184319 ], [ -81.528058825596929, 30.06018253424299 ], [ -81.528063262901725, 30.060360889484304 ], [ -81.528139115656487, 30.060356424885061 ], [ -81.528139115656487, 30.060325186309051 ], [ -81.528197051704581, 30.060325252392403 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 368.80857121774108, "ULU": "2", "ANBH": 9.4345502853393572, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.782950006890857, 30.287663586451735 ], [ -81.782883091050877, 30.287668030087424 ], [ -81.782883091050877, 30.287641287783952 ], [ -81.78283403052103, 30.287641261144714 ], [ -81.782838452644938, 30.287766161825203 ], [ -81.782887513171858, 30.287766101079963 ], [ -81.782887513171858, 30.287730444700372 ], [ -81.782950006890857, 30.287730442196619 ], [ -81.782950006890857, 30.287663586451735 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 588.24937524335292, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.536988472177939, 33.453830391038423 ], [ -111.536863564249401, 33.45382151710411 ], [ -111.53684573325603, 33.453955261162555 ], [ -111.536970641184411, 33.453964216548272 ], [ -111.536988472177939, 33.453830391038423 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 603.89085338757241, "ULU": "2", "ANBH": 4.7427849769592285, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.547183939340343, 30.157988461382153 ], [ -81.54708132131924, 30.157988482615306 ], [ -81.54708132131924, 30.158153399164402 ], [ -81.547183939340343, 30.158153465403633 ], [ -81.547183939340343, 30.157988461382153 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 555.90245036163617, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.368540231059825, 32.899996704424041 ], [ -96.368415362047699, 32.899996721863189 ], [ -96.368415362047699, 32.900130430997564 ], [ -96.368540231059825, 32.900130499192677 ], [ -96.368540231059825, 32.899996704424041 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 738.08563307963175, "ULU": "2", "ANBH": 2.5059540484361591, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.237896091856413, 29.9576722644676 ], [ -90.237815769847842, 29.957636588701853 ], [ -90.237820279902749, 29.957632081041712 ], [ -90.237748906555481, 29.957605388278644 ], [ -90.237682043378086, 29.957716850356711 ], [ -90.237833666894204, 29.957783718594143 ], [ -90.237896091856413, 29.9576722644676 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 612.04354873265061, "ULU": "2", "ANBH": 2.6360690593719478, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.30827186232257, 42.460554571412224 ], [ -71.308262981439142, 42.460460955932355 ], [ -71.308169369665279, 42.460465460472072 ], [ -71.30817381010813, 42.460559051925074 ], [ -71.308138105321262, 42.460563536750925 ], [ -71.308142545764483, 42.460612589441247 ], [ -71.308155957715115, 42.460612604283043 ], [ -71.308160398158137, 42.460661656931045 ], [ -71.308222836218562, 42.460657186518816 ], [ -71.308222836218562, 42.460666094233218 ], [ -71.308262981439142, 42.460666123456662 ], [ -71.308254009934245, 42.460554605019034 ], [ -71.30827186232257, 42.460554571412224 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 388.5281242552835, "ULU": "1", "ANBH": 15.147848129272459, "Slope": "high", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.985792507486323, 33.525577359360518 ], [ -111.985707814932766, 33.52551490296333 ], [ -111.985654233928301, 33.525568434071197 ], [ -111.985658782400705, 33.525568401443969 ], [ -111.985623031407442, 33.525604148661898 ], [ -111.985672154909523, 33.525639807286005 ], [ -111.985689984921194, 33.525626413024099 ], [ -111.985716729938531, 33.525648673154052 ], [ -111.985792507486323, 33.525577359360518 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 605.32025231213072, "ULU": "1", "ANBH": 7.4846760771077134, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.648380467293435, 29.412529335347269 ], [ -98.648251150068077, 29.412529313333824 ], [ -98.648251150068077, 29.412663063777888 ], [ -98.648380467293435, 29.412663085759888 ], [ -98.648380467293435, 29.412529335347269 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 5510.5099283642467, "ULU": "1", "ANBH": 2.7523976719285783, "Slope": "low", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.856081257613596, 35.408312370875869 ], [ -80.855916239679956, 35.40823661923649 ], [ -80.85582258298389, 35.408365870717653 ], [ -80.855760173276167, 35.408356979201187 ], [ -80.855733402114637, 35.408392686646401 ], [ -80.855769125145216, 35.408410499069028 ], [ -80.855693287581389, 35.408513067430377 ], [ -80.855666516397505, 35.408499668238541 ], [ -80.855648697087162, 35.408526433836911 ], [ -80.855639745204655, 35.408521937647613 ], [ -80.855662040457361, 35.408495180487058 ], [ -80.855590763188218, 35.408459568426991 ], [ -80.855546172636892, 35.408517479083216 ], [ -80.855621925888343, 35.408553182543031 ], [ -80.855644221146022, 35.408646786095105 ], [ -80.855679944216405, 35.408637888571427 ], [ -80.855706630944169, 35.408762766202493 ], [ -80.855666516397505, 35.408767182394811 ], [ -80.855675468277028, 35.408807347059607 ], [ -80.855728926178244, 35.408802866811293 ], [ -80.855764649210826, 35.408945601705717 ], [ -80.855786944428729, 35.408941158176205 ], [ -80.855813715572367, 35.408914409565384 ], [ -80.855849354115605, 35.408909901951795 ], [ -80.855853830045248, 35.408887596864972 ], [ -80.855969781871764, 35.408860825218291 ], [ -80.85596083002514, 35.408820743532061 ], [ -80.856018763656238, 35.408811792262796 ], [ -80.856023239576416, 35.408793966435383 ], [ -80.856009896266428, 35.408776113325267 ], [ -80.855951878177535, 35.408789537478583 ], [ -80.85589842042522, 35.40860223722224 ], [ -80.856023239576416, 35.408406008282242 ], [ -80.856054486559458, 35.408419415822472 ], [ -80.856067829861999, 35.408383765980901 ], [ -80.856036667335474, 35.408370364859834 ], [ -80.856054486559458, 35.408348078445954 ], [ -80.856081257613596, 35.408312370875869 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 474.95055815880971, "ULU": "2", "ANBH": 7.8335282095956575, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.090741909957728, 33.57773994404873 ], [ -112.090585812455714, 33.577739902682779 ], [ -112.090585812455714, 33.57782914799693 ], [ -112.090741909957728, 33.577829108092011 ], [ -112.090741909957728, 33.57773994404873 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1053.1101843504123, "ULU": "2", "ANBH": 5.1274309606216217, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.804600894253596, 34.987921692954501 ], [ -80.804516219734865, 34.987921755797814 ], [ -80.804516219734865, 34.987881575469515 ], [ -80.804444812511562, 34.987877145356748 ], [ -80.804444812511548, 34.987854804420884 ], [ -80.804391320431733, 34.987850402924281 ], [ -80.804382447334476, 34.987993026780401 ], [ -80.80443593942023, 34.987993093486487 ], [ -80.80443593942023, 34.988046611600481 ], [ -80.804596415463919, 34.988055481172019 ], [ -80.804600894253596, 34.987921692954501 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 552.6785064368969, "ULU": "2", "ANBH": 7.3648967742919922, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.9409549869264, 32.832392241884811 ], [ -96.94078107777284, 32.832392294535111 ], [ -96.94078107777284, 32.832468091748723 ], [ -96.940870285001409, 32.832468111804971 ], [ -96.940870285001409, 32.83250374075358 ], [ -96.9409549869264, 32.832503753670551 ], [ -96.9409549869264, 32.832392241884811 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 435.67088850385272, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.798858339065532, 45.296016711864475 ], [ -122.798800481687508, 45.295936461269513 ], [ -122.798738037278682, 45.295958739098495 ], [ -122.798729112933742, 45.295945385653546 ], [ -122.798653346510179, 45.295972115593401 ], [ -122.798715767322406, 45.296065765745674 ], [ -122.798858339065532, 45.296016711864475 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 7891.7158478300444, "ULU": "1", "ANBH": 4.323531633491867, "Slope": "low", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.956919369114246, 33.941870135665724 ], [ -80.956143480934159, 33.941415257458686 ], [ -80.95597403114111, 33.941615988436681 ], [ -80.956749920979377, 33.942070782650823 ], [ -80.956919369114246, 33.941870135665724 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 315.86566975557827, "ULU": "2", "ANBH": 9.9883486335560452, "Slope": "low", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.67355482869354, 30.362799431775159 ], [ -81.673456729366123, 30.362799457369629 ], [ -81.673456729366123, 30.362893071512215 ], [ -81.67355482869354, 30.362893045933731 ], [ -81.67355482869354, 30.362799431775159 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 470.98400770379726, "ULU": "1", "ANBH": 2.5127952098846436, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.547529777634367, 33.461615987495392 ], [ -111.547431707094233, 33.461598182510293 ], [ -111.54739149635347, 33.461731983281219 ], [ -111.547494115619685, 33.461749777071113 ], [ -111.547529777634367, 33.461615987495392 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1306.3054867156918, "ULU": "2", "ANBH": 9.3595610193544019, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.400210434785294, 34.070100524917734 ], [ -84.400165861741726, 34.069953331699452 ], [ -84.399920549062969, 34.070002387307674 ], [ -84.399969611680575, 34.070154019460574 ], [ -84.400210434785294, 34.070100524917734 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 411.63908374228697, "ULU": "2", "ANBH": 5.1772603988647461, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.184601573671699, 33.364180234954432 ], [ -112.184597116534363, 33.364077597169597 ], [ -112.184481139997899, 33.364082074194179 ], [ -112.184481139997899, 33.364184652048586 ], [ -112.184601573671699, 33.364180234954432 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 471.33995320322089, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.163540730956228, 34.141227581843545 ], [ -81.163491687363319, 34.141116146359138 ], [ -81.163380140414162, 34.141147340654094 ], [ -81.163406891507037, 34.141209746929107 ], [ -81.163429184077401, 34.141258860358008 ], [ -81.163540730956228, 34.141227581843545 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 651.94514120398992, "ULU": "1", "ANBH": 6.113236066430372, "Slope": "high", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.786056387951618, 45.312421743422362 ], [ -122.785940351658212, 45.312354834827602 ], [ -122.785833332524291, 45.312448473947093 ], [ -122.785882417870084, 45.31247520904634 ], [ -122.785837885472802, 45.312515379251714 ], [ -122.78590919854588, 45.312555507788872 ], [ -122.786056387951618, 45.312421743422362 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2041.7174522011917, "ULU": "1", "ANBH": 9.7492832711830442, "Slope": "high", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.024595121770389, 34.921646138714806 ], [ -81.02447469665529, 34.921574782398991 ], [ -81.024175950561101, 34.921909176779437 ], [ -81.024296376132838, 34.921980533190471 ], [ -81.024595121770389, 34.921646138714806 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 348.02653512944994, "ULU": "2", "ANBH": 12.023633003234863, "Slope": "low", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.16597751317876, 42.2735934454698 ], [ -71.165919584726595, 42.273539955709808 ], [ -71.165816963410137, 42.273597858094192 ], [ -71.165897283630059, 42.273673671877859 ], [ -71.165973071091173, 42.27362908259034 ], [ -71.165950769997679, 42.273606773952544 ], [ -71.16597751317876, 42.2735934454698 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 644.48785735517754, "ULU": "2", "ANBH": 3.0898938179016113, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.758678775706358, 42.134415956091125 ], [ -70.758602915659992, 42.134415944111353 ], [ -70.758598469317164, 42.134469489104411 ], [ -70.758562807831396, 42.134469477092921 ], [ -70.758553915144944, 42.134643390531814 ], [ -70.758652006911518, 42.134647844883681 ], [ -70.758660899596066, 42.13448287516119 ], [ -70.758678775706358, 42.134482852672569 ], [ -70.758678775706358, 42.134415956091125 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1304.2585955542722, "ULU": "1", "ANBH": 5.3908084437087345, "Slope": "high", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.920383635603017, 42.547828148050975 ], [ -70.920321137197433, 42.547716665804323 ], [ -70.920285488610816, 42.547725539989315 ], [ -70.920258729491678, 42.547676528638256 ], [ -70.920169562652305, 42.547703254561021 ], [ -70.920191877041105, 42.54774341409 ], [ -70.920044747188086, 42.547788019787681 ], [ -70.920080395794557, 42.547863831315816 ], [ -70.920062526137229, 42.547868260522755 ], [ -70.920089285268489, 42.54791286780295 ], [ -70.920383635603017, 42.547828148050975 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 279.20582282014306, "ULU": "1", "ANBH": 3.8742718696594238, "Slope": "low", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.585875571120738, 30.165778534703783 ], [ -81.585799693070371, 30.165774008247453 ], [ -81.585795259179733, 30.165876556742685 ], [ -81.585871053576355, 30.16588107783593 ], [ -81.585875571120738, 30.165778534703783 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 660.18620240810037, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.630709299771937, 35.243909797103697 ], [ -80.630669242878909, 35.243896380216796 ], [ -80.630691515530103, 35.243847349851393 ], [ -80.63060234020196, 35.243816155844115 ], [ -80.630530949057203, 35.243976682566498 ], [ -80.630624612871372, 35.244003406951833 ], [ -80.63063799340749, 35.243976698530851 ], [ -80.630678135002725, 35.243985635654859 ], [ -80.630709299771937, 35.243909797103697 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 514.60757612709733, "ULU": "1", "ANBH": 9.0511684248530955, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.76673499129889, 45.314245524552035 ], [ -122.76668157207763, 45.314129583605784 ], [ -122.766525473648741, 45.314165263060978 ], [ -122.766570001311322, 45.314263356027965 ], [ -122.766632480517885, 45.314245489294073 ], [ -122.76663686452477, 45.314258870895522 ], [ -122.766668128086067, 45.314250009758339 ], [ -122.766668102596157, 45.314258893379751 ], [ -122.76673499129889, 45.314245524552035 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1054.7246216480978, "ULU": "1", "ANBH": 3.1639843235581084, "Slope": "low", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.771039696821106, 30.449239097835804 ], [ -81.770847929190396, 30.449212318070991 ], [ -81.770816718919477, 30.449381770508666 ], [ -81.770896997717898, 30.449395134618708 ], [ -81.770905926851185, 30.449368379124532 ], [ -81.771012992916425, 30.44938177725026 ], [ -81.771039696821106, 30.449239097835804 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 181.92579166004839, "ULU": "2", "ANBH": 11.397968831056184, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.137091466233898, 42.280678915118862 ], [ -71.137033442894761, 42.280643267754265 ], [ -71.13696218296981, 42.280705729900831 ], [ -71.137020115657862, 42.280741361854567 ], [ -71.137091466233898, 42.280678915118862 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 18084.715882908349, "ULU": "1", "ANBH": 6.5236724384569049, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.9452632093153, 34.074461485407333 ], [ -80.944188580496615, 34.074390176857897 ], [ -80.944135097529923, 34.074929660667692 ], [ -80.94505366669506, 34.074992124490095 ], [ -80.945080407873434, 34.07469786449294 ], [ -80.945236468198502, 34.074711175785737 ], [ -80.9452632093153, 34.074461485407333 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 584.56231140597163, "ULU": "1", "ANBH": 9.5466136932373047, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.082781939340634, 33.998942138158128 ], [ -81.082652592907948, 33.998928765428118 ], [ -81.082634740388755, 33.999058117758707 ], [ -81.082768549973721, 33.999071477781101 ], [ -81.082781939340634, 33.998942138158128 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 565.22717097526061, "ULU": "2", "ANBH": 4.971926212310791, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.770465720936031, 32.614565157801778 ], [ -96.770398806126522, 32.614453725954917 ], [ -96.770282869642145, 32.614502727716157 ], [ -96.770349784331927, 32.614614245442475 ], [ -96.770465720936031, 32.614565157801778 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 3195.6594864412323, "ULU": "1", "ANBH": 8.8636698149960811, "Slope": "high", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -83.848329740280903, 33.603067663134397 ], [ -83.848200452023093, 33.603058687809401 ], [ -83.848187102469126, 33.603237086103846 ], [ -83.848151422737914, 33.603232591336692 ], [ -83.848013153470731, 33.603223679983223 ], [ -83.847901664040165, 33.603214738015765 ], [ -83.847883864547782, 33.603388661583956 ], [ -83.848303041226131, 33.603410934157274 ], [ -83.848329740280903, 33.603067663134397 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 23097.330672383712, "ULU": "1", "ANBH": 8.1024298165649729, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.023611795223374, 42.460135464154703 ], [ -71.023540424732076, 42.459667254412096 ], [ -71.022760064240259, 42.459417567046579 ], [ -71.02274673325806, 42.459332810685375 ], [ -71.022773485908971, 42.459328349379319 ], [ -71.022742289597232, 42.459145543941666 ], [ -71.022711093283135, 42.4591455546161 ], [ -71.022697671612391, 42.459060782309635 ], [ -71.022153640147863, 42.459109837286547 ], [ -71.022247319895698, 42.459702903545057 ], [ -71.023518115783105, 42.460139894132574 ], [ -71.023611795223374, 42.460135464154703 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 428.99416932498104, "ULU": "2", "ANBH": 5.7302732467651367, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.354864632131708, 29.466301640153105 ], [ -98.35484674348676, 29.466154491634789 ], [ -98.354766495412605, 29.466163406294701 ], [ -98.354770925772769, 29.466185715873603 ], [ -98.354762065052668, 29.466185657945665 ], [ -98.354775439724932, 29.466288265519939 ], [ -98.354811049801441, 29.466288223025877 ], [ -98.354815563756006, 29.466306044837427 ], [ -98.354864632131708, 29.466301640153105 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 596.6233730214542, "ULU": "2", "ANBH": 7.5100712776184082, "Slope": "low", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.326507318659452, 29.940486902581849 ], [ -90.326498421527774, 29.940464600465923 ], [ -90.326480555519396, 29.940446732316651 ], [ -90.326458240958161, 29.94043337523026 ], [ -90.326431549602589, 29.940428940897004 ], [ -90.32640478651436, 29.940433330470775 ], [ -90.326382471996325, 29.940442297421441 ], [ -90.326364606040883, 29.940455665275689 ], [ -90.326351260392727, 29.940473522094617 ], [ -90.32634681184436, 29.940495768858678 ], [ -90.326351260392727, 29.940518081938901 ], [ -90.32636015749101, 29.940535883954556 ], [ -90.326378023444406, 29.940553752108585 ], [ -90.326400337959925, 29.940562697333188 ], [ -90.326427029294209, 29.940567131668217 ], [ -90.326453792397629, 29.940562653856691 ], [ -90.326476106956349, 29.940553775138959 ], [ -90.32649397296268, 29.940535907177495 ], [ -90.326507318659452, 29.940513638487257 ], [ -90.326507318659452, 29.940486902581849 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 699.52125803541071, "ULU": "2", "ANBH": 8.6670100158115595, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.240629628969515, 33.986305025847258 ], [ -81.2406162667464, 33.986251586551191 ], [ -81.240562733791648, 33.986260504887525 ], [ -81.240544917478204, 33.986202528408953 ], [ -81.240384402393573, 33.986229289250005 ], [ -81.240411126917735, 33.9863273922318 ], [ -81.24048693039191, 33.986313989081005 ], [ -81.240491384473998, 33.986331858426688 ], [ -81.240629628969515, 33.986305025847258 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 585.46229668645117, "ULU": "2", "ANBH": 4.5664075562562889, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.547485200116029, 33.426268730817178 ], [ -111.547355834339172, 33.426268733673211 ], [ -111.547355834339172, 33.426299961627869 ], [ -111.54733800333203, 33.426299937240621 ], [ -111.54733800333203, 33.426393621052966 ], [ -111.547413785112482, 33.426393561574109 ], [ -111.547413785112482, 33.426389158683037 ], [ -111.547422700616082, 33.426389089331572 ], [ -111.547422700616082, 33.426393573757494 ], [ -111.547462911356931, 33.426393612057225 ], [ -111.547462911356931, 33.426389127632135 ], [ -111.547480742364186, 33.426389151989582 ], [ -111.547485200116029, 33.426268730817178 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1154.3532348482327, "ULU": "2", "ANBH": 2.5443305969238281, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.927833085970306, 33.772834524023118 ], [ -111.927739476796162, 33.772727524145175 ], [ -111.927766222274741, 33.772714114171691 ], [ -111.927721646477053, 33.77266060505027 ], [ -111.927520964409638, 33.772780985894393 ], [ -111.927574455369722, 33.772843461270391 ], [ -111.927645867619674, 33.772803331936856 ], [ -111.927730561636622, 33.772896904959254 ], [ -111.927833085970306, 33.772834524023118 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 733.65864994021968, "ULU": "2", "ANBH": 9.9949607849121094, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.531481915509943, 33.848148734348634 ], [ -84.531294584151354, 33.848130927976143 ], [ -84.531276746847098, 33.848246805972963 ], [ -84.531464078263085, 33.848260196997835 ], [ -84.531481915509943, 33.848148734348634 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 537.04060629777734, "ULU": "2", "ANBH": 4.6739687240106047, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.239728892301699, 33.899936713390446 ], [ -81.239595100327378, 33.89988764167844 ], [ -81.239546104841622, 33.899990228068305 ], [ -81.239675358731745, 33.900039313902866 ], [ -81.239728892301699, 33.899936713390446 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 691.83024761279205, "ULU": "2", "ANBH": 6.6117992401123047, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.461865578604787, 42.73831647885757 ], [ -71.461776444816707, 42.738236204783171 ], [ -71.461749722792561, 42.738249613909005 ], [ -71.461731877914289, 42.738227313995417 ], [ -71.461611492899948, 42.738294191377747 ], [ -71.461633776359406, 42.738312043492307 ], [ -71.461606963741346, 42.738329834218185 ], [ -71.461651621242595, 42.738370022454617 ], [ -71.461682781848651, 42.738356634511369 ], [ -71.461696188155074, 42.738369975492709 ], [ -71.461722910183255, 42.738352169612249 ], [ -71.461749722792561, 42.738383392536598 ], [ -71.461865578604787, 42.73831647885757 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 686.14998994311679, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.854989685069725, 33.873413994576438 ], [ -84.854936155689302, 33.873396139315929 ], [ -84.854953972308891, 33.873360451974271 ], [ -84.854829176315491, 33.873320350847209 ], [ -84.854811280118014, 33.873351534226039 ], [ -84.854780100951572, 33.873338176725838 ], [ -84.854748842229228, 33.873405063153136 ], [ -84.854958426462915, 33.873476465302204 ], [ -84.854989685069725, 33.873413994576438 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 746.21698592188545, "ULU": "2", "ANBH": 4.7010011672973633, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.985841540016281, 33.794407688268336 ], [ -111.985774677475234, 33.794407682509387 ], [ -111.985774677475234, 33.794416599506704 ], [ -111.985721187441371, 33.794416530018054 ], [ -111.985721187441371, 33.79459049240652 ], [ -111.985841540016281, 33.794590486490719 ], [ -111.985841540016281, 33.794407688268336 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 635.42687467360997, "ULU": "2", "ANBH": 3.0776727199554443, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.223635972118544, 33.896030601661025 ], [ -81.223604786737354, 33.895896782483987 ], [ -81.223466595840236, 33.895919086064673 ], [ -81.223497781277146, 33.896052820756736 ], [ -81.223635972118544, 33.896030601661025 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 554.14296917819411, "ULU": "2", "ANBH": 3.7946164608001713, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.638204768580607, 29.581756641424665 ], [ -98.638097787706982, 29.581694186763436 ], [ -98.638021936260714, 29.581796830138831 ], [ -98.63812900093464, 29.581859191564416 ], [ -98.638204768580607, 29.581756641424665 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 679.455634793542, "ULU": "2", "ANBH": 6.3640508651733398, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.64219601072017, 35.085063244099224 ], [ -80.642138008355388, 35.084974092743337 ], [ -80.641964085689111, 35.085049845489046 ], [ -80.642026575959434, 35.085139011735158 ], [ -80.64219601072017, 35.085063244099224 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 634.22322362497857, "ULU": "1", "ANBH": 12.172125638186278, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.898134244041117, 32.77700135323942 ], [ -96.898107474724029, 32.776907702008565 ], [ -96.89792025353708, 32.776947834670878 ], [ -96.897942520305193, 32.777041476770009 ], [ -96.898134244041117, 32.77700135323942 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 14708.870967365834, "ULU": "1", "ANBH": 3.2559089955488689, "Slope": "low", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.86048678972341, 34.997455272277193 ], [ -80.860411041076915, 34.997428539670771 ], [ -80.860446677572838, 34.997321530240718 ], [ -80.85997402825447, 34.997241204844656 ], [ -80.859965076855744, 34.997272455485707 ], [ -80.859924964443593, 34.997263504693919 ], [ -80.85970202351281, 34.997227895777336 ], [ -80.859670777953937, 34.997321482328367 ], [ -80.859599419807523, 34.997312586910056 ], [ -80.859487948966233, 34.997722797919096 ], [ -80.860339683590709, 34.99789671819277 ], [ -80.86048678972341, 34.997455272277193 ] ], [ [ -80.860023092035206, 34.997655966148827 ], [ -80.860188017053588, 34.997687189071215 ], [ -80.860246032071387, 34.997468667646835 ], [ -80.860081022725552, 34.997437438414806 ], [ -80.860023092035206, 34.997655966148827 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 937.7346065477858, "ULU": "2", "ANBH": 6.6982396456288509, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.252216062754911, 29.59378726594711 ], [ -98.252184842721917, 29.593724918647659 ], [ -98.251957454431164, 29.593814087241853 ], [ -98.252010962405663, 29.593921069492847 ], [ -98.252198282360169, 29.59384976659047 ], [ -98.252171486562133, 29.59380066961867 ], [ -98.252216062754911, 29.59378726594711 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2160.8080234928825, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.826731942978526, 33.873150922878018 ], [ -111.826660529096742, 33.873097449446135 ], [ -111.826620409960213, 33.873133092690907 ], [ -111.826629325323893, 33.873137519541714 ], [ -111.826575833141476, 33.87318658391245 ], [ -111.82655800241389, 33.873173191056139 ], [ -111.826562460095815, 33.873168717342701 ], [ -111.826526798640487, 33.873142012664552 ], [ -111.826522340958547, 33.873146486377813 ], [ -111.826504510230748, 33.873133093499547 ], [ -111.826508967912716, 33.873128619786378 ], [ -111.826464391093083, 33.87309740713674 ], [ -111.826459933411115, 33.87309742275032 ], [ -111.826428729637115, 33.873075079424019 ], [ -111.82640198354504, 33.873101840639805 ], [ -111.826393068180963, 33.873097413760576 ], [ -111.82638861049891, 33.873101887471705 ], [ -111.82637960416173, 33.873097396395295 ], [ -111.826326111976883, 33.873146460697086 ], [ -111.826343942705194, 33.873159853615782 ], [ -111.826294908202144, 33.873204444183443 ], [ -111.826366231115557, 33.873253476642766 ], [ -111.826384061843754, 33.873235662871515 ], [ -111.826393068180963, 33.873244530972897 ], [ -111.82638861049891, 33.873249004680112 ], [ -111.826393068180963, 33.873253447160266 ], [ -111.826357315751423, 33.873284714521454 ], [ -111.826415356591085, 33.873324779607408 ], [ -111.82643764500115, 33.873306950222144 ], [ -111.826508967912716, 33.873360521601327 ], [ -111.826580290823358, 33.87329364351428 ], [ -111.826593663868991, 33.873302512819137 ], [ -111.826714112251437, 33.873191027144649 ], [ -111.826700739206075, 33.873177699753235 ], [ -111.826731942978526, 33.873150922878018 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 594.29251246497199, "ULU": "2", "ANBH": 4.4746715469273068, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.198696720025907, 33.376888638102074 ], [ -112.198629863442747, 33.376888646707272 ], [ -112.198629863442747, 33.376910931288798 ], [ -112.198571921068876, 33.376910895339734 ], [ -112.198576378174621, 33.377040269983205 ], [ -112.198696720025907, 33.377040238174679 ], [ -112.198696720025907, 33.376888638102074 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 494.90949877982581, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.213183716722739, 29.895494509618775 ], [ -90.213143581233311, 29.895485659184391 ], [ -90.213161466918635, 29.895432140686811 ], [ -90.213049931919358, 29.895396483563637 ], [ -90.213018739379066, 29.895476680043892 ], [ -90.213081196027332, 29.895494586138753 ], [ -90.2130722532021, 29.895525758716293 ], [ -90.213161466918635, 29.895552536720071 ], [ -90.213183716722739, 29.895494509618775 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 374.33946844631322, "ULU": "1", "ANBH": 6.125969409942627, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.136433040285567, 32.756703474637007 ], [ -97.136401819978573, 32.756703453867956 ], [ -97.136401819978573, 32.756681175470284 ], [ -97.13631711442963, 32.756681202730356 ], [ -97.13631711442963, 32.756761490635242 ], [ -97.136357289986961, 32.756761429671819 ], [ -97.136357289986961, 32.756792705090781 ], [ -97.136433040285567, 32.756792673861064 ], [ -97.136433040285567, 32.756703474637007 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 236.70551858681142, "ULU": "1", "ANBH": 3.261878490447998, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.130360518078817, 33.949579875119099 ], [ -81.130293611949469, 33.949566514038899 ], [ -81.130262389069472, 33.949664605931133 ], [ -81.130329295225593, 33.949677967027732 ], [ -81.130360518078817, 33.949579875119099 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 285.50955619412071, "ULU": "1", "ANBH": 2.5, "Slope": "low", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.006201319226193, 35.27189959785354 ], [ -81.006161196273951, 35.271854965510279 ], [ -81.00614779385468, 35.271863855620147 ], [ -81.006094268446859, 35.271846065264668 ], [ -81.006049677961286, 35.271921859323996 ], [ -81.006085417785357, 35.271935247460057 ], [ -81.006103203399348, 35.27195311360957 ], [ -81.006201319226193, 35.27189959785354 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 8423.6040869191238, "ULU": "1", "ANBH": 8.0131375864458274, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.558459366323106, 45.402192390885041 ], [ -122.557567508011033, 45.402192389424357 ], [ -122.557563104414641, 45.402629360265983 ], [ -122.55795548237424, 45.402633778688056 ], [ -122.557955507979756, 45.40245098409256 ], [ -122.558298877245861, 45.402455446153525 ], [ -122.558298789559487, 45.402401958122041 ], [ -122.558459301678241, 45.40240191558641 ], [ -122.558459366323106, 45.402192390885041 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1350.4454539143542, "ULU": "2", "ANBH": 3.911140227774919, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.11372732495056, 33.01765004520135 ], [ -97.113446438230241, 33.017632216055503 ], [ -97.113437486012074, 33.017774944711398 ], [ -97.113713937632667, 33.017788325971082 ], [ -97.11372732495056, 33.01765004520135 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1246.3104716720413, "ULU": "1", "ANBH": 5.7099161148071289, "Slope": "low", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.050346442489442, 33.99160697684534 ], [ -81.050239367453045, 33.991410728659559 ], [ -81.050083345974443, 33.991468672405212 ], [ -81.050185872002572, 33.991664925869699 ], [ -81.050346442489442, 33.99160697684534 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 604.43635429098128, "ULU": "1", "ANBH": 2.5027608871459961, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.182680834554645, 29.67502770931198 ], [ -98.182636300516123, 29.674929592294816 ], [ -98.182484684835202, 29.67498304094449 ], [ -98.182529302178438, 29.675081152846072 ], [ -98.182680834554645, 29.67502770931198 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 824.46013051359091, "ULU": "2", "ANBH": 2.9372940063476558, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.96745992111272, 32.652498759069857 ], [ -96.967317246658524, 32.652445251021419 ], [ -96.967263733574157, 32.6525522901144 ], [ -96.967254801072741, 32.652561193820823 ], [ -96.967343962242211, 32.652596824697014 ], [ -96.967312739429246, 32.652650377647802 ], [ -96.967384117587699, 32.652677129355219 ], [ -96.967401900677089, 32.65264148132885 ], [ -96.967384117587699, 32.652636977743654 ], [ -96.96745992111272, 32.652498759069857 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 6566.4146644264401, "ULU": "1", "ANBH": 10.998431246212649, "Slope": "high", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.309204611702384, 33.919472038739549 ], [ -84.309173378498897, 33.919472039500619 ], [ -84.309173378498897, 33.919253531752439 ], [ -84.308914760518235, 33.919253557843916 ], [ -84.308914760518235, 33.919476476390699 ], [ -84.308780994922969, 33.919476495593422 ], [ -84.308780994922969, 33.919249081382659 ], [ -84.308526871576831, 33.919249144420924 ], [ -84.308526871576831, 33.919489875973809 ], [ -84.308566937225734, 33.919489858875444 ], [ -84.308566937225734, 33.919596907029259 ], [ -84.309204611702384, 33.919601395765561 ], [ -84.309204611702384, 33.919472038739549 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 927.29150916866138, "ULU": "2", "ANBH": 16.23812038189989, "Slope": "low", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.085107254956228, 42.306390092797038 ], [ -71.084915481122081, 42.306305347297418 ], [ -71.084844121284561, 42.306394556009899 ], [ -71.084906595145554, 42.306425750204546 ], [ -71.084879846541511, 42.306461464099989 ], [ -71.084942229723779, 42.306488215985688 ], [ -71.084933343747821, 42.306501577175538 ], [ -71.084995817595072, 42.3065283444868 ], [ -71.085107254956228, 42.306390092797038 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 19864.719351538432, "ULU": "1", "ANBH": 4.586530580924034, "Slope": "high", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.968628772182143, 29.673052286429392 ], [ -89.968111526909667, 29.671830529518601 ], [ -89.967705786396806, 29.671959774483071 ], [ -89.968223037150366, 29.67318162025699 ], [ -89.968628772182143, 29.673052286429392 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1188.2957094168719, "ULU": "2", "ANBH": 2.5998715370674881, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.313502394186955, 41.996371090888736 ], [ -71.313248205024223, 41.996344339358338 ], [ -71.313234883876177, 41.996406750352378 ], [ -71.313279468941275, 41.996411253659424 ], [ -71.31325717640938, 41.996518251724822 ], [ -71.313306201853763, 41.996522698251709 ], [ -71.313306201853763, 41.996536066809043 ], [ -71.313350786910348, 41.996540570093813 ], [ -71.313355227291709, 41.996527144754005 ], [ -71.313457809148446, 41.996540525379203 ], [ -71.313471220908568, 41.996460304928782 ], [ -71.313484542048201, 41.996464736862208 ], [ -71.313502394186955, 41.996371090888736 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 917.48920551808351, "ULU": "2", "ANBH": 7.2738785743713379, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.134529039025139, 32.819969197931542 ], [ -97.134346241326227, 32.819969172308049 ], [ -97.134346241326227, 32.820116375627471 ], [ -97.134529039025139, 32.820116401211571 ], [ -97.134529039025139, 32.819969197931542 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 11476.116121360292, "ULU": "1", "ANBH": 6.7505932124304087, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.712781563427427, 30.095476307893868 ], [ -81.71265670747006, 30.095369270682628 ], [ -81.712527424958992, 30.095369326690253 ], [ -81.712522915099854, 30.095431697846202 ], [ -81.711640063123838, 30.09541834549729 ], [ -81.71164448951987, 30.09534695581225 ], [ -81.711318939911692, 30.095342569503885 ], [ -81.711318939911692, 30.095404963011944 ], [ -81.711515205239508, 30.095578907942368 ], [ -81.711640063123838, 30.095636853910555 ], [ -81.711769347185964, 30.095641261885188 ], [ -81.711769347185964, 30.095659113581533 ], [ -81.712398058705858, 30.095668043771649 ], [ -81.7124025685726, 30.095650214533951 ], [ -81.712652281134595, 30.095650243418568 ], [ -81.712781563427427, 30.095543164433685 ], [ -81.712781563427427, 30.095476307893868 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 187.5180528056091, "ULU": "1", "ANBH": 5.1099605560302734, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.635520726649489, 35.076974395931785 ], [ -80.635435960050799, 35.076947675640021 ], [ -80.63540920054686, 35.077005621525615 ], [ -80.635493967173289, 35.077032425075878 ], [ -80.635520726649489, 35.076974395931785 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 178.53999819012722, "ULU": "1", "ANBH": 3.641620372810201, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.775795096337035, 35.079177227733368 ], [ -80.775737104831279, 35.079163805548163 ], [ -80.775705911132363, 35.079253016862374 ], [ -80.775763902660543, 35.079266439059452 ], [ -80.775795096337035, 35.079177227733368 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 761.26490951943219, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.904155591075025, 45.448370850152301 ], [ -122.904030735163133, 45.448366364348054 ], [ -122.904021904825356, 45.448509059667046 ], [ -122.903959385328761, 45.448509053806262 ], [ -122.903959389873151, 45.448535783924605 ], [ -122.903977196640881, 45.448535803703521 ], [ -122.903977199677357, 45.448553623791199 ], [ -122.904151220620321, 45.448558100634351 ], [ -122.904155591075025, 45.448370850152301 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1081.8612073587594, "ULU": "2", "ANBH": 9.376744270324707, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.841536411849148, 45.534699015984678 ], [ -122.841482873379903, 45.534699008167244 ], [ -122.841331354377687, 45.534703445168553 ], [ -122.841335723510781, 45.534859519541641 ], [ -122.841353659574082, 45.534859519983087 ], [ -122.841358126907025, 45.534921988748074 ], [ -122.84149181475513, 45.53492193912502 ], [ -122.841487399572316, 45.534805993938058 ], [ -122.841536478700093, 45.534805993732675 ], [ -122.841536411849148, 45.534699015984678 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 596.60802822229653, "ULU": "2", "ANBH": 4.5632109642028809, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.666809500913089, 32.537119509494687 ], [ -96.66661323912308, 32.537119514025605 ], [ -96.66661323912308, 32.537208705066739 ], [ -96.666809500913089, 32.537208700511869 ], [ -96.666809500913089, 32.537119509494687 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 256.59440535852156, "ULU": "1", "ANBH": 7.6691751480102548, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.826806485605474, 33.150277146512714 ], [ -96.826726183580092, 33.150259261522478 ], [ -96.826703941081419, 33.150348430620753 ], [ -96.826784161305412, 33.150361879893026 ], [ -96.826806485605474, 33.150277146512714 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 199.89484079416042, "ULU": "1", "ANBH": 3.0747368335723877, "Slope": "low", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.979625093101745, 34.16969451465058 ], [ -80.979504683693165, 34.169627637762773 ], [ -80.979477954128726, 34.169663290642418 ], [ -80.979598363577978, 34.169730167538695 ], [ -80.979625093101745, 34.16969451465058 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 294.75474676428968, "ULU": "1", "ANBH": 2.9747612476348877, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.366803581392602, 32.808745656393363 ], [ -97.366723367753892, 32.808745670506738 ], [ -97.366723367753892, 32.808852686767644 ], [ -97.36679912965684, 32.808857129787761 ], [ -97.366803581392602, 32.808745656393363 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 920.62395607842006, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -83.952525603352726, 33.572282027967653 ], [ -83.952440876885049, 33.572224021663068 ], [ -83.952351708006489, 33.572322133779714 ], [ -83.952271423596741, 33.572273109892677 ], [ -83.952222396747274, 33.57232211922679 ], [ -83.952387327112206, 33.572429145508622 ], [ -83.952525603352726, 33.572282027967653 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 184.97326335262568, "ULU": "1", "ANBH": 4.3465423583984375, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.767864868433776, 30.449167737062115 ], [ -81.767851432453242, 30.449100814640666 ], [ -81.767775656815175, 30.449109815897479 ], [ -81.767789009356179, 30.449176645757017 ], [ -81.767864868433776, 30.449167737062115 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 807.48521639911257, "ULU": "2", "ANBH": 3.4348269077616007, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.371522551076623, 33.595901816928553 ], [ -112.371277344330323, 33.595901872064651 ], [ -112.371277344330323, 33.595950927778304 ], [ -112.371312997539235, 33.595950894287121 ], [ -112.371312997539235, 33.596008869179855 ], [ -112.371522551076623, 33.596008847420599 ], [ -112.371522551076623, 33.595901816928553 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1003.1595662039219, "ULU": "1", "ANBH": 2.7067818641662602, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.392798632182789, 42.157197537190733 ], [ -71.392780783882671, 42.15716183475417 ], [ -71.392754056731121, 42.157170763305778 ], [ -71.392727238977088, 42.157117238454603 ], [ -71.392450816674085, 42.157193042084721 ], [ -71.39249983159138, 42.15729560195394 ], [ -71.39277634445763, 42.157224257845549 ], [ -71.392767375006883, 42.157206435477455 ], [ -71.392798632182789, 42.157197537190733 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 417.42642727163604, "ULU": "1", "ANBH": 12.950876235961914, "Slope": "high", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.539499324318797, 33.95405237547606 ], [ -84.539494925604558, 33.95397661083414 ], [ -84.539329933592057, 33.953981008061156 ], [ -84.539334332318788, 33.9540568575067 ], [ -84.539499324318797, 33.95405237547606 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 997.88970439145567, "ULU": "1", "ANBH": 3.277695894241333, "Slope": "low", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.68829952472386, 33.410514730129854 ], [ -84.688290670139025, 33.410291750419184 ], [ -84.688156893948118, 33.410296186696428 ], [ -84.688161361136622, 33.41032743430808 ], [ -84.68817021574138, 33.410519186640585 ], [ -84.68829952472386, 33.410514730129854 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 344.01359268756801, "ULU": "1", "ANBH": 6.8588805198669434, "Slope": "low", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.329808949239023, 29.535694146032309 ], [ -98.329706333165674, 29.535578209773156 ], [ -98.329652852532192, 29.535613898410411 ], [ -98.329755384968038, 29.535729839940188 ], [ -98.329808949239023, 29.535694146032309 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1530.9332084036735, "ULU": "2", "ANBH": 2.5791921615600586, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.419297429334364, 33.472393669675469 ], [ -112.419243860339492, 33.472380298775114 ], [ -112.419257229851141, 33.472340180560813 ], [ -112.419127991233267, 33.472308948479785 ], [ -112.419056596214048, 33.472505126742469 ], [ -112.419087791745156, 33.472514059364634 ], [ -112.419069965727459, 33.472563140144828 ], [ -112.419221577819812, 33.472598810377839 ], [ -112.419297429334364, 33.472393669675469 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 671.16137074419578, "ULU": "2", "ANBH": 6.9351077079772949, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.74037124940736, 32.973353338563349 ], [ -96.740228580597673, 32.973353337653243 ], [ -96.740228580597673, 32.973491587792275 ], [ -96.74037124940736, 32.973491588675166 ], [ -96.74037124940736, 32.973353338563349 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 890.18731989154935, "ULU": "2", "ANBH": 2.6464118143407305, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.652603243869521, 29.617273404037096 ], [ -98.65253190982979, 29.617175308466777 ], [ -98.652487263147009, 29.617202008615788 ], [ -98.652469471619042, 29.617175266178322 ], [ -98.652344595350485, 29.617242137447487 ], [ -98.652420377093947, 29.617344768756901 ], [ -98.652496242834886, 29.617304619632797 ], [ -98.652509586485124, 29.61732691414911 ], [ -98.652603243869521, 29.617273404037096 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 861.79335205084806, "ULU": "2", "ANBH": 5.3325672149658203, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.705140341947939, 29.528595227541068 ], [ -98.704926361248198, 29.528506025760741 ], [ -98.704877317090109, 29.528599679127488 ], [ -98.705091297653283, 29.528688880912114 ], [ -98.705140341947939, 29.528595227541068 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1204.7538101963792, "ULU": "2", "ANBH": 8.070727126796605, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.628547198353147, 33.373785097975556 ], [ -111.6284892474267, 33.373785133950072 ], [ -111.6284892474267, 33.373762789736254 ], [ -111.62836433907178, 33.37375838596121 ], [ -111.628359881308214, 33.373976850067216 ], [ -111.62846240987048, 33.373976849170603 ], [ -111.628466867634046, 33.373941216163004 ], [ -111.628547198353147, 33.37394118109777 ], [ -111.628547198353147, 33.373785097975556 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 573.96364634409804, "ULU": "2", "ANBH": 11.298841708384831, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.794760442861403, 45.496863517303758 ], [ -122.794729263821594, 45.496778810844944 ], [ -122.794506302897361, 45.49681891246837 ], [ -122.794537554610855, 45.496903675830737 ], [ -122.794760442861403, 45.496863517303758 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 697.16869398448534, "ULU": "1", "ANBH": 3.2911808490753174, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.795585455046634, 45.315556480475635 ], [ -122.795576486540327, 45.315556490516272 ], [ -122.795580905885984, 45.315480687574329 ], [ -122.795384743381248, 45.315476220850897 ], [ -122.795384721240453, 45.315480706722823 ], [ -122.795358011072651, 45.315480673870269 ], [ -122.79535801503836, 45.315534177555037 ], [ -122.795389258305846, 45.315534189669677 ], [ -122.795384709756803, 45.315596597954155 ], [ -122.795585403212129, 45.315596646017738 ], [ -122.795585455046634, 45.315556480475635 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 542.56369475773727, "ULU": "2", "ANBH": 3.4982612133026123, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.87250407525724, 35.006297704107887 ], [ -80.872437203563521, 35.00619063016758 ], [ -80.87231232559175, 35.006244134832926 ], [ -80.872379197389975, 35.00634670764898 ], [ -80.87250407525724, 35.006297704107887 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 450.79656903731615, "ULU": "2", "ANBH": 6.8812403678894043, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.697921089988327, 29.402616748325482 ], [ -98.697916639467664, 29.402482940551977 ], [ -98.697823010649572, 29.402482915514181 ], [ -98.697823010649572, 29.402616750890047 ], [ -98.697921089988327, 29.402616748325482 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 460.94544997160051, "ULU": "2", "ANBH": 4.8131103515625, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.220385167273434, 29.917366405972228 ], [ -90.220269246614492, 29.91731294097465 ], [ -90.220215722871444, 29.917397664334953 ], [ -90.220331643370642, 29.917455630234908 ], [ -90.220385167273434, 29.917366405972228 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 409.81350068419641, "ULU": "1", "ANBH": 20.03160285949707, "Slope": "low", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.079937501114642, 33.457183688441603 ], [ -112.079928586416003, 33.457183644263559 ], [ -112.079928586416003, 33.457197060388225 ], [ -112.079719000021782, 33.457197055330703 ], [ -112.079719000021782, 33.457255029286983 ], [ -112.079750201469636, 33.457255061997806 ], [ -112.079750201469636, 33.457246117912717 ], [ -112.079790317616286, 33.457246113493866 ], [ -112.079790317616286, 33.457255057577292 ], [ -112.079861726175011, 33.457254987533467 ], [ -112.079861726175011, 33.457246124762847 ], [ -112.079906299669204, 33.457246101732736 ], [ -112.079906299669204, 33.45725504581133 ], [ -112.079937501114642, 33.457254997153051 ], [ -112.079937501114642, 33.457183688441603 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 291.1802500234312, "ULU": "1", "ANBH": 3.993018627166748, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.636506163663242, 35.134933825927696 ], [ -80.636416994677603, 35.134880319281578 ], [ -80.636363476303316, 35.134947210197495 ], [ -80.636452645347347, 35.135000716852318 ], [ -80.636506163663242, 35.134933825927696 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 731.28771636840429, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.860028458527182, 34.148437955135726 ], [ -84.859908047937765, 34.148433516092979 ], [ -84.859903594172607, 34.148611884138518 ], [ -84.860024004771503, 34.148616323199683 ], [ -84.860028458527182, 34.148437955135726 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 8494.8829329963464, "ULU": "1", "ANBH": 7.3820964287675439, "Slope": "high", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.237383911471284, 33.635663642746728 ], [ -112.236746285491691, 33.635663673354578 ], [ -112.236746285491691, 33.635810792527025 ], [ -112.237178797860196, 33.635810831500358 ], [ -112.237178797860224, 33.635891041200225 ], [ -112.236888909981218, 33.635891036752604 ], [ -112.236893366996341, 33.636029286042735 ], [ -112.236955856166333, 33.636029263542149 ], [ -112.236955856166333, 33.63606494830821 ], [ -112.236973684226086, 33.636064993113123 ], [ -112.236973684226086, 33.636096217270044 ], [ -112.237111942642755, 33.636096182269959 ], [ -112.237111942642755, 33.63602927339344 ], [ -112.237165426816929, 33.636029326620736 ], [ -112.237165426816929, 33.636319102476854 ], [ -112.237383911471284, 33.636319106075568 ], [ -112.237383911471284, 33.635663642746728 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 572.91918506585262, "ULU": "2", "ANBH": 7.496901512145997, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.848664991526462, 32.783096923914059 ], [ -96.848580245289682, 32.783096929526764 ], [ -96.848580245289682, 32.783297551438388 ], [ -96.848664991526462, 32.78329754580183 ], [ -96.848664991526462, 32.783096923914059 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 593.98942109207599, "ULU": "2", "ANBH": 7.0212640762329102, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.529456278108455, 29.432118148314359 ], [ -98.529407179166, 29.432118135893521 ], [ -98.529407179166, 29.432064613774767 ], [ -98.529335876833699, 29.432064620289097 ], [ -98.529335876833699, 29.432225186607209 ], [ -98.529456278108455, 29.432225192483781 ], [ -98.529456278108455, 29.432118148314359 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1052.1731504725383, "ULU": "2", "ANBH": 13.005762100219728, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.641373474197991, 30.144820695758547 ], [ -81.641230859226653, 30.144811770754959 ], [ -81.641230859226653, 30.144842995974052 ], [ -81.64122634503201, 30.144843057793267 ], [ -81.641221914433274, 30.144865341203953 ], [ -81.641212969638886, 30.144865295244113 ], [ -81.641208539039354, 30.144909882365106 ], [ -81.641217400238105, 30.144909922991825 ], [ -81.641217400238105, 30.144918844476987 ], [ -81.641168412843101, 30.14491431920721 ], [ -81.641159468042247, 30.144985732563171 ], [ -81.641360098831271, 30.144994598517272 ], [ -81.641373474197991, 30.144820695758547 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2861.1007596776471, "ULU": "1", "ANBH": 7.2779236813430321, "Slope": "low", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.225580700130209, 33.680450893845993 ], [ -112.225054496163395, 33.680450887385454 ], [ -112.225054496163395, 33.680615862920625 ], [ -112.225580700130209, 33.680615868973632 ], [ -112.225580700130209, 33.680450893845993 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 705.08222357522948, "ULU": "2", "ANBH": 5.657147172851146, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.057563345912186, 41.893999030609841 ], [ -71.057532152229143, 41.893972284991598 ], [ -71.05754112948118, 41.893967893747096 ], [ -71.057478651430017, 41.893909853549005 ], [ -71.057420707336306, 41.893949982615013 ], [ -71.057429593911465, 41.893958956862377 ], [ -71.057358229266811, 41.894003523374423 ], [ -71.057277978031479, 41.894016887104755 ], [ -71.057291398578144, 41.894083814499695 ], [ -71.057429593911479, 41.894065931235083 ], [ -71.057509845117139, 41.894016884899322 ], [ -71.057518822369673, 41.894025801481995 ], [ -71.057563345912186, 41.893999030609841 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 6195.5650703415513, "ULU": "1", "ANBH": 7.0914640346162274, "Slope": "high", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.556567613792566, 29.395642683944999 ], [ -98.556250955216484, 29.395611459474271 ], [ -98.556179627593792, 29.396164385723104 ], [ -98.556496202055328, 29.396195615353079 ], [ -98.556567613792566, 29.395642683944999 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 257.53745376108299, "ULU": "1", "ANBH": 3.6901195049285889, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.409263883694649, 30.386637726748173 ], [ -81.409156885444773, 30.386633291570593 ], [ -81.409152441156849, 30.386704647254952 ], [ -81.409259439412978, 30.386704631679507 ], [ -81.409263883694649, 30.386637726748173 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 426.14929886073264, "ULU": "2", "ANBH": 6.8759984970092773, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.566996917801632, 32.90088409263997 ], [ -96.566983560863164, 32.90081269102059 ], [ -96.566814156032862, 32.900830576508532 ], [ -96.566823033486315, 32.900901870796083 ], [ -96.566996917801632, 32.90088409263997 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 957.88928367031735, "ULU": "2", "ANBH": 2.9285263438008347, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.875322260989734, 34.180168965599556 ], [ -80.875139383356711, 34.180124348416228 ], [ -80.875094803704016, 34.180262553495709 ], [ -80.875291021534522, 34.180311616514544 ], [ -80.875322260989734, 34.180226941952085 ], [ -80.875304446058649, 34.180222414568306 ], [ -80.875322260989734, 34.180168965599556 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 385.83509595619034, "ULU": "1", "ANBH": 8.358795166015625, "Slope": "low", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.055358418728161, 33.994884378310616 ], [ -81.055304926762659, 33.994755054488259 ], [ -81.055224646626385, 33.994772898031869 ], [ -81.055273758199021, 33.994893299067002 ], [ -81.055278222885931, 33.994906698277006 ], [ -81.055309391447778, 33.99489775452647 ], [ -81.055358418728161, 33.994884378310616 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 357.09816940311606, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.080693490294394, 34.209951310643163 ], [ -84.080680110967478, 34.209835364842007 ], [ -84.08059096911137, 34.209839774330355 ], [ -84.08060434845801, 34.209960200284861 ], [ -84.080693490294394, 34.209951310643163 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 563.82320466383499, "ULU": "2", "ANBH": 2.9434363842010498, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.240058763448445, 29.955763711493756 ], [ -90.240049814412259, 29.955763727714789 ], [ -90.240045375691068, 29.955750413348358 ], [ -90.239907131257596, 29.955754810559913 ], [ -90.239911569963041, 29.955799445826734 ], [ -90.239898182256326, 29.955803881471457 ], [ -90.239898182256326, 29.955817292106016 ], [ -90.239911569963041, 29.95581726785452 ], [ -90.239916008668928, 29.955866314491928 ], [ -90.240054253133948, 29.955861829046057 ], [ -90.240049814412259, 29.95578154974713 ], [ -90.240058763448445, 29.95578162175396 ], [ -90.240058763448445, 29.955763711493756 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 411.82637271090675, "ULU": "2", "ANBH": 6.4818071523778293, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -112.437722404200571, 33.617791566839529 ], [ -112.437615358574917, 33.617791605813501 ], [ -112.437615358574917, 33.617907493166825 ], [ -112.437722404200571, 33.617907535174055 ], [ -112.437722404200571, 33.617791566839529 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 393.4429888475853, "ULU": "1", "ANBH": 10.495486259460447, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.863242572982898, 35.231803329946302 ], [ -80.863148924861861, 35.231754252505759 ], [ -80.863077569817776, 35.231847934414944 ], [ -80.863175693542445, 35.231892529585025 ], [ -80.863242572982898, 35.231803329946302 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 3178.5486579691847, "ULU": "1", "ANBH": 5.7503338558230315, "Slope": "high", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.594162681137988, 42.567149391456375 ], [ -71.59398430021858, 42.56689524254908 ], [ -71.593654340545783, 42.56702459886484 ], [ -71.593828284749023, 42.5672742497702 ], [ -71.594162681137988, 42.567149391456375 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 258811.16184268426, "ULU": "1", "ANBH": 13.361105744781634, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.649408792788336, 30.433712530315795 ], [ -81.649395418865907, 30.433043664802121 ], [ -81.649390988753566, 30.432949995535584 ], [ -81.649194809740848, 30.432949986539239 ], [ -81.649167978229329, 30.431563189758464 ], [ -81.648044305960212, 30.431581043867585 ], [ -81.648030931792462, 30.431268870028855 ], [ -81.647188187197969, 30.431268945328583 ], [ -81.647188187197969, 30.431322445979504 ], [ -81.64716143855226, 30.431322389036065 ], [ -81.647165868797373, 30.431371460801643 ], [ -81.647197131274254, 30.431371458079219 ], [ -81.647197131274254, 30.431407154246877 ], [ -81.646809191426755, 30.431411602803077 ], [ -81.646809191426755, 30.431429407232248 ], [ -81.646452428755921, 30.431433933852144 ], [ -81.646465803207434, 30.431732666066665 ], [ -81.646247297804621, 30.431737155939057 ], [ -81.646247297804621, 30.431906559156097 ], [ -81.64619823012977, 30.431906554336841 ], [ -81.64619823012977, 30.431968956800315 ], [ -81.646247297804621, 30.431964510540706 ], [ -81.646247297804621, 30.431986853236296 ], [ -81.646077859546722, 30.431991260206356 ], [ -81.646077859546722, 30.43191995559803 ], [ -81.645988668162715, 30.431919908476655 ], [ -81.645988668162715, 30.431991300350042 ], [ -81.645734551543313, 30.431995774545783 ], [ -81.645738981873393, 30.432365846839449 ], [ -81.645560598186037, 30.432370290200129 ], [ -81.645569542457963, 30.432918780082357 ], [ -81.645712232706671, 30.432923218914425 ], [ -81.645707718783839, 30.432709191690886 ], [ -81.64584154812043, 30.432709221902368 ], [ -81.64584154812043, 30.43282957489814 ], [ -81.645966349402286, 30.432829636918083 ], [ -81.645966349402286, 30.432709196620575 ], [ -81.646068915335917, 30.432704777820557 ], [ -81.646064485025477, 30.432851902156521 ], [ -81.646149246013209, 30.43284747600876 ], [ -81.646149246013209, 30.43292768221735 ], [ -81.646465803207434, 30.432923197312551 ], [ -81.646470233493972, 30.433137306352073 ], [ -81.646184855630153, 30.433137245115205 ], [ -81.646193799827046, 30.433654487861599 ], [ -81.646091234065565, 30.433658993847736 ], [ -81.646086803756475, 30.433757068598258 ], [ -81.646568368452563, 30.43374815518548 ], [ -81.64656393817188, 30.433685731246225 ], [ -81.646510356831698, 30.433681247729481 ], [ -81.646505926547562, 30.433623274792023 ], [ -81.646586173162873, 30.433618820802536 ], [ -81.646586173162873, 30.433449419721622 ], [ -81.64674674972386, 30.433449418945433 ], [ -81.646751179993657, 30.43361439132612 ], [ -81.646849314581701, 30.43361440076001 ], [ -81.646853744845401, 30.433823970491936 ], [ -81.646728861461966, 30.433828442164923 ], [ -81.646742235863769, 30.434390302233801 ], [ -81.647642996292774, 30.434385838104237 ], [ -81.647625191835374, 30.433337918931727 ], [ -81.648106746574086, 30.433333449676351 ], [ -81.648097802607168, 30.433106046922997 ], [ -81.648374312787837, 30.43310160786687 ], [ -81.648374312787837, 30.433208607856031 ], [ -81.648561550053302, 30.433204117511387 ], [ -81.648574924125654, 30.433725835203209 ], [ -81.649408792788336, 30.433712530315795 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 850.24779870270481, "ULU": "1", "ANBH": 2.5000843864220843, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.610113254560474, 33.172822330602934 ], [ -111.60986798660953, 33.1728267858268 ], [ -111.609872444372741, 33.172915949597048 ], [ -111.609908106478315, 33.172911522632489 ], [ -111.609908106478315, 33.172947233765917 ], [ -111.610015183769917, 33.172942761914754 ], [ -111.610015183769917, 33.172911545332148 ], [ -111.610113254560474, 33.172907073015622 ], [ -111.610113254560474, 33.172822330602934 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 172.00350421697982, "ULU": "2", "ANBH": 6.678614616394043, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.088988832406116, 29.941744311179907 ], [ -90.088957597239869, 29.94169527214731 ], [ -90.088966582696074, 29.941690854240868 ], [ -90.088957597239869, 29.941677448182148 ], [ -90.088890776889471, 29.941708640854365 ], [ -90.088935347547874, 29.941775583138089 ], [ -90.088988832406116, 29.941744311179907 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 684.20773695079117, "ULU": "1", "ANBH": 5.3265495300292969, "Slope": "high", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.629580427770321, 32.720535688560688 ], [ -96.629357458368162, 32.720535722139836 ], [ -96.629357458368162, 32.72062047057679 ], [ -96.629442162192191, 32.72062045400537 ], [ -96.629442162192191, 32.720629374888375 ], [ -96.629580427770321, 32.720629357853312 ], [ -96.629580427770321, 32.720535688560688 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2536.5668718170296, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.4337104616354, 29.750471209432241 ], [ -98.43331356791505, 29.75040876783547 ], [ -98.433277920384612, 29.750587157557177 ], [ -98.433674730236092, 29.750645131444884 ], [ -98.4337104616354, 29.750471209432241 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 723.48427503490711, "ULU": "2", "ANBH": 6.9078183174133301, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.61672166131676, 33.424966628215728 ], [ -111.616587837437152, 33.424966636376219 ], [ -111.616583379673628, 33.424993450329865 ], [ -111.616520970984766, 33.424988925230146 ], [ -111.616520970984766, 33.425078179203773 ], [ -111.61672166131676, 33.425082617530471 ], [ -111.61672166131676, 33.424966628215728 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 411.73806307392852, "ULU": "1", "ANBH": 8.4446896220093777, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.892619892195825, 45.522275965750822 ], [ -122.892615427117732, 45.52218680083871 ], [ -122.892459389708833, 45.522191263013639 ], [ -122.89246386587368, 45.522284846146526 ], [ -122.892619892195825, 45.522275965750822 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 737.57229874143866, "ULU": "2", "ANBH": 7.1767075926318711, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.888195675811616, 34.130418719240161 ], [ -80.888003963819813, 34.130307278795634 ], [ -80.88794149481943, 34.130378652531903 ], [ -80.88804853626587, 34.130441015400734 ], [ -80.888035113884158, 34.130454412706619 ], [ -80.888119869011263, 34.130503496612185 ], [ -80.888195675811616, 34.130418719240161 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 295.94260804225712, "ULU": "1", "ANBH": 11.914358139038086, "Slope": "low", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.143932499666718, 33.929531829643096 ], [ -84.143896832067711, 33.929456021368352 ], [ -84.143798685675847, 33.929487229097049 ], [ -84.143838862109945, 33.929567491474025 ], [ -84.143932499666718, 33.929531829643096 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 17877.929976949152, "ULU": "1", "ANBH": 2.5, "Slope": "low", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -83.989843791697851, 33.640006814646433 ], [ -83.989125870226644, 33.639498497010045 ], [ -83.988836083917747, 33.639819508496771 ], [ -83.98884940281738, 33.639926548675099 ], [ -83.988920759781422, 33.639980021487141 ], [ -83.98888508130986, 33.640011286833712 ], [ -83.988862802434653, 33.64005136737034 ], [ -83.988876202048971, 33.640082634849449 ], [ -83.988894041289981, 33.640118285201929 ], [ -83.988925199408769, 33.640149479581282 ], [ -83.988938599009344, 33.640198521714552 ], [ -83.988969837825749, 33.640234227435258 ], [ -83.98903667430929, 33.640278805784561 ], [ -83.989076873028509, 33.640292239224785 ], [ -83.989139269783024, 33.640296630145329 ], [ -83.989188347651051, 33.640323421779307 ], [ -83.989241784363642, 33.640323380351944 ], [ -83.989281982947318, 33.640305601731839 ], [ -83.989326540382507, 33.640260990032608 ], [ -83.98939345719397, 33.64030999450415 ], [ -83.98955844839044, 33.640292237460251 ], [ -83.989660962264566, 33.640363551557492 ], [ -83.989808113767708, 33.640216422848702 ], [ -83.989714479281403, 33.640140607239474 ], [ -83.989843791697851, 33.640006814646433 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1268.9966061554169, "ULU": "1", "ANBH": 8.1929696381345707, "Slope": "low", "pred": "high", "Model": "training", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.794455657418879, 33.017997925726803 ], [ -96.793764524061842, 33.017948843777354 ], [ -96.793760110509155, 33.018002354465665 ], [ -96.794451243819253, 33.018051436365106 ], [ -96.794455657418879, 33.017997925726803 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 571.72066013021322, "ULU": "1", "ANBH": 3.988913457286003, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.984851017446303, 30.047915525832742 ], [ -89.984801977143647, 30.047844191910592 ], [ -89.984632506469893, 30.047924493792426 ], [ -89.984681546989876, 30.048000236154639 ], [ -89.984851017446303, 30.047915525832742 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 257.87072432877738, "ULU": "1", "ANBH": 2.5, "Slope": "low", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.590395449082635, 45.307739678799571 ], [ -122.59039094179748, 45.30767277144453 ], [ -122.590257236223763, 45.307681732480191 ], [ -122.590261670819274, 45.307748583178252 ], [ -122.590395449082635, 45.307739678799571 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 8234.6558074731711, "ULU": "1", "ANBH": 0.19193915455123625, "Slope": "low", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.319167053371075, 32.915068500295291 ], [ -97.318685450720153, 32.915068492542467 ], [ -97.318542766498979, 32.915184362295953 ], [ -97.318542766498979, 32.915697194260169 ], [ -97.318810340850362, 32.915697169337022 ], [ -97.318810340850362, 32.915295867589478 ], [ -97.319167053371075, 32.915295836783962 ], [ -97.319167053371075, 32.915068500295291 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 499.62428583502674, "ULU": "2", "ANBH": 9.7356015368435926, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.578955042572389, 30.350456595147197 ], [ -81.578950524610221, 30.350376317924404 ], [ -81.578879241170966, 30.350376344392114 ], [ -81.578879241170966, 30.350349624311512 ], [ -81.578798921721443, 30.350349591361574 ], [ -81.578798921721443, 30.350456646277099 ], [ -81.578955042572389, 30.350456595147197 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 449.68537199550815, "ULU": "1", "ANBH": 11.194948196411133, "Slope": "low", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.792315341994112, 32.823447292507552 ], [ -96.792235082559927, 32.823380453405846 ], [ -96.792136924262564, 32.823465111173448 ], [ -96.792208274950241, 32.823523095367726 ], [ -96.792217265305922, 32.82353203152757 ], [ -96.792315341994112, 32.823447292507552 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 165.93974240235497, "ULU": "2", "ANBH": 7.6352930068969727, "Slope": "low", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.115881789022183, 33.992422975681428 ], [ -81.115814954656614, 33.992373930245407 ], [ -81.115770342264909, 33.992414056950011 ], [ -81.115832799606153, 33.992463122667594 ], [ -81.115881789022183, 33.992422975681428 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 655.96501858486556, "ULU": "2", "ANBH": 7.8325786590576172, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.194352928275322, 29.990901441589273 ], [ -90.194312812265082, 29.99079000897828 ], [ -90.194183526011869, 29.990825657286393 ], [ -90.194205764932931, 29.990883663747319 ], [ -90.19417458754242, 29.990892530023523 ], [ -90.19419239297568, 29.990946044495203 ], [ -90.194210269924923, 29.990941607999773 ], [ -90.1942147034096, 29.990955008691369 ], [ -90.194286068281315, 29.990937174687961 ], [ -90.19427712978819, 29.990919282141849 ], [ -90.194352928275322, 29.990901441589273 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 413.43706959324322, "ULU": "2", "ANBH": 10.053490057892065, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.399363079067285, 45.589702056857718 ], [ -122.399287274610074, 45.589630710108409 ], [ -122.399242654915, 45.589652968278799 ], [ -122.399233825066943, 45.589644055702664 ], [ -122.399202540426813, 45.589661923067325 ], [ -122.399171293994314, 45.589630677069032 ], [ -122.399144531524669, 45.589644061059033 ], [ -122.399184674303982, 45.589679705635625 ], [ -122.399175728343806, 45.589688641126784 ], [ -122.39924267091736, 45.589746592649718 ], [ -122.399247126581102, 45.58974662332286 ], [ -122.399260542396092, 45.589760018197353 ], [ -122.399363079067285, 45.589702056857718 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 554.79913879114883, "ULU": "2", "ANBH": 2.5928993547193615, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.236075361634789, 34.180284903425772 ], [ -84.235932669483745, 34.18028937307723 ], [ -84.235932669483745, 34.180418687784098 ], [ -84.236053093642724, 34.180414188391602 ], [ -84.236053093642724, 34.18034280735931 ], [ -84.236075361634789, 34.180342837126517 ], [ -84.236075361634789, 34.180284903425772 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 451.04818738765925, "ULU": "1", "ANBH": 8.2320470555492875, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -123.104387088356802, 45.522244715501721 ], [ -123.104360306776627, 45.522244748434147 ], [ -123.104360350321883, 45.522182329425178 ], [ -123.104235418529598, 45.522182306083309 ], [ -123.104235546068892, 45.522280421196697 ], [ -123.104320232061085, 45.522280437414679 ], [ -123.104320231672148, 45.522316108994815 ], [ -123.104387087693681, 45.522316058631674 ], [ -123.104387088356802, 45.522244715501721 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 560.4817810519753, "ULU": "2", "ANBH": 5.5447478294372559, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.732387899352929, 42.195978323018529 ], [ -70.732374559572335, 42.195875782536355 ], [ -70.732329912140656, 42.195880217102022 ], [ -70.732329912140656, 42.195893579790813 ], [ -70.732173827589861, 42.195902523429901 ], [ -70.732182811527622, 42.195991669708675 ], [ -70.732387899352929, 42.195978323018529 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 508.25335403761829, "ULU": "2", "ANBH": 3.4908492565155029, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.510662217668028, 45.413215295545875 ], [ -122.510461596862683, 45.413215231144342 ], [ -122.51046156986132, 45.413273229343595 ], [ -122.510483890905903, 45.413273235906523 ], [ -122.510483827489594, 45.413317808176849 ], [ -122.510626560517522, 45.413317840879927 ], [ -122.510626551271343, 45.413273211730797 ], [ -122.510662216378023, 45.413273205650206 ], [ -122.510662217668028, 45.413215295545875 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 766.85698693635209, "ULU": "1", "ANBH": 2.6348748207092285, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.813316412247545, 30.231568098154636 ], [ -81.813303067981266, 30.231568049928601 ], [ -81.81329864769252, 30.231505607162649 ], [ -81.81308013497322, 30.23151011798814 ], [ -81.81308013497322, 30.231603760584193 ], [ -81.813316412247545, 30.231603771531169 ], [ -81.813316412247545, 30.231568098154636 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 447.00312938090406, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "6", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.813265766014396, 45.621602391051312 ], [ -122.813216756398432, 45.621539997050931 ], [ -122.813051689617041, 45.621602460909408 ], [ -122.813078467446942, 45.621638119243485 ], [ -122.813069533770687, 45.621642528679949 ], [ -122.813069591889843, 45.621660386687822 ], [ -122.81307851032652, 45.621673778383659 ], [ -122.81309628908771, 45.621682703760662 ], [ -122.813118631837924, 45.62168717864018 ], [ -122.813140822975484, 45.621682683475775 ], [ -122.813154244820325, 45.621669338514373 ], [ -122.813158753083442, 45.621651458146637 ], [ -122.813185483179169, 45.621642601062803 ], [ -122.813181037663995, 45.621638075001883 ], [ -122.813265766014396, 45.621602391051312 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2069.0553872237201, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.77220798316327, 30.453876529542352 ], [ -81.772065286326125, 30.453876591417529 ], [ -81.772065286326125, 30.453791842136624 ], [ -81.771904814640038, 30.453791828230273 ], [ -81.771904814640038, 30.45388102878616 ], [ -81.771851240551456, 30.45388104791359 ], [ -81.771855746784709, 30.45396573268853 ], [ -81.771909237421298, 30.453965708294508 ], [ -81.771909237421298, 30.454023662401266 ], [ -81.772167844490269, 30.454023679483353 ], [ -81.772167844490269, 30.453961274053515 ], [ -81.77220798316327, 30.453961278788533 ], [ -81.77220798316327, 30.453876529542352 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 325.46027029016619, "ULU": "1", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.844391581693515, 41.993833845697225 ], [ -70.844369263453842, 41.993722423395923 ], [ -70.844275635704605, 41.993731338030194 ], [ -70.844297953948939, 41.993847281762477 ], [ -70.844391581693515, 41.993833845697225 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 300.92699400306685, "ULU": "1", "ANBH": 9.7735618203878403, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.177731735817744, 42.700949229138395 ], [ -71.17772720321085, 42.700904577683424 ], [ -71.177691576918861, 42.700904650072566 ], [ -71.177687134963648, 42.700855546574978 ], [ -71.177597933240236, 42.700864459079234 ], [ -71.177606817152622, 42.700958126534104 ], [ -71.177731735817744, 42.700949229138395 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 660.84780938258007, "ULU": "1", "ANBH": 0.0, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.86532738110887, 30.097612226402667 ], [ -81.865193616506531, 30.097607782165852 ], [ -81.86518919935348, 30.097741516727183 ], [ -81.865260540509581, 30.097741564559552 ], [ -81.865260540509581, 30.097759333150769 ], [ -81.865322963963933, 30.097763817117627 ], [ -81.86532738110887, 30.097612226402667 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 815.92823287965462, "ULU": "2", "ANBH": 3.0786269432172757, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.528015473897312, 33.189084644380934 ], [ -96.527805882509881, 33.189062414754041 ], [ -96.527788057099514, 33.189169402899786 ], [ -96.527997648428126, 33.189196158144711 ], [ -96.528015473897312, 33.189084644380934 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 494.22648118871876, "ULU": "1", "ANBH": 5.7261509857778474, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.821496408538778, 35.572808598868676 ], [ -80.821420623036474, 35.572741714406497 ], [ -80.821295750001582, 35.572830921399984 ], [ -80.821371620109545, 35.572897812335768 ], [ -80.821496408538778, 35.572808598868676 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 656.80242361769376, "ULU": "2", "ANBH": 9.5782214046226084, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.740016139895289, 45.471353043174979 ], [ -122.739949232392931, 45.471353051255278 ], [ -122.739949259584407, 45.471326249103605 ], [ -122.739801994840164, 45.471326256597969 ], [ -122.739797622704486, 45.47144221583752 ], [ -122.739922507428801, 45.47144667489696 ], [ -122.739922467836237, 45.471437702988354 ], [ -122.740011628652667, 45.471437761573867 ], [ -122.740016139895289, 45.471353043174979 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1176.9686657941056, "ULU": "2", "ANBH": 0.0, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.549489292379761, 30.116367190823752 ], [ -81.549431289048897, 30.116202243279893 ], [ -81.549252926433212, 30.116251271202533 ], [ -81.549319802001392, 30.11643410988767 ], [ -81.549395633299468, 30.116411796577857 ], [ -81.549391197254337, 30.116393929060145 ], [ -81.549489292379761, 30.116367190823752 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 280.17254061488131, "ULU": "1", "ANBH": 14.416450500488279, "Slope": "low", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.04023978726056, 42.337577074714801 ], [ -71.040235343787401, 42.33752352311329 ], [ -71.040204148790721, 42.337523554017885 ], [ -71.04005697003916, 42.337523544956134 ], [ -71.040061413514238, 42.337577096530161 ], [ -71.04023978726056, 42.337577074714801 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 804.28399296783425, "ULU": "2", "ANBH": 2.5, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.356246919124715, 29.403379267816156 ], [ -98.356242488676671, 29.403334614210284 ], [ -98.356211224767804, 29.403334643923305 ], [ -98.356206794321892, 29.403281109419744 ], [ -98.356126544781091, 29.403281139088609 ], [ -98.356126544781091, 29.403321234942613 ], [ -98.356126544781091, 29.403383664868969 ], [ -98.356108655832742, 29.403383733578519 ], [ -98.356108655832742, 29.403432710278349 ], [ -98.356108655832742, 29.403455044351492 ], [ -98.356126544781091, 29.403455063569155 ], [ -98.356126544781091, 29.403481794108082 ], [ -98.356246919124715, 29.403481793506444 ], [ -98.356246919124715, 29.403446094174718 ], [ -98.356246919124715, 29.403379267816156 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 5719.296176207934, "ULU": "1", "ANBH": 11.000146865844728, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.26244647745294, 33.928305548665108 ], [ -84.262031767708208, 33.927810541224794 ], [ -84.261750846618256, 33.927971078138633 ], [ -84.261960412591378, 33.928220847905983 ], [ -84.262361784010125, 33.928354614886963 ], [ -84.26244647745294, 33.928305548665108 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 163.30462038410269, "ULU": "1", "ANBH": 2.5, "Slope": "low", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.6825738831742, 45.777550561873205 ], [ -122.682462524035998, 45.777550591334013 ], [ -122.68246242330126, 45.777604061490202 ], [ -122.68257395475068, 45.777604057540827 ], [ -122.6825738831742, 45.777550561873205 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 10893.612856586389, "ULU": "1", "ANBH": 12.095067722161613, "Slope": "high", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.962377141519113, 29.932152842024102 ], [ -89.962350363610682, 29.932059207852284 ], [ -89.962287976708822, 29.931978888292537 ], [ -89.962203227215923, 29.931920976211064 ], [ -89.962100672956979, 29.931889708601531 ], [ -89.961984729339093, 29.93188526319539 ], [ -89.961877687714505, 29.93191647075793 ], [ -89.961784034949972, 29.931978920391369 ], [ -89.961721647125799, 29.932063616386831 ], [ -89.961694868759125, 29.93215723521023 ], [ -89.961708257944807, 29.932259866425845 ], [ -89.961757327845902, 29.932349006604809 ], [ -89.961842007106497, 29.932420331782129 ], [ -89.961944633276573, 29.932460512082329 ], [ -89.962051603495681, 29.932473867525637 ], [ -89.9621586446343, 29.932451572541609 ], [ -89.962252296482987, 29.932406948048563 ], [ -89.962328072411978, 29.932335668843457 ], [ -89.96236823929101, 29.932246465997597 ], [ -89.962377141519113, 29.932152842024102 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 658.46251286464064, "ULU": "1", "ANBH": 3.419403840269637, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.127812854849054, 34.228001740760305 ], [ -84.127754869374954, 34.227970484234895 ], [ -84.127580993152804, 34.228206849815365 ], [ -84.127643408251018, 34.228238064679395 ], [ -84.127812854849054, 34.228001740760305 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 642.21126850750045, "ULU": "2", "ANBH": 6.7004377904021748, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.780146464470207, 33.055873486822122 ], [ -96.780070632708302, 33.05587350569192 ], [ -96.780070632708302, 33.055909148934504 ], [ -96.780003789698597, 33.055909192054791 ], [ -96.780003789698597, 33.056020651906628 ], [ -96.780146464470207, 33.056020675366078 ], [ -96.780146464470207, 33.055873486822122 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 278.78337617619798, "ULU": "2", "ANBH": 7.4226274490356445, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.544386420477622, 45.490701090511955 ], [ -122.544359704479049, 45.490701038715819 ], [ -122.544355213594713, 45.490660958470166 ], [ -122.544230356870742, 45.490665369514197 ], [ -122.544234841409676, 45.490736706708013 ], [ -122.544386439792646, 45.490732259189826 ], [ -122.544386420477622, 45.490701090511955 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 847.98195435648802, "ULU": "2", "ANBH": 2.6987082500008426, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.997769150628145, 35.032922941739827 ], [ -80.99767102432169, 35.032914051014473 ], [ -80.99767102432169, 35.032927386539058 ], [ -80.997595237683697, 35.032918492376858 ], [ -80.99756851423561, 35.033056775255275 ], [ -80.997742427238919, 35.033074560201804 ], [ -80.997769150628145, 35.032922941739827 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 216.70100340805323, "ULU": "2", "ANBH": 6.4145150184631348, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.483425333155068, 41.993338917255002 ], [ -71.483327237607412, 41.993316586256157 ], [ -71.483300517208832, 41.993383484308318 ], [ -71.483398612763906, 41.993405815329737 ], [ -71.483425333155068, 41.993338917255002 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 480.69453619236589, "ULU": "1", "ANBH": 8.6316873972003698, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.485386907364884, 29.44397492119457 ], [ -98.485293288680325, 29.443939242625977 ], [ -98.485235342289883, 29.444059654663285 ], [ -98.485328960902379, 29.444095245347793 ], [ -98.485386907364884, 29.44397492119457 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 467.89103110355779, "ULU": "1", "ANBH": 2.9457812309265137, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.656719267994333, 35.223331025456311 ], [ -80.656598881540816, 35.223313216082587 ], [ -80.656572128971476, 35.223424663950318 ], [ -80.65669700244004, 35.223442488774197 ], [ -80.656719267994333, 35.223331025456311 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 542.93275574555446, "ULU": "2", "ANBH": 7.3979649543762207, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -96.906780487069113, 32.642639699882388 ], [ -96.906619932010003, 32.642639694921527 ], [ -96.906619932010003, 32.642737775472213 ], [ -96.906780487069113, 32.642737780410748 ], [ -96.906780487069113, 32.642639699882388 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 478.67965584246713, "ULU": "1", "ANBH": 3.6980834171964601, "Slope": "low", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.54461915385059, 32.891524400305322 ], [ -97.544543360937723, 32.891479803844817 ], [ -97.544436325286043, 32.891604713129617 ], [ -97.5445122007348, 32.891649304609452 ], [ -97.54461915385059, 32.891524400305322 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 582.80817640185148, "ULU": "1", "ANBH": 3.47342848777771, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.455809701917914, 29.343382065249195 ], [ -98.455791872804994, 29.343297270570776 ], [ -98.455595669137892, 29.343337434298377 ], [ -98.455618018249908, 29.343417720390356 ], [ -98.455809701917914, 29.343382065249195 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 3591.1328063784431, "ULU": "1", "ANBH": 22.738365173339844, "Slope": "low", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.03102070182581, 33.994175354161015 ], [ -81.030918150816589, 33.993952442012834 ], [ -81.030815515408207, 33.993983645812868 ], [ -81.030779871060204, 33.993903358952871 ], [ -81.030494462897536, 33.993997013328837 ], [ -81.030534657732375, 33.994086235965682 ], [ -81.030605946634239, 33.994063872116214 ], [ -81.030704116233906, 33.994273474973731 ], [ -81.03102070182581, 33.994175354161015 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 3828.9769706737811, "ULU": "1", "ANBH": 2.7097532552679633, "Slope": "low", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -70.869866486642394, 42.065848397407727 ], [ -70.869754992557617, 42.0658037415431 ], [ -70.869572102281097, 42.065830530334537 ], [ -70.869523113801321, 42.065812682407362 ], [ -70.869228819930569, 42.065857251224386 ], [ -70.869193076456952, 42.065897408570535 ], [ -70.869197612430924, 42.065924193925632 ], [ -70.869322442416276, 42.065973190587037 ], [ -70.869416064882117, 42.066031151678082 ], [ -70.869625626725025, 42.066111446365618 ], [ -70.869616736224629, 42.066120400980566 ], [ -70.869665815413413, 42.066142634671749 ], [ -70.869866486642394, 42.065848397407727 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 2448.0862056825699, "ULU": "1", "ANBH": 3.5040580062560762, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.401812023185059, 32.974976474345937 ], [ -97.401660421754613, 32.974980936862664 ], [ -97.401664875763558, 32.975177162491235 ], [ -97.401557814665921, 32.975181632490674 ], [ -97.401557814665921, 32.975132574167333 ], [ -97.401490922185403, 32.975132524844149 ], [ -97.401495458664769, 32.975342163708596 ], [ -97.401745130455893, 32.97534214032008 ], [ -97.401740676441747, 32.975159333431463 ], [ -97.401812023185059, 32.975154845033785 ], [ -97.401812023185059, 32.974976474345937 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 763.06928746079802, "ULU": "2", "ANBH": 7.2292890548706046, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.49748557814074, 45.637129051035942 ], [ -122.49746779954944, 45.637129005921295 ], [ -122.497467807841403, 45.63710674079838 ], [ -122.497423200854044, 45.637106719300206 ], [ -122.497423094055009, 45.637129015783103 ], [ -122.497271499697916, 45.637124564370616 ], [ -122.497271524544956, 45.637222688176792 ], [ -122.497383031457886, 45.6372226249525 ], [ -122.497383000380637, 45.637276161370657 ], [ -122.497485628966558, 45.637276192561934 ], [ -122.49748557814074, 45.637129051035942 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 283.28957327711657, "ULU": "1", "ANBH": 5.4495606422424316, "Slope": "low", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.79626037468087, 30.194994508737967 ], [ -81.79617119752146, 30.194905311713796 ], [ -81.796122145866548, 30.194940980698568 ], [ -81.796206901766695, 30.19503462328089 ], [ -81.79626037468087, 30.194994508737967 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 588.77746844411581, "ULU": "1", "ANBH": 3.161997916450638, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.553357788943003, 33.430411201087061 ], [ -111.553255260611451, 33.43026407110542 ], [ -111.553166105541123, 33.430308634331389 ], [ -111.553268633872094, 33.43045584590746 ], [ -111.553357788943003, 33.430411201087061 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 273.58490457438688, "ULU": "1", "ANBH": 2.8917254379817412, "Slope": "high", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.368504972071932, 29.392806746611143 ], [ -98.368438086402747, 29.39275766609023 ], [ -98.36838014674035, 29.392811169247722 ], [ -98.368393523859012, 29.392820088434529 ], [ -98.36838014674035, 29.39282901982439 ], [ -98.36840690098002, 29.392851254885183 ], [ -98.368397955030062, 29.392855774645565 ], [ -98.368424709276127, 29.392878009696293 ], [ -98.368504972071932, 29.392806746611143 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 229.44024002025654, "ULU": "1", "ANBH": 18.832553863525391, "Slope": "high", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.26793704876296, 29.96335311522817 ], [ -90.267932606861635, 29.96325502037902 ], [ -90.267865691828462, 29.96325947868127 ], [ -90.26787013372217, 29.96335757352983 ], [ -90.26793704876296, 29.96335311522817 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 253.77020736069397, "ULU": "1", "ANBH": 6.6596426963806152, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -111.973859931759193, 33.775848891264786 ], [ -111.973788611443425, 33.775831053456002 ], [ -111.973757408804801, 33.775933604465614 ], [ -111.973824271601515, 33.775947002954375 ], [ -111.973859931759193, 33.775848891264786 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 160.23493800522331, "ULU": "2", "ANBH": 10.632347106933594, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.733340005041597, 35.195038021440915 ], [ -80.733299914057497, 35.19499794075449 ], [ -80.733228528374227, 35.19504699836456 ], [ -80.733273102143542, 35.195082601106442 ], [ -80.733340005041597, 35.195038021440915 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 300.71380280051346, "ULU": "1", "ANBH": 13.331446647644045, "Slope": "low", "pred": "low", "Model": "training", "strata": "7", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -84.251646528571698, 33.898309196859707 ], [ -84.251601923850046, 33.898255621489788 ], [ -84.251486031786371, 33.898326999268882 ], [ -84.251530636594865, 33.8983804898023 ], [ -84.251646528571698, 33.898309196859707 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 521.18931533595617, "ULU": "1", "ANBH": 2.5609604444688814, "Slope": "low", "pred": "high", "Model": "training", "strata": "5", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -83.832776388748286, 33.597261866461658 ], [ -83.832709543301007, 33.597239566966778 ], [ -83.83261591099685, 33.597440258751384 ], [ -83.832678305573168, 33.597462506724042 ], [ -83.832776388748286, 33.597261866461658 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1697.2607790365591, "ULU": "1", "ANBH": 3.6719622387628847, "Slope": "high", "pred": "high", "Model": "training", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -98.655269758011229, 29.711012579508107 ], [ -98.65513153305956, 29.710918945724888 ], [ -98.654935316161882, 29.711132975858291 ], [ -98.655069092726109, 29.711226638090213 ], [ -98.655269758011229, 29.711012579508107 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 590.82158171923481, "ULU": "2", "ANBH": 9.6502923965454102, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 4.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -83.981251102366571, 34.088235629407158 ], [ -83.981188697522299, 34.088101898787009 ], [ -83.981077208242823, 34.088137575125792 ], [ -83.981139613201393, 34.088271305740939 ], [ -83.981251102366571, 34.088235629407158 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 4053.4489509887726, "ULU": "1", "ANBH": 12.618259474764852, "Slope": "high", "pred": "low", "Model": "training", "strata": "3", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.852594189107322, 35.166044965000715 ], [ -80.852549596886874, 35.165719460691612 ], [ -80.852304339230528, 35.165741714246089 ], [ -80.852331111538774, 35.165951310735934 ], [ -80.852268699109132, 35.165955813251117 ], [ -80.852250879042487, 35.165826511328611 ], [ -80.852023440592362, 35.165844291688288 ], [ -80.852036784566806, 35.165978079379819 ], [ -80.8520100966157, 35.1659780525545 ], [ -80.852014488304462, 35.166031628962315 ], [ -80.85242477231958, 35.165995931747453 ], [ -80.852433640106483, 35.166058333201732 ], [ -80.852554073001045, 35.166045001757595 ], [ -80.852594189107322, 35.166044965000715 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 871.94199470819603, "ULU": "2", "ANBH": 6.8214445114135742, "Slope": "high", "pred": "high", "Model": "training", "strata": "4", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.23433767102938, 30.002365841084071 ], [ -90.234123642138087, 30.002352461141133 ], [ -90.234119204093275, 30.002432728854163 ], [ -90.234145975532556, 30.002432681480688 ], [ -90.234141537485201, 30.00247731732393 ], [ -90.234328794891397, 30.00249065644271 ], [ -90.23433767102938, 30.002365841084071 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 331.73764678104595, "ULU": "1", "ANBH": 10.668734550476074, "Slope": "high", "pred": "high", "Model": "training", "strata": "7", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -81.391837788534986, 30.296644219338333 ], [ -81.391815478160609, 30.296537169606164 ], [ -81.391730765777339, 30.296546080093577 ], [ -81.391748546998272, 30.296635278405471 ], [ -81.39175299230287, 30.296635309543465 ], [ -81.391757521480855, 30.296657614643017 ], [ -81.391837788534986, 30.296644219338333 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 675.27327162576387, "ULU": "2", "ANBH": 2.5061984062194824, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 3.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.389058134296093, 45.608073522850198 ], [ -122.388897530150473, 45.608073487711231 ], [ -122.38889314215298, 45.608104734779694 ], [ -122.38886638824296, 45.608100297112237 ], [ -122.388861909731915, 45.608202841260599 ], [ -122.389053622442802, 45.608202803349123 ], [ -122.389058134296093, 45.608073522850198 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 6452.649181450387, "ULU": "1", "ANBH": 3.9995205072759088, "Slope": "low", "pred": "low", "Model": "training", "strata": "1", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.980802169308078, 29.681002829110447 ], [ -89.980628196326961, 29.680891415425489 ], [ -89.980552456614973, 29.680686307882848 ], [ -89.980623782926799, 29.680472204281781 ], [ -89.980432013079906, 29.680445478274763 ], [ -89.980396349761847, 29.68067735621964 ], [ -89.980293773046839, 29.68077988937771 ], [ -89.980044057034988, 29.68084677375828 ], [ -89.980106486190778, 29.681011744173592 ], [ -89.980427599657119, 29.680931521326617 ], [ -89.98072187418434, 29.681096525224415 ], [ -89.980802169308078, 29.681002829110447 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 291.74652559973958, "ULU": "2", "ANBH": 8.4616289138793945, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.859782248540512, 35.461558516885169 ], [ -80.859777857277919, 35.461473793648238 ], [ -80.859675253669877, 35.461473785105284 ], [ -80.859679729385562, 35.461558514750998 ], [ -80.859782248540512, 35.461558516885169 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 591.25378922409163, "ULU": "2", "ANBH": 5.0585265159606934, "Slope": "high", "pred": "high", "Model": "training", "strata": "8", "sample_tier": 2.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.9317074580146, 30.035710946618355 ], [ -89.931649440288524, 30.035572744174321 ], [ -89.931582584372592, 30.035595018243949 ], [ -89.931595984075088, 30.035626239640116 ], [ -89.931524637732949, 30.035648511348427 ], [ -89.931555856228641, 30.035724359216509 ], [ -89.931627202512772, 30.035702087503907 ], [ -89.931640530924781, 30.035733308833972 ], [ -89.9317074580146, 30.035710946618355 ] ] ] } }, +{ "type": "Feature", "properties": { "Area_m": 1442.8265512645862, "ULU": "2", "ANBH": 2.7523737594955247, "Slope": "high", "pred": "high", "Model": "training", "strata": "2", "sample_tier": 1.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.705565065597469, 45.72954389673437 ], [ -122.705529394720827, 45.729543893078215 ], [ -122.705533910448764, 45.729481471144609 ], [ -122.705279747304402, 45.729476991480595 ], [ -122.705279731978393, 45.729427960409282 ], [ -122.705181610460556, 45.729423482524723 ], [ -122.705177113545247, 45.729477026527299 ], [ -122.705168159175557, 45.729476997021635 ], [ -122.705168189336419, 45.729597399855415 ], [ -122.705529464447707, 45.729601859238805 ], [ -122.705529419949485, 45.729588485339683 ], [ -122.705565090863871, 45.729588488995219 ], [ -122.705565065597469, 45.72954389673437 ] ] ] } } +] +} diff --git a/city_metrix/layers/building_classifier/building_classifier.pkl b/city_metrix/layers/building_classifier/building_classifier.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e75c466cc5c8e7cd849f7af0f957d058bb80d9a2 GIT binary patch literal 4230 zcmbtYYitx%6rSx;x-A8_wJ)LC@+ej#O;IGppm(5#*O*!j5D;NHyF1$%*_~ZyXVIc0 zmB^!UY(OrFlK4o#U=R)d0X4?-4=4&!EFz^)D#**kwkQz-@p13Wx!c(-8`f|$>6v@( z`Of+7Ip@yIwspkTSG=4x%;MO}kSyt1jiJkOjpz?av6vjgX33MXUyZ2|Z6VRuQ>_|Q zWgTz954?ug;A%71ud9Zv6ANsPXjU~9o1R!Sq#8s?G(I_IU^6!?y(|XgsG(pX+bjsH zni!M9(U2SyEn6&PnO>)sa0z0;WtLIpOS0Om7-CSD{0505T8ndS;v8q@Q|CchGU7U6 z++dEOb7~`Mk$|Pi*Cj0w35zj9GGt;=Ouee%Xq-@QA-w#$EX8E(aB1xy0uw;4-yapF zP*jl|Mx(#$O0W(SOxs7xVQPuJnL zjrOYBbiIlj8X6Y-ONRAFKnC`;Ehi;%FM4VbDaEXY+4HbDau(UF7{)SLHOFX)#94F& zx0$Djk+>0!8!?dovhH z#pcMEUkXXImn=6)o0*xi8S1FslLbY`>q$z?(aypXwr(?Mm z58sN5Y~_hIM*tE|aM6vD9#?Wn)8^4;68(|5W?-R;l*{U^;hw6jq_`JPpO%!BYBMh+ z2My7$sG$HhN9k5e!z>3Hha40`Ax*4AsEvnpD5iC?!o#7#W~qH9X|%Tlwfpy9<5xb;|hUTGFQL@p=NOXLcQ3_9v_OJo_b6ctUVB(jMh ztBI7zyp~8G^$@>JqX>2Daa`a@r+aDJ%;s}B&IJ`OVaGj5UPn9fXP(|xaU30S>ibll zObAMS~bP6@X zx-Awa@FPH<1JZ%7{p@fhUvhOYC$F&^&2i#epGn}eK|d0tgTFUW_$H4JzE|E9>p_nv z;TsZo`Z#coe_#UU9ec0LYreMqXEY@VKZj>iCzjr);%&P=1n&`m)&5UB$B|My#sr>C zm_82_j{S2#bVvBJt7!#JBDQXuO-kT1<3H4AHhvI6IBpc&Ur&6(>TL8F1kPiNRAAT~Gx7EFf zolkpSnZVzUKihvg{#O!4eFW793- zfi_nPHxocQ_*eF?yr1`8yK>p(-iKab04iIbOXR-{^y5G}>c6S9Lgu;Pin_k5yHPW& zTcTqr&!+dl%~+5QeCzkV0NC{*hn`x3p3C_BIrc^1L-orvf9de$lnogbws7`I=fW>0 z@||ZMJ20hhd)oKUy@0!KIDT-m`#!#d9{=*Ks0r3>u_TfIO!=q2znHts@L#8W{#Syd z@gN;}s{QijMBaLQuRey-^1AJul3zMa+MT{lV3u&_*x|&TUi^hqP5L#Bot<}pQ~#>cL~|MI)s+( z&Ofs;>l|9J^TMqD8{KHzJ9L~!hY!(l4CTZd$#oH3DHh3f6oq?teje~#K$GkDv`-)C zLMPTvA=f4J{?+;9Is$Liz7#oh+8(h+7YbVA0@w|$GhU1*%aSbz(IRX71oAw3Ytnpj z{fPF3d-jHVm_LRZL{v*IusaL!eg%0Vfn$CcGCAIU^zkk_ejCO&)qeA~rmwcH=|_Jo z{%gjL$seJjc~uwXf&ujU-;2l9cfAYv^!Z8kS9|%`%x{+upqt%3`T86TJO*I@>(cP) z2mKzX=Vg!wLC>PFyfevhsrhA=wq$lpavbfxxX<*8@Ow;LCF}H`3FPPQ)S78E597G6 F=064<4%7eu literal 0 HcmV?d00001 diff --git a/city_metrix/layers/building_classifier.py b/city_metrix/layers/building_classifier/building_classifier.py similarity index 83% rename from city_metrix/layers/building_classifier.py rename to city_metrix/layers/building_classifier/building_classifier.py index 678d021..5865a0f 100644 --- a/city_metrix/layers/building_classifier.py +++ b/city_metrix/layers/building_classifier/building_classifier.py @@ -10,17 +10,18 @@ import matplotlib.pyplot as plt from xrspatial.classify import reclassify from exactextract import exact_extract +import pickle -from .layer import Layer, get_utm_zone_epsg -from .esa_world_cover import EsaWorldCover, EsaWorldCoverClass -from .urban_land_use import UrbanLandUse -from .average_net_building_height import AverageNetBuildingHeight -from .open_street_map import OpenStreetMap, OpenStreetMapClass -from .open_buildings import OpenBuildings +from ..layer import Layer, get_utm_zone_epsg +from ..esa_world_cover import EsaWorldCover, EsaWorldCoverClass +from ..urban_land_use import UrbanLandUse +from ..average_net_building_height import AverageNetBuildingHeight +from ..open_street_map import OpenStreetMap, OpenStreetMapClass +from ..open_buildings import OpenBuildings class BuildingClassifier(Layer): - def __init__(self, geo_file=None, **kwargs): + def __init__(self, geo_file='V2-building-class-data.geojson', **kwargs): super().__init__(**kwargs) self.geo_file = geo_file @@ -46,7 +47,6 @@ def get_data_esa_reclass(self, bbox, crs): EsaWorldCoverClass.HERBACEOUS_WET_LAND.value: 20, EsaWorldCoverClass.MANGROVES.value: 20, EsaWorldCoverClass.MOSS_AND_LICHEN.value: 3 - # Add other mappings as needed } # Perform the reclassification @@ -147,20 +147,21 @@ def rasterize_polygon(self, gdf, snap_to): return raster.rio.reproject_match(snap_to) - def building_class_tree(self): + def building_classifier_tree(self): buildings_sample = self.get_data_geo() - bbox = buildings_sample.reset_index().total_bounds - crs = get_utm_zone_epsg(bbox) - - # building_sample has extracted data and saved in geojson + + # # Building sample 'V2-building-class-data.geojson' has extracted data and saved in geojson, + # # so no need for steps below + # # Step 1: Get raster data + # bbox = buildings_sample.reset_index().total_bounds + # crs = get_utm_zone_epsg(bbox) # esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) # ulu_lulc_1m = self.get_data_ulu(bbox, crs, esa_1m) # anbh_1m = self.get_data_anbh(bbox, esa_1m) - - # # Extract 3 features for buildings: - # # majority of Urban Land Use(ULU) class - # # mean Average Net Building Height(ANBH) - # # area of the building + # # Step 2: Extract 3 features for buildings: + # # 2.1 majority of Urban Land Use(ULU) class + # # 2.2 mean Average Net Building Height(ANBH) + # # 2.3 area of the building # buildings_sample['ULU'] = exact_extract(ulu_lulc_1m, buildings_sample, ["majority"], output='pandas')['majority'] # buildings_sample['ANBH'] = exact_extract(anbh_1m, buildings_sample, ["mean"], output='pandas')['mean'] # buildings_sample['Area_m'] = buildings_sample.geometry.area @@ -172,23 +173,25 @@ def building_class_tree(self): # Select these rows for the training set build_train = buildings_sample[buildings_sample['Model']=='training'] - # Select the remaining rows for the testing set - build_test = buildings_sample[buildings_sample['Model']=='testing'] clf.fit(build_train[['ULU', 'ANBH', 'Area_m']], build_train['Slope_encoded']) + # save decision tree classifier + with open('building_classifier.pkl','wb') as f: + pickle.dump(clf, f) + + # # Check decision tree and accuracy + # # Select the remaining rows for the testing set + # build_test = buildings_sample[buildings_sample['Model']=='testing'] # plt.figure(figsize=(20, 10)) # plot_tree(clf, feature_names=['ULU', 'ANBH', 'Area_m'], class_names=['low','high'], filled=True) # plt.show() # # Predict and evaluate # y_pred = clf.predict(build_train[['ULU', 'ANBH', 'Area_m']]) # accuracy = accuracy_score(build_train['Slope_encoded'], y_pred) - # print(f"Accuracy: {accuracy}") + # print(f"Training Accuracy: {accuracy}") # len(build_train[build_train['Slope']==build_train['pred']])/len(build_train) - # y_pred = clf.predict(build_test[['ULU', 'ANBH', 'Area_m']]) # accuracy = accuracy_score(build_test['Slope_encoded'], y_pred) - # print(f"Accuracy: {accuracy}") + # print(f"Test Accuracy: {accuracy}") # len(build_test[build_test['Slope']==build_test['pred']])/len(build_test) - - return clf diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_cities_lulc.py index 60d02b6..18354a3 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_cities_lulc.py @@ -6,12 +6,13 @@ from shapely.geometry import box import psutil from exactextract import exact_extract +import pickle import warnings warnings.filterwarnings('ignore',category=UserWarning) from .layer import Layer, get_utm_zone_epsg, create_fishnet_grid, MAX_TILE_SIZE from .open_street_map import OpenStreetMap, OpenStreetMapClass -from .building_classifier import BuildingClassifier +from .building_classifier.building_classifier import BuildingClassifier class SmartCitiesLULC(Layer): @@ -22,10 +23,9 @@ def __init__(self, land_cover_class=None, **kwargs): def get_data(self, bbox): crs = get_utm_zone_epsg(bbox) - # Roof slope model - # buildings sample from US - buildings_sample = BuildingClassifier(geo_file = 'V2-building-class-data.geojson') - clf = buildings_sample.building_class_tree() + # load building roof slope classifier + with open('city_metrix/layers/building_classifier/building_classifier.pkl', 'rb') as f: + clf = pickle.load(f) # ESA world cover esa_1m = BuildingClassifier().get_data_esa_reclass(bbox, crs) diff --git a/city_metrix/layers/tree_canopy_hight.py b/city_metrix/layers/tree_canopy_height.py similarity index 98% rename from city_metrix/layers/tree_canopy_hight.py rename to city_metrix/layers/tree_canopy_height.py index 464c7cf..c249063 100644 --- a/city_metrix/layers/tree_canopy_hight.py +++ b/city_metrix/layers/tree_canopy_height.py @@ -7,9 +7,7 @@ class TreeCanopyHeight(Layer): - name = "tree_canopy_hight" - NO_DATA_VALUE = 0 def __init__(self, **kwargs): @@ -20,10 +18,6 @@ def get_data(self, bbox): # aggregate time series into a single image canopy_ht = canopy_ht.reduce(ee.Reducer.mean()).rename("cover_code") - - - data = get_image_collection(ee.ImageCollection(canopy_ht), bbox, 1, "tree canopy hight") return data.cover_code - From d0530232b16e714502c40bcf8d562b9d5d9ecec2 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Mon, 3 Jun 2024 16:03:31 +0800 Subject: [PATCH 26/31] add test for Smart Surface LULC --- city_metrix/layers/__init__.py | 2 +- ...t_cities_lulc.py => smart_surface_lulc.py} | 3 +- notebooks/tutorial/get layers.ipynb | 796 ++++++++++++++++-- tests/layers.py | 8 +- 4 files changed, 747 insertions(+), 62 deletions(-) rename city_metrix/layers/{smart_cities_lulc.py => smart_surface_lulc.py} (99%) diff --git a/city_metrix/layers/__init__.py b/city_metrix/layers/__init__.py index 65f826d..1f407e7 100644 --- a/city_metrix/layers/__init__.py +++ b/city_metrix/layers/__init__.py @@ -3,7 +3,7 @@ from .land_surface_temperature import LandSurfaceTemperature from .tree_cover import TreeCover from .high_land_surface_temperature import HighLandSurfaceTemperature -from .smart_cities_lulc import SmartCitiesLULC +from .smart_surface_lulc import SmartSurfaceLULC from .open_street_map import OpenStreetMap, OpenStreetMapClass from .urban_land_use import UrbanLandUse from .natural_areas import NaturalAreas diff --git a/city_metrix/layers/smart_cities_lulc.py b/city_metrix/layers/smart_surface_lulc.py similarity index 99% rename from city_metrix/layers/smart_cities_lulc.py rename to city_metrix/layers/smart_surface_lulc.py index 18354a3..d154063 100644 --- a/city_metrix/layers/smart_cities_lulc.py +++ b/city_metrix/layers/smart_surface_lulc.py @@ -15,7 +15,7 @@ from .building_classifier.building_classifier import BuildingClassifier -class SmartCitiesLULC(Layer): +class SmartSurfaceLULC(Layer): def __init__(self, land_cover_class=None, **kwargs): super().__init__(**kwargs) self.land_cover_class = land_cover_class @@ -125,6 +125,7 @@ def get_data(self, bbox): # use chunk 512x512 aligned_datasets = [ds.chunk({'x': 512, 'y': 512}) for ds in aligned_datasets] lulc = xr.concat(aligned_datasets, dim='Value').max(dim='Value') + lulc = lulc.compute() return lulc diff --git a/notebooks/tutorial/get layers.ipynb b/notebooks/tutorial/get layers.ipynb index f443850..a6602a1 100644 --- a/notebooks/tutorial/get layers.ipynb +++ b/notebooks/tutorial/get layers.ipynb @@ -26,14 +26,15 @@ "| Layer name | class name | Parameter defaults | Layer metadata |\n", "| ---- | ---- | ---- | ---- |\n", "| Tropical Tree Cover | `TreeCover()` | `min_tree_cover=None`: a threshold to use to filter the minimum percent of tree cover| |\n", - "| EsaWorldCover | `EsaWorldCover()` | `land_cover_class=None`; `EsaWorldCoverClass`: a specific class of land cover| |\n", + "| EsaWorldCover | `EsaWorldCover()` | `land_cover_class=None`; `EsaWorldCoverClass`: a specific class of land cover; `year=2020`| |\n", "| Land Surface Temeprature | `LandSurfaceTemperature()` | `start_date=\"2013-01-01\", end_date=\"2023-01-01\"` | |\n", "| Albedo | `Albedo()` | `start_date=\"2021-01-01\", end_date=\"2022-01-01\"` | |\n", "| Natural Areas | `NaturalAreas()` | `none` | |\n", "| Open Street Map | `OpenStreetMap()` | `osm_class=None`; `OpenStreetMapClass`: Groupings of OSM Tags for various land uses | |\n", - "| Building Hight | `AverageNetBuildingHeight()` | `none` | |\n", + "| Building Height | `AverageNetBuildingHeight()` | `none` | |\n", "| Building Footprints | `OpenBuildings()` | `country='USA'` | |\n", - "| 1m Global Tree Canopy Height | `TreeCanopyHeight()` | | |" + "| 1m Global Tree Canopy Height | `TreeCanopyHeight()` | | |\n", + "| Smart Surface LULC | `SmartSurfaceLULC()` | | |" ] }, { @@ -48,22 +49,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "7ed2c665-e6d8-4e98-95ac-41aab749493f", "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'rasterio'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mos\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mgeopandas\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mgpd\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mrasterio\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mplot\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m show\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mrasterio\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m \n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'rasterio'" - ] - } - ], + "outputs": [], "source": [ "import os\n", "import geopandas as gpd\n", @@ -74,51 +63,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "602a6217-fd80-4cec-b40b-20de68b8f62b", "metadata": {}, "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/plain": [ - "'/Users/Chris.Rowe'" + "'/home/weiqi_tori/GitHub/wri/cities-cif'" ] }, - "execution_count": 67, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -195,10 +150,66 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "53554a74-6fa9-4030-8ee7-dd1df79f0d75", "metadata": {}, - "outputs": [], + "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", + "
geo_idgeo_levelgeo_namegeo_parent_namecreation_dategeometry
0BRA-Salvador_ADM4-union_1ADM4-unionBRA-SalvadorBRA-Salvador2022-08-03MULTIPOLYGON (((-38.50135 -13.01134, -38.50140...
\n", + "
" + ], + "text/plain": [ + " geo_id geo_level geo_name geo_parent_name \\\n", + "0 BRA-Salvador_ADM4-union_1 ADM4-union BRA-Salvador BRA-Salvador \n", + "\n", + " creation_date geometry \n", + "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# load boundary from s3\n", "boundary_path = 'https://cities-indicators.s3.eu-west-3.amazonaws.com/data/boundaries/boundary-BRA-Salvador-ADM4union.geojson'\n", @@ -4728,6 +4739,675 @@ "city_TreeCanopyHeight.plot()" ] }, + { + "cell_type": "markdown", + "id": "44a16b52", + "metadata": {}, + "source": [ + "# Smart Surface LULC" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "76a643de", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Authenticating to GEE with configured credentials file.\n" + ] + } + ], + "source": [ + "from city_metrix.layers import SmartSurfaceLULC" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ec06484e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Get smaller area\n", + "city_centroid = city_gdf.centroid\n", + "city_centroid_buffer = city_centroid.buffer(0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b974a2d9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting layer ESA world cover from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", + "[########################################] | 100% Completed | 1.12 ss\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/xee/ext.py:683: UserWarning: Unable to retrieve 'system:time_start' values from an ImageCollection due to: No 'system:time_start' values found in the 'ImageCollection'.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting layer urban land use from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", + "[########################################] | 100% Completed | 920.33 ms\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/xee/ext.py:683: UserWarning: Unable to retrieve 'system:time_start' values from an ImageCollection due to: No 'system:time_start' values found in the 'ImageCollection'.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting layer average net building height from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", + "[########################################] | 100% Completed | 512.02 ms\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'reclassify' (y: 2210, x: 2170)> Size: 38MB\n",
+       "array([[ 1,  1,  1, ...,  1,  1,  1],\n",
+       "       [ 1,  1,  1, ...,  1,  1,  1],\n",
+       "       [ 1,  1,  1, ...,  1,  1,  1],\n",
+       "       ...,\n",
+       "       [ 2,  2,  2, ..., 30, 30,  2],\n",
+       "       [ 2,  2,  2, ...,  2,  2,  2],\n",
+       "       [ 2,  2,  2, ...,  2,  2,  2]])\n",
+       "Coordinates:\n",
+       "  * x            (x) float64 17kB 5.607e+05 5.608e+05 ... 5.629e+05 5.629e+05\n",
+       "  * y            (y) float64 18kB 8.573e+06 8.573e+06 ... 8.571e+06 8.571e+06\n",
+       "    spatial_ref  int64 8B 0
" + ], + "text/plain": [ + " Size: 38MB\n", + "array([[ 1, 1, 1, ..., 1, 1, 1],\n", + " [ 1, 1, 1, ..., 1, 1, 1],\n", + " [ 1, 1, 1, ..., 1, 1, 1],\n", + " ...,\n", + " [ 2, 2, 2, ..., 30, 30, 2],\n", + " [ 2, 2, 2, ..., 2, 2, 2],\n", + " [ 2, 2, 2, ..., 2, 2, 2]])\n", + "Coordinates:\n", + " * x (x) float64 17kB 5.607e+05 5.608e+05 ... 5.629e+05 5.629e+05\n", + " * y (y) float64 18kB 8.573e+06 8.573e+06 ... 8.571e+06 8.571e+06\n", + " spatial_ref int64 8B 0" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load Smart Surface LULC layer\n", + "city_SmartSurfaceLULC = SmartSurfaceLULC().get_data(city_centroid_buffer.total_bounds)\n", + "city_SmartSurfaceLULC" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "82163580", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/IPython/core/pylabtools.py:77: DeprecationWarning: backend2gui is deprecated since IPython 8.24, backends are managed in matplotlib and can be externally registered.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "city_SmartSurfaceLULC.plot()" + ] + }, { "cell_type": "markdown", "id": "1276883d", @@ -4767,9 +5447,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/tests/layers.py b/tests/layers.py index 570f064..095e56d 100644 --- a/tests/layers.py +++ b/tests/layers.py @@ -1,6 +1,6 @@ import ee -from city_metrix.layers import LandsatCollection2, Albedo, LandSurfaceTemperature, EsaWorldCover, EsaWorldCoverClass, TreeCover, AverageNetBuildingHeight, OpenStreetMap, OpenStreetMapClass, UrbanLandUse, OpenBuildings, TreeCanopyHeight +from city_metrix.layers import LandsatCollection2, Albedo, LandSurfaceTemperature, EsaWorldCover, EsaWorldCoverClass, TreeCover, AverageNetBuildingHeight, OpenStreetMap, OpenStreetMapClass, UrbanLandUse, OpenBuildings, TreeCanopyHeight, SmartSurfaceLULC from city_metrix.layers.layer import get_image_collection from .conftest import MockLayer, MockMaskLayer, ZONES, LARGE_ZONES, MockLargeLayer, MockGroupByLayer, \ MockLargeGroupByLayer @@ -103,4 +103,8 @@ def test_openbuildings(): def test_tree_canopy_hight(): count = TreeCanopyHeight().get_data(SAMPLE_BBOX).count() - assert count \ No newline at end of file + assert count + +def test_smart_surface_lulc(): + count = SmartSurfaceLULC().get_data(SAMPLE_BBOX).count() + assert count From 407b3500ce917677548413ad5be99baa1f3f5bb4 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Tue, 4 Jun 2024 00:29:34 +0800 Subject: [PATCH 27/31] fix broken notebook --- notebooks/tutorial/get layers.ipynb | 403 +++++++++++----------------- 1 file changed, 158 insertions(+), 245 deletions(-) diff --git a/notebooks/tutorial/get layers.ipynb b/notebooks/tutorial/get layers.ipynb index b92ecb2..47ac101 100644 --- a/notebooks/tutorial/get layers.ipynb +++ b/notebooks/tutorial/get layers.ipynb @@ -31,11 +31,11 @@ "| Albedo | `Albedo()` | `start_date=\"2021-01-01\", end_date=\"2022-01-01\"` | |\n", "| Natural Areas | `NaturalAreas()` | `none` | |\n", "| Open Street Map | `OpenStreetMap()` | `osm_class=None`; `OpenStreetMapClass`: Groupings of OSM Tags for various land uses | |\n", - "| Building Height | `AverageNetBuildingHeight()` | `none` | |\n", + "| Building Hight | `AverageNetBuildingHeight()` | `none` | |\n", "| Building Footprints | `OpenBuildings()` | `country='USA'` | |\n", "| 1m Global Tree Canopy Height | `TreeCanopyHeight()` | | |\n", - "| Smart Surface LULC | `SmartSurfaceLULC()` | | |" - "| ALOS DSM | `AlosDSM()`| | |" + "| ALOS DSM | `AlosDSM()`| | |\n", + "| Smart Surface LULC| `SmartSurfaceLULC()`| | |" ] }, { @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "7ed2c665-e6d8-4e98-95ac-41aab749493f", "metadata": {}, "outputs": [], @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "602a6217-fd80-4cec-b40b-20de68b8f62b", "metadata": {}, "outputs": [ @@ -74,7 +74,7 @@ "'/home/weiqi_tori/GitHub/wri/cities-cif'" ] }, - "execution_count": 3, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -151,10 +151,44 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "53554a74-6fa9-4030-8ee7-dd1df79f0d75", "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -206,7 +240,7 @@ "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... " ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -241,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "id": "5eb883fd-c533-47b7-8735-65393afca89d", "metadata": {}, "outputs": [], @@ -251,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "id": "0703cfe0-201d-4cae-ab43-7a4d0e5082cf", "metadata": {}, "outputs": [ @@ -259,8 +293,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 9.24 ss\n" + "Extracting tree cover layer:\n", + "[########################################] | 100% Completed | 19.58 s\n" ] }, { @@ -629,40 +663,40 @@ " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", - "
<xarray.DataArray 'ttc' (y: 2878, x: 3722)>\n",
-       "array([[ nan,  nan,  nan, ..., 100.,  90.,  90.],\n",
+       "
<xarray.DataArray 'ttc' (y: 2878, x: 3721)>\n",
+       "array([[ nan,  nan,  nan, ..., 100., 100.,  90.],\n",
+       "       [ nan,  nan,  nan, ...,  90.,  90.,  90.],\n",
        "       [ nan,  nan,  nan, ...,  90.,  90.,  90.],\n",
-       "       [ nan,  nan,  nan, ...,  90.,  90.,  80.],\n",
        "       ...,\n",
        "       [ nan,  nan,  nan, ...,  nan,  nan,  nan],\n",
        "       [ nan,  nan,  nan, ...,  nan,  nan,  nan],\n",
        "       [ nan,  nan,  nan, ...,  nan,  nan,  nan]])\n",
        "Coordinates:\n",
-       "    time     int64 0\n",
+       "    time     int32 0\n",
        "  * x        (x) float32 -38.65 -38.65 -38.65 -38.65 ... -38.3 -38.3 -38.3 -38.3\n",
        "  * y        (y) float32 -12.76 -12.76 -12.76 -12.76 ... -13.02 -13.02 -13.02\n",
        "Attributes:\n",
        "    id:             ttc\n",
        "    data_type:      {'type': 'PixelType', 'precision': 'double', 'min': 0, 'm...\n",
        "    crs:            EPSG:4326\n",
-       "    crs_transform:  [1, 0, 0, 0, 1, 0]
  • id :
    ttc
    data_type :
    {'type': 'PixelType', 'precision': 'double', 'min': 0, 'max': 255}
    crs :
    EPSG:4326
    crs_transform :
    [1, 0, 0, 0, 1, 0]
  • " ], "text/plain": [ - "\n", - "array([[ nan, nan, nan, ..., 100., 90., 90.],\n", + "\n", + "array([[ nan, nan, nan, ..., 100., 100., 90.],\n", + " [ nan, nan, nan, ..., 90., 90., 90.],\n", " [ nan, nan, nan, ..., 90., 90., 90.],\n", - " [ nan, nan, nan, ..., 90., 90., 80.],\n", " ...,\n", " [ nan, nan, nan, ..., nan, nan, nan],\n", " [ nan, nan, nan, ..., nan, nan, nan],\n", " [ nan, nan, nan, ..., nan, nan, nan]])\n", "Coordinates:\n", - " time int64 0\n", + " time int32 0\n", " * x (x) float32 -38.65 -38.65 -38.65 -38.65 ... -38.3 -38.3 -38.3 -38.3\n", " * y (y) float32 -12.76 -12.76 -12.76 -12.76 ... -13.02 -13.02 -13.02\n", "Attributes:\n", @@ -693,7 +727,7 @@ " crs_transform: [1, 0, 0, 0, 1, 0]" ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -704,75 +738,6 @@ "city_TreeCover" ] }, - { - "cell_type": "code", - "execution_count": 7, - "id": "8c2477dc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 8.91 ss\n" - ] - } - ], - "source": [ - "city_TreeCover = TreeCover().write(city_gdf.total_bounds, \"output.tif\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "cb58b256", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.63 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.52 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.53 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.38 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.35 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 2.47 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.53 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.45 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.46 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.54 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.69 sms\n", - "Extracting layer tree cover from Google Earth Engine:\n", - "[########################################] | 100% Completed | 1.59 sms\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/envs/cities-cif/lib/python3.10/site-packages/osgeo/gdal.py:287: FutureWarning: Neither gdal.UseExceptions() nor gdal.DontUseExceptions() has been explicitly called. In GDAL 4.0, exceptions will be enabled by default.\n", - " warnings.warn(\n", - "ERROR 4: Failed to open output to write.\n" - ] - } - ], - "source": [ - "city_TreeCover = TreeCover().write(city_gdf.total_bounds, \"output\", tile_degrees=0.1)" - ] - }, { "cell_type": "code", "execution_count": 9, @@ -4543,7 +4508,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 9, "id": "0a9ee177", "metadata": {}, "outputs": [ @@ -4580,6 +4545,18 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_6893/938198300.py:2: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n", + "\n", + " city_centroid = city_gdf.centroid\n", + "/tmp/ipykernel_6893/938198300.py:3: UserWarning: Geometry is in a geographic CRS. Results from 'buffer' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n", + "\n", + " city_centroid_buffer = city_centroid.buffer(0.01)\n" + ] } ], "source": [ @@ -4788,10 +4765,6 @@ }, { "cell_type": "markdown", - "id": "44a16b52", - "metadata": {}, - "source": [ - "# Smart Surface LULC" "id": "e7b46898", "metadata": {}, "source": [ @@ -4800,26 +4773,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "76a643de", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Authenticating to GEE with configured credentials file.\n" - ] - } - ], - "source": [ - "from city_metrix.layers import SmartSurfaceLULC" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "ec06484e", + "execution_count": 4, + "id": "eb5c8cac", "metadata": {}, "outputs": [ { @@ -4858,16 +4813,13 @@ } ], "source": [ - "# Get smaller area\n", - "city_centroid = city_gdf.centroid\n", - "city_centroid_buffer = city_centroid.buffer(0.01)" "from city_metrix.layers import AlosDSM" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "b974a2d9", + "execution_count": 6, + "id": "2231d1f8", "metadata": {}, "outputs": [ { @@ -4904,14 +4856,6 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Extracting layer ESA world cover from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", - "[########################################] | 100% Completed | 1.12 ss\n" - ] - }, { "name": "stderr", "output_type": "stream", @@ -4924,36 +4868,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "Extracting layer urban land use from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", - "[########################################] | 100% Completed | 920.33 ms\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/xee/ext.py:683: UserWarning: Unable to retrieve 'system:time_start' values from an ImageCollection due to: No 'system:time_start' values found in the 'ImageCollection'.\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Extracting layer average net building height from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", - "[########################################] | 100% Completed | 512.02 ms\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " super().__setitem__(key, value)\n" "Extracting layer ALOS DSM from Google Earth Engine:\n", "[########################################] | 100% Completed | 10.33 s\n" ] @@ -5324,61 +5238,6 @@ " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", - "
    <xarray.DataArray 'reclassify' (y: 2210, x: 2170)> Size: 38MB\n",
    -       "array([[ 1,  1,  1, ...,  1,  1,  1],\n",
    -       "       [ 1,  1,  1, ...,  1,  1,  1],\n",
    -       "       [ 1,  1,  1, ...,  1,  1,  1],\n",
    -       "       ...,\n",
    -       "       [ 2,  2,  2, ..., 30, 30,  2],\n",
    -       "       [ 2,  2,  2, ...,  2,  2,  2],\n",
    -       "       [ 2,  2,  2, ...,  2,  2,  2]])\n",
    -       "Coordinates:\n",
    -       "  * x            (x) float64 17kB 5.607e+05 5.608e+05 ... 5.629e+05 5.629e+05\n",
    -       "  * y            (y) float64 18kB 8.573e+06 8.573e+06 ... 8.571e+06 8.571e+06\n",
    -       "    spatial_ref  int64 8B 0
    " - ], - "text/plain": [ - " Size: 38MB\n", - "array([[ 1, 1, 1, ..., 1, 1, 1],\n", - " [ 1, 1, 1, ..., 1, 1, 1],\n", - " [ 1, 1, 1, ..., 1, 1, 1],\n", - " ...,\n", - " [ 2, 2, 2, ..., 30, 30, 2],\n", - " [ 2, 2, 2, ..., 2, 2, 2],\n", - " [ 2, 2, 2, ..., 2, 2, 2]])\n", - "Coordinates:\n", - " * x (x) float64 17kB 5.607e+05 5.608e+05 ... 5.629e+05 5.629e+05\n", - " * y (y) float64 18kB 8.573e+06 8.573e+06 ... 8.571e+06 8.571e+06\n", - " spatial_ref int64 8B 0" - ] - }, - "execution_count": 7, "
    <xarray.DataArray 'DSM' (y: 959, x: 1240)> Size: 5MB\n",
            "array([[-12.,  -7.,  -3., ...,   0.,   0.,   0.],\n",
            "       [-11.,  -6.,  -2., ...,   0.,   0.,   0.],\n",
    @@ -5447,9 +5306,6 @@
         }
        ],
        "source": [
    -    "# Load Smart Surface LULC layer\n",
    -    "city_SmartSurfaceLULC = SmartSurfaceLULC().get_data(city_centroid_buffer.total_bounds)\n",
    -    "city_SmartSurfaceLULC"
         "# Load ALOS DSM layer\n",
         "city_AlosDSM = AlosDSM().get_data(city_gdf.total_bounds)\n",
         "city_AlosDSM"
    @@ -5457,8 +5313,6 @@
       },
       {
        "cell_type": "code",
    -   "execution_count": 8,
    -   "id": "82163580",
        "execution_count": 7,
        "id": "e9f447ba",
        "metadata": {},
    @@ -5498,20 +5352,6 @@
          "output_type": "display_data"
         },
         {
    -     "name": "stderr",
    -     "output_type": "stream",
    -     "text": [
    -      "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/IPython/core/pylabtools.py:77: DeprecationWarning: backend2gui is deprecated since IPython 8.24, backends are managed in matplotlib and can be externally registered.\n",
    -      "  warnings.warn(\n"
    -     ]
    -    },
    -    {
    -     "data": {
    -      "text/plain": [
    -       ""
    -      ]
    -     },
    -     "execution_count": 8,
          "data": {
           "text/plain": [
            ""
    @@ -5523,7 +5363,6 @@
         },
         {
          "data": {
    -      "image/png": "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",
           "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAAHFCAYAAAA0SmdSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9eZRlWVkmDj977zPec6eImxEZOVZmFRRDAVqNfAiK4ucE2tq23V8vsQelpdtWZIE2dkMDLbigXE6ITau97FYBcaC7nXpaihP6U/An0jiAQFFjjpEReSNu3BvnnnHv/f3x7r3PjcysITMyo6rgvGvlysyIO5zp3v2c533e52Faa4222mqrrbbaaquttm64+BO9AW211VZbbbXVVltP9WoBVVtttdVWW2211dY+qwVUbbXVVltttdVWW/usFlC11VZbbbXVVltt7bNaQNVWW2211VZbbbW1z2oBVVtttdVWW2211dY+qwVUbbXVVltttdVWW/usFlC11VZbbbXVVltt7bNaQNVWW2211VZbbbW1z2oBVVttfQ7Uhz/8Ybz1rW/FZDK56ncvfelL8dKXvvTAt+kg693vfjee+cxnIgxDnD59Gm9729tQVdUTvVlttdXW51G1gKqttj4H6sMf/jDe9ra3XRNQ/fRP/zR++qd/+uA36oDqHe94B1772tfim7/5m/E7v/M7+O7v/m7cc889ePWrX/1Eb1pbbbX1eVTeE70BbbXV1q2tZz/72U/0JtyyGo/HePvb345/8S/+Be655x4AxMhVVYU3v/nNeN3rXvc5vf9ttdXWk6dahqqttp7i9da3vhXf//3fDwA4ffo0GGNgjOFDH/oQgKtbfg899BAYY/jRH/1R/PAP/zBOnTqFOI7x0pe+FPfeey+qqsIb3vAGHD16FIPBAH//7/99bGxsXPW+H/jAB/CiF70ISZKg2+3ia7/2a/Hxj3/8IHbZ1W//9m8jz3O88pWv3PPzV77yldBa4zd/8zcPdHvaaqutz99qAVVbbT3F61WvehVe85rXAAB+/dd/HR/5yEfwkY98BH/n7/ydR33eT/3UT+FP//RP8VM/9VP4L//lv+DTn/40vuEbvgHf8R3fgc3NTfz8z/88fuRHfgS/93u/h1e96lV7nnvPPffgFa94BZ797Gfjv/7X/4pf/MVfxGw2w0te8hL87d/+7WNuc13Xj+uP1vpRX+cTn/gEAOC5z33unp8fOXIEhw4dcr9vq6222rrV1bb82mrrKV7Hjx/HyZMnAQB33303Tp069bieNxwO8Zu/+ZvgnO6rLl++jNe97nV45jOfid/6rd9yj/v0pz+Nd73rXZhOp+j3+zh79ix+4Ad+AN/zPd+D//Af/oN73Fd/9Vfj6U9/Ot72trfhAx/4wCO+70MPPYTTp08/rm38wz/8w0cV1I/HY4RhiCRJrvrd8vIyxuPx43qfttpqq639VguobkL98R//MX70R38UH/vYx3Dx4kX8xm/8Br7pm77pul5Da40f//Efx8/+7M/i4YcfxurqKr7ru74L/+7f/btbs9Ftfd7X133d1zkwBQDPetazAABf//Vfv+dx9udnzpzBc57zHPzO7/wO6rrGP/tn/wx1XbvHRVGEL//yL8cf/uEfPur7Hj16FB/96Ecf1zY+4xnPeMzHMMZu6HdttdVWWzezWkB1EypNU3zBF3wBXvnKV+If/IN/cEOv8drXvhYf/OAH8WM/9mN47nOfi52dHVy+fPkmb2lbbTW1vLy85/9BEDzqz/M8BwBcunQJAPCCF7zgmq+7CNKuVUEQ4Au/8Asf1zYKIR7196PRCHmeYz6fo9Pp7Pnd1tYWnv/85z+u92mrrbba2m+1gOom1Mtf/nK8/OUvf8Tfl2WJN7/5zfilX/olTCYTPOc5z8EP//APu1bGpz71KfzMz/wMPvGJTzyuO/K22noi69ChQwCA//7f/ztuu+22637+zWz5We3U3/zN3+CFL3yh+/n6+jouX76M5zznOde9fW211VZbN1ItoDqAeuUrX4mHHnoIv/qrv4qjR4/iN37jN/Cyl70Mf/M3f4OnP/3p+J//83/i9ttvx//6X/8LL3vZy6C1xld91VfhR37kR65iC9pq61oVhiEAIMuyW/5eX/u1XwvP83D//fffECN7M1t+L3vZyxBFEd7znvfsAVTvec97wBi77tZ7W2211daNVguobnHdf//9+JVf+RWcO3cOR48eBQC8/vWvx2//9m/jF37hF3DPPffggQcewMMPP4z/9t/+G973vvdBSonv/d7vxT/8h/8Qf/AHf/AE70FbT4WyTM1P/uRP4tu+7dvg+z6e8YxnoNfr3fT3OnXqFH7wB38Qb3rTm/DAAw/gZS97GZaWlnDp0iX8+Z//OZIkwdve9rZHfH4QBPiiL/qim7Ity8vLePOb34y3vOUtWF5extd8zdfgox/9KN761rfiVa96VetB1VZbbR1YtYDqFtf//b//F1pr3HnnnXt+XhQFRqMRAEAphaIo8L73vc897ud+7ufw/Oc/H5/5zGfaNmBbj1kvfelL8cY3vhHvfe978Z//83+GUuox22X7qTe+8Y149rOfjZ/8yZ/Er/zKr6AoCqytreEFL3gB/tW/+le35D0fqd70pjeh1+vhp37qp/BjP/ZjWFtbwxve8Aa86U1vOtDtaKuttj6/i+nHMnpp67qKMbZnyu8DH/gA/vE//sf45Cc/eZXAttvtYm1tDT/wAz+Ae+65Z0/2WJZl6HQ6+OAHP4iv/uqvPshdaKutttpqq622rrNahuoW19133w0pJTY2NvCSl7zkmo/5ki/5EtR1jfvvvx933HEHAODee+8FgBsS/bbVVltttdVWWwdbLUN1E2p3dxf33XcfAAJQ73znO/EVX/EVWF5exsmTJ/FP/sk/wZ/+6Z/ix3/8x3H33Xfj8uXL+IM/+AM897nPxdd93ddBKYUXvOAF6Ha7eNe73gWlFF796lej3+/jgx/84BO8d2211VZbbbXV1mNVC6huQn3oQx/CV3zFV1z182/7tm/De97zHlRVhbe//e143/veh/Pnz2M0GuFFL3oR3va2tzkx8YULF/Ca17wGH/zgB5EkCV7+8pfjx3/8x9spv7baaqutttp6ClQLqNpqq6222mqrrbb2WW04cltttdVWW2211dY+qwVUbbXVVltttdVWW/usdsrvBksphQsXLqDX67UBrG211VZbbT1qaa0xm81w9OjRx8y73E/leY6yLPf9OkEQIIqim7BFnz/VAqobrAsXLuDEiRNP9Ga01VZbbbX1FKqzZ8/i+PHjt+S18zzHKO5iDrnv11pbW8ODDz7YgqrrqBZQ3WDZSI/7PvvZR4/30Apg+7sb4eUcKujs6zXa2n/lUoMxhk52GQAgO8vg2QQAoKO+O9dK+NAa4NAQ04tQf/th1JcvoM4KxM98Hrzlw1DJCNoLwItd6O11MCGgDp2C7B2+adsrZpfA8xlYXUBFPWjhQ0cDKD8C04q2FwCrctoH4YNpDcgSvNgFkyWg6DHQGiruAwD4fAKUc8jJJrgfAZzTHwC6LMB7QyDoAFxAdYbQfgfKjyBmlyDSLUDV0F4E1R1Be5H7fGguoIVP26RqQEkwraEZA5MVdNABZEU/Ex60CK77mPBybvbVA6tyaC8EUxLQCqzOwco5bYPw6d/2cycrQPjQjIPnU4BxsDKD9kNoj/6AcTBVQ3MP2gvByxQwr639GLzYBS6fQfXwp6GrCjLPoKVCfnkCv9tBdPwYRH8Z8HwwLlBvnIMYHgJPBmBhBOb50EpBpzPw3gC6JiNglc6gdnegshnUbALGBVRdQSsN7gnIooLX64H5AcTyKsRwBfWlc5h/9tPwezH81eNgcQdychnlxiX4SQe8NwCYgK4KsLCD4LY7UV++ACgFXVXw7nge5IX7IIYrgJJQ6Yy2ryqglYROZ9BVDhYm4EkPvL8MdAZ0vlVNx0kE0FzQNacVoGpABHRuuXfV9yarC3ec95SqweoCvEihvWDPOd1z7rMdqHhgXoxDe+b6sd/RWgELM1pMyb2/lyWYVmBVATUdg3eHkIM1iJ11QNNjdV1BF/R5YoMVaN9sL/cwnU1x+oteekvioGyVZYk5JP4xjiHYh6KnhMIvrZ9HWZYtoLqOagHVDZZt8/V6PfT7/at/r2r68q0yKD++MVClFcTuJjh2UceD5ku7ytyXg/bj/e5KW4+zYg34DPDLdSDdRnXkdrBuhxZQLiDyKQC4BXUuGaL+AOLoHRA7F4DNh4G6AosCqOl5sGPPACsKSFXAW7sdsj+E7F59Ld1o+eUGdLwMcFqgtAFVhPYEWDGD9iIwHQOyBAxAYfkMXARAzaD9ENwCB7MwIBqBTRVk1YFYWoVaOg6xcwFaKbAgpsVQK4ALyP4IWgTg+RTcU0DAAR4DUQ8q7tA2cQ/Si8BBCysvU6CWUJ0VAlbms8OyHSAMwOoSOgihwutfmHjB9izKmjdfgUzVYMWMQKQfgWU70JF5DwMCmVZgZQJWZWBVABV2CUTHAwJkVUHH2AugxZDAl5Lg5S4QMGDQhzxxGmq2DZWlkOkuhoMEqqzhMQWuCvCwAxZ1oNQKWJxALI3APAKauswhMwnOFFiHFjod+pAyA5JVqE4MFkRQO2PIbA5/7QR4b+iez7gAPB9qOEB0aADue/BXD0NnKaSugJVl8N4QvLcEuTMGHx2Ct3YSLIghZU5Ab/M8+PhhaI+DVSlEbwgd+uDdISArqNkEWDkMNZ8BdQV4PjiT4J6C6gTQXt8Bes09Aq914QCQ5h7ABYEe1oB1oEfXn6rpb3NeAICVGVgndNc6q+b0bxHQNQQASeR+BsYMKE4B5jXvtfg9rZUDyADcNjNZgvW6UAF997I4AOMc8EK3D2p3At7tNJ8bA8gAHIhEJAZHsI8bedHO/t9QtYDqFhRTNViV0QdsH8XzHYjJeah0BiECyP4alBeCCZ++tLl47Bdp66aVzwAFBjk8Bq8uwGRJX85aEWtizrcWAVhdQHD6PytTAACPE3cnD2W+mMMOdFVCBzG0uMkfR6Wg/cCBAgceuCCmpyqaRafKwaoZtB+a67dwC4FmHJAS8LjZVwUWROBRAhbEyHtr6ORTYpGET+yPrPfuj5JgWkEDYJzT39WcFragAyVCCG0WxyonZsdsM68y9zKsKtwxvu4yLAgra+gg2QOm7Hsx7gGo6fMVJnTDoiQtylxAa07MBeMETBlvPosiIFBZF9B+RPsmK9pvEYDZYw+AD0bQSsGPE8ALIMcXASWJ4ahKOr69JbpWuHBslDbxVLouocscWknwTg9iaRVyNqFt9Xzw3hAym7tjD/hQO2OwpA/u+WBRB+HpZ9J7eT7kfIZqN0Wwsgo+GIEFEdhsG2IwIrAAgCd9sLADPp9BzbbBooSugc7AgRbtx+AD871UV0CUQM2nBK48HyzsArymz4rWAGN0fZnPDqsLOl4KgFgEU2jADuMNwF38nQFTBOa95vxaAGbBmAjoXMsKrMzouYwBfoRr3fg6UGWYKs044NvtbeLC9HwHusgJwPoBUBcEFmGZ4OJxXaY3owRjEPsAbgIMaEHVdVcLqG5maQUmK4Ax8Pk2ZO/wtSnqx1litgmVzsAHh+gjyTjR4wB9GaRbkL3VfbcU23rs0ubLKS0VJGIcige0AHoMTKO522Yc81qjK0tEjEFrAizaj2mxXT4C5QUQXoj6zKfAowS6riDP3Qtx/E6oaHDTzme1eqdjSoHmDlszDlHsuvaavW6ZuYPW3KNWRV2B5zMHFJms3QKnoh6YH0MriXjrAWg/cgBKBwm1yGxLsZyD1bljreCF0J4PcA+sTMHTLfiHbqc2WTEDqzJa8BYWMpbPmoXvGu2cxyzLfNlWnReB2cVx8WF+3CycQUIsc506RoSpGmJ3k45RmJh94gQmGQeXFXQQ79k+7YUEdAyAltsbYEEE//lfA1y4F3I2gapqaFnC83zouoLKiPlhcQI126bXqSu65ooMWkoHOhFEgOcTwKpKWsxNqdk21M4Y4BzVZILotjuAKCGmyjxPbp6HLjKIKADvEPhmXIAPRlC7E9NuDMGiLjTjYFEH3PMJTPl0c6fjATEw3AOkD6QTep2lNXj9ZajJJv2/2DXAOyeG3RxXex60H7trUXkhsZFe4I6/5h5dS9wj9j7bgUxG1I61O81Fc165cCwVq3K6flVN17di7pxq4VMLWHiu/cfMZ4VexzBfWhEgs+eX1eYGSYIZcKkZBzMgmNUFdFUYUH6d1+w+ijNA7IMI40ALqG6gWkB1M8v14QGVjPbFIDFV0xcPzJfNguZFMw5e7lIrZb5N79XWLS1zMw3BgFoB+fAkoq0HoJdPNecddIcNBPQlLs3dKxdQYRc87kN1ltz5ZEGEerzuvpBRV05bctO2ewEIWJDCZEUtqjIlZspsIxR3ixVtvzT6oMAtMFAGQCwACVQF4Ckov0NAhHvE0BimgBUp6VvMwuKuYxGAXbwP2vPBhkchphdpAfUjAitGQ+W234/pdesSrM6vr91tFkYV9sCNpsm1gq5xvAAQAIIBiIADifXScQKXppUnox4tohaQ+h2jySqgw4QWcnvsAGqNKQm2fR7VeB26zCHCENVuSqximUOXOVgYgS+0+uzzVT4H40anE0TQSoIpQaxWnBhNm4AIQ9TTKcpZCuHT66j5jIDSbEILvuejunwJxWSGzuFD1OZTdG0yr7kOdZlBFxlY/xB4nIBFCV0n+S5pnhgHEwExgNkUqsjomtIKKkzAh3T8tFLu2sEC0F9kMzUPAcbo55ZZsufE6pkYhwoSsCKFDmI6H4vnmsEc8wUdlPm3ChN6vLm2NONXscMWTLmbiIXW856yTKpSYPYGBQR+mR+SpiydGmDX6mA/16sFVDe7hE932CJwGgzHElwH88B3LwN1gfrig+DzKby1U5B90piI6TowGwNVCT461gKqAygODVYV6Ba76CQjjHOFSAQQ03XIwVH6ojflCwZW1UCVU1vQiwDhox6dokV4vg1WV2BJH2J5jRac+QRq6yLYYA06vnmAypYFcXy+Tbof7hNLI3ddW4pE2VkjCDasnL3D16qmS9jeaXMOFfWI9fIMgGKM2jbFjBZcryb2IIjBbKuGe679oeYzsIgAiOquEJtVpmB1Cci6EXlzWrQ194AoNGAmhbJg5/EcAy+ESMdXaWMetSwA5IIWRS4A5QFqDgYJFXT3tJRYnYPnU1qMtXLH1jJZACAGI2KlZhMA1AJlvSF8ADKbQyhJIIlzcANs1M4YKqcWnpptE9hREizpkx7ODyAGI+ikB5XO6H1Ga+BLCjj/MPyVwygvmbZiPgeUhBxfNMxYc+3KdBcqn4MnPYAL8CCCzlKokgCcl/ShkyU6DgCQLNE+GCAOEJhQ8xl4EAHpNjBcI0azIp2UCmICqVqB1wUxW37HXGs+wBcE424owvy9oJ/S8QDqSqCzwE4xANCmXWuBGOcE7o1OS0c9Gj7wO3sAtuaeYdyo3c1UTttk38udUwFoD8znbvuYZS9VTe1tLsCTHljWtAdvdd2Ull9b110toLrJ5e6oGAMsfQzQl//jFNHyYgaeTyG3N1FvbyLomS8tQ00DgO6vQN73l/B7bdbfgZRWYNUc3nQdUlbg4Sqm3WMYbnwCqnvItXyYVghACwPPdghMhD4trGYRV8mI7oCjHiB88N3LzeIqr2ZNbkoxDp5tQ8w2aHeCDuqgSwCGcaDOSfMCkBC9SJ3Ymtgroz2RJWlClDRtvsABFKgakFZDVoLVM8juitFVBYbdMi28KgPTCvVsG/6pu6CLFJqToJtxz/2e1aUBbgMSitc5MUCgViKuB1CJADIZGRbxcR62YhfwgoahsG0jzsGKHCrsEZgECFiKwGhsIiDbIZBqW0d1BbU7IXBSl9C1D24AkJptk3aprpA+8AD8JIZYEtCWuYwTiDghBiudori8BR548D0fqi6hqwp8kEIsrUBunnfgrRxvgQn6d3T6Tnr/jB7H8zmyBx6A8H0kt98O3unBC0nQTpeMQD1ep31TEt7KMdO6yqCVYXw4Lb0siKFCYq3QG0EAQGcI5LNmqMEPFybmqJ3MZAldzMHDDj1fR9Qi5WYAArW7fhevZdtiTzuriAQzrWICfU53JZUDPtSqE2ay0GtuFrgH+BH0A/8XfO20G5KAVg2kMF0HpxOzYNkcF804PbYuqC3LBRAmBsAJsDAy2rj8cV93+y2xz5Zfq869sWoB1U0uJktzJ+tBh8ROsbqg1oofP/ZdsVZgRQpkUxKL5iXqjXPgnR5Yfw3wY7rb14qmaxZo5rZuYTEO7XcgO0tQ3UMQNVAqjWrtWdQKAmgsHoDuLO1pz2rGwa2GIzBsjBnf5ukY6vI5iMEIKkuv0vTc1F2QtWOppB9BqIr0Kqom8HLlHbq9279ym3hzNw4RONBgJ7rs+LltMe4p+z5msMJ73pdBdpYcY8WrzOiWqMXFKhIN63jJLLR2MeSNpcF1HQT+uFuFTFY0pbu4z5wTs2f36wrRtOos7WErwT1iKkH7opWCzlKwMIbaGTvhOQtjaqPNpxC+T3qmpE/sVJ5CZym1lbyFtpJUqKdTMMEhwtC1CgFqEYrBCMGSQnZpE2JnTOL10Rqd13wOXWSIV5bAgghiaWUPI8WjBqjqPHWCeQDGumFq9s8ABivaNmwlDzvQgoCFBhZYz8XjxRzLo4s5OONQ3AO0D9Q19JVflYbhXJQ/xCqH5jTxSbqf5ncOSC1em+4xIKEQF9Dagzj6tKY9CADCJ4Zq8VxatszzAHPjwxbeSyt1lYYNjIN5PlQ6gzbMYVufu9UCqptcV+pfNPfAWGV8bzLoR2OpjHCWqRq6uwy1vYFgZRXe4ZP0ZWAmpdyXkuff2KLS1g1VKULI7hEwMARCYzuXqCXDivkU6cV2gFlcwYXRHpmRfBA7xOfbTiBN9gJr4MGMmI1bVFZwqy+fAw86kMJMAGY7YHXVaEsA2nbAgSpepKS7MoJc7Ztx94IYCNSF0cfEtBgJAVaWhtGC8wqCrEgfFPfIM8gwV44VkyVEQVORcmudQFXUAeuukEaWMad9uZ523/UfLEVAqM5p8k8LYuS80LQszedQUasURhukoz5NMJZzOg4WeKXbUFVJIm8/gMpS8oyKEmKfwggsiCDnU4Srh8iXLJ1SOxTUGtUFsWPVLh2f6NQdpCcLIrCkj/rc/ZAAWEjeYN7hk5DbG/CmU8i8hJen4Enfidy9tZM0xRdEqC48BNFLwHtDYsXMuee9IWSeQlcVdF0S6C9zYrG8gFpZYQTkM7AwgQ6pNavCpGFhrRbqykPsR9B+RJ+B3TFQF2CV3+j+FidF9wAbOqZidxPVH/wS6nmG5Kv+f5D9I/Q7cy6YrMg7qioMy6rAYBzEGYfWHJpzGk4IOnu30fqHGYE5DRUYFtqeU9sONte0ylIwLsDiBLATwIbNYnECmPN2ENW2/J6YasfDbnUZ8aSKBo/NTjEOVs5psd08SxoE239fPtKMv/sxfbD9YO8XTVu3rDRj7itGa41IMEgNxD4xHlb70bA3NFrPZEUsi1JgNQFr14Yo59CTDTNy70Mly7eccVSzLfqHLI1xp2lleb6ZbOuQHxVje4cqzO8hS2J4rPWCNPpA4dN4vRX/mrv5xrvHtEvMz3Uxp7bggtjdioB1MYeabjnRNDc6IXpB3mhXbnKxKnN+SEwr6LDrPI208MwEoKaF2nzuuLHEcHopK0wPu+aAE5DUhRGVez50kZnJO0EL8WziBOAqS0kPNTriGCHHnHAOJgS8TgQviVCefxh8MAK3koAwghiMwPsjAkqhsV7gHNz3SLSe9OCtnXTHT0sJeCG8Q2tQeUrtwOU1sjjwfWo3etSalNubUNOtpj1thO5yZwydpW5/AZBxq99xDOciA0qsPekLyWCTfLuUfY0rmay6bP6/8DstPITPfZFpP9LnyV53lhm2tgYE3r3GCmThu9iaszrGzOmjrM3Iwo0SQO+hNW2/EdrrqoLO51C5PQ4NKNUiAAti0qUdUNmW337+tHX91TJUB1WPo9VgnZXr9YdQPvRpagPNtiFnEwguwEUAOTjqvlSY55NpaFu3vJjW8BgAzlArcu9ejgS48abiIoCOA9KEmPFqPt92OhMAJFQ1bQtepKgvPQyxtEptEa1uqkv6Vdtv76pXT4PPt6HN9lkAYB9jhd8WWGgRGIsFu7h4brqNmIiuE6wTw1QZMXDDSrAqJy0SQIujLTs9pX3S4dgJxIo8lryVY9B+DBV0GiBqPaEUeUndDIsJa+jJc2IQVTJyOhsyJZ2RL9cCI1aHffj5jHRyCZmXsnLudDNQklr9snZiaF3mkON16CxFeu4iwmEPfpyABQK6blzpmeeTGWbUAfMCGsHvDglgBhHE4QhqNiFfKS8gFml7A7zTA+8OwcII1Zl73Wv5o0Pg/RHdmEV0zFicUNuuOySQ0TsEL4ggd8ZQ0y2wpTXonQ3nNwUAejp2/xejI8S6KAldmXNaEEMDoZyBLFM1mNFKqagHbtz3mayg5ztgyRJJGDh3thCLWlEHxOtyjybVAmt59NmI//6dkCIAT8fgZQbZX22AlbG22KP1A+jccs9Mqi7otJhugBMz3laqpnOwCOIt4GIcUGZ6lRNjqbKUpi33gMLC3Uy09blbLaC6xfW4p4m0Ij3Ng3+F+sJDmF8cQ2zPEB85DLW9ATEY7fmAksgzhopunrN2W49dFlQVtULsk8kjL3dR+gk8hsarBiDhbbHrdDcqTNzCq8sM3uHbIDukDWJagWfbN9WHarFYMQMrM/DZRmOiaAXWdWXYtBI65BD5rNlW2zoBoEPSmzAjYCe7BZrA4wZIwuy/Zpz8mBgHk2TMqTKyBeBJD/BCSGOzQHfzi+PtRivEPRdDwmQNlCl0kEDtw9vtquOiajf5qL2S2olVDt1ZIjCg6oatsxEpjENIMm20mjEtAvJisq9bU7sQAHSZkSA9nYFHHch0Ci0V2RlE22T4WpfENiV9YoSCCLBARklqxdWVY4z843egUpJ0U1lKjFaRgfeWIccX3FQiixOIlWMQS6vkYs84kG5Dp9OG2VE1tOdD9VbBwy5dryIA6ope1wjjeXdIk6n2tUo6r7y33PhIeQFFF5VzAtvlHOryOWqFeRFdY9kMysSz8CBrbjiUBCtSirDhHoBG3sC0Iu+nPd+BMQ10dA+RZrW7Am/nvHH8b4C7c17XbI+1EtMKrMjcOb1SL+jE6fZ3lmm1Vglmopt5PlhvSD+rK2JUXftfA0WKav0M6p2dfVyp11dty++JqbbldyvKtjlU7QTLj1VWuK52xqimU1RpDlXV4OYLEckSTcHYt/AiyOFRZ7rY1sGV4AyBIDBFHjo+Smm+qhe+fLUXErNSV5SlF/YaTZUpnu2Q+DnfISbkVrRwtQLPZxDzbScGR10B6TZFdlgbAXstGbaJ2lgl7Y+SblKRqRooUmIkyswwRrQo7RGhW4aqzpu7c7sYWSYHaF5TNWwOixPS1NSVASfGIf0aGW/7LsuKBB3ynjILLMtn0CJoblqsgNq2ZWXlmA87NebaUX6HjomSQF1C5SmYaECOn8QIhz2yLShyB254j0CLNepUObE+NAk4IS8oLmgRDyIy7pwTs8YGq4CqCbiZ9hKLuvBGa8SCCh96etloo5bcvuuqcJOKOuiQFYRhsfjAWLKYc8K8prWrsxTKiNO1HxKA5h54mTnHc2vToHLShqrpFuTOGPV4fUGrZabhDLPnjrW+hrPkwueDSbo2NPcwlwzS70DGxudN7R2yWDw3EI1Oy+kebU6fGdBYfM5Vgxm2RW6Bp/mdylPaJyX3ThKmU6jJBlR6cICKxjZu/E8Lp26sWobqFhVTNXi2Q8LLx/F4Pt+GWn8QKkuxe24TxWSG5MgIfGkV7MgdkN2VRtgsAmjhQ3kH15NvqymmNX3hWJ2GLNGtJlBiYH6vwMqUTDyDjmsDOf2GHwHJEDqdgHEOsVtD7U6gj9z5+NjMGywrqGV1gXrjrJk2i8A7fbNY1mA1d4uaXayYVk3IqxX9Gkdvumsv9w5MWEBiGBqVTglMAM2klclqY1XqQJ3ddx4bZqauIMf3EzvbGwHRLbjejR6K5TPnV6SNxYQ2hp0w59Ppd8wCyqu5MYW0nkkS2vOofVmlxlphF6rIoQuautN1BZ2nEFEAb7hsJtwyslGoSnqMYZ7k+CIBnyAC833IS2foPMUJRcj0hlC21QSQQaosIXpD0kB5Pp03P6RzVuwScEuWIAwYI1NQab6rKHdOhwlQKjDjMcWLDGpK2jtm9H5gnPRCdUXA10QO8WwHcnyBzmGYEHgzRqYOxBQ0jahr0h/BuL4zw86570sLSK4BoFWQOP0d0wq+8JDXCn5nhHA+Bs9p0EJ7PjFMZvucnqsums8l4G4eHCNmz6vTTS0ALROXw6qC9JEgbSCPaH/hhQSIjYZLlTlprIqDs01o64mpFlDdirJfurKiMfnHenhdQEc98KgDHieIRn0wweH3OvQFa0NrJWUEOiPPWzhi39Z1FON7W3V7WBpxFUhiVQ7ld8C6HNjdMhqMR7gjv0mlRQD4Ro8yXfC98gPougSrfagic2Bm0cDQGmu6xcV4BDGPps8dG2CZOaedKhxbYP15mO8bEb/xmqpMdluZgZl8NCdcNzlzOkspMLguwQJ1zQX2hsssqjQ8kEP7EVk3eCHU4sRuuHffnN+UCBqmzU5zLojWncmlATl6PoPKUlRpBq+T0g1TEEHPp3StKEnnhgsSqEcJgZ4gAl9ahdoZU56f+ZkYHaHtq0sDIELKCawrWtits71d+MscXFYNaDZslxNxGzbTAn8mjQ2AAcK8N6QWtXkNLQn8MS/cM8WJ3pK58QvAB4eoPagVCdnt8TJsl73qWRATAFw8N1eWBeu2C1AVZAQbDsAZ5W0CdO0hm5INhGdDkb0GTJlzZXP9rCmrXnhvpy+077fovWWHKezDbdvPC11oMmDYVyvwP8Ds1bbl98RUC6huUWnGTWzHI7fkmKrBsh2IbJsWpTgB6/SR3H47gsuXEN55N/TwiHHS3qaYhckGxDBFvXLHAe5NW49WV4XsigAI+R7WZTFSxn6xq84SWNijcxv3UfdWb80GGtaB3KxpssyKw7WMgDKHAsC8oJksM8MOrDaTa4xBexG1sqq5E+SS/5QBkGZ/LaOljfgYYQSVTmkxRwKuFZQXgVfkiq7SGQEtwDA1Vyz4YQRdzCF2LtDn6iYmA2gvJKPVbAcin9E++DG5yS8+7hrMYb18qvE5AhoWQ9WNmLoqKfuut0T7ZKYWo1FuwNM2aZKMaFzncxQP3wev20VxeQsdA45s4DEzk35QEhgdoym2BWaQ2sw9xybSgEFJrbnaWB9sX3KtRT5coWBuy7ioGqgmZNQZDwgQhR3wjgVW1MZmxS54d0iu66DpUeYHbpqRcQ5tsv1UmJD1RD6DlhJMCLp5TPrEdgHUhiszMGAPILHlApNNu5FVGeU71gVl+kVDABoKDEIr6MmGm0J003uA+5u5VnbtmFWKWyqbiVP7mbW6PqslNNuh/dBYY0jHSNGLcwL/snJTtazTh2etSA6gWmPPJ6ZaiuNWldGCcONMfa0SOxfg7VwA0gnq+/8KcmcMsbQCFiUIjt4GHHkaee0o+pLWkw1aDK/BerT1JCrdsCiuLZHPwAtasFW8RCP5YY8WraBD+p1baIGhTT4fADMZtkSLfF1CFzkZDxqBsytF2iBdzN1kH7Ngwd6hWybGslhcuGBlAND5LrErvSWKUQmjPa+vjQu4lkZbZdo/2savJH2gdwhqdBvq4XGa9HqcZbVZrMr2aG+ueWzCLpmtMpPr9njsK6y+xr6OHzctozKlgOC6ouMc98GirhF0k72Bd/gk/T+MyGeqriC3N5Cuj1Hv7iK+7TbSMNUVpSacuZcsCqSEnE0cAHLRKgB4kYLPJ03clRkqYEIAng/vyO1gh46TeDqITDszI92TLKEmm6TLmm0RYAHohq63TOHICywi6x8yzBtdV3JnTFop453FtALfvUw+U4wZ64A+mRSHsROf650N6GzmfJ0WzTJdK9meTzs1aW5Y5dIJqKALf3cDMSp4+YTAVhiR15kf0+fLjx3DpLnnWCsCZ7mxXKjpujXTiQSiyr2Mc1047aA2rBc8f4+Wyk2rzrYMexfAWzkGb+XEY19TN6kIULF9/Lm+9/uhH/ohvOAFL0Cv18Pq6iq+6Zu+CZ/5zGf2PEZrjbe+9a04evQo4jjGS1/6Unzyk5/c85iiKPCa17wGhw4dQpIk+MZv/EacO3duv4fjwKoFVDexFr/Y9tQ1fkYZbxTFYI32WBCBhTG81WMQoyOkE5AVxGyDFuUwghxfbBLR23py1pUiVjNCz9MxiXVVDRUkzqJAJqNbb38hfMeW8qQH3umRwDmMCeTYibG6asbglaQ2JBckYM+mJFK/oo2tTduOXrwRBKuwaxbhmBbT3pCm97Qxw9QaLOoCYUKBu0EMHidmfN60WMydPlM14AVNZuDjLfNca5j7SKU9I6oGnH3C464rRvmtQF8X1GZjAbU4tfCprckFHWcbU3KF87gXGeAbJdBljnrjHKr1s5BFQSxQnhI4rTLofBdqd+KGBOTWOmX5pZNm4jInywqe9AkQKUnArK7IfmF34mwAtHVEt21c0xZTUY8GK7yI2pxRz+m07PnjUULWDdYXK5sSYFY0GacNm8PiBCzqwAUlG6sB5vmGYWs0ac7XbHHCz7CA7jpkDHy+TfmntiUYdaGD2ExvGlZtYUDIsVPWMkFrE4QsmnOoJOX4VQXZPJQZGZtmaXOuF9vhFvhVBT3WDAvwwSFqe4afuybMf/RHf4RXv/rV+LM/+zP87u/+Luq6xtd8zdcgTZsbtB/5kR/BO9/5TvzH//gf8dGPfhRra2v46q/+asxmzeftda97HX7jN34Dv/qrv4o/+ZM/we7uLv7u3/27kFJe622fdNXSHDezNIV9Wgdnns9oMVlkLIwomM8uQQ4oG0uduZfytwASCXeHwNodxHBlu+5OmHs+/NufQwL1tp4yxao5xHQdWikIRoHCekFzpf14z+TRLdsOTXoaHSRgyzGE5zchtmZEn5yym5gU5ofUivNIK8SqAsqLyJdHk87EjtCzIG6m+RiHjgfQ1ZxEx4Cza3BZaIxRa1AEjvngAFjUcdNgbEyO32y+Ay+IoLqHKB/wcQBQzT3wMiWApBVUVO857leWipfo2Mjq8Z8Lu7AC9LcxKyXt0CoxVQCBkJpe11s7iXJ3Ajm+SEzVqWeRc/q2yVmUCl63S2AkjGjar6oRHD4CGwGj5jPSNRnRs/ADsJA0l9WZeykXsLtMr2cAMjMsJTMtRJ3P3VQaALD+IQJjdUlmm8w45IdwEUNWk6XNxLHuGcbR88FM4DFTNer1h6CriuKxTBwLCxumiHkBTT8WGdR8SoLuK1hBXs3dedReBDBc0VYzgcXcg+QeIDxiw2DahiJocgEN28SMg7mz4uCLQwW1OXde0/4051WXuWtbA/Q9zRiH9s25tVOCZUbGtLMJ1PYGvCOnG0F8fpDhyAfb8vvt3/7tPf//hV/4BayuruJjH/sYvuzLvgxaa7zrXe/Cm970JnzzN38zAOC9730vDh8+jF/+5V/Gd37nd2JnZwc/93M/h1/8xV/EV33VVwEA3v/+9+PEiRP4vd/7PXzt137tje/QAVVLc9zMMjT0ojGcFXu60uToy2QNb3IWvKA7zGJrB2o+o3yvOAHPaIxeb10EdsfQfgf1odNQo9taq4SnQum94mmX4VblNFxwBVtyIC1c62AujKh2sApvtEbTVWZyDF5II/ZlTn97IRD1mrtyt8G6uStXtROUwy7QmnzV6O6+bHyKrHcTQIvZ4gJpxOnWUZyZ6TUCD6Tv4tZM83GWNhOxAGia8DFsTLQI9hVpYycDtaAJOx12m+MkzGQjJ1PeckLBy3K8bsKSK9RbmxBRAFXmbv/FYAS/m4AFhknMUgJJhuHi5ucAGk8n23JlnFhIP9hzrMXSqnMm550+dD6HPHcvTZvWFQFmPySrFsbJHyqbOqsNWEd4w9Aov0Mgy7TxeJQ0Quy6MttsJuuUBPN9sNgkP2QpBUZbbVSVm1ZtAZZN6bzVV0zIOYNOA2i9wA0Y0EGzYvOm9W4nVGHbpHyBWbRtxIXWHWQFyAoqndKfnTHk9uaCT5pw70+eVil0MacW+myb2KzaeJtZJuuAan/tvkbQPp1O9/wpiscXLL5jPLeWlwnUP/jgg1hfX8fXfM3XuMeEYYgv//Ivx4c//GEAwMc+9jFUVbXnMUePHsVznvMc95gne7UM1X5rQeRo70aZIsHx4heYKyXBihnUxsOoLz4EXZUox1sIhl1KgO8OAS4gN8+Br54EhEC9fgZ+ZwAVDyCT0SPeYbf1JCo7JaRk00Ky0TSyIo+jmyiufqxyvk/mbt3aPejYeCzVlWOLWJ0DvUPOHZ1pBXboGDQAFXSd2SXd4XvkeB33Gv2LWZyYyeRzk3HcIz2LR+P5lAxAmhgbpMyCGDqdQiytgnd6FEFTZNDpFHwwggoTFyz9uMoulNyjz2ixS1qhR8vUvIFja9uSi4yI1VTRRFwNFQ3A59uoN8+DJ334/Q6Jt6sSvLcENdtGneaIRgMy+Axj6KoitikyruReABjbAVXmxiIhabRBkw2IlWPU3rNZeHG/YWLMwABTNcXTRB0y5iwzlPd+HCqd0raUOYSUQBCQAex8AplOybk96tJ5zmcEuq12TnPooEv2G4cEvLogEAVQezmIoYWgdhzjUEEMDhCIK8hFHpxDLK/RdqvaWRA44AJAG2ZpkR3UXgQtfPDFgG8LsowfoGVosQBsbNudQBm1k3k1p2sknblgajUdg3eH9B3d6btJVQAE0LIpach2xlBGqM/CmMCpLKERPyWD7E+c2Kv7+oEf+AG89a1vfdTnaK3xfd/3ffjSL/1SPOc5zwEArK+vAwAOH96bBnH48GE8/PDD7jFBEGBpaemqx9jnP9mrBVT7LOddIwLAa/x7eJlC9VadMJR+QVl99gOtixy7D58HDzwEgx6Fo47XHa0OgBYqLlCfvw/e4RO0GPkReJW3rb8ncVkxtPZjcnT2Q2Kosim4Itdn/Xhd9G/G9rhJNPO350PDb64160xuwn8BuBYJsNB24QLKD8EYB7exOr1DUEHHiZiRTcHCBZG9ZaeCuDE7Na/JgAX2KnALkwCgjz8b7LCCl46hgxgyGlz/NW/G5F2AsShoob3e4/dY54oLsHxKTI55rA4o+09FvSZ/sy7Au0Pn6wQzxQiloJWiG6vByLFHakqZf5YR4Z0eFIB6vA4/iMAO30agYHoZjBMjwpO+CZ2WxPB4PlTUa0TTRUrTcUsrJMYXHhk6do3GDcYGQNXQAPlLBRG4Zb/MRCDqgqZH7QSe0Ui5AGlV03sxBhYmbnqP6Wwv0PUCY24qwa3GzoB1FfUMa8Sa7Xfv12iqpBehlAodgKwbTCiz1YCBN60+e9wB7A2z10aEbrzC5Piie6y90bVxSNY6wRrNkr/YnMChlPBP3mmmaSvIrXWIZYBnB+dDxffZ8rO37GfPnkW/33c/D8PH7o58z/d8D/76r/8af/Inf3LV79gVVg5a66t+dmU9nsc8WaoFVPssJk34qY3zMFEWACCHx/ewSbxMSRxbpNAA+GCEaLQLHniQRQExm7gvUNQlmBdQ0nuekolfZ9gsPi1L9eQvI6i1FhosTvbEBfH5NrTwoOKDGafWfgQXNcMXWdMGwDsGQ9ZARW0XFcSObdF+ZBbDopmIA6B8YhsgS3AZQU02wZI+MRP9Q+Z9GvZApGMTGC6az0ido750lnRdJhBZ+wmkMD5J18NMmXKgrq6ojahqiq653lJyD7MBoGGnzX6peEgMhzHJxCIzZ3VjxqdJzbbJsNS+lBGw2xJLq+TxVOTkE8YF+NIqTQX6AenL4sQBBtY/BFZl9DwvgvZ80j8VGQErkxcJgLzsshRssErnU9VOuO6OWxA5Vk8b3Z/1wbOCbvK5IobRxrNQOkTZAHOb7mAtNWRJwdhBBA3zO85pYCGInBjcGW+qGlyWUH6nWeW1JjC1wIYKWSBmHN72OYpNUjHEbBPzlTsRVgumrHZC2jJc5ty64OaKpvhUSm1mHieOcbSO7o7ptdcA40DcB++X7ufWJkPujKFmE2IcD1BYfbN8qPr9/h5A9Vj1mte8Bv/jf/wP/PEf/zGOHz/ufr62tgaAWKgjR464n29sbDjWam1tDWVZYnt7ew9LtbGxgRe/+MU3vC8HWe2qvM+yI9asLsCL3UbfYSMyzJcML1OwbAe49OBCtpUPf+Uw/COn4PUHkNsbRPEnPfDBCHJnTC81GEHnc/Ayo9ep8htaXNo62NJeBJGOAc4heytQS8ehw4Raa1GPvI4UZfi5CdFbZJ2gGSfvKaWgLp8DZnRtuTYk0CyO1kPJ75CtQ9gjnUzUpxsHE15bL5+E6iyRqanwoDpLxkAxcBYAOp8Te2JMPO2NQD045qZV9QIwA+cIbr8L/PApulHxjR9SPLhxNk+WgOdDBV1iaoDmWBsR9SMed63Ai5lrFQINK22jSpx+CaD9iXpNkLJ1FjesmBXT6zIHjzp7rCpYEJEAP2isJVicUGsu6VO4cUxaKm9pBagr1JfOANnUbKphyoUAL1LIyxfoReJ+A4IA6LhPHlKWjaoKsLAD7+hpZxSqplvQOxvAjHRwvMyAbAqdpw1rme+C7W5RKLa1qMhnTudmQ46tzorJEjyfkbjbaLyYJoG6WF4DGx4GG65CdYYmS9InOwfD+pFGNdjbOrPfsWVKgwdhQl5pIgArdlFJTdtgbmoWA5HdTantMKjaAL6M7A6EAItI6C+WVoj5q6vGj8qwcHReQ/DeMqUOeAExfAtTfSyIPqen/LTW+J7v+R78+q//Ov7gD/4Ap0+f3vP706dPY21tDb/7u7/rflaWJf7oj/7IgaXnP//58H1/z2MuXryIT3ziE08ZQNUyVPssLQJI7kPIytztSbOomC8rM9Vn/62NoaL14xFLKzThYjx31PYGZXTtTsDCCN7h24C6QL15HvWlh8nDZeU2aN62+57sxYtdWDdnHfWAunR6Ki0C6GTZtCb0Ht+qW8E+Mivc5bxZsGdjinRZeIw2gnK7vTZyxma9OVd4oGFotGqGMQwLwIKIIljCCLoiwTWsXsu4Ui/6ODFZQ/sdeEdupwUw6FB7T1aGqagaluHxlj2WIoCWpWON2KJTuGXNFsf1rzxu5jOsddcBKK4K+oxrvXebGHOffc09wDBAbl+NsadjOlC5yUie9JyIG6DpPBZExissI+ClJMTSCsA56ktnjf1FDtYZkohdlqR1251ApVMIz3cu6QCgfdNa1SkdizID0m2gMwCiHkQQk+HoDt0IiKVVagdXhQMa3GTuLUapMAOcmCwJdMU949EUAsrkMe5uGcZMNe7sBuBQSzkwYnHPtQPdObL2CYzTdbwwgWevT/ITM+8rS2g/RreaNDmFNnqmtlFJBtTVuQlUXijOiVnqDpswcTRif3qM12yHBY3hwhrAON0494YE5PPJY12xN60Oesrv1a9+NX75l38Zv/Vbv4Ver+c0T4PBAHEcgzGG173udbjnnnvw9Kc/HU9/+tNxzz33oNPp4Fu/9VvdY7/jO74D//pf/2uMRiMsLy/j9a9/PZ773Oe6qb8ne7WAap/FVA0O7b4AdDxoPqDWmK5IibnSikDTbAIWRPCP30FRBTuXyfhwMKLH9w9B+AHK+/6avjCP3AkRdukOMZ02d9ltPTnLMB8qHoD5EWmLtMn3m22BmSw0MdsggbWqIXYp+8/FYdxkXypa3GMCQ4c7xLhUGWBEwyqIocMeWDGjBciN/0dOW6L9eC9LxLgZgzeLis1r27pIwE0IIFmi7ENZAmUGUVekLTLP3dPCDgLU/lFid8xzNPfA0zF4sQs5OHJdYnKmagK1NqNNKbB6blpGzQ2PjR651ipidV5uyECCGGJr/mlBpJ16ZKL5t/ChEYAtTnsKEpXDgpK6Au9ExqOLAK/O58SQGM8p58sF0CI/GJHOakY3Xbw3hGaMzkU2BQs5WG8ZancCOZvARtcwPwBXxJLUm+chjidOJ4W6gO72oE1UipuWM3+rkBzu6wsPoJ5NXItO7U4gwgZsg3tkzloVxkZDGhBTUWyOkmCLbV6tyFJB1aQrtMDdskb2+vCiJpZm0ZNqccquTMHzHdSDY/S7IoXYWYcOE4rrMrYWNrCeybIZpCjnzXUTxsCUTDldmDf3gNAHE2bKzZ4Pv+OuIxeQzYWzbeCrJ+ln8gom8xbXQQOqn/mZnwEAvPSlL93z81/4hV/At3/7twMA/s2/+TfIsgzf/d3fje3tbbzwhS/EBz/4QfR6zWf6J37iJ+B5Hv7RP/pHyLIMX/mVX4n3vOc9EOJ6t+iJqRZQ7bMcm8AFALGndcBkRXdK9ou3SFFvnAcTlNPF44SCRZeP0N28iXNwuVmdnnsd2VuBUBLI0kZY3NaTtxh37Aqv5iRA9zt0lzu5BIyOEehWNXg+o1Fxm4emFWTv8C2xx1Bh17WhWN1ppqT8GDzfAaQELzM3SacZJxf3cu7iaK4slwFX7IJvn2vy0HpGO8UYxY8sLpK25eY+P3stGVg1J9CZjp3f0PXYGThm2C6exr2al6QVsi0eAGAigPKCRw4x5x5Up0PbpBRNKlpgyTgtpFrTop7t0jG2+8hYI9DWDRMlBiPUG+cITPgBaWw83xlcsqgDFsYQSys0fp/PyQCYk+2C9mOIpVXI7Q0DrHIgWYLur7iwX2/lGIG6bEbj/pyT+WZvSP5QjEObSTvLqvF8hiqdQSytUI5okLhzpoMYvL9MGrc4IRYqn1OcjGU2GWn0NAAW9xtg6dP0Iw8i0n7Z6wYAi6gVy6ocyosWrglB05GdpaYlDBA4WZzWY9xdG/KPf5Wm8UZrgB+QvOLIHY2+yzzeOcyb71Kr2SKRvKLBgSyFylOaHDTvpcKE4n4Ad/0uMmi6KsGTHpR9fDyg4Y663APaPtdKP44cUsYY3vrWtz7qlGAURXj3u9+Nd7/73Tdx6w6uWkC13zIfKPcFa8ZvmVZAlUNk2/S7lHxJbKyGmm6RKV+eQhx9Gok9wy5YkIBVBertDdJLDFYh/ZgEzEHsvozaenKW+3Jd+AJXfgdiug7VPUSaGWPEqA6dMplf5AZuW8asmhsQcXMBlTbtLlYXJIznghaSiqZSNePgMmtsHYKYfq4VMVd1QZOrj6BlUmEXPEyAKwTWAKDDHlCmbuG7MmZncbiDyakDljyfQQsfKm6m1B57R42fUZGaidsMKuo5MMWyaQMOF8fmFwHe4su5CT0Opg2jYxgmx0qYVh8DXDvTTk0CdsLSOH57IbzDJ8xU78XmjWxocBhRq0/4gB+CewFph6QkFss9njyddJmDDw7ReZMVsY2MA2GXAJhW0NV5Ot9LCTEo6Qx8sEq+W2YijpUkYOdxAt5bgo77xscroNihqgDrDkl/xT1oLih6xsTD7FlSLVDRNNEK7tENpBcY+wTfXQNWZ+W8pGwL2Rz7PWB78fU5nHB9Uip0fQ41vozs059F/9nPhH/kFHRdQRQp5AKTBa2Itawr939dzOn4hzQ4whMJT61RC8+BYzMZaCZiF8tqvEibFjoRPj3exNwEB6ehasORn5hqAdV+Sy8EaVqNh/CBKoM1LmQ7l1BfXt87wRclJrohALIpqvUz4L0h+KHjJHCMTASHVoAfgU/XyY3a869ajNp68pRtUel4YDLCKPerHq9DKFp0vMMk5gYAMdsgr54gBt/dpIUnnzU6pZu9fX5M7EGVgWW7NNwgfCiAQroZJ+Bv2jqqM3SakEcVbwOOxWB+0Oil7PsKj3x+zOKowfcsus7awDhOY2fDGT+qzhK1bB5n2XF9Xu4C6YQmas2EHYRPI+6mXQYvIPFxXYJ51VUgllkPI4A+635E2yhLak1aLZZtiXqBmfKLoTpJwwAaPY21AoBOwA3g4XFCAmbLpgVRkwvIGF0TQdxorIxOjXeHNGSQkw2C3BmTIHq4SsMPRi9kndWt3koXObXsqsJlPFqLDJXOXBafBVNgjPzHbLi3DcY2cUCsLqmVV2akEVs6TC1vz9gU2Fbw6CQx9uY9eblLAxp+h0CeFxoNoX81iFpg5Z3OcMGWIxIMHhRKAPONCZT8W3ifvQ9eFCL5QgArT6PX0MqBbJ3vQpkpSnvcuedD+T3o3ioxbEpRO3R6mbRvMEMFAAnfNWUBLrbzWJUBs8vA6GTj0QU0LcsDKIF9tvwem3Bq6xrVAqp9lps+sXdAxswR1ulXKxLllo2AU1cVWMc4CHsmVHQ+o3Ho9QeJql8+Al5lbhJH+9QOUvGAWgptPXnLb0SwDLTYyvE6CVSjTsMIVBRTgWQJKHbB5jtAd0TtthvwSrqu4sJtJxgH/Aiq7oAxTtod29Ywd9k8n9G03SNN2mm1Z7EnxqLRPTBpJqiuXFQ4B+rahNNKAj4A0BnQxFaQkJnt9ZTVMNUV2RHUFRATM6NT8n9SRlzNABqVDxbYpoViVUa6G7OtZHxaNg8QC6JvJel3jDcL7AIzssf/yrBhYnkN2gAbVMVeZmfRUV41FgF0rI0VRxgBeUrZfPmcvles0L8mI9N6e6PRAhkLBgBQsy0y1ow9x6bxwSEKADbmq4tMnPbjhsWz2XyGiWN1DpZNCYCbqWdWm1aX1pSrFyRgCz5Qyu8QwLWWEsCCWeaCF5+ZyNuTLsA4tf4MqxVxDV6mCI4cR/mRT6CcpuCCw0tiJM/7O3SsVA2tuBsS0hkdN+YHNOwjKGORaUUtO8bBoBpz0msMLWgjkrf7CVnRDUlNQnx4kWHoxE3XRT5a8X0yVPwp4vv0ZKsWUO23zJe3u2tinKhopcDWPwtV5uSeuzOGd/QUoBTqIiPjuPmU7kbrCmLlGLzVE3RXqBWQTaH6K9QqAVAvnQSPdqD96EA/mG1df7mxbrMI1BcfokktJcH9AJisu5aOTpYgkxF40CF/sp0N8N4y1C02bdUiIPbMtCYoEiZ0+Wnw/Kbl44dQUY+m7q7VdluYviNjRLIpcNls2RQ83SaH7SIlwGjzzZSC2L1MPkhcAH7ozDtVsnzNReyxiudTOvZaUYvc6IjABVicQG5vENNrolHc+Pu1dCB2wi+IF6wQDPOzsP+sSME4CZ7d6L5W1MoVPum1uAftgUBqlTcGl6ZlBhNcrLIULFxoP3pXMDaiAVos6kIY1lsHEXjSh7J2CMUuAa0shVg5ZnL1KqjdCXXLkr5hkGoSfYddI+6eU5jzIgukJAALEg1g5T4guDsOzCtIX2QWY1bs0o0kF8QCyqARuwMujNo699t/OyBlQAqr5tCdJbAiM2700V6JharBjCWC+MKvxOjez2D8iQdx+P/zbMi8hLd2CjkTmIsuumpCb2PCurWJY2JJH7q7DFZXzTVnQW5dUmi33XYTpGyHGawDPdPkjq82z9N1XROzyavCMGMtSPlcrxZQ7bPsXdpVose6gJrPnMeMf+qZ5GOSpeT1oiRl96Uz+KeeSXeqQQxICXX5HOTmefinANZT0FUG2TtMPkBPwfiCz7fS3AOvMiOW7UKcuoscrvMUcnuD2CoTdM1AbT/ZWwXzQghVQ3YOwOjTTlQZhsUtFlIaI0jT2hCkF1FB8sjXnl107U1FkZOfWr8RnGslybco7IAXu7RgRwMXy+LcwAGwak6mnzcApgASGPNsh7yzts+RwHt4mABIVZDYOkuJGTT+VDpsgn31AkAEQL5SphXIdy8bnVfVBB+bfef5LgFQpcDzaTOmX5lAXcNsaWFanKqmNr71J2LG0oILctW3+6NC+m6wBpMLoEP7IQ06hAn9nU3BlaQMQS8E8wJ4R0+TwSbj4LIkIOlRW1b7zVSdA9fRQrtW60bIb+0H7O+spYUBpS4SyPp1sYW2blWAeZG7zvTC79x5szYcOXntqZiielwXwI/B5hNatYRHDNXCtaeCDlido3/3C9B/wYvhHb4N9SWKNfGyLfjRElCbCB7uQQ6OgiXLTu+kvRA6QPN9XucEZrsj5xjvrBKsz6C5ZpxNgp3+y1KIbEotVoDasuXBSTX2PeXXYr8bqhZQ3ayyGg1LkXNBHlJWnMgFsU55Cj2fgnX6EIMRZF1Cbm+S9sF80cntTbCIDPyk3yGdCxePKJpt68lVTFZAlUMHHSCIoQCa4lIS7MgdpNVIzKIl7V1sRsyGYVbULT7PzExf2XgcANS6kCW1pqyuxIiNdTx49GtPVgQiAjKidKyVqhsTRxOcS5YDAQUeAwstMh92xH4/OkHNuANvcmcMz/PJa6k3Mgs5eb5Z/Y42IdB7JvfsawVJ44dkjhk3LT5WZgvtNYq2AavdxBizgMO2Q63eyrwWK7MGnNj95R6Yb17TD11EjQ6tmF/SOTIGnlA2/oTBBSd7Pljch4ZPuiugkQ5ozwFJZ1HgtmdOE4TM+I5ZwGD203p6OTPLK9q/i8dPe0bLJnzH0l0VFG+Pqd1/eyzLpoWKbArNBRj3iBU01xAdq+a1WF2AKwlepOBHb4cOYtTxEvhsy7GLgSqx6BFIr7HAmNn3t8DaMx5ivHagaY8nm3tz7oTurNilc1BSNqFKp7QfXgBZ7A1Ev5W1b1F62/K7oWoB1X5rYcpPG1ElOMiY0Gg/bBxNvb1hoiQqoMzBkp6LN9B1ifrSGVpse0Maq14+2bQZFqZG2nrylTV8FLubsB46bL5NCy0AZowCvdUaOP4sGqHmHHL9Qei6grdCvlU66lH7yGQA3vRanHTCwgSbrKC5B9lbJaE8ABUYrd5j5dgZlkJFffB8StetF5ljQtc+k2Y6zgjclRFdi2ybQGXYccyPuzm50V30QrCwAzXdAvN8VBcfgn/sDrDYeGBFPRJHhz0XpcPqgr4NGW9AHvbqZjTjZgyeADO8wGm/YPaNAeDldjM5CANKTYuTpn/N62UzYqTsvlpQpxUQkjmltUmADToWgkCRVmDVXjaNaQVm/amyKVT3UMNqAe5vbdiqRQABWRJ4yVLwpAcd90mIXudOQ8T8kOQI1gLCgQ5zgBZuJmk//D26qz1giltfsMJ9RqymipUpVGdIuiwTpKzDxGjwDJu3IEh3x7nOwWcbgPAhkxG0F0Gd+jsUi5TvkA6ws+Rato6JMpYHTFewfmON15ixjLB2H7J04vzF/SJrBDJp5YMRWBij3jhHLvfxkAYBvFaq8ble7Qq9z2J1Ac26e780tAJ8TtN8NqagmEOnU6cp4L0heJRA7YzB+8vgSR9yexM6TymPa3DYfFlJMgXlog1DfjKXksb4sQQvUtRLxyFmmxQLUpdQBRk1uvBYs3AwLiBW1wh8q5rAQGG0TYyBPQ5/l+spO1GnDXMAWQJBQgwHE+T31FmihdSOtj8O3zPNPTDG3TSe5l7DvijVZKWZwQptmQ5FuhMdmlw6JYk9Cfax+PgRHePaDIPUpUsmsAaSrCqgvQi8LvaAEi0CWqMfiY1jnBiOBZbDBp4zTW7mqsjoXAMEFC3DJWuaAixSc4wEic0NCGFmqEV7oQEcNb2ODZQ2YM+KylHXzQ2dH1LYtfDBE+lE7MReKTOlmTfO9wtCcNJ61c4JXfs+WS7YNmA6NbmBChC0H1AS8O1U3l6neKtfcz+/xrG08UaQJQ0FwEhPWZdsIERqpipjAqJF6tqy4KKJjhHGj0obiw2jW7LT1trsA5N1Y9lRZqQVVMpE2dC1SEwco5uLfBc87EBFi/5oiqYDBe2/9kMy78xn0Nvrxk6DHq/SKe1Tbwl89SSYVhCTrUe4YG9+tS2/J6ZaQLXPYrLaO+kHQDEBCY4g6NAd+uwSVDoFS/rU5tidAHUFPjgEUZdkjjdYBU96qC885EzryEwxIkNBAGgB1ZO2xOyS08qoMKHWQtABs20YGxmSTcHChHyR5hNqYRjwwOrS2SmosEtmiTe59afNwg+AvM2ssNYLwdMtJ0BndQh4AdQjRLJcVYs3E1dss0pGzlcKIAYJjPLXnGgbgIoGJMY2/77hfTQARNcVWT9wQTEuapusGKqC2ETD+jLjwqwYA3hJLOEVrNyeCTOtnfDaZfOZdhBXNQGQ3jI046SH4wKsmFEunayIcZleptBoo7Nxfkd1QUHDPCR38gWmzk0Xmvenc6ncRCNsO4wvaKAsWGRk0OpYKZNbx0rTajZMeT2fXXOf6fhJZ4aKdBssWdoryHbnXsEFGAOOAWperLlGtN+BAojdMUyPlhLq8gVoJeEdvo3aaEqBcdG0npUEw4KZqCCdH9bupPeQNWncrP7P7Durc8PISWA+IdDUWYK1qGDFrrPD0MbtnV7PTDrmu+7zzJM+9PAIWJlC7k6cTlKbrELmB5RbuP4gxNrppttwANW2/J6YagHVfsssDCoaOG0Dh6Z5GOP0i7pyTshyexN6PkW9fgZitAZ+6Di5+UoKrmU+ZX1J7kGkY6Ku/Y6jxdt6khbjpEcSgWOVVEhj4jybgi0fAbSGuvQQuMnPY2UKFidQl8+T6WHcb8S9xnn7VuT6WUBjFzAUoDDbOocMEyfapTbVdQrDH2F73Yj94s8Yp2mrIiUGxo8gb8KiY7U+PIiMnUDq3LuRzaCLHGo+IzdtGBbJxOE4c0ngmm0l+j9rQJUFB35Ena/OEpgfQ5kF3OUHGo2czZHjCbmIa6DxQfLII4t5IY3de75rAzK9IEQ3vlHOHgKN1s3+HkAjnjbX0aIujVU5vZ6sXNak9mMCLUUOHhfN+ykJVqPxYmIcSkrnzUXfgUZ/JYJGMwpzw1nNSRfod4gtMqaxblsZB+YTsN4ISgTg/UPQ5TljWpqBcU7HBmhc542fFaQyANScMxf5VRKoKlJw2561jCjj5PtW59RutTfEwjOxUAysQ5FQ5AJfk5WE8CHTqWNs1WwCnixRm6+/TH5idUUAXinouQmT9gOgSK8yA23rc6/aM7zfUjUgek1Lw/zt2w+PdctePgE+uQC+ehI86SH7qz9F9dCn4B27A3z1NmhuXHaLzH0JsroAe/D/0pfsqec9IbvX1uMrzT2U934cfDACv+0ualEInyak4j4xTrKErkvIc/eCPe0FkIOj4NkO5Ln7IR/YQPQFX2pyxVKTZ3drpoLIVDGl9mKlGlPHoIlM0VY3crPqGkBLm2xBJ4CWJYCbcBfPOJQfwxuukJ6nzA1Q8SFnE8hLZwhUZanRKwIo5kDQNf5xmfEtks1N0QJ4oXYfsTCLU4HMj0weXeiCkbUXElNiwavWNDlm2bqCxOy6LqFmEzL7DWoCCUqYKcsrWnT2PT0O1Gi2AWgAnv2/mbjj9mavzglA5btAZ0jsWZUZn6SQWPLL61B5Cm/tFOncBiMyQ62Mn1oQuRYq0DBQpEMjI2Kry+PzbejpZcAPICKTGznbAkbH6Hn2estSGtpYDqDDBHzlJPT4POT4Inh3CDZYhfYj076r6FgysqugCUhiAVFlUH5MAC4eAPVCkLI5hmK+7QLnwQXYztjtSzWbUCC02T81XofcGTtxvzKxPLy3BF1kBJR7h8ASA75ECb0zJquF4SqlIqwcIwf28uDcMjlj+/KSan2obqxaQLXP0kGHtCZ10Yg0ATeCDC8icSgARD3SAUwvgwcReG+Jpnh2J+CdPrByAt6hY5B+B7yaQ002SaQeJwczSt/WDZfqHkLwtOehfOCT8IoUSgRQ8QCSc6f34DnZZKidMcK105CDNSADWJzA790JLQKyUOgsNRlqt6i0FxKgwRJ4mdJUnx/tEVMfxFSpc0C3YvmbVV7gjC950ndhvlAKkgsUWzuIe0Nq06RTiGXDVlUFwErHhGi2wBAp4Frmn3b7Abj2k7WkAEDj/bYYM4/xKaA6pvaSKnNo0LCKLnMCLf1DLtfT6q/2tB4BEqkz5jRW9GAz8r+z4ewodJAAnLRjqAtiv2py+FYz8qXSnSFNFwuybdDZDOgdIvd7WRPgCVMSyXPRGI/CgLpiTkDQRKwQ+5lSjqCSYH4AMVoDWz4C5XfA0zGxPdkUSknSlBqTUB0mYKsnwbcIUCnvCrZUKdKW1gW054PnO1DrD5L/0+pJGh7IZ8YbygR81yV4vkM3C1kKOV6Hd+QUvdxsAl3m1KLLU3iHT1KsDkA6vJiSLRbTLFiioGzLM6M2X3XhQajcmNT6PrX54z7ld06bduqtLiYYGL9xUMRaQHVD1QKqfZa9M9QigA4Scje3PX6rXRAeiSKjHn1ZmBRzFnXAkz6qc/dDZym8MILur+wJ7QQAFiW3pPXT1s0rzT2o3iqYdy/k1jpYRNlz2u8AogbLdoD5xHg8RU37IUzIXqMuaLIuHhCYPoDttaWChIKZrV7nifA6u8ZI/X7K6qh41CUX7IUFWYzWEFalYVpi8N4yZGfJtN1rqN5hepHaxODYGBgujDUKnFboylaa2x2toK2NCm8sByBAjIwXgBXmwZ5PGqK6JCADkFcdsMdz6ipwa4+Z3Z5FbRLjQFUBKgeSfpM/Z1zQAUCXGXSRQeXUemaSWoS800OdpeSlFNMkJOVAEoNow5dJV9SEPoOLJkcQoBvMIjNDAbE53h0CITBt4GxKmrMgomEIExYOJaG6h8AGq1B+SGaeC/l/0Bpq5zL9uzOkH+WkNWWqJtG50Z4qTYHWrC6A2Ri6Ks1xFWBcgCV9MC4gZxNwY5Iqd8YEnnpDiLo009dLdB15fjNYEBrd7GxCvoK7E2Kq/IA+32UOpjWxpJU94W19rlYLqPZZdlzeWiYoP26E6naCCKAv97oANs9C7YxJPxUnQLIE//gdqNfPoDp3P8TS1Ez8bQCg3DcoCV7sQrYO6U/q0l5onLg34a+dbnQeVU538FnqtCV2kstO1MnlkxCTC1CdJfDZpYO1yDDtPZ5uQeRTmsILu6SpeSzLhCdpOR0Y98DihDQtQQw+OARdl+C9JTK8TIZAVYBPLoB5fhMLBAuKasDTgCZRsovUsUJrLgjHWJ3SogbLTuMtTtwBrv2n474LJFZzslDgnT6Y74PFvatsBphc8AZbBFBXAjpVg5cZZJkbR/iQ9EeMUzQM98gWoNiCNQpV6RTCWFdYJoYFxlLCWAhQG5ODlxmxXEKZSbwQCGICbCLYA/xYGIMPRhCjoxRybdgrnu2YKBgJHD61MJHIaWAjJzbHmoUyVUOkYyjzPkyWqDZJeyjiBIh6jShcBHQuqgU/sJLAla5K1JfOUkuuOySGMEyovTubQCytkA9gSAkWUBLi2J20rfkutEhIyD/ZhNwZwz95J6UI7IwhN8+DxQlEd0hsV5bCH61Bnr8XKp1BznZv0tX92MUFA98HQ9W2/G6sWtrjZpQdXTZ3q0yWRoPS3OnzIiX35jKHGB0BH4woR6ouKJIjTujuJ59DVyWFI2epG79lxeyWaWraujmloj7EsTvhHz1FImgRNOPw0w3U43XwOEHwtOcR6yACaOFDxktkMxDEJAQPklveartWaZ9YKusyfqtE8QdVKiLdC7gAMxmCKohJT2VZHxOYq7N0zzG/2gqAjDPhxOBGD7MYirvQ9muiUTTJAkITgeOFzkgUinQ+zPPJrygwTuRSNmaddhsX/7bvtQimjBklVE3siarp9Ty/8bliND2sOkuk6esfIjF1fxnMC6B2J2AFLfq80wMLY5chyqqicQQvMwIbsnLbQQx97FrGrJqTCSgn93cVxFBhl66rck5sbV1A91cM+xSAV3Oj56vdceXlrrMjUTuXwfOZ+T+dQ12VUDtj6O112kVvIVIp6hnz04WbXmtnESXw1k4CvVFzswM4H0AoRRmr6cyFgqt0SnozWRFwqyvDQCmwMIIsCne92WtDFzl2/vwjFA20D2+16y7Bwfbxx05otnV99dS79XyylWkFsCoj7ykl9/T67Wgy2z5PIti100T3bzyM6sy9pAW44254ozUo09dX0y14h084/YQOuzRG/hRe3D4fSnoRPK0gjz6LfqAVwOjasAu4WFohB++gS+aQjNMXP+Ooh8cBwFknHHSpeAmqSF2MUpNd9tR06Nd+B7J7iEbAJQFcy3wwM1Vp3cx1mUNnM+hk5MAkqzJiXIzzufNMuoZgf4/nkhnBp18Yl3RZNjEvRmekzL/l4Ch4uQtudDiLC7LVYjq3csWbCTrUe4Af2QJUxBjVHGy4Sj837T7LcPH5Nom5/RAaIVkD1BXU5XPQfgDeW3Yh1vYmUU826Jh1l+nxixODZUav5TVeX2y6SdqhMqcp5zKjwGGtXGAz7w6BzhBiuu78uFjcJ/CZTaEe/Cva3igBO3TcTERWgCdperOuIJaWwAcjqNk2+MpJsq3Id5v3nGyCLR+B7pCOCp0hxNIKxNIqscH5DGq6RZOM1qvMDC/wOIEGeVLJ7Q0oI15X6YyAlNdkQXorx+CtnYLanRAY296A2p1AzacYfeMraDuy+274Wr7eYpyB7cNMiqFlqG6kWkB1M8rcedjpIBd2au/evBBIlsBMEK7Ito0v0SpR+VVOo7fdIZgfoL7wIOrxOrzDt5GXTTJqxLttPWmLQ0NHPXiXH4TsrznrAVakKO/7a6h0hppzsDiBt1LRHe7SMQDUArSGl04Q/QS02urh8asE4pqL6zcYfTKAMMbIzsBkYFqmgQcRZasVqXNvZ54P1hm42BFW5cTyMA5ttVSyMqHONjxXNKBnQUtF7Thjq+Daf9b5nP7WXkQWDab9pvwOuFJgMJ5LZvLOst/QirR5RvMDJUmTZNgwC4AAA3CqggCNMKaiVW7YMgJDenqZdE2L8Tb5HGxplcARb0Tu2o9dLqO1uqDXLJr8PUkRLZqTCadKp2BFDp70wOIeTfbNtsD6h1A+9Gk6JFFCE4dKAcnQRd7wfEaMolKUtTifgU8uUagz52AJJUnofA4WdYAwgfBDaMtGAXRujdhfcEH6rrBrznVAgCgsabsAiOU1qMkmdQgMO6YlgSw1m0BX9B0vN8+DRQnE0gqBRXNunYZqtg0xOgKdp9CV0cQFMXUggisia9r6nKsWUO2z3BePmZICQBM2xlCOlylFjCSjxteFe2BJH8LziVYXlFMFM/4rllZJ98E9Y/zYeSJ3sa3rKFbnqC+dhVAKavkEAaXOEvxTzyJmaovafmo2IVAddoid6q81C/W1dDEHuhN7BeLXC6asPQBZDzxBGix7M8M4OYtzDmZAlNOxpVMKbS5zWqDtfi9O0qm6icOxtZDLBy6gNb/auoB+2WyOmaoE4+DFrHGgV6WxQKBYF1YXYKhM/mGTgajSGWl7OIfwfDLyNBlxSOIG2NicvSIDtyyT8JyhqI2N0SYmRWcp1HxK2i+AfJO4B7DKeWhpP2oibBx7SefUucwbZ3dwDyhSap11h3T9bzwMtTMGS/rwukPoPKWbx+UjBPCC2LFaLKHhALm1Di0l/MMnKBdvh8TkLIwJsBmLCQBAug2dLDXHXkn3WHf8BU0PQvjEtFnvLwMqNfegLEBSktqJc5NyUFcEXoOIwG6cgPfo/aw+jcUJ9GxiNHUG7BpROtKJsek4uCk/Lhj4Phgq3jJUN1QtoLoJZZPorUCd/kP5YHx307BLyhm7qbAHzj3wdGxM+mq6AzLJ8cxMyrA6hzKGe209NUoFXfA77obefNiwFAZEDw5DdpbAO0tg2Q70cA1c1lB+BDk42sSTGDbiltRBsEbWk6icNw7/t9gC4spiVQZWzo2GxocKuxDpmIBEdxncN8MD44vQWQoxOgLWGTQ2AIxTQLSMyFlblmQxEXZNCLK8YhLyipgVG18CNO07rTCtOT51OcUXHO6iI+nYUJahhOwecqaufPcydFWiOvtZeCvHwHtDVGfvRTW+DH/lMDw/IFDghfS+UhIL4iJtPGqnATTQIiuo2VYTyM0F+HCFtECzCTFFo2PNvmkFzHfA4x4BwaDjTDltTiUAFxdkwSFTpKnS/VUSl8uSolrKHCqfg5U5dG9IEgnrY7X+AL2W56O++BC8wychdyfEcBljVr56G7AzpmMZJqSnms+InQIgZxMILqAHhxtx/NZF6JXbIADDTKnGsT3uE+BnHDwwOjE7HLAzBgsiiKVV1JvnqXNgjpvcGYN3ehBrp2k6cekYid21ct5cojekbUv68AYj1JfOEms1GIHHvZt3kT9GMZsBeaPPv8mRV58v1QKqW1Dai0g7BUOLlxmYqqGE58SjWvhNTtV0sxmNrknYKMfr8FaOuZT5tp4apYMYqAX4YBUyHpCYtXuIzB21IqG0LMlZ37IJC2CKFTMS6Xrho73NDZULtL1Z4GaPe/hCzIgR4msemHa2JLuAgyitCMzJyrRuqCVHMS7ESqgwAWccPEpQpzMw33dGpkwrYi8WY38swOKCbDAW2vkwRpOLAyjQmvRW9rlmOGHgKZwYhKgUKLDXDK8wdvVxRF1BFxkNrkQd1JMtyLyEX5eoN87DWz0GJnwwAMoPG1bNMnPWiZxxoCoI1CgF3htCewm5tmtF+XnpjPysBOX1MVmRGFtKAmY2CstafVjPK2c0akB0lUEXqQMpmI2h4z5ZQHABtTNGvXGe2J8sRf3gJ1w8EDMCb+sa71hE4+nkrRxDPV6n79F4QEJ6PyAdXJmTqLxvWLoqI3DMONTwKDGlxukcABmEmsxNXcyBMoNKp5BjErZ7h0+CD1fAyxy806NInvG6Y7WQbkPujOF5PrUrhQctAnirJ5rPgWGhedSBriun+Wrrc7taQHUTSwufvky5gIYRf2oFduEzwMoJsLqEmK6TcPHQCfJG2Vl3BnN6NkY9JqqbxwlUPNhXpllbB1xaEZiuSzBVw9s5b0bVlwhAmQVImgV2cRrMsptitgnZP3zzWUkLAq5w9368xcsUrJzT3b7wwYoZWF3SBNsi+DOaIhX1KRfNMK0HxbLyfAe8ygjo1Dlpe2RF/97dAgtiYn1L47+0eBdvhOe8nFOby2h6dBCThYRtm9lFsy5M/Em5Nyy5zumzX1c0xcfM8IHwcELX0LUHKPKmg9HM8TJ114LcGYN5Aby1k6gvPIRqPkWd5mCCQ6YmOmc6BvN88KVViKNPI68rP6QuYTZt2mNh4lpw1g4AXgTGSKdlBdbYukgtsmQIzUMCXlVpollCgCkXYqzFgvnr5llyFeeCQIlhkrxDa5CzCTBeB+8OIdZOk4gb5I+q85SAHOck/vbgXO15p0fWDVGC+uKDENkUanAYnvChpltgIgCGxiuMczJInm2D1+SgrpUi/yozKdn4UoGYtsK2fnkTYhybG1clqQ1cFeAnnmnCoSdQRkQvBiOz3eYOIRkSyLbauK2L9LveCHpnTGBSSdSb58GT7s2+3B+x2pbfE1MtoLpZtairWBD16pKCaElsuQNdzKGmWxB9455el/AOn6DJrg7gRV3yOxkegbQGg209JappiZjWzWwDcvk20s3kO+DzbQesNKP8N6bJ+FDMyNWahMO3gJW0QEBLAhjCvz5LhCqH2D4LlqVgw8NANkV15l4wz4d3xxeQRtB4MGnTitKdpas9k25xMdm0TPl8m35WV4AQpvXCwSqzsKczIx6uwHWThQclnfUJ7OSaDXf2Ije9Ca3cmL9eaAO6fLrdMYRho2Fy7ppIGDPKbzRJLk+PcfBDx4F02+gpVyDH6xBRAK/fJ81lkRHYAWih7/QaHZgfk9fS+fvBByN4R25HeeZe2PxAFnaM9QOxSipP6e/xlIwsw4TCoZMlYl4WWnzOhsK2+XY2IOdTcM5J02UAEQDKAwwi1MZPj3O+IPwm01AA4L0lckLfnYBx7sAKjxIw34d3+CTZyOQzAqcmgWBPzqLfAQ8TOsfhkjumYucCbW73EDmZ+zHgE4vMuIBOt50ZqKwriJVjULMJ5PYm1GwC7zS5o8vxRWilIHoUdC1WDkNtX6Jt7QybiKl0QoAwJiNmHiUUzm3blQdYTLRTfk9EtYDqZpRrARivGnCgysELSiZnYbRn8RKjNfry2boINZ8Srd49ZBipHrzJBSgR3JK2T1u3pniZNm0f7hGgiPs0UMAFeeNMN+HNJ1CdIbVqhAeez9yUFi9SmvS7lSJuO8Z/vWXiRupLZ+EpBZWnFKsBAhtMVhRQa8Nx7dstCLUPQqBOLTRjcSAbQbnWHqAUTc+unnDMhAUmMNo15+9kNEGuDABlvHZTfHYaE4ALJ7YieJWMIGrjl2RsF1hFoGxPOw4kC7A/c+/vBQSCBma6l29CprsIBiOg0zMWAwkxQ9MtYoYAiNFRat/VFUW5bF8iDyQzMWe3WRkncMYF+GBEjJYfGNf23LX19mjDADquFiSbyTfmB5DTLWKWlIQ2x9k/fgdtX5aCRR2oySbqzfMEZOuSwoSDyInOedQxgvGKmDQlwZcO0w1mVUAnHmmkNOXxaeFDewHp2+K9tjJMlsQKRYmxYug2hsv2uHs+dJGZliQH8wM3AarSmWGx+uQJGKUEluz5sANF5pwpvwPW5TSGEJKPHB8cIgsHwAQn7/fqbuvJXi2gugnFVG3M7/JmfFpWYFUGmafw+stg1Rx64wxR6aZ9UG9vQG5vwD8emNcooeIBqkO3t2DqKVZi+xyk1WsUu+CTC1Cj28DqHCIdQ/aPQBc5ygc+Cf/YHWDDVbAyg+yuEMiJB1B1fstavE7szvjVmp/H8/yqIA1IXaK++CDgBQSoTn0hajuAkc8gB0ev/fy6uHV36QYIae6RZxtAztn5jPLqJAmtmeejvnjesCk0mcsT45XEONkNeD6FDosAfLZB4IN7ZAhqQpyv2TI1jA9XRcPIcQ61dRk86VG8VE6tN7FyDMwPyALBeERRmHDpWC+tJBl/mskxFkYQSpJ1gBGcy/E62T0EEU3r7Ywht4kBAkD2CnXpvK3Ygks/S/qoL52FltLlzVm3cl6kTnfGbA6h1mBl6vRA3JiG8siAIkneUGLlGNTOGCqfQ2cpgtvvQr15HvX5+8k2gAuI0Rodi06f2CozVecdPU0moDtj2h7Ph/IiwPi0WTDEsx2KnVk5ATa7DB4QoNKMUxhzmBgNGunGvGwK1T1E7Wqz/5xxsCpzAIl3h7TvYQeYGp8vzikOypgxq/m0aRGvnoYSvgHKGZnheiF0nz7XPJ9BhQmwc5lYQMBlAx5EEUO1D1H6LQ+/+tysFlDdxGJ1QWCpmLkFSKdT9yVVjted0NEa2YmlVfI0kTX49lmi35PlJ97Dp63HXRassCo3Joypa/+yMgPSCRAvgQ8OgW9vEKi2T7ZggPFb0+qzb2OAlBMTX4dQnFUZtTQAeMfuIGFyXYIfOg4piPlhdW6YHemmWfeUMUC8FcWrjF7buosb+xLlx+BagSnSUmkuwDiH3N6ALnJ4ayed6NttG/dIuM89yrwzQA3WHoWxK1zMm8leJkvyezI2KNojuwFdV6SbBMhOIOkT+NkZU/xNGJCuxxqCarXAnEnoukI92YI3XCYWCHBRNc7byNg/6LqCzlLwJTL1VFkKXeSNaaWm6BzrMs78gFqVXNCAjHFb13VFBp7pNrmRz2duP1U6A3pDiDiBnM+opVqXNMkXRmBJH5wLEpFbM8wshej0TRROQFqkMncDABaoicGIgKBhh1g+c9es9kMyWnUn3gPCBNqwasTs+U6gL0ZrJJgXvjmHxtfLgm8/bjRRCz/nSQ9qPnWZhzyIiDnLU8eGsUU7Da2gizn0dItulGRpbCIKMBN1BADMGrseQLUaqiemWkB1E0qLoDH1NBMxenoeandCXxLTy4BPZnJy8zwkSGMgRmvwb3smjUuvPwi5M0Zwinr+bT11SpupKuuErYMEqEoa3y8IXPEydY9X6RRs+Ujzfz++MfPM6ynGG52fqolleQyhuGVevUufQXXmXnhPuxvor4JtnaMFB8Rcqe4haDNFRQvy1eDpVtkmWIsEBB1o7YPls8ZoU1amlafps7i9Aa0UjdkbtsACHOcKb4ToYIxeA6DWvaqhOkvmM271UxW1FVUN2IWfC2Lq+mtg+Qx89TSwfR68P4LoDcGXDtNz4wTyvr+GGIwA44clRkdJLJ+SY7oujLknKtRpDpFQaC8TghiTjEKNXaagyY9TVQ1uQZ4NZ85SyPFFqHQKb/UYVEFaJ97pkQloMQcDXOvQWz0BZFPIdLqH9bJidx4lFM0ym9Ak3GBkbhKtdjRHtXEBIjGWBUYPZsuaYPLBiCb0lIROp5AA3VSmMwS330WTd5yDr5wEqytyeOceyShUDR0mYFNi+r3Dt9F7z7YAPyCfKxFAeqGJjIG7aaGIpw60H4EbzZ+6fA5idLQx8tQKSLfBlo/QTUWUkP6qzqk9P9mEVpI0b1Z4nqcQvSEdx+0NumFeXqOJw4tnb8lnoK0nT7WA6iaVCntgooC3dYYYiqSP4m//HN7hk6QxGK/TF09viOrMvc14MOM0lVPm8I/fAZUsPyXDaD+fy4qKra+YDmKI3jL01jnInTHq9TMIn/VFQBARIxH3CYQteIwdiO+LEVu7u/zHEoob4a/qHgLvbdLiNT6DeuM8MQmydM7bqrfqnnOQ+X/O+81qtKIeWLZDIMJLiLnQyky8ReBKUojufNawPekUbBg7V3Frk6D9EKxIIS/cR95DyajR35QpTXPKCqycg9cFaSD9HlS4QjdZXgAtK7DeCJ5pqakgJkAbxPCO30GZcDZHzgugTYtOZylNq5m2oIgCMCGo3ecFBLrKHEh6UOkM3tpJVOfuQ7ZJQnxvmJvXkOC9JVTrZ6HVGF4QERDjglpQXKC+8CCJ8w1r7h05BcgK1YWHwHxqDdN31xLFZyU98KRH32E1sVeLWYRqboTlvgdv7SSBue1NyM3z8E89y6QGTCnTNErABiPUG9TW1FkKsbQKOV5H9dCnoMucAuKFgDx3LzGLh9bI1X4+AbyQdFlZCtXpgQ0Pg/eW6Zo0AwXQGrxIITtLZEvidwDBXUtT2VZhmZPYvKT30FVBTOFSD0i3ofIUXrpF77lxltqxln3yAjoWxtcLpj2r8jlEnsI7fBIqO7hwZMYY2D7CkZlqGaobqXblvoll71TrzfMkwqxqAlPbG5Q8fvwOsKhLd0B1Be/oaUpgN3d5enDYpau39dQpMdsAdklXov3YTEb5qDfOQ26eh1ZGX9IbAl5AU4DdFSg/hgIDxwGa6Jk8NdfiAK4JqkhIzWjxr3Kww6cgox68KHFiYzBOjIEXkSD9iWhT2wXNRMXoICHmQfjUgvci+lwWZtGLiR3WRUY6Jc4hN89D1BXY6JgRjZvxdhFAhSA9TtRrLC6qjHQy1ZwE1NLolDqkw2JVAW08r7Qf0r8Xjrv2O4CqIQYjVBcecsaPrm1XVY1nkWGavG4XvD+C2p1AW3bJmmSa8X/mBeje+Qwwu6DnKUkOLLukVMNkFXkzlVeXdF3OtmnqLuk7sKDmUzK3HK2BRR34SyvUIpQVeNIn9qogUTmc7mubWo1K0QTlYASVz534XRtAR4afKWDaicwLoNKZ0xzJ7U2KbIkTx3yp3Ql0bwgtpQNy1maGdFAcGj55TeUkLOcmdJxnO2BaQXqRufbJysJGh/HuELy3THE+fgg23aSJ7OUj0MM1eEEEHXYbJtrEy7CdsdNi2X1iSR96ZwzIjM6nH5M+64CKCw6+Dw0V163k5EbqCT1qdV3jzW9+M06fPo04jnH77bfjB3/wB6HUIwviPvShDxH6vuLPpz/96T2Pe9e73oVnPOMZiOMYJ06cwPd+7/ciz3P3+7e+9a1Xvcba2toN74ud9kHUc+O3THBMP/5RzD7+UaAuib5WNbw7vgD+M76IBKnpNriliC+fdR5GbT11qh4eR33qi1Adex7q1adDJiPUSyfgn3o2/NvvosxGJaGlhO6vQkWDJobkIMGU8JuJ1EcpVmXwJmdJaJ6OoTYeBitT+nc8oOlFEUCFCXQ8oEXdtBEPslhtfZH8PdNoWviN4zdAoMcPSTxt9ES8twQKsd1EeeFhlA98EshnRmzOCBj4MbTfIY2j1eAY409e7NIo/mSDwIwfElOV7TTvaxzEtR+bP53m5wBYTIw1jxOwpA9V5qjXz0BNx1DbGwSulHL6peLh+1BuUkixd/QUjeTPJvRc66fUG4IJYnuYmUTj3SG85RXnum7BmxxfJMuO0RHwOIEYjGhfqxLVxYfovWcTErzPJs4SoV5/CNWFhyC3Nwh0TceUP3rhIegiI0BXVzQxNx0DJqdUjI6gevjTgOfDO3qaAFBFrU01n6G+dAZqZ4zygU+6/fFWjhHwu3yOGLcsJdb30lnI8Trk9gZEbwjv6O3EDm+cgbxwH/juZRoK2jyP+uIDQDYFitTlEGozyelalEFM3lU7l6Gnl8HnE5QPfJJarFUBVleQ/TUC69wzE4I5Aaj5jOwXTHwPsxmPwojbhTDf8wcXem5tE/bzp63rryeUofrhH/5h/Kf/9J/w3ve+F3fddRf+4i/+Aq985SsxGAzw2te+9lGf+5nPfAb9ft/9f2Wl6c//0i/9Et7whjfg53/+5/HiF78Y9957L779278dAPATP/ET7nF33XUXfu/3fs/9X4gbn0JidQEYF1/m+eC9bQT+nZD5J7B7bhN+chFhh774WEiUfr1NX448iNwXIRnpPYKwt60nbekrxbIA6uWTYL1VeEdmboRfmbbUQbbFXJk78auYpIXWH1O1AwvcxCKBC9JHaQVM1klgPBiRANgANFYXFPcSdKDCg4nYYLW5QbIj/pYFsvtoJudYlRHjY8TPPOkTcDA/8/oDEngbWwFoTZOQUY+sEEYnna0BtCZ2Q3hgAAUn24XU2iOouoHJnEPzoAGypQIvdmkCMEzgjdYgOXlkwQuMPmoNcnuTvgfq0rXuylmKcNgDj8iKA3VFOqSkR+Lq+Qz1+hmXYSeWVlxb0+rntJl+00oRq7O06sKAmZ14NABIji+CJUZI7vlgXkCtu+1NAmKHTxLYySZQdQUedaCMszlA4E7nqXlNAnC6oslK3umhuvgQWSUkfWB3QoC3KsE9n17P9wlYce5E/OCcACZAz/UohkdNt8DCCNIAP9XpEdsURFCz7UZjteg3BjQZiMbSwvpmwdwEgQvI8QXqKBy+DSrqkejc7JOdnISJemm8zExigLsOBNBOzn3O1xO6an/kIx/B3/t7fw9f//VfDwA4deoUfuVXfgV/8Rd/8ZjPXV1dxXA4fMTX/ZIv+RJ867d+q3vdV7ziFfjzP//zPY/zPG9frJQtnu+4MVmeT4luPnIHRD5DDGC+8f+QBiKMwMIYameM6sy9NI7bG0JFCbyVY2CdART3yGKhtU14ypcKe0DYA7oN2D8og8sri8kS3vZZyP5hN6YPregL3ywckNS+4ruXUW+ehzDtJ3g+jYADUDtj13JinaGbgmMoDIu1BR71ILsrt/QatjYjAIglCbt7bRkYc21AeCGxLGZxV+mUFvUoAUZrTrdjJ/yYOT9aK+igA2m8xJzXnKxIjD+bQOdzaJ6T1ogLsLBDk51BAhcnZSJbyK+LdFcoCsCPTWtMQo7XUe7MEIyWobMU/rE7SDoQREA6A0/6SJI+WJQYOwQ6L8wPyFNqMEJ19kHwwIOX9B0bV88m7pDougJXEjKdQm1vQIzWwLggG4SkB51O6fspS6GmY4ilVXhrJwloKmLmqvP3o97aBPc9apMGEWRRQFU1sUkA9JxMQllE8SsqS+GN1lCP181U8yppxbIUiDrgQURidC6IxalLYEb2ENIAHDWfudB4NZs4Hy5d5mSPMJ/SZGVO4ddqd0LsYJkTwKwr8rOabYGtnnYGvFoBXNU0QWhBt/HFou3fhtw8T5eZkhDHnwFW7EJmpq2XLYRtW7arLl3OIGneiDGtN87c7I/BI9a+jT11y1DdSD2hLb8v/dIvxe///u/j3nvvBQD81V/9Ff7kT/4EX/d1X/eYz7377rtx5MgRfOVXfiX+8A//8KrX/djHPuYA1AMPPID/83/+jwNutj772c/i6NGjOH36NL7lW74FDzzwwHXvAy92ISYXyPCuzKAvnwMu3kd3PNyDLjJ0j62gnueoLzwIuXke1bn7IJZWEN/9ZfBveyY5pe9OIMcXqGXwKC3Ptp7i9UTZYRjRuxYBgSnjyr5oSEv+aaZ1xwXpWXYnNKIva/In8gLyUAoiYq8Yh0hpMoxsAgS1Am/1DYHxenPtM9kMeZBgvKAF02tMdZkXEIuya9pXnFOba+UYLXpoGAsABITs+bIpCAAdOy6g5jNI6/1U5GBRF9pE27j2p1LgRQqRbZOGZ+cS1GyLzC0nGwTIUgIg4RqN+deb50kAPVqj9p3vk85qadUBHy2lE7NbvRUTHNzzyRHdaI+0zcizDuZKUSvPeFMBIBbMsFYWTIEL0nhWJapz9xPDZIAM9z1ifoxpsYg79DPPh1haAesQ8OPJAlPp+fBGa2RVMb6I+vz9xOrECYUQF3kDlDp9sn0wzJ8F/CyMCATXpWEUA3ot83y5vUnvGyc0BWmsKnSRUfZfYF3vc3du7CSo3rpI58wLyMJh8zyxf70l8KVVel2jTdN+TI8rMrA4gRitkSifk22Izuhzwjs9arl2ejREkM1v8GK//rIaqv38aev66wllqP7tv/232NnZwTOf+UwIISClxDve8Q684hWveMTnHDlyBD/7sz+L5z//+SiKAr/4i7+Ir/zKr8SHPvQhfNmXfRkA4Fu+5VuwubmJL/3SL4XWGnVd47u+67vwhje8wb3OC1/4Qrzvfe/DnXfeiUuXLuHtb387XvziF+OTn/wkRqPRVe9bFAWKonD/n06pxy+m69AyBVYoYkSVOdT2Bvwwgk6WiCruD8A6fZTnH0Y9/VtHt+sid+PzvK5IzFjn0NHBtEza+jwqLiAHR64GdItAwcYlCXKMLh/6FHhvCTonBkcVmYsMYUKgvv+v4N9WEHslK2qF+RFUfGu1IkzVNElrmQHnxq4BNKHFe57jB6Rz4YIYNs6JuTALoFhapclL2zo0ons7PQhVm8w2QfuoJGkls9Q4kcsFz6q9thGszulmK5vRlJwVWpv8O2QpuGGdlLU3mE3ADePD+yS8BuC0TMK06iyLoo1rOTzfZPBJmsaLOuTwvbSK+tz99Ji6hMxLeAaIaaUA08IC4ECJzlI3jayrkoYu+iOKlTEs2CIrqHYnpNEy7dTFMGDmU2uuvnTWCNgVCbmVcsajui6JPVSSWpFZSm7khh3TFfl52elHuTMm0bvnkw5187yxb5BAMgTGF13LT+dzaCGg8zl4kQJ+x/lM2dLF3F0PsiggwpDAm8lM5P1lstfgHMz36RgZnRkZnQYNw7W9QUJ8mKnHuoKucrT1uV1PKKD6wAc+gPe///345V/+Zdx11134y7/8S7zuda/D0aNH8W3f9m3XfM4znvEMPOMZz3D/f9GLXoSzZ8/ix37sxxyg+tCHPoR3vOMd+Omf/mm88IUvxH333YfXvva1OHLkCN7ylrcAAF7+8pe713juc5+LF73oRbjjjjvw3ve+F9/3fd931fv+0A/9EN72trdd9XO9vQ50okavESWQdeXywXhvCO9pz6Mx4aUVlPf9NcrJLsToCLUAi12o3irY6kl4xjn7Vnn2tPX5W5p7gB83OioNsxg22ikAtFgoMsGsp1OwdBf+6lEgTCDXzzQTYVKSbmd3Aq4VoCY0gj88fot3RDVidO41jJKLfxI02Vfsguc01YVsStYAZQ7eWzKswhG3Lzzpk8eU+dxpP2w0WOWcWAwuoD0FaNaA0rgP//gdtPDHSRNFIytQNE24Z7sB0FRa3IcSAbVXYdpZvSHZHywyKWEErnqODdMVAQ6Z7hLo6Q2BLHX+dlpSi0vtTkwMjIJ39DTk6tOgP/FHDizs3PcwusdWKBCYc2LtjNWBMwr1fFQPf8o5u8vN8/Sd5fvUrssJBFKbkFzcoSTqS2eJsVlahdw8T4aixk7Aght73ZDg3BzL0RrqM/cS2DSidm/tpLOH0Ga7rEu8LjLKkVw7SeyT8fnjgxH5jYmAznHUA0/6KB/4JHhK0Tg86YHXFZAMofwOtBdBGLNVXeYQK8fA64o0ZAZcWk0bWz1JYDCiG2K9O4GabaPc3mhYtN4SAUNjz8EUufTr+gCHNvYrLG9bfjdUTyig+v7v/3684Q1vwLd8y7cAIGDz8MMP44d+6IceEVBdq774i78Y73//+93/3/KWt+Cf/tN/ile96lXuddM0xb/8l/8Sb3rTmyjM84pKkgTPfe5z8dnPfvaa7/HGN75xD9CaTqc4ceIEeH8ENhhCeSG1GnwfOktRnb0XYW9Id8MmmBRJn7Qak13Ul84gGIygOkO6K/Y7YCKAtH4+bbV1k8vl3FnPJpgWl22X2VI16UAEh0i6tPCl27To5ym1pI2Ghy/oWJjvN22aW7IDTR4gkyUJvq0GXdbQHho9mK26otF2wwixqAO/v0wTbgC8I7eTZ5FllBgjbZbWja5MKygLssx2WK8qHnXdZ5xpBRjbBBX1nPu4CrpgjFOwrx9SaxSgHMcyp8W2qsCTHlhnQFOJcUJ+ZemUzEU7PXIvN4Mzej4F4oQmAqsa5XgHWikEAFhgWCUzWcyLHNIeFyUxuPN0M92Wz4nxMWyTbQ1CSVz+i09g9f/75ea1KmfmCgAynYF1+iSmN9l7drpZbW/QoI31+cooDNnrDclTCnBtSD4YUTiy0T5RIPQqATETl0PBxEOn9ZJmApIb7ys13YJ35BR4p0/O6VlKx9YAJrazQRo6JQmQcUHMUzYFs4HVSkKVuTN6BUDeXTa2J+rQ8QcNH7DeEHpB5O/YUmPJYYGYPXYsjMDj7r4u/+spzhj4PnyoOGsB1Y3UEwqo5vP5VeBGCPGotgnXqo9//OM4cqRxnn6k19VaQz+CgWJRFPjUpz6Fl7zkJdf8fRiGCMOrdSEqHlCw7e5l6CBGvXEe9TwD5hn82cSMA5+FOPksMOPdEq4eokT49TPwj3KijYdHoRaMA9tq65aUDUfWCsLYIFiPJFaXZlqVnKqjZ3whmOdDlTn0zpgmturKsQTMJ70J83zKXuPiwCb8tBcRe2RjdBgjPyiPQnUhPEAE5EUUxuBKNd8rZpFU2xtQUQK+dJha98ZwlawXAsdGqSBeMEPVcAHHWkH7NbWCqgL1pYfJa6w7arRqijzJwBLn0s2qjJy2Z1sAQAu4ktTuu/AQaYCWj5DGylgn2GOtK5IQqCwFy1KU4zGqNEM47EHmJUQUUJtWKTClUDz4afhrJyAGI9SXzpjHUGuvePDTzYRjEJEUIepA7owx+/hHsfLiLyLtlAk0ltsb8FaOQVUmENrzSYcURg6Q8aRPANaAEs8wb3J7g6J2Vo6hvnQGYnSE2omG2UJNgFLnKdR8Cq+/DJ3NnCgdhoUCiOWrc9Ip1RcfIkA2m4AdOgaWTQElUd73V/Ce/cUQu5uo5zOIpRVqW89npHXzQ7JSULWbyuVBBD6iIaV6vA4RhqQDi/vA8gkC81pBhwl4mdFz4oTijIyDPev0oXYnLnBZlzm8I6eo5ZkenIaqrSemnlBA9Q3f8A14xzvegZMnT+Kuu+7Cxz/+cbzzne/EP//n/9w95o1vfCPOnz+P973vfQDIX+rUqVO46667UJYl3v/+9+PXfu3X8Gu/9mt7Xved73wn7r77btfye8tb3oJv/MZvdNYIr3/96/EN3/ANOHnyJDY2NvD2t78d0+n0upgxAODzbSCrIecziKNPAwsjBEeOQ80mKO/9ONILG+ieLkl4nixDnLoL3pFTqDfP02TPfX8N1ulD9Fchb2GWW1ttAWjYGzudl88o68zoP1idGw81gercfQDQ+GjVFcrNDcTGz0iHXah4AD6fQHs+9K0GU85rigHcNwLiEgyyMd20IdAuLDkByjFUTiwJq5rsOJWl5JhuFn29MyYw0l0mtiboELgyVgiWHYMBS1ztUEIC98BEAO9wDNQFtMnjY3VhLBb8q9kt4YP1DxEI9EnLxbkwAdQVhTKXuXNPp93nFN9izqEcX3Rhvd5wGUF/BCbIgsFqq0QYojj7ICLPN0BrjHqek4hccAq5XjlGzJTRx3mrx5H0liCWVlBffAjV+DJEFMBbOQatFLzlFfKO2p0YRjByzKQwgERnKepLZ2iasr9Mmi+TNciCqAlqrkqoPDUROCWdk3QGubXeAEPOySW+0yPNmueTtGKHJhFVOiURf1VA9VbhPaNPDvdhDwqAd/g26PkO0DsEtv4gxcz4HfDZ2EQn9aDjPrgxLK3H6wTauKAJyigBjg0IZJ/5GzqPo6OoLz5EejVFQdgsiOAdPoHy3r/Exu/9PlZe8mLXBmWeD9FfvpWfjj3FBN9fOLJqb+xvpJ5QQPXud78bb3nLW/Dd3/3d2NjYwNGjR/Gd3/md+Pf//t+7x1y8eBFnzjTjpmVZ4vWvfz3Onz+POI5x11134X//7/+9ZzLwzW9+MxhjePOb34zz589jZWXFgTdb586dwyte8QpcvnwZKysr+OIv/mL82Z/9GW677bbr2ge1M0Y126C7diUhjj4NIpuivO+viXr2SaRab54HxuvgJ54JhAktUkCTFt/aJLR1UKWksTqA80SSiRnEUIpaGVXZTIaVZgKLc6iybqbLhEcC7ahHnk0HcA1rETSgiREgcK1AL4ANxqVYGFrsWNSFMFlx1sMIShLjYQAJCyMnBvdOJ8R0LVpcqJoYL1UDVU4eVJa1sqHJjANhF9oLnCaNydKwXnbK0gdjFXTQITBrjiMDwKIuvIAYNhUmxPoYN3eVmscqsrpgnT64F4D3gCol0OODWoNqNgH3AnpsGCEw036McxJPg8CZa/WZv1kQQZksP13mUAawWGsAlc9pYs6wT9qYb9ogZx1EBMY9300XKgAs6rjnMM6bfytJ3ltlTqLy2cSxUMwLKJ7H6KxY3KPInZ0xgcqlVajdCVjUAatKeKM1KJOzBylp0rKY0ZSnVtBDytPjvWHjPRV2YKOSqI1cGed4Yl25mdxjcULnrZgZ/ykFtX0J1hneTota2wTv+B1Yu/0uyvYzcT10LA4uembf4cht9MwNFdOP1ANr61FrOp1iMBhg++O/j/DMJ8D7I3h3PI9aEfkM5Sc/QuGeO2PM/+ZjCAY9RHd/GXni5LvQwyNuikhzD6q32mb4tXVLi0mjDWIMTFbwLj8Anc2AZIkAkfAhdi+jvviAG2GvLl8CAPIdGoyM3YCAf9szwXvLqEenCDBYt/IDalk7Eb0kNscybfZnvNglE04DvtR0C/XFB50mBgDpZYxzOAs7UNMtZ1cgl05QxAjjZIkia2g/ooW3nINXGf27orajNYbU3HPtQJ7PqPUXJlBBQi3WzhIxXnVBv/d8gHv0bz80Qes59OQS6ktnnaWKSmfUfp3PSFcVJw0A4gLl9gTpxTFGL3w+6vE6mV4KQYBlQf5gJ+YAmFw+421lvJJYGAOeTxNzRlRtpyJtaxImt04bfZptofLBiLRJnT617gwIZ2EMMVoz4Mgjxs62Tv3Qmd7W5+8j09ilFQqKNvFBarJJnk/pFHJnDP/Us+laM8Hj1bn7qU26coxuFqrSTeABgBoe3ePir6IedRa4B757GXJwlFrg822o2ZYbXlA7Y2Ji+ytQ0QAi2wZ2NlBdeKiJPOr0aZ+NWSnvDp3VCI+Md9t8Cl1VmOUFVl7+HdjZ2dljSn0zy65Lf/x1X4Guf+PryW5V48v+zx/e0m39XKx2Bb8J5T5EF+4HP3oHVDyAf+wOsLAD0ZMIloYoLm/Bu3SWMv5mE/hRl1iBhRZMW23dymJmwk8zTgDETK8hm5L4Nx5Ac6+ZYMpTeMPlhoFQqsmTy+eACaFlVU6Mi7ULOABQ5cAb44ASYCx1E4yszt1CrAEyg5xPzVg7uYCzMNrjdK25Bz44RIyVFzrjUzpuZnJPeKS3ER5QmWlALoC6IEAlK4B7ToumZhN6nzCh1l/QoRBeP3Ih2mAcPNuBHF8gliiMiQUygmY13XJaHID0Q1JJx2xbuwEmOPqnj0BubxCY8hc9nHgDIgEgiAxj1fhQ2ce4rL0ocWHJ1kTTWWwoSe/tBY69Yr4Pnacm7iaCnk9dsLKdLqR2n0fapbok1qmCa6vC2B+IwYiOfTaFBk1Bcs8nmwg/oKihoANWmPf2fAKB2xtugpD5AYnYowQ83KF9rzIC/iIAxueBldsojF74xE7luw1b54c0RdkbQXsReJmCZVNIY5NBPlt9OjeW0bKTnmEM4Qcms5U+O2JpBfrcw7fio3DN2rexZ8tQ3VC1gGqfpTpL8JZGkOc+Qx4odvT6yNOhVA1WkBBxvrEN+fGPwotCdJ77fArr3D5nxLwcYraBenj0lnv4tPV5XtYdHYCO+2DZlHQrZz4F9vQXkOB26TDABeZ/+WF43S68tZPI7v0EVHkZ8R1Ph1g5BrG0QoJ2VYNXGVg6hgq70F5IwxW3uhaz+4xWihUpMUZ15bQwljERvSG11vO5A4jMC5yjNTyfYkNGx6BEAJ7vENtsvbkMUGRaAdyjKT5GbTOniaqLhWmvOZhPkS3KaqSyHdJYGcE8AMC0BK1OjXytmm1XsxJ8MCJtUl2ZEGTSQ9Ub58yY/hCqutBoZiwQMlNz2kyvqXRG29TpN+bBVrflBWAAVD4ngTXnYMbc0zrLq3TqWCcxOgK9O4E2E8xiMHI6IuthxQcj8CghjVR3COYTO19feJCm+QYjoxPzwddO0zGoS2coC1C7UKVTOj+WmZMVtKqJQTp6B/xTz4YKYqgH/4Ze9+jToLcuEmPUM95RWjugzIxzPc92zE0tB7QAeiPwMIP2Qgr75h4BXy8Ez8w0pBeARSTZ4H26obDeUypLSYemFJmxmmBq3lty+YoHVa2G6ompFlDts0hHEtDIrpLApQfBh6tQyTJYtoN64zxkNsehl3wJ3V1VJeSlM256Rqwco/iG7U14z45bQNXWLSvnk1TlsMG94IIWu+Uj0AY8qKgHrmp4nRjl9gQsThAeOYbiIkVweKsnXBQNqwqwnXUAgCh2qX1ywMVsnqAiN3ddzFGbqUQWRGCCQAMZYXZoIVSKmB0/AAs70OnEgIBD0OUW2QEA4IMRVPcQidsBOnaWqZLERFlGTCvlcgNtCLPqDMmE9PJZKDM+z/yCWI/5NoGZMCHNj1ZgfkyC9I2zBACNZsdaM9iYGS2liXAhbVRw9DaUFx4mjZvK4Q+HxBgac05W5Kh2SfsWcEFtPsOu6CKnfV9aBbM6OaXgdxPXFpQ7Y4qqMU7lAIyhKYnGwXmjreMC3uoxaCld8DPjHHJr3TiQExBTc2pjitEaWFU0hsbb62TGqRSY/ZsLmtaMEgKliQlyno2BgICvd+xpgKohO0vEMBULWj8vgkjH0EEMPtsAkh61V006AJQkLVWYOMd/+MbotC7I+kIE4P4OTXWKAKhJZ8ZiOk72moJSjm2TNiIoSsD9gwNUhKX3o6G6iRvzeVQtoNpnab8D7QnwOEF15l7oPEXg+0A8cHfRIgzhrRJwgvBRrz9Ed4tRAjleh64o8f2WT0m19XldtPCXYMXM2Q3oMIHyO+5a1X5IuZQJsSK+kpA7Y4R3fiECpWjSq5iDZTNaMAe0CGs/JoZn0QPqoMouilpBVwX5FGUp6skWWQwAEFEHojekkX4/oFaRogVOTbeMNsiHLrOmPcUFMTKdIb2PqsHzHUAExDpxYqx4kUJNNontUdIxESyIgKqgRdoI+8VgBB7X1ALMUwJeAFg2bVqroNYeBiNU5+6nbQ5JL6WtzYAV1ZvzI0ZHIPMSWipiJpRyjt9McPc7LRW9nsnn00VODuVVDW50Uc56wTAs2k4XGlNM1ybNU/CC9Ea6yJ23lM5SZwJab54H7/Sh6tLZL1S7qRHFj+GN1oxe6TLZJoRd4y9mVnQvoIy+Mm8mCMscYAyqewh89zK1VsscanC4AVF+B4pxmsJUpNFqrnHSiblYIiXpRkPQUAPTChomELzKmoEEWUJ1lqjVyBjpxPIUMD5sMOdeS0lsX5E3gwDcA7uG7U5bn1vVAqp9lgq7kL0+WF1ADMbQvSFY3AMvdqHiAbw7ngfUJeqN8/Cefjc5+J58FvRnPw7/1BegvvQwygc+CU8IqKgV/7V1i8r6TFVkPMlsTIqUQORDhV2wcg4dJFAAwDi8O76Acs22N6BmEwS33+UWjuJTH8POfQ9j+QVfRI8z+X3yINp9C2UXS2aCnZlpO8nxOorJDCIMyS7BaI6YH4BFXWI57GuEFCTMhDALPfkiaQ9gMBl/5Rx86yyKT/6/AIDg1LOgT9zVbIdpc7E4Qb1xHno+haiPUVvr8jlUZ+4F84NmQo5x8JhsAJQJ3wXnNKHXG1L7K+6TQH57g9pInT7Sv/00+OY2wmEPIulCprs0Sawk/F4H+XgH8fKALA+MezoTHMVkBi8KTUh7TNuQpU4XpaXJ+EunFNSe9KGN3xj5Q82p/WZE8CyMmknlIHJmlmp3YrRdnPL50pkD2SpLIU2eHQ885+zugo6Vnb6L6bgZgbo1jtVFTgyiHT7YfBhqdAwwAdCszCB7qxDbZMipDp3CBh9i1c+BYheys0TtWd9M93khMYzVnIYOhAdeZsRUxQOwOm3Ob50T6O3aqVIFnSyBVxVF4JQEnsToiGMFdTojPy7Ph853Gxf6AyjGGdg+jD3389zP52oB1U2qengcnqrBNs8al2QzzWLCSFHmYEUK1aU0ejEYQQX0xRGcvJP8S1rrhLZuUVlGilU53Y2bqCQdxEbT41PLRWty7Vc1TWBFiQMicnvDOYuzMEL32AoF6EY9CkReYLoOpKy+iXFwO8XlhfSZq0qoskY9zxAcPkKtO9NiYgYUwuayWffxyhh+LriFgwsCoNNNFJ/6C2e0qZV0In8wDhZ2iPWxz/UCiizZGaM6Q+HvLKKoFxuZo7lHPlNe5TL69IJeiS/qoIqMbAuUQpXmkHkJYIxoNIC3vEL7xgVEQOJt7+hp5A9Tdp/MS3hRCB54ZMpp2Dhb1qgTSpLxZ12BcwFm2SguwDp0XHSZO88p3h02ALGuwJOYrpcwBpQioJGnQJw0j60riLhD7NV0p5kujLoEZIQHlgzBs9RouYxZJtDkCvoRmKwosqdfQOYp5fl5GbVFLcCqC/QSARQl6a4Wr03GCYRrRUMHxgzWBoe7sG3ryi/Ju8zackArYnFNqoAOjbdW3AeLeuB1bkAWmZ3Wm+ehDlCXxPn+Ao65bDVUN1ItoLpZxTjq0e0IipTaBmECCA8q6sNbOUaBoNZ8sM7BhiuoowE496BPfGELptq6pcWKGY2Ko8nA015IWWZB0kyZMkaLi3EdF4MRCZmDCPWls+CnvwCaexBLqwif+XzIwVHSGF3D8sMZYd6ynaLpMF4XJpTYA9PkYO1YGKVoYq0ktkSOL4L3luCfeDppqyqKeakvr7sMPBZGTdRIGIFVGaoLD0Kmu9BSuZYYdtahiwy6f4iOZ12hXj9DAChPUV14iAAFYKwZYgIVng+e7UBtXwJL+vCSHirTMgMXxMxEHWID7dRcQUBNmbYd8z3IqkY+3kGVZo2vFOcIbHCwVJBlBVXVSI6u/v/Z+/cYybK0vBt91lr7GjuuGZlZWVXd1d0zwwycHszhG8tcxYc1Nha2Adk6woCEsI1lbCSLMcY2CMbGSIBA1hgJhG0kW2DG2PzBZ+tI5sge+xhshD/BzAFjLkMzM91d1dWVlVmRERkRO/Z1rXX+eN+1dmR3D0N3dVfhZr9Sqaoy47JjR1TtJ9/3eX8PTNugWm7IL8WxMNZoWE3vfbN4ANO01CXj40QAmOUZnU8pWTAlkElGsM3xAdr7d7xZXs2OIBgSS7gHGmWqpiZxGIQE+8zGfkxoipygpk0NOTogMr2UdIxBCDm6CsQUmlENbcPm8zH08pxwB/GQYmHqElifIWOWmGhKyKaAyeYw7FMTdY6rDyxp0YL/DND/1dgsyBhvDESRwzBjS75zAj08gogzSE0cNOtwGW1D27ItbX7KJAPWmzf/30Bff6iqF1RvchmOJRDlhgNXQ8jZCYEF9/LAiFczgOZV9b76eitL1IVn8bjPm4mHr72RJzlguC6A46cgTz+F5t4LNEb6jV/00EObjolf9Vpiqq0gqi0sj1neyqKMQqKT+4t4kfuxkl6eUT5cENKWFndnqCNFSAKhlF8UAYfu+lIhRJxCKOm7OXpxDzLJaBvv/h3yljEJ3GzOyQjOSAE5mdPop218zIotKc+TWFgzH4Rso8SbxeWMfExuxCbKHOVijcHxFGGWQq+6C7Qbl0lFPq76U7+Fep0jGmcIM/IMySCEisru9g5quv+66gbNeg3gtgdbmnIHyedNZmPPw8JuAzk+8JExbpuQzNmcgef+zgsCfJC+Q2aKHM3t56Bmx+SR4igYMTmGArzAEtNjEq0cCySbijqn2RgiSpnaTnR6PT4hy8Xp81BB2H3Gje5+cLCWOlMg0zpChis7NIQ1JKZA+Xx6cUqvZ4/pJcsNi7+A/j9XEeRuSeILgJweQV+cAhzmbapXCLi3sB4am/Awwcp/hKu/kr/JJdoGzaf+F8J3fC4AwKYT6DCBjFIYt2VlNPT0mMyRffX1CMoMD+mn8iqnzlGUwgxm1JFyQcC+SyUBJWGjFOrBKao7z2H93KeQHt3H9u45pu95BsET74JJJp2fZa+EaSHLNXXEwgTmrY5UUiF13VTEiQXkzRlmI+Sf+hS2z9/BKE5hNkvINKPtq8UpbNuQR2lHBns3XoMx0MtzqPkJ+aLiAdT8BPL0NgmMpkX70ichePstv3uO0VNnCJ54J92npqDo8t59BFlyRZxZrek9cGTycge9PIepS8gooQ4Pj9Fcjp3zOlljMDieQkiJtqyQncxRLi5h6hbROINQEm1RoV5toRLGt2iD8OSQxmqDMWJFW51OgLnfXZcLAEzdEp4gCGG2K7SrC6h8TfiG2TFMXZJo4NBgFzhsGfngwotFlABtDTm/7seqIqRRqJodk0ipCu+ZEuNDAp0K+uzh+BloHsHZcABZb71w0cNDyHJL3q0gRHDtSerKVTsgmwP5EmZDv4In3gVkU8ImKKbjt8bjK6zjjgFQ+QVQ5bDDA4jtBZ0DN3pt6y6iKQgJ3rpbkUdveo1EmK6hdxvIKKFYpqMIVghY9p49qnpobMJD3PePcvWC6k0uPT4mcvHHfxXBzQuGx81hIoL7id0Szcnn9GKqr0daVkVoZ7egtue0Bj6Y+c+go4m7UaCLXJHlhiKTpEIwSNDkBUa3rjFviATZa3anikvahtvvCLzVJaWHfYqQOimmyJEeHWDz4stozu9DlzWS0QyWM/wgFdrFKceN1J2nKk4JjskwSX1xChFEkJM59OIenU+jgSKHqanLsXnxZSTbHOm73wsRhGiXK8QHE1QXlwiWZwiuPw3LuW5qdgR1cAKRjaGyMQmRxSlsW0MvzyGN8aMzsyWTutmsUN65AxkGnecJQDwboVpuUK+pIweAlgrKGvnpBbKTA+Duy3Tbw4ZglYCPTTF1S76pMITRGkEaIzo6JsGXZhBljuDgiNEIlBPoA5sDoL33AnOZjiBnx+Rzkgpydoz25ef9JqIcTUk0DqcIrj0Jm5IVwrY15GAMcXgTJhqCT67nf4Gp8gAoQNlWnZdqcg2iqaAZTWEXpzD5GipZwoyPoIq8E6VB4mOLrEipG+X8Um23pCEsGfMFd6r0YuFfs2AUAolsoui3C0aGjA8h8wt6/5IMMhvBnL8Ie/QUbQUag+DoyTf7U9/XH7LqBdWbXDakn2abFz8Os76Aml6jb6gAqAv6j78XU309ptLDo1d5m6wMOuFjtPdRmSgjMjdvoUXjDDIMENx4Bnp4eNXky0UsqA1ETdEs3sT7Vpcbpe8uoTcr6jgBPLY6RXG+RDTKKL4kX6M4v0D27s/mDbKiy5CLU8jhFGo07ToKRtOFPxuhOb3jf3p3hPJkPsHubIlycYloeUaCKi+RvutpBFUFvVlBjjc0FmP/DQSBM9vzu7SZGCcEg+TcNwB+fInNkoJ3s4RETxLDaA2hJFQSoVpu/DEJKSGV8t8HaKNOJdyZMRrWKE83l1FAJnttIEERQ44kLxyvCrzFmK+hl+d8nhLYFjzCJKyBi6ZRkzkbuIk6rnjkqeIEdsBohHxFG3yMd4Ax9LkTEjBMri8uaWTschFNC9tUAAqChEYD2JiAqzYe+aUAWxeww0PIwycQxAngxtJ+3LfnF9QNdQzbslskChjK2TYEBwX8CFMORjBGex4WmDMFIWmLkeNqxOyENgE5IkdElHn5qIrArA/RoXqI+/5Rrl5Qvcllgxj25LMQsVFVJ2OiKDN48FGvlffV1yvrNT17TpAEMXutDEXRHDwBOb6L9LqGml9HeONp6OlNHhde/U9XmBYyX0C0NX2PLzSP4vUIHqdbrWGWZxSTkwwAKZEez6DSAXb37mN755RGY2WNUZpBcNfJ5BuIlASkHIw8wVsEzKwCgChB/Mxnd12PpoaSDaw2iEYD8jUxayocDUhAaQMZBl6Uugw+u7ukLpCUqO7dRZMXiEYZTNNCNS3kgHxJJt/4caAMAwRp7MWPaVoIJRGNM8IihAnCLIU1BjpvMDiaQiUR2qLit1jCxqkn5YsogeAAdysNtK69Qd2R1J2QMsszyNEMijEOguNr3LhP8Oaf2W3YwK2pazWa+XGgnBxS3iJDQMVoCoQpZJTCSupEWRlAVluIaot2cYrgGgURy9GUzOvDKaAbwjMEse9M2iCmbl8Q0aYk7kAfvxOCUTQuX9GVaCv6rFtLfCkOhRaHT0AcXIfQGvrOx6njlI2os2cMRBhBza8TjHV1Rgyw2RE9R7nzm5qizqFnT0Btz0k0OyL/IyqpHnLLrx/5vaHqBdVbUDZKYYTwmV3EPknRRtmjXSvvq683UNZFrAAw2RzBO/4Y1PIUpsxh4yH9eq1RX1PQ5pRjGwWJ32x9K8uZ7UVTduHHxpCZOhlAZUOoyRxxsUN48iTM5QLbF0ng2Jagump+nboszF4SHMnitrUQhEDZeMOxA2vatoEuawxuPdmRwvl3s1mhyQvqDjFrSU3mhEqoShJtScZUc4lwNkO9WEDFMb0OUIdNn95BuyVflAwDtHWJICODtwxCBBl1lnRZX+lUCSURpDF5oqQkQ74zvfuxXQQJoG1Kfz4JwSAhZ8eEIGAiuq0Kgniy2CT6vGFYadbhHfI1e9VmbGAnv5XMRsDuEhgdQo4PYNYXRBkf0hafLC7pB9KLe9DbFcxmCR2EJGq4ayeUou6jMRDVlhYGOJwbozkwjSDWZ/612JAwGl0yAJ8fazyHzC9p1CWUtQQD5Q1AW+YwbU2vJRkQFHV8CNEUhNcwmrYVL89oMzEZ0LlqG0AI6AsaQ8oghCz7Lb+3e/WC6i0oqyIGxyVXjYi9mOrrf4dyocOgi41JRpAHAipf8tio/bSfZcH+F6vCK2bfP1Cxd+t1HeoeF8gGEeT0CGGawfB4yhrjL/ZOTNXLFXVuTikCKnjinTTmSga+M2ONJlK469QERP12YsmxnEScID5UqM/PIMOAxNvsmDo1HJtSnC8xfNe7EFy7BRdmDMBv8AUntxCc0DZZeu0WEdGZog6jyTeFljxVuxJNXsBoDakUdFlT52o4RDDQ/vGtMXDD1uTmDbhAYzfKsXVJBnkOiQbQGdkLoqPb9i5Fpky4q85be45Y7t8DqdCe3aUImTTzHjAANH5lg3q7OGVw6Qrq+jshpgwGtQbIV9CbJVHTtyvqAkoFW+4oG9AhFpgxJUdTmDJH4GJrQnrvZH0JPX+KeFa6hVqf0pgwm0KnMxJijAxxrwlBSOHPuw3s8pQ2JV3WolQ0BnZByQ/uAsUa7eWCcw0JkaEXpwhvvZvOH+chqmwGG3HW4uUCpn6EeS4PaUpH36F6Q9ULqregnEfK7rGlxKPykvTV15tQPvdPCBqXNDvedGo+reixMoBOZxBh5c3tKl/ADGZXNv3cuIXuxILFGojisuuMuegma7qL22c4XpNOaHU9iKHiAUXHlDl1OLibBKMRzQ9QLy7QrNdInnonfIDw/g8/bYPqzvOIn3yGHr9tyGsVJzD5Gu2OOiYqiaCyEcLplC7WSqF68RMAgGA4RDwdETdqMCakQr6APr8LOTsmg3NVwjYNdW8AtC99kraAKxrTyTAgL5NiMKuU3vcEpSAU/72t/dhN8Hq/VIpo5EXOxO6IfrU1bNOg3W4RHl2DSDPiwQcEInbGdceWglQUnwLAlLmnpcvR1H/ftg0HTzfUlXJbbVKxICr4GEM6z0LQdmaQQLQlZ/xRtqEcH9Dodr0grMRkDlsVaO+94LMLbZFTlmGUAeUGYv0ACCMaCxYbmMOnodanaG4/RyHNccbLF5Y+00EEoVsyvLusxCCEvlwgiBOI0Zx8awMa9znflylzBNmIRpjZCBhNeRw6JdzD9XdCbrssSBw9BRWn1JHc6wK+1eU6lA9z/75ef/WC6i2qVxrPe9ZUX/+7lR/9ycB3bgAAbQ0Rvga0U4WwEfmWoFvYMKGLXXFJnh8nqvaEiyO4u80u0RRk2C433A0zQDy88sNJd4A8ynHYB2PoGBQdl5weAWtnLDc+WFhECSJjKAaFRaIFYE25x0piNtOeMV1N5lDz62jv34ZpXoZpWlhtsPnECxg+eUIRI1UJGdH4TWYjMn6PCY5qNkuKxLm4RBInQJpBhCFtHW5WvHnIxnFtoMsaRmuk169BMsHdUc/dxTIYJOzzkt3r5FEcAISjAR1Xvoatii4uJs3oP/+2ptecjXmkNyWiu9EQ7OECAEzm1LkypiPIc8fKmehtW3fbkvwccjAiyv7i1D++TDP/HrljFskA2CypgxUlPg8RAEQYd8fJYlHNTwgOag2Z5S8XCI5vAgw1DQYTf05FylYLhz+wtutEygCIBnRc2Yi6ThyUrA5vkNk8GdHnjLEQ7vUGRze9Sd/kG4jgAUXjpGNikBnNP5hw/mJr8aiqN6U/nuqv8n311ddrF4/+aOw3hrSWPCm/z3+2QtcUrbRbojn+LNiMxt8uzsMyBBEAwxOpE+NHg9bQ/csNmYWTEaw1r0Y0WANZ53QB54uzjQaAael3Pg4RZwjqwhubFa/2izSDXq5QfOLj1GVKB9TJkMrn/qkkoniTOKGAXwDi8CYEoxMAoF7naPISu/sPkD39FBCnUEZDjbDXXSmhl+ceRaCbByjv3UdUdLBLtyGn8y3qde6p58l84rtnzXoHGQUIBonvkFlj/Iq/iBPYhgOSJW0A+vzC0YwukiwqZDKAZRSC7xo5enqZs6FeQxc7EoMuwy/JSKAwUgJ1CVvuSDwUOUy5Q/SOZylQmrdFbRhDSUWC9ugWddbYEiGLS6LdHz4BWxNA0+w2tBjAYs2sLyCzEcIn3klj3JYCrk0yglifU0CxPzbJXbQH3WdFKsqajFKCeVrt45cghB9rQwYk/DcrYHEX9uA6TDigDcDFXTLjc/gxQD80i2TgeVudd5BJ8We3IW5+Fp3fNIN9sHdMfb0tq5ehffXV16ctJ3RsGFPuHxvNXxOZ0FaQxSXU+pRiVRw/SEjuCuiOL+Qef18kGd1FglSduR26ucqzYiEmqhyyKTj0uYSodxBNSWJK8wVTRbQF1jYkWjiAuL04RzQZkXF7euCfH2xEt20DlTEXaa+j1s5ukYhhZIGKQoRZ4nlUAK6MwUy+gdmuaFNus4QcjBBPeby3K6HzLb0kFxKsaFQXJNSRq1dbzu3rPE6maWHq7peumM3ERnkVcwiykmhWBOb0xvK9rEGf05hmJLrCqBvfaU3RMmEA2zQeiyCzEeXyRQl1rModbMPPnY3ZizakHEjdwK7OIOsCSEY0IhOCDeU5RLmBXrwMFGvYMCYeVZLR44EEqW1q6MsFTJEDQUydqSSjgGvQpqUcTgkcytt+aBvPC5NjgpHaV3ZZjabPFX/mHKfKDKYkfuqSkgIACk5m0QgQzgJS0Wd1eo1jeWgEaiK2e/BSgWgqOnagY4A9giKwp3qIX700eCPVd6j66quvT1+8QSWqLWyY0lp60EUo+ZuZFqLeAfefR7O4h/DWu+EvXy4fkGnsLnhW6MaT1oU1JNpMC4S0qWelhA0HV7tTjB8R9Y5I7FIBugZURCKLg2whRDdWKtYdmXy7QnP2Mgmio5vQ1acAgAjnbUO07SJHcf8cYZYiupbRlh+zh/T//X/5cYiQEkFGOAOVUDRL9J73Adag/sRv8EWVNgN1WUOXl0jCCOHhNQTj0vuZ2vUl2rxENB2izUvfhZL7QioIUS5OMXzmyY5TpTVQ1n7jj79IvzWtH0laSUHFzmOlBmOIMATMnmfMhRTzphqSAXXVOPYGIMo7yh1MteD7RD77UF8uSOg88W463+UWFiw+QJ09Oz2h9/niHok4U3Qm82wGTI8RxgkZ0oOQaOrLMx6dRrB1ARGlEIdPQMdDgs8y508aQwIpShFcexLNS5+EnB5BHFyneKR9or9bfnB+vTD1XVcbxpAqosia7YoSLuIh1OENMucbjfb0NtT8xAeCBzfeAbM6J+E0mEJsHrCpvyEG1cF1YLeBiF+dKvBWVU9KfzzVC6q++urrM5b3U/EI8FUbeeyFEmmG8OnPgR5d87ejMYsBbEDiRwYQ9Y5GI64DJiTxkXRNweJC0kXQjbPcUofREG2JYH0KW27JHDyawkYZRE2eHxGG1OlYrSHYEOz9WFJCZUNUZw8Q3YoQTA9gqxLV4hOEP3jP/wOr36YxoC5r7xmybdNlGJY7yCCEaRuo0RTKiUUAzfO/Ra/HrdQ3DefflQiGuNJ90ZcL6LJGkxe0lccbfPF0BCEVwtkMzZKgnjrfUiYfSCypJILhbT8AnaHexeeABF84Zg5TW6Pdbnmlv4aaHZNAaBsykqs9pEA2vsrNYmBmFx5NAiQ4uklxLkJCZcwlMwbNyy8QGDUIych/dBOiWHv+ld5tqCMWD8hnxZ1DoRsgGUIOSojJMW3cjaaEe4gH9HlqCghrIN3nwhrobA41rmCbCiYeQRpDozkZwAwPSWjtl1t22Pfl7SEVTJzBhE/RQkU48M8hrIF54TfoNKcZdEBCUw+PiKUV0HNKuaLb8FalDgcIjp+EvFz9Qf6p9fW/cfWCqq+++vp9i8CZEqIqYMPEj+0scFVUCQEzvUHdpSCi2/luVAuYgm9YEVYhyrwB2HlqbJTRFqBDN7iflNlULKstRFPACon29DZsXUIZDTkyMLxJRhf+krw1u433RIkw9GHEOHvgQZG6OYNKIlhjYHYbxNMRqtUGg5vXOfdOd5Ej3DmToymae3cho5Ip6rxFB1wVNSFty7luUTAg8KZtauiyJiBnEkMzrdxT2I2GkMqP+YSSiKZDP44xTQupug6TNRpoGoiY4nNkGKApd2i3WwTDIYk6SaMnXVUQmxUHF+srxy1cvExTewjpvu9KpJk3jZNhnYz0YnwIlBuCWipFfqOU/VZtDdM0XnB7r5GKqKvFkFBz+YC+z8JGTg6vjnqlgskOIFym3oM7hMUIWRgZDaEbmHiI4NotmPjVGZKWP1OvHD3T/TtRBSmpMxpElHDBn3cRhLA8FpXVlp4vGVFsDr/nNkzJeN80xMdSIUw6gakfnSldSgn5EMbyh7nvH+XqBVVfffX1+5c1EE0FmJY8SmJP5ABX8v+ELiB3OdrxCSBav5ou6h2N+IRkY/uIRACPYqxuqAOQjCGrrecIARw5Yg1EW9KYL1+SSNltyPx7ueDxFHcYyh1sVdCYSykfGaLm12lFvsyRPvUU5GiK9uXn6T5Ni7ao0HzqU97U7bpM5nJB2YB1CbM8g0gymCJHOKSLv9984zK7DYmIojOX02k0aHcFwvkhr9G33bhQSVhN2Xo0Pow6dlQYQXE0jm1q6o5JoqQHWcLHS0LKAUNN3Xrh1azXCIfkcRJRQt0dJ/g4NBpRAmgWPPx1mQyoM+WiYQYU72LqEqJtOuGTZhBNgYaz++T4AM2LH4cECJiqNQUmtw09fzbqlhR4A87mD6AX93z0jw1jWJlRJ1MFXdYeM7wAhny2DUSxho2HEACsroEggR6f0Ehw+wBmMKP7C9mN9iA9kwrYW4rYE1Wug+oWLUw6YfP8J0hcp2O091+krt3xMxC7JcXWZAcQcQZYA63YoB5lMI8wcawf+T2e6gVVX3319RlL6Bqy3NCYQ9ewMeeSWQMrQsIdOOHltvd41CLaksRUXRDM8trTfJuS7y/9GIbCayUgA5iAAmiFaRmvQBc72xBzSc2OPLwTRsOUxCYSxhCB+/4dVMsNVBQiPgF9LwjpAsihxDIb01hpeU7iIy86IbLZQQSnRCtn0KQYjBEc34Q+v0tmcBZILtPOtA30ZoU2L7tuE8fP0Omi7pSIEwglKa6mrCGjgP6OFO2uhJD0NRmEQJxeEWyW/0yMKkm3CUISGIZwC1YbhKOB91IBgK24Q2g0GeejhPhQTGz349U4hXAGbj9KpNBod38LorQ7A7vNN0wNL8jAzUBM29aw5Y5EJlh8RZyvB9pMNBviOxG5PWTYaAtRbmCbCiIdw8RD78GTuxVgM4jBBLYh478MYhrhyQCy2QFt44WUO2bf7WQ/ntBl94OA+xxe+dBLL6js4i5ktiGEgzFEVXcdvd0GwW5J24iTQyCiJAHZ7Ag6GoQQrezOaV9v2+oFVV999fX7ljAtZLmBiTOIZgeha+ggoSw0gP1TredJUSeh9CJItBXM6twHA0uAuE6bc+jRERB0pmorA4iQt7V049fahWkhdEOhy/ObkDVBNglJcIbg+AmI+YmPV3ExIGHWIpwf+qgUhzIQUpGgaJtuQ05KDG5ehwgj1OdnqJYbxCcn0It7aM/vUnzIZI7mhd9BdXFJImhvNGKK3IcsB1mCarnxPCizzhGNM+i6weUnfgujW9eujPNM3UI3DVRIHbtgOOxo7EFIQcR7ZZoW0fyARkuO5i4lrNbkr6qJrK6CCKZZQ1cVzDZHMCh994veOsNRLl13ymEBzG7jPV8A/MadkJK6dABkknEgcUki9nJBUSucXWfrshOjjIgQcQooBfvgLoknBxTNRpCDEfTlAliekYAOQsJQ6MZ/DkyRQ7QNzOwmhJDQLz0Hs6WwZTmYQC9epvf6XYcwy/tQIFCsW4bwHioZML+MlhgE2MvX1oC1sIrQHPbiHtr7t+l9uflOOl7u0Kn5Cdr7t6EvTilSKIwh6y19TqsddbKObxFXze4tD7zF1XeoHk/1gqqvvvr6fcvKAHp0TLygpoANYshqC/BoDpJjPnZLtPc+BTW/DqlJpLixl75c0EXv6CZEU0G0DXW9ikuYYQS7hyawKtzbxLJ7AE8yEtsggbUGKLdQHIuil2eQ4zms61KxVyowxo/7TJnTRbNtYM0etdoYomKPx3RhH4xQLT9JFxWjfZdHDgmHUN97CcAejdp5pqo1eYF4bKfL2hvJVRjSxp0xyG4ewmiNkDtQ9eUGMqL/inXTQDf0GDJy40BFPiej/eq/SiICW7YNXbTjpMum04bux1wqGQZ+vCicgAgyIIhgN0sagxrD54beN1uXREpnHIATRj6zr22gksxv+Ik4oa4XvxcAKP9OShJYoxnBM50ni83xZkcbmFaToLXljnxYPPpzQcp6eQY1maPlLUw5mUPMbpJo9+BS2py05Y66kLsl9I7CpYNrT0Gfv0Seu/kJidR0THE0oI1TCEJ/CNNCFpfgNwSWcRKUa9jwskFNr6EuvViUowN6/x+81HVT2wby7DZ0mUPsb1W+xSXEQ4I9+5i0N1T9Weurr74+Y9kwAYIIOpszOLOhi09D/igaeVV08VvcIzAks3gM/9kWOXmWqhzYrWicY1oyrgvZjVz2RoAQovsaQKMfFVJ3IeVxncvuO7/bjcY4w6/LoZOEPwBl1Zl84383RQ4RhAiOn4AcTaEXp9ANeZDqBSEC3MiuvvsiGaFZ7Lixm+vwtLvCjwtlFHikwSt/4pdK0agOQFtW/vHppXa3tdqQudnfkcaR9TrH5nd+x4sp32kx3Xhxn0vlqt11Yz/yiHVZhTDcUYwT9jqNvVgU7ty54F93fFVJUEt37EnWPQ770ESUQCYDyCSDnF2jTpW1ZPCvunw+W5VkxmdwqNmtCZfAAcRw3UfwFiWDYoP5CY0XGS5qq4IWEvIljSCLnLpWjJvQyzPCY7xiocL9XeiaukvVjp6rqf3r9+KZz7etCLrqOpN2dUai0AFP91Ac++etr7dn9R2qvvrq6zOWlUFnQq8YRikkZL2ln9qrHC2Pdii+w+xRpPlCIhXa9RriE78BNT+hTlLD8E9LsTE+hmaPUeVHNMmIR4uGfgJ3/pi2oYszx5OYzRIiTn1Ar22IrG2bmrw12xVMvgYAD80MBinUtVuwNVHPwyzx8R3Og6TL2m8DVssNGcrTAW27SQlT7vw2Hx22RLXa+O09qw3CLIUMKZoGUhGFvKYOmNHa38bhDnRBF3Xvb1IKKhsiTQfUTZLSjzPBxnQhFYwDSwYheXik9IyrdldAseEdQDfqqwryT0UJ/aSdEmTTOhJ5nHYCDiD2VDYiHpUf59E2JYkjAzW/DrFZkiE+TmBL+uxAkVACc65klEBz7IscTun9ckBMB9rk10bHSsZ4G4RAaUg4VQV18qSCbRqKu6lL2uoE6PMYRPQ5kQqWkQiuhPPwXdyDWV9QCHQQo73/cUJQ3Ho3YDSC+QmJ+nzJ/rMBoyUK/3dbU0ajiBOgqUkMikfYoepHfo+lekHVV199fcZym3wOsGnjjDb+2gZ2/YC27JSCmh1T9MdmBaE1gmwMkQwg4bogd8lIPRgBcQZbrLsn4efw5t09IzZM2214GQ3RlLC7S+recISK3hUQy3PoYofw+AZfEENPLje7DQXZDoj2rRenEIrETHVxiXS0xu72HeiyxuidT2F39x7qTY5kPkGz3uHi4y8gHKQIxwMk0xExrJqaWVeFj3txJHO7h0Kwmv5cr3PEsxHiwwPYtsb2xbuoVltkN4/Q5NQ9MnULXeyg0gFUHHfjNKloDKcUGbqjhDszpmNttQ0jF+icWO7UBcZAlxdEPteGWFaB8eLIATgVG8/3M/rEYOy7UJb9U0JKmPWi24SME/JTVTwCy8Z0myKnTb+W/FcAMbMo4icik3oyIL9WmQMmAZjXJXi8KBjyCbUnHPnzIrYXhM9wnbaW34+m9uZ9kQygJnPqRMYppBwBKoQWoos+kgEg+Pe6GwfbcstbniMSTmHEpHzuxrHoQxADu0u6TZzCXC7oXLh/P3ECk+9e7z+7N1y9oHo81Quqvvrq6zMW+ZosjUOige8iCdNSaO/iHnS+RXTjKQRPvMuH8AKAmt8A2oo6GqMp1GRO1PUohWx4BMWcKaFrzx4SQLeRVReQ5bpbab+4h+bOc7Riz4boMKY4lDYvEdQlbJF3YcBBSHEpLA7MduUFWzge09hws0KQxtRFysZo8ucRZgnKxSWCJMbJF74Xu9MFWg4tbhYP0OQFBree9KOzNi9Rb/IrhnMnqtwoLhxTt6bdbvF7//7/h8/7m3/a+62cqGrzEiodeNSBrUm8ungYIam7Y6uii69h75R/z1jsiSSDqEuoJEIwnqBdX165jfMzuagXZ+qHVOTTMhpw+AmpmLFUE0Jhs/SmdBzdRPDMe3nUVqJdnEJyx0ov7nVbfKMpEc/DmN6HtoHZrMhvNJr6c+m9YSwkJQA1O4IIQhJnxRomX/O5qcmIPpzSCzOaRJZUsOUObdtQFy1O6bMXxleWKOgzHkDtljDcXTWbVbd1CEAvThE8814I05IJnb1kIkro34dUkFHCvkH+YaBtoCZziGwMXP7eG/iX98ZKKgn5EKLoYe77R7l6QdVXX329dlni9Ii28t0jmS9gwwGsCimyI66hDk4ovPfuJyk3rcj9OMjkG7qgTI8hD58gb4yKYBVtRNkwpQuoG73oFqpYwqqIxnsAmd6rHHZ15jff2vu3UZ2eQoYPEM4PaUzEW38xgGbxgMzoAOT0iDxfaQZptPfsIAgRZGNvbLeDEYIbEXtwdlA8mjPakKmc/UmDcebHdkEao11deLGkkgjY5DB1izBLoZII+ekCYZZARSHqdY56uUI0P0B4dA2f9zf/NPmLIoN2u0U8HfmRIXjkiLZmD07dEdFdSeW3BOtNjmR/87BtaJuuzCHHcwTcPVLpAIY7S/tlyh3EbkMiijP6HNrAMqNKuMcFGAhK6Anb1ND3b1MHcDSjcz87IrFRlZ5nJdMMyMYwmwvqShWc2chdNS/mGLIqARgWx7YuKUeQM/H04pS8cdmIukiD0dW8vKrwcFLb1sTPMhrCjRJnJ9DDw+5c6xZ2dZ98d+kY2DwAshnUbkPdTqMpZPn8RRKReywvu7pPv9cldWonc9io22DU53f96LGvt2/1gqqvvvp6dVlaGffdorroRi3gEaDRlLUnJERWkX/JrdpLRSv0HCobTg5h6wIoNOzBk/QYuiV4InOkvHgzBqLNqVu1B//Uu7UfKQFk5tarDZq8QDS+QPTEO8iPMzuGqO6gPb9LIgp7Xio2EDvukhyMujV4vo2DcabHM9TrHO2uRLna8GkxPh4GQAfi5C7SfpCx29wDaMtP1w3S41knmFqCdF78xu8iO5l7FhXgsAmGt9Zy6GJH3a69MaIzwwPwTCsHJXW5fd7QHkS+2wV020jOgG42Kxjn13KCzBvXNY+5VBdPE0bc5aMuENoGcMbsqgCGU0gWYqYkMeQ6adJoory7IGoesclkAHO5uGL6do/tjgMMVTUliSI1vw47Pob5jV+kDhETysUwAgYj79GyVQmzW8OWDZDQ2FHounutQlJ0EYs4GaWwUlHMzXAKOz7ic9JSpzBK/CafCOOuU8edMBEn3ptmNisex76CffEWlpDi4bb8pPjMN+rrVdULqr766utVJdoKcnvu42Fks2MTegEjA4CN2ljcZRYSdRnas5cQPvEuQEq09+9Qp2IyB9oKZrOk7kW1pXgZFcGkk8587mCfxZpGWbuNX6EXEUWdGI40sU2NarnF8Am60NXrHGHLXag0Q3Bw1F2QXZZb23DwLgUZi+kxXaiLHLbMUd+/h+jmUzCbJerFBaymfD3DAmh3tgQABGnkjepCEVizXa/914JBAqkU5biVNaIRMZmS+YSM2il5cVwkTXYyRzQdotnsgJC7XC4X8da7UX/8owBIvLnyGATuTjmhZaVB25QIh4rOE/t4zGbpoZoyzTr2VLgfl7O3as8jPwSRh3LqkqJ6bNt0tHOO8xGcW+dN4G40W5e0Uak1VBwTLywICcY5nHrmFdoacjQjEcydKjU75vdQXt0Y5Q6TiFMy209uQHzx/wvqk78CqzVkNoKNh0CxBtIxRRVVnUncdSThuGZRCllugLMXaSzYNtQ9TUawpoU4vEkdUhXR6NP5xVTkvYUeL9E2/jnNZgWRjaHmJ9CLU5h89cb/Qb7O6j1Uj6f6s9ZXX329Zsm6gOAwWlGsIeuCtrSsISJ1XcCF4bant+kiOL/uA23lYOTz3NzmH4UbVzDbFcE6zd5P7W1Nz+WCjI32MTKQErbMUV1ckpg6ewAZBYjmcyTPvBvZuz+b7s/UcDkY+W6My1Ozjq/E/ikRk7hwRuMmL1DdeR7b5++gWFz64GHnR5FRgMExsZWavICuG/pVVRQrU1aESkhjCCV9t0oqBRkFaDY7Gn+yyVwEhF1In3rK/9kxr0zbEFdrctJlxDlv0SuI21fM73tRNz5eJkrIyM6v3RnbCbcg6XylGbOiZn6sKOKExo1VSZ27pvbiCoAXPoI3DRFEUEc3aeNxu4JmX5TlDpXIxv59MZslgTEnc9rGZCSCHE7J85Vm5M1zgE/PxtrQZ6KmY2rv34GoNvQeHz0Js76g51QBLT1EA/qsjg/o/U4yCnQO2Xzv4bPUAZMjGh2LpoLcPoDYXtDW3+oc9vKMGGjTE5h0QvyrcuvHyWYwhUiG9PWUvGfmckEG9brrrL5d67/9t/+Gr/qqr8KNGzcghMC///f//sr3rbX43u/9Xty4cQNpmuLLv/zL8Vu/9VtXblNVFf7W3/pbODw8RJZl+Oqv/mq89NJLj/BVPFz1gqqvvvp6VfkLjmkpTy1MO+NtcQlZbmiE54jbbUO+o9kR7PgIMhshuPEMdQOcIKiJOWTWF/wkxvu0AAAqgBWSMAQuXmU4pQ2+5TlElCA+PvRiavz0deh8Q14aNlWLIEIwP/GeFwqzDXyXyhqD5vw+mvt3qIPA8StyOMXg1pNQSUSmdCWxO71Ak7t1fYkwS6B5hGY1RbzoskZxtqTIGg4lDofssWoa1JvcE9Wj2ZS8QI5JJKWHc8Lojphe1gT2TDOIBRG691lS7nmsNmjWNKZry4qOcZgRVLSqfCA0AMjx3L9Wc7lA+/LzNF4DfBxPMD+hESjg0QMiyfz2IPaEnG0ayMmcu1GKj5+QGXp5Dr08h3GAz8EIIojQXpyj/sRv+BFfe/8OYx9ITOnlGXW8eGxnlmcw5Y44Tizo/OYhA0Kt1sDv/g/KeJQBve/ZzOdAyuKSGFRNheD4SQ5rrvxn3AVzm3AAcXAdJjuAnd+CiVK053cpYmhxSlDY8SHdXrf02d0QFd4UOTCaEwpChSS6hOwM/e4cuE7sIyjXoXqYX6+38jzH533e5+HHfuzHXvP7P/zDP4wPfehD+LEf+zH86q/+Kk5OTvCn//SfxmbTifQPfOAD+Hf/7t/h3/7bf4tf+qVfwna7xZ//838eWuvXfMw/bNWP/Prqq6/XLJOMCI0gJYE9QZt3dvPAr/DbuoTin+pNvqGV8SChkYuUEE1FBuQy9xdFt61lg5i8K20FEVJuHxSF65rVuR8lAfBgUBWEiAFPD/e34QuXKfOu85Rk1G0RElDUhXFbYs3Zy9QB2yy5C7YgsnoQolm/CCEl4ukQMgr8qM1qgyCJ0eQlpJGelL4fatzmpSeiqzCECkMKUWZzsmcgVWUXRCwlLGiMF2QJjwRpg85Rx3XVwT+df0pryvtzvqkmJ6ho8sSTMA/uw1wuiAoeRp5YryZz2pDzaIq9bhezvCybwEWaAUYhOLlFHqTtiojkRQ41P4HJSxKszKnap4YT2LWGzddoz+/S6LRuodIBw0NTmMU9DpJuSBDHKXm+TOl5Zu51iyDa83stgeGU7qNIrKvlHXqN7nw+uEueqaahz2cYU1cpBQFBX0kCVyH0iDZCVUGjXbch2p7eptd3cQ9q2lJ3dXxI5+iJzwHOnoeJOGtQ1zBh6pMCZJSQUV6FELsSj6oeByn9K7/yK/GVX/mVr/k9ay1+5Ed+BN/93d+Nv/gX/yIA4Kd+6qdw7do1/MzP/Ay+5Vu+BZeXl/gX/+Jf4Kd/+qfxp/7UnwIAfPjDH8aTTz6J//yf/zP+zJ/5M2/49Tyq6jtUffXV16cvS4EmoilhZQAbDWAPngDSMcxmRSOsNAOyGcWBhDH9xJ+MaZNPBjRe4guLmswhkgGPXRJYGdC2IEC0dBWSp4W7H4JX99VkzuOYlITR0U3uSIWQ2ch/n7ohoe/60GvgfMGIRj5yMkcwnlCHihlSOt+iOb2D+v49GK29yTvMUmQ3j7zhGwBCpp87UrrP62taMsrvGdPp6TV0voVta6KPA92WHR9js82JYxXHNCbdI3OLIPRMKpUOoLIRnZe9jb5onCHi7UNrDFQ29I/vEAcOfOl9U66csdxo3u5js3jTQI4P2Ct19T5mu/LdIkIT5N5g7oQPpKKlBOBVF3fXCaPIGAZygoSyCCPYHeUPknhk+OdgRFuC7r2VCmp2BDWa0tizLrsAZ0mdTmcUt9WOPl8ygAlpDAgHq93fdpSSOkwq8kZ0EZKnzew2NDLdrmAv7pHJv92jzTcFoCLyH9YFxGACOT2i42gqWAex/d+o1uv1lV9V9cZew/PPP4/T01N8xVd8hf9aHMf4P//P/xO//Mu/DAD42Mc+hqZprtzmxo0beO973+tv84e9+g5VX3319ericZw5vw1x/Z20waVCGP7JVfJIo3n5BYSf8ydoFAJAD2gEZIMIaBVtC0YJVMoX0MaNW2Iy+bpoGdMCLNiMkBAqgqgLiDjz236uW6UcgV0qGgtJBcViDSrkiyRRumU2gq1yfkmEXJBBCMtgT2JjzSCUQnV2jmgyQr3JaaTXNJS5N8wQHx5AJVsIJaF0hMIR1tMYUik/CtwvoSSM1ijOlzB1i8H1OarTUzp/YQDFYsm2DcLxmMnnqhu7OcEVRLTKbzQJRYZsug6ZRAAVx97LpS8XCJgSb3Zk/qZooAbWZecxvduX0dDLM5jtCnI83/vaOfTiHmEAihwiG/vcPOq2kY/KOKBnmqF96ZMkCoOQTOrZGHKkEORrqKObRLJ3BvnRjESPJuEXHN9kyvk9b/hX8xMyd8+OKU+QzerOUyWSAcRwBBURX8oKCTE+hNyuKF5osySP17gGwkEXM+OijYyGFSF1VOsCsriEFRI2jCHiAVyeoEgziIPrwHYFs9sgmMzRDo8gwgELUg71NhqGqf7CGog0g16edQL0EZRQijYpH+L+APDkk09e+fo//If/EN/7vd/7uh/vlD/3165du/L1a9eu4cUXX/S3iaIIs9nsVbdx9//DXr2g6quvvl67ZAA1vwE/FDIaSAZ0MWoKIlC7zoNjS6mQjOYum09FtCmoFOX+hTF1jDRDPE0LhANYhIAgs7vlIGCbRvRYVU5errDpjO0hb+olGdSI2URSwUbMtUJBpuogJvhovqbuS1tTB8YYNNscIeDDdqM5Iwj4NblR3+7+A/ItKWI+qSRCMEi8AdzhEYzWXbeK7yuVguavOb+TywEkgQS/yUb08qg711IBaLyQslUBoRTa9WUXXwOKzRFpBlQVgkFCHqx8Q108R5ffE2UiyYB8j1APdARyd+7LvONXndyibtVoSt/ncyhczBALKZOvYS5LH0PjyOQOT2EAqNEUzd1PAtsVCT1Qt8qUOWQyhck3NJLci7NxwEwi7Wt6fvbl6cU96jiODmAi6k7JuoDZXADGdOynINzLh2TTvTWwVnaRSm1N0TMyAISA3K1IsAURrCwhkwx6dA34nDmC5UsknqyhzxwIDEr/FgIIXUOsTiHSEWw2hdgs6RgeUb1ZW3537tzBmGOQAOoqPdRxias4Bmvtq772yvqD3OYPS/WCqq+++np1CUmeE02bd+4ndis45iWbQ16ni5QBvMcKpgW0ZaGUwEoJo0IynwcJRFsS08oa6kCZFqgLCl0GXdRsmMDGGWBaWBMCYQqhG+qKRQks/10FIY8FJczomA3DNYSpIfgi516LdeZm5heJhMzb1cUl4oMJ2vO7vguTzCfY3rlPXhxD5nMhJWwUIEporBaNMyjO0/ObdWUNg+5iFg4z6KoCchJYummQzCe4/MRdmKbF4Z/4PDLEMwizXa8hJ3PYMidcwqd+i3ERnDuYb72Pygk3lZC3SI7nUI6MLtdot1vA3PajPDma+s6OiBKY9YK6fEHosQQidObwczpHadYZ5uMU1p3PICJswP7IL19f2TC0jhZuDJr1GjEb311+n2RGlNksISdz71ey+Zo8UsZ43IAtc4jjm7BtQ7djNhV5wXgpQoVkFs+XaC8XhNvIxpAnzxCiI0phVHRl0875qKwKiTe1W1FXNp0AQkJKCckdT9t+ihhrKkIRDDGYUFKA2pxDT2/SadgtIXdL6OERTJRBBRFssYHlJQwZDx72X+Ujr/F4fEVQvdE6OTkBQF2o69ev+6+fnZ35rtXJyQnqusZyubzSpTo7O8MXf/EXP/QxPIrqBVVfffX1mmWiDBi0tNGnQuo2sZEcCl4o+diYattxeTT9pG+DBFCGjMBBRGZZFdFP9szxEfWOhFazA1REG3lu5OI2AF04cltSJywa+DgcABC6JpZQlVNQLkMXAfLA2LZGe36XCOazGXU2gtCjEUzdQla0tWiaFukRB+oqChUG4Md6LgDZxbWAY12sMUBN4zwZBTReNJo6Upo6T816h+ETRyTQeGvNZcVF15/w5755+QX6Pmf0iTCCSgce8KnL2pvfw4jwBsHxE2TMLnLqMLD3CEaTj8cYH3ysZsddziF3/QCwwZx4UqgkbFUQ/V7zyDWIvNA0+ZpM/1IRkoLzCh2jTMUxmvUawYDiWIQx3kdnNkse/608hNQZ0WWa0fOkGUfRaLRnd+m+BycIjhIvjE2R+5GmMK1//dYYen/PXiRxNjuCEOSP6sChHKkkJVBXNP5TIVS+6OJomgqWBa1tagR3/xcGJ++h2KXT36NImaaErDb0+dMNdV4BzqpkZESUQEymb9K/zM9cf9g4VM888wxOTk7wkY98BJ//+Z8PAKjrGr/4i7+IH/qhHwIAvO9970MYhvjIRz6Cr/3arwUA3Lt3D7/5m7+JH/7hH35Tj+etql5Q9dVXX69dQsJGGfmmZNCJKS4raFwiLGemJdSBEPUOQjedL2pfRAUxYGl0Y1VIK+xug5DHe/ujEZffZ4WEjUe+Qwaj6bl15TsNwrSeNUVkbQM5PqANtXzjs+5s06DdlQinUwBAuysQDGhUuL1DXo1onCHIiLEUZDRGC/e6XkLxun8Y+e29cJih3VEWnx9XgQQWCvI3QSm0RYUwS6nLUtZQCXwsi5zMYdhvY+vSG7LdWNCxqgB0xHTmaKGpSYw4k7XRsFVJnKe9cGghJXVvkowiWfK170KJhLxPpm2g8y1UHJN44VGf4LGgALzwgdFkskeXXWi1ga4q1Ovcd++imzPPZPIGdne8kkCoMhvDhpFHNQTXbtHrMLoDcgpJI8ghLSHIbAwY2r5zgFnn33JbfuAuFExLnyUpu4+yMZDFJX2GVQQhKiBfQgwm0JslrDPWpxmQjGCDGKIiqrqIqVvajVZj6rzanMCifOwyDAE8Og6VQ308zP1fb223W3ziE5/wf3/++efx67/+6zg4OMCtW7fwgQ98AD/wAz+Az/qsz8JnfdZn4Qd+4AcwGAzwDd/wDQCAyWSCb/7mb8bf+Tt/B/P5HAcHB/iO7/gOfO7nfq7f+vvDXr2g6quvvj5tWfZGvWa5kQl7UyjMGIRMaHY02lMRXcBYfCEKaLTnfFYqgLWGLkimhdQFUG6AZARhtxC6gbUBEHXHQBewEqho7NIZ3Luuj+sMWK1pzT1KEIwnqBcLCEmcJ1PuYBriPu13olzJZEBYiGwIlZJoopetOtHnCeMK7Y46Y267r1mt0BYVonHmMQp0F9rQs0YjGKR+NEaG84Z8O0wgBzjAGCDcgFQA2ishyACxpOjBpTezy9kxzPKMcxXH3sck4tT7kdxIT18uPGrCoyccimKzom5WnFIWHocFy+HUb/G5canrCrbrNVQ2xCAMvCi0uzXk0U3oxSl7rjjOJ0qgJBPIR8TqImjmrhOTVUkjWzaio60hZ8cksoSEvjj1IlqkGeRgTK+rIZGlL07pHMQDmDiDMBEL/bDLkTTad6ZMkUM6BETb0Liy3AFCQNQ5VL6Afsf/Aa1CyPKSPse8tarWp0SCHx/Q49Ylmfh3q9f+d/QW1OPoUH30ox/Fn/yTf9L//du//dsBAN/0Td+En/zJn8Tf+3t/D0VR4Fu/9VuxXC7xBV/wBfhP/+k/YTQa+fv8k3/yTxAEAb72a78WRVHg/e9/P37yJ38S6iEM9o+yekHVV199PXT50ZyQgABH1hj/PS+oXDfL3UcGgK5pdCcDvqBxGHNruKsVEmhUN2ROb0qira8vqNMQRhCjOd2HEQBujd4aQ+OlydzHnDQ5C5+a4luM1h6JoJIILfOCXPZckNLx+jFS20AC3cWeq8kLBGnsH6stKtQbEhxhlqItKqKoS/aCtTUZ48djElAsikSc+HgV67Yb98ZyAHXAZJSg3W7Rri6gHNdqtyF/0h4cFSCoqpzMoTz7au8CFUQ+2BfoBJwIuk4RgE548eiOXmTNcS9jWCnJBN7WwHrdGcJb2ij0mX2MORBBCBdfA0dbByAmcx81I4IQ7fmZj9CB0bC7tfdRiWTYvQ5Dyw5qOGVfWO0J8S6gWSYZxJy6pQgS8oXtdT3dZ9WNMsX4kC7mQUSRPXudGxulgG67HywYFGrjIYRhs3pTUcevLr3YfLvWl3/5l8Na+2m/L4TA937v9/6+W4JJkuBHf/RH8aM/+qNvwRG+9dULqr766uuhy8qgi5FhcWXTCV3UWUQBAGToL/Si3tFmlLugaRJZpiqo22U0RXgECfuyaup6ocMvGN4Wk1V+ddRVl9yNkigXlwhXW+imgZDSixyrDbIbx6guLlFvaDTlxmm7syWCJCLqeFkjmnQ/Rbd5CaFqJPMT36FBECK9fs2LDxEnCNKYTweHLR8dkEByzKUgQnQ07sCkQUQhuyymDI8ERVn7jpSQigSb0VDzE8jRlMjn2y2Uo8XPjry5nY4lhUwGV8aQAHzAMLGdapid7oRMGBG/KowAzsxzAcmCMQKQiuJxypx4YGlG59BtOrKQNdx5c8ZzNzKkCJ6IIlrWF35z0xvheZQph1MYrBj6yRiJZIDg+tOwdUHPPZrBsOCV2Qjt4pRv24lUAIw7KAEt/efWqhAmHvrPr40z4kfFGcUrpSPiWElJRHXd+h8QZFNQZzSIAd1AtiVsEEFKCZ1MIIQknIOQQPlqtMZbVUKKh+tQ9eHIb6je3pK5r776emTlxiVXypHK/Y26uBkriKQu2hqirchz1VbUaShyoonvd76sIXhisYbN18RNulwQX8l1V9y4L197o7huWi+mrDEIswSSRyK6qrwxHego5G5kEs9GiCYjb7oGKIjZakPbcA7h4EYSbrzVkAgyTQsVhtjcvk8CJNvbmJIScjBCeOvd/BLllZw+ISXagoVj06LdlWh3RXfc5Y4eczJHMCZOk/MZSeZAOTCoo7K7Mty1MfmGRpmcvbgP8RRKdeNGqSD3+F+2bTxqwX1NJDTatPnae7scB0vNT3ijkL1SaeYjZ4TbNGQh6T8qRQ5zufDbh+RHYmM9d7HMZkmCLozpdcadaHRoB5lk9GswhkgGlK+3vqDPHm+xQqrOiC4DmDjzoFkTM1PL8AIGL01ASJgwpa3TtoKstpB1AVluKI5GN7DhACYZQc+egMkOX/sfzltQzkP1ML/6ev3Vd6j66quvN618p4qFE6zt4J0Aj/YU44D2/FTWUExNkcPs1jCbFYJrt0h0mZZup2mLy2xXns5t8g3axSnU7AiSAYrN2csUEzMcQgYhoqKCVAr56QLF2RJBlkKXFWaf/RSq1cZfQBwzap98XpwtEY0zMpznW5imhYwCtGWFOAypi8NsqGBKnhlblYQtABBPqbM1ffeT/nv7ZcodmcL3qOIIQt/pckHL3ohujO88OOHoRByZyw1wuUBwcsvzoSQb0On+e12oOGG+VemN4t4gzqZuNMS/cl93YzzbskCtS+pwAcSh2qwg0gwKNK4z+QY2aSDf+2Xkd3vpd4gzxkBQh2wA4H1VIk5I7JW8sRiENIJjs7mDgrpYHts0QFBBTo9g+TMkkwzava66pC5mNuLjZIK6Cr1JHUJCsIfKhjFslBLCI0gAIWCcFzBKIfMFoFT3g4EKAKQwUUbCqtxAjg7QRilslEGUG8jtOSRzw/p6+1YvqPrqq683ta6IKqk6tIIjU2PPPyUDWOehClveUjNX/FfksWID+r4AcDEnkjhT7eWCDMRhADkde/GSXjuCLnZo8hLxdIRkPka92aHdEe4gSGO0RQXdNFBh6IGZAI0Fm7yASiLEhwe80dZ6USMUeW08H6qpoYudzwCsN7nP+QuzlLhRQeQz/RCnZNJ2o662CwBudxTM7BAJummQHs3QbHbQdYPBwZHPtvPdHTaPA/BmagShD+ntMvxoA1CmGaEGOCvRIRqAsIu/AaiTJAmjsB92bduGjO5RQmwvx7jKxtSlkZJe0+/+3+R3ixLIbOT9WSKMqMPYEA3f7NZQYehxEpAKpi677lmakf+s3JEfiseMtm288RxtQ+NMo4E4ocdva2+uN7s1gpOnodPJ1c9tlBLLynWqGNgqqtyLKfC2qQmTbmHDGoh2DaiA0gR4ExAygNqc+YDrR5rlJ9VVn9wbuH9fr796QdVXX3296eWiaKCbKzDFK9/fH+dJRRcy5gLJwYhGUdZQtybpRjkuW80GEWxVoD2/i+Dopu+aqMkcCCK0qwvfqbLa4PCPvRPl4hJWG4yfvu7DhF13qilrqDBENMo8c8pl+EneitNVhXA8oPgaHhW+0m1imhZBmPg8QGQkzOpNjjTp/FNggSIHIxpr1SWsVF5wuWrLCqZuEY1J4ISjAfTi0n9fMbDT4ySAbhT3yvPu8v2qshvbAR7L4ASibRvIJASSzHeG3OO6++yPJ31MDvuqYDQMPw/ARncev7nPgw82nh0Rvb5poObXuw1NQ5ujwnXsjKYxIECG9Cghgcd+LxoBrijz0Wga+QUhdTejhAKZGRpqqx0wZlHMm6K0aarpviETwVUEG2eEAqkLAoTGw6ufaQvqujmB1ZSEAuEkAFPk9H7vZwa+1eVYWw9z/75ed/WCqq+++nrzS0jmUPF/zHbv4rs/9tszmsO0sEFMJuTtCma5YnEU+9EMxZ8wfqAu0d6/A51v/dq/FxVtDZUN0a7XKO4T+TtIY0IYaIPifIloRAKlWm38odWbHNEoQzwdoVptKHNvSptkzWpFz4sASMLONwXyLFnmQIUsOHS5gwwDYlwBnRfLmcdZCOjlWQezBDjMOEIwoC6V65rV69x7vKRSaM7vI5wf0gWbvVlyOPXbh/IVvikvhKqSomWMIUGXjUl4NBQpA033tXVJxxR1IE3fqWLx6jbXunGh8X4j13XqHoeFVBgysLSLlhExjRnNhllS7nEZJ2GNE4A7iHLPaxWEUKOpN7R7zlVT+5GmZDElwphM/bxRKJoCoiJzvdUJsagAmHRCgsp1qoKYGFxGUwfL8GhWBSSgeHQIMChUSKKmM9vK1CW9rrhbbOjr7Vm9oOqrr77emnJjPrdKzUG09HXbfR9gPEICyJagoMAVwULjQQUbppAsmkxLcEdz/x7AiANnqPaEcfYfOap4NMqIQbU3yhNK+uw9gIjooRogSGIa5RlDXKYwIDgo55nZpiFxoNmYDuIX1Zcb6Jo7XKO9uBEew+hiB4myG83VJSwznpwp3DZdpE2QJd5U7yqaDlGvtsDiASEgnKeJo2xgCGXgaegAd5EMec+KnBET5IOi8d7+yI87UHXZPa8b9Tk0RXv1mAhlUDOXS/q4Gts0kEFIeIQg9BBTd0y2oZGcG1EKo2jct1/8nELq7nbJwI+m9OKUfFKTuR9rOt+YZLCn5c8QOEBa5JsuMDvN2PCeMjC27ZYshCSAqfdL8fFoCj+2DATdH2cL0xLY073vceLP6yOpPbH7hu/f1+uuXlD11Vdfb0lZGZC/xOMUWETtm9RlABvxBl9dUGyHNX7DzI2VRJVDtOyrycZXsvrCYYb6cgOVchxKlEAXO/IdlTV5qhIH0yQvUpjxGn3T+aGc78lqQyO2yai7GAahN527LpjnNbkLZRBBRhJteY+6Sk1DF+qq7MRIS8dTnC8RNy1UHHebfy64mEdDEkAwYyhoNkRwcgvtS5/E8uMvIEgjJPMJdXD4dQYD4lV57lZTezHlqOFwcFIWc24E5iNo9jpDAGCrYi8cey+ihjf8HIzUj/GcyZxHjoJ9U4K3Dtv7dwhzkI09hBUAeaKGUxJ3zMXCbkMdnuWZN8ojSroIHI6nsUUO29QUsBwlnvlE4dgRgUClJPHN3Svb1P6YUDYkzkdT6oJuzsgLFWcw2RwwXUqAo/L7rVPTdkb+toJoSh5Hx0BTw+yIByaiBLZ+dKZ0odTVH0jewP37ev3VC6q++urrrat9oKcQ5FdRoYcoOqSCj+4wDPPUujMcu5y2ywVxhKZHgGlpzHW5gK4qpO/6bOq8bFaoFxeQYUAepvHA4w6c8BBSdkb0skYQJlBJhHqzg2Tfk0qiKwZvU+QdYRwAJKEREOx1HdoaVioMrl9DvVxBIbwCpNRVh0AQUlKnSyoyh2cjgl86TxODK80eoLN96ZMAaGOw2ewQzQmRUC8WPpJGSUWP5SJrXEkFEQIIGV3Ax2Q2S//6iLJOozq/zVdQNqLvpjnflFTkXwJffJ3Q4rHlFaioMUQ6P79LYmp2RKKm3HH0DW1a2ighgRXRKDK4/jQZydFxseRo6jlepsxhLxckHtxmIPu2RJpBL8/92FFkY98VEy7aBoAczej1hRHMYEojPaDLoXQ/AFhLPyDs/zAgVAcG5fdf1DmNsKscCCOoJ94N/dJz9BoPnnzlv46+3mbVC6q++urrLS0rA+480UVJtBVdsJwx3ZuB+WLmQJAuuw2ALTY+L842FXVO+Kd/GQY+XkakGfT5BYSSvuME0EXd1C2anDhOIksRpDGJkIhEkuJNPTcmVLKh9Xj56p/2XcyJrQr6XhCRSV1r2mJbr7vbGg0hFVQ2pDFYvvajMg+c3Kxg2gbhtScB3mITaeaN9dYYBAPqzqjRMdSEu3eum+W2DJnVhLZh4aC6DhRok7Abixb+GAXDO935J39Ux9RyooOeTPlOF4DOnL8/KmS2lXBbfnvYBSeIiGBe0O98DLYqeBzJPq5yRwsKRtPXAYp0EURC96NdpslbXibYZ1rZtoHYI6/Tg9BmqC1yT6aXQQgzmALp2G/1UceJN/94M7XDLNAmKwktjiAyLYn/qqDQZgaP2nxNcUmPqnpT+mOpXlD11Vdfb30JCVgNF5AsdOMzAP1NdE1fB3UfJABkY6BYd2DHqoAIY7rwLs/8RbY+P0N07TogFW3WAWjWO+89Mk3rO0Muvy8+mHgSeltUHgRar3OoukGYGdhtjnCYsSgqAR4T7efW2aYB3IW8rYHRjB4vCiFHU7RLMsULhDQCG00R8IhNsKcoeOKdaE9vw5Q7D9A0lwuoOEa7K2DqFlrWkMYg+X9+GczqHJpz+gASMTIZECKAuVGWI26u+GGM7rhXzHESYehHcwAZz70ocyPDqvTMLer6GB6rpd34c2/Tz2oNEWCv48bHF4RkyucNTf99gHxNkvxKcjLn0V5InUjmUdm6hFmdQ86ukbjc295zQswZ/n257EWpIA6fgKy2RFLn3EORDKm7tVmR8ErHhB3QLeT2Ab3+OGPOFHclncDisZ8V1N0TdQFb7UgcNhWd1yCiTczXAt++VcWC+KHu39frrsd61tq2xfd8z/fgmWeeQZqmeMc73oHv+77v89EFr1W/8Au/ACHEq359/OMfv3K7H/mRH8F73vMepGmKJ598En/7b/9tlOXVnxB+/Md/HM888wySJMH73vc+/Pf//t/fktfZV1994UoEzRUvimRhZQzQVrD5Gibf0EiHuyj7oyZo6rLI0Qxqft2Pp5rz+3SRdmBOzuhrdyXasobRBmGWYnAyR8SbezIZIBgkCLP0yi8AXmi1u8Ln+7kSoTN6U5eo3W4ZLxABbU2jxGwP9SAVqrMHaJfnaB7c560zF4uSAsZAzY59IDOJAoJYqiSCjGiEabVB+/Kn6Jy0DcXKhIE3gTsoaEc45zHeHtncjfqM2/rTurv4vvIiHHCXy4lHl4e4XvuunXsuqzX9YsHlgaD7uIA9TIN7n+RgRNuJUkIkJFglU9fVZO5J6jIbe5EF0GalzMb8elb+cf3rlrIb+UmF9v5tIF/CRsSy8p0yIYkk70RXUzC5vxtLiyqHbIruc+s6q/y77642FUQ8oI3CMAaCmEbXr9i4fKurJ6U/nnqsHaof+qEfwj/7Z/8MP/VTP4Vnn30WH/3oR/FX/spfwWQywbd927f9vvf93d/9XYzHXYzD0dGR//O//tf/Gt/5nd+Jf/kv/yW++Iu/GM899xz+8l/+ywAozRoAfvZnfxYf+MAH8OM//uP4ki/5Evzzf/7P8ZVf+ZX47d/+bdy6devNf7F99fVHvTxCYS9AlYWUMC0FHhc59PKM1trdujsbnR392iES5GBE0SaDEaJrJKiqswdXtvbcKEwljBuIaFPPKhJa4TCDkArBcAhI6QORJa6OC+l3DVRkOjZFTp0cHn35wOWEuivROIMaTYEgIoN4VXhBpMsayo3bXHDvcApb5j5SRcQJ1NFNH8ETThMIpWCKHO3pbT6fFEYcnjxJ900GQDKA2W3o/GXjDmcA+O02N6ZU2Qg630DsBUoLfp8EuNvGkTOWu0O2yKGu3YILIkaTvyLuhcSUo5k70/krL9BmR6gKyxl/IhnAhNS1o/d1DdHWvrMj04y6lY63ZQ1sOmYR3tDztQ1MgW7MmQz8cZrNEpAK7dldhE8OIEZTeg/DiER9OoZIRoBSMCriTT828LNYEsUlTJjuIUEkb5/SaxKauoNCSgrzFpJGxkICVX4lWLmvt2c9VkH1P/7H/8DXfM3X4M/9uT8HAHj66afxb/7Nv8FHP/rRz3jf4+NjTKfTT/u4X/IlX4Jv+IZv8I/79V//9fiVX/kVf5sPfehD+OZv/mb8tb/21wBQR+s//sf/iH/6T/8pfvAHf/AhX1lfffW1X94vJSRgGvozj/uEaSF0Tf6qMPJMJSEVzGbJW18ck1KXnKFnPNixfvlFytdjzAC4i+JwCW6LT0WhN6g36x3hCKrKwz9hDHGn4hjNlphPIYM4/Ybgduu5UjAG5eIS6dGBD0IGALtbI75xkyNTJBAlQFsjPjkBjIZKXfQLmdz9dluSwTYNTL4mYcXbgWp+Qq+d2VEuWFgOp3wcGnJ+4nEBKk6viBkXcuzHcoD32JBYranLEiU8gmu68R8DTd0oTc2OYZsa4a1303vDz+XwC2ZDXjY5mvpj0Od3IRk+6kalzgyvJnP6+3blMQcizUijBMR0srtLEj9SEQKBfUwUS9QA2RQqGcGc3wb2iPG+3BiSO3/64hTy8AkIFj1+CxWACUKYiI4juHyZxnfJECYhhpRsCpgguppP6RYrNG0tGmMgwhIiHcHagDceU8qpfFQlHtJDJXoP1RupxyqZv/RLvxT/5b/8Fzz33HMAgP/5P/8nfumXfgl/9s/+2c9438///M/H9evX8f73vx//9b/+11c97sc+9jEvoD71qU/h53/+571wq+saH/vYx/AVX/EVV+73FV/xFfjlX/7l13y+qqqwXq+v/Oqrr75eR73CM7V/UfKMIKnI9wP48GPLpnUyEufkncrXdJFPMwTjDh/wytJNh0Fw5f7svFRCST8iEjzicgHJjlPl7qfLmoKJm9bn9UEqBIOEsAXg0Rdf2J0IdIBMsDgUcUodJTcCLXMvPlyXDCCjtw8rDkI6N3ueJbPbwOw20MtzL1JEMqDXw6JChFHHyko422845W6KIuG5Nw68QlsPOwO5mh1Djg9ozMYjRpEMyAjPUTBOuNhyR88nybAPoymcOE69cRwgsWcuF0RAL/e6XUFIx13toDcrP9KzdQm0FURTQDIQ1u59jpwJ/pVUchEnHe6i3MGuH9Bor85h6wK23MLWBUTDood5UyIISbypCDaI2YAuu1+vKO/1c6+xWFPnNUofrS/JmdIf5ldfr7sea4fq7//9v4/Ly0t89md/NpRS0Frj+7//+/H1X//1n/Y+169fx0/8xE/gfe97H6qqwk//9E/j/e9/P37hF34BX/ZlXwYA+Lqv+zqcn5/jS7/0S2GtRdu2+Jt/82/iO7/zOwEADx48gNYa165du/LY165dw+np6Ws+7w/+4A/iH/2jf/QmvfK++vqjVUI3XUdK11cMulYGEDIADI9L3Ncdz4hNzrbc0e8sJIgPFUFOjzFoGmxfvAsDElButCf3GFMA/NhNJZHvYKl00DGY+KIXDFJUF5cQ0wQqAtA2PuPPNC1kGKDJC9+ZEq7jA3ifEG0C0sVVTuaEfahLElLGQOdrEj3GEJ/KaOhiB13WPkKFGE+SNt50Qh0YN5rk+wEgkRMlHnapLxfMYWJEBb8utznpxVeaQTnvkBNPexwpt03pYlzI+xXRKJJvK4LQ87Psbs0IBgXl2FQB4yOGU8+esnuGd9flIlp7A1OuyBSulMdOiDCCKXNCZugG7eKUNicPb8Aipi5nRKLJtg2EMdTZHJKYM2UONZnD5Gt6TeuLbjTKxylHUxI+9IbS59Jt9OmaBFWc8Zi6paiZV4gq1zW0MoDNl52wSkYE/+zrbV2PVVD97M/+LD784Q/jZ37mZ/Dss8/i13/91/GBD3wAN27cwDd90ze95n3e85734D3veY//+xd90Rfhzp07+Mf/+B97QfULv/AL+P7v/378+I//OL7gC74An/jEJ/Bt3/ZtuH79Oj74wQ/6+wpxNYXLWvuqr7n6ru/6Lnz7t3+7//t6vcaTT/Zckb76+oOUaHYQTUUXJCem7Cs6SuzjMS5ahLslZrehVXlwbp272BY5rCzpgt/WVzAJQCeiAOoutYA3nAMkrshvVVJW334HIQgRHx54/lKzXlOHqmlgtEYUBpBsynYQ0WA4vPJyPIMKIKN6sSMxlgwojqRuEQzpMdpdiQDk+SJBtfSByZIN04KN2fSCeMtur5Ngyxy2zCA4G9CPRVuQUV1rP0Y05Y7gmjUFJIsk67bqHFOq4Q5bUxPbyr0nvDWnLxeI3vGsN6WbHW0PyjTjkGvt30uRZtSxcl/P1yRmwoi6ZYxWEMzlAsfTuFBnORiRJ6zaweRrqMmcNhytIVq5otEpjIHZrmiMWOZ0PzdCBDwiwb0W2wKQfJ7CFDbK6PHaGmYwo88tj6p9d0rXHUnd5VAaDasiGg066Ge+9J9ryID4a4+oHtZY3pvS31g9VkH1d//u38V3fud34uu+7usAAJ/7uZ+LF198ET/4gz/4aQXVa9UXfuEX4sMf/rD/+wc/+EF84zd+o/dHfe7nfi7yPMdf/+t/Hd/93d+Nw8NDKKVe1Y06Ozt7VdfKVRzHiOP4Nb/XV199ffoSTQG5W0K0Daxj9wQxbJhcxSa0FfRmCXO5gBh0CyemyGkLjHECAPOWNku64LNwCbMUJiTyua4bxDMSAftgzyZnGCUT0sNh1o3GlPJbbD5uZjCCLXPfnWpyEkKOsK6bxkfUtNut50URuTwlkcDeJKt5LMleJxd90+5KVMuNPzYVhpQb2DbkJ2NUg5DUkTObJWxbQ82ve/SB3qwgXVjwcEp4AiaIi5Dz+IoctiQzvQ9OlsojCky+gd2xlYEZUjIbeTElOPMPQsLma4TXnyZxwufP5BtmRhmYIody4ksqT26XgxFat5EHkPDZrcm/5rxkSlGnCnSsMkrIU1bm0BvKd9SLU5+DqA5OYNIJzNmLtBUYEorC1iS2JR87AB/v45/eecV41CiqDaAiCGtgkhGsCqGKZYdHAHyI8hWoKwitYOPMx+9IZ2xvCRFiwxSPrHoO1WOpxyqodrsd5CuUsFLq98UmvFb92q/9Gq5fv/4ZH9daC2stoijC+973PnzkIx/BX/gLf8Hf5iMf+Qi+5mu+5g28kr766us1y12IwgFkdQ5RtLB1AQwPuqw0V0J6n5Et887TA1BY8n4GnOfsNL5T48VR29BYkKNd/P9yUnkB0xYVdZj2zMtW66sxKkGI8KnPRvP8byG5eYMEQRSgXlOHw9St74JZNrRbQ1t8DiCq4pgRAmW3LdjWTIA3NNriPzvRJqSE0NKT4vXlAqLISdwMxhDZGMrBM/kcqdH0ykVQBKEfnZoiBzZLEk6zYxJq7obZiMOPdyRAuHsjwgby6GYX5cIjOts2sEVOx5RmeyPEFUQQQs2OoZdnfhMSgKeYu5gY15kSCcXymN0GMhlAa90JOhB1PUgyioThDhv4+c1m6U3vttoBccYhygYYHUIGkQ9KNtsVpDEQB9ch470AbalgowGJ+rogkn/bwAQJBx5z94vFkPsBwMZDoCkh2prGeBz2DffDQkydSh0kNIpsShoN7nnH+np71mMVVF/1VV+F7//+78etW7fw7LPP4td+7dfwoQ99CH/1r/5Vf5vv+q7vwt27d/Gv/tW/AkDbeE8//TSeffZZ1HWND3/4w/i5n/s5/NzP/dyVx/3Qhz6Ez//8z/cjvw9+8IP46q/+aihu03/7t387vvEbvxF//I//cXzRF30RfuInfgK3b9/G3/gbf+PRnoS++nobl3B+E2sA3XS066gAhISJR3QbdObifR+VKw+r1JrJ2x0l3JcTQvtjnb3vWb6fSiK0RQWjdeedAgBj0O4KP7qzxsCsL3wYsFAK4XjsY16anDxfum4glfJjknqTU3cnDK5cvGUYkMfLdCZ5x4JyJnjyfSkaRwYhRc+4c1KVQMIMpdkRdfLceXBjp7ok5AD7iUScwG5WsBxjI0dTH5jsoZqc/weg8y2FEYkXZkJBSnq+mPlYnG8IqZgbtiaRFNMmoGGTvSOYd++DpG5Vmfv3T/CGINhb5ZYC9t9TtLX30Jm9bUe/rWg7ZpV1j7n/+ZCSwoqNpttwt8iqcA+DEABMOrdSkTG9rSmCxhovjGw0IDCpGzfuCX+rmNvFAd9WBkCY0OM/yurBno+lHqug+tEf/VF88IMfxLd+67fi7OwMN27cwLd8y7fgH/yDf+Bvc+/ePdy+fdv/va5rfMd3fAfu3r2LNE3x7LPP4j/8h/9wZTPwe77neyCEwPd8z/fg7t27ODo68uLN1V/6S38Ji8UC3/d934d79+7hve99L37+538eTz311KN58X319UehdANZ5YAmMaPP77KPxkCElxBH76DbmRaiKaC3q+6+vMpvyh18vIgTU20XnOxLyg426TtG5MsRaQbkBN60bY1kPkG7K7G7dx+Dm9f9/R2Pyj1//anfBNDFqog4gZISotyhXFwiGCTeS+WeEyBEg+umtesdVBzTtmADyCCETAYoF5coF5do8hLpfOLN8iqhEZ3ZrKCrioTYZuV5USIkRpeczLtRVhBSdt2OoKiKwaDudbjbAIDN1zxGjEiAaRqZEmnceJGieZwoh1Oo+YkPE7YMIbXM5Opo6J2fyJU733CeHsWmcWaMWRa1DvEAsHhWNCYUcdLxovj9dSITUpGnLh0DG9oUJAN+ABsPyV8WsZCuS5j1hf8cORSHlBJ6eAQrJiz+O3EKa6grpQL6vOoGstnAmhY2iGAZr0A+KtAPAU7EqBCiKa5uA+o+HPntXsJa+8ofBvv6A9R6vcZkMsH909MrgNG++uoL3iwsmgLq8h4AQFRbNLefI+ExmtLW1cGTNOprdhDrc2iOBLFNQ+Mfd3ELoq6rsscV8ggB7mzIbARblz4w2GqDYEzBuK47hrYBghDb5+8AAJL5pGNLAX7zzl3ArdbenI62htUa7XqN4nx5RVDJKEAwSFCvtpBRgOjaddgiR7vd+u4TAISzGUSUYPO7z8Fqgxf+8/9COktw/Ys+h0jtQzfWVGi39FgyCKGObtJ5dOG+bDp3QsnsNn4URp4jEqJ6cXolgNnHs6Q0crN16c8lQKv/MhujPXuJLsyDsd84FAl1Z0QYwmrK2zP5xnejZDby/iXw++zy8hBE0It75OUyBmp25NlVTmQBHftKza/T62TQqdWaDOcMKFWzI6j5dYgwhn7wMi0mJBnk7BpMMoJYE3bDAVBtkfO4lUa9cnTAPqkINs4gSoaNxpkP6zbxkDL4hAR0C1lewoaEuzDJ+GoXSDfkL1OhB9V6VIhpsV5vcPTMZ+Py8vItu2a469L5/+dfYJwN3vjj5DscfeU3v6XH+nasPsuvr776etNL8IhPVDmFIVc7utAaQ1tgSQaRDHkdnQ3S6RjqSHVr7W6sA1C3hzlU5D169bjPth1uIBgkaHclomvXuwt1TB0IawyEUh6tUJwvIeQlZBQgno5o3Z/jZILhkDo9+0DMpvFjPWsM6l0JISUilcE0LeKDCXRVkfhqa49XcJBRqzX08pzM7FGAw885gVAK6dEM9WqL+nKDcDSg17zd0v2yhMZkoI05vTiFmszR3r/tjeAyzbzoAuARCnY4hW7OYPKN37KDVB0E03O+aNSm5ieMadDQi3tAmUM7wRSEJNTcc4QRiS13foIYaFcsZFQ3YnT5gGCchMNhuK6b1D5Q2bYNiT/eEpRRQt23poZgASekJIFUcDwRd8es0bC7S9rqC2MKqo4SmOEhMJGQ9Q6WwZzGoRF0DYsMNoipGyUDmDjqwoxdbp8DerL3SlRb8mBJdQXuCSHocyaDDhoqAzz6LL+HGNv1I783VL2g6quvvt7csoZ+Ogfo4qMi2GZFeIMyh2HDsqpLHltN2XvSUv4ZqEviBIscTqlLhP0YGOO7UwSALH02GwDI0QyivN/5cwwhA6oHF4Q9GJPhW4UhtCOphyEBO/MLxIcHCIZDL6q8+T2MvHjQDfmh2qJGNB5AhgGCgyPYqoBkgWKaFmGWXhlPNqsV2qJCkNJ24OzdtxAfHwLs7/LmdDei0wbt+hJCbaCyEdrbz8G0HPqcr8kIfvYSiaByRwIjiMioDmJPmfWC4KdVQaO2stvOc2gEEacQg7FfDFCTuR+tymwEs1nBLM86Ir071+MD8k8xBFNkYyipGF/AfCupgLaBHIxhixxyNIMp8w6fMJnzxmDUfW6Mhs3XsEFIW4v5uutQBhRk7RAJHqcRxjyqi2GiIUScAZpI/CYawg5m1HWyhkZwMoCRExJEQUwGc4dJcEKfu1UIIvqa0UDDsNa2hI0yet1S0djP2o7ALiTdVgWvCQJ9y6rf8nss1Quqvvrq680tHnPI4pL+yv4pP3Jj87QG07/DGEKv/W1MmfsRnuKVfsuZd+7+AEeqKNXFo7iLQBBBGI3o5lOwuzXa9SVt24HYU9Aa9TpHkMbkWWKDuFBkJC/yJQmp8RiBG3cYxh0YjXZX0IafkmiL2t/XEdUd/BJS+a6USoga3u5o+y8AEA4zWKMJMlru6LUWOxit0e5KiGADoaTfKgyzFLpcwNSEbJDBCoLHaCKM6Pxyl0cYTXwtNqcjiPyWmQhC2Fp3wmhv1Cdi2vgTcUr8ptEMtq0RHN1E0xD1XbjHKHN6Tja5E1w0g4jSq0sBRne8JoCED3Os6Ll5oy7NSHC1tfd3WWM6yKkz97uNRt78k8mANjDTzI/whK4hyzVMPIRJYkIfAPS5rLbkjdrvGAnBn1vthZBVIWCt39ojIK3q2FdCAq+EdaqwE2QOZCvlq1MC3uIS3AF8mPv39fqrF1R99dXXm15WBpD5grofIFSAzEYQsyPywCzPYDZLaA4+tm1NZmM2ELsVeclr+d4zxX8G0OXTtQ1EklG3w5lpjfZjpzYv0eYl+ZomI1QXlzBa+6gY75/ijk00yhDOD9EsHtD3gm7kZyuNJi+gGw5fZpio1YbN40vyB2UjuvhHAWQyoK5QkfsNQhnWQBBCpVPo8h6sNqjv0+8qIohnw/FWQRrTc5Y1jGYhpCXaHXGsLJv36fhK2sAbjLpzxYZwC3jfFaQiA3vTGcqJt8XMLw5X9kJGhVCjKSEUQBdcA3ihKwcjiGQI64SG+xwUOT0Gl9muWCgRvd0YA7M4RXDjGUAq3P9//zscfskXktneaD82tW4pIEr8a5TjA/JpZSPqLgGQ+QWJGoBGzmEC0VCAsjRr7z3T2bzLkwwToDUkjnQNWW6IdD48pI0/fjyrom4b0Akufq2yKfh16+753eZlwKJWvGLztK+3XfWCqq+++npLyoYpUOY+fkMOxn50JEcEcdSXCz8OE1JCu00zV86sLE23TebKjZNceG+ckim7KglCmY1p/LZnFif8gSTYo1u5dzlvAGA0wqNrRDYva1SrDdLjWSeYOP/PRdpEowzF4hJCSeoqSUk09CCEHIyhRlO/GUcm8IKM7m0NOZoBAHWvgggqhaepu3gbF4ETjTI0eeGRCyp5RWeEu2eO+WSkgspeYSY2msQhe5aM1lfFWNNtoZkyhzCaaOpaA01F49ky97mADkugJnO6XRj7LDzrshd9rh4JKJEMICqGq8Ypwtkx6hd+B81Ln0Bw/RkcfP6z9Hng+BrnvXJYB8feIojo2Is1y6Niu7nw25W2JZO43BGY08qUhFRdkIgqNxDNznOkLADB40EbphSXpGs/vrNBTJt9bixIL5R+4/BvK6Q3p7vPKG0M2ke65UcdwYcYMT7K8eTbqHpB1Vdffb3pJSytmXfdqTFEwt0ZdxEcTgnYuVkiOH7Cb405eCQkGdQxGNEF2oEsXXFMieALqEwGfvznRVqcIr6ewdYlQqafB1mCarkh5tSYNrUsgzNtW3uvVb3JPfVcSAmEgAwDROMM9TpHMp/Q69CdICTxllKHxeEKeGtO378NnW89WoFGb+T9kpO5F0T1OeEKwiNKbYgBPxoszpceJuqCnWUYsEdMU1fJeZ+KHEgIUeG8SSKMuq2+tqGg5MHIf9+BNc1m5Y3jerOirhcLHLoBwURtklGHSEiIgpANIk7oOAKKg7FNRUKSnxsgseMM9OET7/LnXSREGqfVczKnyyjxkE41O6bYm/O7HiAqZ9eo81ZtodcXfrtRZmOIcgOzXUFMr8GGCWSVwwxmQFOSCBOCWFFBRFt+QkJnc9ggISEGUOdKyG6sLBUAxdt7PCLc61z58Z4KPXn9iq/wEVQ/8ns81Quqvvrq600vUW6AtvI+KBtlMDGZd2Wzg2gbMm4DVxhEwbVbAKhD4szL9IXOI+X4RwjCjrXEJmWgM677MR0LMZnQGrkzVMsogM63UG2DdlfArteolhvyVUWhRyJ4qjqAYDyG1Vv6M0fLJPMxgpQ4UzIZ+Gw8s16gWS4RAgg+7/3A+V1Pb7dGU2zKZO6Dk21bk4HcebrYmA+Ov7F1CRUSRiGcTj3SwZQ7Mo5z9IxMBhSUHCedPyoIIWfHPhdQL049NkFXJdTRTRJI2YhHsA3U7IgChDk3EWFEY9U4gRxO6XUOJjCXD0ARMpsuaHh8QIKSAZd6ceoRCqbcQcUpMcmSAUQygAyn5KkqcojRlLhbDg0RRNRtrEu0i1PIbESxO7u13+oT6Qjt4pS6aXUJBCFMvgbyte9YmSjzkE3nqSIzeQAjJXegBiSEikuKn3HiK51c7TyxTwrCeiFmQ0A2JQx7roiaPiIeVVs/UkHV1+OpXlD11Vdfb25ZQyvnUkFEimI7gqjzogQJRDqGqEqPQTBFfnVzLMlgo4RX67XvRkHKjoRuDFOxtd8I9Ov7PAa0WnM2HHmzHKATAKolcYeiMZnK603uuz/RbIp2u/UbdyqJvNdKRgGQA/XlBtH8AGFWk7G8abvH561CXdYQqwuoT/wqvXZNoz80tTdim8UpRBhSAHNz3z+fuVwQ78mNMKPEj/pEGEGO595zJoLIc6Y8ONWN8lggefQEG8bV0U3a2msbGnEuzyDilEOGNW0PLk6pe9Q2PiJGJixQihwi7GjrMkr4OFPYcuszDN17oc/verFrNks61qqgrlOcesq5jBKYtobghQQAzA6jTUJzuaBzwBR2vVlBMNSTxo/EwhJKEapDa4h8CakCmDChLlQ6gzr9XcjBhAKNZQAoyt6zUkGYFiZM6QeAtvIGcwAkjExLn+O29OHMQrewYcK+K46kEXg847OelP5YqhdUffXV15tasim6TacohQ0SWBUS/4dLABSKC7q4qskcVira8AMRtn20SZl783F17y6io2PI0ZTGS86ELhXsbuNRA+5rAvAernq1ReA7RMb7olQco7q4hApDJNevoV5QTl1gdIcwUNI/p0oiyCigr6UZ4vl1EjWXC9o8TDKYcod2R16hNi+B3/tfAIBofkCHlmZQ8+vkIWPvUnR0jPr8rBsbclaeXp6x/yhDeHSNsvQ4O886uGec+u05wULUlRuXmgLerC/3vF0AmcVFlBAoM82AXRfTIgIWdVFCmILLBUQYIbj+NEy+hpwcskeJcw3zJfTyHOroJsfnUAfMbFcdGqGtiYAfhDC7DVSa0ZgqjGDq0uf8SQ7JtlXhDfK2zGErGv9R4HMNW5OQlpND2LogT1ecQQ0qEnfxACYcUHdq9TL5vaKE8AqDGURTArqBTScQuoFoKwhUMGFCXSqX18dGdgf+hMv6UwFEUxF7qqVNSBvEbEqPIRka+siq51A9luoFVV999fXm1l5umQlphOJginAE6SqnC/jRTS8E5GRO22NsVpfZiLohxlCXYX+TzY37gojAlmVOXShen4fbHqxKmLYhfACoQ2SN9mO1aE7oAt0Q1wlB5KGRLkxZsEHc+YxklCCeGv81oRQQJT7Edz+LUCjK+rPawDQtgC3F0MyOaVzltubiFLYqEA4z1JebbrzZ1MxYomOSgxFslACuSyMldXeihM7n3kadK1tRRp7NN3zOQuKAMTbB4yxY0ErubpjNym8+uiUC6gqxuV1IOu7dJR1vNgPyJY3upPRke5/71zYwUlEHarcByh35ywajbjmgzCGTDAagrhTQXdzbhjxZr8Bn7OcxmuV9j3FA28CkEwgVwgQReaY0RRwBgBnwuWpriKagrpI/aQaQge+qdl+3HQjVPTe9EfSbGwWaFuR+Q2dgf5Rgz74eS/XvcF999fWmldA10dG3FzCjQ9go7cy6lllOQkJEKdQ8BdoK6uCkG4u0FZBvOHB3Q52qZAC0DfSa4mR0sYMcTWnk5Tb8ogQy6KCbvlOVZhA5dVvi40PUiwtCGTDuoM1LtGWF7MYx4RQ2S/JGtTXU/Hr3HySv+TtGkopjqPkJCQ+OWnHCYH87rcmLK4HH3kPlol5aBpNyRE29yZEezUiE8MjMjeSc8HGMKN+R4qxCJxpNXXpBCDDaoMjJ2H50k+Neln7DLxjNqAuWEIEd7J/SlwvqWEkJG0awDPs0RU7HpBt6n3Yb8kGh2xRUs2N6fXHmBYaczGGXZ8THGoxg8jWHOW+IbM5BzCJOINqahG9JIlJO5iTwjEZwfJPJ6Y0XfB5RYDQEQno9QQQ5bqHHJzS6q3KYMIWe3Og+q7qGyhc0kg5jiHrH9POAOlflxvuqYA1kuabXHWeADDxrzTJnSzgSuwwoISCIqVMbZzB76UZvdfVZfo+nekHVV199vSkldA1R5/RTepxxnlkNGwU0DrIG0paAJQ4QAFpbd50B00IICZEayMmcLu5AB/ZseKvNdT5ctp9UfqPOGtMRxvk2an7dj7qi2RS2rZEezbotOfZNxQcTuDxAU+R039kRHZukUN/g2i0v2sx2RWb4qiBjuGMuyQRocw/gNE0L3TQYHF+nzTNmPJnLBcRgDFvmFCfz4ALJfEJYhoxEodmuPMVcZmPKvWPsgK0KuLw8vznZNuSLcvEuvGFo6zEEe4zMdsVdFkPMLMesAoA0oy6Y7rxolt8Dv3XJXzf5hoz1s2PfnXNAVttwF2cvo4+M9w0R2N372jYk7qrCgz0B0DFzQLNpG6j5iRdfKs2Izu5yFnnZwJbNlS1CEUTEQ3PbekZDBDELp4JAnW6RIcroa21JRvW2hNzchw0HsI571lawKoCsNvSDQsPPpSKIKu/goLqlz4UMaNNVBuwjfAX2462snpT+WKoXVH311ddDlzAtiama/FOiKcjcqxuI4pIEFP8n7U3A1nT/cesGwq2cf5qSoxl0vgUSAl8azpSz1dpzmHRVIZgeUEDy+Rlt6o1m5EHKxhzXsiH69yAldMIg6To+vFknweLkckGjSD4GJ9IAQOcb6goZjWa9g0pahGkGwSZ6lUTQ7N+y2vgRlpzM6WLP3R03pnQByjIiDIJIM0THN2mTb31BPqLJHGZ5RmMtxewkxi8gSnzXyY07vbjhUGezW1NXJ4g67pRUkIMRjVlZnDnmlxNzrpsG7JnBnXADoCc3oLbnJCqjhF6rUv4Y6P2bQr/8gj8+ydt8hoOUVZL5kaNMM2iHd+DjoC6UobDlNKPHydc+csjKPZq+A5paA1TE70I2JbGkadxrwkGX12c0JG/2ibYByg1kEKIdzPa6qy1kldMPADKAqDddxAwIZtt9UIjIDmuAO8kZfQABAABJREFUaABrg0dKSu8F1eOpXlD11Vdfb7ysIRO6riGrHHK3JO6Q0WQh4bw0uihZWinfg2i6x4CQQMujijAmwdFSx8FFjZjlGd/PkPF7eQad0yaerhtIpRBkCa32S8IdhGPqCOnlGXRJIkpOSNzVd1+ELmtPRW/yAum1I+iChFowPUCzXiNKM2g2zgNAeed5hMMMMghpfBWE0E1DY8TNksQbb+SF3AEZ3LxOMS68kecEE3Yb6r6FEaLJCLqq/LajuvEuutDzqFTMT2CbGlpKaO5uCcCLQb0899EzcjiFLu5S94fHicF4DL08p0290ZRGe8y/cmLK1qUXU3I4pa3FljbfEESQaQzoBvX9O/Ra2QxPY7MY4uA6vUfFuhNsDl8RZwie+hyAPUzOhC6iBDLN0C5OSRwGIeBCnNFhMGSUwPLWp9h7XBHzJuCOcg3dYgMA2LrwQsokZDi3KmTxTh0lmV8AWNG26ZCWBjA+higuO4ZUTYsRhkeYoimpS/UKHII3pwMeGQHTkrDr621fvaDqq6++HqpsENPquAzoz9xlspIuYggTungBgHjFT757GWeONO0uljZfwyYD2vZKiJ9kdwXa7RbAqTciW20QZimC8Rj14oJGZmGAII3RbrcI0wzNZocmpxw90Taw1Rr1Jqfg4qr00S67e/ehwhDRdHjF/GyNQfPgvj9sw2LEXpyj2buAm6aF5DGXiBLIpkU0yqBmxwhObpGXqa2hz+9CTuY0XuPxmJwdE4m8qRHcfCeJLmugFy9Dn99FeOvdZLg/ukndNjfyNJoe13unui6fCCKCmRrCR8hkQGNRdF0fD8gczaDP7xLJfjKn51IhzPoCQENsKSF9BqBkNpQpc4gwhBgw6FSFEPHAnzd/nO69lgrg+Bk6xpCO2eX6udrfVKxL6uI5YKpU9NguMzFfU6dtcggRk6i25Q623EFmU+JBMc6DiO4toOtO6EhF40AQ1sPGGaERVEjEdEP5fWh4pKkC+ppDKIQDuk9LviwA5LvSDZnbgxgo9ev5Z/VQJThu6GHu39frr15Q9dVXX2+8BG+0BTGNPNxqOZOlne/klSM+oZtuBGIMX7Ra+um+2tHqfDamLTL2+8jRDIExvoPkgI0qHfj4GJVEUOkAMhuheXAfbV4iqArIMPCbdi4zL8xSlItLoqYzHiFOIu+lAq5S0KvlBuVijfEz1+mxNkvIMMDudIFgkFA3jI8JIGO24A08OZp6H1L9v/4HdLGD2qw8bNPkGx867EePPEpqbj9HwiGIgCCGTEEmfbfpt/ecIgy9Id4CPprHGg2wL0rNjmA5jNm2NXm42Ockxwdo7vwelNEI5ifQwyPIIIa9uEdohTiFCGPK3gPQnt2Fvn8btsihZiS6hG5gVufsOyOGlYgSOh4X1aI1deoSQA4Iyulei5CKNkMZsSCkJO9YTcJaZGOIMGYvGAsc9muZzQXk6AAyHcM8eInOY7EGoiGbxguIiAGz24vOI5bEMOnEf3ZFXUDP2C/HAsmJJwgJG0wgTM1AzwFtEO7R0G0YXw1ONo9OTNHBPuTI75U/+PT1B6peUPXVV18PVf6nfCFh4iEJgVcRpQU8S4AvUi73DWAPFv8yTc0X6CMPl3QBvzIb0eq/G0GNIk9Rt7s1ias085wpwyHLjh2lkgjVcgNd1kiPZzDaoF3vKGSYRRakolHfnEZ8hGkgEns0HlCXS0oU50uYukWTl0jmExI2HKFipURw/RkSLWwGt2UOvTz3eX1WGwQ449NECAXBuAG0Dcz6gjhVHBNjNkuoeeohm2ZHbCPB0E7J5nIRRrBaw7rOEGi85kzdIk5pZJgMfJyMcGBNRjMAAIIYZngIm4wgTp+n1xGn5HdLhoA1ZHJfnTErTPsulKnLjomVDGl703Ughew6S5uaXgePKt25gKWYIB+Aze+DAaDSjAzfYQS9cz4209Ha4xQiSiGkIkgp+5yMCn3Qtay27IXj4GvT0vEpOi4/rgPoscMEVjfUPXWbrG1JPyiwUHOfY6si8mnpls+JAKLBo/VQ9fVYqhdUffXV10OVFRKCM82sDLpOFQAfJOvBiKSqbJCQsbfckHkXICN7mfvuiQv6VfMTNC/8jjfayuGULsZ1SfEibUNdi8EY4PGbTAYoF5dQSUTG8+EQ0SjzHSfdtNjePYcKA2gl0eYlVBKhyQuUi0uOd9HQdYPqwQWSm7Rqb5oWzXqH+GCCZD7B7f/4q0iPpwjHY5jNku6rFOQ2hxiMoSZzinSpSzQvvwC9uEdEddltFzoAqJBrIM1gmxz1ZuV9Tz5Sp9zRueZMRDqgrvOxT4EXcUKk8M2SxmnZGMjXJEo2SzLEMxYheOJdvgukLxfkqwpCmCiFaArI4hKayeO2KgClgDCFABnNg+vP0NgwCK+MbIVM/Pq9GR5CNKVnQNkih6lLQiG4Y5aSieihF8nudZE5PmEumQaqnN57gG/XEF3faDrGlMOx2QMld0vYIWcoNjvqnMaZ3/ITuiFflIpgmabuHtsmI3rOZASRc1dwzxvoO1f0Ioi2bgOChNb0ntHGXzcafsvLbRw+zP37et3VC6q++urr4Usq/1M+QBco67b2mBHEOTHdOA2gUaFpiSQtJMRgAhUlDAONIaSEfuk5jpXZj5YpmbhNOXyiqhCMJyjv3Ue9yWG0weB4BlO3qDc5bdAZB9cETN0ing3RsJAydQvTtCgXay900DawxkDvPa/Rhh+Luk7Xv+hZlKsNlr/9SQyOZ3wbDVNo1Ld/D/E7QzKABxEFP2djRGkGq+n+kArm3gswdQtdVVBBSGPOfI1gPEZw4xkaqVUl2tPb5GMaH/qtPFdmQ2gAl31omfHkvmarApoFiL5cEDIiXhERfjSFDRKYxakXMiJOYYIEwdnv0TiSu4K2LiEPTmAr4lphMCW+lNEE3QR5qLygHs5hlfIXd6si6mAGIaRUFCMjFRnseVzpXkMwP6EOXdtADUYkEtMRfChxEHWRO+MDGkm29L6JagsbZ7BR6jdP1facPpv8uTTJBKLaQDQVmc2tIbFlWqKj64Z8UFyWBZQNEjKks69KtJWHdjoelUsFMOmEUQqNHx0+kvoMG7N/oPv39bqrP2t99dXXw9Xef76CfVJ2f+TnRNDeZlXXAaARkQ1jmJgDlMOUImtUQB0GF4HCBG8HuySyeXhFKJ3+ym9jd7aCLmtER8fkhwIT0vmXLmuKjpESyZTHZIqOJ0gjhBlvjQUhwiyFLmuU9+7D1C0CHg3Wqy1sVWDxW5/C7f/vb6Pe7CCUJHN8GlOXKgzIm+RApkc3oeYn9Pvs2Hfc1GTueVXkE6ItPDU7JoL8mLp1Ik5g1hd0EY8Tbxy2ZQ6T79HVq4KEiKN4S9kR2cPQx9K060vo5Tna87vMZNLUFaxLQjQUl550rmbHZKDfC7Juz+7S+xnzuJFHazak24s0A4TwXCdI6UWOo9l7fxmLKUdiJ7QFGf+D4yd9liEEE/CNYd+chBkdk/jmjUPL9xeaPU5MdTfrC0A30IMZiT7LgkjX3JkawHI8jdyeE8QT8JE6Pt8vGdHtpOTYmfDqOM9oiLqA3C0hyg11+cp1H478R6D6DlVfffX1ppV1ZvRX+EWs2/ASnWndhildgIPEwxMpT21vdOXgiyykhBMHAXldRBghHGbQVQXbNHjiT/4fAMiobpsa1QWRrMsFE615Qy0aDRCksRcljgHV5CWCQYLhkydo12vUaxrTlKtNJ6Y2FOQsVytEowzHnxdj/PQJPW9CNHE3OnPixZZbtC8/37GzeNtPSEXiKR3ANGu0uxJyuyIYqZR+G1AMxl7o2N3lVd6S0XBRO/py4YGatm0g5yceQeHHpWMFsSMavRv1mYSgmpbDllFLiIoy82RGBHhbkHndVjsSU0bDXtyjrtnBdXp/ABJWUsJUBY1zQ84ZbCtAaQhdk2BiJIbMxr7bphenHqUAgDL40glsFkA2O1pa4E1GoRRtGi5uA6ND8kZlIz5P7G8yLWw8gg4HUHvbpK4DZVUEqM4vZSMSTKK47JYqQifUeCzJYz3R1ldGfjZIvIdMmJaEmTUdJuIRGtOtkN0PNW/w/n29/urPWl999fXw9WkElPuPWfhuAAMjXTSHDOiCGSYc2aFoxVyFgAqJtL7HM5Kjmd+C655aQ2VDvshSp8ewkTuaDr1oCrOUTOhljXZHwskZyx3VPJmPEY2J61RvciRz6nCpMKCvg8Z+TV6iLSpkNw9x66/9depKhfTzqRzNEFy7RZiD0fSKH8dslmjO75NpWyroqiKDOHecTN2iWVIensk35GtanpOAc0RwB8sMIt/VESER2ymyZw1dVTDM8bIunoe3AR0U08XbeDAoAzXV7NgDTk2Z+6gZwyHVLgLGlVlfQBRr2DD2227+vWFiuw0iMrPX7HHLRn7z0b2/bgtSDkZ0zJJGZT7eJUiAtqLxI59PD/7kzw6CGCLJaDEhjCGrnJ5TKrq/0d7XBCG5MxX70Z6ockDX5H8yLQkroBtVsyeLxtuWxNS++ODPOd2eR4SPQ5y4LvDD/OrrdVffoeqrr74evtzow5VjDPmtp7ozqwuJUlskQUwmZWfadd4VIWFkgGB5G3Z1vxszsSCxRQ7hzMkAgqOb/vtiuwKw8h2paJSh3dH93Saf1caLLM1Cym0AKr5Y5y/d82PE0VM3yNg+HqNabmDqFtZQPp9KIpS/9osQUhI0dDSFZL+PG+lZGQDpmGJnooQYSADCdzyL9jc/ijrfIt4TiACN7WxVkLDI12gZLCoGY/IrZWOKxTEGIkrQnt/1QdCmbhEMUt/VM5uVp5OLNENw/CR0EMJJIjmasj/NAONDoMqhz+/CTuZkHm8biqJh35gTYeRvqj2LKgBgsgOIuuCRHCEWTDSALC7pOLIxbLHqFgnGhzQSSzM/XgRAzxOEMNlB1/ERkoSPbICGSPBycghbMpE8zrwpXiRDgosaA9lWMELCJCMo00JUW0gVwAwpVsiq0I/+RFPCtiV9T0jyYO1tsTohJkxL55fZVj74mDtZviPn3k8ZwPZG77d99YKqr776enNr3zMF+HV0YVq+2ACpAIxgP4+1HRhURZB1DmEL4P7zBI0MOqHWnL2MYEo0a704JaFTlcR1YmSCykaI2Ixeb3KoJEI8HUHFMdL5BG1ZeW+UigIk8wl2Z0tkJ3PkpwvITY62qBFmCarVBkFSI5ofeJO6NcZ3o6wx2N65D123mP2xz6EuSxCiPbsLEUYIrj3pj11fLiCUgopjGvMdnCCcH6J+4UXofEteMK0RKEl/144QTs9l8g3UgIQZABJoMXWtxPIMtq0hndcM6Do5DklQl7ANMaIcG8p7qtjcbSvCH6jZsccy2KYmgcPRPVBh9z0mv4soId9SPISNM/IOhTF1GwEaiRkNe7mg5+EIGRnG5Ilqulw9U5cIpkf0makLEtqrc4g0g5ndhB0eQS5fIgEFeMwEQCM711Uyw0MaGTcVRF3ADA9hkhFEE3aMKCEJidCUEELCJGPqTFU5+bJ0S8sTrusEkIDiRQXHCgOoC2stnR+KXgq6btX+v4dHUUI83KZeL/7eUPV9vb766uvNqVdeOPZHfnsXHgA0vtPNq4CHMl9A1DvI3fIKuBEATL4mQGdBF33TNtBljerBBYqzJZr1mjpYTYNgkEKFIbGekhhWG7S7AuF4gGicIcgSb9oOhxl5qoZDSCXRFjSCassaTc4U9XxLZmfublltoJuGWVfGHx+CCLbcQS9OfZCwI2eHT7yTDOZpBjW/DlvtCAcgpfdqAfDGeSfeHPVapBkUx/CgrSHigTdMmy1Hp7Do84/V1BT07EeDIeT0iLxb2QhyMO4M70Xu70N5fyEZ0idzGPZvufcVgGdJQUpCGmTMr9I13dZ1dqzxYcUiSgjqGdOxwBrYhrpczvtkqxImndCojgOiDX/PZe+ZKWEsbJxBj08oN9AtNLhuEfua9GBGW3lScpdUdrdxxxhE/rNqYhqNUoxM0X2mvTfKACroiOjy1X0JvxH4Gt97JCXlw//q63VX36Hqq6++Hrosm3PJZB4DkP4ndMfh8Rdi9k4BHJq7W5IRuC3pMdoScrdCw0ZlmQwY7qkQveO9UEdPoP7E/+zGdpyjB1DXpl1doM1LxIcHUNsthJKoVjSqG1yfE9E8TlAt75BAM5rAnGEIGQYIJW3rlasNCbGyhmlaqGwIxcR1Z2Df91/ld8+RcDagiBMEN54hArjRlMuXzRA8M/Y5d83t57rzZwxF40gJzdT2aDKC4U6Sj66pSujFPRJkrvvTFN7z5ICmYpRRZ2l2TOIliAAWPGZ1DpEMfFdHb1YI5icsZgralmtr2twzhvxIlwsYFr9ydEBii8Gd4A4TCZ4G9uBJyPEhR7fwpuboECKbQhRrMqC3DeUgaorEMW1Do1xmTsly4ztejq9l6xKyWEO2DWwyovEwAAgBk0w8kd8mI4jNGcT6nERnRCJL1AWds2bHn7WSeWgKJhkD6QSiuISscsId0BsDUedsON9jO+mWlioYWHql++QAp/uk8kcM9exN6Y+nekHVV199PXw5/g7QjUL4P/V9crpnUwGcc6Ygi0u0gxl5WEwL0TYkRHhUZesSzZZGd3pxjzopbU0MIvY+6bKGqVu0qwsAQJMXiA9IALR5SSLIGC9WVJwgSGM07EECAAQRBidER9/eodw+qw2UE2tphmiceeSC82YB8MgEGQXY3b6DaJxBXS5om6/MEZw8zdytkKCTMofMxh5sKaSEVArRdOi7U3Iyh+DNxvCJdzIhfU0bgHFGAkJItM+/QBt+7n5hQOLGRdIYA7241zGqpKTjKTZAEEGxb8l1mGyYemFlNkug2hMHhgSyjJIuiy8bw1YFzG4NCRqJ2SilQOIog9qc0QjMGNg4I2RCEMFuVkCU+AUCACT0ghDtvU/R++TYVHw7U+QQLotweEjHqwJ/bEBLHSsO6yYjPGjEJySsTGEipvnrmnx/QcQZfymECkmgNiVsNNjrugp+rvDKSBBCdnE6r7itKw877ettX72g6quvvt68esXYT7iNKEekBugCtvd1PT6GLNd04alymLPbZIquSqjx3Pt1dFlDFjlUkkEMxpAAopAuiPJygWa9Q5uXFDcDCjAGWFzNRpzFR/T0sKwRDnnrLYxQ3n0ZuqHbqzBEW9SIZ0OANYkMA5jNCtFkhPgGmeDNZomG+VPUySITcpilAID8138VMgoQDBK0py/QKPL4JnVN4gzq6Cas1kiNptBfoyGSDHK3JqGZjdGevQSEkRdetmnI6B3G/jyryZxCjZsWKumQE3I4heXHMkWO6F1/zIMybbVD++CUTOA+pDiirlPaQA6naO78HnukmFweJ8DRkxDlBsbozocVhCS8mA0ldjR+RDKCYK+SM6QjCIHJMcUOtbWPqJGDEX0f8GHPZkddKhlEENmY/GFMaxcAebTikd8CFHVBm4a6hRkewUYZZH5BQj8aeAFEI9MSYL+e1Q35tKyBSSckCpsCJh5Cj655EQVQd1VUOX1+28ozrNwWK223+oylqz9IPEy23uutHuz5WKoXVH311debWy6zzZHTjYGsc46gMYCKYNIJguVLjExIIc8/BVvkaC8X0MszNKsVggGvufM46/zXn8ON93+xj6QxPCIymyWq5QbJfELIhKaFikI/inPjwMkf/xO4/OivwNQtkBE+IGSOk+sMlYtL2pJL2cieDrxfa3f/AUzdIswuEU2HXR5fEiM+PCAfEefg6eU5fW9AQM/25Re6rcTjmxAJmbfDW+9BcHyTSOj3b9OobXoMmY0ox5C5UtZoyMMnoEB+KQl4D1b93K/BGo0g29sUNBoiDNFeLqCY0m4K6orpxSn08gxmdQZ17RYA+LGiB6YKyV1AIr3blqJdxPYCpiooBqcqIEZTmMEMgsns+nJB98nG1HHUNZnU04xubzRMvqbHG838xqJIhoBpYS4XJJ7YK2bKHDZngTk+oNGdVBDVFiYcEFYhvwCCmASONdDxiDIVw4RjY6gbdYWNZg1MmEKWl56FJhoinpvBDHJLXVYTZXv3sX7zD3XhsQvAK0ZkQnSiyoUt7/kJH0n1guqxVH/W+uqrrze93NYerIFsCuL7PLgDWeVkPK9y2KaifLe2Im8Q841EnPooGFuXEFGCYJBid7YmQzrQ+WqKnDpXSpFPCNRNCrKEtvzWOaJRxuKKMAfWGLRFhXZ1QVtuSQY1mXeRMyDWlAwD6GKHZpv7EGTdtGjyAsX5EjIMEB9M6H4c2WK21ImhOBYDOTsmUGWa+W6QbWqgrWBXFIyM0Rzi4Lrf3rO7NWy584DM/c6GNZpM2lvK3Wvu/B7qSwp7btY7GvtpNqc3vJVY5rDGoP74x7gLNkBz+zkapSUZCaUoIVO90QSytIY6icylklEC29YkshSxogSLNFHl5LsCIDk6RsQ0LhNVTiKII3VcZIzkzpZk9hRMS/BR1w1DN4IUaUZ/diJBShJQ/DmDVLDl1gdBw2jinQlJZHMOKxZ1cXUJQspu28+R05uSfiBIRp6Vtr9kAWs8XwpCeDTGldv4fwSy22DtBcofieo7VH311debV46CDkBWW8gdh/NWOXUwLk4BAFIRiNKc36XORZpRV6EuCU6pdceSupFAZGO88y9+Oa/2lx7yacscQRAiupZBXy7IjH4wAYIQKtyhyQuEWYr4+BB6cQ8AsDtbQYUB2l2JVBuEcwXbUHfKbchJJbE7XfggY/c1F2ocjTLqhKURkqfe6TtJ1dk5Iq1h6xLpu99LW2116QOHZZTQKO/+bejlOeTlAsHhCTA6hHr6WajNAu3pbdqS0w0Js6aBOjihDk6+gVkvyMvEbCgZBnScqrtoW22gZkfkOcvX/vvN7edoXMrcJ7NbQw7GBOeMujBjG8QIn3gndWyilMZ391+ASEcwq3MSPlJRt6gp/IYgghCCx5FWBgTNFBQP43ADAoC9oPfCiUyzySEnh15wioDArjCa3u907DcKARD+oC0pA5L5ZrYqYMcp1OXLsGEKQ28aGdhV6D17VgU0MuQMP1FLElp8G9FWNB7cF19G++ezYQrR7DoyulQAmAfiBJUTwY8LP9B3qB5L9YKqr776enNqf8wB2t5DsaavGQ29pHBamY1g1w9g1hfQS+7S7DYE6wSTz6OQjN3pwIM9gxtPQwQ04rN1yfl10o+z9k3izWpFWAM2ogdj8hRJdR9CSS8+HLwTbtQFd7gGQhKywJneBW//ufEgAOhih+CEsumqe3dRr6krlt08gkgGXdcFgEwy6mCxCZx8RxomG0FKBYzmwGiOMB6gufN7QBB7rIENYuqWMDleXy78eFEoCWHo2LcvnWNwPINKIuJgHT+B9uXnoTjOx4kmqzUE6JyY3YbEiObxKr9nNptRh0W3sEEEcXDdG+tlmnnPFL04ubfxV0GEMQkoITr/UZWTGNENPY6ULKAYn8GwTKGo66PHJzC/+zGUz/0mwvkh4me/kISOlNTZdNT93SV3uQzE9gLWaBJ6uoaVKXW/wgTgLUA6mD3xGaUQuu2+3tY+Qsdwt47An63/LAtrYNGVZ05ZceXfAI0FH/1l1nKG4sPcv6/XX72g6quvvt6cEgLuKuMQCO3yDIZFk9msICdzwBjUn/gNAEC7Jpp1OKYOhJrMYYocKum4VSbfkPDgIF0EEexug3a7ZSN2B8EEQKO3uvWip8kLiMUF4jhF+sw7EB9MUJxfEI9qPKFuSJohzGgTLRplKBeXEEpicDLvtuOYw2Tr0osyGYQ+mqVablBvdgizBGp+3Ue0WGMQ3niao1Uk9GZF5nKpaMyJFyCCEOHTnwOkY9hqh+DkFkyU0qgriGEdOymIqDtVFTAAmsUDOt8sBsfPXO/O22YF+a73QbJnyXcCQRuLlunoNicBJRTnAhpN476mgMnXNOKLEth0TMJhfEispuEh4MCZquzGX0ZTNwiMyOCNP7QNbL6G3m0IFJoM0d5/kW4XhLBlDpGOiCcFQC3vQPyxL0O4vYCtCrSnLyC4/g5Y8FiwreBiiGzbQIQhvcbxIQNKCdvgtv9skPjxm8nmEFVOiIQwhY0GEDXlLAprgKaEDRO/oSrKjReGVoUdX4qFh3tcL0OsoR8wLAnXxyGq+nr01b/LffXV15tSQjfehyLaCrapKIDXxcQwu8hWBUy5I68PG7tFnBBvyoUKxylsvkb14AJBlpA5HKARV5rB7tYIxmPiGbUN5/e1dNvZEZI4gX7hRVhtMHrPu8ksLaU3WQ/SjLbT8g2NzgCiqochAT435JsqF5cIdoRdiOYHEGGEenGB+OSEM/UkgvkJ6hd+x2f9DZ95koThZkljvWwEBBHM6BgSZ0DboLl/GwhC6G0Oqy+gsiG9dqmAbNad1ICz8bjTFZzcQnByC83t58gszudSchdMxAl0TvwscfOzKKB3NCVR2tbQ53chBhyBA0Av7pG3SUoKTmaQqpCSMgEXp+T/CkLIKINw25p1QcIn4K6U1jSeZNEkRlM/BpQjGvlBBhCre93WIAAXHk2EefYzBSH5nhxUM5tCAAjSjD5fjv0UdJuOdngIuX1A4klIEqZRRkZza5heTp0sGw9JECUjWNMCuvXiy4sfY8j3JyRsEJOxvriESXir0BnNDQBhfeySvy99WFmg4uFHcK+3+pHfY6leUPXVV19vWomSEAdyc4Z2eUbMJADt+V262AURhFKe/m21gVVEy4ZUxG3i8ZHrnFhtOnKzVMQ/CiKImGNgInq8Il9ClBLq6CZwfheD69dQL1cAgODarc7sPJrBag27W0MXO0j2UwkpEY4HgAN7lpfQZU3jPiUhwzVUEhFl/f/P3p/HyJbe9f34+1nOUnW6qqu6bi93nbkz4/EyXkBGgMEQgpEjgwxECokRONiYKIT8gUGEJSILBmRBkGMRYTZNvOCAnQQrikQiTADrCz+DLBMDwdvYM3Pnbt23+9at7qo+ddbneX5/fJ7nOaf63hn7TnvunaU+0mhud9fe1XXe5/N5f17vqqRuj73N4MwDyLb/f0hOrxOAU5OPytSl7aJ0oLpD8NkubawNNoizZfP1eH9EcM2ORQfUFZhWMGVGo0EAYnQKJkqAIqXMQDu+4zJoYmEAsCwlsXrpc2S2jynsWc2nXrT4oGQZWmGWk7ASNniaSwCpf468MwBTJRni5zMaN45O0+XsVt/CGE1rz5byIsgKHVaVJBqrrBkVNlcElAKrU2jLmYIqyUOlKjLzB2SAb3eFmCqttymDlk20DKuo6wS7ceoQB43XSTbfU6XfSkUQw7RGwEaENP6zoccue9K/79vGc85hwEnMtX6+jJ55/tdSUC1rWcs6fhlNkTHFIQERZUSeofmUWEKdBHpGcTJitEWbYGEMdjCGyuZEyK7JS5M+9hiCpAMmOBnMuaBO1MGY/C1xApOnKPd2UUxmUK7LZU3jLOpAnjpvuUaPWthl6CNOnJfL1KXnVslOhM7JTeh8jmp/HzxogKGyG9MWXUojQdmN6fFmKVgUox7vgIUxVl7+VT4/T8/2qSsEIDj3IKqNF5F3yEassIhAlbw3gDx5noSLjICDXXp+9rVg8QoYJ7q4TmcIzr0YCDvg3R70fAaxeQ56tk8+MxnS2IwLiEigvvgIVNIH7/b8qBSAF2PGhh23i7b2cvDVEfT0BomDqgJWRtCTHej5lMTXcIMWD7IDGBlBrayD6RpcXYdBMx7lvQFUMmrERJSArQVE8r6xTV6nqENdKztGY6okH5YLJy4z6MN9lJe+gPCh19hNQA0o2vDTQUL+rIiEIzGichJRtlPjomDABSEUVE3j2LADxiUJM0EboExVJKbcBqDbJOysAqoiH5eqoK0f7JaltTWmi0Zo3WFa+rLufC0F1bKWtaxjF53hVxQ1Ys/g1WSXVvbLHLXtskArGgm5qJSaYl3aG1VhP0F45j4UT3yRhIb15ZgsJZaSDMHiZHH7LpAkrLRGffVxEhB1ZT1bCkYpb76ubRyNiOw2mvVwsagDPZ2ScLLjSB5IdDbXcfjEFSKr23gYnsAbshnnFJ+S0XM1eUo4h6JAsHUWautBlDxEwCWECxI+GNvsuoyiZIYb9t80YnOGc/QiQipoRePJ/JAQBP0TEFbUIelBW6SB8zGxKPaICcDGtsRk8DdZCq0VjfgAL/xc10rnJBQpsJhGeUzXdB9cEAYi7DToC1WBCUnjP8Cb1nWWkki0YcGsyi2WIQKrioYcD+oAgQsSKM5/pWvyO0UJuKoQnH0RmNHQMqaxWysr0N8GQEIKaOJiTNs+DsubEg0GocqBsEuiSoZ2bF1QvIwMSegZO6JUxLdiqqKuqRGtbpcVTrp5XIZLEmgOxHqnajnyuyu1FFTLWtayjl/uoCbJyGsmOxQQXJc2lJcOmDzukn+qyMCTPnhvCL1/CSqdQXb74MMNglbWFTGjbLeEDMuJ3SSjSJrw9D0Q8bYPEK5mhEmYf/4zCAcrEMONxmBtR1lMBuD5HMVkhu65NTAxA1Mc2bU9yM4U4foGmODQVY06KyhOZnWE5HSJep5T4LLW1KUJAlSTCYQViKgrqKJoNgcByJe/FirqNWblKAHTyj8ek6UkJEanYcZXoMY79HwtKTwcbMIEEY378i/6rUhmeU98uAmWH9qRXUwm85UB+aVsiLSDo4rVEerdK/R7KnKwIRHY9Xxm/VMlTD73fibH+uK9IYkDu21JGX8E4YQMSIjZ7o/uDsBlROIk6EDZrg7PZ7SNB6LlG6W8N8voZhzmjd11Cb2yRtuNNlwZWsPMD8BEQLiDqoCO+9Qli3vURTISECFYNfeCDIz7UGWmaxgR2ssFzVhO102gsbAZlDbah67IwLMD8gZavxSrChJKuhkfoi69ER+Gk5gStqN2BztUyyy/u1NLQbWsZS3r+GUMHUS0Bs8mUHlKY6PZhMSDhUeaMrcHeU1baA7e6Pw/nJMQsyIAAPTBGPXhIeTKCpgMUF2/Bl3VCDcbGCZfGYDxK370V89z6OoqdaFckK8MoCaTBoBZ5AQAnRL4kgvycIkoQnBiE+2eApMheEDGdwCoDw/paWuNep6j2ptABAF4SOHJQa+L6CVfA7WyDi0CBDV1ctTlR2j0mKdWFA1o7GY0cbQOD8GyuSe0syqDET3ouAdx7qUw+9doZMkFCSAA6PTJt5Wl0HlK3a8io9fQPkaTz2G4gDx1nh53kXn8AgCwwG4rFhl1jaIE4Jy6YlcfJy+WNa37TlaZE+7BC4yMOkhR0ozvrIBR3SG4FX4Eb40JE1FmYFzDMNb4rEQAo1KwwxuELoh6EL0RGMbkXUsnQH+dAoy5IFFjPVRwAkzGtGkKACJsuldOYOmaXjsRUBdK1+BFSsLMj/6o48lAXC7DCCjaFlX05uMkmHTdiqgpPezVXYbdyZGfA6Ae5/rLuu1avmrLWtayjl/OzIsG2iiG69TdsFtjAAkmvjIA6yRQ2bw5oLsNLzuy0lVNSIUyRznZJwSCHXuV0xTFZOY3CPnKgK4nA0RrqwuMKWO3Ap25mgUhgn4XPCQKOo+7/inwUJKZ3N4P6/a9Xwsg3pOIQ2I8tVlWJQktF9Qs4pBy8aLYenoMiY18ZkOEZ7QNpzXk5jk/UmNBCLmyQkb9uoQYbaF87NMkLIwmltLoNERvAB4nqK/vkGB13cG2zywIwTgBSwGQSJIBTDq13q+ONc1XlJmXWSGmaTON6Zo6fLCeq94AvJOA9wZEQdeKTPFRTD6kuqQOTjalUGI77jIibLbsZGAp54Hd/LSXiRLq5FQFdVZE6Knq3C456HDF/55Y1CXxI6wXK0z81h04t3DOhknmOkPOGG5k1ETGCAlWlySA3MUZJx+gzfjz3TM7FnTdG8OJa+X5VACMDMlj5e4P8N61Zdfn+V/LDtWylrWsYxVTJQkCo8H3HkPxxb+lVf6wgT46w7TLamMyABMc5f4hRbfYrT9oBZ70Wh4eDaMOUaUZtFLURbLC7fDSDhKtIDfPUazM6ojCfy2TSsSUYcdXR5T9Z0dbLE4QljXKaQpMU4g4RPfee6FnE7/tZ7QdEXUSzC9eQjxaBeMc4eZJy8GawlQVdEVUdx5KElWBhEhWKDPvYAyxfxns8Abqy1+Eyueob+zRz3tDiOE6dYFm+9a8P6UNRVwBT3qQp86juvwoqsf+DsF9LweihLoxW/cBAIKkR6JofgAkQwr1DWNoG4hcX36UkAZ5Cl2XNE7s0mvLOSdDuB2h1tcueaSEWB15GjqTgYeo8v4aTDGHnuyRoX24QZ0sUHfKjQSZjHzHB4xTJwmg7s5gBTCGNvG4BFNlMw5zHR1j6HYZp8sB9Lw7faC6DlPMaXxczCgLUgPMiRWtwS3F3OdJ2nJRSPYKhIAos0aQ2scNGbf8WS3/FRe0/QeLCBGS0AoAIGj7z/m3iMVVWtp7Cxp6p2rpobortRRUy1rWso5VTFWU56ZrMBlAjE6Cz6cor22DhxLB5lkybZc56nkGCYD1BhC9Aarp3OfsgQu/BWeU8kBNPp2i2qUcPRFI8FD63D2e9GnjrqANPJUeos4LdNaHJKb6tMWmxtuA1lDVLpgQ1AnSGrqsqaPEOQmJikjqdWpHU5wjGvaIl+Q6KwBYn3xdosxpDCiERSvI1oYXoJ/4NNRkz6MPAEBYXhMA1NcuWRHZJ+Ez2wcLAnruWkGOtlBtX0B9+YtgSR+iN6DRaacP3R2ARTWQTqhDE680XaC68iHSDknhf1/W78WiGEKuQznvlAzA44QM/GVOAs163zzd3YYgm6qE6WbgnDo27vmweAWGcfAy84gDpmsYLqyXqBmDsSIl1pQbn2nlGVOOceUI5AacQoutgGGcQ4vQdqbI/2TsmMstRdgLLsbBmMak7tEHFqdg2iR12yn1twNYUKcm4voRQ3zz4tLjoevLxfiaOz3yWwqqJ62LFy9+WZc7d+7cbd3uUlAta1nLetrlR1mP/V+oyS6C+15OrKLZBDyUftTnRk88lKjnGVhRQA7WwARH0Os2B3yb3abrym+KValdwRccVZpD6hDdrRHkYA2824NRikaHdYVymqKzPoRcP028KZcF58aRJRG9eW8Ans0JgRDG5KHq9iCiiIzx0kbicEG35bxefjTJYaIYkgvwcN/7VRyQtN67Aml9YKbIPMBS9hP/WMVwg+Cf6SFEh25DZXPIaI0EiyLxET34VTSSO9z3yAcWd8G3zlMkTHcAIwMYBGAiAAdt7onhBm3a1SWZ/2eTZtyYp2Qu54I6d/0RjUaTPo0RuYDOU9tFE95vxWTgie8mn8MEIZisoYvMjulq6oo5M7yMYFRJtPeAOj9M1+DzfUCQb4tFHajxNo1uPT+q8IZx1R3SSDDsEMeqOKTbC20sTDGDiXpe6BgR0nafVlZkSYv1SGnzrx02bcOO3dgSqqaNPy5p7OeRB61YJcZp06/KfQg40zUZ3Z2pXdV+9Pd8FyfPxTp//rz/t7G/W9ZibxljwBiDUuqm6z5VLQXVspa1rNsupmuwugDLDiDSMcrJLqrr17z5XOUl4gdeRmIi6tD/w5jglXWF8to2qvF18gtpbUdVM7/1JnpWTO3vE728E5L44RxGa+TjAyQJdZkwn1InJQgRDSvI9dNgjnuVzyFWRxCjLej5DExbX5PtNAHwj8+H6Za0WehwDTzpwQcBywDaeaps0LEzxoNzi0vIwLSCPhgTc6uTECvK+o4cUkHMJkSFFwKmyFFNpwQXPX0/eG+A6uoF2mh06IK1kxZ6aY39GfmhDGwnqdOn8ZWMCOvQSWB2LgJhDBZ3gSwFLNYBAFjSJx+axRyI4XpjYK9K2/mjMZ7OUyKAxwm9Pt0+Pd8ib54bAB9uHBAewjAOPt+HinrUraoLoCpI1LWwDnL9NEy00uTkicALMDGfwHAJDdD3AN9NYvmMxIsdwTlTO71HbcixMdY7Fft8P0c05zaTj5WZF0uOX+W6U8yNCFW10Plxj8/dPlTdGMFVRYb3dofsTtayQ/WUxRjDmTNn8Ja3vAVvfOMbIeVXRgotBdWylrWs2ypWZeSbqnLw4hA6SiBPnoc6GFO0SdKHiEPyRUVEtdb5nMzQQeA7BDR2m9LITCsSNWVOpuuVAdQerfiLOIR0/inrVTLKmuAtQsFkqTdRgwvaTptPoSxjSayOyD/kAJ91BSa4JaFfo8cL2t4LohjgsQ8SBkAH/yC0YFCCb7Ii9wBOnU4hN86AdRIIAPqQ8vqMJsEILhp0gu2WqfEOdcr6NAJk8ycgux2Che5dgbp20QI/Q4KU1vv0OnX6gAD07kWYuiQSetSx0MqGHm6KjB6/JZnr2T79/qyZnMcJVJaS+V4GNG60G3yUjRdClzkYFzQK1IoEA+f0e5QhYRxcALQ12kMr6nTFPRI75aJB3G/YaW1vK7KdpkMStHUFxgsSX+49p2sitUc9sBal3BnRWU2dRyNDn5vHKliBVPn3hXsM0LqhmzvRI4LFsZ97yG0Tug1KJn9UaK9ru3EcMMx2qaJkYVHjTtcyHPmp6/Lly3j/+9+P973vffiN3/gNfP/3fz/e9ra34aUvfemxbvf5LUOXtaxlfUWLqRK8OPRbXUgnYFUBnvQQnHsQqihQ39izYyFBIsnykHSZo5pM7DhLk/G6G0N2O56Gzp0R2mX0lTV0VXtyethLoKoaVZqjPjwk39R4G9X+PsrLj8EUOfLHH0G1c8l3yvRs4kWUKcg8rQ/GPkBZVzUJrk6C6J4HyIcEWPHHoa1QrC5/EepgjGp8HXqyC7V3hf4/2UU9naLeueghmWJ0kjbiZEA4AztqdAKMB3TQLq9t02tjN+zKgxnqnYuor14AQMyn4NS9QJSguvgIyi/+LaovfIp8U621eMZpM00lI5i450eEfIVM5hS+/DIEZ+4HAB/r40SGOhhDTXYJLBp3CVYad8FjMvXzwbpHJ4i1rSZv0HqnxOqIhFtvQEwtEdKGXkYGeVZRB8hvwLnX2AlWEZKgqSsy30crMI4RxThMEFksQggT9xa8TQTw5B7HQUJNNt9r+aFo69CAVxlBaMMOfMyKVhboaZcsbFgy3Ymhy7VI6yyn0G5PUm93o9yocYFltTzcPltqa2sLP/VTP4XPfvaz+O///b9jMpng677u6/D1X//1+O3f/m3opymEl7/hZS1rWV9+GdOc+drxjtnf9UG4ACA6XW8oN3VFvCQronRVQ6WHUGVzIGZJn3xNww06INuxUjWde2q5M6Ezwb0xXXY74HHX+5rqNIfK6Dr5+MBvA6q8pHFfGJOosiIgGJ3wt6scubyuqCNkhRS0ptHjYYp8fAA9m6Ccpcj2bqA6TFHPM9TznKJpplMSavMZwLkPC1YZGe9VZg/QXJCZvpMQvNSyueqsoK7ZZA/14SH4cIOyEGUEff2yv5yeTaBm+35Lj0UxYQnyWbPV5rpiUQwWdaGzFGp81T9P9/tjQjTbeZ2EBPBsH2K4QfFAFjehpzfo9bF+I0/+tiZ4NzZ0yAVWZdDp1PqoAkIqqIoI+t0hTEgIBgBEW3diKxlYthRBWGExBcZ1g9w4TjaUMCMjMrDLyHayKv/9RYHDF7tUrff0Qr6f89s5D1VLCDFVESbBjgHd79O0RVM7t68tsu6GKf04/71A6rWvfS0efvhhfOELX0C328UP//APY39//2nd1nLkt6xlLevLKl7MwKqcDh6W0aNL8tCwKEZ99QJ4IMGTnjdxO0HFhICIItqEi7sILNpApyQ+WGjN4YCnewPwbCcedyGU9hl7PJTgdsRn6hJ1VsBojTAgXlGdlyivbRPo0xnGhQDiBKwuYcLY30c4HHiiuhsh5k88Ch5IhGEMlVpsQ1kjvbJH9y8EeEAQT6O0HxkCNB6sr16gzk5vAGkFi9v0k6fuJRxEkZFYsZ6qsJ9AJCuA1gjWN22nrgTqAvX2Be854r0B5OY9qLcfo4N/J0G9a7EHJ85QtEsnAdcKLOrCVAXU3hX6XbgNOzuKNUrZKJ0+WBijnu0DINHJOfecMG4p9QZkGAejUZ2PyOGCeFJVAVNm9LPeGm36lTkgNViREgVfRtCdVfDJzN4/hUCzENBBD0znYEUKtbIObsONmaKlBiN6Fm0Q4lCsoMeoI2gsZgHFIV22ZDBhF0wru52nwOuCCOvtzTsuAVYudLyYqqwvjWMhtIZRd4ru0MCIAMwFPwMk9BQ9No9nOCqu7lQtw5G/7Pr4xz+O//yf/zP+23/7b3jxi1+MX/u1X8NgMHhat7UUVMta1rKespiuwYqZhywygKI6qoIMzHWF8vJjEJ0uwSTdGX6WEjiT98gXE8ZgdYV6/4Ydxe373DcA0NNxI6o4YQhQAVWaETCz0wVPegirmkjiAOZf+DxUVXmCucpLRIMeyinFywRJB3K1Qx2nLAXvJDBawMxn3nBt6pJQBmUOhDHUeBvFZEZbiuISdFVDxhHEoId8fAARBoi2tujF4QLqYEyjyk5CoNHeANrmGLLhOgFOu30SftcuESG+N4DO52DdPsxsAqM0ZL+P6KVfg+Kzn6SInumYhE3SX1y/5wLVY/+Prm837vRsn14zGYKvniDEQ29AYsrF1biYGC4gR1uEbLAbgHx1RJfjgjhgIYU+m3RqQ6aJuI4ihbbf0/0NMC6BIqVxnEMnuM6SCAAbzcI4JzFSMvo+Y/S9/gl6TtnUCzETdsFnu0BnFSoZgc9JiOqQUAq8OISRIVb0HCbugZXzxkDuwKCqos6W52TlDQ1dRkBVU3RNktD13eO0PCxmzerUrWlGgoD1VAnLVrPxNi7LkomgEWGuO9UWVct6VtT29jY+8IEP4L3vfS8mkwm+7/u+Dx//+Mfx0EMPHet2l4JqWcta1lOXzWLj+czGb5ABmVmDMixlmvcGJBbiLkyRQ413AIAM0N0e1Gwf1SF1WbRdR3ahwkzkNGqzMFCTpzBKQ+UlGOfIbLRLJ+khOLEJyBDllSdoJNjyO6i8RDhYgYxDqKpGALvNpjV1pgraEnSbdrqsUSnqgjg+VLY3ocsobTP/zjYbf1N6XDqdQq6f9uNBFsZgSd/Tw3kYo752sRlHbj9O4zutwMKeN4ijLgmhEBMdnMZkuhFLFvsgRidRXf4i4Qwsq8pBOU2W+nFm4+kh7w7jmkSuJbeL1RGRzhmn34lSfpTIWuKWRTGQp9RtceR4GVCcTWtsZoKogVvCsp1chIzzeMU9GOuVgqLuowk7xNGqK8B5kezojOjpK2B1bseLXRJhnEOkYzKG1wUBQy3V3MM5gxgq7iOYXCIBZ2GbDp/A8ykJKBk2XKx2OT+UsFwrJ6aciFLlolHGnTwI2SwdeNSCbgzuLcDoHam7tOX3nve8B//hP/wHbG9v46GHHsK73/1ufNM3fdPTfxzPUN1zzz04deoUfuAHfgDf+Z3fiSAIoJTC3/7t3y5c7pWvfOVt3e5tC6q3vOUt+MEf/EF88zd/8+1edVnLWtZzsJgqaa28LugsXgU2OkWRMHHxMVZMsNZGmS5zmGyOIE4AGfjRHLN+lnp6QKPATtL4m+ztaqWglYbOSrCcQ4QSkd3mM3kKHkr0X/YSqIMx0ivEZ6rzAmqPOiVccJSzFGLvGsKTZyx/ad5gC5IV6KpGPj5AuEpGblOSH0orDRFzdNbXwOLEd7A6Weohl6bMIUcngdWRh2iCc1SXH6WfbZ7zvCadpdCXv0ibcHECuX4a9bWLqCd74DIgz9LqyPq2FI1JBxuUsZenJDqtuGGdBLzbg9w4bdlQoTX+5+SRqiuI9TN2lb8i2GpvAD7chCkzqOtXPemczWcUSVPkRJoHCINQleBhTAHLnPxMLIpJzHVjsCACS2+QeXx1i8SP4y9pDYYKzE3HuAQ0jeCI6uoM2yF1teoGPMrLDCro2ugXMn+bIAIrMyuwksZsDtzUASKQqKI8Qa0Bpum9a8GiLvgYjIKLfaSP297zb/oWf4ox8MPrlPPXxiZwCYYmDNk9/5vEk3t8z/Nw5A9/+MN4+9vfjve85z34xm/8Rvzmb/4m3vCGN+Azn/nMbQMyn+mq6xoXL17Ez//8z+MXfuEXADQ8Kld3hEM1m83w+te/HmfPnsVb3/pW/MAP/ABOnz59uzezrGUt67lUjNkYDfLEuM0158VhgjdjPWeW7iTkmalp0453EshOhDojz4l25mhpAY+COE9qPIYqCgQJ3TYXgoSR9Sk5QROcTDzJu6u1F1UyjsA4h+xEyMcHdB9WpLixHzJYLECNeLQKyIAo62kO7fxdZY1s7wZie/AWw3WI9dM+4oYenD24Fjl0nlIXJ09JKK6fBo861NEDmpEY55Sfl84I/yCJw6Qt/0qNdwi5MJ8SQyrq0KgyT2GK3I/uWJxAcOHp5W6L0NiOoY57YAUHOPnUoGvaeLRdLd16XO46fs3fPlZTV2B1Bb5+mjo8Rd6MaNMZ/X4tCNMbwnnDglLXrxLTK0rsqKxhMxkuaTRp+V6ELQj8Jp37vXFLT2d1BRNaBpXzu7ktupbxm2lFYo0fGbdZnIIOVyw1vfVzRegOMEYAUOFI69R3MnGv+VswGlA1GK8XqelcLo77GG95ru7w2O8udKje9a534W1vext+6Id+CADw7ne/G3/4h3+IX//1X8c73/nOp/9YnoF6/PHHn5HbvW1B9fu///sYj8f44Ac/iPe97334d//u3+Hbvu3b8La3vQ3f9V3fhSAIvvSNLGtZy3pOlQliGuXUJdRsnzopAAEnJW2q6ckuATTTqe3YZDZGZQCdTqEOxgj6fejyho93CXpdYlQpDTlYs6Mf7j1F4el7KJLl4iVEwx7Fw6QzgkvGXY810GXtzecA0Flfo5ibbtxs+6UzFJMZZCcnQ3lGIs1ojXo6RTlLUaUk8lZOrwMAymkKlZeQNvtODDeIIL5KkTZMCBilUO9dgSlzTxbXVY3qwmfJR+Y9SMrfhjoY02tTS+ro5SnqnYvkZ+oNSGDaYGadzwkQujKAqnZpLAigSqcQww3CGGhNoc6TXWJGBRFBLOMeWDSlTb/9vaZzmM9JqHV7qMc7YBa8KtbPgCcHxJjau2K7Rz37O+2ArZ1sRAMnEW0YB6+KZjwmAn9AZjIgpANA3qew6xlNfD4hnELUpeiXsOO9UCboeN6ZESGxq2QAVtJ40Y8WbXeIlUTTZyz1PKqFGBkrnkzUA1QFEyQLHSM/MuQSxmYPko9KeOK672Cp2nqmND0foQndAOvhcpdt8a7sG+A2/+rufk2n04WvoyhCFEU3Xa4sS/zVX/0Vfvqnf3rh+69//evx8Y9//Bl9jE+n7rnnnmfkdp+WhB2NRvjRH/1RfOpTn8InPvEJPPDAA3jzm9+MU6dO4cd+7MfwhS984cu6nbqu8bM/+7M4f/48Op0O7rvvPrzjHe94SgbExz72MTDGbvrvc5/7nL/Mt3zLt9zyMt/xHd/hL/Pv//2/v+nnW85ouqxlLevmah8QtCLEARdkuo67NBLK59T5saKnnh54+KPKS9SHh5BJDKM0iamKWFBMcM8mcsWEoM5MVUJ2IkhL8i4uPY75hQvQeYMhMFpbEzl9pOm68pE1APwojwvh2VbVIcXa1Fnhjed0cxzF/gzhuRchHq0iGJJp22gFY0OGq+0LqMc71mOkqWtXZNT5SafggYTKSzKmx12CfkrqptV7V8CiGMHZB4kev3mWhI7WZGb3LCVBm4J2k44nfRI1UYey/7SmkSqXPoeP2/Ejy6ZgZUYHdxmQZ6mkgGg9t54lGVjoJ5HgTT6HKTNgZUSwTcBCP2k057YMiQlFW3z+d2Z0M0Kz8THQNfiABCbTtgPkgJwOlaBtlIsMSFTJaBFBYH+/OiAvFSxHitktU+ZEiwV/umw+tAWSaPoGJuwSe8riF9x//j7dRqhqje1aUTXtcZ7nTomQtv0sKJQZDVQWRaGqm31ad6AI7Hm8/wDg7NmzWF1d9f89Wafp+vXrUEphc3Nz4fubm5vY2dl5xp/v7daNGzdw+fLlhe99+tOfxlvf+lb843/8j/G7v/u7T+t2j2VK397exkc/+lF89KMfhRAC3/7t345Pf/rTeNnLXoZf/uVfxo/92I895fV/6Zd+Cb/xG7+B97///XjooYfwyU9+Em9961uxurqKH/3RH33K637+859Hv9/3X6+vr/t/f+QjH0FZlv7r8XiMV73qVfie7/mehdt46KGH8H/+z//xXwshsKxlLasppms7Dqkp6iMkY7M7uOp0ClNXkFvnvHHbb3WBmFTVdOqxA0xw2rxLYtpIA8AD6Y3OTkyovISsaOxU7e/TdeME+nAfdVYgH09h9GPons4gRlsA57b7RQcyHnehcoJlhv0EpsgR9PvIru2B279zXZLfR+UlyhmJMy44ZNcCQQ/3Ed73chJSZY7q4iPWKK49e8kUGUxd0r/TKXQ+h8qb3EIvjmQAFgQ2V1BR1EpdIXzglUBdQW6eQ23N36YgIagP9wlp0BtSp0eGdD2t6Drr5KEy0+tgJ87Q7fbXKPNv7wr4ygA87NAGnj1JdbR4l8vHVwYkWm0gtZrsgnczGACmKsnblfQoQ5ArYHqdOm5cQocdwPmKLIyVgUaNPDsA0womaOEkwo7N0rOoAsbBHNNKhLarRgwrAL4zxaqMbjdM7DiQxJTL7HPcKcAxqZruFLOCx1iTvqPIM2Vp7SK0ojO026X2kOgE1QLQ0y42uCDm9rjPdeScULMROXerjAGOWIJu+/oAcOnSpYXj7K26U+1q5+HR7ZibvvdsqH/5L/8lTp48iXe9610AgN3dXXzTN30TTp06hfvvvx9vectboJTCm9/85tu63dsWVFVV4X/+z/+J9773vfjoRz+KV77ylfixH/sxfN/3fR96PTqT+tCHPoR/8S/+xZcUVH/xF3+B7/qu7/Kdo3vvvRe/93u/h09+8pNf8nFsbGw8KStibW1t4esPfehD6Ha7NwkqKeWyK7WsZT1ZGU0HN87pwCOajgC08jRvF1eixjtecAHwcE/YjDoRh9AVHahEFBH8sjekrUDHSKpL+n4oqRs02YUuawR9ugyLE2JAhRLZLuX8xVEH2fY1qLxEkHQst4oEjYupMVpBzTPIju28cA6tFMqp3fCzgE/ZjRGPVlHuHyK/dIn8U1xAjLZQ7h+ChznCdeJfuagbNd7xozQnhtx9iNUReH8NfPUEbT3aOBqiyJO3qb52EXx1BLF+Gizep0xDC8UE5x5nwMKYompcx2plAN5foxEWQB2noqSOWVWRsC0zmGIOdAc+R9EUOYVV2+4QRABIDbX7OG30AZCb90Af7tO4K+hADNdp0y+wYqUu/HhD2xEZuICKh9QpMtoLLMiIBA2XJJ5c/h2oy+M8TUzVNNKzIghcEA9K12B1DqZoM4/Z7wNuFF0C2kI/Fd2nYa1cPRE24szDO5UVQSUYl9TlC+zlVdmYuhlrPFqV8/yF/gTDCyrnlXKXtTwqJxJ9SPNzrPr9/oKgerI6ceIEhBA3daN2d3dv6lo9G+ov//Iv8d73vtd//YEPfABra2v467/+a0gp8Su/8iv4tV/7tdsWVLc98jt58iT+2T/7Z7jnnnvwiU98Ap/85Cfxwz/8w15MAcA/+Af/4MsCY732ta/FH//xH+ORRx4BAPzN3/wN/vzP/xzf/u3f/iWv+9Vf/dU4efIkXve61+FP//RPn/KyDz/8MN70pjchSZKF73/hC1/AqVOncP78ebzpTW/CY4899qS3URQFptPpwn/LWtbzuVhdgBUpHRC4pDN/u2HFOgnqw0MSPysDAnS60QbnMEUG3u35iJMg6XiTuVHaizAXUcN7A0IAtIzbztzOQ+lFmhpvo5ylnjvl8AtGa6iqRjlLUezPFvPjAJvZV1IuYDf23wPIUM84xdp0Tm5CrI4QDlagKmJmOSyEGycCQHD6fgocriuYPIXK5lBF4c3c7rZdGcZ9147HhC2otx9HfeVR6HSG+uoFmHxOm3eck6G/P2pEaV2ST222j/raJYq92d+jrkvQgdm/BnNjm4zjSa8hoBsNdPoAY7Qh1+mD99esqb3bvD6T3YazlE6hZzea/L4ihen0KZy5OyCx4XABdvtOhyvQcZ+iibIDEuNRt7mMKv17aeF1iXseU2B/8fYHukEpyKgZI8JuDYqAAJ52zOZo6X5bsMporOi6qy63DyBhw8Ui9RzNZhtzcE5XFg7Kq6zphrkulS2mavqvLuk/be+3bV+5g6Z0bcyx/7udCsMQr371q/FHf/RHC9//oz/6I3zDN3zDV/KpfUVqZ2cH58+f91//yZ/8Cf7hP/yHPiT5O7/zO79s61K7blsy/8f/+B/xPd/zPYjjJ29pDofDL8tF/1M/9VM4ODjAS17yEgghoJTCL/7iL+J7v/d7n/Q6J0+exG/91m/h1a9+NYqiwO/8zu/gda97HT72sY/dEuXwiU98An/3d3+Hhx9+eOH7X/d1X4cPfOADePDBB3Ht2jX8wi/8Ar7hG74Bn/70pzEajW66nXe+8534uZ/7uS/5nJa1rOdL8ewAvDz03QV/8KpK2jYTFH6sD/cB0IiIxYmPb4FWMFpBdmm8Vx8eEknddoPgcu16NK533RMxXAeLOp6vFJ09D95JKLPPjuZ0VfuOl0mnEEEAHdQLTCrGabyo8pLI6qEE4xzl/iG0UvR1VUMEEkHSQXz2LKq9awg7Ccr9Q6i8xHxnjI7SJOzsY+fdHnWD7H0RO+vA328wHKJ79kHU1y7CVCXUjR2I0Sk6iHeSJpanzInXVdDWo6hK/zqI9dOEh8hSj3Pg3R6MZUPpfA69fQH8YEyXK2n7D7oGRADeX6PbL3OAV81oDQIGAcTWebAqg5kfQM326ffZSSBGJ1FffRx6PqMu1cF1mHQKHkTQ3SF4dmC7ORH5rSxHi8maol/ynKJkAqKhs+kuiUGtwOLGG2WCiHxdHrxZNJt/XFoCee5FkuHSe6R00PFeJVaXxJTiYTNmq0sPFmVuI8/F17j7cPgE915x9wXqehHaQfhOFlOlj7Lh8wk9N3tbNH50yATVerxtH9YdxibY/45z/dutH//xH8eb3/xmfM3XfA1e85rX4Ld+67dw8eJF/PAP//AxHskzU/1+H/v7+96c/olPfAJve9vb/M8ZYyiK4smu/qR124LqdltgT1Uf/vCH8cEPfhC/+7u/i4ceegh//dd/jbe//e0euHWrevGLX4wXv/jF/uvXvOY1uHTpEn7lV37lloLq4Ycfxstf/nJ87dd+7cL33/CGN/h/v+IVr8BrXvMa3H///Xj/+9+PH//xH7/pdn7mZ35m4fvT6RRnz5697ee8rGU9F4rp2vpXCoArGKnpDFzXPh5GRJHdYusRCNOGDjOXY2fhlCwIF4y5PCATtQGaHDkuwOLEijBNY0C7RcasedpUFbLxge9OMcER9slXE58+BXXhCRoPJh1iM1W1Z14JTnE19TxHnZMJnXHKBWSCIz65CVNk5J2y2396fwZhzeV6tg/Z74MFoSeHa4sxEOunid1kO3fy5L1gSR/y9P0eMUB+ITpgixOn6CDd7cMoBcEFoSUO971hXB+MyWSe9CBxmkZ/4x1LQw88jNPkKXm44i709Aa9TraTJTdOk/gtc4i1yHu/AJAgrDI7GlS0cdjtU0fRBlUbLmnRIJ0SFZ9xoC7A0DrQyBDIpuBGQ/U2oKMViLogcVXlzQhUKbDYdoHs+EtHNNVwjCnK84tJ8DhWlHu/CSsWVUniKOyQ8HKmb4dj4ORfMrwxm7Mqh3EjOvvehtbUcQWarT3eGNXJcG5al69JaNGb1Y/22qKK3tzCP/abWE53Gu55h+uf/JN/gvF4jHe84x3Y3t7Gy1/+cvyv//W/nrGNuuPU137t1+JXf/VX8du//dv4yEc+gtlshm/91m/1P3/kkUee1vH9rg51/9W/+lf46Z/+abzpTW8CQMLmiSeewDvf+c4nFVS3qq//+q/HBz/4wZu+P5/P8aEPfQjveMc7vuRtJEmCV7ziFU/a5nuyddFlLet5WUaTL8TQBhUq8lPpLCVQZT4nLEG/T/Eo3Z5nU2GyR6KoN/AZccpur4kwoIiaOAHSGV2vrqBmexDDdSib48d6A+pSKQUzn6K+dhHl/iHCXhfznRuQSYwgiVFnBepsD2E/gYwj1ADC1R7KyT6FKgf0Edf2bzHBoXNaewcArjkOH79I/w4koDXkygoAMrVXaYbO/S8iJMHoJAm8uiIRlackLtdPQ89n9Bz2rpCwTPpQkz3Ie15KwqDMia4OoLrwGdqO7A3odZuOqcNnDfP1eIde17gLYa9j8oZI7inqZU45fVqTcT3uEkYin6O+vgNmMTamKoCws/g7lhHA6TYdxV2Nd+zoFUQwT4bgnT4JMMbJD5Uf0mOIiD9lAtrMY8UMRsZQK+vUTdrfJk6ZVpaVlREEM4jtZiIIYGqFVMOFYr4jRWZyy4IKOr4DBIBy+VTt8QlwQgug23OCTDYeKurghSS8nMBSzXjYCz73N9D+vxVEvoOlSr/hR1232I/5WHvECDR+tTtU2tB/x7n+06kf+ZEfwY/8yI88/Tu+Q/XzP//z+LZv+zZ88IMfRF3X+Jmf+RkMh0P/8w996EP4e3/v79327d5VQTWfz8H54ptMCPGU2IRb1ac+9SmcPHnypu//1//6X1EUBb7/+7//S95GURT47Gc/+6zE5C9rWXe6mCKgoynmdKCPOtBFRgdcrcC7PQTrgAsyZlGn6X7YbhSTAXjStxRvOx4TnMCcWpHXp5PAODCl1oQDqErwbo9W/Ce7yK9c9V0lVdYI+10iqJfNGX/R+syo5xnKKZHUuRAeCOqCkoOEsv2K/UMSXZ3m50ZYkZX0wFueqfLKE9BVjc66gprsUYSLDKAr6iyxOIEYrqO+/Ch1qsIYMumTCEonBOi0tHGTzQj+ObfBvkVGB+FOQp05rSFAXitT5tCH++ArA/9YHK5CzfbptXebh3WJevuCN7DT70aAxV0bG9PqUAEwIiD0gYWzUifK+sWSPo3O0gl5sJSicVvcI5hnmdnRHsDmmRd00PtQg9NehDBOeXpsdROwXU+jazAuwaocrJg1BnQWNGZxbb10uibCuRNHFufgO0ltbx/gRZkf5zEOI+NGTLnOkfue/zpchG8yBpimO+XGdyS4rPBrm9K5BLOcLejSP/aFTtUdFFTGmJvI37d7/edzfdVXfRU++9nP4uMf/zi2trbwdV/3dQs/f9Ob3oSXvexlt327d1VQvfGNb8Qv/uIv4ty5c3jooYfwqU99Cu9617vwgz/4g/4yP/MzP4MrV67gAx/4AACir95777146KGHUJYlPvjBD+L3f//38fu///s33f7DDz+M7/7u776lJ+onfuIn8MY3vhHnzp3D7u4ufuEXfgHT6fS2OmPLWtbztqocyClA2Fh+kaOAG63Buz3wlUHj3YHtcly7SCZzGyWjs9TTuQHaomOW/i3WTy+MXpgM/FgMAExGIzVVVV5MuQp7XZSzObhozN6ufCeKczDBvWfLcamcOR1oGdL7CYrJjLL9plNEqyPwQFLXK6e4nPjMWTjiuqkJKeA34fIUKk/JxA0Qi8vGwLDuKgzj9Hy5AIu6kKfvh5rsQY23AcAHErv4HRbGHiLKu30rWMloribUzaMX1I4gU6Kqgwv/+jvTOe8N4aJWDCgTz2fQWXQBjBWzTth2rVk8S4GqBAtCcFVCJSObgXcIdPowBXXoyFeXeXFmRIh2ULbDHJi2CNGKzN0tEKjrRtE2KQkSBhB7StfWY8UXWFP2l23fNEfo50HcXM/5rlz36FZxMBbD4HlSdbNcYAR1L4+iEnwUTdiY/EkAKqBFDGBqcVFhWXe3RqMRxuMxfvu3fxsXLlwAYwznz5/HP/pH/whvfvObnxbu4a4Kqv/0n/4T/s2/+Tf4kR/5Eezu7uLUqVP45//8n+Pf/tt/6y+zvb2Nixcv+q/LssRP/MRP4MqVK+h0OnjooYfwB3/wBzdtBj7yyCP48z//c3z0ox+95X1fvnwZ3/u934vr169jfX0dX//1X4+//Mu/fFbOe5e1rDtZvEwhsgmNrrKUIlvSGeTWOd8N8UKiqmhjz3at5Jn7UV+9ADXZRXD2QeIu2ZJdiqXxUMnRaRrZpBMyXQ/W7QFTAOkE+nAf1XRKIE6lve+pzkqEvQQyDmGUhohDBEkHVZpBhAFUSWHDXAgKMrZCrJ43j6WczRENVhD2E9QpoRBEHGK+PW5eh0AiPn0K5d4uABC7yYpBU+RAtw958l4AgJ7tQ0126flZgelM5/W1JyBHW8DqBpgqUT3xORqDzQlDQKM66x9zWYaAjbIhCj3vDbzh35Q56u0LYHFCPrDeAKquiHVlHwsLYxq3Wj6UurFDfq7eicVfdktUsHgFvEsdMRZ1wEIb1lwqO84UFJBt7wdcwPROgE2uUofNRgL5LlOnT8Z3i0YwNo5mgdmka8CE5HkKYrB8tiBCvFfJe5R4wwGzRnYat9mL16WFMDXjultm9QGNaBLSG9bdFp8nnTuxrnSDP2g/NletIGZ/fXsfRzu3d6Lu1sjvuVLGGLzxjW/E//7f/xuvetWr8IpXvALGGHz2s5/FW97yFnzkIx/B//gf/+O2b/euCqper4d3v/vdePe73/2kl3nf+9638PVP/uRP4id/8ie/5G0/+OCDT9m2/NCHPvTlPsxlLesFVaycg2VTbyjmww06KE92qRvl8uO0BndenqpsRk2tAwhPetD7u34NXZc5mNYUv5KMwPMZdZgOxs2BvcqgixwsTiC7sQ9U5kkMEYc+HoYJvoAyUHkJEQaeNeWElNGNl4oeFt2PCAMYpREOVgCtkO1O0LoQXbcqG0jp6ojGcaOthYNjfe0SbSRGMXGTopZXiXOixB+MwdcTmKogzpQd8/GkRwZ+C0plYdwY9WVInT0rQlkQEA/qYEziyVHKuaCRIOcE4LT3q6yx3XmtNADRXYXhLS8oYzS+y1LwVRJbRlE4NTpESdd5Ch7GtCnImB/RseIQRgyam7IdNl4cQsd9wJgmUsaJKX5EhDhB1/6+7SBx10ly4kQEzeacakSWARqx434vrCVijlLMjbasqpZfyo743GiRrls3nS7YDhVvsgNNWxj6+2tzrpiNryG/lpF31oP7PNdEx6r3ve99+LM/+zP88R//Mf7+3//7Cz/7kz/5E3z3d383PvCBD+Cf/tN/elu3e+eGusta1rKe9cWqDDw/gJ7t25y+ADyMITfPNQd9S+3mYewvw4KQPEAnzlAHp6LMP95JKCR4dUSbZGGM4OS9UJsvagjsAEEnowRgHNXFR1BdeZQ23NZPI+wn6KwP0Tt/FisveRmCJEbQ76J7cpOI6p0IVZohGvYsdZ0+1lRV0bhOaci1dXTWyXTKBUeQUDelSjMikYexF2fMUtC5EBSEnJcU85LO6OvxThPDUldeeLKYNvp43KWxoPWOqfE2ec+MJj5X3PXmczL09/2WpBiu0/2HMVjcpXEfF7S1t3UvdYLCGMG5ByliJiJvlp5PbWeJRqr6YEw8qcN9eoxVRdEy+aFnZYFzMomnU+g8hZ5cI/HUScAGGzBCErPKdrlgNHS0Qh2nAWEgIEKwTo/YY9L6xAoyrZsoaYjmQvpwYgCWHRW3jOHtLTlD47lsSpgGOyr0+X2Axx8QfypqMAp+HMfIe+WEXAvq6UjnTlwZLhvfn65pzOc2XFW94Mfynih3fy7qBmh4ZbXNNTQGUJX3t91JQeU6VMf57/lcv/d7v4d//a//9U1iCgC+9Vu/FT/90z+N//Jf/stt3+5zD926rGUt6xkrT0IHvI8HnMPMZ3CZeXqyh/DBr/IRJIZx6OuXKbg4iCA3z1LXZj6FKQYQo5PkxeICrBMCJx+ACTqQ0wtNzEiZA0EHKFLo+QzV3jXUN/YQvegViO5/GY0WbXRLct99MEWGbPuaN6e3u1DGdqDCXuJ9U0QXv4bePaf8dmI5vkFA0IMx5PppdNaHqGZz7/sJByvkERMcuqxRHx5CX3wEXAYQJ++l7lFdWb9SQoiB2YS6WOunPeZAWAo6ALD+CQQrA9Q7F2CqirxTAZmxnSATo5PQswl1m7SC3DhN3R8uIc48SL8oLsD762BGQ119lO6nNyDPWToF6yTQ6Yw6iJwT2qJuxlkU+qvJIF9XNDac7VM242gLqDL6XfROgG9EwOw63W0+I2/d6hZ0d0jCSIQkoqPE+oSUFV8J4RB0DeaEkRXN9EA4jMvJcx1BJ7y0holW/LgOIFin70L5kR6jCaEd1fmukxu1uQ5Ti26+wJxqAUNhPVOUSSj8NuFCZwpoOljt67m/GWWJ/4wDxm4kCodruH2u0bKemfrbv/1b/PIv//KT/vwNb3gDfvVXf/W2b3cpqJa1rGU1peiA4g507kBsqhJy65wVDMofQClPjYNv3AMUh/Tv3hBs74o3s4ukTwTwgNbVddyzlOrKm9rVZA+Y7IF3e6hv7KFKaXNM7l3xZnUXKgyQ0Zrv0kFexMSYMkqDiYbizQT34z813oG0ERpMFBCjk1A2rkblJQLne1Ia4XDg78NFyjhjO+McYrQFlvShx9vQswlt+I22yNdkO08uloZ3iUxuROhNyaaYQ26eI0GRzSiPz475tAV1itFJsCj2vi1HBtezffqdBB3y/jAOU5dENbdZfADoawtGZUHgR4lMBq3NNOqEcS6AZAhhR7nQisaFvSFt9kUrNMqoC99lgyoprNh1aYIIuk0O1y2/kWq23owDebqNPa2JyG80zMLmnG7wChbfAaDZzmt7pLgEr+bQQbfpcGnVWLGsAPPLD1VBkTyd1WbMvEBSF4thya0x30K1tgLbnTGXJgC0EAt3cMMPWG75fam6cePGU0bibG5uYjKZPOnPn6yWgmpZy1oWABpV8CL1nhZT5kAnoQN+XdH4KEshz9wPFkRQ7gBmoz8QUSYbVtbAV0dejOjZBGJtC9i6H0YE0EEXPB0DdUEH7jAGZID68qOAVqjT3Ee3HD76uN/EAwAuCOIJAJ177kGVfs5f1rGmdFkTMiGQjXeKc+qUzaceium2AeuMOgeOqA4HFOXUQZFJDC4D4kodjElMplPUVy9Abp2jMZ0dw6mDsfVTdSFP3kdjJ2OAwzG0UtDTG9DplC5/z0ugJnvQVviQ10l5gcV7A/CVAeq9K/TY0yllG86nNH4croNvnYc4/SCYrlFvP0b4Avt6Olq9TnMIK7i0M9YHIdAbUaRMVfjtRFNXFNCcz2HCGEwr8E4F3VkFNwaY71NXrkihwgQ8PyS+VNjxGANv7K5pKxCMQxzuWTBoSR0bxq0XS8NYYegN6GUGXh5CJSMLlrWdRxn5rD/HmXIiR3WGLe+e9Uy5zhBsl8l5n0TgN/IcmJN8WHYLz2h67W6FO3D3aVEKCyZ1VVkAqe2gtcaNbcP6nSht/zvO9Z/PpZTyMTO3KiEE6vr2f19LQbWsZS0LgD2guIOK1rSxxgUJnt4AqsyJAL5+miJDRLDIABKSzv6NtqNC4X1WOkqgowQmTMCzA4g5jcZQV6hn+wjO3A+1dwXV+DpUVfnHZJRGnZcQDtDZpw5HvXcFuqx9d8oJLhd6rDOFcpoiOUWdIiZs8LIlqEMr6mAFMT0OrSDikMSZHY0ZaxoXw3VvDDdZ6g3f0NQRMkVGr8vmPZBhbD0/1kiuKujZDajxDgmuvSt+U88Uc4jRFniREyn9YOy9VGT8J2wFsaY60DM6Y3a5iXq2D97bh1lZAxQjL1aRgwlBnrYgoEUCS3Y3+dzjK6A1WM9toUmPyIBW0HkKyAB6TiNDLgOgO4SJEvAyBaKYApmd90grEiUisCOuwPudHF3cyNj7mNpG86OihRUpWDW3t60J7hl0PLKAcenN7N4fZd97zb85dbtarCp/H4reA20/FdBs9TFVUefsKNzz6Nftvxv3PREsdLy0fW1ZOfd+r2U9O8oYg7e85S1PCut+OrEzwFJQLWtZy7LFqtyvojsUAhgHS/pgltrNkj50sgYTdKCjldaV7YGZS2A+aQCRHRoL6u6QDMz5DPzwOuorX/R+I7clGNzzEpjsrwDAj+2KycwDNo3WMEojv3LVhyLLTuSBnUxwGKURJB0KUK5qHF7awcr5s4DFD7BuH8GJTUCGSO69Bzqdop7n0DYmh2sNVRRgOXWNuB3dAWTG56sj6HQGPR3Tc7PRLkZr1HVFGAU7dmJVhnq8A7V3BQBQW0aXE3YmSym+JktpzDfcQG0vyzj3rw099myBUQXNYXJifLGVNRgZgp04DTafeu+Pe82YJZXr2cQKQw2EGizdhxmcamjfNsjaAVldvp/vtDhx09uw4znuERFM1yQeu0NLTKduEs8OSEx3Vt0DWhjXNcyoVndIhI340ERCNzIEghBahuDzCVg1B3jP3oaxnafFLTzPh2p7n0TYfN2+f4B8W0Hk/VX+Ova5M1UvnEB4Y7tWzcahy7yUEQm3fObvwxvq70AZAxxnavc8n/h9WbzJ293wA5aCalnLWpYtE3bJWJxrIGrO4qkbMkFw/iHo7pDCacMuHTTb6+NGwwBQvQ3IKgPW74ExGrqzChMmYHUBeeMJMkt3e6ivPg6jFXhvSH6rdAZ55n6IqgLqEvkTjy74oXgoaSsvlNBljeT0Oo34UPvuktvUC3sJsrxE/+UPecYTdaUEWG9I23b9EcRwA9KJP9uJclEwfLhBmXZFBjXZoy3Gbo86SDKE3DzrUQoAjTbdwdgfYN02YGHz9U7eS+bwuvRdLlNXJLasx4cnFPXC6ooM5d0+9GxCI1StiD4/m9ABO4xp26zMoMMObQIyDn1wnX5W2RFeVVmoKME/+eoILOyA5zPo7sAjGFgYQ6yO6HWoSsB2FgHaxGNVBr1yAiaIwbMD60XqQ1uCuRESpksgUe08SrcanbVRA847xThM1CKL6xpGxuDF4UJ+nwk6VrSFYHUJVmfkg2cJ7a23BVv7vttCiwuKHnLiiEuwIF4Y4bH29f0fSSMImaoWDOrG3q6R9LpCVQ2uoe37ugO15FA9db33ve99Rm53KaiWtaxlASCPChiHtn4YVAWYrqEOxgjOPUjCSFhvjvNOtQ44jg5twi7qzRcv3i4Als9Qj3egZ/s3jdFMmRM1vK7IO9QbegSC60wxwSHiEEZrhP3Ee6BkN/b/diX7ffT6NkfQ0cg7CXV75lMScVVJ2YPuZ068RbHfynOkd13mEDYyB1yAdy2aoMypk9UbQgw3iNPEOfSN69TBKhuYqId5ygC6zGHmlsFltycdLNOxq1jcJdq4Gwfa+zJu9DrcoFiY2Ri6KsFWN2jcKAMywhdz72Pzj3NlYMeBkc/gA2jbjSV9IEsp4w+g1yOdgFtRrDurQGeVhEyV0yhLhDBB5IOOF4SLE0r+jdASFEe/743y0n+PVQV4cUgispqTOO8OYYKYvFSuY9TqEDkPFo0f7cit3a3yz00tPiY3GmyN7PzPb2Uqt8T0m4jrWtFWoWNfuY7ZXTCmL+vO11JQLWtZywJAgkh3hzR+0RqizIC6gDh5P7QMLKSROlML6+btYgxMuwMJ8+MYVhfg2QHK8Q6ZrudTiNEW9HQMlc5QX72AcrIPVVbgNw4Qn9UINk6BCQ6Vl6izAlwI+rq0pmfBwWUAXVeeoi6iiECkZQ7e7aG8/Jj/WWA38HQ6Q3ltG9HZ86h2LgEARBRBjLagJnu0NWdHXvXhoQeI8v6IxndtWnc+p1X7bh/BmfvBGIfe3yOO1soAvDew+AQyutP1CU2gxjvk04oTyM1z5MdqMaJMXcHo3HaWOjR27Q3Auz2wwaYVFhn5pMIYGF8BH26CzVPqOokQPNn3m3sAKBfQduyYqsBkBA3Qxt7qFlhnDu3M3E5A6hqsnEP31snHVKRgdU4jXxE0aIO2kFqAZj71htzC99zlGaf3T8to7sK6UZdguiZe2so6gUOdECqzphvEOJhO6f1qNwb9+1GVTSDz0cfU7irZsGMATfQMjqATGAO4M6Ar8pkdPdkQkkz4d6iWW353p5aCalnLWhaVM/raoFdkU9QHY8jNe2BE4i/zlGfanlTNaIxiNI0+qhxmf5e6NGUNlY8R2pGVmR6gPiQYJHeiZzYB7yTgMoAJNEyaAVZQyU7kTejgAowr6mYJDtZJUF55AiovEW2cgOh0UexfQ/f0yWZjbnUEdf2Gf8gqLykkeaihsjmM0lD59UZIBZIEi83wA8ibJGz+ni4ycAsD1Yf7fpSnp2OIzXPNyysD8ltVJVyoMeMc8tR577OiJ699l8p97Uj01MFbo6iWvSeAwAY71xUgAZMfQqdT8LqC6a9DnKCNSCeqTAWYkLqCHLQBx7iECQAddMDaIy8bHeOZTgBgxZNpLyQc7dIc8TDdJKaOvn9uIawMl7RAYFZIpJdpc1tuKxDwfjRwCVTEvDIyoucqgoUw5YXx263EnEMutMtuDEJVNHLEUTG1uOXnMwidn/AOjvnatdzyuzu1FFTHLF4cgqn4yc/Yl7Ws51IxDuiKzv7TqecWGRmBFbPGF3OrancpWoZdPp9ATHeApGfjZFJUhykJDwB1mntDeeeee1BsXyHA5v4hqjTzPxNB4IWUiCl8lx6ygOiE4EkP6mCMcpYSX6q1LciEgJrsIduboANAK4Xi0uMIRidQXrwEozSqnUuETrDiDADkYM1iEDoUGdMaP5qqAsocYriB4Mz9AIDq0hd8rAwAmHQKU+TgqyOKjbGZfyZLIddPWzhoST/LUut3Kq3hvWoEKiwTrMj9WKvavuC9T0ZrEooHY6CuoAHw7oBwB1sRzNUvekHHwhgmn0NnKUQYUzZfNQdTEjq0wplzqLADVloKfGukpjurFn75JcZit3pvtP7tTd3ti7UN4y5MmXEYa0Z3kE69YsOhnTiy5nVCE0SecdUGcrZjZZoOKpr7U3oRg8A4iTdVA2ErTsiJLpdLyQQcj8twCSZCEnPuhALkP8MyHPl5X0tBdcxiZQqWR2RotKnpTxqguaxlPcvLcAlezMCme+QbGp208R4hTGhBeLd4T7O6aMCVQWdxyypKoLsD8DJDcOZ+lPMpeFFADumgyOU+gTHtOCy+535kj30BABCPVhfEkex2aLPMbcDxpntST/aQjw88l8rxqIKkA9bto7ryBHRZY75DQs5o7TfitFIE+Ox1yU8FQJ4mlIOhC5DXSxGRXVc1iZ4ig+EcJloBKw7JtG7HdQDhHXgnoXFgROwjtXeFkASrI/JyFRndj9YkkLSCsRt3Rmv/ePjKAOzUCRK4+SEBT23MD8q86UKVOXX2xlfATpyBjlYgzjxIxvXDfbAghMnngKXEMysY0emDBR2POgAAE5M3yqEO2pypxTfOLbpQtzKkHzV9t2+ivdzQurwXV0EXPD+ACbok6uz3/e2KoLmNMqNRYFvUHB1HHulGeYRCG0rqunOuawiQEPM/A210uoidIzgGz79iHOC3eN2eoTI45pbfV+yRvLBqKaiOW9YfYkDtcxjdIvTWMFGv4aAsa1nPgWJ1CZ1OIYYbTWab4wwdPWFwZTSN9YQkwKE7e7ff5/nM85XABUE3V0cwVQURJ+BJH/xw33qXMkQb63AhzCqngGJPKxfCiyGVHkIkK8i2r/nukSsnpnggPdrAP1y1eDAXYYBwOIA8da8P+YXN72M2WqbepzEhT/pAOoUYrkONdyDWT9NnQKdP6IeK8vHq8Q5YRf4qdPpQuxc9uoDFCRgXZLoH/ONjnNMIy+XCyQAs7nrYJotSAoF2Eivocpg8pefuTO6g7UIjA3C7iWZECNMJwV03J4yJN6UVdfqiDgkG61HysS1HTg6PiqBbv4FaYsp1tlpmc38Z97V7T7X9Sy1h4g/uUUK4BKNvfhyMe1hn+358zEx71KdK/3gWuFjO84ebxd4tnx9AYqod8mwf84IodNe5gyfX2hjoYyiq41z3hVzLI/1xy/6hMFWRqHJnQfYPzVQFRXQ8lZF3Wct6FpUJuxBJH3r9PjKhOw6R24S6Vd3kSTFgxSFENgHLpqguP0qZdDIAixNwwG+cuS5REHdJxMgAHNTdyccHMFpD5SXCfkIiK0vBHAW8qskYbosHEtGgh2xv4jtV3c0TdlOv9sgFEYcIVmx2XhiQN8uKKbG2BSMjlP/vz6HLHMFwHSzpg9ttweCel6D84t9CpzOED361HevNoZMRuNZA2IEZnoGUAXRvAJNOidPkNvQCGr3V1y6C5ynE6KTP/mO2G2XqkrpPRWa7SarZhAQgohg8TqCy1Hur6AXgJOC0Iu9VfkixMXZUp7pD8GoOFnTAr1+mqwzW/eeTCWLwfEYbfDJs+FFHM++MJtq9aF3G/az9nmhDNW91GcuG8p+bR37OVNmM/YQd9bU9TE4cuY1CZzZ399cSN4ZxsDpf8DY5Iee7U21x1LoNwAlDTj/SCj6rTx85yeDCU9rb24yGMdypMjhel2kpp55eLQXVMcvTgYFFLok1JzJndtQ1EBh/lr+sZT1bS0c9sBP30maUPZB9yWJsIciW6ZrEVFVQTh/QCArOwVYG4J2k6Ro5AVCXZO52pHZQNykerVKMDOckpgAYrei2OEdnc52uG8aop1Pf0WIWPlnvp55hxUMJozWyvRvoRjGY4Aj6fZiqQn31AvGwzr98wfjOuz16PDIA65+gUd18iuqxv6MYmNEWgqgLU8yBhDLwzOb9EPtXYbo927XjNhbGPv4yp+cSJeDWK8W4QH3tIrGzLDKCATSmc7wsa0TX85n3RPmuWl16VpWxQE9W5MSzcviDoEvsqhNn6Hb85qYdUzn8hQgBrcHLlLY/3a+6sj6umk4ib+o6Hek+3fxeaX2vNSa75WUdXd2+B40ImwmAg222uz9akxhsR8vcasvw6GOxJ8W3FH5HI2OEjZGxXRx/wqFVM3Zs/ee/bgFXl/X8rKWgOmYxVVG734aXehFV08aHDjvWLKmaMx9rWFzWsp6tpXqb3mT75ZThEuAkCkQ6prFHmUFdv0o076hjidvEUBK9AWEExjsExCxz6jxxgeqQNrp0SQcyXdWQ3RiMi4XRHQ9jiJiEmqtqf98LJye0fGCxzfpLTm2Ar46QfvELqCbUuaqmUxJkXMDMp2BVBhbGkMN1Gq/1T4D3BiR0AP94kdG4Dc4X1e1B3jegB8MFxcKshjB1Du0wCUkPTIYUZMw5wVRlAN7pA9mUsA/pFEyGlBMoKUYGgM8KVJNd4lQVGSEVwphe5x4JH570vHBjnEPP9qEPxuBWIBsZQEcrTWdIVRQHJCSMDSB2221gHHw+IUq6FQi8mNH7AwFYYeGlsSWXq7LpaLW9dEdHhkfN7E+17EBPxI/tDONgXIJlB/52jRNFLc+UCbst8ziHCS0yojWSY8UhdWJt54q1hVRbYGnd5BAyDq/sjLGjbPu1kDcZ743ltt2pWoI9704tj+rHLFZlgBJ+m4SpupmrA2CHN4AoAYLIr/RSjEJnOQJc1rO6bkf0uwMd07TNJLIDVE98rtlS45wYSCsDyDCGTmdQ44s0+prsQZe1xRRoP5KTSUwmcCEWNvqYJX7n29cQnz3ro2uYDGEUjf+6myegigLgHNVkAtmNwQOJcprCaEX+Lf15lLMU0aCHYOMUkcy3zkGeug+GS8gHvtp6wDLyI62OwFcGMNPr1AHrJOArA6iDMVR6CJmAHksQUffEjqEM4+BlRidZlkTObMahSafg8wnq7Qse5MnjBNqO+FxHTqczsLgLuX4a6mBMoM8i95BP3hsQP6vbp+t0ekQ4t6IDDhA6vQEWxWDJEOA1eHYAUxWkDeqS/j88BRN2wLMD+0bQUCvrPjxbxz3oeBW8zMDLjFb0u0O6vjWsG0E+MGciN1FCXbF81mRA3kpQHfVftbb03DjOC7PajveCGCwdE03dXVbXi54qVy4E2nemGAlBF2jsHkddLgQs0+NY5FT5EoudOVaX9HNx5wTUTXXM6JnlzO/p1VJQHbN4dgAeCWgnjhy1V6vGZKproOYLxnUADUV3Wct6LpfFI7QNv8ZulIn10+BxQgdxGQCqgs5SVJceoYiXuoJRGkZryG4HRivIJLaUdIHixgFUVUHXFXVaqho8kKgnE4jYUrJlQCZsrVDnhX1ICiJZsf/WlNdX1rZD1G88R6AOGE/65FE6GIP314ARkdLBKEKFV3PaeLRIhOC+l9NBN06gPvX/QXS6NrKFOkC8mgO2c4OwAyMjoq/XJbC6QcG5IgSLEvL9FBndtu0qid6AulBRh3xTXEDIgMKlO7mPofHFhc34U2DDLWgZgFUFdCeGjhLwPmCymV8KcF4pZ6D3XRwuwHQNHa6AMU7xN/N9cD7xdgZezaFaGAFjUQvcsqI8egGgE0xewuiooZbXhRUcLaN6y5TePCe5KKBan5VGBODlfCEg2bOxQKIGQBPgjCPbe/Z3u/Bviz6gx+0WK9rbfW2fVDNiPFqePt/qnC3rhVFLQXXMUgc3YEIB1gbdubXiuoSuKmq/VwV42IEJGtM6Nxo6Xl2KqmU9Z4upkrq0RgNaQ053gLqgLorjWA03KLYFNCorP/dXqOdZc8IBIBgMaHSlFW3GWUO2iEPUeUFIg5UEPKCYGMYFhTbLwG65NeJCBAF0VdPUyW7+qbJCkJAIMEUO3l9D2EsQrG+ivrFH3aE4weHnPoNukYFfeRS8NyR/UtyFGZ0GeifAOiV1Y8qUDvj5DOEDr4TOUyKQr5+lA3M2JYjouZeCpzdgOn2Y/gYJBBlRt2c+Qb1zYcGUbuzmnXabjBVl/rEghNw4DeQzYHUDQRhDZynqa5caccUFWDeGOdglz1WRg6cTYGUElYzArA+K1RSHow+uN7/HTgIWdmBsJ810AphoHeJgGyxeIZOzjBaEhLGUdMMlZepVOXXn7WaeyCZ2OSEFZ5xCkqMETNXgZdqgBcIO8aX4rU3s7TGhy8uDMdDdIY0idQ2djOwF6PPV2OBuVueN/+ooaNNoAFbEcUFdGXtSYFz80pcaRx4RVguPtf147/BnvIaBPkab6TjXfSHXUlAds8Rwg8YN6cSThb3RVhJ8kFawlf/AYLCANy7Aq2zhjG5Zy3ouFXkIyyYINj9EvXMRejomw7UMbYeqC6jKG9Tboce6qiE3zlikALf0czJkV2lGiIWAPqooRiZvLlNXNPrSdlQYBNDKdiSsKGGCgwuBcPMkiZMoBrRGdP7FMGWOYOssTF2ByQBB0vGBxyy2TCpO4EbPYFIV2IzEiOlvAJvnIaqcutL2oO09Sze2KS/wYAx+4gx0d0j+rBuXUR+MaZRnNwsBUPTNfErdqroEZAC5dc7G1wgiyFuulx7vkCk/6Vv4aEwjvTD2nRVT5ODduuUxonEUq3I64Dvf2MoamdXDOXWcrPHaG9VFs2lnZESZiGEXOiDcAisy703ixSF14OrKPt85WDkHB6Djnr3NDqAq8GpOlwUo4FhoorG7upWx3c2yjIaOVsCLQ5hQNp0s5+MCyKTOW2T19kixvVnobppxQDb3f0t8wsKWYquD5a4PNNiJLwcz8QyUOebIb0lNeHq1FFTHLB0l0Nd3YSal38RxqfQ86QMsgqnIlE7CyrJiopWmzSyCpZ9qWc+5Iv+gFVM1sabqyS5MnoL3RxDDDep8BPQ3wDgnoQAg6PfBkx7Sxx7Dyste4Q3WRmtwzqHzOcrJPozWCHsJRKcL2DEeizokJOIEZj6jx9I6qIX9BCKiyBGVzT0ioby2jfglryLMQV1Cbp2jx8YlkE6AUw9g5fzLSazVhTdvAwC4BM8OUF99DEYpqPkUpq4gT95LomtlRNdTJcz1KzTSVArV458GH2xQlzqbAh3bke6dAA7GQF362Bm3vQjAhyir8Q6iV7wG0BrV5UfJe9WZwJy4F0wGEGceAAs7qC58hh5mt0ci03GsrPeMz3YBGUElI1oaEIHdqAxJYNYV9EoCE9nx3XxCHSeAMvsYJ2+Y7SDx+cR3rHh2AHDpR6PQNDpjuvYcKF5OgDoHK2WDFWAcxmhiS4HEiw66NBIMO97Y7gjn3tO3gDQQJKryafOZ2uoqeR9VyzPlmy/tqJn2+NS9v48iINrbiO7fDvrp/u3KPVYulgtIL6Ba/qaPWcxo8G7Pb/iogzF5EsKYiNFagYW0uq3TKbXTZQBW5lC7VyBf9NXk04hW6PLLWtYzXXaT6bgf9EyV4PkMjjekbcdFz/ZppT5PKTT47It8x4lFHchzD4J3icCdyJAAohZO6UnhlkougqDxSkWx7fryBhMAEDm9VMjHB8SZmipEQwpOFsmKP+DxUEJPdqGzFPMvfB7R2iqNDS27iU32yOeUDLyhG4Dv5kBVRDWf7MFl7VUXPgee9BDc93KYlTXrGeKQJ8+jvnaREAadBPzEGUIuuNc97EJu3YsyJfSBmux5mCcA2vrrDQEZEll9NqGtw61zQKdPCwCnXgSUGeqrXyQxJ0Pw4Sb0wXWYuqSuWxzCzA+g1++z46/AbiRX1Inr9MkvpUqwIoXurEIc7oEVKdTqFnUfjQEYA6sKMDWDDhMbLkzxLqwuYQLaVtQiIDHKJXSU0Mag7YqhrsBxSKJJEAJDBx0wGdFra8UHL1NAWfL40c1A/wIx/7icJwxV3iApZAwc5T65to3vTh25TYc1OGJcZ20hZYOXmar984ShaCa6jcb3Bcaax3+HO1XLLb+7U0tBdczSQQescxJydUQHlZIMo7rMIVVF0Ls6ByvdWQwZHdX0BuR9r/SdKVpBXtaynvn6Sn3As7q8aRxDWAMFVMSTYkI0a+wygNw821xWawSn7oVRCjyMgd6Axnd1BdZJEK0p6Loiw7gNB2YysBtrdoyuFVBXqOfUTWG8CU9mUQd6NkE9zxGsJKimc+hyGyIOoaoKYrQFNdlDdXgIEY8JPZBOEbz4a6AvP0LdoI1z1GmpMlRXL8CUORHSD8bWKK/s2DEDVkCB0tcukZBaITQEsacCQCmAlbTlZnl0cv00CS+AOm4lPY/g3IPkpUqndCIGWIBnSb4lQRmLvLpBoiYIvI+MWb8as0Zz4zKWo55HCRijAd3xkEsTdGDCLj3XIiVzNpeAKeh1r2ymX5VTVp1FFBguPfyVVXYhQEZWjFgoLGO0oWcFsJFRI2o4h4E1qNvxme4Obx7F3Ur8Gw0wyyoLOmAm9WNJL6Z8WPctxm9HR4lt/+utyo0R7W3puGfTAWgEusCcat8/Y4tbhHegliO/u1NLQXXMMjKC6vX8Zp/c0NBhTMLq4DoZz6OE4HwRdaxMkUOMtkhE2VBPI0P7/+huP6VlvVDqycCLX+7VW/BCpkriNI1jiOEGeG9AIz/bcarHO/7gxlcGqK9dInO59SkZEMbHHXJ4J4GqS3B7fZ70vaBgksSDzlIyR2uFcpqS/ykO/bYgNOXz1VmBOqODPdca2d4EAJHYwwdeCXbtEkyR0QhQWmo356j3riBygcYHY7+1WF99nIRVbwCAfJS8kwBlhuryF6EPxhDDdTphkgHBJ29sU4dmsI46phy6ur8FtnICoQ11diLRuJzCZAgWJ5S/JwNrKahQrd2DYHIJ2H0c9bwJUxbDDejOKkwygnns/4LHiQelOvGCqqLuG+OAqsFUBV4eQgsKvWblvIloseM43R3CsIQQCGEXvDwEqwoYXlGUnRsDZgc25iYgYRTZHEAZQpsVcD2l7hRAG4YuzsjVUd+R5Vm1+VC+a2TFnDPjA4CJekf8Ta0xXts3tfAmbn3diiNibQaVxShAhmDl3C4WWAEVxGSot5dz24g+fNmJKS6Wto4XQC0F1TGLuT90SVRhHSVgSQGmFW3+JD36UAiJeGyqgs4guVhYr3UGyduBKS5rWbddrjvV9po83XLGZRlCzK5BWSFhyhz6YAy5fhouB1BPdu3d00FLzybQswmJLi5gtKKIFcCDOFm3D9iOTdOdotGhKXPfzdEVHdCiE2tgUYxyb5c6VDwlMnoufLiyiOmg5kzujAvI9dO0zRfFQDKEsb4YHnehkzUgnVEsTBTTqNIZ6uMEcrQF3hsAMqKuhY2JYUmfwok7CXWZZvt2gaVoVvJBYkR3B2BZSt0smxNIxvIaZj61aIguZQZyjr15jdPlHGo+gylyIqdrRWPB1S0ygccJdJ7a0eEatKG9LeeR8vRvu53p3hNuY9OEHdrcsywtVtPvxkjynDHGwYsULCMBpeM+IAR5olQFozm4PiArg4z8RiAzGqxMPQDZowwYB4z9TJRhw6Cyj7EdcOzy/RZ9VQYLoE1XbVH0FGLKi7WWaZ3lM5ggIkHsEA9aAczQc2z5vPxr6gzwrVzAhcdxh2q55Xd3annkPm65syBL0dXxKmRBxGdI0BaP1tCDU2AiBMeB/4P1b1nGPctlKaaW9UzWYvchs/Typ/e+M0HHH/TUZBdq7wrkyfPUNaoruzlHP/NkccDGo2jafhvvgAUhmakBukzd2oLt9khMBQHdblUCZU4ipapR7M9glEadl5hvX4MIAhrnBQEZ3AOJcLCCfEyQSi4D8H6M4N6XkEcJANKp922x7gCoK2I/yRD86hdQXXyEDPHDDej5jIRNEEBN9lCPdxD2BiQY9q+R4V0r1Fcf9wRzFsbgvQF4f80KFcqTc55J3R1StuEIYPs7UAD9XlRFIcqwY7xkAANg868/Av3QN1EcznCDjO0HNLI0MgKfXIHKU3B7v4bLReadFVMmpAgaE8QeF8DqkrxQ8SpYXUCtrFPnqUhhgoi6VDKmk0RJXXmmKktSj2A6q+Srs2wyt8VnAhrzsXIOGAMTdqDjHniRgldzixeQgIxgTOu9qGuwltChTUvK92siZbj1eGX2NXWeJ+uJOips2uKsfVIL0Bg1n9IJMhf0PN1jM5ogoK3XkPxTcfN35TAJwGJ36g5/ri9Hfnenlkfv45Y9MDHGodGx68T2g/JgDJb0IZMerfYKMmry0nJ7LKgPzo9gz3KXXKplPaPlfCJcNP++zY4Vq7LGrFtRJp0XKJzDWH6S3LyHBMXKACol8QOk/nZMXRIKYGVA1ytziwwgmKccrtMBqRQU2RKEPr9Oz/fp7gIJoQibECQdVGkGEQSo0gxB0kFwYhOdMIZKD6lzVGQ28maf2E91ieDMAwAA2aNOEYm/FFWW+m24evcyWEAmerl5jrhTXMBEK2CqQvnE52C0osiY0UkwIcD7azTS7PS9id6IEKzOIfIZTNyDkRHx6GQIJCPalowS8CKFfFGfPFLFIbSMiZHkzPgb56FlBFbMwJUCTpwl20CW0nhx4yz5fOqy1YHKwYoZdQ1Dwg6wsAvDOMQhIS1UZwgI8kaxcu7FFHMk9LqCCSK6rq4B57mqOYyMqeNWpuSpqisa9aHf2BlcioSqqaNv33smiFobc/KWn4VHAZ/0gpKoMiK0mYmiIbbfhEtotvzamAVW5WS7KFJ/+z6bsi2G2mNDEXqTunscJPLMQofqboz6tDHQx1BFx7nuC7mWguqYRSDCHEZIMBEAlQZmY/J45HMI5/3QCgy0gqy5JA+BCO3ZWtyknbs29lJULesrXUfXvo2x8Rq3F9jt1uFZXTYhtGsnITq2y3pAYyiTpXSwijqEEpEB2Cpt1VXXr0EO1qDT6ZE1f+rc8t6A/Dla0+24MRvn9LcUNAcpLgRMKH1kTTTs0Uiv0W0Qww2I4Qb5uWYTVOkhXTegoGSxfpq6CTKCSWfQVY3o/pdRxEuZQ548j+ryF/12IrQCH27a7gWHvn6Nxm8WQyB6A7ATZ3y2nLmxTb6rtS0wLoHxFSAIYTrUCfIda3vSBesv0nGPhFBhX0sAwZn7Yao5dLwKkY7pwB2EtH1XzKjzB5C4MBSfwuocKAkwaSIbteIYU1w2nzuWHea6SaxMAbtYQF0b2tZjVQGdjGCMpgg79/h0DS0jwAYwe4FkNIykE01mtI/mMsyiGtrjuLbfSdX0eI4IqZsI5O0xtjFeLPH5BKazSuNT26ljgBdc/rEFMXXi6twGggeL0TFHEQrOmG9fO/c9+jmzG4HV8nP8BVZLQXXMYqoEqxVYXUC71npvBK4VxMjB+nYJ3KdrMCFpi8W1sF1QsoUH+rXeZS3rK1zMjmHoi9b773bPoFUFXqR+5MKrDExVREZPiC8l1k8T+sBuful0Rsbp0Rb5iaKIxnxVSf/VFXV8tPZoBFNXhGKoKOcPk13w1RHqyR64DKDLGjKOIOIQ1S5R1eVwHbA/N0pDVzV0loLL0I/GVF76oGSe9Mnb1N8g7pIicScHa9AHYwT3vdwb6/nqiASdjGDmB6ge+zR4bwC5eQ7VeIde1iCghRO7aadnN7z40wcEO+WqghECZnWT+F220wYRQPU2IGa7UP0ton3bA7kJqLtjZARuf5e8mMHsXwM2zlOnywIxeRgD3R5MSFRyEooBia1wBQ41wIoUjGVkZGccxpHUdQ2eji2HKyaBm9OmoY5WwEQNVmaENoh70FoT+sB1NTiHkQlUlDQjviBqRJmq6LUWVhipugkUdv/XNfh8AogQ2hHUjaZumTXVuw7pwjjNbdcxAdRW6FQ5wUItz8oLLieEWgR1HXSpkyaOdMjaXqzW57NhnLyxRztq7rHdpSUjpRc89k/r+su6/VoKquOWUoDSNCLorDYmy7UzkJ0eZWVlKUwxp00de9akV9bpQyWIm9ELF7iJnbKsZX2lypKs/WaVi9q4zfLYhdaByOTU8TFZCtZJYNIpQT1lAD3bp0gVgGCUqyN6LJ0EOBh7E7qa7JKYkoENBqZ8OiEbIajTKVReoirJJM0D6U3pIgzI9yQDqKJAsL6J/NIl1NMpRJlD5bYLJohjxUGdHN7tgd24DFNVYP01GgMWOUyWor78RWJnnbyXRENdQB9cR3XlUQ8p1V0SkUR6p8dsqgrYv0abgcMNu42oaWOvkwCrGyQQDm9AzSb2tQnBOqsUIs0l6tG95LN2fh0ACGJoADwnmCaLOkCdQ/dPEoyzSKHyFOLUA9CdVTrhUyVR0O2/6c6OgCoB32Hi2QHdZ9Ahn52mbUBn2jYiBCIraPIZCSge3kQNR116ujyrCi+qPDfKYgoY0PhJBS0EuGUffVTIOH8S4LcAF7tbWBBBRgQ3hyQfEWLuM5lVOYlKCx11kwffeTraJbPjPn9C0n5sWt3Vje3lyO/u1FJQfSVKRmARtaAJdqd8FpRhHGxVg83pQxPpPrhbD3Zl/2gNbECpuPXdLGtZT7eYKhuPhyvXHb3N8iNpLghwWKQwhRVAjoEUdWxYMAEcxXADsLBKk6UQoy0STU5oTHapS7UyaMZ5XPgxnToYk3enzElE2fFeuHkS9WSP/r3agxpvIzj3INSjnwHjHCIOYbRGNZvDKI1o4wQhDgBoO45ySAd58l6YbEadpCiGKRT0fAbkc7C4OSjX2xd81IupKxJAKwPykNUlgU07CWXstQz2/ncRRNA3tsGC0EbKWBQAF+CH11HPZ+B1BcmFFSuUledW9dXKOnQQ02dL3KOxlh3R6WsXqNMH29WyDCgTJUAdeGHKdE3jRJ+dR94inh2A5TPPgmJlBiMDgnSKkKjmbqkBgIkSMqHr2hrVKafQdZnovWdN8LpL9+kO1qoEs34yDdvNUbXvHHmwp7u+4zy1BT3QdKq8kGL+ayaO2CfsfbuRIS8OSZzWFUyU2LGmHYU6cn1rkePo30B7yQPMktePCtVlvWBqKaiOW4zRGX8S+TN/E9L2k28D2zVkc2MbJp+TPyS9QaMDXVsjZ7hcrVjWM1JuzEFfPIkv5HZvz/27TIH5PsA5mLBoAwC8v2a5UQV40ieRxAVMkUHPp+SLkmFDpXYbfEDzf4tGMHaUaACwGuABIJOYtvsmexCrI3Ts/bIwJi+T9b/Ibsd7GKvDFDzp0+ZbVYGVOUVE9YaEcTjcB++S55GvDGC6FN6s8zlMPoeeTeBo7kYGCM4/hPrKo96ATwJRwRzuAzYSx7ShnFwAMkB99TEIa7YHYHlRFXhvsBB0jMwiE3ojIJuCaQV0+mBxj4SsVjRyW1n323rixCmAcRIuAEE3VUWiN+x4P5JhHS9Y2oBMetECOxKc0eebjAEReLinjnoQh9cJ1Bl0iG5e5Q2PSZVeBC2U3SKk24wAY7tLbkuuRgP9VBV1xgBAwXqUgsWAY/fYrZjz5URNe5zXxiG4LT9dgxUzIsTHvcXRtx/Zxb4T5c3qrZOQWwcu371RnyttDNSyQ3XHaymhj1vzffoQdR9OqrL+gpJ4MN58SS91m3pcj+4lj0L7zMoSkJe1rK9oufeWpzYfY6/a6BYNmwQQC8jM7PAILAgbWCUjI7k+GENPb6DeuUghwHYMCBkAddlsCQKWgE4bgAD85h+LCEMgOtQxEkkPPO5CnjqP6jAlA3wQQiQ9GusNNyCG697PWFy5CGhN31s/TZ6v1RH46ogwCNcu0qgy6ROfKuoQW0sRSJTJgDL8Ns6AdxLyitkulQeXdns03pcBcaVgTfZJj7YLsxQ6S2FW1uiyG+doa3G277tyfPUEibx0ClZmUONtgot2VsGqAmJyCXw+AU/H5BECYEQI1duADjvUKaoK8o0lo2bd35mnubQbcww+004E0N0hdLxKRnZVU6dKBODpDepeGTvWs8ZyXszoetEK3Xw5b7Y/befNdXqYqqkbZMyiEDnqSxKN0ZvgnVbQHMnbY1W+wKu6KXsP8GNKP+r0m3gaYnaN3mpxj0SjoRid9vvcf367ruwRY3yDSGgdSrm4690pip4xx/jvrj7852wtO1THLBYldHYI0Cp5kfozOcgIpsyIHyNCsMEmeJnDFDn02lnI64+hOP1KiPmNZtNKVcSwch8my1rWMcqfXRtDW0eu3MHgaWA6/DYYl0CZEptpdQQ9m0DtXSEopR3/MRnAFHOKbZlPPYuKcQE12fW4BU8Cd74kC8gkf1QNIQMCaIJ8WvXhIeTKCsTmOYKGcgHZjS0sdB1idJK6YbMJiTzrs9JljeryFyFWR8TM4px8XaNT3gQfPfhVMEEH9eN/h+DM/TQSrAlFoA/G4MMNYkppTYb2fA5miep6PqPnE8a0/Xe4D1PRKFNPb5C5vTcg8ntVwGzdB7P7BD3X+Qws7tI2oPWRsTBGvXOBfEVhDF7NoS4/ghrwbCy2fh8xvDpEYGdVZsOdA/Aqg9E1dGfgRZQ58vvm2QHF2RjaLDTRCsThHn0viCEOtqnDrgML+Swp8y8d07ayE23ONC5C20qUgOTWChF7D5fLFGx3jRa3nBvPkpGRD2GmX2BrcxCgUSi3Is9u8LmNPrROVH0cje1esXxG4+buqv+8NjIiT+uRkR0r54BFS/j7bYs3i2nwJxhLIvoLtpYdqmOWCxvl+Qw8n5FfwRpqTX64cFZlwi59AHZIhKmVdYjD6zBBF6wuPNuH1cVNZ2PLWtZt1y1GEbfyk9x2iaAJ8mac/FNakaBIZ378JUYnYYIOoRFy6sroqiZzuA3zZVHsPU1+1Ofy77SCUdqP74z1W6Gu/PegFeTmOeoQAXT7e1fA+2vQh/s0rtPNbURrqxRHM9lDdekR1FceRX3tIvTsBuRoCyyMKagYlKfnulKQIQmh4QZ1rqyRnv7WOQUgJ30aOZY5WBCARR3/2tC/syaK5+rjUJcfAa5fAhts0HOxIsqUOXnG3GshQ9rSC60/TQYw6RQ6nZGXq7Qi1S7EGGvU9vBLgDAXVky1xQCfTyBmu0QFd+M2wIcfk0AisaO7Q+gwoTGijLyvii5vOXqMNeLIATjd9wM7ZrS+OiMCwjnQL7cZTWvtH8tiMDFR2JndLHXMJ6aqZsRoxZTnS/nNadbcj70vE3YXt17tzxtApw06Fs2JrX88R4SpN+w/S6LD3Jbfcf5b1u3XsgVyzFIrJ1APLU145wvND0SIevdRiN6AVri7AxgZQ/U2AZCZ0+MSLMuKFTMCfRoDiPJZ88e5rOdmNR/+i0bcduzJ0x5NODFmNG1zKWVN2gTBdIHBrNOnUd72BQJeytAzpxxx3HcctCJhxAUFBVcVeChhVBM1I1ZHMPbx14eHwNULCO59CdRsHyLpAUitd6vyG3+QJG50eQ2QAcKTIzK3d22GnmVd8XtfClPmqOczBHEXiBpArzoY0wG9k1AQcZFDT/YgRls+s5BVle+isTAmIdeheBqdzmC0JlO+jcFxoz+2dwW8NyQvVZnD1CXF8HAO3u2RMR4g/2VGlgG+OqLHk/TJA7SyTverSqKxFyl4lTW5fVZc3SSmDvfoZ2EH23ONUx0rzERIgqMuAXTteI+8Rnw+ASszPyrj1RysmsNEPYqgMZrGivkMHHb703apdJhQN0lrm11q42jqHBAh5QqGK3RCGibe/I66pBNNVRIYGUd8Slo1HCkZU7fuyPvVdWuZ3RB1n78GIXXMjprQnTfrSLwMay1lgHF6XMBt89yeyVpu+d2denb89p/DxeoCcnIJ7PJnAAC8twbWP0GGRyFohTzowARdapGXh/6A5rhAfD7xHQRWF9QWb83vl7Wsp11uIwrtLahmg+pp3d7R27XZemq8Q90UAIxzop8DNJoabUGMtkgIuJuyAErnwVIHY9TTA8KMWIO3Lhtzcz3PvUgRyQqY4OCrI+h0Ruwle9+myAEZQG6eBSymgdkMQJUegq+OENzzEttJajYKTdABsxtyLh8PoC6RezzQCmqyR1EvcdeytixHK+lBjrZou1FGYAGxtnSW+oBjPZvQKDTqgCc9ElBakxDTyo4gQ9oq5MIHqjOHY6gr/28AKP7fXyz+fhx08sgGpxdT1m/F6twnOhjGweoSnaBlM/CdrcJ7iRw13W3v8eLQjuRiGreVKXWdHJpDWsaZbrpCfjTXAmtSF8t236qi6Vq133MWUkpvhMI+5sJ3thxs1rioGF1jIa/QX5eEmeGSNhbtz5k9MfDdKd0Y7P1r1ApM9n9LWjWjvqVF4wVfy3fAMUtMd2A2ToONTgMAtE2Xh9FNDlmVgY+nqMc7ZI4NV+jMJjsAt/N8Y71YKDNad1YVZVMt5/HLehrlxi0MAJix6/OV7+48abmRM5qOlusEuO+DCzrL59yesXPU2xcArRA+8EroPPWUdHAaCfI4gQag9q6QKOIc4QOvQnXhM3RQKjLwToJ6OoUqCghJXQiHPQBIpJmMAsf5cAO8N4S0ZnMWBKh3LoInfWJGRR3UVx6FGJ30QE8eULervvo4opd+DT0VK/pYFNPJ0dY51Jeb2BxT3fDmeaMVUJWody56ZALjFh8REEWcrwzIL3VwncaZvTXU154gYbcyQL39OPnMZECjSj6mEV5GXjSX/QcLNjVF5seIRiuwuiTBJgKYqIP41d9KnxeWaee7L5KgnI5oDy4pIqgugLogbEJ3SDgFpWC4xBoymIoEhY4SKz5ymKALHa+CpzegV05YzxV1hHh+QOR1wMcY6aDjPUWGSxjbtSLRUwKMApX9iM8KGsOlJ8M3ozhaomAuZ1DYDERpx4VHum7N+7/20TEM8EZ0133zpapmrOeYVi0kA3RNokrGWAg/dn9HjpflRuDPklLH3PI7znVfyLUUVMct94dnPRUQIZ2ppHY7KZ3COG9ERd4RYzf5eHEI3R2CyZw+pOwZI3N/uO4DYHnmsyyQSHrSZYWWudx1Nj2A02gwbbsGxgBPwY5ldQFWzsErypvUYULvR/ee9P6YCjw7pI3W4QZty4UxZdetnvBjE5ZNocscfOMc2C5t0PEshVgdkdDQijYBLVZAdjskXEAiB0qBByFMkSMYEdLAaA3kKRm2r12kcVl/DdGLR4A1u7twY7V3hQ7IMkS4eQ5qvAOVHqLeuUjib7ZPB+f+CfLFrKxRDl8Uw5QZ9PQGQT61pvEhAHCOYmcH0dYWYMOLTZFZyCZ1UpQzym+chtg6D2RT74sCFz48mq+OYLIUarYPuXGaOl8AeCehUZ8Vkw6t4LhdpjekzwwRUA4gAH64R0IpXLEbaJKI9hbnwivaPgbj1DXnEvXqaQJ5iiPdLKCBh6oSOh7BlClBiWPaXGS6JnM3o3B3Iyk82fGo3DjPAL4rukg15wA0YHCzEdx5oZy4LzPaBgWo82WFFHWWKFvQv98B202sPTbBjQ2hVTPSdI/PhiAvPi77mN1I0nWsnJhqC8Fn0ajPlQaOtam3tFA9vVoeqY9ZauUEHWhaf7yA9VBUJW39ANDpjLpTbn25LgFjUK1sIKwLsDKjNWcAhrHF0cqyXvDFVAlWZdDx6mIwMVreDT/iMGjT9713yi863LpL5UYnPD/wow9WF7TBavRN3VKzexFI+uQTst4hqIoET6dPHay0AO8NyEjcG4AdjH03RkQdv8lG5mvCDJjZhIREENLGqx2FAfBbgAhCvzEIUKfJaA2exCRQDsZ+bMeSPnjcpU3E6Ri8lt6X5Az0Umuw/hp1l9dOktCbXqf7tOZ4jcqLqnBEOYQiTho2lbKvrxOJqKhT118Hy0AHftudQxiDxV2I3hlUFz9PPrQib7ICnT/IikFwDsYF+auKrDGdBzEFETNOgE0ATMYkbrID3yXiFhEAbxLnEOmYulSOWdViNnlEQtWM30zQoTgcW7qzClHnREGXMbjKmjeHVnBgY59t1y7OgbIglAfUArOPVWT0J1q5zTm00Tuuk2V/MZRU4d7j7XElY/QeYi0GlQxpXChC+/fR+rtQZXNyDNDncxAf2eaTrQB7Ricpbnz+LCulDdQxFNVxrvtCrqWgOmY5rwJzHxj2DFDHPTARgmsNNd6mHLDBJnS0AjndgQ47gNEQqmg+TFRF7WxHUtdLMbUsKp4deCzHTQcnu+CwcFAB7MHKCi4XO9Pa/AJIvLNWe58O0t2m42VHGzpa8Qcq2kidE07g2kXyMc326f8HY7Awhtw4DaxuwKys2bw2op27eBYx3CAju/UCAYRKMFlqs/ZAYy/rs2JcoE4PKfQYsOKEri83z0GNtwljUK9Dnnmg6U5x4Y3j9dXHUU8PyHsVd1FdftSjElRIhnox3IDuDok+bh8XkyGYE0IAsa44h3E+Ky5oXMc5VF2Cr44gR1uoti9ATXYhOwmQDClmRwZgcULhyYNNGM4ptuZgDD2fgt/zEJmujbYCqgI7fS91im5cptiaugTKzIcWO36SqQqwgPhg/JDEIGMcYIdwxHVt8/r4fAK2vw2Rz6BWt2zuH43peD4FGIfqnwQrDr2I0nHfi24H8dRBF4wfibQBrDHdvf/c+OzI51nLBwVdW+RD4UUOs4BRf33GfbfLd2p5vXjS2aKcM1VTl7/K7WV502my2tcEHep2KXpOfkzoOmvuuQB+e3LBiP4sG/Ut6+7WUlAds1hdACJpjJLuA4VLQGoL89umD0ZVgWcH0LMb4L01mDIDP7xOXoA2XsGd2dnbfzaeAS3rDpb9QOfZQRMXYs+o3Yc8axtw3Vk3F/ZgQd6Wo90C5s7KW6ZaBlDHon2AtOMVt6YOALzMyMsUJ6i2L1DXRBP8UlgfkAF5WZARGV1PdgHAgzIXKOm17eZoBRHT+73a3/ciRsQheCBJZGhl/9PgUcebxh3ygCd9yI3TMHMas6nxju/8yP4qmcRz6zWy2YNiuAE23IIRgl4XrcDWTgLzGYE/67K1BUaPncWJZVhtob52qfFa5Wmzmac1dDoF7428QOCdBLrMITgnQWJFpakqYO8SzInTwMEuCbzVEYUTZwfQVQXe6dGELEosPLiAkQGdhCUDCmiXEUzYoY6VPUkzQpIoK9JmKSbqAlUGXqRQMiZfk6rIpxSO6Ha49P67o8TwhTGYK9cpDZMFIbUQDyOIZeVvDwCrq8YT5S6n9QKywIsld/9G0yKBM6y3PjcBkA/VYhYIx8B8F9cE3SZ3VYbNhME+B5//Z/MC/d+OvV0ATSbms7DMMbf8zNJD9bRqKaiOWUxVftPDzea914VxmO6AjLFaQYcdsP0d6OkNqPEOfYivWD6M1n6bh27YnYVx8GIG7Yyfy3rBlWOU6e6wGePEPWv47S2Mh73nzptwG6FO7zMAAo1oMGZh/ZygnfDdBQAkIBzBv0W5FqsjwhUM18FkiOrCZyHPPQi5fpoO+AD0zuNQk11KCKgrbyY3dQljF70YQFttrbw8cAGzfYG2BW1GHnmZFF2/yMjn0+2htjBR9zfkIm7UwRgqL8EkCR156jx0b4D8s/8XLJ16rxZPetT5MRr66gWAcwJ9ihBy8x5g4yyMHcejJlO6qa0wrCtiUPUG0FZoaTty5N0ebRh6WvoQYm0LurMKXPoskO7DnBiCDzaB8Q7hGMocrK5gBlvgRe4RC/73U8yhR/cAjJFg4oLGYjKgzwgroI2MYURBIqrKmveJtRMQFqEDHYwIe2A0jLGCxAYpV0xirjmuZwovEvPWg2h8Sk6UtxEwrqvklnPaAp/uR/tNOzKACxgRgmctkeZu3416HVvLfb56k3sOHXTpeeoavJpTl20+abpb7oSUcZigS39D0hrJXdZfK2S5zbHyYtF9Lrc7vc/iE11l6L/jXH9Zt1/PLifdc7CYrj39F/YP3EHfjPtDXztJH6p7lwAZ+rgK4k+R/8B5Q0yZ+20YpmtaI67yhr6+rBdc0fsgB5/tArX1lIjAixa/6u1ElDvrV1XTkWp3PXXddERvgec4ujrvD4hagWf7CHYfIV6UDMFkQJty3uOUN/elmrENADJ/y4A4VO7g68qa0k1rLMSsb8gfjDsJdFXTRmBvSOBQm/UHkDCSm+earUMA8QMvo1iZ8Y7PGRRRZB9LCN5JfIdI7TxOENLS/i0XKXRnlXhLK2tAlFBkjMM91BVEb0AerPXTze3Y+xKjLTJQZynM7kWY3gmo/haJh9UR5fIZC6uMLF0+ps4JL1LqkHFOJ2GdVfKgRVZ02g4C0cwjgp3aTg0vD30gsk7WoFfIcK8TQlbw7IC+Dro02rPf990iK2qiw2uIJMf9Xcq84zlt9QF2pNbOdLQeP/eYoO0oskz97689mtMtMCxgR5AWu+DQC/Q+1a3bz8HzKQGU69L7w7z3b07eO57PFr1PR6Jr/EY10HSlXIer3QWzxv7Go9h6v7Kn2OxY1gu2loLquKVUYwYGPLG3nfNkgpgS5udT/+HvPtyZ9Q84WjST9o+Xt9rXqgIvDpei6gVazGW1BR06QLrVcqBZTT+SNdaMAI+cah7FJrSu8+QPoDl48PQGysc+TaHARUYdmCCETmeNSGodzPhgHWK43gQk65Zvyoo0/5jsOAyAj6UxWlFnqqD0ATlYo5HZbAI9HTfixo7bWCdpur0ypLgWuzHnLgsZkJAKggXWk8nsOEzbDs6NbcIQMEvNLlLU2xe8qKovPkKbeysjf4LkmFwsjAnOaXP+9HxmT44y8lwNThFxXEibqKDBwxisfwJ6f48ia6KEiOxcgB9eh457FPHSMmjzzC4QSMudOmIdYA4LYAWM8xIBdrTrcufaAkSVlK2Y3kB3vkefPUbT68I4TLTS5PzZ6xoRNh4j64daqPZIzn6+NeO+5nUxQdz8zImguol1gTF0UsHJsM4OrhHENDug8aagzpEJosaLal+r9nM0MgIvUzxluTG3e/z2dsyX8zdzl+t4OX7HGxe+kGs58jtmMfvh0aYQM1WTfwRN+5jyqGilW1hujToY07bTaIvGDxYuaMLO4sGxzilouS6gehsLZ1LLegGUVjS6sJEfRoZwa+g04mvWuAE0EMJWt8of+BgHGJp17yf54PSRIl6YKfDikLo4s4kVR/b9Hq+QsXoa0+iMS2B8BWxlAB0lYCfvR3DiDKrPfxI6n9OChgyg64oy7QDvqTIg0zeN0YYE+7yxB5Gs+Aw/ozVk13ZB/Igvp5y9lYG/LosT6viEMRngZUDBw0kfpshRXXmU7rvIUF99nLxSncRv69V7V2C2L0Cun4YYrpMQ6xNlXR+MScTYkRwLO4RbONyn7b/hhifC8/4a1HgHyGfAwS5Ebw11fwtGSPB0TONQzqHzFCKbApv3gk33oOIehPNtcUGIlbqESMc+VN2EnQUfne6skh/I/s7dhiZUBZYdwMQ9qJV173UydjtQR0nL0B0vdJ9c8DGNA61pu2j8WawuGjHktvSs387IeLGb4zL53IjQGDtyoxNJVuXUjQOAdJ86b7x5P4NbDlVNni5j36MmmwHJsEEhOHBtC8bpxKNhbMEH5Q3mR0WS2wY8GspsNPSz/PN3ueV3d+rZ/a54LpQ9c4PgxKCB605xGFWCOUNjEBM12Z6xqskurUknPVDERB/sxAbdhm0zu00ViBBGlc9qE+SynqFynU4rcJyYAuO0gRV24bPK2iO69sHhqMfKfY9ZDlD7MkcPKq3r8vwA1WyfBE/cJdK3ptvkSR+8PyKA58F16PmU/i42bDeN1+C9AY3DuCAxUlf+AMs4hymsB8nSw40iD01wYtNGsjTYAdY60Lm4G3ABPb0BFtBYHSChA5CoAQA9vQG+esKKq3XwlQGYEAQF7Q3p8mUGVmWQm+dQPfFZqPE2CbPBJuTWOZh0inI2ARMCojcAGIOeXKONwRnx5ygUuQTvDSB6m4DWduvQPt9ktJgRZ+Gd4IJEQc9Gy4Qd2giuK+rI6Jr+bdlLzjsEgEjmjBM7rD3iOspJ4pKEhtZNN0i38ALu/SODJsfPRcowDp7t01Zgmfr30kInRyuAmeb95EQ7syeb0gE0DUXWyGbT0whJQkyE5P/TCghbgcWAHQ9zILMde1XZ94pYOIFYWBJCa5RtnxOzmImj738n3swRoru73LPZO7Wsu1tLQXXcsuGc7sPLn9lpDQa7eitj8k2snYTsJNDpjMYGGcEJeUz5ViybEn+mzv0Zo9F2k0VGrS0r7bsPy07V87DaPqgyJep1y1zrRg5Mhg2YsPX9hcu494gXW2zBP9Vs/DV+q5vgizYnTe88TqM1LsBXR6guP+o7rHLjLIJT95KosZ0iU+bgs+vEpNKKvFYtjxSPuwtfq/FO89i4ALMbbqzbp02sIqfOFODHdiTolIfm6nRKo8jRSfCkh3r7Mfob6w090qG+9gTkxlmI0Uno2QTVtUvew+iibPw4UhLvqvzi3yJ+1WthkgEYQNt37rFnU6jZvhd9TAZ0ey4uJoho29fCPqm7V1PHKOoB514BcbgHdWMHJp2CawV94l4Sv0EEiJAM51pRpzvSdoOv9rBMxjhYmVEcjNHUzSoOARxZajGasAtCUtZfd0i3KUPbSeJ+sUGtrDedJFg7g+348PzAE8O1jOj9U1uulMV0tN/PbqmBTgAarxYzmh6nfx/WAOaUG2g3MF33ym0c+pOKaAVMVsTZklFzonDkb4EVKd1PPqMOXtihz+cq9yPR9onD0fFee3ypw+RZP+4DsMzyu0u1PBp/JcpomCjxa8oAwKxx2M3ujbB0XxmBJ4Co18lrkfTBh5s24iMgUSUCH0TqWuzafrA5jIJIx75VrfpbS2H1fCvrm3Nr3X5kZzsSi54V5QGJRzeTjGn5UW51tu48T21R1i5rWufjJ1BuX/C5e3q2Tz8uMujZPnS3B95bA+oCfLBOB7l258LSyDlAQqhuAoJ5x55QWMZSPT0gRELcBWYTGidqCl9GYblUQoB1++BBAD3b955ERyDHwRjgHGrvCnWrtCJ6ui0dJzSKm+zBpFMau5c5qsc+TY8DoPEgQPctA+h0CpanQO8E5ANfbX8PAfHBopjo6mEMJgR4twd24gz5Jw+vEyPL5hgyGcBcfYSE6WCDOFBVQSb5hLL/xGwXqrdBxnH7e+HVDLzMfNKCW+13XR4ddsDLDGy2C1bnxJEq59Dxqu80scpmJMY9mCK1gsGQyHLQSsAKFzuuc1TwKgcrU+hkRK9JNaffc5k2BP0ybUKNVUnjOdbaXLbvKQpHbqChurPqO0ZM0egS+3vN21AEja/UnTS4bpYMYFjU3KcTQZbwz4yGDjswUY9GlaxBILgxqBt3uuv5bMGFv7lnHxH9yWq55Xd36rnx7ng2l7GdqfpIkLFx7BPtuVLMaOjJNaIz5/NmJZhx+gCxIw1P7rXXW+wwcE+zZnVOMSGz3Tv5jJf1TJY9oJXSbkG1jLUAfFZbmz3lPDLu3xRdJG72R/nNJtGweRa2oVST12cv79576mAMcEGiwHOMSDywMPadJjXZg7p+lVb1ywxmep06EHVFXaWkT+9xLsCSfkMY15o6SYMNum13H90+dX2CEEYpjzpoe1v46ojElaW1szCm0Zw1h/OVgUU3zKBTMqfXe1foNbRZfEZriPXTKA9mmF+8ZDte3D9GyBD1lUcpx8/CKE0QeRO03DhLmIThejNetDBUU+ZAXULbkZ6e7dN4ME8XNyw5p6y8lUET0yICGBmB1QWJqTKj11NVYPkMLCeR5eKqYCyCRSmgysn47phKuslp9Pl47r3Shmda0cLnE78R6EaIbuOUTiJ7tPWna8Bm89GGctFgN44KIPc93uqEun9bzIGR1MFzv2NCFLgMPSt8bNcJjNkuWgN8XSgLsvWmdOs7BOPQ0Qq9tvb5+Gp1dwF4XtVy1LesL1XLtsZxq5VtBtsCd+1pAu41c3v3B6ln+7QCnqWA3IdYnYLFPcsZmtoDZE3hpC4B3mgAvOFdybhZPeYcYroDnawt/+if62UPPgHsAbmdG1bnvmMJgL7Xvh5j1JECmusc2bYyEJ6btnCfPoy2Jd5aI2WTpeQ3imLI3hBMBqivXYRRiqjfUQwzP4DRCnqy671E4ALs1Hmfw+a9MaC/A9QlcaY4J9Exn3oaOpMhWBBQoLLtjJkyb/ALeUoQTdvlEr0B+Ml7wZI+6stfJBZUbwiTz8G7fRJIgf37qEuYMicy+uE+9GwC3kmgygr1PCdj+8qAPFmWcWW0Bsoc9dXHGtF0uE85e6ceBDqrJFLKjL6fz2i8lAzBKtqI1OkUzI5MTZERxyqfEeG8INCv7g4oYqguIOYTqO6Q/ubzQxId0UozOrOeKiNCsGpOQiuIoN0WcXFIAgWACbtQcY9sCi5rMZ95nMLC27AuaFRZUKwNqwsYGUFHPb9trGMaQ/LyEKgL6LhH6AJgwb90U9fTfq2TEXWQVE2CqaKxNp9P7OZq83najvWCrun9pDXR2y2qBu7E1L53fYQNAB2u2M9RQ7l/qvbZqajtiYmDfooWEsK4iJ/nFhF9OfK7O7UUVMctezbjz4LaDB9vJI68yBLDTRitwJM+1LWLzSq30TBhhzgz9oyvuQ8GHyBqb0dHCVhd0geK0YBdyV4KqudRtX1PBotn2/bnCwcrz/u5xYehO0P3eIXGS+WJ0e6+WrcnpzuArlHXFVhI3RUW0niLDzdg6iuoti9Q50oGvstq5jMfs8LCDjSjeA8zvQ51uA/e7dO2oBAwSpGfCmjy8Ligbbp0RjgDAKw3hOz2fJiyyVPqJNUVdDpDvXeFTOB2pEijyQkd9O02IQtjGu/Z2+CrI8j6PF2320NnfQ1GK7Buv/F0cUGdtXRKnSUrLk1dQh+MKbh5eABlMQKsKuj+XGcjoA1fPXmcfFacg9UV+MY58jAF1CVhwnK47EmT81Dx4pBGhzKgk7CVtRZ+QMJEPQJp6tqP24yMvQiC1sQMq/MFA7gOE/Bi1vzOGaeOOxdgGd2njhKwMqNtQhkDdd4IMufxKg8bseM+f2QIoyrqnMqo2e5zm3dGk+drPmmyBFs+MVYckieqjfloj6wZh4lXbKewA17MvKcLjNN921E5a9+Ow2IEceuxmGYb8CiNHXjOiSkA0NpAH2NT7zjXfSHXUlB9BeqocdH5ofwfOEDdJqOho4QOPiKAPH0/rV8DvgtVr56CmO368QuZkYNmxMEYwAO7Mp34ljjaxOxlPS/KBbGSUEezAu82kYDm385jdaTz5NbK0YrWcALKmW7b//YHS+tHwe7jqJ74HAkXwG+GsSBcyMjTnLxeZj6FKcgbKDfPkZ8qiKhjUBeoti/49zy4oPOE+RTcjujABfSR7T93Web8SasjmHwO7czoMiAxUlfErKpKyM1zgFaoxztN9JONqeGdhASGHafyjXMIQuIf6bryXqc2+VsMN6C5oNEnmi0+ANQ5yw/BOqt0shN2GmEBNKHnWtE2GkDPNZ1A6Br16ikvIKi7FFN2Y3EIEyaoL3wa8p6Xkrcy6QNFimr1NMTBFbp9u+2powTcjhBZnVOXS9fUUSppZMWLlIRQmNA4sC5s3Iwl4VuhzaqMoKEyhiehAxTirmufCWhkBMUleHZA+IW4R5fJZzCd1cVwZYdjsKw+cXCVlgpcJ0tGMEEEzYcwyQgimwDpvvVFJfQ+tb4rZjRYeUgnkLZj70SmYRzMAULrAjog3pePsuHSG/PhBC/QPE9nbA86eK7KCn1MD9VSTz29uqseqrqu8bM/+7M4f/48Op0O7rvvPrzjHe+AfopQ4I997GNgjN303+c+9zl/mW/5lm+55WW+4zu+Y+G23vOe9+D8+fOI4xivfvWr8Wd/9mdP63m0D0z+zEbVzYHOnj1C18D1S3TWHXYgVkcQ66ehZ/sQ84mNkuBQwzN0tm8PkqxMaaTo2t9Ac1bpCNMioA2UZT2/yo2PW9tWRJMOm3Gc64TaLSgXL7KwuWR/7qNpWt9fvD97QLW5kwA8HJP3hpCn7qUDU1XCVBXqnYu0Xu8Am0UO1knAu7TVVu9c8P4TE3bIb2WxCTzpIbzv5QjuezmNFLvOr+S8Vq1uVU2wSZ1OyUhe2RDijTN0G+cfQnD2RSR85tStqq48SiPFTgIxXEdw+n7azlOKRn5awxRz6ppNdnHjj/4AKi8RnH2R3/JjUQfBqXuh9q7Q1hmn8ajOGiikqUoKh84OaPzlXso6J3/kygmYuAcexoRJkQGJw+4qVH/Le470xv30GqkSyKbQ6Qxq+1HIe15KUUNVQaKRS/B86sOEWV00nsuoBx2vWmZVAZ7egAd7Gk35f3VJW3oyog5ZW4QbY7l3uf/9O4Ye0BLndlzI6oJwDTYpghdpQ/AHgCBe8CLB+ayU9Yt2+nTyaTvyPJ+BFTPI6Q6BVfmREwQn8NrdWeczdV19zr1fa8FI7rMYa/q3tVW4rq0TU+wWo/JlLevLqbvaofqlX/ol/MZv/Abe//7346GHHsInP/lJvPWtb8Xq6ip+9Ed/9Cmv+/nPfx79ft9/vb6+7v/9kY98BGXZmD3H4zFe9apX4Xu+53v89z784Q/j7W9/O97znvfgG7/xG/Gbv/mbeMMb3oDPfOYzOHfu3Jf/JFpGX3AODxt05baonKfFAj1lVRBxWNvvdYcLRk4ddJtZf4vbAqP8H73vgC3xCc//apti28ZsW/7gcgRCSJeTi++Z1ui4uQE7DrQdKpbP6DqrG5AAjbiKue/QANSlYVFrFGWRCqbIobFPd81Fk+kGWPAnhzx1HjxOaKvNjuvkaIvGa70hxHAd+mBM92ep525MB61gStr6IxSDolGazcI0WUqPyRPWOUxFJnAx2iIBlKVgknAnarLrEQjxPfeD99aIbN4y0esstZtw1selFRBTp8vUFS2a1CVF0MgIqPeh0xlt8fU2YKIEYu0kWEYdPIA22wzj4O7Ei3HocAV8PoEab4N3+xBnHoSOejAyhAwiK5Ry2gLsDoEAlF8nY8IouI1QhyQwNrNOq0UvUl3Rxlur+wSQ6GFlZrfnbOfGcc5A4p1X+eJ7yAn7wMXiaJ8daGREvr92tUbSHgdiDOWWqpIyDq2Y9Z+JqmxCk9vv64WxuP0c1K0TCTfG1BpgLZFk9OIY0n7PCSn9HBzztWvpobo7dVePwn/xF3+B7/qu7/Kdo3vvvRe/93u/h09+8pNf8robGxsYDAa3/Nna2trC1x/60IfQ7XYXBNW73vUuvO1tb8MP/dAPAQDe/e534w//8A/x67/+63jnO9/5ZT8H4yCcrpXM6uasyh287FaTkTFYMoQAgLqAsTBA5vwjbdZQZ5U+FMuUgnHD5CaTJx0gg+aDwCyhc8/3cswhtIGDjFOv2eET3M9cR8uhExZu6IhZ3XW3rGFdTC6juvgI6r0rCM89CNY/AZOlUNcuggXUYdEprbmL4QYccNOJBVOVEMMNyA1CFpggpmy82T51jE49AHX586ivXfRLGn6LEBQ9oyZ75H9abaJdvE/MPjdtyeTGjupYN6acQa0gt85Rx3e8Az2lLUUmLWYhisHC2LOh5PpprH6VRTfoGmLrPJCSwbq+ar1PRQYWVGBxQv6tugJfsZFRUQxoheryox67gLoCByCsWVr1NsC6Q8Bo8OIQKOdA0KFOUYf+pnl5CMgA4syL6TaUaoKE3e/N5uTxag4drhAWwZ90acoBtdfRYQesmHmfFXWCEhqnMW7Hys3Bk7pOueU1dek1K1MSXjIiinl5SN3CZA2sTCGySUPtZ8TDMjJqTN5+XDhvxsm6Bgs7zRhPxuSnml73m6MmWiFjutZ0Ysk4mBNRDhmiShJyVvQtsKPc52UQ0YKASxloV2vM57q3zvP6XC5lDNQxRNFxrvtCrrv6rnnta1+LP/7jP8YjjzwCAPibv/kb/Pmf/zm+/du//Ute96u/+qtx8uRJvO51r8Of/umfPuVlH374YbzpTW9CktAHXVmW+Ku/+iu8/vWvX7jc61//enz84x+/5W0URYHpdLrwHwArlEKimXMSRJ4RBCz6XURAH1KdPiAjOguzcEO+f5VGfs7I6gynYWLPCjP/Mzfi82eQRw+wy3r+lntv+LNq47uX5E+pfLfj6PUW/n+rcjEgjMOsrEFunkV430MAgPrxv/Nbfcx2ZgDQWT7nEKOtJqOPc/DeEMG9LyNTum5tUdUl5Mnz5Fc6GFsYZklCZz61nZ4KOp9TZ8oKLZOlftOOhbEfHZqq9GLH+6nsz9zlxPppz6ly9wmAcvIAGzrc8R4sPdun7k53FQ7EyVcGTRah3TJkMgALaHTpQqCdsKKvmwO6Y8i5ro3urJIx2paOm+05uk5MocluxAYnetsIjYx4dMUMrLAjSK2Ji5XPiBNlA9oBEAYhPwCEhA5XfEdy4S0QJTQGjHvW0K5IoBWN7UD1T8LYOBq0xs3u88ihOxyiwX995CRAdYf0OZnSuNRMr9PPLPUeONKRavsEXYfMsbLaSQFAM+Z2G4XWb8pUvfi30I5ocgLzOS6mlnX36q52qH7qp34KBwcHeMlLXgIhBJRS+MVf/EV87/d+75Ne5+TJk/it3/otvPrVr0ZRFPid3/kdvO51r8PHPvYxfPM3f/NNl//EJz6Bv/u7v8PDDz/sv3f9+nUopbC5ublw2c3NTezs7Nzyft/5znfi537u527+gWWzGKPB7NmOz/BrfRA6U64zVZogghidgmEc1Rc+BcY55Iv6QJjQWRjQBJG2RVZ7+8+yYdpn7Mt6AVR72cFFxzB2szfKARVvkUd20+05Q7IxYMUhwRVtuK+jiLNuH/zIe41FHTBpcyntRh1Avqvqsf9HXaeXvgYw2iMI2GCDjNoyhElnhEeQAYmZw32wIPTijMddz4hyeAMAEKMt6nzVFXi35/ltztjOu43I4b0hReIc7pM3MZ0CWqPevUJjw6RPnSor4HjSswG8AogSyFP3Qd2wXS4Z2i4W3bfL8uPdfsPj4pzYVzd2aMw4uw6saPCSTop0dwgdJjCxFSMBbas5ozc/3Fv4PbKqAAtrqLVzNCK0HRWez6xwqWhBBVa8qJKM3FECXh5CdYYe68KzA4BLuv+FcZlpRmbCUtNVtcA9Q5X7TjhTJZ08Mg7V26TbrQtoa+TmVdb4thi3XiX7vhEcmhFtnd7C1BVlqxstdAF1/SkHteV9cl0n+/nKAGgeLXiebvI/cQnokjAJLnbHdriMzeszGs/Jbb4nq+WW392puyqoPvzhD+ODH/wgfvd3fxcPPfQQ/vqv/xpvf/vbcer/396/B0ly1Vfi+Ln35rOyq6pr+jHdPaMXAvHQCIyFDcK7loXDgBdjbMc6kMFaadcmzCIW1gLCxrEGTHwF6zBm2SBibbOBF2yz9m4Y278NRKwlbGObkMwCwrzRW5pnT8/0q6qrKp/3/v743Hszq2f0mh5pZnruiZiYfmRVZXZVZp77+ZzPOUtLuPnmm0/7mOc///l4/vOfb7+/7rrrcOjQIXzkIx85LaH65Cc/iQMHDuCHf/iHT/kda46IA1BKnfIzg/e+97247bbb7Pf9fh+XXHKJFnBmVIlSY+uD0niROldL52exYqxL1XQCiy4FrrJsC4JzVHymDvk0glLglFUXz4dg2ZBGmi+QSASHs4MmYQegK0v6ImhuYoYoWcsEQ4QaLcDGJJt5LJk1VlS58XyqpjIOjPsoDt6v/ZvI6Z9HLbI3GKyTLke3u2R/FWo8hH/5C2n38jHg+xAzi/Ralay1SACqzVWa1MtSlONHAIAqS35Aba8wAsujmmgFEarBBhjn+jk52SeMBtZ5XeYpeBBBDamaLGYWIId9CmXuzpAuSlaQQd9WsKrVZRLIt6ctORMLV9hIGfP6LDQeRjngUzWKCQH4mhxyz26rxkMgG9P0Iv31qf3ENVEw5p6aEMtkhghWkEAMVshA1JAK4evvI2qrKVm7oFe1/YUhZ4DWRZUpmQ9zj/yZzO+VtMTbBmYDVB3TOjoVtalCJUugkNZrSoZTQNyF9X8yrcYgttUtq9nyI6gipVajJr+2PRe2gGIMFXcgPb/2pfIiLXsYk6efyUVtkCowXg/soFHRak5eGxG6CVg2lS5DHLG7yBQAVNihU/pZ25OLC+eUUL3nPe/Br//6r+PGG28EAFxzzTV47LHH8OEPf/hxCdXp8IpXvAJ/8id/csrPR6MR/uzP/gwf/OAHJ34+OzsLIcQp1aiVlZVTqlYGYRgiDMNTfq7kZKwHK1Mqp6M+4ZXwtBeKB6hsYhoFUlJo7PoK+dsIH8wfU4VAOy03nx9orMBMO7EqoUzGn8NFA8W0x862iT6mdIYkTu/hY32tDJoVJz0tBsaB1jSUEBSHJCXKo4/op+IkuJ6aBvP92icqTqgdqAmaylJqaSuKZoIxuq1yoJREdPRrV8MtMMGhKgkmOIUOa1sEFidgWv9kiIzUZIwl2rBTt+yMgSjTk4HSZA8GEWnA1k9oIkfnnRxsUMaf2XedxycHGxNVPVPtMjos027k7Wkw420E1OJ5KcHbe1CtHqWgaP073p2xYm6Wj2sSwzhdS4wWCnSeV9NL9VBBOgDDQP/NUqrwAZZ0sDIF0y04VqR0/QCsR5MKWlCWSGxbfDWrOrICG2/qTD7Qos0PwYoMyvOsXpSVKTDWek9NbFiZWnsYa0JrFpKyJAd3/TkzTvZKBBTVdfII2J7FWo/KBfle6dZsc9KV9pfbhULtA8h1HqDWpDI+eWzNxUYz19IV+B3OAs4poRqNRuB88sQWQjyhbcLp8PWvfx2Li4un/Px//+//jSzL8Iu/+IsTPw+CANdeey3uuusu/OzP/qz9+V133YU3vOENT+u1jZeN8fwhAWVOPXvroePV9y8loaRvT3oZTgFRBzxLUR4/BK8swLlHq8KgdarLcAPk2xKTZsKs6NyF4eKBbgPXJAjEqQ2pakyXWrG6+d8YgBohu5I0Yt8k71urZI2wuUrVh6QDf/4SFI99H9XqMsWsdGcgpSS3cwD+pVcBICG3qRpZDZAX2YoutV8ETfNtbQBjOpd4EBERGmo/qzCC8AMoFDb/DwCqE0foZlwWJP5utSl6RgcbszihFuKoT4Sv1YaJtwGA8sQR+IuXQwKQ6YgyBrW/lTUo1fYKTMm6iqwtJKr1EySC14ahKPPaSsHsZzIN3u6hWj1GrU6PNFgy7kIMV4ngMK7fA00IdBuvfm8Lu4Bq5i8yQIcjm+oUVZ+kH5MwtqkL0gRKhknd6tKLMaUn7IDJYRebXWe+jtpAVWpSFUEFMXlllSkkn7FtRqYkVJUDMobydFuuKq00QkZt0ooC9v1j3IMcrIEnbfLqMgtJXeFS5vhkOWn22VzImmMyf5PmpF8TRoem24UTHYBdBDfld25wTgnV61//etx+++249NJLcfXVV+PrX/86PvrRj+Lf/bt/Z7d573vfiyNHjuCP/uiPANA03uWXX46rr74aeZ7jT/7kT/DZz34Wn/3sZ095/k9+8pP4mZ/5GczMnBqtcNttt+Gmm27Cy172Mlx33XX4xCc+gYMHD+Ktb33r0z4OlW6BhS29guL2f2vuZyZz7Li7N2HSCC7AZveBm5Ws0mHI5mLGOADjgt2YXuEeiVeLsZ5iyel+ugsvEA5PgNNUMevfMQC8Hps3Gidj5tho/4mtE2QOmQ4gN1chRwMSe+dUDfF683WVgFO+H+/OwNt7CVVXkw7AOIpDD0COBlTVWl2GP7sf0mgBjz2EYrBBHmy9Oao4jQb17oZksGkTBDg5qRsBuRW+6+gY3mrX20kJ5vsAj2qRuM7YZEJA5uRGbnyzlKyI6OjXo6m9aYrRyVKqvhUFnX9+DD41DR4nJFqPWtSGNNEmRUHVqTyFzSHMx5BTeyBMpU23A6Fz6JQsgYZzuW2DGc2lydrThpQTtgGaOEN4JDzXppr0u7IO0Nb+TKwqdOtMWgdxS9DMZ8S0vwwJM67lha6YZfp94h6Mo3uzAqSMPolx8t5rtpv1RB4TAWTUhhhpMbiv28mahCp/myjcisqnJv5OOI00w9qCmKnXbc9hsw7NpKzRUu1CuCm/c4NzSqg+/vGP4zd/8zfxtre9DSsrK1haWsKv/Mqv4H3ve5/d5tixYzh48KD9Ps9zvPvd78aRI0cQxzGuvvpq3HHHHadMBt5///340pe+hDvvvPO0r/3GN74Rq6ur+OAHP4hjx47hwIED+PznP4/LLrvsaR2DylMgEFDZCCyagjQntJQAcnvCTqwyTaumyvVq0Yf0WxCXvhCQElXUoQuLvphyo5PQrsBm1clYvQrjKaWos2KManq/86W6iNAc+wbQCIOdDD+mDMgQUI2JMR3uzYdrUEVGHkqM1xOonq89mQIg7tCNOYwQXP5C5A9/B3KwgWr9BILLX0BEY3YfWR/IinQvZQ4oRRWN/gqq4YB8mwYb8BYutVUdEYZWTE4TfhK8OwPeniZBuVlsGEf2MqdqkbZZYHFiW48qH0D0yJeOt3tg2gmbVRVVjNZXgBHthze/j3RVm6vad6pNmrB0CC+hycXq5GGImSWgOw+lJHgbKFeXyZW9qqwXFks6wJC0ZxA+Vd7CBGjPgBeUjYeCxO4yaFvLFRNuTYMrKZiprhhfO86h/BZYMaKBFSWtxpKNN4FsiGpqjlpwesKYlTmYTKk9G3UpoWG4SjzMqy0OjIbKVqQA2r9kD30mghaqoEWVJv26RNI8q9OyQnXd7quirtWDoSo1QVR2fyudHaiyUUOTFhHxKwswtQWpPa2s+NxOLOpFpVK6JVlNEjDhkWFnozswgWY0GNzi0+HsginlqOiZoN/vo9vtYu1bX0KnPVWXtMPEnrRKBHQRFUE9IQPYbVHluk3n1+V9feEwF1ozeqw8SrY3K24ZdexFgad9ckUerUPG5JIsw/az/0dxOKegtkhD7GtW49v8gKxA3VSsGAPLhzSpxXht36FvNuUj3wYA+Jc+n266YyI3+fe/ClWQEN3be0lNrFrT1OYZ91GtHoOYWYTs7QcrU3LS5h5paLIRike/R4L0IKI4m7l9gDbKNPmAtlqkW4DGQoFxDpZ0aMpPV5js38K4t0sJFrX0c4WQ68etrkqNh9S2ixOUK0fob6erU+a5zGt4ey/TLTC6XDJZojz2MAAQoZrZR+f35gr5VIUJMFgFi6ZsuPHkmzXpzI0qr1tjFbU8eXuPzQcEY2DH7iejUT+us+i0oJ0yAVu0XVWAD1etjorp99J+Jvyo/ixYUkKTfmJwHGCcSI9uC7NiBDFctZUye80K9HWqoiqeDUYOyeqF5SN7TWO6Ss+yrdpyYbgO1d1LC8H+ChC1bWCxFYyb25Op1jcJkGlpGkIlvLobICaJU/NrdY7IVL/fx96FBWxubk6YUp/t1+h2u/jPf/3PiJIzvwekwwF+/TU/8Izu626EGwvbIZQf0YVFr4J5RpN3puyOhh7MWh8wpuMcvPqCYLLLiswGoxrfGmh/ofqCW1j7BTBGOV5+TGTO4aKFan6ejE7EfE5OO+0H2zrh401bfZBBrG+KdFMS7en6+TmnSpVfx5HwqGVNPiF80tnoMF9vbh9VlZTU4/oxRY14IZEeKesWWUAeTrzVplaeNuE0+YA86dStPS1QV+MhZH+N8gG1nsqKxAuyfFBpw+GdC6iigGhPW4fzpn+UGpNhp0q1MzpoSk9unqz/XtqigkfaIysd0aJJ666MKJ2F9cIIRuvWrBiWKXi2ZSs7hjzIqG1bnrwYkX/UeBO8vacmAbraSHqmxB4boAmDLMGyrfpzUIzJ8iEfWplBfe0RurpdWyTw0TqsQ7ptmelrlJlK1NPLzclCFXdrDz4TuaUr6kp4UHEHJqeUntMj+wc/rF/LCMa3fUabOXvmexKw6+tncz+3aadsTNNFUpmqpNrxP4enD9cXOlsQAZRH5nUkEBVWC6EAmnixFyJ94isJnm9BBlNQ8HVafKyneVDnrunJJXuh019XxntGuxtbXcb21bDDxYHmRFNjPNyScuMu3YgSAUA32eWHIXp7SYfDPSAbgisJGcR1W63KoURMlgT9NTLS5OQuLjdXwVq0klVrx8Bm9hEpa7YjGbWu+GidPtvhFPzFy8n+QNDUnEkVEN0Z0mGZzL3RwPpTGTsHlY5gcgGhjT1NVUuOBhDtadJNGVPPwRr5TOkIGVPFkoN1ePOXQG6cQHniCJE17W3FwhgqG0NubUDECbXwuKDJMxODA9jAYA6QRirbgkz22EoUBfw21q9KkqZJB0crxgGPg482iODNXwZkW0C6BdXbB5YOyAjTC62fHYWn+3XcinnvudDXAn19MZEwRoQO1JU2fU1hxRgymaEhl3wIVuUQWydQJTNgZQ4lArJGqErwjPL2WJkR+RNBrZdCLW8A4/R5UuTeDunVVSxPtz9lSakRfmwJmwnptp9RxsFkZsX1zQUofS6N4TFqn6mmrtBU5i4SMgVgx6TIEaozg6tQ7RTGdFMLxK0OwbhOmyy/Box2gZyjaeLKuAiz9aNQa8egNlaoKmVHonOqNlQFVGEqV5VtETBZTgg3T2kxOFwUmHDPBxo3Wa/R6tM3qoriXPhoHTJPobTxJCtSqmjIUo+ve+QvtW20XuUpeT5JSdNaYQTZX0Nx7FFUh76vg3tp+kw1X58LCk1eOwbenobozZFAPU7AohZUmU9UlCB1mHGRwwQmV+snaJsyp0oRYKs6JIinIQ5hbA0Aql75IZGuMCGtkzboNK/Fkw5YnEDMLJJ+q7OH9FlFjmr1GKrlR2x1hSdtyiOMEh3VEtM/I+RvVlvs17rKk481MQtsKgJEQBUcHcCswikifVobKfrL4PmQbArM31NW4OkmeD601wPbsos7FEsTxDQ1XGS2vWjfy0aFiY03dTxNI8ZGllQB1z53XFe4WEWSBaalDJYs6hBrNEKU6c1RluTYbbdV1JUOPZ54jMG2dh3tO7X3LMGyQz7ms+ZNPo6Li4JMne+4/fbb8cpXvhKtVutx4+MOHjyI17/+9UiSBLOzs3jHO94xkc8LAN/61rdw/fXXI45j7Nu3Dx/84AdxrhVMrkK1Q7CqtBoo2wrQ4+IsHdAq34SXmvK6rhKQFiEAK8b1RcwLAKMVyVOwAIBX+1+pcIou6Masr6IboIy7tHItMlr5Bq79d1HCfMZkVeunzI1Gj8GT9kYTeCXB+tqZO0yoQiKoFYeyACIadUfUJs2fGU2XFZSUkMOBnQJUWQqpb+rlymHIYR+iNw+KplnS1Y4MGJykKcLhADylahPvzQODDVQnjtgQZKEz/MyEnBwNwPXrQlZk26DJFO/OUMjy6jJVpGSFajyEmFkksfh4SBOAIOIlN1epwqWhuAfWW4DQGirenSXCxT2w7jyK+79mzT1lfw28sweyNQ20punvmJObvBIBRHtPvbAy4/leSBWafIt+HLXrqlXYhgyn4J94sG5NafNOUZJvXTW9T+d6puDDVauJ4ummJkpjatdOzdbt1VaPsvfGm0Bex9pYGQIXtEALWpBeQDYIo3W6LnEiVsaDSgUteh40SLv529nJQy1TYBwoyarD3t640IbGBe1b1AHPt6yFAsXzeLW2b9vUqjUcNQM6wESVio6pQaKa7W/7HLtzou90qOTOqkzVM2hpmOc5fv7nfx7XXXfdRIKJfe2qwute9zrMzc3hS1/6ElZXV3HzzTdDKYWPf/zjAEgr9hM/8RO44YYb8JWvfAX3338/brnlFiRJgne9613P3M4/CRyhOptgHBAcSkU0rWJyoqoSrNqyk3pmtW4vnsKHCqcgBsfB/BCst5cuBJkW35qLFNcmoXoEmoV5fdExo84h6MbZXMk5XFQgImUMC2ujyHoDremRJfhwlewPIqpAyOGAXMKzMbmUNx+mp0xZmZFmCSA3cgCMC8itDfCIJrFUnlpncOb5VBXS1ZFqsGH9o5QhU1qTVElJAcucU3tvapom07IxWBiTZ1TUAu/NUXXMC0j3lI5shUp0Z1BpY0456sPr7KHxfO5BDdepsiUlTRianEBdLUPYqi1Q8jEYr4BYEwhZgfk6wobroF5dQaJIF6FjZWKrXeLGzoBx8GJkhd2kNRtRyoIQWosZ2wqNEgERqc4CZDgFnvbrc1prolTUpum/sqhtWLSvmBIBtQfzIXiq9XHCp6BsToHEymjX9OdBtnpg482GPxWFOEt06gk7ye1nDIzTxGCj3Wc+X3aKUHtCsWwAng3rFq0Oi0dZkLyhKiG9SFelTrUAsfKJxs9tq0949BhDsCYmqtkpLe6LAedzy89EuH3qU5867e/vvPNOfPe738WhQ4ewtLQEAPjd3/1d3HLLLbj99tvR6XTwmc98Bmma4lOf+hTCMMSBAwdw//3346Mf/Shuu+22x008eabh7ro7hBIeaVD014AuXWs/FRXWBp+nlNsBe6KzbMsm0suoDRUmdBPIxpMCUsbpuauCXtf4CunIB5nMWIdkh4sU28m0uUE3Vv1MlpQZd+xByr2LE8gTB2kCTla04m9Ng5UFkQXji6Qk5MYJ7bfErZ8UTeflkFsbUMM+2Sx4vp5W61ErSwu0RXeGROc6eJhsAUIShpekyxI6Gob5fu01VebkBdWdoazAo4+iPPwgZDqkn7fJJ4qFEUR7Gt78Pnhz+6CyEaqTR6E2VsDiNkRvHqI3B29uH93YdWSNHGxAhgkRoNEG5GAd5YkjKB/6JumqosQKoOVoAHnyMOnFttb04klZM0omS8ruA6jqB2hjUx1TlQ8h/Rb9Tcd90haVVL0xrudisEJVZzPt2xCusyK1GqyqM0+h0PmIiBcAM7kpBiegmI6GaS6+/JadCAX0oo5xO2UHxnRFk6b8WLZljUhZVRD5M9e4xvOiWZnTsgOuQ5/puhjTZ1FPBhIpC2kyUX/O6sDv00glzOswXleqtB/XhIawKWzn4qKqTl3ouOeee3DgwAFLpgDgNa95DbIsw9e+9jW7zfXXXz+RXvKa17wGR48exaOPPvps77KFq1DtFCIAy8fgRoAJ2NWXqkgjZcbXISVUNGU1FRN6gIbjOitSqI3jdoWv0iEwFU2UsVV7XmuqciihxZ5VTitWLkgLEXVPvbk6XBRQXjh5IzPTZlqErLgHng0pOy2MUa2vQI2HpIMaD6mKIUvI9eNAGAF6FB6yBNuziKC3F+nX/hb+vitJS6UnAeX6irU38C+5CtX6CrmhazIh/RawpwU/mkK1ehQ86ZAP1MHvUZXMC4BiSN5XQQS5VZB1QRhbl3Le7lHFyvOhUqriyvWV2kohoMy/anOVQotD+l7lpEFE0iMykQ2tjopHCbUNAaoayYqE9mFMrUJJ1Rw5HJBXVUY5gXI0AC8LIE4AnoHrqVvKodNj/VFI7b0goaETWRKZUhJVMgOebdH7YYZKPJqUBEBtff17Jss6hsUYZ+ZjyKlZlF5E72vQso74No0h6mr/MUk5fg2yYq9BRuNk9G6yggoCQAgi1ekmJNft5FLrOs3QTKRJepnXFXQlIY3WyvhXhe3aooFxiP4yZJjYSpMK4kZsEp+cWtwOo7XiqLVaRqPVjKhBPeF3MeFsVaj6/f7Ezx8vgu1sYnl5+ZQIuF6vhyAIbFzc8vIyLr/88oltzGOWl5dxxRVXPKP7+Hhwd9sdguWjiZK3tUYQ/sQor/Jq3xZzwQJQ+6VoKF1GB6idoprBtduE5jaTy1ww9IWElaSj4sbZ2OHiQ1OMy5i28Kis2Jmnm5CbJyH7a1r0XQuz5dYGeJxA5WP6/CU6SFebOzIlUZ04bMXTfP5SINZ+UA2bELZn0RItO8ovzU2+TWaZcYcqRMOB9aMyGX4UPzPWh8NtvIsa9mnizw/AooSqUq2OneZTeUrZmJurUFrMDsD+HpwD4z7kYL0OPNaCZZ6PrXiehTGRmyAiQXw2hnFG53GtUWSxnvzThEIxbj2YbGtLn/My6trYF1Q5GYAaTzklbbQLPJ90QzpMnaJ6tAeUhjVwBajNpxd05nok4y5k1IEKWlq/pE02NdEyAwL0ZPoaVjayHKUkAmxE9VJagTrTk6MT176G95NqEBxT2ZzwPwPqcGfdNlRGoN/AKYvOpm5qW8XqlM++1oFdjJA7tEyQmlBdcskl6Ha79t+HP/zh077eBz7wATDGnvDfV7/61ae8/6dr2SmlJn6+fRsjSD9X7T7AVah2DGoRxFYrZS6WrCr0BSiG1JMlxlCP5SO6QDYuOpQBmNrYB96dhzc1DTUe2Ek+oNYuAFocqgXGMu7SBIsx2UsHkAA492hCx+Gig6lKQCmb92dv9mWBcvUYbadDjFU2hhxsEAnyQsjVo6R1Gq4D0wv0eIAiAwfr8Ob30/BE1KZqaVmQWzkXEDMLUH4EPn8ZpNYMoUzBNo+Dhy2YkXrybNNTfDoKhmuPKONAzts9agumI6hsjGp9Bbzs2TajMoG7/j6oLEW1uUqVq5zyMcXMgm4x1iSTez69hnbq5t1ZSOFBrR2zLT14vq1CyVHtvm4qYMwPwLR3FW9PQ03NUMVakqmpSqap8lSMIKMutenLErJNK2k+XAXLBpBRl6bnQK1YyTg9D3Iiutsm1sxkoPJCqorLCmBKv9+qnvCVFUkHtFZO+S1q1WlSrJgmmKw2K4XwoLyA9k2WkH4Mpb3MWFVABi0wn0NyDpYToWNFWnuUSVnLGIyvlbZ0YFVRyyFEACkrMiVGaXVm9AbVXmk2Iok3yFPzM97QVtWeV05DerZw6NChCWPPx6tOvf3tb8eNN974hM+1vaL0eFhYWMCXv/zliZ+tr6+jKApbhVpYWLDVKoOVlRUAOKW69WzCEaqdYmKMt6Jvt/XyWZnRCW++rwryXom79c/9CDDVLuET4cpkHc0RmFVuqeMl9EVDj0nbkr4OSTVREKqKARW7C8xFCPvZkoW1QGBFCrF51NoeAKDWWKKrS2Wup+RKqHSkiRZNk5rKKcoMLOlALD23XiQAREB0iLDozpB2xwTdNlA89n3SOe1/Pv2AC9uSU3kKFiVgstJ+U6SxYmEMxAlVqNIR5HhIBCfQzul5ai1ITBsQ0JWtRgWOdFkxVJBQdUqHGyvhg+djKN8nQXtZ1OHLng9u/g5xQm7lWQoWTYFzATXsk1eWMfdNB1D67y/DNsSWMQXlRCrHm9qUMwQrtf7RLI40ZKtH/nIs1bqqka1IST+m1p4xVs22qJ3a6tXWA0rVE8XmmoB60s2SkDKrp0IZB9OSg9puQ+utANuuNATPiN7Je6+wTvKmImXals2WG5MlUAAsG4KlA/sa9pop/HrEzPhaVQVQAWSIHNR/y+ZxaH2gI1OESu2w5aerPZ1O5yk5pc/OzmJ2dvaMX6+J6667DrfffjuOHTuGxcVFACRUD8MQ1157rd3mN37jN5DnOYIgsNssLS09ZeL2TMARqh2C50MwX6e1i8Cu+mhUuhYCk+dUaidaANBKNExgcv/sxUJJoCJNhc3yCqfofy+iC5nUqepeQCnwDd8YNlwjIjZ3GViZk3eNF1605e+LGoZYexEJncfrKA7eTxUkKamlNhyAiUtJs6TDfcsTR6CyMcSlL9SVBV7fSMMpMsIMWqc6UOtYl2r9BPjMpXWskmkLFTlVf7Y24C1cDtlfI/LVaqNaPwG5sUILkyCCHGzAm99HU3naqkB0Z4DuDDmoawIl+/rz3vCU4q022RwY3Q9AVg+jFNjagOjNg89daivFbP2Ijbkx7XhlWqTjIUXcBBHpscIWWDRFf48wATeBvnqyTW6eJE+tstDnrE+EJ0ysO7qyRqcx/S5oo+zt16RCV6B0Vh4frdN+xF1IK/qurI0BTzepEjZcJXNOI8hm5I9nooTgx1a0LiN9k7T5ffScLB9Ra3JqjqqHAA3WyJKuM4Y4aaJrjEbN54Bp/ykZTIFpgT1NMcbWpZ0ZB3/Pr7MBVYNECb+O2dJ6UHMdfDyyZGQWF6Ne6nQ4n6f8Dh48iLW1NRw8eBBVVeGf//mfAQDPfe5zMTU1hVe/+tV40YtehJtuugm/8zu/g7W1Nbz73e/GW97yFkvu3vSmN+G3fuu3cMstt+A3fuM38MADD+BDH/oQ3ve+97mW3wUNc9FkdOE2mgCbRaUnaShnTdbVqSCh3D6TheUlun2XWwM+GcQQc/uhUvKuse3EQtZ+QEa3oA1ElQjA9EWSa08ZpS+CMuqcshJ22N2gz1Zk2yFs3KdwYC7AOLXweHu6NtIscxRHHtJu4WQyKYUmHZvHKQA8TCDDKYjROhGIZA+U34KYmkbwnKtRDTYoKNncKBkZU1KFprAaqex7X6EWnzbIhLmBSgml7RFUlto2ospTlP01gHN4C5fT5z1PwaemSeNUAkABrrP7rH5LtyJNxUmNhyizg/Avn6oz6HTMTdO1nSp1EizR+iytOVJFpqNSOJEC+MBwg879liZdQYxKT9aZEGEAuspMpqnKiwA93cbSgZ7YWyTiq8mMDBPIVg9iuAo2Wqfn0lonU/m2IccT1gUKUJVNbaAkh8CSsFOtDvSi0I9qR/LYq7flHlg+0M9FlXKWjy1ps5N3Jlxb+HXbThNNbkTsjANVNeGkbz3S9H4bbak1PWWyPsYGibeVKe+ZFUo7nD28733vw6c//Wn7/Utf+lIAwN/93d/hx37sxyCEwB133IG3ve1t+JEf+RHEcYw3velN+MhHPmIf0+12cdddd+HWW2/Fy172MvR6Pdx222247bbbnvXjacIRqh1ChQlN7OixaeWZmwitEJkq7EWBoaSIGf1YI/C1YaINZ2Hpx2BeCMk98DIjbZQJRLUvXpflUeoKgBdCBTF4XEAO+2BhASYErQiVqrVWDrse9kamR94hS1TrZOIptzbq7XSLjfyVhBVpMyEo4Lc9Q4Jm3X6G1kypfAymx+xN9ArCBGw8rEXb5qanq6dVOqxfVxtwqiwFokSbgOqWnZlwNVUnmUL5gbZhmKa0gJI8rXirTd5Tm6skUA8isn9YfK61JajSIURvniZgTcUqHwNRW1eOCrC4ABsNrNjeLJas03oDllTpKlm5fBDeZS+k1mHYQpXMEKnQVR2ms/fqg28IygFN1jzbvmMlBTvDj3WVxtfC8txOzsFeP9rWVqG2FjB2LEP7OWDZ8PSLKXO9gr5OncayAHoKD1LSMTUHZDSBsj5RQayd1As7NUitylbdMkQ9MGFno7a5XFt9VMPuA1UJiPoYXIvv9DifK1Sf+tSnHteDyuDSSy/F5z73uSfc5pprrsE//MM/nMU92zkcodohZNCqBbeMA5U26Wv8ZXm6CQw36Ju4Qz5TRkDuBXVL0AjPTdXKD4HKs+aefCytnwx5WknbClCRRz49xZguXCIA0xdjANZ8UPmhI1QXCVg+pMqEni71+sdQbK6Ct3s04eYH1EIrc2pRpT7E3D76mfAtAaDKaEEmnp6v24hagJ5M0zae9kYDwLwAYmkBpamUFmOqZgzXSXvk+eBT02TRsLlKFglxQqHISQdVOqQKmY61Ma08U1mzmp8sJe+owYZt7fGpaXIx3zhBLt+aBKgsRbW6XJPFMIIa9sH9kIhgVVpDUegMP9p5QWJ54yWnRew2UooLqphd9sJJggToOJjaj6pqz9dTwfmYWmmMPLjIPqH2lVOME08QHlWi/EhrlbQbuckF1dsqP6Z8QkNWQNN0MtkDPlyz079WfwWctkJ1CpEC0IwgqitFnMTspiUHQIHb1jKZl3qU12euQV4IVpCmi6YWGxOGaEwcArXUQTb2yVS3GtYITsZwepRSQeyAFJUuy++M4AjVTmEE4EoCOU21KC+o4x2M8aY245TagE4Jj4ToaJSubf9fV7LMeHMyDYz7sB5VjfFkeFEtOFZ1lQrKr8eWixQIIpixbBaWTmtwMUBKQN+j+HgTcvkRIt3tno41imxFiGnXcTkc2IoMm9mnCQlNrUFWYJ1ZmhIrUyhet3usoLkqwbqzNMGnZE08xn2oqgILaYqPJx0Yl3Jr2QAQofECav8BtTFoVUH2V23lyOb66fBkFrW0lYJvb7ZWsOyHUGUB0Z2p23c6QJmbqorwtKlpTShUkVuiprRIHSCtJGP63GxUVapWz4r0+Wi9rjYHMU3YNSxSVEN3VcXUEmRlaq8nAMiyoBH2a9p7zcET6Ok6EzXFjGGmrKAt7GkKMx2QYN2QKbsjky7iE1oog0a236RXlbFfaIjOtQaMnkxCBZN2BqoqwMsUknv1azcqTOZaSO+ddkDXj22K65mSkNy1+R4P53OFajfD3VV3CJYPgXiavi6z+qIp9AVPCciwDfgtiNH6hOGdkpJWlUY0DABFat2RlReS6NZv0c1qaw2IGhcUT6+2yxzK57XegHNaLeopHmZufEZLc7pVqMOug4rNqH4KdvT7yB+l6TpV5FSF8vy6jachN1aIuHABryzA5y+lqmamCZhHrR2po13Y4CTQ1VEq2i5ERm0tkl6jJ91apccnHXjtPZBhYltQojeP8vhBasWlI6pexQnkILeVJN7Sk3h5ap3UedIh41uPrAvEzCI5rbdJlM10y1FxjzyvenPkqK69qJgf0Gv6cV1h1s7uAMjQM9SWCkFUe00BtQVFo4Un467+e+eQU7MQgxVIk09np2+peg3OIaMuxNZJsjXQeX1GI6m8yBpdGqIKEOEyv+fZFp3n3KNFUpFR+0sv0kwFm4ZRfCtwP7WVZwiNrJ3Tmy0/Xi/eJhZhOszZTuI1qkaArohr3Vyt/UzBipEmioIkEg2CBEXXQ2WGbDTRtYTLEDlTyXKtPofzDI5Q7RBiuAYebJsqYNxe+M3oOiuHVjSuvBDwI1o1eoENTlagdgkUuQUbcsYqmpxhQQzFGF1Y9OuYKAiUOf1vXp+Ri7DinKYJuQDTwazbtQoOuw/WyJNxeOuHkT32ffo8FjlUOqwF27LSkSr6RliRazgLIvC9l0N5VOk0juJquAHmh6i2SLuEWE+LKfJBqqb06LSsgHQANewTCZvZR1pBvX/k7F9AcQEWaTuEPAVP2vYYVJbCm10gV/L2NPz4KvqcRwnd0D0f3swCHe/sPjsxxoqRrmTR2D5PB6gA3WaMASGoTRgQuWmSDNPqM78ztg0Wuv2oOnNUFdbDJny8SbUUTYzK6SVqsXMPYriqNZAxqvY8gAQ8G5B7uorpOUzKgZ7CY7IkEXoyUwu+jQbJ/r01eTI+V7o6BsbqQzLO5LpNau0JrNaK2yqimdCzE3Xbxd9mey5q407zXp3mMyj1BKMxASV9VVJX6AE7WENdP02e/Ih0U9v3swHX6ntiyB1WqKSrUJ0RHKHaIVQQ6xFf4zTdSELnHliV1htbotNwU992YaILp9ZplNphuCIfIaXHia0HiyytYJWqUnoEuionR4yNe3qRQQZ0AXdTMbscptUsS5Qrh0iT5Pm2KgrA2g6Y+BeVpzTAoO0BrFbK02G7gxXIkc7pAyjkdrgOphRF05ggWoA+x9mYdFdc1CLpUmfQZSOyHpAbtYN7nkKZtlpZAHmKcvkgfX6TDgngPd9Oh3FTFYFujwm/Pm7Pt1Uz2V8DTzrWhR2tLkQQ0TShruLyfIxKH5Mx+4SO5bF5mgBUOAWGrfqGrqOloDSpiruAR5UpGXdpqq4qqC1pdE/G/oSP6VwUgW7la72bIYVAfT0xei1bHfPr7QwJMRYIGma/7Llu3p8JrVJ1atXKO5WsWFuC7derJ4ImX9ZXinMoTFa57G1bPM6tiE0SXmeN8NRQKWW9pM708Q5PH+6TuUPIcEonsedAjvpio8vhlG1VQgUJrWCV1BWnkdUzTExjNaeiygwySMBlCbaxDBbr1buxR8jHdqoGWrheJ8U3xKJmhSu074tb3e1q0LSorpoWZHhp8+8AapNxATneqMOJddgxWh07Zace+gbgBfAWLgXjHNXWBlQ2huIptaJH5OIvtF4JRmStb748TvTkoK5I6FF7lY2ApKddt0N4SQfl0UcgB+vWUoH5AeT6CuD5EDOLqLQvFks61K7szKHS1RtmIlCMjYDfgpzSFZAipSxC7a3FPN9qxPj0HOmxAo8sSvYs1PufDanKLKt6YtELaepQV+UU96wVgNH9AFrHZBZFSlJbcbhOFegyo4gYXtaVHkWRLrwY0bmpbQ5kqwc23iQS4Uf1JJ8XWnLDc5qemyBTDWG7NfcE6tae/aBwskIQgY7BCeq2msHTJVHbYDR2ZDBbkq5L6lQJYEJ/tZ3YmcnnptWLI1MO5zPcp/MsQYkA8KX2kUrpAliYKBmdIK90+KmsgCCwugPTvoMWbEKnspu4BlblpC0YD8BaHKhQe8/oix1T5aSuoqTWAFkt6JK7FzT8XuQZXyQdznOY91ZW8PrLKKqaFBhhOLigyb4GwbCVCS0KV15A5oqyospQQQJwmrwjA0wW6uy9/kmwDuwUKgDKxovIWbzS7SkVxBRrE07Zmz33Q9oX3ZZifkD5eyabLx2S1YGeRjSCcyuKZpxct7VHkjG/hSQ/Ix5EZCGifaVkOqLw5LVlMC+g2Jm4CxnX2W9C6hu+rKi65PnWJkKac89UgPwQLNdO6Zr8AKAqVasHlo8hKv135IIm/0brtI3Jr9OVF55vgRUpqvYc6SmrnK4hDfsBpluZiLuQ1dRk5WmCPD3O58Jso20NAJCGUy/ULBlvaJzOGIYwNrRg8Dy6Dm7ft+37h5qQOSL19OBE6ecG7lO6Q/BsCyzkOg4moCoToCfqxnb1rPTv7Qq0Kicvekqb2+kKk7kA8fEmjEFotX4Cwgu0o/EYamqPfS6KkOA6WT6gsWx9ITJiYZ4OUImgbgU4QrX7YG5G2ltIDtbAfGoJs6gF6LgZcE4aKIA0QO1pa3zJdM6dGvYh0xHZCbSmich4davQuIhXfLV+robGRrZ64FzQZCto+lQaQq9bbTj+CAqdKcjihMTroRZ/hzG5duswZLOvLIiBfAxkq6Th4gJq7RiUrCD2LECKgP4MXFBlWATUktcidiUrmhDMU6q2AXSzN209Q4RWD9YkU1Y0Laj9llDlkK0epPHfGq2DVbm2SFmDjLsQw1Wa/AtilHsuhRicsH5gSnhQfouIVZiQntL60aUQw1U6l4OEiA+g7VRyqDCB2DoByThk3K31TVZIbuwInvimOCEkZ3zS70lWZ00WYM08S9STl0b/aYhUY5oRqKtrrpp+ZnCE6tzAEaodgsruY8gAYFo3ofzIXhxMnhX0qtlEKvBiTAGjjdWXCloTjwUAtb5sbzRibh8Qd+wKmKcDqKqk1T4AVBWZ/wFQUXsy8kMbfppRbcBpqHYt9CqfVQXk1ob2VxIkNjc+TmUBmZJ7OOMCzAsoLDjSlaw8JX8oz0e1vgIvTmxFypvfBzkeolpdpufKUvCZBRutorwI8D1ACVTtOVvlsjdTgKo1yw+hWj1GLu1Sgvk+TSGOh6RfMkHJ4yHtSxBBjoeQA9JElStH4M3TIZswY4DOSTFat4G7rEyJtOh2Io8SqDKnFpwhH8N1wKMFEbS4niU9Op8MeWxUSWSkXdDjLlXz/Ni2CzlGFPGi7SUgfMhwClVnL4ztgBGbS61vhBBQXkgxMkGLJiH9Fj1HPpq0MeBUhbPO7aCJuVq/xur/DUFS2oW8MT9zCmFqisy36bF2DEOQlL6uoTHZZ651erGnjE7KLfgcLjA4QnU2UGZkXBi1GwJQXR3SbQZlBLNGVK4k2R00V2CmjWF+X6S0mjaTUn4IpZTWUUR0Ma9yO8ZNwaOpNg3NwZrlcj+CtCtS97bvVkyYSyrTntOib+3txOME1eoy6aE02TJByZAVeKtDWXk6fkXlKaoTR+wNnEUJRBBZ13V6KUlGmmGiK6rSDlCYzxyTJZhpewFUOQNq7yf93LzVhkxHVsMkujMUSKwrYiodQYJIX7W+QvE0ZUEBz9wDL0Z0TlZhffxcAK1p8kAy1giNdqeqKvBWTG09WYJnA4p82dSROZ4xkqQBFD5cQ8W4tj3JKDg4G4CJAFXcg7f2GLU2o249BKAJA0sHZD0REkk1qQgwHlIAXU8kaatURNU/BkBpnVg1NQecLrNMV7PN9UA1B1+amxutWON766dnvj/LUIL+VtSibLzuxDaOTJ0NuArVuYG7s+4QlFBPXytf6zb0dJ4KYkjG6CJiPF4KrSOpCn0hbgGMkeWBWYVqQ08VtMC0YJdW6rRKZ7IkcuS3AC+0OWnkXdOyOX8oc03qArpIBa1TL6QOFzwkGDjUKaJelg6AqEX6pyFN5xm7BIAIiTKEA9BTcJIMLgHbZmNRQhYFc/uo9by6DL50JXjShhySMF0O1sFlBdXq1ZEhqKdarRYLAN/S+qH2LNhgA7yxH2YSTw374DML1oNK9KZBocsrRP5yEtJX2qCUcU4tyyCGDNsQUoKN+zRxV2aQyR7dVhfgsoIsC7BEWz6UOVRVkWheC/Thx0RGhG91RUp44NmQYmc8n1p60/t0q57ICBusAO15VNP7wIdr1AJk5GQuo459j4ylAk/JMLXqLlDQupKQ3KMQ5WKESnhQCCwxVe35Rlu3UZFq6J4m9GWyAgSfrFY/XhvtWbg2KD15CTRE8/pz4Sb4zh4qJVFJ+eQbPsHjHZ4+3Kd3h5BBDES0ClRBYpPR7WRMY0JG6imoUyZWbIyFV/tJ6XZBdeIItTOsqWAFyAF4Zw8q+3o0UcgAoMrBTcWqyChrEACCbdM77oTZNeCqYcgITHzG+Ox+lI98W+uffG1eOSDRN1DfzBpfqyHd5Jluu0FWZILZmQercrIcACC6M0So9Ncq7tCN3USGNME4IDi1tDZWoMqcrAx0VQrpEAqA3Nogc8/2NJl1xglNH3ohVLpFJFBX1VDSsAYLIjDfp+fLhlBBgiqZgVcVUOkWHYNuLRkvJBYXNuBYlTRVqPwYLNuqb/JN/yne8GKSFSA5aRW1aBwAxccYU04/0pYqAWmrRht6KCTQJE3roYQHbvzjALJhYCNyVgfs483f0OQQ0vcNmwqD5h9ei92Bhl7qXINxInQCtZZOZS6Tz2FX4Dw4wy5wGG2ArgzV7Qtem9mZdkc6gAwSvWJPIZMZbXFAo9AsHdipPlakOvtsjOLEcfhGh6Izz1AVNJ7NPap4KQmpbwQmUR7ZkHyFvNBqFlx1aveBBhLEKUMOSlcvmR9QlUq3vqSxRdCfVWNToMpCTwHGNYmXEjyMyXAzH1MFaKqlCfsRqgyFEbW3/Fa9D7oqpYJ6gcGqAthcQbW5CiYEKi2AZ36gXdC1+DqvdFAyp5ajCMCKMVWnxkPa72Efqiio+qoNQavNVfAsBds8CR4nKGevgBCrUOO+zdMj6xAfLO5AhgmdKzoQWjUJlF6Q2KlFWVJ1SgRAO0blt2xOoBiv2xa81O05VGWdEeiF4LrFL73Iei6ZFqmtKDffP+Oqrt9LCkqO7L7V5LmuTFlzTkNaGiL78xJmYek88c46nLHnucF5eqZdQDDCVDO1ZMamteeOXRnqMrzxobGCUxMFI8mMk+U5pcJnQxKizyzCWz+hp58iCpCdmqbVr7kQVWXtkixLEroWY6hWD1y7o0+QqWYoqSNYFzTMJCndlGkAQjWrEnlqzSrZzD7I9WXwKIE3tw/5/V8np3RhAv+0+LrxNWSFanMVcjwE846AhRHEvqvoM7/3CvgdaqVVrZ6thgAgAqCUzeQzo/4sboMn5IpOlageVV0832b0AdR+lKMB5NYGiem7M7UIOx3RAiGMtA6K19OJeUr7mg7BevtRtefA/QhYO0zPGyUATyhORwQ6pNcjR/jhRi3tyYeUTKAXPLzU9gWeDzk1R+dNlcPrL0OlW8D0IvhoHXy8iWpqTgebl9TG027qSrfjWD6midxWr47nMdUaWQLKBxutWwNgOTUHyJw8xbxwshJpbBSMPUGDSAHnMZlyeEZRSQXuNFTPOtzZtkNQdExQBxkDVkMCoPaLUtKW+8E4ZXgVKaTJ8ANN7fF0QNWmjFbULIzgLV1OAmAuqNpgWhdVYce9lWkLSAkVTsH4ENmg1CIlDRUAE0rqKla7BJqY2/dSVjW54YLiWbyQRv3LHHx2P1CMbTgyTPyMjlWBJJNPBVixukpp8k7lKfj6MpENP0Zl9DjaKsG2xYQHxTl4ShErTFeIUBUkMOfCiszBBbmTR4k1GQWo9cjihCprjEN0Z1CaTEE9pafKgoTsmoDB08MfZQE+WkfVXSBSUVVE8nhKIu9m2z0gbZTMxtaqAWYiVsPEOtnsuXxEixY/BNKtumqkK8zKD+32PB3Q38a6nwuyRGAUdEwLoape4JSFnVhkhSZLzUy75jVFVjDh6MYAUzW3c7goUUqA7YAUlU4RckZwhGqHYEUKng3BcrpYynCqNsgLpHUwB/domkd72Ci/ZT1gFIT1fZERSHMR67gKzmnMOxpCDfuoQPID5odgxYhafl5EI+HCr9Pkjf1CU1vT1F8AjkztBhjvMqOX0ePxrMwg1g/pqJYpqpqeeAxiZolCe8dEVhhAYnUtMK9Wj5EuKUrAfZ+m/QzBKQuAS5THD8IPI7DWNMAYZNSpP0umPeV51E47/gg5rBekmVJ5CtGbg5IV5HBQG4PqvD7RnQESmjI0Zp+qLFAcegDeFQfgzZIfm8o08TBtrbKwXlhSEnlSGytgrR5U1Aabuwxs7TDtx2gDKu5A6fOUZ1s03SeE1Y7JILbnJ99ah8rHUJ1529KjKKeU2npRF0p48NYP09/aC2tbgxSoWj0ilmUBYAQVtqGCFsTaQfqb6UWR1ISI5SOgqvTEJK/1lc1zGUTy6H0PJttm7rx2cDgncIRqpzAtPeHVnlPQ4+s6y8+s2nk+1L+NoTzZEJoXup1QT/Nwkw2oJN1YRjGq9RVwACqIwKMpCn/1Y3uxNatiSrb3al2GqvPbJuAuvBc8rA2GqUjJivR62dBO4GGwAey9nLRKwic9kRacM10pYnEb3AustQIZaGqjT/M/53Yar1w+CNElLRbfezmFIuusNqYklKLsuiodkj2DlFpQPiZRfJkTgTGfc1kReSsLMC4gZpfIKyodUStcCMiVx8hCodWuA1S4ABO62pUTGaKfc8h0CG/zKMr555EFQj4Gz6ndCOPdBl194vr8M8+pGgHljANxh8iUiWYx53S6CRl1qQJXFUAQQ2k/KxlOkZEoAAgiSUxJSOERafJ8oJCWOPF0kxZHXPvXlSnF6wCnxr8YF3PGtA+VrC0qHC56uJbfuYE7+3YIGXWsKJxVJeVxybIhTq1bBawYaUd1k7Re0LRPPgLTN0Io8vOhqcGYRt/1xJEqclSbq1BSQpQFOUN3Z8CLMVTcASsyS+pUmJDtQjqoJ33MitaMKzvsDgifWk3GODMd0OcQsOadXEmo7l4i2uNNyPEQ3NgGFBSWzRiHmFm0FSNjY8DjhMTqQkCOKeNOlQWJy+OE9EcaTLeh+FCbdXJBhKLMoSoSVcvxsPagMkJwLwDzfWoBxgkFGrd7KIcDwIjm8xTl8UMA5xC9OVSDDXhz+yA3V7WInoN5iW5bVtQG1PsLP4JM9oALEtqbFh5TEjJqg29l1iEevI6gYVVJZr06BxOMQ2weAUDtfpaPwUfrtUYsH4OLAVg2tCa7MmpDhm3aJ3MN0K09CmdOqdIctsGKMWQwBeZFYPkIPBuias+f8pY3PaZ2krXnsDvhCNW5gSNUO4QYb4BHXp0dpvUePBvShThMoHQ0jGz19IMCOznEqoJuhrLUonW9YhfC5njJMVUbquEWVCWBfh9R0qbKwXhIU0vhFFgxotBRP4IqfVod69HwSW0FcyvZ3YRGBhorU7DjD1FFSFeb5HAAUWRQUUCi6VYP3BhIKgkWSijOIf02mNZBqSylidKkTZNs3RmyOuCcyBZg3deVr9vMUkJ5AcTWCbBxX1ecKH+PhTGFG4cxeT6ZybqyIOKDofXBAgA56oOD7BgqHU1Dr8n1vrXhBRHKmcshygLIU9JhGYLGBVjSgcrGEON1VN5eqKCFyo/ARQBkQ/CNo1DdBZ0ikFBlNySCqLhnPZNU1K5NL7WHElOSJvYC2IEUOTU7aVugW3QmckaGCaQmvHY7z0cV94gMFhldA6QOUzfO6gYNU1RngOngcP7BnY07BMvH4ONNWqF6fk1gzE2Oe2SFoCtYdnUKWI2T8kLIIKEVMAB4PjksA2R9oJ2smeB21N2s/qVxuAb0uHRNlMjvJdg2Zu1Ws7sK28088zHkSLfUtO0B8+nmyzKKbTGmsypqQ0Zt+pp7ROA3Vog86AoSjxJqDYZUqWJeAOaTQSjzfbDpeT1913D4rrSflQ0DlkSidEuN+TR1yHU4M7gAn5quLUfMoZU5EQ1NxmCCmblAefRhsnkIyKdKtKfB4oQiakzMjh/Sa4z74FsnKEXAtMfDBHLmMjoHZUVVNk2arP4JeujEmGoyTs8jAruvJoiZIqdIyC6DhCZ5g0RvW1HFKicRu/IpBsq06HmhXdGFD4gArMho+s8IzVGL4q1XmDmvHRxOA+OUvpN/Dk8frkyxQ6h8DJX7QJhAhm2KrPBbeizbJ/GqLAFttglJpMreCBsZXTa0mId1W9DzdeYYB+Mcwd5F8KgF3tkDFsbgAN1whG5TNNo/KEYNXyCvQaxcu2+3gG0nVMcfqvVELarQeEtXAOmA3MwTEmOzMgeQQ4ZTJMxO+8DgJLmky4r0PboSxTyfvKqEAO/OUARSkZE2KmpPkHjK8vMBNgXelpCDddJF+T55RpkqrueDtbpg2g6EeT6kbmMbqDwFb/csWVNVRc/Dye9NDjYgHrwHqjsP5oWQ68ethoon5NWmwimwMgMfbQAigPQjOk/zIVVyddtOeRFkEujWXlC3BZUABJEdVozJLBeA8iPr96bCBDJIyCKhSMFlCdneS+c8AATkYcXHm6iCWJOskhZYSkH5tZs8K1PbhqyF/qrO1nM6KYenAOdDdW7gzsyzAMb1CjZoQWmXc+vDo1tt3JAlZQJTAxKglvqmJUt7MbVhySIAY2N7k+FJB2JmgTyFhAAL4lr30ZzyalbIaAfp4u5aBLsTjHLa2GidAosBipjhHCxOUK2vAFzQBF17Bny8Cblxglp6nEP6LbCqQKVdz40GCY22obFYYEmPCFM2Am/vQWVu7owDWireJHnWLJRzKK1rohYgGeHy6Tm9oQSfngPLRqSjAmx+JQuius2oK0MsaunpxA5NLeaStpdkXGoiY1iZkT7MpA+MN3V1KKbnKessTNtCk5Jai1xXkIarqDoLREI9v46HMX/+bEjDIn5cx7pUObXfdYUL3CNt23gTcmqOKomtHlhGBqpkj6Bb8byqNZjb4CZzHRzOXzhCtUOwMIEcbABTswAoXoZnQ7BsgEprL6wAXNZuyM0xd1aNqC1YZLU2wgQbi2Bi2gqyolFzLnR2oA9mWhJCh9AWKa2+zc2OCwAhETwu3Ap3l4A1q5vFGOzofdqrTPtFxQmRoiKHmFkA2jNgRYZqbRkqT+F1Z0jTo20XiIQJqjxp402lPZ1UnkJxAaE/P9zz6yw2gHRE2g+L5WPI/hqRMZ1tKfX+SFlRQPKwT59nP6Bw45yCwEVvHmx2P1k/6OPj7R4dT5RApkPwqWnw9h4AqP2e/BBszyJFt5w8jGptmaJx2vO0mJASfOskVDiFKmpbE1zFuD1/YHI3vRAKnBY8SkImM3R+5kOYwGIwbjWRfLQOng5QiYAqdoyDZ1v0XFVBFSyegJmf5yOqeBlvOsYBVdVTvqZVaNrzxgzdnbcOTxGVVDvyoXItvzODO0N3CBm1gZRW8XzrhPWgUkFCG+iLogymYGMitL8NlKTxaVnR/0rWo9vmZskYtR/0mDtvdehGJHxInRuGcIqqW4UHgPL7WDYEmm0DXUFwF+XdAeuwzzhYPqQqyvoKWJxofyYaZjACcD41DXnyCKpRHwAo2gV6is2LyFWfC6rkRG1gcwWsOw+RDmhCrygmXl+FU9RmNjf9MidDWr8Frlt8ctS3midjw8A8H9Vgwy4MWEC6QSJfkqpTwz49JoyA9gxUEEPEHZpSXT1K2+djErn7gfbS0kHGQQyxZwHV2jLK1WV4XJC+KRuTxirqWONdavWFkGGi22214ziAempS/6+8CDwbAumAQqCjNvhoXecK6qm7IgWvCkooMJORJpoqiCnFQKcl8K0TFG9j2oBVHTdjCJ7Zl8cNNHZwOA2UUlA7IEVqe0akw1OCqx/vEMqPoBaeRze2qqSbgm7/AbCaDGO6aS+MSlmBqX2uItM3SUYWCOmApodG/UaVq6JR8MbEka0OFCNnh3CxwLTVqoIiTlJq19lAY9Qu55AVUBWU4VcU2jyzpy0CahsNFbSsaJqFMU2acg7W6uppv4qsAEx7W0/3sSIlJ28TrbJd1+UHlkxZDRWgW4oF/dMtPbm1QZEzWsulvIhCx4MWZBBbob0aDyG3NuzkW7W5Sm1M7SzOuABvtW07nPk6lDhM6r9f04Hc3ECsv9SAzj9ZghmtlDH11KJ+FClYOoASHgWfc/KSMpU1pXMIlR/p16JUBRl39e8j7aCeWZd1lHltyGvearcIcnC4IODO1B1CRh0oXwCVsHoo28rT+g2YC6KOiAC0+ab27KFqgwLiDjmoh1NWxC63NgAAvDtDhoqryzRhFZIGhNqCvr2RKL9FrQxj8qkklNLVKbfK3R1oTGwymUEMVlAcfohy9nrk5s37J1AukxM38wOUJ45QBqTnQ00vANwDrwpUUZeGGLIRufkH2vByag8RIy+EjNpg/bElQ0r4tn0ML4BSDWPZ0lRhRW1cG0QUBdOeRnmC8gC9uX0ojx+yflcAic5pf336+RK10Xk2oFZlqwfsfxFYSekEqsyB9iwRuSFV3pTO0mTxFlRnTrfCA3DPh2z16uiYdEDnpo6MYmVqz01aEHl2KtFG1cgSMojBsyHE1glUca82ANUTuqbixwA6l4Vf+8oJv7Z1YBwyTCCMB5UJOTfPZaxOHJlyOANIqXYkLHei9DODO1t3CJ72wfx27ZgOrY+y+paQ2gDF2MbENDPPWJna9g1FUtDKl5ybfdLBNLO9gogqDyb7S4NuZg1BfLMdY1qNDrsCrDl4UOaojj5IE3gROW6zIoPUBMOO/2cpWI+m13g+hoy7tlJi8vbAOE2X+TER8zKFCml0n4UJBQQHSd0+Np9z+znjACjHTg3W9MSd/gx7gRa7k+AbXqid2jnkYAO8PU2/B8gAM2lTZafKodaOQeYpBICys6AJnSTy6EeUFRiTvYP0ycYA04t03L7O5msERlOupm/jmSismKJyys5C/Ycuc6q4laRtlFGHWnOotVTGyZz2W1e3si37IzFep/0wbf5K1vmehsCaqrJxYdfH5wToDmcKpdSO2nau5XdmcIRqh+CjDXBf2vBX2TKrVhKXsnwIng0aK1Rhp+5YmZMQfXOFBLutno2RYZUOPPVjsLigm5NOmlfZiKaktPkg9KQWfF2R4rye6GOMtCfNrC+HCxNKgqebtT+RrCCW74MMIpvHh6qw+XxGo6TSETmNj4dgM/sg/dDe4FlJnz9VFkRKGosBFWoNHueo2vMQnl9XYsoM4JWuwFJlRgUtamnJFsTUtNYmFYDQpO7kEagip9y6zZMQc/tRGU1UOoKY20dfD/tg85dCKQkcf5Qc2X2yGuHZgI4/bKPyW7QYKQs6H4oMLBvaSqxMZqjSKzzrtWUWPirq1AsZ4ZMnV6tHDu9K6km8kf3TM22+K/0YnG2imt43KS6XFZ1nQYuSD8qMHNR1a14lM9TSY5yqYr7WP+qUhWa4MeA0Uw47g5I71FC5CtUZwRGqHcIIcxlAN7MyrcmLHj23oaam3G8sFBgnnYoQRJagq1teBMgRXfC5IO2JH5NxqAjAtI8N3zoJ1Ys1eYu18aEmYqYyJSsS1LrV7gUPbnyQBE2H8fEmqs1V8KlpsM4sRbxkQ6hWAp4U4J095BelM/pYGFH1yJCibEBC6zCGkpKqWsM+uaIHCZRXQGRbZKkwNUvVGO6RzscQMr14mIDwUbXnyeNJT/qxMgWbnocAau1TmenPbAVV5FDDPmUOljlN2OUjVCOKXmJRix63tUHkcOYyev20T8cM0HOO++BchxwbkuJHkDrAGI2qrTlvVdCyFWPZ6tWkJmjVonCtg1JBC2VvPz3Wo/MQZamF93SuwY804RQk1UJjqle3+JXxo7MWKXV8j2vzOThcmHBn7g5hxLmqKuuQY+HRVJMhUSLQAvO6ZaL8FliZ0lRUdx7SaKFMK1CW4PkYKt2CzFKw6ZiqUACgM/7yB78J/+opOxkEJamNw3Q+mB77NplfDhcuRJ/8pewEWpWDHb0PLEook0+WKFcOQQ378PY/lwhGGNJNuz1rb+pKBEREsgF9vnR1BdAidi6oWuWVEFsnoNIhxclsHEHVXYIKdfixF9rKDBrDFqzMSdNUjMhmAABWj1AVqT2NKh2SP9bMPjKsDQYTgxRMSSDpAVWO6vB9ZCiadMBn90MFMfhwjaq2ZUqf9XEf1foKvLl9UDkRM55t0WTjyUfBWl0iQGZIxLTbFKwrOqtyWqjIcoLMmONU3CNCWOZQUaeu/up2odnORP+osI0ySMjUt0ypHS98KOGRZYR5fllqx3NGmjQloXxXmXLYOZyG6tzAEaodQvkt3aIr6GbkRdT+aBIY489TZlrPwemGVIygwgSVGduuCiJHRreRj0lP0p6mm48stXmgj8qPwX/49VDF2Iargnta40H7ZQJU3Yr3wgbPh6RxkiW1sbhHI/cxxauo8QDVYANqPITozVP2HRfgwz5knsKbv6Qm2jozEicOQfk+kPQgjScUF+BBRNWiYg0sjMHiNlQ2guxq7VKZUyW2YR7L8hEJwXW0C1OSRONeSFpAADIdUkxSWZApZ5VDhgn5XfkBvH3PpX1MB1Brx8Cn5yClhPe8l9KkHKgNpuIOBQ3rShMzLurpUO9rSr5wWn8oo7ZtoyvuURvPWJMYDy6js9Iwixo+XKUfyJIqg2FSL1RkSS29ItNi8rqlzsqMnlP4UI0IG2r715VqZRITmND+cK4t73B2YJoiO3m8w9OHK1vsFNrh3FYOzNdCC0x1G06NBzDBp4ZgTcTBGId1GA8aTk7oQaRFwo02IugCbSpikJKm/PT+qIao1QWoXuAwGhzTHjIaO1mC+SEZRxZkO8B8inZRRQE17KPaXCVTzmxEn710QK7e402yJxgPSXTtBZAjsl0AF5QFmI6gMm3QmaU2ZgUAeDGy1gCs0v5N5nu9aGiSeD41bckaPJ+MOoO4/sxyqs4aLRMAqrYVOe2/cSA3bXKl6kqTF5IY3xjWyoqI5vReVJ0FmuzTn3+e9krcN7gAAEwMSURBVMkmocyJBBr/LFlNJBTQ+ZjXOiZTfSvqSUATK0MRU/r3qm7F8ozsFFQ4ZcmUBTMaR2b32y16HBwufLizeIdgWgshQ5BDepGRRkVJqioA1ueHpwMKPeYewPUEkpJgeZ1gr6ocXFe4ZJiA6VaB8lt6SqiAEnrcmwso5kMKnyIsAFstU02NiyNUFyaUhBis2JaUGWYQw1XI5UdIiG4iZoSgWBQvICNOHZ498XT9k0SUdOiwylNUq0dpuk5XjgDyslJ5CjWqoLKUHMcHa2CtHnhBQm3z+VKm6sU9ajOaCVbPp6nTwUmUgw3aAc+HmNmnw4ET8BMPg3k+xOwSqqhjj0/JCjxKoLioheN+SAsHvSjhaR+y1UPVngfnHnlnyRK8O0NV37hHlSjGIQbHbbQLRhtksBkktiXP9KSi+R8AEaPhKj0P5xD5iM7DxhSebPW091zDW0tJ7UnlUaXakGBA6xt5Q+PobBEcnhm4Kb9zA3en3SHs6rLhsEwePF4tROceOT77MVUEqtxOHAHQhn+hvfiqoEUXbT1hBRHolbDxsCpt24IXYzITrGqTT+uyDDgydSGDcWtvoIQPGXchBicgjz6k9U703srRwHo4QVaaTPGGgab2dwrj2nFfV41UWVDliGuRtfnfuPMLQUHcfkD2CvmYFgWMaXLvN4YuGrYhADDukwmtrGhKVUpAaOdy4YGFLbD5S2sS0zD8xNwlEHP7rYDdfL6ljnNi2RZYPiRTzagNJQJIvwWZzFBLUAvQ+eA4jFmuEYSzorYqAWArVjDtUIOqghiukr2B0U7phAMy7I2o/VnldQVZJyVIP66raAYN2xQXAeXwTMJoqHbyz+Hpw53RO4QKp6B8Ri7lsoKK4/oGoS+YshWQF1U2oNae8GyLwQpaGQfykRUNAyBX6rKgqT/bJshsW0XGXXBZgZUFES79usZgtPYMcrhgwQWgPLB8DLFxGOWJIwBAUTDaaRwAVaUA8i5L2vr3FcTcPrAgpopm3AE35pHCBwcg+2uUr2dMLPMUojdPFao8hbf3ErIcaPWo+iK0d9XaIcrom3sOkZzKVF/0522wSlXZdg9qPITa/yLw9UNQmys06ReRWBxSwsuP2mPl2RCqOwPpt1D5LfDRJnD8IXJbj6YgozZVl4LxZJahsUPgwrbY+NaJeqHBOekTs6EWi2f1MAfnQFnqoZFWTRAFhRaL9cO0UNFecJAVTBi5nJqldqgIICNOovyqqBdSAJE0EVhDVDck4uCwO+EI1Q5BGV96msqkxhsRrLlgozZjZLIEG61DiqBu+ZWZJVcoRlChTpqXJbUN8xGYF0KGAeCHQHGaHTEj4toPyF2wdwmM/mf9MPKD95PXFEDkvczBvWnwVhsSoLYdF+C9eVSry5TrFyZEtNaO0fbtHhAmRMi3NkinpKF0JUnlKTnzJ9OofKqWWrIuS7BiDDlYp5ai0pl4QUwTb5JicGSWUoh33IHq7YfyI1SdBbBjD5A3lTag5ekmESE/pHOnKoC4QzvEBZl/6ow+NdwAtBmpTPbUxrXCp6GNMoP0iTCKjaO2KgUuIMM2VDgFDpBIPpkh0bmu6FKVKSZXc93KVCKgBQ1QtxS3TkLqIHQDGU5NZHiy0kRIUYWqmetpqswODs8knA/VuYE7u88GjIeMEQybCpGe2AP3tJVCQJUsPRkFM11kROrG5bzZJpBVLcIFdIhqWbdHuLAJ9wDI/dmYh7pRjQsbeljBBh/rdh3jAlKa9rJHMURaVC7TIbjnQ1UV5fDpz1W1taHbeT5NC/bX9OMFRb0UBZiQULJClafwFi6H1HooBW1sWeVgG8egOnP0WI8qLTztQ1mLAYGq5YFtnoQcbEB4PqC6ukrjk9modmUHSHdItgRk+Knijg53JlJTdRbs+SWKDAogwbfRQOlQZmM7wEqaujNtdRXEWs9UgA1X66m/IqWpRKE1UbKkFqIXaQ8rUCXMtO544/xTqiZrRlguURMo83cz3lOA00s5PLvYIaGCI1RnBHeG7xBmxJqiKXR4aqEz/apSh8ZKK0y3qHSZqTGRx0A3Lvs77gFeSK0GfXNUXggELXJaV5JWx5ZseROaKee2fGGDyRKifwzld/+J7DO6M+BJh4hVnICFLaDMNEkiDybmB9oZnQTqSgSADk4m3ZRHU4NlTtN77Wkbosw7e2iqrixQrS2TvipKINrTZGmgyPxTba4S6Vi8Enz9MJBM12a13ANTqtZ3DQcUGbPnMqr6dOYoW2+0jqo9h2pqznpWqbBN+Xiy0aaL2jbepuwswOsvQ/mhJXuszGyIsRIBGGNQsiRn962TkF5EIv7Nk/Q3mb8SkNvahflQJxNwittpkCjFg3pRxDiRStumZ/WkrTnvlNLtwbAmWO48dHC4KOAI1dlC86LKdbSMntADMFktMqvzfAgZJNZBGYyDVRmZLYIIkdSaF9J3NES/XmTdmW2Iq1sB7xoY3zK2QYaeLIjAg4jIkyCBtyoyqPFQ63VMZt8YKhuDxQmRJSUhB+tkV5B0oNItsljwAi0WD8gLSgjK3NMVFTUeAF4Axjn5L2kTywqwbTCejwHOqX3NPSITXkBCbSGgOCc9l6yDwlXYJnJYFZrEkHcbz7ZoSpBzQPFay8S4rgqRFUk5vVSTn5yMM5mxHeEeoACeDqDYULftfFRTs+DCB4br9QQs41AnD5PfVdwFtnTFrrtgJxUVuCWKAC2eWJHSccqS3OSbCyVTNTZCfbhz0uHcQCpFC5sdPN7h6cOd7TuFHpk2QbOsKsjwLx/R6GnjpqBEUOd5KQmWDsD1alZ5HmBCVfXFmv4nXYc1BQ1KakvYQFWxbZKI2n1uuu8Ch5IQg+MoV46At6eJTMUJ5HBA1cowhhr2IVPtRi4lTeJNTVNbLWxRu0vn9KEsoNIh5HBAk3el1k7JyrYRVThliQwLtPdTNrQO/XywSvqqVptikNItKxRnVanb2iVU1Ea172qIjaNUXS0boj8dQ6PsIoJBeSFpwHTLW+nQYttCz0dWF8jKvNYmMo4qmQHX3lqsGEOFU6iiHrm8Fxm4vwmeDcmCpD0DPlq3FeAyT6FOHgWLNqB0C5WFAyDQNhDGAFSTIjbepKk/ACqIUenp3Poc5xPH6VzPHc4VlNqhhsoRqjPCOb3rlmWJ//Sf/hOuuOIKxHGM5zznOfjgBz9Y60NOgy9+8YtgjJ3y7/vf//7EdhsbG7j11luxuLiIKIrwwhe+EJ///Oft7z/wgQ+c8hwLCwvbX+5JwYpx7TcF1BdYzrW7dS1Obf7eiNRRpJb8mFxAEnDoSaKqtO7WrExhEu2ZaQsao0/zOHMiOEJ1QYMVY5rs681D9ObB29OQwz7kqE9i8vEQMh1CZSlURhYKfGpat/p0haQsIMe0DTzfkinm65BuLwCLE4g9C2Cz+yeIiiFRyg/tMIUc9qGKwhp/oj1jK0ZKeHohMa5bdDOXo0pmUHUXtJaJ0/MZsqKtPcB1FiXj1jvKVIZYkdrPMitSirMxZFAL4lk6oHa7F9LCgzHKHZQVVfiqovaHAwAvhNSu8izQuYZ7FsGTNgnPsyEZd1YNCwUTKxPE5DNltI7mPNStepObqbQ43sHhXMCI0nfyz+Hp45xWqH77t38bv//7v49Pf/rTuPrqq/HVr34V//bf/lt0u128853vfMLH3nfffeh0Ovb7ubk5+3We5/iJn/gJzM/P48///M+xf/9+HDp0CO12e+I5rr76anzhC1+w3wsxaYT4lLGNvMhWz+o6ToEXUCgsoP2quM0QU36L2hlWH5JPRmJUJXgxhtTeVGaCSUHY1T5NDLqL+YUOVuaQGydIZM45EMZUaZLa20xWtTt6RZ8DE0UjtzbA4wSMS93m05YesqIKU0xTZypLUW2uwpvxKR+yv0IvHrVpEtBYdYDaz8aiQVUVxPyltK0ON+ZlBqweAZMSPE5QzV9JgeHap615LijhU7Yg98CLsa0EmQBiADX5MT9TkrROsoS3cZhyBb2QWnhmKKPMSNRuzpn2DNTaMTv9qKqcqsFBCwhiEttHbYrBER5kZ6F2hGdctykDHQbNIafmSMhuzveJNr+of+bg4HBR4pwSqnvuuQdveMMb8LrXvQ4AcPnll+NP//RP8dWvfvVJHzs/P4/p6enT/u4P//APsba2hrvvvhu+T5qQyy677JTtPM87o6pUE6wY0xSVCGngp8wggwS8zMEyLWA1TtJm6iek6STb2pCVFvKSh47JHDM3EOVF9M83BogSEJi8iHP6XzrvqQsePBtAbB5Fsb5CI//YAG9WbSVN4zVBE4CU86jyFGrPIjBYRblyBCyMSGsF0OSfR1WsKku1Bi8EG/dRnjgCFrXA4w5YmaI6fL+dLMT8FeD7rwKGG5CDdcipWRsCLoarKI8/ZomMiBMdhzSkEOOwDejPNRiHigOqtjIO6QW2omVhpl5NpUr/X3UWITaPgHEPfLiGamqWjtcPwdOBDiDWbTgAyLbA9izS+WRSDHxtoOvVvm1irDP5wjZk3LWvrbyQyJQZLDE+VWY3jVu800k5nGeQEmA7Ckc+iztzEeGc3nn/xb/4F/ibv/kb3H///QCAb3zjG/jSl76Ef/Wv/tWTPvalL30pFhcX8eM//uP4u7/7u4nf/Z//839w3XXX4dZbb8XevXtx4MABfOhDH0JVTd6EHnjgASwtLeGKK67AjTfeiIcffvhpHwMrM6DMIaoMItuq/aR4PUJtM/tQt+psi85sb3RQExNDEtD7rMKEbgZ+SBf47duaVgM/wyqbw3kBVmYQm8cgh326WZu2XplPbKe0tYCJnWFBRAMMnNtKVrW+Qi7gZiowTiiaRVYUUxMn8PZeStVRKSkUuSxokTBYhRxs0ASgpHaXDKYgp5cgujMkmC8yWjD44YSNB9ODFHz1MbDN4+D50LasWZVrjzbd4msel7Z44KN1+rd1oiZVuspVdRb1H4rpQHI9TRi1UU3N2VYbqwqwbEv7xEXWyZxV5O02MQ3rUcYgZEUVLD8mPyvhWcd1VpVULQPqjExHphzOU5jomZ38c3j6OKdXg1/7tV/D5uYmXvCCF0AIgaqqcPvtt+MXfuEXHvcxi4uL+MQnPoFrr70WWZbhj//4j/HjP/7j+OIXv4gf/dEfBQA8/PDD+Nu//Vu8+c1vxuc//3k88MADuPXWW1GWJd73vvcBAF7+8pfjj/7oj3DVVVfh+PHj+P/+v/8Pr3zlK/Gd73wHMzMzp7xulmXIssx+3+/36QsjWK2Kie1VkJArsyyhUKfbW22Idmq2mXsmYNYEKAsPKmxDhbCkrPai0t42xn+HMXth38lkh8O5BZMlianXjlHkCmi6z0TEQFbU3pNVTbSLAiykKBmlNT/ezALkxnGo8ZDMPQHwKCHtVNKzBN7EuiAdgHFOmX3pEOWxR8nwU1YQM4tQ3QUoXTVSwkfVuwSKcVvZkUEMMbNIBE5WkIM18DCxx6X8mEw88yFZG3Bh9VoqaE0uKDTBMlOFFPvStpN+rMpRzD6nbgMqCRRprc+Cbo2PN0lozjjAGGQwBfhSi9dTMGOEy3kd+wQ6j5XwdWu+oY00nnLN2BhXCXZwcGjgnBKq//W//hf+5E/+BP/zf/5PXH311fjnf/5n/Mf/+B+xtLSEm2+++bSPef7zn4/nP//59vvrrrsOhw4dwkc+8hFLqKSUmJ+fxyc+8QkIIXDttdfi6NGj+J3f+R1LqH7yJ3/SPsc111yD6667DldeeSU+/elP47bbbjvldT/84Q/jt37rt075ufKCumJkyJCuHJmoCZR5bW3AOJikG4Hc5hnVfKx9bpP5V+WAbudV3IeQBWyMBWCjNxwuUCgJsXkUrL8CqXP6VDoEvABcCKuZAqg6xTz6nydtMM+H7K+Bd6kFZgg3785ApSNU6yfAkzZ4lIC3tF+UriIVhx+qpwP3LEJkQ5TLB/Vr+JQJmI8glx+BmCFLgWpqDkyR0Ls88iDtU5ETIctTmkA8eQjQcTG0M3VVhxVja6Ngqj58tE7+T8KrfdxMukBVAkVWf9ZNYLIOIacf8lpzaFqG2sQUVaHbgAIqTIATj4HNRWBpSkQNsG7tAHS7Mm24rE+dGjLuyJTDeYzmGuVMH+/w9HFOrwrvec978Ou//uu48cYbcc011+Cmm27Cr/7qr+LDH/7w03qeV7ziFXjggQfs94uLi7jqqqsmROYvfOELsby8jDzPT/cUSJIE11xzzcTzNPHe974Xm5ub9t+hQ4cAYHKlqh3MFePYkkLfDPTrNVbUxgyUWoMN+wPg9K0/3bYwryekNv80mX/bL/YOFxxYmYFvnYQa6sqnpM8G49zGw7BQk484sV/TNoJ0Ug1Xbh4n5DVlSBEXNCm4eRJqPIDyImrd+QF5XHX2EMkyQcq6JSjHQ6iN45DDPspjj1JVS3+GqxOHyfdK759MhxRdMx6CCWErOYpxqlBlW9QG3Dg2ccXm482JO4AMiYQpL7Ih4jzfAi/GtDAxjz3dXYML2rdWD3KwQXE2xnTUTN/N7Jtwa1fCr88/EWgfOd2a15op26Jn3Bl1Opz3cOHI5wbn9C48Go1ogqkBIRqxGk8RX//617G4uGi//5Ef+RE8+OCDE89z//33Y3FxEUFw+othlmX43ve+N/E8TYRhiE6nM/GPdjiw1SgVd+0FPREKSngkEtdGn5YAlWRIiCLVkR5FrbfSolpKsw9rvYYOVLUErVmZ0lOBDhcmJBhFEQFEQvKUomM8v/ZHCiJq24Wk9+FRAub54LoliLhT3/y5R9NuALXXpITKUpTHD5Htwpg0Taq3BG/fc8GXrrRibDnsk/WCH2i7hj1EjrRflZkQBEDZgN0Z8r3yA9uaZHFCrUg/hGxN02HlQzudiKQHGSS16a2u7PJsYG1GZDhFOimdHai4B5YO6jacMd/UbTuAbEdYNqCBjjIFm57XflfaJFVJa0diCJIxJLVaR0khyRD+ZKQTYD2zHBwcHE6Hc0qoXv/61+P222/HHXfcgUcffRR/+Zd/iY9+9KP42Z/9WbvNe9/7Xvybf/Nv7Pcf+9jH8Fd/9Vd44IEH8J3vfAfvfe978dnPfhZvf/vb7Tb//t//e6yuruKd73wn7r//ftxxxx340Ic+hFtvvdVu8+53vxt///d/j0ceeQRf/vKX8a//9b9Gv99/3Fbj46JxcQa2OSM3ieH23+u2H63e9Ui58Oskeh1hcUpkDVCvto3Q3ZGpCxqMATzV4/qyoqrPiCpVzKPqCfMC8PY0kZyoJjW8O0OEwpCDcZ/MNAGqMA3WAcDGyzCP7A8oO4/0SUqbzirGKTxZSoi5fSR0DxPyqwpjsKgFOTVrbT4gJVXBtDje7C/zQyJVRpuk94/lY6A9Q2SJ18MaMmxD+i2qmg1XKYqm1Dl7qg4dBhdEuqrSCthZqcPI9XMZ0sTzMZmPBi3SHxqbEWh9Vv8EfV3lRNyMPgogghW0Tq36On2iwwUC50N1bnBORTcf//jH8Zu/+Zt429vehpWVFSwtLeFXfuVXrM4JAI4dO4aDBw/a7/M8x7vf/W4cOXIEcRzj6quvxh133DExGXjJJZfgzjvvxK/+6q/ixS9+Mfbt24d3vvOd+LVf+zW7zeHDh/ELv/ALOHnyJObm5vCKV7wC//RP/3Rae4UngtKraJicPU10TGuvNtyUExN+jOvkeS4A5Wn/KH1TKMf1JJSJFDE3i9OQKNfuu4ChJMJj34MabaIak5M5AGptcWFbctXmKnlStdpk6DkewpvfB5nMgPk03Wfy9vjaIcjBBqrNVTAd/8Jb5M/E9izq4GAOPlihCpKpfHKPpvjCBPB8VL52J487EL0ccvZyemyQUNUI1OYT3RlUm6sQ3RmaSAxiIIhRxb2aaK0fgSxyyH1LdHyaADJZ1oQrHejcSm/CMoFakRKy1QMfrcNLj0J5Iaruop0AhK7cKhGAlQURQbNYadovcAE27kO1Z+xErvKj2pW9zElnBYBnW7b9COE7jaLDBYOdkiJHqM4MTLn5yDNCv99Ht9vFyuHHMO1L8o8KyTjUEByebtaRHI2WAipqQchWr76ZmYs+UFezTHVqm0fPxO+bcMTqggKrcvjL30N54ghFwxS1kauS0uqYAJAeyPNJ95R0UB5+EN7SFUDSQ9Vd1DYDJyHb8+DjTcjNk+SonmndkayojTe3DyyIaRJvapoqN4wRQfJjmjzVAxIsH0FGnbpCaiZZGQdP+ygf+gZVzTShYkEEnnRQtfdS+69B/sX6IaiygJx7jvWvUkGLXicb2s++beOZalIxosw87lGlrEipmjfcgNxziW1zsnRAmYNlbr3h2Gmm9FSQgB3+LuRlL6ZfTGggc2q5M04teW1K6lzPHc4G+v0+9i4sYHNzc8KU+my/RrfbxfPf9mcQYevJH/A4qLIR7vtvNz6j+7ob4ZZcOwQrxjTlZ9Lom4JzHRprblr25zpwdmIVritZpwjMZQUwZR9vMJFw73BBQmwcRnniiDXdtJN1fgAUObmcywpyfYXy9vxJkbkqcjAA3tpBmlDzQiICqFt84AJMCHhLl6PaXCVbgyAGC2MiSCbvD4AabID1FgCvBNta0x5WWiPox+AbR8kQtL2X9EpaGG/9qgAoISDkUVSdBYhsC7LVg2IcVXfJ5uhZixETdQNMCsT1/8zk+TFufd3M0Ic9G8wCQ0/5KeGBlVxXjI3VAnlPoSwscePpwC5o7PnmRVRZlqUeCkBtUeLgcAHBhSOfGzhCtUOIrZNgwSykF06SKcCKyo3mpHZgruM0gPomAqWgAOudY80SlQRYQ0dl2hwOFzTUsYeghv1a3xSRTkhlY7CkA1XmRLa05Qafmgab3gtkW/AvvYoqMjkJtjHcgEqmodaOoeqvQWVj8O4MeKtN7cLBBsTMEpl/igCqMw955D7Iww/VDue9eSJmJw9RO280ADZXSbO1/0VE5GSlNU6Fzg4MyM5BSqiysNmCAlRl45yjintkShu1ibCkA8hkz7Y/hj539MSgitpQPLAECgBpp7gAz8dkTtrwdZNx1w5sSD8G0+JxVozrirEcg6U55Nwl9DfTkTLMnEvNhQ0vyeHdweEChGv5nRu4EscOoYQ2HtzWljOicaN7Mv/bEW3GJh9jSBRwSjXKtv1MO8iRqQsePK+rUtBCcdvmihPwQMfFaOsEAGC+TwHaZUHVFUlEAuM+bVtScDE4p+do92xEjRwNoEab1ncJsqyrWCDyo8qCIlzKAry9hyYI6w2gpKTWow7sZp1ZsGgKMq0n+NjMPiKDeUqC+MEqVaSk1L5sciJMHGVup+d4tgWeDsA2jkH0V8h/yphsgiJi+NZJIlHtSfNdawQKUAXYnC+m1W4sFrRuylaiTlPlZUpCRt0zf3MdHM4xlNqhKN1VqM4I7s68Q8hkFspvTWqbjLi8GQhr9CQAtVoMgVIgd+bTjWM3dVXad8o5NO8OsPvvRrW6TG2+gDybWNKx1gjM81ENNsCEAG+16fdxm7RW4yEYjtHzcIFqfQWqKMDzFGrYp8pU0gGiNniYkOHmcECu62UK6beoVbj3UpTHHqUdKnKoPEV59GGqarV6YHEXvKnrK3MiT4fvA291wMII1bCvQ5obC4W4AygFpt3cxdYJVMkMVBDbXD07qFFm1mpERh2I4Sq9XjqAqHLIMKnDk0UAJiVVcaWsbReM+JwLK1BnJoC8yokkmnOmzCiYuTEsAmAiiUCaWBwHBweHpwFHqHYIm50nKwCVvTlMaDO2o6nL4IBSzSkk/XPGAVVNGn863dSuQHDoXuQnjhCZihKgzMGnyBKB+aG2MGDwFi61vk1KeJCMk1ElyJmc7VkkXRAXAApbcZKDDcjBBniyQSRqzyJUZwHSuOkrCVYWUOkQvLMHcmtD+07NETma3Q+UKbXW/BAymCL9U9ID1k/QRGE6BLS1A72opBZgVUClW+TevvA8KKUNPYsRlCwhWz1Uvf1kUPvQ/4O87MX6mMjIlLIqfSJR+RhMSat3klGbSGI6AKtyqmABdeXWTufp6p/wiaglM+CDFdrWCydb5lrjyLQXlmvzOewGqB2ac7qW35nBEaqzAFbl5PZc5ZRYH04B4jQC8+2wq382uVo2v2u2/ozPkMMFDVaM64m4do+y+TyfJvLGM1DDPom9kx5Ue5aqK1VhJ0VVmBDhMa28uAseRGDdGRKHVxW1BrMUctgHB8DGfbCmr5K2ImBJD1yWRKiCCCxuE8HLtqAGG5AA2J5FcNkHK8Zk6WCMeMvCBgpDVoDvg0+REztkRQuNaUZBw8KvJ/tsZl4OecUPThh1KsYpc0+342RMbTcVJnW7rkitN5UlUsKnwRBZ1okCelJQBlPg+RaUH9NrRm3SnYlgcjAEIBNeB4ddgJ0GHLuW35nB3aF3CPKP6jQE5p4Wodd2BxPEqhFobP/frqXabtT5RNUuhwsK3tHvoNxcJQd0E3Ss/6k8JRfz9RyiR5Wi6uRRgHOa+JtepHZWRT5LPB0Afgu8PU2EocjBOYfozUNurqLaXCXX9fEQ6Ejw1YOQs5dDjNYpgoZzsKlp2jHOIftr1mqBhWQVwAHw6TmocAoYbFizWhZEEL056z/F4jZkf43c02f3U/wLI+d/qafnIKj9Z7L6yj2XgZvcvqoAvBDqwa9A7LsK1dRsTd4miGBjFFxPC7KqoDagR5WmmjT54OkmlAgg4x64dlyHL+v2udZ1SR666q+Dg8OO4AjVDsHzEbUVgqS2SjhNa27Czfx04nNLtLa9ANt2U3G4YOFtHEa1egwqTyFmFqHyFFV/lSJkWm0iUyVFFMl0CKHjXpricaYk5GANTOhAZI/iXZTfAvNDcG1qybkHmdPEncpTiK2TkFkKVqaQcRfy2MNUxeqvkf+Vjryx0GRGpkNwzAGDk+TKDhK4syCCijvgUpKmKyjAu7NAmUGGCST3SECvPZ1YSUSQ5eQRBY9sERTj4OVQV5/GUM/7YUjz+qYi2xCUUyhyQF5uQH1eNCOsmkHHpqrV6qHSvlfUWmxM2sqqFus7OOwCuCm/cwNHqHYIVqZkCOgF5OWzTew6GWnRqE4Bp5IkxurqlN7Otfl2B3g+BNtcpoy7IKKg4sEGtdiMPYZufxl3dGRDqjDJioTeWkNVbW0AowEgK3jtachoL/hoHSqiCBdwgWpqFh4AuX6cKlWaqHn5GFW7TVWgQ98n408AvNUG8wPapyCCHKxTlcrzUTzyHTIYHWxQrMvUNHhnDyq/BTU/Q9WgtUOQ3SWa4JMlVNyF8mOIjcNQfovabowDQgCS0X4WKU07Kkntci8i6xBDhsxQh5TanLSsp/YYrw1zm5ooTb5YkdWGuZwTqQrI+d26n+vz0Bl3Ouw2SKmAHZAiF458ZnBljx1CmouxIVJm0gkgUqTUZAtve1Wq+b/9OT3GkandAz5chdxcBRM0zVfplpyxRBC9+cYAAoeYWUK1egzV5irZF3i+za+DlEBJxEy2ehDDVVTLj0A++k2w5Qcg+suAUpBBDD49B9Gbh9j/fEBWqFaPAgBk1IbozdmcPpQFVGcObN/zbCWKd/bU4ctSZ+S1OmBxgurkUbAj3wcAW/URm0chgwQymYHyIrB8COVF4KkWr2sPNhl1SMNlo2WSSULUhKRJQD7eBE8HpFVUUmsWS/s9EbKQJgg1lCBjTxlMkd1C0azAUeCzcpUpBweHswR3x94phG+FsKeEGDeJFbZVqgwmvlb147jv2ny7CHzrJCqQ9kjJiqbpTJuKCyhZkRhdSqgsRXnkQdIyeT7YnkUo7tG028YJwPPhzSyQL5Rx6OcCqswh+2tEtsKEyAv3gKhN03ZRQpOFBYmy4dFkn+yvgU/PQYqAJuPCjEKY23sggxgCQLm6TFW1UR9e0iatVHuaKmNeBCYrcl1vtuqgyVZT4FqRuzsbp+DZEDLukpUCMmpnGsuCbSa59jzRVSsZd6mi1zx/qsKGi5sJP5amVDHrn4TwfGCrQjl7xTPzJjs4nCdQsrIedGf6eIenD0eodgilA2Qp5FjWFakmuTIC9KYNQhM2goY5n6ldCD5cpbw+KUkrtdknI88G5GCDzDijhMw5AUt4wAWJrftrkKMBxNw+qLhTf1Y8H3zpSqiTR4jo9PZCMk5O/dCO4WUG7HsBeLYFNlpH1VkAC2Ibe5Pf9zV4+64E37NIzzc9Bxm1qeqz+FxqH6ZkNFqeOGId0dnWGjC1B2jPQIoAYnMZ5czl8NYem7Q60Hl9TJZAmUIxjrKzYE07pdlH/T3Lx/V5A+jqVkj6KVmS5kmYicESyo9q8mVa8JJ+DlmCT00DBem7WD6kqpg7zxx2KRyhOjdwhOpsgLGJ4FjTTrDkiXHQLeOJnoO7fL5dCrHyIMrxELzdsz9jnm/d0eWwD29+f/0AndVncv2U8MCKDKrMIWaICEmdE2lawywfg3cozkXq6pS3eZRIiPAgWz2wIoMMp8AHJ6GmKfiXd2fr15TajkBbdCgRgA/XqN0YRkCeUiVMVlSd6uwhewIRQHoh+NZJ2/7DcB1cKcjWtNYtJXWmnpSAH9CErHlt4UF5AfjWCcipObI0KHMiSRJQIMsJ5QWTuZnbzxuuo2OKlETxfkx5m4xT7I6JfgJOb6br4ODgcIZwhGqHUFygEiEEsrqVwsQkMXq8Fl/jZ64ytTsRHPsOyvUVskkAqG2WDqm64/ng7Tn4l79Q65uWwWcWwLszkJur4NNzqNaWwbmAGg+JgHFBLuZVbjMi+XANcjiAWriSXlRrjFQ2guqvAQC89gBVdwmK+VDTCzZ6pVo9Si7qYUT+VYxD+jHEeB0s7UNtrFCkzPyl8IIIcjwEQwusOw+VDiCn5ug1q4KsEtaWwWafA7RnSBheZpBRm4xBRUBkSledqCW3CXBD+FKokLZVfgzlR1BKgmmDTxkkFIBsQpW5R6TIj+okAk3WlE+kio/WKZpHVmCMo9IVP6dPdNjNUFLusEL1JAUAh9PCXVXOAkQxAhiHt/ooyrnn1pyJiUldVNN3akKo7ipTuxUq3aL2WDqEak9TXl6UQEpJ02dBBGiHb3HJdC2untkHxRiYrnbaSlIyPZlbpx+rypwMZvMxoGNXSh1szGb3TVwgZatHhGu0SZYK7Wn93D2yXBhv0uRekUHlKflceREgN8jQc+/lkH4LotJ2C7qCJgMa0DAGnXywCsRdsKqEjLrg2WBiSENxz04FArrlpyQgS7BsYImTEj5po/wISAcTE3vK5GPKiv4uVQGlq20so0lIxJ2GIWkOuGgZh10OVVVkGryDxzs8fThCtUOoRoxMsfDCegSe8ZpAyUpXrfSYdqNd4ab5di/4eB3V5ipkfxW8M0OBx0UOmadkUxAnRLb6J2n6L4ho8s8LwKbniVjNX0rVFyWhFp9HrS9NZOTyIxBz1CpkOsiYQoHJGwqyIruDqgIYg1g/hKp3CRSo7aVmL4cXU7C3ysfUZiwyqgJxD9WJh6mt15kDH2+i2lwlEgj63JfdJfB8CJ7mkMEUVNiGet4ryMg2TCBnLiMPqrwEvIiE5DFIS1aMtadUNHEe0LHR/ywf0bnhUXvTZGMqP7LESwUtCl+2f/R6UtLsB/2BNIHyI52L6c45h90LpXaooVKOUJ0J3FVlh2CyBB+TWSKY0OL0bcJ0879SdNOqippcubHtXQsxXCXtlHYjrzYp+JfFic7CG1ALzfOpEpR0yKMqaUN5Pk3BbZwg8pSnELNLkGEdj6JkZXPz6AUD+jxFbaAjwQ59D9WJI2SiyQVY1ILaQ15WSviAF6AMYiJRUQ4ZJBDjdWBwkkxGOQcTwlaBjEC+0ia2fLROFSHGoTptIj3FiLL5uNDRMV0iSRP5eYBseEixkgKMmQ5uVl4IngNQitqasjE52NQl6gw+gPRQZNMQUPWOC/K6asTeQBuNOu2Ug4PDMwFHqM4CVNRuWCI0fKe2t/iUBFRtpaC4azvsZshgCiyMUK2fIIsELwDjxuKgQLW+MjHAIMdDcGijSSmhigxyNKAg5DCC0qJqPlyryZnnU+AvaFqP5SMyruRe7bIuKygAPIzBqgJiuEptubgLFSZUxSkEeDEGG/chM/JrYkFE+7x5HHLuOUDUIYLjBRCDE8C4D/ghqpnLyaag4RcFJSHnrwIrtT2CH4On6ySS11UnWDIUUKSMafcVmZ3ko2inbR5Vzf/t1ySmR1XaNiRNQJoFS0mkjAvX7nPY9XBTfucGjlDtFEpNtP1IK4XGjdKv7RTsxdyEIrsL+66GkmBeADlYh5hZJGJT5jYc2UzyyWEfYmaRKlPpCMoPwbMhytVjVCUKqZ3HigwQkqpHgJ64022tzZMkwGacjD6TGbDpeYiYnNhVkUN1F4joDNZ0/I2ELFNq/3kheD5C1V0Cl1Q1Ur0lYHASKksh+mSHgHwEsblMk38AVBCTMH7rJFkyZFuk10qmAQDe+mGo8QBs7/PA+ivgQYwqmaHpPkGxMKzMKJjYI1LEjt4H7L3CuqszbWiqRGBzAFk6oH02+XyNoQ4lPC1Ybwx66KqUa687XAxwhOrcwF1ddoqm2Nz+zOin+ORqmonJ6pXDrgZPByiHfTAvIDG0F5Ao3fNrrZ2sSD8lBHicgM0skYdUNtImn2Pw7gwYF5Drx8HiBMwPwOPEBvsqxmv38qgFFsZWP8R11QdJD9JolMoCqiyIXKweAZ/eiypq20gW1V0g7VORgfkhVDYmPykAYrCi/aAiMAAy6jZMN6uJ/60vFBdkXSArTYyM6eaAPKMYByszsHwI2epB7X+RnZil/c0onBmobRO8kHyocmk94FSQ0CShktTq217ZcgsYBweHZxDuCnM2sJ1MmUy+pjEhUN9wgNPbJzjsHihJwmo/QHZyDbw7g2L5EPzFy6m9t7VhA5H51DRVkDIyvGRFRlWsqAXe7hEJa09DjgYolw9Su88LqdLjxyTO7sxDzO0HC2PIwToRDD9G1eqhau+FjLukb6pysKRDVavVI2QiOu7rCJiY2mXGq0kI8o/qzEKGbaoO6TBh5YWAJmEsH9Exez75Pnk+qvZeiLWDdD7ISk8N5kBVUH7fw/dSbMyJQ2CDk0S+jN0D45bAWY8pbRMBgEgY5/YYAYCVuXVKV17opmgdLmqYCtVO/j0TePTRR/FLv/RLuOKKKxDHMa688kq8//3vR57nE9sdPHgQr3/965EkCWZnZ/GOd7zjlG2+9a1v4frrr0ccx9i3bx8++MEPQp3jQoWrUJ0tyApMSZTBFERFY+sTZMoQLdOW8NyffreCj9chhqtUeXnBK9Fdeg7UeABvzxzyh78D0ZurdVF5SqHFV76Eqi85VYN4lNCEXRBDHn2IqjCeDx61IPYsWKKh/AgsG0K2WlB+CLV5kgKVH/s2RHsacu/zqPqzfgRy2KcpwcUrgfUVIlONahkrMiJdZUHO7JrUyFaLBN1VSSStPQeIAGXUIYJWZrS934KaSsCHqxP+T/B0pakzCzXuQ3EPxeEHoWQFsf8q8pkarlLrUpYQ2kldJjNg2dAK4I27ufGcAqevxXgdVdwjYqfPMzfs4XAx43z1ofr+978PKSX+4A/+AM997nPx7W9/G295y1swHA7xkY98BABQVRVe97rXYW5uDl/60pewurqKm2++GUopfPzjHwcA9Pt9/MRP/ARuuOEGfOUrX8H999+PW265BUmS4F3vetczsu9PBe6uvlMoVU86cQ8cj8OQG+J0Z+K5O8GqHKwYk2BbVqiSGf0LDlUUCF/0chQPfwsyHcFbugKMC/B2D96VL4GMOgCgc/FK8KRN1aEtMuZUZWGn+ZSuTjFZkpu5GlD1RgcYMy+AKnOr42MlxcTQrghyUZ9ZsHE3iDuAkkQCGx5R9IWsK67CQ9Wes07jrEypoqRd1VkxIruE9l54Jx6EAvnZMA/UwmxRJY5vHEX4w6+h/R2sInvwmwheegOk36LnC+o8PxXEpJfytT1ClQNhm6pRURs8Xae/czO+yZEpB4fzEq997Wvx2te+1n7/nOc8B/fddx9+7/d+zxKqO++8E9/97ndx6NAhLC0tAQB+93d/F7fccgtuv/12dDodfOYzn0GapvjUpz6FMAxx4MAB3H///fjoRz+K2267DazZNXoW4e7qO4XRsOiLOat0WZLXvlMTcO2HXQs+3oTYOAoM1yl6ZUStt7KzAMxfBhl34S1dATGzAG/+ErAggvdD/woy7oKnffD1wxBbJ2hSb2oW6thDqFaP2ZUmCyISuYdTNmIFAGQQE6EPWmBJx9obqCIHO/xdqJNHiFgtXgk2s49+F3eAvZejmn8uquklS6BUkUEVFFTMqpxaeGUGsbkMb/0wtda0UNyI4FUQg4/WwfMxWDYEqhzl7HOgunvJYDOIgaQHCAHWmYUaD7W1AgfzfHh7L7VVJzk1a6NvWKWnAEVgcy6Vp13RtX5Mtnp2GxW2HZlycAAgZbXjfwBVgpr/siw76/u6ubmJPXv22O/vueceHDhwwJIpAHjNa16DLMvwta99zW5z/fXXIwzDiW2OHj2KRx999Kzv41OFu7PvFKb18kREyQnQLwooL6C2FRfkNJwN7WeClTlVX4qcnNKjNrBwJRHvx75J03HDPhGak4fpCaWkylJZ2BBjnrQB4ZMmyQuozWeCfrWWyuiY5GgAmaeQIx29omQjW68NGXW1GJxc18s9l0JO64tYmTWOK7TicPqBrJ8j7lLLrtAO7YyDlTm1IZMZMi/Nx2TGWRZQGyuUOagkICXK1WXw+UuB44+i+uYX6fm3n0vGHBegvxfndpKPZUMSomvtl4ODw9nTUF1yySXodrv234c//OGzup8PPfQQPv7xj+Otb32r/dny8jL27t07sV2v10MQBFheXn7cbcz3ZptzAXcF2ilOl9OnVMMxndU3BCdE39VQfkzEI+6QNiqZpliWMoNaO0btvhHl5ikvopaeiYlZXaZpOC0M51snabrPD0jMzTnFvpjX8kLyXJKSQoXHm8DKY+BbJ6niNX8ZAEC0p0mPFSd13l0+hBisQJx8BHzjKHjat6JwMVwF80PI9jy15IBJgmM+17oSy9KBFbMDoErVaEMfwwlU81eCBTEZdxZjygvUVgsynAKefx0w7kNe8VKIl7yKiBIwQZAU94hE6uxCaDd4AOSlZX7mCJWDw1nFoUOHsLm5af+9973vPe12H/jAB8AYe8J/X/3qVycec/ToUbz2ta/Fz//8z+OXf/mXJ353upadUmri59u3MYL0c9XuA5yGasdgOkPslNWxcUwHJlp/zgdnF0NWJI4uM6grfhCqGIOnA/DxJrIjDyF47ovJPoELKD8EqzRBuORqeKN1KOFDCg8sjCCHA2DuEjA97cem90JtHAegrQMAIhBlThWifAiZp6jKHKw1TQRMVlAZZfGZVhorxmDrRyGLgtqAM/tIZA5A9I9DZSOwsAUZJhDZkPSBenKumrnckhY+3oRMZsCHq0C2BcgKsj0PtrkM5ocQ/WXIqE0Ti+15inthHKwYQUZdiK2T1LaTEtX8c8EPfRty34vAsyHyu/9/CF/2E6i6i9rg04NSkshpriNr/Ehrt3xHpBwctuFs+VB1Oh10Op0n3f7tb387brzxxifc5vLLL7dfHz16FDfccAOuu+46fOITn5jYbmFhAV/+8pcnfra+vo6iKGwVamFh4ZRK1MrKCgCcUrl6NuHu7mcDNpdP1RUpA/O1icxw2LVgsgT8iAiPrqbwfAvl0Yfh7b0EsrefqkGGXJgWmvFa0lN1LJqy7uaiNwelK1PMD6x2CNBtxOEaVcWET9EyeUomlxvHqHpVFqg2V8G1vQDGfahCV7o8ei4xOIGqs5f2x/NtvI3yfDtsAWgX9lYPrCpIS6UkHUuZ2f1inCwPeDaEDNsQw1WqRDFO7Unh2xw/nm5CeRHKr38B/AdeBV6MIR/9Jrwf/zfA8n1Ae46ORZbWBZ3aj4ULOXZweCJUFRTfgfXB0wxHnp2dxezs7FPa9siRI7jhhhtw7bXX4n/8j/8Bvi0x5LrrrsPtt9+OY8eOYXFxEQAJ1cMwxLXXXmu3+Y3f+A3keY4gCOw2S0tLE8Tt2Ya7Gu0UzXBj7dFDXzfMPpWyk1AOuxM0ZVfa+BSLsgB7wSuhnvcKKD+EDKeoYsM4pB+TgaaSkO15atsZDyZjYBlOUdbf2jGAC5S9/VrQ7ZH55foy5MYJVGvLYN15iO4MfSY7c9bNHFJCnjyM6vD9JFSPyZKBJxQlI1s9ei1DnKoSPB1AtvcSgZIlZDgF2epRtMxwlWJm0gEAQMUda7FAT8BpCrEqaOpx6wR4vkUCdUMiTUtPlvBe/KNQR+4DKtKXAUA1ewVpo7QIHgD9TfyI4nKitqv2Ojg8Dkw48hn/e4bCkY8ePYof+7EfwyWXXIKPfOQjOHHiBJaXlyeqTa9+9avxohe9CDfddBO+/vWv42/+5m/w7ne/G295y1tstexNb3oTwjDELbfcgm9/+9v4y7/8S3zoQx86pxN+gKtQnR00HdFteOu2KpVbSe9qKO6BaYIAEClRwqebvwkBrkptdVBHFcmwDZYPyWdJu3yz/gppqbIhVP8klJRko6CJmNIVJFblNg+ScQFsrULOXFrvjw5FJsuFAGwqIO1RmBDp8kKqhPkRWLZFOiq9b7LV09okBpnM1IaeesJPeSH4cJWqZ8IHPE3IvJDIWBBD+S3SlWVbdhKWFyPSgunvpbZg4O0eWDZEtf9FtO9C2zcErdrDzeoSuSNTDg4XIO688048+OCDePDBB7F///6J3xkNlBACd9xxB972trfhR37kRxDHMd70pjdZWwUA6Ha7uOuuu3DrrbfiZS97GXq9Hm677Tbcdtttz+rxbIe7Ku0U1mRQkN5EoiZVOvTWXfwvEjBuNT5itA7l00gvKz3rTmasCABQ66vKgROHoHwfaM+Cb520rTiMNnW4sYSKE2rFcc+2mKtkBsxvQWydgBxs2N2wn7fLfwAoM/BSP4fwoI49BC5LVJ0FIiuN6BcZxESkAiJs5GGVk8eULMGKFDKcgiozKJ+Dywoq7oJnQyAfQSYzNnQZjIOP1mkK0I+ILFaFFdYrP2y0LlNUs1eAZwNLoJQIiODpc8nm9UFH2rgFioPD40LJRrfkTB//DOCWW27BLbfc8qTbXXrppfjc5z73hNtcc801+Id/+IeztGdnB+5Ov0OQKJbZtt5E3IzRu7iL/8UBHUyMMqMLkvCJoOjJNTbaJAG5cThfP0KPm54n24FsC/BCmlxjHGzjBJl0Lj0fSPtWCA5Ai7UDiNFRgHvg3Vn6LFY5uJ68M/9XMXk1eZtHUekLJU83UQUtIk9K6f0kR3Nv9VEoL0A1vR/IR+DZEDzbsu0/ZrzXZAkFUAvT/An0pGA1NUekyZCjYmSz/cwQBytzyCiE8kLKCGy2DUGxM6drkzt7BAeHJ4aS1Q4JlQtHPhO4K9NOcbrWnv7Z490QHHYvFONEpsKE3M+rggwqpbQO4yZQmAURaZpkCRV3oPyYpv/SAVWNkg540qbfBy3w4RrE4HitKzKarTKjNlkxBtdtQp4OoIoMGKxCnHyEvJs8qpipbEQxM+NNuugad3ElaWpPT66iKsjgU7f7+Gid/KXChPRgURssH2urhPX6+I1JaNieOD9YPga4QJXMQEZt0m5pW4mqPU8tUm2PwExL0sHBweECgatQnQ3IarIKtf17h4sCMkjApmbBwgQySEhEXeZESLwASngoQzLhZNmQYmPixFaRvI3DUDqzj1U5VHcB0Ll2TJZQUkKGWrBuo1a0a3g6IPNOz6/bauOhbTvz0Tqq9hxYOAXJBYnK1w6R2agfouruo9fwY3Ign5oDy0dElDi3VSUlfK2RSkj/JQKI4aolPzLZU4vbjXBdSWpjmqBkJYEyr4lX1NaarsBWd5UXunPIweEMQS2/M2/bPVMtv90OR6jOBpqWCEac7oToFyVU0NLEgIwywTkUD+rJP0k/4+uHyWKgNU2ttCIjgXdZkCBdNmJVghioSrAwqT2oAKAqIYOYjDTjDjA4CTlMyfqg1QPiLuUL5mNUXkSapqk5CiDuLwNBBBnEVDnSVSrGtO0C46QJDFpQwocoMoqOkSVYNgRnXGu6BGTUttU3Q5J4MdYRMQIsS8lGQgSAEFSJ4h55ZSlJwvV8aKu7inuurefgsAO4lt+5gSNUO4VSp1gkONfmixRaWwShK0hNQbUGq3QEzdQeSC+CitpUzYqIOImtE6h0S1D5Ue0W7gU67FgCgqKOGKh9yPMxMDhJgxFxADm9BBV3aXIvH6NKZui5h6vUbhSebi9GqKbm4K0+ai++KmhZ3yiR9unz7Pko91wKb+0gGPfodbIhacECeh4zxcjTTTpQKaFaPSgV2WqcChMoL6RjMt4zIiDi5rfqv5U7dxwcHC5AOEJ1NjBBprR+yk32XXRgutryRFAioCm4uHuKvk5GXSI8DXAMwIqUfh93qT1mCIcmMuX0EoQfAmUB2erR8wsfLB2g6i4Q2SkyFPNXERnKhzQhqAOQjdjcOo+DnNCrzl6I/nGAexCD46jaWjzPidDxYgQJ1LEz2UCLzQuqZJUZRdOE1B5UulVpJviUJmeoCqeXcnA4i3AVqnMDd9ffKbaTKaUmfIYcLh48VRL9dAYVZNgGwvZpp0VV4JF4XElUgHYjj+3zy6lZa8JJmiTdTgvbRGgA3ZZs7Lf+HLN8SERMT/eZlqWM2kSwNo9BhlPgxYiqT9wDKzIiZ0pCCUFTicaAk/GJ11Gmvcc4OZ47ODicNUhZgTlC9azDEaqzBes9VbiWhcPZx+N8pqywOz6NvQD3qIUXdSYrZ4xPaJTI1mBMETbaMV0mMxAbR0njFU6Bg4KPZasH6UVW38VGGVg+rlt5wodSpKdi4z5YFdr2on1d3Q51VVwHB4fdBHdF2ynMjclUEFxmn8N5BBkkT43gCx8K1LY07b+qtx8oUh2H04Hygrr6FU7Vru9KQXmBzfeTcZfsFaZmqbJVFdSelCU5yActKOaquA4OzxRUJQG2gwpV5ab8zgSOUO0U21oxznfK4bzCU6yW2rZcmZHOqszosxxO2dgX615epIAgx/aquwhWaGsHkekhDakjd9qnTusJHfDsqrgODs8YlNqhhuoZyvLb7XCE6mxAWyU4MuVwQUNrsIgQBSQqz7bIVDTbIsd3KWkqj1PMjpnyU0IHFxuhOWpHc1PxYrI8pd3o4OBw9qFktbMKldNQnREcodopzFi704M47BYwDsUYeJVDnHwEqrsA6ZM3FrwAMmjp7EoSqhsSJR+n8mQWGm7B4eDgsJvhWMBZgPPOcdhtYLKCd/JhqKhdZ/U1YmUAoJqas9UnBweH8weuQnVu4K6EO4SdWnJw2GVQfqyd0h+/suTIlIPD+QdHqM4N3NXwDKF05thgMHCEymFXgvl7AHCofv9c74qDwwWPwWAAoL53PKOoCuzoVaribO3JRQVHqM4Q5uR47lXPP8d74uDg4OBwoWAwGKDb7T75hmeAIAiwsLCA5e/+7x0/18LCAoLA6R6fDph6Vujy7oOUEkePHkW73QYzbulniH6/j0suuQSHDh1Cp9M5S3t4buGO6cLBbjwud0wXDnbjcZ3umJRSGAwGWFpaAufPXFcjTVPkeb7j5wmCAFEUnYU9unjgKlRnCM459u/ff1afs9Pp7JoLioE7pgsHu/G43DFdONiNx7X9mJ6pylQTURQ5InSO4MQ/Dg4ODg4ODg47hCNUDg4ODg4ODg47hCNU5wHCMMT73/9+hGF4rnflrMEd04WD3Xhc7pguHOzG49qNx+Tw5HCidAcHBwcHBweHHcJVqBwcHBwcHBwcdghHqBwcHBwcHBwcdghHqBwcHBwcHBwcdghHqBwcHBwcHBwcdghHqJ4EH/jAB8AYm/i3sLBw2m1/5Vd+BYwxfOxjH5v4eZZl+A//4T9gdnYWSZLgp3/6p3H48OGJbdbX13HTTTeh2+2i2+3ipptuwsbGxsQ2Bw8exOtf/3okSYLZ2Vm84x3vOMUR91vf+hauv/56xHGMffv24YMf/OAp2VFn45h+7Md+7JTnuPHGG8/ZMT2V47rllltO+f0rXvGKiee40N6rp3JM59t79VQ+f9/73vfw0z/90+h2u2i323jFK16BgwcPnrfv09k6rgvtvdr+O/Pvd37nd87b9+psHNP59j45nCdQDk+I97///erqq69Wx44ds/9WVlZO2e4v//Iv1Ute8hK1tLSk/st/+S8Tv3vrW9+q9u3bp+666y517733qhtuuEG95CUvUWVZ2m1e+9rXqgMHDqi7775b3X333erAgQPqp37qp+zvy7JUBw4cUDfccIO699571V133aWWlpbU29/+drvN5uam2rt3r7rxxhvVt771LfXZz35Wtdtt9ZGPfOSsH9P111+v3vKWt0w8x8bGxsQ2z+YxPZXjuvnmm9VrX/vaid+vrq5e0O/VUzmm8+29erJjevDBB9WePXvUe97zHnXvvfeqhx56SH3uc59Tx48fP2/fp7N1XBfae9X8+bFjx9Qf/uEfKsaYeuihh87b9+psHNP59j45nB9whOpJ8P73v1+95CUvecJtDh8+rPbt26e+/e1vq8suu2yCfGxsbCjf99Wf/dmf2Z8dOXJEcc7V//2//1cppdR3v/tdBUD90z/9k93mnnvuUQDU97//faWUUp///OcV51wdOXLEbvOnf/qnKgxDtbm5qZRS6r/9t/+mut2uStPUbvPhD39YLS0tKSnlWTsmpeiC8s53vvNxH/9sH9NTOa6bb75ZveENb3jc31+I79WTHZNS59979WTH9MY3vlH94i/+4uP+/nx8n87GcSl14b1X2/GGN7xBvepVr7Lfn4/v1U6PSanz731yOD/gWn5PAQ888ACWlpZwxRVX4MYbb8TDDz9sfyelxE033YT3vOc9uPrqq0957Ne+9jUURYFXv/rV9mdLS0s4cOAA7r77bgDAPffcg263i5e//OV2m1e84hXodrsT2xw4cABLS0t2m9e85jXIsgxf+9rX7DbXX3/9hJnca17zGhw9ehSPPvroWTsmg8985jOYnZ3F1VdfjXe/+90YDAb2d+fimJ7suADgi1/8Iubn53HVVVfhLW95C1ZWVuzvLsT36smOyeB8e68e75ik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",
           "text/plain": [
            "
    " @@ -5534,10 +5373,84 @@ } ], "source": [ - "city_SmartSurfaceLULC.plot()" "city_AlosDSM.plot()" ] }, + { + "cell_type": "markdown", + "id": "496ac032", + "metadata": {}, + "source": [ + "# Smart Surface LULC" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6db8e4f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from city_metrix.layers import SmartSurfaceLULC" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2ada0845", + "metadata": {}, + "outputs": [], + "source": [ + "# Load Smart Surface LULC layer\n", + "city_SmartSurfaceLULC = SmartSurfaceLULC().get_data(city_centroid_buffer.total_bounds)\n", + "city_SmartSurfaceLULC" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0935811e", + "metadata": {}, + "outputs": [], + "source": [ + "city_SmartSurfaceLULC.plot()" + ] + }, { "cell_type": "markdown", "id": "1276883d", From 901eb276a9adf324ba638a78449abf40cd8d3de3 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Tue, 4 Jun 2024 14:10:53 +0800 Subject: [PATCH 28/31] update pickle --- .../building_classifier.pkl | Bin 4230 -> 4230 bytes environment.yml | 1 + notebooks/tutorial/get layers.ipynb | 645 ++++++++++++++++-- 3 files changed, 574 insertions(+), 72 deletions(-) diff --git a/city_metrix/layers/building_classifier/building_classifier.pkl b/city_metrix/layers/building_classifier/building_classifier.pkl index e75c466cc5c8e7cd849f7af0f957d058bb80d9a2..d1cee21536816784fea32165dc4b3ed218713d25 100644 GIT binary patch delta 133 zcmZouY*XB@g+rZ*0S-P)xwF;*!nrOA%`>60Y{q$VHY-^*^QXE3ESNe=*{uN~(A delta 123 zcmZouY*XB@g+r5(0S+E4U2Et7;oY<6fD3~d3J#2uWjWm^KVfs&oWdEv$j^k3ZaAHk yviUGqJPZH!+}qo7Z$Go2q~ZxgmnI+N6QAtCpD;OsUuyCp{=MubdPY-9lk@;N&mV38 diff --git a/environment.yml b/environment.yml index 95b35d6..1b23a81 100644 --- a/environment.yml +++ b/environment.yml @@ -20,5 +20,6 @@ dependencies: - geemap=0.32.0 - s3fs=2024.5.0 - pip=23.3.1 + - pickleshare=0.7.5 - pip: - cartoframes==1.2.5 diff --git a/notebooks/tutorial/get layers.ipynb b/notebooks/tutorial/get layers.ipynb index 47ac101..16689a9 100644 --- a/notebooks/tutorial/get layers.ipynb +++ b/notebooks/tutorial/get layers.ipynb @@ -155,40 +155,6 @@ "id": "53554a74-6fa9-4030-8ee7-dd1df79f0d75", "metadata": {}, "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/html": [ @@ -4508,7 +4474,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "id": "0a9ee177", "metadata": {}, "outputs": [ @@ -4545,18 +4511,6 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_6893/938198300.py:2: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n", - "\n", - " city_centroid = city_gdf.centroid\n", - "/tmp/ipykernel_6893/938198300.py:3: UserWarning: Geometry is in a geographic CRS. Results from 'buffer' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n", - "\n", - " city_centroid_buffer = city_centroid.buffer(0.01)\n" - ] } ], "source": [ @@ -5386,9 +5340,27 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "id": "6db8e4f7", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Authenticating to GEE with configured credentials file.\n" + ] + } + ], + "source": [ + "from city_metrix.layers import SmartSurfaceLULC" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2ada0845", + "metadata": {}, "outputs": [ { "data": { @@ -5423,30 +5395,559 @@ }, "metadata": {}, "output_type": "display_data" - } - ], - "source": [ - "from city_metrix.layers import SmartSurfaceLULC" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ada0845", - "metadata": {}, - "outputs": [], - "source": [ - "# Load Smart Surface LULC layer\n", - "city_SmartSurfaceLULC = SmartSurfaceLULC().get_data(city_centroid_buffer.total_bounds)\n", - "city_SmartSurfaceLULC" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0935811e", - "metadata": {}, - "outputs": [], + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting layer ESA world cover from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", + "[########################################] | 100% Completed | 813.65 ms\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/xee/ext.py:683: UserWarning: Unable to retrieve 'system:time_start' values from an ImageCollection due to: No 'system:time_start' values found in the 'ImageCollection'.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting layer urban land use from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", + "[########################################] | 100% Completed | 1.13 ss\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/xee/ext.py:683: UserWarning: Unable to retrieve 'system:time_start' values from an ImageCollection due to: No 'system:time_start' values found in the 'ImageCollection'.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting layer average net building height from Google Earth Engine for bbox [-38.43996975 -12.92755175 -38.41996975 -12.90755175]:\n", + "[########################################] | 100% Completed | 814.53 ms\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + }, + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
    <xarray.DataArray 'reclassify' (y: 2210, x: 2170)> Size: 38MB\n",
    +       "array([[ 1,  1,  1, ...,  1,  1,  1],\n",
    +       "       [ 1,  1,  1, ...,  1,  1,  1],\n",
    +       "       [ 1,  1,  1, ...,  1,  1,  1],\n",
    +       "       ...,\n",
    +       "       [ 2,  2,  2, ..., 30, 30,  2],\n",
    +       "       [ 2,  2,  2, ...,  2,  2,  2],\n",
    +       "       [ 2,  2,  2, ...,  2,  2,  2]])\n",
    +       "Coordinates:\n",
    +       "  * x            (x) float64 17kB 5.607e+05 5.608e+05 ... 5.629e+05 5.629e+05\n",
    +       "  * y            (y) float64 18kB 8.573e+06 8.573e+06 ... 8.571e+06 8.571e+06\n",
    +       "    spatial_ref  int64 8B 0
    " + ], + "text/plain": [ + " Size: 38MB\n", + "array([[ 1, 1, 1, ..., 1, 1, 1],\n", + " [ 1, 1, 1, ..., 1, 1, 1],\n", + " [ 1, 1, 1, ..., 1, 1, 1],\n", + " ...,\n", + " [ 2, 2, 2, ..., 30, 30, 2],\n", + " [ 2, 2, 2, ..., 2, 2, 2],\n", + " [ 2, 2, 2, ..., 2, 2, 2]])\n", + "Coordinates:\n", + " * x (x) float64 17kB 5.607e+05 5.608e+05 ... 5.629e+05 5.629e+05\n", + " * y (y) float64 18kB 8.573e+06 8.573e+06 ... 8.571e+06 8.571e+06\n", + " spatial_ref int64 8B 0" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load Smart Surface LULC layer\n", + "city_SmartSurfaceLULC = SmartSurfaceLULC().get_data(city_centroid_buffer.total_bounds)\n", + "city_SmartSurfaceLULC" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0935811e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/weiqi_tori/anaconda3/envs/fenv/lib/python3.10/site-packages/IPython/core/pylabtools.py:77: DeprecationWarning: backend2gui is deprecated since IPython 8.24, backends are managed in matplotlib and can be externally registered.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAHVCAYAAABScZe2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydeXgVRdbG35sAScAQBQUSZDcECFsAZZFBkEUBEWRGBFFZXBhZZBVEUcFhEUREHRUZw6IBAg444OA4LBIQQREIO4aICBhh+EQMIiQhyf3+CHWpW7e6u6qXu6V+z3MfSHd1dfVW/fY5p0653G63GwqFQqFQKBQKvxMR6AYoFAqFQqFQlFaUEFMoFAqFQqEIEEqIKRQKhUKhUAQIJcQUCoVCoVAoAoQSYgqFQqFQKBQBQgkxhUKhUCgUigChhJhCoVAoFApFgFBCTKFQKBQKhSJAKCGmUCgUCoVCESCUEFMoFI7z7rvvYsmSJT7Lf/zxR7hcLu46I6xsa5XNmzejVatWqFChAlwuF/71r3/5bd/p6elo3rw5oqOjkZCQgDFjxuDSpUt+279CobCXMoFugEKhCH/effdd3HzzzRg8eLDX8vj4eOzcuRP16tULTMNM4Ha70a9fP9SvXx/r1q1DhQoVkJSU5Jd9L1u2DI888gieeOIJvPHGGzh27BgmTZqEI0eOYMOGDX5pg0KhsBclxBQKRcCIiopCmzZtAtqGoqIiFBYWIioqSqj8zz//jF9//RUPPPAAOnfu7HDrrlNUVIRnn30W3bp1wz/+8Q8AQKdOnRAbG4uBAwfiP//5D7p37+639igUCntQrkmFohTxf//3f3jqqadQo0YNREVF4ZZbbsGdd96JTZs2ecp07NgRjRs3xpdffok2bdogJiYG1atXx4svvoiioiKv+qZNm4bWrVujUqVKqFixIlq0aIHU1FS43W5Pmdq1a+Pw4cPYunUrXC4XXC4XateuDYDvXvz+++8xZMgQJCYmonz58qhevTp69eqFgwcPWj5+sr85c+Zg+vTpqFOnDqKiorBlyxYAwO7du3H//fejUqVKiI6ORkpKClatWuXZfurUqbj11lsBAJMmTfI6Fqf5+uuvcebMGQwZMsRr+YMPPogbbrgBn3zyiV/aoVAo7EVZxBSKUsSjjz6KvXv3YsaMGahfvz5+++037N27F+fPn/cqd/bsWfTv3x/PPfccXnnlFaxfvx7Tp0/HhQsX8Pe//91T7scff8SwYcNQs2ZNACViYdSoUcjJycFLL70EAPjkk0/wl7/8BXFxcXj33XcBQNf69PPPP6Ny5cp49dVXccstt+DXX3/F0qVL0bp1a2RmZtriBnzrrbdQv359zJ07FxUrVkRiYiK2bNmCe++9F61bt8aCBQsQFxeH9PR0PPTQQ7h8+TIGDx6MJ554As2aNUPfvn0xatQoPPzww4aWtMLCQqE2RUZGwuVyaa4/dOgQAKBp06Zey8uWLYsGDRp41isUihDDrVAoSg033HCDe8yYMbpl7rrrLjcA99q1a72WP/nkk+6IiAj3yZMnudsVFRW5r1696n7llVfclStXdhcXF3vWJScnu++66y6fbU6cOOEG4F68eLFmewoLC90FBQXuxMRE99ixY6W21dpfvXr13AUFBV7rGjRo4E5JSXFfvXrVa/l9993njo+PdxcVFXnV8dprrwntE4DQz+g4ZsyY4QbgPnPmjM+6bt26uevXry/UHoVCEVwo12QYsW3bNvTq1QsJCQmmR3K53W7MnTsX9evXR1RUFGrUqIGZM2fa31hFQLjjjjuwZMkSTJ8+HV9//TWuXr3KLRcbG4v777/fa9nDDz+M4uJibNu2zbPsiy++QJcuXRAXF4fIyEiULVsWL730Es6fP49z586ZamNhYSFmzpyJRo0aoVy5cihTpgzKlSuH7OxsHD161FSdLPfffz/Kli3r+fv777/Hd999h4EDB3raQH49evTAmTNnkJWVZWpf3377rdCvV69eQvVpWc30rGkKhSJ4Ua7JMOKPP/5As2bNMGTIEPz5z382Vcfo0aOxYcMGzJ07F02aNEFubi5++eUXm1uqCBQrV67E9OnT8cEHH+DFF1/EDTfcgAceeABz5sxBtWrVPOWqVq3qsy1ZT9yYu3btQrdu3dCxY0f84x//wK233opy5crhX//6F2bMmIErV66YauO4cePwzjvvYNKkSbjrrrtw0003ISIiAk888YTpOlni4+O9/v7f//4HAJgwYQImTJjA3cbsc9C8eXOhcpGRkbrrK1euDKDk/LPX59dff0WlSpVMtU+hUAQWJcTCiO7du+uOmiooKMCUKVOwbNky/Pbbb2jcuDFmz56Njh07AgCOHj2K9957D4cOHfLbcHyFf7n55psxf/58zJ8/H6dOncK6devw3HPP4dy5c/j888895YgwoTl79iyA64IgPT0dZcuWxb///W9ER0d7ylnNqZWWlobHHnvMxxL7yy+/4MYbb7RUN4G1Ht18880AgMmTJ6Nv377cbcw+E7TlTY/Fixf7pPegadKkCQDg4MGDaNSokWd5YWEhvvvuOwwYMMBU+xQKRWBRQqwUMWTIEPz4449IT09HQkICPvnkE9x77704ePAgEhMT8emnn6Ju3br497//jXvvvRdutxtdunTBnDlz1Nd2GFKzZk2MHDkSmzdvxldffeW17vfff8e6deu83JPLly9HREQEOnToAKBEzJQpU8bLknPlyhV89NFHPvuKiooStma5XC6fAPj169cjJycHt912m/DxyZCUlITExETs37/fdlf8t99+K1SuTp06uutbt26N+Ph4LFmyBA899JBn+T//+U9cunRJU0AqFIrgRgmxUsLx48exYsUK/PTTT0hISABQ4ob5/PPPsXjxYsycORM//PADTp48iY8//hgffvghioqKMHbsWPzlL3/BF198EeAjUFglNzcXnTp1wsMPP4wGDRogNjYW3377LT7//HOfl3jlypXx9NNP49SpU6hfvz4+++wz/OMf/8DTTz/tGSHZs2dPzJs3Dw8//DCeeuopnD9/HnPnzuWOImzSpAnS09OxcuVK1K1bF9HR0R4LD8t9992HJUuWoEGDBmjatCn27NmD1157zZM2winef/99dO/eHffccw8GDx6M6tWr49dff8XRo0exd+9efPzxx6bqbdWqlS3ti4yMxJw5c/Doo49i2LBhGDBgALKzszFx4kR07doV9957ry37USgU/kUJsVLC3r174Xa7Ub9+fa/l+fn5HldTcXEx8vPz8eGHH3rKpaamomXLlsjKylLuyhAnOjoarVu3xkcffYQff/wRV69eRc2aNTFp0iRMnDjRq2y1atXwzjvvYMKECTh48CAqVaqE559/HtOmTfOUufvuu7Fo0SLMnj0bvXr1QvXq1fHkk0+iSpUqePzxx73qmzZtGs6cOYMnn3wSv//+O2rVqoUff/yR284333wTZcuWxaxZs3Dp0iW0aNECa9aswZQpU2w/JzSdOnXCrl27MGPGDIwZMwYXLlxA5cqV0ahRI/Tr18/RfYvyyCOPIDIyEq+++iqWLFmCSpUq4bHHHsOMGTMC3TSFQmESl9tN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9Rg2bBj+8pe/oG3btkhMTMTBgwcdyoSGhuLy5csO2zp27IidO3eiRYsWTi+t2YlGfWOFbdu24eLFi8r7X375BdHR0Q4eQzVt2rRBbm6ug6jNzc1FTEyMk9Di5cPCwnD48GGnz8g9mu3atcP69etx6dIlaZuyvnPXLoIgPA8JMYLwEa+88gpKS0vx3//933jppZfQunVrjBgxQrP84MGDkZiYiPvuuw8///wz9u/fjyVLliii6MUXX8RHH32EDz74AIWFhZgxYwaWLl2KcePGAQB69uyJdu3aYciQIdi6dSs2bdqERx99FNnZ2U5DaSI9e/ZEq1at8Oijj2Lbtm1Yv349XnnlFbc/f4sWLbB06VLk5+dj27ZteOihh5y8LE2bNsW6detQXFyMP/74AwAwfvx45OXl4emnn0Z+fj4KCwvxzTff4JlnntFsy6hvrFBRUYERI0Zg165d+O677zBx4kSMHj0aQUHal9NRo0bhyJEjeOaZZ7Bnzx58/fXXmDhxIsaOHSs9LiYmBuPGjcPzzz+PBQsWoKioCHa7HbNnz8aCBQsAAKNHj8aZM2cwaNAgbN68GYWFhfjkk0+UmalNmzbFb7/9hoKCAvzxxx9SwWbVLoIgvICPYtMIok6zevVqVq9ePbZ+/Xpl26FDh1hcXBx77733NI87ePAgu//++1lsbCyLjIxknTt3Zhs3blT2v/fee6xZs2YsJCSEtWzZkn388ccOxx86dIj169ePRUVFsZiYGPbAAw+w48ePK/snTpzI2rdv79RuQUEBu/XWW1loaChr2bIl+/77700F6586dUqpw263MwDswIEDyjE9evRgERERLCUlhb377rssOzvbYeZoXl4ea9euHQsLC2Pi5WrTpk2sV69eLDo6mkVFRbF27dqxKVOmaPabmb4xG6zfv39/9uqrr7L69euz6Oho9vjjj7OysjKljPozcNasWcNuvPFGFhoayhITE9n48ePZpUuXnOrmVFVVsXfeeYe1atWKhYSEsOuuu4717t2brV27Vimzbds2duedd7LIyEgWExPDunXrxoqKihhj1TNBeR8BYKtXr3b6nszYJfs8ZvqKIAhz2BjzYCpngiCIWowsW72nGDx4MIKDg7Fw4UKP100QhP9CvmeCIAgfUllZiV27diEvLw/p6em+NocgiBqGhBhBEIQP2bFjBzp37oz09HQ89dRTvjaHIIgahoYmCYIgCIIgfAR5xAiCIAiCIHwECTGCIAiCIAgfQUKMIAif0L17d9hsNthsNuTn5/vaHNMMGzZMsdsbsycJgqhbkBAjCMJnPPHEEygpKUFGRobX2lizZg1sNhtOnz7tkfreeecdlJSUeKQugiAIWmuSIAifERkZicTERF+bAaA6Y77WEkkicXFxiIuLqwGLCIKoC5BHjCAIv4B7rn744QdkZmYiIiICt99+O06cOIHvvvsOrVu3RmxsLAYPHowLFy4oxzHGMH36dDRr1gwRERFo3749vvzySwDAwYMH0aNHDwDAtddeC5vNhmHDhgGoHhodPXo0xo4diwYNGqBXr14AqtffvPvuuxEdHY2EhAQ88sgjyvJKBEEQnoaEGEEQfsWkSZPw7rvvIjc3F0eOHMHAgQMxc+ZMfPrpp1ixYgVWrVqFWbNmKeX//ve/Y/78+Xj//fexc+dOPP/883j44Yexdu1apKSkYMmSJQCAgoIClJSU4J133lGOXbBgAerVq4eff/4ZH374IUpKSpCdnY0OHTpg8+bN+P777/H7779j4MCBNd4PBEHUDWhokiAIv+Kf//wnbrnlFgDAiBEjMGHCBBQVFaFZs2YAgL/+9a9YvXo1xo8fj/Pnz2PGjBn46aef0KVLFwBAs2bNsGHDBnz44YfIzs5GfHw8AKBhw4a45pprHNpq0aIFpk+frrx/9dVX0bFjR0ydOlXZNm/ePKSkpGDv3r1o2bKlNz86QRB1EBJiBEH4Fe3atVP+T0hIQGRkpCLC+LZNmzYBqB5GLCsrU4YVORUVFcjMzDRsq3Pnzg7vt2zZgtWrVyM6OtqpbFFREQkxgiA8DgkxgiD8ipCQEOV/m83m8J5vq6qqAgDl74oVK9CoUSOHcmFhYYZtRUVFObyvqqpC37598cYbbziVTUpKMvcBCIIgLEBCjCCIgKVNmzYICwvD4cOHkZ2dLS3DZ0JevnzZsL6OHTtiyZIlaNq0KerVo8sjQRDeh4L1CYIIWGJiYjBu3Dg8//zzWLBgAYqKimC32zF79mwsWLAAANCkSRPYbDZ8++23+Pe//41z585p1vf000/jzz//xODBg7Fp0ybs378fK1euxPDhw00JOYIgCKuQECMIIqB5/fXX8eqrr2LatGlo3bo1evfujeXLlyM1NRUA0KhRI7z22mt4+eWXkZCQgNGjR2vWlZycjJ9//hmXL19G7969kZGRgeeeew5xcXEICqLLJUEQnsfGGGO+NoIgiLpH9+7d0aFDB8ycOdPXpriEzWbDsmXLcN999/naFIIgAhh6xCMIwme89957iI6Oxvbt231timmeeuop6axKgiAIVyCPGEEQPqG4uBgXL14EADRu3NjU8kL+wIkTJ3DmzBkA1TMp1TMvCYIgrEBCjCAIgiAIwkfQ0CRBEARBEISPICFGEARBEAThI0iIEQRBEARB+AgSYgRBEARBED6ChBhBEARBEISPICFGEARBEAThI0iIEQRBEARB+AgSYgRBEARBED7i/wE3sFso1wRYAQAAAABJRU5ErkJggg==", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "city_SmartSurfaceLULC.plot()" ] From 74f5c0c103b377f9110e425a6f3433ed548ac8aa Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Wed, 5 Jun 2024 11:00:22 +0800 Subject: [PATCH 29/31] update environment file and fix typo --- city_metrix/layers/tree_canopy_height.py | 4 ++-- environment.yml | 3 ++- tests/layers.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/city_metrix/layers/tree_canopy_height.py b/city_metrix/layers/tree_canopy_height.py index c249063..2785272 100644 --- a/city_metrix/layers/tree_canopy_height.py +++ b/city_metrix/layers/tree_canopy_height.py @@ -7,7 +7,7 @@ class TreeCanopyHeight(Layer): - name = "tree_canopy_hight" + name = "tree_canopy_height" NO_DATA_VALUE = 0 def __init__(self, **kwargs): @@ -18,6 +18,6 @@ def get_data(self, bbox): # aggregate time series into a single image canopy_ht = canopy_ht.reduce(ee.Reducer.mean()).rename("cover_code") - data = get_image_collection(ee.ImageCollection(canopy_ht), bbox, 1, "tree canopy hight") + data = get_image_collection(ee.ImageCollection(canopy_ht), bbox, 1, "tree canopy height") return data.cover_code diff --git a/environment.yml b/environment.yml index 1b23a81..6111f79 100644 --- a/environment.yml +++ b/environment.yml @@ -20,6 +20,7 @@ dependencies: - geemap=0.32.0 - s3fs=2024.5.0 - pip=23.3.1 - - pickleshare=0.7.5 + - scikit-learn=1.5.0 - pip: - cartoframes==1.2.5 + - git+https://github.com/isciences/exactextract diff --git a/tests/layers.py b/tests/layers.py index feb3923..417dd35 100644 --- a/tests/layers.py +++ b/tests/layers.py @@ -105,7 +105,7 @@ def test_tree_canopy_hight(): count = TreeCanopyHeight().get_data(SAMPLE_BBOX).count() assert count -def test_AlosDSM(): +def test_alos_dsm(): mean = AlosDSM().get_data(SAMPLE_BBOX).mean() assert mean From 469e2b6b0948ebfdcec0f51d74748cb909cebc84 Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 7 Jun 2024 11:57:56 +0800 Subject: [PATCH 30/31] remove temp test notebook --- notebooks/tutorial/test.ipynb | 1104 --------------------------------- 1 file changed, 1104 deletions(-) delete mode 100644 notebooks/tutorial/test.ipynb diff --git a/notebooks/tutorial/test.ipynb b/notebooks/tutorial/test.ipynb deleted file mode 100644 index a343a8d..0000000 --- a/notebooks/tutorial/test.ipynb +++ /dev/null @@ -1,1104 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "03770867-4126-4b7b-b253-83c0b20bab0b", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import geopandas as gpd\n", - "from rasterio.plot import show\n", - "import rasterio" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "2092a894-d280-4bcb-b720-9adc4faf0606", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'C:\\\\Users\\\\Saif.Shabou\\\\OneDrive - World Resources Institute\\\\Documents\\\\cities-indicators-framework\\\\citymetrix\\\\cities-cif'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# # update the wd path to be able to laod the module\n", - "os.chdir('../..')\n", - "os.getcwd()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "d4f486ab-1c1b-4c23-8d23-89f5c4638fd7", - "metadata": {}, - "outputs": [], - "source": [ - "os.environ['GCS_BUCKET']='gee-exports'\n", - "os.environ['GOOGLE_APPLICATION_USER']='developers@citiesindicators.iam.gserviceaccount.com'\n", - "os.environ['GOOGLE_APPLICATION_CREDENTIALS']='C:\\\\Users\\Saif.Shabou\\OneDrive - World Resources Institute\\Documents\\cities-indicators-framework\\citymetrix\\credentials-citiesindicators.json'" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "e233e58e-89e5-4edc-b01b-d1526d2627f9", - "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", - "
    geo_idgeo_levelgeo_namegeo_parent_namecreation_dategeometry
    0BRA-Salvador_ADM4-union_1ADM4-unionBRA-SalvadorBRA-Salvador2022-08-03MULTIPOLYGON (((-38.50135 -13.01134, -38.50140...
    \n", - "
    " - ], - "text/plain": [ - " geo_id geo_level geo_name geo_parent_name \\\n", - "0 BRA-Salvador_ADM4-union_1 ADM4-union BRA-Salvador BRA-Salvador \n", - "\n", - " creation_date geometry \n", - "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# load boundary\n", - "boundary_path = 'https://cities-indicators.s3.eu-west-3.amazonaws.com/data/boundaries/boundary-BRA-Salvador-ADM4union.geojson'\n", - "city_gdf = gpd.read_file(boundary_path, driver='GeoJSON')\n", - "city_gdf.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "72fc7c8a-a2f5-499a-91ab-db075e6423f6", - "metadata": {}, - "outputs": [], - "source": [ - "from city_metrix.layers.urban_land_use import UrbanLandUse" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "e4a64ccb-e363-45b8-80f0-4bfe992e0c34", - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "max() arg is an empty sequence", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "File \u001b[1;32m:1\u001b[0m\n", - "File \u001b[1;32m~\\OneDrive - World Resources Institute\\Documents\\cities-indicators-framework\\citymetrix\\cities-cif\\city_metrix\\layers\\urban_land_use.py:24\u001b[0m, in \u001b[0;36mUrbanLandUse.get_data\u001b[1;34m(self, bbox)\u001b[0m\n\u001b[0;32m 16\u001b[0m dataset \u001b[38;5;241m=\u001b[39m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprojects/wri-datalab/cities/urban_land_use/V1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 17\u001b[0m ulu \u001b[38;5;241m=\u001b[39m (dataset\n\u001b[0;32m 18\u001b[0m \u001b[38;5;241m.\u001b[39mfilterBounds(ee\u001b[38;5;241m.\u001b[39mGeometry\u001b[38;5;241m.\u001b[39mBBox(\u001b[38;5;241m*\u001b[39mbbox))\n\u001b[0;32m 19\u001b[0m \u001b[38;5;241m.\u001b[39mselect(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mband)\n\u001b[0;32m 20\u001b[0m \u001b[38;5;241m.\u001b[39mreduce(ee\u001b[38;5;241m.\u001b[39mReducer\u001b[38;5;241m.\u001b[39mfirstNonNull())\n\u001b[0;32m 21\u001b[0m \u001b[38;5;241m.\u001b[39mrename(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlulc\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 22\u001b[0m )\n\u001b[1;32m---> 24\u001b[0m ds \u001b[38;5;241m=\u001b[39m \u001b[43mxr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_dataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mImageCollection\u001b[49m\u001b[43m(\u001b[49m\u001b[43mulu\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 26\u001b[0m \u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mee\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 29\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mGeometry\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mRectangle\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mbbox\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 30\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 32\u001b[0m data \u001b[38;5;241m=\u001b[39m ds\u001b[38;5;241m.\u001b[39mlulc\u001b[38;5;241m.\u001b[39mcompute()\n\u001b[0;32m 34\u001b[0m \u001b[38;5;66;03m# get in rioxarray format\u001b[39;00m\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xarray\\backends\\api.py:566\u001b[0m, in \u001b[0;36mopen_dataset\u001b[1;34m(filename_or_obj, engine, chunks, cache, decode_cf, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, drop_variables, inline_array, chunked_array_type, from_array_kwargs, backend_kwargs, **kwargs)\u001b[0m\n\u001b[0;32m 554\u001b[0m decoders \u001b[38;5;241m=\u001b[39m _resolve_decoders_kwargs(\n\u001b[0;32m 555\u001b[0m decode_cf,\n\u001b[0;32m 556\u001b[0m open_backend_dataset_parameters\u001b[38;5;241m=\u001b[39mbackend\u001b[38;5;241m.\u001b[39mopen_dataset_parameters,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 562\u001b[0m decode_coords\u001b[38;5;241m=\u001b[39mdecode_coords,\n\u001b[0;32m 563\u001b[0m )\n\u001b[0;32m 565\u001b[0m overwrite_encoded_chunks \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moverwrite_encoded_chunks\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 566\u001b[0m backend_ds \u001b[38;5;241m=\u001b[39m backend\u001b[38;5;241m.\u001b[39mopen_dataset(\n\u001b[0;32m 567\u001b[0m filename_or_obj,\n\u001b[0;32m 568\u001b[0m drop_variables\u001b[38;5;241m=\u001b[39mdrop_variables,\n\u001b[0;32m 569\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mdecoders,\n\u001b[0;32m 570\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 571\u001b[0m )\n\u001b[0;32m 572\u001b[0m ds \u001b[38;5;241m=\u001b[39m _dataset_from_backend_dataset(\n\u001b[0;32m 573\u001b[0m backend_ds,\n\u001b[0;32m 574\u001b[0m filename_or_obj,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 584\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 585\u001b[0m )\n\u001b[0;32m 586\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ds\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:937\u001b[0m, in \u001b[0;36mEarthEngineBackendEntrypoint.open_dataset\u001b[1;34m(self, filename_or_obj, drop_variables, io_chunks, n_images, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, ee_mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 929\u001b[0m ee\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39msetUserAgent(user_agent)\n\u001b[0;32m 931\u001b[0m collection \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 932\u001b[0m filename_or_obj\n\u001b[0;32m 933\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(filename_or_obj, ee\u001b[38;5;241m.\u001b[39mImageCollection)\n\u001b[0;32m 934\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parse(filename_or_obj))\n\u001b[0;32m 935\u001b[0m )\n\u001b[1;32m--> 937\u001b[0m store \u001b[38;5;241m=\u001b[39m \u001b[43mEarthEngineStore\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 938\u001b[0m \u001b[43m \u001b[49m\u001b[43mcollection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 939\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunk_store\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mio_chunks\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 940\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 941\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 942\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 943\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee_mask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 948\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 949\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 951\u001b[0m store_entrypoint \u001b[38;5;241m=\u001b[39m backends_store\u001b[38;5;241m.\u001b[39mStoreBackendEntrypoint()\n\u001b[0;32m 953\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m utils\u001b[38;5;241m.\u001b[39mclose_on_error(store):\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:152\u001b[0m, in \u001b[0;36mEarthEngineStore.open\u001b[1;34m(cls, image_collection, mode, chunk_store, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 149\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmode \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmode\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m is invalid: data can only be read from Earth Engine.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 150\u001b[0m )\n\u001b[1;32m--> 152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 153\u001b[0m \u001b[43m \u001b[49m\u001b[43mimage_collection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunk_store\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 156\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 157\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 158\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 159\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 160\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 161\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 162\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 163\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 164\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:242\u001b[0m, in \u001b[0;36mEarthEngineStore.__init__\u001b[1;34m(self, image_collection, chunks, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 239\u001b[0m x_max, y_max \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtransform(x_max_0, y_max_0)\n\u001b[0;32m 240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbounds \u001b[38;5;241m=\u001b[39m x_min, y_min, x_max, y_max\n\u001b[1;32m--> 242\u001b[0m max_dtype \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_max_itemsize\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 244\u001b[0m \u001b[38;5;66;03m# TODO(b/291851322): Consider support for laziness when chunks=None.\u001b[39;00m\n\u001b[0;32m 245\u001b[0m \u001b[38;5;66;03m# By default, automatically optimize io_chunks.\u001b[39;00m\n\u001b[0;32m 246\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchunks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_auto_chunks(max_dtype, request_byte_limit)\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:311\u001b[0m, in \u001b[0;36mEarthEngineStore._max_itemsize\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 310\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_max_itemsize\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mint\u001b[39m:\n\u001b[1;32m--> 311\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mmax\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 312\u001b[0m \u001b[43m \u001b[49m\u001b[43m_parse_dtype\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mdata_type\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitemsize\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_img_info\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mbands\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[0;32m 313\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[1;31mValueError\u001b[0m: max() arg is an empty sequence" - ] - } - ], - "source": [ - "%%time\n", - "\n", - "city_urban_land_use = UrbanLandUse().get_data(city_gdf.total_bounds)\n", - "city_urban_land_use" - ] - }, - { - "cell_type": "markdown", - "id": "f8bdc82b-20f4-40c1-9bed-1cb53cec2fd9", - "metadata": {}, - "source": [ - "# Open Street Map" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "2b619ebf-a90d-4630-ba7e-9e0b5526f278", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Authenticating to GEE with configured credentials file.\n" - ] - } - ], - "source": [ - "from city_metrix.layers import OpenStreetMap" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "696480f8-3f48-40df-98f3-29ece4d2f047", - "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", - "
    osmidgeometryleisureboundary
    029204845POLYGON ((-38.41202 -12.96888, -38.41160 -12.9...NaNprotected_area
    129415494POLYGON ((-38.47611 -12.99642, -38.47608 -12.9...parkNaN
    229415495POLYGON ((-38.44212 -12.99757, -38.44152 -12.9...parkNaN
    348623160POLYGON ((-38.49373 -13.01117, -38.49374 -13.0...pitchNaN
    448623169POLYGON ((-38.49005 -13.01025, -38.49002 -13.0...parkNaN
    ...............
    156611371090POLYGON ((-38.49656 -12.92388, -38.49656 -12.9...parkNaN
    156711773655POLYGON ((-38.41844 -12.94592, -38.41844 -12.9...trackNaN
    156814205075POLYGON ((-38.44278 -12.98217, -38.44294 -12.9...parkNaN
    156914325221MULTIPOLYGON (((-38.36285 -12.95008, -38.36278...parkNaN
    157014938535POLYGON ((-38.51048 -12.92996, -38.51048 -12.9...trackNaN
    \n", - "

    1571 rows × 4 columns

    \n", - "
    " - ], - "text/plain": [ - " osmid geometry leisure \\\n", - "0 29204845 POLYGON ((-38.41202 -12.96888, -38.41160 -12.9... NaN \n", - "1 29415494 POLYGON ((-38.47611 -12.99642, -38.47608 -12.9... park \n", - "2 29415495 POLYGON ((-38.44212 -12.99757, -38.44152 -12.9... park \n", - "3 48623160 POLYGON ((-38.49373 -13.01117, -38.49374 -13.0... pitch \n", - "4 48623169 POLYGON ((-38.49005 -13.01025, -38.49002 -13.0... park \n", - "... ... ... ... \n", - "1566 11371090 POLYGON ((-38.49656 -12.92388, -38.49656 -12.9... park \n", - "1567 11773655 POLYGON ((-38.41844 -12.94592, -38.41844 -12.9... track \n", - "1568 14205075 POLYGON ((-38.44278 -12.98217, -38.44294 -12.9... park \n", - "1569 14325221 MULTIPOLYGON (((-38.36285 -12.95008, -38.36278... park \n", - "1570 14938535 POLYGON ((-38.51048 -12.92996, -38.51048 -12.9... track \n", - "\n", - " boundary \n", - "0 protected_area \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "... ... \n", - "1566 NaN \n", - "1567 NaN \n", - "1568 NaN \n", - "1569 NaN \n", - "1570 NaN \n", - "\n", - "[1571 rows x 4 columns]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "open_space_tag = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'], \n", - " 'boundary': ['protected_area', 'national_park']}\n", - "\n", - "city_open_space = OpenStreetMap(osm_tag=open_space_tag).get_data(city_gdf.total_bounds)\n", - "city_open_space" - ] - }, - { - "cell_type": "markdown", - "id": "6aebf55a-d761-4042-95aa-3674f914c7f4", - "metadata": {}, - "source": [ - "# NaturalAreas" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "72457e43-0181-4ef4-bec8-067a958da1b3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Authenticating to GEE with configured credentials file.\n" - ] - } - ], - "source": [ - "from city_metrix.layers import NaturalAreas" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e1855efc-a2e9-4cc7-9df0-650286186e1c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.DataArray 'Map' (y: 2878, x: 3722)>\n",
    -       "array([[0, 0, 0, ..., 1, 1, 1],\n",
    -       "       [0, 0, 0, ..., 1, 1, 1],\n",
    -       "       [0, 0, 0, ..., 1, 1, 1],\n",
    -       "       ...,\n",
    -       "       [0, 0, 0, ..., 0, 0, 0],\n",
    -       "       [0, 0, 0, ..., 0, 0, 0],\n",
    -       "       [0, 0, 0, ..., 0, 0, 0]])\n",
    -       "Coordinates:\n",
    -       "    time         datetime64[ns] 2020-01-01\n",
    -       "  * x            (x) float32 -38.65 -38.65 -38.65 -38.65 ... -38.3 -38.3 -38.3\n",
    -       "  * y            (y) float32 -12.76 -12.76 -12.76 ... -13.02 -13.02 -13.02\n",
    -       "    spatial_ref  int32 0
    " - ], - "text/plain": [ - "\n", - "array([[0, 0, 0, ..., 1, 1, 1],\n", - " [0, 0, 0, ..., 1, 1, 1],\n", - " [0, 0, 0, ..., 1, 1, 1],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "Coordinates:\n", - " time datetime64[ns] 2020-01-01\n", - " * x (x) float32 -38.65 -38.65 -38.65 -38.65 ... -38.3 -38.3 -38.3\n", - " * y (y) float32 -12.76 -12.76 -12.76 ... -13.02 -13.02 -13.02\n", - " spatial_ref int32 0" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "city_natural_areas = NaturalAreas().get_data(city_gdf.total_bounds)\n", - "city_natural_areas" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "d7f1f387-7d4e-4d0a-aae6-dd5e712023c0", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\Saif.Shabou\\anaconda3\\lib\\site-packages\\xarray\\core\\pycompat.py:37: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.\n", - " duck_array_version = LooseVersion(\"0.0.0\")\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "city_natural_areas.plot()" - ] - }, - { - "cell_type": "markdown", - "id": "8090dcb6-e6bc-443f-8a42-79a9ed8f31b4", - "metadata": {}, - "source": [ - "# Indicator urban_open_space" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3b873034-e421-414e-91b6-9e9fdb3fccc1", - "metadata": {}, - "outputs": [], - "source": [ - "from city_metrix import urban_open_space\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "f4046695-950b-47e4-a23b-0aafc722c0e9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 15.1 s\n", - "Wall time: 44 s\n" - ] - }, - { - "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", - "
    geo_idgeo_levelgeo_namegeo_parent_namecreation_dategeometrynatural_areasurban_open_space
    0BRA-Salvador_ADM4-union_1ADM4-unionBRA-SalvadorBRA-Salvador2022-08-03MULTIPOLYGON (((-38.50135 -13.01134, -38.50140...0.4646030.028378
    \n", - "
    " - ], - "text/plain": [ - " geo_id geo_level geo_name geo_parent_name \\\n", - "0 BRA-Salvador_ADM4-union_1 ADM4-union BRA-Salvador BRA-Salvador \n", - "\n", - " creation_date geometry \\\n", - "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... \n", - "\n", - " natural_areas urban_open_space \n", - "0 0.464603 0.028378 " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "# for one geography\n", - "city_gdf[\"urban_open_space\"] = urban_open_space(city_gdf) \n", - "city_gdf" - ] - }, - { - "cell_type": "markdown", - "id": "9b447fd3-5bcf-4d74-b3e9-a54c1fb399bb", - "metadata": {}, - "source": [ - "# indicator natural areas" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "16ce8557-0438-456f-870b-ee6a71f83891", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Authenticating to GEE with configured credentials file.\n" - ] - } - ], - "source": [ - "from city_metrix import natural_areas" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "353bdc99-f02d-4d06-ae4c-8fe535e53c9d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: total: 2min 7s\n", - "Wall time: 2min 10s\n" - ] - }, - { - "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", - "
    geo_idgeo_levelgeo_namegeo_parent_namecreation_dategeometrynatural_areas
    0BRA-Salvador_ADM4-union_1ADM4-unionBRA-SalvadorBRA-Salvador2022-08-03MULTIPOLYGON (((-38.50135 -13.01134, -38.50140...0.464603
    \n", - "
    " - ], - "text/plain": [ - " geo_id geo_level geo_name geo_parent_name \\\n", - "0 BRA-Salvador_ADM4-union_1 ADM4-union BRA-Salvador BRA-Salvador \n", - "\n", - " creation_date geometry \\\n", - "0 2022-08-03 MULTIPOLYGON (((-38.50135 -13.01134, -38.50140... \n", - "\n", - " natural_areas \n", - "0 0.464603 " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "# for one geography\n", - "city_gdf[\"natural_areas\"] = natural_areas(city_gdf) \n", - "city_gdf" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "07ec2376-78b2-400e-b61a-6672c02a6545", - "metadata": {}, - "outputs": [], - "source": [ - "from city_metrix.layers.urban_land_use import UrbanLandUse" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "58409ed9-2bba-4fe2-8fad-0fe0544bbc2b", - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "max() arg is an empty sequence", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "File \u001b[1;32m:1\u001b[0m\n", - "File \u001b[1;32m~\\OneDrive - World Resources Institute\\Documents\\cities-indicators-framework\\citymetrix\\cities-cif\\city_metrix\\layers\\urban_land_use.py:24\u001b[0m, in \u001b[0;36mUrbanLandUse.get_data\u001b[1;34m(self, bbox)\u001b[0m\n\u001b[0;32m 16\u001b[0m dataset \u001b[38;5;241m=\u001b[39m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprojects/wri-datalab/cities/urban_land_use/V1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 17\u001b[0m ulu \u001b[38;5;241m=\u001b[39m (dataset\n\u001b[0;32m 18\u001b[0m \u001b[38;5;241m.\u001b[39mfilterBounds(ee\u001b[38;5;241m.\u001b[39mGeometry\u001b[38;5;241m.\u001b[39mBBox(\u001b[38;5;241m*\u001b[39mbbox))\n\u001b[0;32m 19\u001b[0m \u001b[38;5;241m.\u001b[39mselect(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mband)\n\u001b[0;32m 20\u001b[0m \u001b[38;5;241m.\u001b[39mreduce(ee\u001b[38;5;241m.\u001b[39mReducer\u001b[38;5;241m.\u001b[39mfirstNonNull())\n\u001b[0;32m 21\u001b[0m \u001b[38;5;241m.\u001b[39mrename(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlulc\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 22\u001b[0m )\n\u001b[1;32m---> 24\u001b[0m ds \u001b[38;5;241m=\u001b[39m \u001b[43mxr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_dataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mImageCollection\u001b[49m\u001b[43m(\u001b[49m\u001b[43mulu\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 26\u001b[0m \u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mee\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 29\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mGeometry\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mRectangle\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mbbox\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 30\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 32\u001b[0m data \u001b[38;5;241m=\u001b[39m ds\u001b[38;5;241m.\u001b[39mlulc\u001b[38;5;241m.\u001b[39mcompute()\n\u001b[0;32m 34\u001b[0m \u001b[38;5;66;03m# get in rioxarray format\u001b[39;00m\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xarray\\backends\\api.py:566\u001b[0m, in \u001b[0;36mopen_dataset\u001b[1;34m(filename_or_obj, engine, chunks, cache, decode_cf, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, drop_variables, inline_array, chunked_array_type, from_array_kwargs, backend_kwargs, **kwargs)\u001b[0m\n\u001b[0;32m 554\u001b[0m decoders \u001b[38;5;241m=\u001b[39m _resolve_decoders_kwargs(\n\u001b[0;32m 555\u001b[0m decode_cf,\n\u001b[0;32m 556\u001b[0m open_backend_dataset_parameters\u001b[38;5;241m=\u001b[39mbackend\u001b[38;5;241m.\u001b[39mopen_dataset_parameters,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 562\u001b[0m decode_coords\u001b[38;5;241m=\u001b[39mdecode_coords,\n\u001b[0;32m 563\u001b[0m )\n\u001b[0;32m 565\u001b[0m overwrite_encoded_chunks \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moverwrite_encoded_chunks\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 566\u001b[0m backend_ds \u001b[38;5;241m=\u001b[39m backend\u001b[38;5;241m.\u001b[39mopen_dataset(\n\u001b[0;32m 567\u001b[0m filename_or_obj,\n\u001b[0;32m 568\u001b[0m drop_variables\u001b[38;5;241m=\u001b[39mdrop_variables,\n\u001b[0;32m 569\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mdecoders,\n\u001b[0;32m 570\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 571\u001b[0m )\n\u001b[0;32m 572\u001b[0m ds \u001b[38;5;241m=\u001b[39m _dataset_from_backend_dataset(\n\u001b[0;32m 573\u001b[0m backend_ds,\n\u001b[0;32m 574\u001b[0m filename_or_obj,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 584\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 585\u001b[0m )\n\u001b[0;32m 586\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ds\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:937\u001b[0m, in \u001b[0;36mEarthEngineBackendEntrypoint.open_dataset\u001b[1;34m(self, filename_or_obj, drop_variables, io_chunks, n_images, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, ee_mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 929\u001b[0m ee\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39msetUserAgent(user_agent)\n\u001b[0;32m 931\u001b[0m collection \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 932\u001b[0m filename_or_obj\n\u001b[0;32m 933\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(filename_or_obj, ee\u001b[38;5;241m.\u001b[39mImageCollection)\n\u001b[0;32m 934\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m ee\u001b[38;5;241m.\u001b[39mImageCollection(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parse(filename_or_obj))\n\u001b[0;32m 935\u001b[0m )\n\u001b[1;32m--> 937\u001b[0m store \u001b[38;5;241m=\u001b[39m \u001b[43mEarthEngineStore\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 938\u001b[0m \u001b[43m \u001b[49m\u001b[43mcollection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 939\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunk_store\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mio_chunks\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 940\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 941\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 942\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 943\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mee_mask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 948\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 949\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 951\u001b[0m store_entrypoint \u001b[38;5;241m=\u001b[39m backends_store\u001b[38;5;241m.\u001b[39mStoreBackendEntrypoint()\n\u001b[0;32m 953\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m utils\u001b[38;5;241m.\u001b[39mclose_on_error(store):\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:152\u001b[0m, in \u001b[0;36mEarthEngineStore.open\u001b[1;34m(cls, image_collection, mode, chunk_store, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 149\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmode \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmode\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m is invalid: data can only be read from Earth Engine.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 150\u001b[0m )\n\u001b[1;32m--> 152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 153\u001b[0m \u001b[43m \u001b[49m\u001b[43mimage_collection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunk_store\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_images\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_images\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 156\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 157\u001b[0m \u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 158\u001b[0m \u001b[43m \u001b[49m\u001b[43mprojection\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprojection\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 159\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 160\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 161\u001b[0m \u001b[43m \u001b[49m\u001b[43mprimary_dim_property\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mprimary_dim_property\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 162\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmask_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 163\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_byte_limit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 164\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:242\u001b[0m, in \u001b[0;36mEarthEngineStore.__init__\u001b[1;34m(self, image_collection, chunks, n_images, crs, scale, projection, geometry, primary_dim_name, primary_dim_property, mask_value, request_byte_limit)\u001b[0m\n\u001b[0;32m 239\u001b[0m x_max, y_max \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtransform(x_max_0, y_max_0)\n\u001b[0;32m 240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbounds \u001b[38;5;241m=\u001b[39m x_min, y_min, x_max, y_max\n\u001b[1;32m--> 242\u001b[0m max_dtype \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_max_itemsize\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 244\u001b[0m \u001b[38;5;66;03m# TODO(b/291851322): Consider support for laziness when chunks=None.\u001b[39;00m\n\u001b[0;32m 245\u001b[0m \u001b[38;5;66;03m# By default, automatically optimize io_chunks.\u001b[39;00m\n\u001b[0;32m 246\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchunks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_auto_chunks(max_dtype, request_byte_limit)\n", - "File \u001b[1;32m~\\anaconda3\\envs\\citymetrix_env\\lib\\site-packages\\xee\\ext.py:311\u001b[0m, in \u001b[0;36mEarthEngineStore._max_itemsize\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 310\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_max_itemsize\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mint\u001b[39m:\n\u001b[1;32m--> 311\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mmax\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 312\u001b[0m \u001b[43m \u001b[49m\u001b[43m_parse_dtype\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mdata_type\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitemsize\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_img_info\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mbands\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[0;32m 313\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[1;31mValueError\u001b[0m: max() arg is an empty sequence" - ] - } - ], - "source": [ - "%%time\n", - "\n", - "city_urban_land_use = UrbanLandUse().get_data(city_gdf.total_bounds)\n", - "city_urban_land_use" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "104b8268-3546-4c36-97e0-a8000f13e1df", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "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.10.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From e484d968942efa5cff50fbc6f0d8dd4b737e6e6a Mon Sep 17 00:00:00 2001 From: weiqi-tori Date: Fri, 7 Jun 2024 13:21:37 +0800 Subject: [PATCH 31/31] remove write() function --- city_metrix/layers/smart_surface_lulc.py | 26 ------------------------ 1 file changed, 26 deletions(-) diff --git a/city_metrix/layers/smart_surface_lulc.py b/city_metrix/layers/smart_surface_lulc.py index d154063..4e35976 100644 --- a/city_metrix/layers/smart_surface_lulc.py +++ b/city_metrix/layers/smart_surface_lulc.py @@ -128,29 +128,3 @@ def get_data(self, bbox): lulc = lulc.compute() return lulc - - ## TODO: Remove this write() function after feature/write_layers been merged - # def write(self, zones, output_path): - # bbox = zones.total_bounds - # if box(*bbox).area <= MAX_TILE_SIZE**2: - # self.get_data(bbox).rio.to_raster(output_path) - # else: - # ZONES = create_fishnet_grid(*bbox, MAX_TILE_SIZE).reset_index() - # # spatial join with fishnet grid and then intersect geometries with fishnet tiles - # joined = zones.sjoin(ZONES) - # joined["geometry"] = joined.intersection(joined["fishnet_geometry"]) - # # remove linestring artifacts due to float precision - # gdf = joined[joined.geometry.type.isin(['Polygon', 'MultiPolygon'])] - - # print(f"Input covers too much area, splitting into {len(gdf)} tiles") - # for i in range(len(gdf)): - # process = psutil.Process() - # print(f'tile: {i}, memory: {process.memory_info().rss/10 ** 9} GB') - - # bbox = gdf.iloc[[i]].total_bounds - # # Split the original path into name and extension - # base_name, extension = output_path.rsplit('.', 1) - # # Create a new path with '_i' appended before the extension - # new_output_path = f"{base_name}_{i}.{extension}" - - # self.get_data(bbox).rio.to_raster(new_output_path)