From 535f68f1d06d18a6a5a8b552e37f4f592b29c604 Mon Sep 17 00:00:00 2001 From: luke_farley Date: Tue, 2 Sep 2025 15:55:52 +0000 Subject: [PATCH 1/3] Trust App --- .gitignore | 29 +- README.md | 72 +- clientApp/trusthelper_ep.py | 2 +- .../{adw_private.md => adw_private_config.md} | 93 +- .../docs/deployment/apex-private-adw-lb.md | 142 + deployment-docs/docs/deployment/apex-trust.md | 123 + deployment-docs/docs/deployment/database.md | 9 +- .../deployment/lb/media/add-security-list.png | Bin 0 -> 133352 bytes .../deployment/lb/media/create-backend-lb.png | Bin 0 -> 169769 bytes .../lb/media/create-health-check.png | Bin 0 -> 87537 bytes .../docs/deployment/lb/media/healthy-lb.png | Bin 0 -> 73364 bytes .../deployment/lb/media/nav-create-lb.png | Bin 0 -> 138672 bytes .../docs/deployment/nl2sql_engine.md | 3 +- .../docs/deployment/trust-api-gateway.md | 44 + .../docs/deployment/trust-service-overview.md | 59 + .../docs/deployment/trust-service.c.md | 428 + deployment-docs/docs/deployment/validation.md | 4 +- deployment-docs/docs/deployment/vault.md | 2 +- output.log => rest/nl2sql-trust/__init__.py | 0 .../conf/dbwallet/ojdbc.properties | 11 + rest/nl2sql-trust/conf/dbwallet/sqlnet.ora | 2 + rest/nl2sql-trust/conf/metadata_v2.json | 33 + .../conf/refresh_autofill_cache.json | 4 + rest/nl2sql-trust/conf/release.txt | 1 + rest/nl2sql-trust/conf/trust_config.json | 72 + rest/nl2sql-trust/conf/version.txt | 1 + rest/nl2sql-trust/constants.py | 32 + rest/nl2sql-trust/cov.sh | 1 + rest/nl2sql-trust/helpers/.gitignore | 4 + rest/nl2sql-trust/helpers/__init__.py | 0 .../helpers/config_json_helper.py | 196 + rest/nl2sql-trust/helpers/database_util.py | 1257 + rest/nl2sql-trust/helpers/engine.py | 64 + rest/nl2sql-trust/helpers/file_overwrite.py | 120 + rest/nl2sql-trust/helpers/finetune_db.py | 1210 + rest/nl2sql-trust/helpers/finetune_helper.py | 623 + rest/nl2sql-trust/helpers/llm_helper.py | 95 + .../helpers/natural_language_util.py | 217 + .../helpers/oci_even_publisher.py | 322 + .../helpers/oci_helper_boostrap.py | 212 + rest/nl2sql-trust/helpers/oci_helper_json.py | 504 + .../nl2sql-trust/helpers/operations_helper.py | 112 + rest/nl2sql-trust/helpers/schema.py | 130 + rest/nl2sql-trust/helpers/sql_coder.py | 258 + rest/nl2sql-trust/helpers/test_database.py | 129 + rest/nl2sql-trust/helpers/test_engine.py | 26 + rest/nl2sql-trust/helpers/test_finetune.py | 22 + rest/nl2sql-trust/helpers/test_llm.py | 22 + rest/nl2sql-trust/helpers/test_oci_helper.py | 76 + rest/nl2sql-trust/helpers/test_operations.py | 20 + .../helpers/test_trust_metrics.py | 53 + rest/nl2sql-trust/helpers/trust_metrics.py | 1111 + rest/nl2sql-trust/helpers/util.py | 53 + rest/nl2sql-trust/htmlcov/__init___py.html | 97 + rest/nl2sql-trust/htmlcov/class_index.html | 691 + rest/nl2sql-trust/htmlcov/constants_py.html | 130 + .../htmlcov/coverage_html_cb_6fb7b396.js | 733 + rest/nl2sql-trust/htmlcov/function_index.html | 4091 + rest/nl2sql-trust/htmlcov/gitignore | 2 + rest/nl2sql-trust/htmlcov/index.html | 426 + .../htmlcov/nl2sql_service_py.html | 251 + .../htmlcov/service_controller_py.html | 1494 + rest/nl2sql-trust/htmlcov/setup_py.html | 103 + rest/nl2sql-trust/htmlcov/status.json | 1 + .../htmlcov/style_cb_8e611ae1.css | 337 + .../z_36f028580bb02cc8___init___py.html | 97 + ...z_36f028580bb02cc8_resource_signer_py.html | 140 + .../z_36f028580bb02cc8_struc_test_py.html | 123 + ...f5a17c013354698_administrative_api_py.html | 274 + .../z_5f5a17c013354698_bootstrap_api_py.html | 403 + .../z_5f5a17c013354698_engine_api_py.html | 122 + .../z_5f5a17c013354698_finetune_api_py.html | 560 + ..._5f5a17c013354698_live_certify_api_py.html | 191 + ...5a17c013354698_test_administration_py.html | 112 + .../z_5f5a17c013354698_test_bootstrap_py.html | 200 + .../z_5f5a17c013354698_test_engine_py.html | 117 + ...5f5a17c013354698_test_live_certify_py.html | 138 + ...f5a17c013354698_test_trust_metrics_py.html | 147 + ...17c013354698_test_trust_operations_py.html | 108 + ...5f5a17c013354698_trust_metrics_api_py.html | 147 + .../z_5f5a17c013354698_trust_ops_api_py.html | 127 + ..._a7387cdb12bc308f_XX_config_helper_py.html | 638 + .../z_a7387cdb12bc308f_XX_oci_helper_py.html | 469 + .../z_a7387cdb12bc308f___init___py.html | 97 + ...7387cdb12bc308f_config_json_helper_py.html | 275 + .../z_a7387cdb12bc308f_database_util_py.html | 1173 + .../htmlcov/z_a7387cdb12bc308f_engine_py.html | 158 + .../z_a7387cdb12bc308f_finetune_db_py.html | 1304 + ...z_a7387cdb12bc308f_finetune_helper_py.html | 719 + .../z_a7387cdb12bc308f_llm_helper_py.html | 191 + ...7cdb12bc308f_natural_language_util_py.html | 311 + ...387cdb12bc308f_oci_helper_boostrap_py.html | 306 + ...z_a7387cdb12bc308f_oci_helper_json_py.html | 453 + ...a7387cdb12bc308f_operations_helper_py.html | 201 + .../htmlcov/z_a7387cdb12bc308f_schema_py.html | 224 + .../z_a7387cdb12bc308f_sql_coder_py.html | 352 + .../z_a7387cdb12bc308f_test_database_py.html | 223 + .../z_a7387cdb12bc308f_test_engine_py.html | 119 + .../z_a7387cdb12bc308f_test_finetune_py.html | 116 + .../z_a7387cdb12bc308f_test_llm_py.html | 116 + ...z_a7387cdb12bc308f_test_oci_helper_py.html | 169 + ...z_a7387cdb12bc308f_test_operations_py.html | 114 + ...7387cdb12bc308f_test_trust_metrics_py.html | 145 + .../z_a7387cdb12bc308f_trust_metrics_py.html | 1007 + ..._a7387cdb12bc308f_tt_database_util_py.html | 1153 + .../htmlcov/z_a7387cdb12bc308f_util_py.html | 299 + rest/nl2sql-trust/nl2sql_service.py | 179 + rest/nl2sql-trust/run_app.bash | 3 + rest/nl2sql-trust/service_controller.py | 1613 + rest/nl2sql-trust/setup.py | 9 + rest/nl2sql-trust/test/__init__.py | 0 .../test/data/body_process_sql.json | 3 + .../test/data/body_stage_certify.json | 14 + rest/nl2sql-trust/test/data/body_upload.json | 17 + rest/nl2sql-trust/test/resource_signer.py | 43 + rest/nl2sql-trust/tt_service_controller.py | 805 + rest/nl2sql-trust/ui_routers/.gitignore | 4 + rest/nl2sql-trust/ui_routers/__init__.py | 0 .../ui_routers/administrative_api.py | 237 + rest/nl2sql-trust/ui_routers/bootstrap_api.py | 314 + rest/nl2sql-trust/ui_routers/engine_api.py | 34 + rest/nl2sql-trust/ui_routers/finetune_api.py | 466 + .../ui_routers/live_certify_api.py | 116 + .../ui_routers/standalone_db_test.py | 24 + .../ui_routers/test_administration.py | 18 + .../nl2sql-trust/ui_routers/test_bootstrap.py | 106 + rest/nl2sql-trust/ui_routers/test_engine.py | 25 + .../ui_routers/test_live_certify.py | 44 + .../ui_routers/test_trust_metrics.py | 53 + .../ui_routers/test_trust_operations.py | 14 + .../ui_routers/trust_metrics_api.py | 101 + rest/nl2sql-trust/ui_routers/trust_ops_api.py | 33 + rest/script/AsLinuxService.md | 63 + rest/script/nginx_Setup.md | 36 + rest/script/nl2sql_rest.service | 28 + rest/script/restart_rest_service.sh | 5 + rest/script/trace.sh | 2 + sql/apex/AskData_Trust_v2.sql | 64334 ++++++++++++++++ sql/nl2sql_datamodel_schema.sql | 9 +- 139 files changed, 98331 insertions(+), 118 deletions(-) rename deployment-docs/docs/deployment/{adw_private.md => adw_private_config.md} (65%) create mode 100755 deployment-docs/docs/deployment/apex-private-adw-lb.md create mode 100755 deployment-docs/docs/deployment/apex-trust.md create mode 100644 deployment-docs/docs/deployment/lb/media/add-security-list.png create mode 100644 deployment-docs/docs/deployment/lb/media/create-backend-lb.png create mode 100644 deployment-docs/docs/deployment/lb/media/create-health-check.png create mode 100644 deployment-docs/docs/deployment/lb/media/healthy-lb.png create mode 100644 deployment-docs/docs/deployment/lb/media/nav-create-lb.png create mode 100644 deployment-docs/docs/deployment/trust-api-gateway.md create mode 100755 deployment-docs/docs/deployment/trust-service-overview.md create mode 100755 deployment-docs/docs/deployment/trust-service.c.md rename output.log => rest/nl2sql-trust/__init__.py (100%) create mode 100644 rest/nl2sql-trust/conf/dbwallet/ojdbc.properties create mode 100644 rest/nl2sql-trust/conf/dbwallet/sqlnet.ora create mode 100644 rest/nl2sql-trust/conf/metadata_v2.json create mode 100644 rest/nl2sql-trust/conf/refresh_autofill_cache.json create mode 100644 rest/nl2sql-trust/conf/release.txt create mode 100644 rest/nl2sql-trust/conf/trust_config.json create mode 100644 rest/nl2sql-trust/conf/version.txt create mode 100644 rest/nl2sql-trust/constants.py create mode 100644 rest/nl2sql-trust/cov.sh create mode 100644 rest/nl2sql-trust/helpers/.gitignore create mode 100644 rest/nl2sql-trust/helpers/__init__.py create mode 100644 rest/nl2sql-trust/helpers/config_json_helper.py create mode 100644 rest/nl2sql-trust/helpers/database_util.py create mode 100644 rest/nl2sql-trust/helpers/engine.py create mode 100644 rest/nl2sql-trust/helpers/file_overwrite.py create mode 100644 rest/nl2sql-trust/helpers/finetune_db.py create mode 100644 rest/nl2sql-trust/helpers/finetune_helper.py create mode 100644 rest/nl2sql-trust/helpers/llm_helper.py create mode 100644 rest/nl2sql-trust/helpers/natural_language_util.py create mode 100644 rest/nl2sql-trust/helpers/oci_even_publisher.py create mode 100644 rest/nl2sql-trust/helpers/oci_helper_boostrap.py create mode 100644 rest/nl2sql-trust/helpers/oci_helper_json.py create mode 100644 rest/nl2sql-trust/helpers/operations_helper.py create mode 100644 rest/nl2sql-trust/helpers/schema.py create mode 100644 rest/nl2sql-trust/helpers/sql_coder.py create mode 100644 rest/nl2sql-trust/helpers/test_database.py create mode 100644 rest/nl2sql-trust/helpers/test_engine.py create mode 100644 rest/nl2sql-trust/helpers/test_finetune.py create mode 100644 rest/nl2sql-trust/helpers/test_llm.py create mode 100644 rest/nl2sql-trust/helpers/test_oci_helper.py create mode 100644 rest/nl2sql-trust/helpers/test_operations.py create mode 100644 rest/nl2sql-trust/helpers/test_trust_metrics.py create mode 100644 rest/nl2sql-trust/helpers/trust_metrics.py create mode 100644 rest/nl2sql-trust/helpers/util.py create mode 100644 rest/nl2sql-trust/htmlcov/__init___py.html create mode 100644 rest/nl2sql-trust/htmlcov/class_index.html create mode 100644 rest/nl2sql-trust/htmlcov/constants_py.html create mode 100644 rest/nl2sql-trust/htmlcov/coverage_html_cb_6fb7b396.js create mode 100644 rest/nl2sql-trust/htmlcov/function_index.html create mode 100644 rest/nl2sql-trust/htmlcov/gitignore create mode 100644 rest/nl2sql-trust/htmlcov/index.html create mode 100644 rest/nl2sql-trust/htmlcov/nl2sql_service_py.html create mode 100644 rest/nl2sql-trust/htmlcov/service_controller_py.html create mode 100644 rest/nl2sql-trust/htmlcov/setup_py.html create mode 100644 rest/nl2sql-trust/htmlcov/status.json create mode 100644 rest/nl2sql-trust/htmlcov/style_cb_8e611ae1.css create mode 100644 rest/nl2sql-trust/htmlcov/z_36f028580bb02cc8___init___py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_36f028580bb02cc8_resource_signer_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_36f028580bb02cc8_struc_test_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_administrative_api_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_bootstrap_api_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_engine_api_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_finetune_api_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_live_certify_api_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_test_administration_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_test_bootstrap_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_test_engine_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_test_live_certify_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_test_trust_metrics_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_test_trust_operations_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_trust_metrics_api_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_5f5a17c013354698_trust_ops_api_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_XX_config_helper_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_XX_oci_helper_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f___init___py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_config_json_helper_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_database_util_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_engine_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_finetune_db_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_finetune_helper_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_llm_helper_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_natural_language_util_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_oci_helper_boostrap_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_oci_helper_json_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_operations_helper_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_schema_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_sql_coder_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_test_database_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_test_engine_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_test_finetune_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_test_llm_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_test_oci_helper_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_test_operations_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_test_trust_metrics_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_trust_metrics_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_tt_database_util_py.html create mode 100644 rest/nl2sql-trust/htmlcov/z_a7387cdb12bc308f_util_py.html create mode 100644 rest/nl2sql-trust/nl2sql_service.py create mode 100644 rest/nl2sql-trust/run_app.bash create mode 100644 rest/nl2sql-trust/service_controller.py create mode 100644 rest/nl2sql-trust/setup.py create mode 100644 rest/nl2sql-trust/test/__init__.py create mode 100644 rest/nl2sql-trust/test/data/body_process_sql.json create mode 100644 rest/nl2sql-trust/test/data/body_stage_certify.json create mode 100644 rest/nl2sql-trust/test/data/body_upload.json create mode 100644 rest/nl2sql-trust/test/resource_signer.py create mode 100644 rest/nl2sql-trust/tt_service_controller.py create mode 100644 rest/nl2sql-trust/ui_routers/.gitignore create mode 100644 rest/nl2sql-trust/ui_routers/__init__.py create mode 100644 rest/nl2sql-trust/ui_routers/administrative_api.py create mode 100644 rest/nl2sql-trust/ui_routers/bootstrap_api.py create mode 100644 rest/nl2sql-trust/ui_routers/engine_api.py create mode 100644 rest/nl2sql-trust/ui_routers/finetune_api.py create mode 100644 rest/nl2sql-trust/ui_routers/live_certify_api.py create mode 100644 rest/nl2sql-trust/ui_routers/standalone_db_test.py create mode 100644 rest/nl2sql-trust/ui_routers/test_administration.py create mode 100644 rest/nl2sql-trust/ui_routers/test_bootstrap.py create mode 100644 rest/nl2sql-trust/ui_routers/test_engine.py create mode 100644 rest/nl2sql-trust/ui_routers/test_live_certify.py create mode 100644 rest/nl2sql-trust/ui_routers/test_trust_metrics.py create mode 100644 rest/nl2sql-trust/ui_routers/test_trust_operations.py create mode 100644 rest/nl2sql-trust/ui_routers/trust_metrics_api.py create mode 100644 rest/nl2sql-trust/ui_routers/trust_ops_api.py create mode 100644 rest/script/AsLinuxService.md create mode 100644 rest/script/nginx_Setup.md create mode 100644 rest/script/nl2sql_rest.service create mode 100644 rest/script/restart_rest_service.sh create mode 100644 rest/script/trace.sh create mode 100644 sql/apex/AskData_Trust_v2.sql diff --git a/.gitignore b/.gitignore index 41f84a4..fb31af0 100644 --- a/.gitignore +++ b/.gitignore @@ -101,9 +101,7 @@ clientApp/autoprompt/semantic_suggest_runbook.md deployment-docs/docs/deployment/nginx.md deployment-docs/docs/deployment/terraform_p.md -deployment-docs/docs/deployment/trust-service.c.md -deployment-docs/docs/deployment/trust-ui.md -deployment-docs/docs/deployment/trust-service.md + deployment-docs/docs/deployment/let_s_encrypt.md deployment-docs/docs/deployment/let_s_encrypt_orig.md @@ -111,8 +109,6 @@ deployment-docs/docs/rest/ deployment-docs/docs/templates/ deployment-docs/docs/logging.md -deployment-docs/docs/deployment/apex-trust.md -deployment-docs/docs/deployment/apex-trust-lb.md # File with reference to orahub repo deployment-docs/mkdocs.yml @@ -143,37 +139,16 @@ deployment-docs/mkdocs.yml # Sensitive info /promotion/ -# Adding entire rest trust directory for now, since there's a dependency on dotmap -# can maybe add delta review for next release -rest/ - # Random IPs /rest/nl2sql-trust/conf/dev_trust_config.json -/rest/nl2sql-trust/conf/metadata_v2.json -#/rest/nl2sql-trust/conf/trust_config.json # added placeholders for sensitive info - -# Sensitive info -/rest/nl2sql-trust/helpers/config_json_helper.py -/rest/nl2sql-trust/helpers/config_json_helper.py - -# Reference to genai dedicated cluster -/rest/nl2sql-trust/helpers/finetune_helper.py -# Couldn't find any reference upon first glance, but I imagine there might be if finetune helper has a reference -/rest/nl2sql-trust/helpers/finetune_db.py - -# Reference to OCIDs -/rest/nl2sql-trust/helpers/llm_helper.py -#/rest/nl2sql-trust/helpers/oci_helper_boostrap.py # cleaned up sensitive info -/rest/nl2sql-trust/helpers/oci_helper_json.py +#/rest/nl2sql-trust/conf/trust_config.json # added placeholders for sensitive info /rest/nl2sql-trust/helpers/test_ca_creation.json # wallet /rest/nl2sql-trust/wallet/ -# Do we need this ? -/rest/nl2sql-trust/htmlcov # keys /rest/nl2sql-trust/openssl/ diff --git a/README.md b/README.md index 20c6626..75fb38f 100644 --- a/README.md +++ b/README.md @@ -8,56 +8,52 @@ Oracle AskData is a conversational AI platform powered by Oracle Generative AI. The solution empowers both non-technical users and SQL experts by simplifying complex queries and freeing up time for deeper analysis and decision-making. - ## Getting Started Please see the [Introduction](deployment-docs/docs/deployment/introduction.md) & [Architecture](deployment-docs/docs/deployment/architecture.md) -For policies see [Defining Policies](deployment-docs/docs/deployment/generic.md#dynamic-groups) +For policies see [Defining Policies](deployment-docs/docs/deployment/generic.md#dynamic-groups). + +This solution is broken down into two separate apps, business and trust. It's recommended to start with the business app then build the trust app. ### Prerequisites + The CIS Landing Zone is optional but helps with providing a sandbox environment with best practices - [Deploy CIS LZ](deployment-docs/docs/deployment/landing_zone.md) - This solution assumes you have access to an OCI tenancy with the admin ability to provision the following resources: -- IDCS/IAM Confidential App - - [Deploy IAM App](deployment-docs/docs/deployment/business_idcs.md) -- Vault - - [Deploy Vault](deployment-docs/docs/deployment/vault.md) -- Business (Client) ADB database - - [Deploy Database](deployment-docs/docs/deployment/database.md) -- Trust ADB database - - [Deploy Database](deployment-docs/docs/deployment/database.md) -- OCI Cache - - [Deploy OCI Cache Cluster](https://docs.oracle.com/en-us/iaas/Content/ocicache/createcluster.htm#top) -- VCN - - Private Subnet - - Public Subnet - - [Deploy a VCN](https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/quickstartnetworking.htm#Virtual_Networking_Quickstart) -- Two VMs - - Engine - - [Deploy Engine Documentation](deployment-docs/docs/deployment/nl2sql_engine.md) - - Bastion/jump host - - To access engine in private subnet -- API Gateway - - [Deploy API Gateway](deployment-docs/docs/deployment/business_api_gateway.md) +### Business App + +#### Deployment Steps + +1. [Deploy Business Database](deployment-docs/docs/deployment/database.md) +2. [Deploy Trust Database](deployment-docs/docs/deployment/database.md) +3. [Deploy Business IAM App](deployment-docs/docs/deployment/business_idcs.md) +4. [Deploy OCI Cache Cluster](https://docs.oracle.com/en-us/iaas/Content/ocicache/createcluster.htm#top) +5. [Deploy VCN](https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/quickstartnetworking.htm#Virtual_Networking_Quickstart) +6. [Deploy Engine Documentation](deployment-docs/docs/deployment/nl2sql_engine.md) +7. [Deploy Vault](deployment-docs/docs/deployment/vault.md) +8. [Deploy Business API Gateway](deployment-docs/docs/deployment/business_api_gateway.md) - (Optional) If deploying API Gateway privately, see [ADW API Gateway Private Access](deployment-docs/docs/deployment/adw_private.md) -- VBCS - - [Deploy VBCS](deployment-docs/docs/deployment/VBCS.md) -- ODA - - [Deploy ODA](deployment-docs/docs/deployment/oda.md) -## Deployment Steps - -1. Configure Business DB -2. Configure Trust DB -3. Configure IDCS App -4. Configure OCI Cache -4. Configure Engine -5. Configure API Gateway -6. Configure ODA Skills -7. Configure VB Apps +9. [Deploy ODA](deployment-docs/docs/deployment/oda.md) +10. [Deploy VBCS](deployment-docs/docs/deployment/VBCS.md) + +### Trust App + +[Trust Service Overview](deployment-docs/docs/deployment/trust-service-overview.md) + +#### Deployment Steps + +1. [Deploy Trust VM](deployment-docs/docs/deployment/trust-service.c.md) +2. [Deploy IDCS/IAM APEX App](https://docs.oracle.com/en/learn/apex-identitydomains-sso/index.html#task-3-create-a-new-web-credential-in-your-oracle-apex-workspace) + - (Required) For IDCS security to the API Gateway, in addition to above configure the following: + - Client Credentials: Enabled + - Allowed operations: Introspect +3. [Deploy Trust API Gateway](deployment-docs/docs/deployment/trust-api-gateway.md) +4. [Deploy APEX](deployment-docs/docs/deployment/apex-trust.md) + - (Optional) For using a private ADW with APEX, see [Configure Private ADW ACL](deployment-docs/docs/deployment/apex-private-adw-lb.md) + - (Optional) If using a private ADW, see [Deploy Private ADB Load Balancer](deployment-docs/docs/deployment/apex-private-adw-lb.md) ### Validation diff --git a/clientApp/trusthelper_ep.py b/clientApp/trusthelper_ep.py index 850370e..aa04b95 100644 --- a/clientApp/trusthelper_ep.py +++ b/clientApp/trusthelper_ep.py @@ -207,4 +207,4 @@ def test_against_oracle(query): if __name__ == '__main__': - uvicorn.run(app, host='0.0.0.0', port=8001, workers=1) + uvicorn.run(app, host='0.0.0.0', port=8002, workers=1) diff --git a/deployment-docs/docs/deployment/adw_private.md b/deployment-docs/docs/deployment/adw_private_config.md similarity index 65% rename from deployment-docs/docs/deployment/adw_private.md rename to deployment-docs/docs/deployment/adw_private_config.md index 10242ef..d0de12b 100755 --- a/deployment-docs/docs/deployment/adw_private.md +++ b/deployment-docs/docs/deployment/adw_private_config.md @@ -31,8 +31,7 @@ same VCN. It was not tested in other configurations.** Here we set the communication to use the private endpoint. -[Link to -documentation](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/private-endpoints-autonomous.html#GUID-8FCA06C0-E1C1-49F6-82C2-6B7B3787CF3B) +[Link to documentation](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/private-endpoints-autonomous.html#GUID-8FCA06C0-E1C1-49F6-82C2-6B7B3787CF3B) | **Step** | **How** | **Why** | |:--:|:--:|:--:| @@ -46,21 +45,20 @@ opposed to the ones we create while creating the database. This needs to be run with an admin user level. -[Documentation -Link](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_NETWORK_ACL_ADMIN.html#GUID-0F55BDB0-D348-468E-BDBA-7314C6458FA1) +[Documentation Link](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_NETWORK_ACL_ADMIN.html#GUID-0F55BDB0-D348-468E-BDBA-7314C6458FA1) +```sql BEGIN   -- 2. Assign the ACL to the hostname   DBMS_NETWORK_ACL_ADMIN.assign_acl( -    acl  =\> 'allow_http.xml', -    host =\> -'[somewhere.apigateway.us-chicago-1.oci.customer-oci.com](http://somewhere.apigateway.us-chicago-1.oci.customer-oci.com)', -    -- \<-- the domain you are trying to reach -    lower_port =\> 443, -    upper_port =\> 443 +    acl  => 'allow_http.xml', +    host => 'http://somewhere.apigateway.us-chicago-1.oci.customer-oci.com', -- \<-- the domain you are trying to reach +    lower_port => 443, +    upper_port => 443   ); END; / +``` # 4. Allow Access to the API Gateway for Users @@ -69,8 +67,7 @@ and the remaining user are added to it. This needs to be run with an admin user level. -[Documentation -Link](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_NETWORK_ACL_ADMIN.html) +[Documentation Link](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_NETWORK_ACL_ADMIN.html) 1. Create the new network ability (allow html) @@ -79,40 +76,52 @@ Link](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_N BEGIN   -- 1. Create the ACL (this creates /sys/acls/allow_http.xml inside XDB) -  DBMS_NETWORK_ACL_ADMIN.create_acl( -    acl          =\> 'allow_http.xml', -- file name -    description  =\> 'Allow HTTP access', -  principal    =\> 'ADMIN',  -- ADMIN -    is_grant     =\> TRUE, -    privilege    =\> 'connect' + +```sql +DBMS_NETWORK_ACL_ADMIN.create_acl( +    acl          => 'allow_http.xml', -- file name +    description  => 'Allow HTTP access', +  principal    => 'ADMIN',  -- ADMIN +    is_grant     => TRUE, +    privilege    => 'connect'   ); -  -- 2. Add APEX to the ACL -  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( -    acl          =\> 'allow_http.xml', -- file name -  principal    =\> 'APEX_240100',  -- APEX -    is_grant     =\> TRUE, -    privilege    =\> 'connect' +``` +  +  -- 2. Add APEX to the ACL + +```sql +DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( +    acl          => 'allow_http.xml', -- file name +  principal    => 'APEX_240100',  -- APEX +    is_grant     => TRUE, +    privilege    => 'connect' ); -  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( -    acl          =\> 'allow_http.xml', -- file name -  principal    =\> 'ORDS_PLSQL_GATEWAY',  -- Other if needed. -    is_grant     =\> TRUE, -    privilege    =\> 'connect' +``` + +```sql +DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( +    acl          => 'allow_http.xml', -- file name +  principal    => 'ORDS_PLSQL_GATEWAY',  -- Other if needed. +    is_grant     => TRUE, +    privilege    => 'connect' ); END; / +``` from + +```sql BEGIN   DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( -  host =\> '\*', -- Set to all hosts for simplicy -    ace =\> xs\$ace_type(privilege_list =\> xs\$name_list('connect'), -                     principal_name =\> 'WKSP_ASKDATAWS', -- Specific -APEX Workspace -                       principal_type =\> xs_acl.ptype_db)); +  host => '', -- Set to API Gateway host +    ace => xs\$ace_type(privilege_list => xs\$name_list('connect'), +                     principal_name => 'WKSP_ASKDATAWS', -- Specific APEX Workspace +                       principal_type => xs_acl.ptype_db)); END; / +``` # 5. Verification @@ -121,12 +130,11 @@ END; The first level validation is to make sure that the ACL are properly defined. +```sql SELECT p.acl, p.principal, p.privilege, n.host, n.lower_port, -n.upper_port - -> FROM dba_network_acl_privileges p, dba_network_acls n -> -> WHERE p.acl=n.acl;  +n.upper_port FROM dba_network_acl_privileges p, dba_network_acls n +WHERE p.acl=n.acl;  +``` Will tell you where the state of the ACL and if the requests you made provided you with the acess you wanted. @@ -136,13 +144,12 @@ provided you with the acess you wanted. Try this procedure from the admin sql worksheet on the ADW server. It will validate if the api gateway is visible from the database or not. +```sql DECLARE    l_http_request  UTL_HTTP.REQ;    l_http_response UTL_HTTP.RESP;    -- Private -   l_url           VARCHAR2(255) := -'[https://somewhere.apigateway.us-chicago-1.oci.customer-oci.com/v1/admin_config](https://somewhere.us-chicago-1.oci.customer-oci.com/v1/admin_config)'; - +   l_url           VARCHAR2(255) := 'https://somewhere.us-chicago-1.oci.customer-oci.com/v1/admin_config';    l_response      VARCHAR2(4000); BEGIN    l_http_request := UTL_HTTP.BEGIN_REQUEST(l_url); @@ -161,6 +168,8 @@ EXCEPTION END; / +``` + ## 5.3. Once verifications are Done You can update the NL2SQL_Apex application substitution strings. diff --git a/deployment-docs/docs/deployment/apex-private-adw-lb.md b/deployment-docs/docs/deployment/apex-private-adw-lb.md new file mode 100755 index 0000000..44314a7 --- /dev/null +++ b/deployment-docs/docs/deployment/apex-private-adw-lb.md @@ -0,0 +1,142 @@ +# 2. APEX ADW Load Balancer + +These instructions are for fronting a private ADW with a load balancer. For fronting the Trust VM with a load balancer, see [Deploy Trust Load Balancer](../deployment/trust-lb.md) + +**NOTE**: + +At this point, there is an issue with the load balancer (because APEX +doesn't like self-signed certificates). So we fall back on using the API +Gateway. + +So we are basing the configuration of the api gateway on this: + + +------ + +- **Note**: + This page is inspired by the excellent blog + + - We are capturing here the sequence as relevant to this project. + +- This page is a work in progress. + +# High-level Process + +1. Create the private ADW Instance +2. Enable the proper ports 443 and 1526 on the private subnet for communication. +3. Create the load balance with the ADW as the backend. +4. Update the DNS for the load balancer. +5. Create the certificate and load it in the certificate manager +6. Update the load balancer with the SSL Certificate +7. Ensure the backend health is green +8. Validate the load balancer. + +> **Note** If using public ADW for a POC, only the Trust VM will need to be fronted with a load balancer. + +# Dependency List + +| **Name** | **Function** | +|----|----| +| Certificate Manager | Holds the Certificates for the SSL Configuration | +| APEX Trust Application | Provides the application presented by the load balancer | + +# Network Configuration + +- Port 443 needs to be opened and available to the APEX application +- Port 1526 on the ADW needs to be opened (not opened by the load balancer at this time). + +# Configuration Steps + +## Assumptions + +
    +
  1. The public name of the load balancer is known

  2. +
  3. The ADW Application has been created with a private endpoint

  4. +
  5. The ports 443 and 1526 are opened in the private subnet as ingress.

  6. +
+ +## Create the load balancer +![Creation](./lb/media/create-lb.png) + +## Place it in the public subnet +![Public Subnet ](./lb/media/public-subnet.png) + +## Secure the load balancer +![Secure the load balancer](./lb/media/secure-lb.png) + +## Add the environment tag +![Environment tag](./lb/media/env-tag.png) + +## Choose backend +**Do not select a backend at this time.** + +## health policy +![Health Policy](./lb/media/health-policy.png) + +## Session Persistence +![Session Persistence](./lb/media/session-persistence.png) + +## Configure the listener for SSL +![SSL Listener](./lb/media/ssl-listener.png) + +## SSL and cipher selection +![Cypher](./lb/media/cipher-select.png) + +## Logging +

Enable both error and access logs wih the system's log group

+ + +## Create the load balancer. + **Expected Error** +**We don't have a backend** + +![ ](./lb/media/create-backend-1.png) + +![ ](./lb/media/create-backend-2.png) + +## Add a backend + +![Adding backend](./lb/media/backend.png) + +

Take the private address from the Database

+ +![ ](./lb/media/db-addr.png) + +

Add it as a backend for the load balancer.

+ +![ ](./lb/media/backend-lb.png) + +

Add the hostname to the load balancer.

+ +![ ](./lb/media/hostname.png) + +## Using let's encrypt for the SSL certificate + +This step depends on how you generate the certificate. +`certbot certonly --logs-dir logs --work-dir work --config-dir config --authenticator dns-oci -d strust.nl2sql.dev` + +## Register the certificate + +
    +
  • Register the certificate in the central certificate manager.
  • +
  • Update the load balancer listener with the certificate and the host name.
  • +
+ +## DNS Entry +Create the A record in the DNS matching the FQDN and the IP Address. +![ ](./lb/media/dns.png) + +

Certificate Bundle Registration in the central register

+

Create a certificate bundle with the same certificate as the SSL publication. (Used for the propagation to the backend)

+

That is basically the fullchain file from the let's encrypt generation.

+ +

Enable the backend set SSL connection and disable the peer verification.

+ +![ ](./lb/media/backend-ssl.png) + +# Validation + +Use the same validations API as with the trust service, but on the load +balancer address. + +also from a browser access https://\/ \ No newline at end of file diff --git a/deployment-docs/docs/deployment/apex-trust.md b/deployment-docs/docs/deployment/apex-trust.md new file mode 100755 index 0000000..9e4e831 --- /dev/null +++ b/deployment-docs/docs/deployment/apex-trust.md @@ -0,0 +1,123 @@ +# AskData - Trusted AI + +## Prerequisites + +This page assumes the following resources are configured: + +- [Trust VM](../deployment/trust-service.c.md) +- [Trust API Gateway Deployment](../deployment/trust-api-gateway.md) + +## Import APEX application + +### Step 1. Select Import +![](./apex/media/image1.png) + +### Step 2: Download the latest APEX app + +[APEX App](../../../sql/apex/AskData_Trust.sql) + +### Step 2.1 Upload this latest export file here and click Next. + +![](./apex/media/image2.png) + +### Step 3: Verify all the details and click Install Application. + +![](./apex/media/image3.png) + +### Step 4: Click Next + +![](./apex/media/image4.png) + +### Step 5: Click Install Supporting Objects + +![](./apex/media/image5.png) + + +### Step 6: Click Edit Application after succesfull installation. + +![](./apex/media/image6.png) + +> **NOTE** If supporting objects fails to install, that's because the idcs server still needs to be configured. This error can be ignored. Proceed to edit the application. + +## Configure APEX application: + +### Step 1: Click Edit Application Definition from the application home page. + +![](./apex/media/image7.png) + + +### Step 2: Update value of REST_API property to the proper endpoint and click Apply Changes. +The REST API is the URL for the trust API gateway. + +![](./apex/media/update-rest.png) + +**NOTE** Make sure to NOT include a trailing "/" at the end of your REST endpoint. + +### Step 3: IDCS SSO Integration + +If the application needs IDCS SSO integration, then follow next steps. Otherwise proceed to run application. + +#### Step 3.1 : Click Shared Components from application home page. + +![](./apex/media/image9.png) + +#### Step 3.2: Click on Authentication Schemes under Security section. + +![](./apex/media/image10.png) + + +#### Step 3.3: Click on IAM Auth Scheme. + +![](./apex/media/image11.png) + + +#### Step 3.4: Configure IDCS and APEX + +Follow the below link to configure IDCS + APEX integration and +update the values on both sides accordingly. Then click on Make Current Scheme. + + + +![](./apex/media/config-idcs.png) + +**Note** In addition to the IDCS configuration above, make sure to enable "Client Credentials" and Allowed operations "Inspect". This will be used to authenticate APEX to the API Gateway with the trust APIs. + +#### Step 3.5: Update Web Credentials + +1. In APEX, select App Builder > Workspace Utilities > Web Credentials + +2. Select IAM Web Cred + +3. Enter your IDCS client id & secret, and make sure scope is urn:opc:idm:__myscopes__ + +> **Note** If using custom scope, use that scope instead. + +## Run APEX application: + +### Step 1: Click on run button. + +![](./apex/media/image13.png) + +### Step 2: The home page looks like below after login. + +![](./apex/media/image14.png) + + +### Step 3: Verify Live Certify page to check whether the REST endpoint is functioning as expected. + +![](./apex/media/image15.png) + +### Troubleshooting + +If your application is not displaying, double check the following + +- Web Credentials for IDCS app added to workspace utilities +- REST Endpoint is configured without trailing "/" +- IDCS Application configured in Application definition +- Under Shared Components > Authentication Schemes + - Discovery URL set correctly + - Logout URL set correctly +- Trust API working + + +**NOTE** APEX does not support calling external APIs with self-signed certificates. If your Trust LB is using a self-signed cert, the APEX app will fail. For now we are using the API Gateway to get around this. This will fail with redirect errors when invoking the API Gateway/load balancer endpoint from APEX. \ No newline at end of file diff --git a/deployment-docs/docs/deployment/database.md b/deployment-docs/docs/deployment/database.md index 56bc066..85463fb 100644 --- a/deployment-docs/docs/deployment/database.md +++ b/deployment-docs/docs/deployment/database.md @@ -18,13 +18,16 @@ For basic instructions on deploying an autonomous database, see [Autonomous Data ## Configuration Steps - Provision one database for client/business db - - ACCOUNT_PAYABLES_TBL table + - [Create ACCOUNT_PAYABLES_TBL](../../../sql/tbl_ddl.sql) + - Populate ACCOUNT_PAYABLES_TBL table - Execute [sql/demodata.sql](../../../sql/demodata.sql) for demo data - VENDORS table - [Vendors CSV](../../../clientApp/vendors-export.csv) - Upload manually through sql developer + - **Note** Any example data that coincides with real businesses is coincidental. - Provision one database for trust db - - TRUST_LIBRARY table + - [Create Trust DB Tables](../../../sql/nl2sql_datamodel_schema.sql) + - TRUST_LIBRARY table will be used by business and trust applications - Engine requires at least one entry in TRUST_LIBRARY table - Sample entry given in [sql/nl2sql_datamodel_schema.sql](../../../sql/nl2sql_datamodel_schema.sql) - Execute nl2sql_datamodel_schema.sql on trust db @@ -37,4 +40,4 @@ For basic instructions on deploying an autonomous database, see [Autonomous Data - Should have APEX enabled #### Access -Should be done through a public load balancer \ No newline at end of file +Should be done through a public load balancer. See [Private LB for ADW](../deployment/apex-private-adw-lb.md) \ No newline at end of file diff --git a/deployment-docs/docs/deployment/lb/media/add-security-list.png b/deployment-docs/docs/deployment/lb/media/add-security-list.png new file mode 100644 index 0000000000000000000000000000000000000000..48c50dbda73bbbb4c4d424a91475b8795133d5e7 GIT binary patch literal 133352 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

MA>eZ&gAg^K5g=Hiu(?P z2X2!q@rjJZyOks(b!ccvZPiM7eWX5)4dnE>%6hVUn*gVHORjHiYw8HXnhR$FU5t(E zeID0ypEU_{)6++S5_~U$%tBa9I+@V0uxbzs8;h)A6&0rg*;EfzQ&(0K6XG8Y0h1|S z+Cpr73PMOhM)o$A?ra3v>iDU_a~Y%q}g2B%_(||N3scf5gU-Tg6U_67B_0<+zLJTT*|oOqQ6)K7J*jRc694acbgiiEC>k+X#x1c3Yn^E>HsMm zwg}vGCOgkijcW)mHWTu{bqIL><-Aa>BswI9rt9>bai5nT1dHDNIB8cO-mfd8pc1jU z=Rr@aRusvrwx>~P4Y6qCOKLXhic*?zL%o{~pQHzHKjHh(XI(D#^8R6=xL1}HoVjvW zqUR?UZwWZ8CJp~&HAI0)le;Ned)VCsWH;E-gz_bZ8oIC z5ZV&^V@Q)y{n|{9mgDsht9k#I?WO#gk)&m;J9p*^Ac)P2C>t7Lw$yv6-{i4+IoIf( z?3T!B=THsF^nv<}6qZ8R1?mKcjU%d|xRhEH7z8s08}04wTt@<@3&KOGVbS=_{gLQ6 zvM@GKb>A{hB8wuJaVj1J#lP9-zz^;`RIG_PnLdykP`5_jThO+ zWU^Co-UXWAFLIZQ_cfb5;=8IG3EU<>l(W3SBH^dw4uW6oI^*>{*d9#J#4pf;pKtbc z@74JX_v(AcsOxVp=?GN{vD2zlNb?gWyVlnHr06oe7ELT6u;n>;GFU;*R!30F%QJQ-|kQXe0R$6iq5A z)|0ihf{mho53gd8zL6((%_?4(sHvHYMY@kAF}t}b5yy}Wlt3BE-DiKreSLxEFonLu zf3%E!n^<0-EDX|Y>B={;v519te#(>`tV(5HZk|=%Ue1owiyh#<7}a9SFP|AqO94t! zTZ*K1rx>8y0~g0J6)WBGs+)wIbwYlK{>zi_DQN=){hra@H+M0G_J)5zvd;{?*_XRC zp2Z7#<0W>dGrxcUr*cA3P*5;oeAv1NK=HvfZV9IO!d;=b^a)D@l9G~C68W^PxvGvk za*g4z@h};?6E27451MIR(_D?!W=*IlC|nPzvLON&NpmNI>B2BSDc9b|?iVg%0`e(u zUZ%s06xaFm#Y)Bb{;`%A*nRcXmW0efo(O-^s9dduEj9l^)E{TD&{q=>wgo z08n8J9v7tkU%=`=zb+U7)MMk9shNj=dz^n>F`xl7SKN0{8uneN@Bt|>{(~?*8JnGe zyYWukd%;b()^Wk)%Kq+ zZa?|ZA}0@36r`hlRpG5h{P<52C_w+rb0D7n9C-{wC1a5irjvBGl--t$i%gX;6x|?Q2zP#nl1)A8; zel_e` zTfQ@YXr7AkFMEBxL~-yiIE3qa#RB|5ZR0vnKrPW8f-@WLI(>V3s9|iIzD5}cjG}-9 zQ7zF0qjPMj27_{r%)7e5B1_g!gh{i~Mr}~ll;T_RGT&L+ z$fWY?@}HlQ=PCz;KBHpVuqgX4JOFI9g8h%bIw}z|zT7QE^^UQ%TUuJmy79SQhh+kX zsC7Jip_?$NE+xvo2)KZr&gGoF_`hX%2FUOuuO^PgcIM6cp%nFN)q?1nk=2Rl)Z9*> z_Fjo^01f%^=`QkWZ_3XZotr0ZmC>&h-`Y0(5`)`cU!En~aQwq{|C#b5H3zV@>c0HXwCW7C$5Wu>t1#=W*?M)gVlB%0ldV{m?4HiCv69%r z0-YGEk+9?WX_VvLdB*7)yEq~qX9-7@Dj=`c-aD^V=V&<;5X+*ZR;o!a87wKMsyo^V zAy$Vde{R0H)^^&NdVO2n3Y2PgLB~pCW@^Da+m1iK2V+-&;d0<2;QZNYL-ja+iDso( zIFSHV46SM`H)KNsNUF?E)$Oc-ZDzhIR$I@KsXuFcYXvKMot~avqFPavtjXw!yIs%k zZlRH<@=Cw;xxVX4%1J!14otsDrxnL z7s)o4%b0R=B_W3`(~fFs0nNCsbF#Mf0MXU4ML5x4e+z(U@Fe?+AAB69lBXb4r3aIl|;_gJN5Yb->0BslL>i7 zZFN|LlRDkr zsj~%ttmR4b6!swYynU%$^%=jC+k;GxuAK5liZ0w|O~1WI>%Rt$Tczf=Sj>BQW`pDU z<=owW0-2TA2>wfnZ*6Vc!cUr&CS7Fb=(iv z40ok~Gb=2hRXTHhe+ON??Iqj?mGV~hW!}x#0EZ}i5gGQJ`K{a0j_Gmpi^FU*d%o-M zKVRpF4qkY0?MYkCHPnu%ak5#AHG6xn&*s)lzndKrbXJo#Yjh+C;+*pkHXBIUK8giS zD1PRgcNsxm+(sv`t_RL6_3iwO5U}m9@os9Q)2iw$S@Lk&o>J9wJ;MQVe@q>Rwc6EI zmeoDc^yClWjL`#b9#s0CF%JB5x5tItPB!RW4^|;1xrF8A3Ues5}bHP56uW&S&gSQN9_CqF=o!KQhR!HOVoA=o{d%i>^LuhHWhC}|zv$48Q=Hx3~xhc;)amO=!t%3AFai(uoQFN~xU@Yl`xluOY zX!x<=>E5El=5|dtP^8}AWI4Pn=>XStcEbp<@&`!fE`U;UvniZUSF_P_z5NVuR8l0g zg6mprv^9N=HcG%}x)@r{YZI-|_(_1({JfdP8AqcQcwM`AVT`CFsK+Uh&CaN>hZeCHC;%C)VGwn!exhRJTi0O!1$ayT&` zjqbcXmLKMGCQ|8mW6l|Sf5-LVcAH=LjYEg)Bew@_ZBMG5S*E;;Z;tEj5?eB6)dV14 zZ^$Ef$vzUWvjlC+h>UZWO!vgnf5zi!SaXwTx;oaTrab`I-(7XZ38c^yy8+bLg^%FQYHF$PCX#*rCmSOrAU%kv=E_(~DC4Him8e&eealhOK7xif-8?1>@SS41c2p{Jcb?{2N!vqdJF1Om_L=+f$c;ScEArChYNv zi+tk>)YTygmMs!NG}B<)jmKtvfmLwH(cTW=@JJm>8@KZg9n=cuQ1WRAgUIO0o8&ST z|GH4q!-m9WGnW0$ua01)MmGq!w&+kFo<2&a4*c1MIQBdfyhb}9!Pc0#qzv!z*b45L z2?vNbU9FkPZ(JO1hZZ%D-Vza9Pv)k^A0#NAEC^$D1LYT%$8n7M3_%euIKaN#c=nTn z>rYc`PpZ1UyTfOlXIOMOFQG&ETxN&Q&9#Be`|>*p6*oB4DzMO;X}s7sF1gpuQmufG zZl-CbNx}H?U!M1nY)sgze)w&}L|0lm$N{#mY~RyK4G%ppb^O64lEo-3B-NqXDwU_rcPlJlB+N7 zU!2a8#IBsqgr8YHJM>A|e1^weTBr+TJ1hgYn=glZG6WK~&n|CLYUHI0V~cwSz2H7j zMIg^Pu3NLMm?>WCS;Lmb?K*4%#!8kF4ywb#XZdb9QmHPV+uSb{_c4sX{W|kIr@l8i z#s(*o`tZfAt1l3EPsG-Z9oa(P!*~F%hAquar3Plar`T7$$ zbHAC(U;v)Bsfp*pfcGcT0*41V#-DR|e9_KH+%C3S#>XvViB#+?$%^A3_X*ifga``$Xz^Aw9_ZdKUS zU+9!`a~5s-Nn0gOMroGzX>-)iX4p(u|3B=#XIPWj+BQ6b$c%_sP(%b&lq#Uoqy$g| z6a=LAqVyJ&5+ETUIATL-0@9J*dxsDamEH*fLI~1ZKuU-Z0`JN^dp|RK29NL8d%Qos z{V#AI+~i*CUhBHnd7bBZ0r9q$!*?SzccC&{`kH|_Q>oU9yj{2ek}s*d(AD!p`aoOp zg{B1M_fCV^0wlShH#3d_(`@!u<*L1m0r`ySDJ`UKvK*$C`yov}aB(GOS86&9s;` zl*y`-DL+ac+~W5#dTjUlP?dP(YNVF@-Cn(?nYFJrpYhkes&Vd(sv<^2?YiM>F;J+y zL|EkT1pDV5!up>23Q((M$3Qx%TwkHMfZCNkZ9%Ic8tvZRL4*x><|~-%eb@ zL>lU&+6tfsu3~dtswlX z23jjv1$1tUkLSdW!lXUt!ldn1aLKXPpkCfWvn%K7P?~rvEkeqk;`fofBJ=Nx#Yj>4 zze7VUj&wF5nQLDyi95L-Do@2+mmMdU7DoeQvaC&%#afb__Y$xv4l1)up5_|(h8VkC zgIvAVG16AQm$EBrXjsg?Q=)7nfOBxkSa4e3W`Oi>v*oxq?oSf9Um1n6OZKD zuGk!G?Xm7?I@iUo;mJ{T|5iL?*s&3+P82v23jyEP0S zxeM#8FUxc45k~)1=#MU!j$26 zwMM!zT{+#ZPT0tF+5`R4l_Iv-Vvo#oSx09O5v3z6#Uo)z#5eUeA3vTjvYpjyO_y`=y5})a9{0`|DDu`(Bnnfyj zbM!5_t8H)0TN?~+O3IB?Sg2G6By6OaRygl+N+w`-5r_Er?j=|mxMHQRh?$I(JMzfH z%se?TJ8O*0!d;%cIWO)IOHGwTYNjOT;QVaD}7CAfqN8EW9-u>h*< z2dl;)m{+nwo`t^tm@kEMJq^tWIHYXmL+v7Bb{*%hI$3{z`8N#z2@Bnk3@!SVO&m1l z@Tt++@uj{T_1XiRD4RPDFK|&_AJ~P@$^p{pitXA|D-@)Mp4Vc)`C8_=r-*8zX-|dc z($F>hc&;tX`+nUY=!SeJTp6(CO3Pfu)hcl;8x6vq5{< zhgm~X!i0`YXqvhBjZHu^9I4YOvVedHJmx>^x&{0yIwsUNe>1;vhaNqTZ!b(9 z%j&|FHE(Zo6xAhl^}y^yjt}CYZr)o{_aR zyrNV70_7-AB0GW%snnkezw26Pj6IYjG)SJusV*_Zb|pyj&{TuYUNt$x8c>QczIVl` zXbg4lzQIab#=~c?+?$w}4<+dyu_5`FEBz;osCYh$$wuytD5Dw!14HbSsn?tq;#x(q z4?^X)9fB{(v8@8OVA1q!azOM@wNcf_sM#;6sj2Br>YSrT0gu2m*WA4G;FF~<-Wz51 zMM-^B{4&(5ALqNfHLH82*t)70Gwh7jJX&vCv3K?}aAQE&_NCw5wC${1b`I<6+SOIZ z-c!w5LvzUBpA^0y+w86E5=ewA(pSllo#F>wZGgK8G!}XG93~YD>zs2Q$kvV{yFLl+;AvC zs6s2Td9zGQ-UAVHwg>)#}x={J636~z+tEj`6}qJAUz}V zJJE(87dvx-cGq9+rMQs$i9h4#zdrTRcqbZM$C+>KT>ZwlE@r#N+6oHYGQtsBQqF@N z9oh>f#52skHP(F8 zEYq9Xk%ZO9AxLvksj+~Y0N!=Y$MPupSkl61PT4^IbVFNxmHi;YC-D|<0aj$pSs$`N z-?qhE@n)fU9o%_F;#mHv_1SLGL>aHO5ndif68G(mx{L#+*olH<8NO`J&t3)b=D4Ul zz34s29(t)(?q7`gKi|Uhs=rPB_~>v)gnR)UE*}faNM+jbFNE5WGYpq%#7Q2Xy?Lev zP2IelQ;nhBa@3FzZmBWX7x`n}og)&^yrISW?$`?(Z#bl)2MbK=%!`zsAB`A%wJ2;- z9!6QN>$cIZmDurCr5BEKosA_$NA2RU*k=x>J1oxwkCt1xWY@m*m*$X8tmz}U14vd%yVT7qWoQRC4&j+*yA_;B+#*NB1!0y;j6-D z&uY87=eH_zTA*sLB%pgXn%5JS7sWcZT@B*$TAWcG zXBG+9k`B0`g3Y;nr;e|CtHF^~i|c>iet)5JWTGi{?ESyIFE45}W(fq=Ds6!Kb1y8@ zJ)?~m*PEtRxw0^tSzEjLjpwoiE1)ZXzwxNg;7 z=VsTvD3@91y%L>0$1h-(UCauI^TzoCW!SbmND_@B=U}CqJbx<+9BC9bm+(9{18)NE zxo>Oatl#;qTcr70ma4O?_`PobUJQPHs>`~8Z5z39XxgM`WH{Z50@lnboo;L$>JVqk={DBU*U{N&N)Q#CSci27tNQ(^U<#Ck$*kkz`X8;BFN1fQNR@#&)Og zKakuzGzQR!e8RqhgI@yM@1JjG$v__=2!#Irx6t*kALnVPE#r&+{Y!X{wm^jswKFE5 z_1{1L$N2qs=>BiMHWg#@fTT(Dzgp`A!i@6y{wd&?#75F^BQ%)HGz@41TQle~$Ej17 zfu`gg1VOgR;clqx?$dyrrOE)>ysw<*R_C%kL_U(6clUeprZ=Ghxu%R3o!Z)iBo|Oy z3RgPPTO+3?wd5Pdk?0{p(H`adp3TBQ4%?2jNCuM~)_YtBuHuF?E_Vpew?vQO1m0fw zlg>cg&-JhwyU zXV!rUPV{qbU!zPd^)YharB0=>kt}RCKsA*rq4>BNuYQ>va)LrYgRX7AW&CGB81VLlB!1i+Clq=S<2dGV$CtBQGnlq?0)cB^*fw|$R^ntV5c_i zgTheccQPmQ@4$;`&^Kgh`{)g+?+>yVIlB1N!p0EpcgtM?Tf_-c9? z<@V+9DO+H0Hsc8j61IB{)UjNv{87KsV;-svh z?$jrC*So8N$^c0;Leh1_W>s)3-nT)tdnJTya1NDl(4f#vfaZx+3FHT%UOE1Z*Vo8~ zDumZn&Rc8Vt|}|)f8`W`;#8oz?)hvAaN7!Sgb7m+6?Vk4ThlR?>84dsoqC_g9!)g4 z6R^BUjOXL!ZKD~mO?-Y?>i5OHHA*OkR_uDqDa#8m&d4tTB9b?ITgt+9N**d_B|>RM zM^Nbj5(5Fd7rP&to~P@4QJXmnJypQT{A%HmW~ULRqn%*C2c@e3Rl&$pLIy2>7kpVp z#^h@Vr}eUN_WcV2X4S$Ycn0M!DqmBPE0ZlmQrgZDpXl>HFcbCpufnT6o6CmEp2|(bY0#XV4q%8eB zgPF4<-N38j)h13PXLw|m*d4ID)hwqA=43i12i>9-84xjU)~Hi@`!21ZfZ^S}q1}}L z;mJ^oE{%U_7d*c{Pif2lU}3ZIzITReHnoe!!qxa#58&Su$B%y-RZ2#J3d;;6Sq7;F zOzv#9ZOB_~LPhVua(#8k#uHbTZkJDz@Y$lQpySE;N()5tLrWeWLXk$iBzr)j-~>RA zXAljbrop64mj%Cb|*n-wACVl zbK;4K70v+lH_py2*}Z8tVER(g*4wDTRAis?+{%mHqjTg6pOT3ggbTq4EejS^8gLi9 z{m|N4na~KV^AZVc1>SQ#7uffxKI^hsgvf#IEGjp^+CYxpR4+z-n{eatr=6}v6me}f zLcw;l`f(%Tf-ra8B@t^Jj;=KT;ZYRU9D09;wS6)1vgJXN-f`UB@SE^U)v>{6ov!*!kf1TRI=-4hvfWZPJo zWaf~%v*kYBNxsAr&}}y*n@(PZ2~*|gD7^s#y##Yg?8X+!TXAn0i?-fa5hwMc1FH5= z=4~;eqM*zOBkNKdq)+|btho9T0}!j0d*<|A_xy4H^5?6B%46s@FG#+$bz!cci`C0mtGJdmhNSOwObV(&EiSrq;NhXJmoUsc2ROK|R zW`^UIcfZl;zYwq#An`+JxWYN6=Ix;=lQDeXK_#$<`qNAbr&<%6?}=TVjuCJtpvde@ zy2IN%A|je&pb~Y`s<*P1kgd&g^7ap)4VY@as{r&&j5gF@QeT!9_sKJbz*5ICDXzeN zF!zw2#oYHGU1fnVvVPm?Hqr( zA{Gp1W)4{}iw2fVR%2Mp0O7Rex6zE;K0OEX#P9zY_2_O5w^qGP|LN%==7>l>t+q}n zf=iI%h&{7A4Ng8NA#rBb#4|T=AVlJZ_`}b?4%c}X9XxpGeTpXFT${&dQK)@ZlS(WK zHe=uR%DlOM(P4Gu{z|wUe>Lpsfn#Ms{MjkzFY>xyePUcM_C5B1^06b?XMR(;uXrtq z-|pj+U$gIMs@=aI^kRxXVr$#dXmZJ=d+CY@NAg;9?EHOmYTm*a&O0|(J?e@rICyw9 zQVcDSmo<=Jqmk~LaY{1j7pa*#(NEGYFp==S$1qjcFyrKm$&I2J3w1d@dP}{rsEXTr zLQQ;~P*}b5N*o(Xmj<}^#og#1qrg&YKIpzEY9k^M-j)Nqef8PzgAn|pqxTzr0@x1- ztS*KeIty@1Ln*_8pn%%1+oTnHLv!CKrt90HCs_TQk&m5C8(eD41E{3JhKVSx#ve1n zaq)$=odWraz?~1WNEbjXbe;{eI%`n~$B;5oXvJF>A;bJ~v923D;#bcWh13G3es6~b z`^GETweeC4?V-ST@WzkpDaA}z7u0{Ph<|!it|hbkeNwT= zr;(4^s@&6b{@XgLvl*fYJ+|ETIm+AR-|Uk;D)V@dIoGT{{zBFz=htRhLE+epW#NUJ zg^2sB^sjK$k0;IIN!a|nar9nIKGAmhb<_moX>V-EjHkZVV6U|b9|%O`jgc^gw{+zt ziq{SFbE1THuMfeFpTSmO5uGXomb{DfeP|Pe~Zu3 zTI0zgI?_ch2-NMvIz+X`%ZSTMZ*eQdLPgbm)C2hnKA5L>1Ak>W7&Su8 zN@Pk8IV1mxD864?24pEN9O70fi|iTa?RM z*tc}7^gK^+Ll(_((A-KrkVs?XjK7D=kHOmu1}DF94Q6U^Al6>u8|P^jW3`^dhn%vW zo~nki7@XT+XxT;7l3z*0HG`rWUFRgH#Fga)!STiQI|B{k5=zZ=vbDdYjl5CdCL%1F z*82ux;2ac5@9&L_rl6!r1Pr1|;4s$4xeUZT#Z5;QItD5WoxKwg3a||$`=W8}ruDP6 zPohWcU33~Oky}wrA-Rl2l|)Qk3{#wh(?ClFBRaGV@;xdLhE4RYQQS+p`E&{BfQn^T zs>R$nw_HivpsHk=_u4d;&WviYG#iwKf|FjE%5&c^Oz~<<7bx`qs&!_i%aEu9v0P!H zqXMNzc?{44CMLs=3o4$8F4wBRp6mT>!?B;3xQCitxan2sT#g_w50)yc$CzIyn)D0! zZGDM>EtNFK!Pgf|I7t}(x|ulVE4?*>{Om={3A%gdbc=M6k3W1Y&}v|wE8FX{{kp+k zh+X^ohNIwd|JOlk;IiaWBz~QnPY?}H7DP!+q4X>>tDjxl^V`~5=2|n!7iG`o(#Iel zWFSf!%GErRH3otYpT2TNTBjcI4X8(5gq|jq$j>L7O~Uomj^e&B%r6e+Ee555tgFn4 zPu~O5%#ncm2v}WCK#g_Ji17jTslw5}uY_UIup;`j32d<$!)B&t`~qCbi#UQ|UPOAg z)Jb}GEk7^FH){CA{9#}d$Y?zv85{DbbS~?Kzzxz|5x!?l;ixlwsbsZ63FN7(d3uX9@8x|*n1de?UI zrZzE6@eN&^8scG|Rjihm6SjnAg~#j+nVG{w?o(@hiVzR8=a26kTWmTC>0oeS{Z+5{ z-T_uj37wT1Q;>zd+QRgFKi->=$jhJW75g9|8+l4tXCO*Tm;E-QGP0%*p^q~6YyAQg z#d6sA`#1YGr7FB<^DI8=2c0MFjcp~jt2Bj24S0xMaoj#gI<2o`Jn$C7q;(gigvrxW z>SYr#nVT8Z$MuK#n#-y!Fcf&a(O7snnthi?cK63gmyhlA7nQam1qcOIV+%p4ZR_vO zW>x3&X(Ua-59L{OE9~vuK{*Q^(l9+9eIiObu#CD%=w|4zC>qh8RCz-LQOy%&g7lxS za3+oE-`BfqIWxz^q#=~@(IM3X^T;=`J*n~l>7hbZV@A$(#%yN6JaD!+y>$3CWqRB%E>&(nEy6^9v(3k zgk`w%NOewpGnSEqD*aEKhNv$0(ahHdRXVApF9gt_e zq9qCDu65>ko%xXTmMiNOecU>E#AYO(5M%hCSXN-dWgz~_lo$V9_b$uX-urf!J1@`9 z%6T&F?l$kO=KD%CMI`xHE|&K%g+J$hoF}m)C94BkTm{Ay;3{h;w#J)(tTe|5j|w_M zRXR`3KfhQ9_MzM4i?5BNW~{%ws^gAe?Uw93I)8=VvLUE*&&%INsMERH;eij!*A^9a zzcOGMAAd}4L)AkY&cjeI(IG3T%&2aSoi8IOqb6dN z?^QcUwR%&R1nTCzPKNpE1?jx8r@czW*6W%Z#=43Q@|GF2d{<@^)5siyoqZFqd-Bn` z%0lZr?nCA3-M}xq)NRxC=uTp;b75(BaDd&H*KAd{r**XkZnr9&aRk+}aBIOQd0QS$ zV8RRv^@hc#gPDR3P3y#6eH?_qD1Gw#J}Nxa6mTLjZ>CQF750!`^J|QPxHdKBs8?rI31a)YD$1lWTM+@ZV8}F(43m)|KCJthX-X470 zv|KhKsm<}qW{n)bvHYwA$G0x6&3UOz0rw|K^N&w9$%=tXvYwmV#!cFFUW+p`!~NeK zAP2U)WW5<{x^6&xden#`&@p9*pR(3zLl(hK)j334j_SLrEj$5_}-GxGh~_V?Z=(ka02i)Gu$hTgLk)yMZu_Q8E@v+Eg4h!8|0a; z76b!1cNc<+`0Yo!JqJAOAX7Kf%t5_lPPDSiG8$BPr5guZi~8sTS*`kf@sDRYq0N;s zRbEY#7!Mu^BW8vX8DaX}$p9>p_vK#pDFZKs$vMP@GLshOgl(zwK4e(-J{6yqNi zkt5ofmnT`o_i6Fw4S93eux)165P7*DSAl?BGe30r-1Ex}R;RKD{Sx5WZ{fc$Tu@lZ zna{NUHR##d;G*YVj$DSx8^t`Nj{bMQ!K)+Trx!;0!w|^>FvfcEkC23gK^)ZUz)nbX z_iTnC!_LBB!Qz5Gi%6dyU9LCjJ+u1Dwz=8kL{D!%EN@gY*GBr2G&FD1T1QLi?b$dB zjvMozBS(E5le8;BhXyKLO{G+Gx#Y8I`W}dut z$6#_n+6Za!y6;_mr71dpQ>{$O+JYUEadLQ=GXH54da@U3-seWgSo$O zjSzCJQ!1PB)99l~W|6C@Nsssv9t9z8yyP-VyO0AP58?Vf?RlRAm)2!Sx{8+IV1K(r zjEzfeJ#iYg^SBvT!`$r!S*D$+Fu8kmTMB8RAF`q->E9Ap!73i`mtpA)AI|p`lR~G# zYXJW#%}jLT4NHa|2Xh^twXFkDhC#>-l2Dt=Z(NVlHHq zprJd&oAiXkoUztm!}fDVjM>6k-Rv^LWu99dFPFe6 zyNwH@2!A2Np-Phv(KQezyR1gzWTyZbBMeTDJnlFLx|;M9VUQ zzuE_kVLX>-IxL+mpW(fyHW2K`wJU+D-+`4BF&zGi4!x91Ux5dj=uVB}$K(0_u0ATY zJa3DO?yM_CpBXl#>x`*_cRC4K7W&zU^bVbHT)xS02b0#(eRr;^x5-{ST@2QxhPHql zJ*D^(-(A$5iv`=o^Y{F7tkjPuNSnG(l-5OiO8C+U8J2D3HJ@Y%wBLf$*CYkz1)1L@LwR z!a7&=Zy)$Om*`*GfHH7Q z8+c9>qz=u7#~Jo@qWC4S<21PaaO%|af0S_kc-lXxFK>%39)7X^^;nuLy-d0FFQy`Y zod)-Mns*|CgB&A zcR?=ppLLc0O*dji!&d0ifOMt=_+a5c1t?)zTb0vxkJ=qTd_sTpPBzMA_&P3NkLrr1 zZmL({Ki;Hw1rQ!=T|)}@xS7+QQwCNXmo-?vScI0xz~+%YKf+aArrS;pF3wv(`+b_# zMY#v}mmMjZ1o}bV(d@4Vv)s5TfRCU5IPEKJFxGxJPQuv*c$7P4JdED(seazM^T4hH z&>DqJm7@XH-vJP@!+GFgZH!CZL~iW))m4+egm+GIik2Suw;|x4EQ0@8JdS~WceeKKiiF$zc;nLol{aUB=thD9=s2$5QlDk|-g(U?x*U|p zlN(YDGLbsJ;G>*Q-lP7{^?_@?{N9cSHnIZ9rtWf!Y7k5RHctQk@fO1x>Hanl-3$XG z7#qM5DFyK57brBK47oj@wfybw>(ip{HvxwVg{_6nJGqXOmjDNuuY%x=MRbF%Tm|5y zPTj;Sp<53siosoAEf=1rn-rxufKzCJchQ*0nOd9H6N~+Ip_JZWASbJ$f6eXCe9j{T zr*(7KCNyS2(eF=>!@qtCtft$lZO+ykpfCU0D&f*LAaJw0BXlY8!iv#+UxvAxMnS;l zus!J^s6csngo>DhGwxV_0Qd&BG@?}<@M{96;-!?QN8OX#V~VWWV}uF)`NKcibRt+= z$bs6@rv!99Gu#m}%yr?E^(r?mv#S};9;^U|nG-Do_6!;UmfLk>cE)M~VG*{?6N>xp z?Nf}j3@=gKH$o#`rjt38V4sW}Rf^J^Kl>H5#9=qw1L$=nlW27hO}q2@v`A^%TbVYs z7(wD7Qehb(WSW_eu!=A(j@fNpm?UQOpEuoiA94>-Yyc|vD@HxMnsE-+X!b?H+e*Wx z;%?u#KD~>Gc!;&|C_s@mO(l`ro>dm>NZ?IJ*u;BVI*;Yoy!qksdqIFJ%B!vj$EBa0 zB$IrvEr0T|$Cb)|FnwwJ@_B_{(_L_-zJ~rcdVOZI`I_B^iW@iJV7tj2zSoX*GjdZt z%yx|=_(oF}w)BX_sqg+y{vBgvef|x;w||$~{SgopVZTmMK03fsJnrrLY{yzG0;j&Z z+qGBY^`FGg zOrQeq)YH8FllVCb+Ng?44V0S=mdx$S516Lq@sC z`D@htb0FNGf&e#qU;W)rjH0gtt7eBx_Xzg=$9C!vh@UkdqWO9DziyKYZhvq3lGsn? zj+yS6yV8ZS+7Qq);xNQUO-*gi{q#@9aT)jooE^Yc5^=7Zp<=FEr3x;fT=SdrRhb)c z4_g`4m`;hf*tSJifF?A(hfiI3|NTt5u`hkH))bVRI+z1}?{dgGGq5=K#~}1%4yId+5URcXvGb2ls!mK3be; zsS4C49ih%WCA&=gzG{%;eu~nqQDqcJ*9v*<1e|p?`@y39YisPE%rr z)8+klfn#?rg_&Kts(rM^2e0K}kLxm*EpU82c$ZPxtM+h;6E~4#R$5~|cSqb?vldr; zVE+kS;tcfTIHMoh3nZWM7vrbf3|oo|akDGgb0Y0OTn>VEgh~D4O^kMo`%m}}EZvsm zRY7S6RWYu8>pmK(D|Nl0{8tBJId^ONs< zkhY}@>t$P2Vs3u8^{kXQbZ%dVhrk_?Fj4w60Re%+v3A33D}lxUfRcAUlI@Wnk%~wi zQ;ELplV%7EqCab@1bAZC_g^Eaz2XC*Q?Yj$tE8{gQGcr z_JWInFr&VAWU@ns+h(`|+4jMO{jW~hf(P@hfk{j4zw7)8Lg?AHPq+5J+R_dlY~7vc{vTF6e=h!GwDtb( z*|Ys$_^=r8U^CMr)1&*3`guJtF8oYPKY49LX@~3fiuRiQV}N2d7?=B}e-;ugXlLsf z=NONlvt{RPwUHL8P>ORyLv%7< zi`2FNew5CXN4=Evs@X(T)bxJg9HhnGb&9<6HIDtfb(3APOO-h2YYtX@1K=oBiY53! zTFusH>_l07h6VNV$Nd59)>Q8s@wm$gu*<_eR{Y#%ZUW*8T7hl)U zGVhc8C@!me<3Ij5Y5-(e{TS)uR*}9;EUgD_cH}$ z9DPtvhs@nQFalW8wMbgi4jk}vvDu5%lxbyfrP4($f=1onx$(OV&9kG)Gb70yd*$!w z1Yqu@NWA3XUl-rYSb!(F2RX05Jf~Ov=z;9&=acwUz-k)_yP%Y6hyxz3PBh1-cGlY# zXnzzHaQebsLEl{a?Ux$<+~|4$i|)E+*5{sk+4Y6{Hj5Xnrk~dzC1d~&K%5Sjj|zP2 zssSW*0w6J7G)j_$&>Qlzz75^o!PO_J^y-?*c2zCgz#F# zDECPV(gy-S6H@?@PkFV^?Q@iXs#t(iQ*=wU_#A)@W=IqANQv;lzY!&)!Le70-c&t)?3oCu9822lEYx)3S6UnFvM znvF&{ER@O!?r&BH&~)V?W{%Iy#f}P)YXODs;nGG6cz?a} zy50eUfcIA!(S<;Z@`3V$v`Y$F7rk@p40Wlj+e{QofAq#jw}+9uTENMfgW}44? z&c)%`qzWKSdXs9-R36r8gRl$W58^r>xAb-EgIq8V7kXV~EJ4R5~+C?2pO)A`@NGk*a6_{)H!Q}>; zc19Dy14)oxZQO18q>7XfyiU#vj#bzih=f+m{5VIZ-f;HR=8;Oak0~_Yfi9DP_Mn`` zyne+hFd^?;T{Y7-8h>|IHw%{761LO-Feq+!$p3~PmQp(cNR~Sf7sm?fDx8J|*Nojv zDjmWF$7KQk+Icklu}wU1l2;yEd^013=MWgHxnf#*MgP2MGuQ6?BOE}*&8`hZ8hT{y z*34^>w+2n25>$t{-#MW5jl%s38u8*4e91%RRpHO}Uz_@Lu>|33hKUWvvDa;vB108Q zfXe04l^S@sB(!g6qlYVF*kjlCOsG6op{^lb$pZ+jGn1`D)$#4_pfUMKhwJ3n4mA{R zA=onaG}R;lwAT3Tql#NR`w9m481OPT?-A^mO4~)sCccOjHK)y-dZQV);sNSZ&~SL3 z3fV}1rEl)RW-o_+-T{i(l^nzQCxP^%xkFr;CKgo|_!cdIqUzX|fC>uP_-6l{=Yl|% z3jB(SD8Y1vyMFJckap^4i`E8Oga)c#J>SJfO|_GJn)fPp61GXY$gWo`U?)doLZu6X zDncQf?-K(Ww+v7!UWobWn0pY_yZc2gHSXTMo!=O))Z_C0#@4KvOfiA zerlzJ443^Cwc?m3t_%TfhACis)#{o4_^_38die`W^EpI^MF&3Lw`?Y7ja&XbbO4Cv6r^ z_{1uo*-D#z($;Js#3LYX5he|Y8@j|?D^nM@);VU)8@mU|CBSL9_qA)|r)N3xeCrqZ z$PRKV_3Ju`pH#U6Y#`i3$28Tw_4B;UvkD-}=(@(}bE|=VGD-vvr-fFT4eE!@`C_g9 z4p|xGh$m&WnVb0gNf_4HAnMKJ|JG6eGHN!7iVZ9wU2zia;zj96`CQTBJ2En~x+OA% z6IxVrYo&g&YfeLn0DLR1Vb*?|Y>uDdhJXsBj&SI1O3k&j+1Z3^9>GzfmSe7|)0S_x z1>x(cwXx)?ZaJ9X0rU>wI>NMSxTW3GP16~*=D#WT;+*9N0RmYxe~SP9$1a)0E95i* zRuDVvAzaH3fW7)g)&m~&S@z#Tz9vydYwDg(hQIOMH~23eEEScBQUcvNu{}}gk0-w_ ze~`^+e^)ud$XW#)&xX?lB3(XzKc1szLe9r~I2Zsc1dO{Y`QuZTYQE?^sdTykTB&fQ zIl#^OYe)%{?B&5i)(+KX(3Wt)Wi9S`ph$?4WPRZK$NbIW%*I7d5{W-1W`@2%FDIfi ziQ3(i1f&XXaorw(oxJJLt=hlgv$172rRrZt}$gnQBP`8oF&i+IH6Z>sNu zl5*RvLm`s-R(c1_lhvXH=Lxk~0o}}@*P;y$0F1m=<8b)UiG7o>6SR7urTGFTJ9(pz zMlzC=2B{(FQwA*qgxlM&dG3Q(NNMTcCVCqyD79m=(Lz=uG`{@@B}TIG9{*epqtusW zuxD~gz1u4v|7{sO=4+QCi%eQL_Un2j)qE}y4%K0RxuHk~-g7|kf*)WS$O@iaJ}OD+ z?mcQ^KnWS~*AKSv>Y(Kc%krvRzBZ#?K$l%&eNSn+Uwt+S0kw%#Q`LJ_Pj=&4SPer^ z0`|xOh4NH)i+$t8^Iupj+Y}+-sau)Rn{}gW0aZin_6gqh1#U?Z zcySEuWmg7ZF=vju80i?x0%9qsZ^zk@II9Q`@O9qaD0qLq&3;7_#ln+!hAVB?3(X7{ zQ1{1a2Op65x`3Ayy4-b9`Bn8Vaa`^I9jEYmeFlf9Iyo974m#ZzGr^ridNv|v4rA(5 zIrc{X$V_MQLz2qG;Co=x0Ck^TC)@U@il(E?EMHaJ&{AV7BNgq@qLxsg--!`$08Odx z3Km5zAe9g zXy0?`(uwhJ>cf|lRYU8n8tL*p>=MQ8vmPvz=pIiWe!=jU?efnp)Fxc<$M2EGo{x@3 zk`Eq*Z1jk)KXMWo_?CRM$|mV-GWqt6{n{V~CIItqalSz{5s}E5vjv7#7E?!P;wm=Q z0+8R^uu7PWru>!-jp?#J&hD4ObhGUz zZDH9@Tk#`ojD($!6(KO!_}Q{eS;=fD%8r4%;ue z09Aoe5pee^?D^^a+wle-p+VGF*=7Hnj=z3Vgwp6^IOnjn{f_MbwF(CKxZV2@&Y!^J zRkXVkfm_gi`w-w0G|_7J_r4z8Z`eVmj-#RPn`hH^escW*s0^_4TK}XR*+K+&_dqb~ z`0w+UgSlua1`~56vgAKIhW_v1Pr+!_Z`2_Hg?*v|fbeXLz-#gU>uGmcS^f^3fJT6e zkqbCO<{T{t9U-gaT+DNs)8v7SeV7Qah`8*GyH8<8cH6_QDXr z*XeA5);z=+g#tbmu9mb|n!iMI;>GA2t+^@@1<`x~uC2enlb{>+#ZxMihsj?8gsOn7 zy$7*}?vxT;Sy{Z!hi{&s9_?-?ef(>cB`p3AK%=EjX=xd;e3ZI1pOsviVWH|T(I?}% zWVJmhC_`(mSv!Ws6sSx7sCMYRSVe6Ll{=S+LHh^n(UWmPMGXM?M2EZq*f%eewnRTVVg zBgfTRN+*R#StXdJsk~VNr}bi>@*Vc4k__v%7xD^#>2#qcjk+iMWBjSLcjsm|CQrXA z!KBiq`NJ=o=PTbVwN{)!;@Lo=Tu}q!4IgU~IKPq>@Iv1tTk|`XC=*Eu=(bqn*~kv* z+2^jHv&{HNZ@4N~ET2|Ya}&g6hDB_Bs^+oIU$zLFEX5B?ay~HbI`H~sa%Zq8Z1-$1 z>VwdQw`aCZ2G&QyM#UciV~iUx{c58GbiWq7-c`kE#9se$TG+xyU(m1w&=SW$jeIUR zPAgFoCf|Z3MKJ9qny`iaJ{jH__I*Z7L(?Tw2VIFdgsLT0mIeG42ZT${T%VH?`2xL#Fm z;-LEybGjjyFaf7L6^vB61j(W;AG3Z-FpfimA*9?%Lht-gh@i@8ka zMpXi1V^h#xc8NyZj8u|i6E^I=KAlrPeNl`dBubn$VCVPM%x?=B>QOLK#?B;r4pg6Q zp&|p>bz|~KOlTJp*h>_4fw+60;xu3g)1-QsnZ6j?-RRe<;`aa1s8^^F;95EvDmw-= zls9Nx$i>UK9RLUs<)CyL#fu@{wj=PhUR~aRgxKXnc}s-))|b{rUE9m{d(a$J5)l%x zHO(dq&=6N_*FgU@(1~+sfY-L#b+Ph<6NKj0VbVIx(AB=qczwH^QQ@JDz!;|M8vQ zbWawT<&<)qI7hrp@bUVvd3n7?p;IF9d7A~PB{%cKm$KOo7VRRs9I9~{SUV?Ek3(rNg3&qX*BL_6Rvy1xz^vq9i)9RC4Shc? zQ%hjA23`c&>36zISWADe=^Hcetw$@k>{tyfYc-KvW&R1aG|2gFF8m#ZI@cZt^{s?H zp4P|7&@?lo4CExfc|Zj7w$crUw8X4VXZ3Q|etq|Rq)2PE(2{zTEHLJE!*|Wb`%P}5 zK&#i6wo@<|stj*WJ-I0>hoa~VL3C_;RxGIjFSzY?t-icE?SUqosOY?N!RJ3tt@DQg zf7an*Vq+0=Wl_U++fnJMW8~*E@op$bKo0gg5I;v9gHwblG{Eq?_2(DIVLdk)jk{G5 zwF(y*feS*i|8@>V$ueM|e!WX}^M`e4-TBrO!$UP6Mh?q6#lJksI|8zy&@o zh~3hED}(d+K{pa(NgHLftUIGsFzIzr3k}|9dLnoxSK+XJbOUm`_DLHOzwB{Sm4V9Y zpciV%pg6&f1hSD$Tm-@F7cI(F$n&Z~M)H&0>3HBUrAm^F(P1I;uH zk0D0ayJZOseU@C`OY;cdc!KLZzWZL;LcWZDbu*d9KVBFrdhM^@qaU!5$H`wDm(85V zmY@0SeX9~+`(LPusg&_rvMI4xdt=B}8$2NSR%T%?#ca`KIiUsy)S)9hq4E<8s(}WW zsGu5+IPsUPQsK&}n>5RRLukc?DAV=Luj;FXZk&{)E^@WvL`n0x#h`C(D~7`c3N=aqfftmm?csA2v2{(ni+0hOKYwc z^-85rDnXKC4WZ=C-#&OnJjOz07pHW&F(ovGAyO&El;7_(t!R4B)$|E0zoxaQK9)dvfbS7RHdixOO4{GQDS02%X!IbV`K(EI-S1#xFMY zi&*Sai%Ik6JVAa{hseJGP-bh+TiMe}e97AF->BJqeuvX9VU|?Uf4*$|OcT0CJjj7jN!i$Ec6{z7-w~hp;A`;oNvgBgoT; z@(j|f{3biNi5AHP2u+Ppr(jg)Nt_5e#@sGmj#zGJrUs^+p9-@Y+I(+iAx>SL>sMld zOa(c_h3cS;rJ$p8hBbzyC)(r7V3m5^3_70t=25_p3fF$gzA|3S(Z=U{)Rh2{V;e0^ zq1CQ%`OWvBzp^O|`qaZ*6b0%iwOdy)@pso_1+7xYp9j%8V^k~_qPiITDnu-FQsx6G z+>aVBbh^qsm^jFGCQ573puk*IjdWGFSRYmJ3bc9?%)2d8N&`sDef1TJj{0N7EmLL| z2Ds6O?+Geqr;i(63tUr4P2`<`5)?`^$r7 zjBmTi&9UcPek}||Qlw5n@nD)2)}xx45Tf zUgzm`K!OC*`>5)wA}}JPZO-453G3gTi8og?Z>)Y30QDrA-i&iDsu`>}DIBW#@=CdR z{bs5k>+RK>CrB?qcMxyS!DVFXqUmhrP94pR0LQvykZAZT-L(9vqa%S0mjnz86KH@r zr}xrh7#Z(fSL^7Fth>YF>RRNijvDstpkp{(ZP8f5D{qPVx_(!01_d1u-&GrEciBd(BThzlh;uDJK=M&~xhxrNk zoJi;O#1-OF!<24{C~9razmUMAdeAZ*Lf-KxG%RiKyaN_ls5=yL}B<5d=j_3F(qfNoi10q`N^uy1Qls6jYE7X{5V5MWnl9 z=o-2k2HwTl=bURl`}pin@AbZ4_I1st;XlL7n)P4nx9dVh>sab2u-;10cRg%<{Vxjq9N zQL(o}OSm6aqieW-zGT+=unTH!lJ|*Lm8O_llnH3P2zw`CTSR8_@V>cbH4@Qly88`f zBj~c-c=?{-+%uzS)ik%-!~?rBSgi{o($79rEN;UxIE6_x?NseTGL8CQbEt$+qBwKE z(cT^H9-xcjxZib=177W7E)DFf6h`2+Ovo<|S>rWf(W49EW(!27WHao+XazaP&y2ApfqT%NZ{~ z3WaRk(d+M|g|c>9L04lj2S=x;M-bPK+nX_;Dzqw&-HwS! zpJL>_+m2tGEn1Rl9^?ij7)S#RAUq2uqWLj%e*2&K3|Tm9pMLQ;JY*B#3Za@tM==lJn}Z= zx?MZhWba|DkC9Y)%#S`%5H?~vhIV4ejvrxf4CYX_>hRc>tSv0>GcQJsvyJP9y?*$i z2Gwx;z*4!1wzd)P!_j&jg`G~tMpz--&B;zzC?M*phH1@nG9%`EX4)%eLoQd}Z6lV) zVuYT+O5=`{SPuJ>n+$&rC9GP_^Key~Lx?4RC8892)D$2zi1 zRJhi?f{PbDyr5^#)wf2+XSQqJ2@>pK-KtOB6q+qbgT?P|*YJIZYsd(prg<()!IiT2 zc06-DR?ZP4{?67eyR$Q(Ep923f3SE9@J6m;n`?-)xywzyhB?x~%V&qeN;*Na1_q0* zV0+r_&J4tlJc*`i^N<+< zi3%L!MZx5|{LDl>_6@7Mm&ujGF`xI9!KzpSyR_uka;?n_|19r0#FKUk|BL_n6?N!E zr{E29|M)I$wh|UmZy=xZhUz%As*u3(oy@g#eb*^@q2nVv9E5$&oiMCN61K#MSrKgW z&FBJFyFF+2ENv_0e)3+KoRpm41yA?$?V}GwG{@q@U z-Of0+CmLHYCXZT#s8P=^apfB?ELKC|z(ku0@rOmzYf;(Q)`~m-Z~@1eQG9O&L!qZ86MIIi-!r^NF^?7F z)*?HoJnAM+uNN418&3=K40_2)q95zc)nZ2CN(=I=5frYf997_%8F#WB@ur)^-K{T&w!UJj-4w%0P`Q+jG%lR=eb~1lb(rpt z;uRHuH1OI3EzDQNgFX()v=+X}uZ-p1tC63MI@6lDb~rvAQk$H4TKCG`c-iamsHKzp zuMN#@hQS6Aj~ln$B|@59wv~*eq&Sg@DwLVDt7Gh4SEYImGxzs1?coiOmL0iT%$59; z=ls>}7Qa7dKK~-Oj=&6=5e7$REL_zK$n@#X4d-vm_=jINPyGu8{z4o+qZ17oq|ZWP zVAzR3BDl=~KL$~49;cH+rzuIQ(_9m%M~x;v5Ppquwi#ou0C85`!3qDR)2Ca(inHS61~@+HGC!jjs!6rvH#) zsbtN@LsQ#mIhMQbOZo7mACv6S$s|0v=I1RPSy@M5@#a04U%qR(#K~One2;>S1@YIl zt{~v4AEo4IK85{BQ;~j)*W)Oy23a*J5A7;QB-ze>@#cPhlKqB{z)5_Gi~VMxUcXwE zm@m{zAh%syN>^OCGVWznBv(?Ja<7m zA3R~H{@v-IgZGb>B8-CZdrM9;=cpy-v6=VGhN{2JX1*?gC->}PnqYehf0?pM_4vm6 zrk-EkX*Xn6WEMn26QN)iHAco1R+PMJuXV{{n{X0Q>5_K$5*UVbPPbnX&`t^Kzji`M zq8=>G#E)?5TPr!5Y$iGHw-UrRIw`+Cajk~E*l3JgBg>ihI(*+NXYisB^om|K5RLJG z_OwliExqWj-}%mqtH0ng_9(YKLL?#=IIdM!WiN#ya3>C1aF!BlDu?~}xFVnPVB^~+ zH~AVRbqQ1koR(Yj23>$<0pe*B;+&bx!Z6D?PO>13raB=?X z-S}lcQDz>WM1@{{?ASV;RdxEDLD9Z$YSjbJqNK8oFIgf~-fU{tRiHQ#>75}=)Y!5| z)X?g{OD-?_OH9V63*#(zN|Hi8k%@SO;S#>BeQ2{_zkKY6QHV94hls=7N--NI)~l4 zbP4`fdEOnzZSgkc{1uxM(3{J-7gAh~aKaAD71*``@+eq%XO8GSUhk08lM`f5dk<6k$Hujj>_9@=d#=n~3(>62a2AeLW^Q>k&% zFFCC(KKQNgHzj%60BlMpgj-J@G+=rQm%xiw_)*>4W>FEs*WA?br9-uv$B4o&8twZ# zh(_l127khHj&<$}{!u69huQkxqoaLP9*H7-Nzw4R*>(;G1Z^#*T05AK7lXCNkN{8g z8=_sZoa2M>kSVoN>tT2|(?647A8(KBu0{+8Ga<5zLz}n3W_e*_~muk0pGRBA{^GH^hY>_cpafk8~P)CulV$rqbZ4V0xj> zsm)I0)$riq(78Qp=L2z6$p{$rX652VFTZ8*KlO8o%HML5!{O5=jS^Pj%;FH&a(J@x*HIBK_oZp&Z`1&p6ciz#KQaXL$LrPD5V^ z+S{Ltieph5n()0E;`p{ek@laM!qVH=ma%w8@qc>mpJ>jG_ji+CC->t0T=*MqbMuxO zZQzson}#f_+wPwKy!@X!*!~w3qWJ%N=pLFNC>?ij+P!)El6DZ~O!I&YGX>J_EKew~ zlw6s9slxF$lcM;JkmNlM6mho3<+lX5LWrZ`?LOFUx$B%eudmjRwj&mZ~x0dPee9+ZCF8M8!5X}^|T|*V5)~4^0{t3 zxgC-6P>ucN zn}iq5nQvkfj;_y5URBhU%mpFFvxs5%5S@egZdX9)-0<%Py~oyx4%%tTg6&S%3=3aw zak|Q_#r5T;zk5H%{o>u~8;xsFewbS9SJ}?lRL!{L)!73ytavp(YwQt)ri6cd_fGOnl zyEvcurE@M!!MnJ+Iob z6Cndkv&&s)&kf?_Mu&4XcJ&oRSny^x@y@gBKx}eO7O1s|C@oFyx;Tp+Wt?l*aOC}^b z(QYu4lY=k=Z(ySlQwDT>Rg7vb1_ZI*HjIZ6;P48zkEqF3y8mmRBQ5nIfGy)5Zi9Bq z_OV?iWkrBETkz#IFeU{$TI+WbUvY!24#ClAa%e8*R+{cl2PJ$oiU1saf#MHeu=AGX zOMX+yw_EsC2^0myM_m*uh89O_Mb=jzzqkPGdh#4@a7z$5pVwc`*14Fqe!b=Aqz=3< zp|-FvF?RTfiY0B2Na?E%;uTL|LNdX3-2WwCuh`IsX%nbcjV^JS@U;qgnbh-(6#~31 zKod(bu-@Q*5mKxE<0VQ}FEF8hH>+f)yiGSWsP$Ltz0>PB5x&D+ktFN z#iMx|TEn!xTcAdFf{OqX86MXig~}VqC9M0Neq~voAm`ID#J4DBB@VP`9#?nz`Ft|S zyY}D;y=JIMcXSnCtF)si26PHMoIRJmjc?ccV{8Ke#uau`W1rT5_f*fW8AZM1r35dt z>S~@wQDtWY-K3g^{z_Lm<>ef5`-SD<`#hH+8JC4m1T`zH5!p~KmS5jX<|aT2=&iJJ zN3)&GGXeG%IPDao&I1)dzH&y_7>J05xh8v4d-h}czBTwpWJ2^yyFr^fPp3+MzMNx^ zh%j<#L;7+s^q|O(C#5npJbZDgbySS63EhiJwN}4)PTGSE0kwWW6E5_fhV#PP78M67#d1GN5t&Q%71yxqVnIe83<`x-#WRaHR z`6at;-lk9dYGHIQ2#%M9>Sia+gC_;E;UG3VvrGP!-MfN-MiDL}V)-bsJ+YSQ(XsdU zU$q9}F>Or6P1S~H<_^?s-n9U9H2Tz{(pbLv;pa3M{Tbb$a~A(O&st|rI*&%)n0e)S zQ3{=2WR?hTMaB>EdfN>-om|!RpV?p3^4+pwyj!}XV^Je%SDPubbn*$t0jS%`D@qOL z<-m?VW#$pqRBK$v@%%Uqee(8Q=wShJ%Z=o*C7xN!dAaPn> z9@9`ssPm1|;hQ9+0UtaWrl)mTvzbyWh)&K34WKY3P&wE>ZKxcC?Fgd#NRzkGN6 z2gijQT!v-|Cr{dlZP|~B)a(Z75O=5YG}tWXu5YfWPIKo)cV`=BP97FlSdB6cXLGapOx7uTm^gj%m*l5 zv}EmV0O_+XaLdS6zbUckY(E3XtQRu}u&8VD)7HB~3`+_E=KzvKHzO)`1x zz7GM5N{WX0e2Umu&7qK3%F&gf@T5NLUgiNWmajNDgajGmeNXw#tlg`%>5zvciI6tJ zW|Hh8)Rn7Ye-t4u15&|>6#<~o$arZ7w z9+tH07TfPk*A#j|QJP;QL(n!}naq-vQ_rzZA>bDj*rQ{OSBvOOM98@y25@b|5LUS@ zCUjf|Ruxp6KwUdmDa8<5RG;L=e&MAury?xDqYn&rVe|zCO=F}wKJjwReEK76RGWio zQrP7>yTOwz-(z^Tz8`#+Ga6g3SeOvBv4EE4IgWN08@1$XVM{C9Nv)p<*pzJ+TAHH! zmFD)Z0UN7K_2?|H<2N4ML`}FZrb{Z7AjmEEMHNW0U66~RxMe%aKpO`!Bhic zZu6~Gp=(C8N(0B4isqK(B&R$Om1|U6)Pvq<+aA1q;#8EiRX^|L^>thr;c+u1u!b_X zbK#<1`GycigzPoUxjs_jr{^~KiO1;5ZFBPQxj+s8#L#lDMjD++H}p%*jIakVrndB& zM+o;%_Svb(`pk`O17d96HGDNT zX$?Yz>VsH2YKynk-VD^KW7BhLvckK9Xjhvl8AlxL*spJscYfymXCCK+C=VKLm;bxf z@2|!%J^DXtTRRd4@W;_fcAXRob zlNnJP9-?A;(2Uk+JuH8dC^&fngF=Z#u006^)kHx`Zt!VctG68OO>rVHj50@DHsO-k z){o|>v|As@U_Y~(OwHIVdD_tbL}44V{7o{CkQ$a4irQ{tmg7Ktagsn*Do{8Z8UyF~ z33M^+^;rtV>~utu+oFsmEc4r?S7%1d1fAFiRn{V8{0cwRw-siSL;NmlYh!t*I|M#i z;j5;q{k1@sjUtvf(-12!vgE`o_v-;&f}zf0&+&#!@P#RGo;}%MD$@3&_?$;E_X_K{ zm`BV#=}}k4QCD73wV@n{&eUal)0CIYbkg7&khx)=bsWdDu-AfF_Plujdc3S^sMByP z8FD>!{Ahb*-NsbFZO<~tw|B!k=FP?R<^IVw@7#SyL$U>)B48kPvQC#=JsSoj;+(Q^u9U zWkZ%>WaOi!PoaO^r^G=|AtQatHugVW0IH#8qDq|CdET%=jm=mw z48H}P>x&n#;?U>s4tvWXd@ejZ2U9sLM$9UL8kP86A-~{+AJ8c) zFY3rCaDAc0{Bo^@F_Ra5_n5o(-@PspZU{P?D`|OUp_M4-l0ERgKocCtk^Ri#MW7G_ zPRq@epyx>f1L+E7C?@g(17k|F1s@452w3NSE1XYd1o{k$Rzf19Gq(G%TLdEzvcT_oTHBmT~o&%^-eja7$BQB7Xa34_VgGwUEB%LpX z4V0!X;uIu#xi1;>>04y9SoZ|a+hynkm~%tr^VS|0?%fwF2cpQ;+Iy%c#A3+4IO447 zLY^-1EJ$i%TqQY~`n-le@4UM^u8cB6(V^OoZk_O{pNj> z_Oq9JW)sCfLg+0xKAsPydGfY!_H4c9W6w9Iod1c@yhvjZE6b#wOJajlJKgl15X3V~ z$p|2@2J7mzd)nw~wA$hP%QHXTVh)8-2PBs8dG6%nxKRqXEN&n3&a#iSps}i_y=O7q zi3Rdn2t)kEv#~;_=6=XMw)S{abKhoWa>B~0-=0Cv;{%SlFvFo7qBz% z`RMs0v#%fYLVV}bRE53}UG_jbjvu)=iR_a~H{do?v1l-O)!QGV?=d+&r;giNu~1$l z5$Ktiv1r%n!&h!`Y(X6aIh~M)C#1A%-B|x)M@{P$`(&CoEP)Sz2l$A14oiL~~wjIb_W?cnb6< z+D*MJ!r9E}K226N>FUVcE_Gh+NSaCdddd^g4mHh2Dz(%rKJmSg zL`wsWmnwse=Jg*Znbg>IDviJF+dmXZ-rX3wI?*!OwJW?(%!EHO|%(~%G-?E;neBLNm@{w%ku3_&N+`cPjwcK>V z00j}1QvwT?uekD;%9%&Ui%23B@X^;W-69)S2Y4sm2^Nu0o4|;mnBJ`Wcgk1y%Z$C- zg3OV^aK|Ex#d)`DKbByQ@Latxega{xIc)jVEINtD=z)2$F-%XYHPuG1 z4z=5&kJ7>&m}{%ydTSNn8E9CJS1k`pk&Uj5)~r}KL+`lWnf-W2QrdE?P%W=KPB^Oo zt<<0(ps0bT5>foPF4AeWM=QA-`|5!(ifdkzsAllnb5E~fXU3y71a2aSxcjafRXh<`QSiQS2E_)PZi|XEsO+>mZp7iKTb9CiSIAVb$BoAz%b5j zMePrQzm}j;;m#Se{2ENMQ+c_mn>zMG`ut#q0&tq?kqkQO`kvd|jy>A}yr#huc=$}^nhmUHrc5i^tpBmK57VKGv>gw<^?GOnGiLxKEo(qjfDx}>)SUS)^W z`^1%S2XR?0;+ltdYUj<`;xNui+!P5xv55C%rJ5jybj1Ex6w>vl=rv$BK;-EkEv?&- zpR`!ZX1m+8yS21^>uW$x?%`P(>BoPDTv^s{8wtP?0&j9u&o)v47v|+-+It4lACUj@ zm=~d%x2!xQ=U!~eAJhDnn{t1FQ?WGF%qw~jR*D_f0CaAv)>-l)Q!Rb?1_>qkBtC3G zqrF$>v@gOUD1%7P@;`>&@v&&}KR(cewmx$Wo(fwGQVXR0 zd=RODYy-^XL-~^UkE7a7m(yjQ9HU=LKA9vG%kZTsC&vH0)Fy{5ZY(uoc7|Hfy)iTX z^1H+ywKz_|M774De#Z5kFzw3veml?2f*)f#iBq^A3O2!LJNo?RC7 zM$_-^QKIMRMn1RtZRbdeBvykMs@=q@43XZ(7Abi{FqjjTPp*#aFP57+2686Q;y$6l z_dL-T?6Yb$MPC;<5_TFSu8N1o7&=aP68dV16?;_Np^|1qFaZ6LpeZ=(8LsYL9B(d{v|)O@k#q zv>0}`O4r@NUQHR;o8~0@1zp?jh3LP|vJc4D=txRzLBA|;ed+QsC_gOTfZU%R=oard z#nZgeQ_|=~mtFiRhXKsDuVX@fT^Ai|%>D3uV~6iK+prBxgGsKAL%&$f>cv1qM$8uX zWsWyTHDvo}+ZgevmaVJs2S3k*bl@?(4dDH;@{Ug^`g94s9JZTW_stqs$s6_)XN4F% z%mjE0>`(`8Mm4_mD~hK{m9G;r8vlAYdU5C!^X?RJj?%FB75AjPp92=awTC&R$EX}d zudgd_mVV^QU9Bdgw`vLE6D%m*XO0Oon)NUu<>)X{0op?E5|BOs^?8hhA4RV;eMTal zZcja%Gn&tv_`>~V>sp_3t`o!XDZ(O_U-w?Cp_UDC#bbZx)s$wxQHPRR)m&W}mX84f zO6#Z=;ybBTGmM|r4Km-D`>;*EVq7!&;s(WdQD!vb;W*O~Ms0FYzMg3TwWBGKq2p6^H}FL{-+et_bjC0&!YKdL`V477)QwT4GU!3A-#iQ2j^A=opQy>? z(vQ{R-T;;<5pXQl+dx#6s50wiMm~_Nd?lgy49%Q-RPV012--aMJh{@Qp6x?;;~wkz z$q5F;4F`Fnn+={f;TFO{&y=Y4OwfL@x~lfWZk+}3LQ`c}Ezbu7BWS14>V6KVY;?Y) zxFoV$5T2JWkHxg2z9-Gt%cJW{@=%>oD4iRngZEO~>G#WDm6QWlSu=*XMcRq6bAnBc3WmY{^l=~R0KSr^?T5;U-vhDQ$?xqjYU%0M1^{nKxhj02~ ze?<-(k%ak6~aGn3@@D4k%cJ`8L})lL6WqEnmNAHSx73U zHbPf;+a#|d*MOHxuV$M2rH@0g7YPJW4^Kd1HG+TRH5h+R{Pwr$rsI$#s%_r&6Kf|s z+;16)0A~!+K$x8Z%%<1bM_jxbRdmvPDE+x_b`^0k^40Np3nOcmYjj)PAqB^&xgNh) z!`G@E)kzF~-KQI?@K`q-Bv|l$4_A>BWod-DVB|P9lWtSRSgUhCv z8fKg7W^b~f+Q|It=H>7>h24YCoUWzT(Ec0{IO~r=D(BAuWoj-7ZC+Z1*wh_V4X zpdcqMv03o_!~yx`MkoYQrBnj7GXs$gTgOf(8^d*G1iiRC<)s()7Ne%A|5|SUclGUa zLyn|G>a~7j`ZS`DuFSNbYcLGncTP_wp>#wNoewk-QG8QvU!Ks(R$6I&Gf)+esJ!Ni z2v$5`I{!v#n;ZBcoI^ThKcF=84W!{+;J<#4e|#+pL8S7h7$GVntG^EVL}i)M@LzN6 zzG&x)#iEE;_{%Z$zh`GCJu-a|?L$fYmw)=}KTfWp323^HP!bZfdn?25JP7@}hbR)7 z;#0Xhg8Hxj&07gR0M{ffwW&w^-P_!G@a)5#PlL!mmoonK4*I8qbY}#(W|_~%iu*qw z=+DFb|KbRxzfS6vk5ezwu6aF6a*@g41`+wqC+-&o;yML zna6f;`g1CHWrU4hZD-FqXX4$?D1n&z{Z-<=OFP%TL?Na_cz+C_wLW>u{D$8q6POII z_Qp*2egFQ{9keL)-T?Niv)=u%=NjaLv)1(3vFSEJ5_8a(9@95mb;%xdW+fx@lj5{L z;lE$`ME~USWH(}kDY_fnQC892mB*DUrD{E2|5CaB&svZgEjogphAkLhVMdEBZu%yf zvKW)a;79#=i1$^%${NV7GDjXc>xnGFXNz{(hRN(^UH*o1(Cr2c3rB)5;}&;ljqA0r zw>DTV7FDbRJ#{)Zi?B}k@RNBNl+!~wGP*kwLRLHGpvmE-CS4u=&YLEnaNTEE4L`Up zbuG#{t^Zo)GenRKr4(?5kgqw3lbi-Oe=XAJz!Gq6tFzWW0Td&!3D@aT5c!0Ez*f;G z`t7KaMp2lI?#~O&Zz}BLU-ZZdXvr=$g85SWbJmm_pVJ7UCj-!-2a%oO)TWp$wi#Qq z4Fc2MZyHsg2pZ635fgFqgT2;frix>0#?@=80XheXWrz6omz*^+xT%Q2!#4|?^h;Md z7V6>hW=ONoKPWahUsetfcsRICR#^|LE4u72(g^Y`H8za!FGb^e{)R=1p1URdYZ3R4 z@qZjBs(ShK)7d({#6H=}966go+(r6m*ekA266V=X^FPII!`~+BLu1*J^pS?1NuSXJHvo5;%*`4Y?}yWb1N5rqvaqiAoUQRpxA6v&HIk>J z0XouGM;^%bM&+q@HTwlTvm9d{N_9u?jAn_~x)#w#8Axk~L=2J#@oc||=dWPaYkYIC z+Q|gsp?FLZggoViuZ;_%5e>$j30jk?k)R@bAN`I^w_LG+4H^m>*knRM z+3W_FD2~z`<1wj*>ew(WCg|t%V3AC-^~Uiy1{(AxktnGjL>C)R$(`tSfZEZ*EDLmkEB31TGC9_AlM%l!CbmJ}_KV2sX*<3OPUi|FTcKoPL@a?ME@Qm*0 zE{(vZa1=&HssgRDv6A~AtKCh%5pg)J=^QMD)TL__=`*g5MuHa4-epowmwYEkYFWAZ z4~xT0x!Y7SX_$-kv9~25hwLf+m;rjtMKAC$W?svRLwt%F+}JT>Fbe(a62roDczPnII3Z;i|Jp6 z&XPQhcj%JoPkRscs6#p&``aCUo&zU3b+{} zokgb#Ef|ruxOjee6NkXWa*hO4sR2H#<~-+p0iek^?yUu}Ip^9e5upFj!m$^0u;A;Y zG?Ixxbdvz+jTeLUqWx++LC}3#7oF0*PCF%<$v|I^;SGm1;wq5M`0C>WMyK|IVV&qE zmsiLVO`w)XrMtAp^RTx%-I?ioUU!e+afQWrI51!8m^C=*1aUNMCdb#XGSd)4t4-c) zwxarjuP58-`G{3w_t{ohbTiAJOAKUc>{0wQY$5AVn$w|k(VvWwd4|Y8Md91_pMz9r z6{7JijN)Fi;1F|L(c6k0smlH&;MoLM+(o~Q2Gxj9ku z-%FOBebcsmshF#olNzKrn7uo!5PvY1Yge@cb6)k(3>CguOH zlX;^YASvffw1sz}2$R$khbnDRKON{*c{y3JUa^d*bxNL=Exl+9_P?~q( zWBlflKxxZW%bj9=k8au3X3=Y*a<{@)qOPDD$#c4{;dC~7sK`KskjpSs*RhvdGF^hS z!Q*J}JvV;5&&GFQM}HhXcwa0vF!AIWZydYfCd~BZdW^*0aJCqzEX(p#>Kh47vGI1s zqV4g;~yV^oar@3wx5u?=5b0ga*2n z115r1fhTJ(&wy+}T!oy09ps0$0CjI1pALm)T|^WA41Bw>ZpNi=!tqBXb_b<$3kC}F zoBgzxVLG;IKU_*jauEdQVCeU0|^=eAKoNi|I=cQ}3xA9;;u z@sbAZCAM?%Gr}CZg?MN4vtAD8jesAl7;a=p#QAKSqeZsjO2!`*)lK+waACKhSQCPZLr#)~T>Iij;X={Z)Xf-ohi+*TYl({b<4i;66zk%N z)>7yAuedeUf;S&daK?(k{`5SR{y_9YUjjo~?@rmLPgLS?^#Yw7?rl{m5@9>TCI(d5 zWy-0An4Jz*1xO^wEB<76H%n=TL}6gh0WkFIR#0XdT4&Wy@u}52X4Rh`Y$#vMCB9-%(I>fmP5csrZX+wu zdMqsq0Yp$M>2}vS-qcdsv2m-y;ZJ-->2f`gF>sE)e9Cl&K_Vy(a6@`*F5QAZm-i9&nYefm~|1BI_gxkfCB4M*6^yUt+iqvP*K%jp-$TZ z2jY^TPa@;MU$ld?bte?13qzPMtWjkg1>Gq}0H|LMZQgx(DBIn1a}7)A&xPo)ahoX5 z73|Bn=BjZZZ}tmcj%b$motp&*i{;Og*zoP`*IKP}Fcb;f1zb4=i~jJ`Oim;GAjOJei@ai_v2KCRgp03|q`8DSGf zi1$yBRjQ!fOv=9>Cfw*27x%<+#&kZk91+NyGe0RYhBjY)qAd<%p%aD?)=m?xBTl8_ zR)*l^h47@hHR31gq0nn*M#Hdkn-0t0`pAfylPSwYFM3m8zhJRGp%)X{{;+c|htS4i zEI(H8`fRC9?GCe4yB9lcU&fD(jtJf=bK>cH>ErW)($L&w*?0#=X!D{?*F?e5xxotA>*{HT0QqPbTe9`h-+1+*uaoE2)0DOZIJgkzyCyt##SWKFqH!E`p zGpyh-$hnly(0=Zai<_qAeBTpFC1JxIU}?UWc9uzOTd#C+x?9w}X%G#ppJ%H5+>XMe zXsoB4GU;6te{}VQQo2BXejTGlevBSz(*gD4I|e%5r!fy_z0jCH)qJ`M93kKJv!3c; z#85;@ZhZ6SgDy6vPvGjOh2?9J?ssY3Iyb4sk7k-|n{cETJaKOdDzd+6+RmZA+|SWo zrxeN(rWFvH>O8;sc=6#Qbl?k71{qGDrMarBX6Vb2$zr1h!Lf7uWU4^in%4SccKiAV zZjLj~uZAEKrq;kev}OTetc75+4S5e#!%~vsL}#0@qVN1cvcV1 z=f)kmy$3}3!S|1ezsrKIajmjPBc~+Z$VABk`OZAJId(co3R<#?-t2&UcS(0iT zoHe>mTk%0cU;(7=?#z^GTz-O3pyUoGJlgZM+!!sOizp8PO}t!p+iIQGi72XG*w81r zR~9W`R^54eug4RaxJB?41#M4FA^{SA#u#6-_@58r3y(ir7~zHnjb`6BDqW-x7Q6ar zwt+8iBtsN@yoQS*ty=5E0K}PWUk_yDoMg@v7<0wY3Ji)GxvZytYt|aY9^RtUqB0?$ zD{ve15n?XuLlU&|3CzGRoNMI>daRa{OGPOzDXtqJK|$p>K4Qq#tPBiy6NYyX4_BC; zDpkB{$5hU+z~f8v`A9Z|w#K8TsDu?=^w~^UEp5b8&AO`Z1iIg-&j(qwLM}aT zmA8a$Sk^75X(H?~+V}ko$eGVa@b2cTas68xkUDNZpUSCCaMl54heL&cfna|`Y_V5#midHE zAzO1!>-DXD+t_K`OWaIcjy1g?ia};rUc4$d znFjtq2f!h`JI0`oce>kRKCe$fkdjWGBnH@{#!+bFF{-mWVm3DcIXIJv^Q6d=Ki7#L zWhq)~IJ4gU>b<&&>(}mN==zrsFUWrz`G=J;xljG=!2tf*Yf}qj7bDegB z^JzAdlSm0seSrteAT347<9KXe=rHrfK;I!>b0TQO?E;dARCBI8^*^9&f&Q#zZM@!k z1ZZyiT%sNnG7!LXRqU9hs#0PH;>wkC-qJvO9fDEv?m_4lW+}e6KGVz`e2(_)=hW9? zr>nKWG$Lerl>`VCRvQW&EOcvC%t6k%kqqB7ExLc>Ux7j3#h}Nn11d+>Y41q;iyp#c z54t?Vi98L3$y$@V5-W@<=6I|^BKAUaC-X);@ohdU#OS&(xf!{MuTr%ml6tM(rd<4)vxNeZ%U0j-(uPSA6?8p)v0=CaaJq=#7k9=C|69AQ`p)85{kHb@yQ!BxP>^ zDw_g4ooaszB|jo!-wS6Zy@8G0oL010RQO)tZD+GS24I6xKFiIedI`$ktjt;fHI*E5 zE9QQEr+e-m3ydyh4=vQlE#Z6MpLSLX4}f}pn=LWz|MMpUFcgKw195NFi)>PNm%o8b z0C1A}9e|$nWL_?bfBG-~1!kp2flJIt-B05G{*wQ^%b!8O|BTCj#^rwz;s4x6f1V8g z8JGWz%m3aa|KF{cqPb?<)m3w#-!4W4dc$H0ddHyG=k1?B7-ZHeRmT2yG}(0$_BYI?__MoDNft$h9^grZ zQR$I<1BZfcxDmr^CM8ad^S`HGA5ekln)}qDWPA>q%9}$M()#M;qs=k%D!8fi_k+It z?KUq>v4EU^OkZ9lEw989L^Tl3z5i`l>@Dn%)A#mC3O<|<&#C_B`U}BNgVIS!R>XfZ z8ln!*?(||z={(B^ zZ8}PHMKXBL9%B5>E%8$V%sjSI>5&E$^wsW4YuL+ZtsG?<2CY)n4zC{Ub7c0_-3H!Y z=4)mBf^@C2k#@6mEAp^PtgaXXuLV`5Y&#>Z#w*K1$l3s9ZBx&dK`djG7yJ7JUFT6X zdHtO~>n=pOfP5uRJPk9<>Z;nFQg(MX4fWGtXk@sQe@g&XH|Qu%Y$Llk4lN5w1a`}s zm9}%VHIDGG%U$SCxbDk2Ko#;D;)q-o4`=Ct({&{ObbFnRU=c6y=ACDV@<3^+fNf_kL>( zpj^EV&Ve~f9@pi#uJ<>EI*{%bL6d(EP~l+=5p?nOGquMl>_qt7@Bg?0d{#wj?2=2b zfYH+$>PuXMg)K7Ap* zCqlV?b$)oTKV9>H!FT-6Y6Veo93TWD^k0g5M7Z2Zm;A6U6P(Zi=c}{)^BUm*)Yi(` zhLoM(8PaOV?z&Kv&w6ZH1Hw-PSdZ<70`{>p(RD1;5#HAc7&R2xEGD&FW+z$iac4}ZBzX%IF}>x>7k8Qsc{%cq|?@ z3qT9Y3@8evhq%>B2dll*ATh$JutnZ|CG`0_+H(;7V6yf7d0$OK(-l>+_eoAkb-q?v z^#0BH=^Qlv&3|P-~UFuL!82`Qx78WBlsFFEeBeJTH+- zv%xoG`TC^gYJ93MrmO8EzIq;}&!Mw@uXkL9P>~9hN2E!G#GL}G?&ojG#cRg(J=KJt z3NgyZ(wmNC4@yq|l0h@Ho+{_@HA(34xO1)OdA#vXo-#!N$}(=isFE4vb+8Vs#$LSbPJ>)FzkuFj6Iv~QYbA=`6R3LeKh>s46X zmZRaF5m^=uQ0Yq->unkin=53gr$UaaLH#wSv*Zk?+3XK-M)WzY&d_4njp{k&fy1~K z(X?}n<1BuV0~BC1>thvxLdKPzCtLOhg*r{mpM!z@GzXlWmYB!O6j{bosXuAP1d!0H z)|Z&1OEf_*m%Z0pA(ixHGnEL>TO@W%V*!!Wh7q+-mV9{98x&iH+`R{@uqAGvI{pz% z`lfP$dNu+W4NuBe|NTf0s<5^wBJ2;+doB;UU);?2cnk!AAG;q1W>q#V%(M-X0rOyb zrm*V4nPB=2k`WM!=6Q}M5r%pVf(+di0n5$i*qN=gdx?kJE90%yA{Sx!jZhj_!vD}> zl!!j@h5bu1XugW5(ug((eYo%mBfD0$S{}#ak8YXZuTl$9e}u6ct&&rpA;5RX-P8D}z)bq_3$wH%SI3 zzi}kC`Tmbk@E=7l1>cjD)-{u-LYmgXXNGw%xW$g9kB4m>Nn~>jJdg3{`q2>=ouDV! zBAV&lBsVj2m|gFDv+axXt8H8cW$~Cy13JsGe4eq-JpG4kN1S8cnie-})L6unc=(x` zv@?~~0)Q4Zj91$j%cD~enbD9>7EY5Ls@i;vU~vd!HIO2D{Y`)(ib9q>Zd)vTO#8kVyNJCCrxSF94#4NH-@-F0ww26kO%NoiL`ULS!Q zGiJv^;_J~0fx&m_-KuHj-{t7CaBB;%exae7!wCOY+KTFr5>{{Njznx5z1p0AUham3 z>jX}3sYtX3kVX4r5O>DEnzcjL59((ss(*g~+DjyI)eiA$an4B#(L=`yF2}64WosN( zwrwAzX9OQ~)vMt}6N;2qUQT@)#be4u1;d`Ptk6ebyFgQrd4|`u37G>M6i*$&H3P_`fNJw{s z2r3fN4T5yHFboK&pb{b}H6Y#HB_Q41-8IB83=Fkz-fyq%3S0)NG>2qu28UF57%)9T|3%s4D`fwSua(N(L;Nd9lLgMm#x^D)GjP zC!@bU4P_mO%VB)Pzt8Ro4ZF^*90G<2%X?*VA#oBheK5&>PZ0h<@&fp0_MYLJb*lJCj4D77nG2=Dk#f8^iGh z)otT=JL7E83I`^w>CRECZGt(XlHNhh&LfEnL}P>#@a36*!xmeSVJP?!p|6|NGc}oJ zrFL-XAguaTW#oII2%9=P z@|^M{2`{vX$y_N`3hO%eq@TA}9Jtb1;0dppXFfp`c zf-N;atBC)u*wuOInm*81reA&VGuLSp<;{~f@;qhA&Xr;P_{x_BNca80N;Gz3*3Jo~ z7S!yDVPk}#E+4M*IoFjNx~(HBulgm|S79#e-bxpc%ewxvKRzzo`IV2Y!-3Jr!Qz+X zm-`o6z*_|_?>=4$`g6}PUFc# z$44lW)^EA}gYrvcH_icbE;7ojftCt<>>8~_&>fUFQ z&M`DMwP!2deg;~4PFg;+2)0>J{)-LYLc`+jZac%;PxL)(YMIBKVI8Phi2lunyUR^ZWRn z0TX`WlZnfVmIh%95AaB6qdgJie-!RL7Z#j-e^)@s{|TXF68vhPOsC4x_IEP$>^M%K z`LIk6MOX5^lZTj!Z={;;7nA=ngH%7D-(bsF1Do=Y0Z|rw7A^(z}J=SPa*oJOW79fQiOrG09g-(_fF1-7g#^P;w^p7?PiqT<`mqBV}q9PaO#N^0D z99U`xz8^3WFAR23l(}^da$eUCfyWD_^m(nKUT~qB-dc&7!frtrKijPWw^Io>9;d*+ z2O55m-p~y;{M_U}YFdy`tod_p%X&PU5hO>BCBNJg%4EQt)35sO8OF3OIO7-~brgWF zU1?um1ho)&^R2Hb08dz9Xs@v_ok8lZzi{Fes_qLW3Ag*)`KLCKVxvZicL#vMnaFSb zqM`2e^~E>7q939UzKY}#Es~UZA-Bw5ibWqd3<%WT_0~o!)OuX8kLGA{FLC-`yzBd+ z1I_?uxaFbeVH@r%uNRCpwTzkb?%Pl07}yPeeM}H@YStE!!MH%~zfsf3#nTlHpLa@b zOB_v8jIVI+8rjeSW3x7FXS+wbE!CWQ=7nwLuRPQjCb>rQx%?Nz zv)*N?`Ic;T*t+4(vK5K2^d0-F43NGs#&qy)R;Nee&$tLxuY|V$$+xRH>~LguW=&iR z$Ooa2O@;AzmP8QyaAKV{*p5^cg8&&_hUkYWoNxv;A@i6I9$q_6p1%;wLhpV|$1t-U-p{iaZ!j5Y2IW2ePaa$HYd{b4T*E z`k7V5m1K^n#jVpiDU@h?<14@85H<3QL6sIM+!@@Z&r2laay9bThH>NRO;&-IGE*Y# z{SZy_9S?{7NAZ;}hcgc0qAg1&2W9IZ*JbT4@hn|C`LDgmZ2DK%zGp4ZKG!j&%K0*! z9=7Thi7>n3VeUjIyE)xz()gV>>5}HLC*c(B!+1AO7NkvE9kxhX!!plA#!c|f@ft5b zzm9hwR2^PZ&i<7ydWsm`lGvN=k7A4IxwN#GvKR0LW|_LT)(vRv>@yw?k;!CD_}t*z)AqK1#n zpKp4q;U4++>J#|wM<{dRn#j1GNS7({o>a$vLXV;T-+u|gfB77Cc zXSJkH`0dq*$I%9HR4|9zzsq=Xq{5n;gp^MzuAxnuZL*AvTeSb?!v5h1Ol zPr{e2Bmq0!Wz-=c`#U{Z>D%4j8x$rr!NVlSZZ#$tY=7Whov($p8aS|_YpG#b8f?alQS) z@I!p~ir(*40fs`+#D()5W_Fg3`p^Hi`~2_C{|*cT8Y~wS_69WopC~o}Xp;TIXj3bQ z0I_x?vqMsM!^-sRV>q+8A225BDkI5!ReiXcu3Nr!H2d?YLkH{ca5JepcY<8$QvqZP zgh9=x9l!o9p1)9XJIM8Iq{1d=H=i-n-){ z|1;`;cr)2MfWi>YM`cU&??3f#vjp1;{^>7IE{EP4die=%^cveLLS!Ut&9{D(ti*>t92E_pYf>01}XQ zUhA+$bH*sf3ovErL%64eS9%50Oxur-Rb=fOPnHlx>r{vS<9`U2Bl0*e(Bho*zG8w( zr$8o9nGI<{Bc1v_iQFbesmq*vT%urE&s0i$SlB4>BySBAb&^9MCGK5s-00g?<*wJ@ z%=-BV^;+iaJ`5tsaw-d%1g*CK%<76P5V(_0i|H{g8lD#3mwi?rvy2d>5-JJ%&*gdr z11tFPV3o`S`+Kz;RBP;@I60}7t)D% zo^*;>S3sC6nvECGD?%RNgH$H&IXmU>ho2%@)HDG%ohei4!mPky>WGd~sK~dYq&d43 z(2RM`QYTeQ&GWynUc^vV*v+yo_LU#5c6HY{G)5t*mpGL^Pq%{*m)AhABcHGX!rAyu z-S!8Xgw|zfU+h3w)uC6dryutTD(eA2nhFMULNhyGk{km1YSR^>Po9oLlz~-PBadmD z>twA*;rw|FVqvM(h^bTj?z{wtQNwF@pR4*|gxW3Q6l2aLazQ+k zXN6pIy$Pl4mcYowd)Tw^k+ANAQ`(moW_thJG#Mno)oKgWjP(S$mW-+LA(1|u4NuNU zXnp`zYG-u*wAoJ8K(sqRuYUju6H8B=zs1>hVPjginld4~)|HX!*)i?Pc#C|x?3W)I z3P9=`Qg<;nps;0_;{VCJ;8}G9vocb6ZBH>v> zKg_BE0={PLW`=)-wf(c(`1}Il=QOVhVDk??f6V;n#?0^rKkZeds&){G9~d&kqoP& zc%v(VIV@65K^DL{Uc-ull;rc?rJ6txMcA1n9!MBs^fH8se>Jy|oB-Qsgt*CLW}?`f z<-8+&PvP{CY$fd&IE=c#+{T-pc!;A(19}{;v3S5TbPTQaFn(G7Zu3rOykH?PcULYN zp;MrFYv%SM{~ltsR+>t{cBQfp*gJ|mPqA|uQN0J`MNx+!@)E~{<4)f0Kqk-vzbrOs zO*5=VXZQ*Qt}Yv2fkD7eF`&qI>01<2E%Ge#*yAj5T$GtCwWv&c^%GQOcC638&QL*8 z8k&DO!e@j_OwZhTDS&4ZJKUXK?EQdtDBbw6fVFGbJ@)%^F{@xM@zc4|VfwL_5wu*r znk!I+I~r{=!_^*^Q+o|Sfd|uyb<@>;s?2%yRcY|it9oV7$Jqb|yZ>I5lWFh$XA|~w zONK8&pVHX~h8Br1Hf(4oFiRv&2eyIanRzO^C8kbC8*g~$3#!+s!1U+w4;Hn@nR!w! zRFsY|cB6`(o?21Y1Zuvj?%-7ronkgyi9@d-!L#oq_ok-)+`1HSHBHQW-v$I+ zZ9S4R(;ySpt?v^Ro0v-xHW{invBpSg+Rx%g<2_p?2FV#$_95=N$Im_sAv)<%N1MZ< zqqb_&E+7@#+~*#fp*~oL@E!24Y9TD)O9(*Nu{akR{ew;Civc;}SBn4iW~-p0=m=uHrQ z=DablN5-a668JB}2fqylM|jU>tmQ?a@5e1v?jL1v_l!0` zZj0WznyB`f(PYCO5QBGz*KR718whClJmdMSXb>PSGWHxE1D?j#NH(p<845AXroij- zO+=;d)%c7~!bKoG+;YqFXfRMwd;{hq&9feWWKubEe4GA?%*4=V^Lgg2oez`A(pWv* zj#9oV6qgP&RovzPh<+`KRConafyLH~q~{w!#MXT>?w->(EsCvtu|vJKS!tX9dV~6NCeu2QA7J8h1|fhYdD>fYszT_418N5{Zef1UWsYo6rKS z!qCa~_c>Dbee+O{fY`G=2dhxi;Ch$GBVrq~xtVW2j1 zTkzkJIJX4e2CFm>UcEga80933R`iS|ij99leW6l3+GAQqyUyjigJ`d4tyO$tN=B-9 zVTrYd8*5D8kL7TPq8XrfPH0G;b#F+ff%Jdk)vOA1B5uP(n$n#qG_7G*1yC2D1Ywv? zmHil^eH(a5EmeX0uS=nSTnIKp#_{4s)L$Q2Edguy^&@&1Kdnd^@A|XZvy>!Z_$!%J zT5+#PE9x~eIG$+Idt3&;aHzc>8Jcd#g=qjGJR!bf?@;8Og1%!ZrhZ=#njq<$q&5ny z1$(%W-|Rv?&%U@Di*X5ZC7smm&sp?~qk?}*x=SQ8c-t>kTdkMm56tsE9w}`R4fF49 z&)2JrtypUK%}WSlyM%vHv1_Aw4ja@Gg~#4)ym0Sv#pzEp_NAV3fNk z8F1djJri<}^zer&>AGLSPo+#vxBraIyF3}ONIUb|0kZZZoPNf$*CnV@T6ymV24ygl zBsO(yO^|CoZ&|OreDBa#Eg9f*b>ZRi`jb~g4Cj9qijTg>Vkg%>FM&S^pQ%c-*Ha}( zjg`7Rz0ZW_d%paQuHpU^r@-;Izzdmg=O@iUoRlx@N!RO1TNEiZBc&-%Qs;fFe$%(U z592hOOB)kj)Abfc#MnZ1guRR9^hT$;>3H;3o=FaHI1rA;81E7xSKED@0=2(MqQghF zI?8aGpZq{$BTrR7dM|Ll-;sBj6m#$|i9KCR4va*B~~#v{Z6!{fADUC-tc^OxvH)2EsBIL1%9E@PvfB{v-+H#A$l^6 z+@{#Y!1skrN$?JWb7cKh^14eAq+=|^uE@IyeaBX;nM|&}{}f1CD9J0Jb7wat@t3I1 z5}r%UWF9+UKxiv2lekloXx-^18|D4Q@jl<8HJS21y~mDY!waWBPxR~8J+};ex84F= z``^t4qNjhqtJ(iGhRRTUf+fSNz1UbF$0f|bu-tC)Xs>?zGNEk8e-<%U%>Ajxu&zHv z1r}bQ&}%QWJ8Z1eXVwzfXoLQG)*8y#)*oH!Gb`dk=R!q*`g!3kBY{F3rG}Zu*J&oW zvo7BHXFvT2)9(d^Ty>8>0 zN4GY2s!K~Im1U3esc7)J%ZvCts@Zuxi_<(n>2K~E#qqpACs%X8EdOyTj6!3fhsT^< zdA<}9wln%-OIsq(=+ZlSJ$=Ybm)Py}5}XHS^OsQbPThRn@?O#|n8@HM6t_-?fTK(=#h3Jh@g=ef6U0 z4jg>Uo_V!hD5-c|fNQKP>6Z4~Q;5&s{;Xf^e9Eqc(rSc!;fqdV+?}ab%dwmo_2$et zI^Z))KkdZIW<&oUovEPLz|mdM<+ZO$_%W?W921I+Rh?@*@a#@7Nf-VY=f$0;f;rUR zNJbNJhCHFbObM9#m{Y@IKJv7cjMgBxgcFL+FU;NMZ^RHEyadW)UYC30k*pe1`sjSz z+X3;IGrTEnIr9C6N^ViEo|_*o3p>FO#aKUDh}o5SAfd>UBdYdN+jwdccqP+QU{vVa zp4IQydD<(-OSG^Td%%dw>38NxkUdT@w5*)^g;}Flw*EQ^W*|?r zL7EnUg;;_T?t~MHSBf0gqJ773p^e(CZze2F6@-9$R$BDaWoLFHu+pXaW2H`K+XKY$ ztT!!2YziBG!PNMXr3Vsj%4&LqWUMOz^QPn0G#1m62wicEOtg<)6C1m>Yh6gXqBx znGb@CM34S-c_P+@GxwQFJMxQtv0Hrg=`K=_Re$K3tX*akOy_FIAp$kkqq@1XJHz6{KtT zQm~h&jWE12=t;l(_%-mncy`uwG-ir(gR7LlpYswXLJW#_BjseI?Fcc9ozB;OPmRmT9Be%n9SSOpja|6bGgVQnbxBe|Y`UBI! zaW<{)CrDl~U`Dgr>T{81Qwbl+>>n<;W8#5T?s;}RK`-dMwH_%dJ#al*K2y;?J6R<3 z6@9AS*n3-MThNkWwOiwMxr%@bF|2fdo_5P+NOP@0D_|BO;9F#u)&BxjzF5%@4Y@e~ zlRzAKIO`bDKTj!O)EigcGtaQEJfG6?j0ZBtPRVoh6cYC@2D(A4*KqH!qn-i>@;UP< zf`Y4D;!@kf^v0b$f}%7jf37bKTyr0drSYkbKxQ~Zxf56lw$d7ClC9H(5>p=+9Bqy2 z)u1-4`mV@iZw6@4H*73i`IMXF04Ru1V3;pRWhbUo3Q926pwD_ww_A%3Lps-(;4Tb% z5$lG<3<2r(0TU6q0REcF3#?*>WHs-*vbg8KPdr1>2C!TzL%6mI`;5&PJ8s>{TgY>J zf*GEyPo2g%ffS;!rAyYwpDNYJ`W*H6PM#!tx3}O5ue8qX?@LoQh5YMxm(xFd&4<|( zQFv5?bPa*$Etohm`2K4*?+bO%1ej$i3Udbip%%#Vh&5L7Y9CrdRT@+u+PK``RT;-N z_dVL+ZkwVs6CW0Y$GE+t61RT$+x@4EOdWRIFyH_QXpL!*R>_Bbi~d|u)xuFcLWi&? z#m7Q1UUCj3OP_G#T>PQ%d8Cb+;QnZ)SG2NrmmMY^=p!u~E96une$N7ecFiMmPPm(d zb-jGud$%+s(zi;yU?{lYK|S+b)4UlZUff-{nBQ@Lll%vUG%zo@(YK)ECW-c0&)rKegYb`$dcL;%G5e{DBIV!rP6k?>l$P5?dKmKxs*z*UJ)Vy5 z{zmB;X22UI`z1+t1dt%Kn0GWiu-(f^+m9d*`1!Z81ikFB?WS zQt(`}$F0e3?6>}or`n`=m6llOvoE?^>fA;a)bY4= zG+^7%|N8z+I{>51Fvd*su;ZE27O~sH@$@&!Zy@|x)%+2=R-;kO=l%rlmUH=)`IE<7 zZ4@j)<+mNU<+6v#mvk@OB8MYJ)2KwCo5}7VoseMF

  • C97um(4o*9abLv*c zot7&wem4C{um4Ky&`~~3y}s=tr|DM@FFf91EUur(L#HUn_mx5D(azxP%re|%qMfE$ zRZr}$Q@v!a)*gRTlJG$%i1E1NVx*kF)s(050psYPon937cCKV!V#MOzKUx9<iEI{pjM8Jat%@^<=e5lJ~FD+Nq-Jr-!4N6@xvsJl z-o2_PgBZ4Jl!5C2hRf=$LM_Bu?8K7vl#=>(FYGa$EBe)hFP&BTl}E}^nsr6<_jdvB zAhGDd7M?pSBkO6M_m*1cC#pCPBm!liay5m-l~AhJul7BX(489NbcJyZnqx1J0`)1; zttZs?VA+6cIZa~^Ea}B}OP~Ki+ifMi+fVj0_gUP#cb*@xE+WzYFEddFYy3xUA5vd% zNM`$UHZ6+#<4rJNOt=p)ykwOSvA03STnc%P)HEe{;C*enf&E-+pHPqP*e+79yn*|T z&g}Y#YJaxH?+=%2x|I=7$ekt{TT#-RAQwX|u<u7t@;w+Bg;fCao7_3mw0M1Q{2h2H~nDi4LjWwdb=#FhW7?-5E+6>M$xL5rl8oExUhn#34fTiNE;TEN(m=KKzrD^l6sG z&II>kboEoLrl=Vg{3iVouO3cQYOW5$?K!XMFT$qV&u8(?fri=Mg}|R>vSUXGFQc44 zu9%Q%O$;tcok9zO=Fh8scDtX?B2AR0s=wA%aELx;J&Y5!>VL3*Z|&}yiDwU|D zGQStLQk2sYk%8`vi>G&C#m(Zu+r_{f$K_$lj7AohpEWyC&kgKX2gjr+Ubx^)n0wF6 z?w@+=b&`{sJx~LMW<%+BewrdC?2_v&nc)UA&ssj$n_|9yFu;HYGI_i;XWw9dXaTmD zL|{#zt=_X$q7e#xdP_0KTd)fOU7@5(R?B#cB;tgXLfG7b0_cNRA3ks-k4@1JE^oZI zK^bs4QH+uhtwTJSaKS*;pSfV87%|OpUinQ0FL=k2xGSZ;_WnG1Z_5EIzQ4Y8J&9N- zXc@g6&O+}td2h#Mh+cG0oZiyb_H=Ijb|~IiaM}2zozO1iWHI!X;LNtW{iM?$-d=Gz zf&DvM`+brZet%ATZg8gUPFMasJUiO7n?rp1C!y<3fK(cu(W@JaJl5*Q%JL-H{K*C- z>%vh_9FSq}2JvBST1muQ%TMoLG9wjo2t@8a39H8)`=*`aR_|WJyr+euOt4F|OZIM)+X6N$daN+LmYrR)UUycis=W;&5yG(@ zP*|lx;Bp&5L!No*-M?fgBe^K^K%H>3Kn0+A!)T^auFhC)Q|$}q@lTMOF8v&SZm?(b zwpX+5yFO1O1dNKFCQ%fL;XJFgolm59`yieNe-*>Z0#f(}lbI*4G2f3oat0R2x#RI$ znRmwf(q|$FDA}||%>^eC_ScXNB!Op}!@k>ytD%5YOEn~ji1ZASaT2r$9S?3 zu>1=@B_iKcy%J4OSV+RwydROgZH` zH|~C|^%;02_oaYiOyGqIEMo5bat_ko7T*pqz=`X=PiptftCet&o^N&9ZJVhU_oqmT zuV{1g@MAG%#7Z9vV37=XD<<~Cq+qqjA}4S5=JIpB8xiu%6N%#O|KgYSi2O#Lcb^YI zG25NoOO;hXxmf6CzxO0bSpxfZko?oH?|Sf3S5+VKGsBWf(jV>5ll~rpo3aM!(YIb1 zC}_Jpy8A&Ps4I$f<8VX7xsfBP;dpBM-LMDs>L-dM!3Gi|D6;&8y^m}ead+<-5;BK< zPj;V?+Lies6-6>>XL0Y1nmeR{v(1)CVxG%oolk=WY{tX@QT|3yt>Y=C(abF5XkZlq ztk969$27>beFgO`oOkMTg1d2|YSu*x9l{{}!i|8otAsj% z_N||twtf46dj!me7mqdfDlaf-51jRB@Gt{^eDK#F{J9-?9bvo4r~+(&&lXz3^u;?b z-BAYl(2C+MGiwak<64_n8U0DOX7g{}-!EqQ&i`(sh@JG_XjI47cAEaZWK;d8TEwjB zQ}E(A9(#Tx@vo}Gd;^QT%93UvdE%R}wy||Z6VHEyMEy>ADAo3aGBvOZBJ4`Hg_-pO ztGH(E6ZsOsKN5R&q@-qZQKL*Eb4rYCbS`z2=0^vPAw0UVyNn=l6#N${2B|hnh9*W# zyq6!?D*~{4?f*)-<i7Dt5c}|PPw0P1 z@chpNR}8<`cR;-D%l#elfBx=Yf8tRF;ks*J{PJ&dR3F{IO#O-7Z~yoIo&kXkvUP#z zNbc|AWB=cN^N#SBXW}a!qF|63F9FTD05x#nd9}0uU+d+Jyd#Damgu=QsR{ZzC?`$% zA7JHg2b3JgKnW(>yU6s{ig-v!<2Ld}6J&|9sU%B1Op;g+{>M_OA-H{CQLsy#T2;k$ zB#YGj0x76H_^b7}XMyss7d8{Vj^$~JeB+VlqJc?^evHLw^gF%1=d{Pse~>H22- ziC<^JB4NaFGLEicME(DWRDO|*;Wt?JHQmJ1>?^>yLy|37^R%(Sig|I*kBB2{OM>F- zl$KG*D>Y;FpTC$B95JN_Wj#|JldjhflHyCn#_%)3Bu7g`Yp+s~ZDEB@qRTBGX| zT7G@ydDq39Jn>}ZuEB21XruNdk6FIrwELMGxwu!I<#qNaP~hkRV*iiXwhuR86M&<= zypGzL>`wATXJgHIl!$i!p;WF#=vF&_sz23_&vAk_R0xZyvh2lp z$wx^PPc?fasD%a^=&vq(68nL*>n>J;lp?JO^|!Wl0v0dYoBbO4%JRr)#s zIMTL6^Z^G}yVkF(?(_91?eX^7cN3%l;~l;ytL})FnreiT}VTNMG7=OW|}( zhq98HjDu!s-VZKXmLlZiJY_{@+cjc!+?xD=(mfJP!%74VeP_YKag#cW<+TX4n<#23 za9M@p-a4OgumN4c<-zpe{G_5{yw2{F+xcnTPRZNhsW~qMaZCvMd5)IN(8^=cgR}_S z{bcE5ApT1862JcBM-<6yP;`9B^Z&9-G1%kW`~I>Zw}@wZWK>(n6=ar_FSROYgEYWh zNx^!n(lv?hd;puf&p5SL7c9@~0$J?NN`$hzUv8BB9EM(l_fInS8_jJYg{60xUcJXc zM&B284^{+$%q156Z&zp0y;P9LQFLN%R8l=v%NP8hkHWDPYt63enoR@eWQ(p67fQL&!K` zm(PGI)u)%VQm_k>3GE4Wa}*OrT1SQGSN;9BcOy$OPcV|ZxIVr%NOsJw#bw3%4g_Ac zpgPEN41efjaG@&Yw4cmri-_)h5NMoHBJcLPdiG#uCse_ZP+$()UoX&+&pR4rm$ibM zXgje_*tlyf?$!hnB%K88ceEwzKd@1z1@}6ycFXUW9xSzvA)>U-tzl4sf#@peto!ut zSmmB5`32pz6=6iZfS08A(ITFYC@a=}Got@=J>s#_Q5dWSWrzI6akzID0;gh|u5?*`d*&a#A4u_ATk36U8e6k`)4kN`^??DQEeI+k?O8X9PbX3m6?Y8FfKE&!$YBj1E zpl!xq<#c8(eCI(VZO_e;bLiRv#&VIa{aj(L)|s7klI{g=44Nvt$%}Bzni4101V^sc z?F>dt$uqH5EtRF)ttmJSj9#tieUDN`tJCbCaG^hU&!~NX(@`XRv+wF5I;MaoEH=sI zQ;ZN1_or!iY`X7Gp?j^NI6XjDtw^z-NK>C%Z@3-1HD0(~>%_*D4WHp`*sl}6YX0UP zLA2AbjaegdB{$CJ-n6_kmh28!Lz`#-&wEaL#eDv&HHZJA$+eOZI2a`tbsqZ>pK5n zLEXb__pH!rqxpuE)uR<~Ke+5t-ybYVaMir;G#N%S>L+t~$16)B(=LQO8c6WBpjt?O z#5qKEFPqr@d*^C*%-L?k)OLB$Ze{h=oQk484kwwImNDNL#Bn%d9;_T-HT8fzM=mN&!mO!jI@{Ajo)Ms7FS} zU#uO?Ma#bwG&bKHV%EFxiupKKs4MleaGcNHwy+`2HHnN(^KhG(R^$(zcTuWuA1C&0 zp%Y9N6rRvYdkfwFQ5*57NJ(d?GJOm5VNKBFC=(>6N@JJ+B47{?k2m=}rRBU1@bx~H zT;98$x zsePVjh{4G|K1Xm)eLnPjYVdrnGzx3}qT~?o?FR6iOW@@OJ~P z3~_Ic=B|uZq3f^wOSgQ<7%$}Z8HSVfmXQSVC_>`*@yW6Q^!NKeL2rC&!`ysE@Up1| zY&VShV? zZ1)6@bLE-TvbBe}e+EVd<`0mLUV$g_XtY)xLtD{LuY4i4J%oC%a-F%x2&hQ#ljOuW z+}qEPf~mXf>D`KE)UG?%EK{R3UafJp!di)gwC+fn#hL=;%5NMwi|YnUm@|utH)a@a z=b?1pV~C)|V~5J$e6Mn7^ti|nb>DesGj6vpnXYf3&0o(<=2#EF+Vky&aW#(QT#O1_ zxNhCMY$JGfW)gw{p~? z-np%hWvxmZ@8uTCO-|O@#8}@>`%KJm5{Kf%j+F=zt*85wXZ`EP(aqqA z6i7;*D$bixCSeh&`}MYY<1DlmM~98)Kh%dyT(i>_ey(j-`J%1DyWx=EW_JXNtkfcK z^He>yq2+stAydSH0tY%}8ht`7ed2p!4*AZQ{5E5U2!55w8P|fYiBSZ>-5)$Ophnz{ zA-E!ol+Dtr40ZD^3fM+VOe={U$m%VYaJkX)FIAW5Ms-&A7^v|_G2l-LuP2y}SFw+_ zgb6kK*JMRJRy-;Nei&=?4z5V9sMFl#Hv%gSQ?wp)R$EjBcd(FKf+QTGOJ7@A%=>p z1S8JteY>SuNPWseKJ42aG&gF7EJ7h)A&Kw?rUX7K|7{qLVzg zxx|627HYAq&$q*}VryaJ8AG|7OIaUaimqNw%tKM)4bfe>;t;gGAUayOIzt46Sns;h z&zwf+ecb%3e7Cx%GRr;tn}t_a&`y4>$EsD|qjKNguUMekX<5#f(LFpjmCVqBeXPXl zXGTFx&C74_g4k%gBKGUr{I?%b!aAn2L9GO(%QLqb3_ijogZFPo2fT4Mb*l@u7oTR) z=e)ahVW*`=JDAM!J5JPtu6x=4OKKzavOJd7g3Dpr%j3Mg=8JNYyyLyAhU{F#_ojf0 zeuV-y#Kxeh_ife*&Hb$Kd9vTru!_Rv;JFNm(h+BxhV|&`Zqr04w7c8DJ=0%*KIF8o z;bJX*Lj&bS+u$&(hojiUQ~p%1VgfKu*I~ItSHSMV;C6M&ssu+RatoQ$Uo_G~WI(aE zF_zL2AhB^Ar>8XAicA$rBkag#u`&x5?MvRQ$*Qm!2z9&?z@G}2e;lPYQSK7cZ+x>L zw?t`p$a!U=6goPlPSjwlp{P+VQSd0h$A7GN_?bj9b)8bL=|0^^$r%LPZsikxH4NT- zMO39VbAk$2nRS!Qr*oIlOk&-ApSjH*D^Q^eV?r*wEcz}dZ6bdknsx7h!lx3Ha5cXs ziS35z<87PHPaD`|PXaARtT&HK8n$o!dN?Qzl6b%I+f9k7ABn~$4K4GJ>r-Q!I7;uewEce38rUT+md~;+~U7NO^XsY z+8K(fyia*xDOqWuqmAcx>SKKq1ZF z34%ZG>CM8squBN;#ob@4GE@Vn-iEeZcDWFm&25|Yo>&)qDPvo~Yi3Rqc^IdznUSJlTE9nU1j6|Cap zGNlURczj)|Fzg;su&d)bI)4#Dt7<(>w^gk#JVs5OgtVWeBecxRYj)U(w65qMjr;Gc z0w0$^a)O#pwrzp?+E!nwgJ0!?ERoAMSjO2sALDo+|G3B4a=h*0ll6U0g2C3TzrjE) z6JDM`XrF5nU~j7|S^t&uD=mB4P5O|5s@49daJ`m?9E=<6k}@d`yCZ?san`j@7>|~| z*`VRvR0c)KXXG{oZ0z}Q%xH6k)^QK`#M`_2#da4?pmaL7$$_O5&^c z%NaO>-Vtp5cpSG~vFaB5b0BWQ=ew1}aEC)VRI7%Sq_VV{S=PqmCzhf!>w%!AokfQc z6_6vu@sCy~0rNR8mbzHOuMaTQYt~yC?JZqP%iVXWJR&^G$eb9bw=xtbxxP_ctu%V; zfj}1{$&QBv$L)-NZ75Bo_d!a_SVk|DR8$Q&4UTgps4uB76JtXN_uh*hZJg8)JlIGL z3)N1?A*Vbhbg*K5Q38zfnGE6Hv>n?|VU<;g=dWH}Z%0c(kje`ik#2Us&_!J}A&=Ln9VYG?(4$bbV33c(`owZpQPJI{Is5`;jjoI-ApU2$ zz+5{H*hCY6#v5OjSwGPN5wO(#M1CSj}1l;tpeZ)faFH z`N-LmMvJ85VKNMB$IWyJ48dV0wI@=U8TO|+Ryop<>f6o>nK0eP2Iz$tlXaOJ*6fBM za~%tWQ&X+dcC^$R^l|hI8g1!Y(zvN*@`W)&PI3-LSeW9QUBSKXlm61%D>V?0t&u^x zo&68=AG6vOIHxaAv(!DI?_XQZ6GmsVI8N?P!c&krT8$l&<5C*Z6x*NSyy}$6HNM|Q zBj2!~lC5Ns$Gf5@s@VP2c|DBIbZ?EkFRMAjlFe2MG2D(0aJIL(-@|4WOFon3ja|gy zuBz_u6>}KqC)X;RETyco*zv|@4vw3R?SExE_u-QY_irNPA-Qt?xEc3Z(5!22BJB$? z9bbotBs!>@bxxEkXLZ=w&VRT2fo8Xlw!5UxnJRh7d9CDG9xOw;-Gsm10fe6uNFI7G zMiADb>pgT~9%$V_ys5KrczNjDyttuP>p1!7_Gy7dRvhlZuLmEb)(GBB7u(r1-}0?! zgQk*ui^e3yBm)7-@oy{=IO;KT&1=Pr1C1h;UG%nn5t^8)${|j3@)?O+i9G%8PA!l3 z>8hg|DFQhC4^wb!DZ-d%Hhe&fNEl+BDcMID3=Uv5A3fH({NEdpJ?MgeM$7I6YMwV_ zA=3d%L-ac78jg$BlQfz)7T=Qa2I7V!6)kjuLG6jd52N=f@=xyPqBE!D2KB@0z)$G-P`m3;RS#bzeoy@F`-8| zLukqrd#z%gC#nIdUWQ#m;}rVVHJ++#pK9o=<1kal^<6@`H+nW5ypL9Opn@;_G2^Iq zq|0Bpx#YxS;%K==ydQZZKZTECiYt-jzf;`6KHLk}fy>Dmutc4v7Pxm^j?bTj&Gfn! z(L$A2sI%X;u&KJ7um@bX5k(|7pqpvG-+1v~nQ69k=X-u5=a@K7n9q~A%OP~7Pyb>x zXq{#B%h)^=YW`#)t)NMo!qki}r{GtK43f#<{qS+rYp0V%;qwcble!TJEiLO^QL&Uq z>249Cefw^%J?lv>(UN=NsSWP+NF|cqF=6Z5NemMdap7N?rz&}#yX{2{Lpd_#ht~^A zo+CtD%#`ISY3(nm#v>TD3YJytdoHNM_u2-Butq+ud~y9E?W4Fv~&`td=upX(N^ zw)T^AU#Y+APipbCqRC74O&!g8GaHk9U&OYGllgYfGO6D)MX4`$Kk2K=)>TXxh5y+e zeB9xb2n2BO_!3@ygDOf18$@cDWZ7N9Bx4&NgJm4`@A`J_$FvgfYorm6H$z z(KSqJ+=%1)EN2cYv+BcYza;0us`}At>?J%i14ocvdN$W>%X*LJ^{6_DB8n1OyZ*N=F22^j?Ds0-=|H zbOA-AD@}T@fdHW=R8c^BZ=ncCFQJ7N0&jB8z2}~LkN5Z2d+WXR)?JI`3TCtSo|(Pp zJM;aN@4^AACAw8o^Kk;fdQ%Z@?|@em&eYqQQzXzMxQFfzQ&(rwImPetr+FQZ1M(za2zC!R)*LYFsv$i_Za&hvn2y!pJ+M z%Oy76)un?{>!BvI!vwnry#da7+G%ddGCT{uSs?QtT(_vnt9-ebMo(!7_Fz(lOp#T* zXElI*=N7A^^6`}bo7MwYjA@AyY@BzXVESi7TV)C~Y2n+8+QIi0LkQ(zAW1Y7Y5y+y zQgfW|J5%8IsOJ|ov!kP{PZ+vKR6JK2ysRQ0i0Ykhcg?_#*4m7Zs?deW%fNOSj>zv- z-979hlNg{;p4+;nqb%YMMHOpFETv>>%ReiU_#;OnATNz$k=k2lpJdhccrxr%`GETT46gZkb;x@x!jJtEKYYL=@4^NTPP0yqth8KY)oGFa2>T5Kg z{*qq^!-%1xA6Kq)xo=2~d)*>>lqWoQdIXB6l*|(jMCpg_Z9c_}6&Au4KWSVyAgeKJ zPnfDut=de|6Z3i?P)F0|{Q0=4s*W*$D#!`RvgQ=#3|lcBaq0aO_N$ z=RT}Y(0cjY+IdPUFTPCvQf0O5q4`oCaGq2kN&jG1d|%<8DQh;FQ&&8`htwub@D`9- zKEy&qkopGB^FZd#SQ3w#`k@qUrRd zkChjXc?INO;%^Iio&q7%o()i|0&p(ce(SmZ@e?yWiZahSf^ep>NX7BwIl=+*iJ!%S zg799OlKrk~AXEk$Ujz`P@9B4)UXf@I(-b4&cM{h_L zCH8txve3Z)0M3hI>hme4x4n<=50?NN&{j`)CT2iU)1eu$)w(p!-FNm2B@xIZr&_?;JR#-yN*PW5 z-iggS;D3Vk1C2M7Ek?h(-1o;re_ejqYbug4{>0~I* zi%g&ppUl-7%kr?_ao<1xu?r{rpr3hsJ zR~9^r6>zuaso9M(8nP=SH6 zroURynY{-}rFHX39$G8rjGMV+r1LD8vO5M2I=6LGdFqlNr zosyLu4q!Ma>w0iz)|&-?>Sd4_65bne^iHq@W(JD+a(7Ke!HaDPpid!Bt|(ROt+|dJ zuu*>1KR3ch9Or*NF(zpzuBOKZB=;i3oZVW?T)7!v0TgVfKSEgt9?iSb7$#W`s^esq z<|T``ZeBkIn<$j-)HS)Cs>52koBCN+U#}&5OLh+yLTrVg226Jh`JFC~)OzZpSCDN5 z^YEILob*s+-O)iCup=-9g(|0w+RV1!f@n563VSTFIvNu?dxT#rTN>a;f<0;G@>=?C zRBw~IK)>6fCv}-(q8RbDdc^O;9@?^a+(dzaJ5Rl9=#!lTb;M`OVarmnoBOa9Hiv6} zY0=kQVqB=X-SB)C_$0X~d%$-wTG`HufVlVGYWnMUubpJ?BMVXrFDP)4bsoP$HF{aw zU3B7@nbo_xW`B;+88;Aet8ST_RnT;8VYr`K zQ%1E6@GYA1P(xGJKxv<}U+#$f0vQ=ny3iZacf z%=7$phX74hE(zjCSWJ3smGR4@w5yorCAqJ;@&%Oz;5@U#q=IQBUw4^KC)seK`8I%5 zEXokGr`I;q$z`655;(<4C)$&z1*dy9I-ia-_w&?57>vNU#^+G3O3rIDo)$jpN)iKx z**u2fuU`fFe>ZGo7IS_b1B_Qjikn$12l!Dfo#I=!ybX#wB|c}95h;o8*szf0Q~BmtBFga2tKU-7`=A$e8+NY;H52ZTik5Cq%0*p-}G_TLOaf7Zaz7tvMxrB zFlnRMH|d3w9xn3oV}@<3*4}!uzH7KOuF(3{-LA=F9mGuN*7EX} zb{jvWw*Arxqe?rU+~6mGLC{E>IRBTYjV=5g*}{`#Ild&D?zjqb3n_lxY1t=Z{UZ~d!u*t8=fBLFwPm-K$gd-R~%x#i`tCoc#BU_aSiL0 zXz{uq36b!qR!6`JC!)^ITpXOMFcGwWnR&(3K{F2G$WIfTtsy4GspWr_)cJx$72 zuye59d{35nWaiU?4#MsTY)GgaV~ZY`>qxXDV&W19Esc`haO1_B+Uy$Ey%~>%T_y~Y zh4S_V&H$Jy-edQ8ppIkzRNpS{N-aMx&lX)r{66EdoD?roiJ4V!;3p>LdA?;%TtSTC zU_I+l{zyswB$|*fLvWM4SK#?g)J2gtuG77SV|_x`V1aPsK;huLtkW)x zj9~~}zX-}u%3^xyH4nZ#^3fs_pXBjKXg4>EQi-yZx>VG=ZPtUKVv5{3(T^*3n+^d973jL zL`}o^PreE+_3Zt2W>Z3f+K!1kpo8qRq$lz!Cy8h2eFkQw)TY**Ri=@Gb!9<-i(-_PPv>BRlk|o2Kv-2{(TCQ<`#Yas zT2G~Yn~*8-4ITuk&Q4m&w77Ksy0Jb}>dQNp-03?J%97<-XkOogTp*>P!EDwhC%H`Q zr+O~Nd2H;@6Jel11cCHC54Nqyv`x$1P}WeN+C<3i$9&dW-sq7Zt>h2CT4JhX(ktJQ z);Zr%dk!%{0U)|ZOee{RoTy@&Q<|8b;4PsK5qF&Pa(q71U9NJY2NZ1|nbCnk&Apxt<#S zM;6(d>p}3tVBZu<6X?2(kTs-+mBwWxr=Cc1WdFn4GQ@%$MH5lHO>RE4F0M} z&sa4;@GAfW4R=@~EkrrlPyw~J*t&E}f9Ddbfo4@qsUWj*x3At{ydj;{xhtC88ZxRv ztIF0j%M*q53*_`SHFx(x^c_*A6;Q?9zYNdSDnWuQN!r`rJMxWm=^IH>zfYz;TQobC zo;L6pwuT-*-mW9C>V=;^ccp_{yOlY6$vTg#P1TS|v&8ym&PT5}uUs$F{k~5Ez7HiktN7#6%qm=*+&7)g&e9^XcUyJptXR(5suqCwOyk(V9jS-P} z@Eo)wmbN-+0f~@2_6RS8&|B_DW?4JPoE?y*_PwaLlM(Srz(~aQs4=t+mH?3`m{01J zjD3HC1|9Bv9 zA~}nHyx)24$!J~Ddowt>x2)fZ1-_wiqXwk`0qVFVRZf?&IzoAax0i+P04sI*#r(G4 z;hz&E7Xo57dA@u0G;2N}ZY~}X8NYH9XDF@m_-1FR84vR5sc)rb)$2p$wT{8edbkNn zhHe-x<75cyvX5b6Lb84$ys!}g)JIK@G@I80HMh~|=ZXlh@Zqh}byw6L3`P3SRgQix z(4U;0AA)OlxfF&ORlfc(E$p#(8?wbGPW7m5wF@N5kAc%hfZm>z)}?UkpQv>2&5h>N zwa+mIY9ej}f^}N{y^112IH|gPy;+p0R>?_HN$2rpu>G zRPoS;Dy-%GIrca8sXXUQ?z4Dq_oQxeQ=TPPG{mSw8E!rv?*SlWWF(!V&$o2KAr7&Y zgPP9n7p(k<8e3K%{T_04D-ql3_4DInnSr{a!!}bFmMM|cXG4*3sCszjT#0HMSA=}B z`;u_70TnF?4_>&Xo-h;E!MAYW>;S*R3_3AD%x7&p8HY;}x@`{C$5V(7ldir0UoA5*S<-F0qWty73-s}kyJwR{ksToZdQz7ULA*P{s^KY%+ZKJkBkmG; zgQFrg*Ii5#{b@&2$%JkD9b#fZ0Pem4royHdWa767Hg| z?HPx8YEyTm@LAlJI<()IPWBkTKafP_6^-&qPSf`mk?s{2sgDqNNnd$B1Q)V8^`3Kl zEZgKt4Rejw4=qJLhR+XmbHJ+glctlS}Cg75=Bzl`bJxQ&TOLEl^{G<#d48yI1iC~lqFwL zH*UTOpodsEzbMA@WOmBR2hJ>}VCwQz{=}ceN+WxoIST%*y$c=#oAdm}aKj?4`PxQm z8aY|;{veU{j(oS{qEm7@HA&}t{s`{(G{{=6g!J*?ec)}mtU_e9abr#qWfpzH8e3|l ziq)gbLheP4q&tgmPI}!pt=V4PMR>CuQle-96Sl*qazoy7B&{krb2NtG9GCfQTk@;j zF~`C}vb>WK8j!81q{2~mERL4$!)q&#)iO!*T$x~U57FD#`Z(g-TKZ3@0_xv$bLN3> z9-{+H1=@wR$%8fctwDq#qa|kUs9S*H`%zX_M}F&7vtcU!oubY#$rpYU)SFwEbHEZt z@9DC=zc9%CH;c4bd66}I!qJl%PgcJqk^gyqPyjUpEeWE0)76?mOy3bD5aKM%leM!~6& z79w)snk3$=pgb)EcI|JZK@EZj?8We;Y$W>tvr$1c<0IuvML~gTl324O*JwhixoQsH zb;84yKo6DSHTN9s&#~W-T)tZ z2g`f69Lby`VV=+MVAqa5Hbvqd38IxOvZQ;P2uY@Ypln&X%fCSQLH}$@8xYFJTekGa zCFk~7dGiQ4Vl{DY=2pW+6N0^-K%{Gl*)$;t&tqU!FBenmgaROb zYFAuj&h|H5O!+Rxx?*AtORAsS*c`>X}ZnK9jxEuA8c{PTvtPywO|@~~d9{klaIhG; z6@U3&>Kn~m2l<7`%TsNywjDk9MIGnP4l!;*#PIngE9>LOJ7;#_U*nU#^h^L!yPY}q z1nu6C@>8iOcqtIhX&TD(9&Zx4z!IXn?|CkPJ?!*#lyo^Wru---=d`7Pix^Bs2|HNh zE;2O!vtfI}3W-s#kRhCunxMXRzF+I9&GQiXLO1hfCdX&(a*_7wwBh~EGW`@js8osu z^m+(XYHZIw%N$=yQJI8gAp~~KExY+cW$)R~;2mFv(=n)I6 z*K3;Hh)aSr5G{N_t?CMvysnSUZ_04Bap-=3(()t&EhyszTPn@I)RpQSnm|jUt0-Ob ztrIZYG+3P*E^cN+bz#Zc&KBK+2+TS0@nu!guSTA@D9I`54=3CTj815aKurp3cAAXZ z6qHrM{E?|`7WiHp`|<7EY1fn_{$U}_E@mJ--xz7ARp$d{NwbXCbl3; zMCikU&rp`Nm^RL9aGe_r_B7Mw9*#l^XBG zF~%j=?#KX*Ixo^=2ME^Bn3?7LBd3!D0&iqfgC=d(Rl`NvENAl7r|G*(tiR<}UDaUY ztxCzEQ5K2%PIl)dbFFV|v2U85*2trGhE0l3FnvdYpEaCRG?p#VqJ;}7Idhq~du2*a z5i#ZIS+t`QYpkaz1It0OD>+uB2lHgHtW$B4jdMQo({l$*)KfjbwC~nIfRh(~g@h7H z=DqbI(f-L+DdI?LRar#?ua=@J@`_8yS}c?QhMK4(*)5#N9ie2u@63Kj@|KLm+u#(v znP)KyDS}8y^?Pr#1kAEgF@SI-O2TkcLr4yeN_w1YVY{;SPRME4E?&&mht~+%PoyL7o<0dsAJdbo)Ce-Xw6K4uPxbF!Gq% z2hYL+YJTw- zwq(cSh9HJNYvQHchu=ZU@1rFMZX2 z^p&_s2v_O`i?5{o98Y@{>pvr3*absq|swul(T~P{Z?7Q*qYCmw&so#%BD;3>4TYS47Y! zwx+>W58fuaLGRb)KiMs{8fl$yZI0qw-VXQt*;Lt$*XxSPNiTF^#f}aL<`nP1ZFWbM zwLDq(BIf8xPQM0HzUuSm>;QDw^+hg7mNg-Tm>+%*I8*eO3iJynQti0yU1>nQgFA$7 zVnEElnG)Q+{=@9GieNP(p|-OCq--RE)`8>-HY?0he7E!7-4{`yKp!SOOdJfq@4+C$ zx>DaIm9wMcE@kD!z0-)JNd-|5BzblH1E^eQd^{Twt*N4M)pI_<9Z@q)&cqB6f8F$f=mmv@rc4ivb9Gyy`)#SjvshtbG| zvq@iJde6crTz&1(^s6IvcXpQB@Kk}n*iM6AM3chlWESPF%XSGuj#*SIo=Gduxs3DQ zfSiMSr}B7vJlbZS8la|m`Qu9d3m`dY)TB-JpM$7%y>*yaO4HX~Gbk;BaLnR6_5lqu0l!0DzNZF{Xd29P8#Hu#)hMsV;29p9+SM}2Ww+DpMoju%3_(T7NKtxnTwDUclTszu6c z+LlWDkQ~AEytrEOPUt(e#YiRdLTbg`91Lo-7H<#W^MUDF`-~b#AxTqS6vL@gnto`- zc)V2%&u{C!ZH0UJ9iMrcKj*y3A?H)8A}e#?8y;Cq4L#bg-lqbm@sJ$Wt@AR}_S-(s zxVRLZ$92wqq0zY&nTd>`y@4J*2t5BMjCOZq|j`N7_4Y{tM z_e0#Q>m&6(J1@dwUW9t4-1-jS2;Egt*virPNhotg>y@*B{53Q!-boz@w^_$SK_aTW zuQi#0A>iqdqMzmL{iD~~UyRcx-}|OP1$%bIqPX_9%n>r)4dPXuG zZIB_odN0Rh{KHF(u?t2U-p)3IbZV*GY3dDdt zdzj@q3(TbszvjMU8PQ6kp9QLMBlY`Ed_m)cfB-SD8NIIr2C3>?r^pW7aBkyfn$X`&!zEYb3$&vb zIa$3|hVY(!*rSaO5l96bQ9TNAl=^KY1{F`-v$xG1sdHEZ7*f`6^$6uw24_TNJLhWg zATf%uX)DXsy8=ipC_|N;k`<@Qh;gT6~sA!7u z0gwW{+S+>-Dt_?p#bNJ!rXFxaf6*S2piyaeUMe*So}1Xqme81u-tw0nFTN2ZGE#oUoWX*!WnOby=rPvZikb-T*M@_wA?M!D|w9Hg+Lg! zx-Os6pdv}HLmQdvS6Jiv(!6I~b{px9bR^u6-UTVSOK<%vHqeDG;c^U;{I3!9l}8eh zaal+zN}#nu_!*Ue_n`yuWMfP+V1Lj1_GxVhARx2rr%@}N6Ut6+{&Mq4q)8hM_WgZIhj zP2q2E3Ok;lJ_s*w2p7El_UJdSFK0OSR^H|p)c5>8fo8maL-H`s@3VpSbm_{Bv|n1@ zeD2HKY4S4Frk?;^Ua6W#;TvrGC5%QADIefg_5;Vgy%~X1@ux115J`D5w*f_czgsm+ z(VB!NfS1bgmk(LODhAmkvD=F;0q*%pv(RW<7}QxIqU7;$!dq>YU+qIU5Ny%pmk&1H zvs!ik;Lo?{o1;4=x;ttoa8W}Yx6Q4&GU2{fE;8wcq3{BRLyM&E3-rdPhunaJ)F)jr zM-Ez`1&m=l&AReL0oezmvh|#2-XT=l56)!9SQoUV^oJ2g+cRsSt#Et0&<{dXQme8n zjQTONIy5wLH~iF)5{3;uBsGO$CpuhGS?|t?O@2E@px2b_8Kbxp*FrSCwbFZePE4jZ zQysZF(OH#2>4^;4)$g2Wy>$5yf@>|_22w{Lt`jNV3z_$|@#Bg>iL1B?*4FFHKgbW= z=Df!biCk=Q)+;ru<@&2c!m9telGNu2au^CA#GXH3V5e|NIUp8f(M15^;qDJL4S-16 z!Vb1`k2vm;IyZ3qE}=kveuHGYbctG$UCn(@CJSW6EDuA>phGY3|31L7+S0LUl!4^Q z=W`|c7CtVhqm7=lE$ST9VY-F_`W+~l4BbXd`KXFbb9me<%+Q#U@uPW)MlMZMDeL7L z)pWSWi6>=D1Dfa=Kjy=*^3=F&+toGl8VPv`W!{SuC>QSufHS_d#*DGX8I))hs2G=S zlnoKr*ZCVlAy)O-q>AiqJa$kxxTKzDbl>|q8Tix%;SmST-!e}s4!BmBrFR;MpsuFIvqildls|fCye~a zX{l=pcX5*IJR5-CIBmp+3ANTg4#KCmr;r-V)Q;Rz%P=RmPVD$ASK)FucYza ze=0Ukl${fTz&@(5)l;5x`fFmzFdV|_gU{psLMmOmr+zhXFXrhR)6Kn!*<2^W9u`$61jQ2g6p z{CNeoDL^LW7`rk5_CHj!|2X_j{Y~tj2mkX<|M>3FJ#gMLF5mAz|8-+QQ{DglFaEsy z3;%2CKYQkXqx%2Z2e{>=%mEdU$OsTbTIqiIdbF_lT$2lY)g3+KQbLTPqt~Yyxk#^! zT>sC><@dSfDu=Z8!P#`v#{Zak{_*R%LJ)~(aIJO*zy3b_IWbZPM^pdDB=?VLOuCx# z+?9|ao<{pW7O8(y&HnklKk%sOxUDDrhh@z_cT#^&f*ah@#)3wLXPf_k+yC}GxO-#4 zM)Q%|ziiv-uSBDo*EIr6AhYr3Isfv>%0=tI`K36qV`sQ8IOOB(bt+c7tRgH z>faF|{^d6pg=0T9m;SXD94i{#Ki?kPw=GM=;r<>!eEQFvI;kqbeUstqm|BJN+^s0< z=JJAL(@w;UWg(DgBkPX$o6D^yZNyyGf(!j-%>RB0aN2;EC#g#_;?kBRS+TKcC)s^^ zq<#P7PXGILA6@Zzi?|baTRZk5F)si8bUvp+NIK6{{b!*0w?lj$o&#a>w05lH?+TE= z9rVAy{$-#3uh;(fto@}2{`Z#rzwws%Fr6>Fu=fpUD_5}IN5$5d3QT9B*hL**b>hC` z-=;a@uWZ&NL|3B(1*Yc;tguMat|SR-9<$!w5oasR0fb{!%*GiXMip>WY#KBRX82Gs zz6$T)c)uCxznzJA_5ep8AcK$f5(ca)hxt}hg{l)4)fI2Mu2B1?kx?c{OAAg+7BI2? zBJfKaP~MzUk%D?x{>ag*rck&jdOL4ztM$^2r~P%>`@dXi)So=VCrI z6@<;(;Lb?weS!vZ-^`RhQ;j(+sd~~;uDs}0ljJ>8Ux#{6wwx{I@$rE{v zf5c&-197l$@p5yt?WSRDm}f^)z8mhD_NacQ{y#ZKqf--p{1mxi6uy#Hlsm_S?__E9xH|JA|) z?4O&6OT&Bm<^N@AXir=kD)FCv|H}b8L2~tfjsJge!SKhk?c!Zojz{joY2#{_A z3W#s?v=IN_A8((B#9V-k_94->sM>YwaL{qK)f6N!6J*?9l<3N&D1^~l1KjRNg|_Qs zmiFtwz*WV$F`|^+GxS z{s7je-U5$@9|A#=PB_@X=}Q5>K;S|e?x;1gq6}#1*ya!_=C#2BeRh)c!rIZkql0B- zxSNa+9N<#sRok!C0GHTAWDEEvt^(wBduymbKW4=NA9n}P^5a1PvCCX){WjIb-)rg2 zB>(>Qgf9{weZmF16Cc>Zmxm3USBjhcm4x)myVZ#*AtDJo+3s~Vd#}XpgS{E$;k+og z)!zDZcV`rSLzKFllJ5&_-uzor!?}ppdY72U5m$eV zlCV7ZFi;D8M0FzitVf@}XMXi9u(^{V@t*zWNvv6e@4n%k1<_-^yrcSEt^<;*BS11`)f9Yn%?w2Vc_rsS`0;Q`L#CJ4cIxVI?Rf3coTWa} zPxNIRwP%1HQ@kv-OmoZ#pygvWn&)Bjs$cmkQ}PmjwqAH!QFnZV;ZRC2 z4)Q+u4(M=}H=ab7wniztNJTXQ<{;lP8L(6A>b&EUBn}!@pnFuhIROPJWnoYyy?Yb3 zWbi^^rCd#W3luheJGXeS7~aAa{ZB6dQJVvT3!~I;xv#Rbm|cH^ABg?zYh30W$?(*ZVv1%!9Nbp7B?Rn zH3RYo&^pEtZks86RgL5}9F=6g-A#!$Htq(VDJDZk?j4eMx8j5?UxE5~zBSuww5$f= zHBT<1w>k%%LH3wD9{H3n*V5IX$hL|~96T@_X*;Gx-Bt66X128>7-F#`POe9T)voGw z9mcWi&CaVB{r5D?yk%|g3K@?Kg!qNnR8)2aJd%?5^=kz#39|gdt7c6+T7mx+uU=^> zc&xau>EPS)GzX^|C|)GV5)n?VSU!PR_BeT9pKbt2;)=M-A7Hb7Vekr=v>yvO0=r zXaW0$-xe@3iMr$NO(0-I#>b6aaT~|4O1hIN$=-b_-t$If(yN4Xok8+uA3xu^=Rg$o z%TcI0Fy~u%aw5O9+STGzT?^SjMXYs=MDW|2jGu1h;+hfCOXdMkKym_RdH0i zl!25FVuQy~a-lRwEseBtr{uQK#`^irsJ7^{wyhVaX#>f(1oxC@EE&F?4FoQbJ1kBz zUsHgE9pfF+zy^<)*Gu|PP=}1lTcc^kumJl^_$EW`%C(p&H{5_W2V>cD^tK!3; z&fa-9=A@Cl53RQqpFXt+&!Ax*<+Nm6c?n3j4eI}CZU_PZ$Py0Iizh@EXxjv<^v(6r-H`6o}=lc$t$g;G+ii4*u zw@R6>pNrpWG_V{&YMLJa`|jB`D)TRvg}BX=^Tu;Tq^9*ku&}An(pVvS?Z8+ICBc0~ zFaNc@I>%g}vQ){CGsK-h4G2#B*T_v#YX^*nrCx+j0*?zTr(3(-TGJ8*EnY0(zJ72| zYGZ4$qUJ3MM<%mXC0>THNS3uk~!4)az_%!O%^ z@{tvI>~DI-b@F&0ku;e6s>>@c0!=OlYH%2?U( zQK_6lOx&3A5}eoYz;W-zAh2BNE{@@+w^)ZWjy)oMrkGrACY|||zvkAZOCiH5qBY$M zTfm3(ESVgwNeQKae>{z|ZW+;Z(nlle@o8Xb>5dfkv%uqXP9naPNM}EbebEs&ZgS)4 zB}bnn4x*Xz3N}lZ_V1gw07j6+vUlWarxClQ-=5B;SNb_O2-Z!su(qk0eZ_i9qo5-N zw-Ot9pP`zDg{SKLsNcr{A;okIh0Ks~>`xXDzh=$Kps*66-K9Hk){lhHOvibJ-qJB6 zMu&@`k_YBeIm%9Nw43wT*7xTVXUGqAr{wd(+EYTx3XDfP4aKa@bPSagkB7+U?jjSN zM=cgnt}s{HIQfsscV427&txrbOc1nYuxvR3;XmK8vu{Rf-4foAy0)W-CG1W(HuUgCkIwq)rS{H{FxU=I4T)Y$7C14usS zF~%pY0^{oP-O1x_V9II&mKtR~$zBXgorQ$6z)-yp&xay|*{5f3G5lhDMNSIH&#VT1 zy_W=vDPN*|!ezOY{Y?r(E7e)@E{F~@3S&I{A!C;8sT3>}k$fp>ASb`;Nfb9;G%0WP z>Y;i3J1Y7eM%^-KCee;ugS5mNy(4^pF5dYPB=JB@rCZH!C&Rg_JMg)(hM30q>}5e~ zU<19p59QYfj;m4JhN7kYyE9F?sTY;c)(l=85C@gQwH7KH!;XPue6uZ@2IG(N=hrW9 zSElvKbw}xKpO6RY(4D?xXB?!ljc)J5;`Z`AdMBDumzT9vN&YNg&-x0mLWQ>v`h1c{ zhwr?6PzYOF9FOKRToTD0EuakOO4@q)aBy?D*nKD2(q&w);P&&w*F?F!8!HXw7n}KB z!#BY_PMnI9)Cfr31XvrfmG%%hi`(f388@CrA%P*A&i$AHT|!#WE#8J6{qcZlK=IPP zSCG(kBHy9uYWWEDPR27CvU8VTYcBWB-eDxHR%ijKE{{=uW%3T-8R46M#K`}qeNIHE zjcoa?6rX;1Kh!{D+^h&%lzd3GiI!f@3+VY7M8~sKA}XYI5X3Kz)z&uFZiWUVC@OJ+&=k zc<s&xvxphs48AAFsT}u{yfn`w8|7B~JNMO36Q-IBjH&t4pG~r1 zv@Zfy%~E#uJU=W(yS@a(4Cm<&oFj7`@$ATG+ys^09T&wfn8hfbIP&PF&Al0|T91S1 z%cm!4yZ(+>`H%v?c{esUis$3ND`HRj`JS}cXo0VjRD0};$uY0NeP{C-7w?sk}pvgeT(wpWk1pCIXQ=bZB8~;1-!5 z7F`$uSps!hcMYrk7~pv|`(V9?t_a^wsW`zX=eZ^EC5pM%!IG;g7k}R48Y*%yIN7&vlJR1tYWhY#? ze^2{1R+<&Y#OhUK_H}=KwamOnU>gaT83k=G!`>OSIS03SXx@(cMXmC0TF){E4TCet`~`}Vn_N9UJBMtWFidI;t8p}&aGjCDwvXL+oQ~|=_jOwID0n@D*CN-o+u(z| zo|1!{`5I?6fGX1{a4X@W^kj5;-d*pL7ar(nztgn-mdBZGaU31yvAJkQSJ&(9PFD87 z<4IJQlFi^w%G)jan>@+D?Z|cdd$yH&#_Zv8!|p9zWK)~}8n0s`wMYv+#B0_O_CDwk zNF;71CNDcMP;6fuOt))x@m*PCR|xrNmb~hr=NjqrrEgNYFzLaw#3u;Hi7?5U5=Q~l{iKbn{cN^ zzM^|+N{jOar|E(Ltkv^6+q>l>y8;<_6_F-Az_rawRkGJ%0#(x%Aau~oiY_gvarp2m zuPZG&N87;uT}6vU8-8~+LNQ)MKN*St#wJlvgpdv(sa%vT4!Xl;5n0E!H~_Tu*MSK9 zIc9fKBz5vmsFcuDUuKLET~UV*DMd?3qSB4fxI2#J^_Qi%PTetWI5SuoZZ(38eIXh- zP2X(Ol{5}5OOUi0$ym6%eEsAFw!i%ZFq7yDnkfnopugsQ6@di}7$waRL{siaC3+wb zSi403_&rrkB|iPy_Uub?u{?!m3#6TJd)`L*lr5GBuDLqV2^SrXFAR6XXLBlyGiIyt zuVbE5$0^Kwp7zdg_!gy2d8ELtvNY{|(?>u!;el}f(U}oCbEZdU-@PtMmk*1)ldgcz zlM_D3Pzy{uufr_+o#{i`2#m6s??$zi9bxvDBUoSc^i5#TCA$^NfjraVhdr8KJw3KR zz9-#bu<4`~x8vSH$!0@hOew zTlGh8{#DHAub(f-zquo?E*-4uVt#(h9_&hyx-TuR&4`RepJy$3^zqs!VA-r4oSYk8 zzqc{@eQ5xm3608ALp_Vtxc7kO!>`WCR(3uBcO_jTIE(F@IaKWaJ(gb#D6u_0{ZH8j zFQ+?YD%UuMv9te|HiIKiKL9<+W?UKftIPe-E;ihSlox_H7X8rR|HDD2Pjbuqy_tgk zmmB)yp1`&G-L38m{2vZtJC$>Vn#3Re_`h^2=wLN|a4mIg@odXqd;32=`C;Om&1>GpSui4K-Ls|R|h*%(!6xAIs`EVG|#6x^fl%)L8x zF%*(-bqtD=|179*d)QAjiBw23@6!X>xvQ%C8Mpe;yO_rgoe7Iq((ms!ZamIkcBpjj ze7AZp#y$*FYVi_zcGsZNh=XeQie+T;{U(~zXjzi$(!c+N=M$f)YlkXUbbK1pz*Cf) zHRr|l6dmp35rNDv<NwweNY=x{$<92phpmm!gli>f9S#@2bj~lw4ttH3+wok$Cr}O< zIao