From 93ab78b34ea78fdfa51b3d0d4d5630ba961a5253 Mon Sep 17 00:00:00 2001 From: s_ranjbar Date: Mon, 22 Jul 2024 08:09:14 -0400 Subject: [PATCH] fix: importers are fixed for mixed use buildings --- .idea/misc.xml | 3 + .../construction/nrcan_physics_parameters.py | 17 +++- hub/imports/geometry/geojson.py | 13 +++ hub/imports/usage/comnet_usage_parameters.py | 75 ++++++++++----- hub/imports/usage/nrcan_usage_parameters.py | 73 +++++++++------ input_files/test_geojson.geojson | 55 +++++++++++ main.py | 86 ++++++++++++++++++ plot_nrcan.png | Bin 0 -> 47568 bytes 8 files changed, 270 insertions(+), 52 deletions(-) create mode 100644 input_files/test_geojson.geojson create mode 100644 plot_nrcan.png diff --git a/.idea/misc.xml b/.idea/misc.xml index dc7953c5..757b558a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,7 @@ + + \ No newline at end of file diff --git a/hub/imports/construction/nrcan_physics_parameters.py b/hub/imports/construction/nrcan_physics_parameters.py index e57aa22e..e39774e7 100644 --- a/hub/imports/construction/nrcan_physics_parameters.py +++ b/hub/imports/construction/nrcan_physics_parameters.py @@ -32,10 +32,21 @@ class NrcanPhysicsParameters: city = self._city nrcan_catalog = ConstructionCatalogFactory('nrcan').catalog for building in city.buildings: - if building.function not in Dictionaries().hub_function_to_nrcan_construction_function: - logging.error('Building %s has an unknown building function %s', building.name, building.function) + main_function = None + functions = building.function.split('_') + if len(functions) > 1: + maximum_percentage = 0 + for function in functions: + percentage_and_function = function.split('-') + if float(percentage_and_function[0]) > maximum_percentage: + maximum_percentage = float(percentage_and_function[0]) + main_function = percentage_and_function[-1] + else: + main_function = functions[-1] + if main_function not in Dictionaries().hub_function_to_nrcan_construction_function: + logging.error('Building %s has an unknown building function %s', building.name, main_function) continue - function = Dictionaries().hub_function_to_nrcan_construction_function[building.function] + function = Dictionaries().hub_function_to_nrcan_construction_function[main_function] try: archetype = self._search_archetype(nrcan_catalog, function, building.year_of_construction, self._climate_zone) diff --git a/hub/imports/geometry/geojson.py b/hub/imports/geometry/geojson.py index b07a6a7b..3505c27a 100644 --- a/hub/imports/geometry/geojson.py +++ b/hub/imports/geometry/geojson.py @@ -127,6 +127,19 @@ class Geojson: function = None if self._function_field is not None: function = str(feature['properties'][self._function_field]) + if function == 'Mixed use' or function == 'mixed use': + function_parts = [] + for key, value in feature['properties'].items(): + if key.startswith("mixed_type_") and not key.endswith("_percentage"): + type_key = key + percentage_key = f"{key}_percentage" + if percentage_key in feature['properties']: + if self._function_to_hub is not None and feature['properties'][type_key] in self._function_to_hub: + usage_function = self._function_to_hub[feature['properties'][type_key]] + function_parts.append(f"{feature['properties'][percentage_key]}-{usage_function}") + else: + function_parts.append(f"{feature['properties'][percentage_key]}-{feature['properties'][type_key]}") + function = "_".join(function_parts) if self._function_to_hub is not None: # use the transformation dictionary to retrieve the proper function if function in self._function_to_hub: diff --git a/hub/imports/usage/comnet_usage_parameters.py b/hub/imports/usage/comnet_usage_parameters.py index 02f9b77e..08d8175c 100644 --- a/hub/imports/usage/comnet_usage_parameters.py +++ b/hub/imports/usage/comnet_usage_parameters.py @@ -35,29 +35,60 @@ class ComnetUsageParameters: city = self._city comnet_catalog = UsageCatalogFactory('comnet').catalog for building in city.buildings: - usage_name = Dictionaries().hub_usage_to_comnet_usage[building.function] - try: - archetype_usage = self._search_archetypes(comnet_catalog, usage_name) - except KeyError: - logging.error('Building %s has unknown usage archetype for usage %s', building.name, usage_name) - continue - - for internal_zone in building.internal_zones: - if internal_zone.area is None: - raise TypeError('Internal zone area not defined, ACH cannot be calculated') - if internal_zone.volume is None: - raise TypeError('Internal zone volume not defined, ACH cannot be calculated') - if internal_zone.area <= 0: - raise TypeError('Internal zone area is zero, ACH cannot be calculated') - volume_per_area = internal_zone.volume / internal_zone.area - usage = Usage() - usage.name = usage_name - self._assign_values(usage, archetype_usage, volume_per_area, building.cold_water_temperature) - usage.percentage = 1 - self._calculate_reduced_values_from_extended_library(usage, archetype_usage) - - internal_zone.usages = [usage] + usages = [] + comnet_archetype_usages = [] + building_functions = building.function.split('_') + for function in building_functions: + usages.append(function.split('-')) + for usage in usages: + comnet_usage_name = Dictionaries().hub_usage_to_comnet_usage[usage[-1]] + try: + comnet_archetype_usage = self._search_archetypes(comnet_catalog, comnet_usage_name) + comnet_archetype_usages.append(comnet_archetype_usage) + except KeyError: + logging.error('Building %s has unknown usage archetype for usage %s', building.name, comnet_usage_name) + continue + for (i, internal_zone) in enumerate(building.internal_zones): + internal_zone_usages = [] + if len(building.internal_zones) > 1: + volume_per_area = 0 + if internal_zone.area is None: + logging.error('Building %s has internal zone area not defined, ACH cannot be calculated for usage %s', + building.name, usages[i][-1]) + continue + if internal_zone.volume is None: + logging.error('Building %s has internal zone volume not defined, ACH cannot be calculated for usage %s', + building.name, usages[i][-1]) + continue + if internal_zone.area <= 0: + logging.error('Building %s has internal zone area equal to 0, ACH cannot be calculated for usage %s', + building.name, usages[i][-1]) + continue + volume_per_area += internal_zone.volume / internal_zone.area + usage = Usage() + usage.name = usages[i][-1] + self._assign_values(usage, comnet_archetype_usages[i], volume_per_area, building.cold_water_temperature) + usage.percentage = 1 + self._calculate_reduced_values_from_extended_library(usage, comnet_archetype_usages[i]) + internal_zone_usages.append(usage) + else: + if building.storeys_above_ground is None: + logging.error('Building %s no number of storeys assigned, ACH cannot be calculated for usage %s', + building.name, usages) + continue + volume_per_area = building.volume / building.floor_area / building.storeys_above_ground + for (j, mixed_usage) in enumerate(usages): + usage = Usage() + usage.name = mixed_usage[-1] + if len(usages) > 1: + usage.percentage = float(mixed_usage[0]) / 100 + else: + usage.percentage = 1 + self._assign_values(usage, comnet_archetype_usages[j], volume_per_area, building.cold_water_temperature) + self._calculate_reduced_values_from_extended_library(usage, comnet_archetype_usages[j]) + internal_zone_usages.append(usage) + internal_zone.usages = internal_zone_usages @staticmethod def _search_archetypes(comnet_catalog, usage_name): comnet_archetypes = comnet_catalog.entries('archetypes').usages diff --git a/hub/imports/usage/nrcan_usage_parameters.py b/hub/imports/usage/nrcan_usage_parameters.py index 9d718d33..4ff99a29 100644 --- a/hub/imports/usage/nrcan_usage_parameters.py +++ b/hub/imports/usage/nrcan_usage_parameters.py @@ -33,53 +33,72 @@ class NrcanUsageParameters: city = self._city nrcan_catalog = UsageCatalogFactory('nrcan').catalog comnet_catalog = UsageCatalogFactory('comnet').catalog - for building in city.buildings: - usage_name = Dictionaries().hub_usage_to_nrcan_usage[building.function] - try: - archetype_usage = self._search_archetypes(nrcan_catalog, usage_name) - except KeyError: - logging.error('Building %s has unknown usage archetype for usage %s', building.name, usage_name) - continue + usages = [] + nrcan_archetype_usages = [] + comnet_archetype_usages = [] + building_functions = building.function.split('_') + for function in building_functions: + usages.append(function.split('-')) + for usage in usages: + usage_name = Dictionaries().hub_usage_to_nrcan_usage[usage[-1]] + try: + archetype_usage = self._search_archetypes(nrcan_catalog, usage_name) + nrcan_archetype_usages.append(archetype_usage) + except KeyError: + logging.error('Building %s has unknown usage archetype for usage %s', building.name, usage_name) + continue + comnet_usage_name = Dictionaries().hub_usage_to_comnet_usage[usage[-1]] + try: + comnet_archetype_usage = self._search_archetypes(comnet_catalog, comnet_usage_name) + comnet_archetype_usages.append(comnet_archetype_usage) + except KeyError: + logging.error('Building %s has unknown usage archetype for usage %s', building.name, comnet_usage_name) + continue - comnet_usage_name = Dictionaries().hub_usage_to_comnet_usage[building.function] - try: - comnet_archetype_usage = self._search_archetypes(comnet_catalog, comnet_usage_name) - except KeyError: - logging.error('Building %s has unknown usage archetype for usage %s', building.name, comnet_usage_name) - continue - - for internal_zone in building.internal_zones: + for (i, internal_zone) in enumerate(building.internal_zones): + internal_zone_usages = [] if len(building.internal_zones) > 1: volume_per_area = 0 if internal_zone.area is None: logging.error('Building %s has internal zone area not defined, ACH cannot be calculated for usage %s', - building.name, usage_name) + building.name, usages[i][-1]) continue if internal_zone.volume is None: logging.error('Building %s has internal zone volume not defined, ACH cannot be calculated for usage %s', - building.name, usage_name) + building.name, usages[i][-1]) continue if internal_zone.area <= 0: logging.error('Building %s has internal zone area equal to 0, ACH cannot be calculated for usage %s', - building.name, usage_name) + building.name, usages[i][-1]) continue volume_per_area += internal_zone.volume / internal_zone.area + usage = Usage() + usage.name = usages[i][-1] + self._assign_values(usage, nrcan_archetype_usages[i], volume_per_area, building.cold_water_temperature) + self._assign_comnet_extra_values(usage, comnet_archetype_usages[i], nrcan_archetype_usages[i].occupancy.occupancy_density) + usage.percentage = 1 + self._calculate_reduced_values_from_extended_library(usage, nrcan_archetype_usages[i]) + internal_zone_usages.append(usage) else: if building.storeys_above_ground is None: logging.error('Building %s no number of storeys assigned, ACH cannot be calculated for usage %s', - building.name, usage_name) + building.name, usages) continue volume_per_area = building.volume / building.floor_area / building.storeys_above_ground + for (j, mixed_usage) in enumerate(usages): + usage = Usage() + usage.name = mixed_usage[-1] + if len(usages) > 1: + usage.percentage = float(mixed_usage[0]) / 100 + else: + usage.percentage = 1 + self._assign_values(usage, nrcan_archetype_usages[j], volume_per_area, building.cold_water_temperature) + self._assign_comnet_extra_values(usage, comnet_archetype_usages[j], nrcan_archetype_usages[j].occupancy.occupancy_density) + self._calculate_reduced_values_from_extended_library(usage, nrcan_archetype_usages[j]) + internal_zone_usages.append(usage) - usage = Usage() - usage.name = usage_name - self._assign_values(usage, archetype_usage, volume_per_area, building.cold_water_temperature) - self._assign_comnet_extra_values(usage, comnet_archetype_usage, archetype_usage.occupancy.occupancy_density) - usage.percentage = 1 - self._calculate_reduced_values_from_extended_library(usage, archetype_usage) - - internal_zone.usages = [usage] + internal_zone.usages = internal_zone_usages @staticmethod def _search_archetypes(catalog, usage_name): diff --git a/input_files/test_geojson.geojson b/input_files/test_geojson.geojson new file mode 100644 index 00000000..df9f0c4c --- /dev/null +++ b/input_files/test_geojson.geojson @@ -0,0 +1,55 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -73.58000127109773, + 45.49613461675315 + ], + [ + -73.57962787855432, + 45.496524875557746 + ], + [ + -73.57996357265695, + 45.49668114195629 + ], + [ + -73.57996427397713, + 45.496680342403664 + ], + [ + -73.58034707390021, + 45.49625804233725 + ], + [ + -73.58034697395713, + 45.496257942524835 + ], + [ + -73.58000127109773, + 45.49613461675315 + ] + ] + ] + }, + "id": 179764, + "properties": { + "name": "01119274", + "address": "rue Guy (MTL) 2157", + "function": "Mixed use", + "mixed_type_1": "commercial", + "mixed_type_1_percentage": 50, + "mixed_type_2": "6000", + "mixed_type_2_percentage": 50, + "height": 62, + "year_of_construction": 1954 + } + } + ] +} \ No newline at end of file diff --git a/main.py b/main.py index e69de29b..edce68d2 100644 --- a/main.py +++ b/main.py @@ -0,0 +1,86 @@ +from pathlib import Path +import subprocess +from scripts.ep_run_enrich import energy_plus_workflow +from hub.imports.geometry_factory import GeometryFactory +from hub.helpers.dictionaries import Dictionaries +from hub.imports.construction_factory import ConstructionFactory +from hub.imports.usage_factory import UsageFactory +from hub.imports.weather_factory import WeatherFactory +from hub.imports.results_factory import ResultFactory +from scripts.energy_system_retrofit_report import EnergySystemRetrofitReport +from scripts.geojson_creator import process_geojson +from scripts import random_assignation +from hub.imports.energy_systems_factory import EnergySystemsFactory +from scripts.energy_system_sizing import SystemSizing +from scripts.solar_angles import CitySolarAngles +from scripts.pv_sizing_and_simulation import PVSizingSimulation +from scripts.energy_system_retrofit_results import consumption_data, cost_data +from scripts.energy_system_sizing_and_simulation_factory import EnergySystemsSimulationFactory +from scripts.costs.cost import Cost +from scripts.costs.constants import SKIN_RETROFIT_AND_SYSTEM_RETROFIT_AND_PV, SYSTEM_RETROFIT_AND_PV, CURRENT_STATUS +import hub.helpers.constants as cte +from hub.exports.exports_factory import ExportsFactory +from scripts.pv_feasibility import pv_feasibility +import matplotlib.pyplot as plt +import numpy as np +# Specify the GeoJSON file path +data = {} +input_files_path = (Path(__file__).parent / 'input_files') +input_files_path.mkdir(parents=True, exist_ok=True) +# geojson_file = process_geojson(x=-73.58001358793511, y=45.496445294438715, diff=0.0001) +geojson_file_path = input_files_path / 'test_geojson.geojson' +output_path = (Path(__file__).parent / 'out_files').resolve() +output_path.mkdir(parents=True, exist_ok=True) +energy_plus_output_path = output_path / 'energy_plus_outputs' +energy_plus_output_path.mkdir(parents=True, exist_ok=True) +simulation_results_path = (Path(__file__).parent / 'out_files' / 'simulation_results').resolve() +simulation_results_path.mkdir(parents=True, exist_ok=True) +sra_output_path = output_path / 'sra_outputs' +sra_output_path.mkdir(parents=True, exist_ok=True) +cost_analysis_output_path = output_path / 'cost_analysis' +cost_analysis_output_path.mkdir(parents=True, exist_ok=True) +city = GeometryFactory(file_type='geojson', + path=geojson_file_path, + height_field='height', + year_of_construction_field='year_of_construction', + function_field='function', + function_to_hub=Dictionaries().montreal_function_to_hub_function).city +ConstructionFactory('nrcan', city).enrich() +UsageFactory('nrcan', city).enrich() +WeatherFactory('epw', city).enrich() +energy_plus_workflow(city, energy_plus_output_path) +data[f'{city.buildings[0].function}'] = city.buildings[0].heating_demand[cte.YEAR][0] / 3.6e9 +city.buildings[0].function = cte.COMMERCIAL +ConstructionFactory('nrcan', city).enrich() +UsageFactory('nrcan', city).enrich() +energy_plus_workflow(city, energy_plus_output_path) +data[f'{city.buildings[0].function}'] = city.buildings[0].heating_demand[cte.YEAR][0] / 3.6e9 +city.buildings[0].function = cte.MEDIUM_OFFICE +ConstructionFactory('nrcan', city).enrich() +UsageFactory('nrcan', city).enrich() +energy_plus_workflow(city, energy_plus_output_path) +data[f'{city.buildings[0].function}'] = city.buildings[0].heating_demand[cte.YEAR][0] / 3.6e9 +categories = list(data.keys()) +values = list(data.values()) +# Plotting +fig, ax = plt.subplots(figsize=(10, 6), dpi=96) +fig.suptitle('Impact of different usages on yearly heating demand', fontsize=16, weight='bold', alpha=.8) +ax.bar(categories, values, color=['#2196f3', '#ff5a5f', '#4caf50'], width=0.6, zorder=2) +ax.grid(which="major", axis='x', color='#DAD8D7', alpha=0.5, zorder=1) +ax.grid(which="major", axis='y', color='#DAD8D7', alpha=0.5, zorder=1) +ax.set_xlabel('Building Type', fontsize=12, labelpad=10) +ax.set_ylabel('Energy Consumption (MWh)', fontsize=14, labelpad=10) +ax.yaxis.set_major_locator(plt.MaxNLocator(integer=True)) +ax.set_xticks(np.arange(len(categories))) +ax.set_xticklabels(categories, rotation=45, ha='right') +ax.bar_label(ax.containers[0], padding=3, color='black', fontsize=12, rotation=0) +ax.spines[['top', 'left', 'bottom']].set_visible(False) +ax.spines['right'].set_linewidth(1.1) +# Set a white background +fig.patch.set_facecolor('white') +# Adjust the margins around the plot area +plt.subplots_adjust(left=0.1, right=0.9, top=0.85, bottom=0.25) +# Save the plot +plt.savefig('plot_nrcan.png', bbox_inches='tight') +plt.close() +print('test') \ No newline at end of file diff --git a/plot_nrcan.png b/plot_nrcan.png new file mode 100644 index 0000000000000000000000000000000000000000..c780de3f1e96c7a0462569834f4f66216736a0df GIT binary patch literal 47568 zcmeFZc{G-7|2KL`Q50oP<~brtg$$V@Q;0}rDNQnlP{~Y@q9_f3!Dzt^Mw`-~YC??&p4P!*yNfc^=32`VSB!lj&AOUPdIOu z+9tJW1D}(Jhl{(y#*N4S`3q7f+zxGAZ`E@KFS5c#d!IXn!cay2p^B4WSVy50D(%ux zHStayYV|T_X`b0S>YI74z{FQwdh1fv>YaI!R*mLiA4k`1u|L1_JqP_2^W;>gAgzWbKYaMJUfzADz}31Q zK7oa=M~!biC>jf2Y23^k7r(j1p-Xe&Td4>2O2QVt-k%R=UqilPuE~ro{+97(5$naj zJo3CMa^bhMU&VVb{MMSxgs61t+ix>{e)c9eCnY6uMg&E;4Skdu`tpR4kw>w7W@3c@ zY8@5j^y$-1&G%ciBz<2e%FDTZ4I7@YE5`H*819m&2?KtX}CzrUYy_SCNdyP7C& zURISgah8K0vMY-`2ZNfAHs9BLc<|NxqStuM&Zc{2l(TnD?{(qLj##zdF@B#{lKQr4 z-iWhDx%uel{LDV3v~#%Pw-ik#M$a#0XH?iWn2+vi&ddm940Vct0X^}hAf2pNax%X74F zA-}(WalnTtIQgBEQvU22Rr~1~$*iobi&w6MtXj8~kB^UXqPAnwrnvzh~jzezK~sF(ooFC-?pp zpW@Q5eeGpsqknMg==~Vkr7XjO>DlSN#BUE79d#LMEoR^5+*1DK$q6b-oP^oVdwa7x z`uh`ds=xQtUF~Zvell8g=*`X1-@l(@(T$Fj{UNI|kY*Lr@RmJI3Z;MMeUE+2r8@LF zQPsmkR!?8QF>{Zo-_KXuDolGT+EQBTmaxpMRC(X?OTA~KbxAoM#~Mz~2(uh(eo4ty z#+fV!4<5|0DO2X$=6t@?e@1QhZpIxaACw$=!_)HAmwoq5MO8mPMJ6Vu+c`PW5v&r) zyDp1N{;1p7m|>K%q}zXbeEr^Ri{QGe8wIy)VcolTFNd@(<CWZJo((r#(&x7%@6&4wiJ6YZa+Cxeqr6V)vT<+_4Rt%X~yQ}=C|!C zLvkNI(rhpFSDCc_wzp;EnBA@53l~;xJ@)Y|-m80VW+G$XLy^+iAG*Q2FF9^nTjVto z6&uS!*-?D*d&jqLS97dK+MbU6=+UK|jf-PF`TetStfQl2=hv5)(_rQbQc|Ndm4#-!7nAnuqk1sf`Wqdwr!!fw&~yBBiSS^Sc?4RfAE;O7j0yp zINjPcd=ZV9n2OZ;X=E zmdVM>cV0hHYUDJJ8$ZAC6T9%bL(D?=H$E6)6x z3&qOhS61d3X)g;cEmcPK3rW|%Zr^ZQbxO)md}jOQFWoiKd8d9Iu`G03mYJEE`}py5 z6tKppzFxs?T1;pToa}6DG-uA7F=~F$(P3*@d=f?BSb0S-z3b0j{iLC(pWn=jPf8{y zCrdj#Kd*N6dVGACQOeHFwx_-o`PkdDznX0dyvGEvGAPW<%t=F&W8G6l?NpycMLRn? zmoqZfU{U8{J^6_?iW(%A?^c-;8i=Agz+2#8Z@-#{CyHM^L~Qn^*Z{VByqv4RO=W-a zYd0@mJR26a9380x+b!hQE#9G_A(Nuv{CwH->$Wl2+1XX(Z#&Uui;l2-#R}C6oLfwa zlpSC6xNWd1GVw@`@5YOHV{0&QD+J*JQm`t5rM{s*a42|)C8wk`J&wXtt*or1KG9aP zCS6lglQfsG^XIFu!<6$2Z1!Ar6jF?6AR?{4R8T0dLsn-Y(1Fy1W zR+X-4`zJh`4Ho&@9xdnbDK81@UW|`lzHws?<8y&H9r85MjCY&&qJ|me*=r^lczYLI z^q|^tOW8l@54NYDpWhFw7rS=vuKE7uiR;Yo0Z{EyI$@Lns*1M%_Wg;pqZ8+IpRi%*`5VC30CTYi7mc;E|2Ju(WMfTh= z=tL`@oEa&zJ9cb?_@0BjaW4;;7rHqH44xV5T4r719l$JVVEgq&42r1K?~^QMt`l`n zeJAW2lQokMvv0JnO4GfnJWzV5&@zhm%sP zvfrcSssGH@gKutLDE1m*E8-F73cW0Pq1bO~)7c@31k-zaS<}nT{NWMQimJkE89h9x zFMFbmiz!?~OvR<+Y+n#xj_<@U*(n+OpGaNXb|T8Hr*?&7G_T6@w`saRU!`PcuR414 zsO<62EV$pAXgeAc+p!jVu8*Km#ml>=_mvCb>6ZAo=R3D@rl+S@cR-KTylX09WY59O9EeuY*;?#Hc~Cs%+1H>temYjd z%pm`?W|mEvb*x8!Utf7!8xN3-_wS*#uWza3G`P9l+jEBjU7qhVBjq-FfAU1H`iR{P z1lmY|Jpv6Zo8eI1rVa zekS?uhc#?$A=sz4fzE(@*uM|rS+f{8v-(7{%&k;;4y>fH%d9eFRp-C}-S+LxnlI`Jiz03CK-wK=`UVpYHp^Az@WWU0gR=g*x!JrEW*y&D9e z!BSWXI1z5(^s2tTAzgo+oSfY9!3&X*m8rWfYrOo0k{FZe!1xp?i`wG*w?t&Bg=4|xOx1?}wZ&jGVleE6`{W@Fg7 z51;ZJv^sx{b=PRlm}0Bkw=5JWK|k8=;prJ^c~G^j)IZYw+v_B}v{PepaE35HkOr#! zlZ?^_GfuwN_pW(b$#qC&0CLSw|dadtw4PA}q zQL3HrwRn2UGvBFkNk~YDoJXHwUh^%7Kl5|Rsk#C&w^7Ck9@P_J7H;-YIyJsrSy@@_ zt#FLCt%C#gp+kon^U!7;%pV;wjd5K{OH2RM+D+7H=J)qX;JKuf6lyfrMxUL=#>N4= z*e=e^%N~Ba^#1+(E^cn;;^N{)=k#@TD`%&E($C)SF&y`zd7(V~I$lP7d`^1H7P8h2 zQ6HkXvVoL_^{opYg=+3K2*227brUUUEITe*REXw_wGr|&d%OOE5r?UsJkLb zd646Twf5*mOpBYBJ}KB?YXpM=U#R?<4a5dmPWyI^;7;2gUtdbg%CbnROI=0JT3fN= z1^RPjYN}9D8_ElRk$qG4{%xeJiM{EMNV#{9UP3}*!@dVXHWTNmsA*Vc2HKtl(rO0k ze)Y(fm6qOd@Sw=SSJ#BAxOjP^u~9pVM@pHCoWJr+e+1Ihy|Tf`yA>Dk@u}~VQ44_> z+o>NtYF<}Tw4y7To1d6}p{Cr}?zQvV>l;5kk56@mf<`Dc9S5Puq3Pc*KcJ`uAR~j))mbGaDXHHx7%zMHQp2Vq*Y2H-(Wji8#I9{U zes|P2)meUq;o@9deWLtkn<;cV&34hFM+eokY!uJTD~jmFQ}||{DtQfa5wJ!nCy>3X znm*}1U>Qgjql1G(YFe6IS5%N z@}`{Y5|#N$!LvhBnFL<}x=@Lg@v>BX`m`2>o#|3g@=mo^02=%yZ?IsNFJHcTm{G}d zAhv;%=Jv-{ZTG>3Bx*J(%jMkM+${yJ)Ie@bwQB0>nq~U6!zm&nB6wF{AfH#y|p4g~B< z7eGr9Ii+;;!-k}~R(xCLz z^9*>DMets8vL=0!?uD3`HAkB7UjQ=QEygQjA2jMP+|j`&WKD@s6kE4;tsQn&#Zhbw zkMEyN`}PuSea|e1ZY~!88wE_+4JeP=uWaw&Kwsh(iys4tCIOy?g@>=1K1ls(MSZl& zyjYQO26nHMRT0ZKNh57-?XbRIs42m}jvPJO{pCa%t5x>=MEe}2e=Kknys7AueCgME!Eeg9xu68ZZ$1>25f%0N5BHLdmIY_)>+6@~#OtOR z>)lk`XOe#BPADKjTy_cy=;-L^YU?M5-|ZX^%oth`R%DWCtU37y3+!W&r$knEwh=IZ z$-TX+(8gai>u0G2(|J$*5XM>w10n6eQ`FwIYmHUGi?PWuht5AOlB+4w$399YUB7bk zCJ&0r9;Yr=CME%eXAzN+b>=;+9SYvSHo=K)az5yQcN;J&e{CtgUi$|o| znOj&y6gBvViI+V@NeIc#mOMM;pf~(=g;?8s7nX4SOz*38K|w*~O--y=XUvkKUQCyY zXIL(_`j3Y4o?dPJZB9>JO)aQO_tPBTMsN{Q!aPb|9d?w8z>9%EZs01O`2Iyy$hxro z4Em}0zJ2~KKEVmncIQUtPP|QBv2xX_VEQwK?ak4jw0@0`-@bP*(&o$@E4XMiz~I>Y z+>CwM)w{-tbDK`Mb$UnkBDHJ-;LUjlHJ+cyVrID@DWSY1bP=++#{z(wfKX_j;+MP z0^z6KF+Y-1SSU|cFn+xol>+Tgx3grhwlMhyR%AG{sJP$im;LsTKO`Ch za==1v9m{BKkz}A4K5@2c90Xm8INcXHaAlum;Y=vC*yxdaXk9y*b4tGWqD=}EPp74( z@@?JvxLhJ)6{oD&sJm&8!a&nK(SZniFa&Y4uR8O0WDmSpov7%;1PZ1F2RYIoR^KBmcS}I=$a)3RkAlkwT|uV0B(wtBep)eTv{h;~WGiMmU(>x|#e#TLG? z`BBOqaq~-w{|p-{Fq{58tKzMw->cBrs;aAd)^(&y^SZZ)y}Z@-0nFbbn1qeHD&64Lo0S5M3LkG3A*G6YV)SMrkXNJ-lIGE zuCF>^qhIgeBXuH+S8&9%_uNiaiN3k%*dNX#1+LvJoc-B+!EzE`Bmea(Z$Q=eqYb! z21(eEUoG$TWG7#-g#NI^AjtLx+2Pr#9CFbn^og-`zOZ!#uVDUS>{v;dLda^8|trZp&uI?qdb`S(~`1w$y9qYijcUh z+d$0_t&e}b*N*-B*P*yo0Tfd46-U|)^S8COv?%WzS>`xll%OZ_`PM*l4kNUYPTx6f z9LC2VoQ#L>mynI_;gK(vAT{7?7285>N?GQWw;}6GT6lPPMpGg5xQg#9uDL-zX$+14 zpj=)f#OK>?Dmx|~g$;1vKx$vXz5e#eOA#rY#+h;P@nW2l9iRjd#tKF)2psBv>A!gk zpYxA0?9?Some5&hz1B9CN2krReYT{LH8*kHd-wa3OU{;-mO9C6UT87pz)fu&^c?)K zV(>+6ZEdq8|B1Qi##}q~#)m%O80Sdm&OuR`-!&{M7Lk&YBG%tl=zgcKaf!TJ$m2G! z+e3v>6&d!twc9tfqiP2EPk`|(r=t`1XoJwvji*@AbW&1M5;cYu3Ih9$@?MY1mowZF zX7>|ax)Nh!V@D#Koqa-2w>>_7z2UexlueW}NsqRY2?d~8DVwV*e7->?c>dgg39RYd z3LeWLeKFBc8X6l_0sV<)+W0e;&ca$%cIw95YJY$KM(P*tDiwkwefO7D|Hd8`l#()# zm6VX62i!9+a7l7eX~J{7+dDigWhta68Z>Q@`flO}lf) z0hnC#{7tD6?Yk`}KatjR z)9YvNtEp4eC1CkfR8;X>j$SdAVbe1DCYqO*S8I8o%k>{X>+d4TdhhkHIQ)wpf%ZEF= zd5^W1TFK=>me+*pW0+&D1XW7o{fMP_T*bS0KLhJbVu4(Maw%BQluuUXB~PE)9X%R3 zKJL*{2%Z*Z`^21-Nj6J z!j6-JP9V??8AgHxc0ebF(Y4y(y&DbhWc=KYrc~qgr^fqYM$T#Dv#^$)*v%T-ss-)A zFxz5_U0FE1E$9{D*R~w(0;b|E;kfKoW(A>o2{m;RFe(_v@)X^>bzn2D5Pp*)e?TK$ z4O0N?umc!~*K_x^J9q9hc(PG?U*CuX0Z`w)d!r4#u{BubPJn2avUjLi0anE)pVijV zp>KNs>|Mp9bSemVc=ucJR(x!2A*N2n1E9h(RHaX0@&I}eerq?VAC zH8=fB9si8=H3~K=ol2E^>}{0Ugg^iI=~E|2aDiJ-gjhdd5?i`n0;G!1k0dy^9uq4u zz`BKI=Q20#*}3ay@Zq)+d3;idqElj*Uy=)f4$dxDWR6Fsq5m6=7YcE5L&WVc2w--f z9ylhiD`W zs}+Z;M7)v7nVD{|QUX#kGuK;MS;=5?GoEyxV#&|XhwZTvej_!pBvGn~Pll4ov36|| z6j+#K!I6==rOvFk-YL)-XBrD1&fW zoxT6bYHscez)G;C-rqGP0x9gc8)7kJC&FVC3=`C-g>bx3|8&ex6+=&Fs%ND$7@{tU~o#!_H1yXvqM3h^$Ij z(0~v%>^6S<^>F(F?(Va&NCtMP@OM0Q>Qsf`PGw=oiAHF{_NWv@0{H8^neX540M(@L zeI_#?o>8AdU7SQH*r+XT6IsPw-Q981+|wNJCba-%A?=HhJ&x*#r&J9?@dA8>u;Co> z*TKudFQ6AMum%+9vDqniQsyQ1Kd!<$aK+;mC^jxGD6oYt_p#V(BU#hB5rwWQsypm42R&52P|jhRYH zN`hvFg_u?_@F-61;$_;M%5V&^kK{LP*bSrI(JF+g5;qr%6d2RBr4GXoNTn$_t!vmYNXCGk~1+8faKVT`cmN1sTR-!9z6N|N&Ao1ZcR;G!j(R% zj}$|=sD6LuCO9Ls=b(kfpZHp?8c36be>fvDh9aV)*_Ad+<-p(TfHE=}v}R2vBT2kW z4{gDYu(q})X$R|4zxC%&A3Aa*0(CV7hMbGLyTpf8ld-oF64r8YagDy()*i+~Z)nkT zzM~mNjvqD0#p%MrLc+ii2-pEPA8RV*?_+zw*liN7H|A}*wP1$LZaU#i=b?eqmPEBF`sAss3 zv?=*bw0gnQ2!zyncW-tCjKFSay36h#1>$mQxJ^YsaoK5qbibWR98mV8?W>lPd;vrV z$c7sp%meYj>!Ab8M|mdRBAVY`Co2t&)U_ncmGS;_q5GkLU2h@YHNut#ukJ#}uIa1{ zC8${Mh63y6gY~NiZa_sxJmndXkn7~A9cfV{@&g&3pq0i=XxGt*3*A2RXC4ZA`B^Gz zY3CNXEbFJ!fvz_dJn5c2dzPD*rwXGkG7I?*i}C(J=}IN= z!E`{li6;-oIp&v;TcPEAxV?b5>sL2<`!>zW`W8f@G~RWtHj=4&{yZ6Qi0u5)CNmp5 zXsVO_cWzNAB;5t&odk=L05~cX!RwwEx_=vmh({rt64sq&`yYTabdzKV0UsYY(o^`b zX;JmnLw|qI`swv$7?lSVVRXxtD3{B+S+qh_WpikxO?|*h^&NhPYo!Yp5;K^ zp(0^$ zCgRteVe+Aac0LN$oM#q*q4NHo86)(U)#+9RE>yVF)n}<}A_h>bSP+U)hYB8(*DGYj z`v6W3j08JC6}l!-6l7XbIK(}nS>-y`v1M5nJ}CbI{h+*}VhP018i0Sk%P(_bxE^aQ zV!bT7TgvT|jEoG*&uY&VC7y$9l-sJ*uG>_x3Mu7iu__1MmjdCEl{P;;xDowRT}z7= zomSFgdw5vi&!m)o3jWw+J=i*YvViDlM(7BBg27-y>RS)DGPFCn%koC5-l2+G6rb)6nRJPYNgp}DyRp$fXh6Nn0+ zwb0Jb{@ndOd%v00b;AtYa}o|~Z|B8+qNczXry|}ud6sq+OWP#WG{zI`N%}GEId~$` zPDoA*U07RRpS9L_&mQ2CP&!s|Tc~f|2n+#vErGwjkYT!*kPwcxX!kzDC^t8EwWKfB zJ4qjmz1ywwtgcSi!`x9pRBs(V$6>?NRD z!U^ND5UMnZoIs+|C==K%99b!EfF1CVNotCUic0*oYhBQ@2#FZ@kS!70Lonjockc-L zZX8ErwFfPYSM+fUkUT6u;RYMds&PEgw-{71_0spceY@>gxKjfWR8-Da7#60p z3Lq~Z)V=%x$=W%h=~e@+Hm2#a>p}78?d_HG{k;L6ZpZL&6oBLs3g}S>h`)&bHCs4N zgeT@ILi~Y&PocmSCuSSTJw?T_BIR`+&(Q%jbP}lL_MJPT_1liT7dzHgvKC(z`A<%? zcR{H_+(B1FSlABOjq+fBots5H38#@1WPQ9$SX5L9WW4Ai0#u>1h%! zg49Bifn%tI{zG5D8;=OZ)b+UO)2faacJ1j2*EUkLUTx$$8voy=Y2<&(@alMU^$ZU) z0Pmt+(7ii7^L?8iticS!q$L|9C1uXc`+Y6FAc+s49VEQJ#AlzQClJ(+4cYM`Mvy$9+|zTX zlA`dGa5Dq(D_zhNh)xm0$SW0VQ{=G%Y{op-mg>N!wWp{1MTy{qaPh5UUl!gW!()9+ zcr$ba88liWwPh3tFgwtJ8Xq6uPuYPrfXqn5U~>*Ng%BpJGm;PqKxTHsh7F^28_PP7 z$0ZRkiY<0---qmV(-R|%pqk?&?Yz)UssZ3tzVBor31_2Bqpq9X!dL4$dwPPgX_CR8 zk~e{I%}#y0MMS*MPfkQ5D2kq73q6o>7P-8>!NC;7Ybq4=ugL~LSF5O~AfY0#CA*ID zfaD&ua5}~Z^%6=-R^zMnC=DMzgdiIszV)iCp43(PGa8NoRqmSB39l=>~)8teJm zpVO-D`Bd(H{;hiBo7^g4Yg7(|Qfh!Xf5w?+nXlpD;pzMIP!u(R@B%R9%2%&eQOF8C zb}aFPGWOkz1Dlefhz8w)vLg28=(BUnNaotQFwD@C?i=NmJry>e-IXe+(|`sBs-A| z!5p6uFf|tMB1(P1$~ygX30!Bh`E&@_=RW2tPh=Cg@n=2;*%hG zsF|surJ!mOJCD5a(D&~#2tMJ-K&_&pR8&^RT)9Gnpd{t&)2B)#TVrt=F$o}jy7Rlt z%&zX*yIwR#J4i)9z<49i(aa5<@;m!)_kA-OHz0wr*a<|i9^(gO3E(Lpf%oz8@pZ_^HI)S{zKQs*uUtC8 z8HS(ca#HLLIzMx!m~36SHmQGkM%I_%oc`ru$}4U<#PR?exVXBi!X<<9NuO<&T*SGs zAJ)Wa{J$O*_&*7~adH3i5W~Z0gA&A%NWP`2swzW(XJNP@*;wmN!RC@vzv!SFR-u-= z&d>Uw2huqbX&^6;q>Ru9gCR5DlQm!blS|s2Rf7oW5k$J0g9AaMm1M_*1Cr1gM17)( zLnS8?s>I%`av&xnB&|p|6#>q(sACFG(2eoc_b|<{tEt%Q1eek&7NW+)uHVy;W1~XS zQVI&o-ps=!OH}sfB%du&-aYr&r%j}xSrvI09UfhHoEpLbYT?b0Zwc}nA8y^B6ukGo z$Ud0z1Eb1Fl;BcY?!2WPPkR{(M(ID9{MS@SHIIR^ zmbbSYUUR{IMl2c|dujjzvZCMQXvz`{7~o61KUSv%`gJ2N1}X0rGC2^WwtQdZCdpM%{%p%#BX_VZ^Y*w`98-M&62B(|TS zo}zkE&ISc7EhsD`nRECqM8d+H1Tm4%)V>lV7nE$Qky%yu?j18WH;D?~?KXPxw^5N~ zrK~?usZhJHOp>y*FZ|UlmNPK04G`*ulpT=`5t!(Gb1NF*98xDJxhL9{4;(ybKR-Jq zEiHW(c@8M<=U657`n^5A@C1_Is%IX&hcIy`q+fO9$w-O%_~lFGix=8Wd92z}S1ar4 z=r8T7S0n<%t9ErBhbr$wZbgMQ9y{O zn4m`kPGg}3KMN|n#ydollJ4D`$-Ay|iwdxRc1_$eCVko+jy%y%O!kg)rHmVnZ#EGd zd;9k7IgLwyzL`s1O+iL3_%$l+4`E^6qo~yv>v}kpPI<)qLYwFW?gMR1K?|l(@Lq&K ztZCW;rLy+GrhNfD@{T^tIm_tTY_VLD5AR8zwEg@(v-;D9X}y;{JKWqh*@Hk)*-#}L z*I2%zGE89quimvsYzz*Cc|dsco!^)qslTPdi_qzY2W^N(6VvE@jt%ep{CvfDV(NMr ziY6++K3K@?10*eH<1;+ve*NEj79xa#y*IcH_V(VY_BtDuk-vHKlLn9F8n>3dkP0zzt*x!?mfM~M$d|!l`k6blnbZksjO>GHGnx*jO!E^-q z_;zq`r6P8P9TxQD$u_Vj{x}^HozuG}+yCyE5P@cE;uM$)&sDm_U%yU2p|DGciO94D z1_q=efS7bb8AlH45smJ6rsG6eR7gVMvSKR3Ptpg1(gklna4s%O7yOGb{ue@jvqF+g zs1TX{TwtKMF4b^h@$Y`|?K^^CZP$pe|c6?tFY&F-cGR|lfj zwEO)84%@WJSi6e6)WG}oiO@{InIRPu7Wew5(!HpHzqom28qe*-N|<(JR7crQj?(dK zuo*=0EK-0-@?HS`iCemBv0PvBH|bh-K*dB3Vm*WiI71a!sRZKy$3hLVWR>~bubrw5 zN(dNXVG){bE%9MS0VfC_YwH4*<1@r8AZ=^FX??$D^TKU43Qu43IX;a-9po##Ju5U z!l7om9e(Ox5{J6!5~lL<`Ub&!+ot|NW4072(ZLwmQCk6%w+*k`}WmEm3e-XfOie ztaz10?K$VQ`2vmz(-98lyC6)*DvJb7_s^& zL7iRng21~m3<-;aoJRZ1vO2$ddU!N|jsvkqS}`uJN|sbC2H0Fk5O5P$2p)orZ8>En z1S@>7f%BNv#8*bu9&eWm_?aLq0XSK~7*v{{pE*Ga0styeh;Tjc*NQHFmhd!}uDD7> z8A)CNCY(I3|fv~v6H_#A2*%ha5W5bK#x(aCRV*qlq@SzBg zLt24|LZ;8P7w(@)GV4*73+FH!MkaTN=>@fa1%v|#DR%|7{>2@tnQS>wTF8u2A5!*Y zDic8ibj;;MWF*k3t1Edx?(g2rvVY`#15yb@-D+sHF&IK3Gn{a>LQuv)mz!7w7O(AP zx=R;aSIH9Zu_e$nIJO?+07jreYxR7-bMf}cmt@j`&kl?hSQRG2FOtJ(jfaXAiQAA(}Wd=}e+ytsb z{yzrpQY;=FL8g}BtJ~C_j~WZNO*~k~q-%@!sBKV4hye1(8*NH8V6Jxb_J&|UFzGb_ zlnXo}QsnUP7JAs@W9wsQrl#yb%TdiWpwU7uB7cB^A<7Qa{g##%Ec74%t)(-VJF!j|UcR#~{;ar$(v-CH2YY_Kd?O=K&yZ;fz0JEHh}eX-`RMT`L9di1dIMk-#w zd1xkNI1}vx@>LLopCuIX$)Jm{c{00twbHh0*4-5Y3Z;J_%*PI~l^A#_kY6IfQCVG7f6$ z>cq&0W#>o$;BZrJDAdU`?F6a+y+ z;8hp7Ohtioq){jPpGYooLg>l*J$};12TV+lNga;2WDpV+73^)@?sCyUoF2*tCC*1? zBzX(>l19;mYhdHOW2h9&l!E}b9emw*CEu->?9Ds=Wh;XT6$7XN`JqACl zB7>O7j=tZNRRW2UNX)pvWJvx_2s=ZUz>~SMVc!z)?bwYrJkV|eVg6%gFK7Y#;P7>nRnQsTyBq1I&){RXJpO9laK z&{8zWY`bY-4*c6W~j;{cj(EXO{T< zq@j%d{=T2kR#@+t+*v|_Gfl>XiPlXxE)cC9ruj+rBnB6SW1BM<fcrV+P&hG9&SlqWUX^8xT78DD_B5e;GSjty?{QyE| z5Rq-2ouiPzg*H!*+xqs!)&&e<^inj&U5qtZ?SBs)T8AI`E2@fz|ML`t|54h=GG{b= zJ&4O%NFsD~!9Un%djq@5zg~Qy(1+&$a32A7UjbHx6?YMx0lk}CF#;68Wj1mDBpf=T*7C5g?G7Ef6Y)=gibeSM zD3WSuQ1C}pp*7$ln5}`t&y4QY`j)cp{Xcd?@TL^3a8v-XtL<^CPuNTgT&IP$ zOx8Z`NfIb8-NwJ`PcF8oW)KYK;>!b?A9iVLm%~tsqq{4O`$3RD>CZT`z@z`|GG}LJ z;@*7d@9m`_k##LCL22pL1j}O7Kx#uJ*fHW;8Yn&>UY%dRF5R|mn~;czc*)Ae=hbB> zK6ZD{o!7L?F{lbDC{48+N)18wLJ=`LJ9I??-5ltZUqpoF|6co9UWe&RR#@o(EcDdW z)I`m|ZT(nwrmUiF@m7m7r0pz&!a~<%q}5!4TS00(4&w;b5O{{+S3^vLQ;4n58>0L>J@+kOB>;0}mPV@qM&c!NWDjAo3x1pf0PAq7D!%-hOg= z{Ht5xsFn#^uKJe4od2%>e8~+&V4sDi+b|6&R6aIbXk|*dHztZdvV=c(ma=fsR~y8>zk@+-=!Ov9+~O;DR7ng<;$00J`)Tj)zP&} z+=<#`U0>{^AG%|F7g3xpR@baI+1*)H2OoBPx;%gy=B;b#DZo2#Oq)Z-4Fv*NUo>eC zZN1W~-JcewF0tf^RbwJv4XIA^7vfA*6l4gsOMr8JG$GkoWSEoT_?6Hgz3W@`WiLot zr-hbbE4bMV0WMDHG+mxcl{d>b~b1caL!KraR* zO@ixh{`goza-^Bg-o0!vZHO~WG~a(~!vV3QU#fdWHO+S>i4e_d-1@rj*MYY$mu3BuqAQi z22q44M1sbNAcP!{n;jNL1PE}fU`GN5$izli7}4AO{QV*S(R+D$1z%NNtP@;1t=*nD zmjmgGyK=FNGiWEd$Z=uut08LM*ht3rHNZHiD6HZpJFr1W(A?RX0mr_eve>^(-Bqy( zOZp<{6?TQH$mJx6nnVJD_2OLZ1EP(-dRD;y<3U_4Se; zSDmd5;TM$Uri%0YGPi}BY7svQg2;ntgUDlg+&$@6?5QYr3SnumvqDY8gMm5Vb)ag| zBBrsDSDBm;V0f}|;lec1B8;t8Va<0!1wjs?J91;`4gfJD;AZSpl2;=6dkK_sYATT}iF3VE@imdIs0II&Le(#h;Q8BE8_C{#o0 z>eCDSzVBzcNn|rVMq}BTGv~SFH`yd;2n1Zc$_}Un3uLm9ifL+UDhb{whA;RDl}4R) zASXS!_pU@*no%-)Xpk1&pXdT)+KeP{fhx(k8B7_Cx^-KQutf1FMIbj`0RapF)u8Lw z*CAR-&NiW7Sc%ia!(+6PQKh`4p5@eZPwvrXDZ-4fl}w#-SuxL;g~<$A$%)&tBmj+2 zy0qI@Z8GBnABP<5($d8p9`Hblq?yFvV{%lLe z`Hl|Gv``D$W=uazLeh%NVg?j}_$%?yTOg)n7dr*@ddXSousWcWF#vTqg@rF1$?yy+ zGKZ|wMQMF>Skk<(&A?P66Wd!_EWLAo*NEGc`jw{AQ^=_k$mQHUz)jZpxDUG0G^jVp z`=94gQfOb%MFu~ik90#AnZ&G^a zKK+79gejPHIHf`je+1ob7O8~EfqOa9n8=nr`e7vsQWa1giTmL2t5p=DBkbAp&aX}u z!KGUF{e^DAWKN#a(9~3of{8ibT*l|1+7URLhMZl2@bkj(J5knhte;i@WYFI@fvYER zm5M-bu%R_ZFK>^#`~Xx&24o2Z&68fz278s7crTdZw$`*`a?}Mw24=pUk`jmj^@?{7 zA3VSW;yJ9&4%kby7yWO+C>+Uk>(L=F27+p}bvtB;hFm-9)H{dB8ETWiznmbR64H7s z^6emS8adEpsZpLcpp_!g5)>0-RO$oCITFVq*nZ5l!&6k1Pp9nx0+n8O`2!2XmKE8_Q;y&2WOIKzP`2jYYDa+8Ee7O4MtO- zBxHC7NSUoLkvIr&j&OXBk-fx&9`3?EdDrNG46(?QjOJ5S_q1r zZo!>eB_GlGF-WfXIwzhYn;C zbpi1p0!siPy2wdi0BNGv4ncK6?vv)=>%?%R%L!P*%$*a??K7-_13>04;GL7b3m1wM zC!DyXiXknHy1ExHRcMY zr>@N6=8({^iMV90Gpt-?@f~El2qa%J$gIM#E#=Rj(~z(LWTD8c>%RHh7JvFcJG1I2 z9vZoWgbGtp)7*xvg5c3!&tre_%{lCUXjNn|l#oJH+gZyGZ{&wWh*Hq%^s_T z_kP{B^BO|{KAd)UET^R){86kIhqsF+dnzT3X(ReInJsL}TfEdb9jpP!`c>r0I5;x? zO_dlPQ$XJD^W)=@Sb`*iAIu=S5#i~hAF`quE-l=E452;ZW7lx3!{{HZa#x()vSjd| z$5L(@BV%@VyZ>^XM_|erdd?n@`+M&s|DAF+bv*)K3?5`yw^c8}^zUcm#Ag%SdHyW0 zjHT2YGm#i=3I*H;Dde>9W=56Sv!G0*xsb(<+)pUs_BicjYCze4ngu&az==VOt=4I)s<;FfasTU%kK70@}6Cc1!Uy90;wpf*npK;{J!W5Oz^HS0yn11^F9 zSSVr%fr)j*IS#=_F2OTz|g{*_o*z&QVvSlFTU?N1vg92bP%)kH4$_!@frXJp}C zt-i2$9^Jqty;~bkW{Bu_%LLZakpzR$%k;iO8CR<4DP-~x839j89)b{v-hdGvI~@5W zLJ%PagpwdbPxZ#UJU}65+clEYw{UXLWmfZ>d#-F7vp{%}Og&!P>KMV8u7Bh1`;(bB z1JbE)Z<6Y@%1>9nZ7<#IK{4qai&u3F{+II25pYR=LFRrWWDO!tgdPBeraW)bK9Gqd zX)baEk{&XW>yc)}S(N)a{N#7-v9wHdI)ziCaC)fJ`Y3xp@W;!$-A*uO{ERh1vw2FJeOu z#>K%par{VjeHT5kg$Tq)tq&lBc0WL-aMGpexWc#7ISY;p@I6w?DkS|)28j^Z!m%cV zuu^uQ953(*kX+EwJ3C+#vcDD{$rX zpa4EM<-D`+u00tVQ9flk^d|MmbK-Gl@(4+$(3xs$d85pOc52H`Imo~Db3 z2O50I-LAiiWgdztv8eEr8h_p=4i;b*0n(TSc!o-|FqA89u=vtUx|vlHP>z7iDh3g# z=|H@M9P@xDm4}myh+^jZd&p?tKizF~KYRP+j7NhwEDUKc%o0RPzXEWV^l)p-{ z0+eJlsZNliib22y;>^PQs>nwK3rdB*U(mu$(-2NHu4FigCrqqabTH&i!jyb}-v(?+ zHd;B-S{w=+GjoIC;%B|2gLoF6Ip7(=%Q)0k+_VBHJLm`841Np_<9V3s$NqikczjX} zS-OC;6HAjq25wNrlN14bh>Hj7(u7%fp@bQ&NFQg8Lf)kj%Hxtc0P!JvF+iPxbZ*S@Tg)0{@2IxQp zZdozgVlZSqK*4_m)&5!oo_O?FBcXWcx1qn0c^y2gyWNYgBEBVdU}Hv34&kquEyUqg zY!R<)Od1>@@>YydkfHRZL015wq9#|z(v%c5iye?(}{B^F@hKde-}w* z3^c(KBe`CP{C6W_7WbpZ9)&TWg>^v3F*x87@`UHb%PrS2( z193HNG0p(6xt?vK^?4En-SE#SC_)5y-sDWxM%&-(11xa84XErsGvHRoZ}4BS>*Y%(w!z*My_@&lHA(JG#1-AjplG0Z<^LDd-VU zq39vsp_n+}ptyzc8MH!_Xc7n`C;^+X3ONalIx^mYDJeSW9>fO6ecN024-|5HoH~~3 zHhe;oO22Dw6!ur0fsuHgbBm72$?oT?Nc$k@79oRC9O8+?$5;VViQ+^d9GO^u1ZLsg z&-1GA;7pz8h(wXIa?!!bkzwW!4y-7hpFV1d$t(PHCkZtT56|yRf!w~9i+Ig9GNBkgOujeigy*qvZZ|%Q!{lfu z>RJ`f_wDHESw?}avWS%Ypcts(1RZsp06{0YFp4l$wBI11EAa51J9q6bo0RWBd~@w$ zeA7@S{-^>){O2NCp(RH({2b;MDj6_Me%aN{a`%o)muFYi3UY7-9`+yGRuT(F4Tokt znHt`VEiZHYvn-dQ_v+WLUy}(FvH-|9$(gxd>_`Dnh#^5k^XKZth1541GRkpsPp{OQ zqmTsQ+Fx_}{H>|$mo@oFhZZ&djHR86crhy8i_9#jSJdCrSOiZcSm;^G=yWiQs z#~RYuEu%}C<5Qi{E7q{mMz1xwLeB7r){)XwQ3P?&3Juqw#uBq#=S8z=F<83?@@|6k3$d05VS z+xC5$$ru?5At4nd8L}c0qDVxULMbK7kTFwaN+pV-WT;4FDr1Bak&t9qnHCKQ%c=+& z>iHb!XYmuT?OQ-<2uca|>QKl2-o6cQiF3E#p~kxP1At+7(^5 z2}eiW=YVGnS>?LFxJi894MBGo)^vFI`mQ!rsDKH$g^?v<=aqm?PjIjLOvU6_-JCAdk^J+29;^7T-4JmO`43ANaAOIgk&+Db1BjBV8G5_HLgZmH}}x2A|beNk;l+G2t}f} z93#%|&#_t0h*RA~6e}WVrGk*TMg96ws_(X6SY-Ry+6ZMD;>aMHC+3<3Y+JZcZR%uk z?y3B_{6LLg<;@}LIoIT#<9NZLvn;53ZvCp;d3{4V<;BripbQ=T#Pu%&eLXz3~M6-mST-U6KRkF(op zTusI-=nujgY?E(cT@HQ{4CJo~#48Rb1bE>e0RIBs;;%Rjfw=U%5V6uX$`2AmE!$#K z1^AJ4cM-pOM5}g!GWT@9bA`(6GxaJOMwcw7=(n0WE>+pggtTM7mIiTS* z7j)GL=}MhPLk=V4DCbehth&@uTnX`smiGW@*B9--IDblQ2b3xWmHVxoYk0%?kbtT5 zdkz;HDsRdNpOP2V$olK4Fw>C1V`;B<;yFJsk1kSfEyaTqd;(p=yq8yMF`rRGL4&zQ ztd3r7%PNu~FJ`K(*4`_J|C0?37~-$v2uvfs03ohJ?0E3t%#a?hr_@m}?$s37W-vna z^`6KWS+H?9o?+?lCl(fuvG4!QRJY78^2mT`P^x{GebS@fuxILRMG=gy2;k)R3f}?9 zK!amRT$)!=<`!0SR6ydy-SI@lpuis)*0~)<&;R$~u=t=%)ujB1I-+&}p51-?+B>>z z8BE~+tZ#9YvJk>YDmn3#j?QWf-O6}_81K!UJ68b#R(JB`$tBmzib}LCoITRsa$Z3Y zHXyP=B6h*)i9PO{GVx6C8uIYnABi33Absayv|QfS;Y3t+PZAKReEq|*sD&UeTXU7W z85dVqAc6Sw*OQib5LDmVKV~|r)Oj>OZsUh3gIEi*;g0rH@->miH_$S*-Wf*+Pt}BQ z!+2`Km^nzvHc&3VNgP1~TT_9iXOP2Ls8&(xj6N2>b!!um(a=yBC5h{u?4F>CST}q} zZAy5oE?1UJzk%XaCL5g{IXG1LzwVB;t3)e;4x36wn?3`fMWwM6Yp*pQ;aP-EkSj}k zURP{3d<&l;9)NIw0#q}`skHg_r_E=OMu}iqHev3|;mF`^$6)hM^B7U*t+*1a15I$ENSl`?`M zP<1-*Ar!vgUG>}l_M|Z?U%u5iEprJ4Ij?64TgSNBr3EhtgrX+hSy`|penLVEX_9$; z)2Wga8t*E17El@>Pq~h7cfgS)s83~tj#OaqdGXd+dJpo&np*~ zy8Kr(rY9gWBn}Sze0w8zqUz1d!YbSi7}gx9A7-g)Q}r$Yeehk@Q?l@Hv0rb&`0CBG zL8OQ)NGvH~rPV_=XjMc9I)sQIYdd7-{m0i*O!>aYD+e~>3r*0oKC|4`@t~Xjl0H}3 zNLmLhmN9L#O-~;RMnvHhn-blDLTZ}3`v%RP?$apAl{KJ#np6!pC%TR8aE!Ml3FR?x%n>sbN)yGd8QZso|A^Fyo~?T4&Lcw_!Elo zE=gF1lZA&9t`Dp_6=;g*TuUKuSuC@;2Ci-sD@N&BFSv-Fx+^Qpk z!Y@FkCR2&YV%)%g9rb(c{(o=AWPo4vpP0dsY&`zF)L#UWV0v{Ip+~4?WMm{-K-w)? z(t{MD8o7hIcqJy6bx=fuogL@R5-I}!+&=c!D5!}iW3vnx$ zK04^Ba6z(_Ky&K)#8ao%!9^-WF)oB4{?W|?-VM&25=^*&A_-qR%VQ_+6at)5c-LW9 z`>u>Rq57_Obc&)0TM(FL2z+bSub)`FStesL{AR@J*w~I>sWO`g5>hnDZrQT)@mU?W z_8&9S-m$I!&8D5Sn_Fw?=KO+?Bjw;L2BK0^PEE?I7jB%Fa^?AR?SJ?{)^P|QNYSt4 z1Al)KKKJrPypVXetmSchGvFe4|IS?z`GL#IOKGrWAW?1rrh*=Oun(KgRpfbOpABMS zNRWK=N<&sHkw<}Kk<+^S&mO%-f9gL@U*2Hx%%8T$=s}3Kb;Y^1f5oKE+tLvIJ3Qhz zqURYB{(5`!84RLdX|H1zXIq+f>d;sVZv%&G|Iz+w^w(|?@(q|g(sa@kU zyY|LL+6u+jZc{MjXm%^AM~zYwO+b?pn2ofg#Yb0s|Lgo|FS&ppo}F)T-VQ3j^)@tU zv*xv2UAy)>_4n#>JjJd$=|^@k>ngFjBD|UQs%A(;1?dm?@f^gvfPt@8Jy!H>+DvW0 z-UC}Y25uP}zXu47xi}E`03hz7C-%L%QF(BS219{Tz8Rj6u-6aM`Db=;%%M{^%A%6| zgveFO#=oabObJ-^Tr1>!M8ruWGxe^)*Bjhh$I#IFw}ezJipR=n7kha^0BK*Q%G)qpg@V3W*pnwu3P`ju8?)BaqCR^zMb8%w z6vVNMd7Tc}k`WB!xdm(9-GA`lXHckNOtzi9MQ1B3AK@)FS?Q=(#utwH^zmOT9VPaB z*>SLTv|D}{HYp6RbnvnpIdTXtF8~b~>d_N`IjL*hu-f$|zxs-L{S|N%f;$HO|tDK%uI*JBPOl*P9WqO(s zZ;O}XRZ}RQ9YYp)Y#Vc1Nr%GWl(p`NN5XsViXv>zUKzrQnTw1Ffl zaXOMZhsm3(l=ADmNy#F?p@136{T$cAP=eP=?PYD}35t`^_QQp#xg9hD2|)NgiPTR< z+}}SwU0;fbuy<(wKqipe=-2x<&Q%S28gVHFKWRDfI$4n}*Rh|m;G{Y+_bkEt8U7(* zc2630r{@{fx49{ZJv3!KA%&1Ar#t#>8q6Fuc@i6+QL;ajpU!m!+LoJNj|5ou0b44kbWg42=ZOD4H=5*>c z(DxiR8T#u-M;2c-*ccuz)k^%o^vnma6A-Do>?d@0Z{g(3-Q6;!mOOiP`%Q5R^H0;h z{;2%^w^Vu|`KbZnJBBK;4z2>OPc%tl#**bQMpR!=LLiyM^>Gt0bna3L+9 z)TVH%*8y^|DB1{MAVn!MO%&y=dbrfYLqSZPg zvg~U>#b*_Zp9v1ipl!!R8PO)F6|WI1t&YwkP1oG|%w-3GnDRypz7Q>l1y{Jy)b6@+ zWPeS>RZ}2*z7Ag{HWI+>pK|B^LWGtwXbAQ;er6l}5EjtzW3d!`GPk>S~{!N^2 zTwHV_uTxnl)?KYXaLpod40t#Be`et$H-Gb}9ocC0&2u}K=>9vmo?7CdV_)yeKfgoeXLGoz5lkZEEG_%R%QTIk`1H=v7vL}T zKmiy#tETv0eE^)Izbt_cST%Hbi=5ZPnyr1`#6I)dKYz2H*04j%gCB_t8$~XDLmjB- z;c^6R6jAr5caIwLz&Xc5kZ%(`DEsQrl~1o^4&uKX{Xdp=R22k6k2nZTgcfTfM6k34 zz~o;6K&0ZT-?25&E=$o`GseOr5$|5(m<|dS%gEVAd+7(-PZ!9wPK_>9Vqeyt2fCM5 zUyY>L6=RTE;dyy^K+EUu`XF`@_K|ab$iQ6r%k^DHOmS3^o-x@C|CuKG|6+ITe+3A3 z-zX!{|1H@0-z>uY|IJ^PAQ~nxgnx`DsR{XR9{mhePcwSw(&qmbRQ_W^WmZ2^)eo)V zho+%C5mXsjEhL380v=fg#p;vDMw^v^ctrcQBkPnTZ=z$Tz*2Hek^eEc>fm7UpZENy zZfVn%AD9#o0nAnp6|vJ^XUNL#*Xs`{n3f;LDybR@83>8n6&b1Kmi(_FkdNi%*PtQq zH+M<2Qo{BlPElKmu$ACF&19ro`eNUa!$!N5E{)c*t+WYFUzykJjjLFqS?dP0P1Y^T z?lkU)EqdGZt5<7+CJh5rSznBlbr5B!xE=?*ZFxWcKx}Nf(de!r%$fnT>vrmthE@Yd z%AA=&*X!%(H`4AoLIhsFB+tgZd*lB2cj--0FRQLDM_pn@vm%V;*kFQ-l|?eFKGwDM>9BUyJqxfcXi zPDv0Aj~Ce}(0{;Sv)3&-&*1vx37M0|*{fGut(Bd3F13#c4GZg}J4L{9>byGO;hqF+?~9?zdYXXnKgD*0*(nFogPHEq*YedQ?cJ4Ou0Fm_%Og>Tm1*r;d4?urQGAL38kvzf+C-LNF&p`C z-uC^&ZByd!gDq3PU3tg37rD9h`O2>ajceAbB`)Po43RPaB^s@ULv5`hLn9*U@gPMk zOUWbb%B+V+Hqj9lV4QcA+N_#_3I+(MDYAHBn7n#>=-l&v`X#7_I60^z8U{g~hEpP0+}4E`S!_FS@yW}~Uhx%_%V;Ucgw_^} zib^*YkEh565&ovSU;1mwpdTHKw0m4marH~%6I2s%`&C-W&6ERWH3Q;X_k2d+2bG&lP@C7zO+-tcZa8Q zgbsymTPP#}O<^jBRMZG!rO(6-qTURCFcJS)^p-EAfkNt5wrHeo%)PGEP_q3RiTAqY zr?~(!I*5!tyNm z{h(j`7*djj2r?vtP+Al=Z06jTcB6Pfhmenl5*e?nZJ1C3oP@mJBN5wZ%FcGH1 zrvZ8~HZ`>Zi&(!=uV<-_erp-QMS7&TG3V!Dywv#^a`35SMaM3kz2qXCJy8z2Fyl(0 zyJ17eE-`jR)S2iFHAbR#NM|lVI2Rs3-Lt(5b=}Oj?DL~5*Kf|SkyuY4h3NR@^g8Z? zsPGtMnN2Ua3?hMSXpeUXa*1K*%$#*XN~R5Ws9o5m3)qrE!6>^(NW@G87D1v0qBoh^ z)5UpchzYg}A-jE>7MzsJ8VSDt2_*)S1qIsjJXUlu%sO54urIkVC z)!8yGyA7c)2hpPFooQ}GVyrM;^wxp&HIN2^7cS_o7;lPcnnILkvb-0~aemJW{x|nM zjScC>c3mP6wL=;QK9SoZ%L^$O;jpeU&fy2&lMe?d^8L8Myt_g)elmLoW~q0|`wLYn zY6Zn=ddnEFW04ZB`dRKMQ*(&esa|Ce2bpPfW=V0+Ys^Yrg+rAU9grvj5-L&wUZrnq zGhjt48K-BmkGYRP#yn)By$q}{3o06A?%IiVz3nx(EjLX9jgLXn`v%5|w=LATLdLxj zRfrdSDz7G8ou`iic^}0oU!|sE-NudSRK5JRVT|s`o^HcQXBx;X_q>KZCo5OdCtrkK;h3LZJQ3Zc6oOr4(Frv6-i;14d0#PB!)c_Zim8-!9 zgB?B>KK=R}3It(^wW*e-f@Y&O`A5uXWlBXX@mG9kWUpDq8V#}cqlIMLER|-{7_GH9 zNg|B7#!|oaOyGz)wgeT~U`$CPA`k^@2;~9YRjJ|m-shdUVF&ls~$%h>1!O)oMq~v9;^4@@q@=l1Jn)TGlJA(CywiI zG=AKy@y&bb)E%QSU@LB!VWx*Ni)|2*hL0@(*T|aktP7A90dT zm*a8u;lprLYpYn2%HJ&XKcc?WszrTmM~!-QGJ8P!G~*I%2lW?jD%A1)QCf#ZCY|Ng zV^w|5cU$L`SAXl=c?02t%}Iv0m&&l=^Q8q1y~4ZMwW?+06Z34Z^`mf3e5R9Trh<& z(`OE>9)~;R(Ab0bSooUd;;5c^kUc^SQuMGcVM94nA(s@D$gEm5sLhUFC=f>A zB6(QVC83d;#Agp-a`?qQR=Quj7cIIr&G-a){Q0tX-PpZVO`M7ux8VShx4ksmHVb)r zeTIo_iJHjvS2kkPV#}IL;SE8B+q7*vfi16mf0q4Re_V94*@%wLp#^U5ht`(aJv3gT zbP$nJjoJooX=Ryk>y)hfhl$ttMZ= zyWIh#W}Lb+Yt^5OxZxW8qLbOgjKF+!TH=dK(G))E9mi!`hkA)r4Lj3o%Qtt7=bcIzt{e$Mg%h}f*+0nnhHJ$ zduBp(h6E@i(a{QdV%zzUP~zQgMM*VYhdWKX;s=N~57h)LmKw?>Iefp-{3bpQYR;jt z&(6(XE5DneeB4q?%gYbU$P9gYeo-LhnfRC%6ct_LnO8GCJz96i1uA$RYPEgbsHnd4 z{V1;`NQfghLC==Qeq{0i|H7K2cHvFVS(LNt$q$eF2-H&Dr(Uw+@aUHfe3-jFjYs!k^gMTpGCY0 zVg7;r=$39UZr^K)wUr?^D}(X~1$=;;=URGRO6dm2^~?3>l%3rA_33U_JHh@qs|= zMm>QOnY+A2%_N-#Wt_WMq*YW*xM1p|)^+Ld;P6ZCUI>KHbIRNec1VK>&HtQ>G43ZL zDCNe+Sk>b&%CPd2C%d>`V@PHgMc+g)BrA&$q3@$)c-Vb{RZ`yG%N=K|h?>9UF7+Q+ zs~^n)BfQ)7?62sT-^{g3vpMqi@7_kYmd>}W>i<(G0-J3fsoTnpe%$D-rOO0OF`+)> z2`WUFQNM*D)zeyf1N)>I!@a`wb;i3Jw=(=brxPvQ`}a}B7iz|L*fGOmQ7?^z%&(nh z0VE-E7|qWT_;+}IEU@@HGwjkao0c{qPdgU4AH*D>kpG1aV&b00=t*aoB=W|eulP6; zdA==E{zse={hb2yW@o^C^TcKD8(F#=?^YS%_FNify?AU%(}dxTr_fgvVrV9>f!7*_ zLWg9#+4g1qg=;i2kDAO0e*gOQb%-(+eZ1n(K^CN$bc<)SY5)HH5}HjT2J3zqQFVzi z?7?apdZ}K=FJ@3Mm3;izkt_~~?38SodG!8+(MeM>S{$Voy+**sP;~rp=i4vR))pha zK*w17#5yDO%-u|n71`V;CSwfon#!5!wKB4O0Uv?*+3hul|06By*p#L7y}}H2#=Gzo zFSp)2ly++%$%>c(u@*tpyvJ@XMhAbtrr)VguK$i12|>B_?RNLOMrilJ;J=!lb4p(c zwbP96Qfv|dc?27Wp11N&{B*jN6nSJ%iliE{n3}gJX$gEsWIEfsO=_XQsX5_+fzHF} zCJ~0Y^${%FO`hC_9Wspit|6P{fA}zp1;}7)0^-P~4vNb=kKJs#$Eq7;_Abs{|Dy8K z6^e*vO`BdJT_uZ$I{t^#F`N)h6<26J0LkwzdO9G;Xrgb^IB{8Nx$QZ|G&kZ`SPzDB znz6^a$+|5^%-uP?_pU?i*%7-{n!4AB|JwKK7YS5QgCZjn{HI=n2KSfLPgGmfYy0ew z#K60N6H+(J6_+2@)m=v$-4k3v60Kw}cF(rv)IT(wWOd}l-{*H<`tp1^^ALedMCXE) z0GTKZ`*_^1K2i5e=D8N;hK4~@(IQ$&h2+dT<=IREGTGov(1wIv(N2MJS|iR_H=Y7T zTY!UsJCzL2GMxA^`oy$B$XeF}v(iXh&&}ON^4QwNPJ3WW>yW3qu3xTD8ig259l$u1 zd`F1G4!wGX5fAXG5uxn-g$o_NScXhC{P{hN^$HVE7*e++n)eaAn$FEo&$Kr)i=Z#W z%lFvd8ZNyeXX#DQU#a)!?A{;2bVODo$B~xQ@HHdqvUvu0#8sBi<#^osq3(6e7&mtzi;h#tk_*YR$}vMFIX{FbSN72~;hLzf(Ro5{8K5 zj48s5w~N1VeLgafG0FWN5#r&};o-Y5CB_I`+(ywM@I*EHFEiyGV_h}?*?9ZhipYt2 zp%dQO8cs9$7cTy0$WdO#!5&Un#r=`L zfji!+|FTmXDu;L<3VIZH_W80v-kC8~3QZZ4%L|s0$Rqfq3aR!1WMFLHM0N-b+@I}N zk&tH$p&kRO#HWuNwL5@Doa7Zt=Z5$-mnilAukvw@-i=1~+CD6tk%hErsniPI?^&cH zrq$t#vmw6;gC@&A&nB*k4HqB`a<{dhf)f%JswbM9%)13}*dxN0c`iTxt!&f zIQqv-_mi4y)2Q@~7^)73;%GM$CLD9+C>gDwye_7lp~`*5BYO=-aMi=~?VZ!s-IpM+ zpsl_Q3Pr-L(HX-^gAk`93P6Kjyf<)k(gAaG>Yy7#<<3qr%Xj z6});Si;|?JY`5}LNKwWuQXeeOYYMRkBd260YNQle3?DVhotw(veZQx4XSGCgg(1>p=EV+{nJs&Q&^x_Z}Z#YAV+7PT6E{! z>28mjFEVSMIfVt8aHBAxOnk3ih9Io2pIef~QANFgF*K9Ed0 ziW-Ynzd`L9O!P+d(+@19btt<_MLvJ=;tU=NHZYhA$mtg}nYcr_&mNp?uyHJ9>hgGL zcj%5Z=bpk_cMIuz=Hu9RRQ=c=L=rwqQ212;a$z5fa3;o1R!@uxs`|^07MxiX<~TD6 zn4Ub_c@``F$~(Cctmo5$Qj!sCrG1%U5u#aBnZS{B-iUHr=bfk;PyX5d6s(OhEKoc%=6v;)Wg)9#$UjhEVFF$j}5rK?iA1Au4+?s zlDDC{ti84xcSX$pK7K6V8AEDqlYqY(C!P}WO%kiZDAd9XTKM#xSkS3)r;Dv8@C@aI zP?*jDEs(%Wy#~8K82f3;-i8P*7}gt^UZs<~HOJ%BkzzG9HJ$eDWfZK8zmjJ;n4ZpX z`PZWCz3nDVdQzwNw3Z=HXX4Pa-EcxEkF%PLste>JqpX|@f>vh}lTeakL2h|yRf?o3#pp%1`*bCX3U(q5ex-^EVWrMdMQwG z8Fs1HxG}Z<9?I(li~~^nA&MIJrl~r6jjh?Zy5@VId3$^-eV+TgZi`k$)683!c>;=t zG5f964IK5$N=zS&){f*861PQce6HOQgukLz0t6Gdh7&#Ej^mrAnY+nJ1IZ3f7nhxO zv)i*}z&C$H_S|~O=iFo@oM*9+ok&fQImh>b`#!b-kZv~6G)$?@d1S{p2{-mtP3ozItF1ea9{ZZh8#;qEJFN)O(T|VRKBO^02O;o-VdonY@`_(l!kJ`7dJq~9`oNA)l z5#)$ZMz{{C8a1V1(OkC%${LTlRzM0gRFaSo7_-#fO`vNk07iiliQ4GNJc@1(xf;ox z9vT}W1zLXo6>#yM{o4UCfag%g<@leo?!LY9CtXesppwKQ=20l#4{)Dl0X5bfVT4)% zfaO#}V2EGgX`7Zlx;&7}VcO?O%7ZD;vj==Pq@1AKYND-u2WV20xP(D6YSmzt(CRJR zRF~^6c^RzEc~ym*V4Ez)+Ol?S4FbI@Sr_PPn1s3{Y`SLmCZx6<5pI}C!@^7K1rXSo zx|A7_74`OzHLATJXqf;;Mq5O>E8dMiu3*deh{R$~5 zgHa5V=Jti2(N)8;ELa75_I)c0pnOc)Zt(iCp>m;%5neVmY3SfJHdZEYv9m^Os$2<% z;PBl$8|fgYg!?X$bCmu=@7snddSDMZiY)-d@-u4S4{Whjs@l{8z* zX}!~VL=zAl(RmyM`(k2jCx$E1M}ajSOzouOn*g%vaKtI+v75ht*#7L`HC0bsGVa_7 z#?`>t_va!|!*nV{X5esI&}3+6J0F_}7INKgY{Ob#-+frG*t_zxrp#1>I6_$qU;}j_ zRuh1fT*Zme6ZwC9n(kj>WV-8i)Ne}~r6$=qqH>U$flw!H2g$-@&eOh<$e8>Axwd{d zx+K(giTLUcfifl5?f0#!L}o8^r4+F=HN!`Y5aYEKWtm+l_y_Ik$hv_W7A6t443zBU z3%i~cVX-qv?@oxm2;{MFqFY}$gT?;nnNt}A~<_5NBG7}~Z7MI)=AX7mN(EuTnT>Vd< zPPymlOc>#n;+;s}i#JQ=UJDD5?mE+GmdJX+L_Hy;(87O8eb@XPH=;0`RzE5{d?@G{ zfvN+;G!hpn$Apam+KV8YAgQ6Y*Ill+v}lax;75WH(kLV^{wwl8w;u+_Q~WY#xDa+B zh-8izt}QH~g}Qo3)U6pN)0th%oT1aV?@mT--gl(1yS$FS0~wtP5mXh zUGQL`%4a`0vl&*o+LvJ&Onff^-gk=z8pk)~88%*Grh)VdWj^+2LXd7NaWth}CjB?Dw zPA)5vz%5e^V%*Nd838@n+(08yyVmi^Zz-0bYJ!O`!fuN0zobOCWr1-hy1bd1@Y>Op zQ)7pbXcLl|%+D~ecA|~%tB9G>_sb9pV^|LjMqdpuePFyJv+o1wyEN%oC4CdU3tqmg zmdce+gRqS0HHE*d?5>>c9m%0Bq<{1Dgq08N6z}Xz2ZWf-$7HJZQz~J?l+_XbK^O2 zmM|PN=HqOn6@L{V58rd_nb{K{cdqfkoxt~(e0W;zRGs+3IkUP{X=E;KSq!ek#;WP2 zT8Ac{KJ2!xzKkugHYfAmz>XA%G~FChSI?f}%3Y?%|DO(<%F?L^&iiyc4!;~*EO09j zUWSLMP+&;TrIaGoNigGaN|r%%@g;S#*T`y0m8j1T)BN)7(m~PUz9dqh@!TzN8VhSE zq$22jsqBi#*_1O)V{^WyR(D*lw80~)b#%6iAZLJ0+yRp@^g2%-9K!Vwr4#2_q3pcF zF7VB*tdiD7dYN~+x66h8VZy^Xd5<55a%VY9qT-Op#s#l2nsP-h!caA5yLgMn4sm_1 zNhibia1khICF zh|%EgPD3+H(}fJT(*5pnDX&>)*Eh@lzW7DxE(WV&i+q?j!j4B`CFcpfSuQ)@!QyUH zO6IYzeqU!9x6#qb8-Bajp3wq16Pcyf(J*q3B1pNKM3AJI+Sx<3A#RUSCQ+3j49W+K z7HjcYno2|U(Ayd*dj`_??C0TPUT_cHItN88E6|Jx3kjl?8$GxV6>>5_K85Ytw1Kpi z-NrU(o+97CDrt+~qh@cwzosEQ64F50RPg2jUtiQxU?@l&q(^vG>@=7~zll8Vt zfWjNSy4G@P;nB0tle|wWpGkF2@Ks8b#3Q*f*UZH;ndf_Q1}z$Tno-asER;=jk5K+> z=$glw7Hdp;XRz(5mT)4_HGANK5~&(6OFKGFwR!!=rlBd``}mCwYNrpr=uYm(z!~*o zU7IYG1TItaREEJufE{TDA)&S<5M*L||9gM$Or5G~uX%^)w{iXzGWmo+}R2!M$qEd@kdAJ$vQj z*Y@*sY&4G5fD~~?6^OPWkvht%@RR(-6O)`OOuQ!F+5NXkQh?vu7kr$+2jCZ~$9p$w@ z|J=*}z!d=r{`unv>MDwR`3RY58YxF^J^WlbJG;;GrE6(T7SMQc7NuFGwn5IaNeXi2 z_VFyZ%?ISgr_Ju&6VeL9nt=lct`4hGlfOy5qKley-g_#_6fjs+&C}=lR_*nrlo22Z zWej49o7kD3qe4U`7}WN+aPS%Fps}r<=X>0U4I47Cee&eVURA1%0u?QJKD%Vp263#- zo9fap(D+Kl&hi3b?mz-1=PMXIdPQj&{xSEyt5< z6h#8H{C+BHfDBLtc^8HC4!#H*88kHZK*&(i7$wJR@{h>w!%M=T=!LI@LXz;yK^u40 zQhr;=!PRkE?rVd-FT7a(aFWz%dgr71VA5~hra?X^&O34 zpw$&bWi!^S(*>V&2~%C$=BKtew#e*zvB?Y4GBA!)T!Xm3uZ8X0c>_nDr5}=C%eXxl zA0V9aqa^tcO-WjvH~Y-GV^SS}Hz3-yV%knAsyLeWm}WxyTe2W?5w~acQtrUAen>pO z#WU;V&=5v}Nml2jFKaPhl@2%kwQ!rAuNO0Kl^o1`#}I9Joht3m=#`E8lI`gD=Wki8|xejbiG;j7f7Z4#857U^akJy0c>z zDW96l?-L8k{pIT{q<>rh&IcCbQxxV1ebEt~18Y5@dx}OVv*gu@r!wBD%U>FKj5cop z_Bb{RHY4A4UjA1vKrY#5iwUw;h3cLvzpYFG^C8{HkR)781n+=pX3GQ^-5)0)mTo}M zK@$I@U*|c~ox;VRhF!!?NPb0B1yq~=@?{#bDbUUCU=Bc_8;CYte?`VIYR+5q2-fh) zhzmyo=OUGsG822pB*=JyDD!5=4O~scTEC&J2wDKVN=8|Y zkbnjw4hwLR0ikJBbv}fiuGAw&G~z@QQ4vAARl|GqhNK|ad|nJynGEs@&7mqp)N}kF zrK>e)P{?49Y!yqXc(n@?_Pr3yCOBH76-y;Tp*)Bt=<&*3dha^jBS~Jmb$4E&#f+zI z%zy^aNi>D8LW+7D=#wo{4ZxHSazhnQFRg6NC<)^4;Z+C6m8c&5GY(oi{-`E1iQ70& ztygm|dmy%x?wKUR#O9HrHXvOuR=xNYeAH_l_uYCaE&&`xR5U<_Vk49Fk)$ANhM0-* z7it>J!C;)e^6;2N#A#Ko587-h%{2NlO%OT&seA%?%EvpueR`jl>s`q&Ogw#hT*roT zqtz>H)SRoP;ZP69$_w_}xUmlOo~TPjVn;!k=OF z+Op>~<>%)o@*i#`8O>J8x8sgqmB%N<*WgjDy$b5FHiI0sT0SNSahQhmAKFY>{H4l z6zGlFUl$tkJG`4K^(0%if^h$2lodgc#Kk7%wuypszL)pOQt?a4SEkj)vzT^7_X z{_r#twkvtn&wjL#(4}kXfybQku=fgAP4^^U9eXyz;9^Jy?MBxr=S^W@8D-Bs^ZTTm z;oWSaE!Ru8E?^9@s1u8mRUfOq`M5MMI)K@EN$XMY)!FkKIT$V=H7#uoT{uHx8}nw5 zuQOQrIx@XKKkWWu{&|Wmq-v=@dpWZPQt^XHSB-8Hw^QnM%&qw6`?lQ^@B(^*>Kgn^ zV{MvZH9o{3!!R*rxMYC!4`(;QnKO2`la!VV>OPj{&AWo8xq5lo&}d`T&F0MNGO2p0 zs&cu2k)-Kg=h*35v$GlRvfm|v#&;UsNmthxzFQ0$;p-@#b;*mAyoW8X4T! z+4qqm9WaJ~(5gaa4k&{+`8n=>byMdFr71E!Ju@nFAZWB)lz#-ft zzRCib{>odKA>J!Wz5x)C9BY%k5eJSwztB^5x`D!TQD=gsQ`*+pmbw2|h%*}#{P*!W zy>|&jAv4uVl}yc4WUXRINNm%=Lw96P<^9*aezOOcZ_5_y;EAi|63m3EhvWc+ss(HX zaEpcuJTnBX5RB-r#*#m#&L8`71t`-5u2@8NH+C4cLyM?G`lnnKdLir56a->AfNf7N zF5l7SX_Trh@-|C2UV5|DdAWEXn;Fzo^XJVw5tYjYpaZd?E2YerEX3^*Ju1*D#P!MX z70TnRQ#Cd?@46S{3Ab33d0a>-_b7Sz(CZziu57*zQSFD-JPycCxUEm?dyRrdBpqUfckSAGYWI8ag0OfaH#O~~Ai^SAY(evwr7^gc zk?NKl^0q3GWf~$;_=7)65|kzieVWV{Q1AP&D~5G#{h9Xpr`9Qqp0ILr%hl*0apFlu z)`T!z)GoXd`5ieqAt)fk@RP@Ba`dM%2>|pK`oE~Pl}123ZEz6-xS;m4`C_>(a~)UV z^JlX-RRa>@+ijR_uUj`fOkF4`d{X#}2#8mCdY(_uB{nxu?W?Jn>wR^AvnH)2ffaX> zp`%AP;s4u@V)$`_vLUhBV{Nwh!ybwP3M)4vH39yxTZ;1RniH(rcONjrm?G@WEOG}Yg%8`yQJvWNDc(c{;X3^9!R^=Ct`Y5e+= zNjv>im(#ihIxf`%clm$vmtCF3kzw{G@rQ_ujyUxY784Jjs@&zItG3kZAP;lQK8uus z|NP8;wCd~2jl{?q{oGw$@#YSqskw1%a&N=O~BI3yx(%KmUuTMx!=|bXlWFj z;~^!bpw8rhQi^KugFPFU8IeEG5)4MW(az>~<~X9Mp0^ZTtlUh)!ClkNDv(nKw*lif z9IVms`pJ`>f%Sn@baY%6fm5gBF}<31Zcq3Z2|Bfp5AbEXw-=ExA)EG{eY*dhFW>s8 zwJ@}XKk2rG{eRWOhw02CzVwzYaasZX*1_dw`e?nJI_c0YMbUbk*sMBWN%EaA1e?O^rK1x2@n1A#eBb{b>iu)kgDhr>o<9 z0jEcRocW6ubyDdk)Z4YI+WSsJJ>-@ggR5_YhQigZA>pp7C~7HsZL(YCgY!qK@@ZU| z1Kdi9oJdb0N({m3Q8ZMRFBiE55OERjR6x72H7pgL()F< znE)jDl?te5TMMEHX9cUy-*QVyF(owcJy|2ePo7&=e)zz#h0r6i;hyGQC~^Lf^xI?( z5&B>6h-Oab3&Ikz(KA@BZN>A6FBP~x8Frky;;NWHx{mf+7T(sN8xY*__Fz(;^t2CJe`7wBDeq85?I>a#KuBK6$*AQdG516lA@|3 zr!KU{5qLM!&q=~29nnAzuavh;J=%n?c#abny2Z2Wx+|b@Acw2Umy@o{b6uxS{nK{r zM;XAmeAzdyb1RNU*ammAII!9!3NaE7M=tX7x?zL+N$L*yh*aYlm;e8P=ltUZjS0|%a1(jFIj9-BW&6@SL#%p{T zck}cu?tgCyFF|QPVBU}8!9N{`1ZX6#i#+l*2<@#XHR)vs0@^}Ce$8s}&G*Za76#)R zq?XMET^YormUiDq>FEWD_YHJHpP&S?vht4N#bZDhVf*_7n=t)rpbQlZpc-DMKl`}1 z_rzlWef&fbqMdM8>hB^%ek)F0>1n<9j(DnNB{EzB%=yXb`DMJ=%s<}hiE-vmq{IF1 zI&^#{y(_1!+ZJAhSW%-AsID36I%0_33l5%AJIIuUzyVY_OkiQAD|DU?yoG1f+E2Vaw!A=M4}dCtP8g);$b}YL8B47 z3S~}(LW7`TFg{4;n#cv$$0Yb$&zb33nea@9yIGjnQ){yb!Y%V+W$gq_t(eufYqz(~ z9=ksW`hYlZ`7r^q$HO$AEF3xnm3|8T89ro`)iKLye*XiPnkPR1 literal 0 HcmV?d00001