From 1c317ebe1323f5f749adad062ec3486612ef7a25 Mon Sep 17 00:00:00 2001 From: PatrikBuhr Date: Thu, 23 Feb 2023 12:39:31 +0100 Subject: [PATCH] Removal of usage of DMaaP Issue-ID: CCSDK-3852 Signed-off-by: PatrikBuhr Change-Id: I88a370ea81f56763f54fde472c30d894c0df04e3 --- a1-policy-management/README.md | 30 +-- a1-policy-management/config/README | 2 +- a1-policy-management/config/application.yaml | 2 +- a1-policy-management/pom.xml | 6 +- .../a1policymanagementservice/Application.java | 16 -- .../aspect/LogAspect.java | 2 +- .../clients/A1AdapterJsonHelper.java | 2 +- .../clients/A1ClientFactory.java | 2 +- .../clients/A1UriBuilder.java | 2 +- .../clients/CcsdkA1AdapterClient.java | 2 +- .../clients/OscA1Client.java | 2 +- .../clients/StdA1ClientVersion2.java | 2 +- .../configuration/ApplicationConfig.java | 10 - .../configuration/ApplicationConfigParser.java | 33 --- .../configuration/ConfigurationFile.java | 2 +- .../configuration/WebClientConfig.java | 2 +- .../controllers/ServiceCallbackInfo.java | 2 +- .../controllers/ServiceCallbacks.java | 2 +- .../controllers/VoidResponse.java | 2 +- .../controllers/v2/ConfigurationController.java | 2 +- .../controllers/v2/Consts.java | 2 +- .../controllers/v2/ErrorResponse.java | 2 +- .../controllers/v2/PolicyIdList.java | 2 +- .../controllers/v2/PolicyInfoList.java | 2 +- .../controllers/v2/PolicyTypeIdList.java | 2 +- .../controllers/v2/PolicyTypeInfo.java | 2 +- .../controllers/v2/RicInfo.java | 2 +- .../controllers/v2/RicInfoList.java | 2 +- .../controllers/v2/ServiceStatusList.java | 2 +- .../dmaap/DmaapMessageConsumer.java | 235 ------------------- .../dmaap/DmaapMessageHandler.java | 144 ------------ .../dmaap/DmaapRequestMessage.java | 55 ----- .../dmaap/DmaapResponseMessage.java | 45 ---- .../tasks/RicSupervision.java | 2 +- .../application_configuration_schema.json | 74 +----- .../aspect/LogAspectTest.java | 2 +- .../clients/A1ClientFactoryTest.java | 2 +- .../clients/A1ClientHelper.java | 2 +- .../clients/AsyncRestClientTest.java | 2 +- .../clients/CcsdkA1AdapterClientTest.java | 2 +- .../clients/OscA1ClientTest.java | 2 +- .../clients/StdA1ClientV2Test.java | 2 +- .../configuration/ApplicationConfigParserTest.java | 78 +------ .../configuration/ApplicationConfigTest.java | 4 +- .../configuration/ConfigurationFileTest.java | 2 +- .../controllers/v2/ConcurrencyTestRunnable.java | 2 +- .../v2/ConfigurationControllerTest.java | 6 +- .../controllers/v2/RappSimulatorController.java | 2 +- .../dmaap/DmaapMessageConsumerTest.java | 215 ----------------- .../dmaap/DmaapMessageHandlerTest.java | 254 --------------------- .../tasks/RefreshConfigTaskTest.java | 13 +- .../tasks/RicSupervisionTest.java | 2 +- .../tasks/RicSynchronizationTaskTest.java | 2 +- .../utils/MockA1Client.java | 2 +- .../resources/test_application_configuration.json | 43 ++-- ...pplication_configuration_with_dmaap_config.json | 57 ----- .../config/application_configuration.json.nosdnc | 20 +- .../config/application_configuration.json.sdnc | 18 +- csit/scripts/healthcheck/test/setup.sh | 3 - docs/consumedapis/consumedapis.rst | 16 +- docs/guide/developer-guide.rst | 15 +- docs/media/ONAP-A1ControllerArchitecture.png | Bin 85333 -> 172679 bytes docs/offeredapis/offeredapis.rst | 1 - 63 files changed, 88 insertions(+), 1379 deletions(-) delete mode 100644 a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumer.java delete mode 100644 a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandler.java delete mode 100644 a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapRequestMessage.java delete mode 100644 a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapResponseMessage.java delete mode 100644 a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumerTest.java delete mode 100644 a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandlerTest.java delete mode 100644 a1-policy-management/src/test/resources/test_application_configuration_with_dmaap_config.json diff --git a/a1-policy-management/README.md b/a1-policy-management/README.md index c25b29d8..1457d02b 100644 --- a/a1-policy-management/README.md +++ b/a1-policy-management/README.md @@ -36,10 +36,6 @@ To Run Policy Management Service in Local: In the folder /opt/app/policy-agent/config/, create a soft link with below command, ln -s application_configuration.json -To Run Policy Management Service in Local with the DMaaP polling turned on: -In the folder /opt/app/policy-agent/config/, create a soft link with below command, -ln -s application_configuration.json - The Policy Management Service can be run stand alone in a simulated test mode. Then it simulates RICs. The REST API is published on port 8081 and it is started by command: mvn -Dtest=MockPolicyManagementService test @@ -47,35 +43,11 @@ mvn -Dtest=MockPolicyManagementService test The backend server publishes live API documentation at the URL `http://your-host-name-here:8081/swagger-ui.html` -The Policy Management Service uses A1-POLICY-AGENT-READ & A1-POLICY-AGENT-WRITE topic for subscribe & Publish to the DMaap. -Sample Request Message to DMaaP: -{ - "type": "request", - "target": "policy-management-service", - "timestamp": "2019-05-14T11:44:51.36Z", - "operation": "GET", - "correlationId": "c09ac7d1-de62-0016-2000-e63701125557-201", - "apiVersion": "1.0", - "originatorId": "849e6c6b420", - "requestId": "23343221", - "url": "/policies?type=type1&ric=ric1&service=service1" -} - -Sample Response Message to DMaaP: -{ - "type": "response", - "timestamp": "2019-05-14T11:44:51.36Z", - "correlationId": "c09ac7d1-de62-0016-2000-e63701125557-201", - "originatorId": "849e6c6b420", - "requestId": "23343221", - "status": "200 OK", - "message": [] -} ## License ONAP : ccsdk oran -Copyright (C) 2019-2022 Nordix Foundation. All rights reserved. +Copyright (C) 2019-2023 Nordix Foundation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/a1-policy-management/config/README b/a1-policy-management/config/README index 42e0b7bd..38d4f3d9 100644 --- a/a1-policy-management/config/README +++ b/a1-policy-management/config/README @@ -29,7 +29,7 @@ keytool -list -v -keystore truststore.jks -storepass policy_agent ## License ONAP : ccsdk oran -Copyright (C) 2020 Nordix Foundation. All rights reserved. +Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/a1-policy-management/config/application.yaml b/a1-policy-management/config/application.yaml index 8f37aaa5..44e0b07c 100644 --- a/a1-policy-management/config/application.yaml +++ b/a1-policy-management/config/application.yaml @@ -2,7 +2,7 @@ # ============LICENSE_START======================================================= # ONAP : ccsdk oran # ================================================================================ -# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/a1-policy-management/pom.xml b/a1-policy-management/pom.xml index 14dd68f3..6497a3e6 100644 --- a/a1-policy-management/pom.xml +++ b/a1-policy-management/pom.xml @@ -3,7 +3,7 @@ ~ ============LICENSE_START======================================================= ~ ONAP : ccsdk oran ~ ================================================================================ - ~ Copyright (C) 2020 Nordix Foundation. All rights reserved. + ~ Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. ~ ================================================================================ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. @@ -37,8 +37,8 @@ 3.0.0 2.10.1 20220924 - 2.13.0 - 2.5.0 + 2.13.0 + 1.24.3 2.11.0 31.0.1-jre 1.32 diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/Application.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/Application.java index 259a5ba9..6f458647 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/Application.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/Application.java @@ -22,7 +22,6 @@ package org.onap.ccsdk.oran.a1policymanagementservice; import java.lang.invoke.MethodHandles; -import org.onap.ccsdk.oran.a1policymanagementservice.dmaap.DmaapMessageConsumer; import org.onap.ccsdk.oran.a1policymanagementservice.tasks.RefreshConfigTask; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,9 +39,6 @@ public class Application { @Autowired private RefreshConfigTask configRefresh; - @Autowired - private DmaapMessageConsumer dmaapMessageConsumer; - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); public static void main(String[] args) { @@ -68,16 +64,4 @@ public class Application { public CommandLineRunner configRefreshRunner(ApplicationContext ctx) { return args -> configRefresh.start(); } - - /** - * Starts the DMaaP message consumer service. - * - * @param ctx the application context. - * - * @return the command line runner for the DMaaP message consumer service. - */ - @Bean - public CommandLineRunner dmaapMessageConsumerRunner(ApplicationContext ctx) { - return args -> dmaapMessageConsumer.start(); - } } diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspect.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspect.java index 1c40f04f..e41ebe16 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspect.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspect.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1AdapterJsonHelper.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1AdapterJsonHelper.java index 60dca3b4..ab93ea3e 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1AdapterJsonHelper.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1AdapterJsonHelper.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactory.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactory.java index 0956aa13..14738a91 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactory.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactory.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1UriBuilder.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1UriBuilder.java index 801cb4d5..d6d890d4 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1UriBuilder.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1UriBuilder.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClient.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClient.java index 9c32d79c..225d2f71 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClient.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClient.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1Client.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1Client.java index 1d567a89..62115b5a 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1Client.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1Client.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientVersion2.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientVersion2.java index 24990a1a..c61ecb86 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientVersion2.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientVersion2.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfig.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfig.java index 796d6ad9..358680a0 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfig.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfig.java @@ -100,12 +100,6 @@ public class ApplicationConfig { private Map ricConfigs = new HashMap<>(); - @Getter - private String dmaapConsumerTopicUrl; - - @Getter - private String dmaapProducerTopicUrl; - private Map controllerConfigs = new HashMap<>(); private WebClientConfig webClientConfig = null; @@ -174,9 +168,6 @@ public class ApplicationConfig { Collection modifications = new ArrayList<>(); this.controllerConfigs = parserResult.getControllerConfigs(); - this.dmaapConsumerTopicUrl = parserResult.getDmaapConsumerTopicUrl(); - this.dmaapProducerTopicUrl = parserResult.getDmaapProducerTopicUrl(); - Map newRicConfigs = new HashMap<>(); for (RicConfig newConfig : parserResult.getRicConfigs()) { RicConfig oldConfig = this.ricConfigs.get(newConfig.getRicId()); @@ -202,5 +193,4 @@ public class ApplicationConfig { public boolean isS3Enabled() { return !(Strings.isNullOrEmpty(s3EndpointOverride) || Strings.isNullOrEmpty(s3Bucket)); } - } diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java index 6c178d36..9df901fa 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java @@ -36,7 +36,6 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import lombok.Builder; @@ -70,44 +69,23 @@ public class ApplicationConfigParser { @Builder.Default private Map controllerConfigs = new HashMap<>(); - @Builder.Default - private String dmaapConsumerTopicUrl = ""; - - @Builder.Default - private String dmaapProducerTopicUrl = ""; - } public ConfigParserResult parse(JsonObject root) throws ServiceException { validateJsonObjectAgainstSchema(root); - String dmaapProducerTopicUrl = ""; - String dmaapConsumerTopicUrl = ""; - JsonObject pmsConfigJson = root.getAsJsonObject(CONFIG); if (pmsConfigJson == null) { throw new ServiceException("Missing root configuration \"" + CONFIG + "\" in JSON: " + root); } - JsonObject json = pmsConfigJson.getAsJsonObject("streams_publishes"); - if (json != null) { - dmaapProducerTopicUrl = parseDmaapConfig(json); - } - - json = pmsConfigJson.getAsJsonObject("streams_subscribes"); - if (json != null) { - dmaapConsumerTopicUrl = parseDmaapConfig(json); - } - List ricConfigs = parseRics(pmsConfigJson); Map controllerConfigs = parseControllerConfigs(pmsConfigJson); checkConfigurationConsistency(ricConfigs, controllerConfigs); return ConfigParserResult.builder() // - .dmaapConsumerTopicUrl(dmaapConsumerTopicUrl) // - .dmaapProducerTopicUrl(dmaapProducerTopicUrl) // .ricConfigs(ricConfigs) // .controllerConfigs(controllerConfigs) // .build(); @@ -236,17 +214,6 @@ public class ApplicationConfigParser { return get(obj, memberName).getAsJsonArray(); } - private String parseDmaapConfig(JsonObject streamCfg) throws ServiceException { - Set> streamConfigEntries = streamCfg.entrySet(); - if (streamConfigEntries.size() != 1) { - throw new ServiceException( - "Invalid configuration. Number of streams must be one, config: " + streamConfigEntries); - } - JsonObject streamConfigEntry = streamConfigEntries.iterator().next().getValue().getAsJsonObject(); - JsonObject dmaapInfo = get(streamConfigEntry, "dmaap_info").getAsJsonObject(); - return getAsString(dmaapInfo, "topic_url"); - } - private static String getAsString(JsonObject obj, String memberName) throws ServiceException { return get(obj, memberName).getAsString(); } diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFile.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFile.java index efe2fa2e..7f5af451 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFile.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFile.java @@ -1,6 +1,6 @@ /*- * ========================LICENSE_START================================= - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/WebClientConfig.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/WebClientConfig.java index e71f8557..04367e0e 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/WebClientConfig.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/WebClientConfig.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbackInfo.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbackInfo.java index c5436cd3..ec23f838 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbackInfo.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbackInfo.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbacks.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbacks.java index b028cd63..67b56f8e 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbacks.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/ServiceCallbacks.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/VoidResponse.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/VoidResponse.java index 6470abfe..001226d2 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/VoidResponse.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/VoidResponse.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationController.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationController.java index c8d9e4c7..0d0919d8 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationController.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationController.java @@ -1,6 +1,6 @@ /*- * ========================LICENSE_START================================= - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/Consts.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/Consts.java index 56421003..7f954e90 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/Consts.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/Consts.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ErrorResponse.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ErrorResponse.java index 82a21ae2..6bc5a6dd 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ErrorResponse.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ErrorResponse.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyIdList.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyIdList.java index 4e55c506..35c1c947 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyIdList.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyIdList.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyInfoList.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyInfoList.java index 04f7e1ec..ae1aed95 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyInfoList.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyInfoList.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeIdList.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeIdList.java index c2610b07..0da2e654 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeIdList.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeIdList.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java index 591c1caf..1f0e4476 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyTypeInfo.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfo.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfo.java index 44927707..6843cd1e 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfo.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfo.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfoList.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfoList.java index f5612f9c..715c15b4 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfoList.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicInfoList.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceStatusList.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceStatusList.java index e6aa8d41..55593894 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceStatusList.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ServiceStatusList.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumer.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumer.java deleted file mode 100644 index 94888c38..00000000 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumer.java +++ /dev/null @@ -1,235 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * ONAP : ccsdk oran - * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. - * ====================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================LICENSE_END=================================== - */ - -package org.onap.ccsdk.oran.a1policymanagementservice.dmaap; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; - -import java.lang.invoke.MethodHandles; -import java.time.Duration; -import java.util.ArrayList; -import java.util.List; - -import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClient; -import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClientFactory; -import org.onap.ccsdk.oran.a1policymanagementservice.clients.SecurityContext; -import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Component; - -import reactor.core.publisher.Flux; -import reactor.core.publisher.FluxSink; -import reactor.core.publisher.Mono; - -/** - * The class fetches incoming requests from DMAAP. It uses the timeout parameter - * that lets the MessageRouter keep the connection with the Kafka open until - * requests are sent in. - * - *

- * this service will regularly check the configuration and start polling DMaaP - * if the configuration is added. If the DMaaP configuration is removed, then - * the service will stop polling and resume checking for configuration. - * - *

- * Each received request is processed by {@link DmaapMessageHandler}. - */ -@Component -public class DmaapMessageConsumer { - - protected static final Duration TIME_BETWEEN_DMAAP_RETRIES = Duration.ofSeconds(10); - - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - private final ApplicationConfig applicationConfig; - - private DmaapMessageHandler dmaapMessageHandler = null; - - private final Gson gson; - - private final AsyncRestClientFactory restClientFactory; - - private final InfiniteFlux infiniteSubmitter = new InfiniteFlux(); - - @Value("${server.http-port}") - private int localServerHttpPort; - - private static class InfiniteFlux { - private FluxSink sink; - private int counter = 0; - - public synchronized Flux start() { - stop(); - return Flux.create(this::next).doOnRequest(this::onRequest); - } - - public synchronized void stop() { - if (this.sink != null) { - this.sink.complete(); - this.sink = null; - } - } - - void onRequest(long no) { - for (long i = 0; i < no; ++i) { - sink.next(counter++); - } - } - - void next(FluxSink sink) { - this.sink = sink; - sink.next(counter++); - } - - } - - @Autowired - public DmaapMessageConsumer(ApplicationConfig applicationConfig, SecurityContext securityContext) { - this.applicationConfig = applicationConfig; - GsonBuilder gsonBuilder = new GsonBuilder(); - this.gson = gsonBuilder.create(); - this.restClientFactory = new AsyncRestClientFactory(applicationConfig.getWebClientConfig(), securityContext); - } - - /** - * Starts the DMAAP consumer. If there is a DMaaP configuration, it will start - * polling for messages. Otherwise it will check regularly for the - * configuration. - * - */ - public void start() { - infiniteSubmitter.stop(); - - createTask().subscribe(// - value -> logger.debug("DmaapMessageConsumer next: {}", value), // - throwable -> logger.error("DmaapMessageConsumer error: {}", throwable.getMessage()), // - () -> logger.warn("DmaapMessageConsumer stopped") // - ); - } - - protected Flux createTask() { - return infiniteFlux() // - .flatMap(notUsed -> fetchFromDmaap(), 1) // - .doOnNext(message -> logger.debug("Message Reveived from DMAAP : {}", message)) // - .flatMap(this::parseReceivedMessage, 1)// - .flatMap(this::handleDmaapMsg, 1) // - .onErrorResume(throwable -> Mono.empty()); - } - - protected Flux infiniteFlux() { - return infiniteSubmitter.start(); - } - - protected Mono delay() { - return Mono.delay(TIME_BETWEEN_DMAAP_RETRIES).flatMap(o -> Mono.empty()); - } - - private List parseList(String jsonString, Class clazz) { - List result = new ArrayList<>(); - JsonArray jsonArr = JsonParser.parseString(jsonString).getAsJsonArray(); - for (JsonElement jsonElement : jsonArr) { - // The element can either be a JsonObject or a JsonString - if (jsonElement.isJsonPrimitive()) { - T json = gson.fromJson(jsonElement.getAsString(), clazz); - result.add(json); - } else { - T json = gson.fromJson(jsonElement.toString(), clazz); - result.add(json); - } - } - return result; - } - - protected boolean isDmaapConfigured() { - String producerTopicUrl = applicationConfig.getDmaapProducerTopicUrl(); - String consumerTopicUrl = applicationConfig.getDmaapConsumerTopicUrl(); - return (producerTopicUrl != null && consumerTopicUrl != null && !producerTopicUrl.isEmpty() - && !consumerTopicUrl.isEmpty()); - } - - protected Mono handleDmaapMsg(DmaapRequestMessage dmaapRequestMessage) { - return getDmaapMessageHandler().handleDmaapMsg(dmaapRequestMessage); - } - - protected Mono getFromMessageRouter(String topicUrl) { - logger.trace("getFromMessageRouter {}", topicUrl); - AsyncRestClient c = restClientFactory.createRestClientNoHttpProxy(""); - return c.get(topicUrl); - } - - protected Flux parseReceivedMessage(String jsonString) { - try { - logger.trace("parseMessages {}", jsonString); - return Flux.fromIterable(parseList(jsonString, DmaapRequestMessage.class)); - } catch (Exception e) { - logger.error("parseMessages error {}", jsonString); - return sendErrorResponse("Could not parse: " + jsonString) // - .flatMapMany(s -> Flux.empty()); - } - } - - protected Mono sendErrorResponse(String response) { - logger.debug("sendErrorResponse {}", response); - DmaapRequestMessage fakeRequest = DmaapRequestMessage.builder() // - .apiVersion("") // - .correlationId("") // - .operation(DmaapRequestMessage.Operation.PUT) // - .originatorId("") // - .payload(null) // - .requestId("") // - .target("") // - .timestamp("") // - .url("URL") // - .build(); - return getDmaapMessageHandler().sendDmaapResponse(response, fakeRequest, HttpStatus.BAD_REQUEST) // - .onErrorResume(e -> Mono.empty()); - } - - private Mono fetchFromDmaap() { - if (!this.isDmaapConfigured()) { - return delay().flatMap(o -> Mono.empty()); - } - logger.debug("fetchFromDmaap"); - String topicUrl = this.applicationConfig.getDmaapConsumerTopicUrl(); - - return getFromMessageRouter(topicUrl) // - .onErrorResume(throwable -> delay().flatMap(o -> Mono.empty())); - } - - private DmaapMessageHandler getDmaapMessageHandler() { - if (this.dmaapMessageHandler == null) { - String pmsBaseUrl = "http://localhost:" + this.localServerHttpPort; - AsyncRestClient pmsClient = restClientFactory.createRestClientNoHttpProxy(pmsBaseUrl); - AsyncRestClient producer = - restClientFactory.createRestClientNoHttpProxy(this.applicationConfig.getDmaapProducerTopicUrl()); - this.dmaapMessageHandler = new DmaapMessageHandler(producer, pmsClient); - } - return this.dmaapMessageHandler; - } - -} diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandler.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandler.java deleted file mode 100644 index 022dec05..00000000 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandler.java +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * ONAP : ccsdk oran - * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. - * ====================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================LICENSE_END=================================== - */ - -package org.onap.ccsdk.oran.a1policymanagementservice.dmaap; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; - -import java.lang.invoke.MethodHandles; - -import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClient; -import org.onap.ccsdk.oran.a1policymanagementservice.dmaap.DmaapRequestMessage.Operation; -import org.onap.ccsdk.oran.a1policymanagementservice.exceptions.ServiceException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.reactive.function.client.WebClientException; -import org.springframework.web.reactive.function.client.WebClientResponseException; -import reactor.core.publisher.Mono; - -/** - * The class handles incoming requests from DMAAP. - *

- * That means: invoke a REST call towards this services and to send back a - * response though DMAAP - */ -public class DmaapMessageHandler { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private static Gson gson = new GsonBuilder().create(); - private final AsyncRestClient dmaapClient; - private final AsyncRestClient pmsClient; - - public DmaapMessageHandler(AsyncRestClient dmaapClient, AsyncRestClient pmsClient) { - this.pmsClient = pmsClient; - this.dmaapClient = dmaapClient; - } - - public Mono handleDmaapMsg(DmaapRequestMessage dmaapRequestMessage) { - return this.invokePolicyManagementService(dmaapRequestMessage) // - .onErrorResume(t -> handlePolicyManagementServiceCallError(t, dmaapRequestMessage)) // - .flatMap(response -> sendDmaapResponse(response.getBody(), dmaapRequestMessage, - response.getStatusCode())) - .doOnError(t -> logger.warn("Failed to handle DMAAP message : {}", t.getMessage()))// - .onErrorResume(t -> Mono.empty()); - } - - private Mono> handlePolicyManagementServiceCallError(Throwable error, - DmaapRequestMessage dmaapRequestMessage) { - logger.debug("Policy Management Service call failed: {}", error.getMessage()); - HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR; - String errorMessage = error.getMessage(); - if (error instanceof WebClientResponseException) { - WebClientResponseException exception = (WebClientResponseException) error; - status = exception.getStatusCode(); - errorMessage = exception.getResponseBodyAsString(); - } else if (error instanceof ServiceException) { - status = HttpStatus.BAD_REQUEST; - errorMessage = error.getMessage(); - } else if (!(error instanceof WebClientException)) { - logger.warn("Unexpected exception ", error); - } - return sendDmaapResponse(errorMessage, dmaapRequestMessage, status) // - .flatMap(notUsed -> Mono.empty()); - } - - public Mono sendDmaapResponse(String response, DmaapRequestMessage dmaapRequestMessage, HttpStatus status) { - return createDmaapResponseMessage(dmaapRequestMessage, response, status) // - .flatMap(this::sendToDmaap) // - .onErrorResume(this::handleResponseCallError); - } - - private Mono> invokePolicyManagementService(DmaapRequestMessage dmaapRequestMessage) { - DmaapRequestMessage.Operation operation = dmaapRequestMessage.getOperation(); - String uri = dmaapRequestMessage.getUrl(); - - if (operation == Operation.DELETE) { - return pmsClient.deleteForEntity(uri); - } else if (operation == Operation.GET) { - return pmsClient.getForEntity(uri); - } else if (operation == Operation.PUT) { - return pmsClient.putForEntity(uri, payload(dmaapRequestMessage)); - } else if (operation == Operation.POST) { - return pmsClient.postForEntity(uri, payload(dmaapRequestMessage)); - } else { - return Mono.error(new ServiceException("Not implemented operation: " + operation)); - } - } - - private String payload(DmaapRequestMessage message) { - JsonObject payload = message.getPayload(); - if (payload != null) { - return gson.toJson(payload); - } else { - logger.warn("Expected payload in message from DMAAP: {}", message); - return ""; - } - } - - private Mono sendToDmaap(String body) { - logger.debug("sendToDmaap: {} ", body); - return dmaapClient.post("", "[" + body + "]"); - } - - private Mono handleResponseCallError(Throwable t) { - logger.warn("Failed to send response to DMaaP: {}", t.getMessage()); - return Mono.empty(); - } - - private Mono createDmaapResponseMessage(DmaapRequestMessage dmaapRequestMessage, String response, - HttpStatus status) { - DmaapResponseMessage dmaapResponseMessage = DmaapResponseMessage.builder() // - .status(status.toString()) // - .message(response == null ? "" : response) // - .type("response") // - .correlationId( - dmaapRequestMessage.getCorrelationId() == null ? "" : dmaapRequestMessage.getCorrelationId()) // - .originatorId( - dmaapRequestMessage.getOriginatorId() == null ? "" : dmaapRequestMessage.getOriginatorId()) // - .requestId(dmaapRequestMessage.getRequestId() == null ? "" : dmaapRequestMessage.getRequestId()) // - .timestamp(dmaapRequestMessage.getTimestamp() == null ? "" : dmaapRequestMessage.getTimestamp()) // - .build(); - String str = gson.toJson(dmaapResponseMessage); - return Mono.just(str); - } -} diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapRequestMessage.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapRequestMessage.java deleted file mode 100644 index 10dc981e..00000000 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapRequestMessage.java +++ /dev/null @@ -1,55 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * ONAP : ccsdk oran - * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. - * ====================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================LICENSE_END=================================== - */ - -package org.onap.ccsdk.oran.a1policymanagementservice.dmaap; - -import com.google.gson.JsonObject; - -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; - -@Getter -@Builder -@EqualsAndHashCode -public class DmaapRequestMessage { - - public enum Operation { - PUT, GET, DELETE, POST - } - - String correlationId; - - String target; - - String timestamp; - - String apiVersion; - - String originatorId; - - String requestId; - - Operation operation; - - String url; - - JsonObject payload; -} diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapResponseMessage.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapResponseMessage.java deleted file mode 100644 index 64778551..00000000 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapResponseMessage.java +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * ONAP : ccsdk oran - * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. - * ====================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================LICENSE_END=================================== - */ - -package org.onap.ccsdk.oran.a1policymanagementservice.dmaap; - -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; - -@Getter -@Builder -@EqualsAndHashCode -public class DmaapResponseMessage { - - String type; - - String correlationId; - - String timestamp; - - String originatorId; - - String requestId; - - String status; - - String message; -} diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervision.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervision.java index 3f0d3a0c..f11e30f3 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervision.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervision.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/main/resources/application_configuration_schema.json b/a1-policy-management/src/main/resources/application_configuration_schema.json index 947db33e..8476951c 100644 --- a/a1-policy-management/src/main/resources/application_configuration_schema.json +++ b/a1-policy-management/src/main/resources/application_configuration_schema.json @@ -54,8 +54,8 @@ }, "controller": { "type": "string" - }, - "customAdapterClass" : { + }, + "customAdapterClass": { "type": "string" }, "managedElementIds": { @@ -78,80 +78,12 @@ "additionalProperties": false } ] - }, - "streams_publishes": { - "type": "object", - "properties": { - "dmaap_publisher": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "dmaap_info": { - "type": "object", - "properties": { - "topic_url": { - "type": "string" - } - }, - "required": [ - "topic_url" - ], - "additionalProperties": false - } - }, - "required": [ - "type", - "dmaap_info" - ], - "additionalProperties": false - } - }, - "required": [ - "dmaap_publisher" - ], - "additionalProperties": false - }, - "streams_subscribes": { - "type": "object", - "properties": { - "dmaap_subscriber": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "dmaap_info": { - "type": "object", - "properties": { - "topic_url": { - "type": "string" - } - }, - "required": [ - "topic_url" - ], - "additionalProperties": false - } - }, - "required": [ - "type", - "dmaap_info" - ], - "additionalProperties": false - } - }, - "required": [ - "dmaap_subscriber" - ], - "additionalProperties": false } }, "required": [ "ric" ], - "additionalProperties": false + "additionalProperties": true } }, "required": [ diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspectTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspectTest.java index f8882440..cada8bc5 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspectTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/aspect/LogAspectTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactoryTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactoryTest.java index a715191b..ef4ad1c8 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactoryTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientFactoryTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientHelper.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientHelper.java index 56dc7ed6..b42edb8f 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientHelper.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/A1ClientHelper.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/AsyncRestClientTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/AsyncRestClientTest.java index 96769427..12ac46de 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/AsyncRestClientTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/AsyncRestClientTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClientTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClientTest.java index b2fc84a6..9bd10f3a 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClientTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/CcsdkA1AdapterClientTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1ClientTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1ClientTest.java index 731c83a4..c376d90f 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1ClientTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/OscA1ClientTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientV2Test.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientV2Test.java index 0af8a17c..40154b4f 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientV2Test.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/clients/StdA1ClientV2Test.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParserTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParserTest.java index 61543c0b..e43f4015 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParserTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParserTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,7 +28,6 @@ import static org.mockito.Mockito.when; import com.google.common.base.Charsets; import com.google.common.io.Resources; -import com.google.gson.Gson; import com.google.gson.JsonIOException; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -61,14 +60,6 @@ class ApplicationConfigParserTest { ApplicationConfigParser.ConfigParserResult result = parserUnderTest.parse(jsonRootObject); - String topicUrl = result.getDmaapProducerTopicUrl(); - assertEquals("http://admin:admin@localhost:6845/events/A1-POLICY-AGENT-WRITE", topicUrl, "controller contents"); - - topicUrl = result.getDmaapConsumerTopicUrl(); - assertEquals( - "http://admin:admin@localhost:6845/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100", - topicUrl, "controller contents"); - Map controllers = result.getControllerConfigs(); assertEquals(1, controllers.size(), "size"); ControllerConfig expectedControllerConfig = ControllerConfig.builder() // @@ -90,70 +81,11 @@ class ApplicationConfigParserTest { } private static InputStream getCorrectJson() throws IOException { - URL url = ApplicationConfigParser.class.getClassLoader() - .getResource("test_application_configuration_with_dmaap_config.json"); + URL url = ApplicationConfigParser.class.getClassLoader().getResource("test_application_configuration.json"); String string = Resources.toString(url, Charsets.UTF_8); return new ByteArrayInputStream((string.getBytes(StandardCharsets.UTF_8))); } - @Test - @DisplayName("test when Dmaap Config Has Several Streams Publishing") - void whenDmaapConfigHasSeveralStreamsPublishing() throws Exception { - JsonObject jsonRootObject = getJsonRootObject(); - JsonObject json = jsonRootObject.getAsJsonObject("config").getAsJsonObject("streams_publishes"); - JsonObject fake_info_object = new JsonObject(); - fake_info_object.addProperty("fake_info", "fake"); - json.add("fake_info_object", new Gson().toJsonTree(fake_info_object)); - DataPublishing data = new Gson().fromJson(json.toString(), DataPublishing.class); - final String expectedMessage = - "Invalid configuration. Number of streams must be one, config: " + data.toString(); - - Exception actualException = assertThrows(ServiceException.class, () -> parserUnderTest.parse(jsonRootObject)); - - assertEquals(expectedMessage, actualException.getMessage(), - "Wrong error message when the DMaaP config has several streams publishing"); - } - - class DataPublishing { - private JsonObject dmaap_publisher; - private JsonObject fake_info_object; - - @Override - public String toString() { - return String.format("[dmaap_publisher=%s, fake_info_object=%s]", dmaap_publisher.toString(), - fake_info_object.toString()); - } - } - - @Test - @DisplayName("test when Dmaap Config Has Several Streams Subscribing") - void whenDmaapConfigHasSeveralStreamsSubscribing() throws Exception { - JsonObject jsonRootObject = getJsonRootObject(); - JsonObject json = jsonRootObject.getAsJsonObject("config").getAsJsonObject("streams_subscribes"); - JsonObject fake_info_object = new JsonObject(); - fake_info_object.addProperty("fake_info", "fake"); - json.add("fake_info_object", new Gson().toJsonTree(fake_info_object)); - DataSubscribing data = new Gson().fromJson(json.toString(), DataSubscribing.class); - final String expectedMessage = - "Invalid configuration. Number of streams must be one, config: " + data.toString(); - - Exception actualException = assertThrows(ServiceException.class, () -> parserUnderTest.parse(jsonRootObject)); - - assertEquals(expectedMessage, actualException.getMessage(), - "Wrong error message when the DMaaP config has several streams subscribing"); - } - - private class DataSubscribing { - private JsonObject dmaap_subscriber; - private JsonObject fake_info_object; - - @Override - public String toString() { - return String.format("[dmaap_subscriber=%s, fake_info_object=%s]", dmaap_subscriber.toString(), - fake_info_object.toString()); - } - } - @Test @DisplayName("test when Wrong Member Name In Object") void whenWrongMemberNameInObject() throws Exception { @@ -180,10 +112,4 @@ class ApplicationConfigParserTest { assertThat(actualException.getMessage()).contains("Json schema validation failure"); } - - JsonObject getDmaapInfo(JsonObject jsonRootObject, String streamsPublishesOrSubscribes, - String dmaapPublisherOrSubscriber) throws Exception { - return jsonRootObject.getAsJsonObject("config").getAsJsonObject(streamsPublishesOrSubscribes) - .getAsJsonObject(dmaapPublisherOrSubscriber).getAsJsonObject("dmaap_info"); - } } diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigTest.java index 39a8aa89..15e4739a 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -55,8 +55,6 @@ class ApplicationConfigTest { ConfigParserResult configParserResult(RicConfig... rics) { return ConfigParserResult.builder() // .ricConfigs(Arrays.asList(rics)) // - .dmaapConsumerTopicUrl("dmaapConsumerTopicUrl") // - .dmaapProducerTopicUrl("dmaapProducerTopicUrl") // .controllerConfigs(new HashMap<>()) // .build(); } diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFileTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFileTest.java index 7875cfb5..b79a4ca8 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFileTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ConfigurationFileTest.java @@ -1,6 +1,6 @@ /*- * ========================LICENSE_START================================= - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConcurrencyTestRunnable.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConcurrencyTestRunnable.java index 4e535ab2..0bf212a7 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConcurrencyTestRunnable.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConcurrencyTestRunnable.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationControllerTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationControllerTest.java index 3c5b1d9e..c0a6b4e4 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationControllerTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/ConfigurationControllerTest.java @@ -1,6 +1,6 @@ /*- * ========================LICENSE_START================================= - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -134,8 +134,8 @@ class ConfigurationControllerTest { } private String configAsString() throws Exception { - File configFile = new File(getClass().getClassLoader() - .getResource("test_application_configuration_with_dmaap_config.json").getFile()); + File configFile = + new File(getClass().getClassLoader().getResource("test_application_configuration.json").getFile()); return FileUtils.readFileToString(configFile, "UTF-8"); } diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java index 371bd959..337c4798 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RappSimulatorController.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * O-RAN-SC * %% - * Copyright (C) 2020 Nordix Foundation + * Copyright (C) 2020-2023 Nordix Foundation * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumerTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumerTest.java deleted file mode 100644 index 7abc5db8..00000000 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageConsumerTest.java +++ /dev/null @@ -1,215 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * ONAP : ccsdk oran - * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. - * ====================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================LICENSE_END=================================== - */ - -package org.onap.ccsdk.oran.a1policymanagementservice.dmaap; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; - -import java.util.ArrayList; - -import org.junit.Assert; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClient; -import org.onap.ccsdk.oran.a1policymanagementservice.clients.SecurityContext; -import org.onap.ccsdk.oran.a1policymanagementservice.configuration.ApplicationConfig; -import org.onap.ccsdk.oran.a1policymanagementservice.dmaap.DmaapRequestMessage.Operation; -import org.onap.ccsdk.oran.a1policymanagementservice.exceptions.ServiceException; -import org.onap.ccsdk.oran.a1policymanagementservice.utils.LoggingUtils; - -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -@ExtendWith(MockitoExtension.class) -class DmaapMessageConsumerTest { - @Mock - private ApplicationConfig applicationConfigMock; - @Mock - private AsyncRestClient messageRouterConsumerMock; - @Mock - private DmaapMessageHandler messageHandlerMock; - - private DmaapMessageConsumer messageConsumerUnderTest; - - private Gson gson = new GsonBuilder().create(); - - @AfterEach - void resetLogging() { - LoggingUtils.getLogListAppender(DmaapMessageConsumer.class); - } - - private void setTaskNumberOfLoops(int number) { - ArrayList l = new ArrayList<>(); - for (int i = 0; i < number; ++i) { - l.add(i); - } - Flux f = Flux.fromIterable(l); - doReturn(f).when(messageConsumerUnderTest).infiniteFlux(); - } - - private void disableTaskDelay() { - doReturn(Mono.empty()).when(messageConsumerUnderTest).delay(); - } - - @Test - @DisplayName("successful Case dmaap Not Configured then Sleep And Retry Until Config") - void successfulCase_dmaapNotConfigured_thenSleepAndRetryUntilConfig() throws Exception { - messageConsumerUnderTest = spy(new DmaapMessageConsumer(applicationConfigMock, new SecurityContext(""))); - - setTaskNumberOfLoops(3); - disableTaskDelay(); - - when(this.applicationConfigMock.getDmaapConsumerTopicUrl()).thenReturn("getDmaapConsumerTopicUrl"); - doReturn(false, false, true).when(messageConsumerUnderTest).isDmaapConfigured(); - doReturn(Mono.just(dmaapRequestMessageString())).when(messageConsumerUnderTest) - .getFromMessageRouter(anyString()); - - doReturn(Mono.just("responseFromHandler")).when(messageConsumerUnderTest).handleDmaapMsg(any()); - - String s = messageConsumerUnderTest.createTask().blockLast(); - assertEquals("responseFromHandler", s); - verify(messageConsumerUnderTest, times(2)).delay(); - verify(messageConsumerUnderTest, times(1)).handleDmaapMsg(any()); - } - - @Test - @DisplayName("return Error From Dmapp then Sleep And Retry") - void returnErrorFromDmapp_thenSleepAndRetry() throws Exception { - messageConsumerUnderTest = spy(new DmaapMessageConsumer(applicationConfigMock, new SecurityContext(""))); - - setTaskNumberOfLoops(2); - disableTaskDelay(); - setUpMrConfig(); - - { - Mono dmaapError = Mono.error(new ServiceException("dmaapError")); - Mono dmaapResponse = Mono.just(dmaapRequestMessageString()); - doReturn(dmaapError, dmaapResponse).when(messageConsumerUnderTest).getFromMessageRouter(anyString()); - } - - doReturn(Mono.just("response1")).when(messageConsumerUnderTest).handleDmaapMsg(any()); - - String s = messageConsumerUnderTest.createTask().blockLast(); - - verify(messageConsumerUnderTest, times(2)).getFromMessageRouter(anyString()); - verify(messageConsumerUnderTest, times(0)).sendErrorResponse(anyString()); - verify(messageConsumerUnderTest, times(1)).delay(); - verify(messageConsumerUnderTest, times(1)).handleDmaapMsg(any()); - assertEquals("response1", s); - } - - @Test - @DisplayName("unParsable Message then Send Response And Continue") - void unParsableMessage_thenSendResponseAndContinue() throws Exception { - messageConsumerUnderTest = spy(new DmaapMessageConsumer(applicationConfigMock, new SecurityContext(""))); - setTaskNumberOfLoops(2); - setUpMrConfig(); - - { - Mono dmaapError = Mono.just("Non valid JSON \""); - Mono dmaapResponse = Mono.just(dmaapRequestMessageString()); - doReturn(dmaapError, dmaapResponse).when(messageConsumerUnderTest).getFromMessageRouter(anyString()); - } - - doReturn(Mono.just("response1")).when(messageConsumerUnderTest).handleDmaapMsg(any()); - - String s = messageConsumerUnderTest.createTask().blockLast(); - assertEquals("response1", s); - - verify(messageConsumerUnderTest, times(2)).getFromMessageRouter(anyString()); - verify(messageConsumerUnderTest, times(1)).sendErrorResponse(anyString()); - verify(messageConsumerUnderTest, times(0)).delay(); - verify(messageConsumerUnderTest, times(1)).handleDmaapMsg(dmaapRequestMessage()); - } - - private String dmaapRequestMessageString() { - String json = gson.toJson(dmaapRequestMessage()); - return jsonArray(json); - } - - @Test - @DisplayName("test Message Parsing") - void testMessageParsing() throws ServiceException { - messageConsumerUnderTest = new DmaapMessageConsumer(applicationConfigMock, new SecurityContext("")); - String json = gson.toJson(dmaapRequestMessage()); - { - String jsonArrayOfObject = jsonArray(json); - DmaapRequestMessage parsedMessage = - messageConsumerUnderTest.parseReceivedMessage(jsonArrayOfObject).blockLast(); - assertNotNull(parsedMessage); - assertNotNull(parsedMessage.getPayload()); - - Assert.assertEquals(dmaapRequestMessage(), parsedMessage); - } - { - String jsonArrayOfString = jsonArray(quote(json)); - DmaapRequestMessage parsedMessage = - messageConsumerUnderTest.parseReceivedMessage(jsonArrayOfString).blockLast(); - assertNotNull(parsedMessage); - assertNotNull(parsedMessage.getPayload()); - Assert.assertEquals(dmaapRequestMessage(), parsedMessage); - } - - } - - private void setUpMrConfig() { - when(applicationConfigMock.getDmaapConsumerTopicUrl()).thenReturn("url"); - when(applicationConfigMock.getDmaapProducerTopicUrl()).thenReturn("url"); - } - - private String jsonArray(String s) { - return "[" + s + "]"; - } - - private String quote(String s) { - return "\"" + s.replace("\"", "\\\"") + "\""; - } - - private DmaapRequestMessage dmaapRequestMessage() { - return DmaapRequestMessage.builder() // - .apiVersion("apiVersion") // - .correlationId("correlationId") // - .operation(Operation.PUT) // - .originatorId("originatorId") // - .payload(new JsonObject()) // - .requestId("requestId") // - .target("target") // - .timestamp("timestamp") // - .url("URL") // - .build(); - } - -} diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandlerTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandlerTest.java deleted file mode 100644 index 2ec3664c..00000000 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/dmaap/DmaapMessageHandlerTest.java +++ /dev/null @@ -1,254 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * ONAP : ccsdk oran - * ====================================================================== - * Copyright (C) 2019-2020 Nordix Foundation. All rights reserved. - * ====================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================LICENSE_END=================================== - */ - -package org.onap.ccsdk.oran.a1policymanagementservice.dmaap; - -import static ch.qos.logback.classic.Level.WARN; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.core.read.ListAppender; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; - -import java.io.IOException; -import java.nio.charset.Charset; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.onap.ccsdk.oran.a1policymanagementservice.clients.AsyncRestClient; -import org.onap.ccsdk.oran.a1policymanagementservice.dmaap.DmaapRequestMessage.Operation; -import org.onap.ccsdk.oran.a1policymanagementservice.utils.LoggingUtils; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.reactive.function.client.WebClientResponseException; - -import reactor.core.publisher.Mono; -import reactor.test.StepVerifier; - -class DmaapMessageHandlerTest { - private static final String URL = "url"; - - private final AsyncRestClient dmaapClient = mock(AsyncRestClient.class); - private final AsyncRestClient pmsClient = mock(AsyncRestClient.class); - private DmaapMessageHandler testedObject; - private Gson gson = new GsonBuilder().create(); // - - @BeforeEach - private void setUp() throws Exception { - testedObject = spy(new DmaapMessageHandler(dmaapClient, pmsClient)); - } - - JsonObject payloadAsJson() { - return gson.fromJson(payloadAsString(), JsonObject.class); - } - - String payloadAsString() { - return "{\"param\":\"value\"}"; - } - - DmaapRequestMessage dmaapRequestMessage(Operation operation) { - JsonObject payload = ((operation == Operation.PUT || operation == Operation.POST) ? payloadAsJson() : null); - return DmaapRequestMessage.builder() // - .apiVersion("apiVersion") // - .correlationId("correlationId") // - .operation(operation) // - .originatorId("originatorId") // - .payload(payload) // - .requestId("requestId") // - .target("target") // - .timestamp("timestamp") // - .url(URL) // - .build(); - } - - private Mono> okResponse() { - ResponseEntity entity = new ResponseEntity<>("OK", HttpStatus.OK); - return Mono.just(entity); - } - - private Mono> notOkResponse() { - ResponseEntity entity = new ResponseEntity<>("NOK", HttpStatus.BAD_GATEWAY); - return Mono.just(entity); - } - - @Test - @DisplayName("test successful Delete") - void successfulDelete() throws IOException { - doReturn(okResponse()).when(pmsClient).deleteForEntity(anyString()); - doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); - - DmaapRequestMessage message = dmaapRequestMessage(Operation.DELETE); - - StepVerifier // - .create(testedObject.handleDmaapMsg(message)) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // - - verify(pmsClient).deleteForEntity(URL); - verifyNoMoreInteractions(pmsClient); - - verify(dmaapClient).post(anyString(), anyString()); - - verifyNoMoreInteractions(dmaapClient); - } - - @Test - @DisplayName("test successful Get") - void successfulGet() throws IOException { - doReturn(okResponse()).when(pmsClient).getForEntity(anyString()); - doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); - - DmaapRequestMessage message = dmaapRequestMessage(Operation.GET); - StepVerifier // - .create(testedObject.handleDmaapMsg(message)) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // - - verify(pmsClient).getForEntity(URL); - verifyNoMoreInteractions(pmsClient); - - verify(dmaapClient).post(anyString(), anyString()); - verifyNoMoreInteractions(dmaapClient); - } - - @Test - @DisplayName("test exception From Pms When Get then Post Error") - void exceptionFromPmsWhenGet_thenPostError() throws IOException { - String errorBody = "Unavailable"; - WebClientResponseException webClientResponseException = new WebClientResponseException( - HttpStatus.SERVICE_UNAVAILABLE.value(), "", (HttpHeaders) null, errorBody.getBytes(), (Charset) null); - doReturn(Mono.error(webClientResponseException)).when(pmsClient).getForEntity(anyString()); - doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); - - DmaapRequestMessage message = dmaapRequestMessage(Operation.GET); - StepVerifier // - .create(testedObject.handleDmaapMsg(message)) // - .expectSubscription() // - .verifyComplete(); // - - ArgumentCaptor captor = ArgumentCaptor.forClass(String.class); - verify(dmaapClient).post(anyString(), captor.capture()); - String actualMessage = captor.getValue(); - assertThat(actualMessage).contains(HttpStatus.SERVICE_UNAVAILABLE.toString()) // - .contains(errorBody); - } - - @Test - @DisplayName("test successful Put") - void successfulPut() throws IOException { - doReturn(okResponse()).when(pmsClient).putForEntity(anyString(), anyString()); - doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); - - DmaapRequestMessage message = dmaapRequestMessage(Operation.PUT); - StepVerifier // - .create(testedObject.handleDmaapMsg(message)) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // - - verify(pmsClient).putForEntity(URL, payloadAsString()); - verifyNoMoreInteractions(pmsClient); - - verify(dmaapClient).post(anyString(), anyString()); - verifyNoMoreInteractions(dmaapClient); - } - - @Test - @DisplayName("test successful Post") - void successfulPost() throws IOException { - doReturn(okResponse()).when(pmsClient).postForEntity(anyString(), anyString()); - doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); - - DmaapRequestMessage message = dmaapRequestMessage(Operation.POST); - StepVerifier // - .create(testedObject.handleDmaapMsg(message)) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // - - verify(pmsClient).postForEntity(URL, payloadAsString()); - verifyNoMoreInteractions(pmsClient); - - verify(dmaapClient).post(anyString(), anyString()); - verifyNoMoreInteractions(dmaapClient); - } - - @Test - @DisplayName("test exception When Calling Pms then Error Response") - void exceptionWhenCallingPms_thenErrorResponse() throws IOException { - - doReturn(notOkResponse()).when(pmsClient).putForEntity(anyString(), anyString()); - doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); - - DmaapRequestMessage message = dmaapRequestMessage(Operation.PUT); - testedObject.handleDmaapMsg(message).block(); - - verify(pmsClient).putForEntity(anyString(), anyString()); - verifyNoMoreInteractions(pmsClient); - - ArgumentCaptor captor = ArgumentCaptor.forClass(String.class); - verify(dmaapClient).post(anyString(), captor.capture()); - String actualMessage = captor.getValue(); - assertThat(actualMessage).as("Message \"%s\" sent to DMaaP contains %s", actualMessage, HttpStatus.BAD_GATEWAY) - .contains(HttpStatus.BAD_GATEWAY.toString()); - - verifyNoMoreInteractions(dmaapClient); - } - - @Test - @DisplayName("test put Without Payload then Not Found Response With Warning") - void putWithoutPayload_thenNotFoundResponseWithWarning() throws Exception { - DmaapRequestMessage message = DmaapRequestMessage.builder() // - .apiVersion("apiVersion") // - .correlationId("correlationId") // - .operation(DmaapRequestMessage.Operation.PUT) // - .originatorId("originatorId") // - .payload(null) // - .requestId("requestId") // - .target("target") // - .timestamp("timestamp") // - .url(URL) // - .build(); - - final ListAppender logAppender = - LoggingUtils.getLogListAppender(DmaapMessageHandler.class, WARN); - - doReturn(notOkResponse()).when(pmsClient).putForEntity(anyString(), anyString()); - testedObject.handleDmaapMsg(message).block(); - - assertThat(logAppender.list.get(0).getFormattedMessage()) - .startsWith("Expected payload in message from DMAAP: "); - } - -} diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTaskTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTaskTest.java index a2d20ac2..d84359ad 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTaskTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RefreshConfigTaskTest.java @@ -40,7 +40,6 @@ import java.time.Duration; import java.util.Arrays; import java.util.Optional; import java.util.Properties; -import java.util.Vector; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -74,13 +73,6 @@ class RefreshConfigTaskTest { @Mock ConfigurationFile configurationFileMock; - private static final String RIC_1_NAME = "ric1"; - private static final RicConfig CORRECT_RIC_CONIFG = RicConfig.builder() // - .ricId(RIC_1_NAME) // - .baseUrl("http://localhost:8080/") // - .managedElementIds(new Vector(Arrays.asList("kista_1", "kista_2"))) // - .build(); - private RefreshConfigTask createTestObject(boolean configFileExists) { return createTestObject(configFileExists, spy(new Rics()), new Policies(appConfig), true); } @@ -120,10 +112,9 @@ class RefreshConfigTaskTest { verify(refreshTaskUnderTest.rics, times(2)).put(any(Ric.class)); - Iterable ricConfigs = appConfig.getRicConfigs(); - RicConfig ricConfig = ricConfigs.iterator().next(); + java.util.Collection ricConfigs = appConfig.getRicConfigs(); assertThat(ricConfigs).isNotNull(); - assertThat(ricConfig).isEqualTo(CORRECT_RIC_CONIFG); + assertThat(ricConfigs).hasSize(2); } @Test diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervisionTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervisionTest.java index 7b5e9768..1b41ce08 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervisionTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSupervisionTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSynchronizationTaskTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSynchronizationTaskTest.java index 1f933cde..c2f419fb 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSynchronizationTaskTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/tasks/RicSynchronizationTaskTest.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/MockA1Client.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/MockA1Client.java index 80bfff72..91b762c5 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/MockA1Client.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/MockA1Client.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/a1-policy-management/src/test/resources/test_application_configuration.json b/a1-policy-management/src/test/resources/test_application_configuration.json index fef2382a..c9f67a46 100644 --- a/a1-policy-management/src/test/resources/test_application_configuration.json +++ b/a1-policy-management/src/test/resources/test_application_configuration.json @@ -1,10 +1,20 @@ { "config": { - "description": "Application configuration", + "description": "Test", + "controller": [ + { + "name": "controller1", + "baseUrl": "http://localhost:8083/", + "userName": "user", + "password": "password" + } + ], "ric": [ { "name": "ric1", - "baseUrl": "http://localhost:8080/", + "controller": "controller1", + "baseUrl": "http://localhost:8083/", + "customAdapterClass": "org.onap.ccsdk.oran.a1policymanagementservice.clients.StdA1ClientVersion2$Factory", "managedElementIds": [ "kista_1", "kista_2" @@ -12,29 +22,20 @@ }, { "name": "ric2", - "baseUrl": "http://localhost:8081/", - "customAdapterClass": "org.onap.ccsdk.oran.a1policymanagementservice.clients.StdA1ClientVersion2$Factory", + "baseUrl": "http://localhost:8085/", + "managedElementIds": [ + "kista_3", + "kista_4" + ] + }, + { + "name": "ric3_noBaseURL", + "baseUrl": "", "managedElementIds": [ "kista_3", "kista_4" ] } - ], - "streams_publishes": { - "dmaap_publisher": { - "type": "message_router", - "dmaap_info": { - "topic_url": "http://admin:admin@localhost:6845/events/A1-POLICY-AGENT-WRITE" - } - } - }, - "streams_subscribes": { - "dmaap_subscriber": { - "type": "message_router", - "dmaap_info": { - "topic_url": "http://admin:admin@localhost:6845/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" - } - } - } + ] } } diff --git a/a1-policy-management/src/test/resources/test_application_configuration_with_dmaap_config.json b/a1-policy-management/src/test/resources/test_application_configuration_with_dmaap_config.json deleted file mode 100644 index 6e1de75e..00000000 --- a/a1-policy-management/src/test/resources/test_application_configuration_with_dmaap_config.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "config": { - "description": "Test", - "controller": [ - { - "name": "controller1", - "baseUrl": "http://localhost:8083/", - "userName": "user", - "password": "password" - } - ], - "ric": [ - { - "name": "ric1", - "controller": "controller1", - "baseUrl": "http://localhost:8083/", - "customAdapterClass": "org.onap.ccsdk.oran.a1policymanagementservice.clients.StdA1ClientVersion2$Factory", - "managedElementIds": [ - "kista_1", - "kista_2" - ] - }, - { - "name": "ric2", - "baseUrl": "http://localhost:8085/", - "managedElementIds": [ - "kista_3", - "kista_4" - ] - }, - { - "name": "ric3_noBaseURL", - "baseUrl": "", - "managedElementIds": [ - "kista_3", - "kista_4" - ] - } - ], - "streams_publishes": { - "dmaap_publisher": { - "type": "message_router", - "dmaap_info": { - "topic_url": "http://admin:admin@localhost:6845/events/A1-POLICY-AGENT-WRITE" - } - } - }, - "streams_subscribes": { - "dmaap_subscriber": { - "type": "message_router", - "dmaap_info": { - "topic_url": "http://admin:admin@localhost:6845/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" - } - } - } - } -} \ No newline at end of file diff --git a/csit/scripts/healthcheck/config/application_configuration.json.nosdnc b/csit/scripts/healthcheck/config/application_configuration.json.nosdnc index 800a54ec..e0305e9e 100644 --- a/csit/scripts/healthcheck/config/application_configuration.json.nosdnc +++ b/csit/scripts/healthcheck/config/application_configuration.json.nosdnc @@ -1,6 +1,6 @@ { "description":"Application configuration", - "config":{ + "config":{ "ric":[ { "name":"ric1", @@ -18,22 +18,6 @@ "kista_2" ] } - ], - "streams_publishes":{ - "dmaap_publisher":{ - "type":"message_router", - "dmaap_info":{ - "topic_url":"http://dmaap-mr:3904/events/A1-POLICY-AGENT-WRITE" - } - } - }, - "streams_subscribes":{ - "dmaap_subscriber":{ - "type":"message_router", - "dmaap_info":{ - "topic_url":"http://dmaap-mr:3904/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" - } - } - } + ] } } diff --git a/csit/scripts/healthcheck/config/application_configuration.json.sdnc b/csit/scripts/healthcheck/config/application_configuration.json.sdnc index d38efb81..6518310e 100644 --- a/csit/scripts/healthcheck/config/application_configuration.json.sdnc +++ b/csit/scripts/healthcheck/config/application_configuration.json.sdnc @@ -27,22 +27,6 @@ "kista_2" ] } - ], - "streams_publishes":{ - "dmaap_publisher":{ - "type":"message_router", - "dmaap_info":{ - "topic_url":"http://dmaap-mr:3904/events/A1-POLICY-AGENT-WRITE" - } - } - }, - "streams_subscribes":{ - "dmaap_subscriber":{ - "type":"message_router", - "dmaap_info":{ - "topic_url":"http://dmaap-mr:3904/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" - } - } - } + ] } } diff --git a/csit/scripts/healthcheck/test/setup.sh b/csit/scripts/healthcheck/test/setup.sh index c751e6d2..7ddde91a 100755 --- a/csit/scripts/healthcheck/test/setup.sh +++ b/csit/scripts/healthcheck/test/setup.sh @@ -7,9 +7,6 @@ export ODL_USER=${ODL_USER:-admin} export ODL_PASSWORD=${ODL_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U} export ODL_ADMIN_USER=${ODL_ADMIN_USER:-${ODL_USER}} export ODL_ADMIN_PASSWORD=${ODL_ADMIN_PASSWORD:-${ODL_PASSWORD}} -export DMAAP_USER=${DMAAP_USER:-admin} -export DMAAP_PASSWORD=${DMAAP_PASSWORD:-admin} -export DMAAP_AUTHKEY=${DMAAP_AUTHKEY:-""} export AAI_TRUSTSTORE_PASSWORD=${AAI_TRUSTSTORE_PASSWORD:-changeit} export AAI_CLIENT_NAME=${AAI_CLIENT_NAME:-sdnc@sdnc.onap.org} export AAI_CLIENT_PASSWORD=${AAI_CLIENT_PASSWORD:-demo123456!} diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst index 6c5d33df..515a2b55 100755 --- a/docs/consumedapis/consumedapis.rst +++ b/docs/consumedapis/consumedapis.rst @@ -8,24 +8,16 @@ Consumed APIs The A1 Policy Management Service consumes two ONAP APIs and the A1-P API. -********************** -DMaaP API (deprecated) -********************** - -The A1 Policy Management Service API can also be accessed using *ONAP DMaaP*. To support this the `DMaaP Message Router API `_ is used. - -Note: this functionality is deprecated, and will be removed in future versions. - ***************************************** O-RAN A1 Interface for A1 Policies (A1-P) ***************************************** -Southbound, the ONAP A1 Policy functions communicate with *near-RT-RIC* RAN functions using the **A1** interface, as defined by the `O-RAN Alliance `_ -The *A1 Interface - Application Protocol Specification (A1-AP)* describes this interface. The specification can be viewed from the `O-RAN Alliance `_ website. +Southbound, the ONAP A1 Policy functions communicate with *near-RT-RIC* RAN functions using the **A1** interface, as defined by the `O-RAN Alliance `_ +The *A1 Interface - Application Protocol Specification (A1-AP)* describes this interface. The specification can be viewed from the `O-RAN Alliance `_ website. The **Kohn** ONAP A1 Policy functions implement the *A1 Policy* parts (*A1-P*) of A1-AP versions *v1.1*, *v2.0* and *v3.0* -An opensource implementation of a `near-RT-RIC `_ is available from the `O-RAN Software Community `_. It supports a pre-spec version of the A1-AP. The ONAP A1 Policy functions described here also supports this A1 version (*A1-OSC*). +An opensource implementation of a `near-RT-RIC `_ is available from the `O-RAN Software Community `_. It supports a pre-spec version of the A1-AP. The ONAP A1 Policy functions described here also supports this A1 version (*A1-OSC*). -An opensource implementation of an `A1 Simulator `_ is also available from the `O-RAN Software Community `_. It supports all versions of A1-AP. +An opensource implementation of an `A1 Simulator `_ is also available from the `O-RAN Software Community `_. It supports all versions of A1-AP. diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst index c26bf481..d3b1646f 100644 --- a/docs/guide/developer-guide.rst +++ b/docs/guide/developer-guide.rst @@ -32,10 +32,9 @@ A1 Policy Management Service provides a REST API for management of policies. It * Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc. * Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC. -The Policy Management Service can be accessed over the REST API, and with an equivalent interface using DMaaP. See :ref:`pms_api` for more information about the API. -Note that DMaaP is deprecated and the possibility to access this service using DMaaP is deprecated and will be removed. +The Policy Management Service can be accessed over the REST API. See :ref:`pms_api` for more information about the API. -The configured A1 policies are stored persistently to survive a service restart. +The configured A1 policies are stored persistently to survive a service restart. Dependencies ------------ @@ -56,7 +55,7 @@ Configuration ------------- There are two configuration files for A1 Policy Management Service, *config/application_configuration.json* and *config/application.yaml* -The first (*config/application_configuration.json*) contains configuration needed by the application, such as which near-RT-RICs, or controller to use. DMaaP topic can also be configured, but is deprecated. +The first (*config/application_configuration.json*) contains configuration needed by the application, such as which near-RT-RICs, or controller to use. The second (*config/application.yaml*) contains logging and security configurations. For more information about these configuration files can be found as comments in the sample files provided with the source code, or on the `ONAP wiki `_ @@ -89,15 +88,13 @@ The component has configuration that can be updated in runtime. This configurati The configuration includes: * Optional Controller configuration, e.g. an SDNC instance (with A1-Adapter) - + * (If no 'Contoller' is configured, the A1 Policy Management Service will connect direct to near-RT-RICs, bypassing the SDNC controller) * One entry for each near-RT-RIC, which includes: - + * The base URL of the near-RT-RIC * A optional list of O1 identifiers that near-RT-RIC is controlling. An application can query this service which near-RT-RIC should be addressed for which component (e.g. cells, sectors, locations, etc.) . * An optional reference to the controller to use, or excluded if the near-RT-RIC should be accessed directly from the A1 Policy Management Service. - - * Optional configuration for using of DMaaP (deprecated). There can be one stream for requests to the component and an other stream for responses. For details about the syntax of the file, there is an example in source code repository */config/application_configuration.json*. This file is also included in the docker container */opt/app/policy-agent/data/application_configuration.json_example*. @@ -141,7 +138,7 @@ In order to configure a HTTP Proxy for southbound connections: * Modify file: *odlsli/src/main/properties/a1-adapter-api-dg.properties*. This file is found in CCSDK/distribution for SDNC. * In a running container this file is found at */opt/onap/ccsdk/data/properties/a1-adapter-api-dg.properties* * Variable a1Mediator.proxy.url must contain the full Proxy URL - + After this configuration has been changed the A1 adapter needs to be either rebuilt, or restarted if the configuration is changed inside a container, or re-read by the container if externally accessible (e.g. K8s ConfigMap). diff --git a/docs/media/ONAP-A1ControllerArchitecture.png b/docs/media/ONAP-A1ControllerArchitecture.png index b32d7022ac4deb416416ddb174b9b2defab30641..0d549f51dcb1a725e6092d38489e5993288177d2 100644 GIT binary patch literal 172679 zcmbrlRZyHw*e!~?6EwiUK+xds1P>4h65JuUyAA}m!66Xb-QC?axZB`95ZpH3{?Em} zIaR0jd9U8C>h9`lS-pBa>k0p^D1(VciUtD%gZWifQUwME@%lWzs zVv)1rzYyGiqbR~T3j3M6*(=3I#_ygxUGL$$xx2Z!*+ex$&1l%sKqh5Rr=8m?v>hapi9{(q~~O=>psnC7nz8%E== z*e85>FepP5>5T3?6s%1bs9rcpY8Z%w>G1OCYHbd$V(e4vwLw2lzk^XNbwU4GD=n)!-C$5ZWAEV5Ck8F{}bpgh<=bnCGK6+-6MuDxrrNW9?o<}N!TTI7jWW`i$ zCyHev{jauu*!&P0m8K>*B;>eh zT-{&Jjcul8do?~whp3}}o#yIiHi&S=UyG}l@6PBaS>wT3RV;LZHt=eQlksG9@jcOX zTi4!j*!K>CKjPA=7)|^M%+AcvnWGs8bHvnHFS302`V+;;Jy3y`^O>KYKgmn?clB5J z{6RXf2O(ZU_2!Q5I0sXb+!hVtmy-EypGy}7cS7n;S)Ela<^<(DX`_cKJWi zY+C`>s(*FgKM?dR_O+OCm0W8+6AdI1eNQ4h~d;*mB5oGvny$$(q$Xo z8KotAV;hC9@di7t#+)F;wPEX9e;Rs=Cia6B6gdw2g&s{>xhmUu@G20E&LBm+k%u!` zA>jd;#f_X}Xc;wl@-bQ!oj3MRP1SO6x~p_}c2z6p0UX?#7_<)}$7_^|IsW_*ZDOFn z7U}Ktf@}BG1;2l!3gPUUOxYOy;C1byhRj`|s0JG;o72DCa!x2$IsnsTyBZPam{3Yx zq7r_B8|C_RF?T4;7@(<&KxB;L>FMb|PCm9sn|so2k*_BgsH0AiE+CUj52bi?L+PG3 z;hnCQctLJ8&|?i-k`ks2CI!4Oy2UOYmEPfRU3}H;3}0uJ+yXsxkSg<6l- znRt9Y$y*~VDDtPv`vB(304CW^t}i_fcCDpO|Cfa(bxX0}5*SvcILnN!{Ao9ac&F6Z z(Q5QEg8Bna#7TmoPvT$942pXZ1z0ASGsfLwUA{y(SAQmLNu;fl3SRb-Kta%2)~{3( zYBBkpH(eGcX^J_FcY%QAT)I=r5zJuH z$AXKq`4w_ogoO%G^V-+6U+a*esm&yQ`8bQ$hz=!4fGYSY)t_nuHp}HD-@g1sxuX~L zHS;Iv{;EC$W4ULm<@&1tS4}C}TYGB+%6vJo;_Ly0u$ZFk`*aO->9hCe4a$&kG%$Ic zoP4LnwjZ8*VD^+n#Mxv zc>FhzO#Y@$>rFr_$b?>LXGd^;tB4LPa+dsV8v7R0-_ z493VE51#(2o9*m0FsH0PZB|JANh7FvJMI%2$A=u_bP_{Ek67{H>)D|ne0Ja5*)Fec zEB|qy36J$2uBJU! zYPHK>Qq_jF0hEB%u^5m!kCq$mopFaunQaoK#IXy*lsy{=-+gLhzqnv zI7mUlZKQbI%SB!p^UpQ|vvdO%V1cKdIh9T#@+L=(E_Hux+#9+(E5dOYP1P&q#p4o? z_oH^@Tdk{#**oL(xW(q_)$d@(yb=AHj7chsXwrf^pxZ?r=G#6#omWh?zOWg{zN5AW zphmb!7M9_0SvpZP{zP0>|HlW7i~OFU#h9+#WY38<+UxFnF_Lt zhb6vG+CXMnJKtQp7MQ0c{02!>c=Dcf!$~zX$0&(uer7=7#OdqO zG1^jvN!{@3@OPH zg`wf>FGsO>2enE2uba;cPUBTuY81$?tHH4FNDfbSUJ!hN2(+xVxqE~g&H$cAXLKeKcaeVm}B%O+te2CCUoq)N0PZ!UaH;2mPRy z^LCX7&+Bkp*iKSc1$7q7wVxt}Lm9qD8a?iFa*7Docb;DamJn}n<5)M*I-)(lkRaxp zE{=j%u}%mKokG-kh_b6=FVOoQ9DooJzw*t4 z+}{TLdKxvYu(US%R#1&jH;MLvbKMJ<#O)w^uGclkzYfoXeF(uL28e_Qm@Y!yBy2Z#20mhN-o7v? zw7?&P83y{@_dU`G@vxu;=O#KIcINvw*dE8W&4tj~A4-cQw06{a&-$ocsH-~%kI-)AbdtICcVRA2XONFi8Zw0Xu zHF25}?H}V4t9M%v)rXxOLwxvE{Zn06;w%+qfAk`yT%3jTd_MGuQT=4US9MC*cV-&-rW zcg{1n6I#K0xfJV=J~5qBV1J{Y#|B>x!%;#!%IKCWt?F!v%en&S z6nuZH_RN*X9|VmWkEX<_LJta&tvT&v^ucs9#T0`n!I5)~B2zBw1uGbAye}+5&jF0S z8Pm95^3=tF%pH{1*@H6M;3^u-ljTC_Uo91R#aHE~Vjg%5G_>CJr_{^K((do9_>C7L z5np@-b1j93GB*0~Y$7%oanxdXJ4Z1}J)sjx>98D8e39J!_i|O~mGX08*z^i(vIo<3 zTms`RZ!>;b3BRLCRq_UdTG?BfI}J8kW{&4a$BK?XmP6QolpvCc(MCRrq|8Am&WA|@ zzeVl(qGXtOd6o#hqo>9BxzmaOvY>rH`fGmHUfL?VIxC{z{eagb zjK;T&aPYc*-##5Yc$rZl2eWt{q{PmSLZF;st8{O))O7Uy97K3A`9^v{#$4*6Eoue} zUh}W?nlBpU6;?z0n)lF8^w3XJNC;B02_CLPj*jp$xhi_DE?6Gxn#Yg zMxM>G*W(h2n8##$fH7!&;WLLJ1zi&YN4Be;)br3Mv@nSQd;TiOCHhG&n^#6Z*hNMs z!_T0Hw-7TUCi{|}JBR0C8nvi@_MvfSZ08o)bepg2)8B77Km@%^{1OJJ9W~YGJVRRR zFdxB>2pT+{VMRJc#@qH~?AzO(?ND5G-wxE-Oj510yHhG66I}(>@>M@r&W-gbKaJ-A zQ+E=z-^pqM6@Y((ye5MfJ`YCNX*w0N3-7>JI?H1GeadpFy&S-0#cgK*K~Cy=IDWc^ z%EGXViRGx}h|vZrakuyY^nXBt>Dlc*z_l_$&p>{f(C^l6n!m>nV$CyO9Si zAW9chx5A=T8UA{KK0{Y8I-;6xjGXAS8X8rW6LRwkFO1;# z`Kn!2la!bAcsnvX;aNpz=1=dx zfMZlLp~{RVK8X*tO6)psq@8a^lp<{2@XCFE*X+K7vHLdtR@NRSJ=VNqTl@fadrLu2-r(6 z)pTbx^D)z0hrt~Fcp_+qM9B{dr&>w|$3VB1qG6A}zCiF1qJ85|{;m~2)yXQ}udQeq z&r$N2`|F8zhVk$>T{>SPMcp}Nmxz;pNaGYUX&A4&w}|~w*ISHeGYLZyjrjjf5BWbu z6RFa&6IBNe8`8r63t{E|>?oMT5DYA*fJ+}mUTKCksFL4Jj+vl)n;-#z3({uT%uQjE z%fI!nLI0{xRB#v9A<5EVH-R){!h5P$nk|(*gfW!{q##VjLC*gMrNI|A^Xg&6_;XtD z^#oC+v?22FAnw0KknyC-0?r3#v77&Zlqyl~Q+j$jOat85TRSSZBrz`w+Ie_W&22lv ztTdvwU?dMLXE$lDp}z`$=0`xdcn0xZxXjipJpyLL71_c8Q}j1dL+e!HqR4OOXCLNJ zN84nkRawN_^F>6g(n5ZQ{%9^-5c56$CQD6fbQD&^W?t1R*TNIZGFPlpLYeSaYIpcV z17U8FwVty%N$^fXO)Y5k;KEQfm#}Zes^z{Hz-?$GDk{2Jt(3}T8Gj?9$!+3{q}l9E zXzsK4>Oo)+unV*oN$CzIG9Yo*7suT{x+}2V*jHz$C4k_^hFgG4(^r%qW5T4F%psnw zLe|;5dI3c^X-W|zOs)LKkrnYj%8ZT zoRi$JuT#6%l6Ol=!`n00+`G`ti0mGUOk^kA@&g?TnKKjr96)U4(lN z&Ap8VsfynL?|cubBTe#Ei6aQz;Pue+6PVIXz6L_{u*mcF$oxiNGg2K9nq=lvpq%m> z>?NX~)LO`4x=YwI(P8(_IIv2MJX~9grnk2>@X9j?B(}4|N?DACa@vYnRg9l(QMH4= z#hTat*(Hm}Yrb(v%f+*hsz5rV!6+K`sGI`FF`Dn;{x+_YdWm`i`|`~LcU7xX1ohjq zDe+v9$a&F5V39O(Q7nv&P-gH6Luv{)PwnZ)cQEn&gJrEG*E-bV``G$&+=@kQmpSzG zv9@|QkNEj%{mZ|!8G^<7?%8Wd4Y;3VoPpw{)+10;m>)ycuXRLE^dZJ3pF)i|Q7})3?j#>X(Sz{#o7b8?2d80IUimPiQsE{=&5c5XOJ=!1rw( zoVEEqPPOMz*vuar#+DmLTY?eZ)-k&tEND!aDgAm&1Gibp>;@bDwyY0ofav4z-lP7geK|rcuc1&%Q)cQ7D6F=p~nS z6j7XXs((9tam+PG({}MaJ-e63FtaMY^`9DN;99JV!vJCb5g`v_W&4H65->I=n{z;6@NNWqMgpJ+&& zBS?Y$^F39gS^Z+wt30G1j0e7m?__@M=Gu5xd*E z_dv&Om)7qfItZi4)i8zNj55DySrCxK{Kh?#Vle$a|G(! zF~N{#_zcb#TdjAQjnmF2_+qN;cMJ5$iKE8F8_C@Vx2{Kd;Dh;wsuuBBi~OX;o&7`|xW(YMe(P@n&mQm&_V9`n2O;)$fc1!&76B zozAD%(BU~4k-fDtjw-_*m~Tl+yGIhy4{cl*xFhohDvWuc=#Ytzl-wdlPk-ND08Ky0 zeMu6YeEpeQE02|FhB%<0hSBZOjz>FI|pf@{Wyw?4eZWHX;cw==;+Z~Ih5 z(F62*1`L*dI*B~dqL#FfZ>TNAoIH5$iktlfUY&fY4uJR7!dSG%)Zn0Zv-CG8(7xJ> zh}nVC=YaN%jtCUW0`(^1-F99@y-xWA+$>_u*yAh;MX6EIC(Z?G?KBB*m1; z`3`IoGg^?~=V+xu5YF>`Q?F>lqVr=Fnq9@8vx!tW@8$>I|GL^oSqg$xpSxE`eeiW^ zSZiB`*|@jJ(6@jw@Ly`#1N38&|BRw>0}dXTx@FX*(Ovz}_GzHP#iSO3_7@|q_2vJd ze;^a>8Pz}05fDxZDtP1|@h>Qk(22BrHoXOOG+j)qX(CGXa@0aYuS3&}>7Xe9#T zvis%wZ|9bm6XZAPGW|X=0{N00>EW(`iKr@teh)8~5iLxw2JBtA5p8hD3C&lxef)$mgOkLHho(-$jPsqYPT*<^hUMfUaPEj_x6$jCDDd;NEYFH zeph*iD^0f&J0mWynlv)PS9+ogONgSnEWODC>r^9hLz4qw9Kj1p_RffpKh(`=+kHpN zn7PdF3Vd8FcLp2W5aeBndE@QTd2*>f?dV*73dUQJ2}w?5rQ0`IB;Q&FWj52_NvraP z_Yo?dj>7PsAL#HdWGe6q@|^7n&GlAKM&J=1>KvWx`-Vf6GnpD{wR)4nFlF-d*FK|! z#5+5qYiRnpy{+_BVoc-xgSXLJODbN+y^`DaR?uiz^_7aMq7=n$YkUpHrS=qsZZx>u zhd!kaJRDSFy#(HCTrQ+((|p?BS>71TWIwp2%ae*3#&bkWfn9-32$0frmO(z=_^ZLZ z_hraCoevaM7FCE8o8=1F*w}dF&jdGnw3zHj^pZ^o*oY*7+0j5bF=<9Q7Tcv%NS}Hl zFh^4O1@P97(ZZd7V_B{T$4EdL&k24d-`V$-InujmoB8t~ zGdoOI1uKr!NQjCwZ@pmwUz0=9eD!xBG2~T2j?VoUG>(4~l-v|242tFrG$_R7QO>X~ z6ld}VE7WzO%RVy({cb}qjN_B$WIt{w4gE*vv7A*@wJp zV~_=-daoEOz4c6UE`+x?rqbvsz(MHFN28xrNV+^91(P~I9a>UFyS*6d!w%)uj-PW_ z1g9@|tX%Kzo(9ZCHf=4(s`EtFcxs>_VT6epF(B!b)US5{gm49W%rIjY7E$Nf%y}sw zjqnEi1GWt%yx~UcT#FFBYEZ$dB&L3gG0qa?-8j# zxw^9HW$r-ooLWu8@!^tt=h0>IFB_}nNlW6Z?dH|$sHLpLcpYewA?1N=}t9HcQ54JBVm3;23ed90m|fX8EZ`J{N2e>X%O9@dsSa$*S={~zot@wpM9sCn zq!WkB)#zEX#e!3BMC=<7wuYKE$_bgQEwM@x&cFB5E^?S{p|w<#MZ$7-;d%mHk>KEq zKfyJPTPxDL!O}4{-AP$8kg69SJp(7WF01_~{6fgyW*M8gJcCe2(j9f^)JBjY>nk^Z zH*eDOW_DDW+`(fw`I<@%FzaaA^16&E4J+^m=H6vfr7QbR{ zb-kLDx9&y!Zdji8(BSsz=P<>O`+Gdse}JE0y9~cDCSI0RuFKZxK*U~2pe`&d(^rbL z2W~H$ke&Jqsnz%D6ZftDKx>R z1Z??tYQxAvfec>_b{?|Sjg2oX`8K_gCfjEzDD0BulahM+@=o`A(TP~Hwd%}%4%P%o zeh!v)%{=9*yyUKjUkvmEJ`I&39iE)^kN`fZAn7XLtay25T{OK#Nw6qgXy10(SM)z>eXZOcI3N(WAhUX;42n|N14D4~xOo8F}|6MqZ z=C)p-q@h8;#l>xQJt2I4d5O!&z|_#tC{|-+iB_PM`0@p|y}jMxVnaA6Bn0^B6XHY~ z?@)lvTOo#W~;ADm%yUXEso3&t=ECslP|FC?^ z+6di<*=X{U>p6)Or7D3sUgSULij~*Y zW!<~|Vb_u)xchjF;4DJhZx(dcvikCv``yi5Q#e^hDSdDRouA<3U)v*FOe8Mnq2dxL zM;H#?O|&~&PU{DcC*E!ty*0a%Y-I4X{%%OjD<$(*wEiDz(9Q1Lx83-md8>{&X39aA zMXL#KD>A=ja~ESR>O2PSNL)YuSHA*+7cRLl88SiX;awA$H{IKJuX~kXM@Lt=zYP8)*q8d zGox}~%w+4^HiXkO;_|p4yRy{s zejSB3F2b5-jDcMi{j&Q)tpB!$utDO5boobjB5R4q z+|+w^z7!bsSZJ4-(U~N!%cay9yYn`)SI=oXp97=QMJ3!^=&<%sz^ky|&U)<^ z_O0{t=yIm4!R%lkj=tj!7I|N65ZFDPcz6i~ zN$x?+iXVK@+{-toMn--`)^R#HJ7XS@C1FC{9VH+Ub=C=ga|&4BO|vp@<0LceSG9cXK$zk8R7pB1A++ z9YKdLW~*&?{B-}`6xd^Lzc6HAfC;L|K8Y3wUKp>neT;RZBiZiA+Uk7)A-PSW4EYl< z6cp;L2)}>KneJT0L${lLZ$?~;tg(Ky>wg{`bhHsNwaPU=+hon!e}j+b#lTM;{edLin}|HDEYc*Mc;%1vyl%rw0*HPH>|9@VQeq`ubJ?3Ca>| zu;oamzP}+Ecc9*nRaanwm4Ldn1xgSc5Zh-XW|N@*;%(yrXR52Fdf`f&$g@~<^KPnx z4OzRHxEI+KeIWS8J#1Rah#$9evchLtuov+yW71y|VD6-0@a!gpJT*96a|(B~O>g%q4YVuEq=hK-xg6l8V9T6y1o$n20vK zH~F7&YIy)L7!lFI(e=}+PjhQa9;Ikiz^c!AYi_UjaK=}!2;gwW?)Uho;bGr7MgkfY zCqFPLUJXLsew2**FT9Wl>YeGMdVzNuWKmBlYw7!;CB)6N&~kc*`FSPCa%F!V9=4^$QLu`l?Ryri!VehZ z=0>mck3J9(I33NjYkOsKi2`eecdpeE`2Km$w2N>9;g0x&*RIKyc~Jz+iJJEaw=99W zcePjSuBL3u``h7h%JjpN@4T7{#k&6>Jfscj!BE_u%BQKn`wc{y_!3az! zZ>&gHPFre+G26Qi=%aEH&nujmn3OMgmWge?vs_DoV^j4Y&;FhS^vqS_k4`TyK~K3r&xX(ghJ@4s-{}Je8$`i89e}9cv?akm zXC{YccJ^}TrF@upB4M=o=g#qw_969g33)3~2_EURnm6-=DWm@}mW{0}7qeg87!L0776fmAjn%E#t^15xH2@ z^yN;LD9Z1F@=CT<7@1pIHydtZHHc)!pf(#{@{WV;U{$jH)d*uooyM@gUXl29)X3(! z`lB?nQ1?I@S0%$>lgq$TQ_Sz?-%rIX9xVkak>RZ@5GxBBZf2SiQknes*w&fM>|<(e&{zt3^G(vsbP8!ZTCZTQ=d9^J4)$6(P83rH5CAy zyqTr(yQ1$qWfYS$Y>>Nlwid#+ffH4V$2t zR8O?Z`PAI+)9Oy1{2FXF1ZlY4tuPw@=8M_)z!J@R{QxDJjioBUm1{UFYs43WE1icE zOo?@R8Wr;WCMJ2?pOF^ImHKJyc!+gz8>pw5+h;3_8^X{?G7?1e|L4WEy zNTMiWnJ%_OH$5Qe9m}|AJ0Llf>Q_1xpze)wRDK@IjRTN!?+o!Pk(zHXb^qvMmVd4% zIl_5b80WM6ug^4GF#!Q_nwk!+mHS+CxIY7pz2V8w3A2CMIXbOUzq#T(z+-q z4!F8k2G}nNNd_XlyxA#n8in(@)ImSgZSH_vu1S@ojw<7>tkZM2&e3^&jB=i{^)I$h@^*lX4>3jUEH|B zp^_#8D>PA-v=WM9l%$KZ#v_k9x?}?3uwWV1uj=q0dDjO|MVy=*ahs%3q*C~`wM9{; zTwT4hpHCF_f8|rF6W>NopiuJu8!hmGowJ(5k+-5-t=o+1DYCx;N)IUE)SpS34nABt zR@w;ngh#U(is7xm=$C%(@AT=Ee92TSW5*RWM8@rU!>w|t5=V)1*fHO~d2uD1Wm)JO zCHXe(DsH{CgvgRIi2D@kWZ6F{+7q0*sWfyWT>dRFSc@RSoY6mhK`?}Nr&Gec_uxL)3J zSMdJPoBkWo8_QW}*THinXjjS5zxr*&?peHPHR{0O4DE61z&+Snp^CepE7(Eau}Z&L zYG;EHSH_tx{FF|sQ}Gn(+ls5j9NHWg39r(}Tc#P*6*ZXOZ;t3w;5|A{O=+QaEeNxc z$oFO7S#p{H1}4+;%;)?*-lFd63Je996D%HT|2g<_lzHLN?Ah)E2h*V|m8sd$r!K;~ zGL@BcMWCHSM*}6ISo|H*kIs!*t$=jkH$-Fg^M|l}#SrN@25RvdTh-j2u~oU-Ji#jp z-D)19oo<-))vO>h=5|W;4>(5d!8|V_{h%8@XfEQkeN&OKthZ9wuHur{XJn)j00czGKzcA4KWIOr#H4-3qT^VOV59;KyuWxhm!e?Q-={^9 zf?N~^!14qR&qC~cd(bF1c+vq!0B*X{C44RR=#{D14`=pR1Tft;k!oWK47Y|YiYwpQ zS{~bTH7|M0%~fBH3;CQ(0uCoVDLlD1hmAD%`xdak#E!js{^zLPQYCx|`Lk(#j|FU= zT|nn%SdqI?^$n+yZH>h$wXJU(`=pXskYW1hwl`lH*o2bXm|2iNWT=Mqew34r`mGy= zRbwz3M}5zJu|ozIWm^$jv@Y*%c#wuYp!fns;}qfp(M0XH757fosySnT^^o~j0rH0h zb|q;{llMU|V^{yID&cE$cdgi%?W@C{^re&zG=CkaTfKrl81j1e zDc7SQpO<;;VR@Y&d#=IOdAR0BttXcuXfZ?38-KxzW1NqsFa*@&XCd#oc`j~ z_odR#!-~BcS)H|h$!y{G#&~*P+l(8EXg@>BPEstFIgMF!rdmu#Z$G!dRmEriJkwkb z(4T6^#a|=mjGBMfBfA%4$fE}aI_@IVHw9EKfh}J2h|W8}=9i?iMO~8% zxnHM@IWK*fU$c!bM^|#FX3$<*r3AIxFHTQIrdQeC@fzjt9#2LifD*||U~@BeOq8Tq zTD&hD2?p%@idlR52R^#hkNS>5EPma{5dS+9&6b`aK&UqQjUuu1k7ZYCdZ4|omNNQ- zz~*SVX|8 zTyV91t>y#BAKHksqTYiix==SwU)MMRAy!zf)H@H=)21~8oHjz0ivlFDQ83#xV#LyGbff8MrWNX|8eiP1) zWK{Q8D-FcR>)?n+=s(l%g#-4+3;LZPn#POCU}A2o#9&Tfb6Z;EbS?88yEpws#RNAA zB8Q_c7nl2N^9#GlgmB*$Py5~7a;tR;Inm?|G*4(b`9tjLRi2!J%&%!WP5d31{|6gp zavT=2JrgeRj8KOryPLk?gW{aSF|;xDYL$^NNAe_T=~jWV>AKnKAH-?hf0Y))a1ikp zqg@X#tXCK4js$#djiL z#QW&<;6AJX*FpLT}Z{Y?`GXDd3?8<}(; z=G~%zFY>J~HX#{&0eP^jOFkR#F4r{Be=f(s7ke5sLzvd4$hO42Kb`nIyxy@5SRefy zt*Ke7e4e{`h0mewKS~W{+>6_FAW`?dP`%vfu*^oAS9ArqO$L;Zbm&TFLjs1gv+z zk41yP>GJ`=l%SXoiir|gPtUjR1vT-P$M1@msi!u`C)n@xSTU7N*T{>{$h?RU!sP7L z{Mh%I?g&eOX{7KN-~r=!d+! zSug-=sPKQnzvNTg zSbTHH|Ae+W;n!4#U-wQH@89p|A=rT0DMEbx0IQo}gMDqfu}KbCX=cHOOSL*bfA+_k zubA$v=j#NEnoqa~El_DN1%!qH&~?ScbzMnq=m2yl4rn1U;E=1CZ}(iNeWmM1DGQ6( zPZuZCc@zZXn0VKcVQ#Fe@JzO?Wq<`bBPW9@xo*-9*Dw zZsdO$5@X2>!5Q%Xp1e8FYY1W3#r^xBhcs|0J}=c}5x);2%soNf8JI%$y&HE$Xt3&5 zN^s=`pNRJj%wHHN$V$(i$7y!5kYv&t+%=|=Vqih^W@`75P2n`}96VshN0_%FdvaGw z#z^kfG*0gyDG6U#k@!Qaa{RI!`qXY+yq?G(wK9&NzqmtN5a*gY);*IV3f%(9j=2RxX=?i^xvpw;x`JyysvF}JMT#j z0r#ors!+&G45$4xZog8P0cmo7^!tW}T*58+E|E>5morP8Q!w{nUEUZD%q!rjWUap1 zD`O2HKMISRh zR!hGdicC$8$@_FLP@fr3q#)3Avmq$Zj}%!=^)>LXGTw9DCsf`KP6{OWR<+3}fUMi} z-2(6(jt2R-#A>_up^!gOcUH{7cHHf`+0hKvoCF-YGQDdE)9-JP$T(EP^}csZ85t2k z2hQu_E^*i&X@qzmaf6w6{x*7XQ#U8hGWsBjruBLwX6cx$em!0eJ3P=Ec+*b12}weFVEc5$ z#A3Au{c8~p-c@y3Z4}|J= zv}w8}-DO+E-7bX-dK?we^zBHw2zp9jfk z0fM4d=nehgC!^WHmF+iqjy9Q4XoiE$Ssd~!ndBWGl#%An?fNz}pi!BxC15g|HMz}k zNQKCq-Vz{O`@{O-zSlKzXVopE)k%jjQ!W@zBfgUA?A$hJ0b53H=Np$5Y529dQjTR? z^irw=G4uMz9jij5zEDZSlR;M`_KL&gi1YVM(&;><&sYO*p|=@r+yBDzEH-K}D|H28 z!iuGvU8xaazvK+db|EV%v3?*V6l2^A)~rx>^ei~AAS3;)FR{qSBbE0z*4k#@yuX-+ z=X!$Mju^9n;9St?xGjkhjyD2pyS3*%dm@RCE({>`+ZB1NHtOJW1+2}|`D_-Y{`9@4 zPvB5@;Gi`kHk(_|2;Lo6#}KmK&oDh}{>^va!gRh7(HNaI30(`B5oT|TXapsr_+r{u z2_z?-96>M3T#O}U8EX#fq{6f2oeh8i5s%GxnJ7QYN&+XfCdcGz zV0Fj)r6CJ-{Oz1{-e9SQ9IY?b6g@GVmj1yPjS)mnu4iN!B&BY~lgP*o2Up%^C^ecC zNk2R#aotFec3$?2GoyIBN7{uC4^2ha?Yi9J8&#kByI_+)J=sL3lqHpC#%#R@QZ=}r z+d|~I+V8U|q@$Ou|y= zm+)l4uhPIh4y~0~yJ8ThsTQAUSZ_UtMn`+o%+cD&IQS8hG~2|Nm#poFg^@8L`yxTX zf4U1gg8?Xj)rWW$I7F(S6iBW$LMmelYZJgdaoH()y+!cFmIjvpyV{eHS57=ix_nwq>{L2AmOcp}8?UAgWf(M(<3Bfm-ul3B5#_ospp0Nnu0{745 ze3J9~PU+c`H>Y=69tZ!D3nq#k^s)A|4IvZn0ec6Z)BO4BB}Mj(`Ck`FG#$S8kUvEX z3{R6T+HO}e&wV*1gSS=o2|poe4EKHZvW~^>(u@h7A|{e4+8MGhassCK7$Uw0>!)xU zEk$vq<2d8-leIo|{RoZ#Na6iMzzwp8-hD854ccM7a+DT_UT}KcPXV8WTHQ{XUjI1Y z_vs4<4`kIJM9*@Oj)x`gjG1z~Aeuu5c*E~qKH*$j3hWqM?(eKUSdvKsnTvI+QgI`* zqKPP><2FKb+<4@ht1(0)ZKHS4O@(t{@9iz#_+)MS^aldbnnlB?Y-Gu24#f&7u_A_M z)mUu5EA-_{3z!eu`uF|uFl4@;U{ZHKeHqa7eW0$ZPq|+v;$ihCIXYTfSe%-wHh4~H zG#(u>(AU>*aXk9-0j*$$4gTi8WRbaWUkt~R!&LpWxJ+>1MdMy?kn_;1SLEuSLY?Q# zLeJl$rkDRd^VgW$s;rfLysZ$ay21@{7F~2JM0wfwjRZaV9)D3TzE@VbCVPYHVhN+< z>uqW3+6-^HaRdpb*o0-hp0U}LwTw*-c4)DJ3O4{hvpXx~(mEz^_E*h>=H%XAqIrG_ zoTt{@&zDcPn=-9T|vE8xl9iQF*f6l#c_vPG&GtOJBvBpAutEyJj{N|js?L=ZyIbGF7&ByAu zf~|1)E}}O-Eb^$dL2+4?J;a;+0@?DpXvds`lCPBJ#%ul!0E#bHMCZ6E2r5Sf`f&C9 zSv$@DyYa}Ew3-;bE1j_YwiMUar5Vyb5ID>~D2Z9Jm%OF1WR_AfQG@Chq&W0Muj3g0 zOe^Le8)fjgk$ zXbE1FwXOiWD{Rgy>?MR~O2a~xv-8z*9-~&Mg&xO0DR}-WJ+3tTv;j%h$K2^PVbg+w z&p2cf)PhU+)#^Ok*N74>zNgt*pDt~fl+d_j&PQ@WuH%s`ZC+>y+7j&aUzPaasd z_=A(Irv>dqrMSe9*EA>ZbtOrL;_T3^y~uqvk-dq^SIZja6ffR!Ou*`SYk|lH2*&mH ze4<)Zu@?qGmz(nD$4e#_x+qGt8HaB6L7;u6A7eTn*!4u`r@WXz!9_Ba{l>%bF?!4@Rsv7Fx5m_Lqb_43cH_AeaiPfHmuLcUQWvg27EuruX3e$ z@EtvkU5tzmmT<~s%f%b53kBr$=EnCwPYxw_s?r@vLpXA*@wc_c3!Xw zB(f6QT5E5{Ecbw6uCVbLbeanC< z{bAjKa^eqxEfxh3L+q+dEVBt2eMT#Y@?dhty%w4`CPoYzOrI#3k5y9NCInlL>z!BvaXUXV1&OCW z%{pR8kYEaZ)4)>tt5=c7K9SkYOprX}35DggQ`V5Cb;%7ur(ZyceaS@ksU~+EJfvaB zeyI39BVHzXFnpxYf&c9Tip9l4hLwNZ5pg!u|37d1zx`(apEoe}0MSn>bz4wCOp^W# zE*pl-EBgIFW1oLK6yk63P@-k$?*Hf` z?xXSK8}9!YB+VXIe>b?PsDjr+!@^R%0~oxEoq}zGzl8WG-xPuv4Fz9wlT_~hUC-5H zD;v15j*Qvw;AaV$hZFw6Jkv`|LE?*lHkL}PLYv>ffblKYM!$iv^C_Jg1FKjafC zl)NF_v&5U@R!h(Da@M%@7Kf2mr@eAkQK_arsCeTRWzoH0x%4oQaHTgn*zWJI@KwJ~ zBqs@H)Jm;@e}*uLl7!%4In2SBQ67>M2Ntd*HkgXTNM9tQneT!BPSdf3tX!fucsb%-m_UZ)w zr-D)%8YxW;y`@z0Z?>QcBXxw}c-^_a`8!R=;KW$CK8d-@2tjF>M%k+yk>p)~TAT5* z^3L8FxSLrf5^a5UHLiG!7(6xlD76G#2hWq#(V+qGq!VW<)t=1W_5s&TE+``RKUX~| zqc0p-kk_k0g^peBSVlaOqw}|1?>%1TDls|vDGUgTfT}@Os7U5~7kYM+2~QEGPS8~PEiGfDWLIvYVJL`f=JJ|mRu2)DhEP8FBT$LX=e2c|uK|?w zMJyk%!!Pj7S8z|EHje{D4J6)xQ?pyS>c&gQI)Cy=4#C%0X6AJy(tVT zshoEzmJH1qIG+ozVhDV>V802dn4HQr5QYG3SO*?$y@H)pTd~usM(bf*<^#44k3{3I zo-w=x%teTJvD+l>X{s43W8%y`&exhM2BBa+K0freMtgfj7HSN87HlkHxMOd+0zQQw z&sT#o+ug615A&9R?kk_VLo}LsN$fN1J+A$b{IS5^K*-~jI!eWC{*c4T%)LL!jN#$o zy;Zs`pcxe#=$(7pWk14oT~IM(g)F~3$;I$k)IdvH0h1%b}R#RX;ONK_?zrZ$qx~^+UnPKJ{c;JNq#O-U&Z1g{D1E7oD;>K<-C5DlYMsQrR=$b>XyEkdW(2SQf%Bh`kP( zdFf?RAgc$ymME{SIH)AnT(t(fyi04cz%36pPDUw|z5aLe8L4IRF&!eFjh`en2XpH6 zMS=U=!_$uE#oLRVk&~Fv;qGriViscNJ!GlxOXP{?;*?f{Gb~RJQPq_|ig#Sc-{omk zJH$DstBu!CQ{%1ibwaPUwn50nK! zEtlYSMJok -D&t=#fBB~17dTc~uSaP1=NE7P=ga1`mZp)Ux>a|! z$}JIdf|xN*^jy^^?AU$vmnW7IjSfHBE&})W&7fdmO)ow7`0~+<^t;AG+dk;@3gIO7 zeZNJt-fuL#yr(z~-$nmpURjelJTbLC=?{Ck*mpl9r26Y`alFxa7)T37D3kKs`@dnE z`92dgpXn;+Y?O=0%hBf`ReaE=5k-uSj$#bWa zS=}Gp^bGVPWA*)Yp$6&5$eA10xvwtb7XPcM-8ro4yNO`goDSoedyErZR-3eR1$?j+ zoSG~2>Wb!Zgn>Ur4BB+@P(aV->U3{#a>)u={6Hsobmxp( zGUF?3b}r9cy}C?~Ct~JYR(y7bY50*;)(yOA;myU1&GC9avR%ev!{dnA0vU)t0KQpM zRQf7M(z0c?EhaOhsBGbHn%3&tdCdC8kp9Eei<_v#@+@67T2aVI<`#hJuN_y#Pb`C0!c@_MjUxl(IfshGj}W-y7^ zwY3O>=INT+z=Qy^m;YZ-$&|)Fe*~iwS~CL-w>-8KxCim2KK$RTp#$<*Kb)P^Eo^9$ z+>q9G@V5>584|}9lxIKRWZhSs#EM^X&@^E@JO3Nqw#2Q>a(i;( zYuO@IjR|}zX@b_^L0r(KwVU1tmku%&20cjj?hzAtm{63j%+UHp;qLVGP$NQ65|t;I&YqJ@18mOXnAVbfP*w-4NaRm7G(+exZ>M z#P#w&&0Y_;R_qr*!X= zz2vo*`BIDuCw3lnV}9eF==m%9UJyk2DmN2T1)Tc=AnI64uGgPOz7E%cDQHSx0^&Ee z+GM|cWN6&}U7~6AqBDt)bvue;aNF#{@~6;zdH*Nug>g0)Xl>`bsgPUw1$KCFkYM5< z7j@Kp(ba3`C#EBIx^Kd+sO`8Ij=?i<(_R&k1*St`Zy=Z@z(ZTGm>vENB8BA~>L`my z-q2~xt%%a8JBlNaxzleZgoczJA`3?3xn6pcmwSe z#Rr)MN0E^Wt$aP0VCNblWKgQ(`t12U4^a8vQ{VzRw~%{k_#zCIQahJXl_cYN(bG~~ za3Qy2|`s+luJh%OCUH4*~r|nmii`*8&HN22KaHp2SQQORWfgYChkwT6hLhj?}2t zq`++}cJY473LC!tOnlNw%NrEa>l=K~PWB&Ge>ONzuUc<59^LL+nu6H_2VtX?GA)ti z*PD*~H=VGSsmsp}ZX>Z?@ZX0^NQ|1htBj9m!FgrB24^HakrQC6P}q+<;yWwe{l(}q z8~xlIG@K_CDVbnE*VJ?*RS3JGXu3;M_IqKcj_kkpPYrMOYQH^_PIwCsM(+?9Bw z%l`791v9gld7O)w?H1TErJAs&nlzT?HSAgZWb!S`;5{9<2n|X|x7cmP=Dfo!YQ6mA zg>&;QUavphHNhp~1o5J=svy4{ybi&q$xmIKLm^Qgsq@tIwK;)IEfdXed`{$VO(GP^ zbZn_e)|ZGJIk8ZE?}(0)t6%9uaE0xJ(QWF;W9o&+&wQMbZeX;-J$whefc^_OfU;?$ z+uO@2q+ z?|df+Bam|NpIc&nKxx?8iT%#X?_dbGzrr(#0=;T(opuj(6$^on+lCfsubTKzV%?Km z6Du4ZSH&FQjV_>yy3{vppB&g-*b1_#;iy-tx0aVq84S}A<^n|Vnl%Vcf7*gph>Iq% z<#BKQ6t@*lhmU8_saX<%#)cq9#uD^R1&7#j27-H8om(l880di8?tbwnrb*p$(9zkQ zJL~DbajTljHLIb{AQ>5_*#q>zi|pmC7}3-M+c)n5G=;h9od?QfylQjR%4$Z}Ga)bw zC1UB+*bC#e?!@@`A4^rb1Dn~N;RM*-uUEpi90=EXdS6m1m8ATX(1(Ylw(llewu?24 z{*=<43p$Z{I2>;0qpN7O2%{$rOPVhJWs*NTu&at2DWwE4sA*WX<_k0-StU9Sop+D0 z&;xsNZw6X_^W2QwC4^^t#M}I6b>_w<%}q4XE@6rW>IYx2dYf$PKJlSC9@oFFaL^*D z2@6IvHu_e+@xqJ|PK#_dQ2RcSjJyH=xG6VtGp{$Y&RSH1R2!l1)B%5oHhBHf?*=*& z**vnGbY4Rfa_|SG*PSf9ZuG$puz)lm9VrF-dt%IhfY??o!n7DKlk01->}z& ztIfx&zs?+5m<^#4pn!WJq2@O^&yNf($pDO?$r=dpLwwy73jlFw17X~*20@Rts^6_? z4L}O;==#l+?8CLnFXuEklFY8o-GzgdBhr;&z&|hUIT|+$Nbfur#KFyREU}=ce%zZr4^)E!iuXHf|w% zXzqzN?yVd|mFMNB2*L#OpP{FUp%3*Nl zLY{=0E+-R{eZb2avxSPQs2#gNbsJ1{v~9)CAs8+3$X?1&>78kX2s}=X_H&;lunoZ& zj6LCjZes{7g$V=Y`d1k%eM34BKXR^Vm};sH5J&kqZ9P?*JUgb>Hum*ozx0=Mm?YlR z!zsZ}gO_)D%4kk5#Ir|L%XiWtf?etSJ49=RNBl=*OcAN7LX8S!2+KcDXNlLIT+A{b zcV5&aR+rzHtc^6Y44TBGXjJx{TpRe0MqLpfq6{K;2$?%!K2Xpw7Io(OaMt0 z`P8Ej4;gY<*hdVh?F0w5eg2x5wdf%JBQ!|x0Q}g)6XXNraC*+~ShIGa$C*C+t~3QG z?VU`vnTwwu3uj*&&Aig5@s#;ul4F zc3aPWJ=vg#N8Ix^OOa@xND$f`0KG1=Vnj&1XsqLbqco_v$Tm1rX#Wq|;QFK0na$2k zz$0@nO>n0M*iaQPHb)JxM>hO(8}z&p{P^W>AhE2-nd8)5Aw}zbjq3#YF036o%LZkE z=M^`4FDxTJV={uw{#$A>#jE3Y3d?CWaHb$M_AQxNTTh=`N(PDZx4n&hNC5zMq`qg* zQm=VZd)LXP<429DrSMOb2)Uj9Z@4uk$EOP>rv8#yz;uLNZVG>0P13;jLp~F`ci?7@3O<{-*Kq;&pJ-_9s!@nCX3~K1e)rPl{WP@r>y~uW>Hu z&Y95{9pQX+K`cQf!3Zh-jjCA2=DI_@Q{k8>kcyvb{0izKV8(&Y$G=`;|LELxdqQrt zM{m&*9`$6-YelalORn%kz|DM4eODmFsIv}_0|=Qpe;*4`v>cr^bGa#mc%EC}K34MY zN*O*uSiCk?l(1CzcKgxhDj`S+b}mzWeN<@|41@e74W(65qMfW z3;87sxBZ_N#kBNoeA5$y6jN7Vk1YFRrh@E7DJ(zoQfwT*>2q;r78rscw;+VL_uae| zd?HT{)?xr{&PnmnBHnWVz2zz`*6W9`3TE5@1t_Q6Y9~n}-gJaA2zuRQ;nyh^TNHMm z5ql^$!NJsZ^DVBaKj(x??NV25AKfV61kjggL03FShAg%R?uF9S!SK3w?}RG_TkpSr z-7D1Wjkb#Qdpf0(-aLjgES0i}F%557KLIHB|iW*?~1K;#H$9Q3&bM zTkIn-zm5PScUV#fDh~#Y3cXl@#!sihf^EuO+OUfiW;_EkfFbiwK{_;c7fFE|ecO(!2$WTm zL8;cAxTvqr*>LFj_A4G(#~Tc2nMn(HIO^vmB3a+KCgUX#knQ|wOk`Rx+MM*$-#Ya? zM=xA-SYhHe;f>tp>X*OS`?z17S}O@qQ{#8FyVb9|`EEY!x!Z7jQf6H1%Pcv_{}ez^ z3zG`oI}Tj8#Mp^d4#1_GzcigDrhd6cf~}f7zetY~r^QZN;l?Y_*l8_~cNA+nm~jhk zvqE3vfdG7_B9PJ|hlbug9nbJ!k@NF4JA9Q`pY<)2DXKuBWdV4ewRXTVeyjHT{N~>={N^X;8Gud2LrZx1 z&{^TiJiragp7}nGB>-QJ>_DPOg*kw`QPoCCrFjhc?C;DHGXJH)eA=5TO5R2=)enaQ zZ@~vR-JNlaT;F?e1HEh2nBSidp;UsBodEt<&HhJ_Y8yWW@S!-kvNNmIz>c02&eM99 zf)b-zL)q!a`>XBQ@zzmX*r|Hc)`*6oJvxZ+4(x&;47WF<^s|C-p$MoV)#yBMsxX$u zKgWAFzOtjDXDUO4-oxa_+#j3CA#aDO_(s=5{AVahziJCS-Rs9=+yEjOGXy8<3~}_%x3w*@v_gtzLZiDPJS?(AS^F6b)@EgR1!f;;iX)Sg{VrovZr~S{Kdk-8mh+#vzZm3{Y!1E2vq&^^OIQJ(Sda zFHY|Eb#VF;Y{XkA@fHqity+>eb4H>yMQe7tWJOee1F}IS+PjSZtQntp}XXm z^6QPOTRb=)F%{P_UQKcFd%Z ze&JYtlu=};+qAmM8**VATc{nEmNVCn%o46_kI+mM+Ectfn1LUPXwcAFX&xns&yy1p zL8FN~6OfGoL- z?d{mZEPHqT2NX;!!?m~u!%BV(YjUA^J@%sNRvbR0tEx#Fv9kIDS6I)I`mB1i6gxX> zF>bh3YJfU8?Wnf{@rsx6QO~;<+P4Ol+HqS~xJ-e(qeYw@&2UpD7Qu}OL5KEhkWr*V z0Ja$uUQqKV1vUSRjyMzLtu?}$%xbjAc0>Gr7A%60!yQ0hBEr7ZO;opl@E%_{1Q&|D5e8cvHbfjPgE0PAJPmza4j|#T1rQClo54l<@c3y^wyLy- ziF-iS$)PSoaj&TOp|+}({N8N&3#~RiFBl;2WITTU*vwFU%is4P#~yR3cJk_zx>_Y& zwysXU^0#y-DWr%hbk>=HAl4-ml!JFpkg=A%P5VpcNpRi#F7SHzWsg0GBH9Z2)hOEk zkdeXvm%q?g?<7<)iC+g+_vx^fpCCG_uqAq0q`K9}_v}LDKBkL}{SphjNBt=EezknY zi&kJ8Y(9-{ppa071x4T*9-8y>9JDJU9iMsDe}|Ioz{0^+0q%-qpC+#pFh#!^z&D4xn1wb7UMCEE+A`rs} z2dZdHqz9S;s>PiD!fvo?No5PO8ST<174zV(*V7E9-I(}GkX0iR% z;q<5cBamY7zZCx18;S>Z(5RaEsSnyi!!Z5{XC^D$aAAU2Mn~l_7*?pmy^@=?mW&6n z#X(Ozllz-IaQC7m41uiy+>r_Ocw6yIikdgI20S}UQqcg$@GUjy$lHfPGdG0#%-+ae z&(D^6HzzAGPWFTE+6p6DECi*!pQzQ_$H|Izi$!c6?t`Fx>3W~!G9C)r=y{Dwkf;0h z3?*049jfaEl>t2`H51YUK=bo4dH~VLt{Ea%9bDh6cjC8U!DnO~@|jm!r2J(t^|f;% zg|3y}woKitw&%lp*1BQ)E}`e_;-~>r|FB^8Ur4HDC#zDCj&lMW>tF7@(j}3#c`=-g z&(Ftn9o2yRz6|Pv>Brl=-BiyTBApiNzKf1$?}6O6bPPI{^bfAxv1Ym@;$aL---erc zW{(MLh*q?^;H)Jt>+w!0jiFoTb(CzT(2h3U06~tuJ`id5pA&Be4}49s5AuzDSo9mF z_w4O9Nw@MFmn0e>A4tgiMpu6uBY zA{OmxV%OiICX<%IST0hviy7p}7X?O!a}cx7R$A?G?3o|!i&Eg6f{#Cf99X_qmcgkOIUA2hg)T%qnG9mM zI7lg25GIUG^h)0iORL~EWF*R@@nXv-s zoh`;$Q9|FhuOWCrM%cWpY+OR)Wd4hyCCc4DFC{W&qjX#~f~I4!@nhGa!?zbcZHRR4 zsBju{e(WtTX{^694j_jh5@-XN!=OQIAVdGYBH5(Yz01uG!YOR}Z=ktpK={d~A#3>d zVBD_i)XyCZTqRJlpbWIOzd#KOCriBcwV%WOXe-n6t96zJd3C>v&?cTt-{>igN&8z~ zEOx1|Zeo1Z!9D9w8E&)y{m(-v9GgcQbZnBP6ucp(JMViicJu=rKmz_8X1x@36=`-t8v%-uGU$#?BQyR0URkJdM^w zKWxf+yD_a=J>>$+2A+pwOT2kaH3{_Z>EL>0nh|0)aFoY_ zh9*UOa6uuxeDw;lvS86%!R%nhh!#1at%B(!;FS@_svI|9_5rqY4qNLLRcNIKb;0=K z*Q3_!k^eWI*@QmJt)*LK7Vs(x(ucR_UGoH~m>2Zfm1aL$@5iXc5j1l5<5KJC^@Z7C z-zLJbt0&tLQkM{$bViuqTWL)1TjESEJ}&;_x|uHlgex*JMr?@Y+slXjV?d|U7t z{2PPZ6_CQz;tL9cZKB!JW3(N6PFUzwZJKnZ))&x3QxdPFs&dD)=`qC>r|2UiTfOD_ zT$q_g!$7&VWv<_##2CnbL9F|up|ljuxs8*4iNGQ@#gS90f*f70^^JFI(lCDL%oG1H zYydG&8A=2DU|_824M&K<{~K__x7?%GPeJs~i}e6bSi2eAMmT^Vq67sq#zorkZfevO zS=yWhZLMD5%?+Qrx~iT%zt8 zIGyt5A0*r46$?K&K}WQP&}5J#Rn z_{;mlhr+&&^;XT4%NjRyITXtDqMkDCK?4Z}J#gdMNqYaJ<`p=AH(@B#FMNW+OwWVj zU1wdOl@+UR`Zaj*8@d)+&jAQh)YHSd!~y@blN}ta8-DoFqn{g23j(9Zk%=>k4Wz$~ zIMTUpL)=vsPlQ7!4CuEatA80{=b`e${=m#FMf>W8xAn2&m$Xx<{x`3iNCKfH9A&h_h>HY;|J8 zR~u`}bif<38u}obINym7U*&h*Ib>mLelq0y6ajZaqbo(b4$+m2m)gyw`oVW0`H#K!r#Cn^j20E zVcRZle$(CZt%u`BKuYNfLclO zIal%>#7R86Zee?53-(S=0O(QWWfYD#{JpD%$I&xyl`}tqv&A9gl=pwN-V+U0E6Mv+ zPbsEe3mrM-&!Rd_3nQ$g?_Ql=*oX8xqe%#}xdT~02)d@req*IVTO!tXgw>%Ioapo; zy$+w2?U7(DWY8Qh%ISmJ`jTp+!WjP4Km ze&9-mWN>zmK?pA!62L$42dVuTFZp07QM8^jY$BNEjFqSYp$r|Tbf|dARLyLb-DV>R zX8x-?&$(-qj8@^CX!eTFBHx8E;Wtfj}JrEAHqFE<0PtY8tiWck%_Jl&Y| zzul6*L3XlGJeLF<=((sM_%(Ps)$@m@$6R}_Oli1?t+z1DK-@rOAP9_RGzieb#KHx9 z{T|sH0__zqI~cz8L~3FR>r5Q+oNgjw5&c8DP>Q-*JC#awt*yf|G<@sS6goaq(lRY0 zvLk^U$RUhNPR@ddPcPZIKw2;EG23bb*X+<8B)Xx@XCQIbv>(+okcp@3qDj4Pl4b)V zwjR1y6XOw2a2`=2(1CG-xzjBc=IzX{8<$v`kI8a2zj^Dy5Q>62_zYZEUV7^NEvAHp zW!?IAPej!BTh|xCH)3HYK-fKQARuVnUw_c<#8thiZ*vCjHo%%)MPT5aHCWr4tjvnL zN>@z`DhfByswECHYDL9ZdtFdb~8V9BiHRejq%Z)Yl4+Fs}?w?DxRH($y@t)^T%1j9(^KaCmohx@d zT0#znPOvCs*k^b>aOV3(K;7#4|-NQ<1R*JhnNz{%g5x`jB+23 zi2PD+0Vu;`N7}F#jZDqF9_+YI3!CY#m73=PHsb?jC?8AV6sIt{( z9wl7r^=$*^S5MIx@~~NLpoaDfmHNg!ppn-KJ6b$Y{|`k8FnlLy!B!tI(|U*el7*(? z?msuGT!ehQ_A`_IB_UNwWTOh3W-?0JTn5r_771uvih|j*i_1gWw2Ok?MMorH%=9tm zs^K>gw=l}`>xc6}KXq%o(8& zvuC#EXj9d?+u+Rr>XxJ7@Z?@H7 zg+-sYDH;@Lm(aOKwe`u$hLo*PK1&fIEgo4CwG|h5dQaWpL&w>WKacf|?+jGK*T;a` z=Z~*JQ{`e;lJC9D_UOt6Z9&6A1iQVz_2lvKVo96-iYR>!mugPuzC9dP(_hN!6tphm z<4xd(ybj(zB=-L@_%=b;e^hnc%*#Lx@ZtK8;I|0-&rk_rIdU*Xt&HAH;KiSQTi&)` z=i@YVZpjF*aYjUEV3WnLBROA>)wCvejQmut-^(Ny7h0*V6m} z*nRompZ3b(gDKeb=}H^RrlXRwz1yUU2MJoYU6X4Tv5O1$f3TAQ?r0F|#~l=!_rX6} z51$y0M$lK@rxlTiv_4+`Ag%x79{4-v8RuWGNzg&aF=*x9{j(GXO~qysYt6QVVQb>+ zmj|kl72j_J*P`D6_J*S_+FG|@BhiG0o2%t&Y&Q)7pme`gOZfT32F5^)H94 zH*&@|AirFJ^Q#6!PWCf_fsfM{0`ADtZh4Kw=vS*_C8+BN_Ss{h(c4J#p&fHE77b{X zc}XLm;!-kHdxJ{omA@cKbrBFfh@t#oRroaJjV*0Vk&&_$>fwdu;Z?m}k z9Bw~~TawvA$9G=AT}HYZzy3(bUn~Ye~JT#$s`z=#Oc1S5aZ2KxxfwID56?L%5aqXD$w|rC z!@*I#TP{u3Be4Drp-O8oBeBoVQo~}eoG8efAPA>RcZ;@jq6s8 za)>@hIxoLvG)*(V`;W4N`bQiv`$?FNC$?~B_(gb`-c}Xtn>X zYQDw7AgyO+O}iGq)Z_A`f1#!tqy&`7KV$YBmE?7QgUV>O)--)8o2u(|L)L&gL@z_w zKG6ZSVEo6RNrXI+u*Xi|0WOwEKDJAgrY5b!lux71e1#luJ*-L}-ARRuu_F{zc~6bF>A zE#^(17@%o1Q5`60J&j`M*GOw@Xtb+XIZE&~a*Md$J%Kwxe8Oy2MQngTd@cm2&h!30 zPyx;+r!Md6?zGR{GE9ux(#H*<-&(&2mL0>1ecSY^nz&<9Q~)T2?ir;*Xk|0`n(I9$ z5d8{4v}u83!srk!nG75K4&mw{Z8F^d4)k99S_;xzYYV~kVUkEr*YF!}MJd!Of)6J1 zct|}e=@Bq$`o)cqW`>&ve1xNzk_>^=5+m6p2NYu0g=*Kiz8EY_gyF=4P9$^+Ar49G zrKwIxsq@&OMS}}LOEuuT`-@<0tILyzf%w99Fev^l2v5njAP4(?5b`x#7&IBXJ|r*M zEJsLn;f+G7lo89S+L#qaHxrZ9Grrmy9$ZttIUx+Tkoiik5GDOC8ER5%#jXbDV$FsV zX>->0jw)QbYR~rEkrTN7gO#j!NH;MRGE#7ZhyGa=RfFQtBE0M~k#qs`M^j%-VxgO! zmNYJXEKWK3)in#2bS^n*KQ6|Vit^h$2H(ZsAl8VxgH*%a>!%9dS>5<+OyRkx+}_lR z?vRxxp4w>AWyVBqDvB&!rV@hEaG;-~N>FOX*F37-5;`2y$6MB$O>t~py$E9g(0o?P zJ=2=TQCo)s>iI2$=x(`k5W%^d_ly6p5XVeO7kuzIhkjFVXTfqc=YGvjmUvacjYc>< zOeSq0wt>(i^zKH8PbAw!vb)dj(V1?&8GMQ_N78za+b1sB5iOKZC(7+o&F&H9)lOQ* z70BA>k$_uR2er_@6V>XG8)FWmo2ILz@xT|#DbMLk{5MT!#i4u>4%^AS{`fo2%*$+n69i35we>*YLMm1`=b-C`SUY?n)Xr6otx57dAf*%4zHgq(G zzM>Z85%@`WVkh2BXKU>GFDW?Fh*JApDFoxdR{zTB*?`>hEpeOLAE6u0)?s7j8ldrT z(lX=m%ypiQ-4`M^U_t0VNHP0LU9H$dpBxrBXthj!|kG+F3# z5+?+E>LbpVt0WjDKc{KB^{&^pb5b=4M1;r zT-cC0#DPqgbd06W3VcFFiRb+FWN-12PqZ)o(cbfL%$pqi zG24M|1HV}Q+0Y>sSE%I8GFQ$sDof3=gG`wFd>)0J!2V9;FmcSUv3Reh;IHX%gndT>JGRH_naWZ z>o1m~6hRw6Wkq*ekRr(cahWw0b?2X1KS(`xMo3J?%eJsAEB4bPQX!kE$fDJCbZ@WD-V$${F! z%DTN9Ds;zc?>`&2{`vltk&6-V^lRQR#UoV12@hmI4)j}21@1Fk@v&Y|k7RWr%xL3O zc)Xzo_3h0-z**60_Q2K&NCkZG;TA0cFn)hUq)o>o&S9UzaXFt3u@rt0?_AW3HNIk& zHk%L}1ds-!d32wcooHrO-q8O!=tZ>Vd*AEZx@j7Tm?LUl&SX$AT;vu8RZiN z*mAmjZT(!83kA-;8}u&*0D7ZiR(TuHj;~)-zN|FB23-0C3j|Q7U(vlTPf_Bbua^NY ztU;KAy`wIFqRHh(oBCJNz2TURN8rt#LR!_#s#>tl4wYeDeDEwLZ%&4Vzg(+@xyECz6eSXJwjtcq^4BlUp z2^2ZXcCrazIxvs7`dV8LfmScsqVV1J!SjV7dtu^G=^l^#?gQ`tyeC-FOy z1ZFJArZv%o`KW)w8m};eI51eEZ%|Wj?}RzJK8T-wpJEZM?^42X!t*&Jgad?*BYvTR zVfwnMnL>kRg!q(t#BLs3`k%B`9}MKz9A-%!oo{H?nMB-({S)*@eJXmiZEmAqg02scxnF|&KIZAu7rH4 zS^+XSt_I2vwKI62#{jG)-vO&4m?1tNvQKlh*nm^d&go0U(p2-Ns-bN@*UHc9=9wr` z>V{FRFxrW+ktTzv&OD}xT}U(J_#EF+G$l&~^W70Pkfah`IL zagP>F@|XC@A!LYZ$itJXR*}NMoCA#(-!e#kT+RmmC4VnVa$~6x@71r4h0S$>^&nAr zicRD9pwSBR|I#7X5>c2MP!DZA0pIQCBRpC$+OrC0yxkjlpJ{^nYDv?;bheYEi}!|d ztw=@Dbp#)fxO+Y*GN!!Y=PbJqR3rv#P8Kd&>%HUMIR6;2k-*XXz=6wpr}0mJB_jE_ zcbg!=jXnz7-`<~~>TLIfx`D88#-!neU2JgY#{Z8ddIln?BN$8{s5k}L^}_`oWVeF# zB0b1zGp)&c*Hh1b339^s`2lZ)eSJAF7}r;d2omP9;h`X6iogWz)czlN5cN&E)}00q zB+c$KV#8~KWdsLV`~N%O#hdu|^8dl#l>! zXlQ6-0cwJT{|yya^w;0@?l`A{C5qW%paHci8yRN6{=WfRVB<)ylvoJ~#?vqVjy1RI{E$8PbBt?}t{uR&<_SeT6O zFFBEEfv4t1aihoM;g^R3+HtJEhVVbE24R`=XafUDt=kdi ziA#DOIkD92F+TfAABlq1Y(lMoa{^V$0(81+PwqeR;#4DzefcuNi4%N3niWkNrjU?{5`TSSf|o3hKkza?3x% zf{ve{Rwsq*biFO=dbTv_$dn*+{d(17`Ubqwn7|$&Xl-jthRejkwR7Jn_u>pG0(q%m6C%r z7zo+14*Z2pKl+6SZbm028vlLez`(!*X%jX)nE(0p<=yybpJiL>UbM)EW1>PGBAt4K z&$PjQt6E(!vEjKx|EFIRhSn_zj>Rotn_dECM5_J=Pv00FXB&2##SojcrbB+qTU!@AsW^e$K2}Gi&bW-j}bvyMK#0Kw@f*kq{xTh&dc~t~UQE z3Q-Ypk2%MINO6+cvM9DNolQVCv+1+K)<>)0K7M+yjj};?qg%8v>lzBNfMrCviSOf4f>_0n6r27!`(9?BGK9ToGA3hL)~t40)icv1 zZ7$O7G-`%`cMFW}u-2y@G$}iE{ZYXC{Z12xX2lVLr*AbaxCAjH{|odIV^%=(_YrKG z7s9Vx?Gfz7RL^pVsMs%CeJ#RM7#$=X0r@VY$AgV-J&$xq*Zs+>N5sc5&RRcGIVsV> z6<4ZA{&>X&{otW>q5?|l`L|)P3F+wl9}`kyyi#wiPFa4J&`K$6$tl>R$3+I})YE`J zkU2(EdL&ACml?noJU*1_bgx23Y479DfEgp$(b|7og-WJfwP43D1QCCgY53jcOGx;6 z6x!BSm)p{?g6;>r6pJ`oCZoXQxUg#YrPs>;N+*|o7J6{OI8{`$Frg;wCKKuz%e<(2 z_b0mgM_zDSf87r{B}(zn?--3;|Nm8tIgxaQCM{r-)N6)YOn#KCOF`Z3h0AJD|K@#P^&RZA-cvbDVL7oL zw_|1qRQNO`C{aUoGkWgrW@!BopQkiRSbeSBvZe``DX*dA-iTB0(M621FM<>sA+I}nLANvQJnwS7oQMoTf`fr1Q9M!-25=DviH(g-u2AN=3aKDk z$h9_j7?A*(2n?;5pAt}(o?61!dsrSX$Hl`y?Dmg~xPBD|g^HfK5U`SS=i7~<{U_hW zr$nl!Q+^b)%ukBAL&vqxJ*|2#JG=@1Cj{<)(KPu0oi&oObs6Kiw%M;@Js_2s(6tt! zdTE5hz1W@-$`uJ_9e*MdHnK62BfYb~sH2Ot;@{4i6-TXnYIrdeYQ=1Pu%qtc2&GK8 zkz9L2GyZm~PokmmKsyP@szsZo)RJGjNEY;Z`v9COx@=G>g&GI0JNWL7qkucMVHE4N zPnm0mG_Ji@tep{J9(ZZG3_wm$O-zW*kY^PHn$!@_(JD`~MK(@wPYDJX#wE1W^fN!B zLVbTwYKCd*d0`qP=Cug5Xy+nvrz3+B_)k1bSg&7Su?PNP?RIi;uh>Qpd&fT`90S$% ze$L@e@};K)c;80(233uY=n-rq%jiTrE2FOv3wDFnzRc}e1nSb0)U2{d#3*MgFslrK zR81Co>9>HUR4pql)H@*zoQT_oV)&%tvk4Vg1$L5XtP>s4?OE|ec>Vo_1<`0JiT1!F z9v54?T{m%fFpKI~t|Kep2__OCd@behdE&(g4ykaBQOOGw{#TbI3I6eZS18@`Zwhgx z_JV-ByF35zKH&Dxzon2$mv?{z8JSh&ZK}Dkbm++1t*tI&)R3tDk9n~21bC?$JTfn3 zEH2*Qi_7NVV87gSR?ckyZuo^zi!rfhb~f=f=B_R|nYEx&Qub3uG9fG8Rj6`XGcL^M zvC@h(GaU6B(QjviHQ|8KIL7VW%eZ6UH2B4HVGLwZSAX>u^WNrTf327r`Z^8fJD{YU zs8|N0#WT@Ggej@gas1**=xI9@(w|))Qs!~;HO6m@nn)v?&7ck2f zl{=G?k``tc#2NjVWjW160zw}fx)v*v^vvvxWM-z;4F;@@q5z@RkwY2W-Hrd@bC`IC zQ8a4%7-O^RYyPTa=FiU{Ha7N|wOPC%F=_;`E6E@b(F^IvmFz4=PV>=X`$p??l|i1u zgF~a$P_U!P$V*d-QfK7JJPKSc(IXLTmb(HANF2<5gjgKLP_rI~qWU9$UD)7j-tE;3 zCr3Pow4?|+A(y&flPq4cYnSte`W*l>wPvV}l=G{Hei%$F!)`tE*J+oAj?OuegwK90 zRZlM+6Bk#r)O*^`TNh7dj9?<&jsRIU{J-D+>gxEVGWIFK{o@Y4z`jlmbt`0q%=;T` zqLsQ-v`Wuw*1aKzf`z6)>pKvLq8QcU1^8j8h+dG5>&v? zEfIa5f;d%cO8*j)XjrTqJnn5z#i0+QdRsc~&1XeiNrPGF&>(@UcX zBRu=#=9hEOwJl%4-$?>ZG)2Bm*;hZ+qkSzWvp0uRETF6+@%MN7Egb3&knDb{P+ZlI zIR*`@IZo(=jZ$sDEm+8)0@dnE!b-Cv@WN+Im@(OoNj;;RpC^&(CbNPTE{c&H=l*j(Yie_lvtVEMX#qN*>>aJBmi~hK?M`?+D3@b zmG08X0Qd-IW@e^3MGPemSx2PpEod8wHFs_reg`ME-;3f^pcNMYkH4bO{oNh7wpr5I zLh>}GkPr;Z&C5)AL@K`MVbO>~{nkDY6dNDL+wn=5pQtP5|`)4u6cf>irL~R~BzXph$J%$!wmp zkq1Li*K*5#e24oL=anNYj6E^ogZ5*#(?=zZ8H2CBP9Cx!)^d#7dd7F4+*32FBek()xvkx`f1Lw4P;X`_=EmNVi6{iTEqOld^Xw>*I zrnO4v!9qCyaTu_sIICx3CzuM(Bz0mR)kx%R5k~I4q(H~25QSO!5XKJ_Ut9TjDecM(x$KcD)idOqxtK(4N1)=2p)u`T}M$E3rnB#`6B9UW3sl39c#M=cK92x^BI%2D=LVkLic;UtZIHpP!K z-_y1b<{hST2Vi+p53UInWeOABYAa`t4pI3tbM7UK*2PU0ScA{NX%H<{7LSfWLgFcb zzDN8^b5gRr!OD-P3#Qb;^rs7(G0|v|#q|2g+RoRN>PgafSSMp{{j|FJ8PD?b%WP5X zbc2MC776OW5&lB*!|(Rsv6zCvnE$k{z_H+a4{|s8NLd@ zAKX}>rz4~YcB9DP??AA+9lh+T*jDJAdoF`#Y=C{_ym6%2CpCD!yCj^T0J$ObRfZ>P z3t{n2u1sccHBx*r*zYr2;*3pi*dgv2J)F#yuA?pgBo8(YW{0Z|$`te_Makek%RZ$JL*Oyoq%LIB!>$PGRwFj})`wY9DC3Wa+ zSAb)LDE;bN)6v8_vz)G|<|_5k$v<;wLSnWG8<5fwS^hD9kE1MQU?By0I+r{O-cFe$ zYu-BFb%h`BZeDZz(1SI74BhEf4123DFSRZ^PVvtNU379fuH>Z*t~H#p#xlpxJBKz3xP0#$4sa>IuYwm@DG zD*Jdqz@Lmn!$e#w@qoSqR5ELoPypQycp}J4bkFLouke&POcGYliZE;wH^P=rQJxh# ze!lSFR0;`##Mxuzbi6(I{UmuvmJQ?Dw;ZvcA~wM&E+DDkmZDEw)10>LAZe?o@lt`d6(4@ zbNbafH%YG92Z!1aRI<-E`VP>~ISNbByYaj_-+&Zqn=O34Fxgs-G#9>wlRepk{Je^5 zc0Vt<=31YSatZe0@iLSd$CBYbwD;mY+MzWtD38qPspcK~!VDw$1IhJ+^pCFd2Yi{> zNngj%=VcbOmHbCBCY;4Ry1Q*QL5wleg|OqxDK1gY;J9Mb_1-_TBWh7Ea2yfHM(e2l z?dwi#7Fk0#7gDQnFuEozTl=_>KUiqC|JEDF;_%_k1HL1pFL&?=^~j5#6nF`qr`lCV z8gcsY@O$I_vJNJL4pVvZ@qcj>o-q|l>&Fm~ZxI(UiA?49AGjL&Uwapih#OrFrs8wk-}14D0O5k-K$kEg69dau;K*jA%#RpKe<})8vt_R z_;MV2vPQaoX;O9PULr%jAOD+&JNxq<5Fl3bI@|%7-Uz`P?5ZVo_f6biyWZ5BU zS>GhNadv@K2EVWW&(Oe@mYxR6yxx1+r2DH3E$Z#ZjBARJl_Cfdf?1BQOqInlooBy&2k+J{{!IzzwXmO6Ij2BBs5&_jh5z43!>w1qKh zF3d%dWv^Iw=RvLD+bc%jhXJS0U;=lYX;wabF=li?pKTv4fYnnRSRWeU%h5STA3w<_ zCU(DXay@^1V2v%Lsoy0NSCyuJg9ZFhB6wesKJ%$!;C8n+nznYOxhVtv>rz9O9b8O2 ztl#i>C_}@#N|HZw-%z9%x(xYb;TD1^b7E4bE90cPy&Hg0RD{g#MRAFFKfp}bLE_G}!RF zuz%^Hpjf+p_kL_PWn*)2IbI-vfq7oTw0C)~XI+145k({6?`A2KnQUuq1s>Mb)is}< zKEEd3#XBC)n0k?Ub@i2LO?67jO7Yo-a22a;?}Xl3&9|bY^V&?D&$73wfUE#sD6xuF z7&r8L&lBgXYaAVTB1Mlyp1GdZn>D7PH*!_Q$MBwi2k%5BNJE8@Jh5+>_f&_RrEgQy zl3>^jKQT9lucpVIP1(y4oFSs~ELZ@%u;)TrZYX~%3PvXfYcD5F(i*r-4ypA!;49R6 z1SnD}0pcA2Mqsf-t)rFRAmNZO=mL4uU2bL7gzdGQukY39bMet!#NMrKCSbZvi(_OG z!M-zoUblc{pwi<7_!Ec9BrRfrZg#7V{*Wws+=m~~>D=~x??1TXS-*TFO_=6vbd>Q- z?(f%3$%hf|1mGG{Fa)!v$!~n!*f`h*-$yraw8l~S`?mwAhy`5w9h5l<>JqauG|{;F zAGI$kbM8;kE8pmETA*r%d_vy+#(MvYVN+QS>)+3rnbOkI-^=Ekoexp-^NA>)UtB#r zU!9cm0T;-0yooVCt|(Cr5<+uWT;bQvXg~zWGUwgI-6mGtF3NPBgRHR^vPYl{R$kK?8NY2^oXJeKF zWFG5A>IawvT*Za;fwkrrni<_XQH+8CX-WLiEO!wc!<~iswH>q{ZOKSBy*T#KaOVLMnq^(**rOo6rq=B?5B1XmPOXI?}nzo1?L=*sXx^MggW!sM1eBw)D}St zR;8`CV9PhgnjjdP91TthXUe3ejF7^WamvVNkxCxwAA2qsqVB#3);SW&U6Qk76+t+B zTkpsUHr1*H(!?$;{G#V}XY*uxg#Cg}q7a7aw|1R8E|1QG+>iC`%+ez8BxoMoKWY5$ z{wL(*IGi){3tvv!gt2L54tC$SYtcTS_B|{TQC3T0Mfk~ghZ61CVKN7|lS5VcniB(= z?(YJMhJ-6V^j=M7is;pYO1x)Dc>c*T{j#X6xVrmFHP)&dYN5rbXStcX158%}6Sk+owf{gzM!- zIh~V_EF8P?NJtnG+(`&o{Us;Wc01n&x9d<~qr|RU{BK&Y4+}K3S;573eOLqFzC5?i zZd497T+m>6EJPzOo4*qQ z2u^BeKh6*S(OJU4LbUVw8GC_va(99ZOgnDk549u1*V8JEvDg2vzrT#&>H5+vbBIC6 z&hF$}yEi9xRfFsHfhck7nPw?4{-k(;fGeM4f%OEIt^rY2c@4aWyz!R-$P<0h++ThNc_!#cw0S1a#Pdz&e7aehsM4akIu}f+M9RSNMA53wuXOsHDZDn7Xp@y> z^x$zz*j>p%vDWCCJKch2hZA;q_nJ76)`us5b!D|%bKIgz6*bQ+2vH9EtEc)K_yWh& z&uN56bJx4^5));?`d=#Te2kc^hbit&-n2+p^_i+NEWSVPQruW>hlI9V)BAt8roHJX zGhHeR9{BzS9{|BZfB!try7wKc7-fNs5l;Yem|ZW}CWI`oE%#)AX`=aDNQKju)|PXF zxh{^)Qb~%*nDf<5j$bma>@lMT^@bDNy5PUuXI3O`&wMXSDEdR*-H<67#|!=c&z?$v z10#?EWh8zmz$VekHWRmxW!$1w5RL@-`VE9K-4+Qag-G*2)*0IGzsaHZ({?BG!lN}X zf=FM$%m6Z^tjPxx>P0!V4V;xIfeFA!Rx!v1uSkx%3^N0AE{+t63S|oxw&v0_+TWd> zS`t~pc@TP$s3fMDzsHSvduq4wAoynwmuX~f4fJ@3up+B&V6G`M^_3z$UY}O#$rX+g zM*o-B_JtPq>UrDjQ8m+3g%~!qL zw-3$V4~T9^U5jyw6RLb+YfYF+VER@=NrA`J=4~|pvg*M)Kq9t&IBB=;OcXyLE$;eA z+9^oaQ}^!M;Ox-pCNbH~=NQ!7${3ewR-3sd4% zhT=~f-=@u7hU>702Y@;=a(F}38SC&}lAT=6HkmZG&1KznEOPg7akZTTgM+GIJ1sF5 zYyz+3oaubN?V!;b=hX{Q)OgC#6c*WibCSzGc3SQg?1pTi2Cx)v#%eKWapK3MhX@4p zTg{ZGHPjiA@xKBmat+g0q-(r=H-D?3)Rq?Wiv;*PG2tGD$D5)nTVd-ZSbWH{BF5tw@50 zlJGVsqMgD?Cr^4vgi)Bpd z<2|d*;%ZX$B_PQ=UZe*Xo#^dRB;)=)wK+v(K9TvTo? zdG^-V{(12D${cfoD{vb}Vmu+Svy`UscfZhLD<^7zLiqjjEDO#@-F$VR>a587QvZR} zyy2|FQWXOm4jvU7=iarWaxrixWHPiFCy7SV43VCtKxw&vWlD{Hy={5ZQ~5Wqd?Kn< zM)KMxS$L*p=HZ%vz@Zs_99br6M0G5w$j8(Gbb!JS#LnaSR*f~|iW zOS^Y{@E%>Tp*U1oN}n^HY9NLRS*_Qb*5+T+7p`rO{eQ{m;j{OPO)neX}?OSs_Fjj`?{kT>9IZUQN9}zZ+;A7y9-{LD!8V?l7WThba>lj7a(2NF-X&zhtfuB zMFh+SUAA~z`oYtF#JBqnO$zI@uwie!`0&|?1XwV+ zqeKL~ajae)3JOuQa&8LEAvsHqi$ITYF<6E)T!X0W#!NTDny&k8?YU$F^4=vm<|r3y zMP$N1RF8~)<9fXs6}g)u7Qls@x{$0i(t%5k=sL$=%rJCI;C_*x!6AG_LZzlLSvo>! znj1J{=ulNF>YgM*E8rFj-ppKk+d9BnW|!fGTJU#+j|X=|gvhMpaVB#PZm}~Vh^}1- zlRFo}@tlkPk|_5}iW$}|U{C5*(dOUv^T#|^dM&lN*+iF$LLPDV<3FEu(Kf&=-S`o& z#GD6KdfT%qUv*4U_lgL^myyOFglPWNS@stYZ>?&#cg^01KKbqtEufhh<@+4#JKwkY zbJiw*c4xlnk&0t53QfXQK!#0WPpXosv2#92$Q@mw%FO6yFy(p2{qPv>!D2!BtdYE) zkjH5@K7GGJ=K%uJ*P$c4q=@uuK9GTlY2O<{A23dp`^WkD3<1m~shyw-pWpHoaw_Oc za2U6oQ2YdOz%X@%ujO8*c@=7!Y`N3yBy1xb0{XkTxF@PJ{XJ`aQ%^fH0QO|8lsu8DaXnK}TFtsmWN} zW0)LuFBy^gl(!s&Ft)B$OYp7Y$n|Wbb5(cBL`X22-#)$+eD2C#cxF?q6G`|guj2tnj(n-h{G(*tWzEB zAcG-`I#{e&1YY*Z*{-=Dd`t-5;bTT7db3jHI-s{BBGwd6L8-3_TwgM@<%Xc;(BVes zg`%bbR(>!B3v$8vpSDkJs-Q$_AVx|dCaEDLDGXoM2{$Of6sq-*Fa>JRmbJ%GRU43$q9K9rcemWDAzn^sAldsQgf2aNR%)Dbxxt|MFit|MZW|WU0RS z#A}oAp15Caj*!ZQhRNg5=%YA9Ceez0kP+srzgiJErn#WPokW0wizH}nX1qW(rGk)@ zVql409DxtC5U)sX>Ldn%Ew=oAdoHG<^}$v;(7l|i(U3miuOjq|bjdYno05KxG(-Gd~SohVBm zz&KmPtNSk8e9BTx`ZcJUh#G=rso5TdmUgVVi6C~OMCc>9Z1Mg=HZDg&yg1Mqcyqb$ z*7(ouB2y57%%>e$MdTWPAciRZe(jLQS^+!>j@hs~fdEsXDdun;{D`~zDf$fG(vQd5n1pB_yrG4`_F)f8n@S74cIF8~yE6$)kTd_KibgKJ zgn}7>TmI}?D0v4#XwA?YZ)H&Lb3K@+X>z-{=vbkFBqoN39C06x_Za*18is9VllDqL z(e9gxu{lfj0ed-8Ud~O8&gFd)E{MctM!qZn4U)Xur&$hN^5P~7RUj7}APQb><1!R` z@^Z%@#ow`;#g+{jXE2M4p~h4Tgf>P4o0TnkkpLOZxB5_jU&n(Z-Jh6JIEMcBG_5Y@ zVM_)b=XN9C^80VZIPH)-AnRxcbDfrhlmquq>zZ3%&=U|UlAd@~V_$c^9p0T>&0ku3 zI683`#nz{uGNJEY;KMW;OdDzNKj(Ag=SW&PFv0f%^TfoEh%4Z(Kx_+FRn!oXFIP`g zw@-`7t5{Z|mltPwO#CI+10BBQW3pIs6jMK*IWStijosoY%a@YEL%vHEDZ^xaHJL4p zQV&3?BxQu@WjG1NX#A;dy2;)Ty*&kfFx}H$5Z3Ui%>=snS6uFTl>IlGvs;&k&}ayb z9O|K@P?_HiG+|jD7f^{u!{o~P8%_)9=b|{gO{iT2Nenf6=7GsATY*oAJ`Dn7+gXaa z3qu_4KIEOxA}~%W1d#et&3|;lDzEdbn6$Qc5{P4>qAL${L(l8l6&4v`wU}fU8IyRU z`{n^$5zKv=r^NWt>3Mdyw+AX>jK^ly^ zTF;s*RxWVrvP8>>yD!~gOQF;d2)*|I_YY~=O$m`@ivn}ASSWNcPZ!E}42zXA>@5{f z!jvmQ0MH&Dnvs7(XUoEaObsI+skKKJO$`pzDq;uA>q}WRC@4hG9Y|t2 zeOw=w`d7LC9!DOr3Jboo{JLmcHi~{*h7SH;N&=gdVm^s~>@K4&92&F4pl@G96W(=3 z3LK|9Uy?t?@(#TKPgquln>5!Kddap=+|ibxHv8#_kwkUlQ!dU%4%^&ch@_7VdAmJN zCq%d|whZ+YRLI5Ftio>zsiL4)x7WUn?;UeJk*Woe>%xL9i(@_MS6Kqc>^+*E2{n>~ zHYAQZDJ0RC6jr!S<&V^dKBS?wD-P^`|6U$FTE$%kZJ`xwt6ln0&9wG{?=$)Yk+x5d zgD%im`ikN=rPlZeo=lw3HSGiu@Apri_76Ej1~x-KFn-oM17#+cRVYi&=sVXm!g@2` zr-(fnYpDfXhVy(h)X6Af_{luMz-hXC ziuo6jJ882oTrh*MOnt^iIO7Zk(sCVR;OjZ+RP+MlKbghxu=Ceb@u3Msi;?ImO;4Yl zT+T^!e`po-CigJ|#xyDE*NA4lJa3kniC1Gh*xuUN$O5PRQrE^&JS{n|-sL+ats?+6 zj*Pc_1^o-_T0l{iSkx>?j`CRI^i#g-#w8^C<3&gD!#Eg_u){IoI%8MWzfE_#%c<6y z-6;%cW32!CFc_Dq69xrH*?^-qy19Lg|ZRH7Qsu=)OK&P8Pyy;+@tbmxPo7; zQFrOl2k!z^Nrs^`#ecb%DpV8C<#88KOLs##PB6wNPcqRoWA#&+HFDBe*E;^#Oji;X z&FY`I@24x9X?~|S_&yL5)nl4^#vsnpDV?7LRV97gH`B?PDyf{yaGtxy%4PgbFZh@*&n zqOhQi;r_FpRw4l^T{keFUTuioH|t1_pU;B{{^5DXV?l`2zZON0d%w32J5^ z3@shB+{i1o?+~7z%S)|qI(tI^Bf&5}h9wjcQZLL5(PuK5s-q!)`@iwByi>=w|UD{5Ylg_%Q% z=|6?+1d_?1aFwSg?QX5f5PMp&0kILKXTXX`kqmWqD+#4Sc7LBBHqnjD;BdjVox?p$ z;iW;GC?bI*(8T9Q7VKrVs`e3WcWIyEQi4Ofz2KYcx8QAYN`Rmf$#&KqUwY!#LAapZ zZ@7XzSwgC7M^^RDI9G!J)&m1YMT#WuoFCZt=U>c_)TH)s!pYBI!J*TCHs6g5G8xSv z>Mi)dGe5Oh)kC!_r-0o>oY@alK2d{dy4bh#(~i&^V$M*OS84Pb?138Ik%o2uRlR$d(*uq=@fM3>3P~unsaf(sMeI4!lB1TGA1qRu2Pg! z4VL)gK$1SLJ8_mL3`wSZi>Xek(#?}!;>gRy@;`{Cq5Z~T*p0Cw0-0Amkz0csEt0u* z)u+wp_b4t2&7aoAhO4~zc;iZ-jpJ5f>O(E4Spvb~Ok zz&O*e|41dZ0(}+wzDfGE(My|UD%v@SJe~CaLaS5K@@dhp<{S*I(XH=k=NwEbY^w>R zspx;aMs1UcLXCV!&-$mS!k-r}M7&m(f46S$QS)7Xv85eTjHv8TL)wnNw_&$1S>JWy zO5p<2jsI`bN2^r&inny$y;dv=w!(wi-4hcR{05rPymD^EZ4mw%5ReJj=dUXL$t+CU zcIeOpwF-SC-__g@zgrj`3?)3>PMJ%&#tjDbGqJa=Yc_{YRQPe`u_-XtKCfS2n3OZ9 z?QYNtTJ}WF%cZuUhpQo>3!RX@y^UI4@d;}?qkaZ3aOL!*5wp-v_>vfQiF|6ZF--<^ zzA!+s6w+0 zn!E#N_)fj7C~tlW>&u?41XJ3%GSSc=D)?6ka7I_*Z`*g|^%iA!ycX9RfBh2=VPix! zO$2)}<%m5-B&9)Xi_u*=GXJla4vj){TR*vBUV!J|G_msC*!H8r3AxM?FU>)yW){uo zqBZatQ?GY$8Kkei{-+B^zZ zA`qT*zi`O$rl;M5ZxxQ4z0KXWzuGI}>w%T7!b<%A!Y(Wh-`oK!{m-f^ya&yrqu)l0 zS7#$7p1W&A4^>9pPiyfg%FujHSHJPyBMuuVg%P%SMOSu3j~z7&<(3Lp z^q~-{RlWFxV8sr%D}j-U4Myr)oh4paY~|*68N~xP63C7BWBReD1Hpw22T?_XqrKow zwI6c2bFei+U4wZ|FE`I*lWk~SKiu}@ull3R9TP{U?Uu0bVqE%HF8#kQ?K#*8AKsp? zT|30J>iU7t5x+MQ6dmD)D}l3&hV|0a`|+)dvTf8`ZnGAGrqB}OfI7sx>KcDWAtuMq zAUsVB(A_DdJMZ=Wv%p!eW6pXc`)i|Bw+`(<;U6S=1_trRi}f-@8nv-h)vlH{_xhAA zBZ{d(D11>-VlwBTQax{#zX1A5Y)>j$neE$o>noJouK`lQyQTY?R?&N-*g67F72Q)% z^j8BQ%3Pr230UTjQ>5}u!bdT_K@|qieyD*uGG&s z4HHL!hAh*7(m6=8U_0C?gc74`=11AAggLzC$*!_E_Upc@IWHnV zQQEgN{tcPDX$veO6yCNWbH}80-9<%7-c7+c9Hrj_A#%ivh`tFyiKqYg@ryaj~Mp#dQ8iN zK(P+)U$m&cy^_!=ox-(spy+rB;GVHbjtG~Uo_R(A1S?tX)oAwJygm@ijj>c-cVt22 zh)=GXT`8)A0tsmK8NTJ%XhftKj1Bqk%mr>+%T2!WO{SoaI?}JKKJA^MRTm(O_nw-6?8;L&JmA`3T_CEjVQ;HGnMQK&?yIp#VMHs} zFY!ffGDloSMi3T_6gf?4^M0Qa*n2engM*p5KaHlJ#(b&8S*X?JGBhC9Nck%xe~rzB zt}L~)_~Mf2d>jiKQ=>La`EG&xnivbAy^r=+mP&>Y_#M{i5gvwAZWbATS69Nf_7BW< zQz{NYjlPs5XNTvB5d4Q@@=se>OnnJZ%Z#_{9hP3S5rRBOu1j&qO_m3x99WA4&<9y|TG04Jzx` zSZ0YRgJ%Bk-|9`idDXwnE_hHiX}l*Pq%3+9_e+5z00#l-OE$0`fz?Z z`!&AFmh}l>99B1?k}2)1n%G(BkM7N$0hq@p#%CrbSbcm4wu4`vPRB=dM49*+5(;&M zWQcUqvj(jSrVmiF+Ik1OE;h4REA8i?5^<&eUZPcxj=u$Qt8!GjZ95U&!o=${ z&y*Y&xJb!FWYB3J;b225)B;EMZ^@#5cxK=sbI3G#Nu)WTi3jMXK&&Yw69mADzFlJYhg$jgr`uE zgb7Hw|6*jV^e7?IDnrE(Lyn4nTUwGr0s_|}>E%s&g=*K)YTAF$3)O}lI7|P;tL5!H z;H(XVH7^gG)S7DRyCL5yYJ)5PP5mook{it9QtV8Y9eIeL5j)KZqkUw}i9T+{IF$pC){RdKa8VVT;=sp2{t z_;~gAKSxIeE?ZsQvd)gCfK=30z34=P?nYMeINYW@6rZK=AG zA9tU=3^1tB_2L8Uwj!*A`Pm_QCM3rEX)zd9UPv59Mrf|D_;Z443=OK9T;1c4!=GeO z{RA~NFHIeA3rZ$B|BQ8!ZnWZN!Nu%}%Dz`ygnkXXl{P9fd`cQ%745N__y0ZL_;9us zwcQYM=ah6pcE&?3IC`YhET6;~ld>`Y-PLpX?2sBY0;_{nbYO zGO7=tnC5=-%oGVCEU$oJyAS@J7Vk=vt^MjI8{_kVo%8wlph2BIZ8Vyg$LIQ1+q5&C zETZSCo4Ntx-$`b8AD*vnyq6z51*CLhqN9wC*0^$96mxX{OpS5Au1Uq}?^DIUXoG7u zRi%t-f4@3JvSXBVBH467j&@7B9z5Kj56|f$_U>E_|9rPmuUQ~)%Nj+jqG%9?5Xo|2 z?bBTAUh!=)H``y=SbdNvo|mv$CMZ-hS--FuVxI2Z+=P(?)8dA|=KAYr1TkL}7(0IkRm?iQj;-kb@R4vB+mj9+ech(ebf>B(Rea=+O)#2i_jhyOwK zMgxF`#}N5jhB-J{f4xqteQwM$mOMo(!Es?N(8k&L|uD<{@*0JM6#uxfGo zG&u2myK{MMiPd8*S8jkg>3xCa0e9<9z3H1CLpE!+^kIOvcFfkz#&>sae)fTf;LXVX zQ(25TeICm}G%F()18ii=mL@l zBK%>IbY`?J^!^Xm;rhWWR>PB-BrRzUu64slW(dBxCge=4!RbPW%S`>~@YGf;483d&nM3pNTe~MQHS7D@jR%~9 z_1As#^^nj5GDcDn6;<9Wo!ZXeMBP&&Nh`)?LbSOnp2^=J?R&s4N4&m=t8iJ7KNi;3 z2#ow+j!rDRsRO;h1^CWi5H5~_D4C;Ogx-+)fOU$t`?!(;aq|8ZZ(ra~kTLU`X=?FY zClBw$aoj{3Cdc!*2Qv5CbWRsud{luY$M)cwAjxK+&_~>-`u1tl%l4+o;eBVifQx6^ z(@Qhig=aO>jF^DdICZE(fP2nqEWJL(fS7OkWZUQM=#!g0k*$9hiVTPNlM22@&5p#;~p`%O0v_0JBDs+=SP^@~o7 zqkpY+A*2SWi)HYiO(JOSL?p0B8dE@ta^BcKNyXAu^+{Fwb_9)ht=l!KFYJy$41p(b zm*V2|ADKaxfWU7DAn?VF9u9EdosuDcxU2rkL=&-m)3{8-{82?JLp7F@8vs7md>u*1DM;SP zm4s?yNLB{ckRWwBPA!#Jd<`r?8X3_ntK=WR14tQR-@r|=Ye0TO!HJKsT9wI&v)27< zM%hWl+XufU;lrZ_se=de3AcyawRjyb603#LjWdCT=PGZ`A)mU8h<tZ)V>>-GE6sW^V|sVhZXd90N=e<-)QlckTJLrar1=^kbKyF=p{>nIKu_ofE{p z3lA4Z0#TiucunRjcsfk79O4KSt>W(aL4qDuNPrxhbPfi`k?{<|f{h3F1hrug-7#T3 zg0r}^vA~RCzcxDqG)ScOdf$yk(Bl+YB!DNp$7VktL^gPXzC|sGrgB@Gw@XWLnd@(d5Nj`IYB_IN!|KHu!MzzAL z!Stp#yj!?ykZXJG~I?5}QOvb}e3waMWeE8Rx!I(yuhsv?e#iisX zw2R6y+#QOJ7vYe()eu3e<0M{bf*GUC=fP zBSUZ)+%*LEz~D{@Ap{BT!9BPHch}&-AwX~l?(XjH?(PG8JNNUP^M3!%?^CCWqF`p% z-fQ(1 zt0Ct8ZNImONl6T zF(0i8y>D~bs@%4i>HN8fpNS+W#BK}|s9><4~o61HMPP3VnRz<|?l|^V+ZQhOV9Yl(&5qFtBZAZ}V*eUOvY^ z&0Kq@{@pmF?j0`UO#1^iSer1Qk&W2Brk^<0YOk1|9he52Kv3{_kq|q-N48_J-(S;Tf_0& zh956PW#2TfrOf44ZOfy8dpUiQaD8shS+u+2#kyypgZp8j;n6vchikARGWYA)lbd#d z=Pxgo`qi4~9l4Mtb9w0BNo?KWPsZ3rx(yNVPjTa|o`{YIi#3yWm4#>gLCe>|cmf-v zO+}>2@3GWvs`Jjz$_XUf^l%MZJ9r)je#^>6g>Qp&uo^MZL@`Gr@KPOo!ltQo>LtXD@Nn;_2D^T9!tc6Vb{e&qDR%P+ckz*`$6$ILRf{l|KRfK34*JuBq&~Ep+4tLCloZ_a>Lk* zano_Jb+A7iD&o6yQ|U93w<|nI+`_2v4~akk#6Tr`)b$u#nhf|r9)P$L(;I!T!iTSF zty|k|5{;f6;NHr1qKaHv%}_`F!jFzH&kyJOjxRs9sMAas>|?V{ATcPky(7nIWNUER zzhP8uF+-f*jr7;bLA)x?yHtL)EeV0A? zvP;DU2H~%5Zyi2jc2RWt8{UL-G+w+O#q2TmJ$DuF&KxW`Y=V-!l0q4R`qwaJ4TJ@! zr;5_4Px;xBzdmca)ZluP(qY?t+i$1$@*Z|=N#>G!n?_KeXQp30H;wP98Sr3O%tnuV zkX847dU6%(@s1Y#9NxS46pQ_q%=yT|l})uQn&H@?|3-$lsXpg528(`ptSi?4lkFDyqL6#v zhRiNH>3k9rEL~B60Wz)y%d#hw-L+d?7+bP|SV5Vd7c1XiHG88c=_e*t?$R(LC_sbQ5pFNMXXUboJFv!HRJ4Mm!F{9>NcZxJc+3Mq*K0*1o@115a~EchC{8Uf%q6;z_$ywrUY!EUPm@&ow+S%+rR*FqIe^lin&6oe83!E%54~m_5vn!%7s8Ka=9K4Xn|q(E)h}%F zsx)bT5t4{}?u20S2y#}vrFFUsP=Hx|4(H=%hH{ZyXtCaW%Y-#)kT1YqFC9G)wlpYI2ox7RQ>1L5b` zUxd&h!Z^X934p%yaHDuLdK#S6sO%)LuWa1Rgr7@Sm+-l0@$tIrS=~h^*k|_fdS#4; z`s1cwsWzE!5pHgVNYFbQr(T`c3DkZu$RdRLJKo4bQD#%#;80gT&scIxrp_8!z;4E> zYswUO_(N7%`|Z=WkybACsH)WH=?6C=#rPGs2;IED-@Rc(N}wl+W5zs2r~3x=6KCXk znO!CianYe7!XngvG#8GuzlflDG;M5dq7`ULQj38j{{d&`$9wW?m_~xyzMJw_bL)vM zj0^cp(e-UbvkZ*?!Rv30M~n7>#0(xm_V&_yp3b8ZJbG?O(i9pMS-i(wo+|oeJcoM7 zAVcwK=kE_VJQivGhLqM4akId2usl5l`x9PBsHBwMbtK=&KI13S51}e1tKgXj=-j3D z@Pf2Sl=8o{9XNoyFC-Ab6y8^N3}WCqAXUz^Y`2HjMRU27nXirjJ=sIG1EM+io=UM_ z)g1X*Kz^FExO`yENEGo{>)771yV7skpsyq>0OZL`w*o<|va<3P;!jCRjP0Wew$t3& zJeV?@sr7I9V(yseeIBo&S@2afce~8DTHknmB)fYd=hXKZ}?rzf>BsV{Hp8TMF#JH*>l~KpW@!F&+O>zCAm|qD0`vaZjr8G71LB=e+nw%f+ij^7cHVxh^`xkwrqtq1U%zm>&R4`F1VcK5h&=U2$J;g>m zz_{rwp{V%AhR3uXgt)YX>qm(e15*M|CUDp@KCwkNo-grC{&OTP*3;)V z8UhIrVk-!c(9!VLiBE`SIW#dun5#`@+mlGLgH#-KEt#Pi)3Wn^*=1iGHrvT=GAGdp zz!aihr#(AB+!b_G>cff()cze9{$be8kMbB3x!rBN#nSW?wrpDsDZCq~k>!UQxEDponIhU}o#@J`g zM{ZEy^h$@FL)R>rU2MAd$Y!$0s*`kgJ_Y^mvQu8X#S1i%Mg{ANT0x$w8tZnUrm7lL zs#RyOea`^kNWG>ZAX#wjKaB0MHJrX_^8AzKk%??7B=RiQgjXQ${B1}g408J$KhJ|N zDF&=BjEsyG-&gnnhYt^E*&rGyj*L)8wC7VvE(zH?n%yg$v1TO`VH@FF-T_I9}i*F)TAJ&GdY`nwdCvqk1O4C8$@a4yu%H4-%-j z%M?1lyxb(?B`Hv=mrjd~i5aiZ%Lj>ZA=AK+V9}ipEl%(FDvyQ|H4H$RLPLtT4eSH{ z0r=W75SArop>x&6(;gYbzjqzlwP_N~X=!C?126oF27~G{nu5J=?764)9j4R1F@5jc)wD7)H=S~1fy_QG%ze+TTVm0j)3h#I=-tb3 z$7nr`gf7h8HO_8S1(!T5xfXjX)p>cVzLJo>H$g-4tM{aY-CrM0793xt1+&DvtY-81 zfW*Koc-TG|a>^plVB1CEKIgx((-e^HV#^KP$vcmG%HFmLZ2w*Fu=6$Y?iQd=9TP0= z07CNRnk)0DR>b?W9{9mF%JX~D#>+LIP6{fECmyc3w(TVat9rzYwMdDFUrqPdG%g%o ztY5nVi|J0CK!3wO$L6Z|-fReAQ+JLlqhsG=eBj1^ht~OOE$AogA{e|P(p z;yhhO5Z}ZTkJUXo8vl^}r_;6h6cxBGSWfF}Df6gCNM)$8YoWUeTW)?eh?-!|!urK6 z81t5`zIy>1Hh~rsF5KQG8$36!P#ZbcwVcnC_61l-)JQq{RDk3J@A|8Whn)CcDcw5n zLXe!gb|SE$arf`U(Z_HCe?CzsSzxW4>4!9}1YTvLS1n4l-8a;iIf!dce$9en=LEMR z_cu~H-T4K131EzwsZrG?x{Lm1@i7|jqhEWj&z3~L-FxYK7AAbPCTF#DM5@a{jc+0k zwAwGIch^Di`o-MER4M2BTmiSXYsRtE2eo?{mta}KTu&9sYZhhnvPZ~l-6}>L9$aEs z4Bu{v?(&>h#CF?svQrNbfl*KgqgIfb0_v&;=zZTM0-k+It5EU-ZJ3|7Z)8$I)DV#${FmG`FGx9+|1H%vQ%CeX&FYQr z%y9woCbgAdUb%jB!gIJu?1w%~x|aYCvd_Z0=Md+lBln<0j|V^DICmc+canwXj=EO& z`i)gkhr@m##=K@xSN=~AG=X#a?XHaWIQPAcu9uRwp5Dwx3${lL_3pDUYE#3c4yN%j zrL^;^>@XTf1MZ8y`_1q~GGwC-0Zhto!`<(je=*^zUx;JEx zZ~x2&DIEH`n_Tyh$a^9+PvB&@n273}>Xfd2sKJl(kmMaWIL~I5n8sL10}-}f5U-Mu zx6ds!?ozzm%pGL(ds5;pItkZ9kC-J_YfyTNMSsImu{O?ROCHDtcK3w z1&wJ}vvS4gf-4|@3 zVCRl}ve%p;ho_6P%~sxOXY^Vfl`E&3l)m%XNx@+^NB#`;N5PB=E7@=Rur$QMe%$*v zw?wYa#E}%_&8Q-_8Y`ZG_hvq%Y-Tm*60rC}S0caPC0)#{d6-}cHa~5x5YQREzC0(4 zRFI1XRU%flv)+vZ3btIB(}GByaS89Kk@?(B+WNPQt`Z(D6B0=p1jQlCPx_`h$R>_5=j zw{h^bcVg&wd&ogY%4OT!b#Una6cLvW-gmOfe6zN+qTt|)KEXD$9orYwB27FBO{S6 zX9{1xdd}zOJ6ke3I63XC2;veDT$Pc@>Yvi6V^X?@XbIeIvFL3YhCAzNxw`Cl9Z#Ew z><;d(2{j*PLAB!tcAB-)fU|deQo=?w`dRXVOVwFmL(#WWIuukC*E+I%_Bn#n)6;sd z6XKt@r#oYogTo7ti1!Zi8n+iP;Uf3#CJXTapzFx+uEv?-N)d*E!^+{6F($TVg>q*- z_ahds1YUtCG8>sXav^rZS>_jy;H#B`gI>YaHv?(VK!PtSg>eO`iC-#dOea~Q6-BNVhE ze1UFZ9CXMh|GTH>MU-rSQbKgd%wCJ?&^VD$XcHECu0=?)XUi4gKem$T& zElsO3IY~Qyub(->qvsh|RUn_5z@er4q}H=^NouMj(IW4BGS6)^7p2n`WO28FfC?tU z3&dP=kA6+%2;8Z%za?LAFSTsy_4pqIx(#fudZ7)GyZXFeD7Q_@3D7)Phz=)d_K!8j zdTE-{D6&|?@@?Ah$6Cv4po0Z*%2kCz`Xx2fVZf^QuYCM@qf_E>kzulE{n;{j62dc9Lpc z_wPOnv*Rb66E>){zin!D03e$P4GbCnJIxz+++HuPqhcStd$So1=*xtft=Br9mDjl7 z_DZ%&TXugTDQ0Uz0P0igpRSSLQnGEq7pJpq93v|paztA6laC9S=g%}p;t7A!+sGrk z`$urH<(@!|e(B&J=pXk|!Y>{?efLESAj?wTp~do~0Y~#^7gMuBwhgfnYIilg6UMn0 zqcHMn~KOBF6Ke_3j#Zh~VJ5Z>u z7~gN`S5Dr=iE$q5#6+)2m2eNR^^|n9TpX>Un&An+HT`@Mr3`F&hm;ctU>d|edE6nG z(WJ8*rg?Qf*35h!_YR~OZQcv3y}EtNeIbNI+11I=dY}B1{W|wNvqjb?*9LF%B@@vu zm|@0-<_mw$W1H_O{N}|mj!U*p2%2$IYmh4CUQZ^(fzBZRIqdBxy-p!d)G|wi`A?f? z_zDKy1xXji5R&RSvC+`BCUvx!UuXWd+E_5a_>Y)$s$;nd!Qr_M?teKeEK8MG; zdf6~2^CxULkop=1jgA_384<3Y+Wlek{(2HIWw~!|%@FX}BQ|@II^;>{>nUybZK!4h z`~A1s@`@cVsB7@XfIP-}9jGj;;&6WIEV}dXiuJxtug>taT5Lu;0}Qx?rqVF{^v@>I z@UzchJQ+`EJ@3}({ZF6i#!q8yf7@+Fb6Box(-7}gV@787-CYU^Zc~v`w15%Gho!DT zThJoz{Z~b_TUINbg_j@#0trf7s;zym;rcClR$8xso1d#rlPs3rQAj4pn==+3!&eiE`*-`6+%IKJ^oQ_ z3O%V?BYqI#W@U3pTp#sjbiL@CS1tk0tRUlMp}|?d3~rV)Qe^>#F&4}G*omI7~SHc0jz*OZHMYxs?r zx_iP7i{Dp8S@-<(BqAguF}m?!@kF|h#9<648Nj?H)W}{Ym-& zglUMBFDMKC?QMAXe0C*dNGZL_4bYCjlFnwzUCJy;4@?qBK{PRt- zrVZ_vUOVQMU%r8unn(gpj5%+bBfGnIkn;JI>$;Qewn$1!eZJ=^#3l7_bOp~T$oyYR zg7@`qS5VX)Uh$c{v%ynO{OQcb?9~?gE4GNZZkXaky!Y&y_N#jB@>+eI}o^YPJ}@KuE$PKc&ncRT8eqV{7d-L=;TVckk129n*Z znE?5Rjeb!PB9PpQG_;1j)@JRy4bFEm9sJ)M*ftMNt)JK0vI|Z+#nGs?zZWH`SzTuiz8C249Vv<)?7)xfkYkImi8=GDYzC z(Fe0|9xA(@qvX3?Q|S=`gNdZ2i$_OKvxcbUmY1C!ttu@T_wc-Py|c0-jW>{cPu-*P)b=Q^^{-s|dl4rjj~93N14AVsd0UhNGj;Z_YH%VX-mOecQ?rF|4%h-`m{O`to(Q-mSV{ zbYY5|W3;9?*toZM>#D00a&mG44BM2)t1U~c&dZF0C#dUgcYP*5xJyxLgMKhCy>mT7 zS8KjKBXi9QCv5$jK|i;jYv;I69<{lw9Zyhr-b+Rnd%d7?oJ=vC6uR`~qeYq5hZ`8f zu3uANUXeHHn-RjL!f3uz^!tppi`6}|Mce1WNt-SNa`B^oJ(r*xV25ro|#OIwz8PudU)D(WPYy9q-bp>@}>Zxt~PeK~K5|s?K z|5ru4gubFB7ez!#OJ|^~F^kj_>cxr<&csz7i^qh53;L|?+-8(0l`!d;8wthcm365M z>)NF-zwp)Q7oE3$l;8D!EyQJ-Syd1sr=qHcuv<`^l^ROT&<2J`|6E^9zL zAS=bv_N2g^yBq~VN%Bf2W1(Rhmouxr?J8Q_YA~Nf`9-B>^D%zVLaMnji}7{9n$LBz!p2GE?AXDcO@8Ls-Ok$3MH>}n_RdxPuc)7XWpC6;i5i?DF>w|xXGq>IjO(fzPHs>Su~ zABt*p%?}ga;2SJ3mn$TyO%9XZj}q{oWu#%SAy}?Xbq(!Z@dIZs6ttR(@YD(~!x`0tLRX2w2Hn@o-ciBq+W zZxySpbxiu>ssAW{Ps_q0skxbI^5r@*GaUAewafiNbxs%?h;V==Krt{hhq8~enUzl- ztZipP-_QbHUY60X-{Y4-;i9EbCOD#ST*|%tl*$J=ie9xHQ|_c{Ao#b~TL3lE#cEK> z7i(eQHe%p6z$Ba`)cooo+Wy+ilC}lv9-Is@W8^D~WM^Z^!SmjUhGzvzSg-d}_nD6v zX>&+19`ckjbuSeBEpFHhPs09S&1MhL$h(*NrBR!pe{&@z!S<0{0oQL#qwp>5m zRZb`GL*5j;l6Rf8ayeHB+f3(5lNgt@2ZfUH#FP9R1{VP^jDPbI<0S;@Q2!GZDH`^_ zU=Hwu0Ys_)kM#cgD8OF~F6Q6UkUBdkVWt0F1={!q$mHKgezxrY@4H=PRM)E1fAbIn zfBA>N{QtH%{y+8Z|DPwDgT=tW&;dYyv9Pdw>+5;7TRn&XS{oz`jNPe)g$0jAfRA53 zDKYWVyihspADGtqc&QFkChsSki=ExZ5Go4FeRXCgMds-6Fn|yj48|bq3`8XWlaPeZ zmTGMQ&A)g(AGv@YCt(<5{O3>1(I-`cs!3#B0A4i$LTqhfUBx9p@VUyNimNIxFU9%> zz>+Wg`1j4fguns-CpXEB1fZx|LT=YSnx#R-#l`6&)_!Ju|7}P!Ng8bAe7SU#6xrT_ zlyCZ}ShOGZ} zTsb0b4dE0swRl_A&aPu|(8!%QpG%<(X_WY<2y(DEP(*Srz(}B5h%cok>3>Ru zI5sQ{H_-(oVt54e)K6S1FdTb^eKH6>lP56X#1=Tme1OTqZKfhd(HA!u3y71!S za3~D~fosq-L4BZ-D>G4_PHk#R<2qCk$~aX2din z@tL54(-!bTXvO z$LFE8Tif!(pGQP2Jq_<=w3)|MP}<4;yUxcFnWR}KRV-b$F6>1q#Z$lOK|`r&-tAC1 zE32Gs%s6PwJBHrC6x}JEZd`K^Qgio_Yi`eW| zhG}Gven*^@3@}om5m)?C9%*ajwlZNJDg=L;A8El9Gh!~iC+)3@ti!wF z&`eKZ;i`tQfxnlSlkDzvXXF6mUyS)WJ1+Ivot^#F|DV}WbkST~;}ffo&&=rH_AL6rC)mEu9e6>ARcS8QK z9{ytzLvK%Sh*hWSV^Y!K_pxz<-};pwo9fNHkmm8ZYdC0?)z9wC<;^fC#il8MrvfVl z3ET#~L~R?(AvZEIqU7SLPRtEiLbrq)XP|+R5XYNOQ1ppb#Z%suPXR|B{`?Z~NznkB zkzY2vVE?HrREz_kmN1?B=zO3^IqmakXa9X8pJZ8KBuBQ`zcR%Ps>{2c&V$y3gZ_CW z<`R^jzQF~3>ZDZdTeLs&`xbL*A&ux!QgxbI=H!IWFq8kXX=MLR#^Yv2&1|lWjN+7$ zkB>;e`M9F)Qvexz7|v%{X)aPOfK2K?x5$jr+m4^@kTp* zcpLKgztfvA01lda?X7{^F#bnX zb@L*QPjc|)*4kRv1xQEPo|3$Dw;q9u9c`n~%+jv7;DI;vf4`Iv$sD&Ciq(lw035fQ zNh%pW*fCr8SX$UX3e#M z28xvP^1lY-@aXq^few;M!?t191YFuQ@!M+ zw|6_O+kCL}@l^Fhz30~S|Nnzh4~H=%I-0{?V`mct@2aqP`+h1}MKG!KKp-R~@axD= zsIky)(Cxi@`Ox=fX6ZB$^Z-lqpN!2EKI!u+bNW%%%43J(qo3}GLIb#!sDnY=n=l&OSpAo}XBCKD>Q>F+1L`9EWjYV`o!1t6W9 zBD3e)_he(>WZZ+ECns@ zST6$h!n)0k&_wIENWNLI_&=tdbxkpu({w#I22PNWMgCizp>HHoFA)AN3Pt0Igs=16 zIK*3}ma~EDv(=b*=tpNgni*RC3B(JI`_212>cc(Q?O)#inXe*6gxBkiOqWm1oGU@B zAl3g$5FqD<)G|=TuIuE<6nFHi-0_U+4{lJ)|NffYpz$@vWKblB2mz1J;g) zZqT_utJ7neM`4C8dZbU2zT$D|Y}|YU!^*3IMd~>%QpM%LHZOc)?Nf;VVF8xq)_o~v zPu9>L(ftmi4Ja#NwZoI`6?+4Q*kO6d1iB1Q?sc z0xi~yQedY*WRf>HTvmqK{IQ{HV?_-%8>{_|D5To~a}raAF)=aiNqf7y2Hhc8P8ND< zsv*&@{bJGC6NLMQO?|N=35J{2m)ipgKZeOSIOMKB-F!EgpMd+p^#*;iT+qb8aq{=4 zgqww&L=MB=y#@wLVhvH{@Fn_$!*7k#{!YK&2$ZKB&s5-Zsq7RPd>KrBjJx@J_GDXhKlCdoP| zxr#=l%BSibMIJxa<1L2xm?*N0()&uNEnmJIQcnh1%J~ubg6j(!vY#0)pnlLh1Mm7e zn)Vci)8Bv0+elWtlly1I!FG|kN4{$LVi?$8q=g+NdROdIJAA_&j;A-5OzlquTyA4g=9BhNh^l#=*~wPAa@n(5P+$0z!p2pFL+njBL=-f5 z8Wf_O#lF@j`dilh(WTnG9MkJ@>0=tt&lRCo46}aK7IW67c|$lj_kCD0+WE8sdpm$K z#02Ac0hn6<>v11z;B1NM$*{aQv`5G>Xt2ihycIEPP&$B`o9u3-4wkL_9-qT$TxF|O zIJ`-+wSMc&RN>-Ijd$vf?0Vx=vy?@kRki~jo1oh|CAf99HgS=s)ltR zy5=wr)$|5zCdmY2~<12fSXvcj3gM{}h>(fmveCa?yDJqr`l7J)1h7M!(2Nfchlc{?Fa zY`-eE-q@y#=fEqcShYH^tav`?e*a!0=z@tUyzZ$l2FpbpsgVNUxt_BMXDo2>@Kpt7 zm-_llnz$4An(EILVdhaJ1F6XW>{Je8oo&9h_~lWQbe*D}sn#kfH32D1FiK$m*ii9q zzuKUXvW||h?6&Koqc>ROcfiFSesqH>uotO zf53_*i`FrSRl5Rn!RU~P7VNMAO$dT7P`NQEhQ#eP88{gw_oq7$$(J!<%!MR64%ExD zrx7Z}3`iST`(EDn>@O8IRy3u69agO+*q2ISNHF%cqM51u;B`3or3@S}SOMe@BDPQW z7yaXbzd^wT1tXlZ66#ZxJX*aT@s%UQfEY$=cY#Qgp5Fka@p4(#b;)^A9=JU0{3h^&HeQi?6ABhT0v*xkV-Vsp-yQ1 zYF;BECy0Z1Wh-1X=)OqprTFyV6oo!VL;viKt@VdWhZo#?Wuf#Qb!ie zH+^*^WyfoBDG7+ypQ)%U!L~!(S1y1teuEtp)!n;26mozaU65GP?tfAzPRL&OI1tb} zZaztQ(TG|E{qp7F7O9i*>F%sN>HY~Yf$_7;1;>BTti7B{lb#Y*f)HXM_>>vAkg>vH$TvID{SeDqg#r*8_!yM#(M@#jB|}t;}#>@>q4 zQ$)ii?u3HZ+PuhWeiVaUNW=Zsl5E`pQRNrtXjf|>)sWClU0e~p0|;ZXHZ9)Fo+^p% zZAa13&LhDSWVdypR-sf<@nHrMQ)%|yQ?v7+5;cDo!xP?&ijx8v)RtrOT;eHkmPo(S)yuuSO^0^<-Ld0D zLVQb-Z_@Ljs>Sld9Zc33+%yz1%zAFMqLJ*6a`qrdT_sQH^id zZ8^quhr3<+2C1B5b6w)m`dAaQK4RLq8tvu82=w`kW`G+UyqQhv8Zd@b^TbBdv*qd7 zNQF{@*;JFhbzB$awOB%ovOGg@=iU#VKa{~S6Vh}IN+5(-oCS|&z@;_Bj17Et3js@h z4t#MAHRD^5pYRsR#Qavbw>HJ($e{?Zq3iW~vq9SViS&PiOITQBLS zh~`hl$T=?+4IZTuLKRo`$b;c{35^lYNQ`VsS5I4~zhH}fg^L1x;pJY2G{Nf=l^q^^ zx;9&t(XKpPq5yL~FA?`p7>;S3t*2nJ zLDmJRLVhV0D%)Zo?LDSoz?zzx!m}PTX&|?tO?PmPfBT}pPV8opS&$u^t}(duHs;$# zwKS=Knoqb|Sf$-Zjz-MTUP`@R%F8uu59Rzvq|y6Kj_Pk{J?V0N^TU*V}J@ zA%E3gT7yoEa`52n;){HGx$ z)?+??vxcd!1b>L?siqaA*q8@UOM_e_I~QjK{+{o z@}C>*LnYw?#bIk?dh+tLH3ugC#I5oWc(2|R|RoJr6%rI{x0di>F%0SWp z`M_*l5xdYnIx?zZUezH55Qmz)tP}x`yhU~8poxFvn^b`R!rEld0HWGd#y#JESmh=a zHpH0KkT>>1Yuy|=mXSwt@=~%(Dk>Y=q1IlcuqB)kyNJ`E}nPbo0_#nvunz>@TIl zBmATR%%xMAI6?M_<(%79_P%nNyBTyIzebS1YR+3#E7~$aENE=Cqy})z%tTE+ez5f(P z);DQDN8suj`hz3SYV%1+;Uh^PATxV1JWbCg&4d>*yNzS>G`=6CO8K%AY(`W_IUj)P z0@%WJugY?*rZWj^mGRh-9m!RXa!&T1>=Df!_yP?-DPSa z3{6NP5>A+vVb_4M%saUZ{wVU5ro|;@AXJNt+^*#_(lx+J?+dVrENWigVo93FQ3-CV zcpK1-70fE6QfiWy%>A`4D65Zg4t#o7B7UUGQ9~gKmaOstt$(oxx;6%Us0nHcE@=5e z^^3tu{j|_DqYLqjMJhU@G9)6R=$X>b%oh|KbXAUsNhTKTY`uQCC^;$!tS55-)d+gR zq|J4>(*-J1%wU^eb_MQj2b%8P_5K2P3y~@?oFkWRawSh+tg8gLL&T=xfMNvu?fXyI z-jXf!s?+#GzLei7l8Z?oG|P;fq}!)4l)r#l+#^^VZ+)!T8-Cg=DXLd~%Lz;cg>_lK z3ZP}?U0+OV>Bim(N@#s=mXYN9V02`?!TO+zZ{8uLt|CB=5{PS+yk$t@biLR+{(9HI z!k}hvdsZa^$x#8>J)Iwnxj$HUj?2}%*t3D2+^4<36IK_PXyUqx9NNazyju0Yss85{ z@PWoCu1}9C4<|*D_f5hUg8oRG5R)xEx`&e|7gH+Q<+;^ez_AK1Ciz=c1!j&_;KK4V zGXb8BP>RtnE&tKTv6!FYYAhSK_`xeSQpBZVX#`b}6NKlTxcp>m3B3=~RYq#|XY8R+g{WKZa@ZQDW7({iVn6a*J!$R0e#qx z$OB<3x3$XhaInckOGq@3(2y$rtro(6RX$8=vwBbs37WE}@rzPQ+Y5g>cLU48EIdAm zeG)h#)|4B^FB_61Td8-OSelq(zxmy<43kVNtG=!LwiCD)!uimSaP^3&axZ0WQqKBR! zo>U~5VQugHCIB{j{?Q8Li1&l=VUs9z?^~rILYY?xIHS*4u0`tM7T=-_&4R!tu-4y-$ed=W)VH62|H|qJ1 zVLzdqC5yJ?#qx5`0ni1Nnq%3 zR6N1j44*TR%1$pw+8Z_6>akHeyl<79fALxybbj#=$?*2vU63T5ns44l_sc^v63NH* z)|juSd-n^JF8wA!=7U7X{}y0*ZX(V;5!Rk};kJd$2XPjt_Kr+qDrK&EyrFx%Zcl%K z6P(cqsFUZ~R?-UAmXlhcKpC85C-k&5tQ`j@Q)wJPH zrD7*5At88fmd2F-;)dO*=()a_$4wV)?|PAFo3y%dTuU*wWcFpO$9iwvLRqWXC5h)$ zT_emcjgwU%4(^Bh)#~qh#R)>f!GwfDO7Q3LQZ4YT6MFajhffMA)2UEt(ulXQItFjg zNe1hkuj=pEdY=8^v!=`xe~))81>^MGx%Bmu^<98Tv$z%=`e>#+ zT9&JZ_AboiS(&bS+GQVt<$Tj@F}tCA*s%tG30EGU7)ve|A&}FTQbortKOJjIV)9)s z@2(*3WQg@IK!qZ~(ZE>S?;JXTK!M9&Npw5X#~q_8K(5s_t)I_Ih4A_tVtfTMQMzJ? zta)M0nhHwFq!(*CZ|_F-#Jp-tky_5i!$quDog&=c2i6&G{p984b2ljBseqK%CI-5$ zQNFZl{>5z5ox+6h3)mG&7IetZIVI!Kcl&R^c{qIte(IdRncm2KUlXEfP2`*eC*fB8 zVGIS2?WgWN1eJmnLg2$BBHJkwcm2M+&+vCRj7u=m`N|Aq9&LY15LUPnl_g%}7fi&C zVs}Cp_PgEc9l{Go0~L4!HY>elSVajfcyIC#V*vm>u_lm*{m_ZlLUP_>vZ;5UyG4NQ z1PCu85(7Gk3d# zh(o?)JL1h<;UZ+TLg}E{=>5qW7O%EBf+2F$p5*8v$-L4#Za;zVOHX#qCx-QRbMY7v zM)sP|?oFI-n_OuEE*REJwKe}ZuFe5!3g2k&td=i-2y$ZBbwdu~5gvd1P@8H9h9uEl z1&Jhi=fV~&9aIxDKkS2l4*C`d90ohcJzL}A@gFn8_BOyi3k+7=W@;vCh6thwsq;gf zOD*y>Gy-+kJzozHhTU4wPhGR{R6VrekkvHOz4GMzj4n*o*o_oyitPv;OD36nL1CCI>lad z+lZ>%-~qkWcA(KuHc-s|t*HSbX(LbB(jPODlPEaN3d9{0q=x?irupR_SzZsNkn z1kqK3oh1pfi45^?sedg7WtH9;tC?lDTSqEPqn&d2Q3Cbyxxckx@$R%sqn8NWuf~rR zUQ{S=x}C#=Uzj9zTpdjxSZegR5y#WCA$!9gV7w`uORo*s6w26!m`eO*w8-2SjzowLgE1WhFgL%TRBETHT#^g5l);bHPBo1E>A^e3Z z4IY633Tvf5eG)6KB|Em35(4XoMeF|cfDR!j%P=+|;(xjPm^zV0x$q-k%#viQ1C=GW z8a@14R87t)uK|DUVWzu>K^WJ zqng0h0UIk^#&_4EDiq9@d(At>D<_c}r2$qyNg;EFVT)U9dL8#jSgo>#Hf5ST zIy>QQxb#S9owh$#mP`n1(o)$->{)ufGc8S3TW_O}T)%mNp_}{$+l4sb>QK>&Kp5=? zMw}}AfULf1@_i2o5#1%X*_1HMYYWets!X8b($v=e|3}kVM#a@M?HUG$5Zs;ME(z`) z9D=)q;O_1gG{N12ySuwXa2?#;_3S+FcmA+o0W)j&beDD2buWAl^lZ%$A?s+PM@4yc zAR=$Z_#tl-)wHV8+mo?uxNkzTyJ%)gNHaxBA49m0iX14B_pkou5(1r#CB|qK)>E%d zuQvjy2Q9{X_2yF$C^&!=DdO|!?-Qd-{Z02=MS{X1Qha==W%uTevv*mAmh)fK^Isi%9j)U<70XqufxZ+kY| zP-K)>OOF07egCr^;cJa)5m8Mh6A=z6!r)7v+3JI6MGG2eT4;a8dUu6&ZJUP_$S?wC z*>PXmd0?c9Qca7RVt>}Fzp{Q23o<1>0_ln)e6-IJWw>`Y`w*b*eu%EOej36F+qxZ? zBs<{eyzJ4g{_V{73{{OeTKsz@uGO)s$z*Yqv+5(yOL9fGw;?&hroaM>j>p*SS2-S> z*e36#c25+E7-AD!cKDtgb4}?&1jUlS@DY&>jd-`YJB!?rn+-cTZ{#%Ww zGXaMBqFZ6Ph7!kdZ0`f9D7S*m}a7uzVJH+a)^DbMe0`TWuL&OTXZ z#D^9&xeV)t&eQK6K!mE7z9{1vghGcwvX5A>li%0+-;ULH; z?6BlB0Z%lbp}noUxj*L3APdB$Kj@|F3*Mo2{aR2DJ&16>JffOHrc19E|HK!nt zVgJCWjanKq;9y_T)b|ovpP1U*(B-FVcQB zSZiIU{W>Uu_hBc$zwgce8Yeq(5LsWC_RtEnO$@0575Fe$t*bD(1PL@+x8>9UdXVPr6(pX5Ie6 z$$4x4ux3JNujX*GI}n%CoK6fqWn8c4;lYi*99_=8oMcWHxQYzY1)u=|@`a+nbqOC| z`-$~WQFaS86ow<4!&rrgUkVE+f0LWq(Hu)A=hgyU#Xn6Ix#i$sVD#D|27}lTve7_k z9OaUBX1L4FCy4%vLn!ZiySrp8RVL#1&AL^$c`e?aPt|g$cK|vSVT{q=uSanS%YU^| z`Nev}8)hG|{$Oz)Cvb(E^QpPCS%NH;5wRQ<#vSIu!4XV^IQl`!GnwY|gsySBfBIW5 zFjHX%?tvLgHtfI!k9E^8rd9~2vEanxB$BnO1O&&4HbJRsG~6NT09rgJ>u*-3cQwT@k7^&6hp{wPEX`#~}K8Hjexi*2T`7fx40g#*+n90~|II|qjVH4|HULIS1ab>?J_ zeY*9vqL{4KxAW4y9$A|03_{OjuDS_cUl>;(!>~sByY9RG($~tXk3FhK2!dyi<6bO+yu)#ockA~HhEcn)mxYY91G&sh5bMNl%NK3GB_yu4 z6bg&GbeRc5=tvkC&;H||luMH1lr>Ki!Uu%4qpK@3x_<8SkS%`o^Fu`$%j&mgcW$~)q1Zvt zLH%(c{Hq?R|9#nh^3(`s^Ejwt`;&iPEmhPZ3wSAzMWX7|TM~Eu>bhRBT^TJumvGcM$Bnzgd%w7 zCyX&v*@82Aj!4eER>imCobA4XzmWYTf!O}2V%Pu9=L1xiPz2xg5&%FeACoJZDWI~+3JB}aWni4C;%kh-fKgk4=){Og`7t!2ufY$ zU}hkfTHyfNzaikfyS`+hGka=Y=?@|)dP0zY{Axe3!ERN_)w?ah;)gIj(krOe>! zAgR#jnF0W5FwJLQcbV!@+ zR_T4X%8!l1T=0qSGp=%VJ((^VaTak@=e>UKd?}WlLz1zRueZ95Y$g1I3D#DqAXARe z@T-B@X`oUDwBoSt#lrdrogw9};c*0v0f}BYg9qK;2~ja>CZbeH*}C+$46+xcE)vzD zaKuCt;ay*nstvTD2~Aq;#hmC%A6Z%FuYuMPe5teKF7gjWDo`#ly)TZ|lnw|f#D#5WT~0>(7FsR!ebU21HXeFJ-N5fnF6HooRCpdAoGl`C&{s@`XoWNFc-a(~PRE z@>Scl6si(vEP>)Mr1+X!X3G}Zbq|;GlIC6(_5SavAW{_pc#6Xp1R>8jXIdOv-vn*r zjNg{c8aEwLJV!c_ZamW-c+}7m%QUrna8)M~#F?+8lYfXxeFX=tzobepqU|w-ST`@! z9My3JnYl3)>eVeHCI5CnE7w+H1`t|6j7TNL4K8$ZTtjXaJKv_=YP28tk}Bge6E-YdM{0y8WA10??-zBhUfHeRn13i1q#{iPRH z>BAf2y)dVW735&$TM5^h)^duwXFXTBetR$rS$cjEz`=}>w=T;vUnJMkYHmhs%YT`)J8)FF?v{2SKf`B5&tMeK^C4@J>6qA#Y70l zYlJ75`cwarxV}xWAW{Ja3MePB9I4r<_m-tQ{Sr@gdG&($Ih}B~Cf9gJ&}rJ*#|gjD z1LEcTwd8y}UpHKe5x+E8D=ZQUS%PB6At`_i_YN4zM0lYSPKDB-&YxDgz+v0)EG+3G zp-!CdSV+2$`a!|hgH$Ov3umIv&UzSFXK^YPbAWg_PeEhJmE<^Bl8G9oGbIe2-T<}? z4tBh~v+w_ea?>?7i}S0BeAI&fovHj{)@qhTPvj;Vxw~>rhh?kzn{(NxzATw1VJolB zGd3red(r(nfyJjA0Y}ciAZ#&_pe_h?S;FB4T(8$*pRzWq*C@Bfhzd+!+m2!!-^lk9 zy1|+p2R>Y?uAfd%^~&neB!bZuY9cYnKks{vkm#i36AgMW5sGuU(9~Q|9tWlQPiuMSnxTvD}BmIg@zYwR&hY!$o5o_7o+L)I~sZtTfywwG|dN&UrC2AODw? z+`ZYDshNGow=qVsXknb}XE!4U`Usn$AV;;<@g(MZa84Vl-SlpsxQ|89bia~nw zY!33aZBF|m3^J%(-!jB+O9oc8zS+{9Jx<^bi~8ZQ=N;)t5@K~n2n!x5iH2y&${LWR23h4)lC-pYq>xYHxFUYF3NuQ)*BF2lGA zEF#kDwHsWgqV1&%crTYgV7j@HSw2&m@wXqHCTr3aTXSSWApIE>QmyC{^kn`deiqTN zD#`8Q@PXmelsUr+h7?*hLkQ^YA)@t`*s)@bI3udz6dBljVS5O)L>Q5d5V~utr`FPd zVzmE>fBr1FxOM{Pn*Ih>gT*0uLroYjg^ke6ghfX#*f7w> zw|uX&Z{8K_6RStylLtK_PC@x99n!*C=f2bjb~ejc5^4zR2Y5`LZdH4%6lp=|T0NmV zBqfRxwSQL-h;=>}J2p+X!~J0-$CJo-)X5Kbh&eO)XIzZvGx11 z-mQbNT-}X*ZqbZ_KFlMrnpoi1r9XV#{;LzO81Sp2iz9-iqckb`p61|Z&G_CD-XZ#@ zef|38C5{av-6J#G@1)IKgzc+hZs2KRx9-?Z-xa*Jwz-CDvjO3WDoFI~Zzv!vzXpddS(m!IQ`E=0} zbG=z|0O=H?>pv0(r_rNB3{X#llH@;cd+dE-dEbYHEE>>l(osF#WFeA6+A1X>JJw@i z3lxK*t-V>g2BeC#OCj>hTY|oRGb%|K2EDR~X2k4v7G6aN{ZoZE^V82*v5}4@ksr8V z#VFaW<@Up%QkkTN&ou|Ukcj9ce_E$c{HJA1s=i z`d&hed)-bXhZdW?f4z91-(joS=8at(NeHSPeINjFVEHqMtr*+S9rN?)b{2uw1(G#s zGlOvXH9EO^!)T^RX61M*gN$T}%&Rv8o_X=uS?ZR#fxgwtE-{7LHjC3kMgJ$9?`?kNvk(SrW|AdMK*C4%VJqXzw<@T58_ zBpR9g4@lIyD=&aY&T(aF5FiP^`O9Y|s0#5bl=lbp!Q4^~d%=%=%%^9gbqbt1>*I(C z$R}bYU3=nrO+4E57df`?j-K1UT+m<6=iK=2H^c~wt>m-M`Tv?L+NCjpn8qug6n%9Z z6awqMZcX~oBuH~<p5$zza zteS9kT7`;SV>X;#cOz}Fs8RjuLDkXp{q2YNdZrZafo94CPm;f;zFvd*M$0Z7nRgS) zULCseu8qLdZ7+J$V}&r|97N+ zuY~HTf3a!Z}p8|qNGKC3Q9OQIDCO@x@tm1X|$P|{mdH~A#uX3 z8@~sPVf|O%C@3hPvF+mav!Y49Jl@ND*m>qhp84Up6&IYfiQ!2AmO7B0HeQwlByyCN zE*^Cr7O#d~kytL(m6RaswUDW)sl#BTi`sOQl$Aj#vLV-SmE^@bA!|1P3hcJ} zF8Fil*>Ki)(HR{v*o)gS6%fXIkgYwY!&YA&I+CG4??ASkqBHp42WFt}vn=sY?6tpm zmdsOwRC8TciAZ@gSc|m3UEe6+x7z#>j24C+nAJ!xc(a1*bTE%(lCEgzlm3NHDE1pj zfrR@#P@xy0{B(gbnSUe=gN-gfYe)iCy;8QIe{WP|m3uJ_gC1S%*&cLThmJr*nT|Va zcvFNb6_0g*$<(djiOAZTMbA7l(tI~bS(ta6E#(wXOKNr+Lelu>lZ_EHNY!NMn`c*G zY3+6@gsUs;1mVP9kTwl@zDQBe&V%Ls7tB&Vds=QNemI!Ca+RpX2EB*9n9_8)O{*Oa zvg|D<)ig8H6ZwUn(N5@Y-2l5AD{d|4DdF9d5#G=r`leQf+EtCXGvua0u!uP-D%p{q zzWsLnW0?*#bUGKKcMKIBoY$uxVbWkfvFK0(VtIQl7C~MQ-)U4md>8T0^3bcFPVh@^ zZ~J+?0r~ODNn)0Xc{M*f3QEcuLf|+6T19eZV;Ws2-PkAkYyM^Y%^r+!#~jpK)o|2H zEAc$N9_GIKuSgsf+QB_nD+cH~NIQA=8=_equT#t&o$YePIBbP5 zeUTuWiP(|vFW6`*A2@2ik?;MD5(^-2*lAB6S9k2*R8y|_h*1n`lIcU0(&2XAftK@O z5+g_1<3?9LWrf{&C7v`%9u0DL)*8r)mhODIGI6rI^PN`r)DQbNFc2%Unjz< zl|1WN(#UaL>+?A1Gg3E`8QBD?WZjN?9rqL`gz3u|4(6jIYVr=(k0XB;ekqJL)rH4F z$q-oI-XtVWp&0$wJ1S?OACkNBw=wmL#M&d@`_s@XMziU+(F;1llTw^%EBK>V*NyJk z$+y7?Y;Iy^{&$9Vtz4^S3_fW)e?1W$+WGDUU4tU}9h?w&sF&E*cSIK%6KE2Qb~Vd11Ba@GU*8t zP*edjii{=Zy_NL$woBDrpU&!-?XJWEm%2YTEZu{EYNxuM2eAVGb^18Bgjnw^9eI<3 zV1>FX1tm#+-j_zdID$IOvaFcbawOI%{ot&-?>Px+u+3WGIifOQ2-cJu9fyc515M=j z9%wo|Vg{t=$4Y)tX-s*l^y)936%cXMsgfsVYt$d;=L>Vo>TxP`MOK8ZTK%W=m zjstQ+RvNI>6YB(!(<(f>6w11bWp>>RlqnV@Xgao*X{?XKM{y#oD;UlW{`A_{3;4M2 zb4)zE+2MI;t6)3OvAODFN86oqwnX8iiq<(YSN=dPj3y<-1?p5);bRtXxT*}5iUzZH zPzi@KHGl-6Gkji1-|}?Ha>{2DI)V4jf+iP64A)g>&iQgp@vTY(Zs5*vp;Glx_vQY9 zHJ#rP|8%)gjCvIG0rBr9{=Fx;6m;DwL3o3j1xy1{_o_>Xn5Sd6!+sFFz>T5RGo600 zt1MfSIa=7|=J!CF6EmOm#!y@$BU#Ubpe9%41iuqwCrz4IgNg6np0CR**fQ-Q;=QPWRCrlNSsbyFq1ct8_7#U+z_NCqnl1c174bzu%#dyBH9HkTO-=z5o zGO*<|7!3A$x__-k@NwG$eN3cUxLICL!N4~*P(3|8r`8~0uFrreGKkh!wUCGCv4`Fa zWS3l7fzA!S>`D(ku@(u8^|*t*)1&bp`WnD7y?%hT4bruT>{u>F;bYvs(zbuJx4wz! zi8Q&FjrO-6KmWP$4Onzz+w6~UA9Z_|EU{vnM_8L|NkO}y^tB||P64G0^T-D~MqCcK zDqr6t7z%h#0E!Q7I)A+n;RqpTDB3juHV7y}lELnbQrGv%5l4aC&yBbD!z=h&C#NUWUfPyhO)+9qO(;KQpJ>G`Z7fiz=hbb%g%93zsY(LTdl zcTNX-4$js+7xJpDgufr;46Sb*552jeUw!{qC)N9R85FFh%)Pj3g%6@S8XcN8-aMVH z*{{aJE=I%E+udC3o%EP-F#)y#AA3j{*3Z89~<(b$LOj644sX?%Ebj2SJp zP-4@eA^&n2)^z>7c5W6}*YMN1(mQG3Mi?LX0RTHl2A8z#Kd<2Zdn1{oinWJwN{lsL zkmQ?Gufy5-+S&@tr)QX+(E-G&0|NvXQ%5Xh51SbleXnN)$TN}yP0jr)XJjpuhW4N_ z{URtw-ZiJ=s5C)V)^dQz{eK^%@K}PyAi5s_{aF2AMQJBP4EjOuhcR&IeSR2^==Caz zc*c>kVk)f}3@cBps>B1$L<~8J|!QbBc=m)JlWLhQn*W!54@?MoA#ks_Qdg zUz^u!!O&8x^`j%Gj2T1TXHqEB0*wrvlUIuZqubUhbWO&TIs|O(QLEhII@)8fdt+%C zak?mK726Zz5<(i^iGBpi7nU|g-4@6!RMe{jOzP=>xjoE1OrfIxdw?UR8GLdRp4KvI zRc$hN4Tlwewzq<>lj{r;PH;~Kh9cb%go~}r>xS^Htv)A$x5z>>)V+%PW ziwDmz4Vx`q*XxOWoEubsYn_w5(tzT0cCwH=!*1}5G>;1YMUg;y$X zB(teGYhxw$!K|!yb=`sJK2zqc5E@5F-9Hfu#VfT08C@h}!~Qs=w(Amp>S z{sW`OCUQWhr>E=CLZqeY5!v|OGjm?Ax$ljc1DFm&fQz5n)zSAkclmfto@)g4V#(Db zXMsQqGl{rCPxujsufIN%a{ahT6=GIKHB2U7f5pgF!jAaNwXC}Re7tEH*c0}?3izlDW z_MU{6s~|zBV9Ll)B!8Sk)2vCMVUOHL<%1C;RNyLT`GoN0_jYva3TJgmC(Hv&>Z)s@ zn3ijrIU4+b+Cx+q(b>n`F$D$N@Sg&H4!l^5 zm-1?6ju<^G5)`V&KMnPcC>CuodRHJ3xsgI|U_64o{e^?}v}6A;;>Ak4MJJ${64LWK zf`-2q#$C%`Zc@;}SCM?x`Tj$?rT|{xdWXN{IbPVD%tpViFXm>y&smr=Hu;n`;``-& z?*5Cyr5UGvhSisT(;V{YN!Kf>VgK>!kN zf!$N!?YSgNE64M79oY=r$a-E!G~NMJJn_7qN#7sYDn~(h)+I-J9mx^8rV)x0Yh=bD zA>=cf5aYK58rml?N%SdF^cY*w(}ouSOVtHOWOV6f`m4ce9d6y;$w+5v%-rxJD%Ys} zLKtZiq93zbq0yd@?aR=T{eC>I+fsF2by?Ym-J>T2Ar9!(YN%TfdJr(sV+Kn5UT)9A z$r8;1{qmGNcyT8I(}%Xo?pyeQZY(s&6O$U~{a5P8>zH6~B^KYz3xWEMz*Wl$xf|R} z<8i}U7qi(npUc-#bfQcuulM$Ig9MBj?WvBnHF%f@9$({}J_t6m9g1(oSSq6lFs5#Fdc5FgN`-AQOl`)gnrpD|BgP=#u^dCHtPOQ1@~Mwy zob+e8;!(?z$QV?IJ1-VG^uH8mHac132c$ioeUA_Vro@6?|1FvJ?jPqW`l~m~Yar6t z&K(_u+h0}0&GF^&7MMeJoZs1Q{kosyNTQ@EM=Tirtj}CR_p#I85215A4@FO?2!|Tc zsbJMuJ?1zzJYldeiX@zy0L6a9Hu;fTRWch5xIk+%PS7Oa=rCQxAe~5*G|+C4zuuZf z@qOVIgnqd+-B=w8`*%NQyQ*ZY(94Ym=no3{ z_$TF=vwAD#-SCkc=FH%_#YvMzcU7Y% zVs18~D_?G9%601bMIg>9;nncB4Qk2nY2QUVDMeSSWu9>#$5$)XAWvIHgi&t4mRzqh z$2st}Ds6&0Tm%=g#vn}VaZEfoq#=^z&n}uC6uFo6-}%kbd~!){I(KdxTaS%W{I5>kGd>2`xYaY!E)4zE7(to31A`io z%T;NzyZF&+iwfSCl@I*^#Yzw4hde+wWZKC`A`C9K0}q=&oV2U{AfMpg!sm%57i{NDamo8Z9c zGbvz&xtN(z{QdnC4m|aa2<3eRL5k zdJt-W-%meYwEGdrtKf$CH6Q1*O9_-ChDJDtu@EMCav-(HgMq10e-I>gl|DKf+Q>*L zIo$o}Vf199Y0mf}gn(|MI-=?M(+71<0iYiBbS{rF$wSgB(p}#WXG#38X*;!>u(%{` zRN;tf%Y_6apsLqiX(CxoW_yUY%CggLrF_P-V~n})J9ggru+g9JctZ0vP15eF)ZXjK zS6_{&*1#1HJGpN9tb2~eXDa!LBvKV6Vd?C-cz9k|e7=9alH-aX4LIaufd5PT5$Rdp zU(JS=$#PqNvIFbBgiNy;Q3^L(1+IB(@vWnSv3?RyYj$W(P7iizABVFTys_`)94<%} zq$Cu4{WZW0YHlrLf7_GkPoDc0Vgj6a)UznJ^O6RU7FfgUiP0t%s=ml!r6*#3S7tFx z-R{9s72Hv5f9MBr2QkcphbVr$2pUhrZ8yZZM3Yow7qHifrRAyqH7x(vF?iiR(M>44 z0qhUCuReMJ+JV`YB+bO;jMytEB)117z)?!e5K@}f%1g3cpWn1tR=y_$ID@-84pmtZ zKEwX@QBi~^vgLzyC5^=u7wz&Vu^#0HslZoOW{plkN3S`Zp6U?w4S0P%HEyw!;rGh- zJ{Vk122f%oE@3npmHEAp0w2rtY}rIxklBg^2P+U0;9;wI>rwsVPXa-N%@1N3nZb3@ zu1djsmHM`KrZ<4b{}->;iuf3O7)+h%ix&*Y2|k>19?jXvnOp{j8ZIW=b5Toot$3pt z%*AY6<5U^RWefg+o7bzPGA#lzW$9!Fp^;#ELC^R(H`q`gV-3mf+eSPmJh`n}Y;&~s9`);^3 z-rgdl>@W;MbDtj1){43c^YW+kUO!|cI&~eY&!!!u8+lzkeD=C{CGj(*XYjiBWN7K- zs{9u9KAsXbsdgG9S^Do#EQ`Stz0pN z{Qk;|q~3XD9DP1DDihtLUvqhRpiQD|0|dmEYI|wrd=)*t<);R+P~Jl=%I?GAFWyhqVBAy|=3zH&8B&^BMFLt| zu|u(KWn|j_u8o$jzTGCaC~y93whHN9vlD)hA6e6W8r)pdX7JTLQZyXsOpVV5)seI7SOqt*!^K@%{zT*toLhXg zC9X(WKqGFjcl)ATGuvLv>q0cqz3XVad9HC+i+i~@^6g-~pI{h)8y*ig_^TmR+ocTg zS*D@4LbR29P=zhrjWhdpdjd7u$}qt|nb+aZ@wlWRp)1ZgIqOWU<=ih2->#r^@*dhTdQlF%9)xr?614HVJ%}gZ(^=vXJZ86R|Ua@!5mw%pfdVX^D)+GNS|BQMjZ?eBRDS|}Bz#pv6^VI$N z%g9X$7P4?T_@xN>Qq3B(mze_Xw*~T_nk3>2bD!kis@rs%)aLD87QuPqUk;kH{}9W}>K+#lC@(UtX)e&&h!k_`V1;y=B7TOn zic9i~h{*nHF*>g77Trg1&d`79%)Ip+rN0d8U0ZVGz_1zc1wnkiFwraW>Rx1ZM5K+Q zqQ&0}h=DeKCT&P_+YWv}R@(!=uq?SOf1-}93lHN2|f&)!^y4=Bb7^)D_VhH z8b8?HCHU*ve)WkCwQ0)qii}cAMQ9I$D}{h@GPT;9WmmzQyWRQsa-R%Y&QC1*F&|cr zdL=?eh(sd1Z|GkqNWHnsZ&hifF+8bpu$*AF!uF{lt)vKqNV1SNm%k|S4nR-&_Z$5h zT(eU6w|mAn!)cnuBfD8zXKLgzNCsjS+G1EINxDKLJ?E@L5m6YLt3TO1d6Tf%nAMlA zwKJed3Y6)z3X@ZF|e<**?sD7R+)^itp)C4YcXQBoHZ7wnhSn#`8tr4GhP3<3UxKqxn{A9_kybh*0D#rhJR zMTgm+<5K!?@{GRdsN`=GCyG&GEvGc`oM=aK(mjez2Y7jA*BggXJT#`q?$H8eER7vY z9N~R)5cw;YqK5YsTZVq%qgM zWTLOy3jKCKKEB~i0f)3V5WnKx2u5>rGywsE?WEjf1iB#!QFr!ARS3syYbNs5uYd*U+B@Ph<10*Ec{pWfWw+)H-9MB+-ei#@F!?wu(;k8p$_ zRoP19-Ua=CE7b9NQJwfP2al%8#r{L)hHc;0`i$hNCE1lcvy;ZzPo0d@n3y^SL07|F z-4Fbs=`j{uK|jozdHwGByfKKiTRN>C-MRj-ycPQ@UZ^bH?0+1k>TJS#ED*)()bEWx zKKIfEO^lC-No5QE{w+^NN(#YlI$@Q|PtQWz7xWzi^$*A+GE5?dZXWR%EyVK#$s@7z zyZh-04L6u%z4oNy$nvDOmiBLxWd|eeiLOs8gzXm(SC=w6I{VSK8fXUHI9-?pYDCl#(1h`-!Y z8UR&pb(0%zlLt;H0nx@ASqFfwb z$cSC*GCPqZSsthok4pN+cBRiF` zc1Tv!iXj7`4LX&vrPKd%WN`PM#+50vWnD4)-4N%HLeQ1NuJJw^iBWTETsdA0*zWJ_YT+Qa3_KZGsaq-=>${A;;4Yp&dOM1P&gh6T z#{;5Pli*(6vhSY@mK_GrVbf^Yh$#BoX?C|x)wf7L5rJU zei+jb(OZP444XI2bC*xuzo}!tJg={}&UO>gj!%;HIj_??Vc(;a#VrW|BVY9_Tyc{m z)M!hb1k-4kf%-&i6_56w%0R8CMwpe3Zh*$bZEnCUtHO?Wa?m}2job}7Xm~dC8zSmK zS!k#2>(lqrW6Dh+wM&aDec*v%z2ysSeeTqQ(`W;qJ-~FTOWUY^q za*M^q(w^5UTke)BC@%g(W?x+~5sO99?RBlmH?|&$kevMsgSK{B6xT?b)^?=N`N*W_ zASw$@;Cv2!@=w<0`FVZZxI3xJEm)2Vj2#E3+1fP+gw@U?~$(G8>8@V9j1hNOrzCri!>1Dg5=j_ht*E!8S?O)p=$;JCSdq+A6CP zvQUC`g=(eS>LQ-CKHq_oapX3vpd-&PkGHvX7T!dpT_83IlhJzXCoxi*Ys@no^E9I_ z#Zhw|2_HcxGvFOiLY&LY!UGW)Lup|A2PQ9{Pv>wOsWSfajwavc;l(sBmMgxnH#yp| zp4uLPz)b3QQA#3eIVaS07mTidzE{vsj4=Ws8_JWQ>*-(Y+9L`@H$E%VITVMEu}QRC zlkuu{vtL&F1ID-6bt2qeD*9X&N8_#Oiio@Ob5-Dq5wgqNr$4u4R#K z&+*70PdSjM-U+FEwNJ?@cp&KJ2BoKDVnduc#K=a<%qb~N*Vr{T2W8rrcG+_CuA9do zRCLDxdq)C~b0`!1s6(z+!50NNQ|I$W6F7zh?Qbn7!yZJ?3k;;> zf1A0Hf7CE)VUXZ-UpAN;4Xck? z9Avw)6Gnr@fdv`2{0$cVxL}{ieuc%s4LL)X7d6Rmau=&xL&vYH3j(008~h#mRd1uN zs2G;s=JfyzJ&GWy5{mnn6bop!N9>63rS`_6&A0v(|NX^Y>#+lx(Su0fagHc2-(>lP zkjA^!@aUojyki8aqlwHQqxKm}{9Oh1{&gwCw_31hPbw^}0oRk92Jy{}liU21ic)2Z z>|EQUPx|Y8xbfuyc{w#OzmjakBP(6g*IQu}sdacfv>5(vw4X1x$Heyexc2-T#l+o? zrfdXmf3ET*wZVOG$e2jP3UFZ$JK}%qlB$hjQlR<7Y*Vc~1=fnRlq>jG%$~m@i*v?PzWK z3i;KG_ogR2PZD*d;0X+wFk?PEA=Pi1rk)|cqdYd7IK^g3Qd*aeLo%ngDFvs#*!+G79-%|GApHEw%yYm zJe!e%%Qbz;7p89hN@${inII5&s_Wu%I}RUK^awb=>}fMQaGeXUAe|m)g5k5ssS{Wa z^lmINxfPymH&(HNTD^#4+s80@m-K>wkHeYHn-aW;c-@a` zwZi!xXxJOlJv)n$L)P82mug98ot32Tw-b*k=5i1ecR7fLOBfIv_VJ2MX%0OGsXzP_ zVKKQ}Shfng84pJ4n+21sf5&a&thK{@Dp^A!VHnI$Nt(B}Mq%)6VrTL;#IfjXD(;ncLXG1NNJgocF~9nPAHCHOK?xJX7s zguYhOrve5?5l{nDlKMMUQ5r7ZO9_UNDTGjiXC=HSVe!NXF$vC}v48}PQ{aGuik!Tr zK$O&C0SG5iT@mpkl|hTqHjs-~qXhe}$@FU07CXc}Rac?oUl?KrKA}h^5f%1YYP<-< zzK&9r#ZpPOHKUnYO%h?*_ddFs_2Hc#0npzUpxCz#(fhok3-SO8Tn;;7i5~-t z){H<0LUoX3w)$%28HJLM-#M9IooZDe#FcMHmv!YjHvYuh_d!9fMSrz#aH6<17Ob45 zMk#Y;)A;R$n<-C26u{_lr1GeI77~?)N<8=fi2BN?DA=f58A=f8losihl2%f>yFt3U z84&5tp^@(H&H-uZ?v@-nXYRcB`|i3wS+E9p;yiorv(Gsy-HhVwuelr<)bzlgt&MW- zi!E}iXV4-}#azWis5#*Koa%oI@tRDsq9dLS-?RZ=o>%rgd%-wOS*U&&Tj!^bHdZI3 zf~^dEMK^6z7}@?rjZDbOiVj$Br{YnH;{iH;b85+}-OH8y-GPUK z!7BGja*=|dWje^UUG!D7*%zl{%SlpLPfVROy4e-Nqb zPGesny3Pj22b+d}v-Yo}Y@@NU7B%(f+{+=hQL38$GZu4I8?NXAV$B~gn@)-HVmpX9 zG|kbiN-*R2fN>QcXv*-_S)Q{nn^;U4>>( z-?6zB95X`-a&Np!n!XFM#3D4&hIK$)+^? zmYtC4As@gt`FP6cubk+jU%eBq=;JONnm1dj^L?6e^cJG+%)qbGh65beXi|67B~5ri z+i`E>Z#2N4t;Xc@kBH2*4aw})XL=EVGc+E>D5k6iaj?3+juRQOWOY5iV$=pIxA`kp zIC^%6?{fA-6WEV>C=CRPdSgG)Bkg&%7SR{{C>T^)^#5N37N)?7JVy3MkE}JK3ndqE zXbzCma+&``o?c7HMS(v0Vh7W8#aiB*zbs%?PCH!C*=Z^tl)7-E+rw zMU%{zT>nVHHm{LGZGBvdm3f6~ls2im#9_c)ng6xwQ=%BYoanl+jYG@A3L63?zYFnt zyTOuYOABpBv;EMVoXvSLqX-lU?`uBcAY9+@wL{c~;5xZBBH*8bm@@l!@hVeL;<~ec z$K!r!>oB0VHk2a#EZ9-dj8I&@(p^>x@N=Fo{OYHci=<2~kZ$`zHMc_+h2*r_6VeJU z3i9V?!Y{S(+IP`ayP`kcY>7kL^4`-7+vZ-zqEZ=yhm7Bag-8O3ds5?Pl3=-BCWTw^ z3Ipsp!?&QTBCTBE@Mq{O-fUN3u4~at85JV?%NsxLkM##gwHasGG&GRw^#y0DNjjpG zY6^j7K9QcK0ym$rD+4c=5=?&!tii;DNtX_$Cb2z7ANhczHvwJL%7zz*T2j4E+!V7S z-@!ZJ0glP3g|^?|a1ty#X)SMGdi*gOi8M|~P?dsT{)Zu*6BLj@Bf|K|WHmR%We5vh zu?rv1FjmQKO#!m9HO~>@Nz``sn(@d~pPp@%hDlWvih-#gXK@8jdL4U*wIRl75A}v& zdZ6IJ^6+>w+&73%CZq?b3VTQQ9!tuKfM#^BKu-q-&<@glCq zu1U=Zb~fS%9tqINj7vRDHo~-^)oOI`lw+>_&7IOZ1@*o~TiVU#H@B=gqKhz{MbVCJ zj)2I2KfCjEA0DhY{c>)kZ7r9V`Wq;gFtTUJPYln4^#qSN&UW4S(XyO-xQ%qHFVPc{ zdcr6+qJ?KHZDW#&yLp!1U;NQyc6t`ibZ&=$d#>4p{#H1l+k$_!RUNk=U?Mr6u_*W(FkU5-rFtSreK)*L>o-c=`M>JO=hZ4 z(QGd(b@Zp!#g_I|AmsM(ywzH_QK)K)d9YaiozzoHl^j;SlE$L$lL)@Xa<@Nw^!A&G z6&m=9E+PI8J~Oe_?24W^@|`Y2V!O9jyi|A9?Y)*AK`7?5@(#W?DQ6%B_ZLJRxU-WPPI_V#rJQxiD+Q5b275neuHRudt{7gVw@dua)k9zl9 zB{OFqy>bRUL+(6F{&qF+CE~ea3vr<14a{*A6`OhgBw-3cH*Mzq)(YXurXiZ9)VM=+}MNUr8x zlipvo7B+}W`1t2Rm+{b}YB)@U_4>#eU`?*L3Pj?CJaq8nwRuiwUVv*j1 z95=OQ??gXkI7`bD7vGPAqmj)KQT1xJ7z>g5P(dgR%H1ZpfGLIdgHWoIqFs&WnA%^u z&)DhH6YqSd4roNEbt0*ej!~7iw{si*Rye-(DauClk>EQlv-uJw*&S5KTLsr=T6gC- z5l)4;(FL{WcNE~-c}opxaU6Q65f5U}aH#ENN3v7j6Yp-l4AkqQhHQ;@qr)xx7d~El zY>oLRXIC^9S^E?-0OhjFhhRF7L2PzwYe%EbrmIhMlMS&2`oGc;n^5t@}vK7M0Sm5(Pvj9nhwo2X(CO1U!l#y4=5HwTB02` za6+2bfAvb+s{6zqZ|MxKDj;2mXxb$Q&mXUcjZmt{{RgJbQHBC#vp1T}3D^;Ag>5=Q z^7qHJiD~E=YF?96GnQDhNMgsTV~6P354It;?Yfpv4>D7)9B0speTRS5*3TnT4w8$4 zs5`~{Dy`RJ_=Y^yQr`D9+7 zaYz-Pw+~2tb_N}NomQVd$_JQIrmii#H)4$)oHk3>uAc?;P)zuge;6-|wSS|xO1m}c zKgsC4KTiCZE?G0sQL*dXCB7;mElEq)>IHI-DsZ|N^9m4}nb;`0Udtk2_$zZbP!uZH zhMuza@|%fq+2V$Um62(ynggWS^!hTI?}B@#P_e-;do9?2DSKZZX`x)oteSLNgl5OD zs)`;1NN>CAfHkENv(nasRohACE~z zf%@+x)f#eB9l%Ni2NS^GcJf;h_lw*jPG_q<51PwXw0IXvwIU-^;QgqUrGuQoVS;AS zI$;E^X8PpJ` zbTdD}RY>F2lie82K-)=V{O09rU~%jQ>o)ZAw51DGc<;2N+AX>c`Fa^jQBtVSJev2_ zBHpE6*@zbRn&mA%!B^`Ju_)EKt?Ix-Ai@gla4|0SRuTbyp_H>~z;=c~bgiG(dXG2V8JsB*|Hga2B59p`(&t=Oe% z0(LMnC*ycD))7M+MM+m)XA$RQ`{^vG4H)5+(W*Ss~Zdja%T!yC3z|YJt);HIUcp zy}8&rI$01-KX=l!Co86CoZ(Y!w7Rx?9^c@H`G=dgV6kWBa0sKo+faCt;xh`{ph*<< z*;NJtrbdg*J;%{xU3mkTBkRqxaGs z(AwX8QbE3ebw&}|aq6v&^;|bb+0s2|(A%_4Yy5vRNkN7b*yQ`6Uu{m{bovg%MsL^E z5VqwsJ}wZHPFXTG%LH$;(op*D3B}gw$e4)`=#6_Ps*xW>*aQxj!LkEY2={~whTKzv zZ{V4)r}7WqK3S==vt*jvGdRwXLJo83FR$813!)kcGX&s}Kw%`e*V%HaMg-Bu5%Evv z*Kl1zysxN|l9CMnT@()Xo>G0wzxnTtGs^%>+^s^|K_wfFbU@i2hUW2NNWPTG*L({1hAExd`38FKkupdp`KW5P&IxiW`>t5D$*6naYSmuy;q`dZ%P#PP(x6U<&Anq$mF} z&p78*(vrG^jc$&W1-x?7Z-a{ZfXR8%I%h3``k0CPjEu}Ax%HJdITv!hD8b2T|8AW; zW_rQPB-Uk?b@nHOZYLY$2JK4@p79$?QS9kD?Fz>)Oxox!CZ~ARTH%||tavSoP0cuK zbs`7{Xyhg`V_)@Ck%w_3Ijmi{{kX2CS(lJcfFcoST=~?AmFCay;WnzL$0vUU+^gUH z0w9ho?hY!;GnqYauiby}xmq%l{r59O(U%l?Y4~d0QDwoTN;~>vw~FWRRgd9xo_QK!K5Xj2*)H#3D!e(4K}}suVl?2ax&mp z{4T%X(KKaSQ(H#HA)*ttJT2>5E1NH|TH$;rH~f{+W8xr$ZDKr!p>}n8`5V?j=`i)y zx?B{|PqK&0tQ~8QXqA_sLM8GiggtZb|4A*InB+CR{|)k#3v=0kpSLWRAC~a@XfafT z(9pF-^U68V{Km11JdPyF>~bur3vxW9uP@B1|72@5)Zo0&#cSq*yEB0ko&YtBObz6T zp}LB)Cxs_1u3ynJb7ZT&8Fa(AhiSJy9>a2p!}JPNw&hI$9%pN8n+#Ovgc@?`t*Snv z+^UHsi4=Kxd1+jphHYn($UW5__JUz~c%8~FOvpqEZyB>|RCGFgWrTDBq2dC@P9WS$ zxdy6#Kd1#{D#`@PsdPQh4S*lC6vNrptAWWMcH5=D()gP{FwB!TpdgzxB&&a`>CRn4(jjbW*FM=tH(Dq4pmwdq>+ExEY3^;#Si^Q%z30-bn8>U5(wYHu><=>ai&wvhD9m~y)px)vm;bI@mTsiO@jBwNw z!HAC*N%}4qTwwG`ObguX*_rx_2TL3FWuE)zA9m8o)iHkdn`Yj?72U+Lp-(`%B$;mg zOkyC$^z^igq=(iT8wR-mhHev2UsS{~gXrmCjE;i0tEOUt?s=b5o_a4sqEEt&F2+*z zrKITbaUMQ>xNfVAI`n7bQqwwGcF}QQtYP@rcvzj0dK>jRX6|Q`#-sT{3EAj&oeOkP z8y9Iyw0-6l7~L}tF+bk;3ZcIcV4qgX#DE;DNPv71}+v^!{tzF76iF7oQ)*c25*^f^R)6|@oyR4UC(nJue zDVpuPme{MM^Td6vuVbWf(4h;)%zxLig4+w1IHEGyv$C_dSZM7TM@s74ujwQtB~6ZM zw>f0elN4p!pKj0e+M$v}3Z))K6M0I~A#1#I{2z&tSCb$f^%U9dC|jv@8&_BOK&(eg zF;fK7pMdy(j&h@o6iZjWOy`}01#3_Ni7zI{|30xC6^pe@ni_Cr6$o$PR`q2x(I=E? z8DEBfzqxHHj(Mb4`wNuC5Li{b7VNR;-^&g2; z+Ps=nJ4K<1;bN9V`aJ6^4xdl7*--AT#H38B-RxjYQ%aJSQ=epD3t4aKZ7K3o=O<^f zGa^QR9U*B|If#~+kM2i}X&}7juWBAvB8TmAUi7e%OP=ISx978Ise);@I&txm^M4jE znyhE!?q{+~Bzm4MaX#W!HO%;o@P7UXNC2@jtZNpj_BEw;M3ag~AG5Ap3#^uh<^z== zz*PvYv+-2DVlpZg+Q1h2bE|nF&-Mv-W3c^7#^n$CLKEl>wmSYa7kw$c1bz`@*+gmcVKdU7=coiK78j8h*H8gKyZ~DiN>Z>(EW7%?rmUpX&$Es4gr^=l6 z-NIylSU!KJHHR1qbomus-L);4DP$Wg1i6E+)l>{t-YjqnQR49Q+$9~)1;KOqVI^As zFSrJn8f8`hRM*RRK3X%0Dyd&*WzDI6E)febjP<*g)Ym7|pIgY}x&eozIYVe&@X(zL zLcc=?W7I!B;zp!>|1-zLlhvq894&PuD_i(U+5XI9#7-)r(Qj-B$YFKF@#rPkVxMv^ z==8^_wY8nv;hAu6|KK-lYy0vRtM{B-FFw^pGY2y+IuNH%bOj0vizZfc(Eapt$K>!6ZR(B*J?=Cxj?6j{ zDgK|u=6QCLCW0hsZ=363PDyxp=|?!^gAWfa>``PT2S2*!83H^o(Fc{V++D1!9ES>@ zTSoazgs%Q7>*K30Xsu2>(WDP9BU`I%Rau7Z z#`=btW)HllE$`*HnaPsq9C(`V#vIAxfhb3x1-+$pT8X}v-8}`^?`H}yx5W$mtd5HG zpCp;R+SXGI_w1P(?vxXtQfBp6c{t%#Bw%!Yy>SZ1ze_Sw-9EPKy@YHp-Ny}lK5p>1 z@#;=~4+A$D)r1fwwdUq@ZgwAHVXrEc8b0coW?Ur_0cHJr^BRRp46P_@AuKZ$M_ zt(--QtO}?OH<|vzjOymL#`P!(f96+UNYpfRx^No*q7~@4NN4J;Z&>7?E9ik6alqk5 zOx0zf2Plm_3s)h0M=0EmY^h*=V$@m|u{qZV*t?`p(v zJeY_oXnN;pZmS6s_%x*d=&lr_ycMi=$TzJj7%^7TRCB*bxuC^&F0|RTs*H+BJ_G?` zje#PA#l-3iePHP59;Q3LO~U1xsBA5T=GwD~XC0{mL`=lo`l#^Oz+vC8~@0|6Yx%RBF*c~zAi=(2@ap)DI z{#n8L7Mf!_JhfK^BKKYNq^-RJ$X5g+cO!Nw_*<0%6xMz2zLiw3@5A#-@bpr4v}o+B zuZKpY%BkF`+Nqv=lv#wevmH)wxa8m`Q#?*|)90r_uaQnLPND{2&7e?J}ml}&mi6_mCW*iXgGg>Zl1ActO!4gb(tC+2`pwiSjF6^wk%s?v! zZjPlnSzb{2Yu zl~fgidl|xkpG8ZrAR8#KvvcCRdj>WK1xgZJHcZfZ**6j{daCaxA)UOX*qJ##$L9(~ zVyg2Vvwnn}%h6zyQm-7OD9sGgZduXBH*uA@A-Bk;YBh)D@4!m- zE3m$~f-n8Y_DfC#yF<9#(9I!*z`2_UirXzg6-a`7uu~h$qcqN>U{exd z(_TQm#%5JKa56`*C!NNIViB`pqjlCKzKK$B6Aq0?H9Yt_rR}tjuOr6}?#iFzUDdn3 zk-bYRmE=UIq@v|VXuOORUIW-ynn6d#r}C4ce@XknvCIO@%ibvS;-;CCaH3F{z4$CnqMo#pj#eQ{jo) zMDOH(oSyl1E|e9nivmA~YX%0&OR-OYN-wk}u2Spa!_yVUN^S)F$?RoRtWAb5Z9aU* z&MVCRDwtOdiYb}@`$@*OJxKDb%#4sPPxtnse5*JH;c0I)sjy7uXTD`g!*%4aTbq^c zHlN$@p;ynzerCs4Dy7UApS@yA#~Cwa66b0#zavA+5Q#hE=p`-(Pv}CK@M|hDZdru0mY*L1DbnUx$xr33!Ae=r-4m6Q=I1;7_*twIal>KlmPonWBL z@UgNL&HV%9n$0ScM4Dz~*2CO{bJNd3IyMwBtFa%Ja{>2)_;2lRkIWY|8hUwgi7;(%zlAw2nWLEo$0R!7PsUq@EW{HJ%L95!e=1lfbSN`} z8^vZ-@x}KojTHA;jD^G;hx{8`r>h5(LAR6lMfGQ~&+2do!B*a1>e)98Jgj=J`cK=} zS5wO%mVUtt;o1B;{kH*Y4qd+OM!x}Lu(jF3XEp&}e1D(CF1^?ehYlSmJYDpUNq8S4 zNi_f6TfE*6H)rs1FZYyROB}j%1(Ge)I3Mu_%^k4}aM4rx0wc+rn%zT2q^Db?U)dh7 zaXIG0tom^XC|2MLkbp=R*mSf|vTx>}LDap-{F@ z;tpnzU5P^o4xRJWgYW;7lV-+m_4*6=uSdh{)eRT?sivy@g6JTr}k=SMn>_9d!H+ z%77@z zr!4^)v^Fuu8urwPTX2z2K_f7#(a5_UhcnV0%)4)z4EOaGYq*RPGD zkt#3X7cAAR5Ef_~<*>!5(1Xq6cN5H#ckrCc?Knq=85rY>?Kx#nBK?_c!&S1RaSD<& z-)W^Fr=y`_F$#8P*9)D08;#sSU*xNW`03Io#ln0+xc`0d@)=! z3;@-C7N=HT!nVa2Y1dmSIv@Ln7!MnIU{csFyRJgwivj_gH?)pbbxvY{jjN+ zc>kISOgLBJJm3T`y_gS?dcv?EI*>Es^&$v55*t9OjfK|`{r%%2BW|lX3s?XD2|;qD z_j2XmlrcpN$Nd&ppT%U9kx+<2GZqF94Si%}L<^xsk?;t&K6d(0#RdwDV1ifMlusV? zEST&JqA93a)BQ&nY7sutfXVAoULeD|(Kh=7;Q4!8j)Y#hUiE}O_nI{iAKnqNSRE^e zmtv;9;f&WF)vo`Z10;5Yq=&AS(|{vKaCew4i7)acEXO}DgeLD=!AL*cK9kRQXD~t; zUYny#7a&oEgV#$(NI}77gu=+k7=(_px3_0}IB7sEV1vP}IH}B#{P)C-BR$$F5mzEX zDAKxM`VGBx+tK8}@5QkKr$6gJtE@dZ@Le;H;GVML_*%0lvud+N&KZ;6njdqsO-AS7#OWJkY1w5k!UQt6l&J9|W2 z#~Gcv-nughb<8=pVk8D`*XORJE)|DzF0Bahaw;oSH;y7uq5Bu z+`Rz+066Sd)bR-j`gH8i-fG*UM9)wPRt>GB*Q5~w7qWR4CIi6pJP;>b^4FD;iG{-* z>IIGTs*_0j!ESZBlkUOBBR6e0H?TgNwb0XVKHnL1*&Zw|y7DpAt)x%YA}G*yu*-*A zf)$$0A}1rW$xYRlVi^UPn}-=%t^ZLLymqEWO{@No6YUPZ1d;wx{&TcaoK>}5QkvZjP#l>MzCuSAc(%4f)RPRC zE1$d|k|(sr32$(5R8HX6Fk5bIv?H(#Dk1p!<42pWv^UMJay>8aTl9H~iUxjb9wbOt zdLp!ppc|imX6UTx|3eEi-F-FK(`gAQ;}GfliNDkJVjKl!Wyde2c5 zKvmNYh18`zoNCHvdXlW6@7B3Y@RISS{ngOmFAi(Bx*TaLn!}dwT)==H5QF(UN5s1$xgnn)$p~p zh65jX9)N}z2E*K~1MNwcE8d&l2MeqC^&qfm*!e83%5lm}I&Fl3R3pTW)2;k1NAywR zDnO~#_s0#df3N!{zFb{}%RYZ!eWI3{@_u7I>g3lMAb8->(0sW10)cHGSZ<1oHREFW z)ndZrjQgIp<=T@0XLq_5bUp*>Pm*NF90aap=Id!KC)cgNl=b_>yI#|uGB#xb-Va!K zET62^9{>C5_x`23oHt9Bvx|R-gwJ2=m*ZjELMILm4;=1zR5#1@dIJLjMPSQ}qCocv z)HHjTfP+8;CQUA@f#dZ77EXC(XBYK3vs?G>h08Vfw^!%WFg;QNJ`FHHGzC{@$3bIC z&Un(mp#6ul=ldK{)8t&im;l6fAY2N^+GavdoQQSBe>k#2b2vIxcj#(%Li?gi8oIAT zhjFXE)uxg&lch(NT8`6WM<>Acg2^~`pt<64jCjALb$lJ*H^BEc`x)i5#jvvT)uHp* zMDy6kfO09^RhQ?p(dWKR6W@XE5>8{8x08i?qq9k`8b^s1VoC(qJdXinoqZlj6IM!o zoB~8zs1YzvLitA_Vzk4`<3;(f*L^#0RP?hzlpM5oBI^#lO}Xmb+q>Qcm9fxI5=t3PgKJJlF=`vO|IQFx$=`e&XZw1Lp3?R< zjtz>}u-Wye{VM?@eH>8470cnFsCHp@+z%q$DWV&*SlvP32<;%<+}Gt;j9T=_NZdb_ zcDW+LBMpDR6WuPn5n4%27Om?bp0ZX@X8QM+zpWpU(3L{D^_}efH|;r3HV1~MvNa~Y zO}~bh>(~2D$A2K_fHX{M87^@}=r6FX$PnJEXR03ULu86mhi=3#_VEv(XPLQiu_XcERNXSkma zD(Y9V5s*9BK!9|g3SaUF>9h5pT4EYc;dSkq>sCF~IFvg-|I-L)5qaoc5viP~3v|D^ z=(gNmxEF2B%h=z3J={wF2HMTpym_!1-(<+R`M?xV1OtehS{$e^;1)hapJE3EAj>>K~i>2t0brN#kXuTF}YAr6l=V0g`pUa29mQ9aR z-GkJ)i0}-e|1M;)TrcVdP#QW5n?dyF*!gSa=Y6>8rTA2E>y`UKgm(xp%|EIsp@Zqi zm+l<%?5?M6J(C`)GR)Ip?@A~SCk>(FtQ_!bO>l>Y(8t0~(+k)HASb-WxuS#)V;}=y z`}2PJzy39Ctwq;o7RtW6mTm7(=;grruA!twOa>Sc?axKT*cgBS%pU z10S%rp+gz&U2AxU3(1vHx$0~+$LjZ59wSy=pry`9^Lt0Jls_;waH@bD{g*+%P|Jyi zn=1bu9GQ72s=uM^u5uxz-###ByqY2%0vQxP*+D>FFQAk1&AcLPUo6^DrTLI`S<6*8 z*SKbY?y`9!p%(fx(K_a?9MEkY0*pg_Z&$$=E3s#73qPuRb7q&>5f*>X8v#;35#$b~ zUuNh#aojY!^A;1itd>XlC)6 zz8E&Xtyg_pz|kD6=g-<-62$x$Cn2M#2+(F^&8EM+?oP-crQ@#}&EQ^YE#pN?kg#nCP$eS#|xKXFc+%Kyg2n7UM`LuV4I+AqB%&IsF7j-kp%ugI>!6xST*Q^fC(a zD%95mMIB;V8xtQaDXPbKmRLEjm+P}+!mEdZKb#!m8GWtOmkqxq#4xw`K9~PM)Rv8B z|E5Cz%{vboFou`MX~Z;nl|nb3=UIPVW!0a0eN-d-?Y0(R-!aX?n3`ix7l0zC&g*6+ zV81+ahYs5&fKQ(emy?#Q%dYzj_XlQ$0j&bkizw52 z2Bv-ZILz`YQ{4j({;eES$S|^|jjhY$HIDIszo~D0Sbss%1|oBkMm2=Ah_qB*xz8m{ zbLq!;qDxyhW+Z6H*#AD=bpU*o3{qx(JdY|1Udo=!IN&_9o& zQDs}E;Mn7ZU z+nH_tV@HsiwD-pouJJ`40Z+C<%V67?V=o`Nx!jG8Ja6smm%_s{Nb!16Mg=^pXM`-P zG%2DQ;NEk|kd%w)+uQ33kJXG+Zy)cG-2nKcz&Ko(^MZGS%j#j#oUi3SqAi5=M-t2?vK=o70-m}^lwSb-;5kJa+DyMPg zi|&@0I?Jidu)Kk=-4pY%TF-k2?+u${cQnvMc2r4@uVSp^pnC4&$7VdUDa|H%c)g%j zRtHbB*}QuX4{OKmq#(|E9^!`Y32T=8_&|}?vW@ykkIZ%K=$H~6-RM~6zqB1!DiN#- z&FaBsR=x5y&6i0p7s!s!nU`ceo+v*-1AM2cbR-v~06JUGtR#%-HT+sbo zWuG2bH%`c27_PN};$1R{SM6Opt;*10yH08n+2QCI*nCW-hRx7&SwO$?( z>fg`ZFQunNVwf}M;!ki zZKUz?+8>|KC)2v0HSrx94ToM|t9+f#b}z&aXUQvg9fyyUk9#`!-+^LCf+#&`3x;cD zw3`BG^9T9)EO%p<)hgErlr&V}9t^_&NtJOsH595mN-4`$lt7b4ZZ_ziSdnKB^$ z;&`gI^S>d zd)eCIv#?vHoD8pveRYRtA?$wN0|A1ECqPQe$W$R&15r% zn{I-sSI36Vv;3u?S}#S(q2{=~V-rzb(t9PZZQ8U{Lp0$H3Gh#?RXFSFpJ#rjd{c!g zhC;9d1}bo#owi?y<6Gj=_Wj?*61fiL?gW`YZI%nxRRg z^~W}gkjuU@f19h8UGKx;W*@0pmeX=t<`&ns#h|b-c7rslSYNA2%H22jmg6v^H}og` z@~^sXOU3J6Nl#P#dvoO{L%?hs<>kH(mw@QY=BVH;8O^KN zkmj)~XR%mGm;E-b)AWu%?^Vd3by{w0tkEn$N%w?*1Pt{W1lE3m3qCHg~=?ZyCGmoJijOu~j*W zeuc}oH(}q`6lD*al9Jb7JjeYQDWiK&^OKb0TFFUhTXuV4x8fHt=zGqLkct}%x|chy z%YI|;=f*idBxK+39ksD2I|h>0&8+%>9KL6Ne0-J=F_WGGji82uqM|e9v)xlog%F_z zlF&6Zul17IdSuNiVLczB%hS9MYtPdHYtJD~0Mn5d zRC4y_JId6T1Jh`E-?yZWeEj};#qZNfuO76fpr>=2}nK76l5xI1V%$&mYyXX z<$XS4qUMq)4}|g_{P>a4zjZ+nBE9j96W2w#5Z#B1!y^nAdgf5sqa|ukMF)4HiQ52Q zPKrD^#!TA!fzioiv1PRy^wv4IpLgru^SD#){`|$%4sy=&yv@L3Vx_zT+2>GGge7l> z_f)&Aij`-4zVeVLJ?{nH6JNTCzK;c^F;~s*R*-3z6Q{HLZCI*)ywNFoj5B!rnD3yY zX1+Qefk!_ox>%*R_~(z_5Z0nXUz(Oja^~WFPtSI3G5e*w5Bc5i{$N+BoncYWUVa+} zj~^C`-Do(|$nb3x+!r~u@q5|{(7*51a{+jLn;xXv&ZUR9h0vsj&SAa;!251amn^v3 zS`L+hfW2H?<=qYLuTQrMPSL4cCu27*MqWQgmD3a!_G(5U0b>(bLnWg2Hr1DK*hCJG z`F5w_8%-Wa3RPircG$&y%PHS!i>FEhkdickXldc4*=BI0w+_v{hfFr`X&D+b_AyTZ z!}o#YLAGv2m9R^?B6`hveWEdZIim06hV9781<3Q79i;@5zUm&mSf9aF z_3#xz_-<#lBE4+q>(w?6kcaE7;q6MZiH+}oAlr>34{=!+$9uO@SWyhC-#y=+xUy>B zUIQeye{q|U$9@P3D$1q9Ysc!5yiov%J788DwBw7e`7jUKqhZN+qxFd1(g}&S5-}$! z1kMnkTlWnR&1Z?sgcMcj1E3z?-uj7t@B8&`Yu8fIkKExNIp1rZK%sdm;oRY&;&-js zZBBSN{ATi)Zv$}%Ps2p{E{1C{9sVp6qrUbPd~fvHjkDfZNEt^a{`@5JOR1e=3e%Zw zo%dp@he|{s-xqr~uM7LN#NG4dQ~G57QvTN-Lt)6@b=8v4Bm*IQwzD|Uq5#;-?s zO_&U?*?lV3w)Yd?py8b`od)N|X>B^zx3b!eV1ezc;ktmw*$FpZ-7v*$0qQSbv;#!^ z9-Qo!>x(3JjyAdkW6Ah`{`vF$$W5TIxVZT{S&W6^AVDTu=rreJg@xS~C{$p(j%KE9 zN;KH7fn+k}e!*(=uN-9fT0!v7rDz9*bjvf}?h-RihFg!s+!NfJ5Qdwm>dY;o6Yy3K z?_CkFWqU_Yp%t3lvhN^@Vd+_LvUcwTZkXCWh9F$|+{I?N3v?x4^N(c90AGeEm3`jB zGd>9FIA2}{#J#pB2(&paFe_JXs1p}2!uq>%JHMFEIvm$z)B6=7X0JOd`<&A`8m){p z@)LQA-mAPPwCRPQI#yYzC-Snfv0>6HX2nzXFI4F{pEWJ+G)##I);O;L zVXrP%^zb1lBchUmUwt!s7k=#e?>ZkYN{>xcIM{84H6KIbZ)UZ0UIXW|=Va};(o84= z_eVB9NWiLx-Gdlg-Or02e9jbqz0U|c1HxxhQsp?tFkra+0X?h{rOJ&@8=QvU+X( zGlbVxdIF0ja0g8P*JSCVwKxHEMY;R^c3j+AkS}k>7JIz_W7|m)AQnHvWMnfGv!Eg2 za)5ZN35(MUYPwfqE_Tc(rQ6)pm}I?Qrtko{|KjD_PEB9)_d~AOv_q1pNpB#+(NY}^ zE-tR@VfMwIlGlEU*5!(AO$xm9<@VM-WhD0!D5tcYtwqM{;7&@~Dj+J%g?+ujAJTIk zo>(kVaJ_y8YW) zId@Ze$Zl=AQlPw3EY9`alVDceG9%}Bqk{QpU~h(~ zl^-`ie(%pDO743>ns$GQ^)PJx!D-lV&(Bjh{{lMMp3{$tHA(SH3%G=AyK;)*`%V^= zelgGznZHwU-xIY6tBuV;EYXJ7(}gR|vbMIjYugZKwn|5Tc&=w5Cj0Y&3MU25yJP*Y zMh(26XDI}UJ*h1ZnfG$JqAt(+gXH01pfKC_dX1E0sjLHfj$O1ZJ+_R7hK8*>k<8en zqCxvL80t6>~0{LU^Isx1Ta=KUFpOq_r^ZL&3+HNCCo*p5R0-ff|6h3jEMi8sk}wmx2C4Nt;qOuqdE}YD%12G zjB3tKj3y_Z-_1Td{diY9wvqM~rfI1tl7;>bs6vV$jtbhk?<{RBb*TSS%*#7 z8XPK;`vw@9MmevDh?_9X)*Ix0X!Xlp_$Aq@bHzA_sE_uARV}>!=gle>l_hKnl=29( zL<3|ozv7?-gumuNuHTl!DkhiWFeW%=@_hRCuIH+!JaZW-))5Z;;6^1kJzZvS1Gmif z2<2AZoI6_?;3m9^4V&@d?bsY+j(Evb5IdPy;iOQy6pQF70T=6I-7$RLkouSP$KQJE zHNOzY%2v@>)TfD3kLGzQFDqXu=2cK!wh^CnG>xCXo;ZE*ZTpI=o2KUg>3;1-6TP|k z!exSuUn=%8j(-=K0cPAdgDaX4OgQTt&Cpn1i$&P#zvD{+4ezl#cBXDQ!>LMGw@U*;Z}DKBmjQ%XIaf+TCG!rxS7Dy^W$cTW^7VX=0(xeEk3&<_8+q{) zRBVx=`0{+1d;Zt&LJTGjpYTzlOgX2~^^8z4!Q`<<0#1E9hK}!ynxmXr7HpG?ixykD~@E z-8Z%d)1}AK9r16r@w&5|I}LBEj@oNospQ1P#YbZNJPV0{7Nxcw)mFPkwxSe#Bd<^> zxH8Afy1wE8>ye=yPm8w=ce7oS@;M=AzFye$iy`Rvt+A@rH5rXD>C)IBkW#e?jP#76 zk$MGI?B`~*IDEeW8^@hRO@R|>Vq>@kd&W&gOjfe?VtrGY%rPvl! zK+ew>$mDCws<+0{)RygNx2c$aCBPz{2!9U(vOvPL{=gdlAry1@N*GKLEoZ z>I@w1w(Y7VXYJk0*s;TC^t_Ve^&Rk;e-N3Q^l+1JMJk*V2*OQ9$T$-T2ZR4W1Jtf= zIBV;QwzCVI93sCJczx^Jdan+)b(Sz2_tUK-?90F!Qd~za&13i*Dlsl&>f7?q_x3W{!P4#ueV^nax$yx&U!L z2}QN+km;(`AY0|inYu6;;5w7BDV6sC8;A84O|!z6a2VOl+gA>QAeIzCNH~NQmmf{lb3l0XX9|!$1=YT#^;f0K ze|do|o@>W2P($a7@kXS}d3#zuV)pxrjG2u`hZ!?F3>+^-?ro0tD?AaqyG*%jert5^ zd<7TUp93k2^FZh)o;M}1m>vLWM9am6rZLipU_nE)3>jA0XZ-3GkD(V)Z>t$Iuf@s> z=`KxaIu=DWIESZ|KH|S7*R~+5kp2%y`M z8Sp)y;(y%=Z83kmw>u~x$J4!6!phLU*W{Fv0p3yzRG{vK!|?MsA@TwTi~^j}e?Mq| z<^}1%W5CnXqd;BZU!F1hhX9~jP5^ic{C|<~|IR1>^Y;HYq$^pO3w=_e319&N^%E*Xh~|ea#mWe;ms6d9Y|A8 zTaQ3xsmW(5)5u<`eySUW(PXeFvztKdO-iqC&%wiRKikBwRzi~ZV zZPktc21sg#%D>M5q3$GeH7?^Guw!XCSeqCqZkftgkPQevRC1O(vKK-5>GJoXT=NQiz|7pp$$2X-DVfwPm> z8%-w=@^+7g4cPxS1-YN~##yk`kZ)T}5&DR8Z;i_oME2;Gw_g5*I^tb*2#G3 zIgMrIX_khsB#)1e|NV4WpnAtFe?(S#xM@KY4vxa$wpur~G}kA2f8U-XHrNV>WG09! z4FygI{outUj9A4b#%HW0Se6aye!Pr#dSVvh2{qgh(J;3}oAqxf{lWXy%6Fd#7aa1O zIDfUIb<6}4MYwl91;W>zXl=?e!M3m`K`u~JJB}riLwy1f6AwX)0EArlhmfT|?^3P8tlG&%Mx2jH2{8bIbnyBH5 zj@H8^B*Xkjhu;{^aJNhl%w%F2F&$VFR5hIaHIZFT}s7? z85zJNu_j6;CX}=GS0R9*Sz@!K#ZRQtC81{>f57|RRk!K1+6s-$%^KB7$Sa{z9aYz;voxuO97h!% zHZXMsGl=Idfz6Xq$IPTv*I(;FR^Hz1W+iMeR)w{N-aZaH;&5$xnIY3yDl<%k$d$HM zWEVEgZa0n+-}9@wWK6en@G14oSO%Z#y5Z)~Z$%Pr;OD@+y4FLZeP+~cA_DakJjKV} zKTwb>P1+}j$`kNfo11=zE;6VoYHETV+wbPqVn^5dp zuhkQWY}=n*OZ1xYiZ#lG#*{!xvg|)TJ2DwUswI)RnlNG|-BRLHf5tx3p~O4O#~u$; zebL0RpDY4l9R{MuXY7-nqS^>XXvip#>vC&_pZSgT9LRK|q}to-@WmY39C^B%+`JKf zqfyfQX}D4AZmr4si+0a18p6AsU=&l2S;3f}T&yvTm6r6(ra76T61tK*FL*4yy}b4% zn!aWB*B`@JnW1LG%zFnxK&-Ri!#`rJbT9&!>HM_$Y;dgE^&|oiX+tb@!O*bq6hN#? z_~njz)qM+X+2?kJg^&@Hj^J_#TR}q864=Tv<2fD1I8M$pdRgw;*foOUWTsK8fD06q z`)9a>4-es^?A@!U=v+D+l~p>3ux8zmE`fYfDTo-yRuL%dUTFXY(DhdV)G}V~jU|&K zpp%G{>$jdi9F-5%KO+OthxvBDc7aUrB0{1JoPmMCJ)M%(SG$43vonm^p9T{E@ed&7 zD8Tz=Zm2Q|pzl__&Jr^-c^v|Kg|l4q8X5?^ZjMFUeV^A44;LplFuB037#&F1w14oc z0b}nc(SHQ?!L{e#s9g{gK#Wpcohksr>16WvP=RADZMuOrml^BHCw5d)w0J^>nCT|thy{TtmD_Q>cRYSe-o6Fu4UO)jXt>7=Qy znbX{w%y^Al#RRCqz{crY<%YY$|8GMCMmh2%zxsm6M{04l|og|nu=3I9S{z(`G98yQHba+w_@*uuk@cL zB1DD1SHCg6Cjp$QfPWiUy%CX-m3C`F!J(nEn!HMI4_kd6FW18U%0aebRJl?sJcYJ3 zYnD>b>IEQvijSVt)T|-c@HaOdozWij71HHnYZ%E__MufbEC(=O*uI2?h5eU>kahVd z?T)X{xfQ=T&nF~GO{1eV>0Vr1l@lKy|LR~$>ScjUGr|$F^7C^VNAk$j-NWW2hyJWK`V$W|;l1+_lg!&*-ji*rxQ%$UV#LAOr)lP{wBNcck62)SjCgCz9p@ z-4h?AV@>ELH=Gw_(jGn04_#OU-3U$Lfg#p7E9^EK=E0G>IHsgkSgz}1Xj1m0`+@qm zFTrTCecjFBZPq|L+umkBH1Re&4PC_*zqviZf-{fm(%0%as*+C+Pzm#9xF9ZnbC#J_ zuiGT_trn#QPoq`ca-eqNXNq!R@LwB0;XhIVpH>#HO^cVbyhm#DwEcE-k{rQsx_HWA z$A9bY#!*$i=kz?al%0H6Gk^&aa%GWgdyNqFkqPKobqi$mTGa2y%D!bt`Zc2o$2$|2SAPW`7)34AO+WA>2F% zrnx}8FPyzyt#QlBYChr~K9Wt}{zXX#eEWt)BIt=j%IEAanH{eKgNKVdFebqvu}sCR ztp>lZ9rjC5vyrsjLB!T53y8u{VBaxpry#Ub}s-Z_13U5 z4LFj*zls%~0z0PdJ(@;2v&gF%kI?`E_Iqf%NJfoR41W3D~j_w2Y-QDEG{*^iRgK#yr4*sq6IGgTD zSwDySb~W#|8^@}CGklmA-zrg#n51LI@>;^w`W|F1ENpz|ftVdqC$!6QAr%7!;c2Py5mjmd4K#CGyRR^slum9 zL?a-OhDo>^z7Iu_6&lHt)!_Wsa}pQt7%H~V-b!q))%Y#?>Hs1*nQJiJ1ssd+LY4gS zc0a$j0OAXxo=eYxmU+SuDiBvOi^j=%AsKbma_7t~Bv?>C;?|pXV2fz3Dy~YZbVbZ# ztNUNxlyfJ8wjToRiy1;%o;R4B`~bdjIOi}50Chy5rQ3FxVB7WkXUlR_{veM3F(uUV zWe)Qzs0%7dC&2e>YSQg%Rp_BmwY5quX zO&Bb}Nz}M=rfeMNd_#}`l`g@flOPHU3wu-&=+#kq`8j#^3$r2PrdgNI%q(ntjO}`; z?eryk^Vq2NA&suTjo@Uc*UQAuugKFbEypIh=rEZdJz`^CD#OP^4TzG?=sWc;kEdAb z$OHDct|rvmER=|yPGGtx>+7nn z;Oe`#qqA9~pCYB*1iw`c@4VvBtM0#h3!~D_GG9-L>y+R5`}V9|E6*!s}hEo+7PbH z8#koBVSQHnLT7o#{#6(E_j$n(i3=Zlm_ohZ6I3Ktb6alS#`Au+VYAE+L3e(7wE2uwisS-oj6j&!U|ntb4v_XL*@XYQ4QT?xM=*Ir*j-P~L|N5&L-U0`EO7OWkLi$TrgXOWa+B#!34DYb;~ z7k6g!i{vqkr+z21*B}+Em6@!Gw`^D(zdq0i@Z=Mht@sV{AxaNJeQw$Gd3xMI?U^;g zj63AT@Fsec$q*ULi-lZl;s2i64U*>5fJxLKXhLm5FO zPZebCzE~rZTxmM8ItEDW9H3mZ&gz?st3x+(@A*Z?-(S0IWWNg8zM{gJ4jg`6fjjjE z*Vtrb!+{pxW3r98$@uLj{^%RFc9oD>Sn4LerEj)yPu}Uj1IR8gLA0FCo3ZLFEP1{D zAO{DB{atdk#R$cX<8X#4<3ZfS41GNJ)%AkKM5XAB#sb(qMPl`soaxG!z3#{1pm!uq+<%W;0@22`w8^ zH{;VY!ZK_r>+oDmdouq>`PyqmHeu5t$JrJCVMx=%JW%O9(~$^?p(?shEKy`6X|iA! zE9YE4UijQ7+zx1rK_B#pC39IG4H(?=6M8{C(814Wr|9r{^g(h2`&jh8E>YWYbxnn2 z4R8V<3!ii)UgDDI&ODGQDe(BKZudr3SDGQ$RbO4SZ)f?>#GS*?bEnE%pWZ2}C|j<` zTT|E7^8ZKy->!NV%lGS6*i$~-oB?^9f1|6dRz{cl5n_d2+z*`PUAZ&-nrsvQEL`py z?VoStPW>CLd{}c5S)P;#D=QOmzP;H$hn1z;a-t|E|&+e=FyINM}~gq<}jyl6qH zDOP168MD1EJgeZcmF77MJt|Am_W>^rzA-#l=s8Bu5G)*Ew%g?zU1ej03+||gChu<) z_$$}MM<~>qYv=;mk&b>QPR25{SVg~KqQwTG>nKZ>w6qaL944d66npzi3zF~2&H)?) zQIXU~_Cr<5ksK;islxh84uM$QLGV^Ls192~p})(_ zNA+6E{h)SECR4+WOkA}5_a5LbBIXj2J_c{(38}Hk%gB6`mq+)!J>9E_hF=L4mx*m6 z?<+N-KRwpGey1i)VVh2l*s70Fy%6;+i^ThRg@{?R0*cer+49^sm3oyZmX0)k=ojL_ zM1u+D-%HW?@0hX`d=NBHH;jmcBnpg=sV40=uKeS34+jS~fYG_Mq{I3Gh$Ijf-CvK4 zu_|X{iRr<3<7VN`Wvw}7ePR-tOK@sJgWa?Pn_Z}ml$iWrK*>A2U`eWfyN*DY_e8`IK)w=-+N->cOKPO<@SWd+B@8kW@Wv zNe36OV3$I~hlCXr6bPdG7I_N7y2CKU3RSaI=#E%g%gV}9_}y$1$bx{#NP!SwF;Fq) z_V+#ZZLLNJG+dt5b1ak|*5YJPJNzx&92hXlyMMn*L>}3^`XflE|I2!+2T;_>1CQZ- zC3=6t$k6A;6V>g<4daxwXSDP6lq-z+nD3Y!r|Sj7$Q z#-lY*s+VSebK;AjzszCH%#gYHnv@afxQ^1`q8Y8$6rn?9HpGAD+zgF;q8PP*rhBd3 z=(o{pg})ie*al_@GFu?pB zBd+g9XZmVJrY>~(&Q<>f2L7@f22_hZT4s4?&h$EY=}@+0w}?$APXSE*_IbQX%;zFP zGaXG^_)f``{LNB?P0=C2nJg_2?X)P9=rkt1MtWTRP^z5)4G!NC80!=1{$`y11{~v~ z8JV#FG!uGW9);9{DYoj!?Z>a?J9pvGX7?U{U+x|bdTe5 zM~aa2rKy^ew(UJ`_RLbn>jHH2qlB%DnBz|*nK49h_v$+-ahth`sReee<3x6pmz8h+ zeoSRKj@{F;ffEuo21Am+<8%xoJ3r=q{t>v@gY)E*SJ1bmb;b8RIC$eGGA(y)3LQ=& z5=m<7-2@O+;-K#gtsR)xGvsf{$2X0>lnU-%!xxJON#+u=+yVXs&#@KeD48RR%68A6TF!a9KlV4!E=;Fx`gLpQaj&H@6M1>>0?j z2fjd`$pB-7_}c$o=PD(aW>CGnJ9^}cX6R17ZO;nOGs$!F-5uev5K#<6t8Mr6ywly` zdVNESXz2m!{L87aHF7H!O8$+6V&iTw-uBrmRCx(6Y{Dc4EWC^56&qyJW$0Y52x|pz zEe7ej@#qJ*Ad#M)zGF0Kjr9hN zo0-2H)OZG@Pj*|V-X_j6C;nrhz5X8-nr!ucMErLfQRfiTT^A2Id&llz4&QORk*-e% z*QJjippOR6;DjauQaHy~HvYmtrkDRAjmn#ihpz_fv1Q4|kSq*#vlEu&yQxg8Tkc<~!M5ltgA2OfW&DAcXPmpuFe($8g^=Svu`;|y*9B78j zn)Lq5dPC{>m-S}F_>c7_(c$7QN5vZ1jBhG;TgI*vOX`=_nPiPprI5EZ28BOdGT-wz zY7UGNIs<_|DBg|sYDlSXG_^T#+!aBQXmZz=WD1stXzI08^qnMb@T@1N5f6@)bi2mr zcEN9MruJ-wdrI166GkM*5JHsYj`nZY2R1m*)%t1XZ}$ZEd(I5Sr$hht02%qomBQ!3 z2mmRIb?F|reXV7N`~SpKb2w~@dt{{QES#U|S3(oG(h{bQ{(v?C%|7GU*$m{VQg^K( z4N_UX`bTF?8()2=4?dOeJPY^ScX9%T+@@U|frX&V;3?HrUusVGNi#yGKGAA2OCG<{ zK|k&!;(!UUq9duT8s5Dnwfet=Nt3RjHSO>OU7r)9(miJCzd2uAc2*$1Y)}H%EAuZ8 z6^U%PAqnx@m>;nJOjZ#VsMQF|*XBc~%A&1vJ<$#h4mRuzgv-6`F>lpzJ?l!G>hCbF z>=+n8vUFjwsF*~8?RV?w@FZ!@1G%eF1~j<%8t%X$a~UIuOUE{mh=$KoPBeH)cN_mF zj;a@<_V`ldD>q8O(MT;h{fr6lvNPF#5(xU9o=wYhYr#m^+f`(X1j9LacHa4{|aMA!+9uKN;rb>T>r{hb! z&>wku&C4mvU@6J&em1DT^W5b1nzI`UFab+UOfsr7mZ@FxwX=K2#_eoAPRLpfdD2S3aR;Cec@Co=iD!Ueu)uxOH=p3_lo_((P`T!+{E>00fDv5 z){%KL1>xqngQav;ok-QQuRJIUZ zYij*icRgbRV`7MB?-AZ3RzJ?3SQ|NAkozn@x2JXW?|$&xac)*gRvwz9E`e^LT@ zULU|Fh_c0gFHtYdx$m`ibF*vei3QGtCCifgfJHzTai&|Tm9isQCJs9< zK)1g=#|#?jG=`y-4lhlYE@5&^!zUx8dBs7pRU66%rgRER1nN38mVcLy+{~iDI*u5U zxUgfB{#-(pxB5KjiH$Yj+Pib}rCEq0GQ~1N>xD{PY&Zt)I|{?@r4Jcg+pQdSwP4<% zv2Da<1JGpoL!O4dCv*&|DI7dHsTM=tuJ75&;)B=P>l`r@Wux##rQH2k=p_4I1!9t z7=Y@^G6mdVJ^LtHl$icZ5hJ7cG~LKISjrz4W+*34cj7v*lpZgZ%G=kg8aa*L{aD{S z!>DewCK*L1HL;&CKf<41I&C3lYrXJ9k@zG&{Q}I!%pKEPDJgwD4jDGiUidjh=ufIs zBGIWY=+$M+JrGm{I2lTpz}?W+HQoJCqI1h{I^2jF4(Z?6Itu%Po-UKTge^@)Wi(iG z;Qr8vUwOBI0B~>ha#c^T`~6<3hXBs@PZ)#^m0&zJbq=X_Qc5<*ZdyxWSGa9>P2Vs;o>;DkAI{qcRW zerNja^4!OGU}buRs*LxPP43|*iz*rQ4wvfg?hV;GbFA#CpY0tSEEXsLcX<&J59*)= zG@utg5vUR#eo^X`g^@ZAE=WR;1Zx+r`aDqW=#qtAoka)VVJjBT%s1HJdtRTaJoW(s zMD$SDJ>{udx;#kK?qfJ5xyOPQIKp@o0LM%dFheO<^Luf_AxGnR29e3+B7-JKb@+gx zd(`4XanDjQTfKW3oh!G3P^Icila#<>v4Ip_5_w>IB*LabhNP%I_rulcN*AyVP_6vm z4;x^j?>gA7MvMdpN@jns>t~^#{M641{6d|Tr6jAXfe(B=C0~Y zD+@)=Uh_>(4wi%0P3JGB&hg)3+Q1s9vebclVd)4L(#snk2R{Ep|0XP$O9wJ$_}*w~ zHNpMMfWkUwSe4Ayb(MsZRvJ!!c#P=2{1r_+$+PVvmwT zEO6lkJ6FU4sI=LjV)fFG0P^(xS2(p)Z1)lyR6MD1>IuQM4P@_> z7>Q2f%rr8LmEsUe;6|4%%B@Z=HL`MZ#KxU%Lb-lNeERet(or!kQT51k(+*ST4VE5( zswEfgNJ{k8G>-S{^KA;Z4bfvD4HZ=pJg|0p$poZpD2<1XP zh*ro%1eud?$tw#OJd(2zT^;5>0!hJUN$H)xv*5|987iR%oPgKf4(Gb;pHltTzyUF$W?|Y=z|L! z^c;pJR@~`Ub)SWpO}9;Vx6Th>NaP0l9kO|BGqJ%GU!CC4Qk1746T9AEBTXC`E*NTW zj>=4gryeQs-~N8d^er!{m~DP`7^|`cls9=_1j6?4?E0Mc_RRMJU^=OrHwvd$G+X2_ zBD_rI;WWxIarW}Ec!gUBXCx@&B!HbswRd(arDR3| z!6g?k`7Uwsr;&9}Bp9dhy5__{EIw;LOfHDAe4kSS_xekhKNzZ3PH@ z4Iwd^WLUn*CQ?|%3uRa8P~kJ#RpS7Az3|qlP2~*Pza^U^V@Oq(Xxhj#jaf=d2y@Yy ziqp|fpMe0L&4Hxx$v?IyIGkNsd?0%zDOqqyhV(QW<*u7kAS4z+E#cZqkYk$RN z4(QslIsc}6^YtjgA-5hX*>H!y8S?Tetd%}(+)kNJz&W1h$*RC??@S=4{0KYNd-$F1+R!9KhFp{!J-=Wg}Ru*vIyZKvNg!Fh4NB2r|7y)TG$&*8{oGRQS2oX}Icc#{Np@Oq>GEL6qjdPDe_x&I4$EAfHj#h?D@Rouw#VkN9E~I~? z8%59ay1TK2+1;!5Nx~A4Zzymm{;GD832+D)Enx)ZfWVjAlu|L;V^v04?CBdYum?HnOe zs>|rU*}9h=ekWqqZnZdr8`Rgg-U-Q=6v9Q^p8(0?H*W}!Wpv1kaWyAwHoE%)JsIWu z>8z?9@XAuyDN)6qzdJg7I@k$AIE$9(d?oEy7n|x?UuKZ>#0cEE?O^4BFbh5CJv`wQ zj#t{f!PCQoThrEV<&%&yIXE!_SCpD@BpPnT_CrSN1P-1xI;fd3-E>KV9A1#`Tw{8Q z6+(>8idx;xoj%R>W|2KqN+%SK&#vho`#jrYbSkB?uwl5m?V?Q5|F^KZJkpNEi#J~YQ} zWN>+Wt%pke{KxjBR~RA7rP2IrhEGzEJg62=hT+v7a-MjBi85?j{eC5?UI?&vYOw%q z+=`RDZ+|Q%CEh`2e>&l zd|)d-dM4U5dEuCJuS>|22?v28Ki#Pw|N5@}4|i8TY*j*W)a1}ark9;lzQE$P(Lj@f z4sdXFFuRUx+d(A5IE=-Y;uAYK4)QuX4ZGLY5FeC#W#)Z2f@c2kMSQKS_V|x(V6AYP z_@0nxiU2jvikKeeabZBQB=lEYvXGwN6Tn4@KXm%q}mcUBcR)hEU$@F;F= zal{X#fdoI|%>Vpi;f*STKm3DCwd^jraR;;Pg%#muD$Sl2-;X@1ufIO*gZC(7oDeL^ zZb%Z|Y;emJ7OxvxzYqGJVtlz6FpE+^PYmqzc#?~$9=%{1^1tZ||T>1l;rkOX5w){iz!8N#cg`Fl(_1p7%~P{U(#?0^x?+L(b+w5XtO;nM9O?anh|DO)a@%~OWs&Wo?l zu=8O1qpB8L;m5;1YWH^y!WqPeZzgOR&D}KwzBLfb>hW*%q0c6%W`Vud^QrFy8VhA= zOpl*8pjP8!yrfF7Wb8D=7n8o6z2IZKYB858>9F}vn%PJSw+PL`F+LV4r|o@ns^FA} z{g^Ew#3T6lI9SS7`rTf6NDj3aNj9vT&SfV_+nM&eU3am+jMhzy5(oYJa|gHOdN>P0 znnYx!Jm!N-YM-kj7AW-xR49GQRRS#Kk%yZRRiIP!a<#s4?|s~8Z}=CnMkgg*%ahJ(F*V(_0? zZE$l%VmUSlDmclSWti-dgV8biCD232A{oe2F^+!b^=9LA3nN^o2=o*(hccvdyv|d4 zr)uASX|hzKXLVo}_=#D60VRZZ7?vsl%o*zY!vt@XQbS%_s;}ZqPo`i~vdcXjTD5<^ z)gK1BR>aWVG!cx0TrmhV2%v=2S~IG6nDiO;ccp^b{aUcu$QiswSkq0;H`XN)7QH!A zkSm@GpsPcZTHRJ8Lw>);xc4jw3nSw`D4>e1{d`$edmw?Kfgm+_SRjw8U%q}iIS6Q5 zr2$*@`0OV=SbMG-m-y&qFDRGA6)MlETLWzXK0G5}^k=p|zcq+E2FkHz!^8kT#27I4 z_&8(@vc$TmtPJ9b?=2I6nQM-P zMC!H=uZB)OR%Z8#yXqRTLacp&q_zU_6ezQOS*dLDKqluTQKsPo1F5ZS9fi?}(DA2t zs+N_D0<7N&Sa?0(B7C3@T({znnOi^A)_BO_W_yuo}3( zm?o)dxX8WGP1pBGwRrXByqu13gFuhIi;;xF&}9K_Da^g>B?$<8cl@0y*&?4R$re7) z@W!VE**L(d;dA%UcbsL2Z^KUP>+>B-aj5&c!YmaN<~Dx);b7=Ol2_u?|2-U(GBJg% zw8}_-C7F{s*jIj(aPIVt>D0Z1j`gO+-=t!{VmJFlbL%*8!i1W=xt+(@ds;DRAJb0& zmT4}d6HkJEwM7^?{Y1_xcT88kH(oPmOk}xeC8ZA89s|;ibHK^|z7KZ7m&n~*P4Q6f z&j*dD?V67ypZ@fgb!*LM+6pN2wxcjfuC&utthZaFaBz^QGY&km?OjR^2T&+k zM?X_oS2l*B0|4wcDS%P7RMX4~Q_c-8E(Umi(p3xfZfnZsE;}QY5F6WJCMbM{l_&i} z2r;?9OvAjTF>4=>opmRVTooq=ku_f%PV9rN<-eU1G`-Vb^nxhGzTe2MqeXv9)(5=o zYifUaw>3T%2ALR;eE-{O`o7li){URzpjmsCk+I|Fj8u-4nyeFKS0xo<>OwrX(;{;u z@O-|z8!4J~N)-KiWYx9iV0M0G&>xoz;Jh3}Gey(SH{Sb+e{W;Md;1g*=JJ?1E2r2Y zQGcNjw2W#B)HcY6L(n+u+GaG!wuvsOZn*tj?ZT%kW?~(2D~p-^<+b4ud{v+TB`(gA zuW2TtZHoNy9WsvEX`!j!zy{a zfJ!21V3#ztJ;Jf1yCNX)7Y(x9&+9N2RsZ--|DF+v|L2acbykvwswN^G-N9|VGLqgW z4qe@qUvo#>Wu)n~+7=!GSM|C~<;8P}9Wx_(+U4T5Z3o-iz?6oM7J~SiJ*Bsvtu@PN zG`+owGLKWzkGMm%la2`sZ?Ze-Pu6gIdnFW$rxgolCYvP2n;N=+{y*m5l4QpsBXf3$ zEE<(Vuyj7dTdbKL5NP8kADSfb@@qtC(e=MIR;S0=F~)kte#VVV5g%qul;JDuYtrp` z+iUWE(HM(E7E+`-o6^e>Jz19(%L_^XYvF)u_2D~Z;dfIhW3;+lvz#h z1!RuqaH_XFYWkPA_aHFdXQ>YYjA|}cvvkJGjZSp5pHraN*ve_2+ob?ON(2Opxv)xK z;L!;w=_bTgl~%MDlrGXX@@tx@BcrUD zbc$SjP*MC*GNe}L)sx=qZP6HcHN|X`U8k8G`3#;YNGC~3&9M>JKrEYd3K9KTS|`-w z#4%P-A+)_ibo5RsTWQ`H%f~Uo1neVfvQp10X~PkDf0Ke6alsM(OlS>!18-Sa56PMo z(VA8&RF;0SSV;zJnM4k7m~z<1&f-<`8c@M|4c}av$7&r*l^CcD$LvjzUEcG?vOKQ> zvDx?g$e?;AbRT%sZzy0c$oW;*JW@iX*R4D%(R;+xQ?7CaVE?m!_s=+S;K0a17C*sZ z4Gl!ORDl4aBJ|C_wu+KxKkkIAhsj96kJE&^&I9%D$v$1((maBabh@9u95 zTlL%28b*(fuAYQH0ww8KfD@TLLi{TFB}}vKg*p(6GChdhB#!MtqLFG?7S=3;FeF5B z8;>Y1K_yCsA%xfS9fp_uHuXs$$$fpyw6ErqpB~5P%i5}LVB*)5IXRG*Tb)!mwYuG(3vc2xw8EUTkkgAs8Q!|uc< z7|J&=NR+>6-cn*x{LY!+=jb*3Tv_SR+4@JXH;HCQ{jAk`&BsZ~MonEWi8*}?mH%hs z&hX00!VkaE5A_7KHtm?|*pr9l^VyVOC9zyrk#QFtOlSowq{ysqx#RMcG_9C4kr z@6AzMKFi2hmM_ubRE4vM&*BA~Zx18@0sp;jdSLus0GHKVr}?{XOWgCNtgNgDh8Ha* z1O3>kM!7%5?|$jq1!z%hA18Ls>4c=?gz zAM6!&Wp#BhH86PwIYAzHbNLCR%YB9Ek}QMS8*ZA=sv)|G_79#jX0rsk1s1h z+>&c+@&LQ#H5R=E7ceMRR3-7gn%TBjvAAW2q->k*%W$T+U^7!D(pdQ7n21 zy!SkWig5;EV*Rq`Hrkv-UPadZOlQ$D2qpT5VYmsT>t__96_OamktHkoKI-VUUe%~G zdW$&bE$7Q;V)64ozYSX!^&gGpZ$vVlV*G}gQugM%{wkyg4$>puP;BBi8E|$RMs*XZ zNX3a+Myvb106yd+t#Yz**cK;r-68fOh^35z6V(lBv483fTN<0znhfuo9arl^tdH|j%(sGg1l!NR&qn;K;Zw?Yb7``0 z;}*4GM2wIH-t*-zbqQ2g`g0L2TX1(b-{ABi&<&IyC$qt{PO6k&>nssnmo=ohQ(goG@QY$dr+8~II{UZS}ymw-t7&6vC$2Q^JCKm|&`$LCKd!(C0?RApl zfTePkZijOQ+;FBh7f^2z0W!Xb!B80C3n{&G~5_8-b>~~Ti`J>UM7;|8bZvDr>JrixmUtUo%2lj0(Gb z#;8r-Ua{Yj7 z&APZfr>nMI4b4LN+sr9pet$?Ga7Q$|BvO1QHYhfgwXYo$W+x0+W&H&1_UQ2K1qBw= zAO{C`!=|0zM3tp1SM`b>ce;X`u(bvJcf2ckPS?FNe^`h-`+71!)#$eFd?m2=7tyf_ z2qrJ^#CbKiq-4U z-aj>l^Kx*X)kopAqU8~5UDQBh@0#_{{H$_W`(L}5BbR_UEoJ4LDKz%Kv+oh`-1Ot4 z-B+bi@Pz^%am~)x6+0ef(V%xaTsezb6)%W{9FCrY*c}iTTP%#?S)lR3~!RN^Wrd4KifwQZ<(Pm$|0t4U{&~_MekPe zFl1{fEI}fSx1t@AFDVB!6Ly(x%Dv?~O^gqHHub_`Cw!KXv#cR9JXu1WUn!-Pi%{6` zzEG8Q5S8HbN<9#ju4b7gof1r93J6fqwfZwy$jciAHqj{G+${ZU!F&~?k#Y&c(1}t! zwD2bFcLNNmk?EoLe772dQh>Z2W#vEFF?A>fFc-GW1x9V}d<7+yc_P@vd=6VAW3V~P zglUkkiBt5KB8r4)vX!9)ehHcRg|SeRIfz)Y`jHB+!mi&<{*FK^Ah3L457-)Z^3Yc} z^NjVOxxhAA(+T~Xjh~EPFO`%+iDs>O+4ETdf#*~#@v*t3nUk@qweFO49Z{vH6GYY= za?J0gf@-nqZRlcmtsh_{BypH1oc|iA6VZ0}NcHW8+$fDSQYG!^a&5}uWbBh%qCTRH zE*|!FXI+nGh`+e~B$R;NTi#=H-~%m1WG;s``H6~e4VQ!&%>x%HKON0OHPLyw50U|e zsMAz_Hrzuiv$6tZ(bbv|EzWXh)NAG6S0mBalQs~5Eq+*Yc(Mw3Uto8!|CD0=(l;lI z%pmBE&XuE~RU+$J43{#J$_1>>0oznK4|MH3WX5Y%;`!xaWi0q&3m-daf5} z^_EOV3a$K#sb?7Ne22Gb$}otSa}>VUi#@Y5af$F+w=xP1Nwx;Bj zI4nQH25|$ihzk)VM+?CSEq_5ta76I_+(;M$K4g5I!B9xak(P2_VkJrD+%68nA0%(g zC#L(?x>+QD|3nnwGKC>H6I0ynS@SUMe`h?#_ucEofBx-+Lj7JO3JQdgYK3EDtk}H% zTCLwu`kLr+Q2*x>6o@M%2|-&v<~2DBRe5+awJfebjv zu~J|@hg&L$USLHqTZz?H&dEe=$|iThfgl_llsAM^cM$^%If}|IRX2D(w?s}vcGCEw z=)q}Go*Sq?yDE@_15W@iLOphiLvAAXdiNK1A2~OdGCe@8A4A|TJ);HiVI?nGTiYxz z<9N%f?1$R^YGsMNBf>`d*hNE+PMu0fyk1-z+`@BG=!GTp-QVzWjst2P8Q4Ne@4Cy*|tn&!8#nE710Lev)&^;Z*JB8(Ezg8J=7`?9}p zO)Bn+tx=EkGzs_i*O-<#^bxJC>Q3Ai7QN&;k6<{|@{aCcK+Z-y<=YpMzI`DlAu1#5 zi2Ty`QS}hmw@(WrtYpk!p2+5{1Y(-mOTQCaHi_gyp_~`6e8whdy`zknw;|XG*D}bW z47sK?1rf8rw<1i@X+z^sU4eh-EY~Y-1KsYd?ZJqFbEGBFzS@%uCc)pnyLaYyu1qirXoWdXADgF-VxAO-#1F*n)5FA#Ctl=W zg~;Z=bBfyk?bgxMjm7LtH}TN`5tM$RgZzzvnZqUynod5xuCoU=witVBU2_B#eixsw zc!*W$gMWFL(5iAW>xdF)ln84sFe!RC&HEcTM-en?${Wzh=7 zGIi0o%r!>FA92{UvkNcodeG(;Tx=a1bsx6}1=^|!%L;pceRR4w-TiGNIh7g^pvx#X zhAmDjjP6+lZ+#~tSD{JuX^53E{YOxS&7P+9WSHVY_Z8%D!E)wPLZ#Hj>r@UNHhM&; z#f2Ib5<0raTta)(c&-I%xv15pbf-3G711UWx_gbu=0=;y7hJUX`$4S=`bK+O7;<55#h;278|)}9 z%$!y1CEanvo^8~x}6C->GxgI{L!<$7m8Tlxt-`T zB;qLAwX7dCtrqV(jN7IXV`?^j3U9+Y?{-HbDm|m) z<=g^KpORnHb+*?VsAn3+b{^!Yn`8D3Dupj!s$QhQKo=5HLGA;LmidoXJ6+!68tWK^ zvftbWi<9M~AEfA;7tyZjU@ay(Iibh>IxcZ2U3zIjIiAq3T{GeY^6Myj5-@rfWWsD1 z!33=DT|!veNAVCh@rh!-6xR)-M`&%)Erv-`?Mn#ETbUo%+Jre<0FU0HTKuG zIcD=)Dvihh64DFT2rpMF7oN6o$0;JNlh5|0!bFo`(;xezx;qatH+y9c@Qv1O={qIj6xE0phtuir@MIQ@_5iRbJuMc z_J_bx5b#K`$QYuVz;FEl*X*vBxE!VtT&R%nUDoM>pzr_z-?;uyis`4&8Od_euBXv`g8N}iVq$1m zjpJKsfCT>r9~coRIYA>uQWxqL!zxM(vmycO;lk;xT&T{Vtju-y|42U(3)a0&9hieXAOOSeKl!=T)@hEh?9%5)85r(J`(Pskg3(uRL zXpn%_v8PUqch_~F zdvY{&{b|*^bjzS3n)QilS&WBI`~x7u&e6owmc(xm?j8x_sRi*1Jm$W*(P_*RZ%nH9 zlVb&IAI-FB-!fGxDaRMx?as+O(OW`jd0mkQ30i!?mJTIo1l_0GS;F!HwPD@Bj)SBv zNuOJE(}>lWl+tX)j=w9u4z(x7ANdIIwySqc!0vA22kV}G0%wArq_x&s9m1R)deu5X zS2a+v#L!5krLDy-_JUnPbRpBY!4n?jAyor;(a@lX5k@B&uO@Dh$33Veci}EJsqbHS zs9M&E$n#_*SjOUV+T6P_x19LWJ|PZVB)c4Z@nRJ^Sv5&O+c$khNPbts{ zi7^_yD4Wp;#3@SvDFl)h1|q^?CHmOXVNwWnT1h718rEilOl@W@r!R#F+wpKM&m6p$ z*24`vGr)JHHQS~L5Ak0vt|WCkI1Cqq+{?31BI%~^z`tu+EeA`;KKV%F#dc4oN;A6m zJtq%HJtTWLRQ(A~DD4?UP%}C}m96a5(Gp#MD#s+Kg!Qp*;eKgTKw5X5?uAKS*N$I( zz@%$$V#kFHpW^Ww6GXtSayKs|RK=@2U;o}>&1&gEG2tu9`(PSNutAz-%O7wGD9yD9 z(BBMghcW1ojCAVqx$)h|pIZnVDd zi;tf|2e5$Co&znW3#)hO^59;{7_HZU7)r_`QB=m z$+A9H(?dzqic};IDRaUR(9PC6d|f;mNupQC+F%xqjyXn5B4d=1Lc;c%R`cRv{(*$zvO{iq3Xbx@d)OV8w?>ec{s`=C8VNFi!LZ>4C2IitIGV?nTcK>CFyk~uG- zhJJ~x1{tQHFs4!mJf)Fa_eUgdkjp1~xaPoB)c6lE@3}=e-mmBmz9iuR*AL&qa_?k<+6*-X$y2aI5~ycO145#%-E65I*G7(I_z* zm`{4yurVNc^_$4y@PKnIz#r3Mb?Up3e;J>Rxfb3l!q4vMK6wo-mv*)B*>X$i%cZ|U zB3?@&>pT+lLXH8P6J5(u)&bX&LNA_+OZLL2F8o!hV{Dcy-{e0A8zIOSk-^`+1V4;X z1#JC^$xwQ#=hJ|3_ElPiP9@CmA`bd0+K+K}MW(OeMU8^tP)__;hB(ttl$q6*0H9x9 zQ0!-B?tx!Sq%ssrWL9G^< zr+T*9EOy!;yA@*(yk+}|?)VRzMTu6Sqt?IrFXJKUit+Fy{O6wjPars;IF23YJD#EC zKL9+m??B$t3v@9b?XaP0ajWoc(fEQiUwB>MZYr zHO5IJw{RF??dT*S_bE7n7-cHZ8@ZcjaHl}2m2bcfbnhYp!niB3L*n=}NDDf$aVO{{ z)9UjaT?)$UWTsZ`Q)2eG+tKDT3x!7C z{&`>s@alEXCMflMNYP8lciebPHlJV`@Hg-V;n9T0_*c?7k^5{TVTfqz#C3P&$A=qR zCi+WIVl}DJ_j}tnN~qz48fj!D`px5(B{vgw{?3F+vF4|v$A0QRYS2eSJKyNH6V(-a zl)|T1iHit875i78#iT~OOGs{SMZdlG@&q}>^>=@%q{6GHv(q`}wc4Wc zvCD^snVh1<6y9d=hTj|zzcP1zNjeh*L?d6zi9~z%mu{Z*EF$T_YF2?qd6We`vDBPd zWt}jnniVk!s`O7Hemc9=SDFi~np1U)`Rt>kv5~R%-jyAv0O$A2RN!+}DkaY}bz4{S z!{9~erCQ3_WN8|1*z`Q_<5gL~Xi@`%OIDrh(IM{u3I!yC@RyCh|Hn|pG31u{&>wB7|ZUKnM z(=#GGL=ZU2aS#RTbl6GYsKJ>Zv_qYAM?JFCaQ=IW8~l|CzP8paqN>H;wvC1S*I?x! zcVewwZ-olO#VX80{vd53a*G&l@~VM!sO)+WxPOco^sFM?O@Bd%uQzg98GUIPz?g4* zjuiYNirL3Ng-IkH?&>QeS}gSo zxH!`f2$-D@7M)#6a9&p(fzmXPQ`7oFKxv0;qgt z6p}{zb+O__mXEKH-ei1yav74uTiXZeAJ_2LPju?QD8$r^@jI9P2A*7&edd61#a0t>&DLsi&}T|6JkdAQ>@ zd8dO&%Vb4GZ~e&joI&KzMk9KxoX0KeGvlo(l` z{lbhaUS6w+L=wUi?v16Tk?z}A{pdh(T$=F(loooHSs;7Iizd>#!UDC2HHQw^IDbP! z$rDcu^Z~)Okz!GPb>c;MsLjZdH|uh1PU*xsLMZ^S7#WX{{_0WHN3IhsD|go}(w?6f z7gtL9A4K;r(-~CbAKIw)PtMsWBZi==@gtCecXfU4;%R)2ucf`ld4U;MD4e(DtsbcS zcC~{;1@IDdm{j+_)IlCkmL1u1?Y|oKNFVq)<=LN(3p>HO-44pKW5c(1!B^4YV5@I= z?v8A$qCD+UIdMjt19!!%s)MqW&%?cUq99BDlv|S^D*}_VkKL?(V(Z4IOWV&j3zi$f zVgoeo#FDe!y7bCm|65=s2RD^%qsn1w&;fwwQ@y<*($8E`7kTjkaSI1(k9o8EfU`~= z#g##EC0V-lRV|ErEAgu2&q*kuwd_m%N4dEuh=@m!To0rBqInA!5gB#0P4(6{Q>Ojb znRhF$!!-NqaI&Y+_E7~pbL!JqmW!EDCGc>&S2~^rs)g)mGkg7RI=_XeVVPWtV6VP< zByl!jC?Pvy1|p_OPr++0%I#NY=6AAwZLW>g)bPF1-V?)pU$I zsKh#**X^cl$J0xLihhi!-ig`-mHUJCcDSe~X2kt=Gt-q*o579jN1tg?|Y!Vd`Gk`wS9cl63@Fp`n1+q+{LBu!-)SMjw zJXttpp=FH)2pn<{T5v>J7!9NLMYL-1uu;JMfhQm^01}S>+pjc-rp$r0V%-ItAYTt$ zT+Un^1K%Yc5Xi}T(oF4TZh5l@acA#iJ%4Mff|VbWTa6o!9-Vf9Zr8N$f4 zwkqRKZpIs+^u51qQb=~VR*>hvn#UE1$$kTCSu+L6bUy*Svq-T3&gP&rh(R!SdXQa=;_XhU{UR03DGxuJ0jz!a%>q zm62=)Kl_o2XdxG8_+w0^Z(8nP8S&cVKV{#5>a8iuIpIn82zoclh)^s}mpVH4I&CaR z7nk{(lQYae>XUhOBoQ-A?UQw=yxUnC=q}p`YQnmV9ZgX%7`il=qQ7mk;xJr3$jIO( zP80~F&ZwOpV`{z24{X*8TvQ7*e)sy-;+aC&3w5hH@D|}#Jtq<{2TS=@7|Z-iqmYqV zg6pfTLmWWt-!UKB32Rhq6cil#hy7?#1`c*QbWNl@WVz3I;ts>v8Sm2Ip00EuE@ua? zVq^GN1ABv3Tw7}`>pg1coz9IaL@kWzb`x0*-ymxO@$@>K0v|UjpJB`yStFsKTO)_0 zX)`@eTK=fJK^QUt^MxXHpJu=Krqk{fgNW(5n}DFnd!@|lz2p<-Fd`}Ky@ef2gU>~0 z<83|9;>ZM*OQt%6Fgj9I>ePHxNSQy~a>YT22P5i6cyv3WH+qi~Q}^-Vn_x>SRjWm_ z!ylXM^v?GV9%PIxy?2am1TW zz1=+JZLK`UIob8$E1S_X#I=j)ebB6u6e9$VUBE?1ms%a0u7!Y&FT#=sCs7}C*@rVv zGg2NOEoCieO@j|X3JxGcg!&a2UH8+5%UtZe#H#0;r>yGj<|e^+KkxDv-Y4DK`C_!X z+4t2tZ%|-jPj!n|Wa#LDXehN}AZM#%=X(BEu%>drB_PzPk#BWcNf2dJVXzSZeSmxFuJN z)Ke}qvv^AT;*B&{I`FNc0_pYTfJGqSiN|*%0b44P5IGc2D33@-Au63_YRp1q(2mt$ zKQ@Kaml=oJ>IeUrH~!W|p`8z#OVpV%lPaG=3daW83!iImu_r5ZBn>vST^(;X{MRjN z!fAf#&7D|61gZfn)r*PRz6xlDfrW)4ST0(5#^}91V=MXR?YRsC-)9%lJ_ZjlD&y3+ zyqN^xyN9FF+f~akv`a_A$!FH45hmT=ib6Y<%9USUVLxzWn7?aEBv*_C1ic`L+*aPS z`kwY_G&?=@h~)22DGz;}EBke7x!Pe&=DIsT6ydVL8Aeze(00iU^14nu4L-0ci2f1} z<8>~c5HV0uY`Z)l^JhCoVc0L1(N4-Yy~9(-tyww=YzwiZtsI=f;i~%jBkIQosNcFe z7XGE^_=fLeSPBFNu?R30EbrKQxW-}3nGHurkR4UHf6y|6mnX8Ont{3O{ZKZh6Svq+ z&9-vAhnl%nI6dBR+)pPeHmgoFzyl2;9ToS8(x$44F8tMG{vJy2o+pkRBG)#dIW3TS zeI>SGGqAs^rH5gPAU2zdbX;Qihc4_ztV@(l5S{87d+0Kwtkh5B0A`sIno`(#GebEl z<^*enXAp<}n!LRx)-LpviOD8eH}$&uj9rc^D=*%elM{r|duzp@zqMi*agk~1>5@lD zLk2d@$b%=YYZ+c1uHb`Sy9*xo_IT|`E$a0+c-e>v+#T6GG_^+~FprJj z>o@BY(L>A0s1mEVBU#9R7oNq34V^m{9ffg*4<;1)(t@A3$pcSfHR>FoX;P@EM&a(; zD_u7`U~2N_sWL|cMO`buptwzcFkfv(o+ku+HAuQp;Abtc7${?C%*+1l*J}Ap%+He! z-10EMO8P)D>i|uwiKT5v6wtX4^CweI15iuotSl+&by^{>(Mg0K3!C3H)oNV=WAvB> z8__bmiYME~D{x^+&YV5Lfg(H8%EG5$Ux^7{-%ypa^#!lUaV7lzMa3I?rZDMWp4qp zJJAQ`ZZ`b*Z`vd38#7$*L!)zW##rp@4>pNFuaCi7rqk=<*`+3zh>=pcQzFUN`UmPM z1=GQ9e1EiT(&&MJez$v?!3m^1@g$*(oWPuJJi^5*7H-BVJ*WTa%i zSWnZz0oW$%>#fgI?ecT;NYOpLNRvkJGqR| z0zLxfd@ZOw(B+-E^&{hLKuswdT~OUnQ#6?cII7KENxYq#XUoM8XF{1&Nxipg8VE@K z*kk#z+m!EqRLw6-Oz+#gOE*q7x&1N;MMVSr_5M=D&S9t_&wkBl z>H<{c(aAT{#FQQc+le{7zH-yRfAU}N;a^2JU+%N&xEi7-Ri50vn^aDcd)meP?ow-) zVUhlhOq^r7i|@P(g}`maG%)ZP97#FE6707x__U=qy$SIE==(6PV|M#D)5Y}mVrwLp z=Vav)2A|D@YfMMgD1w-v%6N}!#X5mfN4tP!pwt~6@jEsc*4HvH9a|AQkY40u%j@HN zq=1gYExtD%^YV?yL>W)qKA`9^rqoDEza02c!hH|ic-ruZg{K@JBNGg6C?op&9jCDx2@lCtP{dn*_x@@RG8Iqk=nlcI zh}%D<-U#SS7!E3?ukCha4BvO~u%8jbT1k0`tBM_=IaN77eApU?NxaD3Pi`|w|C98G z>{fksqre*QPaHu1kE_p_EU&JJ3Qr>`=uaRF?)dvaaC(ff=Dx;gAcZ;Lv!64WbJ5>? zet+}9zGm=q$++Bd5mKCFy!4||iivZi9#wR5C9YyB+=?}g-7#u8w_=LG28NcQ&1e(f zyv6kyv-TKn%tdC{G`?-UL@jsWFS%&q&W!fY>C~)4IPPKJPYE&{Zia%eAa}RS)>VrU3`xda#jV*y)V!-%2HIMdAlxJv6RgQGxOi1^*f2^Q%UFcAE?(; zkJlIQfU4X(4K(*l84z1bFW0`d@IguSzKd{f7{<`G6WdNTUb_z&HyGKWt zBZKLN7;vGLF$eZGf!)t!-I&F(h%ZpgjAJCOM`l>W(!7W_DgDMYp#g}h?#$vC6Seae z$0b6f({pCBb*CjIh=rq2>iLX4x6k(+Q-6m^F@*E<(FD?TqWu(7Q%mb zqUIFoAZr`6&MAaiZO*VfCx^lv7unn}B@l{-YLk`IgS7zrDfD=>saaJ2*2|{8E`K9QoKk8EmOFs<_AZakU6wLp~;r=>?kE{U6lVodwp@AxK_ z*?!Z3d}$^PnX{P;U+HyioTQQiAVbk3Zo5fxLnZU+q#KpXRTtAptRQX`->Wl5fDArRQ0j5t?8>vzYQdiU>RyyNVBw1 zyMi)Rq0W1n9Ml*jicTgna$fNDb69a1Iu#Eqe*5o9#tQCUX3XBc=d_r27bq^#D*=FU z26h=^6F&5h))otWzP62k{VU{vzaQW>l0v4tZ9+#@Vn+UOL`3SC{m{d3R)OhSZ^f$w zR!QDQV%OxS3%;1&WlqM#ChebE@ENx_k(&=Cvj4eP>fi1aB|~(HdS$_tQpi1i zV0!Lo3Xx4v#-v)!5fmghBkg2AJP75A`ZouPgg4 zUOeepSs!RfR8=Sj)|X-oHg6BOzj6u`5*9R93CoSB1J=tloFP9nTELU&D?hRW*eV));z`G%WH=nys~ zX;sxi6;C-<_AzMykR-Lnane`Y_hr*~q4u&LLi8nGeaGpCjRYjKvKD-eN11d|G-|6m zo|>0N;Piy86|UA{Nq~o`QXGtF{5P0jN%T*)7f%~L+tZD`gM$o3ZbOK^6B{Auvlj*j zT?y#LIF&wf=cXcaY=4LqJQieC4nRGqS&Ml}UX|;G#dnq zSRkcn)5B^D+21dU7ji%F3%SGV`B1>fOi_&BSH?xsE0i75(wTaJx=nd6g0@F!#P zSh3C($c)oxVsdf$_TPCQq9M_5h2<23JdtZe6R|0%3%hn7ezS|LtnPNTqV;Gmqm_k| zgkpVjC@TCl5PQ1gk~e8@5m1Ar&~^p{&sheEwm35lZQX73F>E*vhjJ6BYwMsD zPoRa?U%O5QChrtB&8jbZSO{GTSWg7uf8-BNgQmDLQ8CBMSm zy}OW%4=*HIX8&%svLkP96&&P6X0%E+u-p3Z>=y8|>r`$s;;R3Ad+*D7f2Q;yV-=so z5ph^69B}8L`w?wXS@X`JpT?l$YCe9c^#B$5DA09ds=>$0S{y`zAXGyNJ-iIQXQ}nX z|I2z0KL6|@ay4cL5-%pDsLAu$vcZKG`AL`vzk6_Cd9^$Gj0vbNA7SmyN2a3g$77tR z=-XF@bINCptc(6_Q9?SKM#gDKB{4f15a4Rgc)r*3Ku?c;^2>cCA+__&;STWqKQ9^f zUrUDvFt!Ngs8S+;7JRCG;5GSmT`^UpJIC}CxB$V^ z?SR^n;K&?N$2$X!>#an+opzWFN0F%R#xpyi7n>@R?PvzFvz{`W^ zQ9z>2OG0Erf!y*>;Kk`9!i8=QBHQV*uIn5$+8L@3@gs&wDmHPPKSK5#3H&=q`XKy+>y2X8=fck3qNj5hhA%$<5fM0TCZtvAyM`2W?G482gw)cAS2Q{)ttHT`dNsGp&bDj(qcwq?W zLiynI^l6zrCFPPBpR0`0o&M#f9hl0{M(phHj8bavKnW8dd5r^ z4Q9_2;jTWXpt%<8aGNf0)wF@{dSJrl6+dk=I&BAUjuiW_l}xs)0S12nFHcSP&A#=T zz!2+_uzqy5NPJM~at>91jvPYib#<@1O2kZz{JFy@s^aP z=@QpYrkA$?;W8YE1I1kP71&t%W~Dz~7@tLsq$10odvD<9it5EcYz4C#Km=NjY?9Ut zUtQ14#E^gSyi>QUJ6l=AAui|}fKG$U;v5XY@mIQd?lov-_Xu-;yqk{mt3>uT+ClSt z4VnmuW8t6(CtwG!<0Y)3`0dcy$%sfs%C}; zM4O4Z#hskIkKm_9LT}~NmOEn`jqRi+6H1~VFqtqHe`d7@k~cjWCLz!q(rvPOBX%tK zax@IJCjWCsbY0bFb|f0s1d~Ntvs^r@VbVXozmrOIHhWHdFVJ+)a6zukt^&SIk^nt@ zWjTA?qMdST{LsNV@_G=Ue1C&Q_!r&;_vGAhp~tCPnd56KfvX6)up4Re;O&OA%-Jr_ zrbrA7xh~1HRN=wE$RWQvBdm{=ImW5x;~11J@Ahu5+iuogmgpSZDY`c_k+oa!fpcvi z2Ey^Cs2a@h)}lQ8@0JhIMRq6=Ns6$ZS|c)ue>0`Ezn?aKFx81gdpw>QAoJ(Z9bJ`# z{i+8DU4SLKn{BX5wB0okhLwNih|5?qX=BYI&`)*3`>#>1lr=Gn0d88Np2u%VRE z;I%zS_yw(}ZbK#5wx)d-7rR6|(zASG0e-^+dAlrQiub_OuswjXaBAGAxzB|06*rl;9DD?;KAUF%{T_EtLFla&QsOyOTv6Zh@q;x_h=uR;~!5sy=sH`MY}c< zy^obXHZm^<-WK=8kLD6;_kXKq9Pb4epE#j6Ud-kEKL_JOckHjL%=oP(*#xa_Ju`UR zgs^xwII=Ry5P6G}nb}7$!ec-_zAOKZK}6VDC|m3mJ=kCuY1Q9dNt(~=lu>pfTkwKd zk*i)ZiA5y~B>Z+|{LO=ziMvYBJgEfmLWs-#IN=>gd7zR9taQj9hJ0>&e#U{3ehF@1n)D9Ur3e0HoSI`1)phrw}`>I+r9HS z)T1Q_ueyP9vJzW>Pbfr*YMVXX1p{*p9WJ>l(A(IdUyp+l#e>_BO0>Rguc7Ru4418?ex$HLISWS#+4YbDyMA-~DE?e@DW_$5kW50kCM~XoX zie+&<7=nfvdAFq5(z~>ykf;i5vv&ugj|T)rZyS&)ecz0P?E6} zFa?OMWmqgLr#i1shm(xHs=F~_@@l)c^X8n4|eOF8g8T|&SreKV*3%f(LxXmJX<4s9ttG&yaZPa4_?GUy){ zcafk`EbnemLO#OgMc$K!JWpi2e-qN}puGWE$X29Wk$=-1AUGVj9|`h|uwX^G@DJx1 z#V?&fxOfknQ_jRLWv6_p1lFP#^vxnO&)gSo`9$pAtIV=JS7jGaEglCf+BGe}Ho%WR zIhSA9+e#=($NCnxrcK@A*RZ7o)Y^!WyZhe-HqxmEzz=5^9Lm==qkc4U?k&4%LH$+< zmD%0*57#nhP_tGYpNNtvbbv1BJkJ6fsbvNx%w#-P=tJaVglmwAIvm4~4P!x8TR1;|r1p6&yDhlob?jq-E5S?waY?*8>_-apyTPVF2pVmd@z zriGHbP*f%K2p{Wr7_i9r-GF%~Tg?p(D3E!hw|4fw7ea^%kBh%csL#|BdEVyjkvQ_nNcEU{_vytV_Y%l-a?(uM* zO}x)XX}-{-cw}0;eEhtUwZNOonuhq}5XX-rdvU7#4sCSS1MGUR)kmbwfy)!o*j%+# zovN$VXL0t6lAm@GFI&V#hBA&<*Rz;n_1e3nC6vTHp-r8@<)*jmm)EA$l#H#<=Rk;8 z>Rt(5;G(6c-WuP}>5mru?arRe{p&3V!LL@`Cs_(_1ydjSN}gCwQdSn>8R@q_?a-15 zoJ*cI8s=hs#d2rAw1xxKrb_Z;EG*dDxFAw$M2p;iEyTCXTZn09@jXWGo^;(ru=Q86 z*fUUa!7_}}5Wc??vId~sZ!4|na(?55v-}qh8l(==M}-%4b92KaCs&0wqevlGUy49- z(<-IE#;BJ=&SYu$MoGcRdF%G^jXM|sNB)z!5yTe+0}|31d_i2Z(jkzBGr|WoR($X4 zbP~kyig6KWgjI&?8ZC6Ljal`iG)jlJlM?B>H8eb&29`Ifuj9D=mhv`e^AEwT{fLxDO;IW)bvHSA5kXV z_CG)znx_;*exh1c)y!LxGA(%?RB#_ctaaOtRc~EZH^c!_*~yV_&AgDe^eS5m+}VyK zg^h|x0|=-JdYqit=18Ezj>~p5^WZ1%gA&+(zlOs#qoaCKY{|VE*2`i>mhewUvbU!- z{?SPDCVjjuE$(BK9+>90JW$dtoU_V1y`io%J5~0%^FUy}8jKr$P2dd$O_geQwE7Xf zG}gjPm2oKN2$NxvbMbuHqdJ#@|2>t__wz~AXvu?w=f?ly$azCH$}wBk9!@prS(GbB zB&EZeiP|Aqax+A~+YhN_u<@BkU*qAHYhbM)Hm7@hXdGp4=UAY)vhGohfBWp2SUixaRrede3Pcc>Z;5-dmC8R# zd}5Tpo$XZUREJ3uLig^tr8DUeYgBVRaC5yHxO@YM#dC))e2~?rsi`UB{`odvhQANi zIMR){-S&_@W4^|uO8+VEy}AdDN-}-D*ro_K_BI)tlvMvSV(k5sG=%8jHx`M~zjGZE zi|}uH*eQMBd+Ow%R0120C@graFC;vfb)fiB)a5)W*t|aP4_)Yv!_!j+uuj3QVOBE) zScBZ}{L+q(F;(4zVBfy+7m@T}s~5QO$EcRXz~N;XTBMUg@7YyUtjlDrebguiql2&Z zns3Kk#MOs{>zZM!lwhM*H0ajZzdD0rt9Rop;vsX=$J*RRaz{~I)qN2~Z}$nZ^r&nr zHhj{@BQCIa2sDovUS7R^t@rs!_!*I};K`lBuNqvN`p;VJTv=AFjAHX?+%V=w}gTq>c781Y2x zTu%e=8km9d2>RLagG-+s`WDl?jf?$lBmj1A?4MGH{Ee+JZ_|Ttx{L^$0+1$AEol|q z`SvpZ6=m)NX^@a5rFXE-JlO-kn2243gcuArj-O6gm1p~9a=UZytKZB{go*A>efN5V zSt@k=*)KB5oR|38VC-aj^jGW_6H$s$q}dB^yY^UeHoMCO7>sTIQ8e(yIm@hfb1BOo zfp@Y#2cZluGG%>77|l1#FPt(zbPA(t?`V^b+WgLgo#mf)>?!}8srcOKVb%mbetbH* zH>`ghZFQm^*@HZ5bdp9{q&Bsbr8Jq>*;1(I@uDOx6f7v3t7jSm>KJ%uuwkH^yfcW; z7|x4$Ox=8lJa+MtDi`xC>bj#?>(#4dY7#qr%i9myOLN|B4sLCMic@el5}qcyx?RJ^ zEyLUCWS_|5S*3{Ybm(@_!Odgqoz?Hs>l$fmlI3P2WABTqW!@5Bpa4e1oCXay<|b0O z@b%510olExmF(wAh0X%%AF+dQ1!&i`mnVgZmq9+T{m0|o2X+E2WLFP zjH&;hp1;neXu@3|5jhc}f_0(Zj*EN?Wdacc7*k8u2lvTe!|h)+`K!UEOyVTGguTQP zC_3xa{|uWA=L0_N64?RV6a~{%LpHOJd84_ZpY+3Y(l(MAd9KtBS0T=6cBw{+bsht zmxkT4Z`z;zMD41eeFS2JqjL>B6jYoeR1YJL(-!hN)~v{#^vEiQ5z21z#wf&0qWxIZ zgKH3L^N!oP-M=(uotOMGkVTGgA8JFmUK!!smOl3M8MP(>4fe|1dAmz0t`LJHMbqiR8}ixSk&bUv`);%}MX) z=6jzDX#vVA1eDV zes4_ejNf$)Yq{(6o{@4y6@&lmaC0Dw)?cj%5~5&*<3fXo8kS+>B{2{X@Vw4JP!tpt zV!;J7up=@OienSEKd<*Ek4s8kXwu^garI`axciYuQ=aClPEOOy>n%zcs2^(o4_)sV zU1!v9eJ5#b+YQ>-wj0}aW7{^G#&*)!JB@AI*|FKE(X-S0e#baxobi6k*Cgv&>yJ5q zQ&?XjBqHr1cGgyWxuFJsQzk2)Un{Ec4qaB~EQ~ah@m!M+JFzU>T{0l$VSMzRb6kI^ z5T)&6Tp$(B;61VJ!j$ZG1*e|ryE4gt3oXL`>}m-psTgwFgbE11?j{rX{Y|~Uo7(g- z{-{?(*p8_mM+&-j-trxAs*}uV83Q zIz}a4m6|M*rN<}xYazX7k6k@;zC{}_z@23!O{fMY)8{-ry1v+C=!CoHHW6FAKQP&Ky%S}zhwN0#gY#$!NbfiDqIg`wQc8o1cN)^wPFevc( znV+ewPaFZYaK+3{kB!+9Ax;znWr>bO*g7g^0LP5qDw?ND-+xaURp~zAsSqVL)DUmI zgJ~Xk87h}jc&f8$a2ARbh!|2QuSWfHHe235i55TC4=~r|QHuK91OX}Q8n&ULQxTgk zc~WEUek3DF5=JgPQbF13QyqMBf|S#2kp{*LLC?n>cm0I~F+h$iZY zGxak}o_u)kd0FFU+;`ZOKf&5%m2Cs{a_H{$bDAX;hoi&2aZ&UTRuWuBIFdnTx8~&pqZ+znJ zraj{Vr~Hw_7gbM9U&eh4wdr{)TnQ3lTHKD#Sf+@a6N7?hZ|h!4+CX^WatG`8CUuiR z1Nnj-Mv0#!uO#~Zuh`=q`xH(x)`kgOz5JxetSS2OICF2It$rq_2lqPz>!1ovY{oh> zKS4%GT{i?21aAb&T0xZpi%i=;yanP6f*5gYrx63GPb{*e1C4kL06+(R+a%BS!3dFY zdhZs-!(YI*k2w~Hzs8I}ow({xg6eFm{uUFrVEHW+V{hqrnUvHChaU#NVQ_tK{;VP+IK6Acv~9vNfCE5XsOLNsS)QQWzA0`T(9r@3@{oVvsB<>WBpNA0_oJBf=q3 z_+MtTJFl#%Ra<1$* zH#fBoKoQt9!+u}ObPF^cTocCv@W5bP|BDuzI?V&pb=SZV^Bd;3WO)+2nKxzeR?jlgps%w_p0b zKo}3YPs9}$e_Ue78Bx|7CJPT4yjM7h4VSW4R&cgS*gy|Nz?3MopVfK4T%G`L}K^QP3>;9Y`9g3^>1u~5^Vr)PY5gZ#fV7B+;wqoMufhPbhd2g@3v*D*rtc(9Z z)oiiT^Y-NAY*A`hu&K){uft<0hA)>y?lELD{#)t!=(P*|rnXx)7y4+;s$~=tiAcjX3b~U7RF)%K0O-+lj@GVV>$cnZI(inS6RF9S;trRdHg# zO1xdV27R|!e7!q~ce@ghRP;IlMgY+;`^@Ex+n{HEH(UMzhmGKC%Z zp>J!xuf?yP+tjyea$bM0C0HrA$atE&(sNd~-(5G?zAI7-9o67oX3(N(?~+M1hi|Jdb9*?b;jjvJRZzqD+B zkkDg&`Mj&-%S@!4h&7YcHb5W8Rfq*))1;jb+EiAllAq7Rv2k)3@-%Iy_Ase zU(fF}YOL#8Tl2AT7<7fi#QM`P!6e~T%&-JD=U{U&{pqfWU6kdG5xd(pN@eAUX9xq% z@;MN|bELM=K%L-EZoppzrXZJCUM zW~kJc?M%45n)b$wjm4Kb1`sg==TV_>1oLSF3POD%cZ{goQOM=W9x*U z{E*XQo}~uWe|0L!>SVZhii(RKX2Q#1G*e%Zuk4;t?Yew@dj`u*Pgg;lD1hii&tRG@ z?xRa6hz5hP1PTuvp-K%?g`}W%kGcH$RYjsdj3Wc|h$l*c1)|DLXn#?)B3y5QaVmya zO4@aJ>?Wq5kUNBeJFta~%+p(TcH1AM&D-ZU3o;~-PJYD;(&C+&@r5OTroVsD3`%lU zm-^}S*!nFWTWfmWRLr#sylMT(=dZEgxJ@?Y(yC&#LbFD`ZnaQjeB*w>jB%j6g@{=b zvKkMqJLT7bA`b;R_{0KRyK8wZVu@m>x#5AhumC6;VF6AMmt009ol$+^X9&Py>%E z%zHc5Uh5!d+}{W|DVtSM!(Q?2-wpe15zrm<7UCaYjMEfCFk0<6cs^=9u=vXDy60yd=L7rFm121OQJhoHPf}!tx4;1 zZf=AbeUikN7n1}Hlm4em4#VpkwGOXLq_Ds+u!bp}Z$`uqIuxPW<=r5>_>+$hxueX5 zfMl|Y_psfX7-65ViVDW1oQ9TO?Ch+vY*gI9ES(=|7C&P z)d0;3!ZhOEIix}xtZtzH(gGqzlP*k(Vuu8RrfM-|w-I-3C`>M_w_m;4pjcV>WIqH7 zT-zsABi#3pLX#jrWWm%9ZWl8GHElc4EXc{{-9#WGNw>D&U}UX`z440&c5q6A9%MNr zmrpx(Q-YyYJv4ENxzMT+hR!li!<;G0b#(ur`4%ZVA>#sYxz$`u9{V~c>g>_GK0OvI zII<)*HuhXU$%c2WX6_g;l@?I5G{;r%wv5Y+qR_mxNVVo@(~#aYa?&g}J9|K6WsPy` zX97GKPf3}|i)jfww}9Yi7+Ex5M5Yx~%=E?|%GrG8$fOI#l{Am8nmE(6u{A!g|6574 zsGm9U@;vN2MDZiBtvT<19TpLK=C2^xaGXiX#vje+zYn=DO-uEmu>sTUxR|;Nf_4Up zL99c_*QW-rm)ZB{A{PfIC86}2KUiO|Jp50|`l;kegvN{^w^~rP{_4e_`ZMFujtTY+ z`WwKM`jt5^hVegc=kwM!jb(m`>m=xUddgzhuQt!CtgJJP@z72E|b*Bxe5U~30#!sKg0C8`F2pPsi*PJ%$%v@C9CXq8fVaZ3k7 z?`)2`c$5kv2s%OyQcTC1iRC(5+LTJo;Im3uKXO!#bcqHurf4u23wJ+eogVK$O^IwK ziwS>8zJ{RVy##$W#D)d!af288eGg;Xk)aFg%r;IgVhB>(gy}Hz@@laMpj^513PrW5 z(6kR`suD~NTsXyez6j<1l`H?Q_@ zlBme=`*qdr8>>?!2~Di1D_aW{3xiW?Y|gIAYh)soq;yVHooDJ$t8?P&+@HqMlQ$?$ z-*TM*#7(~+x7Z3I>~f^r*hqv=yl^$87;!XthQo&vJwG*9(dY7Snj1wUjhhG7Ew~Y6 z(pT-nSUKnJS{~bASQjoi+BCJ!aW$`uzhO5L%Ct?SAZMn_*&wdkq>N#u@$_yn-cQqm z7zh1=AFB`%krw9=y=9EmXwRpsKX|RWbp1!lnz}PJPEdE)Y;5eJbSh3b?-bzo;SVi@ z{T2RiM4PXNTONspvCXcW3idv&f*8p7rNWI20jI76*Hwp~0N0@SPS=%+$GzKU;F3la zxChvc)Mr$Dioxc}BrXGMaaj_ecRyF4C)$&k^VXgDrj8_+?3U*m>b9u2Tldfq3}_CH znx=hoJCV&>>gz8pEv+E89O@}@O)TvM6%`c)=(Iw^!w9E0uoY94<2-NZlcq)j8M<*P5LO zxin!w!@o!8J1qu5DjH#m@3svlHmj?t5tU!)SV5%JzAcSUk(yw%OBOnD>|ZS~D$X%3 z&Tnh z=A@|mvdY}SCW=5vwpPAEv`}ZJhg&S!A|3>COgq|aG5&1!uD&yE5L-?BTt|JWxTZ>* zI&nZe=;&diyw(KgyUaFQE0FXf=_?HBM_o_$!H+^ffZ=we!@5n4(Ph9kb~#pnb?^)( z7H`Gb-oudI*#h(29yw$(c~b+pZy4+6Sq6tfcKzwm5VbSlepd6jE9AV;d;wcz_|nt1 z#X#tknaz}%-`2jVf*cV9D|qrfElQA20O$k<4HB-Co2hlhM#4x;>AW7SIHn>>+p8ctp`A;as_ zZ)aB;gkN_LRGAl6lS228=>x5m$EvODE3zr3*Y^V zzr!n$AW8GRcw*PkbGd+r$EF^@cChqn21#db`tk{ucPte4ZGn*~TmBOUa_AtD7WYa7 z;<+c4M@KWBbSq{tr8t-G38o+(48n7gg9bLZU*}8jM=ss_$<8bqgs$EOJ_M-$sw>BX zFNW7Toa`}VA*1j?Z?@YU4&VL#yR{{psa`9FQlxuip<~0@-br_8Pc(Hb_-IrdjME;g zk@Ai!tx8-g8%+)xp;Cm5^GzAx&1E>E)_JAohI2i>kM(#|fgSG{n6RIY(bppkt>BJj z&gd2#-rj`*3+WK|r;o>xxl?Mcca^@O3^p(_5WqVV6&B@XYMQd6*#sWzg)p9#O_PkM zuWuzLcO6zLmkW}k5pvlFh^C>KCzP_xAe@m6)Xl2`+FBFA{*g$zKAPsEa)Q zBi~T4Xi6slw74im@`E;CDSCgB@|-X6N*&Tf5IV!PK}xU@R8)A8+-9 z&FQxQ9FiwgIhFUY2jXwrc4Lu|(6EqFK%V4xVzy+Q&9DG*k}@JGFaY!+ZGKQe@pX1F~-PRzhN<>(r49 z;Qn5^?w;avpBQ%wiBCEwZT&lH z{OH8LY`mh=P*k7-se4trYUfCpZ9KfV$i9*x8s!T}MIf}Ey&}*D^ad=J6QhR@{9USD1eSu$G(AR-lGHUuw#{Exllh1Y#46E7inbTIfb?q6}DQL(Yc zmKrz_m^?4gL_sp-cC*xXUQyljS{S&m4In?nKVGKDf4w+Ydv&Vg8C|&O-vo1dF*FFj z(vsL12tIDmZrq=`^87qB?V%(^-=XbBxT-4^6mtA_XPN1^|M^eoQUMN-ebr5tbad4E zdZXE7qxt=B>Jq7&({%0KXAJP)H_^2x1k99fEX{TsQAI@*T)e!uLD}5}ef3xxqSn}k z?=wlTF)_lgp|Y4*d)K}C=Br;lJf6B&29h7vF&xJlwQg6}TJF|Q|1L|}Cb>-J;DXK} z^N-r_wPZ@ltLu{g>V5yUwB(5qC^N=2{f|YR`K?Q@(80){VM6{jJYfTbq4pr9%`#xA z`idG;hD@VXgj_}Rm&@<=K{PRvqs(7MENr4ns!-7*)3)zh?@w6oJfvjPR-wboknXYQ z11sMx%W4MZ%T*k&cfxCRPb1N#+tm?=ZuG8}UIC7g(?E@W&OnMs&BRp`Tr z@6(x0mUec%F)O!E=QDLGt8HXc9d%HdRS$cK!7qOs@xCrUu0W4xu*T!?$rCFKWLPf& zyF2+6Y1ASjqlXUU2$=nW#`6mcY|US5nQ_Y|`uO8at~*FZxh8YE(sF0KzZ_{hgVn=DvEh3G z{*~M*5@5yxMFK&W5;vj6nhxq56I{g0ufxPHz{-Odt|IHA zW%qj-X)FYB8(qt2dACfs@3}8&AXxl)%8T*#xh+r$KsV3fWPw)c;q9HL1jWvL73On5G}r3I@AFyO4PJYYX%I{%rG6Q(C0D4N5c+Wsby zaxe(Z=74~(g$)--V1IHoh=^=8GQ;JrAKqfV=BI$-E*27gdm4?+c+tEyumYFVI)!7h za^@(%+~f>{To;JgAirDse-XTx|Fry&7ftL74h~MinzAIx z*HWPS$L2tR18!JzU)N13evLf`jp7A~b*C29$D@XG88UOQ65+9nQ$|VDYqGXipy5Jz zgdaX|5?Og(4RiM_P88Mg&_uGvFoHt)h`<_1z>Cl-2R-}=BdT*$?EQ`TEaOX_)UJR_k|}T$K-Js6v&i zG=@uvaK6V%Qf%q!}b zcAr;PwjP1Um4!{I>;2C6*a0~kHoCvXKYnki&5I0P)rv0tGJ2mm4%RJ2$e5#`u?(B{0dqSVQLh3?@9+B!q5%5S zcD0u7JA(+}+ZF7alQ|Ro=~bV=(An*}u14>B6{ogQz5ZJQd!c^#I0A?V79S!j(8!m! zcgI;@yJZ#m)2{)p8w5O#cUuxB+z-zzC`Mgfaih$ib380)5EaB}0(loX?THEhuMNn? z5{TWuOlf|hu(srl{;61*8}#+#7h(kH!VQy)UOf_W`!^JijSjGqr1rHiqcJ+I?X7nX znJ?@lzIw&{WMj#DgJP-dbFk+RVY9=WPX+ukk-!ZB@foN|2E3K zQMIP8g%x+WeduRgd03e4& zWyRN?%bc!|4TB;wiywkH`p1ZrOD)GD0)Aah$W%-y67=|KGZ0@>wz31l3;MI@&G(2W z26pY2@)u|D+}AOKcrR|ciAp5epFy0yFX!w2J57!b3bg&DTjnN7(s19f;8gXP@m+>T zMnepQwiBR)K7?s$wT^#1XnvGZI(KckQCTuu*10Rd$uDS;DUAXTsY0bKg`FGF7Mh^v z@hQ`qmr+>R=r5C-^09MY6+@j`A(S>}Q=%m*pm?(3)E0PDk1NOJFcYtHG;!%{r$|@S zYhrvaLzQK9hMSJ(pCFZ!)FR^N5Mk4aW3b*n?5bJ(N^-(Gf|0|XD z(O7ViP-AD{K;Eu!J=2D7LJ`8`?gOIlhj1DPKBYB-f}D*WYij<^#0C;W#@Q99juq6v zuv?3(?@zF>>M#_pbtc_&h7Y?ro9ny2`NN7Gp6ZmT;cCSaFFUDVfls?BaeL{YASR``M!3KE*tsLlT@XTV((^iVmKx$nDCyC0;vZTYT)<(ihLdy{6 zEJ1ZH&Rs(ZB8J5@L(E9vabeGyCK8{{bCrM&Xx()5bSoz+0sfXg!y#o=sks}ueG}K5 z@;$?Ww2;`dNdlL>`mqa2etWALe3^rZuI%ftzPc=lJ!jt&I*2dxPLNRCM%rmX3O&g38sQB!P zDEVy2j-Hi8&cPdLpZ1y$!Bu7YDWYea686s`tld|}iHMAW4tssu#pM=9io}sHYLf5I zrrgs1EzS5oO0(Gma4A;!ID^0N;ETr@N=_VD@UaAN0iXKKv>}P3(5^W>!a#%WYwc*R z#X!`^CAk6TugVeauUGS<_%C~z&}seE9yjUV($@CR=x%O?tQj9~Pk$#J*4`J=;D&d+ zE585*mD^ov1bd6|Uv?t39-(MQvp><${xMX_G|uEzpBq58Y2OR<78OGc58L)<47*yR zznd85bfE3s;@Z|vDu{+S^`7oUfzSZG~$e4TC8GS^QBpja=1j3)e?^{5T zz<<~tBGNe1K!R&4l+avizfpRobVcpWn1TXr)1p&FT{EGEbZgP#!Cr3S2xXMy#ds9BjlcMjk198#hv`imh6S!?DzRS7jDRY|3E6Ck47G1#m`UT z-O0d|YwI3Fwa%(F&j7b4vh44%p@wuD&8H4HG-VvWtL3K3hh#>hAuP8PGYW+piF@r> z$L^*dML_WF&kk(@UtP2ZxW#9c?UMA)=hF5P9C|UhF(^cP>f83#6A?(_cI5El>?6MF z_KWPVK)V0mgql?+Fd7i51uj~QJUGc7SL{cfAo#Fm;a@2#b)w^{5Gd+SsR1s}I+?NI%wG@7yN zLyOVph0|lXp<0(Yp|h-I+&|i;CD~!&sZ;-b>|C@jI(VGXRnXD%RPWI?zhL)`4JGQ> zG#?XO-K994Ez<`$6-&NTlhorT=vjt{lZJJbhWH;%C&3iLV%fo2m(!-BiXWpzHG)VFUF#eyk5dm!S<$QfVE?r#gZ~@LO+fIy9n(Ul?XO?QNq5RFf;!GcR2fqc=RMd3 z*BrbQr0*WEWXl6d#gnKNpuI4`s=ka@OT-SMC0?LQ@rw6nD*e<8CqIBXq6wGr_q%W9 z+4o#n_WVtZMa4`taW!zJ@B9L{jkg$gnsL%q!RsZFCn}WRRXGrlV&3R)}xo{b&z4A zFx8<7yYxvDduZS)w?bS;_T8cehy+Nc+!F@4g(89T`KnH1FPSK$U{ktEupQ9{D8hzH z!z-Y`RO((t2UL#;aF3f|d03l>%g~B|7qKw2A+vaRm(?1U6SV&&s;3RG{z>wtpc{i! z+O&?BZ_SS;@&m%r{|DCH{vB7gQdFNBG}{p!le62ed6q}73bdpnBztiKU*vZB&@O7f zlhdf6Ec~<0#PE75RtXyY!?R9X=UH3{X%(LM+1uf@b*lsmY&64ZmGfz)~* zf2*K~WubyR5fFg9_gt(Z+*4HK9Uovq<5?)`ZU};EugU;B_Ih2aNXTBk#7?Z;xo)EFnHX zBX?7yuruAs1u?u!t+t6S;oU=NiQfbjvivF#7u>Qi<+xh`cc9F!8@yXeO%HE!KOEXH zmTr=%_grkw4wb+`@K|(aRWal5(L)nV;}G&6&38}UP$(#J0tMwGa>5;itNl+s#`pih z(mvGY->s~A6AOQSa^RcO__wjE&c_Em;34EZdNGvirCvt(Z7B8H4m+w?CpLdD0~=uM zr0vk&4QEVlB{_CT`mB1>?WcCKyT#Tq=mLZ;VloeS3=iFrj_|Jxd>{EX)k3#{nk4Oy z5n%D{Y0+8wXFtTlwy(LJ1aOiWXmO@|bdk3P#oC8$K`tZWOtomq`%~}SCk@gNnE+mF z$f#9*9DeI}f_xY~Kj_ritT^rM z@8=iP2jSdTuB&B;jZe*ipq1V z=#|Klqwm?&#{038#XO=1!QDcC=>z4q2NsFolTdV=OJ}+t$K0SCS5_np{|%eo@1>Ja z3clM1B~UI?IfNRqi_5IMW&o$nO7U}}2-;5cdvv0!Y>^RrL2Wl!g?7j+>%g$fbx)P! z4VfGSi(#d@CKLp$7jCN2sWIe`I~U$0VZe84WoBD#mWPeP{|RRRoz9n!(<${OXuT)2 z?Wu@*-voj7#_3eaLakSvRKz0yy&z`L?ULVGj$45HAbj~)88(Ea@~O+gv@;`?#8xE0 zq$Ve%ElAtG*0t%;#Q?;Mj=P9ie(m|DY5%R;M5X+JD0GE&q&s-UXhH0hUo-F zr_MTVj`0(o(#>uyDxg~k(AH+MG)bh{75g1qjJnn2S1E4EiM9>*H0&j}pOj-W<9BwfpN`FGOs-0(KnE;%?KsI8t z|7jx*_4Iyxg6Wn@0*luH^*brFYFDw@AImM$k~5$7bYR@pU<4}H7*2!#crUT-nm((t zpv=G>HN;i8&MWHfUffVFNVFQOIWf%tGq#jNEx)qnvUMSXM34s#0sX4~=S2=V!yNgQ zqO8ntH5oOId%Jp2lsta?|LK|tc)!6!G6yTtg|&s_^zY;wFvJX?8gifo$gd%WD#Nj2 zK+>5D%wL^?Rs*h9EELLc_vagZ(ay)m-xC}Tdn1OWG{pjB$8o}EdSCV71I@-jLvGL! zl#`RT+A^ozMjG-!#*N0daH>jUD-?e*ncrV3R4f=|_uC-3(Ihx^_@x?gbxfoG608TmZE*4th@F>O~MZS?YNk4c9C0(g^ z0J%h*%!c5^z|q4zjdIR|vqiOJ;Y6C!^3@p|T$busZ?K=kMN{Bvdo;;{j;ZHf|#)1B^kZ z!{JI9FG$DcYDCK>H9E<>B(Tu+@cz+P>$1gsrW!QK*$Jk)+s_YAbJB!)*e$U&;AC?) zaSNLO2NMFe5vXE|imRs<30QV%&=h4rwI&DgwAjXAS4TH)YD&i8PMPzu@k0G~#WwwS z5q<-lw_?V!bw)iZdXrL!P{(&MZBZx|=7Q&aIUNK)Eo1JVAzetv%gBK`Ujl^2sQ_hMl4EK3 z&P;ViFbAqu?>K`+h2y@B;U1$J3Rsj^Q!3=llpS_7?Xhrk_%#PUberUOjDL>zJSZ+L z7Tzritf?WXTrZcKq?b)F;sK;p0PcSyb1rc(Gg47C`|4z-4c$Z_xw`F*g$W^27h|b$ zU_5b!0>}@H;hISjw|{xSc#H*>{5Cf=RRuPxhgPIOkpWx<(456T)yrDZ-Cv-VTHTx| z9aQ(QuxHY@gC9;<>6)=Vw+yQU<9=iITV8|&v;r5QXok;MEEac^Lt%4_h*||Fl65n6 zb7g#Z{#JIV#-qDS>JHp}WsAzk{Dz8q8H%TGEM*wltP~F4fC(wRX`%fQPs>(#Yt2np|`; zqiM9fQ4ua#B6}6Xlb7Ll@U0}2;~sc?{1J4zgn|$XvSTdnJd3g?!0_JeWP}oIIZN32 z`2Jqru+;@T)B?~Ztgy_dT>AMM&|1G2FQ?DNe9Ix)Vfd@0zOwX~LFq8f2~=*v+q4t0 ztT?HAwxq92@~!=WBHrAqL@8nG#>~x!K9?xjBUD>gx71YLh7%?ZRg<5tj_yLV5*#SsQm|1+QXQ z&tP#<@mX05n^l8IzNwT1St-o47COjVn<#Fs3T6|I7MF5{8;8DZT3&l+kocg(_A4C! zy5mw*b#_$V4}`q?t3lVq*-cSPaT+?ExfNQO{?)VDQk5cm$=pc>fLUzxxv&T@Pbi>6 z01`wnM3E3dX)7>?{yf@jUxEs!2C#Br1%3dS9v;lmO`;@<*|0s@^xYW)SbR=D1er z_*c*9e)CfRltb=We6D=+3Walj#==Go&fk}pKY=rrVvaM@w~6(NJ4xTE6VuYBzxL;V zrre}d5dSQlI1-WHMijpsL40rDIo#bm^$QdNLnE;hjUR#Z%SgOPo=*Kw~<&ra6-Bzl|dSLAwKBO9Yro6L|kYRt&Ig=Pexb3e!1&7 z4K0nLs%ijeH@w_n4MWH-AF&<%>c^EdJ%#@25lY-_d;O>IG0=i_s9xU|#l zu)^B1Q-D>)uhioy%f~}aIkEDo??TqTc(edL9e1y=*X;#H`HfIQN3tvX*%YP_J)I^t zU1;80Lc5s~S#5dVZwz<-@tTO=GZQX$Apkaj8fWL@*Dg)G#ytc5yuM4nDc zMJ{^;a_j>|_3-Enh;?)~)*US0^&g*~Z@aKy?#~CBPVIzF68m0a|BnA$v1B_k#6oEO zZOryP^J*DG;hJ?UH6=yp{HQ-#TkEg^ZTNMv7LJX^+Da)QHGKAmvHtRE>n-mE=a;P0 zF`{R;%WgH=CDLbIs*_VIX6rX&n~iofCFW}%`I^r#_l8dyu2Q_|qu%gxpq-|H{dz$E z_pj|6)N#c9C$6VYPUGHRILOjLNc6gUhJACBktp`*bRCA6 z>vf45;~Ju%(Tt8h@&(xH_XY>@&&x~8Q(ga)wfu+K>&clVFC+O_ggcBC^`8|j2mpCT znoLHvLNI2Mje1TWj^W-_WzCe=Sb%0ROMA6ZhmUz2t}eNA7Q!CwQ_G}`ow7YiWnXf1>{Z=~II@z$Sbl zq%Sw8U!@$nF}+karuXpuuvbCCkSi&)=~AO$PKPDoLG&OdoFo=H+NVOEKe|n@N@6#e zH}X6nVf1H2ZpQd4bmKZ*1D?%FekQ$;&kmbDz&OV`I<+RK2eIFAElo0Oh9*F)8bpPM z6-SRSgV!I2hrhD6U*kXo$Sr4J?)KAPx7Q9pwpKrzVDL~a7zPs<#gHaI@@*y(!>LA8p+#_Y8$b#&4lm=BC^xR-5y_{4~%4P;Cq;dX`$kiTuJyLXT z*jJpB>J8wBb7R+{`NTYRkez<=n(bcbL9#oe} zCggAAe1X()E)fBJcf=wF!5V^JL|#Cd)k%DCjH=najDD7b(-1S&h-su_ko@WG`;^1WK1xgN>&c*OgZk ze*R?@&t|m2o`TxU`&hdTg!V5qA`#OA!kSJ@7;71StKExDrrCkZ*Pqguy@}_MMRQ?~ zKtMahU^Ov?G+A@iB~?*-w!ZmkmUQ^B-BlLWdVEmi6g$p|;;3(z827>zvU`Z~Rz&vt zgDM9*Y(w^)CC#rvcP*hKQ>>D|zYKr<8n`c%yUHdC@Mx{3d;k{1`}{BxQ_R9Khk+$y zOE;ve87gu4OkN5g?~w@`oRvP~{T?vHra-}yMy4^`Lnx3*aA(ORZM4v|C&^a-61n~q zHWj}-zkESIVsoBBQnx}?N`X=Qr29jg9+V?{xvqb|lMWd^+Bj zwC~K8Dfi-~Gbwq%Uf$3Yc^VA2JkiWer1L<4=(UOA*3Cf>+b-8WVRLU88L~BXW_Zuk z1~LXT43uDJdS(KC+oV`;QcaqF)mZu`_Ro|mJ@uY41mRmfGt&SyOD!>$JW!;z{ach8q!TdCP7SpR`8Yc>_g|$;o@a{f~^6L`R&2M5P(fxPuTh?r;DRP_aij zXV89g8#?Kbdq-n?%d_2oB}6Jgu9UFxKIF2}5ZeK^#-*{jqwD9cwMKN-L)3I;$DZ%M zCN5Tf;ZlklFShEB1Pkm1XWoP$96i<5*vtQ(UNsAv*)-32tw%Zl~Bi_Q3^ZI~c(IF>-oy8~HW)(;f;pFh4uN-!Vyk0T4LD z^h3ecou55EfSZy-`0p~{68qP^jYG;JA~zL6k7*bT)v)%6TY@v@rRg{$WTdrNC*lc5 z2Bsa)Bc@ArPi5HDM{HMNcPnZKPki@^z#`Y>(THxZ$uo* zXleJ3u2^Sg$27Y-Tl-dSUamax}6Bk*U*XWzib+j{% z<_}11nyaReeA_1UYf@RO5Vp1?KnmPXHc0(BDC2-@hC%u^L<#5TrIWboy#o9;n~{NXo-fyY$M2-~f{{ z3T-;CgErYd6aqgkqqw`f1HJ5=Kwy)d5(Q28#DT==XWbx28ub3hp&c-Z#b9^wIPpn+ z{*{?P@~@3-KzBKDgk5ZF!wG(((yX2b^FB7PN?YTFLO2dkQM#Rp<#qNJJ(@_U8$ z=3(fSwWv(c6Z=xP_Pe#_`9;?`qKOglh4(;|zu-}Ph;`}q6NGOIQ=f1bNflRFKfSGX zY*`(~Am3)f@XrXDvte*9RS-h!W?F?obTYTEw;#4n-z79`4DMN3%Z>snOGLP zHax#NeW@EvXPgN2BYfAgdMRLqQLYcv1JN(BxNoto!pNvjnIR%y#p0Z*bD;bj`4=$2 z|4N*#>LHmagB^Il^RCQu`x^`1e!fRD-`pu*%xG||+;ce_Gq)r3ZqVvoi$SZ^vRN_* zGOhAuv@*B#4q7?6{Hbk{{NN;Mpo41c4&(XLgrwvVYDH>rhnMS>Ooczc4Qgy9Mpjfk zBq>D;a61vMXwjXC-fpF_=TRh#6C1$Z5O!TX9x@2VOO)1qtY`OM zH#`xF@N7{S+N~2(QzDYrw-FJ}hQlsLbc~dDuv;)j5|14|@8Q)rItjX?HDkK+{FBAR zE(I-aO_U;eIiNAQo0sp+ulZ;BwrlrsM+HiK9X}X`YK-Zjq&%%bKDvseWH;GGRA!Pl zAL4ZJZ|{_5EDnc8Vc(3Mr5nn~y}GRU)8oLH`pc;XI4sJMa4r7)^GsAfD1}G+rX(GH zw6@s67&f5q99)X5yD)rugNT#yv|SG4B6_V)=iR}n=XZsz#RZnoMP5LSErFe#W>=$3 zo7<_Dl6xH_FYUZ$BLx_~^owK+$Wh17(!fZ{#`ZJbh3w422xB{0s6-c$1SU|^ zoF||TH-w~XVu-VpC!{cNsc!p9QdwRJ@a`OqkD7UIRrI7tgEy>&(Xyi_RSz?U98OOPa72DQ_sp)9J zl5$FLy~2yPyoVj6^I9dfl@(2t?X-(tq&*}=W?pNA z8`ect)YJ?JZZV2n!%Dv6H@dzYdNu-`!E(4G%I8$_lu>-iN#Q~ESJ*tb`@z-indV?p z9wz)oE?-cfme2nT)avN{!8$ZJ;K;fAdxj$vBv*t7SO21VMbyU)R?}sU9am(YU;nGq zS4Yp2e;MTxT^n3`%{mzg+6MOy7;~r`lq{yFamyf4U^E z%g;IT|6hA=8C6&Fyoo|^=iu&^;O_43t_KNj!QI{6g9g{&?h+(O(BSUwK8N@H{pZe| zS!?Fr@6#X7g0;`tyLWeW^;1t(R}uVqJ-Yn0F!%uM?#hbiRBC^20LI_SQ9`wxH$!!D zGWp;4`*=bU$)o1y7sK1XJ`;4+;J0+XhQRr`nC-XQx_wi*%)K9zU#9Chap3~-HpgK< z2to53&_~7Enw}G5UELb`Uu6T(z#;_daFA$5+QUJq#{^0cn0*gE{MlfMye${3&oS!7 z)RJ56=c?_t=46pl1^!X?<1||A3Uvn#JHwv{aBX=RSTQAkZ|;pbOwEZOGU0orcLtlx zM^FFKrc9v)2)aCc1M_X!tOr_#fzBW0N&PUUpr%IBm4Wy;UfePRvgi)bN!@ZN(2N)P zgu?4YKL{{OkHgla3s^;eF#*0$Jr4aH1ymu=Tj%dD<;wz8#cFy-s4(KjpH06kj9Cy0 zFG_wyW0$2Bg;u@%Cz^Z&e->0N9aces0W~6YpY$V1HYBr-R*a__$86u~s!xObKhmxo z04Y?Us1=)>2j+LO{=Qwi8vr^b%bHZ+xypzE|M*J~vac?uGbe)lyz`E>$V{)V^*V$r zJ2RyGDAaCuoT|TeU%g(3-lDt%GQ}E;}PtgO5JZrn2x_+31#6%WQrt=SoUMlQXA=d5S;LsBY zg`ljY_o++{IYNx(FBPD_2bA`$W#N@20#-(HpPBHJ4FbCC;DIAM8lz?%1yYkIV2_VOE|#@Ze4z@*Mnm7Z29 z3fh*4L~mbLody2p)*f`oH}@-l6U#A!-&0WFz2q@ z{=e9cyLBG@?GNYZZZ3cCR$(T4wbG)xJ0Ht(bW9MUe!=1*!oudV*>KnYo4p`HxJJ@U z8&KW#WR-cF_7OOE0SX*MgiRHsR%W||`8Yk~4=H5qUt3ZF0OoTkl5Mo) zfwZKAg*ye^e!WsgmIN8e@L&|w$Qa|+g88^y&!#B#^8Jr-nZ90#VI>`v*h;6?@b3fy zI$zNW#efD33WWSUHN%t>VwTDRqp~^zj0mZQL94pmA}(g!u_vnmA+*(m@~U3qq)d5b z6vTMl{=l5q*SYr&0UKKYr0`9soJGi*k-z#EDo}oWkPa96M8XW44tsEZ98|UL9kGOf z)jyc>Rkd9O6r|D;a}h4}VC}+{;(>?vE*1XcY7DrR4$8a^M(q2-5)DlbauqP_>}+zP zyoan04|FSXzQL$`-W|ykJMqoZk=18ustR1x!^+x}HG=hlXCEXM%bP8aGhaq_VTKYkglm2?QO{K-mh&9q}g0 zT`6aBQ8zet;JLrb#Yjqc@_a$WY6%;N$ulz{maZ7V#=}~)JXReAW`{ z)d#Tcl@uC~32T|&gx?5%RKu&CH%L3jIrFuQz?q6sDvv1kdnW$ zfeH__W-Uh?IieXT2|rj#v0UrGz#mz_`I>@ux8S^CXOQ0d`6Gab~qJx=1= zDr(~56kWqa#l(_Ln8BsAi!C+-k0uXU_l;7AKZQhM$abTeRfL`?7NzdY+hKc;SGzT^eqlx?0(Vcjh#5Y@L7FwzrRDO zHtY*~{3FsU#w+-5&JgqZ-{yJ;B5mFLIyt(<>ezXbUTx7I+usetn+J(w%RJ)|WBm>*rs-{%T9hGvY_q`7z& zJ@is_q)bC@Q&YRz_cPc9{+4t$3N@)#A-^lw6Wthaq+F^PfLeiC&y-t>gd3wBPFqIA zZt{E7b3D?AvC=SHwN!K>o&CPEc+5-FCtSP!-;1*=_d{4zM`kjJ<4Pipu_sfE4n|Ft zY2nU)lET~^_hzNty}bHKqH?um#KelM)4_`9G$-EK77l^VO`wKL!C1K7n^g#sk&&G;flC>Nh!w>BW!Fc= zAKQo6Gc}w6i4;xYBIvU#ScND~f4Qk|X(=ND^z{Nn<4^HjUre?K_941_U-5W3?1L)8 zsK>`A>Urrr8EMyMD41KzJ0Cbld?ixeB z-np@~jm+WcF~FR?7v!l3K0o-zCYjE8k8+P zK7?x31FzG{o=`sO;+RryASo;n+!KUxgJ@5{rYu@ zfDiykumgUI{{~6Aq*cmc<@JF zBK!o{B|G^fm+Un-IM_2H6le}wLMuzG7Hb`?PYPm+h+LqUFgJHGF)^MvP=_6FZf=b1 z?Q4i!U1hwbL#E8MxOC(xd+JOiNu3FtzLiCclv?26;fYqqi&7=^E-q5wlfRz>v5m-{ zQbE0!a+Cf67hmBUm649Ky>ggDW6*)KWo!ZKr@H{rBwM@LULH-WIdO9b@k^9;E~aD=^tb%g5|$rkAlS?R0w&b>-e(4T&PH?79y8P4cm78u zjhecy?OPmCdi zKOv97k0IYg9^*T`fcZ~8Bz&P1TDM;L2Cq-r{+Cqe;%=f}$IDy0hN%CrLNd*<65d;kleFSt#OS})xk{4E)QF6*AIb@u2Q4{o6RhZ0OhhFcrk60AC zh2Yt}>F}Ue-h6dJ#INx6FUdaJxVRh=Y)sG2$zdT#+HhiqWA+0n(7mFT;B>aWCkm=f z7~j#WjI!YyjPCEQnL)l9{xfJd9KB+nP3T4B39gF+N%w^`nud_$fLwo&B5uGX( zlCpDMHCGuvxe{`RbK7YH+4nwZtX1iR<)+m{tmyUa?ayJGMeD|(m6v=CQq9RxDW#8f z2p6X&AQd5In6}5NHy7th0#e*$1@?h(LIrx2USSgdDv|BsYf2K(55>fm0zR(T7@_2z zAP0nhO9+5~`RWFnjBB4(*s2c$IUJE^|Bf$0R@_Iw+m4TRmoFIso&Gus^WLQ$H6QwU z%xat#O?a{gQ6r=)s8G`S1#K2#;zZRCH+ZYp#{KVoUyMJhUXBJ#s3DrH!iBU?ILS;> z&p;m*<(CDCKg6Kg1Tf}WoqAw31>lRAHM`#i=N~+lMd@sAG8kHPs(Et_j&_@LAdQAQ zJuY5MG2uG|n!&I4s(VsjH(Q+Vammb}nVLUGUMaXt4b-su-Z=(ViH+HU(l*Vs;Fa>+ zP!v7QG4X6chN?;7E_#j9=q)yYS>NaM9fto2=kh{|E8Jna)D26k&>`(_7o78C@h|&9 zD8tiI;IR*Wu&)V~S};i;93D=y4^q-J*e3r`ix1uMHu`9T1`0u5zlOD3d@;SRt#iQv z%f*R&Dtv>WgmhC^?WDEGb=b{c+sL);q#rS4+n~0D)^h7?MRH6dvKb>NsUI2ylHHwl z{7M&kpwQbY1oq>M%=OZCLW+Q}SLwkFnj6d6ABrAe7#x)Lzb(2ckhvjx8|Fh)cdIdh!a&xwG9w@S*~K|Yj35gitSL7IlP+BUteDvmNOia@sUfIFT`g?X(C4|w=EybygE~;Zq}3pDPAi|ZeD|lbM4*@v?S)TK9+ZImL5GD>z0xySf$gYx ztNlJHlHTUr^Zj!*O?;~ay4ZT`6?dwOMcfZX_Ii8xj;Chym*a(@JO9Ak@48pIT7q_T zsiU-gzn1Wk2BYfEs zN^EmI&BUBmDjqbpE`hhG8wbm2mNYgXkD-_x2npw%!rwirh;8l2)ebJhe`|9_hSDdT z)^tJg^FF{BT3~vT3lNJext^Y45|?#Kz}dTtnev*(Lp;_J@c4AGN_BJ82v?v{!BnMP zKGDU3Bg=R9YK1cS_{en8V{-G#;PLa~zRYoPuAYTw))w+wR+1_2<~eAomVI8L+fTMy zC3Mlv9)L?7WIVvup*4*a8$bk0^Nc!{X-O5B9Nwi17IZd{?>qW3wS4c?!5e7F-)<6A zizohRZG|`F^?7o;bp@ITy~#v5t0wJbEYW4`w{d^5b^IY_fPG158TC7hC|+#-cm6ub z>c7p)61~bTs%0z$y2V5it!tfAMh@)R_=beINAlUyzm7i>)!63>jr5MWe`XaK6zEMq z?%x3+^4I2nwiq96Y$Hmd%B-Mw!dP``oPkt!=2O2=oab%`_sXYyZ}%&@@fsf3RTU2I z8QRz$%s+tAH?saN=FKBWqxtxrR#DBD-Bf4Gr0v-T-~({ZX)gXK^kf!je?xcap`bB{U4*;rv+yE&~~IeKIs1{~r6FK{Kq4X5M{EzUMa zqXOMuyB~HPrm8OzOFD8lfxu}R}3Ra< zU$-WE4o-QkyS$vdTe^_D8Hh>Qqg~4z*WPj$KK2MCv<%MW1B>kl@ zTizE)r*kJ5&UM?GLQMFc0k>ZKRD0Hh`Mv&3^t%Irs19P#^OB>(8`gx;?3TlhqF;kS zHIJX^xx@YrAlnz`d2@y3{sGtb$ILnW=*K*&;Mz4_8DITGwc$pEI1l}$%6~cB1e`>G zikFNsi-6C24PBIWw!%8-GeUpeb_2UajDu7+X2urs-VJ^b`pllzr33k2D-I`Bfx(%j zH1+odY4RdO(~<#+N2MVrlECxZ9)md!wkx{usp(BFj-naO_x$gNE>Q^i%j45p8n&n$ z&}@B+-=3KVNKaGqA`dJEvNFj|vr7pUs5yn7*=vk;7tuWKki~k|FzVAe{p%+@D^I5& z6_5=tUiei7E8}j*^t3@J?wyGWEaF?8oEv!RS`V?Xu7fm{H=wueQV~a+x6VwdYAt8# zY(&jvL3}AE=YZn}-5pGd=o8_*+ z0ECjUX`sm65A7yAY6I$c0o@$gXl9|e&*}% z1V6|83e@dU^s@BdSvhA9tE>@t{&EceZ2tVa>f3vNozu3Gwo{Qxq}MRV7E!R1EDCh7 zhw^wnhhCPmP>sOphE3IK3|BjtIVU=szB3X2jo#+5Stv-bdz;0PFt7wQ1R*ZOy3Un9 z*WjQG7>75?7-bZ$jaP8#=V9qRIrkE6D#>gc=T`Dk27fO(zc?_aLC)@o!$}~_{Jj)s zNd#SP?MnmgmJ?;(ShAs%7Km%Hn_@sWWWn~%@mteAj;gb~*CCp6bpBc*$V%LZ$}b8= zv(M4NkBcaUC{~r)Pm*#o9t&G?AF#^2Y|Zl*nm@ck?{wB1cx3N_y) z_^*xVYX)}hdJp(nKY{Y@Drt7668ZJ}`^)I@JS~2(iL#*ax(%DzHb39LvI2*I~W~_2oI>M7#p~m6&55cQ~o~tBgsY z*$-l@(#-oreZbW=&O(7Wm@lZ`HkX5x#1P(zas&Kx1Lx>j2VG;BO)D829(bWZyuxn~ z^Fo6?riZ=Ze)8;ujOF9b>W{|Qq#zkmRW?!4lQeOSy2FO$=ap_+-5y&6Uwo1g_SsTS zVg5WML;ugUQ5#(CD&{W_+58wg8a{otq}K-qiT-1p?H{n==?_nThS zp3bMRXNHZ6`Z%4DMRFNwlD!Sg9Jw8AAB>Eb&Cs3j5-E|UR()=E|RrWfuCuN$DyZrO;@OO!3o1n<{QwidyL7kYvJ`LjGA{YHXGNG~mEHLCX zO7vZ0Tzl}+fn$AyY4c^>(m#G%-UnQ^Y!W=hCsLHdOWNd9o=fN>7|M%0Uj?i*&tiy! ztMwu^wO)=SE0o*stZr++SHWmhUWXyns3g| zHfr-4z2j8L#!-W7q}Ef<(PgaLqxPGv=p@vKhuxp&mvd?!wht5VDgN4*zpf;A&UssF zFl_+a%8caFrG38{w+O{W9ls@1!}73cgv;h!5uFG{PwMGIDA{b&vu3S4vTn-Im-a{! zvtZ|K_T)g|1;`!C1u8Mq(c#V>Oj|^k3}!vk{SOtraoZIOn2?;y<4KkFucrZ-=Gr~QT91HT7asw zAjF(+aL}iCKvLuJ$_EEaC$Q7^R;J>c#Ly5E^W($H&-8Shfx#gwb&i@8^`BT4eLRhp zAzzIwU|H+q4&%AzIEKU|ts4~(WXDX`*E@WXLPQddI<_RP9gjVXW%VKgz{e*9=c{TN zLwvr_5aL9Z1Y}YgZqCVW8mcy|U%+;!XH|?*d)%K9n$BP-e(}0T`)sYJsK}_@;c55B z;cST}hPy!RI6{W~E_ql)O$`HWYg;g*rg3sukf+1*QKeHb_%%_i6hA+<0a(d{933O* z>i?E#0^%d^L(6U1*k2#6qP6Cpj7=K6rXwA`!|m%PP7)$yqQ!;8q2!_;sh1ks?$p)# zcfAegdP)zA>;g7hvW?daf~b6P=Hom{zPwxt`?F*qp09PyS>^P#l4Y|>vv|=zC7O`( zR*M^cqcgqJxuF~mbjZQ3zCWB!lTr)o8#WQX)=4J1##ku0i4949P5{x6Ke0dr+XT|d zf?~y^)ogi4YL%|v1Ci?u4M(+ZiTYAkKtL_6(nkNiphVpKkwk&boNaMl0ejMx9zPO$L3L z=4^*+P!YTSL>KV8D$BPFG-3~S%fPnVBcBI`6LjFZg-KuX4xvXQKUVN9+_C&O5(-G( zCfh&dm9;sUoGJYqobGvu=sO5M^8pzqkqc+kn^Z~+vF1QnVql_Y4gb`F!M7u&5h z+jb#E2r<9tX;pYc{FD{2K1S(hH0&4|k^;SSc=$JLDzL*W*$l{;)Ob`3feccL02WcH zPnJ}REF!E4NdOTvntGR_jE>pRuh<*oT>veq87nF)RMQ|UWx=8=nOWt=vLzb}1pv?_f2Cr6X=O zTo(`ebyW(>vhnBo;lL^Q@lhtHN#pU8I+6y0F&jd&f2Lc+RWGV*M{DGy@jw!3&`gaDqS7#$Z0CGnuP^02D#_k&RaoGQj`l=+NGgVOA1c5HUk(gy zm*vWt`&9rZ-cMT>{y#f}RGQ)qbE0|FApm%} z#Dw#Py@^=F>sMJ0*6f~aC_RGM1s8|t{bKPLb^+Ya^Bd+~5l1h+{w_I31*<=^q@;E) zjnUHJT2S$V&)0JCM$^KWf3KsE-wOn?r92`XPxhX!t{UAx89t<4_GhL^JosMW5*%2^ zP3G$30j}tKxMgmt4L7(?*eaKigJ^*8q;Dj zVbus;8>Wpw(tCZG>fcB&k5+MUvxYdAxa;6jxeH&3R;U(+jlnFmn4C+0Cw;^YGZ9wb z*BX|4CL%D-h4fMSU?MZ&R~_e>|;ncxV@RNm~n+Q-Sa^;0x?w zOJZTkCe}n?5bXz4VDvW~5)f!DAeklI(na^TOEF);9@kq14bt9kITU(uvGic-pV%8I ztDdgmR)BnqKhw5)^%}0U{Y%VX$Zalh)LJb9VN0eh{)_@NU0o%Cj!$D!6rnDw0tb3N zSWg7pVHfpq{ysYTK+KlrBFt<*c3o6rv#V-%!(^th^X8MqHvr2Ro((%^;Phw zl*rB=^-tFCQ8~nKNI0B^uPB)(SJOB(k6_hu%t_cb?~A==L;P zqtM-r#!=&A_4xg!hvgQ1MPsl~j;+$9;T>`Gc(SPUtwuGlkE!l%Av>&;T3kS>qBabW z`y8k}HVB(F4TgnBDL&6osxCp?OI@TiYPhi^%Uu4@6x83a$%Ts^nsG+E+ zlj$DYiw12jPb&@o6t=uCcA{UoS+iE;82(?<8X7YjiIKv~2L|$cq63vp;%J_C4BDaJ zLq;`17Jm*vzBVUVORiAQy8)tB{I|ax@UeY0y4eZ76Y!xqa1P3L~5*kZ;&{Fx%yVM$gfnG^tw#@{b&! zdZ|s7M1nh9vNux`UJSpE9$|*sKU*!{41ZqHV+Y67pp3QZf? zQ$;$$4o#B`Kv_jEykn458sVi83$@_#X4`Y8S}Vo6rU~mCv)|0rL)qo8C`7#WOQzpx zaeFo}UU07?gkPe}ae(LRasV*SQrF-#QAUyPRxlK}Dh}KviNNbZ)L&1$qG1n+Kzt2K#d%}IYWgpsh+P`3P{83A*j`lT|;$0=*Jgg5& zje67rcjw-IyQ{o|15U^l{5N=VOjX+M)W`V$BtrKWYYi13Adv01kcBkfaRWGt$2vmrQsfpUB4lFm`9GrA0ae<2<7IYh zosWZawynwD!`g*#jn@WA4e|$~2!UK*`1Is#pquf;0oPRU%+L}e)&(`wI*Q=ZW`@Dz zcK&3>^kc;`0qrm%4vVAsS@*6XDFI(d9<3`+1TjS8x`%p^Hd{7NV}2HxFA_h&io7Y> zXrtcYG5%Hamf{+@+?l2wC`28Ii!JnW3lpa6@1!wB5bcbE`#e}DR7g_xL+1HB1RC|EtZx_nnXx>0f#oZR}MmVcsg@JVB z6r%?&0&A+6z7CT zSV(HyA%&X3WaVbh<*A)|jVJi3E6RIELeWnX2xfAH4)@Nm^NiXN3xb4$cSIoqRA12) zwigfY;fBxoH!96oEGED68y0R!S%1^ZU4cAZ=m<0g@o-1`BCgT1^wtNu3-3bwm_4cQPqxf9!<2}~ zUQvxs_XXE45;SE?vm)JGnVdBK;!#9o!sY(@f4(nrx3JK$oedOGYZTh82f0^I(UgSu z?EwQ8=@RqKHsBsg%D8vZ`cS2@kq;xvY=2|j;f@c} zn$I1%$eXvHPIYjmj7oJB==#7sf}J*GD>^d4r1tL_d!Ay3 zP9P)#(M3yf*Rjk#fpZ!Gx`v?RTS<2am;$Jx;b9>Y#je<>ZR9Ajhny4eWCk zCe2(3l{{Y(i7xn|*i}|$hfQ)m4@{UK??L5Xoy1s(uziXQ9K!XufOQ;6ogP%K2@)crN<%{_0wO7#ic&}>GCN6I)j zRlq+RhX74*K*f2QfUj%TOr>bS`Mz>*|3ECH4~Ru&Ec+l&gnVdU$o#Sc4YKXt`ilmd z!J?G&k74!BGw;YK=9ag`ES{Y;e;EG4h7t8isxcV*S%#L;J6O|sl=N0fWya6sQzmJJ zAZ!4`IIeS);_bZMmY(;>pR!1fLLYiwN$v1t3yJlv#58Aa0`OsWB!#r$MJO{@zd^)B zjAPh!yd<{QDrY4#)@pa|O^zv_G{+_j$f;+1f+s%JM8r=6oBIhdquqp7!|@XC*-uVV ze=$(Wia$NA@$8HQB4-#)?hjk&v%a5sd;WMPXRG$RO29g;H#Msrr&-$&BS%h^CN7$2i%hVsF0F~4Kk{r6CZ4_uba{|^{e>4MUtbu^z^@WSE{ z_xbCiNKq%cZ`sc@Kw8E5iRO~bnes0(fB3QED25qA-dF=E&PjZLCR|BfYzcmGkINRO z)Zin4$qfU#N70agNGTOtvY^Hv6pr$-5`V&+JA#O|43l=RHmol}*_F zRcdLnMwbF0LKQ!Vnf!t8_lj2(%@0TqI(nr_HR*o20T=u>)Xi@$zWajBMlMU!sBr z*6{JMIYd2fvl!*r)*e3hcdkZF``*BHgb=}V!uMnvs>;5V?RB)^LM-ry>A3^K(uhA1 zu60Y0pW)gGdaa|4Oo4@3b}9<_q9pOg4o2$=eSQ}TX82qcDHhSP?^frxF1m;@9ke)3 zIF>e$XErR)#rQ`w#2>i$;*>woob!de&Q{CsX6+eSrVdK4{jSHj=EeOd5d39-1#K-0 z{vW7yc3lOfI=}s^o-;8fE;b^lEFwW;jARuP6BCM+wO$d;KziFL>)^oR;P7zs_ITmw zTtXsZe69Lx7P_yX0jvvR6j~6`$+Gb9-bzIdf4}1wQf8K$?TqZ zcuPI<6y=s$OYr$K-jF|l5`g0!9+BiP;8rs-qh@1YTGQ!UDn|3WNX}0m$Dfz*eCvx? z+}F`DeQSna`m9~V$N7n)a}i3qU_N9l@nfmTc6g%0y&F<*|E&reNn0Qghu7I2A6!1N zL^@U*tPV;z0uF}oFWyeUJ${Yuc^BC>(z}JR$yG)fWILxfCN`RDS;E1+LWCo8QhP6B z_=Uh?Mol z6_Qm!mDg83Fij?H;C^!)#{E@fPbuKIJZo}{WiHPb=7U^STN{&F)HW@$haTdGxq zeKTMzhfnA~M5K^wh;x_?3Z3d-1)W;3UlTi=`2hq1FM&E^sq{cQyXrIO=lgZPLd_b3 zC7i?NI*;qG4^K~Ipb7{RS)7`F*jl=}g>o4zut-SaUEYtiZs!IcF;Dijt>J8-^!#_( zNRGMvunMe?Fk-N9;9k8`HePkT5E;ynrkjYB z^OjgBya!JobOtD&HXOV`fe_?`UrPnAncliIpuv$(SaHR)BVU;qb-e`7E!hW`Tw^I%WC*z_>@#^-SZe@O#*S-5>b z+yJo|kZrZJxD zn!f@&CEnS^BQbJt`q@;APDSFhK9#JVRb@M11eLD{>7mY{3+bKtR8X;RWHrC*~ z71msBKKOk^cw5hccP4J}5Q%@kjwv7sr{MW*2*-SN=xRdWw^^O;`2mZ#Hjp>EF?e9h zO@52zKf16eSSpaI7%imdE6HZP3+|Pq$<=Mb@2ck;<$dO7d_Vu@z~pNPqZ>kTAcH~Z z3r`)Usqj|F3*>CWy6q#Y2;g$HBgmdb|34YHax)!Yw#W{6C{dl%o_`$IbXhbMm?7I% zNr4288~h(sIH@47wA@PY*EtKURV2YC)8t1Y&L&P=Y83JRhzAqTIx!e)t^R%u?(#Nd zxC6|;a$_DRV&xekzNR6EcBUNd9jV|1p2J=r_AmXx4N>Ea+#2m#?5@JYnppHVlf){N z4u_l1`~+xaRjv^1dOVK=s&@Nq`UE;MG1cm{Zxc>;pZHxb z%4K1P$!Z?*R(>Y)Gl3|-mvP(*lAkR;l;q}uamwZ*%PrIB?O6zPP{roT!%@6<4A^aj zvDk$v0o^(bzm7t%wFPRItW^eKCt-I(c664jex1p$=bhZ152t;z0)fUT>hl>r*|w=t zbb2T@?cYA;DF|>gVqJyqDQ5b>`%?`5E~~Ki22ymd7fW=fn)!ZZGGr=JXbS?V?a3!+$v64Bw9u5D$dYi z{Mg9h{~_{3n&+InO7a8V&)sjjo{#KvI;TryS#K|H?JO}cmO;nBZ6J%7wUc})4G9o$ zU!4J|Kc+n_P+7d&8Cim&487*4U$x~&J&m4J;%2b|JCF_18)s=B4~ATrg|EH7)JYQQ zAg*gGZrm)x(!J#yZOPjw>6GL1d$Cz@5;$H)*b`>3H?_CnGbO}>dB44IkESu!ylIj+ zKcB9)yKzXS^6&l5i7J-QD$uSUIF8QGCk2J0DOKyW+QiafN5%+OqD`@~$nXc0c*nR9 z;+yngIz3eC#Tg7HB`O(XJi8EL5q^nj0(mZjwp}W%k~m{DmJh=Xkch4QY{LKGlxQM$ z-s=yq+o6Ta-t;|%zyQ~MVKb4+qOL`LDnAm8EjJDpV4E>>*+Ao2P%v&Q#7YpxZE~4u zVcPOM_V?#Q+R)1xXNlj^H7d2N%5Q)lF%p6Q+5a#?WTOga}7KFjZ(}Q9iw_P z%6FSOui5$yL%#_LXj=ML%!AGtU5$4>dG!Nj(ztv~o=D#qtq7;Q&^iENs#;y2OPwKS zm2}r)&rXn>@8-|tApFvX_XuLcIXkXj45EKd%r0kK%r}NjZa0wSsY=~B6iXN-lk&yP zO=@X$d096H5wlGyEI7C{$^Yh5S`RO;dXTP?#}Trmh+dgi8%rtnI4LXdHB+<aZlz{;7%PX{=)MIP|qy ze1aEzF-oC>D{ZOA#aEQcH(bH2K2Iv%>UfOTtn5jGiBo6K>OiPH=>rm=>&)u@(284x zkIkV179JHcbN)tj3$E8yK1p}O=7q2ktkiwvLzJxfWwfzX_P6FAqf7bkKW0L4>_Orx z>C67%aYUV`hLLNSFt--yG?i;uya}xIG`VD~sT)pfmNcu}Lp>>nYfcoiEJR&Z{c4!0 z%E_C+1px+hNWatx3Vvv$<<8yz?1Ej5R0wFt4+W}Sh{DFHtMkE%H(Z=w;=(?B)>^fa zw^_gu9eOHA*5DRJXUnd`4T_!ZA)ctL6Qc^LyGOG*P-XEz;Bs_yCYmO!?<_9#37FA3 z*$>JL@uvnXU!I>?w0Nb3KmszV=#hpjt|l>0ny!Qp{H$?q9YwA+&S-3}@UUI0hwq~7 zjSe}8fXhMg$+^k1L@|RtuK8~mj9O>qF{u;f{R(fWo4ie%8jn;oS(4GTnH5rtVMLUC zbyCW3c6RDO!%8L_#6rjW0glRbFC=L7K&IJA4f0EzxS;JJlkSdB(DJ7VFJ}55X4hvB z&=E5fiUcJ$7Hbc2L#@IPULS#l{>e2kI#4=w>Sps)M#3`9LE$oLQHg>mW>ktXn*3(~ z%i?yJM(!J{bRlmh8l#A2!Rb^`3sG7}gOm!Gelb$75loW=S;2}>aG*ZN_7uPQ?8_iR zVRj#Lhs@Tb@PFBxXg4zVk`{XJ7$$=>^Hy|NO;22357R=wI1VgEsYJ`0b2!CyJF>r> zW0+7I+2LIugNzDs%fGVn*YrJPw6j^>&41TD*h>j&$Aa2EMT9z@kt3aa<<6`swF zhfHGP(dw9o`h$IbbbRvLjahTH`4^*{#h;>=@D)!nJ@MOhsMytEn6j@M#y0S|()Aml zXgg9HIICO1z%&r!;)_+%MkqrMP9yqY*xm0p;WRSH@!)YMh3FIycD0PN?#j2f<`pfD z-qi2qA*(j}(}ohDtnk&}s*ucK!3TNIRzK#?kH3X@hQ!agWZm@;w00W99oMv*sAlg+dgUrhp*$;WmUn%24KB81KYGca_9RaIBln?=6x<6mA#^~j+UJFlU_kbyo zT4oB3M4K1V&dmYS-M{1maGxp$kK96esXHB(zIv@F$LEJC$Sx4_ zcjC+D?j6&Ls6Ye$I_2$7Zl-`0`?tW;c^`N0M+{efXOS*k@{8^%E*#BQ@MZH^**7_I z6UlMdj4<3tt`&h=Eb#ugjlFzzizVGiekc6ms~2+0?|Ll}FnthZVxbN$^e~0@+voP& z{;wi#Msx1X9M!e^^+_KDKzO*6~#?5n)8^@=b&+Us&8eeNn`X%AMyI zJt#Io&CnPch~b~+$r0#%O3|BY*Z?2*b3jP?ixjH%CG3YT^$CF?`s1AV53V+6%)ZL< z0=vggG{$EBEhWu$oI796#!`+n{LQR2#ek#%)ZJmf2#1Y_=%FZ5d;l!%;PA<`v7fe% zTS}ya2J&I`G=2QqT(~_MJHX3Ez*5?g`&OttX53v#K1_N5VA_uugcFm6$uMs5!x3B< zjowyHwVExz=xKx}4F83v998e#U=DFKzx+nm?uZ<)CcMb$&GglMPdpRp z!vQH;5&RVg7E|+X@XdCv)?x^nj`t^yya+`tgAV+fPta6F3V-F&RouU$>rC*` z+0W3fn3u;6bJUFyw^qQSd0DhVkp)1@8hh2R$LWT9MvL;n#2ebjEu+%&lBim`nBSs7 zQ`*Pr|K1|p8Fbv_Lr?wFc%tEiK!WveBOHPx0hr-G2Gwh|95Wc_!Fb(=TBxw($R?g( zy;<;rU!T#EI9~JzWZWuUB$+>ab}(6TXUp+{xgsOd>RLo$7&5d*_|HSW34kamnyeAj zCSzPG8&8BEKr=a;!ZbU$!zB|~-%_P+P>#UDBbxXl1ik?p5Wj*zj4~L9FFIA-i8iMB zR2T|OwFmpJ3HtQ$&VxHG50k{8cw`1+($G3_BCXO;5U385GYw*>mn5gLqqMr^55|tX z7vGu$3iVgxkg)jghfAmHpTa}C=0@G3>?%>wYuJ2h_x{F*dF3a8IbHspTg*}nOiHO; z(wc3No0ymQRC3)?-I1oY(&`^~FNl{r>;D)K`bYAUH8HKzt72MZq_D#!F1%l%B&1ZPeMGuwG{d@q|YBQal`yeP(7}N^%!khcWk{fR#^UkkY z58iH|?+Dw1(ajmi+zn{^m;tZ_ORD+jj8O8^OZ znIug@?5sTI(J#TQm;xKw=>Ap~$NAy(zEo=;Cx3nyrm(c-3Z#?QhD z8K19;R`uflokOXQLttXsG+4bspQiVX_(b56zE03P>?=Twtw+8XW#>~R8u}n^bQ-4RK zRUhy>ZE$TNZmFmJwCa@DTyNr#8U-J%4g+qhbCa+L(XaE+WWA9?|3fT>hdZNvNI^*S zw9N}5o2)%Y0@TZUCe*tcwZ?EI;asCmmSw-8;}75$^rB{Fj|XJEq$uT5b;WVJua_D7 zP-y>((jf;(D5ZvJF1HjAv%Ov;@ifGh+p{Sdo&Q}6$rYDf>EX`Nu=97A8^GLE$A4Hq zkhy>eLY)8J0RTAsh$Z}wkcT_t{BM`ie}0pIYy#5S|7lWTAEWx8R@4uIUjME=GO`)q p|9uQ-x&7Zk`_Bmcf0eX5Km9*v7kbfJzY+kggQzpcFw$Py|Ae4$_HA2kArv0#T__rAzOLSxc5)u+BRTV{D5|Z;U z5)x8c3Nql645e&t;JTT-kbI23bn^6X;O7gjD#jipBn-5~ zzvudH?aPyp5b{+OALzfd_;q@z#vEykqN>m3&Zk`MrU-Z@Jx4hfoz${6Egsl!M_Tjl znu)@t7QXx+U#P#lu2;3o(lkw5yma%z65EZNm#@UWiZfba=}jyv6*8^kFs>5%-eknE z@yxhNIFWm!B6s>;><|cNO7J_ZDOmPK_-$4r=Qc3x3zB)QNHdRe38b{+;4x|#hCn@_ zxEXj^;s4{Gq6bW@tgSLRaxQZ%Ui-0Dc{%FC6oHLuyWGU(yqQaS6k5$IH;8IlVM^S$`T6qEP+P@GNd>T9h1QNXvAI5nMAi<&bp{}8ri%gcCc+wATs$V+o< zYGTZcy}6RBvs<3P;ZQ9k-&%I6G5fVh>tE9bE4DYh#7c}l@r`7D$wQlfOKo`IZ6}zQ zEagp=$==+28d+a%$9h;lYV4)t=vJ>%R+Yj=t(0bUCrdElyB43gH_XTWNUD#;mzVM% zD;B-#Ti&@qK5HDx{NA)nA+|RLx${;`xUVc#QHL~Vz`xDX7zZ)kkY4WCp*2Vrd9=nP z`|m1BXeYy%=bylA?$2STHv0?P>rM0YmJjpC35SO_{^}8R7qq--vh6T)9~3<=)-Po= z>a$v~`YwJ=7vJ`k>2Y{LyI9G7bwyf_>^c4-shK6uJsXV4JxrxaW|vq7m}dUQFuRYEzK#zmVyxJNi#+4cfQU&jW+ z{)ImQpzUNJ9un6^${-}!~V;wi|pDWa{^F#c44WM8Fb}e z?P=+Zsn{J;^u0zkY*fZPi)9N!AhssP5TaoCtdtn1ssW2HeRX%tOfJ2J0_kSbb*=#3()l>?_gW<=L;8pJ--f%Gj$-``H5cy~ zm3-4u*E!B$2B~&$Wfp3(_M6I_teFCS?*CAKTR^q-)WdjU=VM**n(6G!8?nL6b_$7gl#* zC$F1KE1Os8tnZitA-6TCH9IL5F0@TiMS+TH=ql_~6m2{sU!scA;F{$@Hqh(Gp8MgF6?HyhTuSucbzI<=$s$3LC ziHO0){3)Hbh%D&<+RMsSTpH6=lWn8Mesqz%b_>zR;rMM5B@TND-rhB=-Gpf|oq^!P4} z^FCMd1*SAyfUDz9n$3~QQ>#&dB~oDUPjcLSoPz9Z>Xnq4C7AJ8)Ru8y2*2+y$#lcc z_i;a?N{i;>tW(|gkm%yQ7Mkkc&Ygfvr)}%Ky0=CFOoCVE4A(vQSX{%W6YJYv;P%$G zH|dk__#|o)rtLnobcxt9N=s6WUCj|KJLfG`L{qqI#khm(QfY{4ALJ*;8*Bs73X`YI z{60=Fk@=kj!U>w5tt~f8FbNx-@&!4;(X|@#*)?9~{`r(WqLj~splngoP4a0^jkAU?>L(x zu#TBP?vX_CPEXMaYo!+GfBlGq<`HAsj2k-5Ai;Nr~f`Ecl)^c{3b4IUU((1bk_4;CTzA+21 zkAyNY;m7%lYnv?+%@wF^pc}7glCvxo|H+v2Wnh}WP)ED632mErLWj`!27y-LVF^D# zPsCTlQZIr%wfujNvy_zMd2-I@is;LZ?Q6xa-*N44TPePbJW?|WzRbiyWG~Y@IvJTY zlJB#>|IBy;jI?NbTkPER_0k#WZ%4U55O^lurubw+k7qIDs>xO>w-lsoA6alw+(;C^9~sk#}_Nf z+0O(&AWu{^@{7(TM29t=6^y6fj}xs$#_ zlrFBwfg)2VQghQH(!i29d0wv@i&h$Idd@{iGSr1Xvs>E!-x%#AAIp0&DX?Z3#idFr zrI)JLK@{0hM-psjx@P8} zb8mfeboq>q85Fxd8T!G(ckJ*|qvc))Lokg(QEpXx7vbCNrb`4_t>X-dWTXirXtWJg zmjgAz1j1=I2 z86r2{0!tLl$RyT6*s0#gGgHM!KRKEydwK_!bC+e^F0si>1j=w$D`-P6k}n5IZ`$!5 zl+$)|o;W_pMEen`t+stDk+n8|ZUe|Z;^zaV9m}J5K;4T5cO5Ph7giF`!~4@+Lzgg$ z${;I(A$*GfM2eUII7GBPmyE@=u7=&#)78|8-D(`FsD6c4xb&c)3JZZ+g<3CK>N< z%S>&jM!aw7j?Zhl4)PvqudLb6w+yS;l)TnxakA|S4FB$c}uLE4iauO_8KpdZ5+U{= z%uK|7TF@ubXoH8<IAjPi$pFw^_tl(xr9ACGX!HG=*3LfZ)AuCry` z@k)4*)qH_v{}}#`b%$k-FTOghQd_AasbzY=Cvs8Ff*}0?QLg*1DFEy-{%4Vm2ZF_| zSp!X$V#(^;V(WBXkZhM4cE>_5v)4l;HCp?>zcAKk=;YbD{&Pru2BXUF+iEpiU{LXE zmkeGhdIZu}5+|nVK%Y|ACmGG-QA~WqU;qQAH|FGm1(ANsqqy2{#xFyXSRxAZ@fLLJ z@7S(>SHD@+Bb~98qmS+fXyzc(tp2i3Z}p&s+4dC1?z_PFR~Bb}(~SMZTmO2fhu4%2 zXAt0;{P|U?sW>^3#M>~NwrIy@!H%6qW8+~%NChTYdO)&i?d8Emg7c^@zXJy+5O;QU z0QS)s#VZlRUN;5L%YgzfX`%CElhNDOAJB853&(AW>wY$*k zAKM5(R7rpEQ)ODPs*hFW*r+2c`*KPEm9fg6Z`oCsGjpp}IZ z>UfmfoQK`-c14kN5b3@``ilvvGoTS*34B2op?t+CA)G7$=rC+$Mv}#YXYP9))_g!j znI>rx_J`DBi0~g=bRzK9=JbL4_j4b_r(Nw%ou$4FwxqKGdWbrvKAm>VVo$);*9*Cv z=HoyccdT{zI(fd)ly6Tx>X#mmI$0F8h~=(zHu9!(*#D4ZlV)UZEEzizrl+7(MBTR z_c*Sf>w}#C`VeDUF5oQ>D4_aZD|cr<7abpFUUuYHPki7ib-Dc6Cy}7>F_wz9vT3&x ztWni-0&9OEd@P#fql&2TSQMWseiu94Q{oCy$dSf0EOv|%1SDX2HT!gIdUQy2`3f%r zPAW$fJ}wkROgkyOEbo)nYjV3N0LYopNf;Lq_fr{noog&ZD@whe@B#`~{5$#dFG&T7 zGZlQ0&(|`D^}({1uUm=3ClP4jR?C(Ayv-&jYESW2b^8AZ^tJ6y#gtq zXwTcipZJeh_);?JzRz&;*{6^jj;8VS$0q^sfmzk2EEv-;5d{ z1K!-}FT@XsrU2;ZQpwm^)=sJT7mR?<`Tr~9Q4Z>I7q|T;Y2&)7K^!9$m>49g~wR8&)U?s)OVQ zPww#f0D>;T{Z3zvN$onyo=u(uN`ZDvmv+u6%FfoD&7gpW#rYria|8`FpI$f)pg1j= zxx~!~!X}IfF)N0&u6hgm3WM0^`>4ZaybmAnY6Msv!K4&$t`)e-9v{ef>u7l)uJzFs zLonml7bddxZFPD+XctbRAWo*FQ6=$KM@0bwxweAOE_+sU;)SAN#H8VK0S$k+5f)Fn`td$`L8$X*)kK(||J3mBwFOq|a}*9fk$75J8A z1o;2uIGK+t?{~{x`-rtzei=)f@8^jb6s>$K;z9JJE@lwEa@W$*vT~BJGMI|I#{eZn zI6t1a>!LTU7_d1ccf+BwzNqzRV8tJ%Op)CJtPM1Hve(mP>4WrGw&#M*%BR*61pBW8 zAV$rsVh$VmsY>VdmSvOV7>p5>sWt64De~>LDcNn+jxhG8e(N%)LMs}NehtJ{b;l#E zD00=To;3UFu%saJ_OAhs0hHlue?7~C_&`ti3!T;> zr)nGiO9>PA5Tejuaf|*EnoKNKI)9e3-PyhSX8_=MpLcdS@0{Y^%is69<^TBJL&bO< z`nXS$4^MD~@_woq8PiQlT}rCN$OVVlstp|;#T-n9f*ff zcne>)z*|za(m2rguBt5B;TGe4CL`sd%n763ov|O%4&=$Q>Ft?zBjq?5AXde-_hbUM z9xN*i1xY{mUZi;eG?m?S1USSQCypOs^9|Eo`)hWiZ_48HtYf9Og%3~)xP^`*^FsMS z*O>3Q?gr44@ZUBimr%mXbu>B0CJrW~C1?3&i6nCht0`IU*#R!RnJZQal}B$&40$5l zy)rK?p)wy<=N8T97OB>oqb9t@PG>U{m)I@sVpaIJhaO&+hyz;>dn9|@%rB32DDvHE zTp7&G&GnL$=-`pwa-qYvPu=`E)6=68dnXJ)+ewp(heemYc;pt-bvUYTMxT5h0vfqP z;-h%1?#k3=$ogno&%p==|4A`@?n7LP)jF3@9Blj{t^m?AF*x}9#@Fja zG!#Y$v>i8X{FaYbZp@JPMyIHTacSt%tu(GSx`vsuPim)#{^T%DDH$Cdt?&I2GnzZx zc1+xSp~^X-e)|5}*mg@uuuAOm*p3eQm{Y$&{0<0j`^lyr}0N$adZKwz;hr zw;?P|nL)!0^3U#US`_2n^{pNM5Ez<>`I)%%y+Xt=Gm0Cgd{6AwOuKB!Pgw>z22DKn zI!Ge1fFBweWmq60p}O^cyA?BM+T`@1pqN$@NN~aG{)r~anHkW+#f9ZPS8wj1{5=y<)=o`kq zxuPDx!f>3lvR#V|j@}ZQVo$!A_&VE8&G2q-OCqfLt6^F(=U1WrYI8`N>K5~^D7*%O z1r1kA>i@R!9~I$W=`g8k^X77_srhG;HHQok_OA+Ip%g zY~Sp_3}B2|1wHLxBc#Syl|_Gh;p+C>sZfX%&?lu@^+R{;^jcn7WlM(Q+;Apec6zI4 zwGn=!@_1RY*vgV2597{)UsyZpMIH`kHT`f(VWs_50w*VDCR=*%xaHC~F@2If_7Ax& zE}SMl*_)sm7Qef6rs>ajF;7pgEKo+&KuS*h(2*AjxDQT%j;FQmqFlY@3`|N>JoV*< z(pL8jCcTAygwx7iYs}KI<=*Gj_!F3Dld$U->NAxQym9`_Apbm#snanful2UYQeqpt zIU82plPoiog=|;)BcZP%+NaF<&GK7dqtev@H=@=Uwmg{XWfmic{go;YXgYGccl)vf zf2?%IP2uQQ0&z)6s&Qo4r>)nL5$eyLc1l@A&Nrah(ai zbrq?3)~)da#`S}OnB^AQjMKX?@%J7Z+_SjT7VEH~U4t(>yVDYz$(Fquk&~@ctj!tR zO5`~P8Nam}Wl>S?`M}H$0GK7MlM-gNT0W8rsBM{)k6A6Dq7oF*ou|6IRVP07$qY&c z6I`yhz*9b0x^J6~boXF=@0m=%8%+>nbE_z6Ji@fAs;F<@4Do@l*3ZXyaSk^QX!kppByOcX22r!t`+|CAsL30Z03Ly=fD$IWrZOa)zGOCS zY;{^+S$XW8aR(Nx4>+I;J1eVSmr^TbuGKSdZy!*$N`d$Oa>DVsGhMGAyL?njt^bwE zVJw}Ee^Lkujz%48N`u-he$2rxO^ZM@;ROWp};Wu`ib2Gw3I*Fm~FK1&%GE zILkI}*&B;2xu-6v@^9mvJA33AxtrQ?Qk+UhDAUHLvHD$HJGrKTTbWaB>l3GQwXZ3* zQMx*vJTn!2O$%Pbe?OfKIkh*75|pp_QVh(0*-XV636_g35aavF%@N_wd~q$(G^I{L zRCH|3<7k;!a8I0Xq<)I{T#uX7Ngu2EfRerr^4AP%@LpTbYSw)5zU)KM`~uH*1oL7M zrwjDMM1?av?J2jXppwDTS?u&xplE)hKPwgctk=xp-u2sU_P=Ppq2U-m`n{qu)f@X$ z(MFV`es_kn`5cZ^nhbF+tru0pV)yoof(q2x4E)XvtEMj-VG|v06#IE$@8HP+uyNy% zauVf(7CDIXegoIP2lDKHe;!{sD5_oKmwbJla`n1dx7o6C14N06 zxOUQ`TMd)6UdmBZUt^iIrD~$>$xPE~%nh~Z{@7U`+zGxF8ZOm))vpMbZ#q1@or8qbU$&44Pd^g+$ml5?{O7^xV0f`iUP zUo+N66G?fAR8oA)|Gy7q>NTw?*(X;HWvB(}0~fupO3BE)$3)ZE0I&oVhiSJi zfkXOg9u&FrVXZwqJrxQ<3uK|~Y<7IQy-H}_XT`p-hYXFxl4>a?T(lP_kaOuC&Hi7j zNitMFfzb@P>jy>KUpAe3jOPb}Hjr~toQmxid$Y6yBOhG{n#*bWm6QzfQ{W}2tbMv5 zJiP&1U9?W5&<*JR_eLH3cO6aV4u2weOKHQ3s9z?V-J%=wA~w*MLTGOiYYv0HYQg+b2f^ z@eqeNg)UEU6x?rdCT$KSijNgFk+}BW+VB5q+gEZu_wkzdc5xT**N0B zmN6f4cY8n;?3WEPM}pyv$`afE6ed(YxPsB9o{B<0@t4I#@|{ez4};8 z{qc8M&(dV>(&udd+iMAS(D10Tz2A=*XQEDikSDmZOqvqgH*M;)acA0{6DBbrlgC{*n&F>DeX7ZyFm93dUhDYkln;C9!0i~8fnPo zz_Bm!!hzZ-@w;~qz3=dP`(FDj29Tld;qiz1XKl#K>$O0;FTmq>yRWUtG2>Ba%vNgo zI{#*7QlYII@?cHz`1cW?2}hvmM7Hv~>Ess|5g%&8hxc>h%E@n#>RF4dNu_pDL_hC4?=$J=E~_k$#&@3~Zn~ zAJ_4^5r8nDIjTN>?-qw=nG1rU$i;*)dw+*KUCZvrWMocq!%Bv)!)`rrsDO_LGMSQ}ZPcrNnxkX?lU@}a@kkte zr5~ia93}Sh+91&d3Wdq85j7_Rr(Dd6Dv{pRNQz*q4I;bcIpxbE8M+5_U4Xgd;o`)2 z%ht?9c{&b5AKJjjO#RB5q#GZ)s}#hy<3EQ=^EvwV7F9hWNvBDc~I|tp6}sMa~PdPUlI(ev(~g3SCY5 zMMYaNULI9T#+QEl%e?ri^JMDZhSBn&9DRje?kl4JyLoyv^G>WV$Qp4(77T}v6HpA< z#o(4@~vqogv+j z4`d`v6I?;xFG0Jwp#$Yh#;#D6it&oe{u9hWn<7M99j0ou8Wimi`pS5{&5EQEmmZoL zwTN8eP?#lDtB{5EZDg$1N%96q#|;Rf4n7uiG_Dk@guPdgNaV1`N;o+H3GbnzX{8y` z7BdAsbNL+ifZzrQ*R05=_0^KAf(Km}=b7(`T1&HDdssnzx`C+O(O~Euevth-G_l!F zyL*a?W2O?qR0NaaC_}Q3*rfxzxA0y)@LWP+^(1rSA^L1t#r8O9p@gdVuRCsIe&Y$X zvD6{ZdkYT<1*#bB`pPDk6$zMC&9!usINMpl&84J|Q>xP*{R=~vO0vZb038pKfe>0_ z87{u2y12Ai&cudiZ@KSxa(5Ipbj|$eYX~={g;T-v6<2N{v$2P(@cyFb z{=w>?X*xcpP9x(i%nZ2Y$rWeJ(Bjp~tXFNBiUXXA0nX=sXqTm}>`ld9Tro}^th5C? zx)FbiGLx~l!L|Fk?aP%rFfKraw2Es8?uR|InDM=EDb8M{FL|@3vwK|Ek{yZ%nt+3S z4amxkdxcBZnWlD8+~c+t9FEFhungQXr7Ax(V|D+!@)_8cBucN_vyKbeL}otv4$#?d z4d#(gIgh|aq4NtX&v>QNNxt^imY-3B+6hdW@`?|vSyS7 z_);W>26Ps+bmfYa_Xd(0dMefOWaWf?c&8BQw7xmp4IpBqO^B^A7$fhF5qnZEyX-xebuXS^Q)Z!h@AW|?B^!4@RNb+6fy-HXtcagH@5Z{w zWktq)DxH{5t#K(l&i@W{^e#2yBUR;uO5iM0>fIPg(F^(g|0u%X6l~7Zz z*30<09^1R!hKZBx|KWzao&q+eVn5}*>7j&y%=??UaxsFG5a{Sp@G#qCHU&aZ=Y~?I zq+Jvjsj`mTY*A{4;?u!YNf&E1U4=k9 zgvO-1n2c5#7DkRnMP}^Z-sxuo*^^$4hy1&8z9kX~eZB47ws&B$eLO-Q-ab|(4Ysc# zAaT_(O7;Y=(F9ea0*z$oew|_3iQ;6*)yYR;RgA!qX;U3Z1LYZBhn}T1pihSNwdOrb zC;5DiD+nqPb)~b|b0c z%yMAKf^L0|PXwb}mmXe~D;Dnmp^`$KYIU@F?h#|*%^h({xD24Zivd!!y*(vLM>a2F5d@P5^&a?EjZ`!tW2 zn=%voUmoIe#Vr5NCMC0f&lF(G4rQY4&Fqm(m3h*A zDjo~7ceq+r``Ia;98Em@$MSrTD4DK?FV)6Wlz`%)Hv;Q3Tj?M&BA23dtaU%YkPga09N!?n z?3PN3@j^&t$Xif4a2l>iY_rY@`XfDz3A8oYZLlrbB)B1Q&bY!xU)I!+JQS=<8Ffz7RrhLyKDZk`b2 zVU6EreVbSR!|{TFCf!8K0S*SGFCMwK*4y6rMGjsgM;0)?7>^vA*Pfg?~Rjdj1XvEgEBwA6OMv=4;r&nxNttBmFp&S{JJ@T>W0+qRWePvt;pXGgfSZG3%Pt z$@wH<`Dp(b10IcO*Cp|HZtdT~Y9P9`Q39!xJG;?uT{qX4rV#&OTbiEHH93?A=>zLp z=X*j&Ipnrf_BlkI zBIR$M&FD*!S_Bat;Gk^sR*)nF3Y-JqGJ}B{2TJe;(Nz5z+ z6C5rYDk9oQiP5R;lo!e*`6LuqJE?&jGc}6MLt7vA99@8a*BAa9xFy=)dN!*OmjN2S>ydp54~yydhbxKGK*>>on&3&)e!4 z9!5&(#|2Qdp)kL=5EDJx2s7g`oVu^L6cHKe=kIyzN~j0%tZ8<3ocxm;Db~uu>u-_k zhnfy3pdQD2T{@DFRZtTQf)`Zht%%1^5DiFr5D zyn>b2Bc+Cu)QXsc$6G%8XIzisrk-#Pc)YP}l}%}{29u4Xrw0*d3M^0Ce-+AOp5>+qsohFPiY?{Mzkd(RvUtDz19lkf8EZ!doTPIL z@Ho|N7X66;w)i~_oPb^NHyf9-&&5V$06m}!*|Ku9jtAymcL2#2s+F?8@P~!~q+ipvA<} z7E}7m2%gR!2tHA8dS!pdAHSA~UxTxrEl8I)3ns~OFV!_>NK;*($CAfoQf@jxW(GE{q~p zqBC1|4E&=K$0R&xQSc{Oag*FRZ6=rb$zAFX*9(EFS*YQ3+P9CjSXwGPN zE46NOj-EKBJZoxmNTv6teELrRT6J4}A1TSFCpm6wc+PIGHG-|M1**o2FyE>rUw!() zwBX}<3REj&WF-KswKehWaL#wT+4ZSA_MtCCYVTvkO;3=Ire{~@C;?S*pWIK`?nnMA z>%BA@`I8;_#}h+u{=THSk%MFp!1Eq-=g42N-2txag{I?ZToOKCl~Z$Og0(M|%ljh| zE+k#3{}l!CBiwO3KEWmJ=RW8x?%4TAsahdKLZYqzj(MYx*W`GlbDDT+&I7wlo1-4NaaCN{M^&!kQcR4D-hP2sGF$y&?pUaLlCZBb1G;W@cpIry31159 zV?`5g13D;doeVZdDMlxzl1=`+1i`O^gz6L5e5qE)2RQ76t*O|Rl7o=Q;kMHi&7dXV zd05)Hnyp=)=*-mTv(@hnMkZ744_slj!=W2mJI%6xZgQmK5+P$tv& zDLbt!3CTMKjp*YjQ|IIeHW5jxPqP!rJHFXyt6zaA$5$0a*{;kZvVBaTKGG!-4g%yan1hiqm2ppDv?e@jX5SWU(4fXdO^06iM?%2>$$0;3NZA z>dn9F{M|><1-ynCz8&DvN3-G zym0zSt?zlZ-3>q*^h{ddac+Enw+Nu?2+fSq>DQ#;lg*x<&?~YiR=Gmp=om`zW(>qgMrXCaa8%m?7nA!TBDZtzkk(k^S28Wz$%Mw5r zSVc!JwSIdM$q&5GTc+6b=7j&9GHqvwWZOBCPgz+i?D=-1m)<`vH`%xO+gov1bmDyP z>ZoZ$#Um{^vd(;1E}PG+Q25cii7O-|WEWen$iOt3$(9xkUyB2`$h=P0anZ-t!1!dZ zt@{nr4BvGF{vDFL!pLL;Ep&A<`tam4&_vOA{y`Y9!m9`KMAT_p-97BfI^kqL{qnSw z<&~C2=ZcJTqqQzsE(Eyz{N(aCuhp+|0_;97PZp0B(?`Y17cQ(q!~=bf=0ga(IXDJ( zNXyIK^OdILB(I+Sz_k&`yK=#1IEl*B!mE^hH!nT)e2?E2Aq2Y|1>4s@f)TL*evgFY z(~Z3Y1nUOS@%iJME_O!O(kJSLj9gJTVKXN`IY+pbD~ zB#+ME`hJ6igpyV9$$eT2sTU3&X8P|bzsR3V*iv7X0A|`5DEoTf&{RFD1-1+UcGF%I zcxRtONr{puZ-otH5LTV9l#r54yblVe*KqJj zvbg|t`dc5Y#Iw3d3$~E;evts>*yuVuEv)zZfl11&k_NmAKoORcLYej#Zs>x}<}&;Z z5|RT3Zg+nxG*YV#=5sP=?s#re2S9S9FM9eczXLMf?CsmNVQBCtwx*8@i84rnX*8zg z-LZW(rEox~-?GETD0ly3Sei;^it2cSCO}sb$CD}|or&?jzc_hbZZYA<@cMb;tDju= z>oES_Z%#lYB5t({r5a^+b2WbM4_vs6g zSY)8hjH%`8C6X-vGT)Qlh1oT8<|YJbiaKz~e#Qql@FXnb=KL%G`eyx&`{81G7k3<( zHME^D-94a5{5}JciA$$9FofewnJE-nKz$Hz&Vto>mqs+#8POy1o70)kNq9ZvoBJNz z-1ZrgE_40vGwW%2#x4teaaqTiv)Fu1@aJ_!qO?y>b~M=V14bw-FlT!>?DIPgo>^Q#)=bu48!ZJ)Yzgw97r3&}dl_4rvG^3G>Y0{8^LiysY$f89)k{c zdV$L4Es=T@JL+VWVA|t*07U%X6q%+{kof_%0(7TdYVcLAo-Kn-RfJ3 zyIZ?K+TPxB=x0Ils-Ozj7@$rh3$a{7bZb8+*Cbiw;ogq3S0ygB>W=%k%CzB=uR7c%IdvjAz`7bz(7zXb$-CU?J~8KOV$fNZzI`gNE}l<`EU;|n>jC$*C! z(1o5gfz zTd}DChSDSon!m6ITJk@E@}o81@o82W6Em~#CUC1o-bUiNxy~E8jn|t;hY--D9B9MdP(e8Lw0*V$STh zHgR;f^ub1$MYcU)(MoK2?lLJmQH7L{Nyx#+Gb^yiyBLY2a3pCd+vBH^NIASt>79)z zbk^ZTN0?U-DWI<^L=WeAPWzLGK|kn}qANL$Jk`IV8&5w#J&TH3y9iIzMEpr7pN zz+tDQ?DW!|PDU*SWUswjku~Ggo=??ISiE z^ca2>;C%ftaSZ;?pFjUqYo1Da?6X&_0hbBwO<_d@Om+K={7x|cKHWQa8iEl9D4Bvt z&bkRp53;eeoV+}k`C1uyZ8SQI{QCL1gRkM6^)R$QwZ&uqL8l{OVf?KYzRbXf8j@CqA`f3#56|CxYnJ3jyiraX&_-t$zJQoOZB6} zJ>X46jK|gL=w8(TZO2wAeUw=DrlamyB^KdB(iydNwJD@Pb$Qq!z}nF^FO}j z7gL!1Br)`D^L87Kx%mayBVYMj6BJc%8YyA-N2SSJm1Hiu3vq^4!IO+hCAVQ#bJs?{ zRU>^e^mxMOb3YpuJzy(Zg%$D*i)@RA#^&9vLy#6RH^KW{5vUftkk}^g<~Bz>$BlBI z;Gn0?(F%9V@Hx?wC?GrdR9hW~^%;4!!ksd@p%%*C+4ES1$=mOAj?7h1^?OnF_*i#U;<;*#&8B*0F zz*#P`pxaD^tEXDZIu=WjWz6Eio1lx|Km6nS!^frL^)G~?Z5)AIKlHQ*I6Haf#v$w9 zJ@~zSUKMCsCnJEv4E83`dX<#y$s}8YMobhi|NTj$g{-9U=Bn!;1@F5vc$0qe3mdS& z|3%ne2SmAbZ@}<)I0uUmMUh5AI;C5X?q+C&krI#?k=8>=2-4DxN=r8i(p@u33W&rw zbPO@@?EyW{d7j_*zAyhN-1oir+H0@1_O;f!HZp!dE&;_t^~DGYT8{{>=#fhzNEMPc zn?G&-XsP?sjapdqZgaxCw5uahoVbyu<*3$WX@Mn&&`SK`-A@s#a_!sB<|+j zjCQ(Vi?&4kRRn3E8F=qE`O)##3yEXBEEz??gFGZ2k}`IyiB-)SZ(izkn1UwY+oZUq ziVKd(qOi$a^-h{mQ<@>@Z~c!ddP#_R`p~a@LrR`tT0T(NUHd>YCW#23DPZyms>Nr> za$#WI53FjA%DAc+;J)AM_O6cKXTGN=qP#~m&RPC$;;Oqd*{Ds`E4>+<8eB*^(ldI8 zZsofZmZ=Rr75IGEBJge-HBde{(cGe*ph!hq_)1UXwq?AageFq;O@#4opz=K*ckv14 zs_342HKAiUGmEiF}~h(d3*f9i-?poOQUi=25wzxg_$_ zJtWzoO@Z1|1+i&sah+&L#?DhaHw^zmRx2L`W8jrujP1459euvjSK<^e1GT+_;G+DB zm!qJ;X?lW@fc%A@bhISr$?SC1b!A7Y5_aorpPO6;67xG5)7p3nx~ekppSmpF517og zDzu*s97rnJ=g?vCZ6|yQ_fdk|LAA^0YWK=Zp~xbi$X@AsUoD>n9G@kjwmw)cLfw3ZD={zpxXQATl&-0$#zyDkgq zT2ZWuDJmxk93Jc7z-MgnFh0KZ%gVx+k>i?cWXLC(Trg_)pg`RG@vf8V&m@%ZAT zmfaYWuDXPU^IRH?D#1Q^;=t;ZtQLQCx5zFLn(H=?%=uJYl2TMYVM^-AU2H@CXF|-H z6jm~FqtUoSK4yeo$K5Bvy$`XQAkRI?zGhO;2s3FP=PcSfX=0sf{$9Gy;!3;wzMv_S z;vbWAm}6(E;pq2B_db{D5twJo#Gz^73w)Au&z~jQ`Xa*lvmxFt<0xIICZKw;?RmgL zICRX1_;@G0$ng<*pf&Zo@8s4PbirxJNM?KKq$OHq0>aNYurXZz#C*Pl0VQ5%cPp#t zf?l-SyH9qvM!8lDu$l>3dW+4_M}PMen2tuoJ~@1?+N&vQUcf$}TTXwwr!o;x9fA&5@YR5u0D-{C5Fu<=!A2*&gphDBu zdF5!|t=mvO0H5iQ3EIoA80~2ZKh)!T9Lo{#ngdp3Uc;0I5{jB)wcFpBv#V8K)V@pG z5Zyp^hruON=d9$yp-8P~>DFeou&gn^lloTjHx$wZB|OX_12D`F9#;PQfpEXnu^G|3 zj%^g*jL-&)%|Vm8z9(B7Q>f!rlR!8$-^nm>@7@$QwZCm6V^tyoDG3XW)0%u=v|Do* z+R&B(^`((?X@kv*VHbn#tc;CbL1r{xQ&~Mswdqs(x`>IuM;k=-MnKt z8RTz_*uySn_xbATel^o1Ja>phct=D{wF-Dy@x&711812J_)*cZ*r7l9j&?yjajBO` z!O=hoc352QqQCkpF#_l1>%X*Lz;N{0*oWO-Lp(Sk%P}AH(xS&nc+B`lXz$l=8pI#` zvR?IOJtWj0Q};_c6WSEyb7GY_g|02_@rxY4zldSvBosdbdqg3-N_;;2x3AnZQxFXv zdbZUYsC{&Rx=KzVTB?L+<}j4X_af4ZX*W=pLSjb-J=&w5sv%Ah=T!>|V>i+kKs{#4VsgIJ+%Oq^=tKiNE6gZmvXB6j1g zuLt65*P25oRRUJaxO#t*=zC+LJ+sX_@06$Svk}tXabpZ0)6XIoCPU}7pr15IA_Od| zLgCI=*3EHx0$b0~t0B`3I6qPZ3rLf-vvVmSo9fLhil^ReY8i_i$?iiTA z0H_F_C?Oo-Fl`jY;ul)t-~44i#8;n$WNjh1m*}aA6vMuh^>mOF7zAtFdM~?1Ou>Q2 z{9cy3RWWYk*$Dm}Xpdow(_6H`%W?U+Zvx^iN{FL4is z!RQU~4mp;FqG1-vK^#Yq7L|Ia(bgBf7dq&E}e!rio>OkaAK{ z3@A_H(~g4L)0J9ISs`7F2Ok+ae(}IUPB|DAgbam^<)(2{%f1ueA1?UE4ffwxXi2>a zQpklxV6}GyU8mPUYJPvM8MEaV_G#nY_iS(by{={FL??9E$8%J=K^LlIN_*Z#wbh znh&>O3HBLugSg4%&R{}zc-Z)ie^R}^yHLb zw<`^7b>nz_4n3)$gWlW(v>_+K#lCxsr__5DO+H07ulL|=5@pfX zduW$ojMOw$GLeQm0m z($>Y~NU+S7RXGA1rS`MBQA|~(dM)Gn3DGGEFnX)jmJGgNjkBd)&zoBqnyrMJ$HZOj zjz`&e9~eHWr2TYb<_2S-Bbaqs&c7Bm(6?Vf-{02+yQCK-&gZf>67O4xES9Qzwi$ET z212N8*0%-&)HPMH;WCwLrgFkkBG^gOtGQ5Z!_j$IZ+ar?UmHBGO?lbqfv0GH7Oq-p zn>+TtVF2D$z+;wRdymTSy##g7aZhk^^ikRH} z#EU*|f}6vtDv6trrFfa6SGU`hh#HE2qPLcEljJ6IQU!%c2;6W>+D15yJX9l!pcR)i7EqtxGT**-9 zs&0)Qf<#^-h(rSj!46impfXu1+}e2E-k(ra_Ga1uQxTRBP#LCVePvil#h^kp?WO$d z1YoM23yCr#U9Fh9lt<%DFTHee)qYeC<9W>N=lUk?2UZ`JSW^-21-3Ifmhh`MiSmf^7t` zBQsKx?M-7h?+FNOA4BV0VV#irX9qoByB&(#_PNb`^fCmNhwAzMKBWFD7Yhj1bPb^U zCG@oh%~2rdv|>cpKMY`@nVp|*N9!VR%ZC-?!T~RTMaV>`em=Q4o1yCkVHcvtqigWj z>{zr}buoA8XxZ!OBNV&&E-ACedbGrpNxIz_eGh;rJ-IB*#H}QWJ_Te5#R>{1zPov|!P$6!4Vz(I`xKdMsmnRw#&jb%Wru z8|xZ4WpFS`TvJKtepm&X#{ItjXX_W8e zXK(jC0ux_|G^3!VOwsp5p6cf|5#*N5n8^SRi+2MBd?8VNdvKJ{V@K=2C=)J;Ck6I> zqQ9^VQiXtznsbnz*3~yEi03o(x@iQog=#T<#O!xUw$w1Na)Q4{dOo8KramgPh;}Z9 zm(i=r*k!_sQ*NSs43Q!6DQ$@pOePB8#L$ho1S40_HwK-s32w`Zlo*3L=eb=2eubAM z>zZNJ#I|s zGTM&I6@ON{2>LQjfeV~a+LyDOZU}n<>MxX#f7m79EMt>TJ0ADAi<67iuT%B>a$>h8 z)W5iLixbl=O?@b*i|3o6nf#D6;RF6hC0!Wi<&)=k-s{jNOX}xFL^4h7a|C39@De-n z?MsGs=HAn#yLR7FZ$WeRDiOWP`fZ&Q&kxEGBxjn@t9T_!DL_08sR{bU3#Np6pTuQl zx=I#Em2grcW-BAb8rP^N6sW@m((auJ>7^fa$b?9o{|vQ$TD?a>(H<{a{BldbySXN5 zg!9SrdJms>F3+q{%S3N$y>pw)gm@G%*(T~hpUD4 zf{GRHAb(pr&JqyzYr{}E43)n4TTk%wl?vj1BJ6C~pFP=)mRktvJ9ZYY14Wlzj*6{R z`BcWZEPbJ8(ZcBEm^l6?)qRr8)ZSCynAi~qFDbi>NQh%5CfK-T-eZp!DH?;ceJTD# zec3IQG%hbm;aKX77ThRxoh@QzQyQs@SF*;Yp~OJg(7a4#*HT$>vc6PYUQ!{BzL|bn z9<0$4i8CxkpIfquc70j}d)cIn+J{T`%7=VAC&inx&gT_^uDf`&_@B%4oM~~Jx!0jx9K1>mx`?! zG|i$8NPc-5-nhGj>YSr*yWr+eztL99jeHc=osuY|?TlV*3>R+uXaE8fxujgym6MsM zy)cGU#3H+$Xku5rZ=p$Q(UGm*uZW`Peujmmkt)Pq)8KlBNyVdnb`jq#dmo?1 zCdbL@y)4-f(Tp1B*eFWbtQm^93nrWAzWjzw`R=L#lJl=Zm+_9Bz)6K$mh%N%Rx*V$|KigAe!t zbCBi&Umc0LG4AogPfdzp@}md)C|B#IwKUS|gc8poc*|slU z8gg~8k71f-uXMK4@^+gxb1~c}db@E*++E@8__oitGVGt@=soteUGzmFs^#=<*O&{r z%NZ3mgHI)$zm!=j?>bL5tCR-LzCV`2CGf?2rQhpZ0K5~L^`)0lGkS3#;N)PntDw1} zAMj7K$!ik%hY-&ge?X(B8>vw#3xPohKAq)~;qb-P+$APXa=VxK_fDF-o++=erIaEsC0F&dUD+>bNXatZ;kAoO?L72`&BB* zSFbjri}1;RrU1Al)iUUlZ_LXLo_VIRAQnN zyHs!9vHX4U=}{B$VBD#q`>J_gQt`*xC638$f%2n{`j(qjvHq$CIj6IA^@dF>8Mdg0 z1b>E6EZ{f7FwHvivxL=cPD=KxE^ zrLetWZUlFl=yvOvE-Kko_j6NolQJtwhYJMn_sS3RW_vU`8@n+$6hGruqYqUNZHO!vli?*#|}{W-#s zu(;e^F&O#kl^SXnEq6ndOfLc1{#NPH-}IJ%N9JAf;?X3!Z2`U4tF`-ZGL&3aAvolw zskS?|O2Mg!`Nm>&fDpoaG;)*Y=;;8D&IFQJkMq+eZZ3MMtCd1E>W*Xr`4Sc zavT2~hvNu0D=nE4jVkt@2cmQ+=xLN}N}zW;aUUgQxWjd&1KC_5)ECT$I=ZWDlp9{n zFv>Epp%m69;=34p2NthZ_?E3gVXI~_zZ7~mj+<;c2R`4&9k|NjiqT~$ypR7oi$^Cl zmy*T^MnI$dEETykT*n;B0U@}0E+_p@N#RH#cnk|L$iBy+%q1m8RR!C(O6q%~gq7~m zaKuAri&F%8m~@l17J4(T-%M6f+SRq&Q#|37@;&Z2ja`KgOH4TL`xDUe+m^4T$hnZn zf>V#7p1g? z>^#yHQgxS6UjMnIlvs@huPI5i=(yAArp~=tJ6azoyq?up2^o-&suRWTw)$?uiWg#B zjg>_snFeRSEN#4zsq;D(EG;Nb+oGAw45gC1`JT*e;qcXYXae+Y(R0|io=Ttmwkj^& zCzNI!Ar86y=zR5xDCCZ8laYB2#pt&h8FfV~1a4`Q%;7$=Ig0KYUw6|E?u_71Cu{+B zos+}Kiq(}MFo)o%Rribqf{G`epmDF5ETko}aH+XTNCSDpuOV-o+{0`HQBjg7ezYFv zPL=Gn+#G(-kx`1TZ??2x!idfFaX`Kqh7@-y#mN`^@ROfI*52J=H;GNgq-}Z=IH$8T zeB+Qjm-U`vc}}Bdp2d;gyw0}1heaO*ESII5B}v3gCfxIBy+mV<;IknD4suE`D7@Jv zv^bvBIGW`|w1g&PqMd2(=@v?tQUd-sUsA4MdH1jc+qzs_=4e{(SX}dCLseJB7J~_X z8Sb?i>)HUD^RnxlTU86=32*2qut#Ng3fh9r8&pnV{rXp~1vl8_(DM~FTFwd}8`#IfEW15&dkah6d0ESF#74iu!(t*z7FSztP#E2h^5X#bXt>#A*35MTu zF@c^QHG=+?teD+rJ~m*^*tpSl zA^URq+fY2XL6pXLw1m2T$^oAL?6W6F_G&rh1VOo0>?86n`Em$R&IV@Sv>n`141T4~V=mAki*!NVfLapEE*uV4YA_goI3ObEXe|oNAaMpBYetgh2 zg9C4XG2V1GCjO^B=rXy8_PqE-dqNr;t1SlbEI{V)pr|Rg!K_%D87~X|^`5;@-H{sVS2r6n9UUTU5u&x}IuMSLbspEz<_8%Js z7U%h0t8)h?CG56%h=BDbYOqc$jpW%{BQM4aJnkvU$lvIfn|m6A|2?5xbwyj^>fX$k zN8|Y#CMiMDR09N;7*s&JmQudLyGnRDf}E`Gd*r7%*8{`5p_BUh$9p~H8A_w|Q-@9V zD8B!9?ZAG+mE-Rm?%_P7*Y2u-)w@aWMFCZrcvGpu;}x?Li+Te<{K-DbJg^a+N|J5e zqVFEXPY@iHt5~uj@ZJ7&1HJ}RjpjHa_fTV0TZ$>Fuc!{!NwT7R0NwwTUHdW%=k~xY zB4-*IajubAnNnvYf9a+}ak2OQT0^=0ctLf(XMg;_8Mw>rA zb8_2bzKclNbpW+nAgC5*jZuMNx9pB$a*I$#M@eG?F?t?|r!H)6|BuE3_3{1H8!0uC z4M!hwwkxqz)nua9#mf8P!)!5=)wI+LcfuY}!~tm+u|$Z2t>$>0sBCog{m2fuSb~3i z#rbLFBr(;p9|=q8T`EB*fXZR0DZp-0+ z;nSLmyHof$!OLfqxnEi_1}N4IMqRVEPNDjOF!63}n<)_;`n6i$vi#?ZU;Q0N4FLK5 z*5q#c)$Y-{+~1bK+w}jz64YneW&mW+YcDU>W)EkT8ZqjL)3equQ7W%{_@3d%~}i#UBzT2 z>k$_%$+e-c7;LV*2F&A zp|HS_6ZPEEW~kVpQ_|k7Df7fka@##r@KH+Vh6{fDsz>P$4L-~Nm|D5j_NiLG-vu&p z3zYt+KHiHbD6~MxBg4l1WGE42VkseJbJLzSA#T$tE7{eTrm*oo1jy_Uj&aR-63fa zLPwn>*2z7S8nEk2Y{J|7hqULfEpg8)9Eo#hKF8gJOZoXmNb5sYwe~=2T{<;??UUPN zi{FO6nMUJ><%WiPy$&lXRm4w{Q$iU6Ut#@q2`DUSvZN9`WHoV)VP)!Fny=ga&LUe% zH7nO1t2je=eOE#)NGXdsO39>!*S`&;IW%XqL;g0J>{ z9op-xx-h6;Y?G;iAJ@uD@87(PKr(FpZIZ7H2hGlYD3Pfr{s^-X0ubFjLT zP*kGaBvOzRI-hY>F3q;3ygDzZ;Ltto_|rnH(Dm^Znr!bQI)(?l(8D_^}#xlYPQwFdaRk z1@5FcDPME=ceEC_=*W;*U$aO#0-0q)*Ebc8*{aGzGV z!0nnI=wo5~)6{I+S4BFm)-<2dElf#wL9x(dL_8TfhajF~um}BEUGG zT*}IS`M*(_CY9U|%t+=W+fvR2A1yn&bW*q#VY6?Z+>=0XqUidl97C^Iv@0{RC#5b* z?3o=cW9{@)B;Kh2qs&)cP@sX%P)K-h@WZRYdvbhCk*)Bg7A2qmiV1aiX;NcJm;(>8 zcwPnOHYEIP=lcN8DRf3=G}gK<_UvJvNitA@&OPm>4ORfwR6HP}g|GzRFIn=3 z)D*81^#G9#M1Hgs!L% zZ`y4+*tjz~gg}H{TPa`LP(Scd;spPI1>W=dbJ$wsT~Wj#mg0fqbp7s+2bKVhW{7Tk zD+49u>-tr>1ZgkJ){3FGCEc|ozi_A?EykxtdI5C%CNa8nytvtYr<`CdHrr7K2JRfn zhL#f{im{1zzD>xDPDr*KtQO@qt1EQ`2IXtDSAE#(ur)5wam=rN{q={+(OBVO>y&0p z$z`c|d1PF^V%=WZfPqnpJ$2T)_1b5pQL?uBh1Hrp+1-#4_ze$J+gX`*G#-TXybP@W zzMM`YjsMnrtEEzt+2N*Qx7h~{0Q0y25 zJn^+5jH|dUsdV{?EEI45S`t;341;XX!wzc!V*a4Muv^`fi&kkjlsY2x%(}+hP(cUD zU|E+0bz?-b*I~g>&*$aU?=?vyVSS4A`o$}z(AApkcz43iMb7J@`9tC=_6iV|;B&_x z5b1}W`G7YF_~|u(OzC$YI+?Wm4q3xUD0r1d^XBuHFeKD2UDwL2nOv&zXZ86OYgsZh zp#&K`mrEmV%cTculg5I2BpSC?wvQkR!8ce!U^$`&e-<%TQEMB0HiVImDp^cZw!p}B_9b5CA~!mi+RS6Qaz>_y>N!1! z^Yjmk%I!#beF95LH52Ay^jqNQ)hd)9wM$^BO=1t@68`hAzm#nG9DnPY)5-cb;&E(< zx0M^%uOFGhK|(~-Tls+i;;_Nl_9?8aY)?oxnb$(Ds#Y(xpXCyQJPTr0kq1P1FDr^VEs8Uk*oYwI=l$?N?`)*T2h^GFI(mQ@DX%Ri20}{Ff^0=K~ z-ssNMGJ?zG4*FkT*CM+@&`I$Hs2d3{7*~#R9XJ^^Qi2UfFUa0tFY%-Hem0FtuGoUK zTbjzkR7D_fUj0%EB0yT5B^v&}cIP#%L%oX0_ZKjHOoyUA$APE$gVecLfgWZchHD6N zb%zSo@Z1ajKo64FVt04f^&_cRop&N~Ru2PjjxVY>mZpm8smEUZkWU|s>KJ!UlJm@Q zD`MfgE`+BW{#zX>@qh@Z{|i1abj}L%UU)szdXsH^GB*(RB@k~}7{I>xGMFEEno1qd z;U-xZU}~r^@4Ut?d-Zoj?DlMqJ#X43)Q71=vR4nO5!j7Q21_f~@?1sX*y$WO!v6{%1R#6pkX>B;aGq_9itl*<)J`VtB9JWv$Lm zC}I@>iF*@cJE=f=^&%fd?R3E^*EZ`kqDNYAUrBw&Sf;91H??#-Hni$Avs?fp%Wze^ zjc6i+ZgdMZ{?3q8t^6AczWa4oWB23cdlt9nQ>`UO>_YH|@v zGGA~MOfYCkq{Pob*&xASJ0uX z+lPk3oJ73@ifptYd1b1}a||)rKIIgW2wvQ$5tW&>Ug5VTljmA6y^4HQXb#Sf4LY9wSpKc!;tSG#=P?hJ`_%2sE5#BcPA#Yx z%QJfx4Na#e`@IAdUnMGL-U@lNEa$9NayMz4M!9^NNx~lDKuVFZz-@$v>8tu)kCHVF z%Kg^2%OEict^k5$vdq!x;u#mFmR&!*8(*XOr#g#651>8j^lFF?-|Du<7>Ei*T=XB zXrIrVL!Cb|b@T!UyL-`l-n8lD*SNe&j$rbZn7-oGXA#X=*KBU9%SB0>+9Y`SsxIA~ zKr0YeP0|`mRZw@DI!vMm9UW_gXq{`A1DslC?g=GUVVVf{>YI1k0=hg&XmY^lN_kQS{-I^F1 zdjl5g3V?WqS)Lt<&ny#Zg4D<3Vq57{{%2Ky`kriS_3AtBbsKSY?LB zJ>a&8$T?6^PYno25jT+d>Y#Kv{$Qd)2uT^@Zz7k2>G?mp?U0#9+HbiyyBW*$)>6*M zP{a+VSQci{WOIH-9nY&?(f8D!LiC$*{*H?oBl zid1U-P3D!e=R9!+(BT(v6)U?rYNGd^Oi~V)y~UwHav$*bmGF*gS9rr9N)$UiKR@JOX(#-$eOq$E zX=1GCi5Oz1l7oaSdBVz(oxdB$qx~R(3H>&I2#UItbS+F>TSTg$u;*|G+M%XB_C~Wg zT{DX{_N^K`z0y&IkENJ#47!TsHPUk8qsF@4Nyvi91z(VM`MvFXL9QdJ@4@VG^yZ@^3GFwO-S#?;NOVYoLkp?MjUP|8@(d1- zcJGcmr`@9t$YabID`-e0(SfLaK8MqA2Aq{qXh=QfQ8`Mt0oys8FlC{Gr@v^gMJhL8 zVX9+u3=dLaap)d@`{`XabF1AwDB{&5S)rs5(_L{tDH%rAb>$I===uk-c)N9BSm+OB zKCaYxg3u=|$9okUr6T^OLGj!S-2j)0~ox*83s=pDn3MKI%?R%whjT|regTk<%?^|m#CEC7}$In{&ALP{J8kL zD~^*rO|g0dneXeHh2416^vzfb)wbEX`}*7lidLT2UHS9|5i0n zW9lQHuJ(vAq0{uoDTTaU-TP6I@RkL(m|+2q344b|Ig!beF}{`4cYe zZp?{UMb~)z?w6kbb1HgG%U+{6u|t~0LfFgSO;3K$ZkQ0XpKs2M-eVVVy zclWqH<~8}lB$edqA3eYvFt~HY(!0&)T78(I(3kUtZm|c2iID+z-6YtO zwJm8pE|rL?o`2~ra91zO2@ZWmWdd9h8xc%J@ZJZu(il|zyIT&^Pc~NZPb0a-N1fKi zMJh_@&3$C)oTi_cAAf3zTzGGFZ_U}15X(HFfH%t#O$Zo($axXQ9~u42oaL6S(*_pHA_%0| z@@PR)s?&Zk=|k?`mAC3aaql%c6m6e=RzgNkD9XpS_=dp7@|3icMQdE(huueq2Tvv=Ufq{S$lWV(abgpA+YlAmtB6yq`J_}$BfkTK~*pMo0mVR{#@)p z7*V{y;q~*x%X3n!@OXhBikV+Au&fSb_K=3uqy7zp}ye{-DO(SGM(!hojrd?%8k04P>VYG8^!IlnU`24^|FdjG)GWS zw?vMo-KdcQboeK6#Tw{5J~q@Ails*`LoZ_>soJs_m2)gszUsPj=*32av{di6F+#7l!-WVubCc|3Z(H_1ds6eVJZt;L3k88nwu=}hcWFrzCX_-xz{ zSiF9=znP6GPbW54LYhC5_-yLzW{FXRmE<&*uNnUr!tp6AwadN?BF%Sbd?mhp>W}9> zzXRX6&4poI6Oc&?;rey{Cvcr-GW>d-a^|^7f?3D+KUA5b8Y&lFhWjZ|U<^Ee zLia}}9?`U?d3dB22n|H2@Hx-#6|%Lxz0%gEJi%#w9O#(tKC@s=tuW=+Y1-xn!;lIL zZGn4W|2w~=naV>;tfLMoxbLshOiE}SkN4d5_mFCNrAfenJqCX+MsL73@ut6par@KJ z<_c09Rm|+s5xGJ0@`pr`HSw@}L?%shC)NVgUMO>Exx@GO4@)p!?km5g1>*G z`-V##xQI(j|Nkhe)=V@HZ|PRFA?yMjrKKMS_7!vyk}3YXGJSed#R*3JGN15LvFn3Lzdio~3w3c4koxoQ$(RT{FA5_NI!{pSsX@e$U}Gz0Yy| zcB;bZ?KZ2f^4XKaee^3KD-%;hxwtYPN1;BqPZ+N59+YBU-^*nSt|Vcg#wu#ig9|$a;HZS zv>AH|(zpQzYS54H3<(1h*PUyKqh<~L`{$BgxYnjq9*gbtJg%7m2^@SRJ=I1B`Nfmw zW#M$ur&dw`inschAqd&q=j^@&Yz%BdEJ|j9u0+xXv3y&y+ArV4Y_wxGVb!Ixa{VXa zy&_PK>+h2>De5*bEpp8}`|wzhaPaM9ddr}sldlK*QlaD4PmgD4<6Thl>W}A9oL1NT zG`;bI^Q3y;ZL@)*t7@GbXw$r+BmLjmiD2H4LF3u&b|sW08rQD=$>+;ii|Y1y5r*3k z>y0^vgJCk4VSbQ_yKNF|%X8e#{OH7)kOnJ6*G^Khgr7svb+`B^4?TTToQcrd_g*`g zqVd+N)XL>F`c5toV2NLuWZ+CzW~|bhsotOD4!;oHDI8s1*&_SH$i!Ox))?2>IVR4g z1#8PdVpGyRbcOJva4TwTR=)JDn-W+Q#ilouNN2w}A%)K3kg5ga6J*8jRcSBuL%qXw zS1+Ue;r*-5L^#crcPdM>wqPm$5tUKT`*I9o5G}-QR?GV)in1spxw7bCs5T0GqCeo z%v~Mhk?zv(h>}suG`RAC9{bn#f3#(IVrq9kK5hJAkeKqj$$NH>lCu9KTQ+(@-{0-_ za%7=$x7Rlrs2X}M}EeGdUGRspM)F<@zgxIYlP)u_6WHT0-!G9DY*>lxy_g=^g z%LvfbKo|uugJ>^ap%S7-A4}KKsF@Q3WKl@XpwMg;^5-u?lC6SS(d6U?g)_Q_@j)v5 zsoM~6*WSBdwH6czD#`gl1wpE6ni)xF40i@fe5ZKe?4tx^$vwOElg;*fSA8XqlR~15 zvAvcrexpcNU;yYI{niyf6DIj1D``P_)@1^Cy^a5Qg zK(K9oBiPgD`ntkHD zXE`vppxN5QaXB^UItClNFWE=R4IX=bK|xExi!#ww&NPrX=Q_}P)g+Se<8+# zI~!n%UbV*WtTv)fCq*N0-I!jEAVgO$W>R9wM`xLHPVl^~>vE^`}AB~*(zyhv4kPXHbo7_1oFUD0n z;hbpUy_WsFDuv<@AG7jc{4-nW{H{Q1uOw>9yZN%Gx6gkss=W+R# z-4{=HUffW-=l$nD;4e^9%cU2DNBhTx9w+T_yWh_C-JHDCi2$dKhN6cFu3aP!KFbys zetQ)_Z(6agn80PUDb)Nc(b+p+%*;&0)ws0ZKdYX{m9yc}wD)CO)~tOU#c+QDczjm1 zBs&@2mOidN3{?A{^||)F^+57S1-f7SyADD?Bt(NE z?C@Y>%kgOTNK8fjwADE>GIkv|)6De7T?zA4U4OMwLu8ak&$#XGx&=OVq6yb1@B;6m zC|=`m&{uBdkD@T?$fmV& z00CwKv$5BcFXXqr5B>%`IwgIgumDn5w%0v;?7Kg-Y$J$k{I^P4U`9mN^Xxg>`|>qC z27NT0%%}UbG?jojaVLfNq_iP&+O?MxopDr`A?3gc=3`3%V2RtVf)f6&lZAfs44mYW z4_9Ib?{Qwdu9f{rZu>z^H#B&#&>ZWC#Ia#jRM7x_IZfR`2ea+u1Oi&#YTK`7AZUe1 z$I^vF4YNSnJ{zwcZ$WMLUar?+HQprPh5CHY$q=TRzH5^t5$Vy4id+B;2@tG|mc+nM zlG#%{Dd8+uGkqx7qWRK9v^iRk;Goi?i4RC2Z>o&r38VbQ=b>gTB`oR7f_BLgGNGvk z#ilKzMzj!%5@?+lnrrr_%kdg5w%f8$95;xUhwJ?}M0_m1oDJR(jNJc6EEqXF$xejl zs@(d68pYA&&4Vo3ljv;(5Tjc^@o85}^J8*=nallQ1LVPnlZUqC)}jKj@uR4Pw3e3F zb|O!1giVAxy~_V&wHd_i56{pehI};H{5p8Ld!ZK$U|wvdyY~vv)DN%QI&Ddx-&ZI# zHz19I?Fh$pd5$LpsP?`vz%;L)zSvye6Yl*Ix^Tvvb~(Mc9#Hzda@{#LKSiQSq4H6K z^B47pXYnA<!ffln>BZg^Lti`e&DDUc;KY4MF|3N+9mi@cZ{P zPj8E{v(%wIx z&P_Q~U~r`7A4|E59)2em@)!9@<(3TZ4uB^XY}(czOc^&Ol$ccY7SKX6?dQ$fPG*1Gnb@H(E9WBb%~>0 zFh+MU#>Vc(=nIu6?~5nf*5#&lO4mK7QC-m&AZ~x}Qta{ky(DqEexwly3+$t7IeRVh zYN3$E_l*~pvRa~9(G0Cr5-5+RN>h9d!!_phLt`*p0=dNpHEk&olvyk^I2z8QGh#Ty zUde-&(~V4XDTws=XRsiB!wlP4>OGwFv9a}}*L?sWz zM_nlbvt6@|=hX6FWqV8&BHCc|j?-k3X%jztAP`-pDTgmDrx*R6$OI3X(qg}8(W-4; z=?&BH{lU%i7QC6{m%7Ogi)48+;3*D^&+XGY9U}LqPMD9kzFs@|$t~3)Rey8F`pYG` z^;$lJYt7^FiCwYc#WM=PI>0)qcYU8?uQZbL%l?hiwb`hUS#CdzaTW^qcPsApwE4L^-pC@P3J)e>5;=r5|h-uNDE9%v-p37>KU~mum=lG(l*RH|H2A^9P`2hg;E$umP7AFxm@Wf3~#pB#G|DJ>08sDr<4_c&-DR zWyt^-pL+~@r_1$>iPkC;W;fq65lm1%_inFuUGHo0KPX}?F}igq%>CywV#_?M8P|;=cwvrl;Af=Ryue-;BH6}`FZK8q3zzg$4{93C| zJ#9Jfs0$xcAt;+)Zd@RlX5$5kvh@f~qiP|3d$5PzW(oPMIGXuUgGmGVzdYPHvuK7- zN(~Lx(hj1~Y@}8BHJ(j#ks9W@5>h)aT13~kPNgeCo#JnU6y;TuxTyR`ivr$MA?A`5 zUl+Hv%58kBdqD6)a1}@j0*PG~3_Y(s<;gr76QE|p{XcN(*5~esCpw{$oGx-%ANO~7 z_l-s#;jHuZ-MJKISB$jIMl7#bkt^iRaPf8E5%K@dMV5ml<-ZAF3<8nclA3YnAHcf+ zBm?>Q_}4pM%;CwM50U4Z1(+G6@7E^2arVghx6U4Ut~M6poDMP~YAmyy;(qY1i1hu?t~D3 zd>wEm58O2VS03lXQa&4&;sl^`;-PfK+wg6!t#3j^3*vKSc)G;*J!cf`EoLMo^Y&dXpSn1wro$s-X1) zfCdo^JL2>l5`4uKclEY@nhkNCZ}{QnS%w=DbFR}69^KkcfL>k?loyU^u03)V0O0`t z;0Cnbb-d(^{ugLdDvaFiGJl%?BwhupV?2 zy=#%H+{cX-Lb<^t`eG1&8dObrNzS_Ta>nAkHC&XH0=48nhqzJFSVa|l6--(mH>3ii zUos{ZIFs>5hp$;I!^K#KA^hz$l1$>^aNj2)-4L#!;)=v`E z*-6Fzob+FdYcZqZdpd%sNoad=Cm;k_E_(|sPW))s+S4Ob;>yX4nJMfaS@_`iEfCl6 z)%evPJgVnA1YDF*rRT)u*=y{7T(q|^UV2jP;FQ6y*Tt5SSWh7-+FTF?=VJ95;Ane< z)iJJdFikS|8yixPJPd6+ssE$xEfl;)zhGdlVy`P=^Ue(RtaQQSK9O401RBjeiH<7f zHd9C~_#&kO20xa-%&>>yiey_;^;4fRz1b4+Z?`|;W@l~{#ly(g^H1wx{bFfPPf?}4!cbUkyoB)9cM5o z1G}EM=@!QEesC8ByiH}AnnQfjcPJz*|HKmMjSr% zb}cZblQ+m&^pJ1(rg}RA^k!!tCCb6?`5X(jZ`^k)79FH*`v``6#+j71#Ibv4<5c$HymSjX?zeKfc~Op6dSpAJ^3t4I?2Tl)cHwrV^5! zjAJI7kZ}@@qb@6ChwSWd9N8nBB721#*&Ul>&tn|t`#kEsKDXQN_wUv1@*3y)dOjbI z`{O>&8~*M>w$f1E!_rFbM1xQhx^Z&L(nl_GvCnqp&K1PyZGS= zY3p?}FYRC1qbgjC45p+J)#eTs72O&4c7y#lTf;k{G-Ti?LfLF!<@cq%!saO- zH56vIOLsl}xtLlbdWb@igSQ)9!B93$s;J+tnHU?oH66q>|1jBdru#y?+17D)U8A&K zJm9Dih_QH?OrWu)m~+`P$Oh+T0~oL|xv-jYgmhm@qCM2gQ?H4P>Rc|?LPlPmOLA)s z(+GP$Fy_O-@9h&@H&!xT%q%F zob+r7dsw|z!wT^x+r`~&#BI7Qg25qqRex?{lY&$;ZY!Ub?$%v^D;G|pbU-%bga8(< zN1xTGvrS|fzOv3Tv9bHKViliqDK#eZBOSqaf7yBNxmq&Zv#q3&@LrabK}OWV8rlBq zyk^Yz4c&%A^We7{%!&_Hc55Cm;<3UWQerLfdh$Yb$|`Td|DhJ;9rqbUCh*@ZH9-=v zveYVc2d>SJKI7(N_68XQfe%>v^P|O+_@!*<g-j_&JzWvtsIyS`3f# zODe`Jd|%{gnlhuRGbbit^(HldfsWL8BN4Qk8(!|g4S~uY9C04B1=j|0{P#{;CT6r( z+Szli_gz296v4bTWK0sPsd zTH*6YM*f3O{vZMi)s11z&I^Iqz?69225;{7J7%-JleS~)`J`*|ndAE?;kh(8Y>ghr zH@At(!M1OfQ0r7;^j;9IuB7qWW%~VKY60;x8)_!|;bV3utadnW_*)PA3sJk`@g{7zB=t=6oVZ_gsz=GN)C01G@qh zSGiqA?S`m?ZDiXb&fmbKs93tB0QA@Yt=eFTsR{3N2VoLWli!Iv z$~$k?Ndt#z+(b!FGy53{BnXnizGJNEOSmPa=p zK-DqurR#!IQ!cD5>sRkY(Ery#`9E8LdG;GR=drNqjl@e`h>h*hZwx|Bn#II$vRX$0 zrH&+C(Hl)Rlnmf2dVWzKm_?AjNpKoXs2sV_KQ-|N<4_MDdANQI#+3>X72y`rtB})ComIBFFT4)#qJH?G74!` za;1*#uN1vy!sRF31hl8Q%KqDrTQS_yLXNoehN?zF;h4CV>zfy%N*{tX?!h%3skWed zRI(eJmwtdX>9VZBtt=1@@8FF0EDq;n`EH3=;ua(OE_N}HBoxH77=3!2i_x*1(tzLXU=7&JcpRx8tl_d3!a;$Q9G040V*{Ll@OX3}6Pu*YilGCnhz^9d!t zTJ1a+xEXPk)lfx6$tc8xh2DAk`P`0cjfONVl{fZ23gF!9z2s`_-D!H@N-fefHWW5 zaR9X*5&rS)e-?4_U#Iu;XU{i}-QnAnx~KPTDAQElsb>rn#XAny=&-pQL0*goo~iRlt^ z!xhM{UQ>vU7nOz`FUBIQ)6n`s;2oaC-!ePB3)W_`U6bEMVCMf6fv0Ca(y(35Z7f1e z2A1k@v-xgoz>zs=SP{3l-gP*wwmoi9fB8^hE#eWNBI2DGRGK6en+(4k1xM{(6~Ul# z`H>n|e%}cArM!)fX7kcOjg0VYv#XucPV9V$b}-Ywrl7xK!7!K$^0$(9%NZ3Q6jBzD z{Yw&tV1`wIAO(dyL)Mt}=?Q_Q6Po4{YEyrcr7{jbbajc1`4xM<>&f|SSktjwCT50- zEYmVO=c|jNax8}3nlC6gGRxQWarY^bg12dseCPQVH6!@WU7>vno(DwD6CM% z4szDmPg@>=io1xb5kKVV4*A0Omxe3>*X?EP&Uv~rKmpJG?(KgI6v z7e(Lx&TZ`RPPjhTeO(zBX5~3t7tHGJd~lvO?-i9=*VK_|^0@CCo7r|dDndyzVdlEi zR!RJalS47qIB>KZw&kp1E$AT}_rxCHg5#rOGNJMOZIUHBY5dtT6So{KCQj-k!-Dd( z>4LR~7RZTr{F>=_Hr|!TI`m4Y7}xY;^hSXrAs8=craVgDOqNUh)_zx$09urQ9jA(i zy(;ZAk{VPAELqvh*F0#y9&>YABlG(PwOi;Lo5}WBw-`YX)kc1P>gATMyr^9hl=-AW zJmZt|PO!k#^|J3Pn z1}rOSE9JH)Nw>j{RppS3nG@CyzcZk42m-Mo))TJF_kPej61&;cW^IK$!4KiyaA!WG zn>y({dP~asrM(4sAcKdg473U`g3l8PWvLm^{Kx{L@W;fKrSwi(jD+&-fNmBaj8MEdSE;q|( zj#d7Li@$)Qp`lj$n@2yijadF?dHt(d z;SAP32T+V17GfRVe_i3@ev{GNfZxR)+@4tM* zZd&CfVCnGr5qTRaKTCJ?Sl+iPGhZ*rT)F7*t`MZ|xV=evpH;9Eq$|1jwA5L(gppC1 zoc<$xvjp|>a1abHW|XBtf)m8mhTmkpxoG&k>$8Bvy92iEVNAy#Kx6a!CY5Sa8isfP z%$#F*b}WiOQ1DqrQo%o&y~Bq@P3<^tEE-66ZIq(b*%8B=9e{W+z?VU{oc7wsZc({G z^dmy%%#-IgL$v*ZFae~H|LVO-z6+Due7Qcs=j(|3aVtxy8`=DRvYc=Gs>%N+W&s+l zV0TGhFb4|002biCftbD(AGpc;3W)1kS?4_>Aam~{{qI(=`4j=p`_ugXMz~t25Ti7W z33%?42~>Ut8Q1?p1msNr3wl`xT?ev_Lj8piC6}ozIOuNvdo=(=4WL}aRZ7HE{`>yO zS$Q6w!a1*AlYnCtOaKCPgn#cK{}&I_6N9gwMY-*q=BO-8p;FK5lTd-@1C6K{088%w z_i-|t%A_DFc8UUsh})JE(eMdx9I?HF7mQ0r)bKVH7|oUa|4KvV$OYk5KoCmO{L^_T;( z<-gY}zU@>uMAC7;x-+Gl#WKDqOc-`hbW{=HdNS{tRJi>_|Au!@HT-St`X{hAa~j^6_8!2rYA$ z>ZzlR?kAq0=N1;b2>9jt^Vj?aZO0 zI4l@+&=ppL1{wwUC6TzW`i<|=nPEB`L9*EkL4m}e3__5JHg0U^G+*m+Qik7AU)mPR z)qSk~`N|JlGhu_Y)0DGlwLDRbkAgAM@0d9Fb2kdvvuKNNkvkxQM|>r_)^&^J`n{PR z(^c$oyr${9srFO&T~EJ7U*;%+JW02XGN_lIADQ$&k#qR<>;mz1>|Hye#>`YDsl3G7 z+=5*fH9`|5v^)qqfJB_T1*EDUyNA;oYA201oYwn4>?2ffU8cwm(kRC zuJB6+(wYK3apQJGb^UHzU#l|8x>zYNPbJ~&J{5i=D%ESw?47dtJ+Zc%N-gpI1iX!= zGm{y&C=^kqAQ}K`?of438hRC58f(oG!OXc$yiXsKOBH3J<_d+YYI73t^JPVXxYyaH3R?sG4}t zwy16SaLmFiTvTnEJcC1QYbTzG^sWAFaoGKVcZDEr*Me(0D-5gwYQ=zYKxT@GtrTYRNmAVjSX&&;V10Gw2WX9}6&4-E=)qe&2>xYD|=rV(b_Hl^fggRHWey^*N@^v;5IjVnuPsFu-Q+mG0kwDxB#c3v8A-%PVJ>2k#igFk#-M0gC2oxPC@T zBn=CSH7)ktHmAcz`u@)}BH?}-y+39ator^5L!{c6T0P8uGR7<6r-7S43bR047@|_GG8DGkz|Pa70B_cQ}&;l(q1Q3K88o zlF<@L-Z0Kf$aHbN=C&jWpP{PCdNt=6)%kA>!VdPG39geyHUhM~vwQubp-s0n#72A^ zaEsR_>XbE0@1AWYgIRAaPU+Ee-HwWk)a;tAh1pDpk=mG4J#&bPit-}0_l~D+`NhwR zL6V|-X+M$n!B4JUa$>fVTkO$nyhZbrlUYktX<(02{KD~Gs2FLElwMYQsXE{+h7XWu zRJ`c3(!uqMIE2Ou5+wy1GE*Bdo9}GrTky^}EGNFlI;MypTiTQRf2t#EyDy7Y@%-UT zKOIM7Dow2!jt|eecS-Tdyh@0{pa*}jB+lfXN3yJjSIT{h66g?(Z#NbS&UHR+XPDzI z>&(dsu)pr$B zZd(yFH{*~G0(A`ZIC^u+d$XaFKxmRte-sD&b`WnE(CUA>ckS;)2rBt6U_^Ji0)7%# zK+BwJX!sLqhX4zI5f=)ia{rl%tOv)}g~Bd&h*GpSfqo0{-4^q6Ohq&unWmobG3w4T z398ll-V?X!DYoOZsu~sH?aUtzj_L}}-L?{By-kUN*@~&9q;w4SJyWcI-k;U6K*cQm za@PmD7{_#50|brXSLrQarLwd|S`M}|0Ocuahq4E@tb=2M*R)8^II`fwXj=1 zFML*Iybk?gT&6dxZLK7+x?#KBk-fuDSghI6YwGU~nz`(mEln9rcaHe(z=oQPwnMP? z_>=}qi*q(55zf`OqbG7-Kn>CRWU!6T@T#HLBaVL*aYMg;X7VbZh;nX6baBok4w_^O zOp{a3^=?j~ImADpKTH69q>16tQ$ebj3wc{7PCZJ=KW>M$yUo!SSjDR~X9U}7R)#6f zCz$j(UP4h!c)y^;DYZM#+kmQ%J+mRPoC zNSsXk=OlhX3KC>$MR5U(Ij_&d|oTm6HIxgvo(DvAO!ld@)RaMS85L^Go$-*DcRvSsO{EcYB z%)LWc^-Y)M3Rvh@WsL}azuNn_m}nG8YT95h`fGwhWsr0q{b9&2|89BS-w^xc=5cGeLtb#KAf46qm8KV@T(%7fyB<#l^IVNug$RO zz8m9l_%fMOwTbO@LQ8f2z@WPr0T7~5yN%HefOR#I$6;ljs@{jPMR9#vhor`$;OqA`o3+E%&P?j zCy^T>Fc*W=*X$5yI!T-`Sa*@Kzki6K;E*`QiLR+en^um3HyHL>E3XB~f9WF@$_)SY zy?uE2XE2)fH7iOVN$wC}uR8F{P%i^kM-2JCdK^qAR>VLGV8h^+dh3 zENXJTb>*}8EM_`TeBk2Zs%tLr;lbXJau#un_n0~em_rmk{p>IW0m<f$HY-67< zki3XF)k@{AdOd1r5QXJ%=m{2mjlC@>?1F0Eod(J3rZG;kk4HR40Kc%R?(*)rZ*A}{SRs+2WLCPWr(Cnj&0O@n*3tTkQI{XsFB+F(tuJ$7 zQXCxZiry+4%jQ*PYOqzC64rrwb%BpBdEGu5{MCSIirHX z1W?P_F$T?*uT+~D+VpDu1hWI?oV0xLmZXQ!%K*9OE4oV(OmW&SrmT=(1%Q%`Tksup zwI`%Y;sdm+_?R!tFfTYdDbt6p!BWr*JXR8;sM@<~)w$R$M(JeqZJ|dh!Si(xE5}HO`&t{u`M2y1o@Mv!B+FDvQ$Ke)ODhZ3pV4W zyD4d3mGfAhgwdnvxjN--qlaPkF=dohg4s9L?@Sn8ow+IKuNC9BNp_sT`%Bm#_p6&w zeAoX}P328n4NvfyP~c+VR<^11Pp{f33Ej9>wo;8c@$;SOxkeP2M#XA0!;Aj3lCOV5 zAOEU-j80EJhQHLPZ$L;<@ZM`(=NID(GGD{44n916*pmuQ&5p88oOpqAAS-X2LH_s6 z;I*bs=G;;HSv{_D z<8!&apLM;mgKceXV?^`RCH^12nWy@bGZk@)_PhVmpS%S#+Zoa(q=wY1YK?G#qbpw5 zfrk7#`V|U@qkzC6nZH?ec-a2&!u-sH@D*AwQ-C2i9CS78cJrk`QGQ}=)ah1)^;TmS zHCNk9@%e%a#>9Ged8O&h;|u?S>r=q)Usm(F`0W{|+IHFZRe49W40o{5nXpBj0Wt=SS>39_W)=!$ znM&oGC`1ZF{paB@?9eDEiX#5<-$2~OZQ)nYOvb?Vx|I6CQt*XoVE`@08i zbX5go>5X2_m>IO!g0>NP{8AA?qwD{H z$b%F=_Z#$?(+qfI2`Wg|Qfm7CSm;KI_-boOb3^0!y|dQz)NF%airHuGNLyI5oY$;& zAESYgqLGNb7UMN0YPT4Uo0<+xtaDqNSo%>#2FZJbeF|pHjEh(uj`$QA?j8T)g*^*` zS65)36=#Ek0M=XQgcW73TZzf`m_-k58rcL>#NOVg*Bmh}gSE_oOu+TS*-A79ln)WY zrZu0ewswwsjP<*s_(H?;AfNVIzudlmb`y;AxBZ=dEu;K+Bc*2Uf)gK#0(j^@K=xGO znrFnpAf?q96L+;iZ}w*{QLyUf{I2CyyH)A~$mo}w0sKOu+?O0vep{QCPr)l<-h}^( z$)rnu?iM&4hKi^IZghW2Y!VVN!0=5W&20j;l_GVCga|!^48=HJ=Z;}|FaE}>YhZ)y zm#8^x`^&u}JLRN6++6V-+??JHk<Vj^X;!d-o`{b0t8;$GA2S(US4Gqf_gy{(S zVyIt*wp)yRBx2z%E=Ie_#|EB$cyHj!y|a%&wvVWHuSIR68CM@j!_BwZvadsb>Y~_* zBPUlzA8!H;)F(z${;m0zOOkKjNoD^U|E59P)0TBOad@vaD2pwYjkN+ve%YS{*&bHo zaL*wxDDNbY`lgT!dq=(77DbtWp7$2ZXT797twB>p1uda_9ZC9>%!UI8-A{2fyK%i1 zllZ-!uNB(}r{&jYJKC;#MdT+119{1BTF>AAnRJwpKVUYf<$JE@Nvm%uX!tmgJUr*? z=V-Moced;Iou02J+bu+S!6Dyhw@b{qlpb<;@NsmcVZIRgXvBh8dp{xG`@2{k*)SAuyR ztv8YFOPsdrKwn@0CH;l%8S%ThhbWL2fg zkeWzx{5)UU)>pV*@3BxmEb&G9#fp&~qmten8zXIe^zGt;;X*LGOPFQM6h9c&G0XN% zZ91|`dvo|Vk(c`1jap)2v={Wt02MDMh~F6MmAqnh-DI?v7n>` zA`1uI%eN7a1*DK!T}6Y_Fmf%LGzb`IOJ2IrpjKc}7>AkJYsp6rKG$i;g=wv=tJl6? zM*M+LDE; zAC-y%zuW@w@y{3MF#2Us@6cGQoPMKK}3)&f z^7)(Zw9)d_|6#cOJ~7>UDFF8*3owc1e*}g05K~p|^vm@xXsRa&eFmj|3w>0T_#NG8 z8@s(5ftUG!P2wr_?SF9Xv%!7jqF&ZJiv%i=QhSa;?(_ai!;i2E*Qv(6$p+tB-T=+M z_oq{31q%27bgHKiI%(|f>h#eX8!R<+C1bLFZlw}iTn;QQ(+pffPuocWhlFw3O1*q7 zs5?!uX>FOGU*S;OPUrbdOIolDKFWN4PC^2`aZ1AkLDR&%*B>{mdPbpkLKd#fQZQUg z`0~{9?vmyp;5W*)MjjFVId^Fkc(n2y2}z2H_KLiQIyZFtIP z{SP(NF)+_jo|qMi1$JRLTqPQvsGTm$$3Am%w7yO*m6w+%BYqbc*Eu_dCFfYB-}1a# zQDWM#7dt7FXV^XEHPz(g;xh&!zhs5a>PWu^1jv7J0KS{NGr1%At>K7jeaH^azpXFH z?q}ex2K}~EXr!>e@8Ow}YJ+lZ| z>I6mTNoQ|qY3b6zrK_GMj{kII&y1JZbn&+pFEX1=sYYeMZaJnnpK4u(y(I5K z^HG@5@2Y;6PoJD`$(#e>tA%m{B(Rwjq8nm2bBK28_^v z7n=;Tu(G;pR~pArl^73sH~&0gSEVX2J9TXn6&q^X7!$fQp$ROhh!Y`-T(aO#M2_d8 z*MKbr%TD!+^`@f|SH%&T22A_6IZl4ow1GSK&tCR3uRfX!g&y^q_S=1=>MwRrz*qr2 z^VcWMn69*=)kFM(?7qo_S0d8q*)q28dMa%GKDK)_|3&H`epLBy3dZKx3U9FOrVn|) z#C(q#BmzTYRnAVX<29vLF!J&jtD{5a#2|_dO!MGFM7`~*mEjM{l&aO0)V7{6FP0x) zlw%w$Q|9glh@LV>6QHPqOS-I$r-exnygtD!t&A9aJn4UUc!q-Qs-W+uT#NS^K1<2c z=U@B$W)m}hV^7)B=(VVM=`*oLFAQZ9sa};q@LWtho4ZE7>@*^=>q1m6nN+V!y&z&V zy=i^shFa-o$tXQTsGHd}+uU7yALYbe;a{IDUvTss=iafs#USSrRt*;!tvWiu+fbxm zc2)xKRsT;r{^e6YRkPhD$j?~TsO4d~rjZ4PlT>$7l$3WYxsuzt$ z_-+Np3R{5Ko?72^kA6|0K{Pgs9rIj{Es?WT3CIA@7A*TrHgYUy#;*-cTw4($vbmTKkaOW4UKY8>0T}g-}0K&UN z(IaQ`g;(`vZDU}(9?HNXfZ^K1$l?bqesIi2X)k{hy|B4l@#}xc(=Fd4bK9BcuDTxt z(Prk%m^Qpv{RUiV@kdmR6&4w3U$YyPP+4sD4pOK6V|ls`H)VmfBb4L&kZC;$T)h+0tiT2qOdb#7o9biEJ;duhj7xLthiekLK;C-0O_VQ||RW;keuD zite!Cq^@Dfb@?$Lhao**q=NTGla12{lHD2l$!%=OHHpZ5|3$BoLz||#CX16c3v(%I zAwr_!A&nlKf#e#cc#BhumA1u{`{Hzxn4z)BvQ$selv)bjKK^LUobmN6*gU|-(4kw7G^c*Nr5=^{zj z_|bKH`CMm5_HAk0z-G2#Nwrq7+23X5vvY7S6{eWpV;^AgyA2#I2Kn0L#e77L40QllYlw9VC9X_r1o zKa+wTY@rj!79<*qdP7r-rf~;dCUhf(vt7xJ6;=yKy=7IT1*$RbB}Dg@kZ4|So#)b{ zqwkqYB`a9q$|{4$%y4U^)p<5lu78cEGD`&|6tCT~{jxdg3jh8o0p924Dfo7dHTl7E+b zH*7b;?!;|#d9jTITYIa$z1=-D(QD1GQ7qyB6Jls)*k&FaI(bijKUL00u+E*VV=;!s zccqkKD?_`?(Af3nrtN#TBG zz`aH5m?y0#&o>lK9Gd4v?lxovAr8+xse#ljm-6Dz{~`~7Z+-UP;SOoe=>ejdxUMhH zTjSYGtuG4H5l*mR+n@1)9@1#b^@m0llvnsaEJPS)^Fwy@v=!wGW`5SqjL?K>JbD+K zmn9)x{JIO1&BIz5kuuPFnr5l2h$S@DE$lD>(u#k>DQP8$&!P*y^VBI(26u6eN)|6t z!;{5bCpc;S%P2;X4Y@MBpFWpNVt*rS3xXmX$1Bkr_d)t1YG)&+jvC@HP9s2C1j}n@ zr~fJ=BXe6G?zW|zB$vF#0V33NS{+pk~&kZLR^bcJ<&-f)1n0ve_0ovN_@ zjCQG{%H6s7^ww+?giR~#9}!BJW;bpTkJFD}D^oR+ERDxXYF-`@gYnpDdz#dDeCr6v zdX4Zo^FbOhb+naB2kg*4no6QQtcBX0a35&|;ucyG`__``(K5%2*-=_c5s#Be^(7;~ zxadTGwwD;i0Y6;I&qtcMrpZ6wc*30+o%O;~BRP0)M{JBr@@B~u5)y0n<&xjL3!NZL zwvHc^M~qwip^(Ei;n>2f0pahDM@@O}xf1qV$D)wt^3p?& znw=UW#B#7-3?Ch<$Uhair&Q-|lSRWox2v8nY}(kk-#v#l5f2*G><5}6p0lSqr&mnl z#QOEn#Cz-4x!5gAX&=oaK|-5XQb)29Ek(}98$~Q6_Co3`unMauJM4*3Y!*9VI8OCM zvj$LKPY=v>872yujZRiMo3xoOC06)x8YGNlf9u?z@Ul>M_H;b%EFX1El3k7#6TAd8 zuXlfVohrPdBV{t85Z=cEwZ6&Cfa;66?-?$x$&&GVKSh(hvMry@EWt{w4ll5Est%?Y zlt6rqsc$7BEBD%GAr*@!Rg*}GVOMl)5_^tj%I!)U@d%5W=ewhiu{&FH{4$EEHMd8I zO$Vnz>n}jAG$*RZ9#|6&(3cGIS%MS&53&_+(M_;vW~;)6y->(p`x{PXB=)z#v#*I2 zr*pcXomy?S+68LCeyCmRVx3oGDn~;@ljiR$$Z7B*Z-5xZsym|^S^x52c^BQU%3|iH zn^9RZYNr{IFv1?dCkKpSUYTbt#1M5ppq(Wd@ILOykCZRn|9P%RkE*$A*uc3q_T3kV z?j52i`e|3G)6AHcA_{deKndC|vc$zVSpkx%go|blkGK1(t*dx8-AksBoHS}BN?x`8 z#IkuwZryL~ARLsRC!rMiyWZP-X=Igs!fA|CDo<@lNIstZ^KJ7aS3uJA@eywYYrGB% z5|K%1KG)3Q7^A1(+ zCOI1#$BZ)-BOauez;}yQwf&a$B;97)W7Y;%VqfQc>lBU4$5Yc0W4o$CFvnbN&dJi26E-uGZ=>V#PmXq12S z9k->=Nvx1Ww-ak%A-@ewC{eioMBXCyyNswITA^xfn%G9FMzN$B+>c;;Hn8KNxbGp^ z5Njs4`Hf~GcXPl~1gygj_SMM-J9k^w^qR}7gSQzBm&LA1d;&7S!*k##2~N!lj=JHm zU0#dbC%B8&={G*b@hlTLW|w0nqN1|Y5(O;W4qk)9upZU`{nb6PJtJyTc1NVGaA|0g5q`TfbQO!Q(fGJb3LOoeWKJ7Nu z`Psc$v=^D$_D7Y{O^A+#?cLNBBeA|a_)2m`9cSRV?Wbn>4pR7|C8Wb}vXuf+O+zhAH%U#f`T$^p#78?zk&^fICGpePp2 zTnJ^e-Qjajk|(-m!>9cAq3+W)*QGnV^!6l{jR|(}c{^JMg(w7kWgOSi5imMQY_HcC z@|Pe&+LysqMZ{)aiE9vLRXXAhoT4^dRpnghp`uF_F0BtXdS&wU?t4>Yxp0>p*%3ztVgp2 zUZ|sqL9hA+c|GmbmoGy0UM~U*7JH(G{gqKwIt4%fsrhV2TynEN2{K;oTcAYVsY&T z8)ePw^mt;H64A%;fr`sUK$I)DnyU($rN;fB@9OINV_=Aa0#NYcS1jQ`X*>U~OYjZf{bzND-;vu&%)A8!D64&;RP#zq5?0vE-ptp9 zaEX|NK;U<6;A3m>F$;~ixzZu-^Kz)rY5CKdqWeyCy6!15$Z3G~EZsOD`i6-8R`S+h zNKMjw-(&h0giO&-v;t(EfLF+`XzHCzl+ViOfO9^X0`&>#drJgN8Zd{%ns#+WteF2O zGIjC(4#K>l&S`iyG0(2ps5HxO@jE8r3cq5V&uZZE_*VBGyAPK`a_JTc^;d9mMMwQH z=eohb2AlStZYfIK>B6VD9(6f5Js~5B4$LC4xn{DTSeM1avaj*;WFSZ_>DIoWDXuf6 zvNv6R>_ActoEMJTMA)iik#(rlw=W$);?-Jm4c=W4KZDuG^t)kAT%|yven%RRr$uII zHAe-SC>1M&97fTogE`?RJ0y2_;T!ZPS;cQy8QReed6YHP;(Qmjj}OF3v=n_$nkvYd zG;1G9(Keioj1~J_?YcxTw$LjVGIL!W^WVtD`v@M^wPna5?YfBp zD9X4M-e&FN&;E)mjR}66XNwlGXGrc?-TdvRaUbL};Ufai{==2^^(Vn&;o61wXFhQA zI6m*sqw(um&4$UbyWv_T6g{;%B5e8{Bd{xP7ADu@8h~ZRAcLR4N>nLE)FYx-c?^E%%G6Z2s4B# zB)-RMb#-H30bYjpf-lICi2uD`O>jn)mg3XaEhgX-&K45u^f!~ICF(G_(qeurzI(Z$ zL>$H#lukqRy_H-Ua9g{!Pr4jYoD6b+U9MLRSue9gma$V8~ulfFj8&Lp-`alHu8eB8+xv zuxQDQiPEC+xIIrkt|)!fL!Yzun;QkfAWf^z0?bK=PQkYJj*8vZA^ zC;47~PEXxU3Hc^&LAxk;Eg^xhi;(_umgM{a8DNpaSDC}Rk3yBWJoH0TGvr=kw)jI6 zsnW3Z^Ds=-k!*0}Br-QuE`*YK8J4hP>=`c&U)%c8f2p`=U&vUlxDUIRwsfDRc(TlY ztF(bzO!;Q<7=G)U>3%sF&O`d4_+J53RY>hhArNZWUr6uMV;h$TetzUAhaLvrLb8y z!ZHi;V`_O~33M`zn1w^>BVU(uU7oLeeQ^ofm*J!-;J4UcP{i7V#S93HSsd`X1fJlS5PPx@|*mfIN{CKOLTH>-V- z`gJDHQU9(YSQ@im8Q-2E*Y!kKW>PqlDAS*0dEm+r<1apy2mHiF;euLwB)G=ojS7nnRDC&T-#%NluEbg!b+B zaGNB)YgP@7mzd}*ECJ=v#XHQv-iqY#t|A-k2i4_2>2h~OH6u23n;zrqTqwT0D-Urn zCDGwjllEJKczN8L-975F=*JGCPP)H#q~)6!qMgS_Ll;4LuFhS$MUzqmRZ!f)&13mW zj^*p3?0P=yapH;Zj82lIjMN&??wclj5l4?o?4Jc{D>5>DUpcMUs#@n zX+r5ATau5-D8g9VsOxcGRR`kRrl{7=Md(BZ`q{{!+6nG^p=zGC1&FD(ox)%b5g(Za z6L045u;8&%!-ubZgN^zU%{PZi&mA@8^f+aVR}Au9>Ipv2O0q~cyOE?sgz@k750^i0)oS3vD_d8J;o=t4?*L2S+-zFq@-{?awohMZDrg;=6QPDK~w2&CaGRR(Jj zcN0%-2Cshv7gE+!p4zZbki<4_yRPG4Z5uJ(S-$Tk-{%?@hwLNkp2{2gfbqC>(Er}B zE+BGJE4Yj2YK)4acL;^W03MzEWnmpRC zz)<{lQ$A}1#dj*O8?L#2TW+V~cXM4h?A8^UqsL4hl_kR88h zX9+~-z{cYh{0?P?G#FKU-~~U?__y<{4WuKC&mC^qQhX;NDV%17?R-c0M&b6?@ejEz z`aTff3Q&j183o(|*SDI8@=>#5hj9Q5>=&s4H~f95`p;vqAMc(bR-?(x0)8Fj<@LZiq8xaEf1ydoF(}fTQgj4vR_m; z2rfqgaXWj%=?*E$cmDB)Hn2s6wW{EDvP;j9Uf7p>3Y`t1bNax!L(1#~4107q(RfuO z@INXkURoxnRuDN4b2h||erB<+R^0V;;_KSi@o&e7g@6$|SpRP~N=c2I7~h{Ec^m;H zP^0mMYdh@VUsw=djSRFb9L?akCr(@JQI*DwFJ(^_k`1usCdR`VGU((Q*zP>^MYlM&Sgf;obI`wY$m{@;==8ap>s! zTzGL8y39NPBbI8kpKU(y^E_(@(H0@we!$ieIvv6Q9tiQ80eJEl?Xy}=l#rgm)()r> z_fOziDOTre`zft8gw?4MHp2#_gwY43dk>rjrd&+ru@)6w(!jW%&tt#$X z+-d^4wc)R3JKUdF4i3%6gtYS+Oh#wLNM03|t|>OvSq!DYXE!jFD}TOVHH5-=vS;2m zGbfYccrs(d{R}5FZ-;v5-1h@?yk?sTO@@CS)QlMEnIs+dv|mO+Hfv7w{t31dT`|^5 zKs9*128_3Lu~IufSVga`VF$~F950&zZf=P4YzTVmuw9jn?C~>oZ>jltj0hDZY&xD! zwv4Cai;mmVTaf}IVK!&zc?lX zlFod8Uu==R)}1y+C`2wJ*N|(6jUJ6>J-vojeLRP|@jZmevcHl=HXN=-ieG|NAo-k3 zeG4Det>-4;W5=@b?qleO*9If@d5jwft|bjVLg!(hcqS^_>V%-3od&p_=_l-aO$KLK z_nAxKF|3b^BNHlQY~Q?5b~5wNfj01cZotWhe<3R$eHauKyjvrZ2T?V-8U7c!V#UVU z3_Q0J{qdZiMbu0=m-N?##JX>$Dgr<@mNB3XEJRUnNs z_Gd8mDBd*T1ddz9ZX$=BW-P|tq5jR$AJbO*m~i$lGsh_NQ!bAgEA+vi_=<*T(_2!q zBEpKbMm2)^-Ws%#QND+DDZ7M}Z%KkZlj>nK(^+&Vp} zwpy2T++VEz@`M96!Dad5+Bku@$bw6vo(tlN_7`@QQVssfXz_KTpSbnna3O1AwT}iT z?knt+hB$h?ibcw!p#^#dRZaQyWK5+Qo>SCV`h&Ye%l2wTR>5zKD$u*C#=}KrUF#4d zTa$u~%>bH%p0rAJwRnaE@3X7~{IQnLHQb`~uw`|jee7Qu^<#r!%Jm^mN{(48`R2u% z_OW*Qr5~TR1&JBV#mfq58O}|k4O=37dlYZ4K_zq4w<&8oa_P=6|F<{S*}#LZJEZvCw=Dnzdpn08?MI*Lx5 z*5>m%X5DZgS_H+$&3mo?Ry9}nUX9Iws zFtGfSJBUXu?Ep>*D`P3Qy{mHVJ+2Nqb^#XKl&aPW7l!ZGuI!=1^ zrF3=FXE69%C{?TkpqPld<-$;F^xV2ycq?K=-0t z(c<6%)UFuMdjGAIg}lA%8O%S8c*JY1OlC^8E*c|dVz^&*9wn9j#TE{~hPM6B z9_G}dJQ2Bi`S<%y?YMcBfJC!0U1C`>iOZ|udd?}d_$BXx4 z7sQMw(m5``%Eq2a85-+rT(Oi@bCz?fDedHT`Zd^T$K~{k9pTI$_vbqt3kM!C8-dj} z!yf3eHwJcy^LUIooNV->)xa~(jTq$iTH(Xwa|+&kkz1o{zSb0M=V7+#U3{;#*Z=?a zJewcuxWeR{>Qd8QpN0xp;GQsph1xWc?D$o+xG&r(mX~Q7dNDbz%$i%Lbb-0hQ1 zLy0i7m(ps*q$}c?0)50(FdY)t+;HD`NL{MFQ*j>tCVTsUevBJSptnqcoXs#$5bIGW zhch{>o00z4UVRz&#K4TKeL0#gla6hc0%mGYD>Nmr5p%-vg}ZmS74fBw>K_>ih%4BD z{&|zN@MUvV<(J;ho=KnG$S}tkgnoPJ|E_yRT+RBM-SFcNj?jvnpc z`Xj3?>yW<{-VeFx<0=?&IB>>Z=(~c$VTC76KHHyD7^t*qFnG6GuZp%x*cUQvRBJ1L z^Ce#od=DAB!1)(e_h+B_TKIE0r{^)Q+aB88nK!irO>;+`6)fwvh?RKfU|Td6$64cs z!#p$!eMahT+=m$X|Q`X%3&cnEMgw-S#54*ddmuOGaVhsMt1J`=+wX!~3xq^y6fEH9*s z>l|&Si}aMp^G*Keh+#o!H8=KvW6YaM(NnE3R!wHI?Bf@1hm@4cse;w&^u8@~t%iKU z`!D&QjfbUcJ+iZj zV{?*1DJr4Nj1uQ??7c!Md!1vijDuqw<8T~j-0xF;*6;q_kJ~>zI_tHr@w}eb^}61w z^3#E#7mh@5VJ@DKY3TtB*rGSI%HY1HGn94#+2jW9za=sHd5){yP9yQSpb5+ z>p6=#Jm{AScVcEY0T7MyhSSP&$jmnHRI=NV$XcV|$gg zX%?fy@&nGwtEQHInnAPo-I|1CaQ=3OF1?A#fp<~7%Xd0Qm@C`@MiMpM;C-9aAg5&5 zi*ZMTwVj0>7anC!lhNj%_W$+Z5^+wci?#c7xdBNV?MEgxdl(TjuDr2M&X3Te;!FTA zVqlJmK0B+83gQw3=msBC^f^uJ-*F zLc57ILQ=yfIQn2PV8}1LI5?>yRqKUvd2DyPFXfv4lr1!rxHlci)ybHShu!WWugCK_ z?6xM0{WOYW0!i@yut70_;Iwf-3xh{?*&Nw}O%HWf=l=mR8$rhshHH7j^?7gac&_h? zIf@%*E3f3G-4NK0KZEzeOSPx^jp^m2?%E$i-mgSK1)J(l7MrI>C58eC5uoWpOkC^u)rIJfeW{h`v*No1fP*_OS(pAcC zX^qd*(dAX=k5iiJ;d=U0qU0K%#Z_G}wf;$1jOD%0nOKX;Bdh7MfSvPk=3+C{Qy+dmjf&oC_f7#S8 zl0rd_Lq)!50qe4x0)Q%slxv~RJU!3KN?l$AcyX8M+kMJOJJ|cB?8h*nV$AnK_pG_B zxeuJz+z&PxC62d#OLkAkOQZ*v><448?USEG!1Q&Z|AHh2#FI8Me}W8SUbEEF_rIa^ z@ebvq-xeoX$JWdp^YQD=Z0(ulTBpJUS7&=(iNaPXk4}!IaZW18y9^~J*A9cy;*S!~ zsaDSGb#(|Zej<$HFX)uvBCoMtZ}R-QqQieScg17no$En;GX837c6^P_TyBz=MthUl zu*BP8zf5_x?5;jINT?yZ@cQ0tdSbRG3f+B+-;?sKZPrb?=3hom-ZhY<1o$@KISjAR zr!=lDzg-=%wMbO9x0eVG^eW`u)BaCvK17QMi#>emz?WKe)&z||N;$V9DOvLGb^jGy zHBw*pn+i!e!8!_Q zLbHvnAb0eV`IVuN-)M;Pf#A(t#HK$T9#!}1H=H~9N#}QXyEm!M5u6P{B8JI2#vK1b zPbVGLzdyTNV@?N9r$l^j`mGcd+)gb9;`KVkp{Tk-w082iUkgby^v-XWYfV#GXih7I zyI-=6fDt19-l)lvccsTuwe(_F{5Quw<`8IZDt@3o{8hD_R^TddO?LM@#%=U7AmasX zf6I8FneYE(8b*ta`YnR2ls`K>F{QiGH`J1@-|yLFg;+u7^&s>M}}e2oRG z%9YXVf?7)_SHA8pW!sOY+hUzD1#t~LTT@{g_kk4l{qIrhiNfJ#FP zeDoR9zidq*TGNA8pBh;X+>ulZCI7gs1>}v*gVy)7EEVBJ<=EG9E=&8mbyzr3lWGlA zimaQzwd*8Ez7M1j*8{P%p6TWpRDGab@N$!XKmG$WztC|ISLOxdAdnpg2c2mlMk{Z8 zy2}Lboa6r?@LaYZW=B~`)U4M!X2D|hscsF|yDdKJ)!sHLk8!q*d)dA{l5IPBs3xRd z*==}RYu_r!E#Jc3G5Ov9FC~-%hkl+B_wijG-Yd>)9>Zdb*ah_vCB-`*6Jzx(^Mrhc234_ZSvD#a5FC76%8lD9{;CD>C~ zkxdMF3p)=!(Ly_wNr4upMmG3d;`Bgu0!WzX9VboPkZ+TFI!YI4Mdmf_j(}=O2d|^x zspbF3Y-8)ck;8Ejn_kmFkdphG^#tavWa$TuZFnSn6mT#!>x(Aefkw#{fq6PN15+R zt4=sCpfA^?t1O87Y{8io&C1sTZ)+5muMH7C344sz+b;k7IC37kph}zym!lv!dR??) zU+OTcSUcw4GEEJjAo89#2nD++Jv|YKRC21Xw0G!AXBKoWyU^ho_WjvrSyAb!vrg!P z?t9~Vip@Q9Ul;0<-C_s0$|c)PB1YfK;eQBzuCztwo$Sn-^*|6TN5tS&9?PFC^uH!F zDbwDOu(}$ZTh(T*gDY`@Z{}roSdv{5`?o8Gl>@qsh)VY!Y&YtZk^JtQWp;A1{#gDc ze+Cq12<8je5o^bGE9bt-PE6H{;t zSy}dX+l#U27KVP<9GI7K6q7+)!b2yifnNuK5?PttlB^7)x)YC~Zw(_ArS7k@ON5&< z%=*d8O?G25yK;s1Qe7&L7+6>&Z;UZotDco>HAcBHkaML~XcX0TF#VW)j7&g) zQk$?j2`L>`p059xDzmtKd&Q|r#SbH01sg9a?Fs`OiAa~Ana_@=^{C<;DdZ}7%H~!o z)|oHM1!J7n?Ex_)E|4U!2JHWkO8=2p05sXa!eZtJO)A!(@c>exh-?LJkA!HZM#5s< z6cMM4lO#=IRY(AO=8>u4+NUl0aZ<1P^5 zc7>~{+$~eCSzN;53Z?Gt%KJb~|L`fJgr2ibDkTTN+R$?e?&&^Vn(C?mn3dh&B|2XX|fb~l?zu}dF39d^`vTSKzZw>HLBe% z`AljK5~pIJ(s_0Kv<2~}m5Yko|8|=HBDBeAXh@o(3iUP&YunX9+{B zj^-?bYvz&drnvchS=I_A+;%oBwB*S}?a|}Hp!V!S@gLbCtX4WIu^8&vG8dsy)pTyh z1lUHJ3__{`8IyB3m~4x)wBoNbBEDyf)xoT2|6ZDj+q_A`@TSTC3AHpjW_En7QXU2e zVY92)GXF)9mO?*dIZG&L7mNF@n$!o|%(X=xU04pCLk|LV>LnW)k!R)h<7OB89SQ#9 zwy|gxDC@X?ujwa5h(K-%_o^xG-PkgAj#| z?-j!r&Qzpg_Ux1r0=6%^rIV+=vnmHS+ooa)V6NlxIQ~#?$CWq2dpKixGqJVZnX^Nh%7dkZc@_>(h$YRavBY5|OH7VUCzcbWQl+=AYh!N5^0~6)BqW5| zbV$t-D7NN>fsZaMpt{`q>~0M%l~%`mfW~v>oouv%dygX9A<#65s7nV*5^W9=|98u&&S|^l0(D-voKbQm4+h zrG1h74YG0sTPui*v=J|)!CDn8&?{pVDf7PF0Q#@sOhVYSM5b11Plo(chTS~=HKP#a z1!kp#U~C;5`rfMCb$G5wr;JZGJy|ikwRf$Wa7AmWeBS+F!t&0cxF9Ehv@H2>##~zJ z+{5;2UB|xSP_fE*u9mgh`QbFxHQqcJVZzY6RY?C!gSs!s?rR%?mSN&Awx{b#S6-+Deh6GdwtM1n3Lxkdpc}jB)n*cSITdOIlXjQ;f{i53~&$h24-uw%C9ypKh#Y@mojqM5J-d^iJzsikc zf|qUF8k$ZBO|CzSZbd(<#HIxmoEz}kT&Ofl-V~Kf}>9*N<&*^o!-n5I;-qHF5jC;w7-~2FVPJ`}< zyfIe7DY?n}XG7#;ZkGmvX`1a3_gMQ0%8!j*9p}q9Qdg;4yXfEHuk)0~FF=mW6HgiP z4)!&^&wT)>3B|HV9J4Na0Xi)^gMXiN-114-%}UU85Rh+4;CI()D#tf%ar-iM;AsW)(eP~V`7k$Mnja5Ync)jk3~uPjFn6_e+e+1j0Jsuk9idzsI& zzgD?@wJJv#p8{NeolxqLmhlSO2O}AfemR)pFc{8CfuyRlT{+k@-=9POxcm1%Z+rcY}zH+Yk z(HqK!81PaZx#qTZh(q7@<#uJw6qyw>e!EIf``zd=?Yeo?%wtYmnd+#mNelG`Z8LGe z0YgYNDTg3dt0$%YKm)}GK=^y(A1h<18TXj+a0Aa|TOjqq=hICLB6|EHNCwd{LpY@A zgNP37IcVX@^c|D!UTb!g^D#OzdEYqk-;lenm>DeKOqj3I(ZkWI4<|5Q0OFFJi5eUI zeO*O7IUIWCc|w8sFY$?6L+oWEKT z1bRP!?P6Ro4A-i+%hDpCAy^?+h<&+0* z=3t@R57*ar0lx6iPH<&sALq|m$3d&{E*bYKlDWUGx#CF}aKot*Yp(ceZmde)#}yP> zC7;{6O8IE^jrBzKXhJq@BRDi0UO#q6c`)s4`1UA1k-ht41DqO!1ptQcw%FokBE})D z8)YWHXg>G)Z%!Z9=kPnyf)0R^P8+EInQ5(-w~bfX0mKi*!*M1Mo1UIONmzP$ z*hn8?)$}|*mzMX!v_^`h@kN$8-n|nD+>fulv`yF8d+1Zr zJ#S2}^RPz7pYMYumAK}Bh?Tah6U~=$H=0)Bwmq7sN1jkobLj05fTYX!UI6h`q%aE7 z)cRuL*#OjrzX-|ANF0;-l5!N^*8$?41X~KNas(?2c61`E%_tt*!LGdIdzE*Mt;={ z(2dyQ1AOU`)6C$N6tm+6=^t(KSbs-;By}A2rpbUsp^uq2 z1<_hyz%_pZq z8($wI)^0gSQ756rhM9Knvp%uyEu`(FZ-%Ezc1NpXF^eqvCXuD=)qlG+rQl$>E$7j$ z@yIcG)hZ{P3+d@jZoVFifAy>Ssa#TU}3L@X-E=t+9~PAbmvA4?8ffhg=d;{%3YniSg7Bt!flbJFG?B zt7z~xT!T+ic7BltL5qzNgy*S3D!v%n2+H${5S≶4WX`X@G!dO1N<65NK_@0tNOW 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 OLPNETG|SZ;BL4%^qcoZT diff --git a/docs/offeredapis/offeredapis.rst b/docs/offeredapis/offeredapis.rst index fd65ebf9..28f00835 100644 --- a/docs/offeredapis/offeredapis.rst +++ b/docs/offeredapis/offeredapis.rst @@ -20,7 +20,6 @@ Overall architecture for O-RAN A1 Policy functions This picture provides a overview of ONAP's A1 Controller architecture, integration with other ONAP components and API resource/operation provided. -Note that DMaaP is deprecated and will be removed in later releases. .. image:: ../media/ONAP-A1ControllerArchitecture.png :width: 500pt -- 2.16.6