diff --git a/CHANGELOG.md b/CHANGELOG.md index 5017be67964bf562dddc6adc320d69a8489baf10..6616fa3cae1ee62bfa12ed72d132081aa9d23bea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,24 @@ # NES CHANGELOG +### 1.1.1 +* Release date: ??? +* Changes and new features: + * Improved time on **concatenate_netcdfs** function ([#55](https://earth.bsc.es/gitlab/es/NES/-/issues/55)) + * Sum of Nes objects ([#48](https://earth.bsc.es/gitlab/es/NES/-/issues/48)) + * Write 2D string data to save variables from shapefiles after doing a spatial join ([#49](https://earth.bsc.es/gitlab/es/NES/-/issues/49)) + * Write by time step to avoid memory issues ([#57](https://earth.bsc.es/gitlab/es/NES/-/issues/57)) + * Flux conservative horizontal interpolation ([#60](https://earth.bsc.es/gitlab/es/NES/-/issues/60)) + * Bugs fixing: + * Bug on `cell_methods` serial write ([#53](https://earth.bsc.es/gitlab/es/NES/-/issues/53)) + * Horizontal Interpolation Conservative: Improvement on memory usage when calculating the weight matrix ([#54](https://earth.bsc.es/gitlab/es/NES/-/issues/54)) + * Bug on avoid_first_hours that where not filtered after read the dimensions ([#59](https://earth.bsc.es/gitlab/es/NES/-/issues/59)) + * Bug while reading masked data. + ### 1.1.0 * Release date: 2023/03/02 * Changes and new features: * Improve Lat-Lon to Cartesian coordinates method (used in Providentia). + * Horizontal interpolation: Conservative * Function to_shapefile() to create shapefiles from a NES object without losing data from the original grid and being able to select the time and level. * Function from_shapefile() to create a new grid with data from a shapefile after doing a spatial join. * Function create_shapefile() can now be used in parallel. diff --git a/nes/create_nes.py b/nes/create_nes.py index 33f0bf63eb76714623e9b906770014355a96ea7d..cfb0205fda0916e62ae37448ba660d4d0a2dc813 100644 --- a/nes/create_nes.py +++ b/nes/create_nes.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import warnings +import sys from netCDF4 import num2date from mpi4py import MPI import geopandas as gpd @@ -8,7 +9,7 @@ from .nc_projections import * def create_nes(comm=None, info=False, projection=None, parallel_method='Y', balanced=False, - strlen=75, times=None, avoid_first_hours=0, avoid_last_hours=0, first_level=0, last_level=None, + times=None, avoid_first_hours=0, avoid_last_hours=0, first_level=0, last_level=None, **kwargs): """ Create a Nes class from scratch. @@ -87,6 +88,7 @@ def create_nes(comm=None, info=False, projection=None, parallel_method='Y', bala if projection is None: if parallel_method == 'Y': warnings.warn("Parallel method cannot be 'Y' to create points NES. Setting it to 'X'") + sys.stderr.flush() parallel_method = 'X' elif parallel_method == 'T': raise NotImplementedError("Parallel method T not implemented yet") @@ -126,8 +128,7 @@ def from_shapefile(path, method=None, parallel_method='Y', **kwargs): 1. Create NES grid. 2. Create shapefile for grid. - 3. Read shapefile from mask. - 4. Spatial join to add shapefile variables to NES variables. + 3. Spatial join to add shapefile variables to NES variables. Parameters ---------- @@ -148,10 +149,7 @@ def from_shapefile(path, method=None, parallel_method='Y', **kwargs): # Create shapefile for grid nessy.create_shapefile() - # Read shapefile - shapefile = gpd.read_file(path) - # Make spatial join - nessy.spatial_join(shapefile, method=method) + nessy.spatial_join(path, method=method) return nessy diff --git a/nes/load_nes.py b/nes/load_nes.py index 5bfd333fc4661ec1f9feffe82dfe4d726051b13e..2113b485281c8b298bd1d43c6b2b99a2566765e9 100644 --- a/nes/load_nes.py +++ b/nes/load_nes.py @@ -1,12 +1,16 @@ #!/usr/bin/env python import os +import sys from mpi4py import MPI from netCDF4 import Dataset import warnings - +import numpy as np from .nc_projections import * +DIM_VAR_NAMES = ['lat', 'latitude', 'lat_bnds', 'lon', 'longitude', 'lon_bnds', 'time', 'time_bnds', 'lev', 'level', + 'cell_area', 'crs', 'rotated_pole', 'x', 'y', 'rlat', 'rlon', 'Lambert_conformal', 'mercator'] + def open_netcdf(path, comm=None, xarray=False, info=False, parallel_method='Y', avoid_first_hours=0, avoid_last_hours=0, first_level=0, last_level=None, balanced=False): @@ -67,6 +71,7 @@ def open_netcdf(path, comm=None, xarray=False, info=False, parallel_method='Y', elif __is_points(dataset): if parallel_method == 'Y': warnings.warn("Parallel method cannot be 'Y' to create points NES. Setting it to 'X'") + sys.stderr.flush() parallel_method = 'X' if __is_points_ghost(dataset): # Points - GHOST @@ -270,15 +275,53 @@ def concatenate_netcdfs(nessy_list, comm=None, info=False, parallel_method='Y', nessy_first = nessy_list[0] for i, aux_nessy in enumerate(nessy_list[1:]): if isinstance(aux_nessy, str): - aux_nessy = open_netcdf(aux_nessy, - comm=comm, - parallel_method=parallel_method, - avoid_first_hours=avoid_first_hours, - avoid_last_hours=avoid_last_hours, - first_level=first_level, - last_level=last_level, - balanced=balanced - ) - nessy_first.concatenate(aux_nessy) + nc_add = Dataset(filename=aux_nessy, mode='r') + for var_name, var_info in nc_add.variables.items(): + if var_name not in DIM_VAR_NAMES: + nessy_first.variables[var_name] = {} + var_dims = var_info.dimensions + # Read data in 4 dimensions + if len(var_dims) < 2: + data = var_info[:] + elif len(var_dims) == 2: + data = var_info[nessy_first.read_axis_limits['y_min']:nessy_first.read_axis_limits['y_max'], + nessy_first.read_axis_limits['x_min']:nessy_first.read_axis_limits['x_max']] + data = data.reshape(1, 1, data.shape[-2], data.shape[-1]) + elif len(var_dims) == 3: + if 'strlen' in var_dims: + data = var_info[nessy_first.read_axis_limits['y_min']:nessy_first.read_axis_limits['y_max'], + nessy_first.read_axis_limits['x_min']:nessy_first.read_axis_limits['x_max'], + :] + data_aux = np.empty(shape=(data.shape[0], data.shape[1]), dtype=np.object) + for lat_n in range(data.shape[0]): + for lon_n in range(data.shape[1]): + data_aux[lat_n, lon_n] = ''.join( + data[lat_n, lon_n].tostring().decode('ascii').replace('\x00', '')) + data = data_aux.reshape((1, 1, data_aux.shape[-2], data_aux.shape[-1])) + else: + data = var_info[nessy_first.read_axis_limits['t_min']:nessy_first.read_axis_limits['t_max'], + nessy_first.read_axis_limits['y_min']:nessy_first.read_axis_limits['y_max'], + nessy_first.read_axis_limits['x_min']:nessy_first.read_axis_limits['x_max']] + data = data.reshape(data.shape[-3], 1, data.shape[-2], data.shape[-1]) + elif len(var_dims) == 4: + data = var_info[nessy_first.read_axis_limits['t_min']:nessy_first.read_axis_limits['t_max'], + nessy_first.read_axis_limits['z_min']:nessy_first.read_axis_limits['z_max'], + nessy_first.read_axis_limits['y_min']:nessy_first.read_axis_limits['y_max'], + nessy_first.read_axis_limits['x_min']:nessy_first.read_axis_limits['x_max']] + else: + raise TypeError("{} data shape is nto accepted".format(var_dims)) + + nessy_first.variables[var_name]['data'] = data + # Avoid some attributes + for attrname in var_info.ncattrs(): + if attrname not in ['missing_value', '_FillValue']: + value = getattr(var_info, attrname) + if value in ['unitless', '-']: + value = '' + nessy_first.variables[var_name][attrname] = value + nc_add.close() + + else: + nessy_first.concatenate(aux_nessy) return nessy_first diff --git a/nes/methods/__init__.py b/nes/methods/__init__.py index 22c351a85dec0724f58fe1b70502c171b5286c7a..772adacfae71525d99d30e987a427decf012c3f5 100644 --- a/nes/methods/__init__.py +++ b/nes/methods/__init__.py @@ -1,3 +1,4 @@ from .vertical_interpolation import add_4d_vertical_info from .vertical_interpolation import interpolate_vertical from .horizontal_interpolation import interpolate_horizontal +from .spatial_join import spatial_join diff --git a/nes/methods/horizontal_interpolation.py b/nes/methods/horizontal_interpolation.py index 897327fb04b2f6b288a939e868a5568a6e7c0518..ec3840ff9842a7d9857837d2c2c3f2182d24c888 100644 --- a/nes/methods/horizontal_interpolation.py +++ b/nes/methods/horizontal_interpolation.py @@ -4,6 +4,7 @@ import sys import warnings import numpy as np import pandas as pd +from geopandas import GeoSeries import os import nes from mpi4py import MPI @@ -13,6 +14,8 @@ from datetime import datetime from warnings import warn import copy import pyproj +import gc +import psutil # CONSTANTS NEAREST_OPTS = ['NearestNeighbour', 'NearestNeighbours', 'nn', 'NN'] @@ -20,7 +23,7 @@ CONSERVATIVE_OPTS = ['Conservative', 'Area_Conservative', 'cons', 'conservative' def interpolate_horizontal(self, dst_grid, weight_matrix_path=None, kind='NearestNeighbour', n_neighbours=4, - info=False, to_providentia=False, only_create_wm=False, wm=None): + info=False, to_providentia=False, only_create_wm=False, wm=None, flux=False): """ Horizontal methods from one grid to another one. @@ -33,7 +36,7 @@ def interpolate_horizontal(self, dst_grid, weight_matrix_path=None, kind='Neares weight_matrix_path : str, None Path to the weight matrix to read/create. kind : str - Kind of horizontal methods. Accepted values: ['NearestNeighbour', 'Conservative']. + Kind of horizontal interpolation. Accepted values: ['NearestNeighbour', 'Conservative']. n_neighbours : int Used if kind == NearestNeighbour. Number of nearest neighbours to interpolate. Default: 4. info : bool @@ -44,16 +47,18 @@ def interpolate_horizontal(self, dst_grid, weight_matrix_path=None, kind='Neares Indicates if you want to only create the Weight Matrix. wm : Nes Weight matrix Nes File + flux : bool + Indicates if you want to calculate the weight matrix for flux variables """ if info and self.master: print("Creating Weight Matrix") # Obtain weight matrix if self.parallel_method == 'T': weights, idx = get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbours, - only_create_wm, wm) + only_create_wm, wm, flux) elif self.parallel_method in ['Y', 'X']: weights, idx = get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbours, - only_create_wm, wm) + only_create_wm, wm, flux) else: raise NotImplemented("Parallel method {0} is not implemented yet for horizontal interpolations. Use 'T'".format( self.parallel_method)) @@ -94,7 +99,7 @@ def interpolate_horizontal(self, dst_grid, weight_matrix_path=None, kind='Neares # Apply weights for var_name, var_info in self.variables.items(): if info and self.master: - print("\t{var} horizontal methods".format(var=var_name)) + print("\t{var} horizontal interpolation".format(var=var_name)) sys.stdout.flush() src_shape = var_info['data'].shape if isinstance(dst_grid, nes.PointsNes): @@ -140,6 +145,7 @@ def interpolate_horizontal(self, dst_grid, weight_matrix_path=None, kind='Neares else: msg = "The final projection must be points to interpolate an experiment and get it in Providentia format." warnings.warn(msg) + sys.stderr.flush() else: # Convert dimensions (time, lev, lat, lon) or (time, lat, lon) to (time, station) for interpolated variables # and reshape data @@ -194,7 +200,7 @@ def get_src_data(comm, var_data, idx, parallel_method): # noinspection DuplicatedCode -def get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbours, only_create, wm): +def get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbours, only_create, wm, flux): """ To obtain the weights and source data index through the T axis. @@ -207,13 +213,15 @@ def get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbour weight_matrix_path : str, None Path to the weight matrix to read/create. kind : str - Kind of horizontal methods. Accepted values: ['NearestNeighbour', 'Conservative']. + Kind of horizontal interpolation. Accepted values: ['NearestNeighbour', 'Conservative']. n_neighbours : int Used if kind == NearestNeighbour. Number of nearest neighbours to interpolate. Default: 4. only_create : bool Indicates if you want to only create the Weight Matrix. wm : Nes Weight matrix Nes File + flux : bool + Indicates if you want to calculate the weight matrix for flux variables Returns ------- @@ -235,6 +243,7 @@ def get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbour if len(weight_matrix.lev['data']) != n_neighbours: warn("The selected weight matrix does not have the same number of nearest neighbours." + "Re-calculating again but not saving it.") + sys.stderr.flush() weight_matrix = create_nn_weight_matrix(self, dst_grid, n_neighbours=n_neighbours) else: weight_matrix = True @@ -245,8 +254,8 @@ def get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbour weight_matrix = create_nn_weight_matrix(self, dst_grid, n_neighbours=n_neighbours, wm_path=weight_matrix_path) elif kind in CONSERVATIVE_OPTS: - weight_matrix = create_area_conservative_weight_matrix(self, dst_grid, - wm_path=weight_matrix_path) + weight_matrix = create_area_conservative_weight_matrix( + self, dst_grid, wm_path=weight_matrix_path, flux=flux) else: raise NotImplementedError(kind) else: @@ -259,7 +268,7 @@ def get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbour if kind in NEAREST_OPTS: weight_matrix = create_nn_weight_matrix(self, dst_grid, n_neighbours=n_neighbours) elif kind in CONSERVATIVE_OPTS: - weight_matrix = create_area_conservative_weight_matrix(self, dst_grid) + weight_matrix = create_area_conservative_weight_matrix(self, dst_grid, flux=flux) else: raise NotImplementedError(kind) else: @@ -288,7 +297,7 @@ def get_weights_idx_t_axis(self, dst_grid, weight_matrix_path, kind, n_neighbour # noinspection DuplicatedCode -def get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbours, only_create, wm): +def get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbours, only_create, wm, flux): """ To obtain the weights and source data index through the X or Y axis. @@ -301,13 +310,15 @@ def get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbou weight_matrix_path : str, None Path to the weight matrix to read/create. kind : str - Kind of horizontal methods. Accepted values: ['NearestNeighbour', 'Conservative']. + Kind of horizontal interpolation. Accepted values: ['NearestNeighbour', 'Conservative']. n_neighbours : int Used if kind == NearestNeighbour. Number of nearest neighbours to interpolate. Default: 4. only_create : bool Indicates if you want to only create the Weight Matrix. wm : Nes Weight matrix Nes File + flux : bool + Indicates if you want to calculate the weight matrix for flux variables Returns ------- @@ -317,6 +328,7 @@ def get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbou if isinstance(dst_grid, nes.PointsNes) and weight_matrix_path is not None: if self.master: warn("To point weight matrix cannot be saved.") + sys.stderr.flush() weight_matrix_path = None if wm is not None: @@ -334,6 +346,7 @@ def get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbou if len(weight_matrix.lev['data']) != n_neighbours: warn("The selected weight matrix does not have the same number of nearest neighbours." + "Re-calculating again but not saving it.") + sys.stderr.flush() weight_matrix = create_nn_weight_matrix(self, dst_grid, n_neighbours=n_neighbours) else: weight_matrix = True @@ -345,7 +358,8 @@ def get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbou else: weight_matrix = True elif kind in CONSERVATIVE_OPTS: - weight_matrix = create_area_conservative_weight_matrix(self, dst_grid, wm_path=weight_matrix_path) + weight_matrix = create_area_conservative_weight_matrix( + self, dst_grid, wm_path=weight_matrix_path, flux=flux) else: raise NotImplementedError(kind) @@ -355,7 +369,7 @@ def get_weights_idx_xy_axis(self, dst_grid, weight_matrix_path, kind, n_neighbou if kind in NEAREST_OPTS: weight_matrix = create_nn_weight_matrix(self, dst_grid, n_neighbours=n_neighbours) elif kind in CONSERVATIVE_OPTS: - weight_matrix = create_area_conservative_weight_matrix(self, dst_grid) + weight_matrix = create_area_conservative_weight_matrix(self, dst_grid, flux=flux) else: raise NotImplementedError(kind) @@ -434,6 +448,8 @@ def create_nn_weight_matrix(self, dst_grid, n_neighbours=4, wm_path=None, info=F Final projection Nes object. n_neighbours : int Used if kind == NearestNeighbour. Number of nearest neighbours to interpolate. Default: 4. + wm_path : str + Path where write the weight matrix info: bool Indicates if you want to print extra info during the methods process. @@ -516,7 +532,7 @@ def create_nn_weight_matrix(self, dst_grid, n_neighbours=4, wm_path=None, info=F return weight_matrix -def create_area_conservative_weight_matrix(self, dst_nes, wm_path=None, info=False): +def create_area_conservative_weight_matrix(self, dst_nes, wm_path=None, flux=False, info=False): """ To create the weight matrix with the area conservative method. @@ -528,7 +544,8 @@ def create_area_conservative_weight_matrix(self, dst_nes, wm_path=None, info=Fal Final projection Nes object. wm_path : str Path where write the weight matrix - + flux : bool + Indicates if you want to calculate the weight matrix for flux variables info: bool Indicates if you want to print extra info during the methods process. @@ -540,83 +557,94 @@ def create_area_conservative_weight_matrix(self, dst_nes, wm_path=None, info=Fal if info and self.master: print("\tCreating area conservative Weight Matrix") sys.stdout.flush() + + my_crs = pyproj.CRS.from_proj4("+proj=latlon") # Common projection for both shapefiles + # Get a portion of the destiny grid if dst_nes.shapefile is None: dst_nes.create_shapefile() dst_grid = copy.deepcopy(dst_nes.shapefile) - # Get the complete source grid + # Formatting Destination grid + dst_grid.to_crs(crs=my_crs, inplace=True) + dst_grid['FID_dst'] = dst_grid.index + + # Preparing Source grid if self.shapefile is None: self.create_shapefile() src_grid = copy.deepcopy(self.shapefile) - if self.parallel_method == 'T': - # All process has the same shapefile - pass - else: + # Formatting Source grid + src_grid.to_crs(crs=my_crs, inplace=True) + + # Serialize index intersection function to avoid memory problems + if self.size > 1 and self.parallel_method != 'T': src_grid = self.comm.gather(src_grid, root=0) + dst_grid = self.comm.gather(dst_grid, root=0) if self.master: src_grid = pd.concat(src_grid) - src_grid = self.comm.bcast(src_grid) - - my_crs = pyproj.CRS.from_proj4("+proj=latlon") - # Normalizing projections - dst_grid.to_crs(crs=my_crs, inplace=True) - dst_grid['FID_dst'] = dst_grid.index - dst_grid = dst_grid.reset_index() - - # src_grid.to_crs(crs=pyproj.Proj(proj='geocent', ellps='WGS84', datum='WGS84').crs, inplace=True) - src_grid.to_crs(crs=my_crs, inplace=True) - src_grid['FID_src'] = src_grid.index + dst_grid = pd.concat(dst_grid) + if self.master: + src_grid['FID_src'] = src_grid.index + src_grid = src_grid.reset_index() + dst_grid = dst_grid.reset_index() + fid_src, fid_dst = dst_grid.sindex.query_bulk(src_grid.geometry, predicate='intersects') + + # Calculate intersected areas and fractions + intersection_df = pd.DataFrame(columns=["FID_src", "FID_dst"]) + + intersection_df['FID_src'] = np.array(src_grid.loc[fid_src, 'FID_src'], dtype=np.uint32) + intersection_df['FID_dst'] = np.array(dst_grid.loc[fid_dst, 'FID_dst'], dtype=np.uint32) + + intersection_df['geometry_src'] = src_grid.loc[fid_src, 'geometry'].values + intersection_df['geometry_dst'] = dst_grid.loc[fid_dst, 'geometry'].values + del src_grid, dst_grid, fid_src, fid_dst + # Split the array into smaller arrays in order to scatter the data among the processes + intersection_df = np.array_split(intersection_df, self.size) + else: + intersection_df = None - src_grid = src_grid.reset_index() + intersection_df = self.comm.scatter(intersection_df, root=0) if info and self.master: print("\t\tGrids created and ready to interpolate") sys.stdout.flush() - - # Get intersected areas - inp, res = dst_grid.sindex.query_bulk(src_grid.geometry, predicate='intersects') - - # Calculate intersected areas and fractions - intersection = pd.DataFrame(columns=["FID_src", "FID_dst"]) - intersection['INP'] = np.array(inp, dtype=np.uint32) - intersection['RES'] = np.array(res, dtype=np.uint32) - intersection['FID_src'] = np.array(src_grid.loc[inp, 'FID_src'], dtype=np.uint32) - intersection['FID_dst'] = np.array(dst_grid.loc[res, 'FID_dst'], dtype=np.uint32) - - intersection['geometry_src'] = src_grid.loc[inp, 'geometry'].values - intersection['geometry_dst'] = dst_grid.loc[res, 'geometry'].values - if True: # No Warnings Zone warnings.filterwarnings('ignore') - intersection['intersect_area'] = intersection.apply( - lambda x: x['geometry_src'].intersection(x['geometry_dst']).buffer(0).area, axis=1) - intersection.drop(intersection[intersection['intersect_area'] <= 0].index, inplace=True) + # intersection_df['weight'] = np.array(intersection_df.apply( + # lambda x: x['geometry_src'].intersection(x['geometry_dst']).buffer(0).area / x['geometry_src'].area, + # axis=1), dtype=np.float64) + if flux: + intersection_df['weight'] = np.array(intersection_df.apply( + lambda x: (x['geometry_src'].intersection(x['geometry_dst']).buffer(0).area / x['geometry_src'].area) * + (nes.Nes.calculate_geometry_area([x['geometry_src']])[0] / + nes.Nes.calculate_geometry_area([x['geometry_dst']])[0]), + axis=1), dtype=np.float64) + else: + intersection_df['weight'] = np.array(intersection_df.apply( + lambda x: x['geometry_src'].intersection(x['geometry_dst']).buffer(0).area / x['geometry_src'].area, + axis=1), dtype=np.float64) - intersection["src_area"] = src_grid.loc[intersection['FID_src'], 'geometry'].area.values + intersection_df.drop(columns=["geometry_src", "geometry_dst"], inplace=True) + gc.collect() warnings.filterwarnings('default') - intersection['weight'] = intersection['intersect_area'] / intersection["src_area"] - # Format & Clean - intersection.drop(columns=["geometry_src", "geometry_dst", "src_area", "intersect_area"], inplace=True) - if info and self.master: print("\t\tWeights calculated. Formatting weight matrix.") sys.stdout.flush() # Initialising weight matrix if self.parallel_method != 'T': - intersection = self.comm.gather(intersection, root=0) + intersection_df = self.comm.gather(intersection_df, root=0) if self.master: if self.parallel_method != 'T': - intersection = pd.concat(intersection) - intersection = intersection.set_index(['FID_dst', intersection.groupby('FID_dst').cumcount()]).rename_axis( + intersection_df = pd.concat(intersection_df) + intersection_df = intersection_df.set_index(['FID_dst', intersection_df.groupby('FID_dst').cumcount()]).rename_axis( ('FID', 'level')).sort_index() - intersection.rename(columns={"FID_src": "idx"}, inplace=True) + intersection_df.rename(columns={"FID_src": "idx"}, inplace=True) weight_matrix = dst_nes.copy() weight_matrix.time = [datetime(year=2000, month=1, day=1, hour=0, second=0, microsecond=0)] weight_matrix._time = [datetime(year=2000, month=1, day=1, hour=0, second=0, microsecond=0)] @@ -629,7 +657,7 @@ def create_area_conservative_weight_matrix(self, dst_nes, wm_path=None, info=Fal weight_matrix.set_communicator(MPI.COMM_SELF) - weight_matrix.set_levels({'data': np.arange(intersection.index.get_level_values('level').max() + 1), + weight_matrix.set_levels({'data': np.arange(intersection_df.index.get_level_values('level').max() + 1), 'dimensions': ('lev',), 'units': '', 'positive': 'up'}) @@ -653,7 +681,7 @@ def create_area_conservative_weight_matrix(self, dst_nes, wm_path=None, info=Fal # Filling Weight matrix variables for aux_lev in weight_matrix.lev['data']: - aux_data = intersection.xs(level='level', key=aux_lev) + aux_data = intersection_df.xs(level='level', key=aux_lev) weight_matrix.variables['weight']['data'][0, aux_lev, aux_data.index] = aux_data.loc[:, 'weight'].values weight_matrix.variables['idx']['data'][0, aux_lev, aux_data.index] = aux_data.loc[:, 'idx'].values # Re-shaping diff --git a/nes/methods/spatial_join.py b/nes/methods/spatial_join.py new file mode 100644 index 0000000000000000000000000000000000000000..33df0914e5e3f10f77bd00376aa8f77ec93d3fce --- /dev/null +++ b/nes/methods/spatial_join.py @@ -0,0 +1,278 @@ +#!/usr/bin/env python + +import sys +import warnings +import geopandas as gpd +from geopandas import GeoDataFrame +import nes +import numpy as np +import pandas as pd +from shapely.geos import TopologicalError + + +def spatial_join(self, ext_shp, method=None, var_list=None, info=False): + """ + Compute overlay intersection of two GeoPandasDataFrames. + + Parameters + ---------- + self : nes.Nes + ext_shp : GeoPandasDataFrame or str + File or path from where the data will be obtained on the intersection. + method : str + Overlay method. Accepted values: ['nearest', 'intersection', 'centroid']. + var_list : List or None or str + Variables that will be included in the resulting shapefile. + info : bool + Indicates if you want to print the process info or no + """ + if self.master and info: + print("Starting spatial join") + if isinstance(var_list, str): + # Transforming string (variable name) to a list with length 0 + var_list = [var_list] + + # Create source shapefile if it does not exist + if self.shapefile is None: + if self.master and info: + print("\tCreating shapefile") + sys.stdout.flush() + self.create_shapefile() + + ext_shp = prepare_external_shapefile(self, ext_shp=ext_shp, var_list=var_list, info=info) + + if method == 'nearest': + # Nearest centroids to the shapefile polygons + spatial_join_nearest(self, ext_shp=ext_shp, info=info) + elif method == 'intersection': + # Intersect the areas of the shapefile polygons, outside the shapefile there will be NaN + spatial_join_intersection(self, ext_shp=ext_shp, info=info) + elif method == 'centroid': + # Centroids that fall on the shapefile polygons, outside the shapefile there will be NaN + spatial_join_centroid(self, ext_shp=ext_shp, info=info) + + else: + accepted_values = ['nearest', 'intersection', 'centroid'] + raise NotImplementedError('{0} is not implemented. Choose from: {1}'.format(method, accepted_values)) + + return None + + +def prepare_external_shapefile(self, ext_shp, var_list, info=False): + """ + Prepare the external shapefile. + + It is high recommended to pass ext_shp parameter as string because it will clip the external shapefile to the rank. + + 1. Read if it is not already read + 2. Filter variables list + 3. Standardize projections + + Parameters + ---------- + self : nes.Nes + ext_shp : GeoDataFrame or str + External shapefile or path to it + var_list : List[str] or None + External shapefile variables to be computed + info : bool + Indicates if you want to print the information + + Returns + ------- + GeoDataFrame + External shapefile + """ + if isinstance(ext_shp, str): + # Reading external shapefile + if self.master and info: + print("\tReading external shapefile") + # ext_shp = gpd.read_file(ext_shp, include_fields=var_list, mask=self.shapefile.geometry) + ext_shp = gpd.read_file(ext_shp, include_fields=var_list, bbox=get_bbox(self)) + else: + msg = "WARNING!!! " + msg += "External shapefile already read. If you pass the path to the shapefile instead of the opened shapefile " + msg += "a best usage of memory is performed because the external shape will be clipped while reading." + warnings.warn(msg) + sys.stderr.flush() + ext_shp.reset_index(inplace=True) + if var_list is not None: + ext_shp = ext_shp.loc[:, var_list + ['geometry']] + self.comm.Barrier() + if self.master and info: + print("\t\tReading external shapefile done!") + # Standardizing projection + ext_shp = ext_shp.to_crs(self.shapefile.crs) + + return ext_shp + + +def get_bbox(self): + """ + Obtain the bounding box of the rank data + + (lon_min, lat_min, lon_max, lat_max) + + Parameters + ---------- + self : nes.Nes + + Returns + ------- + tuple + Bounding box + """ + bbox = (self.lon_bnds['data'].min(), self.lat_bnds['data'].min(), + self.lon_bnds['data'].max(), self.lat_bnds['data'].max(), ) + return bbox + + +def spatial_join_nearest(self, ext_shp, info=False): + """ + Perform the spatial join using the nearest method + + Parameters + ---------- + self : nes.Nes + ext_shp : GeoDataFrame + External shapefile + info : bool + Indicates if you want to print the information + """ + if self.master and info: + print("\tNearest spatial joint") + sys.stdout.flush() + grid_shp = self.get_centroids_from_coordinates() + # From geodetic coordinates (e.g. 4326) to meters (e.g. 4328) to use sjoin_nearest + # TODO: Check if the projection 4328 does not distort the coordinates too much + # https://gis.stackexchange.com/questions/372564/ + # userwarning-when-trying-to-get-centroid-from-a-polygon-geopandas + # ext_shp = ext_shp.to_crs('EPSG:4328') + # grid_shp = grid_shp.to_crs('EPSG:4328') + + # Calculate spatial joint by distance + aux_grid = gpd.sjoin_nearest(grid_shp, ext_shp, distance_col='distance') + + # Get data from closest shapes to centroids + del aux_grid['geometry'], aux_grid['index_right'] + self.shapefile.loc[aux_grid.index, aux_grid.columns] = aux_grid + + var_list = list(ext_shp.columns) + var_list.remove('geometry') + for var_name in var_list: + self.shapefile.loc[:, var_name] = np.array(self.shapefile.loc[:, var_name], dtype=ext_shp[var_name].dtype) + + return None + + +def spatial_join_centroid(self, ext_shp, info=False): + """ + Perform the spatial join using the centroid method + + Parameters + ---------- + self : nes.Nes + ext_shp : GeoDataFrame + External shapefile + info : bool + Indicates if you want to print the information + """ + if self.master and info: + print("\tCentroid spatial join") + sys.stdout.flush() + if info and self.master: + print("\t\tCalculating centroids") + sys.stdout.flush() + # Get centroids + grid_shp = self.get_centroids_from_coordinates() + + # Calculate spatial joint + if info and self.master: + print("\t\tCalculating centroid spatial join") + sys.stdout.flush() + aux_grid = gpd.sjoin(grid_shp, ext_shp, predicate='within') + + # Get data from shapes where there are centroids, rest will be NaN + del aux_grid['geometry'], aux_grid['index_right'] + self.shapefile.loc[aux_grid.index, aux_grid.columns] = aux_grid + + var_list = list(ext_shp.columns) + var_list.remove('geometry') + for var_name in var_list: + self.shapefile.loc[:, var_name] = np.array(self.shapefile.loc[:, var_name], dtype=ext_shp[var_name].dtype) + + return None + + +def spatial_join_intersection(self, ext_shp, info=False): + """ + Perform the spatial join using the intersection method + + Parameters + ---------- + self : nes.Nes + ext_shp : GeoDataFrame + External shapefile + info : bool + Indicates if you want to print the information + """ + var_list = list(ext_shp.columns) + var_list.remove('geometry') + + grid_shp = self.shapefile + + grid_shp['FID_grid'] = grid_shp.index + grid_shp = grid_shp.reset_index() + # Get intersected areas + # inp, res = ext_shp.sindex.query_bulk(grid_shp.geometry, predicate='intersects') + inp, res = grid_shp.sindex.query_bulk(ext_shp.geometry, predicate='intersects') + + if info: + print('\t\tRank {0:03d}: {1} intersected areas found'.format(self.rank, len(inp))) + sys.stdout.flush() + # Calculate intersected areas and fractions + intersection = pd.DataFrame(columns=['FID', 'ext_shp_id', 'weight']) + intersection['FID'] = np.array(grid_shp.loc[res, 'FID_grid'], dtype=np.uint32) + intersection['ext_shp_id'] = np.array(inp, dtype=np.uint32) + + if len(intersection) > 0: + if True: + # No Warnings Zone + counts = intersection['FID'].value_counts() + warnings.filterwarnings('ignore') + intersection.loc[:, 'weight'] = 1. + + for i, row in intersection.iterrows(): + if isinstance(i, int) and i % 1000 == 0 and info: + print('\t\t\tRank {0:03d}: {1:.3f} %'.format(self.rank, i * 100 / len(intersection))) + sys.stdout.flush() + # Filter to do not calculate percentages over 100% grid cells spatial joint + if counts[row['FID']] > 1: + try: + intersection.loc[i, 'weight'] = grid_shp.loc[res[i], 'geometry'].intersection( + ext_shp.loc[inp[i], 'geometry']).area / grid_shp.loc[res[i], 'geometry'].area + except TopologicalError: + # If for some reason the geometry is corrupted it should work with the buffer function + ext_shp.loc[[inp[i]], 'geometry'] = ext_shp.loc[[inp[i]], 'geometry'].buffer(0) + intersection.loc[i, 'weight'] = grid_shp.loc[res[i], 'geometry'].intersection( + ext_shp.loc[inp[i], 'geometry']).area / grid_shp.loc[res[i], 'geometry'].area + # intersection['intersect_area'] = intersection.apply( + # lambda x: x['geometry_grid'].intersection(x['geometry_ext']).area, axis=1) + intersection.drop(intersection[intersection['weight'] <= 0].index, inplace=True) + + warnings.filterwarnings('default') + + # Choose the biggest area from intersected areas with multiple options + intersection.sort_values('weight', ascending=False, inplace=True) + intersection = intersection.drop_duplicates(subset='FID', keep="first") + intersection = intersection.sort_values('FID').set_index('FID') + + for var_name in var_list: + self.shapefile.loc[intersection.index, var_name] = np.array( + ext_shp.loc[intersection['ext_shp_id'], var_name]) + else: + for var_name in var_list: + self.shapefile.loc[:, var_name] = np.nan + for var_name in var_list: + self.shapefile.loc[:, var_name] = np.array(self.shapefile.loc[:, var_name], dtype=ext_shp[var_name].dtype) + return None diff --git a/nes/nc_projections/default_nes.py b/nes/nc_projections/default_nes.py index a5cdb8af2f83571d2f81aef7e09b4e1cb9f2d313..ab85ea16d5a155e33beb00ab42dd8bb57c48aa17 100644 --- a/nes/nc_projections/default_nes.py +++ b/nes/nc_projections/default_nes.py @@ -9,15 +9,13 @@ from xarray import open_dataset from netCDF4 import Dataset, num2date, date2num from mpi4py import MPI from cfunits import Units -from numpy.ma.core import MaskError +from shapely.geos import TopologicalError import geopandas as gpd from shapely.geometry import Polygon, Point from copy import deepcopy, copy import datetime import pyproj -from ..methods import vertical_interpolation -from ..methods import horizontal_interpolation -from ..methods import cell_measures +from ..methods import vertical_interpolation, horizontal_interpolation, cell_measures, spatial_join from ..nes_formats import to_netcdf_cams_ra @@ -69,7 +67,7 @@ class Nes(object): write_axis_limits : dict Dictionary with the 4D limits of the rank data to write. t_min, t_max, z_min, z_max, y_min, y_max, x_min and x_max. - time : List + time : List[datetime] List of time steps of the rank data. lev : dict Vertical levels dictionary with the portion of 'data' corresponding to the rank values. @@ -79,12 +77,12 @@ class Nes(object): Longitudes dictionary with the portion of 'data' corresponding to the rank values. global_attrs : dict Global attributes with the attribute name as key and data as values. - _var_dim : None, tuple - Tuple with the name of the Y and X dimensions for the variables. - _lat_dim : None, tuple - Tuple with the name of the dimensions of the Latitude values. - _lon_dim : None, tuple - Tuple with the name of the dimensions of the Longitude values. + _var_dim : None or tuple + Name of the Y and X dimensions for the variables. + _lat_dim : None or tuple + Name of the dimensions of the Latitude values. + _lon_dim : None or tuple + Name of the dimensions of the Longitude values. """ def __init__(self, comm=None, path=None, info=False, dataset=None, xarray=False, parallel_method='Y', avoid_first_hours=0, avoid_last_hours=0, first_level=0, last_level=None, create_nes=False, @@ -102,7 +100,7 @@ class Nes(object): Indicates if you want to get reading/writing info. dataset: Dataset NetCDF4-python Dataset to initialize the class. - xarray: bool: + xarray: bool (Not working) Indicates if you want to use xarray as default. parallel_method : str Indicates the parallelization method that you want. Default over Y axis @@ -116,11 +114,11 @@ class Nes(object): Number of hours to remove from last time steps. first_level : int Index of the first level to use. - last_level : int, None + last_level : int or None Index of the last level to use. None if it is the last. create_nes : bool Indicates if you want to create the object from scratch (True) or through an existing file. - times : List, None + times : List[datetime] or None List of times to substitute the current ones while creation. kwargs : Projection dependent parameters to create it from scratch @@ -154,6 +152,7 @@ class Nes(object): # Define parallel method self.parallel_method = parallel_method + self.serial_nc = None # Place to store temporally the serial Nes instance # Get minor and major axes of Earth self.earth_radius = self.get_earth_radius('WGS84') @@ -191,6 +190,10 @@ class Nes(object): # Set NetCDF attributes self.global_attrs = self.__get_global_attributes(create_nes) + # Set string length + # 75 is the standard value used in GHOST data + self.strlen = 75 + else: if dataset is not None: @@ -243,6 +246,9 @@ class Nes(object): # Set NetCDF attributes self.global_attrs = self.__get_global_attributes() + # Get string length + self.strlen = self._get_strlen() + # Writing options self.zip_lvl = 0 @@ -253,6 +259,16 @@ class Nes(object): self.vertical_var_name = None + # Filtering (portion of the filter coordinates function) + idx = self.get_idx_intervals() + self._time = self._time[idx['idx_t_min']:idx['idx_t_max']] + self._lev['data'] = self._lev['data'][idx['idx_z_min']:idx['idx_z_max']] + + self.hours_start = 0 + self.hours_end = 0 + self.last_level = None + self.first_level = None + @staticmethod def new(comm=None, path=None, info=False, dataset=None, xarray=False, create_nes=False, balanced=False, parallel_method='Y', avoid_first_hours=0, avoid_last_hours=0, first_level=0, last_level=None): @@ -269,7 +285,7 @@ class Nes(object): Indicates if you want to get reading/writing info. dataset: Dataset NetCDF4-python Dataset to initialize the class. - xarray: bool: + xarray: bool (Not working) Indicates if you want to use xarray as default. avoid_first_hours : int Number of hours to remove from first time steps. @@ -283,7 +299,7 @@ class Nes(object): Balanced dataset cannot be written in chunking mode. first_level : int Index of the first level to use. - last_level : int, None + last_level : int or None Index of the last level to use. None if it is the last. create_nes : bool Indicates if you want to create the object from scratch (True) or through an existing file. @@ -295,6 +311,37 @@ class Nes(object): return new + def _get_strlen(self, strlen=75): + """ + Get the strlen + + Parameters + ---------- + strlen : int + Max length of the string + """ + + if 'strlen' in self.netcdf.dimensions: + strlen = self.netcdf.dimensions['strlen'].size + else: + strlen = strlen + + return strlen + + def set_strlen(self, strlen=75): + """ + Set the strlen + + Parameters + ---------- + strlen : int + Max length of the string + """ + + self.strlen = strlen + + return None + def __del__(self): """ To delete the Nes object and close all the open datasets. @@ -318,6 +365,7 @@ class Nes(object): del self.lat_bnds del self._lon_bnds del self.lon_bnds + del self.strlen del self.shapefile for cell_measure in self.cell_measures.keys(): if self.cell_measures[cell_measure]['data'] is not None: @@ -342,7 +390,7 @@ class Nes(object): """ d = self.__dict__ - state = {k: d[k] for k in d if k not in ['comm', 'variables', 'netcdf']} + state = {k: d[k] for k in d if k not in ['comm', 'variables', 'netcdf', 'cell_measures']} return state @@ -360,6 +408,35 @@ class Nes(object): return None + def __add__(self, other): + """ + Sum two NES objects + + Parameters + ---------- + other : Nes + Nes to be summed + + Returns + ------- + Nes + Summed Nes object + """ + nessy = self.copy(copy_vars=True) + for var_name in other.variables.keys(): + if var_name not in nessy.variables.keys(): + # Create New variable + nessy.variables[var_name] = deepcopy(other.variables[var_name]) + else: + nessy.variables[var_name]['data'] += other.variables[var_name]['data'] + return nessy + + def __radd__(self, other): + if other == 0 or other is None: + return self + else: + return self.__add__(other) + def copy(self, copy_vars=False): """ Copy the Nes object. @@ -379,9 +456,12 @@ class Nes(object): nessy = deepcopy(self) nessy.netcdf = None if copy_vars: - nessy.variables = nessy._get_lazy_variables() + nessy.set_communicator(self.comm) + nessy.variables = deepcopy(self.variables) + nessy.cell_measures = deepcopy(self.cell_measures) else: nessy.variables = {} + nessy.cell_measures = {} return nessy @@ -456,6 +536,22 @@ class Nes(object): return None + def set_time(self, time_list): + """ + Modify the original level values with new ones. + + Parameters + ---------- + time_list : List[datetime] + List of time steps + """ + if self.parallel_method == 'T': + raise TypeError("Cannot set time on a 'T' parallel method") + self._time = deepcopy(time_list) + self.time = deepcopy(time_list) + + return None + def set_time_bnds(self, time_bnds): """ Modify the original time bounds values with new ones. @@ -480,15 +576,18 @@ class Nes(object): msg += "The given time bounds list has a different length than the time array. " msg += "(time:{0}, bnds:{1}). Time bounds will not be set.".format(len(self._time), len(time_bnds)) warnings.warn(msg) + sys.stderr.flush() else: msg = 'WARNING!!! ' msg += 'There is at least one element in the time bounds to be set that is not a datetime object. ' msg += 'Time bounds will not be set.' warnings.warn(msg) + sys.stderr.flush() return None - def create_single_spatial_bounds(self, coordinates, inc, spatial_nv=2, inverse=False): + @staticmethod + def create_single_spatial_bounds(coordinates, inc, spatial_nv=2, inverse=False): """ Calculate the vertices coordinates. @@ -499,7 +598,7 @@ class Nes(object): inc : float Increment between centre values. spatial_nv : int - Non mandatory parameter that informs the number of vertices that the boundaries must have. Default: 2. + Non-mandatory parameter that informs the number of vertices that the boundaries must have. Default: 2. inverse : bool For some grid latitudes. @@ -538,20 +637,14 @@ class Nes(object): inc_lat = np.abs(np.mean(np.diff(self._lat['data']))) lat_bnds = self.create_single_spatial_bounds(self._lat['data'], inc_lat, spatial_nv=2) - self._lat_bnds = {} - self._lat_bnds['data'] = deepcopy(lat_bnds) - self.lat_bnds = {} - self.lat_bnds['data'] = lat_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - :] + self._lat_bnds = {'data': deepcopy(lat_bnds)} + self.lat_bnds = {'data': lat_bnds[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], :]} inc_lon = np.abs(np.mean(np.diff(self._lon['data']))) lon_bnds = self.create_single_spatial_bounds(self._lon['data'], inc_lon, spatial_nv=2) - self._lon_bnds = {} - self._lon_bnds['data'] = deepcopy(lon_bnds) - self.lon_bnds = {} - self.lon_bnds['data'] = lon_bnds[self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], - :] + self._lon_bnds = {'data': deepcopy(lon_bnds)} + self.lon_bnds = {'data': lon_bnds[self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], :]} return None @@ -563,9 +656,9 @@ class Nes(object): Returns ------- - lon_bnds_mesh : numpy.array + lon_bnds_mesh : numpy.ndarray Longitude boundaries in the mesh format - lat_bnds_mesh : numpy.array + lat_bnds_mesh : numpy.ndarray Latitude boundaries in the mesh format """ if self.size > 1: @@ -595,17 +688,17 @@ class Nes(object): lon_bnds_mesh[1:, 1:] = self.lon_bnds['data'][:, :, 2] lon_bnds_mesh[1:, :-1] = self.lon_bnds['data'][:, :, 3] else: - raise RuntimeError("Invalid number of vertices: {0}".format(self.lat_bnds['data'].shape[-1] )) + raise RuntimeError("Invalid number of vertices: {0}".format(self.lat_bnds['data'].shape[-1])) return lon_bnds_mesh, lat_bnds_mesh def free_vars(self, var_list): """ - Erase the selected variables from the variables information. + Erase the selected variables from the variables' information. Parameters ---------- - var_list : List, str, list + var_list : List or str List (or single string) of the variables to be loaded. """ @@ -632,7 +725,7 @@ class Nes(object): Parameters ---------- - var_list : List, str + var_list : List or str List (or single string) of the variables to be loaded. """ @@ -976,7 +1069,7 @@ class Nes(object): self.set_time_bnds(aux_time_bounds) elif type_op == 'withoutt0': - for var_name, var_info in self.variables.items (): + for var_name, var_info in self.variables.items(): if var_info['data'] is None: self.load(var_name) if op == 'mean': @@ -1191,10 +1284,10 @@ class Nes(object): rows_sum = 0 for proc in range(self.size): - fid_dist[proc] = {'x_min': None, 'x_max': None, - 'y_min': None, 'y_max': None, - 'z_min': None, 'z_max': None, - 't_min': None, 't_max': None} + fid_dist[proc] = {'x_min': 0, 'x_max': None, + 'y_min': 0, 'y_max': None, + 'z_min': 0, 'z_max': None, + 't_min': 0, 't_max': None} if proc < procs_rows_extended: aux_rows = procs_len + 1 else: @@ -1359,7 +1452,10 @@ class Nes(object): """ Close the NetCDF with netcdf4-python. """ - + if (hasattr(self, 'serial_nc')) and (self.serial_nc is not None): + if self.master: + self.serial_nc.close() + self.serial_nc = None if (hasattr(self, 'netcdf')) and (self.netcdf is not None): self.netcdf.close() self.netcdf = None @@ -1423,6 +1519,7 @@ class Nes(object): """ units = self.__parse_time_unit(time.units) + if not hasattr(time, 'calendar'): calendar = 'standard' else: @@ -1477,7 +1574,6 @@ class Nes(object): if self.master: nc_var = self.netcdf.variables['time'] time_data, units, calendar = self.__parse_time(nc_var) - time = num2date(time_data, units, calendar=calendar) time = [aux.replace(second=0, microsecond=0) for aux in time] else: @@ -1536,9 +1632,9 @@ class Nes(object): Returns ------- lat_bnds : List - List of latitude bounds of the NetCDF data. + Latitude bounds of the NetCDF data. lon_bnds : List - List of longitude bounds of the NetCDF data. + Longitude bounds of the NetCDF data. """ if self.is_xarray: @@ -1548,13 +1644,11 @@ class Nes(object): if self.master: if not create_nes: if 'lat_bnds' in self.netcdf.variables.keys(): - lat_bnds = {} - lat_bnds['data'] = self.netcdf.variables['lat_bnds'][:] + lat_bnds = {'data': self.netcdf.variables['lat_bnds'][:]} else: lat_bnds = None if 'lon_bnds' in self.netcdf.variables.keys(): - lon_bnds = {} - lon_bnds['data'] = self.netcdf.variables['lon_bnds'][:] + lon_bnds = {'data': self.netcdf.variables['lon_bnds'][:]} else: lon_bnds = None else: @@ -1581,21 +1675,21 @@ class Nes(object): Returns ------- - cell_measures : dict + dict Dictionary of cell measures of the NetCDF data. """ - cell_measures = {} + c_measures = {} if self.master: if not create_nes: if 'cell_area' in self.netcdf.variables.keys(): - cell_measures['cell_area'] = {} - cell_measures['cell_area']['data'] = self.netcdf.variables['cell_area'][:] - cell_measures = self.comm.bcast(cell_measures, root=0) + c_measures['cell_area'] = {} + c_measures['cell_area']['data'] = self.netcdf.variables['cell_area'][:] + c_measures = self.comm.bcast(c_measures, root=0) self.free_vars(['cell_area']) - return cell_measures + return c_measures def _get_coordinate_dimension(self, possible_names): """ @@ -1795,29 +1889,57 @@ class Nes(object): self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] data = data.reshape(1, 1, data.shape[-2], data.shape[-1]) elif len(var_dims) == 3: - data = nc_var[self.read_axis_limits['t_min']:self.read_axis_limits['t_max'], - self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] - data = data.reshape(data.shape[-3], 1, data.shape[-2], data.shape[-1]) + if 'strlen' in var_dims: + data = nc_var[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], + self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + :] + data_aux = np.empty(shape=(data.shape[0], data.shape[1]), dtype=np.object) + for lat_n in range(data.shape[0]): + for lon_n in range(data.shape[1]): + data_aux[lat_n, lon_n] = ''.join( + data[lat_n, lon_n].tostring().decode('ascii').replace('\x00', '')) + data = data_aux.reshape((1, 1, data_aux.shape[-2], data_aux.shape[-1])) + else: + data = nc_var[self.read_axis_limits['t_min']:self.read_axis_limits['t_max'], + self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], + self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] + data = data.reshape(data.shape[-3], 1, data.shape[-2], data.shape[-1]) elif len(var_dims) == 4: data = nc_var[self.read_axis_limits['t_min']:self.read_axis_limits['t_max'], self.read_axis_limits['z_min']:self.read_axis_limits['z_max'], self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] - # elif len(var_dims) == 5: - # data = nc_var[self.read_axis_limits['t_min']:self.read_axis_limits['t_max'], - # :, - # self.read_axis_limits['z_min']:self.read_axis_limits['z_max'], - # self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - # self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] + elif len(var_dims) == 5: + if 'strlen' in var_dims: + data = nc_var[self.read_axis_limits['t_min']:self.read_axis_limits['t_max'], + self.read_axis_limits['z_min']:self.read_axis_limits['z_max'], + self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], + self.read_axis_limits['x_min']:self.read_axis_limits['x_max'], + :] + data_aux = np.empty(shape=(data.shape[0], data.shape[1], data.shape[2], data.shape[3]), dtype=np.object) + for time_n in range(data.shape[0]): + for lev_n in range(data.shape[1]): + for lat_n in range(data.shape[2]): + for lon_n in range(data.shape[3]): + data_aux[time_n, lev_n, lat_n, lon_n] = ''.join( + data[time_n, lev_n, lat_n, lon_n].tostring().decode('ascii').replace('\x00', '')) + data = data_aux + else: + # data = nc_var[self.read_axis_limits['t_min']:self.read_axis_limits['t_max'], + # :, + # self.read_axis_limits['z_min']:self.read_axis_limits['z_max'], + # self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], + # self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] + raise NotImplementedError('Error with {0}. Only can be read netCDF with 4 dimensions or less'.format( + var_name)) else: raise NotImplementedError('Error with {0}. Only can be read netCDF with 4 dimensions or less'.format( var_name)) + # Missing to nan - try: - data[data.shapefile == True] = np.nan - except (AttributeError, MaskError, ValueError): - pass + if np.ma.is_masked(data): + # This operation is done because sometimes the missing value is lost during the calculation + data[data.mask] = np.nan return data @@ -2025,10 +2147,10 @@ class Nes(object): rows_sum = 0 for proc in range(self.size): - fid_dist[proc] = {'x_min': None, 'x_max': None, - 'y_min': None, 'y_max': None, - 'z_min': None, 'z_max': None, - 't_min': None, 't_max': None} + fid_dist[proc] = {'x_min': 0, 'x_max': None, + 'y_min': 0, 'y_max': None, + 'z_min': 0, 'z_max': None, + 't_min': 0, 't_max': None} if proc < procs_rows_extended: aux_rows = procs_len + 1 else: @@ -2075,6 +2197,9 @@ class Nes(object): netcdf.createDimension('lon', len(self._lon['data'])) netcdf.createDimension('lat', len(self._lat['data'])) + # Create string length dimension + netcdf.createDimension('strlen', self.strlen) + return None def _create_dimension_variables(self, netcdf): @@ -2089,7 +2214,7 @@ class Nes(object): # TIMES time_var = netcdf.createVariable('time', np.float64, ('time',), zlib=self.zip_lvl > 0, complevel=self.zip_lvl) - time_var.units = 'hours since {0}'.format( self._time[0].strftime('%Y-%m-%d %H:%M:%S')) + time_var.units = 'hours since {0}'.format(self._time[0].strftime('%Y-%m-%d %H:%M:%S')) time_var.standard_name = 'time' time_var.calendar = 'standard' time_var.long_name = 'time' @@ -2181,6 +2306,10 @@ class Nes(object): for var_name in self.variables.keys(): self.variables[var_name]['cell_measures'] = 'area: cell_area' + if self.info: + print("Rank {0:03d}: Cell measures done".format(self.rank)) + return None + def _create_variables(self, netcdf, chunking=False): """ Create the netCDF file variables. @@ -2194,101 +2323,237 @@ class Nes(object): """ for i, (var_name, var_dict) in enumerate(self.variables.items()): - if var_dict['data'] is not None: + + if isinstance(var_dict['data'], int) and var_dict['data'] == 0: + var_dims = ('time', 'lev',) + self._var_dim + var_dtype = np.float32 + else: + # Get dimensions + if var_dict['data'] is None or len(var_dict['data'].shape) == 4: + var_dims = ('time', 'lev',) + self._var_dim + else: + var_dims = self._var_dim + + # Get data type + if 'dtype' in var_dict.keys(): + var_dtype = var_dict['dtype'] + if var_dict['data'] is not None and var_dtype != var_dict['data'].dtype: + msg = "WARNING!!! " + msg += "Different data types for variable {0}. ".format(var_name) + msg += "Input dtype={0}. Data dtype={1}.".format(var_dtype, var_dict['data'].dtype) + warnings.warn(msg) + sys.stderr.flush() + try: + var_dict['data'] = var_dict['data'].astype(var_dtype) + except Exception as e: # TODO: Detect exception + print(e) + raise TypeError("It was not possible to cast the data to the input dtype.") + else: + var_dtype = var_dict['data'].dtype + + # Transform objects into strings + if var_dtype == np.dtype(object): + var_dict['data'] = var_dict['data'].astype(str) + var_dtype = var_dict['data'].dtype + + # Convert list of strings to chars for parallelization + if not np.issubdtype(var_dtype, np.number): + try: + # Get unicode + unicode_type = len(max(var_dict['data'].flatten(), key=len)) + + if ((var_dict['data'].dtype == np.dtype(' 0, complevel=self.zip_lvl) + else: + if self.balanced: + raise NotImplementedError("A balanced data cannot be chunked.") + if self.master: + chunk_size = var_dict['data'].shape + else: + chunk_size = None + chunk_size = self.comm.bcast(chunk_size, root=0) + var = netcdf.createVariable(var_name, var_dtype, var_dims, + zlib=self.zip_lvl > 0, complevel=self.zip_lvl, + chunksizes=chunk_size) + if self.info: + print("Rank {0:03d}: Var {1} created ({2}/{3})".format( + self.rank, var_name, i + 1, len(self.variables))) + if self.size > 1: + var.set_collective(True) if self.info: - print("Rank {0:03d}: Writing {1} var ({2}/{3})".format( + print("Rank {0:03d}: Var {1} collective ({2}/{3})".format( self.rank, var_name, i + 1, len(self.variables))) - try: - if not chunking: - var = netcdf.createVariable(var_name, var_dict['data'].dtype, ('time', 'lev',) + self._var_dim, - zlib=self.zip_lvl > 0, complevel=self.zip_lvl) - else: - if self.balanced: - raise NotImplementedError("A balanced data cannot be chunked.") - if self.master: - chunk_size = var_dict['data'].shape - else: - chunk_size = None - chunk_size = self.comm.bcast(chunk_size, root=0) - var = netcdf.createVariable(var_name, var_dict['data'].dtype, ('time', 'lev',) + self._var_dim, - zlib=self.zip_lvl > 0, complevel=self.zip_lvl, - chunksizes=chunk_size) - if self.info: - print("Rank {0:03d}: Var {1} created ({2}/{3})".format( - self.rank, var_name, i + 1, len(self.variables))) - if self.size > 1: - var.set_collective(True) + + for att_name, att_value in var_dict.items(): + if att_name == 'data': + + if att_value is not None: + if self.info: + print("Rank {0:03d}: Filling {1})".format(self.rank, var_name)) + if isinstance(att_value, int) and att_value == 0: + var[self.write_axis_limits['t_min']:self.write_axis_limits['t_max'], + self.write_axis_limits['z_min']:self.write_axis_limits['z_max'], + self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max']] = 0 + + elif len(att_value.shape) == 5: + if 'strlen' in var_dims: + var[self.write_axis_limits['t_min']:self.write_axis_limits['t_max'], + self.write_axis_limits['z_min']:self.write_axis_limits['z_max'], + self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], + :] = att_value + else: + raise NotImplementedError('It is not possible to write 5D variables.') + + elif len(att_value.shape) == 4: + var[self.write_axis_limits['t_min']:self.write_axis_limits['t_max'], + self.write_axis_limits['z_min']:self.write_axis_limits['z_max'], + self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max']] = att_value + + elif len(att_value.shape) == 3: + if 'strlen' in var_dims: + var[self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], + self.write_axis_limits['x_min']:self.write_axis_limits['x_max'], + :] = att_value + else: + raise NotImplementedError('It is not possible to write 3D variables.') + if self.info: - print("Rank {0:03d}: Var {1} collective ({2}/{3})".format( + print("Rank {0:03d}: Var {1} data ({2}/{3})".format( self.rank, var_name, i + 1, len(self.variables))) + elif att_name not in ['chunk_size', 'var_dims', 'dimensions', 'dtype']: + var.setncattr(att_name, att_value) + + self._set_var_crs(var) + if self.info: + print("Rank {0:03d}: Var {1} completed ({2}/{3})".format( + self.rank, var_name, i + 1, len(self.variables))) + return None + + def append_time_step_data(self, i_time): + """ + Fill the netCDF data for the indicated index time. - for att_name, att_value in var_dict.items(): - if att_name == 'data': + Parameters + ---------- + i_time : int + index of the time step to write + """ + if self.serial_nc is not None: + try: + data = self._gather_data(self.variables) + except KeyError: + # Key Error means string data + data = self.__gather_data_py_object(self.variables) + if self.master: + self.serial_nc.variables = data + self.serial_nc.append_time_step_data(i_time) + self.comm.Barrier() + else: + for i, (var_name, var_dict) in enumerate(self.variables.items()): + for att_name, att_value in var_dict.items(): + if att_name == 'data': + + if att_value is not None: if self.info: print("Rank {0:03d}: Filling {1})".format(self.rank, var_name)) - try: - var[self.write_axis_limits['t_min']:self.write_axis_limits['t_max'], + var = self.netcdf.variables[var_name] + if isinstance(att_value, int) and att_value == 0: + var[i_time, self.write_axis_limits['z_min']:self.write_axis_limits['z_max'], self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], - self.write_axis_limits['x_min']:self.write_axis_limits['x_max']] = att_value - except ValueError: - var[self.write_axis_limits['t_min']:self.write_axis_limits['t_max'], - 0, + self.write_axis_limits['x_min']:self.write_axis_limits['x_max']] = 0 + elif len(att_value.shape) == 4: + var[i_time, + self.write_axis_limits['z_min']:self.write_axis_limits['z_max'], self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], self.write_axis_limits['x_min']:self.write_axis_limits['x_max']] = att_value - # msg = "*WARNING* '{0}' variable is a 3D field. Setting it on first (0) layer.".format( - # var_name) - # warn(msg) - except IndexError: - raise IndexError("Different shapes. out_shape={0}, data_shp={1}".format( - var[self.write_axis_limits['t_min']:self.write_axis_limits['t_max'], - self.write_axis_limits['z_min']:self.write_axis_limits['z_max'], - self.write_axis_limits['y_min']:self.write_axis_limits['y_max'], - self.write_axis_limits['x_min']:self.write_axis_limits['x_max']].shape, - att_value.shape)) + + elif len(att_value.shape) == 3: + raise NotImplementedError('It is not possible to write 3D variables.') + else: + raise NotImplementedError("SHAPE APPEND ERROR: {0}".format(att_value.shape)) if self.info: - print("Rank {0:03d}: Var {1} data ({2}/{3})".format(self.rank, var_name, i + 1, - len(self.variables))) - elif att_name not in ['chunk_size', 'var_dims', 'dimensions']: - var.setncattr(att_name, att_value) - self._set_var_crs(var) - if self.info: - print("Rank {0:03d}: Var {1} completed ({2}/{3})".format(self.rank, var_name, i + 1, - len(self.variables))) - except Exception as e: - print("**ERROR** an error has occurred while writing the '{0}' variable".format(var_name)) - # print("**ERROR** an error has occurredred while writing the '{0}' variable".format(var_name), - # file=sys.stderr) - raise e - else: - msg = 'WARNING!!! ' - msg += 'Variable {0} was not loaded. It will not be written.'.format(var_name) - warnings.warn(msg) + print("Rank {0:03d}: Var {1} data ({2}/{3})".format( + self.rank, var_name, i + 1, len(self.variables))) + else: + raise ValueError("Cannot append None Data for {0}".format(var_name)) + else: + # Metadata already writen + pass return None - def _create_centre_coordinates(self): - """ - Must be implemented on inner class. + def _create_centre_coordinates(self, **kwargs): """ + Calculate centre latitudes and longitudes from grid details. - return None + Must be implemented on inner classes - def _create_metadata(self, netcdf): - """ - Must be implemented on inner class. + Returns + ---------- + centre_lat : dict + Dictionary with data of centre latitudes in 1D + centre_lon : dict + Dictionary with data of centre longitudes in 1D """ return None - def _set_crs(self, netcdf): + def _create_metadata(self, netcdf): """ Must be implemented on inner class. - - Parameters - ---------- - netcdf : Dataset - netcdf4-python Dataset. """ return None @@ -2306,7 +2571,7 @@ class Nes(object): return None - def __to_netcdf_py(self, path, chunking=False): + def __to_netcdf_py(self, path, chunking=False, keep_open=False): """ Create the NetCDF using netcdf4-python methods. @@ -2338,8 +2603,6 @@ class Nes(object): # Create cell measures self._create_cell_measures(netcdf) - if self.info: - print("Rank {0:03d}: Cell measures done".format(self.rank)) # Create variables self._create_variables(netcdf, chunking=chunking) @@ -2353,15 +2616,18 @@ class Nes(object): netcdf.setncattr(att_name, att_value) netcdf.setncattr('Conventions', 'CF-1.7') - netcdf.close() + if keep_open: + self.netcdf = netcdf + else: + netcdf.close() return None def __to_netcdf_cams_ra(self, path): return to_netcdf_cams_ra(self, path) - def to_netcdf(self, path, compression_level=0, serial=False, info=False, - chunking=False, type='NES'): + def to_netcdf(self, path, compression_level=0, serial=False, info=False, chunking=False, type='NES', + keep_open=False): """ Write the netCDF output file. @@ -2376,37 +2642,50 @@ class Nes(object): info : bool Indicates if you want to print the information of each writing step by stdout Default: False. chunking : bool - Indicates if you want a chunked netCDF output. Only available with non serial writes. Default: False. + Indicates if you want a chunked netCDF output. Only available with non-serial writes. Default: False. + type : str + Type to NetCDf to write. 'CAMS_RA' or 'NES' """ - + nc_type = type old_info = self.info self.info = info - + self.serial_nc = None self.zip_lvl = compression_level if self.is_xarray: raise NotImplementedError("Writing with xarray not implemented") else: # if serial: if serial and self.size > 1: - data = self._gather_data() + try: + data = self._gather_data(self.variables) + except KeyError: + data = self.__gather_data_py_object(self.variables) + try: + c_measures = self._gather_data(self.cell_measures) + except KeyError: + c_measures = self.__gather_data_py_object(self.cell_measures) if self.master: new_nc = self.copy(copy_vars=False) new_nc.set_communicator(MPI.COMM_SELF) new_nc.variables = data + new_nc.cell_measures = c_measures if type == 'NES': - new_nc.__to_netcdf_py(path) + new_nc.__to_netcdf_py(path, keep_open=keep_open) elif type == 'CAMS_RA': new_nc.__to_netcdf_cams_ra(path) else: raise ValueError( - "Unknown NetCDF type '{0}'. Use 'CAMS_RA' or 'NES'; default='NES'".format(type)) + "Unknown NetCDF type '{0}'. Use 'CAMS_RA' or 'NES'; default='NES'".format(nc_type)) + self.serial_nc = new_nc + else: + self.serial_nc = True else: - if type == 'NES': - self.__to_netcdf_py(path, chunking=chunking) - elif type == 'CAMS_RA': + if nc_type == 'NES': + self.__to_netcdf_py(path, chunking=chunking, keep_open=keep_open) + elif nc_type == 'CAMS_RA': self.__to_netcdf_cams_ra(path) else: - raise ValueError("Unknown NetCDF type '{0}'. Use 'CAMS_RA' or 'NES'; default='NES'".format(type)) + raise ValueError("Unknown NetCDF type '{0}'. Use 'CAMS_RA' or 'NES'; default='NES'".format(nc_type)) self.info = old_info @@ -2522,17 +2801,27 @@ class Nes(object): Dictionary with the grib2 keys. grib_template_path : str Path to the grib2 file to use as template. + lat_flip : bool + Indicates if the latitude values (and data) has to be flipped info : bool Indicates if you want to print extra information during the process. """ # if serial: if self.parallel_method in ['X', 'Y'] and self.size > 1: - data = self._gather_data() + try: + data = self._gather_data(self.variables) + except KeyError: + data = self.__gather_data_py_object(self.variables) + try: + c_measures = self._gather_data(self.cell_measures) + except KeyError: + c_measures = self.__gather_data_py_object(self.cell_measures) if self.master: new_nc = self.copy(copy_vars=False) new_nc.set_communicator(MPI.COMM_SELF) new_nc.variables = data + new_nc.cell_measures = c_measures new_nc.__to_grib2(path, grib_keys, grib_template_path, lat_flip=lat_flip, info=info) else: self.__to_grib2(path, grib_keys, grib_template_path, lat_flip=lat_flip, info=info) @@ -2548,50 +2837,55 @@ class Nes(object): shapefile : GeoPandasDataFrame Shapefile dataframe. """ + + if self.shapefile is None: - if self._lat_bnds is None or self._lon_bnds is None: - self.create_spatial_bounds() - - # Reshape arrays to create geometry - aux_shape = (self.lat_bnds['data'].shape[0], self.lon_bnds['data'].shape[0], 4) - lon_bnds_aux = np.empty(aux_shape) - lon_bnds_aux[:, :, 0] = self.lon_bnds['data'][np.newaxis, :, 0] - lon_bnds_aux[:, :, 1] = self.lon_bnds['data'][np.newaxis, :, 1] - lon_bnds_aux[:, :, 2] = self.lon_bnds['data'][np.newaxis, :, 1] - lon_bnds_aux[:, :, 3] = self.lon_bnds['data'][np.newaxis, :, 0] - - lon_bnds = lon_bnds_aux - del lon_bnds_aux - - lat_bnds_aux = np.empty(aux_shape) - lat_bnds_aux[:, :, 0] = self.lat_bnds['data'][:, np.newaxis, 0] - lat_bnds_aux[:, :, 1] = self.lat_bnds['data'][:, np.newaxis, 0] - lat_bnds_aux[:, :, 2] = self.lat_bnds['data'][:, np.newaxis, 1] - lat_bnds_aux[:, :, 3] = self.lat_bnds['data'][:, np.newaxis, 1] - - lat_bnds = lat_bnds_aux - del lat_bnds_aux - - aux_b_lats = lat_bnds.reshape((lat_bnds.shape[0] * lat_bnds.shape[1], lat_bnds.shape[2])) - aux_b_lons = lon_bnds.reshape((lon_bnds.shape[0] * lon_bnds.shape[1], lon_bnds.shape[2])) - - # Create dataframe cointaining all polygons - geometry = [] - for i in range(aux_b_lons.shape[0]): - geometry.append(Polygon([(aux_b_lons[i, 0], aux_b_lats[i, 0]), - (aux_b_lons[i, 1], aux_b_lats[i, 1]), - (aux_b_lons[i, 2], aux_b_lats[i, 2]), - (aux_b_lons[i, 3], aux_b_lats[i, 3]), - (aux_b_lons[i, 0], aux_b_lats[i, 0])])) - fids = np.arange(len(self._lat['data']) * len(self._lon['data'])) - fids = fids.reshape((len(self._lat['data']), len(self._lon['data']))) - fids = fids[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] - gdf = gpd.GeoDataFrame(index=pd.Index(name='FID', data=fids.ravel()), - geometry=geometry, - crs="EPSG:4326") - self.shapefile = gdf - + if self._lat_bnds is None or self._lon_bnds is None: + self.create_spatial_bounds() + + # Reshape arrays to create geometry + aux_shape = (self.lat_bnds['data'].shape[0], self.lon_bnds['data'].shape[0], 4) + lon_bnds_aux = np.empty(aux_shape) + lon_bnds_aux[:, :, 0] = self.lon_bnds['data'][np.newaxis, :, 0] + lon_bnds_aux[:, :, 1] = self.lon_bnds['data'][np.newaxis, :, 1] + lon_bnds_aux[:, :, 2] = self.lon_bnds['data'][np.newaxis, :, 1] + lon_bnds_aux[:, :, 3] = self.lon_bnds['data'][np.newaxis, :, 0] + + lon_bnds = lon_bnds_aux + del lon_bnds_aux + + lat_bnds_aux = np.empty(aux_shape) + lat_bnds_aux[:, :, 0] = self.lat_bnds['data'][:, np.newaxis, 0] + lat_bnds_aux[:, :, 1] = self.lat_bnds['data'][:, np.newaxis, 0] + lat_bnds_aux[:, :, 2] = self.lat_bnds['data'][:, np.newaxis, 1] + lat_bnds_aux[:, :, 3] = self.lat_bnds['data'][:, np.newaxis, 1] + + lat_bnds = lat_bnds_aux + del lat_bnds_aux + + aux_b_lats = lat_bnds.reshape((lat_bnds.shape[0] * lat_bnds.shape[1], lat_bnds.shape[2])) + aux_b_lons = lon_bnds.reshape((lon_bnds.shape[0] * lon_bnds.shape[1], lon_bnds.shape[2])) + + # Create dataframe cointaining all polygons + geometry = [] + for i in range(aux_b_lons.shape[0]): + geometry.append(Polygon([(aux_b_lons[i, 0], aux_b_lats[i, 0]), + (aux_b_lons[i, 1], aux_b_lats[i, 1]), + (aux_b_lons[i, 2], aux_b_lats[i, 2]), + (aux_b_lons[i, 3], aux_b_lats[i, 3]), + (aux_b_lons[i, 0], aux_b_lats[i, 0])])) + fids = np.arange(len(self._lat['data']) * len(self._lon['data'])) + fids = fids.reshape((len(self._lat['data']), len(self._lon['data']))) + fids = fids[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], + self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] + gdf = gpd.GeoDataFrame(index=pd.Index(name='FID', data=fids.ravel()), + geometry=geometry, + crs="EPSG:4326") + self.shapefile = gdf + + else: + gdf = self.shapefile + return gdf def write_shapefile(self, path): @@ -2659,6 +2953,7 @@ class Nes(object): if lev is None: msg = 'No vertical level has been specified. The first one will be selected.' warnings.warn(msg) + sys.stderr.flush() idx_lev = 0 else: if lev not in self.lev['data']: @@ -2669,6 +2964,7 @@ class Nes(object): if time is None: msg = 'No time has been specified. The first one will be selected.' warnings.warn(msg) + sys.stderr.flush() idx_time = 0 else: if time not in self.time: @@ -2690,8 +2986,8 @@ class Nes(object): """ Add variables data to shapefile. - var_list : List - List (or single string) of the variables to be loaded and saved in the shapefile. + var_list : List or str + Variables to be loaded and saved in the shapefile. idx_lev : int Index of vertical level for which the data will be saved in the shapefile. idx_time : int @@ -2703,129 +2999,6 @@ class Nes(object): return None - def spatial_join(self, ext_shp, method=None, var_list=None, info=False): - """ - Compute overlay intersection of two GeoPandasDataFrames. - - Parameters - ---------- - ext_shp : GeoPandasDataFrame, str - File or path from where the data will be obtained on the intersection. - method : str - Overlay method. Accepted values: ['nearest', 'intersection', 'centroid']. - var_list : List, None - Variables that will be included in the resulting shapefile. - """ - if isinstance(ext_shp, str): - ext_shp = gpd.read_file(ext_shp) - - # Create shapefile if it does not exist - if self.shapefile is None: - msg = 'Shapefile does not exist. It will be created now.' - warnings.warn(msg) - grid_shp = self.create_shapefile() - else: - grid_shp = self.shapefile - grid_shp = copy(grid_shp) - - # Get variables of interest from shapefile - if var_list is not None: - if isinstance(var_list, str): - var_list = [var_list] - ext_shp = ext_shp.loc[:, var_list + ['geometry']] - else: - var_list = ext_shp.columns.to_list() - var_list.remove('geometry') - - ext_shp = ext_shp.to_crs(grid_shp.crs) - - # Nearest centroids to the shapefile polygons - if method == 'nearest': - if self.master and info: - print("Nearest spatial joint") - # Get centroids - centroids_gdf = self.get_centroids_from_coordinates() - - # From geodetic coordinates (e.g. 4326) to meters (e.g. 4328) to use sjoin_nearest - # TODO: Check if the projection 4328 does not distort the coordinates too much - # https://gis.stackexchange.com/questions/372564/userwarning-when-trying-to-get-centroid-from-a-polygon-geopandas - ext_shp = ext_shp.to_crs('EPSG:4328') - centroids_gdf = centroids_gdf.to_crs('EPSG:4328') - - # Calculate spatial joint by distance - aux_grid = gpd.sjoin_nearest(centroids_gdf, ext_shp, distance_col='distance') - - # Get data from closest shapes to centroids - del aux_grid['geometry'], aux_grid['index_right'] - self.shapefile.loc[aux_grid.index, aux_grid.columns] = aux_grid - - # Intersect the areas of the shapefile polygons, outside the shapefile there will be NaN - elif method == 'intersection': - if self.master and info: - print("Intersection spatial joint") - grid_shp['FID_grid'] = grid_shp.index - grid_shp = grid_shp.reset_index() - # Get intersected areas - # inp, res = shapefile.sindex.query_bulk(self.shapefile.geometry, predicate='intersects') - inp, res = grid_shp.sindex.query_bulk(ext_shp.geometry, predicate='intersects') - - if self.master and info: - print('Rank {0:03d}: {1} intersected areas found'.format(self.rank, len(inp))) - - # Calculate intersected areas and fractions - intersection = pd.DataFrame() - intersection['FID'] = np.array(grid_shp.loc[res, 'FID_grid'], dtype=np.uint32) - intersection['ext_shp_id'] = np.array(inp, dtype=np.uint32) - - # intersection['geometry_ext'] = ext_shp.loc[inp, 'geometry'].values - # intersection['geometry_grid'] = grid_shp.loc[res, 'geometry'].values - if True: - # No Warnings Zone - counts = intersection['FID'].value_counts() - warnings.filterwarnings('ignore') - - intersection.loc[:, 'weight'] = 1. - for i, row in intersection.iterrows(): - if i % 1000 == 0 and self.master and info: - print('\tRank {0:03d}: {1:.3f} %'.format(self.rank, i*100 / len(intersection))) - # Filter to do not calculate percentages over 100% grid cells spatial joint - if counts[row['FID']] > 1: - intersection.loc[i, 'weight'] = grid_shp.loc[res[i], 'geometry'].intersection( - ext_shp.loc[inp[i], 'geometry']).area / grid_shp.loc[res[i], 'geometry'].area - # intersection['intersect_area'] = intersection.apply( - # lambda x: x['geometry_grid'].intersection(x['geometry_ext']).area, axis=1) - intersection.drop(intersection[intersection['weight'] <= 0].index, inplace=True) - - warnings.filterwarnings('default') - - # Choose the biggest area from intersected areas with multiple options - intersection.sort_values('weight', ascending=False, inplace=True) - intersection = intersection.drop_duplicates(subset='FID', keep="first") - intersection = intersection.sort_values('FID').set_index('FID') - - for var_name in var_list: - self.shapefile.loc[intersection.index, var_name] = np.array( - ext_shp.loc[intersection['ext_shp_id'], var_name]) - - # Centroids that fall on the shapefile polygons, outside the shapefile there will be NaN - elif method == 'centroid': - - # Get centroids - centroids_gdf = self.get_centroids_from_coordinates() - - # Calculate spatial joint - aux_grid = gpd.sjoin(centroids_gdf, ext_shp, predicate='within') - - # Get data from shapes where there are centroids, rest will be NaN - del aux_grid['geometry'], aux_grid['index_right'] - self.shapefile.loc[aux_grid.index, aux_grid.columns] = aux_grid - - else: - accepted_values = ['nearest', 'intersection', 'centroid'] - raise NotImplementedError('{0} is not implemented. Choose from: {1}'.format(method, accepted_values)) - - return None - def get_centroids_from_coordinates(self): """ Get centroids from geographical coordinates. @@ -2854,7 +3027,7 @@ class Nes(object): return centroids_gdf - def __gather_data_py_object(self): + def __gather_data_py_object(self, data_to_gather): """ Gather all the variable data into the MPI rank 0 to perform a serial write. @@ -2864,7 +3037,7 @@ class Nes(object): Variables dictionary with all the data from all the ranks. """ - data_list = deepcopy(self.variables) + data_list = deepcopy(data_to_gather) for var_name in data_list.keys(): try: # noinspection PyArgumentList @@ -2924,28 +3097,33 @@ class Nes(object): return data_list - def _gather_data(self): + def _gather_data(self, data_to_gather): """ Gather all the variable data into the MPI rank 0 to perform a serial write. Returns ------- - data_list: dict - Variables dictionary with all the data from all the ranks. + data_to_gather: dict + Variables to gather. """ - data_list = deepcopy(self.variables) + data_list = deepcopy(data_to_gather) for var_name in data_list.keys(): if self.info and self.master: print("Gathering {0}".format(var_name)) - shp_len = len(data_list[var_name]['data'].shape) - try: - # Collect local array sizes using the high-level mpi4py gather + if data_list[var_name]['data'] is None: + data_list[var_name]['data'] = None + elif isinstance(data_list[var_name]['data'], int) and data_list[var_name]['data'] == 0: + data_list[var_name]['data'] = 0 + else: + shp_len = len(data_list[var_name]['data'].shape) + # Collect local array sizes using the gather communication pattern rank_shapes = np.array(self.comm.gather(data_list[var_name]['data'].shape, root=0)) sendbuf = data_list[var_name]['data'].flatten() sendcounts = np.array(self.comm.gather(len(sendbuf), root=0)) if self.master: - recvbuf = np.empty(sum(sendcounts), dtype=type(sendbuf[0])) + # recvbuf = np.empty(sum(sendcounts), dtype=type(sendbuf[0])) + recvbuf = np.empty(sum(sendcounts), dtype=type(sendbuf.max())) else: recvbuf = None self.comm.Gatherv(sendbuf=sendbuf, recvbuf=(recvbuf, sendcounts), root=0) @@ -2997,16 +3175,6 @@ class Nes(object): data_list[var_name]['data'] = np.stack(recvbuf) else: data_list[var_name]['data'] = np.concatenate(recvbuf, axis=axis) - except Exception as e: - print("**ERROR** an error has occurred while gathering the '{0}' variable.\n".format(var_name)) - sys.stderr.write("**ERROR** an error has occurred while gathering the '{0}' variable.\n".format( - var_name)) - print(e) - sys.stderr.write(str(e)) - # print(e, file=sys.stderr) - sys.stderr.flush() - self.comm.Abort(1) - raise e return data_list @@ -3062,7 +3230,7 @@ class Nes(object): self : Nes Source Nes object. new_levels : List - List of new vertical levels. + New vertical levels. new_src_vertical kind : str Vertical methods type. @@ -3076,7 +3244,7 @@ class Nes(object): self, new_levels, new_src_vertical=new_src_vertical, kind=kind, extrapolate=extrapolate, info=info) def interpolate_horizontal(self, dst_grid, weight_matrix_path=None, kind='NearestNeighbour', n_neighbours=4, - info=False, to_providentia=False, only_create_wm=False, wm=None): + info=False, to_providentia=False, only_create_wm=False, wm=None, flux=False): """ Horizontal methods from the current grid to another one. @@ -3098,11 +3266,31 @@ class Nes(object): Indicates if you want to only create the Weight Matrix. wm : Nes Weight matrix Nes File + flux : bool + Indicates if you want to calculate the weight matrix for flux variables """ return horizontal_interpolation.interpolate_horizontal( self, dst_grid, weight_matrix_path=weight_matrix_path, kind=kind, n_neighbours=n_neighbours, info=info, - to_providentia=to_providentia, only_create_wm=only_create_wm, wm=wm) + to_providentia=to_providentia, only_create_wm=only_create_wm, wm=wm, flux=flux) + + def spatial_join(self, ext_shp, method=None, var_list=None, info=False): + """ + Compute overlay intersection of two GeoPandasDataFrames. + + Parameters + ---------- + ext_shp : GeoPandasDataFrame or str + File or path from where the data will be obtained on the intersection. + method : str + Overlay method. Accepted values: ['nearest', 'intersection', 'centroid']. + var_list : List or None + Variables that will be included in the resulting shapefile. + info : bool + Indicates if you want to print the process info or no + """ + + return spatial_join(self, ext_shp=ext_shp, method=method, var_list=var_list, info=info) def calculate_grid_area(self): """ @@ -3114,8 +3302,13 @@ class Nes(object): Source projection Nes Object. """ - grid_area = cell_measures.calculate_grid_area(self) - + if 'cell_area' not in self.cell_measures.keys(): + grid_area = cell_measures.calculate_grid_area(self) + grid_area = grid_area.reshape([self.lat['data'].shape[0], self.lon['data'].shape[-1]]) + self.cell_measures['cell_area'] = {'data': grid_area} + else: + grid_area = self.cell_measures['cell_area']['data'] + return grid_area @staticmethod diff --git a/nes/nc_projections/latlon_nes.py b/nes/nc_projections/latlon_nes.py index cfcb11dae3619e336abbc0978e18ede3be9bfd2f..b044d984c227d7493607e9524735bf0b245f4db0 100644 --- a/nes/nc_projections/latlon_nes.py +++ b/nes/nc_projections/latlon_nes.py @@ -272,14 +272,3 @@ class LatLonNes(Nes): """ return super(LatLonNes, self).to_grib2(path, grib_keys, grib_template_path, lat_flip=lat_flip, info=info) - - def calculate_grid_area(self): - """ - Get coordinate bounds and call function to calculate the area of each cell of a grid. - - """ - grid_area = super().calculate_grid_area() - self.cell_measures['cell_area'] = {'data': grid_area.reshape([self.lon_bnds['data'].shape[0], - self.lon_bnds['data'].shape[1]])} - - return None diff --git a/nes/nc_projections/lcc_nes.py b/nes/nc_projections/lcc_nes.py index 585acbe11a338e65a382ddb1a3d2c544d4325725..b5a679e8da977eb675bc79c586faa29dcc4112f7 100644 --- a/nes/nc_projections/lcc_nes.py +++ b/nes/nc_projections/lcc_nes.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import warnings +import sys import numpy as np import pandas as pd from cfunits import Units @@ -168,6 +169,7 @@ class LCCNes(Nes): else: msg = 'There is no variable called Lambert_conformal, projection has not been defined.' warnings.warn(msg) + sys.stderr.flush() projection_data = None return projection_data @@ -465,35 +467,40 @@ class LCCNes(Nes): Shapefile dataframe. """ - # Get latitude and longitude cell boundaries - if self._lat_bnds is None or self._lon_bnds is None: - self.create_spatial_bounds() - - # Reshape arrays to create geometry - aux_b_lats = self.lat_bnds['data'].reshape((self.lat_bnds['data'].shape[0] * self.lat_bnds['data'].shape[1], - self.lat_bnds['data'].shape[2])) - aux_b_lons = self.lon_bnds['data'].reshape((self.lon_bnds['data'].shape[0] * self.lon_bnds['data'].shape[1], - self.lon_bnds['data'].shape[2])) - - # Get polygons from bounds - geometry = [] - for i in range(aux_b_lons.shape[0]): - geometry.append(Polygon([(aux_b_lons[i, 0], aux_b_lats[i, 0]), - (aux_b_lons[i, 1], aux_b_lats[i, 1]), - (aux_b_lons[i, 2], aux_b_lats[i, 2]), - (aux_b_lons[i, 3], aux_b_lats[i, 3]), - (aux_b_lons[i, 0], aux_b_lats[i, 0])])) - - # Create dataframe cointaining all polygons - fids = np.arange(self._lat['data'].shape[0] * self._lat['data'].shape[1]) - fids = fids.reshape((self._lat['data'].shape[0], self._lat['data'].shape[1])) - fids = fids[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] - gdf = gpd.GeoDataFrame(index=pd.Index(name='FID', data=fids.ravel()), - geometry=geometry, - crs="EPSG:4326") - self.shapefile = gdf + if self.shapefile is None: + + # Get latitude and longitude cell boundaries + if self._lat_bnds is None or self._lon_bnds is None: + self.create_spatial_bounds() + + # Reshape arrays to create geometry + aux_b_lats = self.lat_bnds['data'].reshape((self.lat_bnds['data'].shape[0] * self.lat_bnds['data'].shape[1], + self.lat_bnds['data'].shape[2])) + aux_b_lons = self.lon_bnds['data'].reshape((self.lon_bnds['data'].shape[0] * self.lon_bnds['data'].shape[1], + self.lon_bnds['data'].shape[2])) + + # Get polygons from bounds + geometry = [] + for i in range(aux_b_lons.shape[0]): + geometry.append(Polygon([(aux_b_lons[i, 0], aux_b_lats[i, 0]), + (aux_b_lons[i, 1], aux_b_lats[i, 1]), + (aux_b_lons[i, 2], aux_b_lats[i, 2]), + (aux_b_lons[i, 3], aux_b_lats[i, 3]), + (aux_b_lons[i, 0], aux_b_lats[i, 0])])) + + # Create dataframe cointaining all polygons + fids = np.arange(self._lat['data'].shape[0] * self._lat['data'].shape[1]) + fids = fids.reshape((self._lat['data'].shape[0], self._lat['data'].shape[1])) + fids = fids[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], + self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] + gdf = gpd.GeoDataFrame(index=pd.Index(name='FID', data=fids.ravel()), + geometry=geometry, + crs="EPSG:4326") + self.shapefile = gdf + else: + gdf = self.shapefile + return gdf def get_centroids_from_coordinates(self): @@ -524,12 +531,3 @@ class LCCNes(Nes): return centroids_gdf - def calculate_grid_area(self): - """ - Get coordinate bounds and call function to calculate the area of each cell of a grid. - """ - grid_area = super(LCCNes, self).calculate_grid_area() - self.cell_measures['cell_area'] = {'data': grid_area.reshape([self.lon_bnds['data'].shape[0], - self.lon_bnds['data'].shape[1]])} - - return None diff --git a/nes/nc_projections/mercator_nes.py b/nes/nc_projections/mercator_nes.py index e6ccf187b683ff7d2f17db3cd7657545b024ace7..b752e8d575454b54e43d10caced0949c0219a344 100644 --- a/nes/nc_projections/mercator_nes.py +++ b/nes/nc_projections/mercator_nes.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import warnings +import sys import numpy as np import pandas as pd from cfunits import Units @@ -164,6 +165,7 @@ class MercatorNes(Nes): else: msg = 'There is no variable called mercator, projection has not been defined.' warnings.warn(msg) + sys.stderr.flush() projection_data = None return projection_data @@ -441,35 +443,40 @@ class MercatorNes(Nes): Shapefile dataframe. """ - # Get latitude and longitude cell boundaries - if self._lat_bnds is None or self._lon_bnds is None: - self.create_spatial_bounds() - - # Reshape arrays to create geometry - aux_b_lats = self.lat_bnds['data'].reshape((self.lat_bnds['data'].shape[0] * self.lat_bnds['data'].shape[1], - self.lat_bnds['data'].shape[2])) - aux_b_lons = self.lon_bnds['data'].reshape((self.lon_bnds['data'].shape[0] * self.lon_bnds['data'].shape[1], - self.lon_bnds['data'].shape[2])) - - # Get polygons from bounds - geometry = [] - for i in range(aux_b_lons.shape[0]): - geometry.append(Polygon([(aux_b_lons[i, 0], aux_b_lats[i, 0]), - (aux_b_lons[i, 1], aux_b_lats[i, 1]), - (aux_b_lons[i, 2], aux_b_lats[i, 2]), - (aux_b_lons[i, 3], aux_b_lats[i, 3]), - (aux_b_lons[i, 0], aux_b_lats[i, 0])])) - - # Create dataframe cointaining all polygons - fids = np.arange(self._lat['data'].shape[0] * self._lat['data'].shape[1]) - fids = fids.reshape((self._lat['data'].shape[0], self._lat['data'].shape[1])) - fids = fids[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], - self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] - gdf = gpd.GeoDataFrame(index=pd.Index(name='FID', data=fids.ravel()), - geometry=geometry, - crs="EPSG:4326") - self.shapefile = gdf + if self.shapefile is None: + + # Get latitude and longitude cell boundaries + if self._lat_bnds is None or self._lon_bnds is None: + self.create_spatial_bounds() + + # Reshape arrays to create geometry + aux_b_lats = self.lat_bnds['data'].reshape((self.lat_bnds['data'].shape[0] * self.lat_bnds['data'].shape[1], + self.lat_bnds['data'].shape[2])) + aux_b_lons = self.lon_bnds['data'].reshape((self.lon_bnds['data'].shape[0] * self.lon_bnds['data'].shape[1], + self.lon_bnds['data'].shape[2])) + + # Get polygons from bounds + geometry = [] + for i in range(aux_b_lons.shape[0]): + geometry.append(Polygon([(aux_b_lons[i, 0], aux_b_lats[i, 0]), + (aux_b_lons[i, 1], aux_b_lats[i, 1]), + (aux_b_lons[i, 2], aux_b_lats[i, 2]), + (aux_b_lons[i, 3], aux_b_lats[i, 3]), + (aux_b_lons[i, 0], aux_b_lats[i, 0])])) + + # Create dataframe cointaining all polygons + fids = np.arange(self._lat['data'].shape[0] * self._lat['data'].shape[1]) + fids = fids.reshape((self._lat['data'].shape[0], self._lat['data'].shape[1])) + fids = fids[self.read_axis_limits['y_min']:self.read_axis_limits['y_max'], + self.read_axis_limits['x_min']:self.read_axis_limits['x_max']] + gdf = gpd.GeoDataFrame(index=pd.Index(name='FID', data=fids.ravel()), + geometry=geometry, + crs="EPSG:4326") + self.shapefile = gdf + else: + gdf = self.shapefile + return gdf def get_centroids_from_coordinates(self): @@ -499,14 +506,3 @@ class MercatorNes(Nes): crs="EPSG:4326") return centroids_gdf - - def calculate_grid_area(self): - """ - Get coordinate bounds and call function to calculate the area of each cell of a grid. - """ - - grid_area = super(MercatorNes, self).calculate_grid_area() - self.cell_measures['cell_area'] = {'data': grid_area.reshape([self.lon_bnds['data'].shape[0], - self.lon_bnds['data'].shape[1]])} - - return None diff --git a/nes/nc_projections/points_nes.py b/nes/nc_projections/points_nes.py index 9c3d859b48ad1c157095d42b570e9977ddd1f0e0..756fe3c67a5f0c691b6a1fd01f32789752a7ee86 100644 --- a/nes/nc_projections/points_nes.py +++ b/nes/nc_projections/points_nes.py @@ -7,7 +7,6 @@ import pandas as pd from copy import deepcopy import geopandas as gpd from netCDF4 import date2num, stringtochar -from numpy.ma.core import MaskError from .default_nes import Nes @@ -31,7 +30,7 @@ class PointsNes(Nes): """ def __init__(self, comm=None, path=None, info=False, dataset=None, xarray=False, parallel_method='X', avoid_first_hours=0, avoid_last_hours=0, first_level=0, last_level=None, create_nes=False, - times=None, strlen=75, **kwargs): + times=None, **kwargs): """ Initialize the PointsNes class. @@ -68,10 +67,6 @@ class PointsNes(Nes): # Dimensions screening self.lat = self._get_coordinate_values(self._lat, 'X') self.lon = self._get_coordinate_values(self._lon, 'X') - self.strlen = strlen - else: - # Dimensions screening - self.strlen = self._get_strlen() # Complete dimensions self._station = {'data': np.arange(len(self._lon['data']))} @@ -311,10 +306,9 @@ class PointsNes(Nes): var_name)) # Missing to nan - try: - data[data.mask == True] = np.nan - except (AttributeError, MaskError, ValueError): - pass + if np.ma.is_masked(data): + # This operation is done because sometimes the missing value is lost during the calculation + data[data.mask] = np.nan return data @@ -343,6 +337,7 @@ class PointsNes(Nes): msg += "Input dtype={0}. Data dtype={1}.".format(var_dtype, var_dict['data'].dtype) warnings.warn(msg) + sys.stderr.flush() try: var_dict['data'] = var_dict['data'].astype(var_dtype) except Exception as e: # TODO: Detect exception @@ -368,20 +363,32 @@ class PointsNes(Nes): var_dims = ('time',) + self._var_dim # Convert list of strings to chars for parallelization - try: - unicode_type = len(max(var_dict['data'], key=len)) - if ((var_dict['data'].dtype == np.dtype('\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
geometry
FID
0POLYGON ((-180.00000 -90.00000, -179.89999 -90...
1POLYGON ((-179.89999 -90.00000, -179.80002 -90...
2POLYGON ((-179.79999 -90.00000, -179.70001 -90...
3POLYGON ((-179.69998 -90.00000, -179.60001 -90...
4POLYGON ((-179.60001 -90.00000, -179.50000 -90...
......
6479995POLYGON ((179.50000 89.89999, 179.60001 89.899...
6479996POLYGON ((179.60001 89.89999, 179.69998 89.899...
6479997POLYGON ((179.70001 89.89999, 179.79999 89.899...
6479998POLYGON ((179.80002 89.89999, 179.89999 89.899...
6479999POLYGON ((179.89999 89.89999, 180.00000 89.899...
\n", + "

6480000 rows × 1 columns

\n", + "" + ], "text/plain": [ - "{'data': masked_array(\n", - " data=[[16.350338, 16.43293 , 16.515146, ..., 16.515146, 16.43293 ,\n", - " 16.350338],\n", - " [16.527426, 16.610239, 16.692677, ..., 16.692677, 16.610243,\n", - " 16.527426],\n", - " [16.704472, 16.787508, 16.870167, ..., 16.870167, 16.78751 ,\n", - " 16.704472],\n", - " ...,\n", - " [58.32095 , 58.472683, 58.62431 , ..., 58.62431 , 58.472683,\n", - " 58.32095 ],\n", - " [58.426285, 58.5782 , 58.730026, ..., 58.730026, 58.5782 ,\n", - " 58.426285],\n", - " [58.530792, 58.6829 , 58.83492 , ..., 58.83492 , 58.682903,\n", - " 58.530792]],\n", - " mask=False,\n", - " fill_value=1e+20,\n", - " dtype=float32),\n", - " 'dimensions': ('rlat', 'rlon'),\n", - " 'long_name': 'latitude',\n", - " 'units': 'degrees_north',\n", - " 'standard_name': 'latitude',\n", - " 'coordinates': 'lon lat'}" + " geometry\n", + "FID \n", + "0 POLYGON ((-180.00000 -90.00000, -179.89999 -90...\n", + "1 POLYGON ((-179.89999 -90.00000, -179.80002 -90...\n", + "2 POLYGON ((-179.79999 -90.00000, -179.70001 -90...\n", + "3 POLYGON ((-179.69998 -90.00000, -179.60001 -90...\n", + "4 POLYGON ((-179.60001 -90.00000, -179.50000 -90...\n", + "... ...\n", + "6479995 POLYGON ((179.50000 89.89999, 179.60001 89.899...\n", + "6479996 POLYGON ((179.60001 89.89999, 179.69998 89.899...\n", + "6479997 POLYGON ((179.70001 89.89999, 179.79999 89.899...\n", + "6479998 POLYGON ((179.80002 89.89999, 179.89999 89.899...\n", + "6479999 POLYGON ((179.89999 89.89999, 180.00000 89.899...\n", + "\n", + "[6480000 rows x 1 columns]" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "source_grid.lat" + "source_grid = open_netcdf(path=source_path)\n", + "source_grid.create_shapefile()" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Flux units: m-2.kg.s-1\n" + ] + } + ], + "source": [ + "source_grid.keep_vars(var_name)\n", + "print('Flux units: {0}'.format(source_grid.variables[var_name]['units']))\n", + "source_grid.load()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { + "image/png": "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\n", "text/plain": [ - "{'data': masked_array(\n", - " data=[[-22.181265, -22.016672, -21.851799, ..., 41.851795, 42.016666,\n", - " 42.18126 ],\n", - " [-22.27818 , -22.113186, -21.947905, ..., 41.9479 , 42.113174,\n", - " 42.27817 ],\n", - " [-22.375267, -22.209873, -22.04419 , ..., 42.044186, 42.209873,\n", - " 42.375263],\n", - " ...,\n", - " [-67.57767 , -67.397064, -67.21535 , ..., 87.21534 , 87.39706 ,\n", - " 87.57766 ],\n", - " [-67.90188 , -67.72247 , -67.54194 , ..., 87.54194 , 87.72246 ,\n", - " 87.90187 ],\n", - " [-68.228035, -68.04982 , -67.870514, ..., 87.87051 , 88.04982 ,\n", - " 88.228035]],\n", - " mask=False,\n", - " fill_value=1e+20,\n", - " dtype=float32),\n", - " 'dimensions': ('rlat', 'rlon'),\n", - " 'long_name': 'longitude',\n", - " 'units': 'degrees_east',\n", - " 'standard_name': 'longitude',\n", - " 'coordinates': 'lon lat'}" + "
" ] }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "source_grid.lon" + "plot_data(source_grid, var_name)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Rank 000: Loading O3 var (1/1)\n", - "Rank 000: Loaded O3 var ((37, 24, 271, 351))\n" + "nox_no total flux: 1.0672498547137366e-06\n", + "nox_no total mass: 113.08470916748047\n" ] } ], "source": [ - "source_grid.keep_vars('O3')\n", - "source_grid.load()" + "# Flux to mass\n", + "cell_area = source_grid.calculate_grid_area()\n", + "\n", + "for var_aux in source_grid.variables.keys():\n", + " print(\"{0} total flux: {1}\".format(var_aux, source_grid.variables[var_aux]['data'].sum()))\n", + " source_grid.variables[var_aux]['data'] *= cell_area\n", + " source_grid.variables[var_aux]['units'] = 'kg.s-1'\n", + " print(\"{0} total mass: {1}\".format(var_aux, source_grid.variables[var_aux]['data'].sum()))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_data(source_grid, var_name)" ] }, { @@ -153,9 +273,110 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
geometry
FID
0POLYGON ((-11.58393 32.47507, -11.54169 32.478...
1POLYGON ((-11.54169 32.47851, -11.49944 32.481...
2POLYGON ((-11.49944 32.48192, -11.45719 32.485...
3POLYGON ((-11.45719 32.48533, -11.41494 32.488...
4POLYGON ((-11.41494 32.48871, -11.37268 32.492...
......
157604POLYGON ((6.95490 46.70274, 7.00684 46.69873, ...
157605POLYGON ((7.00684 46.69873, 7.05878 46.69470, ...
157606POLYGON ((7.05878 46.69470, 7.11071 46.69066, ...
157607POLYGON ((7.11071 46.69066, 7.16264 46.68659, ...
157608POLYGON ((7.16264 46.68659, 7.21456 46.68250, ...
\n", + "

157609 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " geometry\n", + "FID \n", + "0 POLYGON ((-11.58393 32.47507, -11.54169 32.478...\n", + "1 POLYGON ((-11.54169 32.47851, -11.49944 32.481...\n", + "2 POLYGON ((-11.49944 32.48192, -11.45719 32.485...\n", + "3 POLYGON ((-11.45719 32.48533, -11.41494 32.488...\n", + "4 POLYGON ((-11.41494 32.48871, -11.37268 32.492...\n", + "... ...\n", + "157604 POLYGON ((6.95490 46.70274, 7.00684 46.69873, ...\n", + "157605 POLYGON ((7.00684 46.69873, 7.05878 46.69470, ...\n", + "157606 POLYGON ((7.05878 46.69470, 7.11071 46.69066, ...\n", + "157607 POLYGON ((7.11071 46.69066, 7.16264 46.68659, ...\n", + "157608 POLYGON ((7.16264 46.68659, 7.21456 46.68250, ...\n", + "\n", + "[157609 rows x 1 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "lat_1 = 37\n", "lat_2 = 43\n", @@ -168,7 +389,8 @@ "x_0 = -807847.688\n", "y_0 = -797137.125\n", "dst_nes = create_nes(comm=None, info=False, projection='lcc', lat_1=lat_1, lat_2=lat_2, lon_0=lon_0, lat_0=lat_0,\n", - " nx=nx, ny=ny, inc_x=inc_x, inc_y=inc_y, x_0=x_0, y_0=y_0, times=source_grid.get_full_times())" + " nx=nx, ny=ny, inc_x=inc_x, inc_y=inc_y, x_0=x_0, y_0=y_0, times=source_grid.get_full_times())\n", + "dst_nes.create_shapefile()\n" ] }, { @@ -187,75 +409,60 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1min 48s, sys: 1.42 s, total: 1min 49s\n", + "Wall time: 1min 49s\n" + ] + } + ], "source": [ - "interp_nes = source_grid.interpolate_horizontal(dst_grid=dst_nes, kind='Conservative')" + "%time interp_nes = source_grid.interpolate_horizontal(dst_grid=dst_nes, kind='Conservative')" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9e5Rcd3Xn+yn6HFeXSl1Nqk0X7pZES1EnbmL5+iGQJyI4wcTm6VyYmItXSEgYQjIwiTMJkJhMwoUZSGDyILmBlQATmEwmIY+LV0yuJ5iXYexEIrKtsQxt0o7USO52uuKuoUsuVZfrNHX/2Huf366jaqklYyRHZ6/Vq6rP+5yq+v7277u/e+9Cr9cjt9xyyy23p58941xfQG655ZZbbmdnOYDnlltuuT1NLQfw3HLLLbenqeUAnltuueX2NLUcwHPLLbfcnqYWfTtPdvHFF/empqa+nafMLben1jr3svYV+KYTc53Q1wLhB1bQ1zXA6756mVe/bSGzPLs++z677aBjjlx99YAj5na+27333vtYr9d7Vnb5txXAp6amOHDgwLfzlLnl9tTavQX+6epRPsRbePcn3gv3wP/4PVkVA+NAAnSBEnBc35sl+uqXxfoaufXeogHbZo/hj913rHvvHbitt5K+Hh9wziTzfpBlj9111/nqXLZ8VlYoFL4+aPm3FcBzy+1fnBXh2Q+t8O7ie5m9GWbevf6mx4G2vs/+8JIBy7wZKMbrbHsqQD5Taw9Yth5Yn6n9WaGw7rEmgYqevws0dPlOfY2R+24TnmVJl8XAVRfg4JADeG65PRmLgA6QQBO451f7veL6Bg9TIoCwvbY5vbcL/efLXpqB8XoAn7htTzUb8MtPMNhi/esSBhk7/0YGgCc7SCwVClRH4XgLugks6TFHkIEBYEGvqemu2QYAkH1i4JVPk8EgB/DccjsL+wo7qbHEly59Ka++7X9Aq58qGeTFehsEViUCAJq13TropyNsOwPLJLMtblvv+Zf0r4YAWkOP5cHA7iN7HdkZhN2zzQz8fW/KnN+ActCzifSvqteUELzxrwPPcde0kLmXSQSQ54H5lQDKxxEKaxMQb2Ak9Nf1qUKBSI+bIM8q0nPFeg1dvcardgEr0F6G0ph7OP/41A8COYDnltuTsItZhmFgTTy9NmfuSWaBkwHH8BSK7TOISz/dOQxAE8JgYR7zqcwPGklm2UbMBpgYAT3vndvr8QH7Zfn4tltWQQC2Uob5Vv9+Cf0DkFlX9/EDpQF+ieCZ49bhtj2ODDIbsucWoAW0YH5Zr5VAEdV0Mxsk/Od5+QZnADmA55bbWdj37P9HWIQX7voyv/zSX2GE4/zS7R+ADuy/6ckde6NgXKGfrrD9Bnm4JQR4ugitkxCAI2uTwEwZSsPQVGA8vir7zhJAzsAoC3p2jYMGhy4wo+sfpt9r7xI8W/PWR/R1Sbfzy8xjf6Als4iYftCuEgD4kSSA/6Qus3ONuO0MVD0Hb7ML9BoaepydiGffmBXKJo6gVEWkRqtAGaHXOP1gl6W4HigUmBmFuHzq/XIAzy23s7DWFc+gPP5N/mn7KB0uosMYvFK8ppjCQAXJqX5sPjB5uh+lBxMDskFcdtaywN5w7/1+DeA+9Rz9jMD236SvJWB5wDk9pzxGoJSahEHAzHvk/hptAMhSSAkBeGO3zgO3XUvdHcN78iOEAc2O4WmZWNcdz9yLXd+I3hcIcJtnDaSATQdYAYaAcZickIGjfRge0ee65K7fzlFFBs5KFbgGGQgAFhloeSJPbrmdhR0rbuWx7Zs5xlbm2c4829N1V40FYLU/EGDJ/p2J+WNBOIdfl2T+H/R3KsVKNpCaXXeC4Fmvx/PHmVdP32xCgOyqAftkvVTzfJMB6wZtYzTEIDlllk4ZFBuw5Tbg2LLsvm3kOdgMZksZatt0pQ58JAi1Vpb33aO6nDAAxshAsIl+WiYe0v1XEG9+bfC9++vOLbfczsAuZR6Ai4G/zK58rEdUkNSZjcr7vKfXzSyH9UHsVDpwv03WQx00eAzyeG37bAzQOOTUE9XXJgH8vMTP/jdvuFaGVw/DA8thJgHBK/X35r1t29+OZee189j1eVrJAppRZpmd1x9/nOC5Z5+NXVOb/jhCaRQoQvUyxFO2h1UERpEAdwLtRZhfDcecKkN3DdqrQr/UgJGyvO92IK7rBZ3CcgDPLbenwPZco28MLVpwz6GNAbqXtg2iMMwGBT/XO9aWCJaTIKtjneNVCYoL7xU3UQrAHdcDqG03SUhWMpDzgd0RhK54uAWTmcAjCDA36Jf5Gddu5q/BBgZ/DTZweAlj161Dr3GKQO2MuGv1A4/tc1UZokhULgDTM4hHXQSu1YteBKYR0J4APg/tWQHpUlH2nx6S/f/68VfyTPaz7f11Kh/U4wwjlMsoxNMI17QOdWKWA3huuT0F9uK/+2uGWOPTt/2Q/NDvhNKhfr13VnmQtew67z0OMk+fZK2d9ANp1gP3yg7PyXrVht9uPSmg7TNIU549n+fwLWiYPW6F05vnuE/lOdu2/r1533aP2VmQ3dNSS85RAWpjiJteRuiNDnAQWIX2igR+Lb4wVRbwjsvAsB6/Cjdd+SkB7A8AH9WNV0k9dh4kpV/4hx4UfNGEYDmA55bbU2Cf5eXy5lUS2PzI636MQ3+0i9/91NvhTuB2uO/oqYOOEADlVOB8qiQdoxXmCYDlz1dyrxZMHETVeE7Yjj2I6lnP7D5tEFkv8Jq9Fz94DDqmvx67JpsBVAZsB8HDtsCl8c+mM89SMXYdbWBGOaNuAnEVAdl90FbuZ6kVBr0KAua1V+s/V8q2HEH4bYCfI6hW0OPZA1klp1Byy+18sd9pvJ3eXmAvPPE+eHTTdbz8yOfEm6vD0o1BoTFID36qwNsgimFQQpHx4Za27hNS7HzL7jjeS4ZAv2wCSpF49icIoJnQ7zWbJ+q5c+/Nt/UaavQrTbKec/YebDujULzkzxJujEbxSUTGn3s+fNAgkR0cQIB+fhkqkdAhcR3YBkxA95hw2SUCjz85LNz3fZ+U483cBvEEAtJXIMB9QBOAysBmvZEI2EpQtJzCNqxCKRQKQ4VC4f5CofDXbtnPFAqFrxUKha8UCoX3b/RYueV2odkBrma+eglL1VEKDSguwsv/+XO0Jp4hXtZoyBb0GZXGJduft/VUF1nrZrZLCLVEjPPOHjebrOPlisbNG3hnvXMItEg0YJm/LgNbMz9YeFAtMdjbzA4M2RmEfz+if3Yf/jn7Z+v58gqi994SScKQHa9SRoB4GTgmsr/ahMx07FpKRahOyPku3wHxNmSw9sBchEYLmk3gEkIgYnjAzQ6wM5ER3oKTcBYKhR8Afgi4vNfrfQ/wG2dwrNxyu6DsD7iF7SxykCuD1OxxWC5eTG8UUK70dDYIxAdRMD742M5s58HcwMaDvPe8zaqczEdnB45TJav4oGJW8mjLDCxr6xxrkJdcIsgEjf4Y52S55Z5pmN4B09tgLAo6bM91WzDT7xcBNaUxumsweQVUrwAuJfDfj+sOCrojwFSkgP1Gvc/H3YEtMFmUiz2BJEoR6cWX9WEM6d8pbEMUSqFQ2AK8HHgP8PO6+N8Cv97r9ToAvV5vo3V7csvtgrXf4K3wf8BWjvE9R/6R5+xf4s17fourq/dyM3/SB2rr6azNM89mOPr10E9XGNgZEJeQhJH2aqA9sjVRThWANOrBzjMzLl5kYzXooz3lY95+NkC6QP+AYZmO3rzW3bJJE+DaUYjHgTGY2xfS7Ru6fhcyq2kb16KjRFSHhSSobeyebOCYjmQw7a6J7G9/XZbFQ4i6pAzMIeCaQKMREnpi5DoaCVQOAYfknh6ow1hdEnqYAI6R8t5bNNuyfQBK2xBgv4kNUSgb5cA/ALyd/gHqu4DvKxQK79FLeWuv1/v77I6FQuFNwJsAtm3bll2dW24XlH3uQy9nz5v3857/9R/hA/Dox54JwB28nNIolFqnL4R1utolvqbIOAJOM6PQ7vTrkP3xSoRaLt5SL7QsGYQRApDeG48Q3bJtn5XvmYd8XPc1ysTUI4PUH3ZcO07sXksooI7LAZfmZLtSZv8l3bkNRModVEfhi6uDOW6jnxsJjCQhZR5kEKiOAnPQrcuzXNLBrxadrNOvIh4/Rdg/66ihsp5oVU+sSTpRNiNrWv+//tQ1UU5LoRQKhVcA9V6vd29mVQR8B5Lw+TbgzwuFk7UuvV7vw71eb3ev19v9rGed1FAit9wuKOu9Wd98DOY/Ds/+xArP/tQKbUrwaXj+6OmPcaYZnCCeaDzULwNsrwbPtzoq1EKFfimh8cCl4X6ASlUZEzA9Do0VCdiVosFg7K2OYFgDAbqdyEBTXefejH7x3HT1WsSTHVq/ANWCnus4oZbK8VZ4BjYbMdVIkxAbsOuw/0/YDisC3u3VcI/VUblvn/xUgVRRsucKmNml2ZodBLw7CHhPQOlmiLdDPCb3w14kQ2qM09pGPPC9wI2FQuFlCMtTKRQKfww8Anyy1+v1gC8XCoVvIolp/7yBY+aW2wVr7+HdFK5/N71aQSJLw/CW8f/CZ68J2wyqLeIzJU/FN3uzIk/tVaEEvIdsgNgGllcGH9e02Y3lAKJGMZQmgB0I6Nwh21e3i0dsA4CBoUkULSnH3vsyr7bcZH0emEfcsr27EB65LtTFWARzSXqYk5J2/IAynwQn144/BZpXG+4xO2A0kPuqlDWrUq9/S1muYURpkPkVuGoU4isQhYrRLg8ioH1Al12KuL4glMl1SFzEJIanKWJldloA7/V6twK3AhQKhe9HqJLXFQqFnwZeBNxVKBS+C7gIeGxjp80ttwvbXvOy/yq/vh1IrYwbBnPbUeY1dttsNKsTpNyq53vtGD7t3f73VQoNOD2dsZxAnMDUCinY1AzIO0IpRBFUpuG+Q+FaEsQrNpBuEBKMRtAA5rhwzv5eoZ+WIdEDbJPr4IuB0jH+3EDYrvu4uz+vdLm8DKUdAuJMAIvw2UP9zy5G1yOKEbOqVQvU5Ju26i+Pt6CaELp53OFOOE3qyXNQL8pmXdcBr9Lr2AD/DU+umNUfAjsKhcKDwCeA16s3nltuuZ3G/ozXc8P1fyXRpWtCivbplByD3ntbL7Bp3WmMq40z+3hQ88e3tHajEixjsoTy3gZo46SdiUpF8VIBrrpOPGafbelLtmbljSAe7OXl/uv3Kpr2UQLARSLVm9khgdSIANb+mHZuC9QafRJFwNWILlsbmHoJpP2B1ijRdZUI4suQ2ri7Zd+m0jNti/AuQncfLNUlQzOlT1p60CP6V0d4jjIC3hHygfnCMOvYGSXy9Hq9u4C79P0TwOvOZP/ccsst2Ke5kdv3XM+NB+9Miy1581K7QdSA95q9526US1YS58u2Gq9czWzjvXOv+TbQ9pxxLULAqI5430U5cGkMSiZ/0wDjlkioBmua4K/blCdtoFkPg4afbeDuf64FM3MQHxXlS5IECebMsChhss9iif5a4KZUeXgFZvYjXvCoLKzqLcXu+bQJg9KUFjSfv0f/3wHcArXrobY/PJPmIlQqULsReFD/f40+qwjxwFd0+2MIgB/R57gD2Hl6f/iMADy33HL71to7eRevvfkTLPzUJJtOtCm+Gj77aVm3njftlSIe2A3wvSY6S710gclRiItQ2wxcAkv39J/HZ0qaJ+qzGC3x5b5lmFyG2gwpeAPiZa4hQKVcrnHEDTfTMG/Z0yPmIWdppDbiuac1S6xmiNpc62Ttuh3T10ppuuUpD94B5mBuOXD2VcIAY/SMDVyNuXA/XWSDxi9Adbc+hyHoLkvQuN2C9h0ywFQm9EANJAFoWc+9VU/a0mXaom0jlgN4brmdQ7ufawQhHm3TGaVPn5fNWoR+XhgG10jxnnacWT+IoqntRVzONWgeDrSBHyiynnuWoqCMgNcaEmBs6TKtsBcXYa4ejuG9al+IatCxfRD3xaOq1tgLzb8Qr7ib9G9rkkUzX2HQBjyfjt84CvuT8HwiZLDw12Ja9S6wZGALTKtSJIpgaZ8MZt3F4K1HEURrUPqJzE2tIM+8iAD6hL5Os2HwtvvNLbfczrUdhq+8QN6++Hbkl/ke+Ow9/ZsNqlBoZtjgsy/NxpFAXG2MALajpGg9Nxe2r9OvGLHzesrDPPJlYOQIVEb1nxXd2YoyrciFdDvBG54pC80yd7S/vZl5vl4GaDaJtj6z4k53iLKmUobqtOjUWRGN9qGVfg06hJIBI8MBXB/QAOps0l+Hxfa1GcjDA551N3ElCCKoXA+VGeBjEM8g5WA1qzK+E7hft/XBSZMJHtW/YWRgMAB/Eae1HMBzy+18sJ8LWYazN8qimV+A598rQHXfOrtdTn/6u3G7XsZnf0to4SRVSyTAuNIpU05/3lYA8UWeBnn9oPG2VYTPRThfhhHwUkBvrIhyxazRCkFEC65aMasFwgzCJxaZTnvavNRhqKg0sqlJOrUJAecRAgAbGI8Ak2PAqHjc3SRw3CVCEwe7T7sOu3dfodBiB6kE0oD4dmQGsozIBG3wtTR5EGmhBTL9ctvubk7ZgSdreUu13HI7hzbFQzyX++EIVIehNiya5HmA66Fyt5YjHWAxkkBSiULyzSCPzGiPOgJMCwSRQ31FeNp4XHjlePTkFmLefIEtA7Y2Ejg8blmeV5PSKV0H3AaOTQTErTiU8eyNzHYQPOLj+tdsITOHqtATvn7M0qKsryADwhj9DYutrojtY4PcWDT4nm3QsGvKzn5KRb2/PQgFYtfSAr5EP89tnvdleqMa3E3jBQbaZwDekHvgueV2Tu07+AYl9TMrlyKa6nvkN/7ZG+DFPw68BSqflO2N2jCrWuW6GZg8DN25UCLWAnXZTMZsunq3BVMtxDvcDqWjIXjn97PzmjIjIVAgtb0I+LQQsGpJjex2p9/7tlnCAhAp2G4h9Nr0ZjMJu+YE+PIq7L0bSjUtzYqoYSwzsjQK+xcFmHcOQymBSgK1XaTdbkqrMoCYd7+U9Fd7NGD3BbxOuOu/fIeuMHS/Exb2ydvJa+XeZw/AzIw8i25dvfVx4HboHoGFFag2RCsPCPhbAweAuzemyM4BPLfczqE9l6+ymeOCFhr0u2oM9qsigmOk0rYZLSXUrIvCodmS7dPo3LB4ngbcntf1lQAvHxevu9kK69mr53qwny4wM1niJmR20AUuj1TzDEHbbNRJR45v5/bH8w0UQMCxNiwevG1n57OZBfQnGFGUczbrQUYYRTIYzQxr2QClhRp1QsMEveFBlQi92TltOysxEKMKk1VCC7QVmNwV3qemVFVsQWL9nGLtUB9Pu207CA++gVIK3nIAzy23c2hDrPEHL/i5AMTqicXWVWEO+MV+vTYI91vbTZDSaX/G2jjEDc2ErEgSSRaMiULxpDjScqlNUorBQCHrqVsThyhRXrksfHkXBKAsCUXVJj6Ymj3WSdeE3KPlrhholhCKqJs46mZN9eR1Af0uSqdodcV4SO9vGFjVWYpL/LlPr2/QNay3vIsEQCuW4m7H817zENCCeaVHmk3dvoUocyZI9ebxBH0yyDT4my3FeBrLATy33M6hlTgB70PQbpaUL51Z1op3qlCo7YPZa9Tz1SAeEQIKyDYGAtUr9DiLqjopwqTK09pzML8Y+PORMkIWr8h2TEAtkWux6nyWCGPV/SoI2B5acRmbdamDQoU0I9PTEhZcnSTgnS+sNb8a6BWjL9LgbCK9JeMONBNVkdRlgDqu5Wtj5eBPIPVJ4jFgu54gIQDustTqtvKvPr0eAtftqSO73soEkrF5WGgQErkmIAXm5kOuv6hGY5v7JUbQXZRgcX1FrnP6GuBmJPhpA8ERzshyAM8tt3Nob+M3hDv2bt+qtNgq+a4sP6n9GIegeSzQBvPqxTUI7RO36DS+3YHqdeGYRMIdT10C7YPipcZFPbcBOPK+Ng41S8YBqPdrobN8dTOB6pxst3Q0FHsyD9xTEqYysUQe87YNuKd1hlDZKteyUA966th5u82msBQLBAn19G5YOgCNw8BhVdmM6QlU2ljdJhe1cDTcx3OQGcacu9Y9L4O5O7QWyjihBGwN4qb8321J7RNWIFoMAdJkVa7bAr3G4c+uCM01vQ25+I/qySwRar1pwTqWq1Byy+18MCOuQSiIGpKhtxXxJBcRXfAHtbJgomVNGdx1J60vfRiYEy/QA0Rpl5QwtfTxVClhBxhGQGVYNNyWRm9UjiW8WF2VNtLYgJWTKRPcNv524WSKJeXt7Zq0/khcFjoiQgE40kHMHd9YpziSUqlLSLCw7/7KpHz4lFOfbELAPvW2AY7B9Dtg6t+5Z9fSZzokzyYuahA0CSqceIi04w+Ez8futQn9WauWTm/Lz8Ctzj3w3HI7h7bzyCPw+whob0VKjPpkmyPIL36rbvMxAbL5VuCFIQQtY9RzH4LmCkTqrc8lEO+TbaYU6UoTpPRJQ6fuI2WIX6XnmkNAahxqxs0OybYm4Wt3wvFJoF0XesBqm1jqfZaOKAFfRyoQen6/5BJt0HuctMBeUdUum+Xf6jJUF+GhRTc4RFqfe1nGwOooUrHpDn2mNwLvg7lFmL4OSvukUcUyMLcS9ONTZWjMyvEpi6edJFBaJKDmKDAuhbS6s7L+uOO1Ta5pAdkYDV5GhHKM9uFpOj8Aj228JmAO4Lnldi7t3yEUyl7ECztIcCXNG9sOvBrhylcki3FmWMDN+FSjKUrDIUmlhHCv0J/o01WQudyXRt0NrAqHGx/U816DAPnjBI62JWBdSmCLep7WLMGs6f73jICXP7YR2mIBof53IoB73HXLmV+WDMvSMAKWRaF+ShYDOCL3al2HUi13ES6fgAcWJYlo5qMIv5IA++REtSYsfC4MNp4Lt0BptUoIOioH/8AsTA2r5BMB7uMtpaOGXI2UFbkn/+zbiLQx1lZsTe2NmdZIOUMFCuQAnltu59YeQrqR3wT8KUGGZrK3BEGYTyLa6hZ0m0F9kaUqQDzBdkc8vUYSDmPbGri2V6DUCYDPmgbeLA0ehCrYTPASV1x6vdExBK43W0PFmwcbX6PF99jcRAD9BlDpSDzA+KEoo9SII9gzRtqwglVkVjEEY4t6Tt/Zpi73Fw+FgW9QAawkIfX07dwGuJbCzxqh52YSjrdzVDz/qh5nztVib6zC1LTsa3VcKpn2amdiOYDnltu5tP+PIB+8mdCVZU7T3odJO88cbwlYPEIAuRFCdUADnsZqwDhTWnigt3V3taCi4DLdgur1hAJUEJJLfJC1LPpvkMDl1I0wuQgNTaXvJqGGiQG6r2/SRUAa5D4qbn0bCWr6iodLiSTCNOuiFa9MIIPIqoC5zUC2lHXwWUNc8qJ0kE8fgF7zwieD5ts46ipw1bhw/V9WZU1knLcGeJu605R50HOy7Phq0IqbB39opX9QsyqKaVXEFXnGVZsV6MDc7oTr2ajlAJ5bbufSjgLvJeWbuQSZ7kdQWiGtJ2J9KwGWl/sbLPhSsabS8DTGqcx3renTlEMKNOl7AC0eBVAtktI9FjQtaYKND3ImhPZppaJkQXYJwOZpFqNBrP54CeklWfN1Q8rilXdXtL6JtS3T4CbL7h60gXB7ThKLZpEeDNWyFNV6QHXy99XDILcF9bLR422D0pxy1zY7WYXK66CyCNEdoRiXnxVZsSvz8m086HYg3kPoytOBpVYYUPawccsBPLfczqX9jr5aEozRFSbf81SGaptLdwT5na+454HwDNVoQodYNqWZNd5dRZD2cf1/1F1fi6BfRIA1VvA0EPd67lIxpKUbT+9Lv0KojZJ2Dor0vHZtVrYWUjUIHQS4NxMGHisY1RJ6ZYFQ6KqtmaIGrDaQmOc8oklAzSZUqsKBk+i5V/T8X6SP9vDB2hKa9BQFdYqtO96CqnXicXaGOTzYo8ktt9zOlc0hwPxR4M+RdPZhBNDHCBz4CgKcYzB9A0wbgFr1uxY0j0hlwIc3cNps4sp9AAf6PedxBnvxl6PXYuB+BCrjuuPjoROQ7zJkx6muhfebCNSJed41y6aMoDqjC03rXodHVDo4NSoSwRiYtHM39Jo6MHswNCq2+30OmjwzBwvLYZbisz5LaOBUqZrGqujKxzTpKR4WSud4S1LqQY4zo8HW2WVp7UYtXHflhUhxqwQayqM375GBAYCi6My7dZg+w66UOYDnltu5sp8pCFgniMKkQWiGUAFeA2h3HoqI/ngW6cGIW65JJpUqVJrwdW3K6xsXDAp2DkqZ95mI2fogZmPLMJ5obW6rKV4B5oQegH5v1v4HWFgNfP3UsPzve3Q2VkPLMlqIh62690gDhjHSQ9S49EYDRjpSSZE9wBEoaYlZSw66akc4Fmj9FYd+jyh3X0I888sbIUh7HA04rkDlsCRDVa+F5p3iXW9CaaGWyA/Ta7fSutZyLlG1j6Xja0CVlZCleaaWJ/Lklts5sJ18Rd5Yf8QGQlG03Ks22e1rN2P7QKgnbQqGzUAl1Lhez7INjM/UllFKwYKvju6Jo/5z+/cR/UHVtqMW/F/7qNvJEnEIWY42QyhFSnWodVeAV0P7gDYddvfZXoK2er8GoFYAq+0Cr0ZJNVv999I3AFqm62r/c4xRasbru0cRemdYzzsHba1cyFbSzzgualbsGVrugeeW2zmwi3gC3oHwqIuIZ20/+Ad1o32EIlOaNJIG0ToI6BuAJbpuHEbuCdzzoKzINOA5YN1GrA4sLCp1Yc2AD+r5x6DiekuW6FfxmXcPJ3e6MS+82YL2rAZLV+VeLWEIQlGt6igS8LX4gOrmrQzBc5YDv91QOmP8iChNICTdZMvsNhHP2gaYmrvuCrK8dEDqzJg6qJuoxj6RQHJyFJYOy/1Pap11iqJtB+BzOjvQgOzZIvGGdysUCkPAAWCh1+u9wi1/K/CfgWf1er3Hzu4ycsvtwrKP8JMC0PuQX+EO+gXQQ/r68wgvbgDfAvYTPHeTolkwbxmmZ2S79rJIBb0ZpXAqiuR0wJ6ChnU8OIbQOoegfVg00ok7bzbYatyzb0Lhg65NBASrZdKA6fF7ZLnVUSkZdXSZvlrMQNvRdTtCfcyUtSaMHueBuiTYxFFIuml3pJiWKXtMHTNV1gSdsiQFgerwkfszrt9UNh2ZjkEAACAASURBVBVkYAGRWPbNgrTA2KTVBieUQ3ikHgavqVM890F2Jrh/C/I1ShOqCoXCVuAHETFUbrnltkHbe9u9krhjWXhDCJh3CNTIOPB5Ao2ynrTEMjaLCFBMAMdU+nb4ZDD2lfbWs1OBeKpTNt01yCzCKTKs96RP94fg+XuFSpRZ3ydrrMOSBhzNm7XO9ryDUJMbxL1UO95SLXlHg6HW+UaLciWqumkm0gnJFDGWMVlCvPbJMTmHPQ8v3bSPwze4iKKQ/VpCwDouCl9euZ7Q07MlO5SKMmDYPmdqG+LAC4XCFuDlhNpZZr8NvB04s9BpbrldoFa4A76XLwjlcC8hSWYMUaQcRdDKOuQsEvRlVrr0agSoL9PtFwlFke5FejEukpZT9ZmGXU6vET+dV1dDvePrkN6PkAISiKa5oYHHLIWTpvy7/718roRQJLWyBPZml+HL7nrjK6B2E9Ll/S+QIO848vw2h+OYB1zSaovtRZg/HEC6iYBtF3hYS9J2Ea/a7n8ZGTwoSsDTvP8tSCEs0ESkUQHqiADEXaRHZ3WvXNvxVZi7HWbn9IZ1nyQRBc/UDpg6QwUKbNwD/wAC1DZroFAo3IjQKf+rUCisu2OhUHgT8CaAbdu2nfEF5pbbvyibgu0c4Z53Xc3e3feGxrcJ8KMICN+BeJUHEG86QbIzb9T1X9R9VmBuNgC0eYkPc3bcttnpEoDmEa33zO8LCB5a6U/I2annt3riWyLlhqNQAKub9HPIzSTQLCPDss2yetEvLsugUIkQuqaBDBgH9ASfhwcOC5hOTUgQ0ZJillqQzIaU/anhUEO8vSqyxentcuKFOckOjYEZbb7QmIN5fcbVYagNaRVI5bybwJLOCOxe23ovba1bQwSTxnOvIAPONLBfi2N5VdEZ2mk98EKh8Aqg3uv17nXLNgG/DPzq6fbv9Xof7vV6u3u93u5nPetZZ3+lueX2L8Ge2WEXhzhBaTAlMkRIZ28h8/NRxMM2xccqaYKKeZP2Z5mVp1KhPFnziTdfXjm5TniTwCePoU0Y9NWsNAxsFUqhnYRjVBE5ZHVcwLU6LEk4FU2KYRV4IwKCmvTUONovWYSTszutyXGS9Ad4E6tzcky2tUFwXjnv6qhc1wkE8JtazsDiBxYkNVqlqesaQOkG3UgDmGk2ax2hxrSBRvp3FrYRD3wvcGOhUHgZ8rWqAP8NmaCZ970FuK9QKDy/1+v909ldSm5Pxm7nBr6Xv+XiKx8XAPgg8DngEDIVv1Y31FKlP7bzw5xQJe1f8iPn4pIvTPtGkdLECX7wL++W/00T/KB7v90tW3b7/qm+KrjM10MlPZPWQX+nm6fCrNb1UutkhSMESR70d3UHKew0rfd518EwGNj+l19D2liiolruhboeJ5HO89OHCGUHgOWjQRM+vxjULUY3Xz5GCpBLh8LAYjz9XXOhObN/dvszWnLfYairyyJgegJm9TNpuP0bt2ugUo8xbq3UEkkCireHez1bOy2A93q9W4FbAQqFwvcDb+31ev/ab1MoFOaB3bkK5dtrhcK7AOj13slWjnHxo49LS6ei1H7mDmh8UTyXygcRImzsVEc8w/NPAN8DfLZLr5et6Qb8cgF+AgGmS/IwCUDvucDzPix0SEQKxowivHYE+98XtvcAae89iMRumQfsAZ/GkzLfhN3bqQDEZ3X6+iDWTHlPWZJi0iAkyHN43L0fhskJGHlIwLZaRegkfV1YdNmYOmvpLgeuPUayLiMtDGa0DsAh5asvj2BWH24V7SY/TsgAPRiSeiDMBixF/r5FKYbFsGjRG1pX3Gqm16ah8aCm0E8DHYh3IYNzwll737BxDjy389k+UaD02ufw0CXP4dJLvy79+t5P+kMwNUD8QQRMr4WxXwmu3R6+xH5e+KQuoXCnvM5dv5WdH38k6IJzO9kSJKvSAHwN+aw+Le/X025ng5EM2C67/ltlWSDeqCUE79hUGZZAE5elRKuVZy3tcDta7ROtiFgq6iDVgtJR+mcmZtpA2GRyPlhbRUvOEkDP7umRJAyQEYTuPXVJfTcvOi2ZG0lFQpMMlhKtmaLlZY1/b6/KPc4fdElFy4hktI5QKh3gY7rDrRt9qsHOCMB7vd5dwF0Dlk+d+alzO1v7EnsYY5nLen/Kdubh43DpL31dwEATHo47YWczke4s3X3yJa1+Dn579VaowY0/++dcRIeHmOLSn/k63A/dB8WLKA2H7Ld4HCl3OowE0Q4Dv9GTAMz/jlN+r0RbPBfj+yyTrlWQL6rVz9iG/OB2EwrZ73xqvPTv5Qv8X3yC5/JV1vQr/xK+8JSc61T2Gb6PIk/wwmFELQKpB95s9TdfOBVQni5F/qkwy+70VRBPZ8aJm8qxZp2GqshMcFnUIQ1EVz1pSpZtiAd8DKGT9kL8i9A+JgHEkjZvbtQ1EWYYce0t8UZnmQvLAeCM1vGAN0iZWQc4DGNHA2fve1q2gXhV6JCRSH8nKFgPSVLOzKjWYx8Syqjhbpkj0pSi3Qm/LYDS42f33c898KeZfR+f4Ta+ysX//DiHrns+LMIDy/LlmNQfSEkDP0DaN9CX8mwCzffKF/I/3fIatkRQ/XHSrL5Y22y1V8M0sZqo56PJI3OfhiM/EtRHPuuvqdxiqQilTyEu0Y9mbqSOfKttGgnw3/R4Nq20zMRR+PuXXsbNfIITbOLRz2/nr150Q8rhv7JzO+VPfVMkdYlcO2OId3MYXvWRn+GH+X+ZfHjZNektQAS/evU7WGOI9x79VfhAxG/+1lv4+Uc/FDIb9Bfy91dfxhv4QwAO8bzTfk4Xf3OBi57xBN/N1xhijc++8xXsetcoRZ6gfUj4Y9MV23OzCoO+NohP5fYe+KCON3a5BrYx/anr5gXaeU5llmQzgnjQk8Yjb4UH7ujnudfb3zjiNjD1RkQmqRI6qekqgcraKvACxCmoIw7AImmtbI4AZflOPZJAuw6TqmwZKcs1UUO+Sw3JdrRWZvZ8zcPO0kB+ILRndhxJJJocJW2OUSIk/sRjSH/Se+QeH7ZWbGtQmoG4IyDPLrh8Re/pKDIw1dUxGqJPenm2lgP409B+hP/Op9/xQ6k3U1sO2V3iYssXyEA8juSLH7svSwXnHUWEIJrW5GgSgKSLAE71E1pBbVx+1GkKtEqnrEyopTynRfHXCJmEkRz/bNpHna297Sf+H3hUzxsB7+ZJB4/Oxp49uQId7Wepy3zQrG+6z/oga0kkng7w4G6eovHAEEDbklSqBKnfIMsqOpaXIV4GDp1c/nWQWRPkkmU8Wi9JE1Mv60VcT0BWrSRo1IXJ8ey6p9QxOIFsVylrTZYa8OOIJHMMYi0AZl+3BNFt+4DiCfrlljZgVRGOuzoNbIdEJZsjZf2N2ffmTtIaJmbtVaiYW28KonG5nzQwbb9BX03ySVgO4OeRFT4Ev/bmf0/CEP/hod/knkuvZj97eC5f5QQlXn/ij/iBTd+gxAn5QVwLTEP1F/SLtFkkVW3l9ErD8sV72Em90sa3kUwBQes+7AvpxXE5fM+6SClN2y5WasWOX9IiPM0mdLWyXDeRdbGlOy9C849121HEYzIK4eMET+Rm+tPJNQmDBC5mmXHqtCnx6JbtXMIibfXAy3PfDEkwlhlS1eMeRUBhUXW5wwg/r6nou64+xBpDzGw7xOyeK9nFA5IRacFFvffnXvZVvrf4t3rNzyd5NRyvlDiuqREv4W/46m9dJee/B6b+6m6GWGOCRal7clQCbicIIOKVI7j3Bjy+bsiI28dz5JaKXguHYVaX61iebmdgaF18bPkgtYrv4win99i9vdQkflcTqi0eIdR0gdAhfhi4G/k+6GdtaeveObWEmxJaKiCCkh3/V5FZl+qpt9R79CoF+JSc85/ePkr1QeH0ehNQuFKCjV/X7jszQE0DyPymnlB14KVDUPpTRPZnjSOA7kEF9CEJenYX9X8rIWC11MtIO7xfdM8BQk2bJ4nAhd5ZZP+cre3evbt34MCB0294AVnhzQgQ/1vgP8F/ebNI+t5w25+w8Kox5pliT1PQLvLA8h+BFwI7oP0+8batjnIaZFFKpJuI59JohdhPgvzoS5FG9l0WW0oOWubfKGmAqHG0v85DbQZYhqV6GCAqmnhh1M1IWcDcSo3GkVZ7s2ssErSydeE20+mqbpskoSNNswWVvciPVnn/xkpYb/cLUBolnQV4JUG63qia3cggkNBfaN9+kEPINH8IuBJ4FTAGnTIkQ8/gJcW/4X/+8vXyzPYhqDAO/IF8Lo+0wozmBCfL53xbNPvf1ttsx4Dbyp5GA/YZYUBbMvpBeso+p6hf02wDxpk2FjCZHbr/80d18Nbej7SQzzYiLZ9q9cshBDHbHWmYbAPZVduCqsOkgTuBUnIRa0NDfJA3A/Arf/Qb9H4M9nElANdw/6kv+P0F6UFqDRkuBb4LekPwqer13PivLCKvwX9rKn0TcAOSAbtGiPPg7m9F77Gj918kfK9Afmd7SPuLpss/cmocLhQK9/Z6vZNSfnIP/DyyK968jxsKfyIfyhhMvnuZyWGF3CLCoSWyjsf1VbO9Skh/QwhFcgwEjF7xLAsImG+xk1v9DT/vHCIEHRP6vi0Jyosi21TKUBsVHe6SKgHMQ293VELlmv1VyoSCTHY+N2gYwLY78gNvAyVHC61n3SRTmlPB2+ppgMwoqlrGs2vFhQ4SpsfbOalbCgkyWAzp6ydlcfEoFPkmn+9cH2pjb7CpoVEg3guPMu9tnfdGvSbZA7h52Fvc/xC44Oy5jaLIBvbO1LLXPKvANlYXrXVl2h18GViUwbyxGq6xqZrybIOHdkdnkjq7q00Av/ME9//8DGtE/N//8Os858ceAi49PXCr3f7267mIJ3jJQ3el/PnCs8ZY5BJu50ZuLN4pg05Zddv6eXa2QdFmdlcg3xnrYlRHvrtb9T7LhPIGZfdnjsILgPsJTtJZWu6Bn0P7CD/GLc3f4erKAT7GG9j50CPMaheSKgIs1dGQhkxZKsxFEcTbEDDZgcyZIXiLCIdoHql9ARtHSHsXmrcOoVIbEf3lSU0VoS2pUtClf7n9EKdnJLXbbEo9sSVNxJi2ASghrV3NMKmcqr0UZhJ2CR6ERrShbBTJgDBShvgyoCFTWLPYyxc1bbu+EgC8FkFVEyrapp7RKTMgnpOVdLVnmhAyQ9xA011UmaZ1dI+QAcA0xA8GPfA9SmXtiYLCwVfpMzOv27fkOkHw4Ktl4dGXBjyjEuKl+uWW8u09ZTt3TKClEzRBh42bJcD4QcTeVwlNE2xGZXSebVvK7A9hvWVQRkDtBvinvxmlTo1D7OIAuznIFQB8gZecwRWfnd3Dbva+5l6hQMaQJCLtZ0kVAfA15LP3XLnNLkeRmfYVwO8jIF6D5gcuojJ0ehRfzwPPAfwc2mf4Pn7wyrtpapKCeUQQvsRT5UADtFsKNNDvTvs5rwJx1/oSbieM8tYZBDlWFKk80EBK+wCm77XWcvuLAlDHV9XrLhK4Te+ZtwLdkfLgKq1is+5n1fbGEG+ljPwoVgi9Bgl0R5LodRal84pZ1QYw65q+LDUwKmXkR3LIPSf7QTUCvRJFOoBZOdZFwuDlq+zZgNV0z8aeaeL2sYJSmesH0lrQzWNaf+MmaNwGy0l/FqWBX00DbgkC1vbszWwgMgrFZ2OWgGkXVJ5SJYUlz3hFhlem1DTBZOGoYAuEQKTRNlkz3n09D94rZyaR572c9KttyGy/Z5rwPXglsBt+9i3v52t8NwCf5kYAdvH3PPjV50li1LfBdvIVPs+L+CN+lP/wl78J98PD79nCzp94RMr7FuVaeRlS0vYg8oASvZ+i/n8IKMOX7n9+qqLaiKQ1p1DOMytcDr2Vu2nW5cfp4xmm5rBymGnAyepjWCdu5RdTDx1SYE07pnhzyo+SAZQ/sc+IW0WmuzqFTWtr2HE1SajR6OfcY38MBHz66nJYTQibSivdkyQhgMoo0hh3lZO6lNgMoqvKm+ax4JWnCUt+ULH7WwsgZpYkqimGfuSx5wz9KoEos8z+Xw7nMAqn7Xl75UcrFR1gvige+RgCtGYpbeCWWWcY6zzTXu0PPCYEfbZ5090kePE2O4h1UDjh9gOpNQL087n0SxnXy+psEJoE23V4M0oEQjxmDFVq0C/1Axl40usYRSjDMXiY72Q+Uyn7EM+DbxN4AzyXr3Irv8ZWjomDsApf47vZ+cZHJLBpjTfKwC4kKHsZfbEdQILqRTjCFHUdAp/M/CEH8HNghQ/Ja2NRPBIIgSqbKleyO3mAti9KU5a3LTg4gSRHtEIVNJqEAIu92q93CJn+eS/UsuHsh2QBKCTjzLIrm0pZeHni5JqAaTzkEoCuIHhUFUIUPlFuuxNmHqUEYmvoW3f3rBy8gXc8JIC0tCyeYaSHjoGoo6Bhz0kHtO6i9F80YDMb0etJEqhaIHca8aD8c7BgqD0T+4CsSzuawp2Ix93WoG7VPis77jDMf040xtUJ0ga5EAbCJdfVva3Pyp5not61geVVY/IcG25w8rU32m52buVLvaIkO+BOjmnlPL3PueV+IIb+LNC2W2detZ9FWjC1UiFN3mEtdKaxkIEVglquw5YylG6EG9/15ywpyH1NWimfM7udm8I/O98JO6W+Nnvh3+/9dX77nbfKg5pGFCcAEez7lSs4yBWpt73GEPvZA3xrahDlFMo5sj18if2TUmGqUQ88dLOp02zjZIuBR027WJcRkGshHK8mnaQ6VfOSl+V4FhCsbtP1VUKGR4sQVTeA8pXTLIiZpRQUGKwTOoR6GQkwqd54sxW8r/aqZslZjWYLuuqxK1v12OqJtVfUe3QetiUimcbYa4Wnx0Sx8EgimuF4SGttJBI7mFMlyMwEqVJg6WiQIU9Zr8TRwI3PqmZ7xmWlLqzA1DQCSKvheTf3K820TZ5re7X/+uPtiDrlc8jAYp+VKTXQz2abfHYMI3TNPmjPBSqqvaTPtCqZjCkdZK3FqnrMo4Q6GxNuuZWwLSM67CJCA1yh71U5UzJvsooWAdf9PirPp9kKevUKLtNylFRpkt6PZfVEiKNwVNfbc9gOPCifR20M/vdjMkR9RzpnePrZFA+xl7+lQ5Gv8V3AxpLABllOoZxndsJ8KC/VS8RzSyBwq2su40y3b2v6rrWbiifoj2avkQJuPESaFZme7xghyBJl9vVBRi1Z6jluIMikCLSAUSGVoQDI9loqOorHzoGAkKUgn8q6a6Q1pM27OwGccFRDQvAWQQaVaeshqQOM8b2NeqjHYWnXI74FWCvQLeZBLqyG43SRgHDJwFMB3IKvVj8j0esci5SqaCLB0WsJwNUgkM7ZZsUrpDOWkmmm3UyENUI/RVPAFOn/nCyjdBwB7mvceVQamhLjFrjVAQcb6MrAHaFuSXU00DLobCCliuzPOxsmKdxPCATbTHCVNM7S7ujnNwubTiix4qdLTzN7/JsjHHnGdjZxgieeosyxHMDPkR3ieRxdGOciOjz7g+ruvd9RsUOkYJqgXLD+gEveAzevpkzwqM1rHobSZgXvZfHcLCDYF4AzwLAg5hrygzuGeEsGhKbrXaQ/kqYtp5Jl8XhLBIolAUk9Bip2XkgHmMh9A5vHdKo9LOcslaHUEe85cWCNO4yZeeFmfTRKFC4VAsccrblrG5XnAw5I3D7Z7MO2D9Q6WqpL5j068BjVlBDA1g5uFJaB7yKpHr5qCoYfRQD2fudtJ4TqkjMEXbEPaq9lXu9BCkSbHM4GaQjp66Zysno1GvNIkvBcKhMEisrLWCxBB/qdExuwHIh3OxBr9uV8q182WWyJLvtdm36Jd/LrPB3tsWdMEnQ6T43lAH4ObRtL7ONKnn3dQfmyz0Hpg7rSsgkRLrPbgXhGMsAA4jkExIvAQyHhYH4uKBOuKkNJ1QX2A05UhVEyME4IHqDx5kOI57eK/PiMRzclRou0FjMgXp0VGVolDdLFEVS02wkEzxegtAsow/EvatryKCHdvggck3tqZBoGlNyfNQ7IyugMTxqL0Dwa1k3vBR6FhcOwlECUwPHDst4aIti2KdjrawLMREESmHYiX5UMQaMR7Lq8nK6Ndm3RcTqeDeuv2ksYcCP9DG6Q/6sNQuLWbNimqRdaiaCt91cy8IQAyEVE6aO0RfOYcv1lJEtyDEk68lSG5+wTUs56rh4KWbEiHH5zMRTgmpoh5CqY2snrv+cQ4B5HQFxnbO2OUIMzvl7943I9736Wkcm5rWc5gJ8HlkxAdBR4AYx8XL3NIUSWpHylURDxGCFRIDsr60gvwXZHftAlmyKvyPFKxrcOsHZLvHWQbZv3OO52lFDLAYKMEAIFY0kLGaUHUUgzjqIQoKselOMvJxAdEVBsrKhuOApyRJO7QX8gzXvgPgUdt7332pvAZEOuM11Pv9fuLvmkY4OWKEjkus2L9/tbUkxW220MhU+FT1Ue5i3bZ7mItAqztHNfYhVgu7YWA9gKJRt8txEGYrNhQmnUKFBdrCID9KOEsq02WBuv/5B7nwSVSQmY3A2syGypVNTA6KLO7HYghZ6+6B5kk+DJj5FSf9iMy2YSpk66DbgZfuAcVIx8ulkO4OfYruF+VTRIJb74lpC0wz30S/y0DRUQgl+PAz7zEM1+NIpkTbz3JEHqLZueeE2PqfUdSka9gPDsq6J4iNZ06p+t7V3VZTsIdUjmSNPaRzLbmy66Oiz8tGVXttH32qewmkDs1kMAQ1+Zz0vX/NTbWowZaJqOGaS3oa038+8r7tX2mdJU+2YdZlfVE++IBC4L1NnMSDMD9QoywHqVCVoa1SturAxqLfvrHCUF476DQxjUzcZJZzIkpLU94oSQBm5adgizMfPkh6Cr9XFsFjSCdJ9JqbtRHYhaosEHiJeQoPh1CCh/VI9vDsAeRAu9Jt/TtLzCqm5zm9xH78dhjGU+yhu5jV/nt/klcjvZcgA/X+whBAS3I1PPCKl4VoR4N2E669LXWUUQyLjebRDplHvyGt2uDIeUJrhK/8cCVKYLn3XH2CHnrxkYmJzvCCGrbBv9GughUkBIpX1GFyyHxBTL8Ivpp2l95t+C7ucL6JtZHZEks85wBwLwGqh7WsS/H+R527Jld2xrleXTu+ccQntVZha4cfsYiDdaAfibCA1RQiiJWEFxUoPSS4tQM1qkKMWwIqBmgcA64btiejwITXPHCenelmiUKB1nHrcFMU37/iiSjLId4hVZXl2G6oOEWEsVOAb3HA5fgz36vWwfhNIx90BuJqSdG22ns7Z4G8xpi7PkjnCsyw9AoQ77q3t4Jt8AoPBe6L1jwAO+wC0H8PPF9hIyE3+akJprPzQIPyAIdbQ9jaIdQIBQyW8FrtoNzQeRH/Flbn9rQ2X6cNzxR3V7X1NkGvmRL5NKGFkFGgLcg0qg+pobGzGjGbK9FCGVvfc5rB40B507GbDtRq7F0zbZmiVZ7bMH8fWOY9diA4Hdw7TJKsuEgVFnWbWItOYKwyGZBwjfBfv8OoSCZMvIgFsn1NfeQRrQjc2DLiKB0YTQxgwC726SwAQBbZUuLtwh9zOOK1OrkslKlf40cvuu/AXhw3DqltpwSGSrWHOGbcCd8Ia5P4EqTO119Rly67McwM8Te9clv8imS06wh/2U7j7Bd5ceDPK7ReSHZJ7XBMFt9QCeEGoxGKd4TKb/qVTPUuBbiFd0nR7b6BNTs0TID8mpOPrO0yFVMTRWxKPO1pA2Wx6wzL+PMtv60qjrWbbI0yBQPpVnvFHznr550zaQ+POuB+KnWhZBUJMMKocRIQFigGmoGMc9S1CI2CBsLdrMfA0XkwL6qYrZJcBcKFMwUpZZE5Ee2+8fATvC4OMHufkWzOxG4jYH6A+o+g/CHtQVwLVQ+SJU6oiKxstWLeir9zH+jqNsakrp3hOV7xjwsC5MyxN5zhMrFObo9aZ5jBEuWnuCkZUnKNyGfKn/glDwwsqfZktZGp9ZRkB8M2m6ekqDmPQLQhDSaBMQDtum4UcQSmeNwKd63bB54JoibBz3vIK5B72sJwyDgW2QN5HdL2uD6BDbp4TIiC1j0BKAZvZCY7+eM9KEn2tJYwr33RPO6bNiB7VhtPOdSb1sM1OtQCjtGgG1m3XhIkHJoYNx+uzNIzYqzGZka8jnaAOvcVVb9f0yAp4dQrLQKEEvDmHG54PVcwTnwBZ9OsQp0gQpK6M7Bku/JzLIeExLH1gteOuWZB2eLAGphXyfrD1rTa9hBna99stpO7zZN1xJ7w/Xf67/Ei1P5DnPrdebpsZR/iu7YQheUr8rBIAyNElfYSjca5nAkdsP2gJfJg8zADBP5whhytxwyysEwLYfsucuLDFFr8PqdltKu+GGL2O6UdD2oHy6L+h6Xn+CTO993e0qmhcyB9XL3MZryHOQDGeu2g3coetM54z2bLRlXjVidMRiqLwI/Ty/p1z8tadyxcRp2S2hZkWyO0GDyoQZgVUqtPovtRn3AHa7A+8jbWiRDrpH6Ndsq1QQkO+XfZ+sAzwESs4UKwj9AYS67jZD1O9R7SbSbkyxV01pjZ0UvCNkgFiFhTpM7nXnRM77u9zCi5c+wzdvLV9w4H0q2zCAFwqFIWRytNDr9V5RKBT+M1Iv7AngH4Gf6PV633hqLvPCsO9X2VSRDl+49F/xA62/kxWjiKdlP8IW4umYVhsCwFqg0bIty255Gflx1QkUjOdVIUyzvaLBH8O22U5IzT4crutM6YpBhZL8l3I9gP6WmacuHtXXYQL62mwGTpZInsastIDp0+FkqsUrbdL7XgrKoaXVkz38WHeIVN43MkwKwt0k80y1NG5DgTiKJIO0rwWfXRgEYPWDNYQcAdsmgYoleBk4Z/cx0xLJqdS0ntnWXjcTurWbqXrl+xt/RxJvpvCH3z7G4OlgZ+KB34Kwbzaj/Axwa6/XSwqFwvuAWwllXHI7C/szXs8PUOMLb32pyKnMa/ZBpbQpL/2F4iF4LOqzpwAAIABJREFU18dIG8R2Wzp1nUamzuZRdpAf3Zj+zeq+4wjqeLCy1Pwiwcs6Rmj04MrAWmNljp7Mi2f12p6esFZjZl6rvZ5qbqNmAUijU+bqENdFaVMyuqBMqKtelbR8gGmr4Wy0VYJ8NtP6N+qWb5OmGs1WOJ9RSLj7G8n8T+b/WddMYtDz69LfC3rZpfkDjP2pCwrukHurbnMHGhCMmHUUyoz1cqyRlhSmiXynOgSHYpsus/Z3liEcuX3Mo7cZoyUNoeewsr+7ZL/JIrQ/pwHRBOl1CWyvyoczT27eNgTghUJhC1J86z3AzwP0er073Sb7gB/+ll/dBWiPMRa6eECY2lqatQG4V6TY/0cJadqN0FvwcuMPEsTz9j8iUwn44lW+VoaXpxnFYjasx9Nv0fFV8Rqj1skqjkEWId6j0QAQvE3r6eixxl/GmVpEqM7X0O4ukX+Gvtrg50IfUECCvTZQJbB0GCpLEO3TxCrzRCNJlqroTOQE/Q5udrbhn02XwH55nXt2m5gwqJ1K/dJGBpJp+3z898mkh8ZBAzPjMH9QrzEifD9m9b6vIOQeFHXfxTBTSJuM2AxR1Ul0EIXLLndx5gQYHYi7Kfse2Czwo/Cl9zyf9/AfdMO/XOeOL0zbqAf+AeDtBOcha28A/mzQikKh8CbgTQDbtm0btEluzh68T6uVVQnJFllpoFmLEHBKCG2dgDkflLKAF/Rl5qX7GYDbYGGacFs/RwimZTM5XW3sLgrESUiy8TaoiP/SaqhXdDqvOnu89WwQsMVI0a94ORSdAsKAt510kFw4CJM27S8SOGN9RksEL3vKMmONQtgcvPD1gpse1AdlmWbtVIOgP54/Zhfl/232ZDMFuycbAVwsZeoKXV8jfOcahGQj04q7ZJ4YQsbrEjKlsoD7ikv796OOeeiWvGPfRXU4oojwPW3ABIssUeMmbj/FU7gw7bQAXigUXgHUe73evYVC4fsHrP9l5OP674P27/V6HwY+DKJCeVJXewHYd171laDhtapuliVnwchh+kHWAmnXkv7wpi+jP7gJgX9cJZSMtWNagk5C+NFaFTnzvCK33sw8e6R2h+dsB0n8srK7iJNrh6zXKb2mapmFwwNWOvPH8XXVre1aVT3x4y3J/KSDZL1q6dXJGwjPdpeuS6SWSzcJGZcA8WGoLgmvbMXAumsS1JsaEnmd3Xf2eZToV+t4Stg/M1PUwMlAnqWUEvrrjN1ndbeXg4c/OUMoO2sDuwUzO0iky5ZZGQVrH/Y4oXnBOJJRaQXQhhDwVwpo3lFBlRYSXLXvnZXQndPXrUh9lo7U+amaJ78MOx99hEuqiyeXjshtQx74XuDGQqHwMpRBLRQKf9zr9V5XKBReD7wCuK737dQj/gu2Z/INvu+zd/I/f+768OU22iLbMcf68ZmE0CiUDjL1HSdwtxGSxOOq3aXdQoaRTNDH6Ve4mMe/hvyYt+p5LekjcscBKi+C9h2BPoB+SaE3oweynrLnx73FwH3rALfRE+ultps1VwTQJ6eRxhE2+EQIeGzW/02MPgR8LNQMnxyXbeYPh7ogIIAdtaC+qCnzUShXawNI5K7Fc+LZ2YJ1zvH35rvS+w42ZlkPPLvM/l+2azYHwVNyLYmXWPu1NqoHR4pflbQuSlozZy3sB/TP2HSgjedk38i8bvsuZ3kxK0/8IOJETCOD6RFZd/QS4Vyy1Rxy2wCA93q9W5EAJeqBv1XB+yVI0PLaXq/39K26fp5Zh4vkzQSDixMlhIQHkw3alNWqDmozhKglHK2VSS2NEwKiEGRlIGBv1QRxr74C4TSi1Gjo9RlJbZy9plAP+lINojU8fZDt+GL1SAbRLoNsPYphoOfq64DYDMRoFJthOImmzSi6nf5rseVt5f7teq3QVXVYK/8hILbg1BUehNNBS6WBXklimalx5M6d9L0MzLNaz9pA42ioVWOladut0L0nO9CktdGNrrPKib4JiHculKIZGVZ5oSUrGTc+7I5hcRZfw9yaQr9K1v0kHwHgzsK76PXeeYq7u/DsyejAfw/5qD5TKBQA9vV6vZ/+llzVBWyHeB5fYo9M220KalF+4wXNaxxC3Kqf0u3eq+tqUHpBOGbpEtI63ubdWc9GUIVCB/GwnXKg24JkSbvaWM3qWZg/KiVRU6WDptgvqYoj4WRFSRZgs9539n+T302XxcNtrA6mVWAwYJlXvnM09NxsJjIzeKDe77FHQG0OatfogiPhOcVRUMhYlx7zgu0v0oswgF1GqkFWi1C6Plzk1EPyujQbeH/v+TR1QJwak9IEFsw1yZ/VTp+KtI0ag3/A2drl/nmAlNJdWhmwUWZ7szbask1rdk8bF+ObfVihNVeWofJKxGGw761li9p312iXGULZ2wk48lOhVvFb+L20kTG9G0990RegnRGA93q9u4C79P3Op+B6cjOrItTEPfR3TTG0sjoYHSTppEFafTDt+u631ah+4jxwSwRJ+W4NdFnndgvEVZegdIi0FOiUceUdbZmmA01Fvbql0+jBfb3txP2l16WnKkXqwa32Vw300jw7HjgwdVZfB6iyiUKxUU2EUrYgVEgFlQTqxvMDbs5LJK3dW6qdtgCzC57a+Y1isQErJiTt2HIbHOKkP3YwORzqcXv6aNCP2s8c/KwkG2jNznayt7rFdTjy9VVSqs06PkGYubUIz2IMSd+3xJ9hYBr2/fAVXPO7B2EC5pmiQ5EP8Wai9eof5wY8OQ88t6fI9pz4stQosdmidotJ22fhXn39COPDoT+qZV6PIxGtNko8JLVMwHUoR8C9NBwkYumxioQ+i5pY1G0JAJY0HbrdWp/SyNYwWc9KyiOjLdr89l6N0uVkmsS8a9NLDxowIHilkd6vAfjx1eAZVxLtTzqMAM8YzN++Pq0To1y5eaSePlhvHwXAVOe9DmadLqkpq2hZ7zOoROrtu+3Xo6r8c5uxmIqBNQRttylX7LgWEF1V6sm89iISa7DA+W6gLslr+372Ct7G+7n7H34QgN53rXMDuaWWA/h5aG/Z9Hvset0D3HLHh+HOUB+63XEdbSxYZMBjyhQLTBrVYrWfkeWl3cAx4UFBjjfiZIopdTBKqDFu3xIXgFqaE487bbScQHdFrtFP12HjdUI8oFa3yXUvqHdfQ0C9m4hX6umUQbpw7xGb9/zIANQzoH94FWqLJ69PIBQSswCwsxG3nV1/oyHPteQpr1FSSuyk2UTSr5Yxr9oSj7LXG7vtbP1xTh7YIDxPX0FxORMkTTL7mlnwNL1mVSKl9eWt4FRC6PNZRmI39j20gUkVK9QBLQv7+5f8OJ/lxRxnhDuPvgyA3rYIcuDesOUAfh7aZ7mOZca45cCHmV0WgCoBI4lMo6vDykvb9LRC6GXpemeeJEkwD90y81alEH8anGq5crRWB8VMA00G0qC1rVuhNofJ87LTcrPTBSMrBF75gcMy255UPriBcsqq1bZzrKdiqUVhYDIO3E9G7HqMjmnTz0e33WtzljRLc1BpWTuWXdOkUkzdAy5lfZyUeqi4/fzHZP+vp3e3wcaSnGBwz99N9NdN5xTHhJNBwJKYmokkP8UR1C7VlWsinWysCJef1jE/SCiJqw0bUvXTXvjKx74TgJfwNxxjJ821IiVOsMwYD7MTHtaT5qkiZ2Q5gJ+HNs+lwKV06zfTpd/j3DkstEf7MJSsfrQPJhUJKe6+VrR50yYdcxRK6oYpT54eRws0+QSiJNHiRaOio/YIatz5el+qQUqUQcvS4xG6wdgxjV4wIPYBUw/MZsZld9c7CSdL87LsUzez3LNY5hF7md9AvbJ9HonGCs6gbox/np6798Ww4sz2cea9p5VOez49aOwv0JK/ivQlczVWtMGEKXvG6Uvu4kXyOtU5wr3F3byK24C3URnq8Hrg9XagF23gwnI7yXIAP48tHoPpRDzdCgLeFevYawHMBLp19YK2018K9BhhiruCgLElZyjlUrJaKi05Di2lTgzIh0MhpHYi0rB4COJpGJkTjxwEIOsrG8sY9KDtMSKrqmhzMvDGQ7JdzfH1C6vhuKlnnIhqxDeG8OeNCF5pjFA03pvuum1Op+owgDRVDkr/JK7VUOyyZkvbIJrVpr4usFka1nZ4OsNJHGEfR3JPXq2znldds4YJPoC7JsHZpdX+bX0ikc0WKsp1V0zqFyE5BmNyb5bMhF3LGsFzbqLFNoDr4BNb/08AXsttvJBQKTa3b43lAH4+2yUCsNVD8tupVAhetWlwLanGgkIGvAcJP2Dt+tJdVIrEmsyai2lcLfojNj49AVZFdgYyiKQDiNItVQLgHF8NdIRt5kvLbsT783jtPUcQ7zsekiJUpk1OMvuORcLxGnD7RJrasILTHn0Gy26lBzyrlocGj1XLPFeXezNpIwggmhceRxoD0F6SKTUF/U2gVd9fKmoMwWXKNj1BTgDVbhIAO3vPZvacZhfD/cbWzHpIBhdrVA3KY+8i1IS3IOUoko1pTYaNx9eBPZ6Aqe0EZ2A3ob7JNkQWOARf2vp81voE4rl9qy0H8PPZxoBh2GKKDJvCRqRywXbLqUQg1G82OsTRHO1OUDz0ZVlq1cOUr1X1BxlvDQgKAvUo41GI65n6IvQXZLIg2uksq4SwAcB48Rpyr/G4BFGhv43bltN8m9ur/cHC1KxhhaGhbzGXsbHBiwfbOEEV5I63tOzah1kThBVk0M0AuFk2QxMGSwD9/41VzRi1ZBoDcwPwbOLWIoHqgTCoWT0ecx5ucRdgx7MPehyScYiWYT97OMDVAPzI4NvK7UlaDuDnsX3wr/4NQ6zx03/8cdhP+JHZD+pBiDoCaECoFw59HEVDwa66nf4mEMaVbyaUD4UQEG0EjzBCsgpNvVKtynaNRmYAUWtnXr2dSnfsLQtQC6sQaU1puz2/3lQmW6J+pUVVqYnYyuGa53gZAXh80NbJLbtrgWaatgzCNQnetldh2rTQVugpkRZ2ba3pUfL11qtyrjgSrXy3BWMrUkPGimnFQ2FGA/qc1ZZUxWJ4ud5z9DjfBuYzrYSmlO5YakFFm0dUryGUbvA1vq8BXkuoN1+F5sRFrA0NcYhdHNIyg7+v2WSHeJ6ASgXeRm5PteUAfh7bw+ykSEe8oEuR1moT9HXIiVtIhptJuExWqL/iRkNTs9Vrb7iKbxX7kZqW3HoQriKZl5dBMifZjKC0gAGSLquOCTWTJKJEaSYbD87B+h5ktoyqWZvBAhv/Ra5WoWTp32UZhBor6vW23A6WvAQBvNcIvdeAimaZput1BlIp6rHMg3X6+5S2QCR3IGn0vrYIyOfSTTS1fVkGmJLSQzYbWtL4RnUiJEoZfZSVapaQGMWCSwTyipKKvp/XQXhqBzKIbSPU8wYZaHaR1ve+f+8MR5jiXqSj13t4N0Afp/0W4LncT27fXssB/Dy2DzzwS6zuLPTL+YyfrRLoEfvhOXWJdWcx73hEOe+TvGVDQytKZaC0Dax6Z7ujgUvb19KgB9iglPmN6sCzxzFQOuP9/UCjrd8S1JvObNenzjHzo4I9E3tO5m133PPI7ne6y4sgWguUSPqZqAy0agOmXttSvf/YcRTUNVmLB1DOXQXvEaPJjOv3iTf2P0hJBr3Pzijczo18g2fyhNXpWce+ypWnXJ/bt95yAD+f7ZkJxU8Tut/4H19CCMJZ5bw1pNhUGdgD8SLEmSYMlXIAjm4C9WWY3EF/y7U1WPjNsE+kvGhkiogMPx5HIYDnPWRfsS9bGXA9ywJ+haBwHJSJGLntjD5uNjTYinib1WHtFDSODEzWcciaWdTpq3/SWIHqSgDoxkqYxVTHCSVWx5BsS9cBCWSgaOp7A2MrkdvFJUgxAIiHkUqJkHawqG2D9mzYpJ3Zx1c3bLf6ZyeWcVm7gnSwqh4jBLwjwoxrNzz82i08xsVco950kZAQnNv5ZzmAn8f20m23w68hiRF1kfNV9xC8X6sv4T3wS3X9MALsm+mvSVEWfa8FAbtIhxmA6mLgX837rTjFhSXEtFeEBrCyo5aC7zMdLdnkTLvnZL3tpltWcduYtM9j2eUaYewmIVtw0jJKDRSPkta17jq5nuedE/prqKRt4izA1yLo5LXkKW8EPg+sCq9cscCxFcByXvNSPQxoVYJ+HiBqQcVKFZi+GqFW2i35LKyzkAWOrexAqQxsDvXSR4ahYgk4IBy3lQZelP1LO4C3wGPXb+Z+pKPDTU/8Bd84tbOd23liOYCfx3bHo/9aIv6vQXTahlZWXwNCIs8qQQaG284CUj77JFPgyQ5lAA3r1+Voq0Qvcl69pX77BgWmPDmdAmU9rttf2yC2wDzaKb0vq5sCMkNYcAG/qmULWnXHoQDwdo/ZGtx9FQD9MzTgNiC3OEIHGWGsCYc9n5V+TnuQJZCWo40Tp5QZJjQ/iAYHi2OjRkwlUtEBx5oruBZ5VjK2Wgz3XWoB++HiI4/zg9HdPPNHHz35JLmdt5YD+PlspuU2b8kaLxhQu2L8gPxYnWoBr0Mu0ydrq+2QY3uFQtuVbK2VYVaVFlVgqiweXjykXqJ65snqyZpr63MJYQrvk2S8WZ6ItxIhUadUFG/4BP0p5BUUmEfdgUwTPxw89xLiDcedULSrVNRrd6DtB4kRU60YB276+ypBR2iDpgGnqXk2I4FmVzMlISThlAiVB6vufYlQ7XBOPehNh0NDhHhcqapEKCKQ70PlUvq5/M0ENdEe0m5C818M19NWnXjJBohPItRSGa78NwcBKBQm6PUuJ7fz23IAP5/NUuSLIjkDec92AiXgg5hVgpSwgzSiNYlhAwGcI7q+Kseacqn0zaamRatNmtpB+e2lVtAVL2WUEBECfO1V+TOPc2osqCYWVoM2fMpP+9cCzwwC9v8/e+8eZ1dV3v+/N3MOMyeTzIQZnCETky9JiRIFDJIaajQiIFT8ij/9YkXRKt4rivdLvdSq1S8WbK01rXhDq3il0mLBiuUiEr/EBkkhJWqQpIkMzpgZM5OczEzmHM7vj7U+ez17zT6TCYRkgP28XvOac/Z17X32/qxnfdbneR5FV1qufRgP3IoGVWbEIQdKaeDMEujwSotJAj0i4Nb3UskdJ57cVIEG8Jy3IhsVPGUpK3n1NsmVyqvhrk+jFVEdNZ+tcRSXnjXNd+7PafObaARUNqOm3eO+So6KCMc0mqIifwzD68JxFW3ZdQWhQ/ed1MRiqLUcwW7mcXvSrPRtYbPNCgCfzaayabUANClw24yDCtTQsF4mWWAPjkeX9huC6zuXdMhfMTwwZPlvcOdSuHfFAKt9iCptDmAqOU+WTlkmKGQqCkoi6wXHOavt/srImAqi6waES0D31AdbUZxgZJVkoxL1eczyNj44hW4CSJvzTkmcAlmFTlvgvyUbjNtVq2WpJB1eVioRvHwv15xCp1gv3Ba6xtz3kgkI8/ep1gcTrUewrXUJ+ziSFurw8cLzfqRYAeCz0P6Kd3EyG3mehr2dLmAnfWl34KL3bM3MEs6lW0moiTlI8LRWAl8jhEzbWoY+2q5Wg7HBrAfd1Rnl62h1OVp6VV+zCr0CLE/fdFRhm1dNDJt9FWKfl8NjshayAZZxk4/gPPNhAh3S20cmH/nAhsADpxXmW6F3NQ5IpTSpOQ4YXMekScDdJo/KpAG8LqsPv45UllmWAkXl7FRJZjGg32uEUOhgEVSGsvlD7PXvNvdHpmjZGn6kIcWIv46SV/3QRShEPUqYMd7gr7sOXcv8MnX26mhK8PvjK/yQs9Nw9wu4ivWQpnstbPZbAeCz0FbzU1aw0f0615Hmnxjd6ikLAbZeTk1k7sGBdg1Hn9RwL+6P/TYXEoJ8tvhtVch4PFAdYLjrIT8p5s9bq0F5jz/ucoIMTR2JT/AvaqWrPQS1KJIQPJ/b4raf9J59r5c4qmI8BKVGueSjEhXe7WWBvV5xsrvqrqlU8vlFxAOfC1zrzlOZCME3k8PhGsuE4hXggmZsLhRVJgK3f2nQB9X0kEZX0o8Dc3DgOUgKmpVen7993N0DzRnYQhMVU11ntObuhZZPjriOVefsUPQnOI4bd560A4s17QJ7Jdr6MfD3De5iFetZxV7fpRTh7o88KwB8Ftqz7/l/QVes4a54WZunQxOZgwS1gqgUvbiqmGLFwRM4ALc0QMlMTNaCKmIS0qH5JGYUsMQcz4aLe4AUhZJWJGd6JUZeAArAsQZMp+Qo8UWcUwmeOgVRR2qnrtFHm1rZXq7pPsMUqkJe+mgVOuTd2/ZBlpNWvhE/AiiXXK7yWs1nTPSb5Y1K1PHVVDRZ1I/OY9qZfjcedqYtmtswE9trWF9kB3yEWwHgs8zO5btcswWnV5ZMTdEsECSA/QQqYYRQmV5eWD/BG9NLvj2cZ3TYKC38fpXF3kNtwYVSK9jF1zhcthIXei3AHgn7ZkAFk8PDPGFdnThP0CZLaofyOJTr7jjlcT9hZzsccfxWVK6OyNtkzV1PSVSSTGqRCddeO1kaK2JSflp5rSPTrVKaV/Hmaeh8t9lQAC5PHNc5lkouyGis6gBcCbxqtQDivcvIpAWuDPvqN0ompd92MYFvHyTLvatzbyGkDJgg8wwU9si3AsBnoynqbosbwoN78bt6CLRJFfcy6kVejPM2BWobSBUGPMNvuz4EeewFjpV2uuaP207w5rf778sIqgYD5mkEYw0HygKPAfPZp7id9JN/tZqZKFXuFQhSvQGzfK5f10VQenTA2BZHsdhqO+Cz9fnJzN0WpL4YvOjYy7eThfHE67BP8mSjHu28JngwXkaIij3Hr7jBbNzpPk9WTYeJo0a6cPejVMqe/74t4ZzzlAMewgT0ctMQXZPV9kunLh6+G3ix+3/sGvdwbaOwR4MdMdMNkyRpSZLkjiRJ/s1/70qS5EdJkmzx/496+Jr52LDkOlhAPxe+4x8dgHoPLw2wkddZIwDvOM4TF8j6kmNp8Ek7juf23rLtsbfppfcFCJjAgWUV5+1uxXGst/k/SRCVG0R/iu4zBQyA1Issd7u/Si+ByrBKD11X3fxh1ulvNATd2KAja9NSI4fSVKHd0D5lAa65PnUuUpZYyqZkP3SS8v7p72onQK3mX6a87q24OZFlsI9W9uWWDCrskWgH4oG/Fecbyh94H3BDo9G4JEmS9/nv7z3I7XvM2dn80H0wnmXJe5eVOg7YVUpNYCiPXZNVGsKLCx0i5WJ7fcmrAR/AM1aFMRe7Qddystn19oQJwpRfxgNxByHiUIn/bbJsW3RCT0wbaTGDSQ/aZQ3t5Zlb/bfn8Md8W39TDYV2x8anVsop1fJ5dqlotL1u3ZTIT8Nvx/lGtF9FHnHdHXdyuz/nKtyoR8fxRRRUPKPsPXGGQkCRNdUoVRvEeadFPFTpXrnDYUpEbZqpEtJCC//+jtPSScoXcV1ck/kRbytZx22jz6C0lkDnDcGXP/IyzuQ/qNPC5byBAT+rfQVvPJzNPeg2IwBPkuTxwPOAjxMKJr0AOM1//ipwMwWAPyR7xTlfoE6Js+s/hNuc+qBW86oKgaNe0mWEYbLokpU4IK3hXu5fRCeY6yiZbdXAvQ5XYXmf2UapTrc64FZe7XLNcMb3ZsPfH6/iBFWfC3vcJWACAg9fgwGPHjYqc6HxUO8zEYLDUQ5rbQ9T5+m0TPy0pUIma77TanOpdKfosP1xrSIklvbZ85RbcL/FBFRaXLpeAK43vP+LCDlXpL3XZOfcbLBsShVppFSHjkWEkZb2n0vIX65zKi98iTA30Qqc4ZaPrj6SFdzBMexiNltyI/x/p3+LI5ngc/wZR1095u7XEtKRZXJpA4DGZ7L79jDAzo5OjhnwvZkfibz6fd9w78oqWL7qbrp95reLuZTPPIoylc/UA/808B7Ahmj1NhqN+wEajcb9SZLkTPtAkiSvB14PsHhxUXJ6OvsnXgfrX++KN/gkTGV504twD+QO3K+2icBxRoEbQFCfiKPudbzuWC0bUFO2+2l471PHWi/UVsuxxXHLmGG/iWDMSNnI6qDHiFQXNZe7JK3iM56fhrZZ0YLYLEjXcKOIcpP0t9MVlMg9dt3puikBbYGL310NybHKJmw9rfZjC2lY6qgHd9+VIbANR0WZAKv4XgLB+1YnoV4N0snLwZYe9jKHYw7wGmebXbvojKbrfnDji7js9Lu5bOuHHOBLylrDdaJD8MrN3+HiV/31oWnsIbb9AniSJP8bGGw0GrcnSXLagZ6g0Wh8Hvg8wMqVKxsH3MLHmu3AvYArCb+OAHqEQJHEUrkSDnyVfbAfWE3KwY59LgCy9Ti7OgnyQ6shbg3679FqfsAJ+PBsyQwnAnjeN5QF+hhwtU7AHa+L62HmrbcWe+N2290GAFOKpRbW5+1nN7PYqFQBlTY3gVlWlsKt4TyV7aaM2bMIlFY/jkIaNweXKmcLYTLXljarktICqeb7dEJmQamV1GhNYLbBcbf/Bk6Zna9c6/Ao53VdxZX/9Roa7fA+/pIW6hy1Y8w926M4h6UKLdT5+mfO4wKumnKcl53+ZYY42t2vTUyNRPb3Yj670oCl5BponPtwX+GhsZl44KuBc5MkOQef7yxJkq8DA0mSLPDe9wKCVqCwB2G3cTL7OJI1Hbjxzhbc3V5CmBxcRhhyW0D12ero8PuVgJf6df3AJqicAZPXZIFxElcpRoDYNeqL/kJGY9zRQqbUVwVPF3jpn2iX8jj0eu57eAT21kwADKEijORzEKIvIZsDJOap42o9GVqj5MP7lYtlImim55kNxStbyysUnGcWxGv4aNV7/XwA0KXAKUjzzkxOOOqJcUJx4E7CmyJg78RFyGryWFRJ3S+H8NvKTiV48FYN9Da//imzE7gB7uBJ/EHXlS5YzccjXLLuL0NksSJMtwIj8O3jX8JeKlzwusR1iHLIFzT41sBLeODX7XzlA2+k8XS//G1Jtqj3dnjmn99CiTpXcCGvOPcLwOsO2fU+nLZfAG80Gn8O/DmA98B2RoSqAAAgAElEQVTf1Wg0Xp4kyaXAK4FL/P9/fRjb+dixYcKLDsEDg8BxWrSp4QC+12/bRzZwpZ8U7C3wxaXMlPs7jUCshqo2yltSqhsQ9BSCtdEdftKt1UUzdqm2psykNVWOFRtqr7ZZL3kmFIdyjNic3mp7rErJLNeIpOQiRuVBx6llm9nYBGnnWhpySpvUOn1hBmXgkkn2ZyeLNemZ14vsMZ+lLe/HgZt+4zacyqQbtj5lARDirGarfZcX8+S1v4bv465RvP5KQgqECaAfrlj/Z1MnbL3Ve9tD1K3sVELysR7gOnjOt27l2vPP4Fi28VE+fvAv6DDZQ9GBXwJ8J0mS1+AGci8+OE16bNqp92x0L/V1foF+mSpu0qydbBDMJgK/uphUb5wCqy9KbANJFnaTetWaMARTLUf1Mb10ccxrlAWCFV90t9LqChWUSo5CGLXSBh20ixBUBKFQMi4RVqXqvu++N+yq2o/Sfk9G3K9Sxw40CUaxSarS5F8zsFLJ0UAlBdwYIM2rBg8ea2tZ2V/ZuumSDNYI0kwj9ZS+v7Idd72rCZkk7f3UPZggBG7ZtAVS67wYaIe1vAmAy2Z26YfEruQ8zuE6jpyYoP3GBzj2uRVa6vXUw06VTO04RZXmdZSaQBJXfdYIZkGTE57fgPNhFbcAsPIdG9hJN7uZxzaW+Iqejw47IABvNBo349QmNBqNIcJgprAHa/e44V7jdEjkOYB7gG0So3FCtKUmKJfjQHcYp0SxBQbuJ3jrW/0xX4VLaFWHhSpaC0EG6BM8DVSNhx55+x04L7bc4kPuR4KsbtIoTegPRXgBKt0Erl5ANA4L98A2/0Iu7CKkblURBtWk1MQhrtzZ4IjJ990eihfL5I3Paw8dkGp7lkquw5pn5X0TIWDGUi154N3spZk01XfSz5rTsPxLNVAvQIiilEetbW0HZKMoxXXrXp4Dt5zwNHbSzade/UEaX27SwMNkffRz1C/8FHY/HPWksezIw4b6+4hZhnCeuTqwNhy1tIxIxtPcQqKAR2/CgCISc5ZY8gmC91yL/vbgIhq/6QGnFeeV/xDHCdZwL7IiM2WSmwiErg+yty6Bu9dag6ciIq/VUhiqd6nCDzaqMA2uMdsPV0MF9rEhqCzBvZxWr7QUjp1LeJltulNVv7E27rz+StXpvjt8wQPqwetuFswTB8rUat5rhmkLNT8Y072Z1G844e+lBV99lzetuqRW42/zwDcj6pfDPRzHGBU+++XXAl88eBdyEOyNfI5fDj3F3d8rcI7HIuBqv4F5BjMpEu4nJOFaQnhGCkutAPDDYOfyXVqo814+yakjhGGhht0thFB1cA/tRg9MI2Sr0HgqAnATXspPYsuuaaJrJChRxka8XrpEOuFm6yyKtm1WDk2aa3ATlgoHV6GCNJ931U1elkpQ6ScbMag8HRoKy/uUxypAl4c2FL5Lvlfuc9eWViyKCkqAiXb0QUNKZlWruayEymWia8/zupuZpZfk9ddqvi2tIYXt2LihauMSdzaQSdecB9i2M1Z4/Aq3z6u3fgOWzM6Jy19ykntG/4LQIZ2Ky475WRwdCNlIY33X5zpwFlyy+m3s9mrmRw+T/eCtAPBDaEn/BK/qu4J5HMly7ubUHT4E8rN+g+MJDzOEh3fEURNpubMaMASV5TjO3MoJFaXZTwoKo55CGRv3FegBWkLOjYU9vlMY8WBmPNGu1hA5OIlTjXTgcnTsHvcqkprzhvUwdRA894VLCVGJKsKszIl7cLJJUSrdhMkqye5ECy0mLT0/uiOAbbkKXUug0gMsh8oWqAzCmKcbMiH3VU+beL57bDxEuYr/bmaWC7dUd1pFaCJQLxWNkjqhNhj2T7ltq9uXN642WtooTgsrW4br0PxM5UVLPgXA2ukv4fDamgb33LyI4373G2qtsLvDdfFHdY6FwDMIMkjdm17gFLjy4/+HXcxnHrt5H397OK5gVloB4IfJPnjSp8LwEPP/BAJnLeAcceA9iZPaVdpxw9AqzuuWp6JCDQKBHW65vMNyyU2eVXrdfgv7YGxDyNOdVttpC+BWLoU0s2PjWUrFSgBr+GLH/nsaqGPljjY3iClQkG6TF5DUTuB/zwC6XWRqhzq6DnPSjbj5gJEsFaTiDKPVALS1WvY0lnZRwQdr8uInTUdlvXy7/+6q6xAqVVPGbdyVfQOoKIq25q9ZnK+duJ6O2pHc8Hq46COf4pFie5nDfY/rppUJ9nrR6FE9Y1mlleSTkI4O6YR++lLPu7BgBYAfQmv0tXIxu/nMx97jcmjYbHwlHAJKVQAOvIYdIHSUXFj7wh6yE5x1As3QSQgC6QQ2Bbqg0gplm1cDUhWFzUld9h6QjZSsLPNZBLfCgAdbW6XHmvVO0wWSwu0h8NuKMpwgSMi6CeAlL9YGqUCoCbqRNDQ9zSHiVRm6ZoHuaNWBfnk8ZCzMK22WXm9rkExCpDTZzxuTB+rlFqjt700TddRK6MBlpm4pECb6+qGHwTRA5YV8i6s5fz8nOnx2Er+cuvCLifsfpSPOjExWw7vX/T2snp0U0eG0pNE4dDdl5cqVjQ0bNux/w0exJZ+BRkcCNxIkgzaftrwODyj33ZstNXbsGYTq8nrI15F669uGgt57FNJcUj2q4K4OopsAeh5gR0e9EsNOftZ8QIom37yNjYRKNfPasqlaf1MN7bUdgSTRJUzxZCVo2gPD630JMKkrRL0M44BcksOSk0Hqdmkis1zyXrbpXHq9NntgKKhnhg01USIkDJNqZmAoHDOeEI0nSffHl0t3XjH3breoHHVkSwnCbTtpa2tuKoJTUbPedt7qIrtexxcAHlYAv5SL6WaIE7mTOb7bfzL3HLTjX8CXmc8u1m56J4zAB1Z/iAmOBOAyPnjQzvNItCRJbm80Givj5YUHfojtaRffAn8DrDM0hSYZITORM2aCF8r4SEaFySv6zi9TuLsoDlvTYAgYGoGOEcNNe4rAgl2t5lQqmuic12ZyWNtc2n69LXqs/zHNYvGtQogAHRh01Ea5hNP+dnoNuDxwzaKqfFsN5237dnSZ6kFpjcicqj5x9Z2ZaMP352XnAbvdd3+gPqUgMYCSd4nvh6BEgTCpWcJx4D7179G3u9734lOU5enQeuBHP3AfO49YeFCO9QYu51i2Od67E37JE9NMioXlWwHgh9hWsgGud58rvTA5RJBJqcxZKWT1s1n/SlaxMBSSJw2PZDP8xSY8GbXrfa4Scevat4P9mOcoU2VHHwxvzSa+qhBA0C5vltskNR+4MbkJyhNkhxFa70cHlXbv3e8gqDpaHdVj87YMmk7QLpfnLY7aAnKX0RlnJi/NNqWSUb6Q/QxNgn8MpZKaJpVHcTdfGQbV0SjfiX1TowhYgLns5mes4m5ey0UHUUb4I57JPPZw6lUb6TnvT+hlkCfWf8W+liPTbZKfEsLYH4ItYgeL7x+k1g6lxzVyMp8UFltBoRxq+5sEPuGSPckWdrsX3uaJruGoEzmjJbIAMTYecG1eWzb4xE4oziE72ZgnCxSoW5o1tpLZNs5FIrphd9V7vL5Ntq0QqApZnCBL4N5lKJmKlR2KXtExasBdpJ75WH8ozGxFHfqeTrC2hTbZe5qesz10jrVaPm2iiVErvczz3HW9mQ5CAU0lwo+rYs3g0tHa4tMK4NJFrPDbtfnrB+67tpu7fameIY7m/FRk/eDtPK7kI3yYOexlyeX3u5HfMI7eaoH73tPNJ3g///DTdxwUAC+suRUUyiyw2ziZUyeAt8K8TwTQFQDYNKvSUgssy2bYXioFACmXsp0BeG+9SRt0fAvk2jYG+zyTplttSXOQGNVGialabG1rAc2CK8CxXlEzNuQ8ewiSwRqwUMqNcYIXKjkiIZDIYnx8jTq37Ux0LammuxdqNoNhlMyrXAp5U1L6Jj5fDnCLBx/rjyZGlQ7BJjBRrpM8eaPotp5wYQvfMsTCZbdy08V/lG52Iv/Jprv/kCO6qzzwJUfwN96fc7xp7MlX/drle7nRtOdVbt0+jqSbIT709A9QqLIPjxUAfqhN/HEXKR2xLad4AQSw7ep0gJHm8p7mV7MpXCGfsij7U0+azxWCx2736WoLANrstNPlCpmyzFupFAAtj5ce63dAWm4xnY0H78mJiCqqh4RWM7HJWpjQFChn9jXcvkLvIeRmsR78g7WMwkXl13bgaKIaIRDL5gER9WIDvDRs6gdaXdrUGi1wSwJrfvag23ceVzKP3a6z3ESQehqO7Rae+ahKDPVItALAD6Gd+r6NcI3/omAN4Fjlge6DMRUDqEKv50fvu9dREj0+CMWmlB0dduvGxp2jZIsuVPzfGN6Lh9wpoRLQ2w6VZwGb4L7t2ao2Mc1QaQtURa5SoxZ5vPZzDsimIDkCtPgAJZ9FsdIJlaWkRREmfR6UuOqOtZg+AZ8oa5VbOLwuG0Gp/6NV7013hPwukFW2SBcvusXqxXUvNNLo6Aj5WWq1sG2lNfLcW4ABT9tsxhWfEGXSjhtt+Go9KUcuE6COAtvh5D/dDC93+9zCs3jzkz7LBK18/43Pj3aY3n7K05nPLhrnQLIOR520Oqrm8f+wE4AzTrmWV87oaIU9XFYA+KG0SxqwIXHezA5Cfoc20mT+leUwucW/3J4aWOjrWI5WPfWgqD8FiPjDL2uHLUbCJ+9ac3KxQsJOYO6uwrzrfKCQ2U6TfJD1RptZpTU7MSgw12nHak5BktIR/phlmx9kOHi75VYcsPs84+VS4PzB5P1uzx5DMkdRJeUWGL097KNOadRQJVo3sC546PqP7yQrrcDpoSOsWKnfRk//+Ou3ybVKcYcobbeWl8yoYoCpE5VtBK5c+eFtXnGrFV/rPh+1aIznL/k+/fRBF1zFBczU+sXndDWgJ3HPZwssPG2IxqsS3vWqj7GRk2d8vMIeHisA/HBYG+5FlBZ7CW6Crtv9lWvQZVKKpjpsQiCKnQC06pJl7a7mpTWpLeQhSgd9n18/j+Cpz2GqydvMk+spKyE4qif1VFsC16zOIMUqr6ap1Ty/LCATxz0SOOZ5uG1THXqnqxk5bFIOWI31gViGnrHLS0Yp0gol31lW2jz4Kop0BpbbNls0w4K5flN77JL5U3pVlVyzvJaNXpT9Ap655Ces52nsYv7MGpxj3/vIczl74oeU6g/QuhxYD72vGnSSv8IOqxUqlENsV3Iex7KNOezl5Ps3u8Rx34UxH6Tym2oWVKxCZNkyJ9kDr2QY9lLDekjItMV7ZbsJnreVCWpSdDhnXSb6EuPZCnBsEMmIS9SknOHgQ9CtVM+AiaVOrNdbw3n8qSyx1SeokiKjDYa3B/4/vS9meyvlSzsZr5tOiw6THX0obYDNYRKvAyivBDY7qqpDqQ9eSqhAL0qjFccVD4bfJLb0mLqf9oLsMEXtVy4QFUW2+1levE4I0Oohzcy/7qxT+ClPZz2r+CVP4C7+cGqjZmJrE/iwP+45OM268tecVURHHgorVCizxPrpo8Je5rGbRiskzwKWQeU2GF4L3cZjzYS4+19K6hMmnOxwshYiCEdH8/lfcMulcplj1i9sg23jgTNXhyFQLJecEgRM0IynFlSlJ52MNDxvnLrVcuWxV64JyHLJX3N/li/uWky2Zmc17F9WrhTcPl1KM+C3rajKjgmfTwOIdG+iAKAOpSWANGCq3IIDR1XZEUBrO5WXqzkteqWWDcSqiMvWpKUmKS1VojYJvNtwXvcIjnKzubHtJKrSI7ThgHW5O9ZGVnA3T+KnPJ37714CT+LB2UUNuNGVM/vv5/8B/Szg5VzJAEWR8sNtBYAfYns3n0k//13XG3hrz+fTElkCR/0v+9SnmszMWC1oruXt1Wppwr406tGaneAEB+QdHWTAQJLFjh6myNjE7U7Wg7dejsBPgTsVgJwozmYRjJlLq4XOolbz3Lbyvei8VX/c9sCXT2rSbzFpfpR0AtbMFZSV9KvmOoByNfKYVQ2mRFqHslQiBN3YMmddBJ22p3h030p5VIgq1Ech8ZDzvUaIuLWmAh/apgSc7Y49cbZb3Pb1Bo3Xm30eLHjL/tl52k/2fwPTblzYobICwA+jPZub2X58D4u3DEKXq3LOZR78eqFyK+5l34jLAzLs8nSA8yLFDuwdD171KMHTlixwL1N/aIH5fYNZIcNC5UwRYLZCh/fAaXXHHR4M3r81Gw2qwKR44lSTipM53jgE8LafJz1tVGmF8mJgFSF5VzV4071DhIRg7biAF09NVKpQkVxzFDff0EqawbFjhJDZUSXQ9NflQX+R/26TTV3vlDFWFlj2k87KzaJrKamtkv9Z2sRy5X7CVuHy7gBkve7FOG+7D+58xxMAlyxKh8mAd2GPWisA/DDaHazgaIZYvOwGB0Z9QCe8dtVneSFX87zv3OA23I6rTrInaMJjT9bmPpF8UCBtPW+7bBLYBpzmudWxqgdIFZTwFMDAUJgIFSCVS1PB11Z4F6haGsVqte36vKCXyejzGFAeh657CYUhlvh7plwpEzhAFt0i79t76ikFMWy26cFx11XgNr9ewUF1QsrfEmlRjEzNyprj7FMqRxkWce3r0Gfto+IUqmdpKKC0vbqeOtkJTalsFgEnA8fD3531eoY4GoCTKOyxZgWAH0Z7Jd92H44HPh2Wz+evuInTeF7phgBMpmoOeL6X4IVbZw6yk5/kLF+4GLZsh4WQqj8y8jYvj5MCZjSa6MvTf9tq8s34b8jK+MpN6JVmlYAyNoID8Jr5k5et808QALxu9tO5bGFdAakt69ZG4K4zgnbzfyJarwlFdRSa6LRgbOkSedxertjU6xaF9GbShFdv5XIKe+xaAeCz0FrZRx/98Frgm2S4aIWod3U6b7iSk4GwixAtaFUeHWfB6PUeKBdB76DP7y11w4g5yDgw19EpXSPAsANxnStODCXlhhQdFpgnffKrri6y2uea46+lyqiII27zKhuftCvj8aqTEb0h4Jb3q2o/ugaBqy0sPEQavbm7GuYcUjXPUkBFn8UxtxKqHMl7huCtmzzuk36b2ojP5dLtz6/iDZ6CmRS/j99mhzmf2qxOoQ034ljpz/W4Qv1R2AwAPEmSNuAWgl9yVaPR+HCSJCuAzxHUu29qNBoPPna3sKl2A24STcmL/ITaZM3lPykRZIF6zyv+8/A4maRTY+MwfI3hvte5/2VgdJOftBQIlRyw7h4M5yuXXLSmzKpN0krvJleIJgU7unAV6W2Nx1L4X15CKEIhCqFGdmghpYcN9onrSsoEkgJaAXwbwcOuhzSzmZwk6nS6CJy02mZpDR1T7dC2Xs6nkUg6ohiJ2urPUxsP92xgMMxj9C4meN/abwVwItzzhsezlWN5DoUVNjMPfAI4vdFo7EmSpAzcmiTJD4CPAh9pNBo/SJLkHOCvgdMevqY+dqyPfroZcp7aIKkHWl4GtQ3ZHCaxlFi5UOKMgdbsNik/PuLLrrV4wMVpwFXNB4zGmmx0pqiX3YYiyICjpQssL62ep2T+amR7JHm/EFIItETLtZ01ecmiJuSNk5U7yvOW9w0471sc+KA5lj2HvPwuMgFI4No1WTXXL8CPrtMqX5qKc3SMKjAAOzmaXRzVbOvCHmO2XwBvuEgfCaf0zjf8nwQMKuZV2EOwpH+C5/Zdy25ewk+uPwvWkyYpYgIYCAyHzW/S4TlmCwI2ojINi8dPMNp1eKleH5RP8Acdh7JXnpRFFZic27RBh/dKx+4iBdIuW4gAwiSheGkbiOKrtjNKiDgaNOexVdq1fj2u3qVRqUzJ6ofTwwuY03Xmu42OtNukIC7apuaKI6eh/kaSmPLRom70WZO0cX1PdUqSOtahQ9px/AhokCznresHNyIZhlP/bCOn/uMdFFYYzJADT5KkBbgdOA5Y22g01idJ8jbgh0mSXAYcAeRmBE6S5PXA6wEWLy6E//uzk/GV6t9F4HjFB9eDvjuOnCwRcA7yJwEt/Vwy23QtwYHrIA5QlKbUepWyTgIPXYeKJt4gBJ+04OgeAbhtQDvZ4BXM92UEmqLFt0dFLjxvPWoUOHFeFo0A4vwtscUFi7VdqnFfjIu09JPG8+yNI+jOwejRrY7c1vKU9FDFpuNRSY3ww7WbZTLlC++DIm6msNhmBOCNRqMOrEiSZD5wdZIkJ+BA+e2NRuOfkyT5E+BLwJk5+34e+Dy4UPqD1vJHoTX6Wnki53EaN7kX177IKkDA1IyCsc461mfvJT/HSQVPf3STBRZprAWcWicu1yow8sz2ElEATlqQedCcKw+4Sjjw9pOSCtGfLhAo5rNnUj4ttrLoFs91T0ne1ez8OR0FMLWivLjtmk+OpY4K3O8QWy/uHr4fqsuOALK3s7DHth2QCqXRaOxKkuRm4I+BVwJv9au+CwexjtNj2H7JSZzNNn506zN4zttudQBwTQgWsSNyG2qf4oqG8P7rJNDbFrIWWnlhuQQdLyZMEoIDF69AYRxHcQicrAxOYBPzwtpfbRk06zsJwSmiMaqEvCKdOM27ZHfjPj2AvyarIU9zdOflHOkMHLQF/FgZEy/rECG4npQDnxKRGk1+pkoSi6p1sty17fBqTm8PJo/MRAj0sVZWqb2zoNEH7a0Pokcq7FFtM1GhPA6Y9OBdwXnZn8SxhM8CbgZOJ9VIFPZQ7d+HX0ByI+7ufhOn1uh04Luw0yVWGjDywTyn0DrBHT6/9X2D/nu7KVU2iAPNfoLnLX5aFes1edhG0FBLX+05cyAAvDhuyILfFtf2mLuWZbzmnGAlm8AqD7jTHN2e9imVfA4SrzpJeekqVHr8NUrtouvF8fopX14zlI3mEkQT6VprMDlISGfbbu5JyZ1vtBrUOhXP81d0f3D7Tk5EHc6pbl++D8lWeOYbfgTATwoNSmHeZuKBLwC+6nnwI4DvNBqNf0uSZBfwd0mS6BUugncPkiWbcYB6q19wCi5aEFxq1ZYQSWkLBaf5ScyvWhKY1oLXPTbhAQwcIGuSUZ6jdNaQfUIsTWAkhylNoMK8Mk1rS4GRVx7MmAXluM6k9aan875nYmPjPqze0kHj2e/qDCyg1gzYztg8VaIRUEe770jUmZigonJUezPNg74Czn3Ddw7gpIU9VmwmKpQ7YWrm9kajcSsOWgo72KbkSIuBzcAv/PJluKIPE3BsFdgOA1sClZL+rwXNdqUX1wXj8n1UluMmxNQhKHcIhPwgJdIKLJlQ7+MJyZWUH6WGy9Miz3NH0I1PGu/VJtzSfxtAE1slnug01mwSMnffpcCIn2w0mQmpTh0FlH078kL7M6ZsgJYqIZu6dl57tq0qDFFSJyH9eAchCrTmC0QAYwMwug46jgf64GmsNzm9Cw+8MGcHxIEXdmisetYRtK94wFUn30pQcohfnsBxo63Q203qQY/uMDmnJcczEYiVlxIAuIsAHJZOkapE+00AZ/h9qmZ/KVSqgdOdNADWDPyaUSeQBfm87fLyi+d54xUMX+5Ls41F/HKs/bYJtmzbreefdgwl0qr1Y9UQfZpW8TG0TaXV/xbdhBFJiTA3cDwukyCECd2roXK6j0xdCbe85mnczkp2u/IWhRWWWgHgs9DaW+swnKR5r22OkYyqoU6Q7tU8taLhvc14B1ntdR4FYKMLrRZZ25ZwkaFRIifq2SjMB2OxB76/sm0z3aZW8zr2ev55tCyPLpmJTeHoLS9ez1JZVE3BCY1sSmRlm+042eEG3MhBk5iFFdbECgCfhXYc/8099wLLfZ4Q5a8eJguuXbgJyCVufaVE4LO7/X49ZBUSyt6nlKitBKlgD0x6aqVW8/RLF3AtDgSH3SRkM0sLS5j82nkBNLurUz3nZl63zK7PU5NY04QhZD3v2NPXMkWYpp621DJE1ed1H/c4EC6rGpCCmvK29Zrw0X5/fBWdOMuv/3iOsnZ19usa/1dYYbEVAD5bTdXpO4FTcXTFMC6TvnJFQ+CtF+OAXMCxmKx+WxzwXQTPXNuqys3WrFc52g/0B5BTWL0KKkMA6Ipya9egoyVEQ5ZK2ZJn1sotM/fcm4H7/sA8rRRfDzLBSsnJDDMetKFSAOcJt0HlXh2IrPRRn83IJaVYRGvVnPyz3OkSiV36r28B4D2/ckU9Gk+Y7ooLK2z/VgD4LLOLuZSf1z/oviiKT0Bjw7mrOABuIcj8BNriuJV4qd0cR0mebKY77+GXgfKI87LjCEY7+QhT149NQHkwuyzj6cYThjmBL9ZD3h8wgwNMTZQ2A++yL59WgTB6ac/mgZlCTYnvV+cSd3gjhLJtthPQBHA/DsTbPYXTTUhIBsx9/E7/6ej8CyussBlaAeCzzI5kgo7b9jmw6PULlXtDqUk1gWiV94txKhUBjbILglOMbCeExW/HdQQn+G2H/f6LgBuhNuj5dA+iFRM6L2VKWly5051nsj7VwwYvWfSf5d2WDFhmCj7Up35O623WswCfBt004a2VwpYu3D1bhMupCdnoT59/e3Io8vIV+i6zwTqebqIbNyLS/IIH6cnPucRjnIj7DbrhCx95BfPYzRu5gnfnhcUWVtiDsALAZ5ldtvZDzoNrw00alggFCOUVmqhAIID2dWQ9RemvR3CFbt9LACKp93fgOgJ5ilt9bpTt/hiSGfr6nGV/3ErORGgzT3nMthkyVXgqbVPzm0znnaefReF4/rpUy9Ix6fY7cB2UnXxVjnBIFThlmxYWQl5xWyXHyzlHq77M3CBh/qANd88UmTnhv78T6IFv8DJ2M483Tr20wgp70FYA+GyzfoKnuwyn15YmG5zXLJ14XFjAZMPLFDBY7pY3FkG95P5aalDvhGuWPJ/6mhZaqNPLAGs2/CxoxCFURa87egXIzREy09wjlVYykYyTEbDHFkv64mUaGShAKbZJKVEg+7TrGKKhpAYB11GqUzNh8Jl8LOOh/WXpwXNGA3+15p3sYR6rWM8lfHjqBoUV9hAscdliD42tXLmysWHDhv1v+Fi21yUOSN5IyiWd25sAACAASURBVM3ecdxyADawkgtHv0ZpBBfg0wn3repmDnsBOOrksWwIO0AJfvv/nJv5Mf6CX/JEAP6D5zVtwgV8meXczQdv/JQL5YcwgSpvWmqXnBzb0DxjYLnFhPHjwt4n62GCFKbSJel+i935xgaMIsXot+35U4qlbjThtvCCRimWFukynwXQmzx/r4rzWu8nKTPyTN2TpbiOdjVO9XNWkcPtYbdbEtatOYUW6sxjNwBDdHMidzFvdIydHZ3sYj7f5nxOxqXjPZcfHs4WH5AlSXJ7o9FYGS8vPPDZZl+Y+rIrDPYC7qC3Y4CejkFWtW8k6Wq4mpayO6AxnJB46dxEN7ReA9/nXOaxmzs5cUZ5NK7k1SSfgeddfB0ns9lJDsdxXuk6nIfqK6/T76rPw/496NT7bvMKF2PxvhUTaj5Zd+A8tiVQLALrWi149GVbhk0dWTuU7UglPSEhZW1M2QyRqnvKcY5zrbff90SdyjIciJ8Nv19QKcovzNS+lDj1VQ34RoPk/fD+T/wFi9jBXubwDtYCMLE34chxSNbCmR/6N/5j3f8GYPVVt7uOswRvOO7TvJvLmD885t4H36F/eOsnoQRrF70G3pKkI9U7L3sCJ/3iV9AKO5fMZQMr6acPgFdzZW5z/5MT+cPb3XD13FNcqoNrePHDdHPyrQDwR5Ddzckgr6Erf5uhrrlU2vdSqj/AzjndcD68jn8C4PwDOFfjYndGTg/LruQ8LvjDf3Zfqm4is9I6s6Ca6SyP8wagzUV3akJVcsVyN1R8p5GZOFW1C5td0c4TEH2um/8tBJrKJquSl91qtreBVUbBkiptFrm/3y7oZIijCwA/QPvvb/wB+3gScPf0G9pc9d/EddLXAlW4vP62kGfma3DM10c4ZutImmHzovEvTc1L/2DtLg5bUpGCQinsgOwL/Cnz2M2pyb9QBuZFL4GlTuJIRXnPmrjU9l0ecIdHjJful43GOvQ2HECqXmfVA6cAtw1HWwjYNX/Qhhs5iO/W/iMGeFf5/0oXAK5TUFUgAYbJq6LJ3VrNh9ADPxp4Br/mOADeyBX5N7KwrJ2WwCtwE/HvhztPeQJ3sIKj2MUC+hljDmtO/pnL0PkB3O/7Kdwk9RDud9a8j54HO1lt5zy0zQLz2cZPrID/XvMHDNHNBhxrIe8fgP9KYAtUn38E7ZseCOmQ3/DwYWkzCqUA8MIOzHoTxqrZCUsbYQnZ8H/roZcVBWonB41NToT95FkrZ3Zae7MLlztEAU0qMnEKIbrUAvooDtBX4LLWg3txpZmXdy3lSA03v3ALIUNhJ3A63PlpF3nzT7yCHSxiHnv44sveHM7ps+NvPWUBS4oKg1zC23kJ32bJPfenv9e6NaewkRV8i5fwk5ed5e77chxw16B2HZQ+6bblrVDtOoL2Dz8QfruzcL+PVEKx2RGTOlw7wdxNAHo7/4H53AH0wt9d8nrqfuU7rvoH9zz04wLrthDoHnXm/3roAbygUAo7MJvrIxmnCamXzWt3dEem5Fgr2YLGxksqG29eCakqGIpGibZ6CBTSCPsfCgvMF+Fevi4CgOuYKoNWw/HXKmihyc1nwQ991qkfcja/Hj2Ol3V8Y/83obCZmZ/TKH3KLHsvtI8/EHLV6/eZLmeNANwqkiyAq8Pvifapm88+E+hbt37eOQVRIjR+iIvRsIVLDpMVHnhhB2Z/nbiH/XOkD/aoecDTfCKiQvr8CoG4wFT5RjRhCCF6VBkXFbBkAboDWApr/+k1ALx79FIA9nbMjGm+hLdzGjfTzwLqlLiLE/koH5+y3TWczZHs48zRm9ndUeEuTmSCI3kOP5nReR4NdhNPZwH9HL/pf5y0VN7mVjJ5zKXKmfgKtP4Y6IcfveYZHM0QJ9+z2XHEvsP/xWv+F7/mOJ73vhucF9uKC3i6wZzYqoVqBHWPtWbet9pknxnRKba9Sj8BoWOw6RIUSNdCCKiTfNRP3hNFHvPvBYVS2Cy3s7kGgGdzE+/r/TT3DQYePOa8K61eTbLML6jigNvK9WyirXbcSyFgr+E4zi6/7aeBPrhwyT+ylwrf5pUH+eoemzZn9Pes6ljPTbc8F/4CWAK/vaKTeRO7aR/0HK+NDdhOtuBHOwFklT/eesACVo2kNNqxIKx5DetlWxCOvW/tayex62RBWsFZGmk1i1MwWv+Mt17HOQxzyVZg0hxJrG76VUGhFDbLbf2+p9F65D6OZicshoW+uMGYmZSEbLRlauKarSduc44s9n81nMcmOaC8+PWw8x1z2cEi9uaWaS7sYNkxF44EIJbXaX8zTzOkXim438qCqEDT0mUCb5lNEAZTk6zJlLtHx9KxVVzDHk8qojYCiA8zPYhvJ2TqNCmI08+DOEdkwrfLjhIPI4oWAF7YAdmuI4/xn14Nz3qNG0qvh0q/U4RoQrMiXhnccHMpbvJwIyHSFEJxCkjVHtWXHsHLW6/k6u+/FNbBjy55BruZx8+8TGS6IKTC9m9zRn/P3i1dabqE57/wK6ziZwyf4b53DeJGSnZEZekFccZbCaBHtL32iQEz5pM7SPPZZ/aD7MSy5kqs5FTHtp66TRURz3Fon5Zof1l/tExzNZKlKvdQk0n4w2EFgBf2oG3tZa+hwhivPukb0AIdi4C6k/5VIBuevgf3wuuFFLe4BNb+o+OzL+Vd7KOVF3I1PQxwz/Mfz3FLfpPyzi86pFf36LEL+RzP5CdcOPwNkiq8adHH4Hs4r7Idvr3+VQ7MVxPAOaY9IAC1NPPyRiELasqOaUHO8swyn7FxCmBbfTcEr1ydiM3QqfZa3b5Vn2iZBfk482ReSmN7PKWugGyxanuMgcMTbXvEYTlrYY8Ku4gvUqclvETLgUXQ0UV4ASwfqjzayqzYAXTBRf/3S+xmHv/zpuO5/01LWMs7uJy3chw74IQiDP1g22Vf/5ADpRFcp6oi2va3sikCYhMYitawvHMJ11nv8cu0foIsvQKhSMkIIXmatRpTO5KYW1c74va1k28xDSQKyEcIp3M0nbl7h+3yAsMOg+13EjNJkjacKlbTAVc1Go0P+3VvAd6Muw3XNhqN90x3rGIS81FqP0icimA7Tne9GfdEdBI8J1vpvhPHny6Hxhtgd+eRAHS0PIS6bIVl7Dj+mx4G+Rbns55VPJubOPqqPe532UD4reStSjIJ2Um/vCjZPPCywGw/xzRFjaz+Wpz1kFkf7ysaRCZeWoFZduIxDuTRMW10LbhrHzD7qLOKrydWr8TXqP/3PbyOxkOZxJwATm80GnuSJCkDtyZJ8gPcKPkFwEmNRmMiSZKeaY9S2KPXntuAoSQESTwf+CjupVTxA/2VgJW4l2URvKDrO/zeV1t/7Aj0Hl5bxS2cxl0czU4WXzXI4pHvu7mHu2g+6VYyywV01vsWT20B1nq5mpyOjx/noImBdZxsUI49pvadINAyEMDb1mu1lge+dkJWOnA5GDYBXAzgdgTQiuP8h8hXwRwG2y+AN5yLrgGRCpk0gD8DLmk0GhN+u1gVWdhjyV7egMsT90Rtx71w8Quh3NntwLOguuoIbtn3TEZ2eg1335SjFvYg7YuXv9nRI/0ECkPgaDluWV6ul+k+QwiKKeWsaxZwYytK5XnvduJSOm1F2KpjaTffLfjGqhVx9bZt2wnzMirsoVzuEGISSkwF51h1Yid2D5PNiL1JkqQFuB04DljbaDTWJ0nyBOCZSZJ8HHep72o0Gv+Zs+/rgdcDLF68OF5d2KPJfC6IL/CnnPOR6wBY+OEhuJ6pE1M/hvrqEltblrKhT5mACh98praSdXQzxG7m8VOenVn3RH7pQG8L2Qk9gZnAU5PJshjsIOuVx3nP62Z9XlRirOiwZj1teeQaocWecw9ZoKySD5xqm01KZs9dxwG02twdds3cD3VI6qAss6dOotn8wCG2AwrkSZJkPnA18BbgW8CNuAwQfwh8G1jamOaABQf+2LK/4AN8dOsnHJDU4cvPfRnncC3HrB8JXtDlBM/74mLCckb2mYTXXvxZjmYnOzmaL915ES876ctcef9rHMC8l+B1C8At2FgKIwYhC9D6XjLLpYG262zxkGbTGBYYrc7aJiGLuWvbNk18W8lhlSw4xyONHnNMW37Qhs3b/2q/Ojvx8jZthJ7b2Pu+dvZy4Kk1Go1dSZLcDPwx8Bvgex6wf5YkyQO4Kq2/OwjtLexRaK9e+41s+LzolI5pdyssx7749Tdz08v/iL3M4UtclF1ppX0WXDX8twEtMZBitreg3WwiTxOESoEg0/c8RYiAfIKpoGzbpElUq8VuMccTnx1PvooW6SSU0rPUja5VvuQJ5ty6hiGywUWia+x9aDbJewhtvwCeJMnjgEkP3hXgTOCTOF78dOBmT6ccCexsfqTCHhP2pMQ9/CfCmf/xNKc1lkRNiYGGSF+sr17xJ+xgEQAfPBztnYX2Lv6KVfyMOexlPrvY68tCjzGHFuo8715gBHoYdOv+HuZ/YVc2zW0e4EKIhoz552Zqk5jHtiX88s6RF+moggoC0bhDqQL34mSoEDp0myI2z55ANhIUsp48OI+5n5C+QfdHwWSSN+raYu/cqqh0P2IZ4cPsfU9nM/HAFwBf9Tz4EcB3Go3GvyVJciTw5SRJNgH7gFdOR58U9hgxacLHYc0zfpY/pFa9T2AJ2w5Z02arXcuZHMs2nnzLrwF44ppXcCxbmcMYc9ibpg3Y5dU6qhb05Mt/DZuh0Z44oe8VZKWBFvzEe1ugzlOktBPAOZ7EiwHbUhlKTqbi2BA0/xBUH5HaZfPfOTVfB1DZAstfao7bxdRz2WuwE5V5pn36CJ3WiWZftUmh9gOEFA66B1WzXtfR5/+GeUSoUO4kVPWyy/cBL384GlXYI9jkwWgiyg6tLU/qOck1t/yMp6/4mfvS8e1D1MjZba9739cC+HQTogtX4gDxXoKUThTBRtx9tZWa6kyNOoSs2iTmgeWh27wjsVzPqjtshGS7aY/AVfprO2HoNW0//wpM4nBzIU7eljlP7Knb9lvVjLVmHZSqNXUROpUunFpKWvQlft0Xo2uV7FDXaWmnZgFDh8gOYwxRYY8mezuXcBFrOW7cF3SYbmMbvjwCJQ1rNyaw5rE1iLuDJ9FDC330B/CzNTetBz2Ic1XVKeZ5f4NMTRBlj5M3QallNvrQgnYsCZRE1KpQxIP3mGU2sZQ9j8lEeA/OkV1m5XuymNbJC6SJLeb0BeI2UEnHWmq+34aj+F6M865HyGrbY9rJ8vKH0QoAL+yg2JO4m0V7fwOdvjBD3pOlpPyWVvkmzntcBCyGH/FMzrr3Fm5cuppn89OHv+HG/oaL6KOf8+//F+5Y4AjZk/dXl/Eh2nx2seR197voVQHuKEwOhcLNAB3tuMm2xX67EbJ5su0oR1yzpTXkWUvxIxCtmfVxkE672d6mkz3e728FZT2EzH+6DksxqK0lHFDW4NgSPNVXOxpzqlMqok1sJx91+GCuUale85Ql8phbCWC7Hbjc5bDvUJrjVtjir2XZGbiybbGHH3Px8fUfJisAvLCHbOfwPa77+tfwqcLdw65UsDZ4JO9p24ID8BrwTnhO/63c+PLVAHyLF3ITp3G5apU9Ciy5t8Erln6Rd3GZA+/1Pv7N3p9FUO6BstIRQHOwzvNEx81/G7RTw3n5SiIFjloQGMpbVtRiD6FogTrfceAXBA9c59+KA71TyXrdMttOX5O0a7E/bjdUnoHroLpxIG0nY+1EqyYRa+QXsdZ9kX0PJjdB+VRgD2xe5/qVUWD4Lkfh1IBjgTFg8P1u91V9wPv9MSbMuWXbmRXoOQuaUNijwvoJL5QNxpAnB9kEQu1MHSJfD3TBs9v+H9897/kPuUlv5xKezU3MYzcA9/hCw6/jnzLbfY4L6WGAPlrpZQC2w4IFB7+mpSuGEV2X6ipaa0YPtJONOIx54bw0qbrfKk4AwRuHrDpDNMF2gtJCv1mcQtVGKkozrZqlNmGUbYNsESGFsOwEc0xbPEHnaCbXi3l+mbZfihs93OW+3ocD7TG/uuybttmfbtT/P2kEKjfivHGdR8f8hf8/CwJ5CgAv7CHbJfw5XAdjG6AiXlGpRrcQQMImJNJQWKAEzhP3IPPs824K2657GxMnwzVznk+dFr7NS2ihzhP5JfPZRTdD9NHP2cM3A1AvwUBHN3N4ExX2UvGv6xz2AjBab2Vvi5PmHXP1CPNe+H+Ywxgvet4P3PlOhGMGXQOTTmiseWj357ucSx/9PInzeObSW7iAb7Dk6vvd/bmeEAFoOWKZAKyPLDUCYXJT+8STbLFZ6irWUHeY75IjCsh1LlER9/plyvF+IgHMRgkTlp2EwtNDhIlW0Runk530th1TyWwnq+HcZ68qGV4LXV3An5Ct8mQnT1dBeYVf/xU4s90dY9uQa+ryTih3wnA//LwGP8eFm/9HFVZfA11nkZ2EHSTb+bzj8M7ZFABe2EO2k3p/xVgVKqrQYr3vTsLwv04An0EC4HSa/QA2wdEv2AMlOP/F/4KXiQOwgjvYwSJaqHMydzCfXSygn2N2jLjK5VUo1WBhzxAf/8XHXJZE71meumwjvAJGzzoy0/4LTvtnBwxWI9wJyQWTsA3u5IncwQq2sYQ6LXx00ydSj2zdCS4NwAV8nf/pd292o6+VrZ48XnLh/Tz7irkc/bs9rP707e74P8Zpnm1JLgu6cQi41sdqHgv0cfkx7R8Huthz2X1GCcEr1lsWGOrcIzgALeGkoFJ1aJ9Wpo4g9Bsv9+tuMO2KuWv72QK4HxCt9zTdsD91eRCeOmSudcS3Z7Fp8xZ/DSfiPOo+R5kMvNEX3V7kOoIz2+DMIeC1bvtRRbTWCblSpLQZIlsY+TBZAeCFPWg7kf/kUt7DH9cJ5dOsesJGxglUpEywQRp6EUb88n6CZ3mX+9xah5PX3EHNoNqdnMga5U95L6EAskKndQyBxDDwHej43j46+vaFC4mH+OPAHpicX+aeNf+LfQ9xrJy22b5t4v1l6swgC6wWzGxZMbuf1jUzWxcS3G/R1nzzzLFl0ocP4XjuLkLRX3nPOk9M6ygyUr/zDWQ11rbzahY8tIkUkO/C0SDg1U4CWc0jWK/+XoJDoeyD/h72ftFvZ2kpk2mw4zKz3kaHyimZBen7CgAv7CFZH/2M+RerbCu22GQ/Aoth3FC9hvPe4jBtBUt0Eryn75K+PMfxG2iB40t/7xbE8jAbZWhBWf+3EHJiLDBti4ON+oEdULoOjl/+P9AO847bzWJ2ODC+MVznyqXOqz55zkaO6tvllr/sj1jyKb/NJjjmtBGn4b7NLxPdobkCyJYBy5Pu9Zj7ZRUdnWQByO5jgdHK4J5h9lGbluJogk6CtylwrZL1suWFV3GabhWiXoLzfBXhqG3V6dyAm+xUTrsus51NhqVO2IDtFk/b3IOjOE5bietI7ASnOqlu37Yuc51SnIgiqptz22CgbkK6B623ybREJU3JSnJ4rKhKX9iDsmfyI37ygbNc0EPda7/tkNIGeYgekbbW8pvtZDPm6SW04c0WoGX7KzQQe3FxcQDLy4/484ya7SWLs8fWOW2JLcnsOs16W9lmgHCdAtm8qMjYlYr3sfdLNFQPrkOSh2k5dG1vNdnyJDvNMl3jZv+/jexoSXncBbBLCWBpOwUVBbZcvdpUIs1HPrkJyu/E0UgrTJt0/PU4ykyAi7++78J9Q7AXeHw7VM4mSAQlndS1qNOIc7iIVukm23nkubFxQYs4wZbO9apDg59FVfrCDr5tgdFRV0KtHIOdJtjiSLXY281TXNgXJ+8JnU6lAVML58b8cpx3vJVsxaAJQlCNzAKuLUAgrt/mxraKjZLZJ+aiIQuyMQ8cX6fd1kZcKmlUHGiS14lJUQL5neA42SAepT3Y7P/LK4+TOymQJ07wpHZsBiZ8J98PnEuIKDUjpMntUK4SfiP9pqfDwni00oLTgds2t5KVT1qz0j97//IChuwoQvdznBB6P0usAPDCHpRdxD/ADhgehw7r+dmq4BDSc0J4GS21YTldBYFYwLWZCmNvFLJAb1UMmG31wvUQJuTUhvujbe3+zbx40Qc2lB2cZ2ertMdmr1ueoz1X3n7inmUtOCCyWfUEpNbDF5Wgc9p2xp5nO1mwWkq2Yk0fTuYX0zO2k7Gh5qVoO3AcdgturmIzsAF+/jU36NkG/A8unH4h0DsCT11FlmISv91O8M7VcdnRzyacp91NCLQR/21liepw7PNjR391c19sp2c7j1lgBYAX9qDs/K/8C/TAsUtxPKhASVIvPeCSX+V5k/FnvaAQ6Aybi9nysLFZULdceKs5Vj9TQUYvbNyRxGC6x6y3IewWhKs4jrfDXIelE2IPMj6P9Xyt4sR6kxIqN+sE1T4pMmwhjbhsme1sT2BqUV87CW0jNe1IRWYBzda8rAHrzPpBv+zHHqz94ucACxcDK+A+BYTlZVbsIoxm1OH3E2ih5eZcq3GArlgEec96jrqY2umLjtF5NdIQL68RSDOp5iG2AsALOyD7Fi+kTgsXALyQbDixna2fzmIqwcrdmgE0TPWQIetFxRTEgTzdcYcyXX3lvM7Hmp0gs9s0a2eeyau2sjyBtVWQWM/Znk9/FkzVsXaaZW240Hh7Xhu804brNGpMpajy7vE4oVPYQkgQZTs/D8SVQdg27nB0nqFjFr7CXJv9zdXZ6liagNYkK0z1jE8gS3nEz9h0unltbztpe44XHv68PQWAF3ZA1q2U739Ddqa+mVnFhMzqirUuHpbGWeXywDteZ48n9YSsh6xnqfOPEjoQC3YCMeUAUc4NcBSDzmvDuCWDlIeolKV51Iw88ryJTAvYoziQsZVghk17BfDyNO0Io5Us12trQYIbHSk5lnJ2q8iwgNZ6qLb0GWRzqFj6Rvd40B/rRH/PlKTLq5A6znARj6lpItJWz9G12HPqnunZkrzSZjyEUFBbdEjec6T/MYhb0G5psn4W2CxpRmGz3V7CV+llkM/80a3ugbaluvK44ukmHy2fmBeAIptOpWGXx+fPm8QTndCF41B1vAGCfM6+sOLe15CtLmPPIQDWyy3FBoRc1lvM9nE7Y28xVo5ILSMgFwAvYqqH30PoPKyHnTepKFPgzijOU/4uWb4YnFIEghc7gbtnkOXVLSCqgIeejR+S7Vx6o/3VPjsZqXulSdQJsz4GX1FkVl0EsINw/1fnXH98HPvZ5nJZa753Ac+joFAKe4TaWbikVdaTmY72iM0+cfsLKLF5qw+WjeJyWQjkfHEEJgjRoSbyM+VB7Qghztw3nYkaiCcAY/DOU95Yasny+tYLtbSGnS+wHUF8bAs+Skv7Hbhz0OUIWfUKQij9MrJyUGg+2aoO2MpCt5rPEPKmxPdDJtrIShVlcQfaggNp6wjYa9W8RZwdM36eYk/bgvc1BA5dHdJ2Zo0VAF7Yfu3tXMK5bKCHAefRKHBDD7UsD9SbeTxab+V1AtL98dd5fG+8TLU2tU7abXG7esmXEVLcqi2LzPmtJwjZiDypPeK0rDYCdAFTJw+tN5p3TVbqqMhVmxTsx4TJNXnl4wQliD2W1YjrXg2a774NmwedEmQvMPw1t6wXeGoNeJE53jghAtFqy9sJkZmb/TYqvABBUtpJ6GjsvZMpRr7PXC84b72dQEkJZNXZWhpOn882++dRJ3lS1Zjv1rXHz9cssVnUlMJmqy1iB7uYzwVn/nMAb8gvKjCTJyqexLPUSgyccWeQ5/nGy3qYGphj9bt2InCQAJCKEOwnqA7EkQtQBThSZ4iaqZnjWE24pHy2mruOFc8D6L/AOr6X8nC7CJGuaqdoCSuRFMVjaa6S+T4CP7jNqUHuwYWnlwnFOJ76IkJNSUtv9ZHlvxXqHudRsaZtu8kWfdD++q02+PXnkOXg1VENk50P0DXr8wRTCylPR5HkPa83+OMocWQnIfjqQCfHH2Y74nA3oLDZbcn3oEVvpSRcB2IHQq88mO3zzKo99GejCucSXl5L02ii05aDm05ZYzsERTjGoFDK+dM+MFWSpgm5IRzXvCfnvEtxIKoQb4GyvPJmJiqhk0wipvsIA5RMJaXjyXaa6rTiTlujkTyeH7L3Qxx7F9lIylZC8eHOnP3sdrJmwV7N2mBHes3AG4L+3ZqldVqYSoEdJptFfUlhs82Sd7v/b/3N592HH0cb5HG5seU9YXme9HRP4kzpFJnNqaLUn3rxdjBVPbMYB4h7cNc0SDa7nf5bD1JUgoJq7OTeUqYmdrJpBiwA2glXSwfpvKIlYi9aJg91sfmu8P24g9F+Go2cCM/1fO66/lDoQHV/GSV49DaEXO0bJfDBOp/tQKxnbDtVUU9W9SN6RfsoHYE6BpvCNdaft5hlsWQwbwI373nSdltwtEwvUyN4ZyFazsImFTZb7B8vvZBj2QZP8gsUthyb9Sr3x09r6B8rTppxjHbIOlPv3Fd5yUzwKRJQlMMJpj2QDftfba5F3rhqTbYQ6IMqWWAWjSF5W0xbiBfWeaRssdclTbPaqXZsJdwztd3eX+uhlsz+18NkP5SXwJaNbtPlyleyBBfS3gmrbVZBgeUwweNWpkdFoFolkUztsdGOapMooQlcR6kIU61TR1jFdUYjhGjQFrKdct68hE0Gpns717RLv4l+IwhzCc8wx7d1MmV6BuaaZU85/BpwmAGAJ0nSBtxCeDSuajQaHzbr3wVcCjyu0WjsfLgaWtihtze+7ivuwbZZ22QCvrzyXnoxYwDPA+n9gfL+ntA4ShCmStEgyMvyvNjpTB6gDT/XtdsOYpzggWPaZBNX5Z2z2b2x24sntpSQtvN87eQGGB5xYemrVpg26hijsBtfiUZtG8KBtTpUHbffbKMO1042Wlopj76IaRfrCeteqoJPv18mQI+DdyA7GdrM7ChB1JidKLfe9EacPFJ0oEZkeaMcdaLqyGaShvcQ2kwe4wng9EajsSdJkjJwa5IkP2g0GrclLyNmhAAAGJ9JREFUSbIIFwU7i4Q1hR0UuzCBG2F00CWrAqZWdIHwssZALA+QnHV6ISAMfwV21qzmVzlV4mN1El7E+OWz257gj7+DkLMF8gsKyCx1YgFO+4ovH/H/62a9zQgIYeLSXoPukb1X8oJFJeS9WTaQZwts2xLoj/uAVap7CfzcZxnsGnFFhCutDugna7BtEFZVcV64DdixckRwap5W3CjA0iI2ZXB8H8W1E62XFy4g132yFZqkD5c3bCedpV2v4qiOvOIX9rnbjvvNbbTpHpw88Fz//Qayo7aY/1YHOgttvwDecPlmNZWiSWqNH/4WeA/wrw9L6wo7LFYbTSjtAFqhQxNl+ws3tv+l0oBs+lKYSqEIIMF5RdJji1fOC0mH4FHLM7J8ddXsZyWByvUB2SG5hu+2gG9eJyDA3kqQUMZh89o/3vcuHDUgBQlkOy+bUdAChgUTeZVDQD8MvB9uxuHO6nYYrjov++eD0DsIC7vhqSsICaD8NVX8OXqvJ+RlV2ejACarMukn0BSt5t61mW26o+OIatJ2VvVheXNLsUAYsQDcYe6Bqj1Zmsb+zqLAuv3xNUpoxXUEdmJyKY4Ouc1vv5wQ7dos4jKmumaJzUiFkiRJS5IkG3GP+I8ajcb6JEnOBe5rNBr/tZ99X58kyYYkSTb87ne/OwhNLuzhsou5FP46CQsWw6RNHGQ5xpkoLWKz3rTMetmS5M3E24nbElMO+msz28ae1UMxdS7xhKRARhN6OnecMMteBzS/nzILgj4ASsq7SVx+7M1ABUeTqGINfQT1jZIySZHTR/A6LTWQJ2FsMcs1cZg3EZ0HcsowGXuycaFkmR2haH8dw1dLSq/HPj925CKbIAC6zCa10uSpRkhxdkII1MosnDGcUZMajUYdWJEkyXzg6iRJTgI+gIvL29++nwc+D66gw0Noa2EH2Vayjn/lBSz8/hC0QstZ/9fVlLwQ6HeTX2MTUB7CTf4o2i4GnemeolgFkEe1yOvRJF/8EsrsviPRf3s+gVwNx3fK9NJaGd0goR6m5XhtCtqa2U7XAc1HB1aCqGOuyVnWjPKRGiOmZTDL/eYv6QHOAJbBmbYIgqrlnGqOHXc6zyLr+bYQwFI01zKzfogQrq9jCujE/8e/sc4lz75OdgRitfN2f2nYdX6NyvDXpLZOkPXEd5hj2zb8glAxqB3ndWu7mTge060/jHZATWo0GruSJLkZeAHudvxXkiQAjwd+niTJ0xqNxm8PeisLO/j2vIQnXvsl/p63cMltfwnA3373zx3vbXJcVKwcTp6lzFZSgeYZ4fD7LsLRDxa4bN6RQbM8j8LIe1pjKWOdLIcbV1/XkH8jWdBuIejnFpCdBNxDtqzYhDnWIoKkTtevnODjUVviziumpuJsf7FXLgrIH2f5GQTdtJ1XsLy5OrDF5jpkvX7ZBM4TV4Qm/lyitOz2qmozQfBk28h6ubp2y13rGuyEpp4rjbzi3/1+HNXRhfttlElRlI5C5ZcQPGg7TzHqj9tCGGlY5yCOhG2GhnaOYpbkQJHtF8CTJHkcMOnBuwKcCXyy0Wj0mG22ASsLFcrst98ynzolFgJX/tFrspNtreQHjsDUBzyv4glNlk1nzYbd8QSoXnwbyq6hfB4tIS845uVjT8oqKnSNdUJxW/HUtp32c9VsZ8PGLYhpHxtSH7fBAks7UycSLY01jgMxm7MlVonIbK1Je85ewu8dr8v7Lhme9OZWGhgXcdD90voq+Uhjw/w7o2Uyeebb/TVuxHnlK8mOUGTWg4fQuQmtFDhlR1nxddvfzCpb7P9ZYjNpzgLgq0mStOA48+80Go1/e3ibVdjBsOQzOC/qfvjYS95FK/t4LfuAfe7FGMRVX/cPe9k/DR2WK16E82Rib1uW5y3HkYVat4XACwuM4wRMecePP1sQVzQfZAsVDJtlUpHovOJOlxDAFoIHqorjVj7ZR5CjaYJO+mR1DNJP/4JQ1ktmiydbLbNkkDGA61p0DJuWVhOz2s+G98cWA5xS+Q6Y773meiD7e1qvGtwI6mRC0QqVn+sgdGbav5OQMye2eIK60yyzk95V8wfuN1BnEkdl6lnU+i7f3n4CFWOvyT4jAmvbeeie2qCjCeC42cME7xfAG43GnbifbLptjj1YDSrsoVvr8CgTazthdYO5K3eyZ+d8zuQG5vN7jnrdmAtq8fUIJ80Daz/LyrEnaC1+euKscuAe/DxgsdVpYh67RlCZ2Hwmeolsm2IggKynLoAXaPYRvEi1f5hQ77CGe+lbouOUcOqFfhxAnOOX7yDtCLndtEEeqiiEzQT+3ZZD07nrBCpJJdvsfbGTyTvIdpaiCPr9sez1CcyktxatIa/Zptm1pvug9AB2xGF/hyU4cLS0jdLdalQSjw7kZQt0Le1h8+vo3tsJ0+W+rdtxnZrUL+pIdhAUN5v9teq3AufBd5HNp2KjPpUADZzUUI7LOfDbF3amo9fZYrNsQFDYQ7XW4YB4jW8m8DngjbgIj824h9x7kjFgl/OehpnMvsf8oM0VEYO3XgibtjOezGt2DgtI+zN1HGqT5a1FmwzhAGqQzORgxhMTt6r83gI+FXqwaUZtdZy8IXqe2d9AbR0lC3gwNb+LlgnsJIOLj2kr7MjkqVrqY5jQ2eneWYmj9crlrc81y8X7K32sMkvmXWse5WW3z6O54uyXKqVm501k6oxjqkr3Ko43aGba36t3fs1xLjJ5FlkB4I9AS7bX6H78AHOP2M0StnHTPc91OuMqHPkiL9VUYv9NBO9oE2kukDxve2wcKtNJ7Syo2Mkpy+3abWLOXMvzIjvt8SHrectsBRZ7TKs3lsUTVJbr1jJVj7GaYlEsaotA0aYREK+r88QqBeutajtxzvJ0lT3qRMJEnq7PBrXILHdrJwLtPRPgiB5RkFEM6KIELJUzEB1DbSwRvHDRG8oeKO+3jTA66SKMkAT8MUeep77RPtKb299yhGwnGUcEa4QFbkTQ7duxmKyVcJRi3gS5TLx6BzTe6Rbt7jySoZZuhnB/hQde2EOyzmN20n2Ee5wWscOB9zpgEHZ/+HFuIzt59Tf+s1GXWG9bYF6xCXvsTH3ezHsMvlapovPGL0gsFSPn2HEq0LyUq2qXKAALzsqlrfJaQ+Z4scpF17acLIhYmZyPZGQ5gUfvMcfqI3iueaMDy2t3EvhmS63I5OXrOLaTEFAt9ustz2zbDEFKZ5NLxblBRnAdu0BOx7HZEUX3aKQiJYcoIGmx9SwIZNWR2+hSHRuyz4Xyy9jr0LVpf80/xLnia+ZP5xD11IL7jUQdiTob8Z/tsx4/y56SqpfcX+vEPubP2cUT+CWzzQoAfwTariOP4egH6vzy/U9xD6hAoITj8OS9xl6nvKecYXsufWKXxXzw/nJCzOTJil8+cZ0WtC3VYr1qecml6HOeKqWZ1xrn8xDQj+Rsa3OR2GPZ/Ztdo/5biiWe5NRxrLdqO5o4W198bjvZaNuWp0ixnbIF8fg65KnLw+3A3Ws9b/LAISt9jO91MyrJXqeOow6hnrPOtktmfxOZUia04vjwzbgRgkZX+zOfHrfk+f56CXYxnzkuk8yssgLAHwGW/AoaX04cWPsMbTuVA0Q8YN5wUC+TXi69kDY5fd2AtwU/q/jI81CsvMp625ZOgSxwNRu6tjglTNlOVtlt1S4d03qVEwSFgYbaKkKAudY2s98I2VqQnn5K6z9C8AhFM6i2otqhc/biPNSYqpBpcjLOvxLL5WSWiomBXGYLRVsAjTuwvOPnLVdqAHAjjc0E791O9gkA1RHcZa4jTvAVd062I9PoyFJSkh6q/XMJGnWY+gzBVBmpzdmtidk2XA1Lmc0o2Mx8ceeaGQn27b0/fJkzg2McIisAfJbbS/gqncee7WbP+wlgajniPH7RfpZHGXszAkf7stnAl3gfbRu/nFbKZ4fJGgFYlYH1rMxooFwyx7ZSMtEKJXPNSwlg3U1WVlYnqEjieyDAV9UW5UER7ymQ1oRZyRzrHELNzD5cHg1wwSZKtypbSehYuwkcu/hpW5HH/nZ5Sb3sJGm/WTbK1CAhlRzLC4qx35X5DwIFZI/TY9qie9JKFqxLZGkI5SCJKS9dq3KL21QJ6hwlP7T5azD3IY/Cy5tfsWoScM+FlDQ6pxJY5Xn21kkoQYtfX5qAhnViCgAv7EBs160LwoPfDKzzvsvyZHx56+MZe3lG8Tqi7fIyD1rQb7ZvG80Dh7SvRhpW0TBCc040buv+PMK8CVUbpKJj9ePA2iZeglDcwU4I2t/BKkD24Ib2S8lOZuqampnA2Zq8T6stVwdm+ez4/trRlqicWI2iiM0Jgrbd1vnUttaDtu23EaVWmWSTX9lnK/5t8mSh9voF0LFCJzZLQY3jRkv9ZDsWO8pp8qwKvOslKHXMHg04FAA+u+2/Ej73lEoY8lslwkwsz8uYbr39PgGTkdyqbF8ieaMdTAU/G50YdwIxH+q98Mmaz7vSAqUSlPO4TVne5JWW6zyyufz/7Z1rrFxVFYC/xUx7MRcKfVBoAbXERgV+CN4A8jBEAYEY8YEG/0CCicFAoj9MKKmpGH6hURMTxCga0BAwKihBiEWCIZiA3kIfIRRuW6CWkhZreKq33mH5Y+/Vs2Zz5s5p750zZ3R/yWTOnOeatc9ZZ++11167u1a7h8J4pnN62nF+EmE7vw3LTsPj/PyOZsS83tKoHB8x4zv6fGiluS0sOdMMwSinIZF+cJCfp7Isc967Kdwi1mKxloH9V4tWshaJ17+FNloNHYp7wLtVcMdYh2KHwuVk17XWWdra8O4vfz7vNvO5w32qB5L/7QfvWM08jeYxnaT6SnzlnYZayoaK9f/L2TzCmTzB91+5AW6DxVP/6h4kcTAG2db59WmJl/1OzrHAbnRzV/iHxR5Eqy1bE9uHkJnR9obcnyMapneNwYLldDfxLdoDiofVG1ardXrDOM47Izk8VguDYOBTv6g19b2/9lR3zjcpOv582Xi/u/3P9LwWh2/f3vVktX7/IrAQPnP1QDBM6QCmKYparu+X8DVM043VPu36plMLbbT9T3L/z9YvpTsfuUX9nEiRktefI70fxwn6M3eYvQxMDp9ozMrVBjuZgbdOVF9xKMvhPeV+21R4iyhm5SmLrV8e/pMugf2HBzdKa6Yw4E0zmE2TJ+OZoshVMRcO9vhYa17QDjXj/8zEyW698a5y/jQCoayWFO/ABVA8xL7jtMz/2asDsCqWO3olhcHsUBjOFkUHmF3ncYqwOesAhW6ftifteMT9LpPdXBremPgBRZa1cYbipWZGzb0E34G9FCyRk/dBW2z6UXTlC+dhJ5MZYeuLMANr+9qw/lWEcQbWSW7Hl0XrrCToz7vufPIwu2Ya+WPr09zhZWMXrHVi1/wQxQvW+ghabl/vpnEGu9OG6bHD6LTbjE3vL7nQcMkGvGEs4+9cyy2hlrGDA7mfgbkb8n5445FwwIiX+cvtgbWh4P7BKMMbaHsorQbvz5u2Hky+3ZTLaTHWPva76qg7O7/Jbw+4rfO+3JTX6c7ct5RgGD9IkY/azzXp8W4bH3WRTgqRRg/5472MfmKINiFlrDFFUesepzDKpntr2fjIk/hSnbk+1ERlkiIu+3mKMl4arzUDrI/r7IXoW2TGqXG9tXTSTJa2r9XoLZ2xj2f3LTp7kViLwc7tsdGiaaSU6SD692dWlrtMpscWVhpcWyfZgDcAeRTWf/Q8Ltz6GPftBG4HJqErd/JslLlIehn72TpB/fZoZLv83r7W4mvB/mEzw7GE7gT76Wg8Y4zuZrzvoPL+Xf+/rOPNd4jZ6Dubw9POcxJFmJ9hnXwmr3WI+ub8crcfFPNEWm3VR4TYdlu2yBWTfwlFPLKRRobsc7rw/RzHUvjwnZE5gI8n935mczc8EH9bGRwFfNadf6fbf6L7P+mZIHcBe6G9jq5a+vS5wGkwFmvrM+PQ3kKohZ9D4XraQcgRY//XD9qxAULeKvr7xF409sK3+G6T3VLb7qV4aVu8vB1vZTAZv8901/p38t2O/3UGpleHWjdAp9Wi1enVxBku2YA3jSkK4526EcqMrzds5n+ejdRwpB2Fac++dbzZS2IRhQ80pWzwRbpf+tJ4rlm9+o3lK3GmJN8qMNI4ees83EnhHlhNkf9lH0XCrLL7ILZwZILQilhKuC/HCbXft2DsNZi2FpMZQHONtAkjg3fwzvsxdV34YfD2P7xc5sYyt5HV1v09Nua2+WRbvo/AruvvRx8F5V8aHei024023EY24ENkLevo0OKIiWu5cMNjobb0K8oNdtmoPY/5Qf0w7bLSNUP/YjacI8WtAyqvD5Ss+5Jb/liy7dfxRTJJmAko0mlD51hYeBSIH3xj92JZP4EfvAPdHa7+28IAbZ29bNKZovw8qum9b62q1AWVRqDEF1JrZoZOq9V4I54N+BA5kjcAeGPdMeGBsPSXVirTwPZsaDMN4vLifhwDuMQtQzHI5fJDOPfd0t3xPUmona+imALtLULL4h9x2x6K2HcbOWpT5FmfQ9raMHwr0VoB0Q01/re32f++7t0XtdIA9eEjYdL5epiYmNDJycn+O2Yymcyh8E0pooosisdXoFt0ZySEor8gmYBiZiW8uugIWvEEi/nngIXvjYhsUNWJdH2ugWcymf8dvjXHCukGOeA7f3VRCHfp9B3KPDxqrYGLyCvAi3M8zTKg6XNvNl3GLN/caLp80HwZs3wHx3tU9Zh0Za0GfD4QkcmypkSTaLqMWb650XT5oPkyZvnmh8OGLUAmk8lkDo1swDOZTGZEGUUD/uNhC1CBpsuY5ZsbTZcPmi9jlm8eGDkfeCaTyWQCo1gDz2QymQzZgGcymczI0kgDLiKfF5GnReRtEZlw6y8UkQ0isiV+p5kabL8bReQlEdkYP5fWIV/cdoOIbBORZ0XkEz2OXyIiD4nIVPxePJ/ylVzvl04XL4jIxh77vRB1u1FEahsyW7W8ROTiqNdtIrKmRvm+IyJbRWSziNwrIkf32K9W/fXThwR+ELdvFpHTBy1Tcv0TReQREXkmPi9fLdnnfBF5zZX9upplnLXMhq3Dvqhq4z6EzAfvB/4ETLj1pwEr4/KpwEs9jr8R+PoQ5DsZ2EQYxLsK2A60So7/NrAmLq8Bbq5Rt98F1vXY9gKwbAjl3be8CIOgtxMSxC6Mej65JvkuAtpx+eZe5VWn/qrogzAV84OAAGcBT9RcriuA0+PykcBzJTKeD9xf9z1XtcyGrcN+n0bWwFX1GVV9tmT9U6pqmZifBg4XkdpzrPeSD7gMuFtVp1X1eWAbcEaP/e6Iy3cAnx6MpN2IiABfAO6q43rzzBnANlXdoar7gbsJehw4qrpeVf3cPCfUcd0+VNHHZcDPNfA4cLSIrKhLQFV9WVWfjMtvENK1HV/X9eeJoeqwH4004BX5HPCUqvZKEXZdbPL8bNAuCsfxhJTzxi7Kb9hjVfVlCDc5xVQCg+Y8YI+qTvXYrsD66J76ck0yGf3Kq6puB83VhBpZGXXqr4o+mqIzROS9hBb0EyWbPyIim0TkQRE5pVbB+pdZY3RYxtCSWYnIH4HjSjatVdXf9Tn2FEJT9qIeu9wK3EQonJsIboOra5BPStbVEqdZUd4vMnvt+xxV3S0iy4GHRGSrqj46aPmoVl4D1W0V/YnIWkJ+uzt7nGZg+iuhij6Gdj92CSFyBPAb4Guq+nqy+UlCno83Y9/Hb+meW2jQ9CuzRuiwF0Mz4Kp6waEcJyInAPcCV6rq9h7n3uP2/wlwf03y7SLMzmecQDH5lmePiKxQ1Zdjc2xvyT4HRT95RaRNmEzrw7OcY3f83isi9xKa6fNigKrqc5byqqrbQ6KC/q4CPgl8XKNztOQcA9NfCVX0MVCdVUFEFhCM952qek+63Rt0VX1ARH4oIstUtZZEUhXKbOg6nI2RcqHE3v/fAzeo6p9n2c/7qD5DmKmvDu4DrhCRMRFZRahJ/KXHflfF5auAWVsc88QFwFZV3VW2UUTGReRIWya0bmrRW8Xy+iuwWkRWichC4AqCHuuQ72LgeuBTqlqaFHoI+quij/uAK2MkxVnAa+a6q4PY5/JT4BlV/V6PfY6L+yEiZxBs0r6a5KtSZkPVYV+G3Yta9iE8xLsImXn3AH+I679BmFtjo/ssj9tuI0aEAL8AtgCbCQWwog754ra1hOiAZ4FL3Hov31LgYcJMgw8DS2rQ6e3ANcm6lcADcfkkQiTDJkIH8doay7u0vLx88felhEiG7TXLt43gB7V77kdN0F+ZPoBrrJwJzf9b4vYtuIipmvR2LsHdsNnp7tJExuuivjYROojPrlG+0jJrkg77ffJQ+kwmkxlRRsqFkslkMpmCbMAzmUxmRMkGPJPJZEaUbMAzmUxmRMkGPJPJZEaUbMAzmUxmRMkGPJPJZEaU/wIuZCjLGSosxQAAAABJRU5ErkJggg==\n", "text/plain": [ - "{'data': array([[32.49460816, 32.49803615, 32.50144726, ..., 32.52460207,\n", - " 32.52130788, 32.51799681],\n", - " [32.53024662, 32.5336765 , 32.5370895 , ..., 32.5602571 ,\n", - " 32.55696109, 32.55364819],\n", - " [32.5658877 , 32.56931947, 32.57273435, ..., 32.59591474,\n", - " 32.59261692, 32.58930218],\n", - " ...,\n", - " [46.60231473, 46.60653579, 46.6107361 , ..., 46.63924881,\n", - " 46.63519229, 46.63111499],\n", - " [46.63791957, 46.64214277, 46.6463452 , ..., 46.67487234,\n", - " 46.67081377, 46.66673441],\n", - " [46.67352141, 46.67774674, 46.68195131, ..., 46.71049289,\n", - " 46.70643226, 46.70235083]])}" + "
" ] }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "interp_nes.lat" + "plot_data(interp_nes, var_name)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'data': array([[-11.56484687, -11.52259289, -11.48033507, ..., 5.18764453,\n", - " 5.22992847, 5.27220869],\n", - " [-11.56892309, -11.52664925, -11.48437156, ..., 5.1915433 ,\n", - " 5.23384715, 5.27614727],\n", - " [-11.57300318, -11.53070946, -11.48841188, ..., 5.19544578,\n", - " 5.23776955, 5.2800896 ],\n", - " ...,\n", - " [-13.53865445, -13.48682654, -13.4349915 , ..., 7.07590089,\n", - " 7.12778439, 7.17966098],\n", - " [-13.54481681, -13.49295916, -13.44109437, ..., 7.08179741,\n", - " 7.13371074, 7.18561716],\n", - " [-13.55098635, -13.49909893, -13.44720434, ..., 7.0877008 ,\n", - " 7.139644 , 7.19158028]])}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "nox_no total mass: 113.08470916748047\n" + ] } ], "source": [ - "interp_nes.lon" + "for var_aux in source_grid.variables.keys():\n", + " print(\"{0} total mass: {1}\".format(var_aux, source_grid.variables[var_aux]['data'].sum()))" ] }, { @@ -267,108 +474,219 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Creating Weight Matrix\n" + "Creating Weight Matrix\n", + "Weight Matrix done!\n", + "CPU times: user 1min 49s, sys: 1.9 s, total: 1min 51s\n", + "Wall time: 1min 52s\n" ] - }, + } + ], + "source": [ + "%time wm_nes = source_grid.interpolate_horizontal(dst_grid=dst_nes, kind='Conservative', info=True, weight_matrix_path=\"CONS_WM_NAMEE_to_IP.nc\", only_create_wm=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2041: DeprecationWarning: tostring() is deprecated. Use tobytes() instead.\n", - " time_var.units, time_var.calendar)\n" + "CPU times: user 202 ms, sys: 26.9 ms, total: 229 ms\n", + "Wall time: 228 ms\n" ] - }, + } + ], + "source": [ + "%time interp_nes = source_grid.interpolate_horizontal(dst_grid=dst_nes, kind='Conservative', wm=wm_nes)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9e5Rcd3Xn+yn6HFeXSl1Nqk0X7pZES1EnbmL5+iGQJyI4wcTm6VyYmItXSEgYQjIwiTMJkJhMwoUZSGDyILmBlQATmEwmIY+LV0yuJ5iXYexEIrKtsQxt0o7USO52uuKuoUsuVZfrNHX/2Huf366jaqklYyRHZ6/Vq6rP+5yq+v7277u/e+9Cr9cjt9xyyy23p58941xfQG655ZZbbmdnOYDnlltuuT1NLQfw3HLLLbenqeUAnltuueX2NLUcwHPLLbfcnqYWfTtPdvHFF/empqa+nafMLben1jr3svYV+KYTc53Q1wLhB1bQ1zXA6756mVe/bSGzPLs++z677aBjjlx99YAj5na+27333vtYr9d7Vnb5txXAp6amOHDgwLfzlLnl9tTavQX+6epRPsRbePcn3gv3wP/4PVkVA+NAAnSBEnBc35sl+uqXxfoaufXeogHbZo/hj913rHvvHbitt5K+Hh9wziTzfpBlj9111/nqXLZ8VlYoFL4+aPm3FcBzy+1fnBXh2Q+t8O7ie5m9GWbevf6mx4G2vs/+8JIBy7wZKMbrbHsqQD5Taw9Yth5Yn6n9WaGw7rEmgYqevws0dPlOfY2R+24TnmVJl8XAVRfg4JADeG65PRmLgA6QQBO451f7veL6Bg9TIoCwvbY5vbcL/efLXpqB8XoAn7htTzUb8MtPMNhi/esSBhk7/0YGgCc7SCwVClRH4XgLugks6TFHkIEBYEGvqemu2QYAkH1i4JVPk8EgB/DccjsL+wo7qbHEly59Ka++7X9Aq58qGeTFehsEViUCAJq13TropyNsOwPLJLMtblvv+Zf0r4YAWkOP5cHA7iN7HdkZhN2zzQz8fW/KnN+ActCzifSvqteUELzxrwPPcde0kLmXSQSQ54H5lQDKxxEKaxMQb2Ak9Nf1qUKBSI+bIM8q0nPFeg1dvcardgEr0F6G0ph7OP/41A8COYDnltuTsItZhmFgTTy9NmfuSWaBkwHH8BSK7TOISz/dOQxAE8JgYR7zqcwPGklm2UbMBpgYAT3vndvr8QH7Zfn4tltWQQC2Uob5Vv9+Cf0DkFlX9/EDpQF+ieCZ49bhtj2ODDIbsucWoAW0YH5Zr5VAEdV0Mxsk/Od5+QZnADmA55bbWdj37P9HWIQX7voyv/zSX2GE4/zS7R+ADuy/6ckde6NgXKGfrrD9Bnm4JQR4ugitkxCAI2uTwEwZSsPQVGA8vir7zhJAzsAoC3p2jYMGhy4wo+sfpt9r7xI8W/PWR/R1Sbfzy8xjf6Als4iYftCuEgD4kSSA/6Qus3ONuO0MVD0Hb7ML9BoaepydiGffmBXKJo6gVEWkRqtAGaHXOP1gl6W4HigUmBmFuHzq/XIAzy23s7DWFc+gPP5N/mn7KB0uosMYvFK8ppjCQAXJqX5sPjB5uh+lBxMDskFcdtaywN5w7/1+DeA+9Rz9jMD236SvJWB5wDk9pzxGoJSahEHAzHvk/hptAMhSSAkBeGO3zgO3XUvdHcN78iOEAc2O4WmZWNcdz9yLXd+I3hcIcJtnDaSATQdYAYaAcZickIGjfRge0ee65K7fzlFFBs5KFbgGGQgAFhloeSJPbrmdhR0rbuWx7Zs5xlbm2c4829N1V40FYLU/EGDJ/p2J+WNBOIdfl2T+H/R3KsVKNpCaXXeC4Fmvx/PHmVdP32xCgOyqAftkvVTzfJMB6wZtYzTEIDlllk4ZFBuw5Tbg2LLsvm3kOdgMZksZatt0pQ58JAi1Vpb33aO6nDAAxshAsIl+WiYe0v1XEG9+bfC9++vOLbfczsAuZR6Ai4G/zK58rEdUkNSZjcr7vKfXzSyH9UHsVDpwv03WQx00eAzyeG37bAzQOOTUE9XXJgH8vMTP/jdvuFaGVw/DA8thJgHBK/X35r1t29+OZee189j1eVrJAppRZpmd1x9/nOC5Z5+NXVOb/jhCaRQoQvUyxFO2h1UERpEAdwLtRZhfDcecKkN3DdqrQr/UgJGyvO92IK7rBZ3CcgDPLbenwPZco28MLVpwz6GNAbqXtg2iMMwGBT/XO9aWCJaTIKtjneNVCYoL7xU3UQrAHdcDqG03SUhWMpDzgd0RhK54uAWTmcAjCDA36Jf5Gddu5q/BBgZ/DTZweAlj161Dr3GKQO2MuGv1A4/tc1UZokhULgDTM4hHXQSu1YteBKYR0J4APg/tWQHpUlH2nx6S/f/68VfyTPaz7f11Kh/U4wwjlMsoxNMI17QOdWKWA3huuT0F9uK/+2uGWOPTt/2Q/NDvhNKhfr13VnmQtew67z0OMk+fZK2d9ANp1gP3yg7PyXrVht9uPSmg7TNIU549n+fwLWiYPW6F05vnuE/lOdu2/r1533aP2VmQ3dNSS85RAWpjiJteRuiNDnAQWIX2igR+Lb4wVRbwjsvAsB6/Cjdd+SkB7A8AH9WNV0k9dh4kpV/4hx4UfNGEYDmA55bbU2Cf5eXy5lUS2PzI636MQ3+0i9/91NvhTuB2uO/oqYOOEADlVOB8qiQdoxXmCYDlz1dyrxZMHETVeE7Yjj2I6lnP7D5tEFkv8Jq9Fz94DDqmvx67JpsBVAZsB8HDtsCl8c+mM89SMXYdbWBGOaNuAnEVAdl90FbuZ6kVBr0KAua1V+s/V8q2HEH4bYCfI6hW0OPZA1klp1Byy+18sd9pvJ3eXmAvPPE+eHTTdbz8yOfEm6vD0o1BoTFID36qwNsgimFQQpHx4Za27hNS7HzL7jjeS4ZAv2wCSpF49icIoJnQ7zWbJ+q5c+/Nt/UaavQrTbKec/YebDujULzkzxJujEbxSUTGn3s+fNAgkR0cQIB+fhkqkdAhcR3YBkxA95hw2SUCjz85LNz3fZ+U483cBvEEAtJXIMB9QBOAysBmvZEI2EpQtJzCNqxCKRQKQ4VC4f5CofDXbtnPFAqFrxUKha8UCoX3b/RYueV2odkBrma+eglL1VEKDSguwsv/+XO0Jp4hXtZoyBb0GZXGJduft/VUF1nrZrZLCLVEjPPOHjebrOPlisbNG3hnvXMItEg0YJm/LgNbMz9YeFAtMdjbzA4M2RmEfz+if3Yf/jn7Z+v58gqi994SScKQHa9SRoB4GTgmsr/ahMx07FpKRahOyPku3wHxNmSw9sBchEYLmk3gEkIgYnjAzQ6wM5ER3oKTcBYKhR8Afgi4vNfrfQ/wG2dwrNxyu6DsD7iF7SxykCuD1OxxWC5eTG8UUK70dDYIxAdRMD742M5s58HcwMaDvPe8zaqczEdnB45TJav4oGJW8mjLDCxr6xxrkJdcIsgEjf4Y52S55Z5pmN4B09tgLAo6bM91WzDT7xcBNaUxumsweQVUrwAuJfDfj+sOCrojwFSkgP1Gvc/H3YEtMFmUiz2BJEoR6cWX9WEM6d8pbEMUSqFQ2AK8HHgP8PO6+N8Cv97r9ToAvV5vo3V7csvtgrXf4K3wf8BWjvE9R/6R5+xf4s17fourq/dyM3/SB2rr6azNM89mOPr10E9XGNgZEJeQhJH2aqA9sjVRThWANOrBzjMzLl5kYzXooz3lY95+NkC6QP+AYZmO3rzW3bJJE+DaUYjHgTGY2xfS7Ru6fhcyq2kb16KjRFSHhSSobeyebOCYjmQw7a6J7G9/XZbFQ4i6pAzMIeCaQKMREnpi5DoaCVQOAYfknh6ow1hdEnqYAI6R8t5bNNuyfQBK2xBgv4kNUSgb5cA/ALyd/gHqu4DvKxQK79FLeWuv1/v77I6FQuFNwJsAtm3bll2dW24XlH3uQy9nz5v3857/9R/hA/Dox54JwB28nNIolFqnL4R1utolvqbIOAJOM6PQ7vTrkP3xSoRaLt5SL7QsGYQRApDeG48Q3bJtn5XvmYd8XPc1ysTUI4PUH3ZcO07sXksooI7LAZfmZLtSZv8l3bkNRModVEfhi6uDOW6jnxsJjCQhZR5kEKiOAnPQrcuzXNLBrxadrNOvIh4/Rdg/66ihsp5oVU+sSTpRNiNrWv+//tQ1UU5LoRQKhVcA9V6vd29mVQR8B5Lw+TbgzwuFk7UuvV7vw71eb3ev19v9rGed1FAit9wuKOu9Wd98DOY/Ds/+xArP/tQKbUrwaXj+6OmPcaYZnCCeaDzULwNsrwbPtzoq1EKFfimh8cCl4X6ASlUZEzA9Do0VCdiVosFg7K2OYFgDAbqdyEBTXefejH7x3HT1WsSTHVq/ANWCnus4oZbK8VZ4BjYbMdVIkxAbsOuw/0/YDisC3u3VcI/VUblvn/xUgVRRsucKmNml2ZodBLw7CHhPQOlmiLdDPCb3w14kQ2qM09pGPPC9wI2FQuFlCMtTKRQKfww8Anyy1+v1gC8XCoVvIolp/7yBY+aW2wVr7+HdFK5/N71aQSJLw/CW8f/CZ68J2wyqLeIzJU/FN3uzIk/tVaEEvIdsgNgGllcGH9e02Y3lAKJGMZQmgB0I6Nwh21e3i0dsA4CBoUkULSnH3vsyr7bcZH0emEfcsr27EB65LtTFWARzSXqYk5J2/IAynwQn144/BZpXG+4xO2A0kPuqlDWrUq9/S1muYURpkPkVuGoU4isQhYrRLg8ioH1Al12KuL4glMl1SFzEJIanKWJldloA7/V6twK3AhQKhe9HqJLXFQqFnwZeBNxVKBS+C7gIeGxjp80ttwvbXvOy/yq/vh1IrYwbBnPbUeY1dttsNKsTpNyq53vtGD7t3f73VQoNOD2dsZxAnMDUCinY1AzIO0IpRBFUpuG+Q+FaEsQrNpBuEBKMRtAA5rhwzv5eoZ+WIdEDbJPr4IuB0jH+3EDYrvu4uz+vdLm8DKUdAuJMAIvw2UP9zy5G1yOKEbOqVQvU5Ju26i+Pt6CaELp53OFOOE3qyXNQL8pmXdcBr9Lr2AD/DU+umNUfAjsKhcKDwCeA16s3nltuuZ3G/ozXc8P1fyXRpWtCivbplByD3ntbL7Bp3WmMq40z+3hQ88e3tHajEixjsoTy3gZo46SdiUpF8VIBrrpOPGafbelLtmbljSAe7OXl/uv3Kpr2UQLARSLVm9khgdSIANb+mHZuC9QafRJFwNWILlsbmHoJpP2B1ijRdZUI4suQ2ri7Zd+m0jNti/AuQncfLNUlQzOlT1p60CP6V0d4jjIC3hHygfnCMOvYGSXy9Hq9u4C79P0TwOvOZP/ccsst2Ke5kdv3XM+NB+9Miy1581K7QdSA95q9526US1YS58u2Gq9czWzjvXOv+TbQ9pxxLULAqI5430U5cGkMSiZ/0wDjlkioBmua4K/blCdtoFkPg4afbeDuf64FM3MQHxXlS5IECebMsChhss9iif5a4KZUeXgFZvYjXvCoLKzqLcXu+bQJg9KUFjSfv0f/3wHcArXrobY/PJPmIlQqULsReFD/f40+qwjxwFd0+2MIgB/R57gD2Hl6f/iMADy33HL71to7eRevvfkTLPzUJJtOtCm+Gj77aVm3njftlSIe2A3wvSY6S710gclRiItQ2wxcAkv39J/HZ0qaJ+qzGC3x5b5lmFyG2gwpeAPiZa4hQKVcrnHEDTfTMG/Z0yPmIWdppDbiuac1S6xmiNpc62Ttuh3T10ppuuUpD94B5mBuOXD2VcIAY/SMDVyNuXA/XWSDxi9Adbc+hyHoLkvQuN2C9h0ywFQm9EANJAFoWc+9VU/a0mXaom0jlgN4brmdQ7ufawQhHm3TGaVPn5fNWoR+XhgG10jxnnacWT+IoqntRVzONWgeDrSBHyiynnuWoqCMgNcaEmBs6TKtsBcXYa4ejuG9al+IatCxfRD3xaOq1tgLzb8Qr7ib9G9rkkUzX2HQBjyfjt84CvuT8HwiZLDw12Ja9S6wZGALTKtSJIpgaZ8MZt3F4K1HEURrUPqJzE2tIM+8iAD6hL5Os2HwtvvNLbfczrUdhq+8QN6++Hbkl/ke+Ow9/ZsNqlBoZtjgsy/NxpFAXG2MALajpGg9Nxe2r9OvGLHzesrDPPJlYOQIVEb1nxXd2YoyrciFdDvBG54pC80yd7S/vZl5vl4GaDaJtj6z4k53iLKmUobqtOjUWRGN9qGVfg06hJIBI8MBXB/QAOps0l+Hxfa1GcjDA551N3ElCCKoXA+VGeBjEM8g5WA1qzK+E7hft/XBSZMJHtW/YWRgMAB/Eae1HMBzy+18sJ8LWYazN8qimV+A598rQHXfOrtdTn/6u3G7XsZnf0to4SRVSyTAuNIpU05/3lYA8UWeBnn9oPG2VYTPRThfhhHwUkBvrIhyxazRCkFEC65aMasFwgzCJxaZTnvavNRhqKg0sqlJOrUJAecRAgAbGI8Ak2PAqHjc3SRw3CVCEwe7T7sOu3dfodBiB6kE0oD4dmQGsozIBG3wtTR5EGmhBTL9ctvubk7ZgSdreUu13HI7hzbFQzyX++EIVIehNiya5HmA66Fyt5YjHWAxkkBSiULyzSCPzGiPOgJMCwSRQ31FeNp4XHjlePTkFmLefIEtA7Y2Ejg8blmeV5PSKV0H3AaOTQTErTiU8eyNzHYQPOLj+tdsITOHqtATvn7M0qKsryADwhj9DYutrojtY4PcWDT4nm3QsGvKzn5KRb2/PQgFYtfSAr5EP89tnvdleqMa3E3jBQbaZwDekHvgueV2Tu07+AYl9TMrlyKa6nvkN/7ZG+DFPw68BSqflO2N2jCrWuW6GZg8DN25UCLWAnXZTMZsunq3BVMtxDvcDqWjIXjn97PzmjIjIVAgtb0I+LQQsGpJjex2p9/7tlnCAhAp2G4h9Nr0ZjMJu+YE+PIq7L0bSjUtzYqoYSwzsjQK+xcFmHcOQymBSgK1XaTdbkqrMoCYd7+U9Fd7NGD3BbxOuOu/fIeuMHS/Exb2ydvJa+XeZw/AzIw8i25dvfVx4HboHoGFFag2RCsPCPhbAweAuzemyM4BPLfczqE9l6+ymeOCFhr0u2oM9qsigmOk0rYZLSXUrIvCodmS7dPo3LB4ngbcntf1lQAvHxevu9kK69mr53qwny4wM1niJmR20AUuj1TzDEHbbNRJR45v5/bH8w0UQMCxNiwevG1n57OZBfQnGFGUczbrQUYYRTIYzQxr2QClhRp1QsMEveFBlQi92TltOysxEKMKk1VCC7QVmNwV3qemVFVsQWL9nGLtUB9Pu207CA++gVIK3nIAzy23c2hDrPEHL/i5AMTqicXWVWEO+MV+vTYI91vbTZDSaX/G2jjEDc2ErEgSSRaMiULxpDjScqlNUorBQCHrqVsThyhRXrksfHkXBKAsCUXVJj6Ymj3WSdeE3KPlrhholhCKqJs46mZN9eR1Af0uSqdodcV4SO9vGFjVWYpL/LlPr2/QNay3vIsEQCuW4m7H817zENCCeaVHmk3dvoUocyZI9ebxBH0yyDT4my3FeBrLATy33M6hlTgB70PQbpaUL51Z1op3qlCo7YPZa9Tz1SAeEQIKyDYGAtUr9DiLqjopwqTK09pzML8Y+PORMkIWr8h2TEAtkWux6nyWCGPV/SoI2B5acRmbdamDQoU0I9PTEhZcnSTgnS+sNb8a6BWjL9LgbCK9JeMONBNVkdRlgDqu5Wtj5eBPIPVJ4jFgu54gIQDustTqtvKvPr0eAtftqSO73soEkrF5WGgQErkmIAXm5kOuv6hGY5v7JUbQXZRgcX1FrnP6GuBmJPhpA8ERzshyAM8tt3Nob+M3hDv2bt+qtNgq+a4sP6n9GIegeSzQBvPqxTUI7RO36DS+3YHqdeGYRMIdT10C7YPipcZFPbcBOPK+Ng41S8YBqPdrobN8dTOB6pxst3Q0FHsyD9xTEqYysUQe87YNuKd1hlDZKteyUA966th5u82msBQLBAn19G5YOgCNw8BhVdmM6QlU2ljdJhe1cDTcx3OQGcacu9Y9L4O5O7QWyjihBGwN4qb8321J7RNWIFoMAdJkVa7bAr3G4c+uCM01vQ25+I/qySwRar1pwTqWq1Byy+18MCOuQSiIGpKhtxXxJBcRXfAHtbJgomVNGdx1J60vfRiYEy/QA0Rpl5QwtfTxVClhBxhGQGVYNNyWRm9UjiW8WF2VNtLYgJWTKRPcNv524WSKJeXt7Zq0/khcFjoiQgE40kHMHd9YpziSUqlLSLCw7/7KpHz4lFOfbELAPvW2AY7B9Dtg6t+5Z9fSZzokzyYuahA0CSqceIi04w+Ez8futQn9WauWTm/Lz8Ctzj3w3HI7h7bzyCPw+whob0VKjPpkmyPIL36rbvMxAbL5VuCFIQQtY9RzH4LmCkTqrc8lEO+TbaYU6UoTpPRJQ6fuI2WIX6XnmkNAahxqxs0OybYm4Wt3wvFJoF0XesBqm1jqfZaOKAFfRyoQen6/5BJt0HuctMBeUdUum+Xf6jJUF+GhRTc4RFqfe1nGwOooUrHpDn2mNwLvg7lFmL4OSvukUcUyMLcS9ONTZWjMyvEpi6edJFBaJKDmKDAuhbS6s7L+uOO1Ta5pAdkYDV5GhHKM9uFpOj8Aj228JmAO4Lnldi7t3yEUyl7ECztIcCXNG9sOvBrhylcki3FmWMDN+FSjKUrDIUmlhHCv0J/o01WQudyXRt0NrAqHGx/U816DAPnjBI62JWBdSmCLep7WLMGs6f73jICXP7YR2mIBof53IoB73HXLmV+WDMvSMAKWRaF+ShYDOCL3al2HUi13ES6fgAcWJYlo5qMIv5IA++REtSYsfC4MNp4Lt0BptUoIOioH/8AsTA2r5BMB7uMtpaOGXI2UFbkn/+zbiLQx1lZsTe2NmdZIOUMFCuQAnltu59YeQrqR3wT8KUGGZrK3BEGYTyLa6hZ0m0F9kaUqQDzBdkc8vUYSDmPbGri2V6DUCYDPmgbeLA0ehCrYTPASV1x6vdExBK43W0PFmwcbX6PF99jcRAD9BlDpSDzA+KEoo9SII9gzRtqwglVkVjEEY4t6Tt/Zpi73Fw+FgW9QAawkIfX07dwGuJbCzxqh52YSjrdzVDz/qh5nztVib6zC1LTsa3VcKpn2amdiOYDnltu5tP+PIB+8mdCVZU7T3odJO88cbwlYPEIAuRFCdUADnsZqwDhTWnigt3V3taCi4DLdgur1hAJUEJJLfJC1LPpvkMDl1I0wuQgNTaXvJqGGiQG6r2/SRUAa5D4qbn0bCWr6iodLiSTCNOuiFa9MIIPIqoC5zUC2lHXwWUNc8qJ0kE8fgF7zwieD5ts46ipw1bhw/V9WZU1knLcGeJu605R50HOy7Phq0IqbB39opX9QsyqKaVXEFXnGVZsV6MDc7oTr2ajlAJ5bbufSjgLvJeWbuQSZ7kdQWiGtJ2J9KwGWl/sbLPhSsabS8DTGqcx3renTlEMKNOl7AC0eBVAtktI9FjQtaYKND3ImhPZppaJkQXYJwOZpFqNBrP54CeklWfN1Q8rilXdXtL6JtS3T4CbL7h60gXB7ThKLZpEeDNWyFNV6QHXy99XDILcF9bLR422D0pxy1zY7WYXK66CyCNEdoRiXnxVZsSvz8m086HYg3kPoytOBpVYYUPawccsBPLfczqX9jr5aEozRFSbf81SGaptLdwT5na+454HwDNVoQodYNqWZNd5dRZD2cf1/1F1fi6BfRIA1VvA0EPd67lIxpKUbT+9Lv0KojZJ2Dor0vHZtVrYWUjUIHQS4NxMGHisY1RJ6ZYFQ6KqtmaIGrDaQmOc8oklAzSZUqsKBk+i5V/T8X6SP9vDB2hKa9BQFdYqtO96CqnXicXaGOTzYo8ktt9zOlc0hwPxR4M+RdPZhBNDHCBz4CgKcYzB9A0wbgFr1uxY0j0hlwIc3cNps4sp9AAf6PedxBnvxl6PXYuB+BCrjuuPjoROQ7zJkx6muhfebCNSJed41y6aMoDqjC03rXodHVDo4NSoSwRiYtHM39Jo6MHswNCq2+30OmjwzBwvLYZbisz5LaOBUqZrGqujKxzTpKR4WSud4S1LqQY4zo8HW2WVp7UYtXHflhUhxqwQayqM375GBAYCi6My7dZg+w66UOYDnltu5sp8pCFgniMKkQWiGUAFeA2h3HoqI/ngW6cGIW65JJpUqVJrwdW3K6xsXDAp2DkqZ95mI2fogZmPLMJ5obW6rKV4B5oQegH5v1v4HWFgNfP3UsPzve3Q2VkPLMlqIh62690gDhjHSQ9S49EYDRjpSSZE9wBEoaYlZSw66akc4Fmj9FYd+jyh3X0I888sbIUh7HA04rkDlsCRDVa+F5p3iXW9CaaGWyA/Ta7fSutZyLlG1j6Xja0CVlZCleaaWJ/Lklts5sJ18Rd5Yf8QGQlG03Ks22e1rN2P7QKgnbQqGzUAl1Lhez7INjM/UllFKwYKvju6Jo/5z+/cR/UHVtqMW/F/7qNvJEnEIWY42QyhFSnWodVeAV0P7gDYddvfZXoK2er8GoFYAq+0Cr0ZJNVv999I3AFqm62r/c4xRasbru0cRemdYzzsHba1cyFbSzzgualbsGVrugeeW2zmwi3gC3oHwqIuIZ20/+Ad1o32EIlOaNJIG0ToI6BuAJbpuHEbuCdzzoKzINOA5YN1GrA4sLCp1Yc2AD+r5x6DiekuW6FfxmXcPJ3e6MS+82YL2rAZLV+VeLWEIQlGt6igS8LX4gOrmrQzBc5YDv91QOmP8iChNICTdZMvsNhHP2gaYmrvuCrK8dEDqzJg6qJuoxj6RQHJyFJYOy/1Pap11iqJtB+BzOjvQgOzZIvGGdysUCkPAAWCh1+u9wi1/K/CfgWf1er3Hzu4ycsvtwrKP8JMC0PuQX+EO+gXQQ/r68wgvbgDfAvYTPHeTolkwbxmmZ2S79rJIBb0ZpXAqiuR0wJ6ChnU8OIbQOoegfVg00ok7bzbYatyzb0Lhg65NBASrZdKA6fF7ZLnVUSkZdXSZvlrMQNvRdTtCfcyUtSaMHueBuiTYxFFIuml3pJiWKXtMHTNV1gSdsiQFgerwkfszrt9UNh2ZjkEAACAASURBVBVkYAGRWPbNgrTA2KTVBieUQ3ikHgavqVM890F2Jrh/C/I1ShOqCoXCVuAHETFUbrnltkHbe9u9krhjWXhDCJh3CNTIOPB5Ao2ynrTEMjaLCFBMAMdU+nb4ZDD2lfbWs1OBeKpTNt01yCzCKTKs96RP94fg+XuFSpRZ3ydrrMOSBhzNm7XO9ryDUJMbxL1UO95SLXlHg6HW+UaLciWqumkm0gnJFDGWMVlCvPbJMTmHPQ8v3bSPwze4iKKQ/VpCwDouCl9euZ7Q07MlO5SKMmDYPmdqG+LAC4XCFuDlhNpZZr8NvB04s9BpbrldoFa4A76XLwjlcC8hSWYMUaQcRdDKOuQsEvRlVrr0agSoL9PtFwlFke5FejEukpZT9ZmGXU6vET+dV1dDvePrkN6PkAISiKa5oYHHLIWTpvy7/718roRQJLWyBPZml+HL7nrjK6B2E9Ll/S+QIO848vw2h+OYB1zSaovtRZg/HEC6iYBtF3hYS9J2Ea/a7n8ZGTwoSsDTvP8tSCEs0ESkUQHqiADEXaRHZ3WvXNvxVZi7HWbn9IZ1nyQRBc/UDpg6QwUKbNwD/wAC1DZroFAo3IjQKf+rUCisu2OhUHgT8CaAbdu2nfEF5pbbvyibgu0c4Z53Xc3e3feGxrcJ8KMICN+BeJUHEG86QbIzb9T1X9R9VmBuNgC0eYkPc3bcttnpEoDmEa33zO8LCB5a6U/I2annt3riWyLlhqNQAKub9HPIzSTQLCPDss2yetEvLsugUIkQuqaBDBgH9ASfhwcOC5hOTUgQ0ZJillqQzIaU/anhUEO8vSqyxentcuKFOckOjYEZbb7QmIN5fcbVYagNaRVI5bybwJLOCOxe23ovba1bQwSTxnOvIAPONLBfi2N5VdEZ2mk98EKh8Aqg3uv17nXLNgG/DPzq6fbv9Xof7vV6u3u93u5nPetZZ3+lueX2L8Ge2WEXhzhBaTAlMkRIZ28h8/NRxMM2xccqaYKKeZP2Z5mVp1KhPFnziTdfXjm5TniTwCePoU0Y9NWsNAxsFUqhnYRjVBE5ZHVcwLU6LEk4FU2KYRV4IwKCmvTUONovWYSTszutyXGS9Ad4E6tzcky2tUFwXjnv6qhc1wkE8JtazsDiBxYkNVqlqesaQOkG3UgDmGk2ax2hxrSBRvp3FrYRD3wvcGOhUHgZ8rWqAP8NmaCZ970FuK9QKDy/1+v909ldSm5Pxm7nBr6Xv+XiKx8XAPgg8DngEDIVv1Y31FKlP7bzw5xQJe1f8iPn4pIvTPtGkdLECX7wL++W/00T/KB7v90tW3b7/qm+KrjM10MlPZPWQX+nm6fCrNb1UutkhSMESR70d3UHKew0rfd518EwGNj+l19D2liiolruhboeJ5HO89OHCGUHgOWjQRM+vxjULUY3Xz5GCpBLh8LAYjz9XXOhObN/dvszWnLfYairyyJgegJm9TNpuP0bt2ugUo8xbq3UEkkCireHez1bOy2A93q9W4FbAQqFwvcDb+31ev/ab1MoFOaB3bkK5dtrhcK7AOj13slWjnHxo49LS6ei1H7mDmh8UTyXygcRImzsVEc8w/NPAN8DfLZLr5et6Qb8cgF+AgGmS/IwCUDvucDzPix0SEQKxowivHYE+98XtvcAae89iMRumQfsAZ/GkzLfhN3bqQDEZ3X6+iDWTHlPWZJi0iAkyHN43L0fhskJGHlIwLZaRegkfV1YdNmYOmvpLgeuPUayLiMtDGa0DsAh5asvj2BWH24V7SY/TsgAPRiSeiDMBixF/r5FKYbFsGjRG1pX3Gqm16ah8aCm0E8DHYh3IYNzwll737BxDjy389k+UaD02ufw0CXP4dJLvy79+t5P+kMwNUD8QQRMr4WxXwmu3R6+xH5e+KQuoXCnvM5dv5WdH38k6IJzO9kSJKvSAHwN+aw+Le/X025ng5EM2C67/ltlWSDeqCUE79hUGZZAE5elRKuVZy3tcDta7ROtiFgq6iDVgtJR+mcmZtpA2GRyPlhbRUvOEkDP7umRJAyQEYTuPXVJfTcvOi2ZG0lFQpMMlhKtmaLlZY1/b6/KPc4fdElFy4hktI5QKh3gY7rDrRt9qsHOCMB7vd5dwF0Dlk+d+alzO1v7EnsYY5nLen/Kdubh43DpL31dwEATHo47YWczke4s3X3yJa1+Dn579VaowY0/++dcRIeHmOLSn/k63A/dB8WLKA2H7Ld4HCl3OowE0Q4Dv9GTAMz/jlN+r0RbPBfj+yyTrlWQL6rVz9iG/OB2EwrZ73xqvPTv5Qv8X3yC5/JV1vQr/xK+8JSc61T2Gb6PIk/wwmFELQKpB95s9TdfOBVQni5F/qkwy+70VRBPZ8aJm8qxZp2GqshMcFnUIQ1EVz1pSpZtiAd8DKGT9kL8i9A+JgHEkjZvbtQ1EWYYce0t8UZnmQvLAeCM1vGAN0iZWQc4DGNHA2fve1q2gXhV6JCRSH8nKFgPSVLOzKjWYx8Syqjhbpkj0pSi3Qm/LYDS42f33c898KeZfR+f4Ta+ysX//DiHrns+LMIDy/LlmNQfSEkDP0DaN9CX8mwCzffKF/I/3fIatkRQ/XHSrL5Y22y1V8M0sZqo56PJI3OfhiM/EtRHPuuvqdxiqQilTyEu0Y9mbqSOfKttGgnw3/R4Nq20zMRR+PuXXsbNfIITbOLRz2/nr150Q8rhv7JzO+VPfVMkdYlcO2OId3MYXvWRn+GH+X+ZfHjZNektQAS/evU7WGOI9x79VfhAxG/+1lv4+Uc/FDIb9Bfy91dfxhv4QwAO8bzTfk4Xf3OBi57xBN/N1xhijc++8xXsetcoRZ6gfUj4Y9MV23OzCoO+NohP5fYe+KCON3a5BrYx/anr5gXaeU5llmQzgnjQk8Yjb4UH7ujnudfb3zjiNjD1RkQmqRI6qekqgcraKvACxCmoIw7AImmtbI4AZflOPZJAuw6TqmwZKcs1UUO+Sw3JdrRWZvZ8zcPO0kB+ILRndhxJJJocJW2OUSIk/sRjSH/Se+QeH7ZWbGtQmoG4IyDPLrh8Re/pKDIw1dUxGqJPenm2lgP409B+hP/Op9/xQ6k3U1sO2V3iYssXyEA8juSLH7svSwXnHUWEIJrW5GgSgKSLAE71E1pBbVx+1GkKtEqnrEyopTynRfHXCJmEkRz/bNpHna297Sf+H3hUzxsB7+ZJB4/Oxp49uQId7Wepy3zQrG+6z/oga0kkng7w4G6eovHAEEDbklSqBKnfIMsqOpaXIV4GDp1c/nWQWRPkkmU8Wi9JE1Mv60VcT0BWrSRo1IXJ8ey6p9QxOIFsVylrTZYa8OOIJHMMYi0AZl+3BNFt+4DiCfrlljZgVRGOuzoNbIdEJZsjZf2N2ffmTtIaJmbtVaiYW28KonG5nzQwbb9BX03ySVgO4OeRFT4Ev/bmf0/CEP/hod/knkuvZj97eC5f5QQlXn/ij/iBTd+gxAn5QVwLTEP1F/SLtFkkVW3l9ErD8sV72Em90sa3kUwBQes+7AvpxXE5fM+6SClN2y5WasWOX9IiPM0mdLWyXDeRdbGlOy9C849121HEYzIK4eMET+Rm+tPJNQmDBC5mmXHqtCnx6JbtXMIibfXAy3PfDEkwlhlS1eMeRUBhUXW5wwg/r6nou64+xBpDzGw7xOyeK9nFA5IRacFFvffnXvZVvrf4t3rNzyd5NRyvlDiuqREv4W/46m9dJee/B6b+6m6GWGOCRal7clQCbicIIOKVI7j3Bjy+bsiI28dz5JaKXguHYVaX61iebmdgaF18bPkgtYrv4win99i9vdQkflcTqi0eIdR0gdAhfhi4G/k+6GdtaeveObWEmxJaKiCCkh3/V5FZl+qpt9R79CoF+JSc85/ePkr1QeH0ehNQuFKCjV/X7jszQE0DyPymnlB14KVDUPpTRPZnjSOA7kEF9CEJenYX9X8rIWC11MtIO7xfdM8BQk2bJ4nAhd5ZZP+cre3evbt34MCB0294AVnhzQgQ/1vgP8F/ebNI+t5w25+w8Kox5pliT1PQLvLA8h+BFwI7oP0+8batjnIaZFFKpJuI59JohdhPgvzoS5FG9l0WW0oOWubfKGmAqHG0v85DbQZYhqV6GCAqmnhh1M1IWcDcSo3GkVZ7s2ssErSydeE20+mqbpskoSNNswWVvciPVnn/xkpYb/cLUBolnQV4JUG63qia3cggkNBfaN9+kEPINH8IuBJ4FTAGnTIkQ8/gJcW/4X/+8vXyzPYhqDAO/IF8Lo+0wozmBCfL53xbNPvf1ttsx4Dbyp5GA/YZYUBbMvpBeso+p6hf02wDxpk2FjCZHbr/80d18Nbej7SQzzYiLZ9q9cshBDHbHWmYbAPZVduCqsOkgTuBUnIRa0NDfJA3A/Arf/Qb9H4M9nElANdw/6kv+P0F6UFqDRkuBb4LekPwqer13PivLCKvwX9rKn0TcAOSAbtGiPPg7m9F77Gj918kfK9Afmd7SPuLpss/cmocLhQK9/Z6vZNSfnIP/DyyK968jxsKfyIfyhhMvnuZyWGF3CLCoSWyjsf1VbO9Skh/QwhFcgwEjF7xLAsImG+xk1v9DT/vHCIEHRP6vi0Jyosi21TKUBsVHe6SKgHMQ293VELlmv1VyoSCTHY+N2gYwLY78gNvAyVHC61n3SRTmlPB2+ppgMwoqlrGs2vFhQ4SpsfbOalbCgkyWAzp6ydlcfEoFPkmn+9cH2pjb7CpoVEg3guPMu9tnfdGvSbZA7h52Fvc/xC44Oy5jaLIBvbO1LLXPKvANlYXrXVl2h18GViUwbyxGq6xqZrybIOHdkdnkjq7q00Av/ME9//8DGtE/N//8Os858ceAi49PXCr3f7267mIJ3jJQ3el/PnCs8ZY5BJu50ZuLN4pg05Zddv6eXa2QdFmdlcg3xnrYlRHvrtb9T7LhPIGZfdnjsILgPsJTtJZWu6Bn0P7CD/GLc3f4erKAT7GG9j50CPMaheSKgIs1dGQhkxZKsxFEcTbEDDZgcyZIXiLCIdoHql9ARtHSHsXmrcOoVIbEf3lSU0VoS2pUtClf7n9EKdnJLXbbEo9sSVNxJi2ASghrV3NMKmcqr0UZhJ2CR6ERrShbBTJgDBShvgyoCFTWLPYyxc1bbu+EgC8FkFVEyrapp7RKTMgnpOVdLVnmhAyQ9xA011UmaZ1dI+QAcA0xA8GPfA9SmXtiYLCwVfpMzOv27fkOkHw4Ktl4dGXBjyjEuKl+uWW8u09ZTt3TKClEzRBh42bJcD4QcTeVwlNE2xGZXSebVvK7A9hvWVQRkDtBvinvxmlTo1D7OIAuznIFQB8gZecwRWfnd3Dbva+5l6hQMaQJCLtZ0kVAfA15LP3XLnNLkeRmfYVwO8jIF6D5gcuojJ0ehRfzwPPAfwc2mf4Pn7wyrtpapKCeUQQvsRT5UADtFsKNNDvTvs5rwJx1/oSbieM8tYZBDlWFKk80EBK+wCm77XWcvuLAlDHV9XrLhK4Te+ZtwLdkfLgKq1is+5n1fbGEG+ljPwoVgi9Bgl0R5LodRal84pZ1QYw65q+LDUwKmXkR3LIPSf7QTUCvRJFOoBZOdZFwuDlq+zZgNV0z8aeaeL2sYJSmesH0lrQzWNaf+MmaNwGy0l/FqWBX00DbgkC1vbszWwgMgrFZ2OWgGkXVJ5SJYUlz3hFhlem1DTBZOGoYAuEQKTRNlkz3n09D94rZyaR572c9KttyGy/Z5rwPXglsBt+9i3v52t8NwCf5kYAdvH3PPjV50li1LfBdvIVPs+L+CN+lP/wl78J98PD79nCzp94RMr7FuVaeRlS0vYg8oASvZ+i/n8IKMOX7n9+qqLaiKQ1p1DOMytcDr2Vu2nW5cfp4xmm5rBymGnAyepjWCdu5RdTDx1SYE07pnhzyo+SAZQ/sc+IW0WmuzqFTWtr2HE1SajR6OfcY38MBHz66nJYTQibSivdkyQhgMoo0hh3lZO6lNgMoqvKm+ax4JWnCUt+ULH7WwsgZpYkqimGfuSx5wz9KoEos8z+Xw7nMAqn7Xl75UcrFR1gvige+RgCtGYpbeCWWWcY6zzTXu0PPCYEfbZ5090kePE2O4h1UDjh9gOpNQL087n0SxnXy+psEJoE23V4M0oEQjxmDFVq0C/1Axl40usYRSjDMXiY72Q+Uyn7EM+DbxN4AzyXr3Irv8ZWjomDsApf47vZ+cZHJLBpjTfKwC4kKHsZfbEdQILqRTjCFHUdAp/M/CEH8HNghQ/Ja2NRPBIIgSqbKleyO3mAti9KU5a3LTg4gSRHtEIVNJqEAIu92q93CJn+eS/UsuHsh2QBKCTjzLIrm0pZeHni5JqAaTzkEoCuIHhUFUIUPlFuuxNmHqUEYmvoW3f3rBy8gXc8JIC0tCyeYaSHjoGoo6Bhz0kHtO6i9F80YDMb0etJEqhaIHca8aD8c7BgqD0T+4CsSzuawp2Ix93WoG7VPis77jDMf040xtUJ0ga5EAbCJdfVva3Pyp5not61geVVY/IcG25w8rU32m52buVLvaIkO+BOjmnlPL3PueV+IIb+LNC2W2detZ9FWjC1UiFN3mEtdKaxkIEVglquw5YylG6EG9/15ywpyH1NWimfM7udm8I/O98JO6W+Nnvh3+/9dX77nbfKg5pGFCcAEez7lSs4yBWpt73GEPvZA3xrahDlFMo5sj18if2TUmGqUQ88dLOp02zjZIuBR027WJcRkGshHK8mnaQ6VfOSl+V4FhCsbtP1VUKGR4sQVTeA8pXTLIiZpRQUGKwTOoR6GQkwqd54sxW8r/aqZslZjWYLuuqxK1v12OqJtVfUe3QetiUimcbYa4Wnx0Sx8EgimuF4SGttJBI7mFMlyMwEqVJg6WiQIU9Zr8TRwI3PqmZ7xmWlLqzA1DQCSKvheTf3K820TZ5re7X/+uPtiDrlc8jAYp+VKTXQz2abfHYMI3TNPmjPBSqqvaTPtCqZjCkdZK3FqnrMo4Q6GxNuuZWwLSM67CJCA1yh71U5UzJvsooWAdf9PirPp9kKevUKLtNylFRpkt6PZfVEiKNwVNfbc9gOPCifR20M/vdjMkR9RzpnePrZFA+xl7+lQ5Gv8V3AxpLABllOoZxndsJ8KC/VS8RzSyBwq2su40y3b2v6rrWbiifoj2avkQJuPESaFZme7xghyBJl9vVBRi1Z6jluIMikCLSAUSGVoQDI9loqOorHzoGAkKUgn8q6a6Q1pM27OwGccFRDQvAWQQaVaeshqQOM8b2NeqjHYWnXI74FWCvQLeZBLqyG43SRgHDJwFMB3IKvVj8j0esci5SqaCLB0WsJwNUgkM7ZZsUrpDOWkmmm3UyENUI/RVPAFOn/nCyjdBwB7mvceVQamhLjFrjVAQcb6MrAHaFuSXU00DLobCCliuzPOxsmKdxPCATbTHCVNM7S7ujnNwubTiix4qdLTzN7/JsjHHnGdjZxgieeosyxHMDPkR3ieRxdGOciOjz7g+ruvd9RsUOkYJqgXLD+gEveAzevpkzwqM1rHobSZgXvZfHcLCDYF4AzwLAg5hrygzuGeEsGhKbrXaQ/kqYtp5Jl8XhLBIolAUk9Bip2XkgHmMh9A5vHdKo9LOcslaHUEe85cWCNO4yZeeFmfTRKFC4VAsccrblrG5XnAw5I3D7Z7MO2D9Q6WqpL5j068BjVlBDA1g5uFJaB7yKpHr5qCoYfRQD2fudtJ4TqkjMEXbEPaq9lXu9BCkSbHM4GaQjp66Zysno1GvNIkvBcKhMEisrLWCxBB/qdExuwHIh3OxBr9uV8q182WWyJLvtdm36Jd/LrPB3tsWdMEnQ6T43lAH4ObRtL7ONKnn3dQfmyz0Hpg7rSsgkRLrPbgXhGMsAA4jkExIvAQyHhYH4uKBOuKkNJ1QX2A05UhVEyME4IHqDx5kOI57eK/PiMRzclRou0FjMgXp0VGVolDdLFEVS02wkEzxegtAsow/EvatryKCHdvggck3tqZBoGlNyfNQ7IyugMTxqL0Dwa1k3vBR6FhcOwlECUwPHDst4aIti2KdjrawLMREESmHYiX5UMQaMR7Lq8nK6Ndm3RcTqeDeuv2ksYcCP9DG6Q/6sNQuLWbNimqRdaiaCt91cy8IQAyEVE6aO0RfOYcv1lJEtyDEk68lSG5+wTUs56rh4KWbEiHH5zMRTgmpoh5CqY2snrv+cQ4B5HQFxnbO2OUIMzvl7943I9736Wkcm5rWc5gJ8HlkxAdBR4AYx8XL3NIUSWpHylURDxGCFRIDsr60gvwXZHftAlmyKvyPFKxrcOsHZLvHWQbZv3OO52lFDLAYKMEAIFY0kLGaUHUUgzjqIQoKselOMvJxAdEVBsrKhuOApyRJO7QX8gzXvgPgUdt7332pvAZEOuM11Pv9fuLvmkY4OWKEjkus2L9/tbUkxW220MhU+FT1Ue5i3bZ7mItAqztHNfYhVgu7YWA9gKJRt8txEGYrNhQmnUKFBdrCID9KOEsq02WBuv/5B7nwSVSQmY3A2syGypVNTA6KLO7HYghZ6+6B5kk+DJj5FSf9iMy2YSpk66DbgZfuAcVIx8ulkO4OfYruF+VTRIJb74lpC0wz30S/y0DRUQgl+PAz7zEM1+NIpkTbz3JEHqLZueeE2PqfUdSka9gPDsq6J4iNZ06p+t7V3VZTsIdUjmSNPaRzLbmy66Oiz8tGVXttH32qewmkDs1kMAQ1+Zz0vX/NTbWowZaJqOGaS3oa038+8r7tX2mdJU+2YdZlfVE++IBC4L1NnMSDMD9QoywHqVCVoa1SturAxqLfvrHCUF476DQxjUzcZJZzIkpLU94oSQBm5adgizMfPkh6Cr9XFsFjSCdJ9JqbtRHYhaosEHiJeQoPh1CCh/VI9vDsAeRAu9Jt/TtLzCqm5zm9xH78dhjGU+yhu5jV/nt/klcjvZcgA/X+whBAS3I1PPCKl4VoR4N2E669LXWUUQyLjebRDplHvyGt2uDIeUJrhK/8cCVKYLn3XH2CHnrxkYmJzvCCGrbBv9GughUkBIpX1GFyyHxBTL8Ivpp2l95t+C7ucL6JtZHZEks85wBwLwGqh7WsS/H+R527Jld2xrleXTu+ccQntVZha4cfsYiDdaAfibCA1RQiiJWEFxUoPSS4tQM1qkKMWwIqBmgcA64btiejwITXPHCenelmiUKB1nHrcFMU37/iiSjLId4hVZXl2G6oOEWEsVOAb3HA5fgz36vWwfhNIx90BuJqSdG22ns7Z4G8xpi7PkjnCsyw9AoQ77q3t4Jt8AoPBe6L1jwAO+wC0H8PPF9hIyE3+akJprPzQIPyAIdbQ9jaIdQIBQyW8FrtoNzQeRH/Flbn9rQ2X6cNzxR3V7X1NkGvmRL5NKGFkFGgLcg0qg+pobGzGjGbK9FCGVvfc5rB40B507GbDtRq7F0zbZmiVZ7bMH8fWOY9diA4Hdw7TJKsuEgVFnWbWItOYKwyGZBwjfBfv8OoSCZMvIgFsn1NfeQRrQjc2DLiKB0YTQxgwC726SwAQBbZUuLtwh9zOOK1OrkslKlf40cvuu/AXhw3DqltpwSGSrWHOGbcCd8Ia5P4EqTO119Rly67McwM8Te9clv8imS06wh/2U7j7Bd5ceDPK7ReSHZJ7XBMFt9QCeEGoxGKd4TKb/qVTPUuBbiFd0nR7b6BNTs0TID8mpOPrO0yFVMTRWxKPO1pA2Wx6wzL+PMtv60qjrWbbI0yBQPpVnvFHznr550zaQ+POuB+KnWhZBUJMMKocRIQFigGmoGMc9S1CI2CBsLdrMfA0XkwL6qYrZJcBcKFMwUpZZE5Ee2+8fATvC4OMHufkWzOxG4jYH6A+o+g/CHtQVwLVQ+SJU6oiKxstWLeir9zH+jqNsakrp3hOV7xjwsC5MyxN5zhMrFObo9aZ5jBEuWnuCkZUnKNyGfKn/glDwwsqfZktZGp9ZRkB8M2m6ekqDmPQLQhDSaBMQDtum4UcQSmeNwKd63bB54JoibBz3vIK5B72sJwyDgW2QN5HdL2uD6BDbp4TIiC1j0BKAZvZCY7+eM9KEn2tJYwr33RPO6bNiB7VhtPOdSb1sM1OtQCjtGgG1m3XhIkHJoYNx+uzNIzYqzGZka8jnaAOvcVVb9f0yAp4dQrLQKEEvDmHG54PVcwTnwBZ9OsQp0gQpK6M7Bku/JzLIeExLH1gteOuWZB2eLAGphXyfrD1rTa9hBna99stpO7zZN1xJ7w/Xf67/Ei1P5DnPrdebpsZR/iu7YQheUr8rBIAyNElfYSjca5nAkdsP2gJfJg8zADBP5whhytxwyysEwLYfsucuLDFFr8PqdltKu+GGL2O6UdD2oHy6L+h6Xn+CTO993e0qmhcyB9XL3MZryHOQDGeu2g3coetM54z2bLRlXjVidMRiqLwI/Ty/p1z8tadyxcRp2S2hZkWyO0GDyoQZgVUqtPovtRn3AHa7A+8jbWiRDrpH6Ndsq1QQkO+XfZ+sAzwESs4UKwj9AYS67jZD1O9R7SbSbkyxV01pjZ0UvCNkgFiFhTpM7nXnRM77u9zCi5c+wzdvLV9w4H0q2zCAFwqFIWRytNDr9V5RKBT+M1Iv7AngH4Gf6PV633hqLvPCsO9X2VSRDl+49F/xA62/kxWjiKdlP8IW4umYVhsCwFqg0bIty255Gflx1QkUjOdVIUyzvaLBH8O22U5IzT4crutM6YpBhZL8l3I9gP6WmacuHtXXYQL62mwGTpZInsastIDp0+FkqsUrbdL7XgrKoaXVkz38WHeIVN43MkwKwt0k80y1NG5DgTiKJIO0rwWfXRgEYPWDNYQcAdsmgYoleBk4Z/cx0xLJqdS0ntnWXjcTurWbqXrl+xt/RxJvpvCH3z7G4OlgZ+KB34Kwbzaj/Axwa6/XSwqFwvuAWwllXHI7C/szXs8PUOMLb32pyKnMa/ZBpbQpL/2F4iF4LOqzpwAAIABJREFU18dIG8R2Wzp1nUamzuZRdpAf3Zj+zeq+4wjqeLCy1Pwiwcs6Rmj04MrAWmNljp7Mi2f12p6esFZjZl6rvZ5qbqNmAUijU+bqENdFaVMyuqBMqKtelbR8gGmr4Wy0VYJ8NtP6N+qWb5OmGs1WOJ9RSLj7G8n8T+b/WddMYtDz69LfC3rZpfkDjP2pCwrukHurbnMHGhCMmHUUyoz1cqyRlhSmiXynOgSHYpsus/Z3liEcuX3Mo7cZoyUNoeewsr+7ZL/JIrQ/pwHRBOl1CWyvyoczT27eNgTghUJhC1J86z3AzwP0er073Sb7gB/+ll/dBWiPMRa6eECY2lqatQG4V6TY/0cJadqN0FvwcuMPEsTz9j8iUwn44lW+VoaXpxnFYjasx9Nv0fFV8Rqj1skqjkEWId6j0QAQvE3r6eixxl/GmVpEqM7X0O4ukX+Gvtrg50IfUECCvTZQJbB0GCpLEO3TxCrzRCNJlqroTOQE/Q5udrbhn02XwH55nXt2m5gwqJ1K/dJGBpJp+3z898mkh8ZBAzPjMH9QrzEifD9m9b6vIOQeFHXfxTBTSJuM2AxR1Ul0EIXLLndx5gQYHYi7Kfse2Czwo/Cl9zyf9/AfdMO/XOeOL0zbqAf+AeDtBOcha28A/mzQikKh8CbgTQDbtm0btEluzh68T6uVVQnJFllpoFmLEHBKCG2dgDkflLKAF/Rl5qX7GYDbYGGacFs/RwimZTM5XW3sLgrESUiy8TaoiP/SaqhXdDqvOnu89WwQsMVI0a94ORSdAsKAt510kFw4CJM27S8SOGN9RksEL3vKMmONQtgcvPD1gpse1AdlmWbtVIOgP54/Zhfl/232ZDMFuycbAVwsZeoKXV8jfOcahGQj04q7ZJ4YQsbrEjKlsoD7ikv796OOeeiWvGPfRXU4oojwPW3ABIssUeMmbj/FU7gw7bQAXigUXgHUe73evYVC4fsHrP9l5OP674P27/V6HwY+DKJCeVJXewHYd171laDhtapuliVnwchh+kHWAmnXkv7wpi+jP7gJgX9cJZSMtWNagk5C+NFaFTnzvCK33sw8e6R2h+dsB0n8srK7iJNrh6zXKb2mapmFwwNWOvPH8XXVre1aVT3x4y3J/KSDZL1q6dXJGwjPdpeuS6SWSzcJGZcA8WGoLgmvbMXAumsS1JsaEnmd3Xf2eZToV+t4Stg/M1PUwMlAnqWUEvrrjN1ndbeXg4c/OUMoO2sDuwUzO0iky5ZZGQVrH/Y4oXnBOJJRaQXQhhDwVwpo3lFBlRYSXLXvnZXQndPXrUh9lo7U+amaJ78MOx99hEuqiyeXjshtQx74XuDGQqHwMpRBLRQKf9zr9V5XKBReD7wCuK737dQj/gu2Z/INvu+zd/I/f+768OU22iLbMcf68ZmE0CiUDjL1HSdwtxGSxOOq3aXdQoaRTNDH6Ve4mMe/hvyYt+p5LekjcscBKi+C9h2BPoB+SaE3oweynrLnx73FwH3rALfRE+ultps1VwTQJ6eRxhE2+EQIeGzW/02MPgR8LNQMnxyXbeYPh7ogIIAdtaC+qCnzUShXawNI5K7Fc+LZ2YJ1zvH35rvS+w42ZlkPPLvM/l+2azYHwVNyLYmXWPu1NqoHR4pflbQuSlozZy3sB/TP2HSgjedk38i8bvsuZ3kxK0/8IOJETCOD6RFZd/QS4Vyy1Rxy2wCA93q9W5EAJeqBv1XB+yVI0PLaXq/39K26fp5Zh4vkzQSDixMlhIQHkw3alNWqDmozhKglHK2VSS2NEwKiEGRlIGBv1QRxr74C4TSi1Gjo9RlJbZy9plAP+lINojU8fZDt+GL1SAbRLoNsPYphoOfq64DYDMRoFJthOImmzSi6nf5rseVt5f7teq3QVXVYK/8hILbg1BUehNNBS6WBXklimalx5M6d9L0MzLNaz9pA42ioVWOladut0L0nO9CktdGNrrPKib4JiHculKIZGVZ5oSUrGTc+7I5hcRZfw9yaQr9K1v0kHwHgzsK76PXeeYq7u/DsyejAfw/5qD5TKBQA9vV6vZ/+llzVBWyHeB5fYo9M220KalF+4wXNaxxC3Kqf0u3eq+tqUHpBOGbpEtI63ubdWc9GUIVCB/GwnXKg24JkSbvaWM3qWZg/KiVRU6WDptgvqYoj4WRFSRZgs9539n+T302XxcNtrA6mVWAwYJlXvnM09NxsJjIzeKDe77FHQG0OatfogiPhOcVRUMhYlx7zgu0v0oswgF1GqkFWi1C6Plzk1EPyujQbeH/v+TR1QJwak9IEFsw1yZ/VTp+KtI0ag3/A2drl/nmAlNJdWhmwUWZ7szbask1rdk8bF+ObfVihNVeWofJKxGGw761li9p312iXGULZ2wk48lOhVvFb+L20kTG9G0990RegnRGA93q9u4C79P3Op+B6cjOrItTEPfR3TTG0sjoYHSTppEFafTDt+u631ah+4jxwSwRJ+W4NdFnndgvEVZegdIi0FOiUceUdbZmmA01Fvbql0+jBfb3txP2l16WnKkXqwa32Vw300jw7HjgwdVZfB6iyiUKxUU2EUrYgVEgFlQTqxvMDbs5LJK3dW6qdtgCzC57a+Y1isQErJiTt2HIbHOKkP3YwORzqcXv6aNCP2s8c/KwkG2jNznayt7rFdTjy9VVSqs06PkGYubUIz2IMSd+3xJ9hYBr2/fAVXPO7B2EC5pmiQ5EP8Wai9eof5wY8OQ88t6fI9pz4stQosdmidotJ22fhXn39COPDoT+qZV6PIxGtNko8JLVMwHUoR8C9NBwkYumxioQ+i5pY1G0JAJY0HbrdWp/SyNYwWc9KyiOjLdr89l6N0uVkmsS8a9NLDxowIHilkd6vAfjx1eAZVxLtTzqMAM8YzN++Pq0To1y5eaSePlhvHwXAVOe9DmadLqkpq2hZ7zOoROrtu+3Xo6r8c5uxmIqBNQRttylX7LgWEF1V6sm89iISa7DA+W6gLslr+372Ct7G+7n7H34QgN53rXMDuaWWA/h5aG/Z9Hvset0D3HLHh+HOUB+63XEdbSxYZMBjyhQLTBrVYrWfkeWl3cAx4UFBjjfiZIopdTBKqDFu3xIXgFqaE487bbScQHdFrtFP12HjdUI8oFa3yXUvqHdfQ0C9m4hX6umUQbpw7xGb9/zIANQzoH94FWqLJ69PIBQSswCwsxG3nV1/oyHPteQpr1FSSuyk2UTSr5Yxr9oSj7LXG7vtbP1xTh7YIDxPX0FxORMkTTL7mlnwNL1mVSKl9eWt4FRC6PNZRmI39j20gUkVK9QBLQv7+5f8OJ/lxRxnhDuPvgyA3rYIcuDesOUAfh7aZ7mOZca45cCHmV0WgCoBI4lMo6vDykvb9LRC6GXpemeeJEkwD90y81alEH8anGq5crRWB8VMA00G0qC1rVuhNofJ87LTcrPTBSMrBF75gcMy255UPriBcsqq1bZzrKdiqUVhYDIO3E9G7HqMjmnTz0e33WtzljRLc1BpWTuWXdOkUkzdAy5lfZyUeqi4/fzHZP+vp3e3wcaSnGBwz99N9NdN5xTHhJNBwJKYmokkP8UR1C7VlWsinWysCJef1jE/SCiJqw0bUvXTXvjKx74TgJfwNxxjJ821IiVOsMwYD7MTHtaT5qkiZ2Q5gJ+HNs+lwKV06zfTpd/j3DkstEf7MJSsfrQPJhUJKe6+VrR50yYdcxRK6oYpT54eRws0+QSiJNHiRaOio/YIatz5el+qQUqUQcvS4xG6wdgxjV4wIPYBUw/MZsZld9c7CSdL87LsUzez3LNY5hF7md9AvbJ9HonGCs6gbox/np6798Ww4sz2cea9p5VOez49aOwv0JK/ivQlczVWtMGEKXvG6Uvu4kXyOtU5wr3F3byK24C3URnq8Hrg9XagF23gwnI7yXIAP48tHoPpRDzdCgLeFevYawHMBLp19YK2018K9BhhiruCgLElZyjlUrJaKi05Di2lTgzIh0MhpHYi0rB4COJpGJkTjxwEIOsrG8sY9KDtMSKrqmhzMvDGQ7JdzfH1C6vhuKlnnIhqxDeG8OeNCF5pjFA03pvuum1Op+owgDRVDkr/JK7VUOyyZkvbIJrVpr4usFka1nZ4OsNJHGEfR3JPXq2znldds4YJPoC7JsHZpdX+bX0ikc0WKsp1V0zqFyE5BmNyb5bMhF3LGsFzbqLFNoDr4BNb/08AXsttvJBQKTa3b43lAH4+2yUCsNVD8tupVAhetWlwLanGgkIGvAcJP2Dt+tJdVIrEmsyai2lcLfojNj49AVZFdgYyiKQDiNItVQLgHF8NdIRt5kvLbsT783jtPUcQ7zsekiJUpk1OMvuORcLxGnD7RJrasILTHn0Gy26lBzyrlocGj1XLPFeXezNpIwggmhceRxoD0F6SKTUF/U2gVd9fKmoMwWXKNj1BTgDVbhIAO3vPZvacZhfD/cbWzHpIBhdrVA3KY+8i1IS3IOUoko1pTYaNx9eBPZ6Aqe0EZ2A3ob7JNkQWOARf2vp81voE4rl9qy0H8PPZxoBh2GKKDJvCRqRywXbLqUQg1G82OsTRHO1OUDz0ZVlq1cOUr1X1BxlvDQgKAvUo41GI65n6IvQXZLIg2uksq4SwAcB48Rpyr/G4BFGhv43bltN8m9ur/cHC1KxhhaGhbzGXsbHBiwfbOEEV5I63tOzah1kThBVk0M0AuFk2QxMGSwD9/41VzRi1ZBoDcwPwbOLWIoHqgTCoWT0ecx5ucRdgx7MPehyScYiWYT97OMDVAPzI4NvK7UlaDuDnsX3wr/4NQ6zx03/8cdhP+JHZD+pBiDoCaECoFw59HEVDwa66nf4mEMaVbyaUD4UQEG0EjzBCsgpNvVKtynaNRmYAUWtnXr2dSnfsLQtQC6sQaU1puz2/3lQmW6J+pUVVqYnYyuGa53gZAXh80NbJLbtrgWaatgzCNQnetldh2rTQVugpkRZ2ba3pUfL11qtyrjgSrXy3BWMrUkPGimnFQ2FGA/qc1ZZUxWJ4ud5z9DjfBuYzrYSmlO5YakFFm0dUryGUbvA1vq8BXkuoN1+F5sRFrA0NcYhdHNIyg7+v2WSHeJ6ASgXeRm5PteUAfh7bw+ykSEe8oEuR1moT9HXIiVtIhptJuExWqL/iRkNTs9Vrb7iKbxX7kZqW3HoQriKZl5dBMifZjKC0gAGSLquOCTWTJKJEaSYbD87B+h5ktoyqWZvBAhv/Ra5WoWTp32UZhBor6vW23A6WvAQBvNcIvdeAimaZput1BlIp6rHMg3X6+5S2QCR3IGn0vrYIyOfSTTS1fVkGmJLSQzYbWtL4RnUiJEoZfZSVapaQGMWCSwTyipKKvp/XQXhqBzKIbSPU8wYZaHaR1ve+f+8MR5jiXqSj13t4N0Afp/0W4LncT27fXssB/Dy2DzzwS6zuLPTL+YyfrRLoEfvhOXWJdWcx73hEOe+TvGVDQytKZaC0Dax6Z7ujgUvb19KgB9iglPmN6sCzxzFQOuP9/UCjrd8S1JvObNenzjHzo4I9E3tO5m133PPI7ne6y4sgWguUSPqZqAy0agOmXttSvf/YcRTUNVmLB1DOXQXvEaPJjOv3iTf2P0hJBr3Pzijczo18g2fyhNXpWce+ypWnXJ/bt95yAD+f7ZkJxU8Tut/4H19CCMJZ5bw1pNhUGdgD8SLEmSYMlXIAjm4C9WWY3EF/y7U1WPjNsE+kvGhkiogMPx5HIYDnPWRfsS9bGXA9ywJ+haBwHJSJGLntjD5uNjTYinib1WHtFDSODEzWcciaWdTpq3/SWIHqSgDoxkqYxVTHCSVWx5BsS9cBCWSgaOp7A2MrkdvFJUgxAIiHkUqJkHawqG2D9mzYpJ3Zx1c3bLf6ZyeWcVm7gnSwqh4jBLwjwoxrNzz82i08xsVco950kZAQnNv5ZzmAn8f20m23w68hiRF1kfNV9xC8X6sv4T3wS3X9MALsm+mvSVEWfa8FAbtIhxmA6mLgX837rTjFhSXEtFeEBrCyo5aC7zMdLdnkTLvnZL3tpltWcduYtM9j2eUaYewmIVtw0jJKDRSPkta17jq5nuedE/prqKRt4izA1yLo5LXkKW8EPg+sCq9cscCxFcByXvNSPQxoVYJ+HiBqQcVKFZi+GqFW2i35LKyzkAWOrexAqQxsDvXSR4ahYgk4IBy3lQZelP1LO4C3wGPXb+Z+pKPDTU/8Bd84tbOd23liOYCfx3bHo/9aIv6vQXTahlZWXwNCIs8qQQaG284CUj77JFPgyQ5lAA3r1+Voq0Qvcl69pX77BgWmPDmdAmU9rttf2yC2wDzaKb0vq5sCMkNYcAG/qmULWnXHoQDwdo/ZGtx9FQD9MzTgNiC3OEIHGWGsCYc9n5V+TnuQJZCWo40Tp5QZJjQ/iAYHi2OjRkwlUtEBx5oruBZ5VjK2Wgz3XWoB++HiI4/zg9HdPPNHHz35JLmdt5YD+PlspuU2b8kaLxhQu2L8gPxYnWoBr0Mu0ydrq+2QY3uFQtuVbK2VYVaVFlVgqiweXjykXqJ65snqyZpr63MJYQrvk2S8WZ6ItxIhUadUFG/4BP0p5BUUmEfdgUwTPxw89xLiDcedULSrVNRrd6DtB4kRU60YB276+ypBR2iDpgGnqXk2I4FmVzMlISThlAiVB6vufYlQ7XBOPehNh0NDhHhcqapEKCKQ70PlUvq5/M0ENdEe0m5C818M19NWnXjJBohPItRSGa78NwcBKBQm6PUuJ7fz23IAP5/NUuSLIjkDec92AiXgg5hVgpSwgzSiNYlhAwGcI7q+Kseacqn0zaamRatNmtpB+e2lVtAVL2WUEBECfO1V+TOPc2osqCYWVoM2fMpP+9cCzwwC9v8/e+8eZ1dV3v+/N3MOMyeTzIQZnCETky9JiRIFDJIaajQiIFT8ij/9YkXRKt4rivdLvdSq1S8WbK01rXhDq3il0mLBiuUiEr/EBkkhJWqQpIkMzpgZM5OczEzmHM7vj7U+ez17zT6TCYRkgP28XvOac/Z17X32/qxnfdbneR5FV1qufRgP3IoGVWbEIQdKaeDMEujwSotJAj0i4Nb3UskdJ57cVIEG8Jy3IhsVPGUpK3n1NsmVyqvhrk+jFVEdNZ+tcRSXnjXNd+7PafObaARUNqOm3eO+So6KCMc0mqIifwzD68JxFW3ZdQWhQ/ed1MRiqLUcwW7mcXvSrPRtYbPNCgCfzaayabUANClw24yDCtTQsF4mWWAPjkeX9huC6zuXdMhfMTwwZPlvcOdSuHfFAKt9iCptDmAqOU+WTlkmKGQqCkoi6wXHOavt/srImAqi6waES0D31AdbUZxgZJVkoxL1eczyNj44hW4CSJvzTkmcAlmFTlvgvyUbjNtVq2WpJB1eVioRvHwv15xCp1gv3Ba6xtz3kgkI8/ep1gcTrUewrXUJ+ziSFurw8cLzfqRYAeCz0P6Kd3EyG3mehr2dLmAnfWl34KL3bM3MEs6lW0moiTlI8LRWAl8jhEzbWoY+2q5Wg7HBrAfd1Rnl62h1OVp6VV+zCr0CLE/fdFRhm1dNDJt9FWKfl8NjshayAZZxk4/gPPNhAh3S20cmH/nAhsADpxXmW6F3NQ5IpTSpOQ4YXMekScDdJo/KpAG8LqsPv45UllmWAkXl7FRJZjGg32uEUOhgEVSGsvlD7PXvNvdHpmjZGn6kIcWIv46SV/3QRShEPUqYMd7gr7sOXcv8MnX26mhK8PvjK/yQs9Nw9wu4ivWQpnstbPZbAeCz0FbzU1aw0f0615Hmnxjd6ikLAbZeTk1k7sGBdg1Hn9RwL+6P/TYXEoJ8tvhtVch4PFAdYLjrIT8p5s9bq0F5jz/ucoIMTR2JT/AvaqWrPQS1KJIQPJ/b4raf9J59r5c4qmI8BKVGueSjEhXe7WWBvV5xsrvqrqlU8vlFxAOfC1zrzlOZCME3k8PhGsuE4hXggmZsLhRVJgK3f2nQB9X0kEZX0o8Dc3DgOUgKmpVen7993N0DzRnYQhMVU11ntObuhZZPjriOVefsUPQnOI4bd560A4s17QJ7Jdr6MfD3De5iFetZxV7fpRTh7o88KwB8Ftqz7/l/QVes4a54WZunQxOZgwS1gqgUvbiqmGLFwRM4ALc0QMlMTNaCKmIS0qH5JGYUsMQcz4aLe4AUhZJWJGd6JUZeAArAsQZMp+Qo8UWcUwmeOgVRR2qnrtFHm1rZXq7pPsMUqkJe+mgVOuTd2/ZBlpNWvhE/AiiXXK7yWs1nTPSb5Y1K1PHVVDRZ1I/OY9qZfjcedqYtmtswE9trWF9kB3yEWwHgs8zO5btcswWnV5ZMTdEsECSA/QQqYYRQmV5eWD/BG9NLvj2cZ3TYKC38fpXF3kNtwYVSK9jF1zhcthIXei3AHgn7ZkAFk8PDPGFdnThP0CZLaofyOJTr7jjlcT9hZzsccfxWVK6OyNtkzV1PSVSSTGqRCddeO1kaK2JSflp5rSPTrVKaV/Hmaeh8t9lQAC5PHNc5lkouyGis6gBcCbxqtQDivcvIpAWuDPvqN0ompd92MYFvHyTLvatzbyGkDJgg8wwU9si3AsBnoynqbosbwoN78bt6CLRJFfcy6kVejPM2BWobSBUGPMNvuz4EeewFjpV2uuaP207w5rf778sIqgYD5mkEYw0HygKPAfPZp7id9JN/tZqZKFXuFQhSvQGzfK5f10VQenTA2BZHsdhqO+Cz9fnJzN0WpL4YvOjYy7eThfHE67BP8mSjHu28JngwXkaIij3Hr7jBbNzpPk9WTYeJo0a6cPejVMqe/74t4ZzzlAMewgT0ctMQXZPV9kunLh6+G3ix+3/sGvdwbaOwR4MdMdMNkyRpSZLkjiRJ/s1/70qS5EdJkmzx/496+Jr52LDkOlhAPxe+4x8dgHoPLw2wkddZIwDvOM4TF8j6kmNp8Ek7juf23rLtsbfppfcFCJjAgWUV5+1uxXGst/k/SRCVG0R/iu4zBQyA1Issd7u/Si+ByrBKD11X3fxh1ulvNATd2KAja9NSI4fSVKHd0D5lAa65PnUuUpZYyqZkP3SS8v7p72onQK3mX6a87q24OZFlsI9W9uWWDCrskWgH4oG/Fecbyh94H3BDo9G4JEmS9/nv7z3I7XvM2dn80H0wnmXJe5eVOg7YVUpNYCiPXZNVGsKLCx0i5WJ7fcmrAR/AM1aFMRe7Qddystn19oQJwpRfxgNxByHiUIn/bbJsW3RCT0wbaTGDSQ/aZQ3t5Zlb/bfn8Md8W39TDYV2x8anVsop1fJ5dqlotL1u3ZTIT8Nvx/lGtF9FHnHdHXdyuz/nKtyoR8fxRRRUPKPsPXGGQkCRNdUoVRvEeadFPFTpXrnDYUpEbZqpEtJCC//+jtPSScoXcV1ck/kRbytZx22jz6C0lkDnDcGXP/IyzuQ/qNPC5byBAT+rfQVvPJzNPeg2IwBPkuTxwPOAjxMKJr0AOM1//ipwMwWAPyR7xTlfoE6Js+s/hNuc+qBW86oKgaNe0mWEYbLokpU4IK3hXu5fRCeY6yiZbdXAvQ5XYXmf2UapTrc64FZe7XLNcMb3ZsPfH6/iBFWfC3vcJWACAg9fgwGPHjYqc6HxUO8zEYLDUQ5rbQ9T5+m0TPy0pUIma77TanOpdKfosP1xrSIklvbZ85RbcL/FBFRaXLpeAK43vP+LCDlXpL3XZOfcbLBsShVppFSHjkWEkZb2n0vIX65zKi98iTA30Qqc4ZaPrj6SFdzBMexiNltyI/x/p3+LI5ngc/wZR1095u7XEtKRZXJpA4DGZ7L79jDAzo5OjhnwvZkfibz6fd9w78oqWL7qbrp95reLuZTPPIoylc/UA/808B7Ahmj1NhqN+wEajcb9SZLkTPtAkiSvB14PsHhxUXJ6OvsnXgfrX++KN/gkTGV504twD+QO3K+2icBxRoEbQFCfiKPudbzuWC0bUFO2+2l471PHWi/UVsuxxXHLmGG/iWDMSNnI6qDHiFQXNZe7JK3iM56fhrZZ0YLYLEjXcKOIcpP0t9MVlMg9dt3puikBbYGL310NybHKJmw9rfZjC2lY6qgHd9+VIbANR0WZAKv4XgLB+1YnoV4N0snLwZYe9jKHYw7wGmebXbvojKbrfnDji7js9Lu5bOuHHOBLylrDdaJD8MrN3+HiV/31oWnsIbb9AniSJP8bGGw0GrcnSXLagZ6g0Wh8Hvg8wMqVKxsH3MLHmu3AvYArCb+OAHqEQJHEUrkSDnyVfbAfWE3KwY59LgCy9Ti7OgnyQ6shbg3679FqfsAJ+PBsyQwnAnjeN5QF+hhwtU7AHa+L62HmrbcWe+N2290GAFOKpRbW5+1nN7PYqFQBlTY3gVlWlsKt4TyV7aaM2bMIlFY/jkIaNweXKmcLYTLXljarktICqeb7dEJmQamV1GhNYLbBcbf/Bk6Zna9c6/Ao53VdxZX/9Roa7fA+/pIW6hy1Y8w926M4h6UKLdT5+mfO4wKumnKcl53+ZYY42t2vTUyNRPb3Yj670oCl5BponPtwX+GhsZl44KuBc5MkOQef7yxJkq8DA0mSLPDe9wKCVqCwB2G3cTL7OJI1Hbjxzhbc3V5CmBxcRhhyW0D12ero8PuVgJf6df3AJqicAZPXZIFxElcpRoDYNeqL/kJGY9zRQqbUVwVPF3jpn2iX8jj0eu57eAT21kwADKEijORzEKIvIZsDJOap42o9GVqj5MP7lYtlImim55kNxStbyysUnGcWxGv4aNV7/XwA0KXAKUjzzkxOOOqJcUJx4E7CmyJg78RFyGryWFRJ3S+H8NvKTiV48FYN9Da//imzE7gB7uBJ/EHXlS5YzccjXLLuL0NksSJMtwIj8O3jX8JeKlzwusR1iHLIFzT41sBLeODX7XzlA2+k8XS//G1Jtqj3dnjmn99CiTpXcCGvOPcLwOsO2fU+nLZfAG80Gn8O/DmA98B2RoSqAAAgAElEQVTf1Wg0Xp4kyaXAK4FL/P9/fRjb+dixYcKLDsEDg8BxWrSp4QC+12/bRzZwpZ8U7C3wxaXMlPs7jUCshqo2yltSqhsQ9BSCtdEdftKt1UUzdqm2psykNVWOFRtqr7ZZL3kmFIdyjNic3mp7rErJLNeIpOQiRuVBx6llm9nYBGnnWhpySpvUOn1hBmXgkkn2ZyeLNemZ14vsMZ+lLe/HgZt+4zacyqQbtj5lARDirGarfZcX8+S1v4bv465RvP5KQgqECaAfrlj/Z1MnbL3Ve9tD1K3sVELysR7gOnjOt27l2vPP4Fi28VE+fvAv6DDZQ9GBXwJ8J0mS1+AGci8+OE16bNqp92x0L/V1foF+mSpu0qydbBDMJgK/uphUb5wCqy9KbANJFnaTetWaMARTLUf1Mb10ccxrlAWCFV90t9LqChWUSo5CGLXSBh20ixBUBKFQMi4RVqXqvu++N+yq2o/Sfk9G3K9Sxw40CUaxSarS5F8zsFLJ0UAlBdwYIM2rBg8ea2tZ2V/ZuumSDNYI0kwj9ZS+v7Idd72rCZkk7f3UPZggBG7ZtAVS67wYaIe1vAmAy2Z26YfEruQ8zuE6jpyYoP3GBzj2uRVa6vXUw06VTO04RZXmdZSaQBJXfdYIZkGTE57fgPNhFbcAsPIdG9hJN7uZxzaW+Iqejw47IABvNBo349QmNBqNIcJgprAHa/e44V7jdEjkOYB7gG0So3FCtKUmKJfjQHcYp0SxBQbuJ3jrW/0xX4VLaFWHhSpaC0EG6BM8DVSNhx55+x04L7bc4kPuR4KsbtIoTegPRXgBKt0Erl5ANA4L98A2/0Iu7CKkblURBtWk1MQhrtzZ4IjJ990eihfL5I3Paw8dkGp7lkquw5pn5X0TIWDGUi154N3spZk01XfSz5rTsPxLNVAvQIiilEetbW0HZKMoxXXrXp4Dt5zwNHbSzade/UEaX27SwMNkffRz1C/8FHY/HPWksezIw4b6+4hZhnCeuTqwNhy1tIxIxtPcQqKAR2/CgCISc5ZY8gmC91yL/vbgIhq/6QGnFeeV/xDHCdZwL7IiM2WSmwiErg+yty6Bu9dag6ciIq/VUhiqd6nCDzaqMA2uMdsPV0MF9rEhqCzBvZxWr7QUjp1LeJltulNVv7E27rz+StXpvjt8wQPqwetuFswTB8rUat5rhmkLNT8Y072Z1G844e+lBV99lzetuqRW42/zwDcj6pfDPRzHGBU+++XXAl88eBdyEOyNfI5fDj3F3d8rcI7HIuBqv4F5BjMpEu4nJOFaQnhGCkutAPDDYOfyXVqo814+yakjhGGhht0thFB1cA/tRg9MI2Sr0HgqAnATXspPYsuuaaJrJChRxka8XrpEOuFm6yyKtm1WDk2aa3ATlgoHV6GCNJ931U1elkpQ6ScbMag8HRoKy/uUxypAl4c2FL5Lvlfuc9eWViyKCkqAiXb0QUNKZlWruayEymWia8/zupuZpZfk9ddqvi2tIYXt2LihauMSdzaQSdecB9i2M1Z4/Aq3z6u3fgOWzM6Jy19ykntG/4LQIZ2Ky475WRwdCNlIY33X5zpwFlyy+m3s9mrmRw+T/eCtAPBDaEn/BK/qu4J5HMly7ubUHT4E8rN+g+MJDzOEh3fEURNpubMaMASV5TjO3MoJFaXZTwoKo55CGRv3FegBWkLOjYU9vlMY8WBmPNGu1hA5OIlTjXTgcnTsHvcqkprzhvUwdRA894VLCVGJKsKszIl7cLJJUSrdhMkqye5ECy0mLT0/uiOAbbkKXUug0gMsh8oWqAzCmKcbMiH3VU+beL57bDxEuYr/bmaWC7dUd1pFaCJQLxWNkjqhNhj2T7ltq9uXN642WtooTgsrW4br0PxM5UVLPgXA2ukv4fDamgb33LyI4373G2qtsLvDdfFHdY6FwDMIMkjdm17gFLjy4/+HXcxnHrt5H397OK5gVloB4IfJPnjSp8LwEPP/BAJnLeAcceA9iZPaVdpxw9AqzuuWp6JCDQKBHW65vMNyyU2eVXrdfgv7YGxDyNOdVttpC+BWLoU0s2PjWUrFSgBr+GLH/nsaqGPljjY3iClQkG6TF5DUTuB/zwC6XWRqhzq6DnPSjbj5gJEsFaTiDKPVALS1WvY0lnZRwQdr8uInTUdlvXy7/+6q6xAqVVPGbdyVfQOoKIq25q9ZnK+duJ6O2pHc8Hq46COf4pFie5nDfY/rppUJ9nrR6FE9Y1mlleSTkI4O6YR++lLPu7BgBYAfQmv0tXIxu/nMx97jcmjYbHwlHAJKVQAOvIYdIHSUXFj7wh6yE5x1As3QSQgC6QQ2Bbqg0gplm1cDUhWFzUld9h6QjZSsLPNZBLfCgAdbW6XHmvVO0wWSwu0h8NuKMpwgSMi6CeAlL9YGqUCoCbqRNDQ9zSHiVRm6ZoHuaNWBfnk8ZCzMK22WXm9rkExCpDTZzxuTB+rlFqjt700TddRK6MBlpm4pECb6+qGHwTRA5YV8i6s5fz8nOnx2Er+cuvCLifsfpSPOjExWw7vX/T2snp0U0eG0pNE4dDdl5cqVjQ0bNux/w0exJZ+BRkcCNxIkgzaftrwODyj33ZstNXbsGYTq8nrI15F669uGgt57FNJcUj2q4K4OopsAeh5gR0e9EsNOftZ8QIom37yNjYRKNfPasqlaf1MN7bUdgSTRJUzxZCVo2gPD630JMKkrRL0M44BcksOSk0Hqdmkis1zyXrbpXHq9NntgKKhnhg01USIkDJNqZmAoHDOeEI0nSffHl0t3XjH3breoHHVkSwnCbTtpa2tuKoJTUbPedt7qIrtexxcAHlYAv5SL6WaIE7mTOb7bfzL3HLTjX8CXmc8u1m56J4zAB1Z/iAmOBOAyPnjQzvNItCRJbm80Givj5YUHfojtaRffAn8DrDM0hSYZITORM2aCF8r4SEaFySv6zi9TuLsoDlvTYAgYGoGOEcNNe4rAgl2t5lQqmuic12ZyWNtc2n69LXqs/zHNYvGtQogAHRh01Ea5hNP+dnoNuDxwzaKqfFsN5237dnSZ6kFpjcicqj5x9Z2ZaMP352XnAbvdd3+gPqUgMYCSd4nvh6BEgTCpWcJx4D7179G3u9734lOU5enQeuBHP3AfO49YeFCO9QYu51i2Od67E37JE9NMioXlWwHgh9hWsgGud58rvTA5RJBJqcxZKWT1s1n/SlaxMBSSJw2PZDP8xSY8GbXrfa4Scevat4P9mOcoU2VHHwxvzSa+qhBA0C5vltskNR+4MbkJyhNkhxFa70cHlXbv3e8gqDpaHdVj87YMmk7QLpfnLY7aAnKX0RlnJi/NNqWSUb6Q/QxNgn8MpZKaJpVHcTdfGQbV0SjfiX1TowhYgLns5mes4m5ey0UHUUb4I57JPPZw6lUb6TnvT+hlkCfWf8W+liPTbZKfEsLYH4ItYgeL7x+k1g6lxzVyMp8UFltBoRxq+5sEPuGSPckWdrsX3uaJruGoEzmjJbIAMTYecG1eWzb4xE4oziE72ZgnCxSoW5o1tpLZNs5FIrphd9V7vL5Ntq0QqApZnCBL4N5lKJmKlR2KXtExasBdpJ75WH8ozGxFHfqeTrC2hTbZe5qesz10jrVaPm2iiVErvczz3HW9mQ5CAU0lwo+rYs3g0tHa4tMK4NJFrPDbtfnrB+67tpu7fameIY7m/FRk/eDtPK7kI3yYOexlyeX3u5HfMI7eaoH73tPNJ3g///DTdxwUAC+suRUUyiyw2ziZUyeAt8K8TwTQFQDYNKvSUgssy2bYXioFACmXsp0BeG+9SRt0fAvk2jYG+zyTplttSXOQGNVGialabG1rAc2CK8CxXlEzNuQ8ewiSwRqwUMqNcYIXKjkiIZDIYnx8jTq37Ux0LammuxdqNoNhlMyrXAp5U1L6Jj5fDnCLBx/rjyZGlQ7BJjBRrpM8eaPotp5wYQvfMsTCZbdy08V/lG52Iv/Jprv/kCO6qzzwJUfwN96fc7xp7MlX/drle7nRtOdVbt0+jqSbIT709A9QqLIPjxUAfqhN/HEXKR2xLad4AQSw7ep0gJHm8p7mV7MpXCGfsij7U0+azxWCx2736WoLANrstNPlCpmyzFupFAAtj5ce63dAWm4xnY0H78mJiCqqh4RWM7HJWpjQFChn9jXcvkLvIeRmsR78g7WMwkXl13bgaKIaIRDL5gER9WIDvDRs6gdaXdrUGi1wSwJrfvag23ceVzKP3a6z3ESQehqO7Rae+ahKDPVItALAD6Gd+r6NcI3/omAN4Fjlge6DMRUDqEKv50fvu9dREj0+CMWmlB0dduvGxp2jZIsuVPzfGN6Lh9wpoRLQ2w6VZwGb4L7t2ao2Mc1QaQtURa5SoxZ5vPZzDsimIDkCtPgAJZ9FsdIJlaWkRREmfR6UuOqOtZg+AZ8oa5VbOLwuG0Gp/6NV7013hPwukFW2SBcvusXqxXUvNNLo6Aj5WWq1sG2lNfLcW4ABT9tsxhWfEGXSjhtt+Go9KUcuE6COAtvh5D/dDC93+9zCs3jzkz7LBK18/43Pj3aY3n7K05nPLhrnQLIOR520Oqrm8f+wE4AzTrmWV87oaIU9XFYA+KG0SxqwIXHezA5Cfoc20mT+leUwucW/3J4aWOjrWI5WPfWgqD8FiPjDL2uHLUbCJ+9ac3KxQsJOYO6uwrzrfKCQ2U6TfJD1RptZpTU7MSgw12nHak5BktIR/phlmx9kOHi75VYcsPs84+VS4PzB5P1uzx5DMkdRJeUWGL097KNOadRQJVo3sC546PqP7yQrrcDpoSOsWKnfRk//+Ou3ybVKcYcobbeWl8yoYoCpE5VtBK5c+eFtXnGrFV/rPh+1aIznL/k+/fRBF1zFBczU+sXndDWgJ3HPZwssPG2IxqsS3vWqj7GRk2d8vMIeHisA/HBYG+5FlBZ7CW6Crtv9lWvQZVKKpjpsQiCKnQC06pJl7a7mpTWpLeQhSgd9n18/j+Cpz2GqydvMk+spKyE4qif1VFsC16zOIMUqr6ap1Ty/LCATxz0SOOZ5uG1THXqnqxk5bFIOWI31gViGnrHLS0Yp0gol31lW2jz4Kop0BpbbNls0w4K5flN77JL5U3pVlVyzvJaNXpT9Ap655Ces52nsYv7MGpxj3/vIczl74oeU6g/QuhxYD72vGnSSv8IOqxUqlENsV3Iex7KNOezl5Ps3u8Rx34UxH6Tym2oWVKxCZNkyJ9kDr2QY9lLDekjItMV7ZbsJnreVCWpSdDhnXSb6EuPZCnBsEMmIS9SknOHgQ9CtVM+AiaVOrNdbw3n8qSyx1SeokiKjDYa3B/4/vS9meyvlSzsZr5tOiw6THX0obYDNYRKvAyivBDY7qqpDqQ9eSqhAL0qjFccVD4bfJLb0mLqf9oLsMEXtVy4QFUW2+1levE4I0Oohzcy/7qxT+ClPZz2r+CVP4C7+cGqjZmJrE/iwP+45OM268tecVURHHgorVCizxPrpo8Je5rGbRiskzwKWQeU2GF4L3cZjzYS4+19K6hMmnOxwshYiCEdH8/lfcMulcplj1i9sg23jgTNXhyFQLJecEgRM0IynFlSlJ52MNDxvnLrVcuWxV64JyHLJX3N/li/uWky2Zmc17F9WrhTcPl1KM+C3rajKjgmfTwOIdG+iAKAOpSWANGCq3IIDR1XZEUBrO5WXqzkteqWWDcSqiMvWpKUmKS1VojYJvNtwXvcIjnKzubHtJKrSI7ThgHW5O9ZGVnA3T+KnPJ37714CT+LB2UUNuNGVM/vv5/8B/Szg5VzJAEWR8sNtBYAfYns3n0k//13XG3hrz+fTElkCR/0v+9SnmszMWC1oruXt1Wppwr406tGaneAEB+QdHWTAQJLFjh6myNjE7U7Wg7dejsBPgTsVgJwozmYRjJlLq4XOolbz3Lbyvei8VX/c9sCXT2rSbzFpfpR0AtbMFZSV9KvmOoByNfKYVQ2mRFqHslQiBN3YMmddBJ22p3h030p5VIgq1Ech8ZDzvUaIuLWmAh/apgSc7Y49cbZb3Pb1Bo3Xm30eLHjL/tl52k/2fwPTblzYobICwA+jPZub2X58D4u3DEKXq3LOZR78eqFyK+5l34jLAzLs8nSA8yLFDuwdD171KMHTlixwL1N/aIH5fYNZIcNC5UwRYLZCh/fAaXXHHR4M3r81Gw2qwKR44lSTipM53jgE8LafJz1tVGmF8mJgFSF5VzV4071DhIRg7biAF09NVKpQkVxzFDff0EqawbFjhJDZUSXQ9NflQX+R/26TTV3vlDFWFlj2k87KzaJrKamtkv9Z2sRy5X7CVuHy7gBkve7FOG+7D+58xxMAlyxKh8mAd2GPWisA/DDaHazgaIZYvOwGB0Z9QCe8dtVneSFX87zv3OA23I6rTrInaMJjT9bmPpF8UCBtPW+7bBLYBpzmudWxqgdIFZTwFMDAUJgIFSCVS1PB11Z4F6haGsVqte36vKCXyejzGFAeh657CYUhlvh7plwpEzhAFt0i79t76ikFMWy26cFx11XgNr9ewUF1QsrfEmlRjEzNyprj7FMqRxkWce3r0Gfto+IUqmdpKKC0vbqeOtkJTalsFgEnA8fD3531eoY4GoCTKOyxZgWAH0Z7Jd92H44HPh2Wz+evuInTeF7phgBMpmoOeL6X4IVbZw6yk5/kLF+4GLZsh4WQqj8y8jYvj5MCZjSa6MvTf9tq8s34b8jK+MpN6JVmlYAyNoID8Jr5k5et808QALxu9tO5bGFdAakt69ZG4K4zgnbzfyJarwlFdRSa6LRgbOkSedxertjU6xaF9GbShFdv5XIKe+xaAeCz0FrZRx/98Frgm2S4aIWod3U6b7iSk4GwixAtaFUeHWfB6PUeKBdB76DP7y11w4g5yDgw19EpXSPAsANxnStODCXlhhQdFpgnffKrri6y2uea46+lyqiII27zKhuftCvj8aqTEb0h4Jb3q2o/ugaBqy0sPEQavbm7GuYcUjXPUkBFn8UxtxKqHMl7huCtmzzuk36b2ojP5dLtz6/iDZ6CmRS/j99mhzmf2qxOoQ034ljpz/W4Qv1R2AwAPEmSNuAWgl9yVaPR+HCSJCuAzxHUu29qNBoPPna3sKl2A24STcmL/ITaZM3lPykRZIF6zyv+8/A4maRTY+MwfI3hvte5/2VgdJOftBQIlRyw7h4M5yuXXLSmzKpN0krvJleIJgU7unAV6W2Nx1L4X15CKEIhCqFGdmghpYcN9onrSsoEkgJaAXwbwcOuhzSzmZwk6nS6CJy02mZpDR1T7dC2Xs6nkUg6ohiJ2urPUxsP92xgMMxj9C4meN/abwVwItzzhsezlWN5DoUVNjMPfAI4vdFo7EmSpAzcmiTJD4CPAh9pNBo/SJLkHOCvgdMevqY+dqyPfroZcp7aIKkHWl4GtQ3ZHCaxlFi5UOKMgdbsNik/PuLLrrV4wMVpwFXNB4zGmmx0pqiX3YYiyICjpQssL62ep2T+amR7JHm/EFIItETLtZ01ecmiJuSNk5U7yvOW9w0471sc+KA5lj2HvPwuMgFI4No1WTXXL8CPrtMqX5qKc3SMKjAAOzmaXRzVbOvCHmO2XwBvuEgfCaf0zjf8nwQMKuZV2EOwpH+C5/Zdy25ewk+uPwvWkyYpYgIYCAyHzW/S4TlmCwI2ojINi8dPMNp1eKleH5RP8Acdh7JXnpRFFZic27RBh/dKx+4iBdIuW4gAwiSheGkbiOKrtjNKiDgaNOexVdq1fj2u3qVRqUzJ6ofTwwuY03Xmu42OtNukIC7apuaKI6eh/kaSmPLRom70WZO0cX1PdUqSOtahQ9px/AhokCznresHNyIZhlP/bCOn/uMdFFYYzJADT5KkBbgdOA5Y22g01idJ8jbgh0mSXAYcAeRmBE6S5PXA6wEWLy6E//uzk/GV6t9F4HjFB9eDvjuOnCwRcA7yJwEt/Vwy23QtwYHrIA5QlKbUepWyTgIPXYeKJt4gBJ+04OgeAbhtQDvZ4BXM92UEmqLFt0dFLjxvPWoUOHFeFo0A4vwtscUFi7VdqnFfjIu09JPG8+yNI+jOwejRrY7c1vKU9FDFpuNRSY3ww7WbZTLlC++DIm6msNhmBOCNRqMOrEiSZD5wdZIkJ+BA+e2NRuOfkyT5E+BLwJk5+34e+Dy4UPqD1vJHoTX6Wnki53EaN7kX177IKkDA1IyCsc461mfvJT/HSQVPf3STBRZprAWcWicu1yow8sz2ElEATlqQedCcKw+4Sjjw9pOSCtGfLhAo5rNnUj4ttrLoFs91T0ne1ez8OR0FMLWivLjtmk+OpY4K3O8QWy/uHr4fqsuOALK3s7DHth2QCqXRaOxKkuRm4I+BVwJv9au+CwexjtNj2H7JSZzNNn506zN4zttudQBwTQgWsSNyG2qf4oqG8P7rJNDbFrIWWnlhuQQdLyZMEoIDF69AYRxHcQicrAxOYBPzwtpfbRk06zsJwSmiMaqEvCKdOM27ZHfjPj2AvyarIU9zdOflHOkMHLQF/FgZEy/rECG4npQDnxKRGk1+pkoSi6p1sty17fBqTm8PJo/MRAj0sVZWqb2zoNEH7a0Pokcq7FFtM1GhPA6Y9OBdwXnZn8SxhM8CbgZOJ9VIFPZQ7d+HX0ByI+7ufhOn1uh04Luw0yVWGjDywTyn0DrBHT6/9X2D/nu7KVU2iAPNfoLnLX5aFes1edhG0FBLX+05cyAAvDhuyILfFtf2mLuWZbzmnGAlm8AqD7jTHN2e9imVfA4SrzpJeekqVHr8NUrtouvF8fopX14zlI3mEkQT6VprMDlISGfbbu5JyZ1vtBrUOhXP81d0f3D7Tk5EHc6pbl++D8lWeOYbfgTATwoNSmHeZuKBLwC+6nnwI4DvNBqNf0uSZBfwd0mS6BUugncPkiWbcYB6q19wCi5aEFxq1ZYQSWkLBaf5ScyvWhKY1oLXPTbhAQwcIGuSUZ6jdNaQfUIsTWAkhylNoMK8Mk1rS4GRVx7MmAXluM6k9aan875nYmPjPqze0kHj2e/qDCyg1gzYztg8VaIRUEe770jUmZigonJUezPNg74Czn3Ddw7gpIU9VmwmKpQ7YWrm9kajcSsOWgo72KbkSIuBzcAv/PJluKIPE3BsFdgOA1sClZL+rwXNdqUX1wXj8n1UluMmxNQhKHcIhPwgJdIKLJlQ7+MJyZWUH6WGy9Miz3NH0I1PGu/VJtzSfxtAE1slnug01mwSMnffpcCIn2w0mQmpTh0FlH078kL7M6ZsgJYqIZu6dl57tq0qDFFSJyH9eAchCrTmC0QAYwMwug46jgf64GmsNzm9Cw+8MGcHxIEXdmisetYRtK94wFUn30pQcohfnsBxo63Q203qQY/uMDmnJcczEYiVlxIAuIsAHJZOkapE+00AZ/h9qmZ/KVSqgdOdNADWDPyaUSeQBfm87fLyi+d54xUMX+5Ls41F/HKs/bYJtmzbreefdgwl0qr1Y9UQfZpW8TG0TaXV/xbdhBFJiTA3cDwukyCECd2roXK6j0xdCbe85mnczkp2u/IWhRWWWgHgs9DaW+swnKR5r22OkYyqoU6Q7tU8taLhvc14B1ntdR4FYKMLrRZZ25ZwkaFRIifq2SjMB2OxB76/sm0z3aZW8zr2ev55tCyPLpmJTeHoLS9ez1JZVE3BCY1sSmRlm+042eEG3MhBk5iFFdbECgCfhXYc/8099wLLfZ4Q5a8eJguuXbgJyCVufaVE4LO7/X49ZBUSyt6nlKitBKlgD0x6aqVW8/RLF3AtDgSH3SRkM0sLS5j82nkBNLurUz3nZl63zK7PU5NY04QhZD3v2NPXMkWYpp621DJE1ed1H/c4EC6rGpCCmvK29Zrw0X5/fBWdOMuv/3iOsnZ19usa/1dYYbEVAD5bTdXpO4FTcXTFMC6TvnJFQ+CtF+OAXMCxmKx+WxzwXQTPXNuqys3WrFc52g/0B5BTWL0KKkMA6Ipya9egoyVEQ5ZK2ZJn1sotM/fcm4H7/sA8rRRfDzLBSsnJDDMetKFSAOcJt0HlXh2IrPRRn83IJaVYRGvVnPyz3OkSiV36r28B4D2/ckU9Gk+Y7ooLK2z/VgD4LLOLuZSf1z/oviiKT0Bjw7mrOABuIcj8BNriuJV4qd0cR0mebKY77+GXgfKI87LjCEY7+QhT149NQHkwuyzj6cYThjmBL9ZD3h8wgwNMTZQ2A++yL59WgTB6ac/mgZlCTYnvV+cSd3gjhLJtthPQBHA/DsTbPYXTTUhIBsx9/E7/6ej8CyussBlaAeCzzI5kgo7b9jmw6PULlXtDqUk1gWiV94txKhUBjbILglOMbCeExW/HdQQn+G2H/f6LgBuhNuj5dA+iFRM6L2VKWly5051nsj7VwwYvWfSf5d2WDFhmCj7Up35O623WswCfBt004a2VwpYu3D1bhMupCdnoT59/e3Io8vIV+i6zwTqebqIbNyLS/IIH6cnPucRjnIj7DbrhCx95BfPYzRu5gnfnhcUWVtiDsALAZ5ldtvZDzoNrw00alggFCOUVmqhAIID2dWQ9RemvR3CFbt9LACKp93fgOgJ5ilt9bpTt/hiSGfr6nGV/3ErORGgzT3nMthkyVXgqbVPzm0znnaefReF4/rpUy9Ix6fY7cB2UnXxVjnBIFThlmxYWQl5xWyXHyzlHq77M3CBh/qANd88UmTnhv78T6IFv8DJ2M483Tr20wgp70FYA+GyzfoKnuwyn15YmG5zXLJ14XFjAZMPLFDBY7pY3FkG95P5aalDvhGuWPJ/6mhZaqNPLAGs2/CxoxCFURa87egXIzREy09wjlVYykYyTEbDHFkv64mUaGShAKbZJKVEg+7TrGKKhpAYB11GqUzNh8Jl8LOOh/WXpwXNGA3+15p3sYR6rWM8lfHjqBoUV9hAscdliD42tXLmysWHDhv1v+Fi21yUOSN5IyiWd25sAACAASURBVM3ecdxyADawkgtHv0ZpBBfg0wn3repmDnsBOOrksWwIO0AJfvv/nJv5Mf6CX/JEAP6D5zVtwgV8meXczQdv/JQL5YcwgSpvWmqXnBzb0DxjYLnFhPHjwt4n62GCFKbSJel+i935xgaMIsXot+35U4qlbjThtvCCRimWFukynwXQmzx/r4rzWu8nKTPyTN2TpbiOdjVO9XNWkcPtYbdbEtatOYUW6sxjNwBDdHMidzFvdIydHZ3sYj7f5nxOxqXjPZcfHs4WH5AlSXJ7o9FYGS8vPPDZZl+Y+rIrDPYC7qC3Y4CejkFWtW8k6Wq4mpayO6AxnJB46dxEN7ReA9/nXOaxmzs5cUZ5NK7k1SSfgeddfB0ns9lJDsdxXuk6nIfqK6/T76rPw/496NT7bvMKF2PxvhUTaj5Zd+A8tiVQLALrWi149GVbhk0dWTuU7UglPSEhZW1M2QyRqnvKcY5zrbff90SdyjIciJ8Nv19QKcovzNS+lDj1VQ34RoPk/fD+T/wFi9jBXubwDtYCMLE34chxSNbCmR/6N/5j3f8GYPVVt7uOswRvOO7TvJvLmD885t4H36F/eOsnoQRrF70G3pKkI9U7L3sCJ/3iV9AKO5fMZQMr6acPgFdzZW5z/5MT+cPb3XD13FNcqoNrePHDdHPyrQDwR5Ddzckgr6Erf5uhrrlU2vdSqj/AzjndcD68jn8C4PwDOFfjYndGTg/LruQ8LvjDf3Zfqm4is9I6s6Ca6SyP8wagzUV3akJVcsVyN1R8p5GZOFW1C5td0c4TEH2um/8tBJrKJquSl91qtreBVUbBkiptFrm/3y7oZIijCwA/QPvvb/wB+3gScPf0G9pc9d/EddLXAlW4vP62kGfma3DM10c4ZutImmHzovEvTc1L/2DtLg5bUpGCQinsgOwL/Cnz2M2pyb9QBuZFL4GlTuJIRXnPmrjU9l0ecIdHjJful43GOvQ2HECqXmfVA6cAtw1HWwjYNX/Qhhs5iO/W/iMGeFf5/0oXAK5TUFUgAYbJq6LJ3VrNh9ADPxp4Br/mOADeyBX5N7KwrJ2WwCtwE/HvhztPeQJ3sIKj2MUC+hljDmtO/pnL0PkB3O/7Kdwk9RDud9a8j54HO1lt5zy0zQLz2cZPrID/XvMHDNHNBhxrIe8fgP9KYAtUn38E7ZseCOmQ3/DwYWkzCqUA8MIOzHoTxqrZCUsbYQnZ8H/roZcVBWonB41NToT95FkrZ3Zae7MLlztEAU0qMnEKIbrUAvooDtBX4LLWg3txpZmXdy3lSA03v3ALIUNhJ3A63PlpF3nzT7yCHSxiHnv44sveHM7ps+NvPWUBS4oKg1zC23kJ32bJPfenv9e6NaewkRV8i5fwk5ed5e77chxw16B2HZQ+6bblrVDtOoL2Dz8QfruzcL+PVEKx2RGTOlw7wdxNAHo7/4H53AH0wt9d8nrqfuU7rvoH9zz04wLrthDoHnXm/3roAbygUAo7MJvrIxmnCamXzWt3dEem5Fgr2YLGxksqG29eCakqGIpGibZ6CBTSCPsfCgvMF+Fevi4CgOuYKoNWw/HXKmihyc1nwQ991qkfcja/Hj2Ol3V8Y/83obCZmZ/TKH3KLHsvtI8/EHLV6/eZLmeNANwqkiyAq8Pvifapm88+E+hbt37eOQVRIjR+iIvRsIVLDpMVHnhhB2Z/nbiH/XOkD/aoecDTfCKiQvr8CoG4wFT5RjRhCCF6VBkXFbBkAboDWApr/+k1ALx79FIA9nbMjGm+hLdzGjfTzwLqlLiLE/koH5+y3TWczZHs48zRm9ndUeEuTmSCI3kOP5nReR4NdhNPZwH9HL/pf5y0VN7mVjJ5zKXKmfgKtP4Y6IcfveYZHM0QJ9+z2XHEvsP/xWv+F7/mOJ73vhucF9uKC3i6wZzYqoVqBHWPtWbet9pknxnRKba9Sj8BoWOw6RIUSNdCCKiTfNRP3hNFHvPvBYVS2Cy3s7kGgGdzE+/r/TT3DQYePOa8K61eTbLML6jigNvK9WyirXbcSyFgr+E4zi6/7aeBPrhwyT+ylwrf5pUH+eoemzZn9Pes6ljPTbc8F/4CWAK/vaKTeRO7aR/0HK+NDdhOtuBHOwFklT/eesACVo2kNNqxIKx5DetlWxCOvW/tayex62RBWsFZGmk1i1MwWv+Mt17HOQxzyVZg0hxJrG76VUGhFDbLbf2+p9F65D6OZicshoW+uMGYmZSEbLRlauKarSduc44s9n81nMcmOaC8+PWw8x1z2cEi9uaWaS7sYNkxF44EIJbXaX8zTzOkXim438qCqEDT0mUCb5lNEAZTk6zJlLtHx9KxVVzDHk8qojYCiA8zPYhvJ2TqNCmI08+DOEdkwrfLjhIPI4oWAF7YAdmuI4/xn14Nz3qNG0qvh0q/U4RoQrMiXhnccHMpbvJwIyHSFEJxCkjVHtWXHsHLW6/k6u+/FNbBjy55BruZx8+8TGS6IKTC9m9zRn/P3i1dabqE57/wK6ziZwyf4b53DeJGSnZEZekFccZbCaBHtL32iQEz5pM7SPPZZ/aD7MSy5kqs5FTHtp66TRURz3Fon5Zof1l/tExzNZKlKvdQk0n4w2EFgBf2oG3tZa+hwhivPukb0AIdi4C6k/5VIBuevgf3wuuFFLe4BNb+o+OzL+Vd7KOVF3I1PQxwz/Mfz3FLfpPyzi86pFf36LEL+RzP5CdcOPwNkiq8adHH4Hs4r7Idvr3+VQ7MVxPAOaY9IAC1NPPyRiELasqOaUHO8swyn7FxCmBbfTcEr1ydiM3QqfZa3b5Vn2iZBfk482ReSmN7PKWugGyxanuMgcMTbXvEYTlrYY8Ku4gvUqclvETLgUXQ0UV4ASwfqjzayqzYAXTBRf/3S+xmHv/zpuO5/01LWMs7uJy3chw74IQiDP1g22Vf/5ADpRFcp6oi2va3sikCYhMYitawvHMJ11nv8cu0foIsvQKhSMkIIXmatRpTO5KYW1c74va1k28xDSQKyEcIp3M0nbl7h+3yAsMOg+13EjNJkjacKlbTAVc1Go0P+3VvAd6Muw3XNhqN90x3rGIS81FqP0icimA7Tne9GfdEdBI8J1vpvhPHny6Hxhtgd+eRAHS0PIS6bIVl7Dj+mx4G+Rbns55VPJubOPqqPe532UD4reStSjIJ2Um/vCjZPPCywGw/xzRFjaz+Wpz1kFkf7ysaRCZeWoFZduIxDuTRMW10LbhrHzD7qLOKrydWr8TXqP/3PbyOxkOZxJwATm80GnuSJCkDtyZJ8gPcKPkFwEmNRmMiSZKeaY9S2KPXntuAoSQESTwf+CjupVTxA/2VgJW4l2URvKDrO/zeV1t/7Aj0Hl5bxS2cxl0czU4WXzXI4pHvu7mHu2g+6VYyywV01vsWT20B1nq5mpyOjx/noImBdZxsUI49pvadINAyEMDb1mu1lge+dkJWOnA5GDYBXAzgdgTQiuP8h8hXwRwG2y+AN5yLrgGRCpk0gD8DLmk0GhN+u1gVWdhjyV7egMsT90Rtx71w8Quh3NntwLOguuoIbtn3TEZ2eg1335SjFvYg7YuXv9nRI/0ECkPgaDluWV6ul+k+QwiKKeWsaxZwYytK5XnvduJSOm1F2KpjaTffLfjGqhVx9bZt2wnzMirsoVzuEGISSkwF51h1Yid2D5PNiL1JkqQFuB04DljbaDTWJ0nyBOCZSZJ8HHep72o0Gv+Zs+/rgdcDLF68OF5d2KPJfC6IL/CnnPOR6wBY+OEhuJ6pE1M/hvrqEltblrKhT5mACh98praSdXQzxG7m8VOenVn3RH7pQG8L2Qk9gZnAU5PJshjsIOuVx3nP62Z9XlRirOiwZj1teeQaocWecw9ZoKySD5xqm01KZs9dxwG02twdds3cD3VI6qAss6dOotn8wCG2AwrkSZJkPnA18BbgW8CNuAwQfwh8G1jamOaABQf+2LK/4AN8dOsnHJDU4cvPfRnncC3HrB8JXtDlBM/74mLCckb2mYTXXvxZjmYnOzmaL915ES876ctcef9rHMC8l+B1C8At2FgKIwYhC9D6XjLLpYG262zxkGbTGBYYrc7aJiGLuWvbNk18W8lhlSw4xyONHnNMW37Qhs3b/2q/Ojvx8jZthJ7b2Pu+dvZy4Kk1Go1dSZLcDPwx8Bvgex6wf5YkyQO4Kq2/OwjtLexRaK9e+41s+LzolI5pdyssx7749Tdz08v/iL3M4UtclF1ppX0WXDX8twEtMZBitreg3WwiTxOESoEg0/c8RYiAfIKpoGzbpElUq8VuMccTnx1PvooW6SSU0rPUja5VvuQJ5ty6hiGywUWia+x9aDbJewhtvwCeJMnjgEkP3hXgTOCTOF78dOBmT6ccCexsfqTCHhP2pMQ9/CfCmf/xNKc1lkRNiYGGSF+sr17xJ+xgEQAfPBztnYX2Lv6KVfyMOexlPrvY68tCjzGHFuo8715gBHoYdOv+HuZ/YVc2zW0e4EKIhoz552Zqk5jHtiX88s6RF+moggoC0bhDqQL34mSoEDp0myI2z55ANhIUsp48OI+5n5C+QfdHwWSSN+raYu/cqqh0P2IZ4cPsfU9nM/HAFwBf9Tz4EcB3Go3GvyVJciTw5SRJNgH7gFdOR58U9hgxacLHYc0zfpY/pFa9T2AJ2w5Z02arXcuZHMs2nnzLrwF44ppXcCxbmcMYc9ibpg3Y5dU6qhb05Mt/DZuh0Z44oe8VZKWBFvzEe1ugzlOktBPAOZ7EiwHbUhlKTqbi2BA0/xBUH5HaZfPfOTVfB1DZAstfao7bxdRz2WuwE5V5pn36CJ3WiWZftUmh9gOEFA66B1WzXtfR5/+GeUSoUO4kVPWyy/cBL384GlXYI9jkwWgiyg6tLU/qOck1t/yMp6/4mfvS8e1D1MjZba9739cC+HQTogtX4gDxXoKUThTBRtx9tZWa6kyNOoSs2iTmgeWh27wjsVzPqjtshGS7aY/AVfprO2HoNW0//wpM4nBzIU7eljlP7Knb9lvVjLVmHZSqNXUROpUunFpKWvQlft0Xo2uV7FDXaWmnZgFDh8gOYwxRYY8mezuXcBFrOW7cF3SYbmMbvjwCJQ1rNyaw5rE1iLuDJ9FDC330B/CzNTetBz2Ic1XVKeZ5f4NMTRBlj5M3QallNvrQgnYsCZRE1KpQxIP3mGU2sZQ9j8lEeA/OkV1m5XuymNbJC6SJLeb0BeI2UEnHWmq+34aj+F6M865HyGrbY9rJ8vKH0QoAL+yg2JO4m0V7fwOdvjBD3pOlpPyWVvkmzntcBCyGH/FMzrr3Fm5cuppn89OHv+HG/oaL6KOf8+//F+5Y4AjZk/dXl/Eh2nx2seR197voVQHuKEwOhcLNAB3tuMm2xX67EbJ5su0oR1yzpTXkWUvxIxCtmfVxkE672d6mkz3e728FZT2EzH+6DksxqK0lHFDW4NgSPNVXOxpzqlMqok1sJx91+GCuUale85Ql8phbCWC7Hbjc5bDvUJrjVtjir2XZGbiybbGHH3Px8fUfJisAvLCHbOfwPa77+tfwqcLdw65UsDZ4JO9p24ID8BrwTnhO/63c+PLVAHyLF3ITp3G5apU9Ciy5t8Erln6Rd3GZA+/1Pv7N3p9FUO6BstIRQHOwzvNEx81/G7RTw3n5SiIFjloQGMpbVtRiD6FogTrfceAXBA9c59+KA71TyXrdMttOX5O0a7E/bjdUnoHroLpxIG0nY+1EqyYRa+QXsdZ9kX0PJjdB+VRgD2xe5/qVUWD4Lkfh1IBjgTFg8P1u91V9wPv9MSbMuWXbmRXoOQuaUNijwvoJL5QNxpAnB9kEQu1MHSJfD3TBs9v+H9897/kPuUlv5xKezU3MYzcA9/hCw6/jnzLbfY4L6WGAPlrpZQC2w4IFB7+mpSuGEV2X6ipaa0YPtJONOIx54bw0qbrfKk4AwRuHrDpDNMF2gtJCv1mcQtVGKkozrZqlNmGUbYNsESGFsOwEc0xbPEHnaCbXi3l+mbZfihs93OW+3ocD7TG/uuybttmfbtT/P2kEKjfivHGdR8f8hf8/CwJ5CgAv7CHbJfw5XAdjG6AiXlGpRrcQQMImJNJQWKAEzhP3IPPs824K2657GxMnwzVznk+dFr7NS2ihzhP5JfPZRTdD9NHP2cM3A1AvwUBHN3N4ExX2UvGv6xz2AjBab2Vvi5PmHXP1CPNe+H+Ywxgvet4P3PlOhGMGXQOTTmiseWj357ucSx/9PInzeObSW7iAb7Dk6vvd/bmeEAFoOWKZAKyPLDUCYXJT+8STbLFZ6irWUHeY75IjCsh1LlER9/plyvF+IgHMRgkTlp2EwtNDhIlW0Runk530th1TyWwnq+HcZ68qGV4LXV3An5Ct8mQnT1dBeYVf/xU4s90dY9uQa+ryTih3wnA//LwGP8eFm/9HFVZfA11nkZ2EHSTb+bzj8M7ZFABe2EO2k3p/xVgVKqrQYr3vTsLwv04An0EC4HSa/QA2wdEv2AMlOP/F/4KXiQOwgjvYwSJaqHMydzCfXSygn2N2jLjK5VUo1WBhzxAf/8XHXJZE71meumwjvAJGzzoy0/4LTvtnBwxWI9wJyQWTsA3u5IncwQq2sYQ6LXx00ydSj2zdCS4NwAV8nf/pd292o6+VrZ48XnLh/Tz7irkc/bs9rP707e74P8Zpnm1JLgu6cQi41sdqHgv0cfkx7R8Huthz2X1GCcEr1lsWGOrcIzgALeGkoFJ1aJ9Wpo4g9Bsv9+tuMO2KuWv72QK4HxCt9zTdsD91eRCeOmSudcS3Z7Fp8xZ/DSfiPOo+R5kMvNEX3V7kOoIz2+DMIeC1bvtRRbTWCblSpLQZIlsY+TBZAeCFPWg7kf/kUt7DH9cJ5dOsesJGxglUpEywQRp6EUb88n6CZ3mX+9xah5PX3EHNoNqdnMga5U95L6EAskKndQyBxDDwHej43j46+vaFC4mH+OPAHpicX+aeNf+LfQ9xrJy22b5t4v1l6swgC6wWzGxZMbuf1jUzWxcS3G/R1nzzzLFl0ocP4XjuLkLRX3nPOk9M6ygyUr/zDWQ11rbzahY8tIkUkO/C0SDg1U4CWc0jWK/+XoJDoeyD/h72ftFvZ2kpk2mw4zKz3kaHyimZBen7CgAv7CFZH/2M+RerbCu22GQ/Aoth3FC9hvPe4jBtBUt0Eryn75K+PMfxG2iB40t/7xbE8jAbZWhBWf+3EHJiLDBti4ON+oEdULoOjl/+P9AO847bzWJ2ODC+MVznyqXOqz55zkaO6tvllr/sj1jyKb/NJjjmtBGn4b7NLxPdobkCyJYBy5Pu9Zj7ZRUdnWQByO5jgdHK4J5h9lGbluJogk6CtylwrZL1suWFV3GabhWiXoLzfBXhqG3V6dyAm+xUTrsus51NhqVO2IDtFk/b3IOjOE5bietI7ASnOqlu37Yuc51SnIgiqptz22CgbkK6B623ybREJU3JSnJ4rKhKX9iDsmfyI37ygbNc0EPda7/tkNIGeYgekbbW8pvtZDPm6SW04c0WoGX7KzQQe3FxcQDLy4/484ya7SWLs8fWOW2JLcnsOs16W9lmgHCdAtm8qMjYlYr3sfdLNFQPrkOSh2k5dG1vNdnyJDvNMl3jZv+/jexoSXncBbBLCWBpOwUVBbZcvdpUIs1HPrkJyu/E0UgrTJt0/PU4ykyAi7++78J9Q7AXeHw7VM4mSAQlndS1qNOIc7iIVukm23nkubFxQYs4wZbO9apDg59FVfrCDr5tgdFRV0KtHIOdJtjiSLXY281TXNgXJ+8JnU6lAVML58b8cpx3vJVsxaAJQlCNzAKuLUAgrt/mxraKjZLZJ+aiIQuyMQ8cX6fd1kZcKmlUHGiS14lJUQL5neA42SAepT3Y7P/LK4+TOymQJ07wpHZsBiZ8J98PnEuIKDUjpMntUK4SfiP9pqfDwni00oLTgds2t5KVT1qz0j97//IChuwoQvdznBB6P0usAPDCHpRdxD/ADhgehw7r+dmq4BDSc0J4GS21YTldBYFYwLWZCmNvFLJAb1UMmG31wvUQJuTUhvujbe3+zbx40Qc2lB2cZ2ertMdmr1ueoz1X3n7inmUtOCCyWfUEpNbDF5Wgc9p2xp5nO1mwWkq2Yk0fTuYX0zO2k7Gh5qVoO3AcdgturmIzsAF+/jU36NkG/A8unH4h0DsCT11FlmISv91O8M7VcdnRzyacp91NCLQR/21liepw7PNjR391c19sp2c7j1lgBYAX9qDs/K/8C/TAsUtxPKhASVIvPeCSX+V5k/FnvaAQ6Aybi9nysLFZULdceKs5Vj9TQUYvbNyRxGC6x6y3IewWhKs4jrfDXIelE2IPMj6P9Xyt4sR6kxIqN+sE1T4pMmwhjbhsme1sT2BqUV87CW0jNe1IRWYBzda8rAHrzPpBv+zHHqz94ucACxcDK+A+BYTlZVbsIoxm1OH3E2ih5eZcq3GArlgEec96jrqY2umLjtF5NdIQL68RSDOp5iG2AsALOyD7Fi+kTgsXALyQbDixna2fzmIqwcrdmgE0TPWQIetFxRTEgTzdcYcyXX3lvM7Hmp0gs9s0a2eeyau2sjyBtVWQWM/Znk9/FkzVsXaaZW240Hh7Xhu804brNGpMpajy7vE4oVPYQkgQZTs/D8SVQdg27nB0nqFjFr7CXJv9zdXZ6liagNYkK0z1jE8gS3nEz9h0unltbztpe44XHv68PQWAF3ZA1q2U739Ddqa+mVnFhMzqirUuHpbGWeXywDteZ48n9YSsh6xnqfOPEjoQC3YCMeUAUc4NcBSDzmvDuCWDlIeolKV51Iw88ryJTAvYoziQsZVghk17BfDyNO0Io5Us12trQYIbHSk5lnJ2q8iwgNZ6qLb0GWRzqFj6Rvd40B/rRH/PlKTLq5A6znARj6lpItJWz9G12HPqnunZkrzSZjyEUFBbdEjec6T/MYhb0G5psn4W2CxpRmGz3V7CV+llkM/80a3ugbaluvK44ukmHy2fmBeAIptOpWGXx+fPm8QTndCF41B1vAGCfM6+sOLe15CtLmPPIQDWyy3FBoRc1lvM9nE7Y28xVo5ILSMgFwAvYqqH30PoPKyHnTepKFPgzijOU/4uWb4YnFIEghc7gbtnkOXVLSCqgIeejR+S7Vx6o/3VPjsZqXulSdQJsz4GX1FkVl0EsINw/1fnXH98HPvZ5nJZa753Ac+joFAKe4TaWbikVdaTmY72iM0+cfsLKLF5qw+WjeJyWQjkfHEEJgjRoSbyM+VB7Qghztw3nYkaiCcAY/DOU95Yasny+tYLtbSGnS+wHUF8bAs+Skv7Hbhz0OUIWfUKQij9MrJyUGg+2aoO2MpCt5rPEPKmxPdDJtrIShVlcQfaggNp6wjYa9W8RZwdM36eYk/bgvc1BA5dHdJ2Zo0VAF7Yfu3tXMK5bKCHAefRKHBDD7UsD9SbeTxab+V1AtL98dd5fG+8TLU2tU7abXG7esmXEVLcqi2LzPmtJwjZiDypPeK0rDYCdAFTJw+tN5p3TVbqqMhVmxTsx4TJNXnl4wQliD2W1YjrXg2a774NmwedEmQvMPw1t6wXeGoNeJE53jghAtFqy9sJkZmb/TYqvABBUtpJ6GjsvZMpRr7PXC84b72dQEkJZNXZWhpOn882++dRJ3lS1Zjv1rXHz9cssVnUlMJmqy1iB7uYzwVn/nMAb8gvKjCTJyqexLPUSgyccWeQ5/nGy3qYGphj9bt2InCQAJCKEOwnqA7EkQtQBThSZ4iaqZnjWE24pHy2mruOFc8D6L/AOr6X8nC7CJGuaqdoCSuRFMVjaa6S+T4CP7jNqUHuwYWnlwnFOJ76IkJNSUtv9ZHlvxXqHudRsaZtu8kWfdD++q02+PXnkOXg1VENk50P0DXr8wRTCylPR5HkPa83+OMocWQnIfjqQCfHH2Y74nA3oLDZbcn3oEVvpSRcB2IHQq88mO3zzKo99GejCucSXl5L02ii05aDm05ZYzsERTjGoFDK+dM+MFWSpgm5IRzXvCfnvEtxIKoQb4GyvPJmJiqhk0wipvsIA5RMJaXjyXaa6rTiTlujkTyeH7L3Qxx7F9lIylZC8eHOnP3sdrJmwV7N2mBHes3AG4L+3ZqldVqYSoEdJptFfUlhs82Sd7v/b/3N592HH0cb5HG5seU9YXme9HRP4kzpFJnNqaLUn3rxdjBVPbMYB4h7cNc0SDa7nf5bD1JUgoJq7OTeUqYmdrJpBiwA2glXSwfpvKIlYi9aJg91sfmu8P24g9F+Go2cCM/1fO66/lDoQHV/GSV49DaEXO0bJfDBOp/tQKxnbDtVUU9W9SN6RfsoHYE6BpvCNdaft5hlsWQwbwI373nSdltwtEwvUyN4ZyFazsImFTZb7B8vvZBj2QZP8gsUthyb9Sr3x09r6B8rTppxjHbIOlPv3Fd5yUzwKRJQlMMJpj2QDftfba5F3rhqTbYQ6IMqWWAWjSF5W0xbiBfWeaRssdclTbPaqXZsJdwztd3eX+uhlsz+18NkP5SXwJaNbtPlyleyBBfS3gmrbVZBgeUwweNWpkdFoFolkUztsdGOapMooQlcR6kIU61TR1jFdUYjhGjQFrKdct68hE0Gpns717RLv4l+IwhzCc8wx7d1MmV6BuaaZU85/BpwmAGAJ0nSBtxCeDSuajQaHzbr3wVcCjyu0WjsfLgaWtihtze+7ivuwbZZ22QCvrzyXnoxYwDPA+n9gfL+ntA4ShCmStEgyMvyvNjpTB6gDT/XtdsOYpzggWPaZBNX5Z2z2b2x24sntpSQtvN87eQGGB5xYemrVpg26hijsBtfiUZtG8KBtTpUHbffbKMO1042Wlopj76IaRfrCeteqoJPv18mQI+DdyA7GdrM7ChB1JidKLfe9EacPFJ0oEZkeaMcdaLqyGaShvcQ2kwe4wng9EajsSdJkjJwa5IkP2g0GrclLyNmhAAAGJ9JREFUSbIIFwU7i4Q1hR0UuzCBG2F00CWrAqZWdIHwssZALA+QnHV6ISAMfwV21qzmVzlV4mN1El7E+OWz257gj7+DkLMF8gsKyCx1YgFO+4ovH/H/62a9zQgIYeLSXoPukb1X8oJFJeS9WTaQZwts2xLoj/uAVap7CfzcZxnsGnFFhCutDugna7BtEFZVcV64DdixckRwap5W3CjA0iI2ZXB8H8W1E62XFy4g132yFZqkD5c3bCedpV2v4qiOvOIX9rnbjvvNbbTpHpw88Fz//Qayo7aY/1YHOgttvwDecPlmNZWiSWqNH/4WeA/wrw9L6wo7LFYbTSjtAFqhQxNl+ws3tv+l0oBs+lKYSqEIIMF5RdJji1fOC0mH4FHLM7J8ddXsZyWByvUB2SG5hu+2gG9eJyDA3kqQUMZh89o/3vcuHDUgBQlkOy+bUdAChgUTeZVDQD8MvB9uxuHO6nYYrjov++eD0DsIC7vhqSsICaD8NVX8OXqvJ+RlV2ejACarMukn0BSt5t61mW26o+OIatJ2VvVheXNLsUAYsQDcYe6Bqj1Zmsb+zqLAuv3xNUpoxXUEdmJyKY4Ouc1vv5wQ7dos4jKmumaJzUiFkiRJS5IkG3GP+I8ajcb6JEnOBe5rNBr/tZ99X58kyYYkSTb87ne/OwhNLuzhsou5FP46CQsWw6RNHGQ5xpkoLWKz3rTMetmS5M3E24nbElMO+msz28ae1UMxdS7xhKRARhN6OnecMMteBzS/nzILgj4ASsq7SVx+7M1ABUeTqGINfQT1jZIySZHTR/A6LTWQJ2FsMcs1cZg3EZ0HcsowGXuycaFkmR2haH8dw1dLSq/HPj925CKbIAC6zCa10uSpRkhxdkII1MosnDGcUZMajUYdWJEkyXzg6iRJTgI+gIvL29++nwc+D66gw0Noa2EH2Vayjn/lBSz8/hC0QstZ/9fVlLwQ6HeTX2MTUB7CTf4o2i4GnemeolgFkEe1yOvRJF/8EsrsviPRf3s+gVwNx3fK9NJaGd0goR6m5XhtCtqa2U7XAc1HB1aCqGOuyVnWjPKRGiOmZTDL/eYv6QHOAJbBmbYIgqrlnGqOHXc6zyLr+bYQwFI01zKzfogQrq9jCujE/8e/sc4lz75OdgRitfN2f2nYdX6NyvDXpLZOkPXEd5hj2zb8glAxqB3ndWu7mTge060/jHZATWo0GruSJLkZeAHudvxXkiQAjwd+niTJ0xqNxm8PeisLO/j2vIQnXvsl/p63cMltfwnA3373zx3vbXJcVKwcTp6lzFZSgeYZ4fD7LsLRDxa4bN6RQbM8j8LIe1pjKWOdLIcbV1/XkH8jWdBuIejnFpCdBNxDtqzYhDnWIoKkTtevnODjUVviziumpuJsf7FXLgrIH2f5GQTdtJ1XsLy5OrDF5jpkvX7ZBM4TV4Qm/lyitOz2qmozQfBk28h6ubp2y13rGuyEpp4rjbzi3/1+HNXRhfttlElRlI5C5ZcQPGg7TzHqj9tCGGlY5yCOhG2GhnaOYpbkQJHtF8CTJHkcMOnBuwKcCXyy0Wj0mG22ASsLFcrst98ynzolFgJX/tFrspNtreQHjsDUBzyv4glNlk1nzYbd8QSoXnwbyq6hfB4tIS845uVjT8oqKnSNdUJxW/HUtp32c9VsZ8PGLYhpHxtSH7fBAks7UycSLY01jgMxm7MlVonIbK1Je85ewu8dr8v7Lhme9OZWGhgXcdD90voq+Uhjw/w7o2Uyeebb/TVuxHnlK8mOUGTWg4fQuQmtFDhlR1nxddvfzCpb7P9ZYjNpzgLgq0mStOA48+80Go1/e3ibVdjBsOQzOC/qfvjYS95FK/t4LfuAfe7FGMRVX/cPe9k/DR2WK16E82Rib1uW5y3HkYVat4XACwuM4wRMecePP1sQVzQfZAsVDJtlUpHovOJOlxDAFoIHqorjVj7ZR5CjaYJO+mR1DNJP/4JQ1ktmiydbLbNkkDGA61p0DJuWVhOz2s+G98cWA5xS+Q6Y773meiD7e1qvGtwI6mRC0QqVn+sgdGbav5OQMye2eIK60yyzk95V8wfuN1BnEkdl6lnU+i7f3n4CFWOvyT4jAmvbeeie2qCjCeC42cME7xfAG43GnbifbLptjj1YDSrsoVvr8CgTazthdYO5K3eyZ+d8zuQG5vN7jnrdmAtq8fUIJ80Daz/LyrEnaC1+euKscuAe/DxgsdVpYh67RlCZ2Hwmeolsm2IggKynLoAXaPYRvEi1f5hQ77CGe+lbouOUcOqFfhxAnOOX7yDtCLndtEEeqiiEzQT+3ZZD07nrBCpJJdvsfbGTyTvIdpaiCPr9sez1CcyktxatIa/Zptm1pvug9AB2xGF/hyU4cLS0jdLdalQSjw7kZQt0Le1h8+vo3tsJ0+W+rdtxnZrUL+pIdhAUN5v9teq3AufBd5HNp2KjPpUADZzUUI7LOfDbF3amo9fZYrNsQFDYQ7XW4YB4jW8m8DngjbgIj824h9x7kjFgl/OehpnMvsf8oM0VEYO3XgibtjOezGt2DgtI+zN1HGqT5a1FmwzhAGqQzORgxhMTt6r83gI+FXqwaUZtdZy8IXqe2d9AbR0lC3gwNb+LlgnsJIOLj2kr7MjkqVrqY5jQ2eneWYmj9crlrc81y8X7K32sMkvmXWse5WW3z6O54uyXKqVm501k6oxjqkr3Ko43aGba36t3fs1xLjJ5FlkB4I9AS7bX6H78AHOP2M0StnHTPc91OuMqHPkiL9VUYv9NBO9oE2kukDxve2wcKtNJ7Syo2Mkpy+3abWLOXMvzIjvt8SHrectsBRZ7TKs3lsUTVJbr1jJVj7GaYlEsaotA0aYREK+r88QqBeutajtxzvJ0lT3qRMJEnq7PBrXILHdrJwLtPRPgiB5RkFEM6KIELJUzEB1DbSwRvHDRG8oeKO+3jTA66SKMkAT8MUeep77RPtKb299yhGwnGUcEa4QFbkTQ7duxmKyVcJRi3gS5TLx6BzTe6Rbt7jySoZZuhnB/hQde2EOyzmN20n2Ee5wWscOB9zpgEHZ/+HFuIzt59Tf+s1GXWG9bYF6xCXvsTH3ezHsMvlapovPGL0gsFSPn2HEq0LyUq2qXKAALzsqlrfJaQ+Z4scpF17acLIhYmZyPZGQ5gUfvMcfqI3iueaMDy2t3EvhmS63I5OXrOLaTEFAt9ustz2zbDEFKZ5NLxblBRnAdu0BOx7HZEUX3aKQiJYcoIGmx9SwIZNWR2+hSHRuyz4Xyy9jr0LVpf80/xLnia+ZP5xD11IL7jUQdiTob8Z/tsx4/y56SqpfcX+vEPubP2cUT+CWzzQoAfwTariOP4egH6vzy/U9xD6hAoITj8OS9xl6nvKecYXsufWKXxXzw/nJCzOTJil8+cZ0WtC3VYr1qecml6HOeKqWZ1xrn8xDQj+Rsa3OR2GPZ/Ztdo/5biiWe5NRxrLdqO5o4W198bjvZaNuWp0ixnbIF8fg65KnLw+3A3Ws9b/LAISt9jO91MyrJXqeOow6hnrPOtktmfxOZUia04vjwzbgRgkZX+zOfHrfk+f56CXYxnzkuk8yssgLAHwGW/AoaX04cWPsMbTuVA0Q8YN5wUC+TXi69kDY5fd2AtwU/q/jI81CsvMp625ZOgSxwNRu6tjglTNlOVtlt1S4d03qVEwSFgYbaKkKAudY2s98I2VqQnn5K6z9C8AhFM6i2otqhc/biPNSYqpBpcjLOvxLL5WSWiomBXGYLRVsAjTuwvOPnLVdqAHAjjc0E791O9gkA1RHcZa4jTvAVd062I9PoyFJSkh6q/XMJGnWY+gzBVBmpzdmtidk2XA1Lmc0o2Mx8ceeaGQn27b0/fJkzg2McIisAfJbbS/gqncee7WbP+wlgajniPH7RfpZHGXszAkf7stnAl3gfbRu/nFbKZ4fJGgFYlYH1rMxooFwyx7ZSMtEKJXPNSwlg3U1WVlYnqEjieyDAV9UW5UER7ymQ1oRZyRzrHELNzD5cHg1wwSZKtypbSehYuwkcu/hpW5HH/nZ5Sb3sJGm/WTbK1CAhlRzLC4qx35X5DwIFZI/TY9qie9JKFqxLZGkI5SCJKS9dq3KL21QJ6hwlP7T5azD3IY/Cy5tfsWoScM+FlDQ6pxJY5Xn21kkoQYtfX5qAhnViCgAv7EBs160LwoPfDKzzvsvyZHx56+MZe3lG8Tqi7fIyD1rQb7ZvG80Dh7SvRhpW0TBCc040buv+PMK8CVUbpKJj9ePA2iZeglDcwU4I2t/BKkD24Ib2S8lOZuqampnA2Zq8T6stVwdm+ez4/trRlqicWI2iiM0Jgrbd1vnUttaDtu23EaVWmWSTX9lnK/5t8mSh9voF0LFCJzZLQY3jRkv9ZDsWO8pp8qwKvOslKHXMHg04FAA+u+2/Ej73lEoY8lslwkwsz8uYbr39PgGTkdyqbF8ieaMdTAU/G50YdwIxH+q98Mmaz7vSAqUSlPO4TVne5JWW6zyyufz/7Z1rrFxVFYC/xUx7MRcKfVBoAbXERgV+CN4A8jBEAYEY8YEG/0CCicFAoj9MKKmpGH6hURMTxCga0BAwKihBiEWCIZiA3kIfIRRuW6CWkhZreKq33mH5Y+/Vs2Zz5s5p750zZ3R/yWTOnOeatc9ZZ++11167u1a7h8J4pnN62nF+EmE7vw3LTsPj/PyOZsS83tKoHB8x4zv6fGiluS0sOdMMwSinIZF+cJCfp7Isc967Kdwi1mKxloH9V4tWshaJ17+FNloNHYp7wLtVcMdYh2KHwuVk17XWWdra8O4vfz7vNvO5w32qB5L/7QfvWM08jeYxnaT6SnzlnYZayoaK9f/L2TzCmTzB91+5AW6DxVP/6h4kcTAG2db59WmJl/1OzrHAbnRzV/iHxR5Eqy1bE9uHkJnR9obcnyMapneNwYLldDfxLdoDiofVG1ardXrDOM47Izk8VguDYOBTv6g19b2/9lR3zjcpOv582Xi/u/3P9LwWh2/f3vVktX7/IrAQPnP1QDBM6QCmKYparu+X8DVM043VPu36plMLbbT9T3L/z9YvpTsfuUX9nEiRktefI70fxwn6M3eYvQxMDp9ozMrVBjuZgbdOVF9xKMvhPeV+21R4iyhm5SmLrV8e/pMugf2HBzdKa6Yw4E0zmE2TJ+OZoshVMRcO9vhYa17QDjXj/8zEyW698a5y/jQCoayWFO/ABVA8xL7jtMz/2asDsCqWO3olhcHsUBjOFkUHmF3ncYqwOesAhW6ftifteMT9LpPdXBremPgBRZa1cYbipWZGzb0E34G9FCyRk/dBW2z6UXTlC+dhJ5MZYeuLMANr+9qw/lWEcQbWSW7Hl0XrrCToz7vufPIwu2Ya+WPr09zhZWMXrHVi1/wQxQvW+ghabl/vpnEGu9OG6bHD6LTbjE3vL7nQcMkGvGEs4+9cyy2hlrGDA7mfgbkb8n5445FwwIiX+cvtgbWh4P7BKMMbaHsorQbvz5u2Hky+3ZTLaTHWPva76qg7O7/Jbw+4rfO+3JTX6c7ct5RgGD9IkY/azzXp8W4bH3WRTgqRRg/5472MfmKINiFlrDFFUesepzDKpntr2fjIk/hSnbk+1ERlkiIu+3mKMl4arzUDrI/r7IXoW2TGqXG9tXTSTJa2r9XoLZ2xj2f3LTp7kViLwc7tsdGiaaSU6SD692dWlrtMpscWVhpcWyfZgDcAeRTWf/Q8Ltz6GPftBG4HJqErd/JslLlIehn72TpB/fZoZLv83r7W4mvB/mEzw7GE7gT76Wg8Y4zuZrzvoPL+Xf+/rOPNd4jZ6Dubw9POcxJFmJ9hnXwmr3WI+ub8crcfFPNEWm3VR4TYdlu2yBWTfwlFPLKRRobsc7rw/RzHUvjwnZE5gI8n935mczc8EH9bGRwFfNadf6fbf6L7P+mZIHcBe6G9jq5a+vS5wGkwFmvrM+PQ3kKohZ9D4XraQcgRY//XD9qxAULeKvr7xF409sK3+G6T3VLb7qV4aVu8vB1vZTAZv8901/p38t2O/3UGpleHWjdAp9Wi1enVxBku2YA3jSkK4526EcqMrzds5n+ejdRwpB2Fac++dbzZS2IRhQ80pWzwRbpf+tJ4rlm9+o3lK3GmJN8qMNI4ees83EnhHlhNkf9lH0XCrLL7ILZwZILQilhKuC/HCbXft2DsNZi2FpMZQHONtAkjg3fwzvsxdV34YfD2P7xc5sYyt5HV1v09Nua2+WRbvo/AruvvRx8F5V8aHei024023EY24ENkLevo0OKIiWu5cMNjobb0K8oNdtmoPY/5Qf0w7bLSNUP/YjacI8WtAyqvD5Ss+5Jb/liy7dfxRTJJmAko0mlD51hYeBSIH3xj92JZP4EfvAPdHa7+28IAbZ29bNKZovw8qum9b62q1AWVRqDEF1JrZoZOq9V4I54N+BA5kjcAeGPdMeGBsPSXVirTwPZsaDMN4vLifhwDuMQtQzHI5fJDOPfd0t3xPUmona+imALtLULL4h9x2x6K2HcbOWpT5FmfQ9raMHwr0VoB0Q01/re32f++7t0XtdIA9eEjYdL5epiYmNDJycn+O2Yymcyh8E0pooosisdXoFt0ZySEor8gmYBiZiW8uugIWvEEi/nngIXvjYhsUNWJdH2ugWcymf8dvjXHCukGOeA7f3VRCHfp9B3KPDxqrYGLyCvAi3M8zTKg6XNvNl3GLN/caLp80HwZs3wHx3tU9Zh0Za0GfD4QkcmypkSTaLqMWb650XT5oPkyZvnmh8OGLUAmk8lkDo1swDOZTGZEGUUD/uNhC1CBpsuY5ZsbTZcPmi9jlm8eGDkfeCaTyWQCo1gDz2QymQzZgGcymczI0kgDLiKfF5GnReRtEZlw6y8UkQ0isiV+p5kabL8bReQlEdkYP5fWIV/cdoOIbBORZ0XkEz2OXyIiD4nIVPxePJ/ylVzvl04XL4jIxh77vRB1u1FEahsyW7W8ROTiqNdtIrKmRvm+IyJbRWSziNwrIkf32K9W/fXThwR+ELdvFpHTBy1Tcv0TReQREXkmPi9fLdnnfBF5zZX9upplnLXMhq3Dvqhq4z6EzAfvB/4ETLj1pwEr4/KpwEs9jr8R+PoQ5DsZ2EQYxLsK2A60So7/NrAmLq8Bbq5Rt98F1vXY9gKwbAjl3be8CIOgtxMSxC6Mej65JvkuAtpx+eZe5VWn/qrogzAV84OAAGcBT9RcriuA0+PykcBzJTKeD9xf9z1XtcyGrcN+n0bWwFX1GVV9tmT9U6pqmZifBg4XkdpzrPeSD7gMuFtVp1X1eWAbcEaP/e6Iy3cAnx6MpN2IiABfAO6q43rzzBnANlXdoar7gbsJehw4qrpeVf3cPCfUcd0+VNHHZcDPNfA4cLSIrKhLQFV9WVWfjMtvENK1HV/X9eeJoeqwH4004BX5HPCUqvZKEXZdbPL8bNAuCsfxhJTzxi7Kb9hjVfVlCDc5xVQCg+Y8YI+qTvXYrsD66J76ck0yGf3Kq6puB83VhBpZGXXqr4o+mqIzROS9hBb0EyWbPyIim0TkQRE5pVbB+pdZY3RYxtCSWYnIH4HjSjatVdXf9Tn2FEJT9qIeu9wK3EQonJsIboOra5BPStbVEqdZUd4vMnvt+xxV3S0iy4GHRGSrqj46aPmoVl4D1W0V/YnIWkJ+uzt7nGZg+iuhij6Gdj92CSFyBPAb4Guq+nqy+UlCno83Y9/Hb+meW2jQ9CuzRuiwF0Mz4Kp6waEcJyInAPcCV6rq9h7n3uP2/wlwf03y7SLMzmecQDH5lmePiKxQ1Zdjc2xvyT4HRT95RaRNmEzrw7OcY3f83isi9xKa6fNigKrqc5byqqrbQ6KC/q4CPgl8XKNztOQcA9NfCVX0MVCdVUFEFhCM952qek+63Rt0VX1ARH4oIstUtZZEUhXKbOg6nI2RcqHE3v/fAzeo6p9n2c/7qD5DmKmvDu4DrhCRMRFZRahJ/KXHflfF5auAWVsc88QFwFZV3VW2UUTGReRIWya0bmrRW8Xy+iuwWkRWichC4AqCHuuQ72LgeuBTqlqaFHoI+quij/uAK2MkxVnAa+a6q4PY5/JT4BlV/V6PfY6L+yEiZxBs0r6a5KtSZkPVYV+G3Yta9iE8xLsImXn3AH+I679BmFtjo/ssj9tuI0aEAL8AtgCbCQWwog754ra1hOiAZ4FL3Hov31LgYcJMgw8DS2rQ6e3ANcm6lcADcfkkQiTDJkIH8doay7u0vLx88felhEiG7TXLt43gB7V77kdN0F+ZPoBrrJwJzf9b4vYtuIipmvR2LsHdsNnp7tJExuuivjYROojPrlG+0jJrkg77ffJQ+kwmkxlRRsqFkslkMpmCbMAzmUxmRMkGPJPJZEaUbMAzmUxmRMkGPJPJZEaUbMAzmUxmRMkGPJPJZEaU/wIuZCjLGSosxQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_data(interp_nes, var_name)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Weight Matrix done!\n" + "nox_no total mass: 1.4103307834025396\n" ] } ], "source": [ - "wm_nes = source_grid.interpolate_horizontal(dst_grid=dst_nes, kind='Conservative', info=True,\n", - " weight_matrix_path=\"CONS_WM_NAMEE_to_IP.nc\", only_create_wm=True)" + "for var_aux in source_grid.variables.keys():\n", + " print(\"{0} total mass: {1}\".format(var_aux, interp_nes.variables[var_aux]['data'].sum()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Flux conservative interpolation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.0 Using previous example to put the data as flux" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nox_no total mass: 1.4103307834025396\n", + "nox_no total flux: 8.809495172462768e-08\n" + ] + } + ], "source": [ - "interp_nes = source_grid.interpolate_horizontal(dst_grid=dst_nes, kind='Conservative', wm=wm_nes)" + "# Mass to Flux\n", + "cell_area = interp_nes.calculate_grid_area()\n", + "\n", + "for var_aux in interp_nes.variables.keys():\n", + " print(\"{0} total mass: {1}\".format(var_aux, interp_nes.variables[var_aux]['data'].sum()))\n", + " interp_nes.variables[var_aux]['data'] /= cell_area\n", + " interp_nes.variables[var_aux]['units'] = 'm-2.kg.s-1'\n", + " print(\"{0} total flux: {1}\".format(var_aux, interp_nes.variables[var_aux]['data'].sum()))\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 Interpolation" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 19, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Flux units: m-2.kg.s-1\n" + ] + }, { "data": { + "image/png": "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\n", "text/plain": [ - "{'data': array([[32.49460816, 32.49803615, 32.50144726, ..., 32.52460207,\n", - " 32.52130788, 32.51799681],\n", - " [32.53024662, 32.5336765 , 32.5370895 , ..., 32.5602571 ,\n", - " 32.55696109, 32.55364819],\n", - " [32.5658877 , 32.56931947, 32.57273435, ..., 32.59591474,\n", - " 32.59261692, 32.58930218],\n", - " ...,\n", - " [46.60231473, 46.60653579, 46.6107361 , ..., 46.63924881,\n", - " 46.63519229, 46.63111499],\n", - " [46.63791957, 46.64214277, 46.6463452 , ..., 46.67487234,\n", - " 46.67081377, 46.66673441],\n", - " [46.67352141, 46.67774674, 46.68195131, ..., 46.71049289,\n", - " 46.70643226, 46.70235083]])}" + "
" ] }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "interp_nes.lat" + "source_grid = open_netcdf(path=source_path)\n", + "source_grid.create_shapefile()\n", + "source_grid.keep_vars(var_name)\n", + "print('Flux units: {0}'.format(source_grid.variables[var_name]['units']))\n", + "source_grid.load()\n", + "plot_data(source_grid, var_name)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6min 12s, sys: 2.3 s, total: 6min 15s\n", + "Wall time: 6min 16s\n" + ] + } + ], + "source": [ + "%time interp_nes = source_grid.interpolate_horizontal(dst_grid=dst_nes, kind='Conservative', flux=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nox_no total flux: 8.805639456704551e-08\n" + ] + } + ], + "source": [ + "for var_aux in interp_nes.variables.keys():\n", + " print(\"{0} total flux: {1}\".format(var_aux, interp_nes.variables[var_aux]['data'].sum()))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { + "image/png": "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\n", "text/plain": [ - "{'data': array([[-11.56484687, -11.52259289, -11.48033507, ..., 5.18764453,\n", - " 5.22992847, 5.27220869],\n", - " [-11.56892309, -11.52664925, -11.48437156, ..., 5.1915433 ,\n", - " 5.23384715, 5.27614727],\n", - " [-11.57300318, -11.53070946, -11.48841188, ..., 5.19544578,\n", - " 5.23776955, 5.2800896 ],\n", - " ...,\n", - " [-13.53865445, -13.48682654, -13.4349915 , ..., 7.07590089,\n", - " 7.12778439, 7.17966098],\n", - " [-13.54481681, -13.49295916, -13.44109437, ..., 7.08179741,\n", - " 7.13371074, 7.18561716],\n", - " [-13.55098635, -13.49909893, -13.44720434, ..., 7.0877008 ,\n", - " 7.139644 , 7.19158028]])}" + "
" ] }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "interp_nes.lon" + "plot_data(interp_nes, var_name)" ] } ], diff --git a/tutorials/5.Geospatial/5.2.Spatial_Join.ipynb b/tutorials/5.Geospatial/5.2.Spatial_Join.ipynb index 8ebefeef0f2536b9f35f135f3a3cdc3085aa81d7..98c4665cccc3e7bca1d5badb56e54ce5828c98e2 100644 --- a/tutorials/5.Geospatial/5.2.Spatial_Join.ipynb +++ b/tutorials/5.Geospatial/5.2.Spatial_Join.ipynb @@ -16,6 +16,7 @@ "from nes import *\n", "import geopandas as gpd\n", "import pandas as pd\n", + "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "pd.options.mode.chained_assignment = None" @@ -82,7 +83,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2666: UserWarning: Shapefile does not exist. It will be created now.\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2814: UserWarning: Shapefile does not exist. It will be created now.\n", " warnings.warn(msg)\n" ] } @@ -219,7 +220,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Add data of last timestep" + "### Save timezones data as variable" ] }, { @@ -228,7 +229,7 @@ "metadata": {}, "outputs": [], "source": [ - "grid.keep_vars('O3')" + "timezones = grid.shapefile['tzid'].values.reshape([grid.lat['data'].shape[0], grid.lon['data'].shape[-1]])" ] }, { @@ -236,13 +237,565 @@ "execution_count": 9, "metadata": {}, "outputs": [], + "source": [ + "grid.variables['tz'] = {'data': timezones,}" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable lmp was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable IM was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable JM was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable LM was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable IHRST was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable I_PAR_STA was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable J_PAR_STA was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NPHS was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NCLOD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NHEAT was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NPREC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NRDLW was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NRDSW was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NSRFC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable AVGMAXLEN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MDRMINout was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MDRMAXout was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MDIMINout was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MDIMAXout was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable IDAT was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DXH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SG1 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SG2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DSG1 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DSG2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SGML1 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SGML2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SLDPTH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ISLTYP was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable IVGTYP was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NCFRCV was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NCFRST was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable FIS was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable GLAT was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable GLON was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable VLAT was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable VLON was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ACPREC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CUPREC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MIXHT was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PBLH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable RLWTOA was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable RSWIN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable U10 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable USTAR was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable V10 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable RMOL was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable T2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable relative_humidity_2m was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable T was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable U was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable V was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SH2O was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SMC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable STC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable AERO_ACPREC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable AERO_CUPREC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable AERO_DEPDRY was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable AERO_OPT_R was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DRE_SW_TOA was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DRE_SW_SFC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DRE_LW_TOA was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DRE_LW_SFC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ENG_SW_SFC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ADRYDEP was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable WETDEP was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PH_NO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable HSUM was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable POLR was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_optical_depth_dim was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_optical_depth was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable satellite_AOD_dim was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable satellite_AOD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_loading_dim was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_loading was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable clear_sky_AOD_dim was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable clear_sky_AOD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable layer_thickness was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable mid_layer_pressure was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable interface_pressure was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable relative_humidity was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable mid_layer_height was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable mid_layer_height_agl was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable air_density was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable dry_pm10_mass was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable dry_pm2p5_mass was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable QC was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable QR was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable QS was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable QG was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_002 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_003 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_004 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_005 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_006 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_007 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_dust_008 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_002 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_003 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_004 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_005 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_006 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_007 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_ssa_008 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_om_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_om_002 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_om_003 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_om_004 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_om_005 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_om_006 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_bc_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_bc_002 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_so4_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_no3_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_no3_002 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_no3_003 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_nh4_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_unsp_001 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_unsp_002 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_unsp_003 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_unsp_004 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aero_unsp_005 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NO was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable O3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NO3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable N2O5 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable HNO3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable HONO was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PNA was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable H2O2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NTR was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ROOH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable FORM was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ALD2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ALDX was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PAR was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CO was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MEPX was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MEOH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable FACD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PAN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PACD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable AACD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable PANX was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable OLE was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ETH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable IOLE was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable TOL was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CRES was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable OPEN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MGLY was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable XYL was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ISOP was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ISPD was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable TERP was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SULF was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ETOH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ETHA was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CL2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable HOCL was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable FMCL was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable HCL was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable BENZENE was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SESQ was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable NH3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable DMS was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SOAP_I was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SOAP_T was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SOAP_F was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SOAP_A was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable O was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable O1D was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable OH was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable HO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable XO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable XO2N was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable MEO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable HCO3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable C2O3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CXO3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ROR was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable TO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable TOLRO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CRO was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable XYLRO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable ISOPRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable TRPRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SULRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CL was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable CLO was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable TOLNRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable TOLHRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable XYLNRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable XYLHRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable BENZRO2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable BNZNRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable BNZHRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable SESQRXN was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_dim was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_1 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_4 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_5 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_6 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_7 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_DUST_8 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_SALT_total was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_OM_total was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_BC_total was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_SO4_total was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_NO3_total was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_NH4_total was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_UNSPC_1 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_UNSPC_2 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_UNSPC_3 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_UNSPC_4 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n", + "/esarchive/scratch/avilanova/software/NES/nes/nc_projections/default_nes.py:2353: UserWarning: WARNING!!! Variable aerosol_extinction_UNSPC_5 was not loaded. It will not be written.\n", + " warnings.warn(msg)\n" + ] + } + ], + "source": [ + "grid.to_netcdf('grid_with_tz.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "grid_with_tz = open_netcdf('grid_with_tz.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "grid_with_tz.keep_vars('tz')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "grid_with_tz.load()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'data': array([[[['nan', 'nan', 'nan', ..., 'Asia/Riyadh', 'Asia/Riyadh',\n", + " 'Asia/Aden'],\n", + " ['nan', 'nan', 'nan', ..., 'Asia/Riyadh', 'Asia/Riyadh',\n", + " 'Asia/Riyadh'],\n", + " ['nan', 'nan', 'nan', ..., 'Asia/Riyadh', 'Asia/Riyadh',\n", + " 'Asia/Riyadh'],\n", + " ...,\n", + " ['America/Pangnirtung', 'America/Pangnirtung',\n", + " 'America/Pangnirtung', ..., 'Asia/Tomsk', 'Asia/Tomsk',\n", + " 'Asia/Tomsk'],\n", + " ['America/Pangnirtung', 'America/Pangnirtung',\n", + " 'America/Pangnirtung', ..., 'Asia/Tomsk', 'Asia/Tomsk',\n", + " 'Asia/Tomsk'],\n", + " ['America/Toronto', 'America/Iqaluit', 'America/Pangnirtung',\n", + " ..., 'Asia/Tomsk', 'Asia/Tomsk', 'Asia/Krasnoyarsk']]]],\n", + " dtype=object),\n", + " 'dimensions': ('rlat', 'rlon', 'strlen'),\n", + " 'grid_mapping': 'rotated_pole',\n", + " 'coordinates': 'lat lon'}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grid_with_tz.variables['tz']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add ozone data of last timestep" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "grid.keep_vars('O3')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], "source": [ "grid.load()" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -251,7 +804,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -390,7 +943,7 @@ "[95121 rows x 3 columns]" ] }, - "execution_count": 11, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -408,7 +961,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -444,7 +997,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -478,7 +1031,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -514,7 +1067,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -536,7 +1089,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -549,7 +1102,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -614,54 +1167,54 @@ " ...\n", " \n", " \n", - " 22495\n", - " POLYGON ((18.00000 64.80000, 18.20000 64.80000...\n", - " Europe/Stockholm\n", + " 14995\n", + " POLYGON ((18.00000 54.80000, 18.20000 54.80000...\n", + " Europe/Warsaw\n", " \n", " \n", - " 22496\n", - " POLYGON ((18.20000 64.80000, 18.40000 64.80000...\n", - " Europe/Stockholm\n", + " 14996\n", + " POLYGON ((18.20000 54.80000, 18.40000 54.80000...\n", + " Europe/Warsaw\n", " \n", " \n", - " 22497\n", - " POLYGON ((18.40000 64.80000, 18.60000 64.80000...\n", - " Europe/Stockholm\n", + " 14997\n", + " POLYGON ((18.40000 54.80000, 18.60000 54.80000...\n", + " Europe/Warsaw\n", " \n", " \n", - " 22498\n", - " POLYGON ((18.60000 64.80000, 18.80000 64.80000...\n", - " Europe/Stockholm\n", + " 14998\n", + " POLYGON ((18.60000 54.80000, 18.80000 54.80000...\n", + " Europe/Warsaw\n", " \n", " \n", - " 22499\n", - " POLYGON ((18.80000 64.80000, 19.00000 64.80000...\n", - " Europe/Stockholm\n", + " 14999\n", + " POLYGON ((18.80000 54.80000, 19.00000 54.80000...\n", + " NaN\n", " \n", " \n", "\n", - "

22500 rows × 2 columns

\n", + "

15000 rows × 2 columns

\n", "" ], "text/plain": [ - " geometry tzid\n", - "FID \n", - "0 POLYGON ((-11.00000 35.00000, -10.80000 35.000... NaN\n", - "1 POLYGON ((-10.80000 35.00000, -10.60000 35.000... NaN\n", - "2 POLYGON ((-10.60000 35.00000, -10.40000 35.000... NaN\n", - "3 POLYGON ((-10.40000 35.00000, -10.20000 35.000... NaN\n", - "4 POLYGON ((-10.20000 35.00000, -10.00000 35.000... NaN\n", - "... ... ...\n", - "22495 POLYGON ((18.00000 64.80000, 18.20000 64.80000... Europe/Stockholm\n", - "22496 POLYGON ((18.20000 64.80000, 18.40000 64.80000... Europe/Stockholm\n", - "22497 POLYGON ((18.40000 64.80000, 18.60000 64.80000... Europe/Stockholm\n", - "22498 POLYGON ((18.60000 64.80000, 18.80000 64.80000... Europe/Stockholm\n", - "22499 POLYGON ((18.80000 64.80000, 19.00000 64.80000... Europe/Stockholm\n", + " geometry tzid\n", + "FID \n", + "0 POLYGON ((-11.00000 35.00000, -10.80000 35.000... NaN\n", + "1 POLYGON ((-10.80000 35.00000, -10.60000 35.000... NaN\n", + "2 POLYGON ((-10.60000 35.00000, -10.40000 35.000... NaN\n", + "3 POLYGON ((-10.40000 35.00000, -10.20000 35.000... NaN\n", + "4 POLYGON ((-10.20000 35.00000, -10.00000 35.000... NaN\n", + "... ... ...\n", + "14995 POLYGON ((18.00000 54.80000, 18.20000 54.80000... Europe/Warsaw\n", + "14996 POLYGON ((18.20000 54.80000, 18.40000 54.80000... Europe/Warsaw\n", + "14997 POLYGON ((18.40000 54.80000, 18.60000 54.80000... Europe/Warsaw\n", + "14998 POLYGON ((18.60000 54.80000, 18.80000 54.80000... Europe/Warsaw\n", + "14999 POLYGON ((18.80000 54.80000, 19.00000 54.80000... NaN\n", "\n", - "[22500 rows x 2 columns]" + "[15000 rows x 2 columns]" ] }, - "execution_count": 17, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -679,7 +1232,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 26, "metadata": {}, "outputs": [ { diff --git a/tutorials/6.Others/6.2.Selecting.ipynb b/tutorials/6.Others/6.2.Selecting.ipynb index f4c28b4885ab6a533b76ca5b3666551e24dee4b6..7118c4d883253ea023470fd23981188b2e08a6c0 100644 --- a/tutorials/6.Others/6.2.Selecting.ipynb +++ b/tutorials/6.Others/6.2.Selecting.ipynb @@ -31,7 +31,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Time" + "## 1. Select data by time" ] }, { @@ -170,7 +170,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Level" + "## 2. Select data by level" ] }, { @@ -216,7 +216,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Coordinates" + "## 3. Select data by coordinates" ] }, { @@ -256,20 +256,20 @@ ] }, { - "cell_type": "code", - "execution_count": 9, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "nessy.to_netcdf(\"test_sel.nc\")" + "## 4. Write dataset" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "nessy.to_netcdf(\"test_sel.nc\")" + ] } ], "metadata": { diff --git a/tutorials/6.Others/6.4.Write_By_Timestep.ipynb b/tutorials/6.Others/6.4.Write_By_Timestep.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..9080e0c847e2c1edf913633939f036f1ab322b03 --- /dev/null +++ b/tutorials/6.Others/6.4.Write_By_Timestep.ipynb @@ -0,0 +1,220 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Write by timestep (to avoid memory issues)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from nes import *\n", + "import numpy as np\n", + "from datetime import datetime, timedelta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Create grid" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "centre_lat = 51\n", + "centre_lon = 10\n", + "west_boundary = -35\n", + "south_boundary = -27\n", + "inc_rlat = 0.2\n", + "inc_rlon = 0.2\n", + "rotated_grid = create_nes(comm=None, info=False, projection='rotated',\n", + " centre_lat=centre_lat, centre_lon=centre_lon,\n", + " west_boundary=west_boundary, south_boundary=south_boundary,\n", + " inc_rlat=inc_rlat, inc_rlon=inc_rlon)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Create variables" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "rotated_grid.variables = {'var1': {'data': None, 'units': 'kg.s-1', 'dtype': np.float32},\n", + " 'var2': {'data': None, 'units': 'kg.s-1', 'dtype': np.float32}}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Change time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Old time" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[datetime.datetime(1996, 12, 31, 0, 0)]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rotated_grid.time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### New time" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "time_list = [datetime(year=2023, month=1, day=1) + timedelta(hours=x) for x in range (2)]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "rotated_grid.set_time(time_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[datetime.datetime(2023, 1, 1, 0, 0), datetime.datetime(2023, 1, 1, 1, 0)]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rotated_grid.time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Write dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "rotated_grid.to_netcdf('rotated.nc', keep_open=True, info=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "rotated_grid.variables['var1']['data'] = np.ones((1, 1, rotated_grid.lat['data'].shape[0], rotated_grid.lon['data'].shape[-1]))\n", + "rotated_grid.variables['var2']['data'] = np.ones((1, 1, rotated_grid.lat['data'].shape[0], rotated_grid.lon['data'].shape[-1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "rotated_grid.append_time_step_data(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "rotated_grid.variables['var1']['data'] = np.ones((1, 1, rotated_grid.lat['data'].shape[0], rotated_grid.lon['data'].shape[-1])) *2\n", + "rotated_grid.variables['var2']['data'] = np.ones((1, 1, rotated_grid.lat['data'].shape[0], rotated_grid.lon['data'].shape[-1])) *2\n", + "\n", + "rotated_grid.append_time_step_data(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "rotated_grid.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}