From ebab5cd5c8b469cf31f059225efe88b4c3f4cff2 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Mon, 2 Feb 2026 12:37:17 -0500 Subject: [PATCH 01/17] update java & springboot version --- .github/workflows/main.yml | 94 +++++++++++++++++++------------------- docker/Dockerfile | 4 +- pom.xml | 15 ++++-- 3 files changed, 58 insertions(+), 55 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c67541e..941c487 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,57 +2,57 @@ name: Deploy to AKS Cluster on: push: branches: - - master + - master pull_request: branches: - - master + - master jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@master - - name: Decrypt large secret - run: ./scripts/decrypt.sh - env: - APPLICATION_PROPERTIES_PASSPHRASE: ${{ secrets.APPLICATION_PROPERTIES_PASSPHRASE }} - - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - - name: Include local jar - run: mvn install:install-file -Dfile="lib/PageSuccess-0.0.1-SNAPSHOT.jar" -DgroupId="ca.gc.tbs" -DartifactId="PageSuccess" -Dversion="0.0.1-SNAPSHOT" -Dpackaging=jar -DgeneratePom=true - - - name: Include local jar - run: mvn install:install-file -Dfile="lib/airtable.java-0.2.0.jar" -DgroupId="com.sybit" -DartifactId="airtable.java" -Dversion="0.2.0" -Dpackaging=jar -DgeneratePom=true - - - name: Build with Maven - run: mvn install --file pom.xml - - - uses: Azure/docker-login@v1 - with: - login-server: tbsacr.azurecr.io - username: ${{ secrets.ACR_USERNAME }} - password: ${{ secrets.ACR_PASSWORD }} - - - run: | - docker build -f ./docker/Dockerfile . -t tbsacr.azurecr.io/feedback-cj:${{ github.sha }} - docker push tbsacr.azurecr.io/feedback-cj:${{ github.sha }} - - # Set the target AKS cluster. - - uses: Azure/aks-set-context@v1 - with: - creds: '${{ secrets.AZURE_CREDENTIALS }}' - cluster-name: tbs-prod-aks - resource-group: tbs-prod-rg - - - uses: Azure/k8s-deploy@v1 - with: - manifests: | - kubernetes/feedback-cronjob.yml - images: | - tbsacr.azurecr.io/feedback-cj:${{ github.sha }} - namespace: | - pagesuccess + - uses: actions/checkout@master + - name: Decrypt large secret + run: ./scripts/decrypt.sh + env: + APPLICATION_PROPERTIES_PASSPHRASE: ${{ secrets.APPLICATION_PROPERTIES_PASSPHRASE }} + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: "17" + distribution: "temurin" + + - name: Include local jar + run: mvn install:install-file -Dfile="lib/PageSuccess-0.0.1-SNAPSHOT.jar" -DgroupId="ca.gc.tbs" -DartifactId="PageSuccess" -Dversion="0.0.1-SNAPSHOT" -Dpackaging=jar -DgeneratePom=true + + - name: Include local jar + run: mvn install:install-file -Dfile="lib/airtable.java-0.2.0.jar" -DgroupId="com.sybit" -DartifactId="airtable.java" -Dversion="0.2.0" -Dpackaging=jar -DgeneratePom=true + + - name: Build with Maven + run: mvn install --file pom.xml + + - uses: Azure/docker-login@v1 + with: + login-server: tbsacr.azurecr.io + username: ${{ secrets.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + + - run: | + docker build -f ./docker/Dockerfile . -t tbsacr.azurecr.io/feedback-cj:${{ github.sha }} + docker push tbsacr.azurecr.io/feedback-cj:${{ github.sha }} + + # Set the target AKS cluster. + - uses: Azure/aks-set-context@v1 + with: + creds: "${{ secrets.AZURE_CREDENTIALS }}" + cluster-name: tbs-prod-aks + resource-group: tbs-prod-rg + + - uses: Azure/k8s-deploy@v1 + with: + manifests: | + kubernetes/feedback-cronjob.yml + images: | + tbsacr.azurecr.io/feedback-cj:${{ github.sha }} + namespace: | + pagesuccess diff --git a/docker/Dockerfile b/docker/Dockerfile index d06101f..4a23180 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,4 @@ -FROM maven:3.8.6-openjdk-8-slim -RUN apt-get clean -RUN apt-get update +FROM eclipse-temurin:17-jre-alpine RUN mkdir -p /app COPY target/pagefeedback-cj-1.0.0-SNAPSHOT.jar /app/app.jar ENV JAVA_OPTS="-Xmx2g" diff --git a/pom.xml b/pom.xml index 7489d7a..0958d61 100644 --- a/pom.xml +++ b/pom.xml @@ -10,9 +10,14 @@ org.springframework.boot spring-boot-starter-parent - 2.2.1.RELEASE + 2.7.18 + + 17 + 17 + 17 + @@ -33,7 +33,7 @@ commons-beanutils commons-beanutils - 1.9.4 + 1.11.0 @@ -55,37 +55,33 @@ commons-io commons-io - 2.11.0 + 2.15.1 org.apache.httpcomponents.client5 httpclient5 - 5.3.1 + 5.4 org.json json - 20231013 + 20240303 org.springframework.boot spring-boot-starter - org.slf4j - slf4j-api - 2.0.4 + org.apache.commons + commons-lang3 + 3.14.0 + com.mashape.unirest unirest-java 1.4.9 - - org.apache.commons - commons-lang3 - 3.12.0 - com.sybit airtable.java @@ -113,12 +109,12 @@ org.apache.commons commons-csv - 1.9.0 + 1.11.0 org.jsoup jsoup - 1.15.3 + 1.18.3 uk.gov.service.notify From 3e4c561b5fd4871738b7ea52d3090ea11eb619f4 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh <32944558+HamzaAburaneh@users.noreply.github.com> Date: Mon, 2 Feb 2026 12:58:02 -0500 Subject: [PATCH 03/17] Implement proper logging with SLF4J --- src/main/java/ca/gc/tbs/GoogleSheetsAPI.java | 7 +- src/main/java/ca/gc/tbs/Main.java | 97 ++++++++++---------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java b/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java index 20c4fd0..a5adad9 100644 --- a/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java +++ b/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java @@ -9,6 +9,8 @@ import com.google.api.services.sheets.v4.SheetsScopes; import com.google.api.services.sheets.v4.model.AppendValuesResponse; import com.google.api.services.sheets.v4.model.ValueRange; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.security.GeneralSecurityException; @@ -18,6 +20,7 @@ import java.util.Collections; public class GoogleSheetsAPI { + private static final Logger logger = LoggerFactory.getLogger(GoogleSheetsAPI.class); static final String spreadsheetId = "1B16qEbfp7SFCfIsZ8fcj7DneCy1WkR0GPh4t9L9NRSg"; static final String duplicateCommentsSpreadsheetId = "1cR2mih5sBwl3wUjniwdyVA0xZcqV2Wl9yhghJfMG5oM"; // Template ID to @@ -61,7 +64,7 @@ public static void appendURL(String url) throws GeneralSecurityException, IOExce .setIncludeValuesInResponse(true) .execute(); } catch (IOException e) { - e.printStackTrace(); + logger.error("Error appending URL to spreadsheet: {}", url, e); } } @@ -96,7 +99,7 @@ public static void appendDuplicateComment(String date, String timestamp, String .setIncludeValuesInResponse(true) .execute(); } catch (IOException e) { - e.printStackTrace(); + logger.error("Error appending duplicate comment to spreadsheet - Date: {}, URL: {}", date, url, e); } } diff --git a/src/main/java/ca/gc/tbs/Main.java b/src/main/java/ca/gc/tbs/Main.java index 2f8fb54..b09276a 100644 --- a/src/main/java/ca/gc/tbs/Main.java +++ b/src/main/java/ca/gc/tbs/Main.java @@ -123,27 +123,27 @@ public void run(String... args) throws Exception { Airtable airTableKey = new Airtable().configure(this.airtableKey); - System.out.println("---------------------CONNECTING TO AIRTABLE BASES---------------------"); + logger.info("Connecting to Airtable bases"); this.mainBase = airTableKey.base(this.problemAirtableBase); this.healthBase = airTableKey.base(this.healthAirtableBase); this.CRA_Base = airTableKey.base(this.CRA_AirtableBase); this.travelBase = airTableKey.base(this.travelAirtableBase); this.IRCC_Base = airTableKey.base(this.irccAirtableBase); - System.out.println("---------------------REMOVING PERSONAL INFO FROM TTS---------------------"); + logger.info("Removing personal info from TTS"); this.removePersonalInfoExitSurvey(); - System.out.println("---------------------REMOVING PERSONAL INFO FROM COMMENTS---------------------"); + logger.info("Removing personal info from comments"); this.removePersonalInfoProblems(); - System.out.println("---------------------REMOVING JUNK DATA FROM TTS---------------------"); + logger.info("Removing junk data from TTS"); this.removeJunkDataTTS(); - System.out.println("---------------------IMPORTING SPREADSHEETS---------------------"); + logger.info("Importing spreadsheets"); this.importTier1(); this.importTier2(); - System.out.println("---------------------RETRIEVING AIRTABLE VALUES---------------------"); + logger.info("Retrieving Airtable values"); this.getPageTitleIds(mainBase); this.getPageTitleIds(healthBase); this.getPageTitleIds(CRA_Base); @@ -162,13 +162,13 @@ public void run(String... args) throws Exception { this.getURLLinkIds(travelBase); this.getURLLinkIds(IRCC_Base); - System.out.println("---------------------AUTO TAGGING---------------------"); + logger.info("Auto tagging"); this.autoTag(); - System.out.println("---------------------AIRTABLE & SPREADSHEET SYNC---------------------"); + logger.info("Airtable & spreadsheet sync"); this.airTableSpreadsheetSync(); - System.out.println("---------------------MARK AS PROCESSED ---------------------"); + logger.info("Mark as processed"); this.completeProcessing(); } @@ -176,7 +176,7 @@ public void run(String... args) throws Exception { public void removePersonalInfoExitSurvey() { List tList = this.topTaskRepository.findByPersonalInfoProcessed(null); tList.addAll(this.topTaskRepository.findByPersonalInfoProcessed("false")); - System.out.println("Number of tasks to clean: " + tList.size()); + logger.info("Number of tasks to clean: {}", tList.size()); for (TopTaskSurvey task : tList) { try { if (task.getThemeOther() != null) { @@ -198,18 +198,18 @@ public void removePersonalInfoExitSurvey() { task.setPersonalInfoProcessed("true"); this.topTaskRepository.save(task); } catch (Exception e) { - System.out.println("Could not process task: " + task.getId() + " : " + task.getDateTime() + " : " + task.getTaskOther() + " : " - + task.getTaskImproveComment() + " : " + task.getTaskWhyNotComment()); + logger.error("Could not process task: {} - DateTime: {} - TaskOther: {} - ImproveComment: {} - WhyNotComment: {}", + task.getId(), task.getDateTime(), task.getTaskOther(), task.getTaskImproveComment(), task.getTaskWhyNotComment(), e); } } - System.out.println("Private info removed..."); + logger.info("Private info removed"); } // Scrubs comments that have not been cleaned using the cleaning script public void removePersonalInfoProblems() { List pList = this.problemRepository.findByPersonalInfoProcessed(null); pList.addAll(this.problemRepository.findByPersonalInfoProcessed("false")); - System.out.println("Number of Problems to clean: " + pList.size()); + logger.info("Number of Problems to clean: {}", pList.size()); for (Problem problem : pList) { try { String details = this.contentService.cleanContent(problem.getProblemDetails()); @@ -217,39 +217,39 @@ public void removePersonalInfoProblems() { problem.setPersonalInfoProcessed("true"); this.problemRepository.save(problem); } catch (Exception e) { - System.out.println("Could not process problem:" + problem.getId() + ":" + problem.getProblemDetails()); + logger.error("Could not process problem: {} - Details: {}", problem.getId(), problem.getProblemDetails(), e); } } - System.out.println("Private info removed..."); + logger.info("Private info removed"); } // Removes white space values from comments to improve the filter for write in comments on the Feedback-Viewer. public void removeJunkDataTTS() { List tList = this.topTaskRepository.findByProcessed("false"); - System.out.println("Amount of non processed entries (TTS) : " + tList.size()); + logger.info("Amount of non processed entries (TTS): {}", tList.size()); for (TopTaskSurvey task : tList) { if (task == null || containsHTML(task.getTaskOther()) || containsHTML(task.getThemeOther()) || containsHTML(task.getTaskImproveComment()) || containsHTML(task.getTaskWhyNotComment())) { assert task != null; - System.out.println("Deleting task: " + task.getId() + " , Task was null or had a hyperlink, taskOther: " + task.getTaskOther() - + ", themeOther: " + task.getThemeOther() + ", taskWhyNotComment: " + task.getTaskWhyNotComment() + ", taskImproveComment: " + task.getTaskImproveComment()); + logger.warn("Deleting task: {} - Task was null or had a hyperlink - TaskOther: {}, ThemeOther: {}, WhyNotComment: {}, ImproveComment: {}", + task.getId(), task.getTaskOther(), task.getThemeOther(), task.getTaskWhyNotComment(), task.getTaskImproveComment()); this.topTaskRepository.delete(task); continue; } if (task.getTaskOther() != null && task.getTaskOther().trim().equals("") && task.getTaskOther().length() != 0) { - System.out.println("found junk data in taskOther."); + logger.debug("Found junk data in taskOther"); task.setTaskOther(""); } if (task.getThemeOther() != null && task.getThemeOther().trim().equals("") && task.getThemeOther().length() != 0) { - System.out.println("found junk data in themeOther."); + logger.debug("Found junk data in themeOther"); task.setThemeOther(""); } if (task.getTaskImproveComment() != null && task.getTaskImproveComment().trim().equals("") && task.getTaskImproveComment().length() != 0) { - System.out.println("found junk data in taskImproveComment."); + logger.debug("Found junk data in taskImproveComment"); task.setTaskImproveComment(""); } if (task.getTaskWhyNotComment() != null && task.getTaskWhyNotComment().trim().equals("") && task.getTaskWhyNotComment().length() != 0) { - System.out.println("found junk data in taskWhyNotComment."); + logger.debug("Found junk data in taskWhyNotComment"); task.setTaskWhyNotComment(""); } task.setProcessed("true"); @@ -272,8 +272,7 @@ public void importTier1() throws Exception { String[] modelBase = {record.get("MODEL"), record.get("BASE").toLowerCase()}; tier1Spreadsheet.put(record.get("URL").toLowerCase(), modelBase); } catch (Exception e) { - System.out.println(e.getMessage()); - e.printStackTrace(); + logger.error("Error importing Tier 1 spreadsheet record", e); } } } finally { @@ -294,8 +293,7 @@ public void importTier2() throws Exception { try { tier2Spreadsheet.add(record.get("URL").toLowerCase()); } catch (Exception e) { - System.out.println(e.getMessage()); - e.printStackTrace(); + logger.error("Error importing Tier 2 spreadsheet record", e); } } } finally { @@ -315,7 +313,7 @@ private void getPageTitleIds(Base base) throws Exception { try { m.put(entry.getPageTitle().trim().toUpperCase(), entry.getId()); } catch (Exception e) { - System.out.println(e.getMessage() + " Could not add Page Title ID: " + entry.getPageTitle() + " TO page title ID map."); + logger.error("Could not add Page Title ID: {} to page title ID map", entry.getPageTitle(), e); } } }); @@ -332,7 +330,7 @@ private void getURLLinkIds(Base base) throws Exception { try { m.put(entry.getURLlink().trim().toUpperCase(), entry.getId()); } catch (Exception e) { - System.out.println(e.getMessage() + " Could not add URL Link ID: " + entry.getURLlink() + " TO url link ID map."); + logger.error("Could not add URL Link ID: {} to url link ID map", entry.getURLlink(), e); } } }); @@ -349,7 +347,7 @@ private void getMLTagIds(Base base) throws Exception { try { m.put(entry.getTag().trim().toUpperCase(), entry.getId()); } catch (Exception e) { - System.out.println(e.getMessage() + " Could not add ML Tag ID: " + entry.getTag() + " TO ML tag ID map."); + logger.error("Could not add ML Tag ID: {} to ML tag ID map", entry.getTag(), e); } } }); @@ -359,7 +357,7 @@ private void getMLTagIds(Base base) throws Exception { public void autoTag() { List pList = this.problemRepository.findByAutoTagProcessed("false"); pList.addAll(this.problemRepository.findByAutoTagProcessed(null)); - System.out.println("Amount of entries to be tagged: " + pList.size()); + logger.info("Amount of entries to be tagged: {}", pList.size()); for (Problem problem : pList) { String model = ""; try { @@ -375,7 +373,7 @@ public void autoTag() { if (tier1Spreadsheet.containsKey(URL)) { model = tier1Spreadsheet.get(URL)[0]; - System.out.println("model: " + model); + logger.debug("Model: {}", model); } // Then feed through the suggestion script (Feedback-Classification-RetroAction // Repository) if model exists @@ -386,13 +384,13 @@ public void autoTag() { "https://suggestion.tbs.alpha.canada.ca/suggestCategory?lang=" + lang + "&text=" + text + "§ion=" + model) .maxBodySize(0).get(); String tags = doc.select("body").html(); - System.out.println("Text:" + text + " : " + tags); + logger.debug("Text: {} - Tags: {}", text, tags); String[] splitTags = tags.split(","); problem.getTags().addAll(Arrays.asList(splitTags)); } } } catch (Exception e) { - System.out.println("Could not auto tag because:" + e.getMessage() + " model:" + model); + logger.error("Could not auto tag - Model: {}", model, e); } problem.setAutoTagProcessed("true"); this.problemRepository.save(problem); @@ -404,8 +402,7 @@ private void writeDuplicateToFile(String comment, String url, String date, Strin try { GoogleSheetsAPI.appendDuplicateComment(date, timeStamp, url, comment); } catch (Exception e) { - System.out.println("Error writing duplicate to spreadsheet: " + e.getMessage()); - e.printStackTrace(); + logger.error("Error writing duplicate to spreadsheet", e); } } @@ -424,14 +421,14 @@ public void airTableSpreadsheetSync() { List pList = this.problemRepository.findByAirTableSync(null); pList.addAll(this.problemRepository.findByAirTableSync("false")); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - System.out.println("Connected to MongoDB & Airtable"); - System.out.println("Found " + pList.size() + " records to be processed on Date: " + LocalDate.now().format(formatter)); + logger.info("Connected to MongoDB & Airtable"); + logger.info("Found {} records to be processed on Date: {}", pList.size(), LocalDate.now().format(formatter)); int i = 1; int maxToSync = 150; for (Problem problem : pList) { try { if (i >= maxToSync) { - System.out.println("Sync only " + maxToSync + " records at a time..."); + logger.info("Sync only {} records at a time", maxToSync); break; } // In airTableSpreadsheetSync(), right after getting the pList: @@ -440,7 +437,7 @@ public void airTableSpreadsheetSync() { String normalizedComment = problem.getProblemDetails().trim().toLowerCase(); if (seenComments.contains(normalizedComment)) { - System.out.println("Skipping duplicate comment: " + problem.getProblemDetails()); + logger.info("Skipping duplicate comment: {}", problem.getProblemDetails()); writeDuplicateToFile(problem.getProblemDetails(), problem.getUrl(), problem.getProblemDate() != null ? problem.getProblemDate() : LocalDate.now().format(formatter), problem.getTimeStamp()); problem.setAirTableSync("true"); // Mark as processed @@ -454,7 +451,7 @@ public void airTableSpreadsheetSync() { boolean junkComment = problem.getProblemDetails().trim().equals("") || containsHTML(problem.getProblemDetails()) || problem.getUrl().equals("https://www.canada.ca/") || problem.getProblemDetails().length() > 301; if (junkComment) { - System.out.println("Empty comment, deleting entry..."); + logger.info("Empty comment, deleting entry"); problemRepository.delete(problem); continue; } @@ -466,12 +463,12 @@ public void airTableSpreadsheetSync() { tier2Spreadsheet.add(problem.getUrl()); GoogleSheetsAPI.appendURL(problem.getUrl()); problem.setAirTableSync("true"); - System.out.println("Processed record : " + i + " url not in spreadsheet " + problem.getUrl() + ", Added url to Tier 2 Spreadsheet."); + logger.info("Processed record: {} - URL not in spreadsheet: {}, added to Tier 2 Spreadsheet", i, problem.getUrl()); } // if tier 2 spreadsheet contains URL set AirTable sync to true // TIER 2 entries end here. else if (tier2Spreadsheet.contains(problem.getUrl())) { problem.setAirTableSync("true"); - System.out.println("Processed record : " + i + " (Tier 2) EXISTS ALREADY"); + logger.debug("Processed record: {} (Tier 2) already exists", i); } else { AirTableProblemEnhanced airProblem = new AirTableProblemEnhanced(); String base = tier1Spreadsheet.get(problem.getUrl())[1]; @@ -489,11 +486,11 @@ else if (tier2Spreadsheet.contains(problem.getUrl())) { for (String tag : problem.getTags()) { String trimmedTag = tag.trim().toUpperCase(); if (trimmedTag.isEmpty()) { - System.out.println("Empty tag encountered."); + logger.warn("Empty tag encountered"); } else if (selectMapMLTagIds(selectBase(base)).containsKey(trimmedTag)) { airProblem.getTags().add(selectMapMLTagIds(selectBase(base)).get(trimmedTag)); } else { - System.out.println("Missing tag id for:" + tag); + logger.warn("Missing tag id for: {}", tag); } } airProblem.setUTM(UTM_values); @@ -517,12 +514,12 @@ else if (tier2Spreadsheet.contains(problem.getUrl())) { break; } problem.setAirTableSync("true"); - System.out.println("Processed record : " + i + " (Tier 1) Base: " + base.toUpperCase()); + logger.info("Processed record: {} (Tier 1) Base: {}", i, base.toUpperCase()); } i++; this.problemRepository.save(problem); } catch (Exception e) { - System.out.println(e.getMessage() + " Could not sync record : " + problem.getId() + " URL:" + problem.getUrl()); + logger.error("Could not sync record: {} - URL: {}", problem.getId(), problem.getUrl(), e); } } } @@ -540,10 +537,10 @@ public void completeProcessing() { this.problemRepository.save(problem); } } catch (Exception e) { - System.out.println("Could not mark completed because:" + e.getMessage() + ": ID:" + problem.getId()); + logger.error("Could not mark completed - ID: {}", problem.getId(), e); } } - System.out.println("Finished processing..."); + logger.info("Finished processing"); exit(0); } @@ -583,7 +580,7 @@ public String removeQueryAndFragment(String url) { builder.setFragment(null); return builder.build().toString(); } catch (Exception e) { - e.printStackTrace(); + logger.error("Error removing query and fragment from URL: {}", url, e); return url; // Return the original URL if there's an exception } } From 3f75b7c97f97726588b5eaee86a0925e690689f8 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh <32944558+HamzaAburaneh@users.noreply.github.com> Date: Mon, 2 Feb 2026 13:16:11 -0500 Subject: [PATCH 04/17] refactor: modernize Google Sheets API authentication --- .gitignore | 4 + pom.xml | 9 +- scripts/decrypt.sh | 4 +- src/main/java/ca/gc/tbs/GoogleSheetsAPI.java | 227 +++++++++++++------ src/main/resources/service-account.json.gpg | Bin 0 -> 1734 bytes src/main/resources/service-account.p12.gpg | Bin 2561 -> 0 bytes 6 files changed, 175 insertions(+), 69 deletions(-) create mode 100644 src/main/resources/service-account.json.gpg delete mode 100644 src/main/resources/service-account.p12.gpg diff --git a/.gitignore b/.gitignore index 28f2b49..8af135f 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,10 @@ hs_err_pid* **/StoredCredential .DS_Store +# Google Service Account Keys (plaintext - encrypted versions OK) +**/service-account.json +**/service-account.p12 + pagefeedback-cj.iml feedback-cj.iml Feedback Tool.iml diff --git a/pom.xml b/pom.xml index 684d011..f149b0c 100644 --- a/pom.xml +++ b/pom.xml @@ -92,10 +92,17 @@ PageSuccess 0.0.1-SNAPSHOT + com.google.apis google-api-services-sheets - v4-rev20210629-1.32.1 + v4-rev20240826-2.0.0 + + + + com.google.auth + google-auth-library-oauth2-http + 1.24.1 org.springframework.data diff --git a/scripts/decrypt.sh b/scripts/decrypt.sh index 7f8a078..18756b9 100755 --- a/scripts/decrypt.sh +++ b/scripts/decrypt.sh @@ -3,8 +3,10 @@ export GPG_TTY=$(tty) ls ./src/main/resources +# Decrypt application properties gpg --quiet --batch --yes --passphrase="$APPLICATION_PROPERTIES_PASSPHRASE" --output ./src/main/resources/application.properties --decrypt ./src/main/resources/application.properties.gpg -gpg --quiet --batch --yes --passphrase="$APPLICATION_PROPERTIES_PASSPHRASE" --output ./src/main/resources/service-account.p12 --decrypt ./src/main/resources/service-account.p12.gpg +# Decrypt Google service account JSON key (modern format) +gpg --quiet --batch --yes --passphrase="$APPLICATION_PROPERTIES_PASSPHRASE" --output ./src/main/resources/service-account.json --decrypt ./src/main/resources/service-account.json.gpg ls ./src/main/resources \ No newline at end of file diff --git a/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java b/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java index a5adad9..a4650ed 100644 --- a/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java +++ b/src/main/java/ca/gc/tbs/GoogleSheetsAPI.java @@ -1,6 +1,5 @@ package ca.gc.tbs; -import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; @@ -9,101 +8,195 @@ import com.google.api.services.sheets.v4.SheetsScopes; import com.google.api.services.sheets.v4.model.AppendValuesResponse; import com.google.api.services.sheets.v4.model.ValueRange; +import com.google.auth.http.HttpCredentialsAdapter; +import com.google.auth.oauth2.GoogleCredentials; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.io.InputStream; import java.security.GeneralSecurityException; -import java.security.KeyStore; -import java.security.PrivateKey; import java.util.Arrays; import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeUnit; +/** + * Google Sheets API client for appending feedback data. + * Uses modern GoogleCredentials with JSON key file and implements credential caching, + * retry logic, and thread-safe operations. + */ public class GoogleSheetsAPI { private static final Logger logger = LoggerFactory.getLogger(GoogleSheetsAPI.class); - static final String spreadsheetId = "1B16qEbfp7SFCfIsZ8fcj7DneCy1WkR0GPh4t9L9NRSg"; - static final String duplicateCommentsSpreadsheetId = "1cR2mih5sBwl3wUjniwdyVA0xZcqV2Wl9yhghJfMG5oM"; // Template ID to - // be replaced - static final String range = "A1:A50000"; - private static final String APPLICATION_NAME = "My Google Sheets Application"; + // TODO: Externalize these to application.properties + static final String SPREADSHEET_ID = "1B16qEbfp7SFCfIsZ8fcj7DneCy1WkR0GPh4t9L9NRSg"; + static final String DUPLICATE_COMMENTS_SPREADSHEET_ID = "1cR2mih5sBwl3wUjniwdyVA0xZcqV2Wl9yhghJfMG5oM"; + static final String URL_RANGE = "A1:A50000"; + static final String DUPLICATE_RANGE = "A1:D50000"; + + private static final String APPLICATION_NAME = "Page Feedback CronJob"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); - private static final String SERVICE_ACCOUNT_EMAIL = "cronjob@feedback-cj.iam.gserviceaccount.com"; + private static final String SERVICE_ACCOUNT_KEY_FILE = "service-account.json"; + + // Retry configuration + private static final int MAX_RETRY_ATTEMPTS = 3; + private static final long INITIAL_RETRY_DELAY_MS = 1000; + + // Cached Sheets service instance (thread-safe lazy initialization) + private static volatile Sheets sheetsService; + private static final Object lock = new Object(); + /** - * Global instance of the HTTP transport. + * Gets or creates a cached Sheets service instance. + * Thread-safe singleton pattern with double-checked locking. + * + * @return Sheets service instance + * @throws IOException if service account key file cannot be read + * @throws GeneralSecurityException if HTTP transport cannot be created */ - private static NetHttpTransport HTTP_TRANSPORT; + private static Sheets getSheetsService() throws IOException, GeneralSecurityException { + if (sheetsService == null) { + synchronized (lock) { + if (sheetsService == null) { + logger.debug("Initializing Google Sheets service"); + sheetsService = createSheetsService(); + } + } + } + return sheetsService; + } - public static void appendURL(String url) throws GeneralSecurityException, IOException { - KeyStore keystore = KeyStore.getInstance("PKCS12"); - keystore.load(GoogleSheetsAPI.class.getClassLoader().getResourceAsStream("service-account.p12"), - "notasecret".toCharArray()); - PrivateKey pk = (PrivateKey) keystore.getKey("privatekey", "notasecret".toCharArray()); + /** + * Creates a new Sheets service instance with modern GoogleCredentials. + * + * @return configured Sheets service + * @throws IOException if service account key file cannot be read + * @throws GeneralSecurityException if HTTP transport cannot be created + */ + private static Sheets createSheetsService() throws IOException, GeneralSecurityException { + NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); - final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); + GoogleCredentials credentials; + try (InputStream keyStream = GoogleSheetsAPI.class.getClassLoader() + .getResourceAsStream(SERVICE_ACCOUNT_KEY_FILE)) { - GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) - .setJsonFactory(JSON_FACTORY) - .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) - .setServiceAccountScopes(Collections.singleton(SheetsScopes.SPREADSHEETS)) - .setServiceAccountPrivateKey(pk) - .build(); + if (keyStream == null) { + throw new IOException("Service account key file not found: " + SERVICE_ACCOUNT_KEY_FILE); + } + + credentials = GoogleCredentials.fromStream(keyStream) + .createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS)); + } - Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) + return new Sheets.Builder(httpTransport, JSON_FACTORY, new HttpCredentialsAdapter(credentials)) .setApplicationName(APPLICATION_NAME) .build(); + } - ValueRange appendBody = new ValueRange() - .setValues(Arrays.asList( - Arrays.asList(url))); - try { - AppendValuesResponse appendResult = service.spreadsheets().values() - .append(spreadsheetId, range, appendBody) - .setValueInputOption("USER_ENTERED") - .setInsertDataOption("INSERT_ROWS") - .setIncludeValuesInResponse(true) - .execute(); - } catch (IOException e) { - logger.error("Error appending URL to spreadsheet: {}", url, e); - } + /** + * Appends a URL to the main feedback spreadsheet with retry logic. + * + * @param url the URL to append + * @throws IOException if all retry attempts fail + * @throws GeneralSecurityException if unable to create HTTP transport + */ + public static void appendURL(String url) throws IOException, GeneralSecurityException { + logger.debug("Appending URL to spreadsheet: {}", url); + appendValues(SPREADSHEET_ID, URL_RANGE, Collections.singletonList(url)); } + /** + * Appends duplicate comment data to the duplicate comments spreadsheet with retry logic. + * + * @param date the date of the comment + * @param timestamp the timestamp of the comment + * @param url the URL associated with the comment + * @param comment the comment text + * @throws IOException if all retry attempts fail + * @throws GeneralSecurityException if unable to create HTTP transport + */ public static void appendDuplicateComment(String date, String timestamp, String url, String comment) - throws GeneralSecurityException, IOException { - KeyStore keystore = KeyStore.getInstance("PKCS12"); - keystore.load(GoogleSheetsAPI.class.getClassLoader().getResourceAsStream("service-account.p12"), - "notasecret".toCharArray()); - PrivateKey pk = (PrivateKey) keystore.getKey("privatekey", "notasecret".toCharArray()); - - final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); - - GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) - .setJsonFactory(JSON_FACTORY) - .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) - .setServiceAccountScopes(Collections.singleton(SheetsScopes.SPREADSHEETS)) - .setServiceAccountPrivateKey(pk) - .build(); + throws IOException, GeneralSecurityException { + logger.debug("Appending duplicate comment - Date: {}, URL: {}", date, url); + appendValues(DUPLICATE_COMMENTS_SPREADSHEET_ID, DUPLICATE_RANGE, + Arrays.asList(date, timestamp, url, comment)); + } - Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) - .setApplicationName(APPLICATION_NAME) - .build(); + /** + * Generic method to append values to a spreadsheet with exponential backoff retry. + * + * @param spreadsheetId the ID of the target spreadsheet + * @param range the A1 notation range + * @param values the values to append + * @throws IOException if all retry attempts fail + * @throws GeneralSecurityException if unable to create HTTP transport + */ + private static void appendValues(String spreadsheetId, String range, List values) + throws IOException, GeneralSecurityException { ValueRange appendBody = new ValueRange() - .setValues(Arrays.asList( - Arrays.asList(date, timestamp, url, comment))); - try { - AppendValuesResponse appendResult = service.spreadsheets().values() - .append(duplicateCommentsSpreadsheetId, "A1:D50000", appendBody) - .setValueInputOption("USER_ENTERED") - .setInsertDataOption("INSERT_ROWS") - .setIncludeValuesInResponse(true) - .execute(); - } catch (IOException e) { - logger.error("Error appending duplicate comment to spreadsheet - Date: {}, URL: {}", date, url, e); + .setValues(Collections.singletonList(values)); + + IOException lastException = null; + + for (int attempt = 1; attempt <= MAX_RETRY_ATTEMPTS; attempt++) { + try { + Sheets service = getSheetsService(); + AppendValuesResponse response = service.spreadsheets().values() + .append(spreadsheetId, range, appendBody) + .setValueInputOption("USER_ENTERED") + .setInsertDataOption("INSERT_ROWS") + .setIncludeValuesInResponse(false) + .execute(); + + logger.debug("Successfully appended values to spreadsheet {} on attempt {}", + spreadsheetId, attempt); + return; // Success + + } catch (IOException e) { + lastException = e; + logger.warn("Attempt {}/{} failed to append to spreadsheet {}: {}", + attempt, MAX_RETRY_ATTEMPTS, spreadsheetId, e.getMessage()); + + if (attempt < MAX_RETRY_ATTEMPTS) { + long delayMs = INITIAL_RETRY_DELAY_MS * (long) Math.pow(2, attempt - 1); + logger.debug("Retrying in {} ms", delayMs); + try { + TimeUnit.MILLISECONDS.sleep(delayMs); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + throw new IOException("Retry interrupted", ie); + } + } + } + } + + // All retries failed + logger.error("Failed to append values to spreadsheet {} after {} attempts", + spreadsheetId, MAX_RETRY_ATTEMPTS, lastException); + throw lastException; + } + + /** + * Clears the cached Sheets service. Useful for testing or forcing re-initialization. + */ + static void clearCache() { + synchronized (lock) { + sheetsService = null; + logger.debug("Cleared cached Sheets service"); } } - public static void main(String[] args) throws GeneralSecurityException, IOException { - appendURL("test"); + /** + * Main method for testing. + */ + public static void main(String[] args) { + try { + appendURL("test-url"); + logger.info("Test append successful"); + } catch (Exception e) { + logger.error("Test append failed", e); + } } } diff --git a/src/main/resources/service-account.json.gpg b/src/main/resources/service-account.json.gpg new file mode 100644 index 0000000000000000000000000000000000000000..4040b55e7633c5b7527e465691c1181f43dd0de2 GIT binary patch literal 1734 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 Date: Mon, 2 Feb 2026 13:28:43 -0500 Subject: [PATCH 05/17] feat: remove ml tags --- src/main/java/ca/gc/tbs/AirTableMLTag.java | 34 ------- src/main/java/ca/gc/tbs/Main.java | 113 +-------------------- 2 files changed, 5 insertions(+), 142 deletions(-) delete mode 100644 src/main/java/ca/gc/tbs/AirTableMLTag.java diff --git a/src/main/java/ca/gc/tbs/AirTableMLTag.java b/src/main/java/ca/gc/tbs/AirTableMLTag.java deleted file mode 100644 index 5e58ef8..0000000 --- a/src/main/java/ca/gc/tbs/AirTableMLTag.java +++ /dev/null @@ -1,34 +0,0 @@ -package ca.gc.tbs; - -import com.google.gson.annotations.SerializedName; - -public class AirTableMLTag { - private String id; - - @SerializedName("ML tags") - private String tag; - - public AirTableMLTag(String tag) { - this.tag = tag; - } - - public AirTableMLTag() { - - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getTag() { - return tag; - } - - public void setTag(String tag) { - this.tag = tag; - } -} diff --git a/src/main/java/ca/gc/tbs/Main.java b/src/main/java/ca/gc/tbs/Main.java index b09276a..23865fc 100644 --- a/src/main/java/ca/gc/tbs/Main.java +++ b/src/main/java/ca/gc/tbs/Main.java @@ -13,7 +13,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.client.utils.URIBuilder; import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +30,6 @@ import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; -import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -51,23 +49,18 @@ public class Main implements CommandLineRunner { private final HashMap mainPageTitleIds = new HashMap<>(); private final HashMap mainUrlLinkIds = new HashMap<>(); - private final HashMap mainMlTagIds = new HashMap<>(); private final HashMap healthPageTitleIds = new HashMap<>(); private final HashMap healthUrlLinkIds = new HashMap<>(); - private final HashMap healthMlTagIds = new HashMap<>(); private final HashMap CRA_PageTitleIds = new HashMap<>(); private final HashMap CRA_UrlLinkIds = new HashMap<>(); - private final HashMap CRA_MlTagIds = new HashMap<>(); private final HashMap travelPageTitleIds = new HashMap<>(); private final HashMap travelUrlLinkIds = new HashMap<>(); - private final HashMap travelMlTagIds = new HashMap<>(); private final HashMap IRCC_PageTitleIds = new HashMap<>(); private final HashMap IRCC_UrlLinkIds = new HashMap<>(); - private final HashMap IRCC_MlTagIds = new HashMap<>(); @Autowired private ContentService contentService; @@ -83,8 +76,6 @@ public class Main implements CommandLineRunner { private String problemAirtableTab; @Value("${airtable.pageTitleLookup}") private String airtablePageTitleLookup; - @Value("${airtable.mlTags}") - private String airtableMLTags; @Value("${airtable.URL_link}") private String airtableURLLink; @Value("${airtable.base}") @@ -150,21 +141,12 @@ public void run(String... args) throws Exception { this.getPageTitleIds(travelBase); this.getPageTitleIds(IRCC_Base); - this.getMLTagIds(mainBase); - this.getMLTagIds(healthBase); - this.getMLTagIds(CRA_Base); - this.getMLTagIds(travelBase); - this.getMLTagIds(IRCC_Base); - this.getURLLinkIds(mainBase); this.getURLLinkIds(healthBase); this.getURLLinkIds(CRA_Base); this.getURLLinkIds(travelBase); this.getURLLinkIds(IRCC_Base); - logger.info("Auto tagging"); - this.autoTag(); - logger.info("Airtable & spreadsheet sync"); this.airTableSpreadsheetSync(); @@ -336,68 +318,7 @@ private void getURLLinkIds(Base base) throws Exception { }); } - // Retrieves ML Tags and adds them to a hashmap for their respective AirTable base. - private void getMLTagIds(Base base) throws Exception { - @SuppressWarnings("unchecked") - Table tagsTable = base.table(airtableMLTags, AirTableMLTag.class); - List tags = tagsTable.select(); - HashMap m = selectMapMLTagIds(base); - tags.forEach(entry -> { - if (entry.getTag() != null) { - try { - m.put(entry.getTag().trim().toUpperCase(), entry.getId()); - } catch (Exception e) { - logger.error("Could not add ML Tag ID: {} to ML tag ID map", entry.getTag(), e); - } - } - }); - } - - // Assigns tags to non-processed problems. - public void autoTag() { - List pList = this.problemRepository.findByAutoTagProcessed("false"); - pList.addAll(this.problemRepository.findByAutoTagProcessed(null)); - logger.info("Amount of entries to be tagged: {}", pList.size()); - for (Problem problem : pList) { - String model = ""; - try { - // If problem has comment, assign language & model. - if (!problem.getProblemDetails().trim().equals("")) { - String lang = "en"; - if (problem.getLanguage().equalsIgnoreCase("fr")) { - lang = "fr"; - } - - String text = URLEncoder.encode(problem.getProblemDetails(), StandardCharsets.UTF_8.name()); - String URL = removeQueryAndFragment(problem.getUrl()).toLowerCase(); - - if (tier1Spreadsheet.containsKey(URL)) { - model = tier1Spreadsheet.get(URL)[0]; - logger.debug("Model: {}", model); - } - // Then feed through the suggestion script (Feedback-Classification-RetroAction - // Repository) if model exists - // and assign tags if applicable. - if (!model.equals("")) { - Document doc = Jsoup - .connect( - "https://suggestion.tbs.alpha.canada.ca/suggestCategory?lang=" + lang + "&text=" + text + "§ion=" + model) - .maxBodySize(0).get(); - String tags = doc.select("body").html(); - logger.debug("Text: {} - Tags: {}", text, tags); - String[] splitTags = tags.split(","); - problem.getTags().addAll(Arrays.asList(splitTags)); - } - } - } catch (Exception e) { - logger.error("Could not auto tag - Model: {}", model, e); - } - problem.setAutoTagProcessed("true"); - this.problemRepository.save(problem); - } - - } - + // Populates entries to the AirTable bases and Tier 2 spreadsheet (inventory). private void writeDuplicateToFile(String comment, String url, String date, String timeStamp) { try { GoogleSheetsAPI.appendDuplicateComment(date, timeStamp, url, comment); @@ -447,8 +368,8 @@ public void airTableSpreadsheetSync() { seenComments.add(normalizedComment); - boolean problemIsProcessed = problem.getPersonalInfoProcessed().equals("true") && problem.getAutoTagProcessed().equals("true"); - boolean junkComment = problem.getProblemDetails().trim().equals("") || containsHTML(problem.getProblemDetails()) + boolean problemIsProcessed = "true".equals(problem.getPersonalInfoProcessed()); + boolean junkComment = problem.getProblemDetails().trim().isEmpty() || containsHTML(problem.getProblemDetails()) || problem.getUrl().equals("https://www.canada.ca/") || problem.getProblemDetails().length() > 301; if (junkComment) { logger.info("Empty comment, deleting entry"); @@ -483,16 +404,6 @@ else if (tier2Spreadsheet.contains(problem.getUrl())) { } airProblem.getPageTitleIds().add(selectMapPageTitleIds(selectBase(base)).get(problem.getTitle().trim().toUpperCase())); - for (String tag : problem.getTags()) { - String trimmedTag = tag.trim().toUpperCase(); - if (trimmedTag.isEmpty()) { - logger.warn("Empty tag encountered"); - } else if (selectMapMLTagIds(selectBase(base)).containsKey(trimmedTag)) { - airProblem.getTags().add(selectMapMLTagIds(selectBase(base)).get(trimmedTag)); - } else { - logger.warn("Missing tag id for: {}", tag); - } - } airProblem.setUTM(UTM_values); setAirProblemAttributes(airProblem, problem); @@ -530,8 +441,8 @@ public void completeProcessing() { pList.addAll(this.problemRepository.findByProcessed(null)); for (Problem problem : pList) { try { - if (problem.getPersonalInfoProcessed().equals("true") && problem.getAutoTagProcessed().equals("true") - && problem.getAirTableSync().equals("true") && (problem.getProcessed() == null || problem.getProcessed().equals("false"))) { + if ("true".equals(problem.getPersonalInfoProcessed()) + && "true".equals(problem.getAirTableSync()) && (problem.getProcessed() == null || "false".equals(problem.getProcessed()))) { problem.setProcessedDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); problem.setProcessed("true"); this.problemRepository.save(problem); @@ -674,18 +585,4 @@ public HashMap selectMapUrlLinkIds(Base base) { return null; } - public HashMap selectMapMLTagIds(Base base) { - if (base.equals(mainBase)) - return this.mainMlTagIds; - if (base.equals(healthBase)) - return this.healthMlTagIds; - if (base.equals(CRA_Base)) - return this.CRA_MlTagIds; - if (base.equals(travelBase)) - return this.travelMlTagIds; - if (base.equals(IRCC_Base)) - return this.IRCC_MlTagIds; - return null; - } - } From 8dfdd1c1a0b274d66715259147f72971c9f7a77a Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Mon, 2 Feb 2026 13:42:56 -0500 Subject: [PATCH 06/17] refactor: remove unused Airtable lookup tables and ML tags configuration --- src/main/java/ca/gc/tbs/Main.java | 118 ------------------ src/main/resources/application.properties.gpg | Bin 732 -> 682 bytes 2 files changed, 118 deletions(-) diff --git a/src/main/java/ca/gc/tbs/Main.java b/src/main/java/ca/gc/tbs/Main.java index 23865fc..8c85ed7 100644 --- a/src/main/java/ca/gc/tbs/Main.java +++ b/src/main/java/ca/gc/tbs/Main.java @@ -46,21 +46,6 @@ public class Main implements CommandLineRunner { // Tier 2 entries do not populate to AirTable. private final Set tier2Spreadsheet = new HashSet<>(); private final HashMap tier1Spreadsheet = new HashMap<>(); - - private final HashMap mainPageTitleIds = new HashMap<>(); - private final HashMap mainUrlLinkIds = new HashMap<>(); - - private final HashMap healthPageTitleIds = new HashMap<>(); - private final HashMap healthUrlLinkIds = new HashMap<>(); - - private final HashMap CRA_PageTitleIds = new HashMap<>(); - private final HashMap CRA_UrlLinkIds = new HashMap<>(); - - private final HashMap travelPageTitleIds = new HashMap<>(); - private final HashMap travelUrlLinkIds = new HashMap<>(); - - private final HashMap IRCC_PageTitleIds = new HashMap<>(); - private final HashMap IRCC_UrlLinkIds = new HashMap<>(); @Autowired private ContentService contentService; @@ -74,10 +59,6 @@ public class Main implements CommandLineRunner { private String airtableKey; @Value("${airtable.tab}") private String problemAirtableTab; - @Value("${airtable.pageTitleLookup}") - private String airtablePageTitleLookup; - @Value("${airtable.URL_link}") - private String airtableURLLink; @Value("${airtable.base}") private String problemAirtableBase; @@ -134,19 +115,6 @@ public void run(String... args) throws Exception { this.importTier1(); this.importTier2(); - logger.info("Retrieving Airtable values"); - this.getPageTitleIds(mainBase); - this.getPageTitleIds(healthBase); - this.getPageTitleIds(CRA_Base); - this.getPageTitleIds(travelBase); - this.getPageTitleIds(IRCC_Base); - - this.getURLLinkIds(mainBase); - this.getURLLinkIds(healthBase); - this.getURLLinkIds(CRA_Base); - this.getURLLinkIds(travelBase); - this.getURLLinkIds(IRCC_Base); - logger.info("Airtable & spreadsheet sync"); this.airTableSpreadsheetSync(); @@ -284,39 +252,7 @@ public void importTier2() throws Exception { } - // Retrieves Page feedback statistics page IDs and adds them to a hashmap for their respective AirTable base. - private void getPageTitleIds(Base base) throws Exception { - @SuppressWarnings("unchecked") - Table statsTable = base.table(this.airtablePageTitleLookup, AirTableStat.class); - List stats = statsTable.select(); - HashMap m = selectMapPageTitleIds(base); - stats.forEach(entry -> { - if (entry.getPageTitle() != null) { - try { - m.put(entry.getPageTitle().trim().toUpperCase(), entry.getId()); - } catch (Exception e) { - logger.error("Could not add Page Title ID: {} to page title ID map", entry.getPageTitle(), e); - } - } - }); - } - // Retrieves Page groups by URL and adds them to a hashmap for their respective AirTable base. - private void getURLLinkIds(Base base) throws Exception { - @SuppressWarnings("unchecked") - Table urlLinkTable = base.table(this.airtableURLLink, AirTableURLLink.class); - List urlLinks = urlLinkTable.select(); - HashMap m = selectMapUrlLinkIds(base); - urlLinks.forEach(entry -> { - if (entry.getURLlink() != null) { - try { - m.put(entry.getURLlink().trim().toUpperCase(), entry.getId()); - } catch (Exception e) { - logger.error("Could not add URL Link ID: {} to url link ID map", entry.getURLlink(), e); - } - } - }); - } // Populates entries to the AirTable bases and Tier 2 spreadsheet (inventory). private void writeDuplicateToFile(String comment, String url, String date, String timeStamp) { @@ -394,16 +330,6 @@ else if (tier2Spreadsheet.contains(problem.getUrl())) { AirTableProblemEnhanced airProblem = new AirTableProblemEnhanced(); String base = tier1Spreadsheet.get(problem.getUrl())[1]; - if (!selectMapUrlLinkIds(selectBase(base)).containsKey(problem.getUrl().trim().toUpperCase())) { - this.createUrlLinkEntry(problem.getUrl(), selectBase(base), airtableURLLink); - } - airProblem.getURLLinkIds().add(selectMapUrlLinkIds(selectBase(base)).get(problem.getUrl().trim().toUpperCase())); - - if (!selectMapPageTitleIds(selectBase(base)).containsKey(problem.getTitle().trim().toUpperCase())) { - this.createPageTitleEntry(problem.getTitle(), selectBase(base), airtablePageTitleLookup); - } - airProblem.getPageTitleIds().add(selectMapPageTitleIds(selectBase(base)).get(problem.getTitle().trim().toUpperCase())); - airProblem.setUTM(UTM_values); setAirProblemAttributes(airProblem, problem); @@ -517,25 +443,7 @@ public void setAirProblemAttributes(AirTableProblemEnhanced airProblem, Problem airProblem.setId(null); } - // Creates record for new titles - private void createPageTitleEntry(String title, Base base, String pageTitle) throws Exception { - @SuppressWarnings("unchecked") - Table statsTable = base.table(pageTitle, AirTableStat.class); - AirTableStat stat = new AirTableStat(title.trim()); - stat = statsTable.create(stat); - HashMap basePageTitleMap = selectMapPageTitleIds(base); - basePageTitleMap.put(title.trim().toUpperCase(), stat.getId()); - } - // Creates record for new URLs - private void createUrlLinkEntry(String url, Base base, String pageTitle) throws Exception { - @SuppressWarnings("unchecked") - Table urlLinkTable = base.table(pageTitle, AirTableURLLink.class); - AirTableURLLink urlLink = new AirTableURLLink(url.trim()); - urlLink = urlLinkTable.create(urlLink); - HashMap baseURLMap = selectMapUrlLinkIds(base); - baseURLMap.put(url.trim().toUpperCase(), urlLink.getId()); - } public Base selectBase(String base) { @@ -557,32 +465,6 @@ public Base selectBase(String base) { return null; } - public HashMap selectMapPageTitleIds(Base base) { - if (base.equals(mainBase)) - return this.mainPageTitleIds; - if (base.equals(healthBase)) - return this.healthPageTitleIds; - if (base.equals(CRA_Base)) - return this.CRA_PageTitleIds; - if (base.equals(travelBase)) - return this.travelPageTitleIds; - if (base.equals(IRCC_Base)) - return this.IRCC_PageTitleIds; - return null; - } - public HashMap selectMapUrlLinkIds(Base base) { - if (base.equals(mainBase)) - return this.mainUrlLinkIds; - if (base.equals(healthBase)) - return this.healthUrlLinkIds; - if (base.equals(CRA_Base)) - return this.CRA_UrlLinkIds; - if (base.equals(travelBase)) - return this.travelUrlLinkIds; - if (base.equals(IRCC_Base)) - return this.IRCC_UrlLinkIds; - return null; - } } diff --git a/src/main/resources/application.properties.gpg b/src/main/resources/application.properties.gpg index c91772cafde16c172e45fdc2e69ab8c4a7600651..17b383759fe10df203e8cef6d8185da75e76ad4d 100644 GIT binary patch literal 682 zcmV;b0#*Ht4Fm}T2)O|CGIwrIJoM7(0g+_#=sK#~WnSLIwyg+l;Zq_ZNQ{ahBi5g> zrfD()e_M~v?X~c94UCVqtWK#V2Cg+D&$5?}Z<}x(M~q=X?qPIR;-q=FO$bS{SjC(z&?X)Trv;7M&>}F#X1wWJ>-`|c4Y$$RL^_{t6}akns#et2yWAo z#t}7Qb<|NN?w#xTaG>j*1=gXah52jlc5pUQ3~e<3Aq!n$oRhKl}i2-OGF-8G8npB=AUdmJ)>x@S76K}OeLio zy!WAV$14B&$+s@yii8fawU%ypaD#bTCODKk4>hQYg@ERZiPc>Arv!76`?clHE!?&X z%~wjcZ29|LT`YVk)CIJGAy@e_17yhdv89|dIxfe~d_;KHSRM0;%#Etv$9DE@^|eQC zFYs5yU>ypIQJ&u}l7I;GE!i03vY-iuFOAMWc~<%y&TMX8MQC=#iHo=hS3%7Otx)$& zY}L(*fJ7>(2^VT0OXUUiAQ4aem4ay`V^;UG^wmb^Vx-UGnP0{Pf((|KehCOSz#Sqf zKG2XP`&D!#)+Ra7_n*@*cxNmZzaX~lt>jRfwn4zmxpF2C$OIkPTBM1>1ynY?&;N+2#_$#u$7r|WFqjox8 ze@6`Mv};NH#pmycYKXZx6SLw^SSKmY&$ literal 732 zcmV<20wev54Fm}T2(o+Wqe(g=P4v>~0po(dpZ#ynw(YW;cl*tJ_T|d9(#kVp$_ynm zrS%dk{A`^cpw}eGN7ZbU%SS$GdI}B%dkX37kx?W|;VNBya`RJOBosIKdE~SI+T=Qx zdTXXm5J92#J@7kJneeH-!TBnDCh%5;+&wg0W&S4SR(1eqX3V@C%yqRb%ieF0wt)Wk z+BcxSdwiLSFT;@v8QOokah+b*#_5fGRpcKDCC&UCQ5#|0;S4VzLK0~;5LvI2$vsi- znoYJQ<)@9_U%c_NSYung{C-t>^z`uQd7;Gl-8ghNE-yx)&(>O!nkT&%J7?>m2|>S4 zflAc{R7GPUUZzY|;Ds-UoH-qEOwg!D*a8Y!Lq7jyCf7`;=tdkj1oaf8rOs=~|nC22EJzA-T*9a3; z&h?<$^gfCtW=RlAm4#@WzzGZxUK~8HBX)Y9iQQfA$qQI;z}e*;cK_yv?KvV*1sbB` z>Z`bW=k7_XVc5|?7i#&W*9lD-BOz{PSN~SJnp{iHrj4i#~5_F`|akJM5QZb_5 zj2Yb3J?c@dE$9=AK8F!pNvgFcwld@igZbe`=McwCP;6dILKIkD7zYbLWD5J%QY@3g OzCk1*>o%Hl*)(#J+hq3u From 79cb4b354895ab0cbf0fce54a9ff91911c17fc51 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Mon, 2 Feb 2026 13:52:42 -0500 Subject: [PATCH 07/17] Refactor: CSV import methods to eliminate code duplication --- src/main/java/ca/gc/tbs/Main.java | 57 +++++++++++++++---------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/src/main/java/ca/gc/tbs/Main.java b/src/main/java/ca/gc/tbs/Main.java index 8c85ed7..9dfbb11 100644 --- a/src/main/java/ca/gc/tbs/Main.java +++ b/src/main/java/ca/gc/tbs/Main.java @@ -43,6 +43,11 @@ @EnableMongoRepositories(repositoryFactoryBeanClass = DataTablesRepositoryFactoryBean.class) public class Main implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(Main.class); + + // Spreadsheet URLs + private static final String TIER1_SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1eOmX_b8XCR9eLNxUbX3Gwkp2ywJ-vhapnC7ApdRbnSg/export?format=csv"; + private static final String TIER2_SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1B16qEbfp7SFCfIsZ8fcj7DneCy1WkR0GPh4t9L9NRSg/export?format=csv"; + // Tier 2 entries do not populate to AirTable. private final Set tier2Spreadsheet = new HashSet<>(); private final HashMap tier1Spreadsheet = new HashMap<>(); @@ -210,44 +215,38 @@ public void removeJunkDataTTS() { // Retrieves ALL model & bases from spreadsheet and imports them to the TIER 1 map. public void importTier1() throws Exception { - final Reader reader = new InputStreamReader( - new URL("https://docs.google.com/spreadsheets/d/1eOmX_b8XCR9eLNxUbX3Gwkp2ywJ-vhapnC7ApdRbnSg/export?format=csv").openConnection() - .getInputStream(), - StandardCharsets.UTF_8); - final CSVFormat csvFormat = CSVFormat.Builder.create().setHeader().setAllowMissingColumnNames(true).build(); - final Iterable records = csvFormat.parse(reader); - try { - for (final CSVRecord record : records) { - try { - String[] modelBase = {record.get("MODEL"), record.get("BASE").toLowerCase()}; - tier1Spreadsheet.put(record.get("URL").toLowerCase(), modelBase); - } catch (Exception e) { - logger.error("Error importing Tier 1 spreadsheet record", e); - } - } - } finally { - reader.close(); - } + parseCsvFromUrl(TIER1_SPREADSHEET_URL, record -> { + String[] modelBase = {record.get("MODEL"), record.get("BASE").toLowerCase()}; + tier1Spreadsheet.put(record.get("URL").toLowerCase(), modelBase); + }, "Tier 1"); } // Retrieves ALL URLs from spreadsheet and imports them to the TIER 2 map public void importTier2() throws Exception { - final Reader reader = new InputStreamReader( - new URL("https://docs.google.com/spreadsheets/d/1B16qEbfp7SFCfIsZ8fcj7DneCy1WkR0GPh4t9L9NRSg/export?format=csv").openConnection() - .getInputStream(), - StandardCharsets.UTF_8); - final CSVFormat csvFormat = CSVFormat.Builder.create().setHeader().setAllowMissingColumnNames(true).build(); - final Iterable records = csvFormat.parse(reader); - try { + parseCsvFromUrl(TIER2_SPREADSHEET_URL, record -> { + tier2Spreadsheet.add(record.get("URL").toLowerCase()); + }, "Tier 2"); + } + + // Helper method to parse CSV from URL and process each record + private void parseCsvFromUrl(String url, java.util.function.Consumer recordProcessor, String tierName) throws Exception { + try (Reader reader = new InputStreamReader( + new URL(url).openConnection().getInputStream(), + StandardCharsets.UTF_8)) { + + final CSVFormat csvFormat = CSVFormat.Builder.create() + .setHeader() + .setAllowMissingColumnNames(true) + .build(); + final Iterable records = csvFormat.parse(reader); + for (final CSVRecord record : records) { try { - tier2Spreadsheet.add(record.get("URL").toLowerCase()); + recordProcessor.accept(record); } catch (Exception e) { - logger.error("Error importing Tier 2 spreadsheet record", e); + logger.error("Error importing {} spreadsheet record", tierName, e); } } - } finally { - reader.close(); } } From d7dd09817fc2e57cc9a2dfeed42b436017bc39fd Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Mon, 2 Feb 2026 14:15:02 -0500 Subject: [PATCH 08/17] refactor: organize imports, use boolean primitive, and convert selectBase to switch, remove unused problemIsProcessed variable --- src/main/java/ca/gc/tbs/Main.java | 81 ++++++++++++++++--------------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/src/main/java/ca/gc/tbs/Main.java b/src/main/java/ca/gc/tbs/Main.java index 9dfbb11..4a627e1 100644 --- a/src/main/java/ca/gc/tbs/Main.java +++ b/src/main/java/ca/gc/tbs/Main.java @@ -1,13 +1,21 @@ package ca.gc.tbs; -import ca.gc.tbs.domain.Problem; -import ca.gc.tbs.domain.TopTaskSurvey; -import ca.gc.tbs.repository.ProblemRepository; -import ca.gc.tbs.repository.TopTaskRepository; -import ca.gc.tbs.service.ContentService; -import com.sybit.airtable.Airtable; -import com.sybit.airtable.Base; -import com.sybit.airtable.Table; +import static java.lang.System.exit; + +import java.io.InputStreamReader; +import java.io.Reader; +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVRecord; import org.apache.commons.lang3.StringUtils; @@ -25,18 +33,15 @@ import org.springframework.data.mongodb.datatables.DataTablesRepositoryFactoryBean; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.MalformedURLException; -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; +import com.sybit.airtable.Airtable; +import com.sybit.airtable.Base; +import com.sybit.airtable.Table; -import static java.lang.System.exit; +import ca.gc.tbs.domain.Problem; +import ca.gc.tbs.domain.TopTaskSurvey; +import ca.gc.tbs.repository.ProblemRepository; +import ca.gc.tbs.repository.TopTaskRepository; +import ca.gc.tbs.service.ContentService; @SpringBootApplication @ComponentScan(basePackages = {"ca.gc.tbs.domain", "ca.gc.tbs.repository", "ca.gc.tbs.service"}) @@ -250,10 +255,7 @@ private void parseCsvFromUrl(String url, java.util.function.Consumer } } - - - - // Populates entries to the AirTable bases and Tier 2 spreadsheet (inventory). + // Writes duplicate comments to spreadsheet for tracking private void writeDuplicateToFile(String comment, String url, String date, String timeStamp) { try { GoogleSheetsAPI.appendDuplicateComment(date, timeStamp, url, comment); @@ -302,8 +304,6 @@ public void airTableSpreadsheetSync() { } seenComments.add(normalizedComment); - - boolean problemIsProcessed = "true".equals(problem.getPersonalInfoProcessed()); boolean junkComment = problem.getProblemDetails().trim().isEmpty() || containsHTML(problem.getProblemDetails()) || problem.getUrl().equals("https://www.canada.ca/") || problem.getProblemDetails().length() > 301; if (junkComment) { @@ -380,7 +380,7 @@ public void completeProcessing() { exit(0); } - public Boolean containsHTML(String comment) { + public boolean containsHTML(String comment) { if (comment == null) return false; // This normalizeSpace call was added because sometimes sentences are written with extra spaces between words which triggers as HTML. comment = StringUtils.normalizeSpace(comment); @@ -446,22 +446,23 @@ public void setAirProblemAttributes(AirTableProblemEnhanced airProblem, Problem public Base selectBase(String base) { - if (base.equalsIgnoreCase("main")) { - return mainBase; - } - if (base.equalsIgnoreCase("health")) { - return healthBase; - } - if (base.equalsIgnoreCase("cra")) { - return CRA_Base; - } - if (base.equalsIgnoreCase("ircc")) { - return IRCC_Base; + if (base == null) { + return null; } - if (base.equalsIgnoreCase("travel")) { - return travelBase; + switch (base.toLowerCase()) { + case "main": + return mainBase; + case "health": + return healthBase; + case "cra": + return CRA_Base; + case "ircc": + return IRCC_Base; + case "travel": + return travelBase; + default: + return null; } - return null; } From 6bc02a1a7b113f67bd9e4bc8a337bc96c6777b1b Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Wed, 4 Feb 2026 14:14:01 -0500 Subject: [PATCH 09/17] refactor: extract URL and validation utilities into separate classes --- src/main/java/ca/gc/tbs/util/UrlUtils.java | 69 +++++++++++++++++++ .../java/ca/gc/tbs/util/ValidationUtils.java | 40 +++++++++++ 2 files changed, 109 insertions(+) create mode 100644 src/main/java/ca/gc/tbs/util/UrlUtils.java create mode 100644 src/main/java/ca/gc/tbs/util/ValidationUtils.java diff --git a/src/main/java/ca/gc/tbs/util/UrlUtils.java b/src/main/java/ca/gc/tbs/util/UrlUtils.java new file mode 100644 index 0000000..c4d4d98 --- /dev/null +++ b/src/main/java/ca/gc/tbs/util/UrlUtils.java @@ -0,0 +1,69 @@ +package ca.gc.tbs.util; + +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.stream.Collectors; + +import org.apache.http.client.utils.URIBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Utility class for URL manipulation operations. + */ +public final class UrlUtils { + private static final Logger logger = LoggerFactory.getLogger(UrlUtils.class); + + private UrlUtils() { + // Utility class - prevent instantiation + } + + /** + * Extracts UTM parameters from a URL and returns them as a query string. + * + * @param url the URL to extract UTM values from + * @return UTM parameters as "utm_x=value&utm_y=value" or empty string if none found + */ + public static String extractUtmValues(String url) { + if (url == null) { + return ""; + } + + try { + new URL(url).toURI(); + } catch (MalformedURLException | URISyntaxException e) { + return ""; + } + + try { + URIBuilder builder = new URIBuilder(url); + return builder.getQueryParams() + .stream() + .filter(x -> x.getName().startsWith("utm_")) + .map(x -> x.getName() + "=" + x.getValue()) + .collect(Collectors.joining("&")); + } catch (URISyntaxException e) { + logger.error("Error extracting UTM values from URL: {}", url, e); + return ""; + } + } + + /** + * Removes query parameters and fragment from a URL. + * + * @param url the URL to clean + * @return URL without query parameters and fragment, or original URL if parsing fails + */ + public static String removeQueryAndFragment(String url) { + try { + URIBuilder builder = new URIBuilder(url); + builder.clearParameters(); + builder.setFragment(null); + return builder.build().toString(); + } catch (Exception e) { + logger.error("Error removing query and fragment from URL: {}", url, e); + return url; + } + } +} diff --git a/src/main/java/ca/gc/tbs/util/ValidationUtils.java b/src/main/java/ca/gc/tbs/util/ValidationUtils.java new file mode 100644 index 0000000..2d75b3a --- /dev/null +++ b/src/main/java/ca/gc/tbs/util/ValidationUtils.java @@ -0,0 +1,40 @@ +package ca.gc.tbs.util; + +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; + +/** + * Utility class for content validation operations. + */ +public final class ValidationUtils { + + private ValidationUtils() { + // Utility class - prevent instantiation + } + + /** + * Checks if the given text contains HTML markup. + * + * @param text the text to check + * @return true if HTML is detected, false otherwise + */ + public static boolean containsHTML(String text) { + if (text == null) return false; + text = StringUtils.normalizeSpace(text); + String parsedText = Jsoup.parse(text).text().trim(); + return parsedText.length() != text.trim().length(); + } + + /** + * Checks if a normalized comment already exists in the seen comments set. + * + * @param normalizedComment the comment normalized to lowercase and trimmed + * @param seenComments set of previously seen comments + * @return true if duplicate, false otherwise + */ + public static boolean isDuplicateComment(String normalizedComment, Set seenComments) { + return seenComments.contains(normalizedComment); + } +} From 8c0daf0536ef996df8f530d0703672a9615f8225 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Wed, 4 Feb 2026 14:14:08 -0500 Subject: [PATCH 10/17] refactor: move AirTableProblemEnhanced to model package --- .../gc/tbs/model/AirTableProblemEnhanced.java | 225 ++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 src/main/java/ca/gc/tbs/model/AirTableProblemEnhanced.java diff --git a/src/main/java/ca/gc/tbs/model/AirTableProblemEnhanced.java b/src/main/java/ca/gc/tbs/model/AirTableProblemEnhanced.java new file mode 100644 index 0000000..1f754aa --- /dev/null +++ b/src/main/java/ca/gc/tbs/model/AirTableProblemEnhanced.java @@ -0,0 +1,225 @@ +package ca.gc.tbs.model; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.annotations.SerializedName; + +public class AirTableProblemEnhanced { + // let blank for airtable + private String id; + + @SerializedName("Unique ID") + private String uniqueID; + @SerializedName("Date") + private String date; + @SerializedName("URL") + private String URL; + + @SerializedName("Time received") + private String timeStamp; + + @SerializedName("UTM URL") + private String UTM; + @SerializedName("URL_link") + private List URLLinkIds = new ArrayList(); + + @SerializedName("Page title") + private List pageTitleIds = new ArrayList(); + @SerializedName("Lang") + private String lang; + @SerializedName("What's wrong") + private String whatswrong; + @SerializedName("Comment") + private String comment; + @SerializedName("Ignore") + private String ignore; + @SerializedName("Tags") + private List tags= new ArrayList(); + @SerializedName("Tags confirmed") + private String tagsConfirmed; + @SerializedName("Refining details") + private String refiningDetails; + @SerializedName("Actionable") + private String actionable; + @SerializedName("Main section") + private String mainSection; + @SerializedName("Status") + private String status; + @SerializedName("Institution") + private String institution; + @SerializedName("Theme") + private String theme; + + + + @SerializedName("Lookup_tags") + private String lookupTags; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUniqueID() { + return uniqueID; + } + + public void setUniqueID(String uniqueID) { + this.uniqueID = uniqueID; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + public String getTimeStamp() { + return timeStamp; + } + public void setTimeStamp(String timeStamp) { + this.timeStamp = timeStamp; + } + + public String getLang() { + return lang; + } + + public void setLang(String lang) { + this.lang = lang; + } + + public String getWhatswrong() { + return whatswrong; + } + + public void setWhatswrong(String whatswrong) { + this.whatswrong = whatswrong; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public String getIgnore() { + return ignore; + } + + public void setIgnore(String ignore) { + this.ignore = ignore; + } + + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public String getTagsConfirmed() { + return tagsConfirmed; + } + + public void setTagsConfirmed(String tagsConfirmed) { + this.tagsConfirmed = tagsConfirmed; + } + + public String getRefiningDetails() { + return refiningDetails; + } + + public void setRefiningDetails(String refiningDetails) { + this.refiningDetails = refiningDetails; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getLookupTags() { + return lookupTags; + } + + public void setLookupTags(String lookupTags) { + this.lookupTags = lookupTags; + } + + public String getURL() { + return URL; + } + + public void setURL(String uRL) { + URL = uRL; + } + + public String getUTM() { + return UTM; + } + + public void setUTM(String uTM) { + UTM = uTM; + } + + public String getActionable() { + return actionable; + } + + public void setActionable(String actionable) { + this.actionable = actionable; + } + + public String getMainSection() { + return mainSection; + } + + public void setMainSection(String mainSection) { + this.mainSection = mainSection; + } + + public String getInstitution() { + return institution; + } + + public void setInstitution(String institution) { + this.institution = institution; + } + + public String getTheme() { + return theme; + } + + public void setTheme(String theme) { + this.theme = theme; + } + + public List getPageTitleIds() { + return pageTitleIds; + } + + public void setPageTitleIds(List pageTitleIds) { + this.pageTitleIds = pageTitleIds; + } + public List getURLLinkIds() { + return URLLinkIds; + } + + public void setURLLinkIds(List URLLinkIds) { + this.URLLinkIds = URLLinkIds; + } + + +} From 9db2fa2959c18e30044c66d3658c82c2bb7c2baf Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Wed, 4 Feb 2026 14:14:16 -0500 Subject: [PATCH 11/17] refactor: extract services from Main into dedicated service classes - SpreadsheetService: tier spreadsheet import and URL management - TopTaskCleaningService: TTS data cleaning - ProblemCleaningService: Problem data cleaning with BadWords initialization - AirtableSyncService: Airtable synchronization logic --- .../gc/tbs/service/AirtableSyncService.java | 191 ++++++++++++++++++ .../tbs/service/ProblemCleaningService.java | 102 ++++++++++ .../ca/gc/tbs/service/SpreadsheetService.java | 125 ++++++++++++ .../tbs/service/TopTaskCleaningService.java | 99 +++++++++ 4 files changed, 517 insertions(+) create mode 100644 src/main/java/ca/gc/tbs/service/AirtableSyncService.java create mode 100644 src/main/java/ca/gc/tbs/service/ProblemCleaningService.java create mode 100644 src/main/java/ca/gc/tbs/service/SpreadsheetService.java create mode 100644 src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java diff --git a/src/main/java/ca/gc/tbs/service/AirtableSyncService.java b/src/main/java/ca/gc/tbs/service/AirtableSyncService.java new file mode 100644 index 0000000..5464fd5 --- /dev/null +++ b/src/main/java/ca/gc/tbs/service/AirtableSyncService.java @@ -0,0 +1,191 @@ +package ca.gc.tbs.service; + +import static java.lang.System.exit; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +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.stereotype.Service; + +import com.sybit.airtable.Airtable; +import com.sybit.airtable.Base; +import com.sybit.airtable.Table; + +import ca.gc.tbs.domain.Problem; +import ca.gc.tbs.model.AirTableProblemEnhanced; +import ca.gc.tbs.repository.ProblemRepository; +import ca.gc.tbs.util.UrlUtils; + +/** + * Service for syncing Problem data to Airtable. + */ +@Service +public class AirtableSyncService { + private static final Logger logger = LoggerFactory.getLogger(AirtableSyncService.class); + + private static final int MAX_SYNC_RECORDS = 150; + + private final ProblemRepository problemRepository; + private final SpreadsheetService spreadsheetService; + + @Value("${airtable.key}") + private String airtableKey; + + @Value("${airtable.tab}") + private String problemAirtableTab; + + @Value("${airtable.base}") + private String problemAirtableBase; + + private Base mainBase; + private Table mainTable; + + @Autowired + public AirtableSyncService(ProblemRepository problemRepository, + SpreadsheetService spreadsheetService) { + this.problemRepository = problemRepository; + this.spreadsheetService = spreadsheetService; + } + + /** + * Initializes the Airtable connection. + */ + public void initialize() throws Exception { + logger.info("Connecting to Airtable base"); + Airtable airtable = new Airtable().configure(airtableKey); + mainBase = airtable.base(problemAirtableBase); + mainTable = mainBase.table(problemAirtableTab, AirTableProblemEnhanced.class); + } + + /** + * Syncs unprocessed problems to Airtable based on tier classification. + */ + public void syncProblemsToAirtable() { + List problems = fetchUnprocessedProblems(); + List toSave = new ArrayList<>(); + + logger.info("Found {} records to be processed on Date: {}", + problems.size(), LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + + int processedCount = 0; + for (Problem problem : problems) { + if (processedCount >= MAX_SYNC_RECORDS) { + logger.info("Reached sync limit of {} records", MAX_SYNC_RECORDS); + break; + } + + SyncResult result = processProblem(problem); + if (result == SyncResult.SAVE) { + toSave.add(problem); + processedCount++; + } + } + + // Batch database operations + if (!toSave.isEmpty()) { + problemRepository.saveAll(toSave); + logger.info("Batch saved {} problems", toSave.size()); + } + } + + /** + * Marks all processed problems as complete. + */ + public void completeProcessing() { + List problems = problemRepository.findByProcessed("false"); + problems.addAll(problemRepository.findByProcessed(null)); + + for (Problem problem : problems) { + try { + if ("true".equals(problem.getPersonalInfoProcessed()) + && "true".equals(problem.getAirTableSync()) + && (problem.getProcessed() == null || "false".equals(problem.getProcessed()))) { + problem.setProcessedDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + problem.setProcessed("true"); + problemRepository.save(problem); + } + } catch (Exception e) { + logger.error("Could not mark completed - ID: {}", problem.getId(), e); + } + } + logger.info("Finished processing"); + exit(0); + } + + private enum SyncResult { SAVE, SKIP } + + private List fetchUnprocessedProblems() { + List problems = problemRepository.findByAirTableSync(null); + problems.addAll(problemRepository.findByAirTableSync("false")); + return problems; + } + + private SyncResult processProblem(Problem problem) { + try { + // Extract UTM values BEFORE removing query params + String utmValues = UrlUtils.extractUtmValues(problem.getUrl()); + + // Normalize URL for tier comparisons + problem.setUrl(UrlUtils.removeQueryAndFragment(problem.getUrl().toLowerCase())); + + routeProblem(problem, utmValues); + return SyncResult.SAVE; + + } catch (Exception e) { + logger.error("Could not sync record: {} - URL: {}", problem.getId(), problem.getUrl(), e); + return SyncResult.SKIP; + } + } + + private void routeProblem(Problem problem, String utmValues) throws Exception { + String url = problem.getUrl(); + + if (!spreadsheetService.isTier1Url(url) && !spreadsheetService.isTier2Url(url)) { + spreadsheetService.addUrlToTier2(problem); + } else if (spreadsheetService.isTier2Url(url)) { + markAsProcessed(problem); + } else { + syncProblemToAirtable(problem, utmValues); + } + } + + private void syncProblemToAirtable(Problem problem, String utmValues) throws Exception { + AirTableProblemEnhanced airProblem = createAirTableProblem(problem, utmValues); + mainTable.create(airProblem); + problem.setAirTableSync("true"); + logger.info("Synced to Airtable (Tier 1): {}", problem.getUrl()); + } + + private void markAsProcessed(Problem problem) { + problem.setAirTableSync("true"); + logger.debug("Tier 2 URL already exists: {}", problem.getUrl()); + } + + private AirTableProblemEnhanced createAirTableProblem(Problem problem, String utmValues) { + AirTableProblemEnhanced airProblem = new AirTableProblemEnhanced(); + airProblem.setUTM(utmValues); + airProblem.setUniqueID(problem.getId()); + airProblem.setDate(problem.getProblemDate()); + airProblem.setTimeStamp(problem.getTimeStamp()); + airProblem.setURL(problem.getUrl()); + airProblem.setLang(problem.getLanguage().toUpperCase()); + airProblem.setComment(problem.getProblemDetails()); + airProblem.setIgnore(null); + airProblem.setTagsConfirmed(null); + airProblem.setRefiningDetails(""); + airProblem.setActionable(null); + airProblem.setMainSection(problem.getSection()); + airProblem.setStatus("New"); + airProblem.setLookupTags(null); + airProblem.setInstitution(problem.getInstitution()); + airProblem.setTheme(problem.getTheme()); + airProblem.setId(null); + return airProblem; + } +} diff --git a/src/main/java/ca/gc/tbs/service/ProblemCleaningService.java b/src/main/java/ca/gc/tbs/service/ProblemCleaningService.java new file mode 100644 index 0000000..f2c9e9c --- /dev/null +++ b/src/main/java/ca/gc/tbs/service/ProblemCleaningService.java @@ -0,0 +1,102 @@ +package ca.gc.tbs.service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import ca.gc.tbs.domain.Problem; +import ca.gc.tbs.repository.ProblemRepository; +import ca.gc.tbs.util.ValidationUtils; +import ca.gc.tbs.service.BadWords; + +/** + * Service for cleaning Problem data. + */ +@Service +public class ProblemCleaningService { + private static final Logger logger = LoggerFactory.getLogger(ProblemCleaningService.class); + + private static final int MAX_COMMENT_LENGTH = 301; + + private final ContentService contentService; + private final ProblemRepository problemRepository; + private final SpreadsheetService spreadsheetService; + + @Autowired + public ProblemCleaningService(ContentService contentService, + ProblemRepository problemRepository, + SpreadsheetService spreadsheetService, + BadWords badWords) { + // Load BadWords config (JAR uses javax.annotation.PostConstruct which Spring Boot 3.x ignores) + badWords.loadConfigs(); + + this.contentService = contentService; + this.problemRepository = problemRepository; + this.spreadsheetService = spreadsheetService; + } + + /** + * Cleans all unprocessed Problem entries. + * Removes junk/duplicates and cleans personal info from valid records. + */ + public void cleanProblems() { + Set seenComments = new HashSet<>(); + List problems = fetchUncleanedProblems(); + logger.info("Number of Problems to clean: {}", problems.size()); + + for (Problem problem : problems) { + try { + processProblem(problem, seenComments); + } catch (Exception e) { + logger.error("Could not process problem: {} - Details: {}", + problem.getId(), problem.getProblemDetails(), e); + } + } + logger.info("Problem cleaning complete"); + } + + private List fetchUncleanedProblems() { + List problems = problemRepository.findByPersonalInfoProcessed(null); + problems.addAll(problemRepository.findByPersonalInfoProcessed("false")); + return problems; + } + + private void processProblem(Problem problem, Set seenComments) { + // Check for junk first - delete immediately without wasting time cleaning + if (isJunkComment(problem)) { + logger.info("Deleting junk comment: {}", problem.getId()); + problemRepository.delete(problem); + return; + } + + // Check for duplicates within this batch + String normalizedComment = problem.getProblemDetails().trim().toLowerCase(); + if (ValidationUtils.isDuplicateComment(normalizedComment, seenComments)) { + logger.info("Deleting duplicate comment: {}", problem.getProblemDetails()); + spreadsheetService.logDuplicateComment(problem); + problemRepository.delete(problem); + return; + } + seenComments.add(normalizedComment); + + // Clean personal info from valid, non-duplicate records + String details = contentService.cleanContent(problem.getProblemDetails()); + problem.setProblemDetails(details); + problem.setPersonalInfoProcessed("true"); + problemRepository.save(problem); + } + + private boolean isJunkComment(Problem problem) { + String details = problem.getProblemDetails(); + String url = problem.getUrl(); + return details.trim().isEmpty() + || ValidationUtils.containsHTML(details) + || "https://www.canada.ca/".equals(url) + || details.length() > MAX_COMMENT_LENGTH; + } +} diff --git a/src/main/java/ca/gc/tbs/service/SpreadsheetService.java b/src/main/java/ca/gc/tbs/service/SpreadsheetService.java new file mode 100644 index 0000000..ee223fa --- /dev/null +++ b/src/main/java/ca/gc/tbs/service/SpreadsheetService.java @@ -0,0 +1,125 @@ +package ca.gc.tbs.service; + +import java.io.InputStreamReader; +import java.io.Reader; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Consumer; + +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import ca.gc.tbs.GoogleSheetsAPI; +import ca.gc.tbs.domain.Problem; + +/** + * Service for managing tier spreadsheet operations. + */ +@Service +public class SpreadsheetService { + private static final Logger logger = LoggerFactory.getLogger(SpreadsheetService.class); + + private static final String TIER1_SPREADSHEET_URL = + "https://docs.google.com/spreadsheets/d/1eOmX_b8XCR9eLNxUbX3Gwkp2ywJ-vhapnC7ApdRbnSg/export?format=csv"; + private static final String TIER2_SPREADSHEET_URL = + "https://docs.google.com/spreadsheets/d/1B16qEbfp7SFCfIsZ8fcj7DneCy1WkR0GPh4t9L9NRSg/export?format=csv"; + + private final Set tier1Urls = new HashSet<>(); + private final Set tier2Urls = new HashSet<>(); + + /** + * Imports both Tier 1 and Tier 2 spreadsheets. + */ + public void importTiers() throws Exception { + importTier1(); + importTier2(); + } + + /** + * Imports Tier 1 URLs from the spreadsheet. + */ + public void importTier1() throws Exception { + parseCsvFromUrl(TIER1_SPREADSHEET_URL, record -> { + tier1Urls.add(record.get("URL").toLowerCase()); + }, "Tier 1"); + logger.info("Imported {} Tier 1 URLs", tier1Urls.size()); + } + + /** + * Imports Tier 2 URLs from the spreadsheet. + */ + public void importTier2() throws Exception { + parseCsvFromUrl(TIER2_SPREADSHEET_URL, record -> { + tier2Urls.add(record.get("URL").toLowerCase()); + }, "Tier 2"); + logger.info("Imported {} Tier 2 URLs", tier2Urls.size()); + } + + /** + * Checks if a URL is in the Tier 1 spreadsheet. + */ + public boolean isTier1Url(String url) { + return tier1Urls.contains(url); + } + + /** + * Checks if a URL is in the Tier 2 spreadsheet. + */ + public boolean isTier2Url(String url) { + return tier2Urls.contains(url); + } + + /** + * Logs a duplicate comment to the Google Sheets duplicate tracker. + */ + public void logDuplicateComment(Problem problem) { + try { + String date = problem.getProblemDate() != null + ? problem.getProblemDate() + : LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + GoogleSheetsAPI.appendDuplicateComment(date, problem.getTimeStamp(), + problem.getUrl(), problem.getProblemDetails()); + } catch (Exception e) { + logger.error("Error writing duplicate to spreadsheet", e); + } + } + + /** + * Adds a URL to the Tier 2 spreadsheet (both local cache and Google Sheets). + */ + public void addUrlToTier2(Problem problem) throws Exception { + tier2Urls.add(problem.getUrl()); + GoogleSheetsAPI.appendURL(problem.getUrl()); + problem.setAirTableSync("true"); + logger.info("URL not in spreadsheet: {}, added to Tier 2 Spreadsheet", problem.getUrl()); + } + + private void parseCsvFromUrl(String url, Consumer recordProcessor, String tierName) + throws Exception { + try (Reader reader = new InputStreamReader( + new URL(url).openConnection().getInputStream(), + StandardCharsets.UTF_8)) { + + final CSVFormat csvFormat = CSVFormat.Builder.create() + .setHeader() + .setAllowMissingColumnNames(true) + .build(); + final Iterable records = csvFormat.parse(reader); + + for (final CSVRecord record : records) { + try { + recordProcessor.accept(record); + } catch (Exception e) { + logger.error("Error importing {} spreadsheet record", tierName, e); + } + } + } + } +} diff --git a/src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java b/src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java new file mode 100644 index 0000000..b213ffa --- /dev/null +++ b/src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java @@ -0,0 +1,99 @@ +package ca.gc.tbs.service; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.function.Consumer; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import ca.gc.tbs.domain.TopTaskSurvey; +import ca.gc.tbs.repository.TopTaskRepository; +import ca.gc.tbs.util.ValidationUtils; + +/** + * Service for cleaning Top Task Survey data. + */ +@Service +public class TopTaskCleaningService { + private static final Logger logger = LoggerFactory.getLogger(TopTaskCleaningService.class); + + private final ContentService contentService; + private final TopTaskRepository topTaskRepository; + + @Autowired + public TopTaskCleaningService(ContentService contentService, TopTaskRepository topTaskRepository) { + this.contentService = contentService; + this.topTaskRepository = topTaskRepository; + } + + /** + * Cleans all unprocessed Top Task Survey entries. + * Removes junk entries and cleans personal info from valid records. + */ + public void cleanTopTaskSurveys() { + List tasks = topTaskRepository.findByProcessed("false"); + logger.info("Number of TTS entries to clean: {}", tasks.size()); + + for (TopTaskSurvey task : tasks) { + try { + processTask(task); + } catch (Exception e) { + logger.error("Could not process task: {} - DateTime: {}", + task.getId(), task.getDateTime(), e); + } + } + logger.info("TTS cleaning complete"); + } + + private void processTask(TopTaskSurvey task) { + // Check for junk first - delete immediately without wasting time cleaning + if (task == null || hasHTMLInAnyField(task)) { + assert task != null; + logger.warn("Deleting junk task: {} - Had null or hyperlink", task.getId()); + topTaskRepository.delete(task); + return; + } + + // Trim whitespace + trimWhitespaceField(task.getTaskOther(), task::setTaskOther, "taskOther"); + trimWhitespaceField(task.getThemeOther(), task::setThemeOther, "themeOther"); + trimWhitespaceField(task.getTaskImproveComment(), task::setTaskImproveComment, "taskImproveComment"); + trimWhitespaceField(task.getTaskWhyNotComment(), task::setTaskWhyNotComment, "taskWhyNotComment"); + + // Clean personal info from valid records + cleanTaskField(task.getThemeOther(), task::setThemeOther); + cleanTaskField(task.getTaskOther(), task::setTaskOther); + cleanTaskField(task.getTaskImproveComment(), task::setTaskImproveComment); + cleanTaskField(task.getTaskWhyNotComment(), task::setTaskWhyNotComment); + + task.setPersonalInfoProcessed("true"); + task.setProcessed("true"); + task.setProcessedDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + topTaskRepository.save(task); + } + + private void cleanTaskField(String fieldValue, Consumer setter) { + if (fieldValue != null) { + String cleaned = contentService.cleanContent(fieldValue); + setter.accept(cleaned); + } + } + + private boolean hasHTMLInAnyField(TopTaskSurvey task) { + return ValidationUtils.containsHTML(task.getTaskOther()) + || ValidationUtils.containsHTML(task.getThemeOther()) + || ValidationUtils.containsHTML(task.getTaskImproveComment()) + || ValidationUtils.containsHTML(task.getTaskWhyNotComment()); + } + + private void trimWhitespaceField(String fieldValue, Consumer setter, String fieldName) { + if (fieldValue != null && fieldValue.trim().isEmpty() && !fieldValue.isEmpty()) { + logger.debug("Found junk data in {}", fieldName); + setter.accept(""); + } + } +} From 33897d16142d7505294d59c80581d3ccbf519a31 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Wed, 4 Feb 2026 14:14:24 -0500 Subject: [PATCH 12/17] refactor: simplify Main class and remove unused AirTable classes Main now delegates to extracted services. Removed unused: - AirTableProblem.java - AirTableProblemEnhanced.java (moved to model package) - AirTableStat.java - AirTableURLLink.java --- src/main/java/ca/gc/tbs/AirTableProblem.java | 137 ----- .../ca/gc/tbs/AirTableProblemEnhanced.java | 225 -------- src/main/java/ca/gc/tbs/AirTableStat.java | 34 -- src/main/java/ca/gc/tbs/AirTableURLLink.java | 36 -- src/main/java/ca/gc/tbs/Main.java | 492 ++---------------- 5 files changed, 55 insertions(+), 869 deletions(-) delete mode 100644 src/main/java/ca/gc/tbs/AirTableProblem.java delete mode 100644 src/main/java/ca/gc/tbs/AirTableProblemEnhanced.java delete mode 100644 src/main/java/ca/gc/tbs/AirTableStat.java delete mode 100644 src/main/java/ca/gc/tbs/AirTableURLLink.java diff --git a/src/main/java/ca/gc/tbs/AirTableProblem.java b/src/main/java/ca/gc/tbs/AirTableProblem.java deleted file mode 100644 index a59a923..0000000 --- a/src/main/java/ca/gc/tbs/AirTableProblem.java +++ /dev/null @@ -1,137 +0,0 @@ -package ca.gc.tbs; -import com.google.gson.annotations.SerializedName; - -public class AirTableProblem { - private String id; - - @SerializedName("Unique ID") - private String uniqueID; - @SerializedName("Date") - private String date; - @SerializedName("Time received") - private String timeStamp; - @SerializedName("URL") - private String URL; - @SerializedName("Name") - private String URL_link; - @SerializedName("Page title") - private String pageTitle; - @SerializedName("Lang") - private String lang; - @SerializedName("What's wrong") - private String whatswrong; - @SerializedName("Details") - private String details; - @SerializedName("Tags") - private String tags; - @SerializedName("Info exists") - private String infoExists; - @SerializedName("PII") - private String PII; - - @SerializedName("PII Type") - private String PIIType; - - - @SerializedName("Topic - HC") - private String topic; - @SerializedName("Actionable") - private Boolean actionable; - - - - - - public String getId() { - return id; - } - public void setId(String id) { - this.id = id; - } - public String getTimeStamp() { - return timeStamp; - } - public void setTimeStamp(String timeStamp) { - this.timeStamp = timeStamp; - } - public String getDate() { - return date; - } - public void setDate(String date) { - this.date = date; - } - public String getURL() { - return URL; - } - public void setURL(String uRL) { - URL = uRL; - } - public String getPageTitle() { - return pageTitle; - } - public void setPageTitle(String pageTitle) { - this.pageTitle = pageTitle; - } - public String getLang() { - return lang; - } - public void setLang(String lang) { - this.lang = lang; - } - public String getWhatswrong() { - return whatswrong; - } - public void setWhatswrong(String whatswrong) { - this.whatswrong = whatswrong; - } - public String getDetails() { - return details; - } - public void setDetails(String details) { - this.details = details; - } - public String getTags() { - return tags; - } - public void setTags(String tags) { - this.tags = tags; - } - public String getInfoExists() { - return infoExists; - } - public void setInfoExists(String infoExists) { - this.infoExists = infoExists; - } - public String getPII() { - return PII; - } - public void setPII(String pII) { - PII = pII; - } - public String getTopic() { - return topic; - } - public void setTopic(String topic) { - this.topic = topic; - } - public String getURL_link() { - return URL_link; - } - public void setURL_link(String uRL_link) { - URL_link = uRL_link; - } - public String getUniqueID() { - return uniqueID; - } - public void setUniqueID(String uniqueID) { - this.uniqueID = uniqueID; - } - public String getPIIType() { - return PIIType; - } - public void setPIIType(String pIIType) { - PIIType = pIIType; - } - - -} diff --git a/src/main/java/ca/gc/tbs/AirTableProblemEnhanced.java b/src/main/java/ca/gc/tbs/AirTableProblemEnhanced.java deleted file mode 100644 index 4cce1aa..0000000 --- a/src/main/java/ca/gc/tbs/AirTableProblemEnhanced.java +++ /dev/null @@ -1,225 +0,0 @@ -package ca.gc.tbs; - -import java.util.ArrayList; -import java.util.List; - -import com.google.gson.annotations.SerializedName; - -public class AirTableProblemEnhanced { - // let blank for airtable - private String id; - - @SerializedName("Unique ID") - private String uniqueID; - @SerializedName("Date") - private String date; - @SerializedName("URL") - private String URL; - - @SerializedName("Time received") - private String timeStamp; - - @SerializedName("UTM URL") - private String UTM; - @SerializedName("URL_link") - private List URLLinkIds = new ArrayList(); - - @SerializedName("Page title") - private List pageTitleIds = new ArrayList(); - @SerializedName("Lang") - private String lang; - @SerializedName("What's wrong") - private String whatswrong; - @SerializedName("Comment") - private String comment; - @SerializedName("Ignore") - private String ignore; - @SerializedName("Tags") - private List tags= new ArrayList(); - @SerializedName("Tags confirmed") - private String tagsConfirmed; - @SerializedName("Refining details") - private String refiningDetails; - @SerializedName("Actionable") - private String actionable; - @SerializedName("Main section") - private String mainSection; - @SerializedName("Status") - private String status; - @SerializedName("Institution") - private String institution; - @SerializedName("Theme") - private String theme; - - - - @SerializedName("Lookup_tags") - private String lookupTags; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getUniqueID() { - return uniqueID; - } - - public void setUniqueID(String uniqueID) { - this.uniqueID = uniqueID; - } - - public String getDate() { - return date; - } - - public void setDate(String date) { - this.date = date; - } - public String getTimeStamp() { - return timeStamp; - } - public void setTimeStamp(String timeStamp) { - this.timeStamp = timeStamp; - } - - public String getLang() { - return lang; - } - - public void setLang(String lang) { - this.lang = lang; - } - - public String getWhatswrong() { - return whatswrong; - } - - public void setWhatswrong(String whatswrong) { - this.whatswrong = whatswrong; - } - - public String getComment() { - return comment; - } - - public void setComment(String comment) { - this.comment = comment; - } - - public String getIgnore() { - return ignore; - } - - public void setIgnore(String ignore) { - this.ignore = ignore; - } - - public List getTags() { - return tags; - } - - public void setTags(List tags) { - this.tags = tags; - } - - public String getTagsConfirmed() { - return tagsConfirmed; - } - - public void setTagsConfirmed(String tagsConfirmed) { - this.tagsConfirmed = tagsConfirmed; - } - - public String getRefiningDetails() { - return refiningDetails; - } - - public void setRefiningDetails(String refiningDetails) { - this.refiningDetails = refiningDetails; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - public String getLookupTags() { - return lookupTags; - } - - public void setLookupTags(String lookupTags) { - this.lookupTags = lookupTags; - } - - public String getURL() { - return URL; - } - - public void setURL(String uRL) { - URL = uRL; - } - - public String getUTM() { - return UTM; - } - - public void setUTM(String uTM) { - UTM = uTM; - } - - public String getActionable() { - return actionable; - } - - public void setActionable(String actionable) { - this.actionable = actionable; - } - - public String getMainSection() { - return mainSection; - } - - public void setMainSection(String mainSection) { - this.mainSection = mainSection; - } - - public String getInstitution() { - return institution; - } - - public void setInstitution(String institution) { - this.institution = institution; - } - - public String getTheme() { - return theme; - } - - public void setTheme(String theme) { - this.theme = theme; - } - - public List getPageTitleIds() { - return pageTitleIds; - } - - public void setPageTitleIds(List pageTitleIds) { - this.pageTitleIds = pageTitleIds; - } - public List getURLLinkIds() { - return URLLinkIds; - } - - public void setURLLinkIds(List URLLinkIds) { - this.URLLinkIds = URLLinkIds; - } - - -} diff --git a/src/main/java/ca/gc/tbs/AirTableStat.java b/src/main/java/ca/gc/tbs/AirTableStat.java deleted file mode 100644 index 8ad986e..0000000 --- a/src/main/java/ca/gc/tbs/AirTableStat.java +++ /dev/null @@ -1,34 +0,0 @@ -package ca.gc.tbs; - -import com.google.gson.annotations.SerializedName; - -public class AirTableStat { - private String id; - - @SerializedName("Page title") - private String pageTitle; - - public AirTableStat(String title) { - this.pageTitle = title; - } - - public AirTableStat() { - - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getPageTitle() { - return pageTitle; - } - - public void setPageTitle(String pageTitle) { - this.pageTitle = pageTitle; - } -} diff --git a/src/main/java/ca/gc/tbs/AirTableURLLink.java b/src/main/java/ca/gc/tbs/AirTableURLLink.java deleted file mode 100644 index 19023ba..0000000 --- a/src/main/java/ca/gc/tbs/AirTableURLLink.java +++ /dev/null @@ -1,36 +0,0 @@ -package ca.gc.tbs; - -import com.google.gson.annotations.SerializedName; - -public class AirTableURLLink { - private String id; - - @SerializedName("Name") - private String URLlink; - - - public AirTableURLLink(String urlLink) { - this.URLlink = urlLink; - } - - public AirTableURLLink() { - - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - public String getURLlink() { - return URLlink; - } - - public void setURLlink(String uRLlink) { - URLlink = uRLlink; - } - - -} diff --git a/src/main/java/ca/gc/tbs/Main.java b/src/main/java/ca/gc/tbs/Main.java index 4a627e1..3466b4b 100644 --- a/src/main/java/ca/gc/tbs/Main.java +++ b/src/main/java/ca/gc/tbs/Main.java @@ -1,470 +1,88 @@ package ca.gc.tbs; -import static java.lang.System.exit; - -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.MalformedURLException; -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVRecord; -import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; -import org.jsoup.Jsoup; 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.boot.CommandLineRunner; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; import org.springframework.data.mongodb.datatables.DataTablesRepositoryFactoryBean; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; - -import com.sybit.airtable.Airtable; -import com.sybit.airtable.Base; -import com.sybit.airtable.Table; - -import ca.gc.tbs.domain.Problem; -import ca.gc.tbs.domain.TopTaskSurvey; -import ca.gc.tbs.repository.ProblemRepository; -import ca.gc.tbs.repository.TopTaskRepository; -import ca.gc.tbs.service.ContentService; - -@SpringBootApplication -@ComponentScan(basePackages = {"ca.gc.tbs.domain", "ca.gc.tbs.repository", "ca.gc.tbs.service"}) -@EnableMongoRepositories(repositoryFactoryBeanClass = DataTablesRepositoryFactoryBean.class) +import org.springframework.boot.autoconfigure.domain.EntityScan; + +import ca.gc.tbs.service.AirtableSyncService; +import ca.gc.tbs.service.ProblemCleaningService; +import ca.gc.tbs.service.SpreadsheetService; +import ca.gc.tbs.service.TopTaskCleaningService; + +/** + * Main entry point for the feedback processing cron job. + * Orchestrates data cleaning and Airtable synchronization. + */ +@SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) +@ComponentScan( + basePackages = { + "ca.gc.tbs.service", + "ca.gc.tbs.repository", + "ca.gc.tbs.domain", + "ca.gc.tbs.config" + }, + excludeFilters = @ComponentScan.Filter( + type = FilterType.REGEX, + pattern = "ca\\.gc\\.tbs\\.config\\.WebSecurityConfig" + ) +) +@EnableMongoRepositories( + basePackages = "ca.gc.tbs.repository", + repositoryFactoryBeanClass = DataTablesRepositoryFactoryBean.class +) +@EntityScan("ca.gc.tbs.domain") public class Main implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(Main.class); - - // Spreadsheet URLs - private static final String TIER1_SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1eOmX_b8XCR9eLNxUbX3Gwkp2ywJ-vhapnC7ApdRbnSg/export?format=csv"; - private static final String TIER2_SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1B16qEbfp7SFCfIsZ8fcj7DneCy1WkR0GPh4t9L9NRSg/export?format=csv"; - - // Tier 2 entries do not populate to AirTable. - private final Set tier2Spreadsheet = new HashSet<>(); - private final HashMap tier1Spreadsheet = new HashMap<>(); - - @Autowired - private ContentService contentService; - - @Autowired - private ProblemRepository problemRepository; - @Autowired - private TopTaskRepository topTaskRepository; - // Main AirTable - @Value("${airtable.key}") - private String airtableKey; - @Value("${airtable.tab}") - private String problemAirtableTab; - @Value("${airtable.base}") - private String problemAirtableBase; - // Health AirTable - @Value("${health.airtable.base}") - private String healthAirtableBase; + private final TopTaskCleaningService topTaskCleaningService; + private final ProblemCleaningService problemCleaningService; + private final SpreadsheetService spreadsheetService; + private final AirtableSyncService airtableSyncService; - // CRA AirTable - @Value("${cra.airtable.base}") - private String CRA_AirtableBase; - - // Travel AirTable - @Value("${travel.airtable.base}") - private String travelAirtableBase; - - // IRCC AirTable - @Value("${ircc.airtable.base}") - private String irccAirtableBase; - - private Base mainBase; - private Base healthBase; - private Base CRA_Base; - private Base travelBase; - private Base IRCC_Base; + @Autowired + public Main(TopTaskCleaningService topTaskCleaningService, + ProblemCleaningService problemCleaningService, + SpreadsheetService spreadsheetService, + AirtableSyncService airtableSyncService) { + this.topTaskCleaningService = topTaskCleaningService; + this.problemCleaningService = problemCleaningService; + this.spreadsheetService = spreadsheetService; + this.airtableSyncService = airtableSyncService; + } public static void main(String[] args) { - new SpringApplicationBuilder(Main.class).web(WebApplicationType.NONE) // .REACTIVE, .SERVLET + new SpringApplicationBuilder(Main.class) + .web(WebApplicationType.NONE) .run(args); } - // Main Loop, Runs all functions needed. @Override public void run(String... args) throws Exception { + airtableSyncService.initialize(); - Airtable airTableKey = new Airtable().configure(this.airtableKey); - - logger.info("Connecting to Airtable bases"); - this.mainBase = airTableKey.base(this.problemAirtableBase); - this.healthBase = airTableKey.base(this.healthAirtableBase); - this.CRA_Base = airTableKey.base(this.CRA_AirtableBase); - this.travelBase = airTableKey.base(this.travelAirtableBase); - this.IRCC_Base = airTableKey.base(this.irccAirtableBase); - - logger.info("Removing personal info from TTS"); - this.removePersonalInfoExitSurvey(); - - logger.info("Removing personal info from comments"); - this.removePersonalInfoProblems(); + logger.info("Cleaning TTS data (personal info + junk removal)"); + topTaskCleaningService.cleanTopTaskSurveys(); - logger.info("Removing junk data from TTS"); - this.removeJunkDataTTS(); + logger.info("Cleaning Problem data (personal info removal)"); + problemCleaningService.cleanProblems(); logger.info("Importing spreadsheets"); - this.importTier1(); - this.importTier2(); + spreadsheetService.importTiers(); logger.info("Airtable & spreadsheet sync"); - this.airTableSpreadsheetSync(); + airtableSyncService.syncProblemsToAirtable(); logger.info("Mark as processed"); - this.completeProcessing(); + airtableSyncService.completeProcessing(); } - - // Scrubs tasks (Exit Survey) that have not been cleaned using the cleaning script - public void removePersonalInfoExitSurvey() { - List tList = this.topTaskRepository.findByPersonalInfoProcessed(null); - tList.addAll(this.topTaskRepository.findByPersonalInfoProcessed("false")); - logger.info("Number of tasks to clean: {}", tList.size()); - for (TopTaskSurvey task : tList) { - try { - if (task.getThemeOther() != null) { - String details = this.contentService.cleanContent(task.getThemeOther()); - task.setThemeOther(details); - } - if (task.getTaskOther() != null) { - String details = this.contentService.cleanContent(task.getTaskOther()); - task.setTaskOther(details); - } - if (task.getTaskImproveComment() != null) { - String details = this.contentService.cleanContent(task.getTaskImproveComment()); - task.setTaskImproveComment(details); - } - if (task.getTaskWhyNotComment() != null) { - String details = this.contentService.cleanContent(task.getTaskWhyNotComment()); - task.setTaskWhyNotComment(details); - } - task.setPersonalInfoProcessed("true"); - this.topTaskRepository.save(task); - } catch (Exception e) { - logger.error("Could not process task: {} - DateTime: {} - TaskOther: {} - ImproveComment: {} - WhyNotComment: {}", - task.getId(), task.getDateTime(), task.getTaskOther(), task.getTaskImproveComment(), task.getTaskWhyNotComment(), e); - } - } - logger.info("Private info removed"); - } - - // Scrubs comments that have not been cleaned using the cleaning script - public void removePersonalInfoProblems() { - List pList = this.problemRepository.findByPersonalInfoProcessed(null); - pList.addAll(this.problemRepository.findByPersonalInfoProcessed("false")); - logger.info("Number of Problems to clean: {}", pList.size()); - for (Problem problem : pList) { - try { - String details = this.contentService.cleanContent(problem.getProblemDetails()); - problem.setProblemDetails(details); - problem.setPersonalInfoProcessed("true"); - this.problemRepository.save(problem); - } catch (Exception e) { - logger.error("Could not process problem: {} - Details: {}", problem.getId(), problem.getProblemDetails(), e); - } - } - logger.info("Private info removed"); - } - - // Removes white space values from comments to improve the filter for write in comments on the Feedback-Viewer. - public void removeJunkDataTTS() { - List tList = this.topTaskRepository.findByProcessed("false"); - logger.info("Amount of non processed entries (TTS): {}", tList.size()); - for (TopTaskSurvey task : tList) { - if (task == null || containsHTML(task.getTaskOther()) || containsHTML(task.getThemeOther()) || - containsHTML(task.getTaskImproveComment()) || containsHTML(task.getTaskWhyNotComment())) { - assert task != null; - logger.warn("Deleting task: {} - Task was null or had a hyperlink - TaskOther: {}, ThemeOther: {}, WhyNotComment: {}, ImproveComment: {}", - task.getId(), task.getTaskOther(), task.getThemeOther(), task.getTaskWhyNotComment(), task.getTaskImproveComment()); - this.topTaskRepository.delete(task); - continue; - } - if (task.getTaskOther() != null && task.getTaskOther().trim().equals("") && task.getTaskOther().length() != 0) { - logger.debug("Found junk data in taskOther"); - task.setTaskOther(""); - } - if (task.getThemeOther() != null && task.getThemeOther().trim().equals("") && task.getThemeOther().length() != 0) { - logger.debug("Found junk data in themeOther"); - task.setThemeOther(""); - } - if (task.getTaskImproveComment() != null && task.getTaskImproveComment().trim().equals("") && task.getTaskImproveComment().length() != 0) { - logger.debug("Found junk data in taskImproveComment"); - task.setTaskImproveComment(""); - } - if (task.getTaskWhyNotComment() != null && task.getTaskWhyNotComment().trim().equals("") && task.getTaskWhyNotComment().length() != 0) { - logger.debug("Found junk data in taskWhyNotComment"); - task.setTaskWhyNotComment(""); - } - task.setProcessed("true"); - task.setProcessedDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - this.topTaskRepository.save(task); - } - } - - // Retrieves ALL model & bases from spreadsheet and imports them to the TIER 1 map. - public void importTier1() throws Exception { - parseCsvFromUrl(TIER1_SPREADSHEET_URL, record -> { - String[] modelBase = {record.get("MODEL"), record.get("BASE").toLowerCase()}; - tier1Spreadsheet.put(record.get("URL").toLowerCase(), modelBase); - }, "Tier 1"); - } - - // Retrieves ALL URLs from spreadsheet and imports them to the TIER 2 map - public void importTier2() throws Exception { - parseCsvFromUrl(TIER2_SPREADSHEET_URL, record -> { - tier2Spreadsheet.add(record.get("URL").toLowerCase()); - }, "Tier 2"); - } - - // Helper method to parse CSV from URL and process each record - private void parseCsvFromUrl(String url, java.util.function.Consumer recordProcessor, String tierName) throws Exception { - try (Reader reader = new InputStreamReader( - new URL(url).openConnection().getInputStream(), - StandardCharsets.UTF_8)) { - - final CSVFormat csvFormat = CSVFormat.Builder.create() - .setHeader() - .setAllowMissingColumnNames(true) - .build(); - final Iterable records = csvFormat.parse(reader); - - for (final CSVRecord record : records) { - try { - recordProcessor.accept(record); - } catch (Exception e) { - logger.error("Error importing {} spreadsheet record", tierName, e); - } - } - } - } - - // Writes duplicate comments to spreadsheet for tracking - private void writeDuplicateToFile(String comment, String url, String date, String timeStamp) { - try { - GoogleSheetsAPI.appendDuplicateComment(date, timeStamp, url, comment); - } catch (Exception e) { - logger.error("Error writing duplicate to spreadsheet", e); - } - } - - - // Populates entries to the AirTable bases and Tier 2 spreadsheet (inventory). - @SuppressWarnings("unchecked") - public void airTableSpreadsheetSync() { - // Connect to AirTable bases - Table problemTable = mainBase.table(this.problemAirtableTab, AirTableProblemEnhanced.class); - Table healthTable = healthBase.table(this.problemAirtableTab, AirTableProblemEnhanced.class); - Table craTable = CRA_Base.table(this.problemAirtableTab, AirTableProblemEnhanced.class); - Table travelTable = travelBase.table(this.problemAirtableTab, AirTableProblemEnhanced.class); - Table irccTable = IRCC_Base.table(this.problemAirtableTab, AirTableProblemEnhanced.class); - // Find problems that have not been run through this function - Set seenComments = new HashSet<>(); - List pList = this.problemRepository.findByAirTableSync(null); - pList.addAll(this.problemRepository.findByAirTableSync("false")); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - logger.info("Connected to MongoDB & Airtable"); - logger.info("Found {} records to be processed on Date: {}", pList.size(), LocalDate.now().format(formatter)); - int i = 1; - int maxToSync = 150; - for (Problem problem : pList) { - try { - if (i >= maxToSync) { - logger.info("Sync only {} records at a time", maxToSync); - break; - } - // In airTableSpreadsheetSync(), right after getting the pList: - - // Then in the for loop, before processing each problem: - String normalizedComment = problem.getProblemDetails().trim().toLowerCase(); - - if (seenComments.contains(normalizedComment)) { - logger.info("Skipping duplicate comment: {}", problem.getProblemDetails()); - writeDuplicateToFile(problem.getProblemDetails(), problem.getUrl(), - problem.getProblemDate() != null ? problem.getProblemDate() : LocalDate.now().format(formatter), problem.getTimeStamp()); - problem.setAirTableSync("true"); // Mark as processed - problemRepository.save(problem); - continue; - } - seenComments.add(normalizedComment); - - boolean junkComment = problem.getProblemDetails().trim().isEmpty() || containsHTML(problem.getProblemDetails()) - || problem.getUrl().equals("https://www.canada.ca/") || problem.getProblemDetails().length() > 301; - if (junkComment) { - logger.info("Empty comment, deleting entry"); - problemRepository.delete(problem); - continue; - } - String UTM_values = extractUtmValues(problem.getUrl()); - problem.setUrl(removeQueryAndFragment(problem.getUrl().toLowerCase())); - - // if tier 1 and tier 2 spreadsheet don't contain URL, add it to Tier 2 and set sync to true - if (!tier1Spreadsheet.containsKey(problem.getUrl()) && !tier2Spreadsheet.contains(problem.getUrl())) { - tier2Spreadsheet.add(problem.getUrl()); - GoogleSheetsAPI.appendURL(problem.getUrl()); - problem.setAirTableSync("true"); - logger.info("Processed record: {} - URL not in spreadsheet: {}, added to Tier 2 Spreadsheet", i, problem.getUrl()); - } - // if tier 2 spreadsheet contains URL set AirTable sync to true // TIER 2 entries end here. - else if (tier2Spreadsheet.contains(problem.getUrl())) { - problem.setAirTableSync("true"); - logger.debug("Processed record: {} (Tier 2) already exists", i); - } else { - AirTableProblemEnhanced airProblem = new AirTableProblemEnhanced(); - String base = tier1Spreadsheet.get(problem.getUrl())[1]; - - airProblem.setUTM(UTM_values); - setAirProblemAttributes(airProblem, problem); - - switch (base.toLowerCase()) { - case "main": - problemTable.create(airProblem); - break; - case "ircc": - irccTable.create(airProblem); - break; - case "travel": - travelTable.create(airProblem); - break; - case "cra": - craTable.create(airProblem); - break; - case "health": - healthTable.create(airProblem); - break; - } - problem.setAirTableSync("true"); - logger.info("Processed record: {} (Tier 1) Base: {}", i, base.toUpperCase()); - } - i++; - this.problemRepository.save(problem); - } catch (Exception e) { - logger.error("Could not sync record: {} - URL: {}", problem.getId(), problem.getUrl(), e); - } - } - } - - // Marks problems as processed if applicable - public void completeProcessing() { - List pList = this.problemRepository.findByProcessed("false"); - pList.addAll(this.problemRepository.findByProcessed(null)); - for (Problem problem : pList) { - try { - if ("true".equals(problem.getPersonalInfoProcessed()) - && "true".equals(problem.getAirTableSync()) && (problem.getProcessed() == null || "false".equals(problem.getProcessed()))) { - problem.setProcessedDate(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - problem.setProcessed("true"); - this.problemRepository.save(problem); - } - } catch (Exception e) { - logger.error("Could not mark completed - ID: {}", problem.getId(), e); - } - } - logger.info("Finished processing"); - exit(0); - } - - public boolean containsHTML(String comment) { - if (comment == null) return false; - // This normalizeSpace call was added because sometimes sentences are written with extra spaces between words which triggers as HTML. - comment = StringUtils.normalizeSpace(comment); - String parsedComment = Jsoup.parse(comment).text().trim(); - return parsedComment.length() != comment.trim().length(); - } - - public String extractUtmValues(String url) throws URISyntaxException { - if (url == null) { - return ""; - } - - try { - new URL(url).toURI(); // check if the URL is well-formed - } catch (MalformedURLException | URISyntaxException e) { - return ""; - } - - URIBuilder builder = new URIBuilder(url); - return builder.getQueryParams() - .stream() - .filter(x -> x.getName().startsWith("utm_")) - .map(x -> x.getName() + "=" + x.getValue()) - .collect(Collectors.joining("&")); - } - - - public String removeQueryAndFragment(String url) { - try { - URIBuilder builder = new URIBuilder(url); - // Remove query and fragment - builder.clearParameters(); - builder.setFragment(null); - return builder.build().toString(); - } catch (Exception e) { - logger.error("Error removing query and fragment from URL: {}", url, e); - return url; // Return the original URL if there's an exception - } - } - - - // Sets attributes. Made it into a function to make the code look a bit more readable. - public void setAirProblemAttributes(AirTableProblemEnhanced airProblem, Problem problem) { - airProblem.setUniqueID(problem.getId()); - airProblem.setDate(problem.getProblemDate()); - airProblem.setTimeStamp(problem.getTimeStamp()); - airProblem.setURL(problem.getUrl()); - airProblem.setLang(problem.getLanguage().toUpperCase()); - airProblem.setComment(problem.getProblemDetails()); - airProblem.setIgnore(null); - airProblem.setTagsConfirmed(null); - airProblem.setRefiningDetails(""); - airProblem.setActionable(null); - airProblem.setMainSection(problem.getSection()); - airProblem.setStatus("New"); - airProblem.setLookupTags(null); - airProblem.setInstitution(problem.getInstitution()); - airProblem.setTheme(problem.getTheme()); - airProblem.setId(null); - } - - - - - public Base selectBase(String base) { - if (base == null) { - return null; - } - switch (base.toLowerCase()) { - case "main": - return mainBase; - case "health": - return healthBase; - case "cra": - return CRA_Base; - case "ircc": - return IRCC_Base; - case "travel": - return travelBase; - default: - return null; - } - } - - - } From 0cdad9e24b2182c21c78c8f53bc3d306853068bb Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Wed, 4 Feb 2026 14:14:34 -0500 Subject: [PATCH 13/17] build: add JAXB runtime dependency for Java 17+ compatibility --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index f149b0c..d24559f 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,12 @@ unirest-java 1.4.9 + + + org.glassfish.jaxb + jaxb-runtime + 2.3.9 + com.sybit airtable.java From 0f34d965debc8db789720f2464845eb55496e616 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Wed, 4 Feb 2026 14:14:39 -0500 Subject: [PATCH 14/17] chore: update PageSuccess JAR with BadWords service --- lib/PageSuccess-0.0.1-SNAPSHOT.jar | Bin 249525 -> 243090 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/PageSuccess-0.0.1-SNAPSHOT.jar b/lib/PageSuccess-0.0.1-SNAPSHOT.jar index f87118f42f18876c3c9bdcebf82f866c4be8a134..f2929e603a718952bbfd006b4af37eee5a4a6c7a 100644 GIT binary patch delta 20386 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 U1tXOssYvQ7{`RVk#o0vt56FM&)&Kwi delta 26773 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�^#*bW1c!oN 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 cp$GGjXnxSI8o Date: Wed, 4 Feb 2026 14:35:51 -0500 Subject: [PATCH 15/17] chore: exclude unnecessary JPA/Hibernate auto-configuration - Add exclusions for DataSourceAutoConfiguration, HibernateJpaAutoConfiguration, JpaRepositoriesAutoConfiguration - Remove config package from component scan (not needed for cron job) - Exclude unused services: EmailService, ErrorKeywordService, ProblemCacheService, ProblemDateService, UserService - Remove EntityScan annotation (using MongoDB, not JPA) - Update PageSuccess JAR with lazy initialization for BadWords --- lib/PageSuccess-0.0.1-SNAPSHOT.jar | Bin 243090 -> 241901 bytes src/main/java/ca/gc/tbs/Main.java | 17 +++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/PageSuccess-0.0.1-SNAPSHOT.jar b/lib/PageSuccess-0.0.1-SNAPSHOT.jar index f2929e603a718952bbfd006b4af37eee5a4a6c7a..24ec2d374bdfc2958fe74b1bd652bff85ed85b8f 100644 GIT binary patch delta 11396 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 Date: Tue, 10 Feb 2026 10:54:09 -0500 Subject: [PATCH 16/17] fix: resolve PR review issues - HttpClient v5 compatibility and lifecycle management --- src/main/java/ca/gc/tbs/service/AirtableSyncService.java | 5 +---- .../java/ca/gc/tbs/service/TopTaskCleaningService.java | 7 +++++-- src/main/java/ca/gc/tbs/util/UrlUtils.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/ca/gc/tbs/service/AirtableSyncService.java b/src/main/java/ca/gc/tbs/service/AirtableSyncService.java index 5464fd5..422a1f6 100644 --- a/src/main/java/ca/gc/tbs/service/AirtableSyncService.java +++ b/src/main/java/ca/gc/tbs/service/AirtableSyncService.java @@ -1,7 +1,5 @@ package ca.gc.tbs.service; -import static java.lang.System.exit; - import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -114,8 +112,7 @@ public void completeProcessing() { logger.error("Could not mark completed - ID: {}", problem.getId(), e); } } - logger.info("Finished processing"); - exit(0); + logger.info("Finished processing - all records marked complete"); } private enum SyncResult { SAVE, SKIP } diff --git a/src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java b/src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java index b213ffa..6641381 100644 --- a/src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java +++ b/src/main/java/ca/gc/tbs/service/TopTaskCleaningService.java @@ -51,8 +51,11 @@ public void cleanTopTaskSurveys() { private void processTask(TopTaskSurvey task) { // Check for junk first - delete immediately without wasting time cleaning - if (task == null || hasHTMLInAnyField(task)) { - assert task != null; + if (task == null) { + logger.warn("Skipping null task"); + return; + } + if (hasHTMLInAnyField(task)) { logger.warn("Deleting junk task: {} - Had null or hyperlink", task.getId()); topTaskRepository.delete(task); return; diff --git a/src/main/java/ca/gc/tbs/util/UrlUtils.java b/src/main/java/ca/gc/tbs/util/UrlUtils.java index c4d4d98..cdda574 100644 --- a/src/main/java/ca/gc/tbs/util/UrlUtils.java +++ b/src/main/java/ca/gc/tbs/util/UrlUtils.java @@ -5,7 +5,7 @@ import java.net.URL; import java.util.stream.Collectors; -import org.apache.http.client.utils.URIBuilder; +import org.apache.hc.core5.net.URIBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; From e9c1f8fc540de8906dec2468198a802f633a3ab9 Mon Sep 17 00:00:00 2001 From: Hamza Aburaneh Date: Tue, 10 Feb 2026 10:58:33 -0500 Subject: [PATCH 17/17] Update PageSuccess-0.0.1-SNAPSHOT.jar --- lib/PageSuccess-0.0.1-SNAPSHOT.jar | Bin 241901 -> 323037 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/PageSuccess-0.0.1-SNAPSHOT.jar b/lib/PageSuccess-0.0.1-SNAPSHOT.jar index 24ec2d374bdfc2958fe74b1bd652bff85ed85b8f..b3fa8e3ae31a40a52651c4b85836a86021a9407b 100644 GIT binary patch delta 197993 zcmYKE1yCJL*M!77{i z8HV#8Enr0c&)xhDW(x9OoClod|2djx;Nl_w34MhBNBlx8gZgJlM)?B$Pn4kDBK#9s z_>}PfL?0=_|FR~@1pX%wD5(D@fRw=hrJGZWq5KQ3WHb6-KZsm{aQ`f_{J;KZ;T9(T zU$B-aBkVs{xReIsKe4Ht@NY(&9rPCdCqyh^piuv-*+6tqm7HH10s=Qx)tVRNqwy2x zZ|5U3hpdqdd&mHpNiYOCGW3)c)PV)NEL^I>43#K)CON^7%tW~C&_OH`!==8xVYSw8 zwHn-Zk)ryJpRxY-t)8o0E7hK(e}qr_EHhBZOzV3c?)Y@j=!d43cB!t0P!Gw6b!ETURO3%GQ!HqpnrI758~Wpd!Fp5^N0 zZWV9AQ4*v{l>Di`WU1C6L9Ius150Rktwd&Yc8M==5f_ta804=S}*;Gr}Qq8`GMNtumHRbU; zy*?81J?ZQmI1C4G>jIpyPyu3-!RbyEb@(ke5s8!3?-aO1)v&CAA}$KSc_^@@#HQG! zp3}jdF43q{oODsXm6eF^s(&zSF`JopP%4|CS<>#l01Wop22D|J%(ev>Ll+=ym8|XQ zP#Ffy!{ktVR3fS={qDoHBMhb~7c>V+@W^e3UKw0B#cOP`Soeh6R<2xEN%YU1ZYZqn z9=}9x)j}4c;@Y`@c$e8Hz#+?0dSS#c10v^0Qr*{p=t5h8-eYkBJ3B|DqtIYK)VKLy zz7B@1^-V(pgTw;@%?_722rvMq2oW_&2tTYd;#EYnM{lzj_E_i2ZF5fsjxu$V(Qla8 zvDk)>32O3-bn!sfJi2CtnB#P49V4^77n3KiUYPlw4iy7v?I+GJ2XmFKOwBBy#Mfd3 zy9N|Jf;E4N3Q0nvtWZ0>4sz5CXs?O0FZc6MHRCukR;;60%w7nkrspvakrxe^_q^C( zsgm(}l)7>1O{p=*bhv!F9?;4f7*S~7DzR94fdR2Abc|4`M&tP2+;0O+VI zs2S3;&05k12UmIg#fgY;wv3pY0#0lrPON1(o9=nXCW`pSSj0N681)tT*11jPkA*!0 zUbNL=_7o+}4(Rp$n8<4$B8z#Rj=;CV)v~r8$H4+nk-cVFv*2PIN}vtrC}k>z%TRSsNAI;6MFU-*MY=B+=5KYunC{JLD;W9cBI zKf8>H46VT@N)qWdl3yH`?}Q$1_UAeatE)T)+1T@~aPR_)KW}!FL>p?R==Nq_O}kOO zZ2n4j%(b{fyOvgJC!6Q$^U}2mE?Gsv1B3YKiAh4E92?Zbr1wk_B0GsK83$zf5jReH2%-rR?^@W?uQje`S4WV)o;R0@W3d!8rNE(Imz zLb47sazAy$eUjM=GmV+CQ&kFgL{1R*R1E$;nw&om*H#@R_VPh?=J)64J9{8T-H8C1 zp?vQ~Huk6ea)Rh}H5tK7Uh~!mN1Bug0$}}eLiLJ(GAv$kX(&yuP~5n>ohiLZ@7S0h#!2l6A%CP$wY z=bRo7E_=?g4VZXftjNr)X|XGG5HU>Qw%?Tez_z-S{7{Q9g+s|4zA2#PZ+>wrqWpUv zd2W60tY5zjSX@FM$su%%rU?q=1V%#LMpHX#Lf0A0HQ?%xAxF7=)&secnzB!YP=EZAhd&m1ChSbhgvd)<_uM-jG)-;OKd3m8+gqrDN zT-2l0{Vwi12IP*PsP}+Ea3*D2&NtRWAqf->8yNG6V>^XvME1Dd(j1U#ma{T7i|1{G z=O(5f+kTrPP(YtF0l?2|VlCE&y{`H=*TLc&A{26VTw3G5?(-#$tz_`k55rY=|F{jSzEXLi7t8q-0ctGL)0u|WfIV8A_EHBevB5$abr zmael+{Cb+P#W`8-a#_?H1)FTw7F*-7VPpF?9Zq1uz*E_16;?4XBjdDy2P<_hZG2$O zKUwozn~nkY-~M{&9JG;fMR0iulqzC6*d=)R@T(@Z7)Q%C%t7YW4K2qN6B8Bk9akfa zQyaSLW{zn!)9HflRayikAQx52`te5S(}p22e=q2;>Wlk2*xOekYdT7qHjO-pG|?`u zgWH%HWQ@Kw-e15NC{I(WIwu({gr`BpLFaB9KoDF~_kPti|JI~^Jj}_j*|*Zq-zFndF+O;5ZPQV=to*? zmuyN-Z7vL?^d-iiuF);SoP0P@E~4XJpuCE~hGmU$>(ul-0%{`X-N zmy?T9#STDepIhe;u$QA{dGBiGna#$<9)1*lecUWRrNo&Oy@IQujmjHq*1s>r;y-h- zPj9cUv`{P)ES)dYJ$TZR!^s{R)inNIbDr2!HIUmZ|D6g)6zzfF`&qz^dD2A4`JnGb z=_Vr}i%GZ;12?&WDi?LTJ`13`$Po34*IO)(+^z;S?ly1EhkHn^u;c4y`I&D*a(hLM zeGIgzY%r0K9e-OhVzg#()o&;n!an1qTJrrkVGTtn%oc!t4I(e z#Jb&6K35CJW#)e9>BL|H^!%PMp8xXI9|IOtn4;8p6?@{1)~2TNpbhRF`H1|XbOFgh z2gn<$z*(5sAY*_REH?RmF-iRtd4d>iZAe^PFyG?wfc8)g?yYECT_;2gQKqbTGxbvt zyH54wpdjbtte!@k)(80K_70PY&or{MFkl+8QiMb-zbJ!yrR&b8ON*0svc7!1fChsC zCxpZ%m-?&}ULWq}6%u>sVsY|hu00|kUo*#qOh2W5u%Jm#0zKZ8o8AR4%-7bfCqiAU zy_Gw@X=|r`&O>LoD8t)5WKIMdF)Ee3hkoaJKy}2ONZ$#j&HrPyyT0}acn!%Ae>So$ z%OyFGyfx5@eq0=i+7Ill7Ja5Gz_R1vtC%jLY!^OpBuEPVv`s%Lq%P&$_X&twT%|% zG?FUrS;W;_*>pO+#m5FfoKa6=0Wc(mXz1wo&?J3=lAss&jo>Zj6URW8E+RC)DaW+z zwx-!KS0y}(n~BU*f5Rbsd_GX_9Pt(~?{fhjuOno-(-q>LDjY};bDzopjVpFN39F^9 zV2ZHPEM=5<-@1>HK{zn!AY0=!CecV5-IlEbDlUpi$sCUfh1X8FZ^9+Zt-ou>o8|A@ zRcXIc&*B1{*hZ14~75K>8TJuLLLyKyG_O#tZR-lkwaK zYm6qKb*!}IDg;u|(ZZ2VPI+t57wxL`nhRh&y=uyt#*i%Pk-Z&_dsrj$t>7!}g)cOd z&}-hb^88aw%e$nt{F|x=y{Ly1caYnnQSw)8#TyN<^WL}Qk)*(T|EanMWxJ6U4$i*h ztPDcD<*azhlsVAylkOe*Zh{rCO9=hfWbp5G6hdLz{WlmfY?ZZUp)lu@Q`@(I4c9Vs zNuper0bmgMiP{?l9Q+?$Xt>FXCu%@{nsFp=SpM(dci*56A2T+Y8*h!(Wc-&G%a;=9 zd8=H0EtY1G1RhLEjv^-%*qvs*Ov`8D&X5^)s2yrw*QkQRN{j#d0k@YS3Y00Y5$A^< z(Oal$(h8~@`%ZaV=N0$P!QW4k-pbrjun|;qO;`o)(c5av%_p~j?w365r=+z<^Zvy| zm9%UB#(mS2y?wpuy6hG;_9-%Pv9>7DNT<0|b=^IquG%^#OIqCz|4!ecUZs4f&kW?F zlt_OE>?(oM&$m6ymgdFzKTF514j(D`BdTgz5)d>AvfHdDjE40hpfeD_w?$*52WW?( z^W&l!oD`8sUlo1^ef^e3DOhqX{cK)2W=54Nej>sV1yqr1QMP$g4)@9uiE~?IQ(G$J z`oQM;Dv>(4rE|Lk07d3BOE#lN@7Ns9Q4?uYp?ZVrQChQe@7{C`H;tB`j3jO6D?pW3CO)kvs<38AYBa)Py@V#!# z`}WF(+B_b;m0Ji+q4E0$(QmT6Ei_)>XYv=-Ki9kqm}Q1gie?8bmi{xCGAT5Z8dZhc zPCseg1wWaH?Wl5T*2_8BRkm@+vH2G{=#4;FdfF0{`4~j8EUt@&Vgm$#5+$tDzO8A` z8tWZDYM=OT-CxSJ8|K87jy~RStJ3y& zuV|mvIlH|!OkL#MxrpczgtP1W=&4z18cw`zBA>_HN!$Q9s5i zPW+5h=LkiPcKqhdx-~+aMACYn(|6t?r9k=plc(S3c01P(zdx=%C)kWdT7j^lLa-SB zs8KiN!g&#xYc2d$41rkG2opf@Vc1sG0T=IyUQY2D_p;6}pE=#M`rPIM0&!;VFE>Pj zigeM_N&j-UJte__(z&Mf;M`~IR8MbLPPO}5_mRBC#hY1ow*$&z;N`EOHDE6=Pk3^Q zMlDkof~m-J{6M9KLk?25wV-kS?(j+3s)TLB!bGs*e+%eKz;_{Uw5GCA{ol@H7&=7u zqC+SN*&aWUPc$#LnEZHrBtNOXP~6CMdr)Ckr0%oR>4c8>Bx#ko(!0)Mk+~(B0)Lhu zmnXV=uEL`j`Q{J?D#j(lDslxetd}3+&m^8gA_0@z^t^*iPBppKzDd~O3 z%BdsD2=)|9V4NM=N)aT!lPlCu=J_<^?F$;C11MrcFm>AS zkLjEM{yC@k%xFWsFwhE~YbQ*OXZTv&kT4`N*r@g^;-5q|Jm=o_MnBh}()O;-m2C+I zH>5CEFh7s>tH-6{dS`amQ_ppoGufLFHkB!Veuw7q@Gr2LsM@)LhY9YvS?g=kZ==Md z#L4f?s?h3{SPXs!)(2&#NGjcP2fS*ysS%cn>az_l0Ca~7^-Wx07M&l2yAbSwCbHfjSbPj^XMByNh7WyM0xOMU z_X*#;Vir+BVQ9bWCG2r|0#e)CaIF_F>Zy^J_8cYt+-qwV8?8|*$XcCQiYr%1mpY$X z0l47gGJPoOK^PL8PlhkSs|z;|Tq~)PBPbG%cOBdJIv>no>jhGuB`<2mf#qoH7tUYy z-t0yJhzR-)b$;HOIQ1>TTqBBSx#os~A6CnIe$MnP{Qci5CXEv>s2G`xdLZ4w`g`pr zxTUE_>{XrVX$=^gXXj+>yDZxwY{|vpU>o~i3tCyRphnoAn+7toQuYGymlXH*64Yb@ zk4fl&+=k`xqAjyPN~5>(332B*RIb%)D=7Eq@nm~!?ro9J2NFcI&sP~;*dLb#|w3i>A(jO4g~f46kFKx7KNwp}i)5`d7@8k`+eI-2h>a13FCy_9=q~4! z0pS1x{zppIbvg=R5$G&dX6u=6F^%J|8Spoizz>Uyx1bzeIvC1 zahQ1^S{SoeRz0-u4dDeeQzWLmiAK^*Dj(>;@~Jfy8)G%zpQZItn=!f)n6jiAUU6$Q zE$U0YIA#V7%-|ow^dS4(&RW%e#>mus_rR!BQ10v@S(YT=$dKK6!6nrr5rh*B6*z<6 zQmmZfx_q&dpSFa3k6vgsLK8`X_9Ha}vB6~Rbt0OTxAfkO;ba3XMd>paM#@}-@3A#O7vOe)J0RBQNEoiZlr@O9k+ zVjbG?I7i7SG+NKUR3Xgpv8COKrKq}eW00vWX>&$&;^XXO0#y_Iio%5w1QI)9_|AwP7Q4#EHpaB+=(ObaxBgI68lkOvp6$~~1iDLb951J;R4d|H)yAEWV=zO>4R9n*88#)8TpQ1i4j86N$S zi1Vqmw48@_xA`HQ$}1y!m43$^T)Y=xQf^VsW-LKI90HL9HNwzIioq5lGr>O@;Wm0_ z^b9ZHtgGg}s2^rHy!yoMyJ?reL@9N2(b%d9Y5+Dn4+d17s(WiAhRx}E$X!Q-3SJ<9(udhsU z>6J^21Vk6Z234bETzl6sk_ztf*(KRo+NMVtP{5=inNe$78lUhra7%{=yVhYX9(O7J z87dtU=O`?m8|x2F)9vIy*~=DOw&g{pb6#0k93=^Dt>5BT3mrPUAoKwjLiIy@cO|PN z<9%`3bLZ-HUv5?DMk}}P>d6t&Yt$|UQs23?HP?+T^)rXa}_ab+PNMNk(i424kbLf703WnV&wOWfQPYWSd1$BA!^oukH!z#ocPZPw8t(`~(!l3jXw*E%qEYz{ric3f%9q}`W zkk=?;Z*q8E4JYKnjOxt5yc`n=Y&HBqm9jqpW+Wi|ss8@()1M8Y@_RyVamX7STtNrK zS0|%1mTa4YO0h{(d9ITrM8vWHN>y2jP82^UsnOe2O%t*`R}keD=-aNDf{NtLyI>em zEJgz}X-zI8v?pilCYxxR6QbaQH)60buo74nUk{a<_jVL4!GpCTByOJHj%m(0__G7! z(qi5Oz$h1aD24S)2w24C4g-xxvD3Mpn?*d~UFxQn>Nz@lYoxXd@#|Vkj~UWJLfG#` z#2tFFbW-2g7WCAIM$Z-Lnd2m z1368mNN82)mWsHUzxoB{f&fq+-?|J+3J3(!48NJWi78l(Akbq%6D&n@0*1>=KZDmI zknaB5{~?wc>bD`0I@zzk;T~Ov#EM*S^-YY}bQlj19SjIddW%{U7rK<6dZ})J6Mu<` zK~yxzArek^1|Q8VhV@$V-FT0P-UXQDkw%A^nPtIDqyaW@W*}&26Y4h0Bc+6u#t5%2 zuxBvjYL)ns`q&nNd+%HNg)pGhBc|*?9Fm!SpfE{2*^fTcArv#CUqH{w>Oo`qmueFhwu+pUuK=LJ){W$& zPXc3>@EYQG`JxdbGo3}2kkIvTiZ+Og*wi5+29vEqyh>M|1C>eggizUFjxi>b$?c!6 zppf#=su1u)q3pM`>u`P*adBmALaq=%cPM$^v`jK)fU+Woo|a%2@ty$=%5B`kr9VPM zVtj3AGN=oGy&O%Csba-K8wi<{1GNS{{EkRNaFP+)DN6e77-{T%RO>yM8J5F1&ir{W z6k3smZHlSO){Q5bLklSHGLH(Ucs;EO`WkLiJ+O0Z<_upoa#vJ@_y=9@W^@uRYr^r4 zyOS``>7rAl779(O*-x=&ACqv0jtFEf5SV4P=E9kYk8lgW6MirlK*rzp)yZqLg>1YU zJc;iPQx(zj;38KupTd}h81Hb+?OWySW>)@WTUb+ILB+kru%)PIb8Ge|i+xQGB#{!6 z1r$xfOP18mp})U3^D6#trurumr=^u?C$P9r{1a`wR$t7dln3)n)Y9AQmCyvdoa!sA z%va$}0f!!0Ka>{8Scrwko&!|N4U2*Oi@)0$@lTX>k5DjU;MteCL^NcfUMGovW9DI0W&`Ge5W$aUu*ulqhzBvs2x?>g{p_fv3SCx(;Ey%<%y7H0rg z-AFGL=e&B5TbG&m@bcUa3Vas=gkjLnMWRD4%;&g-_r*(&Llf0dIPM?stLWF=Gqa_f zLokaRVsQ0K@K{E3#-R<=ngSh-ZQB>Rn+{5Cd}B6R`=*y0bj6o1Bor%VOGqpP#PEF< z>sB?-@-^O82k*SH2M?{8$b+C5ErARH~lbxX`k|{a#|PS{*b(6J1R1 zLD)Fm+JOAtp1HJu;fFSo=Qld{84E*P8zHR{+DVC>>4PvdCUj~M)KTHa~n(5j)_VAg_vuIe&gVR3y zgPK?`tC%PVZfU^f}WyP-G8sT>4Pv-Tv7n_IYOnQt2^Kbe1^wKn)=G&GLce ztfwe#&df><0Q9&-oad`YtvoUCJ>=n_d@1M7X zRpP4&>h5<2T}9*VO@XwI*p9Trfd^+_SkOj=Cc1@5$j(#QPYAbgJb3XvCB5OtY%k?J zyeRb8W?VAP0N=UoB$C=_i!X+ki3SrAep%ef>45rOKIT%sDlv+)D=f`w5-C zJB=MVDkdICkf^A@KtG`D0Bdh4W4!NoO>|aTvwMyK1j;yYZDhhjG0?U0|#8Ycpoq7YI>kTmnk|# z$YmD{dS`y_4HJdE`CQ5M^E3V(Fo@r8m zm&kO<^(~aZoghBOS;0rL+GLCf4t|V>wm(7(XwDs$a)cKOM{C83VEyO*-RXC8ZDpLj zg7UD50o2aO>Kc;Oj77su|J%Xx-V#w>UKl|~l+=%+uy`;j)pbNyC;@zNGv@}DP^3B# zWDXY=DY`R4U@=f4uQpOc6CXrDBFUd=(4(D|d;$$?iWAJ#9B=vOI#?7KK+rM+t0D zk2L@?o(EYiz7NVix^AR)km?3+aJZU)D$~u7ebD|crS@I-K4!|z8X~jD1L#$m1Y73p z{{TPG75vB+2_32Lr78ItM%BY?!!Zs=mL~-RKPVQ%7FrnhzlwXo(rl0Hvjn!c^UG`A zF8#dz1(VCCs*b!Yd$K!$UKYu}Dxp;(7n@Bf;nMkxsXJEv)cx(iF%Pl~O$F-$W2h2y^3uT^*^qoi_^6;$Ivrv!YY7Os8BYym- zU8DEVC8bu;dX(}LTSuQ%)1lLsjL2&9woJ4Z<<^geCdvB&Sk4Cci%A}9A+c5ewXEsD zokmtaQ)2LxQ_W-si_ch|n`lpixID}F81(a%3ol4Yf+#MaLIoAnr7L~c?MSqIDofPV zqiWXI?YOlx)Fr_cC)L^OPav}N>hdl=MbAotbvrmMPL)xNoSf2)=AQ#3A7v3}1RWIm zj_YxMZpiy65qHfLXECXWB)#RiG}Sq-FY&whwbYkJCq%pSE2_AECV1b0B=Nb*s;Zm# z2|r?R7%M4is}zpc8OCG3RO^&i6$ONNV|4vqOe0M%{F|`DsoBkS?0*d3^Siv8E9a)J ziSTM=VcSpfS??L{N~x?nmGhV}Ocx- ziK#28^<@qMY?Nd5S$v5RP$0V=M%z+FLF!-TSYE8S-@HF2HkNO}{Szf19CoF5sB z1>K98jFQ&)XkL2|KoqGZTIR-)^kX@Gpe1aEW>4fbUyddHxVdk+&DFrG^TDMyd8Ara z2F&pJbn>L!CnI z;0vL#PBXxMD>`$ZtHy@0f#Te#VL|yMzr<#!Ad@;H*_!=b(x zXer~P%>K8aHV=v&v~P)#mr4A)eh1Pwu6?Mo>mbO*?8V(gIR5l6+0k+)?-!;&Vf1k> zdj~=;>61#&Y=1L&t-e~0*9K(`hv;2f^>z57<8HxTI;t2}@TT7hRWhpQGpyVVVpz6e zjt6`LckQB3qKB1cPwCiVdks*OnKqisk}{35Wj+kL2F`1Vf!xza4H(G?ZG(s}E>O#E z6!GVFLMa}&JJ$Fcf_srk9+VLp9{1=Tgu>V0=O=~2e_l}Xh6JKmH-LuIFVqLWN#(gi zd!Yqh zZty5}OJG?BQT|*~X}yY9^V_VgH>l$4Qv1+JQ#`SYklgVQdtDhC zOBdA2W$^Uhk4($#9}3Gc)31BgK~Jbrk|%#=W7^wu+TUIHhhYVx=sbI>GI#qh$M95L z8GE9R@Ifxwt}aS-q(Wt?r@77eCqySRKtPo0t+dVtWOu{0`6=*RXzeH3Cxx8Q@37A_ z%N-PMYbjkC#dkUUIE(n!i3u>}FwHJX6Q}=Lw5j&M`%Pd{vyNK;@fzIj!=Q4)eV_vU zbXT0^8EPjJZ3Fl?!?NbFF*%Of`h@!gg()Ln7ZfrY%R!hsmT`=|Jv_$m?zUcLz+IlG z$n2hVbjn8@IHSqE^|hza6vYj8S+y#DFw8-2J(~DpepG+m)YA7ykHLvo!a(s$*0(}U zdEQNdalcc9alfiW;y&;*c*?-K;75Ee=p~H98#!U~jyH>9*X&@rf#Q?`xuH6;>3QAYAH5>x^h74lnl)is^Hg6DMopN+>3Z zrN8_$^j7BP4_+&ZiuSH`rq3g513xaZzCIzHl>T>fTU$MfDGClmURra?n(hljdJtT0 zA}xw|M;I?Q|GiJ7bi(d%gp@a@*^#rk2YTH4vgykwFvPK^TR$i-fVHzfyhkXM_w@;Z zJMy&gJb;t&5FUs|I{fQNr!6|syyiKiHtMw5GXSbPLD_=mM%DqoaK`JJ{(`k9sTaKZ z=!^K8(an3h^c)fZ$9e>R?G^-d-s5=26pACAwZ1)kBJau1yhbP-U%iG6;1G`A1x;-S zFn-^AbVmb)`ae(if1;tuCpU%-kn#)~fAd|s zfTOKFq}*ncUzp#}Txc>DRZ4h<)^+5hJB@0$!riAu&I{_c;_qx7i202RL9E>g5o!8B zF@mwx!RM(fmlNGLL(Xl^LDBN3xl`$9r|g-9l|db#)jz5 znr`sG0ZCdOg3em1PDBVeZGqTYGS&83yymL68^y3#=DG z-Gi}%wf6k|l;Z_pm}lmX^(x2OlvDNQSdg}{*7e0TfI-XYp!gdFrzYM&>6@5Of-%(R zUS_O~6%9+Ct4o+0YsCCKOih{)lPfRg(3DoZJ(UkOr)BOUYss)S_$(<+7|kD12Bi~K z2B|Ls>Ko)IfTXeUl#~1_S*Mqnx~EkCxzw$Y{7LILh)J*rB!IwxDEKaFkW`BCc)Pi_ z`?{8U@VKoaDXXTSTalK95v6A~#*9w{aE7N8sqA`Kt^(i+#T&>ht6e{FyR=ghv)7DVgE$=R%s<+(x|sJ-nZQXe#h5w zV7xpGSmLga)}d7%;q#?fu`SoJE_1gaRc0jAlt7h(Vz_X=9~L@U#1VAuG8kSFy5uFq zd-x(`cC97UG!yeFb$_j@M4P}@kw_}@2<4(qT8IzgC`Y(Tt0Q97R|&eXlMlK$;C*fc zS7|VSXqFtB&;kIlG0K?(*~dOjiKOvvG?1)rR>=x(AFJ%HC`qzTL>%tX*$Ea_8K|r! zDvNt`IO+fef2c2Mj+bOj#N;p>6g2uM3bvKW6&_MwrITB(&E(*(%ok(2MbG0G%Q@`g z_WoW339a5xVjGzoer3V>rCgCaH+~VXh5mB^r11o`{r&Io!;$u-rQ(_HR8!pDnHEGR zYGJ4;-FN&mWAri^k3?$4O1y0S&L};J<#?j4v6|QCeU!WT?CJ&jpM^E=^^Osuz1n>e%^I0n_`2nu)t0&J8DOsvRQoe7;+ zK&`y1NL_3Q8^QhBCea?$N4GUa(Z;A8&)@e|f>4+L+7~Aq!^=NAn|$pj>3TwS;p<2I zvEN?A(~aYF(msqE1TPRAvb7X|+%t6*`S>J=@}$L`;cOn!Q#gD0*v#+&aeE8DZuWt0 zfBfIs;b*0`5aA*28``zbH{}bY5325vPf+&uV4>OOGs^=VC`WL((3JJodOi2;>jN98 z;C;gQX!v;-_!N|_Jm`iPxp4bj)05Iahe$(zl3(770v3q!W^Y~2t1|5X+ znY243eDHXq{1o`6{y`SG{r!gZ+4_y}L-12e?y$RD^$q@92KGAXD5Sc8s~8fS7`rrb>@henz@Ga!RgyibHr z=Odj{yH6>Ha+hp2#W}@l%3H>$6J%VSag}LzWSF8Hq^n2QPxE}7SWbzZ1i;a>(;AbJ zW=JikmdkF@uuVzON=Q#o*DEi=Ox{TIRFnCtsaK!J+{)OWq(!$X&zP=X{-xYluUvr4 zlVMKAkOI;dMoyQUh7e7aV&F}xDS29nI|UV9E+7h z?8Q=%2v3Jbc`^RCqzOwsc|WT~uvQ?nY68IsDljOcPRx5g02`5~xJqgLc_F487q@*|mhz#ghuybGoPGt0f)f8Tqm5PjN(KpmNF z3}GG7h)t>>4=pN|O=?OV3}TZ~wJ@*X*6~w&=8)9TDWQrQ29CU@H6b6?1)!u9;vy<0 zyT!?9Xk=9xP%aV^9`q`d@q1Mc%Gj66*Z|T|DOzQt%BKLyWR?SN<>F-`01x_U3B9zK zM^uVr0FCszE5*Td%9Zu7WL{>SLgc2zMP`_)LCp z`?MjAwqyVqD0xR1qg>Cz$dujGg_FvYe><0(Cw)P4Y7Fu1hjcBWlgpKFs=to4+Z8N+ zxq7^(E?>S5``L(b>JPjm_E@3S;1{eL?kG3BHo_%5-?>To1R2LW>=VCWH^$_bnDpU> zVl#-Rgm*m)ep>@y5auXg+Q&#C`T8w_o#gmCg^HE0P5|QPYi{tE5Niy0*yClVyfK7O z3bq)06kl@SsM0IbSEtmaIC3aMYK4|EL2`B_7qX08-2!*9s3()U5`!R2D#}KJ$0p#o zXifK9g-|5TD3XEbFHsvH@#Sfe z-JeC+iO^UpL+cH{BTjNaPwNJMhGoHg)yx{;cv_KpwuJ&_#mO_;Lm) zXS(rini0oDckPeHg;p#jQwj5-**7KtjoGm6nhW050AS}ht^N8ksLv=A{#iEgElpDC zm`y~RmCxE7bjo1^lq^yu4O>vsY~gLN#A>aSvas|=;a)spZ_BqByFd57UV43|@u+)q zh^z|Z7+$NcF2Z!wyq>kpQU85<%6@Y)bj#CMg|rk+9O~uo;Qb4~(Xtzoy?n_e+yf38}P@Q7!^m_TB+H_e|B+w)FrWKcnFleL&S}k z)lD$El8|u|*5l=(?raZu56cwynmf8+8YvBa0@ona?!iyH*-yLcVx_{t(T(-EWTR%X z*rzwfM>o^2PdKu3Qf0eHTE_&8<6A%HL|(xlCg3Aa0k()Uoio5kSgfbTi08_r4qyMh ztNy=tC61QpYv5ZBCeam7<169W2hDo{*WGpQ>r@#g7agW|$e~4C9olU~YguoQ z?g})m*=#`b4Xz-%_+UOw+eNKlLAwpYOBjYtLNq*U>6fy7Pc2nf#QL(j0BJ{6*DCd$ zDbfL`h(!MLYNzAGrJrr-!m`@0T75NbK5=WGlz!t2x7g=FoKa`qW$^nD=j2&*g7L^^ zv@FrmuweQ75GH{2IT}nA)iOA4QML;dYIcroDB5U2N0)&DJGyv2#*wEhR{m$DnII(d zfo~*!d{Z~BShb=pThFVj-Z%0cM9AgGziH}nOih#pSGzM`FD&<=qp#KSpZ5p|09ufmyl^ji9(T7*YPxotiH*^)>L!7Z!B zsW${Hi7-?Jni;>eH4D)ZFPyCoXbYkpPeG&skuN0yq!Evha0R48bmx>4nIEv_i?l%F z7ak26V-ez=Re9qWf>koXb$qJi?KHNQJZ6WE(7Y@f2VQ!&u+c=gI8qR*8HS5$i6q&m zYXx}%2U5dTkmrBT0) zQXLiz&uT;#Y@CBuUNnZ>SvIt;VR}LmkAV2&?`S^`*0H-}go`lWqZ?@kh_XfNW{PDq zOgd{tbhL^IOM6i9=bS+)OM4Vd#!U91+ffwar@`{Pk~opWlSA~2NL|ZjH|4mgtgQ|| z$`61cKP>e8`4U!{iQ0eh#@|!FFdD8EN&tzDNKJaqcNro;xtOdN5>w`YS4g>|s^Yq~ z_Q-~fBZrA3cOZoK0RC6J3X@J1lE&4aUN1tmZA(~Mn;hb$?|(qW^FjbyVF+8&u$Dy0 z4K$Grv@OOzgbyJPsE93}lO^w3W%&}n#5UwTHfYmLvh=}yuW+YnOK^GWa?!%GB>c($n z!v}X0oDbQZO%)VRmGM_?_`$%6NVK!4BN3E!Ca0X>UVbF|saZiKb!XvoS0BVca58by zl6`^z#{NvJMF+g-ILfkoDwFmEMqF?86@qNxOnJimZb8cJyKhU8{LCRr74s4WkcUTM zCMf|xrZnpzwi}`~y19tvBX(YCmZ;lf-;8WsgxiSh#z86s`cKULN#3&tg9lh#epZnX zA#xqB5MCur_x1lCQG{ZJ5i7o#F=X2nIq{##MBvXcJ$iS`W)Kvb;C}Pw6GHEhUE}ra z!07h0Fo^uFfM3>+wvCXzpPXa#(35c&bBk7HtUp~DT&m7;sF0%Of%Zv5f0ltaLM)?J z8>UuBUr2a;U(747M%r5WWb~nU(V@xrbBaXeXsV;Zu+^smKs$VA0xKJF;lWp7J@1hf zq9tzW2bt-pO8WWHMzu&YPQEe%C|tiV;?*lJr54Jb3YWz zfPBSlNs)0>10rhhX=~KXSTpZr&rc?^H<@lJk5~gECx=c~h80K14ye$nV^g!}RP!V> z6wuw1(7mt&!aQFV7)R~|k2Z@=fF-}AkH3Y8QCFAElp)F$jv)U8tYI<`^AktQP01FM zF8)S*X=KwCK9i{lvFl8BPACazwyELl0o9jPCf11nw27oUEgS-mF{H~*$rb$|#f$OS z%Kad3%KArq$5pGtpG4Cv0Epv1)NthPT@*ZR+%i~54Ssm&tqx$Zz4fN@Ru_Iy{!)+8 z&Z|iK0#Eak;@Z4{@JZMb-&&v@TKM0Ss48pUH zV~26$1bASsi(I!ga?f$Oy>A>)4AVAfng0I(qd;80My`pkU?EKRi;KjQ6qHOt-+!SC ziLa1GV&0!nL79I-1;^w*0mo06{1+!@`(>C|l!H^62Sw6+m?<3!UTFceNQXhY2j z0yayYIDwt34nt3kCLhkQlr2lmwgfK=W@PVwkVY>?YxDx~ZmTpVdFNzy9OJSr#^qRo zUpaKai*?O6Kn6c;zlHAD2ch#*QVKoy|0ALEPOxM0;pAOV#8<;i9tAJ&h8Erf?YtM( z@inlSuicB#hwrP<`SB@*K0?hi@XRrIpIMa4+~y8dGLk?Xl1y>rjF5~}M;S;iGUC#I z$;J`G`cgzztRG4&b*wMZOGTynsfRl)H4?^;*CJ!;AeYy}Snh{Oydf@Hoh%M_(Z9*! zkQx&uNx1>Zw!=8pY2|a8*b%`RLwE*x5fWrkqT@rxb1n>)hBLqM| z05l7LMM(gQO@PG$;3xrbv;a6(00ff&T1|jf0T2=Z?E)Yy09GaetTF*s34n-y09Y*m zx&=UQ62Mv$V66aHF91#y04EE8QqyHMu6=WVBZU{ z9}@v&Fa#k30mz&HWSIc4Cb6q((j=>*uU+&_7kxECE)OG`XnG4&_q%wkQ50dB?8Gbfn<6T zz(FR!K>}c=0GKTR<_ds+vLt|cCcr!aaHs${OaN2}fXXC*Difee08|Np8Uauv02U?z z)S3Xb0-#<1Gzfr30nn5L&|-?SMF6x2fFlLKlBBLnP25XG*JDK2<3!hG0(V;yz;Y8{ zxd2!p0FD;`9Ri>;382d)rb_@s1wfAg=t}Ck#>BlwbX_O9o*=q^o+NOek_5291lS+| zP8R?h1;CjC;Or!Tb4-A91i*O$-~s_~kpQ?P3E(ml;If!Al7A@xekA~|Oai#t1h`s^ zaE$=CP5@jl0DhYUa8tI)pqm85Edt_J0dbpvxI^gq7G2NpN&>&f9Pb_h-6x>83Fz$t z`j1Hf_nQFs3xEfI1;E1s;1L1vSQ5Y!CVfu`fF}gNlLFwWq^?h!U7r?Rg$iVKd#*3osUq#oyiLS2*GX9YS@R|wmngDo10K6pt-Vp%*Oage{1bANnd?)}u766|J zfKQVEJ~shA7XV)ffUg9=Hv(XH62SMC=)M;aKN5rj1fg($f>2};Bx^mS^$g@0OOJX@=btz zLDB>PP#^#%3xL8TfFcv1NC1=wfN26?x&SyR31FrXs48L(%Iu`(xhB53qPa}qnIMJR1wxx5!O@@)>MhJrj$!Cagy;B=o9IT9qPaV^)LnkP!3J_zeR8oEQV9@ zx(SYj+aU;B@Y)CM@EU~SO}xGb5taq3nFFt*U@bd;4AwIbUVU&XTMehN9=x6aXR+&H zGrJM5zlU?!3veF$D_;Kr7jPLa;x@cy!Y}zO_!Xav*F)hNz8tROVZ27*CVn~G!mq^Z zb#MoN0=Do!)4=+g{;q^0kRnCXk<%xKm3UA6sz*}+?UYEez@=5Tnd@5cy!H4oa z@UgrVulK=!s<*Qubqikm z*mU)8Y=-)GyuQf}vZb+^HVv;1R%R<>^KA3+>S6P3E7<~DCtiD)*LF3lwq1+Y8(E!g z7xUYm#p_>Lvt470>{)mn!H%`hXF>a6c&%dX_D&YIug2?I7O`K?y6lgz)%M5nx{F1B z?O(DU`!{&~k@cocW^2=?;?>1YPFuuIOEZc6Qq1?3}bG@%k*g zB<&k^S=x8(l61zdOrOfGN-x3dLG0@ECG48?qw(6xu1i0cU7vmdUN2*}r2moKn*IP@ zA7xw8-(h!VXzcEcEWD0j{TXxE_KY%rydK7OWUOHKWvs;OYW6_J73`smtMPh0dpzSw z_NRy47%C^f20YO~RAkp;2Df;ifOIL<1ys>=;x3fk4< zjk=XqYo}FOZIyZqh=uA}tL_A=bh1_2fTc6U?tsEn2I@v|GELp2o^_a$Z-%+**=m|J zTHUOk3u)?k>ILdW;QT*OO9KQH000OG03laOT!##ls?7ob080e`05Fr_#Tb(vuN{Be zQqxcrU8gNgX~V682y(3gEw`iM1u0&T!SSJ0hdRut4^Gk^+d!Js9~vuQW>?Ha7qkw|LO2p%B)H;r6Y|DLrl62BSUZc?+^kt!!TVm zc)7@>>GPuNNYAxx;qleFFWu^z>T2~+t6`2|$@R+Iuc-vDJ)&^>VaZ67PMWGZP!5mnx zJJPC(4a>L4XT@<`X-Jw`vMuIXv91U=EvLkdLtozPgDTY;mD{!ryH0-QlSImAf^;kMNFhOw*>I+oH9hPTCeE=jn^n$>?mG-Us^_ zm^sO4pp4@RNxk8KtGGrd!vbxda1i`XtsgoUW)7ecxg7`S3gIjI^0VI%pWQ?Mdqk5L z^Pe&Nd>^C9u|1?no7!E&KkO0%rG4haJxS4y+J!x91sAy-OVH@J$mbd%V{Mt{NtFe3=VViK|t z1r3k@8X!P4fK4C>Xmyf#Nd}UcI5T0oB_Yu##v&(=?^;4Y{QMBFW?tiuG1=Ma+t>>#*V#iz7j+qb3||3R&wtq?0R~vdPpb$D~{u#&oRgvLQLWJs$6> zScH#8d!WHOr`w8QYfqaMZ?s~uP$bMWp?Grrkn7Z(YJ-L|xqpTGY|5t*I*l}G6dlDh z_TUSdOzcz>k4Hnz-EoVlu(-ZY5sh(?w0d&=K;2a9ffTV>EVCd~>PG#-2g1Mz@|CekFGjy0)}im-1>prWm%BHkRUXo-a5(MU&!6|I;X z2(E}kgY%LjpnnT~=VSe$S#^fw7$%!kLZwVufnYFky35imA1vtP`Xf1V=%t+LsDX6n zc85BGR@6gf@CpMWrc%G<%cDiL$z8+RGKuMW-uA? zi2agjMDY;Hs4}UVW-(>Qthg|}1X3}LOt)uK7EWo7Nq;BN$*{?&)fI__;*ls0wYzr{=SVBv6I?bf7iQRe!PXP<k$joK*ob23d-9P!Vb~sa*(V zgHSzq><+Y9;;3s(T1!xBCSp#YBR0SS66O!jMSqacYL^()g|;2>V+)0kfx2zd;v( zb`b=)2!cZ>Ovb|{Oc{<~mx9f-G(^&GnRIzVWy>~pDJics=_>j*_`nIa&x5O~cvNT5 zcYol8UC~Hu03jZS@m*oNJ!%Ew23-ddfsT&IdMjwq4cOd@Mk5gCdmz)aynbO#T|=!w z-^Yr@wM%N|p}z^lYL+is+ECZ{?3D)n7hcsiG}JC{5Eg!5(ht=E#3Re$;L&-3m}Ss^ z%bD8}D%nJU+fBNIegs+)lUw4Ub;>VO?SE@-B+_98!tmoQv{k3OOuAc)cKDzfpx$iv zngSi&*zaB#WLnJy)JCH8`@we2yk&Jwkmx~(E&T-sZD$&nc4a8sxAtM^rfx}M^^c)J z`w8oJAXCgjc8N#A{!nmskrfQZMcQ7I9u>W0K-xNJ`Z0v`qQoA}@v!0yYose{{D1N> zHy$p6ojd_0Nfs#=f(AV$W`p5ppk*~I!Bt-TglU)>NZ6PR?n%sw!$@S{d8QmSV9PVR zNJ8pQB`W`HKrl{bg`tA6K`-IV;-Pp4$kYngPN)|p{T%zq*sKa$9T@s0;!>(|f|lYT z5XX`IifQps3hA5Y@9Qe%ID60Un}3kP!Ec!I``)DR@d_eYDj$7Z{ElhiP+TOpNXJ1< zn*Cpgt=0_Q{SCz3{#rn0#om8lsu@}XGRJQ>{Uui~Qg(eCR$z~&?D-BH!dZb79%>C) zQGbW!?~KIDTRNV-Th{##xJ|rES@|AQ!+(A*&)yxg&1}$i@8b+oUZ?E%0e{me|M?jV z-s!J!$(ljC{EcbR5o^1#y9?l`bMPL2$C)NyrtI<$JDNx5==2$^vColeH?&w?vY~*E zf130!`Zt1g{nCXXWTUW-))UrL)JNLdl%svgG^ti1v%k#>OQwb!CQdzu0M!hJ#H+Ju zKYgXs0aIc*1RqF>spQ~LaDQ2QG_qdE0T3aevu3hO0+$;zI}OfY8m;)K@=K!jw*L4h0i=cnH|F%HV9KN{47&c%7{ACqmd1|KjeLqF-c% zi^}{(txPE-D)q zi6Xov=R29L9urh%1JvV@CXZqiA7cc$&D|(k0YFX&jjr&+wBq1uA97@J{XvmcwZSM( z<~fosYY)ZzViNv92jmHE^jjN%3}gOQ$P#b2{IM>pMLfJu!Tvzl){JB+7e085$;Sv} z)?*1U*2LpX_9tL;AAhcD;t3{COw6@WNE07xav=k_WySgu`>5hHd3|z|=x?&gC5&># z9Sf`*Sd*p6K+X`{hRaQ!!WA&IW?LaKDJ(-RATlOJX)${+p|x1GhmYr}I!`nC1gV9O z9(pPuLe%Pr1cC-vLdo;QM4-B`wcd{{m7Xm*ges-;+2@^KmVZ>MdQd4>I!>xR?|ir? z&oFr=S3%%VxHZC5oW?L#r_n)^!J_EK?v@smvj(G7A7e*^7U4_cK|iJpMj4|!hT)-4 zd9KOx#DJyTUJMf8QuJSI@&ZQKF>L#-3l3nZ{~4%SVX2B-fexs$j!)6~RFmuF2)%=+ zK!uTLZ3jRgFMojzzK(tDl$)M=gU?QKqUfbL ztY(zbaTHkpvw||MR6&~tZCDs)Q$KVCIpdhyi z*ujp8A*3K@pnQHPrm9YylEG`4CI;g1Kudck-c|csLmgHamGbNfi4-#hY)ueGI!z99 z#P;q*2r-gU4sjyM0$bLfV{(*ZHtb&!m4X$5Ct!alQgIsQIxnhq?q(VcPR z_Ix<2Xu;qM;U@_fH~3;ni%PTKlnV{z6lBO50P8Zz|xxI(u zjKVI1uVSiBRdkKIKvAjs&{QOuZ=p&d_8pV2VSki>*>cYVb7_HO5~0%u9a(Ul$=6Gy z%xLZCjCBs6D0fFgu$pKC)94}ibTcR&O1K=f|MVHEMTFCA7W?IBEH?^JERZ=*Gcubv{jT*mzr~&8L$Ktmg8(cwiFBfQJB3m-%q1;et@ZB zsN1y8?v8kgX*V8vvDn6TepZ&F z)Xnc(Zi|WcI`28C|DPs=qT-^@oBRU*6yl4EE(k?qjw95>68<`=_^_OFJ-=x3OMgOY zgpjIh3rC`sO+yf(O!&FUzmN%rOjrgO?cv@0vWS7A_ryVB9F{ZlZmQGyw+EHhmdL}u z;a5%mo!q6laQcV?{JP1%7szaOi9#GaCNJI;_xOW2z^ZgNF$TY#!2kYGXTkxnl^_0F z<+t}vwyzP;6F3XkPYnZ{1CBACE6-y#IkW$Y;6eP(C#bD z9#eVuFQ}>O2CY0cm|R>Y56)tLaS+}XY5@v~O;#^#N`n4BH2JUm5u$vnlS0x-mo9=1 zo@MaI2!H96*s6lSCx}?;5|KY;B7;9iAy;Vdzu;hnfzGaKVdo2zzvO)gS$|Qht0N$g zcYZ2A;xUc#^-8$Ksvc@QEo)z4vss3Q($QVmf!wEQ7?@*dZW(Bk0fc>?U}y$(QFu;w zM20*VDl$+hg2Rc^W>$N&Ty2=H<(b-W%?lqJScEP>s#Le#0s<0s>9PF;kh(naeMD*{ zj5ycO9gd^SZVJUh$QU(Je}4u9#vlUCNc#mwGfX#D(Q0p65lAkmsOgSJ)`t*ALDp^G zmkz5Bg{>vsoy}HsnIt4tj<*ClngY>~JUfH#I4Ugw<@&?>CI|F0fUd0#$vW_mUyB{- zmodr~oG;Xh4s#0xgwDV^rYT3dm3Oe|Aj2agw5(km=yG(Fx7doeM}LBdxuA&D4Sk(3 zarA15%@z=RmavoBS4Jc^+Jdl=xDQcD zLxT>60Ph38dVz(@1xAY8$r~J5*lgd3!a9e%EJaZ5Z%N?X(bVw+cAIqwPUnDFrmFg| z_{{(CVj*2Yp6*z4!+#R-Isl;*2S{V8Qc_>L<)*S)L=TCDF2X+uV}BRE{pKcyvTX1>FNWAr zdgyp&9}Mz3Dk4A=r)opVc@U)IOcFz1?^KB+)7FTJ^F+ma*u3-;%a#UW+1Xf$Ra-oy zZ480l(;rNhT@~V4T_)MJ*1?KS8??zvQI*202VY>%saE7|hGE-CZ+OUif9gdQqhQMQZ9ux5(4qKA&hl;eBo#2%ViwoQam zJd7nBpMRBP&~)RxC%8=UQT*j`-n z2+i)L8m1-Xy|fUA?Dn~PX))6#*YnbAU?`xeDu1KQdpd+$QRZERro@-gLuc%uv(Wc8 z+v7oLWW3cowueHS$nbVmD?3z0BKKrI&fn16iLg`o?;eneoUFDosp#z0BL==ys<}-6bE7 zr;a=+A5Rao3pM(zGp{u{vOD#h)W~zr2*h~79(hqd_VyQVT$%S5shhqmAHTK*8&l@} zZR)#M<>NJ5mfxqocvC*!vKPJj|1Z}c<>TFh%k?Mu_;Y%>{vsbArjhF-`S`fs8GnAF zNbEadD-B!n5Pk0b0{*?vMP-Oj+a$8M-gkXSpORZ*6tAKt80A95n>zB+sdOCGBU&xR zPXpdGQadf93urlAi>EELf_BpB^faxc=jjakIh{%GP=G$9X1<7md?{IcIkoY(shzK( zHGDm-DyX0U9Fu=-_aWA8m*natDQ^NYFE>B+7Ib^?GCy@+e$ZS z57GCvXXs|_IohP{rT^02q+7Ii=m*++ber~1x?S5xceq@%)s;_oxeDlRSAPlJ<2sq{ zbv4j^t{~m-T1OAK&Z7ri7t(guRrHW+Gd=9Ol^$_zp&nNc?Qrd)ovtTom+R;BnCsW{ zxa(DV%Jm0&+Vv-T#`Qk!hGw62{gr;=`WNj{@%Cj9l0=TPxS5NVswBPh=C< zew8`o%shCPRX(GMU(wMzmFcudrzQJnu})3HYmj61Q9eFZ_W)f; z**Z-`H#rm2)MEisT>-M}uwlc@v6=XHfU+oSsL3*)z91Y1rWC|5;eP;FI_Pvw4HslL z9>HYeOX@8c{UzOA0N(TD?{l3cM00ieG}}p^G+d#AY1#?!38YH?1bUY=u(xy%<&^d? ztNgF$vwK@f*$&R!EPc;5AOSX2f7muPi-%WbNLKY_l$H1L2sa_!W$uv)1>1H})5;xu zbd~PY;k!KArHlO}4>a2(oU0?|YGwq#a9> zRa*i)BJHVkr)q8dvWn#MHNcA3vEmH?wKuWiEr5!*vEp6el7IJTF8vwN<9)3BD12!^^V%mwY(F{-uYL&3+ zOwegi_N`-fp|Wb>d~XsX?d9{8RZH(e^fcAGSTK_6eN&r`lN7ryrp#PdcJ_YqtAlSk z0GTopW?=ufg?|{fpiE)7o6pDbUx?p}@%v2&Re9kyGm@xkrdEaVYJqod49-%v)BlsT z*)eSnnv)Q&lu5aM37BW%?KU~&(q5jg5$t7=04&(Zb7CWlx4A0yvON?lvn_5jg~}YO zGJJ;MpEHn^H&Y`Zsb0R7)KF_xme0KheYZ1kS(QiGk$>UK@_B3{%=TsPp?qI9GDfMQ zpbXNN2~feK-IY4%HI=Ikmx@Uz%)4CCR|}>qlEQ%+yv(Kxu7s{JkSY8@j_n0O}v!P@j1MlH(>NqUddPRD!z(W^Y{4-<)}B) zFu;Kttp+ZZMJ;rkHWxh)#c7;!*=!U!XDT-~=tUZ<#tbfY-Wrg-TRC(lBoArxwE0M9 zSARLKohe?CaBcKzZP(^)%E>j=yU=!R^u)>CswYmKp`5&%^7hdfc=vvq0$(neuhLew z)7wu)3E$5mqrdNq`{NC^8?}!r(fa~Uw2x+}URJ@x1K2fl@RGiWF)~A|1viI|8Viz9 zV_HVPNU?C0w&-xWbtvRiD500Zl*G9ePJbwA(rB|CKb(P;8l@WjnSDmTSPh(2HrV9L zQY>D=X&z051rMj=Rcl*vArwd)q8wgB!?_b)5vB>;1*M-uQ#nf0I7TONTv?2q*EE`> zPFU!zNCxi}_6e(#(@7hCc0!k^V{6mu?v$kNbWZB-RIT2w;kAolU~p2-F3smaFMqda zgid=tuj%Cu7bUA)l=j?(Vs{tESC&7->yT6nR=V=}8_25pd;#)mK3{~)n$MRs_VA@U z_=+lbnOzuXNM@D7nC3{&DU1<|oWv~A3sh79105CIBu7hd>fvvL+|^qTJRza$TKTwP zEBQdv?wL{&OTf9=m+>Sb@kB(=TYrH6tK4|Vw;xQIEdlOkpZiI5gtwOU@@-5z`A6z( zQGwb=dyjpz+mSFE=tp!P-$W14!-yL<;q;!Nm(c!-UZK~}3IN-mCIt75f0lwM==z1<+O_%U@=qiBw>-oF131heLb#yDh?2q^c?041Rh;TPiafF(_l5@=ye5YHTsIo zg#B=KGD2i)Uqb=FNg!*_p9+f+i;9yeIbJy}2L&4P4|I+LAd0;6>vg_K;=rKyV3YA- z{F}5>)Ev{s34L?=CL91P(tqriDiW9p^Zi=dYnVp#mTAjv?{)8m*uw>5!W{1tlY-|y zxXm@&HOE!y-o@Kj?&616;@yv#9^&2|{NxUPrYd6>?_TN4fYtW!b3OdC9^Siye<{eJ zhkq@Q(lO6Zq$lRdzmW_ICfDq8TKzbhOT_nA1>0Kf{)0ee}a({hU37DI8shhVR zc(BChQBc5s{O=N9w#wi3<8}6QAd?)QxrefS=1zWXE4ke}`HiYvm3?!39$&Vd%ZK@f z?ZHA97M`Af!Fj$sUyi`wJfBB!a30_ZfN-8KHvxq6?DT!9##`yAsw`#RZwajF6X?(+3ycMV<&&$1lGSDBCuuy8Q+3*{wdu`_p0^*dQ`QK(?3-EIhUw*KGJkO--I;X zh?IO2z(O;x!E*=FbX=3r;29|KJqXnI(g?nvj^PJDZ8Vd&(=2`nyF5Yxocdbc zLEXHQF63U55#bhp3GLwB;CBx_&M(k&{8NOHm*@lj1%1rF1phCC``^+5euXpnRnFnx z@d$p6NAvHwh~I!*f8=uh16S}{04Z++pu7Va--VR-L$-Gz-TizKzX#~_KK$YX7}tmV z0@|1OBi_q@1Er5u0O>(;SW8bTaFB)6|6>IXJSa`?Rp20h8}RHltqDDoo}(58N^(%c zoTdOnE`2~JDNr(u4p6BILwQ_5UKMDva6WHoE40()_LawKD>XzCXsuCOt(}38I*gyt z&eXn+fHa&R)6PQA1>N>)XQSuly?yD9KS_qGPqcv6?4-MwX=Kg;nr)*H$jgW*+jZWp zqSFCdOgV#pU+DasRP=#3lbgGbMxlE$tFmT`f;N?QK|E-!3Q%8AK8o#yPV5`BdrD|a z%+dSLNsWE=PVBqC4+SCg1=42jmSpBO*?}{YVwkJRAF$i^($ort2|_4Du|3hgdE88+ z>>J$8D8KXh@9HvAM}^~d-Iu&vR~P*JFJ%;?Yzj$#j8UkJ!d7}Fx%{q^*|8AD$p44uuyZZQ$>QmyswVu$Hpu^3KL4|a|DDhK^Z9^uG|tyts*{ng>8g{J zuOWbc{=4tHhY50nfs=A;1{s=%3bbq*ubEV$<p~78 zS4v#JB*`-TPXGWGvXkA#8<)$Q0~eS0GXW2OtGb;r_POAqVu3L>mTBrbqsEp$7t?Ih2Gh7iusVLP>xCfdmL8^gse3bnx%Jx4YLQ7o7b5pZ_nx zH?yE0Y_XisZ6wxTLg zBA_51jfcCcJ7e+A?)Es{jR_C|YA(luTxu(atJuK4?zk87p}>Gb3x>k5G{Qph-p=l2 z0*qDRuD(d~QUSxJ1g17*R+vMLkFa2WB>0f_hUPk?q9NM5tSr{GbjC4d4bf%GBE54= z*h9d$0}njV?@(PGj)(oh$gzEqSlnM7S<<)6k9V_SPZ(psSPT3x4ynm(M}XGZy);Us z3?yXgJQF4e$aPz73pSMdk3TUR_JT;eZYV92t>1vVsL)Rci^uk2g86bDCC7Zb@P0wxbaSVQJ&GpW;Xe24W#de{2xYA&sN zTd)sI$Av-y_`bUkLkFP%Cw7K_5vlF?8zSAy;>)QyTHKiy%!2)qzq+`X`77Xsa+qVl z0krA|3dm138|aQlc%p}=FSb*EK8Gkg*n&f#0%sa2Yzg;ae^x)i%ORKiD4|%mS+Fe%JiM$-^TglzjLA?P13+BS1xEN`T zB2O-j_SS^kaWvzn?4+fs^N8d|3!0!=fEP&)MPf0mL|B`QLAinJ;Pf7UhCD|zkPRVd zHK5Icc`#qVm>mNJSlClV99LvXUp#_acrblN?%1C#dXkTQ(VmQKX zF)`gcZ!y6jM+xx6mq%7ch#kTfEFtdF@a{?zI*=b0$BIqB?JfLNVYvmJa10XB8|mo^ zw?`_vx&-XMW3Jv&?}#>k;v|R`9YKTXwjc_)f(5CAnMV>PHu&b5x@fRgar{}aI8GAE zk%$S%Q%0n_!@gLB<6YJp?dvgNjR2E?ec@$z<2V6@C>Oi>IwDokl{CGv=I*YwCY-?Y z(Z>^Xk_9KjDafq2_rqPW3{m6m--RZeMzWN}=*k{s0bFzw&cObE+MT9NI16i3Czg^n zqzPvu4Xv~o{weKUk#KjUW2$}Q9NbSVu>I{Mm+iuHahP0a@8kU$q{9nW!!HfE#)50%R|00Rp-1R zwldniEZVUI6=83r>{ya}WmUbM$V8oCT=&(>BfYrW<_@|ycBjobMA-Ef+yFNUke#uN zwi6S(TWy=L9yi)r{9kEfV`&FY!p(4t0k>Lk8~g_46ZaE;?_3!vLwUC{9517FYQ^hX zzGN|w6`GUu^duU`nYb6(x5KGTbH2fXjl>Bm+}%OsZMNV(xF7eW-EwlUyVPCk zj8N+jTJR8mt*BZS=iYv2!6SU#6=x~%s0EL~R+K88v6_`V@wKcr7kc3d_`Ly7TJRJJ zO<7_gJjeD$NfbSUQni!X|Dy%Z!gF|oD+*Y=ivo2w+3HU?nJfYkNZl(h z8fh+UW{3fKlTtG)0VC==c!g@H0H8{US$8}N<=?~=~QNg}8+F)wXu6W+Jr z1Nab)s`lOpvS?GZo4G0}xC+uNA_C8$wjZURk1hBF{)sC}mF@W$o>o2Jlq2L*_{@NR zTktu5F>k@ZD#+2x!?C8wnmE<{!h$d1D;!HV7GxTjj%XtazOmq2_>L5LlxIS~ltIevm5KI z4BL2;MIzS{c_N>*4N8)xRQtAy+&s2$cUv@wLR#*=t}c{vVwfd{ixFr_*tSk!SvNv| zs=_4X2X(Me0Gh&QiBTl|Mn_`p;hspSC(_;-?h2AzBV`b7$DVLyMw2&+TO_a&b^I#V z;4;M+^b)9i{_?d=(RiZRj|)k~&1k9iqDv{pTVjHkNR@4eF&OEI;tWN5iTfIo4smay z+;xbPHRoiDNn)}grdVRCC`$9AcLYO!2L)HQBh`&&UpY3vGrruGmS_jm@20pMY@>@3 zOO%qAro}psixAaime^bDL!J&&!Z!HbyU-t9#KTLvA~8~h;a1KDx_kQ2IQzdPKL_oz zxi3zgdd0qCh9UN|#7r?uzybeFW46x_j3AjEF?$sv9juqW;2P#XV(kD}>nlU`re#(77#K(%0G5QNxWS<@8Zg zw(l{f#t(L11)8GD64e6T<-8OM*ufXDVz+tj$H2HVitC6vOVo=1`rlluHG&2_n}Yl8 zVtb9LusMc6SAI-#4|YUXhC91|-TfD0;p!EQqR9}=mS_>^dhfd%{h*b_E|h?}A2(h0 zxKoYWu5c_ihxjWbU{ozO+ClD7ug!zxCfQ8p6>VakA?8~!R2=S_0o+1El$^1`DRWab zD;1(7UWjT5l@w9qU&?KxT5($RuSQXWN+;r9*10Ou?QeHh5}h)!*b+y7P;^XN9q#Qm z1iJT=cE*#jo@jRr<;syFY>6eJoxJBr95+n74<(s4B`|d!-HcdbsX%(OaHGxV9#i&8 zXSA#Z=h3-=^mpQ(+aCR1u|jkiVx=XziPXYDS|D$YGN$MeP(e0nXM32VH>-)bG`e(YXM3c7Bii0a>S7wMXe8W$sy7l}*)@$*qQBP?G3qV{2S;I1tlGM^ zCt`>`*H}*r-r??w^m;`cEjocV`3TfBN0AOX%GUEo*+V%BYl!14alANzLRdXW7>b?J zU5dUqec)uBgu|V-rYp9FT04bY`01uN4QIxovlO)r>mQ0Eh%?ZC#6w>q+`gQKI|mJo zu1Ghs?}6h@aTfX%<7u>KTVkC!$6m^MoDQ1OorE8gky3Fk?&>P+AX4fCkWF#EfC=5v z(sn8>@nbHA+7NRq`(p9Z-pHzOS0{OBrnnF%qNO*yY-QLKKSNW?1)1Vv)L1C7I(x}D zyA&zi+YpxvD5hiM1vb_61U(SRYz7K*P7xs zyc0q)Bi&T*w`j~Jy)RSTfvmwHAyeFi!?B}7YzLX*9z@nTj+`m_aj();m|`Qg!IR?D z+l+>iJxREQVoSsAHXq&Z#E<+nXw;eFK_|wP5{fa!!)Ri2p<}6;;t`tlloEf!N_*6; zi`E<3)>yKC)vfE4B=smo zyTcvGYR}@%P82#b_B{5V(j;1J@jkoF7jR0FZ6@aMB_u1^2>Ed0W$}t3{$h#03iLC^ zW$;QYR@R4tb!D_8(pBa#S(eRmL9!(#Qk;B87_5bVcIfNkZ-#io5^svP1dQEDeOz3- zhpGr!etYe#3#x{F{9U|bh<7dV9?3xe&H%WSBqlM(;a8F^_)?(LT=pXgLP6p@wFpMY?%^=4f6&JlDGx79@r{5z zNn;YflJOB;&6bC4QfX;d zUu?N4HPj2KHZ?i7BtFpbjrFxt{B|iilxwMf2i=keHScMs;Ttl`)&0Dbt;>;mniH=y zWws?PiB9&Aa7Ra|uLm_c#evbLNR{9T1dre{nQO^Bj>~nhx}>p7-H?T8-4LxkECl2* zG&pN|d(kdg?Mxv~U6e=Zw;2>IDmlWEBc%_ij!;zrMLX7_sYID_4|JC8F6`M!cp#>K z+!NJ!<}Kooa=%v=$g!66)1w%ACe?_8C$%BRBP8L-RE6dx-566&qzHdxO}wlsl?SxB}t`J!qT-QMHQ8}610S5W=T@_lnhWi zB?*mFlA&x$QngCSU@E30RhN_urdUdU(sWA6AnK$fMU#|dD3OwM{ZTTQ>L?kYHA>PH zhSw{L(72VwuBDHg%{FNZK*~}SIdYnS`KdvQ9X++5(~#cCoE=Lc>|BB=_rWckWRLCb zNUW=ya)y9C25bTX+Z(}@GjaQ5@+sc;%KhbRLzY`|4n>Jlo)T9^qxA3!RR}+S6L2m~ zi5|ArfqT!C2czwGq$$yn786ZbgsM{1 zJ3D|jkJ_7S$wOrWJyqz8bakLFwBM8;=PTC|4i}|KHXE|Vl84FQj~pAfKu;R%CzI^8 z{+AJTnK(S3D$yY|W3HJh7o)-=Zz#>8lt+>b z!csOU<$b*H+=91>0M5i(@(VlDl$zHO0+!n}^mT1o5c3LGsjvw!Tg?zcjl56F0 zxE{{)Z#Euw_`GXi`QQ(o>pc`84Z?2csN5Kgz` z8S+ei#GROiMs!!PVeBe5<6K5I)XAS%@@%;d7Zk;6@7fSqw&@2ruxL)U{HZ+GkmsRU zC(lniiNSz9(g3zfEpv>2jsj5fLQ7sG(MR;~LnkzS2S55z>twLIi{&MTywsAH$;;Co zv8A;wK&_;MAo~w$KP6h*5p9~h(vrWB=wccqJ;U_ecw`!NRa|U8SwXUXX~}EkwPe{w z>5%|#^C^Q@-hQuMd7Zr8kT+QJMu|S;9s}w*5&kFznDuzneu^}IX0SO<)MVOzZONPE zEj$!17O?k}9bpDLdLq$HH7X-G5xsO0ME=&2x0BrW@-q+)epB(Cmb{COie<(6mc*F3 ziTm!cI8Q{$M`@iy#Iz~~hH7mKv_A?vO!n>)Xi?&3sjl$#8>*^>9svxHIGuZpaT zCJ#MUXhUO_f*{m?-2;|0j!o;53(MM)6|mRe$wv&i#gdQ8$Iz_a zVQuV~V((N^xwZx^b|j^EP|-XfqDdI;>~TvzA%D-0kt;e@(({~AQ?^rm>OulMWyz-r z;6Xr3AWQy1{?U-nTJkxGj_!oPL`5>#=S1_eYMXNvBb!G+x*O;4sO4ASBpTGh8K`8F-7)z(ze)>_{j3@ogvHsw3WVikSy<%1M?}WlW;0McAU|F3+Ky!Tk>=HABu>^Y$>(Z4o(~; zA9i`=yYfpi;=W2cs{@{G&Li#gjU~S&?WC`WkZwXf1Rs+!`oWUh=wZ7_Mm27qn4!dg zSwI!%RRGGABTePOQ3UKM^Y^%C&dUARi83r@Ds)m6KVaH_kagYhDJrK3caX}ql%>$0 z^)3m2cO*`c&f1PSxig+e{jPH9u<$rjtGZlKvQz|j*Pn@9hhr2uc&H*|lF% z?AVwJy~ANWD6OO2;jTdU(rAl2Y*V3syO@W9CfXWamQsq|qkdF7#s3V2E@VFKq$LP1 zt9Bj)nF>A0A@OJrpD=YFAgVe`)vExCYf|6>mj6#8klTIUlPcU^P={KoffS64t}s+n z+9@IwN)v0y)Xr9os>M==(b*ewStM=;VBu|fZUJ~ytEJl1JUU^-B4qmZpERX^TfHsF zoAd}RLKdMq+)@h^d353KwTmp#i7bE!CkSwwhYf66v z(M0a*#I<4VsnGoKPTza_KBar_Q@YO#LiSl|m0FFK7|x*kdPnQ7y%#Vjqi%09ai5|w z;-zQaHZi2pjO?x(NbcFBK`oVmhrGljb+V;SQKt%^Q%xN-7c}61SS9M-aButa zw4*Nz2OG@)<}geF=<-71-!sVDI^R@h(P_6uix*Ej;mC<6OqsfP(c&YHKe4Fz;3KA* z>TKL3ix*Ga$5iJyA>pp@TJ%xWxt2Olp|@J-cy_JPot|w95bs||lXua8H(gv0N&Otf zBEJq}s!IeMwpXm=fBK()*DL0#%Pe&{g@v?U1u>TFPj!Wq8d6ahfhXA(tIKvFnBmsL^a&LJkxxJE{d064U}Js(tM_J zik6#;-rb&@W%+k|A{R0dT;^&h=^rq*@X`V%VU<QOLB{NMHeoM zg}%%xu**dpOxQfSqc4A%0TqH>gb`3;bLAtnX|FLG&Qz$1MZ9%7XDtwt#p25+mw)IU zptgR?c4TSww$VLsY!T!x+YgxL(_Cqt>3brI;5u`5e)W_HI7wp4MD@*ie2fLZEeb*b zzl~N5OqmubsYj&qxre#lv2E(_PdLMRe2c1Ha^M~s2(l1;Y1}L&05Bc7lR3Gyr3Em9 zhmO~I6~h~EyZ{ZX*jfqyTg3RrGzL<_OLX3|JziOV#kxpuo)dRYReN+MmK>()D3CYt zdVY3cGJOjhxE8ZLb=i$kK46L4@fQ;JM27oxcBQ=@R=D!0DX>~){O#H6RU z2L;48b{%+u4B3l(4l|o%We{e1sa)AHH8MDS8ylod9p-sFy8&8NT1+LIHp97t(X5&W z_I?T=j{lP;JI$LN@i%=lN|d(fAEPu@TLyD^zMv)DW#@}DyxKhGm{qTqih|?>)8wFL zZnpE71GVqJqz(hvV${Erc%=naz)mE;b-eq%Wqo$>9k zl&Y>M?IPR1h}W08Px6pZuIUV?xeHgD+qj;1q0b3d*`Ny}msQe4HHJhji41L9aa^9( zi;>4yP@L2nCN<37WMmpuE8Paz*W+?`epfVg`2weAk`@?s0SS~FVJtZhs`{ogaNM*@ZI#`sDI8uYH*9+!S7!zEy~q?l*9*H+J=IK;g1FED;;pn9l4qWr8g)-bzTpvFzty zkJoT{5zN2y+7(*iBz$wG`t>A23(KoGFk$tWs(;1iQo0o^Qxo)wvkZkvtBUN0sv43c zu*yfRqf8i3ihswCd=!fb!q^}-x3-v|x2ONLrNPtr>#QQej@e)7qbkbUK30QP_%ie| z0DOdhIURj`PhsG2>_p#?EE@c*2fCV;>=moU_~BxF9|9=1F1E01$1FXSNk@YhxP=&o6y+UI;%#Y<-9|vdpFvs zyW%^fmS(DK?*3MPsQE3=RZ@(DqmJ$ZDFfDn^iU>`)=(fiqZox7?DfPqFC|RZ0rLA> z#7YR&dZrRv$7Te@JC)~5E4QbrXDGE@29Zo{0bj<6;r1`1 zRY?MsiB{=_O(rOs;mRxm3jD`J4rn3AqKa~AcF^Bs)<8}ja7@J0qyvdeP)QkM*}on3 zQ=73rQO47BAmPa4Xj?bD5@=C?sx)--X4{6DM~|EeEvmtxz9|+kKRbcJ|FgwL^QE?9Z%VE!&h+W_8n_jd!9;ysGxH! zqg6i4C)&l%oa?u8)%)&`_&4%msdm;wv14S83{7q4v7928)r5IQ5s=QO()nAV7H5^}D4@bbja&3S zurxxlTB2|%I0zS?%G9N*1CCBvLY_u;^K0K`7>D^>Xn}&N1k8GMs+KjWL4+l>tXzv} zb<(E=T@_Hbfg|q4h)S^TUF-Ic*8qo&6SgTL2pl{ysgh2Bp*yY=#JYgmNM!bxlIw<( z`)tHmznpD!%Z{+5iQPI8xpj(mRAH8ugyWnFujCwbnAPfuT)E6deoVcjXg-S;s-6+_ zx7lq8PJoZw@Py@=7QFm3Q}=IMw){a-!B6cN1819^xXGHrul!6KT6yG7n97cd<@HF_ z4v6k_nlSz1kH?{Q=@QA zNgW8HbxQP)dK9IvVb%EvYZVXj{O~HO;aQX#6nz7{_L4e!=N0z~bmO*O%{1-VvrW)-vfE z@*1B@>Y61Gsip8NU)wFTr=TZ$xTX)}=!TU(k74|k^Nc#wysjR|aA zLCV|hf@#1I5rdX7(!M)_y%i#g6DD%bsYJ1D%4Po%x<%cJ+AZ&vF1^!`X;9%ikv>n~ z>s7^WA8)IMr+BBuD2jKTQ%c6OzsZl;9nQ6q?!doiCevvna$}}DuceXR`{glSFb<%( zQO9BhqZy$m#s>V$vJHJ7GD)J}jD|`%6^YCBV-VTBK8arU?@(n(7(6;mmm_bbD{{1_@qpoFfVL)JT zj+O+^{+T&mcLxU#Tuul%^C@{=P6!zN#2J#l&WBEr_pjHKBJ7r0h_ZXMWU)?&)U=|D zCst9`UC1=UWxJIuc@~aZ-g>K>GfOrrv-p%q7Mr-0zlE@EfT($cJw;Nm5u-Hcy5hRj z3D)#DdhyyW@;1Yq;P)508w(*F%+0n~2nqivzTdXzUPiMU0sY4SkZ1dlMFUdp5(s}= z^{;zm=Tj2~9Rcq8uK2jkk8u#rW*1$E}50w$=_t)8cJLZiLbh7#=6|uN^+?)kS$bB_7mjQE_Jn z3}#{|Zf@8Jlzc{KM2%Tgrob#d(*vgPIm3d*{M`H#c^QI#P;@6okvgUBpZFAX&r_?v zz9I!aX9DS@d<8zLlCHf|Hy!hC8vghbCL10^`5EqR5YZmBP32J_QRamF;4!|f>gXQ4 z!4WGqXZNW?%P7mjPe$Fck@!wd#FWKO-3k#|XouinNFMMNs&zjOwE?T)+KxPDw#gdI zn&Pns*n1T+1BkI}83lq@97qS}iP|Mf)dw#w1I)`(^G4TFfhFtVR#db&?1fpHhDjA9 zl3k-Y){NC?FeLS{V7U&(BBbSJ4G3^dEmz`g4RtG@4e|=KMAG;6>EHc}#+R~Jts0F| z1+}xi2{rBWO($VnL%xyAb$a|T~7C=K#V(U<^EJ0r z%>S(@p4jk&aRL$T-LBf6T-%b+Xn*JbIC2^Jmf53G%0pE+qkQHah^1@~jN6}_$Fn`u z=%Jk+)+Jn9%5Mzn-wpiAal62w<>}&889mD;aW~i#Iw3Nj zW-e*$@44f-lVr0a<|{!jTRo4ww?O~XRlsO?JGYJhISDAvyw3>yY%Fs8onL+HkzK@mZj3O&z?{(4FSPe{l6KbH-1GX&dZ&T;(Wnf)E{6ZySvIo2@H1&LX4dl+(v{|~wWR>7T^ z6}_jKpAq0-kTJ71mzdNHmK{07J}tHT?ay0rdg~@>Q|v8|W%LEbv#ckzeLTSdX`Wx8 z2#CL%x!9{FuWF!$uL)LD8iim3m$Rk-Tcqs|*&tr}`MJ%k0Te>;9+F{I{J(z-H-*3G zXOI=KWo&)*`qc!5wlA4Y+|K9?37weSV{zE>>$|-LexrnetVuU;N0GTMbjRT4nt9SW_G}-e{=5 zH}f-g;}lyZ;l`(^YHnL3#2r;<%%YChovj{TJ}h~Hb1j7;*peC+Top$+{M0O#lo@{b&{*L=|l zTY1=}-a+idNQ_YpGgLxSfgiPzJNH>^;S^~?YjitXa20h$5n4`O$pa|n5pN}&uOx#G z&PlX+==ye}R%^Diap{jqs4Kp%6AnP)%@<4;q0&$qy3ENm%aeU2@v#y`I)DW4_@>Sc z`P{q3M1H;^XN|skW-GNW+i=e>qpQ&caPIa*g%?M$d{RvTrcd@y;@>_A253MR0_djl^+y2}(lWXbjVF5e002>{FRbg{ zy#Fh!n@@;ad)iQGX9eTL-Yq~iY7q0Qm&Bd7a8wsdQGxN7S<>ST=qo-o?`LMvN6sYM z>@ziQe*z(IHEp+xw4|5G*{ec!6d0?jCem$gSRgZ!&+Lye#ZAX_LE)(QcA1LdCwjkO%a`?j_QF6D3D}@?sl$6APjg()Hz5bJr%b$5~(3zx>x)6qeI$ zK2y7q%gz2j_WdvT#{lF4jw3F&gagq>+lt307Sd9VoO_v;M62;3t~i~n$Ano&xUxvS z%H%8}sbWs##koA>n^rhWGvBM@2!kqt(7l|Wf> zk5n2gO80^PvBCGDyGRmrc`3!%iy$7Gne*6>j2r_$SnmGm1gt7>_cNX42qLw7RJPNf zPcR|LC0LP|_fx%s+hio)FZrUpicI~@U?^mHrFF_aTBr7Zqi90c5$M{@R=6OY0rnQ8Q8KeT%N}W zhPuFe57U;#Yt0t8x2!vMR7hP1)E;jNJtA$P5&f^ z^!H$>DmH4#xl6;SZgE}fv9n?5+IbG(x`AV2D|9SXS8=NJ2c)F?PdykSpxjCoWf3kZ z1^y+Q0MliTVRU()MrYUM)q$6vi)D_XcW9}=C9B^NMZ4I3)ug}ZvqFC={w@v4e&_9G za2Cfv-Q=C$h(^XKYukW8@dXU?#Y zJ?+%BwO?8Bi9owgKa^L0nSCJk(IoQ2AnjqtQ@^d(v7;1+!f-zq ze{blT0AUoPmy<<7Cb!$_tZ~>%Kbc{FeZj(H1ZH;->khsID-*#eyB~Ttx$!5i=0Y|8~E4h>Q}_hyZm)xAnmSK+lvUzYee8}K~F)}jv-iWpwGm|KZAFDeSs;>423-= zvN=MLpn*pDYj)<%r;qwLm^NO6-U}kb+B&BF&-Vu=uozZjEj|We9QCo8>K*(>Op~7P zd?B=Y6YzebaA9W4lTVl!aKBISN*56M0q;RK$LEvqbjO2P#L1prTBp}ibKcannta29 zsi#A`FkL_HcJ1~*ws7J>{^a2Xu-KT+0UW zcr!ObxlWXPt|Hb0r+?lHeTTRVFDV+Z9a@7)2ok8Ugo3dqV@^ldAP>XDdjsG%C~9}wMpc}z0z@X=WzCIC$zq0H8vi$#W@O75NmK68KAZsK46Gt7qsI)rn(n*1SCIqZAm$ zap(yWx#DG)YQMr}-1V`a<-JC|N|*n2(6~CGH2n$cS=D=1W;7iNz3BQ{kue!Oy0l*p zq7gs# z%yPfLxggp`f)cuDfz+@N>4JU9T|JqnXCfYi_VvIle^b9V`;Z2vb4fN+QbaF&TNtyn zI-@h>`!w!%(EjJKwTA-o>zA}U7l9Q|5MOh**xRNrX7T*SggJ;_APzYFlgn*no7lSW!j z?G4J!jU`N*W1Y`38Dqon98uy{T!(`TSwnMX!cj<|VJ6Pwe^FtJh8wPkf-6%EqpNi))i+LlhQ+f9+bav(*YsxK z3}WXT-(B^%6t%J;vwemm(m`&@YM(AwsZ~h=7zGrKzo(NPSeb>)2XK!ZL7C7p4GAg} zs!ORZPfDzj$lnmrG?^;VtN4JqyfWXC$tYKQOv0OiiXC=j(|CyIig7|7sEnoMlnccR zBiob5CT}sR6Tvr`F)ogCv5gC8ebekm>%iO43Zc&iu|0@#isFOi7*F11_J*T5SKVa? zFsiO5S^v2^qB}=)3)`h}MvorI@0rUPrgM^tw|#4Alab%1XgY{-QB$JouAvt7(@09-~M5MWfhv%UbV8n3hNT6;J9VYC!cTMYBMrN4bZd zIJuQ~2^n$^6a#lA|8`6m+^po2_Jd~(NYzg$Gpzd)c&XjPXV8n98a~kQc*fbVjz_6k zFLSfgzVYzzTBmIPJITIKycc(AnS4+714~2WDhB^v_hCax+n=I#5h(h?Y8)oKt_LUvfZn!gGs@cw>2`azS#UCS~|P@&Y{;d}3^+*hCyw9>Z@K$R0p zZx_~MN;XoN|D>s6540~tb%E-Y=63%1-GE}8&R{gH7xarm%j9oh&NAnH0Ju70ruGrX zeePWV1kCqX)?TPJtFhq0_BcIVSQmVdRIQ%8o}ek1ds{(|Fn-uqUxG4D=#u-9(1kA8 zI*u+DUBZz1?^Gi*`}{1IU!p(h0ZKbXi^*UATQwNYj`v94Z~plXRRmNzs@WrQm8@ns4?9)X_(GOV2g^`GLhxtMB zv}%n+H#KJ0CO#t{!8t)hhRLu535EVl2vtShB$r2PN;4wTL;ZWFS_zk?deayelK3!h zy-=@WFR_0bjil17VNtakBoLNy0SCvtg^5u(hKXU)OiQ&Rtg96HGH%Z}?b^nFlx_c` zV{mI{>oYz@Jjy@oSCLKyek#WS$HvLVhx{vu)aziVNAsjBZ!Hg=hK*SR zI;9Pr$AFmpu!EEot;e8Xt_kOR5jN$3*l-k+as&R!IE_cJDE?vfPhdNxUapletzmwE z1xwsC{8^4Sd4IBXkVVu9de!(R0p-)RA6#(k{i%W*`3BPD35GuPFn)=iLID-rL<$cm zF0wEmEDW?69|ZLp+*_*C3!9-w0UwAX8OOA6yQvJvz&;%tQbXI1t=zvy$OT^0{Q_~| zEO<#dcRN#h?5vJj+d#b@+}HuaWR^j$BedDA^*JP0AsFSivkz57Iu_D^sTEOoHaJVMum@>1nsTCtt zBlN7C$RB-wnc$zK`OPXod~#fkn|UxODxg+%*+n{Rf^C)%9L_J6;eD$^SgC} za$U+IE6TNse1IY8GcD)VGfeD?jCRrCVON_tFZmiYN25>u77f4rcyz(?{Sr+=O4mhL z7Q-AW%gSW)R332#&9X@W_i#St9O@Yr%W=c5@GgrzpW+vEn(kOgg>N_Yp<8T9qI&Mc=$(*Josv zGy^2miU_xq6DX1{^^<7)*yeRHc)5&l)UnK^iTre=!eaYyBuj(M8da( zhh8n^4TtSo!FLjhiVj_h8jMui-)!+^U(G=vE9~e}zJJ;e8e(Lm7cl_LG^{O30XqOy! z0G$Wj&E&R0`ZJ^>|6YE8A;KiS9hw`X)-p!8Qx%{PB!7b>*yUs5!NN_={gsL#h$K-E zyOqd9JDx^2Qmpj&Fu7E5M2@IWPV7_RE2R1qT*1LaJ$UhmR-96vN9qc1Ap$wzM%6!F zXz5Md7lA~Myst09;C^5&+CY!g65!1Tpe-{hwvwAP(DOiJHDwSMd;RE-PBz5}+dxz5 z$vg|diD`5z^+8EL{H_-rp*qsEi2DOp@(g*G0;3!DR5(-L#b6J1e=y@M=QHv`vM(&M zw1m5yYky5+U;nmQ{+2Fi`Wp~4j_ranRB2D3fjv0UC9xl;6Mn(g483n5S| z2ug&P;LL!Q@PmwicA^Qw2gwR5?&)XP?Q+0N7Ohd}%oOYEA>pC6_|sUIvg!olfxcbX z$IWZNEea9C%#oc(@1_rVtn-~BU;qp0Ic~`@A&5Dl$x(2J=viHs#MyCh5AqWg2H0~QXufVVDWejpsx57mZDeNABS5WYkz#lv6*`(I?DJX8ts>+SXP$4>_as! zhR&XB_pWcl;$l79Cd#sjgd) zxm0I?trsO2b_Vjv9|<7$|9LqN+do&wsyqu&mld;DbG_=*_bu=OWZvcD&=g}dsZ*N{ zX}pO_s}8xdx2f|I6f2^pMH?t!b|pSQQeIKq9*}Wr1tegfU@Z%~m-$s^RPu`F!yH#}wIlHW{tor4!;&4{V5xD3@HZ`=PV3l0c%%rurrhkU zc%lXs(rkDXo_#wEU`;xlxNg;;wxQ}~YdU0OU(Ka@7X#k{yXRtG*sif5yIClY=4qQe zeAP_7XI&%JU6~ryYdyRtUnAyMo*G@(Y^`F=dVpdt$SsmZ{jpBREx%zny?it#a{=OA z?vZb|fRrR@13k%5BT~CudBCmni%+pC4cm(S)}=;cyLf3F;BAq3$zLYRo7Fi~)rs+w z;FaqshCJ-jkqW5&ttygLCt({=g=SxnSwgSU)G~Z#bOEDYLs)TSBUyoUVa2WpUlq2F z)*@ni3~h2}#FsK?_VM(ZY?b{BeE3!MR&Ft5X5jnl!u>2v9A2J2g$AXICvOLzGq+k( zP$p?@82G9X@Eenu$J2EX1au1m|iI3_h!sqQPN{#J=g>x zc7)4(=3B|i-x(5rs(SRJzYVXhZY1F@cCj+k!)t!S+3$gaNGWfTzcnZPr;cb3Kga)7 z0_Jz>6%HTX9ER>KB46l&8gFraYJf0++BgicHdG2kl1H26e4^nsiZ0UK_l;AHE7J#AdtUr3?0T%e*3X5XSlb`Tb}ILU zY|Q!m3jRoTccF}ZC5pBi^eCNr`3HA?QDrmf4Qq823P3isGv&0+HjaHGI>K?{{cJ;o z%LW0g^~3G6ABowA(ps1n%VD*(SNnn-zy|~Tzz1m&*_|ioG>-P=KDgz4ZVU+?UZ9_^ zNZ+5BKi?=n-`EOHzIddB4%GvkmTXLRZL3cW2Z1`q#jn=4HO}ilSn`e zrcYzbYq-=TFU=dNnCmo^Sj?`19$ZxysYHizYB@fL!X9#JrPHWj8Bx+oS*!A)Zw6>F zU^6zY*Nz#K)FJjOtU(jeorE$(Y1^^GDeH~fkdh>=Q~T=rL~>aFUH{{g!EwFnTVZcm za>0*i9B4Wv=}$Ff zCtH$2=k@z8REC!z$YhhmTD?5Np$PnxqLSgJhE)KXLX%FUYd*ll#kZ!1h~I z6TcKf@Gji4pIN z9w&3MpfpJQ7Q7u1tb38Agg*CN1)~)nC(eG>6F+&_&MyXyw-0ui;?`%;?D?*=j0s}0 z9Y#rFwu+3&&2+sNiZm#45P-Yeai%6O+E}XAtj3wAjI2dzxXT?;p;CVs7((dn+pHz) zc-Lm>90ryT5?@;Spu~({ICK|iRErD|{4KObNgm`W*1dtEEw(#O7dnwvoI*c5NVChg zAh504cG5aA9hMy;e4BZ9P%jjk9WR5PoP_dhvz&dmD8sFuV!$pynE?@BrP!5A)9H4C zwsSJdv4b!c%CQtgN)iAV>AXTcwu;sKMtR+U!bopnvM)dTCI88Em>nm{&FdxBq2Bs9 zyosm#W>UMd+>;U0^w=^4v)x015zU8$Y~HbXeD4G5<*j=Z^vO?fMo^n^mL(9(?W`#J z)z$=WeXFtC%Px(%2b9Ompi_z_XTK5)yb96mYlW2bkSTv%6=UVw5@@_WDC4eFvDB`Z z={;HKjb7MNOOWqj-DO(|2i)wp*IiOEs99oF=6yT1fS_!q&$s>&T+5%kH+4+O;nCAW z!_HOE_2z~-S;lzJn6uw&KHZ^%{8EJ*VbfBkg0$qbIoR{63B0Z#)j%7UE!G&Q`PFp` zdYi4vmaG%^7x8C_WaoZU@KoU1U>k>aX8+}8v{7K4=1S%*h1!WucdDddG4BDu*^3^S zQ%)WS8U$(?~+)>IB|ejTOr zA`eX_8!?0DooJL;{ve{Sc?kme3f5g7+7omO(x`v zUc7~n=>2umyM%gRq=?8WHE2A6vP#h9eA36S7tUigz-Cu-+aMP!_QD!YhY)7!eU&U{ zIjs_x$|KFR50x*XrTc`zsCGyrr^|Bjc^!AwD7!<;o!()aNABNE>*FRW;787rNUCqbfW`f*qau=XWI4x2U2ey7Y=6;}b7E#|*mXL0CxCqp|@pV0Db8 zdm4R%F2OJwOVmF*hL?1s-Y#AR?g`B$Wr~qT;~(>LKHlL7T~@v%dWH(s@dmX-<@c{1 zV4~--ePv~JrPJ3x$KSqvg>!wS)c3>ojfWAmeTiD?TfkoovTvR|klGIY{0c!U^s74< zW?hh3Ibf6YUVYR!dsuwu7zgc;y4k^cZAMk93CCFP+tg#8@VOpvaGSw`Jdj}y{dWre zN^LvhWkwmg*Nv)7oAl3Bs!Rj)UR%^Sz$sSuDaP|=a4#=p(Pr>dd%l+ZzY85IR&{y z5K;X;B`5^TJ}IbJlfDy#J{)YOaL@p#Sj#>!D7gs`IcHE+9HpT^G$=V!pl=&D@RY%b z2i$_mhywi4Qpg)>2L#&*1RTkv?>j=dnUFhF{xakuOMWh>EADJxU@3x747`=GPy%QT zLdIy|AS(#GexC>wokd?F0#_!eEDH!BLw*Qo3xd`};2{DR1^DbCSSQZx??57`dzNpx zpjwAu8q7wB;PIw?un1h#0Ju{$JXaWK8S@STRQ7OS6D!DZd!Q?h69f3PWnUP=vo_R@ z3APh6IDcXdBZG2h=+UxKjjt zdkCl}^Ul9MS&dAgjGEwArvl$_ufKs4S@elI1!#1z^_GfW1fRh1yKgTL$9Soyx4q(j^&la5S*FFsMw65 zNa|QB6P^!_9P)qiYu;p~FKYO;wf%I|TI#CH+FtW>bNLfD&;?s*I?x4*pf4~4$4Lq* ze;!heB|r1uXp~#_Z6XMTz*`v!p@Zw-pqL5SLK)@4X8@yt-UwXTpzyf$T;NW{@LWlt zlB`Cs;5<0>Y~b~qkaU)P%m^nYLY&|}EFixa^3y?`p{h;#@Sq6NLAm-NvlG;`bCYqL z;J_6oL9%zjrgw;@P5RalxFSH0EkLF{bBRskQL$O}EMwa<|Ch|hgn!UN^V30}V*j6!v;^Vk42(lq9Si)8(4Gg1Yym>#0gBAJ zg9^nr5mr&7jNp|9I%5f9-~`IZv_lTnJr&r?w6lcJ_m^SE9jd!O zunp(h6RJB4)C&-7h`nOn6P0)mLCs^@GwhDdTbq3LhI)r@>t)3Gz%1%DzW0p%{0`1E z4;d>LO_>u$@_`rDDF=O$2|mjX)jbW814;qTLRNYyBbP&7I*q1k8CB6Vw8;8@TO5*y z{?leDCAW12_Ktuv6Bvb%F%(FR8%Tn!Gz9$TE$rJy$jAlF*afp-3PhC3`H%Pq0~htd zRV@EYGfdyyR{|H;{!6R~Qd{ib+&TWA9x%Xf72-DvBEA_yNB>KZLZ`_GsVpF{*%gwj z$_LdDLU%L8i_mC?JL+f8*oFaOc5%7Ta)Bb=a_&(fEgb_xy+&(+H` zo36v!4v9Nux8p3(?n2zaWRnpM-cxglzT;1$85+G3X46s*ytuHGmN+%og~%T6W)Q(@ zjyLV3yAYOQ_aUCtZ-vIMBiw5`L2BkOq$w~H2uJ>O@YeZS|zl;A3(rm#g zwcVw^(7g7%fRb|zLT)+UC0>uo_{0>riw&LO_ch`{>Un}N$|?h0$VbWD553QhJUtch zCc-9~NzM?Ub>TOR@|ywLNHnocLIu>H@6qJSVj5mWm=y%U7Ce}>zbY~+^M0HT7s~Y- zo)-y*o|>8%ewa4oeKN}RqPWH~?+KX_lqL@gOEhr}!I=28m$NINK8&1Z)S}Ce&24H+8;u5B`Fm*>A=Mp&9Kj4K;u6;-O~c@=;UTFe;x6YI5_m( zgU(s@kZNRInZ8D8WwGlKN2FR~TSB`cJ*H}NBG-R;Y~ntI3fLu_OY*F=mCx4EIGxO*H|_IqvH8_d5n zH~0PJ?|uLL3ohUcc*J`#@e(hf?#-Qt44bZ{W-Q0ltnu$fo&SsPaPnF&nxf^Oz*G9Y zm-FLc_%%k8SIryj*;tX=@VJ6YY{pn)kP)XHO^rCz{8;AjKN)=;Q6prgmC3XoE(@_N zraZ@w?2oLE$D4LVn_ROUz6r|4YG8yks<-Md!OA6;-|@eeaF=}2luZ|LL9aiE|3AcG z+gAu^3c~;57`CM)fKL2}XxL_&3R(t*{vV_v$Oq3GG6)C+2?z)U2uQkd4mf%`Q#L3T z;O(WS>HbA%??}e)ok$1Gtw1;G%vWSjx53qAh)|iLfywJdWf?H8aYiKK534EAHTZ&5bTbE<*V}or^ zo#B^AruWmf>x|34!vFNUO3?dL97Gp5=wZRgR}xK(H%Wm>Bjgx~Guo7jhk8OF<{-5e z9*@^zN!zBTx`%#DABa#vH0PNpfVUx)aAHG~L*^A8Z5}m6WnDEUU$9^yoIr%^F(&ot zYb=U4a(^?gW})j>L7a4>lPob>Dp7`%mHh4I%jY1Uv5;{1Db&_=FUJF5A%{<~ zz0?S`gs1Y<4s0AzW65kZ9Fz;iaOXs+y=GLc^|MqDEa7SVZHHQct8F`<%THt>F|}Ya zAxG1gcdp>{J$R#va7ibl=QSQO9sP~sTycr`c^Q_Z10EwRv!O$1n_8X}`O}R~m)2tnA7q8lrx@U=QFP zIxaVeS2VJramJbD9TvxVMPRb~uhNuH#MzQUEOx?JsG-^~H0Yz!Poe^G+R{y&$v7PL z#5$0)dP4T|VN>K?(xVFE8mXkL1eE6g>`*7NAT{L&Z&Cgf7Kx(1>1mZ$twbmYbMv}3 zI4n754d`4B@Ssc3Z4xWuaV4G_zONCFGUG`J=}@TY_G1aHaBR?e>Nf8 zxi0eIowLrnxg{}sqJ-cL@Ps>I|8|4rbBGO1wAfs@%VH$-j2XH=h{UnHB8zeVyS#L( z8*VJdCgz?Y(;@!PQ;HutjR}?fGpuYdRJ|C zCWH;E>gI~EK;5A)To&!tji^CMf81&<^BggY$n-bLtjZA1ksw}SPK5SP&g3oKZ_lhc zIk&z#%T3KRmr?rLsm-5Rs`<=7_(XMnc+ur?ae)wK;r(*$0Cycat$udwwwae+to{45 zJO1e?XRCVGUrq$DU_(F1m5pcOg-X6rW5SgEd84ILV!5$tF3tjLkT7_GD7a^;2@k$B|>_8sa@NPz8j#m;rJnea^I(2z>1<|XPhj)^jHJ1J_o zhypoi^d0d(#HoGwb?9-7N%lJMeft<^Rb3ezkhBBBJrQ3U%IWHBNx$Xw@@Zstj7+ zem}8Rx5hua;s6F>{v6kk0))EVC--;I&jeg5Y>E$HROLwIaa;R%P}91mXZlwG|F5&= z&&+ti{uNl3U#33WpxpMoAu?lmr_ZkB#ZU*<)>Go%eXR7{H*8J;Wx*D6lyYcKx_?3TvRT`)4 zeojXZjC$ViBYqX{zsaOWd#k7LP-#cuG?0;=w+^ABsvO z=PMyWz$#CyCp$ym7*eH}huWk&S*#_)Hs^K&R9NY_TdUEqqBZ3-Q*Oqdw!jg8{s0T~sET@w|`L10tZyu(`3Z>;e%)L*1exk%} z9;P=uMY;(w3_(4%-zbw_W!{n{vuUb~a_{M`FKvBFo}@8+sH4A3W%)L*;h>V-vhXqw zke~A5F{|2;KARC%O(|@&p08U;6fCnau9Vu*4)BDDYD6^}q~n``r(4tT3F{NBOaVPpBAr(^NNN4@k)+bco1J?(V;=sqKzu8jX5s@^F$(54F) zjcwcJ#MZ>Nor!HHZ){AAiEU48+s?$ct@E9K*RE5isxP{FRbTZ@uSe^Rsm6wqrq!vg z>o#xB)0gIAF|^Qk5*K-y6Y1|^VEAbY5IkQs@n1fkY~#4%&|Z`4ezEKezj}(I{XqgM z(UYQ!V7=A6nZL=oDGC2YQVV??f&Ei&qa7#Lx;j@a;)`j=4i(UvGjIeoRLwZM{140C z7M@EvzPYZ4Q4+-xAAwI^hKD2T(jntPx>72?r#dv((NC9+vVm*V>j})XbjKeOApE!3 z>R0CFSZLjFCH&Ze$T35BPy%kf8F-;6j;6)HBlP;zcCe9xik ziAFxrOy&{KTn?&H7B_Ag8q7|xO?vj6xaijj5i7SEu{{D8;u3wvncNCWMFAgeLKgoH`++ud*iKuGS%z{y+E z%bC`vBY-N~up5rHIO|uIqMgx{@%NQu@3t>3mot2lbLkKxx8$^@Z!Au?K1(i#wr$x- zYPdSptif2@LQKBpSg>E7$APAUqETUaQo*!b*_lk1%!16uEJ1YrEu!m&cN+1`IuwJLpvr<#Ptk^O4+8zR1mP1pyTFQn^t1_w!&J(+u zUcBDwfy1TN^Pjxk8c2L0L7jrA%>F+761;{Q#>A4Sj@XHE_;j7=r>BMF8(^#LzQY*k z%s(>NV;xP@kl?X94SF6@3xF!WnpP!nu|NFyy+=6LXtWUo{JnT7Pu9HB^MF)XIe<8S z;(w-Ie&Qo@x`y;)VG|iwj-KkM#DOO*NsVaRV05WG3inGYP_`e%o`~~SwJk1pcl1s( zVsway1aYlWVa{FCE#8uCzf51D>Rf(WhpiR3`ups2DPZt!Q0oUnY@}Q6Z)&8AbVlW) zOhX#yu3C`@=xTUisc3!^G+FS_{q`43%lkc}s}zEiY?5}dZ)t|4`!oSs*29`s8Ih%a~TQBFmN!3^ZQRKa3$Bps+@0AAn7QO>me-4 z`w}L-U|qRws{e5r zlH>2B^%x^D@0-8K=Mz_`#Y-hmy5Sy~?tg0C%1M)F6P?O~%DL5^uH$BFmMcnB;yNO z0?SD1F3IKE9~=OFnx>Z%SPt8i$l zKBi`cl@A?4p`z%82=QpjeW}><)N_y!U+9F;dBe*aUu;Ud5&$FniSKMYrr=T8&`S98VxbYI>RahAQ7= z5)7Z)_xh%P0pRqe>BbEqYJVunl#`R(2`f`*T%ENj$yvvhd|(WdS@vFAgV@l1)h3^N z{zRHU&GABiDH){fv(=;fOvH%JZ_R8_l#cpSr@%R}X~Jd;T_i;y%|>ty6b#11RQ{$c z#%{Pc{OR5ge@qZxc#u%YFCmj6)Huu3A5hXaLQt^_ipXs3sW;%k(Fvv}Mj(4PZRI%y zS%V@U2cKR46i(AU>awd+zr2K4{Vh6h0lApf_s83*-6 z{2$~{iJ0=&=0C`RiWCHdRpys|9w+1@flIY$|!h`9IzsEky1H_|(zzfjY<{6rx6SLN zaUJ&^si=`v?eJo{uqYZC>qR3C0)-leRGD*Axl& zCh%%{%(N-m!6h}?PttAON<(CAHP+?HPHKvt_*`YJ%J!4X@(Vw%mnGwm+$+=>Quq!# z8z?gxTo*cAlcLO8wMo(^2N4+asUZdp+MJ@JbQYDHl2hvsG@{K;2gsXxfK{gFb9MH- z1Z>rR(YUvyfsVEfjke+ibQ(Jvfv4jji^{~G(w!EhelH$0+ z>){!;#18N0q{X+3^(l;E}=O~Gp6w8$RVp8^J{NvG5$@H{e+Nl``Oqe z$XJ+`4_OVzS=kD2hvCF(94O4X>44(**Nf`BK~BZG<{VbJvzo41`XfymO3WE>CP5!` z4}43XQ1))&wZAr%p9-rc7Y|P$`f+7#XKk&5LXJkw?P|V&WjF860Mx{f!i!v>w3fGK zS1yE!R~KVHiotmNN{bn7CgFvY5%>t3jeVv$QLcx6p1niw)IlUKwy^>|j7S|n<9mk< zSnqPHr=`xEsKb88xX^S0c~d8A&5T%Nm{L+zr>wlsbrnuD~bH(4Rey8p$U zI;k~f+`pd(hv)|p24JO`qgmF($`emQvcEN2@d2ZYNn=RpB4$#;nzOYgAi)T|KmFMi zdW@T`Zu_KR&FS*nb4ZYsX{d2SNF9H`nCLq-3a48o(NC&Ty1#_)j)=e(#lXpeS=s-? zA(Ad}rT+4;iZM?D;U;tJKz~_!&MkZTSSPVSV)i+4t{>t21kOmgdXjf>BrpjyorH*t z?r5bmRQg2G=#jCFiUsUW-L)ob?Peq+I<^@0Pt#0)d^QN%p{`v0 z$@DZed%^7gWkQbp*h7c1SulqaX+2RV`cg4RA^wsVh3YFs!phd(4lTc5wwyMLt#*Z`wR16xbH9(-WQK&TWtsYhB{PBB4VJO(_ z<%EuBzDq=2c;2*)|(B9~RM*Q@|(^T_CHEiJ7Sd+*rm#S-8k%u2d z$r+@TKAoU5=+%_6(rVlbMnkBq86!bzLpnxV@{H6rYXGTU`|{sJ*cD$x>W-z-EZ_5a5lrF( zL=_aN;YOR}DfhWeyknz0)yx-(D_#7Wv*vgMH63vvKPe<>@>oo&B+_v?UF-Y zbx03Uuzf~M2iapt#(_2XJ!*ub5|Xd9Tq%_6I)}?e)s?Ln>G;md`85VeN~b5{5;9+& zK}?tgIm!ryJ_-yBO0e!vzbqJWOc7;(?j22+uc3#krS%|_va2P6Ex*E~d6A*_a`$&S zIUR;_c~qTVhjGE2G|oVXoXGZ&5y9+bIE)*ri#m&9!9*=38fm?-UTp-OIs-;@*}_4X zM>Lkl`d<~a(Z^mc>_N6%+=h(I`QUp6O=ps7ZH8=H4fyk&;c~3iLHv|#yUlE%>-q2X ziT(M7RpjQ%+>j29F0HJru0R9fU$#BwyR)+M{2@+!Sbf3eL@Pf@_f|!&4zr==TqGyP zrNRt%NDplA%e=LF!f zQtI!Am|zYx>m%lz=$9Tb1WTO&{9J048G(F*USg7v9YHZ}I|HNOAaoUDF&Q45H$|;m zzL5bljeNr5Sf`0|hn%xQ{0Skg2fnz2$lnfe2RbP)gPeuVl9;9=Y@GzcE}Jo3>f246 zKd2>~5EYkvBX_a&6Qf$3Fq5`=pKmG!0|A8L*tuNpS}Js2n>8^G>`k;_85;Cm^swYO1GaE(xY}$?e<{c;j>%f3tw$xL=jtYB z(b|nsM+ajGU(u+2eRT%&IQPW-&8Hch6r~=bx}sJ~qdxaQMZ>33w5;HvEV1+Luwcvs+;6s*cl^oVZ%?#6 zryulNXrdEv!N{+NMDeRwWi-Jg8-~6TnYyETVH?ZzScBE#I>z8m?^mONuR_ zHpkSgIVzMP{V5-}ut;ez-N1$^sph2SPE6@ususA?=A@_6Wr(?P5VoG9(72g|DL+HA zCqk8Aa~DfSgx2Z=92LeW9{)&fK)nN1s#p3-98%W$nl=ZHO^8CYChHad^}aqP9Ys@3 zIb^XL>il>fTcH@KzAOFN_TOaZ1CRXH1Vhr)Rhx6qTF_Wd08dhFfH~Fq3E`tT%liNf zzjQ*$n>p`+?B}tv@{d1;KPu_c8JW@Mcj3vFn@l@-$v~!pGt3_(1 zS8mP_uGoDAfSBypstRz({u3YUQL_R}F`IJDxoXH8O;@pHymoupl1JwCS%OB7afGV< z1W9dIp{7NtNux>v-$GYFzM@WQaZW^~6ibpCb=MQ=Lnx^y@9j!O>{GEA>aJ8GGuAtT zizm^$labQagQDnReo-;+)N8Ukro(4|5WDW4whd(qAZ(4Oae8<|t&Gu= zYFU}Oz=7V5E$6lKq-TBe0H>d29u-J)OZEkygJ^Ea;htDi$K@!0#!Ix zl#}JI&P<=)bFJqh9P#;#fQTqqusx<2dtQm(2lvk^W}&;q+v)f)TI;uD{+}_}+NAi(#3b9u z>pErA+L~0!_7&(#fLji<_;FhkYN`cF5~uSj)iv z+|^}6qu|uNKJrdR?xpWI7sX@8jSIf2u%WTlNd>Ryizno4EVZ*p6}skC1?O`6`hC~R@J5FTfd0@Ue$q(DCGoGO zM>-zBv_m0op_GCTFiaz+a)U?8m6o&*(X1*1#eGcTDRQ(OVMG31 zDI3{`Dl^IXebu;`hRQFeo=1&OQ(&7Jh0p}LEtO?Ssz$J3-HSs*eW8w5j8)V$rQKYk zgI|L-Ofky`h#1|(Z5uCV9Qo_YGPw}?;*NX}6V^$EKc?av{QuwKKOcdjf&H(C zM>qww{yzc&uS-z>|4m73d3yxKh5ug_3lyy4{~!Sa5Mb7z;3WS^4t_v^rT*`3+87L2 z&;O31VZq*@(ElsyeewCT%;JE6c=>~X{3kz1BPswV2QKx$9X2FVzXgCHy`WxqoAG4R zwT38+w4y76IxD=vQ>GvjWu*hDy-+gP#HdTGwI081U-IJ#{HUmf4ZfXaT}i5NHixZF zFGC@MY(G&0F%C*Mm)yBbUzaCKZHniEc*&5es7_doInJpo?1S4s1+-FxhmZTJUy4c# zbozeJz{!1~uE4p^(f|2OLV~O@}md(U(sTMP34&|+zFpKTq-v!D)>FrvlUdAq2 zBa9igh8oIt{OcGpOIDdit2)Wu5{hBH(5g#rUmrSZy6Os{bTCU2JLqmZmjcNGo40L%>r3G>m7LYg4=W^@w~vVokHa{I1Q`iUjA{K z(u|#77=WJU5R)R-!I<^mGb(uWi*y;$r$VP7Cnrtj(X6SJ0jT8{rZO&Nm48f9qwjzE z0bt1+moU6k>P>)*jJ9o=TFZ7* z1DnD&IbfAZWH+>-FL*S-Z1Fsnz*dIJLYfb=x0xf$^O{d|)U9v6XxV(HD_%=OWrp4Y zqjp#*S_5IsKcMhQj3(gJz+yafzU$HgN_*ID2_~r5ignx8n0|Ig{ICaw|2Wv&3;JA} z?V#Fm?xCa8>eknurwhBBwl{AwChtp);1L~|n>;MbD=fjCyjbi?I6AC({oBTT+Bjlc zH}bu+*c=U^A~uXp$rkrON%}5QbglQNAnR}E;+R_=6@Bra88*z1w9Q+rANA6HKt&`& zPj8M=rZw+M5$|WV>ed;lf2r=@(q@JGA2#)Ld-|8ZGFmI?`8hJih92(tou6^ut)5q1 z{bkG>Rh_-2o7d898cbGx$hVSsC8!ox_EnXA;P@{5zgr zW;aif|0-gO_n+qp?FXSF?+4Ed;evcZy;Ys$khgsRZ%u0J4|w?)WtvA_47vpTzg^by^PtP9Pr0MN|nJ)Dd)MFW!;3;Q$^>G@>q~T&}*pKH*|QCFeUvZyAl% zR*TQK+T~lrDr<45&5+jS13*7qUV~%E(g8AFwH6R*^ee$rbU$90nkNkM4C+1gpRG|F zErYlEz<+iHTmj`^mvgi_gP^Bd5h8dgrFd_YuLZGtGHp*nIPmFbg zMjGWBo7$cuvr3}Uo8#T(jbWqPLuB!=MHhbm)%S2(R{|!eWdz2@k&Z$r@n}^2&P`^H zW)ev2tAy_AN8`o&zIK^#{W$d{rYcMF|?Q?3`GEJ665!7EuvC(d>KXM&g`$*;6bcJ#tQwH+@1tc1KdU5WlI0v!(O=((0L}TmQ6Q) zi%g_3?hp|}`_T*7TO~>yXhkQC{IlZS6(wy`r;wK!wP>_Uqvg>5aw)eEVr&1M&&+%@ zI@-PU6SaT+m&Z{7GqcSgdm@>6E{!}6Kw3k`+K(Xt;nN7#v;X*LnA7ti94Dlr(=YMw zI;hH269By)SJGvGpZ<&dfgjLJmvI9T)S78wqM7m`ps#Kxdz4q_R>o%tIrHYa9BZHP zFlSea8iM<05TEp$DrGxqDkN!q1RX+z`CyVJ>V~L)j^`Zf{8s|@)NMpDRRfs}3B&O} zq1`mDBy^7eScG1EDI!v2Gu1BL3M_+j4@uvlB!=dr-*`-hF35#=Wo~IPvx?u*MjdlOTcBwXsP1ROJbQdoq z)B%3~dT{eY9mECyEZju>>1*nDwdMl#wtH(Q=8W?#JAOUV3@=#=d%@z;mrvmi6 z8+B3vvt=cq5oYzj=%oWtp*Y&dciRc+tsq$onJw!&=kWSLz4?jc6&&M#=gkM>4R)y% znQgxPRGCic>Myi<+p^73o;!6uiEM<_Z37*iDLNU|=xONh6KX;WEJsT$k|Z8wYULw; z;{kp08~CpA(8UteVqL;Q#E5OkSOe%}MLuxBvrkZJTw(`2hJyr9EyTMjdwBwZa*2ys zD_3(;j9VZ26$B@?oYy4oWel~x;qI6r#qlRADS{BRoMRbFJ+*{Y-W!T)t%wWaTx1Fx z_8|3MN-f_$JU7wPU4`17_|%LzKkL(-S%M}f8|Y8 zp6>W!gvD~hrw{juf|vxP-{=qv0i9&I9y)YRkZF~U_64ulw9rK#;Wxwv2eI#CK2z$tq>+0-%m}{$)0C{?@_@HU;H0R_??xr5Wl)S@?>#8Xy``GJd`J z9&qOUnWR(c| z?2Y+52h=-JjncKq=R->FV9Z@{1EbbE$L|Hhj8CH>EFQ1F@6ZbA3E&-f#q{(V^8ZKF z0oQ}~TCo@?tr<2#-xW+k5SlsiAUlwRP65SLnR;=oTgd9BC^bB;M_!*3%yO@RMW?eM zVQv;;M3NFEXtur3!tg?0f}<>Y;`~#+x`2bDD}?EE>8NCqdV@7VFsPNL^^JE*=x$FO z?>RJNZci1iCJzBx7huWCjc2Z#1jVgxe0LsrKPZU}e8}{3w8r}jQ>P6Wbu zIQg7Y1S#*u;dt=mM@DZKWZ`tPA^B)br4?jRoPs}@>;bfgT@q^z?8bdGlElY9s!}V3 zI~0Z-w$wjf;%S~y?|gm-rMZkqBdH4(sz1<;1&TV`;HlqIozSU~S;Js~-b|tb7;W?Hw$vakQF1q4g<0x52HMty@~ZD+ zaS;1&CL8P54_e&Y2dd@lnw>>emf3BiSnB%|6^`!Miq14Ki|oJ}J7s0@tlZmy61sh? z$hO(@*iHTij^*d)!L9ASE-Yo&@kScH2p*Yo8zAq4Y#x*`rp1&YayI}XA>Y53D%dNF zhZ!^Rsk%SV55)+|iu~@23*JljV)Lg-mmc@YWq<9fcmDI|Pw9GO`(8^)5D5G7HxQUW zY|)+Da{(GKY>8g#eQ-3--w-&-AlDW!>3PWVKe8-z{I>UX3m{B>2QlMgh+~ojySIYD zYXLhX@ZNclM7Dv@db4m2XQUhSU zeRvNqzdfbmP)tpU5qksoI>31x+Z}&E`}K7N^WO9!5&Q#{>4x^&5k?*ypm_liA#UBZ z5&G%{BRLt8nCaz)0tF?#IhMx(6LEwgA_2gn#7@G=Uc^hWV}((;gQ6wtKw-gAVf}tX z^pOxG2UHcd)#&qed{n`jc#BOUelE#t7g}2+%VlpeQ?9Q1P~2I|$QmQx%tx?A#EK z8f~3w5p$hoP#DX3uJMSrB*DKCv6=!sI6?l^wZv|An1Ms@;{Px~2^r|7f@z}}HU8`yQ7=iR9fC7V|P`|fSgzns@lUz(mjCwVHI!DVZ)aqCFN+4?0ffCyb zSHlGnknp;K3?c0tqTvhd1fJZqwSs^#oc@LWIm;CgN+xUs!4xOVZ$%F4NCN~y%LW9( zVpRG$g7F=&-a;VdfyBob>x4gaQ-9%zdt(${EG#V;6n@DHY;R69gR{5QJKX z7J(f%ORSIsfb!YNfwjv%rLQ%|h3=uD7zMGhr_QPt^PT={JAqKl-x{XI0SWbk2^Bzr z?9t+z6fV0mf`i`0KoBq@!Sp5gQ3uDX)hA59;}{Ccy9UB=A;Lfaq768*z;j!I4rols z$LwGc?DT)pc{pU~5|@KBKjdLQ^J7xG8G z>_xr#8{kyH^Zr@`9$N%U3AwtJOgO-h^xA^&2o<7!Z8F+KMFyBrfI0IYyiCRY&5F$zsr- zdB5X}(-u;f6~YZBngLk+6!0nWm`LY?Iv-tUK5-Wz)#;upxK7DOw&sJ}q#1a(YKgQ+ zGx~E-x8-N?uM8k0+gg3;|E%}$L0BjBw?ZGh+{PR52&-p#+cG}gW(+Rd?ofY`y7*zb zEWkJ9)uwB6y=_!$T%iL7z$Ww7-i&gC0i;QftLEfyKBLm;Bo5)-T zrN<6A--mCd=UmrgQ}4*NwPTgJTVEen0yZuK#Y#$(0C2Cm(+nx)qF{;${={bEJpXYXknY_ z5XjT_16XVzDoUw9UtiOnxoZ7eu|^8Izuxcvdp?I+dxI_z*>zl&r5uqa>!T7}g%M4D z@|1l`HDiw*u8H){f6qiq;%TneNHvQ)BcIo&bPDTr(9apO>4Qe15!su*9&wljjzae@bYvEi798 zBds=0%gUB5b{0dbZWBXf2VdpNgHb>1(vC1d* z=U!j3Le?0RR)&pxnWMIQh_fSa|C6Mj-bN1njsojxolYaJeqY!4)p+33n50mhuQxvH z`A1VbSvnqKqIUH3dmiTBPss}lMW6?~TW@4+1o=x4=CN3Vj$NblIEsS5>`H%%-x-$x z{sB(fB|@QaP;f$g%gscbqj!T7&$@?QZW4wF3OW@q!{J#bF-e-s=JsW`0;_3SHb2%F zQ_14*ItDpvt`r^^1-j7FW8o%o_}*9dUo*xA)zcIm5RWz)MQv?3lYn z;^zqUBloX}?xy4xrcx=%Fg-q`?5<=J=y9&9`OGmTvaKpSPzM}lMU;`K<8=W!EI!*4 zv;uZ%tu13QQU%uKwzJ(uU?L4u)S|?K@*S*R8;58z!u<}X{*1`kzSp_!VU*_vr4#c; z;xN)FxLI-Liw)Ium|#>2$j&osNA=8Dnt%U%m!qU2D#H<+xF!#%JG`(H7b+gA5%dA~ zdAx8_;}XkP2k!>NS8c2{{$lXo^(~hrcbPmp-->HbyQL0p9k1snMnwK8*U{HI1BV2` z)R{(9t9_`qyaA7K2*zhKFNj4}v)-Ha;M3*Qs`e?|_8>4FxQsCe22w;xiE3twWNMX9 zMN2mQLsKOit>Y5HPncVN=)3Fvne~L&?W-}p^bKG0gJgz0buAM7eEQCr_;#By>%IG` zy)lQHE$1VJX8(TXp%RT)%uW$q|Hdc8$*(oIsqN!9$M~T&kd@A^IL~dp`h3wAJ}^G{ zEyXEu<~01dUBJ5qY(V{N*SaxTJ+;Z*9I%)o!Y1$*3TX~x#0@PdSI>LpEmg8&I&|%Q z=+3%v&vU}J)fAuXj?*>t7%_0O`)FJ#rJuhRa5+{LqGSYj%{W?vM(RHI4=t=*i)32X zsh9e8m%Xrs-tTCP^p+j+ILSJ$EcP?Z_o|5@c_ZYa3P`Re{xJOi*q8s8Br!FSy;nyC z0eO`N0ipkoB(X05X8d!5{t-Gl+33D!Wv_g>yDyJyCvfS0_=v!G0U}$mBWcHl z(Zr*NmUp`!?yervRL{A!Bj{Dz?wvjkc*3N@`<4U?lewaM=rb%Nk zx(jJ)>(*AbGud8H(P&{0no) zml>nnoh!82-GlGprR_b&k<{w_ewo}4!pKAQT4p8`TIT0mI>YDjTUWBL2v1fJp z-;P9M%l@W1M-5b~hD1D$_Lb6WrvPBnq_d8;=qwODw6H3UPd?LqapIXqJop$bce{Pl zbp)%zPKGxzOE!niaw zpGrq=KsyRfXAtCh`-HwBK}4gFb6Y+L;Wm3bt)q(jXw`r~RZ&mN?) zKo9~?%_R3ge>N6Hgf^H*@jOpZ$7&L7Z8xu==7D@@L?0Yyt-iyiBUejplc%HU&q5WNA(f`t z--$w$4^u=6&CkdZcBI_146C9=L`&?ffaA?XUIO(v+E9hKa`}0xUe&B;^Yrg~Lxd5X z-hSS-go5EJ5FaVxO+uPXqOV~Z<`42p+Ty2*vnl*^j;x_CUK{kD(N_4 z&5JcucyY<-A5wTR^tp5iOf6en(eY>B7S=0!*`)SjjAqV%1kS5Rdt<|m`YHq}aeVNl zXHW4%svbBs;37!eiw_Yc^I;2(4zwu{JcPoJYB{mJU1ZUG<#ILOjy#pvI=;;pS0HWu z!1SKkWsqwmVEBR2t4?TPRvYsuA)uOhz)(?E|H(uVV5l)q{rbIH6yFb1VP_|;UxsICZ7svAmjY26r-D;0 zGKRi)Te#-T2cOCkC|G^Wb7?_g+eTljMdd!5f!4qcQM%=cYI5Ml?htTdQm~S6*(GTE zi^Hkaj19dQuNq&8Ju9ZFmeV}t4*eZ3GX6gI8IraAMHrk+EaCCY*Y11dTIJ4OL)4^O z{m9c}2t{el>d|_gs1X?0!WyC~<^$EGsYgV)R%~N_f$gpVC>X43GZ#U{@fv9Wq#B;3tkX%YL+j%tX?TmG`gyv1Kh9{9WZ3s7OVa6K1R z{vrI;`V=z{fOKI7WO6rvb;?`bol>g(q(t4$hVq9L$$POZH@KrvT7!J=U*Zw_F@ZTnF10@&)%)Q2LYUlNf{RJ1& zE0f}0lXIN+WZhOlA?o0&rw>D2QJA&&3RMPAIyp|{K*umQ`=Q2y&z$KvW7)xi2pc+ zC}uDt0Mo&UYT9QhhO3OcFA8l}bac!cO^b)Z2RQ6v8p7dG?`#S7j*sKRnB3V*Nuy<1=!K_nR?v&dGqJBB4-#LGc=yvb8~NF@hWo&KUQM10hbU&{h8$2DA zZGgYcQrSbf6{|k^NZHyBi({_?&K74Uja1Yaj5x6Nz#22a>By59d~2dJVHMXw@44Lj zv)159Xah=-S$^afIvoqQkKbTESMb%J*=A$eqTgKA7wcOXt?ftkrn_thHGMBzE(U)G zG4oOl4|YRszd}kouAnA1vTsbtG~qr~@&5A$PO!H%%2(pBzH`uSu-6*sGd5a*YU{(^`?>Jt@^HR)(jp?LFc$Y=>O^ICk*;C5h1<^aq{ z4}^GTbt9UYhm6)Ir`|gYoUHp3wqzn(HEj?Q_(fw{g{`5C3b(T1B`S9JOqex-gBc@+ zeoK<3ybd~5RM_B1$x@f)=Ty+}m=e_NeSoyEESBv21|YUbn34aO3?RxKaWlRn*#s!l*in=E-3My|LG1}%z)%K83 z_H^-`47JARHU5Z}i*!k6C-(E@9b*pY=4@Osf(5bS_#VRDcK>iPtZX}rgMqzgu_dGV zVJ2_UWn2v<(^L*_e#k4X$)1k=mE9nC$KA~188zkLAZ#zhPtK3LVx5c{E3s5@I}P2h zr}J--k#F9URpHKWOkq=SUiFVU@%wLrlGP9?ObgqEFQEtlcfOEpbtGfYN)Hbofj(?5 zu4{V_-pFzWc+JL_Hbg@TcVM|%E^;yjJn|iZsDt(Ry+eGy;-|EjrVFabx*+5ne=1M8 z-@=kQy5yQ=&*a{JKbVVfU$_ZWtI+j@*yhLEEIUHuCy4$F*sP*6<^3UDS+I^6qd#{J z&8~+AiAuJG!1W%@uNXEm zf{cv(B)Sr}@ai<;L}1%FLq6f~v^m|qiv4nJDEj6|B-Fh&QYqE~{(aeV7H7OV2yQUl zPvhPAU9k`fyi<5Ke$PSf&9oOqZ`ZybEM6hLfeLks;hh)4{2@)OUqACw-v$m|*AMQr05JF-xV~q}!%b;fdoIsG zcGEjOX5*V0D11bsYK3iGvbytUG0^&Um!vhWhWnv|(!#rimpN=f&7Pq16Xxxgr`f&p zj{udHvCT^wP2V8iZeo3X#W-pq{}1l=ce&w}{r`uqbL?rbT2~6v=+cNB@^l)ZwabKAP44qtGa{S2ixc=%=aC?X zrk0CWt$?t@^feZyOv&wL>h*4?5-bvkdBgSI$$u=O9^MO3XM|DIzzGj<3R7V z-VB+KEJk4aJ7cVMO@&Cz3t5(&nD_mBk9mo&OhSr{U?Qt8hfsvM_)V(zyZc56?st#1 z$F!381X%Y~HO&k{ zY_zFuM1g!v1;mK4^7$~uxoQn@O$ujeZ{rE6?`FGLLFrdw_dQL#zr=0E-MC-sehrxB zRGzX`Oq@prF6{XpDzt*qyPfgZt1nrzkd9~VunkD;NV0rFrHMMlNb+vu{WT=ry9I0sy zr|YL&c(3W7Yj<3zbM$YCa6ixBb$~CazjM02a*U$NwX>&G7w}cCKiEoP`^N8-_jv>H zC{z&iCF7&RW9kzjIO;1IP8SB%D;j4&&w9VVCiLc_>?R@M(KM~(Mhff zVJ_`G6-G`)!25X|E}Ym!l;R~JzB%sw`r@rvI_l}}R|epy!Zh-FAnGE?)2c{%ga$bx zG-?_a1O5N&jacmVX4PS%5V&t>MFMlG}+m*J&to5~+qWK(}L zNGf8PpLf2hdg&`vu)#8PryRkS<{MCv=JZY3*uV5nN(eR;LLcPpM+*8^t)3?#eU8*x zcbBPVMO2574If5tl71~=W%s{AQ24Kl|E_;f`C~CoQJ#Q_t}q31$B`>vsHe2ap$|lV z$#%ef>ae}9qksKqS>te~ZL4-SLF$XGC>|vaB)oqCtFQ$5vxQw|Fol7KbeRm(Ns?ph zyu%kUys|xTfmdulRak0*@(Sj5Is#{^635tSAJya@oumQx>Cp4Naq*k7H)4U{a)uu+ zgGG#$JFD{Z|1OzS_Rhs(A!?i;4}^ z@Y~wfxF5+sv4(=X^^Cy5)p%^*$<58J%g5|rCb14=rLO7$&WnriH`x~+IFG-7jHD8h zHlPa%Ods&=C_L350|65mmUOHqk8-0YRbnDQGa<|rgZAbWn&CO3w8KlIVv5?^@AhTi zBzXwQ2~~!Fi1)Q zD?fAAtBaE6w>zRVHER*rg2MO?m_3DoL`@g&{tzh7yk9r;x@>RobvINQjUNeje#n9V=(jW=*pehV67|-GIgv%Yp%Py4UIcICUAq`={NughIe$g zk_dEqzI{H_?r)6c>UUFsdM2}E#Jij3Fp&r*TT1(xfVsdA5sBpbID_&i!=M1Y zuo=G_o5JgSVJcEJ8R&kmkYnzqQotqcA~1_1|NV!0tl zqF(}twNpuI+W0jxX^)9hAjR$Bo+G5Dn|a>twxRBe=;z+`3d&e);%E&Ve<}43-Th7@ z232N`+qhHyvLm@u#QeP?xP<}CPxh9(=}r}Upnb&HqH`w9_Eu~j(Otka6M0%89j&+6 z5qxD-_=;SL-B;bl(fHx?+U5xDQ9}PTYtmshU8RV}?^B$g*L>H&QS42^t9GEQOO=e^ z!JqQRL7@ww$o0Owu3A>@R!4&Lc8r+I{#505Xb8wNdWi8*VMV+dE6e~=7fB!59w=gu zW-A!gEA~PusU&)4OLo_1%{_Y&u^X&q4qhZiJTLAqwc|tIp|>zSHD{`D(U(|83bT(f zGTLn4mj000WfJ=>P;#~Zpt^hEZfz5#&5~>yb;oEMr5L%5!qI=siO?=ML?C{)OV@(S z58PjX>I*QE&CC6*S$z$(%IiyHQ&bBGXVT;86??k8SwP3ad9+sEe&51m!Xm5P2AAZn zBs`f4Fc72Rg=_zPluWg^3JHU9X~Z4oBJCK!mz@`of*3BX9&~{` z{asmvn+jEQ1_2)Mp+o%-+PWn>{_%F93F1Dr+E$pdQkM6!u{dju6~tIj`H~zAGE;-@ zQ9j%X`iig*LT!y52!?Q4)F%a95>(kd|Mw@MM8nI0&vUsr?de7qN6JE3XcykT6sZOU zv?sis7Vqw)3pEyialF(+Iikz#*Eia7e;9&bmy{CydLpT4YQ=;=o{B`>@OZ{F-nJCY zwdh#Bp#q&PcW6HOr#FJ_?CD`}Qn)(2#at?53v!!VLFZqg@~vOh-VBpAt9gpd##t2) zOd3Tg`2Zsh0f)b1n|P3P+2f*Rj@)J1%yVPgZ?Z$eOQi`HY$m0y#pgIfu_BP(L=m zdBs*;*J}oV=;q5Yc;u>a#Iz@YI4oFtHWl2BMfMG&E1G}CfqOz3-d%(0lv^J z=USD`PLv6`Z0Sf#R+n0*Q-clRTQVUm{{#1ByImF7cb-)xR-SVa>tn^CjW+Q*^+}jH zW0=nNoK0-a%<;#6G>o`n5++P__|rguCLlYF;Js)UBSl=GSGqk7tcfLNV(M%Q zk1`ctRky^zOG$ZvUZvqWq_Ok^@1sf;M!B{`^oVN{x7=D*3H#EYhnNy;iDu3EkMyvs zmpVzbsn-et{~*z)dFZ*_Or`-`O1{`I{L@rd1|%=x&qdH?6YXrL78Gjg;~4~f@|0+!yG!A>++#AEGG^g3aH z53P_{E7<9jsTZ)*9H;gSP0xa{nRTTlzv5-QPWps-f&bFl%LMlq5&nh7N9lZ#&Tn!S zSRuPmw48Gz_wCG~ULy)CGNeB|RveF-u)bjGyHBi7E#^`za;<#J5#dZ@ZTf-xzox*E zu(^#StwCG83`u^7bZuyvh;e%F7H~KKqvwsLn$|i((-ZQ8gPeeL*ge_5QAmDnS1OtG zJ?fH{&!tYSwYZ!#q6)GyVMhD9^O>xN_Tf+(@g^&+D>c^v%7L;d;pj>Ae39KH&t4!{ zLynvJw$l&QZz9 zP>yo+?xA{mxK1C+OEgsxy*$N2AbB!PRw9(OGR7@hf72p@{Gwyq>+_x)H1|zLittvK z+IcGBFRnw-Sd-Y`AAaUhm}d4-4KAvQgb~Ze-wfrbg;i}NNVVjPy|&=X_W?Gy2>^sQ zn8|G(*G%k*)BemAPZQrqnzhoTO7@g%U0;y{Ny5`_mL&K+*OijdzQlZkyOgPPe7ZzVDcU$E z^EZef+yK}s$uj$I?Q|3o1uX0cO)<}iT-;VZBg|js{Z~hcRBO@ntHVH&eO_oN&&K{RrE zb#T{LY3E127qgT!i%bV#waCod>B9XpyG8~MB`RfxGERMRUaEsTYv@g$Y2b9WwwJ5= z&R0e&QZId2v_PF06O+&qHcZTRj z0}R7ob_~^wbPIu8$TyEg{KWxczhaWZ(BJ4yY4iu9ha|!%oDNM^zflWYh9>DL)H-uv z;Uc;*(EkwKUAYO)|04SrPDJrSvZs_%4SM~MmoG!XBX2kY>K>#a z%dPqIOlZ&bRl&xiDBC#3m(Rj%$HVR<`w^cZgKgA41uXO5{l9dQzvo<~fyXAXa$NLa zMqB9<+{E^}tMOEtvc~kQj=$gZa=+U!vvZGV{xco(stYvinHh$sg~hfIYkDp9_&nU@ zv1pWHI00-vJfJxoglMjNk!=3CUd@jG5=!PxB`tc8+QdVV-5v5|w3-J7IYJ!mr4v1Y zWos1LFiQxSqCl&H9gh#-EQ0qA+1x|WjK&l?x*rKISF;oiXA}FWHHL1FjNF}I2W2Cv zF6aT)U55=XS<_z2w7xG8T9Wwb4<}szjNU?~TD%6VGhIjoy3&Tgt{j)CECnmi^;9W| zy=VzePzQV+fT2gzJ;tL%*ap{wYJ+5bqeO7fvyldJHb%*?m*s?eAK(~pnX~uu5^PD> z{E5F!hwv@Rf}j|V8-}g^!d8*i<*bO_6qd_#;gkPXI3w`Ax)s0`jW4>iYb&-q|4yTpgS|9z2oOLqrRSY2k)dJc(2c2=5rli8ap@l;9f*LG6 zr@w#?u|HK(yVLE`doQCG6n8PsCDI^{Lu4`7JTID>Gi!4tq?m|U=y!T$7(3^T;=lI1 zU+FahDE(P$2@wlv+^&%S*mvoOzw?J@F_ttIN#K_y3tVIGe z*~3@$e!JhpYSb#B((_s$PKs&~TI~|s?QN>o{^dF^Ply1~uBW`&cI^laxTZ25n??CF z%-VQIKTQfFhOu+%5~!OLB6(~&Il%s~mo)HSxcqd3Sr7W9gbMXGG>5E@$(&V>%z*9foGeMpT<7QAo-J8u! zhszAP1uB_tg|V;zI!>rm1?MttdH<j4Ry)kMmuQ2j-baZ#;?8=P3bMj?I=tqW* zO-ks-mMtOEo-9ye6$`woo=K}%+8$!})9D3lS9I=hcf%Aqs!oRdIm9SW*Qw^K5_Dv;L zxof!>-tpmyTww*;z+WMrl{@K>!lip}tp8esB+Xk1&(l>2hP~Sytd$=11zx;#TONDs zyxzutF}(Nu>pgxXs&~!A- z-oL7C*}VwK8v*d3S3agP4?~%*_~lpHtzDqh*VlBUaOS>h5vqpKW%=IgTWcTyjFCb&u%|r%vF>V@4AkCv%BJ zciC_=^vOCl2D;zP4Axlx82jf03~F?wJH=biU3SYejt%gzOaIrY^#>Gu(MJW_!b6oA ztx3)9TA{G=!$!X`^_Hs-s|%6ny;XtyhRzbMo9dyqyX7@C+l|32fVq=-= z%9?Ft3!wpTp+x2)w05weCeXOVX z-~A=;MfU5|mi6!~w7lB;C1x$w`=-KQV&04gaNHGNL%u|%Ke#V8`CRZA2!A8UF5LNd z#zn0UkGQUAuoEYF25cNO@rY(-^<&d%Wy)yK4cQ^3>8qgt(3kpI!v5+ZvBdLNCGFY0 zB`_%W`(L2{E8G2#Y8NF11`GRN|9RcT&XmGGtu9yq1O(?FT6J9rjteaC>N>Bt#9zH) zeA_eOawU^aS+c$weoT=|ux~KcjG=g|FIH+LMlH;rAZZ2Ro+YpRN*H>k0JaGqhHBbD z<3N6qMR!V3C??AyPFuKe`hP+Y1xukUvBsIaR|3$aAErhf!L*}exQ=_O!KwYkHm^W;xpp6U>H;=Km>*3+W;1*$`48rd^upAT&JSn zL!$VB&n!qZoO9f|jusYp{A=l8k+mPx`%&u2l65#F{#bd}Wy6)!VPDEH-~7yc3?XwtWB+`yWy73|)VFhA zGeVtXeCmgv!2)SzCFQFRuPq$|kipOwjej`7GaM5NYJ}})^C54vK%waZ2tdgB03md- z4!Q<03rXx5ACa-tL6Rw(q#EQ>wXU> zBu2=X@Rb{Usbb(mV<1lbnJPp&5vq_T4kW(E2BC36fdY!rfs9du{V?=z3WDIZ9<(|d zqeRxKGeuP(LQxuO*TFY*WRe{5f200XqdGB|po^(FP2*9EtUlJPWrV-i_wl#iU1w5l z@%i3gaLQ+VrgVUh)TSJ>zBfUz@Nwj0;@;w$>y$4!n2~a2?7n)SLbWN|Mx1Gw^u~39 zc$--LzcmDt=CnR{jQ|0B_;X_SKKb9lO_@J_6O?Q!I%UmYg&x3z|d0+Ugtp&-CH(r zvSpDn$8+Lzp;yrK7rW@YediqJ{RGQjkJUKe0^o2$zXdfyvtcCSVT@qlNlP++;N= zLIqUjf|oS^Mkq0QRa-5K!F6=~ux#Tt33V;SP>kLaG4sF-9;8TobRr<8l>(k3DB9&2LtxwS; z>T97GJ);dsL`%T4QeMB^S@E>b^+S_div>JT21QO8VQj%0|JVyz1$IgaAqkQn6XJ3@Mk29!J-BbTW6{EAVwj?9D*c4r_s~X6Zix7^ez-OT?=g9g}{ejkRD(c zuwD&MivMs;qZ044fC@|guKGn^K}&L5*WXh%hN1zd64W0?CDj5>K3CM@<&Z=`8d^=` zQVtSOCA>`aEo-0GJVBR;qOP7nczYJHJ75k0@%I#e#R$V4VeJ-=N!7$U){J+oD1dOY z<%@9hZ`A3x!*V^}Wa#)p>TZ4FwgEYtGE1Rn(z(?<@<(Gl1INYpQ)3y!by8}5SKu^t zVn#CM`3N%A+MsSf)QvGsjFcb?7Y|8gxl{{D{P*ZEB5;4v6W5&tn3i$13pTLnLoY?? zZ^cHMtNY~3mHb`!0nNz~VBs=OqZx?_5!4Gm-7=Yo*yul#yKR4VY;m^TV+df8q9E3| zK1S$=*{nmkZZ&K>u+1hEC#%J4#HI@mt6<`xiMrTkpt2Gx#zWHl5;p96mPu zjD*m6y?ta2o${AL6YOt1xV?@abLhb$%=yJ+vKA5uUK2z0MLR%+bV{@LN4Ueyv3OB=Yph)t5}H&}HMh>k%ESkuwEjudnH7eLzX3;mJ>;l^arofMY@dN7X!SY-t7N~b&O$)p=#p!0#T$EWe{MQjrysqGRSa= zxkaGiCpi)N24jX^A89la9FT)s?Lgpiby}X|4^8WwCeK`?BLlgC{|Eumpg>Fc`Nw>B zA(3xYj~mWqgLz`oU7u~L3nWj)c2N8o+e#U>B&cf-hr9l+>EkqA?=&acicNy zCs}zly|9@CZk!3x*Dhi97uEL(MEdD?#Rr8Sr z{?7>DnEcBt=orv}wV*)TvBqGnY@p$1)=e76#<9qbv7&!tlMSB0_Q;F!MJ?b<$xHH8 zuOIJu$i&2P$%;4|b)RKAB7;Ol(qau!S2!JjiHy_?zj0DDHcyU-N-CE_{T&%1CxfB% z6j)|~zCEl}Dz`+JV!lzi$76o`*Z|h$3AvB?@czgudkwVp*q}GkYJ9u);u+p-Tz}@; zitwNT5j^wJ)jNrTlwz2hjROCG`x)dLQ!v~c03&Qsmqx6jw9D0Oy#Tw44L7>OeO7Ev z7<7=Aio!L4dRP*LZ2GBvXGlu3&SP)FER+0A1X(P8;_o*efxh5ulj1ub@NJt`RHOEBvq0}e82`qm+Za;ym@$%R{FVHSTQnXk z0S!<{wncVvNhubNWpLTB%L2cdhd5{p5tQi2Wb|3*rZh@VFC9Sb$pX_2>WP?!E*t>|ha=xW=4r~AEc zl4*dCw>g|j3*StwzcQ|1zl<9m(ei?!DFm>BkeK_9UQF0|raV8MAN>`ok8H&%x?UF@ zstVUZ&1bFPplJr@6;%Eca}^z#@53&<))cD3#F|#lMK&s~;yc!YTKYn2W}ep{w*rZo zNwwE&%P#i#OvbI*bUU{0MNbLRT4tA=pGxy4|G2!JGj}4v5EX+-TyI1?%3O2=d@Vq{ zu98Sj?rAf}&!8DFB|_9E@-e7@f+!s-^{(||@+Y3lVv)L7EP#i}^CkNmHH&217N-0w z+&?QOOU}tbsnj{AedV`Ogs0Yg#Po(=jJ*JrM*59Am9_cPGZoe74!^D$fsli_Mond( z1A_UmDUWXAQR=hKA+|`XshfVkF$Pfk%C7MvG^!>b$%rVjJ57$8HUIE040d_Rf@2%( zgGt#KKH3Vv25Nim&Khj_exn_OUxU9LaU(VxB*5bE(x4)s;@(D{a6OcRrPDBkc> zzt+}di8~7V6TsH4F!J%xdKNL|Q5Vp!enP_e=4LU3@@?9Au3>4G$VL9Ev`7H-BKM(t z!(An?2hmH0!{)Nk8<_D_roecdGCewlFw<8dI7I@81L^4X;n}`hjXORK%LPj^c)Y{J z`ZW}lMdsfDi1L|~d<(`@5wbejS)yvZX%1D&wl4S1s7C?^ z`JqHAkKEe3olW*W_aoXV8a+?*k9PZJ*dS#tohB+$@`Qs1;)kc-mp9R>R|R96JG3JqdMb8o;0ux}vSg=U+q<=Ap@|^GyQYe= zq-^<~gi=|8THvBy!iP4CWYBYf!cIv>ULjv6h}}Qv>iMSW1SG@mX37`5ad#eoMZtE4kQJf=$@`9~WGi-S0oT!uGn3bPZZ8UCT7+U<1Oc9+s;jNY_LI5N({M zmfd_QDw^sqpg@SgI54nlH6~6T7xEsyXTTXv`zjv5f7;?ko(igNxb$z|KRQEsLxC;H zToXRYZz2h11c4)y>xT71mHw0z#(P_;P}{m>Rgoy}l5)u#f$3}rw-R1Ma7J-GxwRxw z)P_h)4FTBbcfMcvF3Na24zHU&5XUkyRYmrsefQN@Rb;u26FG;D=4WQ6;XUnr zmbP91wR+&EF0Yf94?2Sfnff(`^X<@ubB=xH!U;JBEWG2bsb%GsoDCu?8%dnfLl4&1 zzD<@N_I#4te>h&|8uiE1QMC2Pc5SKIRGTCeW!GyTpdV%=IY5%9^@Z}BJ=+#GwJ^enz1M6A=y z5K_pTfrRrR7H!C8KfFXV+J>hRAts3qc*-KC7pr*h<4H6V+vZL#w#))akF%!cWB@## z2H%{!UP{2o z_l7pCFZk~0lierz3RiLQ@sX%LB%ncRXQG7e1YZ6@Y>F_x`t>%i$;zO2`dQhisEH`e zqvLxG=c@o>tGQBkj*nn-v&GF#VWXjFh_7l0_-UP$@R0($XhmP|GC4o=q?eV7hi8T~ z#14o^S}XQFV@yDb5tLdR(1Tm=h&DlNpZx_nXlVh0TgnjqcIHcA309Hv2rQ`Qx~#bN z>rwY#nZw~2g+ubqRCj~YU9`oTXVG$)DvI%I~7y%87CG95BD1szQuyVtfC<-Koi5H@3Q8w~B9%7vZtzAYA(cUr`7p^#H z!A~mG8L;q#H#bfJeUHiyCCZu8aE40Q`f8NVqbl8c5xmYHl*(V$_4iNa$KAxd0>>st zYjnYeW)t`Cd9rnk`5I&bTdeC}w<3iFcZ~s5r~j8k2mFVu(^>HmeLjN*0VyE>0r?jY z3F7Qx=wfNiXywdkZR+W6?_}bvZ|1~c<$R&BVTZ?w*_DzTm<^GQLKB@`@|OX9EX0b| z!k>%UioQ({7yEuZe!y%XJprHEZX4@Z`M%zcDBpb{@}KtiE>$QR?mcs92g-@+>EYLX zccbtG1aU>*LOLuUKu$mNq#g1p(H)Q~VENLJZ81?-e^l?r{3Nt9R?tI{ifa}N%yg(H3wH+kASf`$%jkh>lbYR_uhyYtK zyHtiagl1O-g&i8YEICgz^q@d_Tp5xMkkSYj^_*@cdNyoV_v19t2~;4f2Kfui_gLLA zcZKztb*NMfM;Z`e5hGr&WBIW8?<$)Q(R^w%90f;GJxE_7!?T@b&Jd|2RdA;4r;v3z z4*i{12|};Bv-X;b%S7m^+sxTInJ2NHT8g-I&=*oblRAk9L6<8O$y>s!7~8-Okjp-J z;BT`qdyg-dV9s+dQ%yC8-g zxX3p(#L+>;etf3cyeho_b_A_KW8d`{_f>KA?M-Ikn&fm>F>~1`^r-EYn?|c;LEH)# zbRGm{`U@ItBFI3bwso^3Li@05S9*+F8Y``7%ab*Iw2{>7rCNVimeOjPVm?`)pQ5{x z0+}2@7Hk&BZ6#!40!DPr)F}cqYD4vE9B4k_I`V@#Q?X}3AnzccyM8jbor>t>71&FR z9Sc|0IsF$$t2|YY8@4F$q?|3C`0(1KoFc0-Bon)WUAsR`%C|H5+(zufI9)M@J_d%! zi^Vu=@7c@Arz}-|I1Mh1xxDUy>7EJxW7HM1ouml#boQ?fc}uLY{=a$xY)GU#_?aL& zrZPtHXQ;lvyG4Tl79l%+9wbzzDu>%Rn{KCon@cdpoK%(QY2m+|7lj%K>3dd)ojedg z-8nj3j}E!9&^}2-R()Z)t$S4=&b)ZMovP&GDzQu8a&fpM= z$G7-;z-k)8m>qiH0?rjrTW5Jmc8Fb!-+y;tV`K3zbz?{xYW{xn&z)nA#otM( zW6(qDrXF=|86}7+CT1osT7wPTLg!>O6?P`Je{ld{>&zq`{0-U90k{76J zjKHPDGnrbz(w)k1bwe&eT&30!SxS2Eb~)PfmIz}rHFg#%K1T=)cGGiWQ2hK7s~VHt z_+fheM{yLYUT-oDVVb$8Bix=qAU*zsm7q^>tZI@5#O5m%WPSGlG*|rDR>N|sM#n(83UC%#!S8crZTX2RlDbd9s|i8r(2_d*)%Oqc;-*(ahTg0*zk>IT zXl(xgH_;4TlIph6dr8}N*e8l-5#qIGq!XU&LlTT$zx-P`Kg{1_(>Q`l*+P#bX>th& zY`a76fk%Ys0?<<3Z9qq;mvQE*O-mh@vm8)bm~O2b}1Q=VAJ}L;j7UM=|D#i>psl+ zy>B_mUW)S-6t7%y60B!#Q|m55G4m`bPHsNtMGbq^X;@htSI%;^19ET=%VRvH@ni0e z#M6NbMA~d~Qd19cioAesIT+&GErkL~O02Y;J5y*-AwF>*T)BS}?MEhq6iO&FR` zaZMRF2W~7GCs#kWn>!3p847cn9)A8D`4H`+mna=wxj_NhnlQ}$)AQZ?h%oBb48Gi` zT;2H5BCoxbf@#`iUy^sy%b%?@ENvApIoCf~N0bbrOD@xY76Td}MK`r&vUB5+$7|8s z^f}79>2sM*!lg1XB)A7EqJQSv7R+)^Ty~PHpx$q^xcU> zY94aZ#l2e*is|D*Qi@jSMC%PVEo}FBM3H>3f-0I2;PqM_wIi zPFTQXn_f6}^}v=3)n$DXRePZZI{BQ#&tOtBtilq+5`l5Ubk`o{18AqL8WhXOUl$-# zJuFokgalQ|x2|rcOfELp+xYG7KS}GI;w6w?lOwI75wM!lyYI)FD74dwybdW_5T3~9 z$-%|jFF(?5_GN$J@pfWDh<~VY+Ez7p)VFFCs~a~Z%L+QHRg`U!+m$SG$;vjn!pPUi zREyb7lmM1qy(wEKKG2z1q{S=2XYjVO(~JcmV*P%%K^VH)y-GE?C7FvPA0a#ETAEKd zV{2!!0G85E>ZH$#2^Oej&S8i%$VD)j%{p|tK0*~|Y3hA$(Fgjs7|EOE8;dChd8TMk!aOxhj)E%agiE(|!Qr}_#2E|GK-Odh$?vx>MUIkjmX1@J z=|(aN-5?A?{YR3lW%|i+jGOvVv*L5M48WeH*7Gf=R5hk^U^|L#>8yw7P1p&aw*h7! z_xxUIw^gs@B(G!zyRRiuBK>MKg`H0caw5O6cc)MggKsJwJ|-41&gUn?3Bq`SBmOUT zlbkl8!sKy6EoxQ`=n{J=2Zd;FXj4#4a8&^tRJ4|1kl(A}o{-wI6J-4k{B7c~I6&%| z%s`5Coy~DaMlrWtx@l$~d(e~@;s|F|LRW0(Uya!8sL~o*lGWwsz|ub-2E)d$c)oa@ zmC4WoKf1G)afsaEqmvKW^YeP6_d`K)@Cx4e?gpf%KT`~pY?mb`o1M8GShxMtRDWIi z?r`GjzGsG;2rp;P4ddcdr(N8w+yLo9pwveCQi5H?AmnaX2xcaKH99zG&p(Qfr1N3A zR~_A_u`{H#;1T1sI=68{S-}^HD2ObxQ|WMYaL^71gl)F*L3d=0y_z4UE7?4zI*l0ro9ia2q|la32Cn^PFkpYr%QgH1>qjOUbCAJ`=|>%w+Aw+V?0M$ zN>-q!X6EZQKFGz?j30;bS#u=D@~k3w2r}T@T*v!T_u-c0nW29K;eB_YGmuV+suG3i zoZ+XlteNQC(h5mkx8g!#9zHyQLk-^Q8r45Qv-lgVrELH^4mpk%mE=j|g!$%^@H3U= z>0rxdVoM|{o5EGOt4oBc^43sTzpq^11`0m=&`?IM(rW?FPrS^9}?;O zu0p@YzJd;rh;_g{ylznF4W6L3&+03mhwzF8J|jbb$3MvR56)}+W|Bmo8!j-HV6`vW zqdN7}9xd@3YD(MpJ4f>W?*Nx%S5TV(1p#T!GzI(mZ+Ap#wmBI7f8BL?L1370|0Qo@ww)NE|JRIo_(L7Viu0NkK1ABjq9i~ISdFlkY+`Bd}+yt@llUZNg9JZ<`}_(BL*VKf>}~WDa4-uu?-+}5_(xZ#H)is=4ZNR-=lv4jqJ+S z*W@Xcw+$1vR>y;KEV|L>lcr_9xalXVr2GqYweT^DE7MV;Ocu(LN!;Lyjlp7-9y}$w zf--4qP&vMhMHieaohL^+_>|*3wK^<}=zU;0yqjz@T{lOi6LzZ36c9bdP9~kRZF~+2 z2Vo;H(%^*1@({-#_|>Zh0>~y3Zuxn^ufJd{)_~tC(kb_fA1l2&p{;H;D+}L zSy~(!S==$KgFU8ju?>oAR#v^^rr=f<7 z!!Zbr^})CzY=CgJ$6(+&PmgC=K7cW;@3_G=HG-duS4z8OZ*DT^U0gf1L_T*M6rm#* zr=y4efx6aa`1{ku5!U=PO5&WIFL6m2^z3oVXDbVV4kOioeFinqr<9~3lSJm$1_a{Z zc2*&S0l<^S7lV&P2g2-oghklIiEDxv@J4C{*ZOBb;VD_^mP$Vw>sR5PLy-{mbLSl{ zgwXoceh2$CO0OqWB7}%vu%qtbga5Kp@y!QK6h20Fv!uaR`X)N_QIi}lDoE`ygsH!OEI zZMbP3z(0ygWMNFh!w0Bu8x%}iba2=rRJJSjn4bT!?!`CDgh$wIcXV)3u1<-+NRYQA zGX%fjiep}NVpBLPSQLL~re5A=G={`e1$swrjUjCgSzM}@S>*k5KhbfQNBK)&xxo4IB2w{I)pRmWDx1tDt{mGZE9uEF$O^WZr`N`+w{PiEf`I~!j z-f(^K_kDWc+>Nt*ua7qIJ15VP%rLN+;4CoF2J`f_eh4T|BnK5v?avTU6=l5KD$;7UDKfS7IC>I2 z-V%?#$+o6)^Z0G_L4ox&G7z*^eZsQ}0PRnw0xUAgE>4bKy}Mwbe&y{auIk<*o91;t zKnl!9c5!;P|Mu*H-Ts4J9KAZcV5$Ot0B5hy_Fr~D0Fxd}`x3}$ydSbN0W6r_3jqiC zsBQsI3>yx)%>0H7j67&Kt;AIfwrJB})iQy*{WQ7#l%TO{O>(n|n%O=2NfI2|#VYC8 z1?9w24K{(M8jb~*Xt5^E$N0WVG4ASBa$mt)AFcXhi%{JcO~Ha6pv%so^ZRpu{djx| zZbto->~GzWOYnT4-}`MmN4S~<=Vk~P?Gub#X0shu%F6WD-pr{;xce0LJ8kloLn)YW z1$dGIv2-4z6MX<~&^Vr4?sP_f52w7G%+K;NPOVFGkXMbl=5}}kh<3K(uHVm+15#WE zbI^mfgITvEU+l0!`8=R)y@`QBnWt(KyjKOx4pLFP80fBObMCa&LK3U_IFBV7-El29 z<+1>3gMU9db3_T1$Eln&#D=IP{1Amv;MhRQ#&PH^AbjjHEO8+uk=12?p!Pc4MJJS! zM2(|qI_vuRH@dH`w8^)UYBd<%%F`(cf?=+>H>&Bco(qX|AGPfz-I*FXS?Fb zvogw^rgdVQ@!*JqH`0JH5rPFAKgRV&uR_O3B?b;u>B4jvW!zyyuC!mMP6y=K{m%SjX9c+d{LCk5vU%DCenH|1YiWiA_M+^opyrT!dc69J&uI? zCZ?lP|f@<%o?T7fLKdZt-DA#UFCH%mm~dj1aM@2 z?diif<)E+~n=Cj2f3-r(R4TNK(wLzEQWdwKWNZ>x3Zs)58blHMiB}>``R}j z_hc?44#I~_|VtKa0YwP$G(1=Nlf=N9NYETY~Ii!2K74u%nbSj4by`%?_N45BIL2_EvB zWuB*-$k2g*1e>%#W34m-0Jazi9uR9Y5YBO0r$?Z9TxJaZZ<UsL2&?RdL% zlBd;z<^?Ah+lyc#}={GvF8u+(c0ggKc{AJ36`b;V@FE znDB7(@yaNFkpAR!AGOs?hX6JCzJH3)KSk(15iSXtfYyV4gm1L zV6J2OaR&b;^Bm(LvsGVX@H}R7INJ7t0q}_==OG&e&{+bf_JWHs_z;)D3#T=Bz7@X+ zI((CVW(TqkdXHK@`?&7ia4I-m;!@F6#<0AOu{>Zd(9Ej+(q&$uDT>{d#X*Nv&nUW32U$HHeuq|Dn}hLx zlmgdYcopL>8#bK=cHsaYL`gXqt=fvM7%Z%-DVsC%HnoI(AsYjT+QVQAPn~0<{kO`M z{(%)Ybf~j1G$ABTWnK15gv$X+-0!*yj0QCu+E0E`_d2=&A7Fs>X`ZVBR43U8dx2Is z!3&$-cQubma{`CzS-_V?->d|*9E1#iaT@a;b<#mVW8l}sPGV$a2(ChlJnJl6$1)3p z(|p0P&SeI2g*by8&Z2-kE(hppp+k3M?cPOfI{(oXY#^<%d}QDJpRJus)cq^xApZZh zY=|%=$~R4-91w-w8%)5ux%4Wd>=OEgEY42ujlsClmylpsggw6U6h>k!0F zXOU|i571GCosJS#+hrlLJK(rAS9KAHF2vDV4tiNY@y&g6#p!jtRG5A^h*Q+#Qn?Xs zRD@Wx?By6p7Jz)G($;Y>!0_Vf%XrLF@8AfIrqg%=yhU4>N@|=zRI=JJW*?pltZ$-G z_-*M<1(tojpmpmQ`{wqO6geD!4XU{Pgq7_8M^8?}bm>dr8uSu*v-F@mf&tr_<&^NG zZ3Omr;+R?RS-qbA%=x7^^nGwB79fhj%L?s~-~=g#H%@Oq@Cx64;?#B;FM@NJssh_^ zDl(oJ^BO-Be6sH}=z3nthN3H{TJ!!8XIDZ`bA0>hN}A7rfWr5Ec#`UW2ZB(kL}uRM zU@xgle)~W4;S?-zKB0iYME>b3oG_lRVk}j9CtFU4`152m((I zI=QAT;H_F8hiiUXzi*zGdLBzsLrd3W?m8H_cVW=ke?7EJ_LyOA21G{k1~F5Bg{XBG zX0@D0^VS?%N>?!eA|sZfYHR$n{%iyd>bwTw)TaT+&Mx&K+gGK3<`tDXG5)&dUe`v_ zg(6!R+gZ3q1jFCEPG368=^$wz#D3ND)yU)+oXS*tHm>F&OnqZ-F9qQr)!8+RA+h!}?yOfirY}j+8q1*c!RJ@zMA5yJ}>BQ(Ie< zh-9{uK>L;(_U0Zn{)cWm(4_<>hksAu0%C}y>oSO7Yckg-OB~pi!rq+4rAA6Ha@#TA z(Dc;22)xRNJt})J^((qk(9zbKgfA>{xVO5Y1^o+48$8--e|k^bEfetN-o5=E^SgP5 zC+xa^RS&~X@Wv0nANXA*5eD=}%W}F?WNY^^ZKE|6$t2xc6d8PtG3ixd4eRQ3@&ePB9NSl>Gr~h|hmIeo%_i4}m&O?F3n1%z#)(vSTGhV6^dQC3n0;8CaPYUvUbKL_4(XzErvF!v$Yc zux@cJ0L0_%;zrj_STRB}s0UNHTyR$L4lpa^uROTfzY(e%hi3onIG??swX;Qk>)=6a zk!xr&S85Kd^kdQ-Y@;sys`scdCIx-Gw4}a7EfL-0j2Viv&64Gb(cHLT!Bwxxz~g_6t-bzR);0U4QPj7BF+uPcr-o zIvV31r6{^_p(Q!3rc-g_Z{5`$TU$kc@HATCbweYDHO%#Tlj0`S@ec5R98IQm7vOWH zw{cp@ShAw^8bnhJDy6fDzRomNiWdVvb?=Bd%FKuk~%L+044VasB4NNCpPedjb zAR_uVOH>h0I2-Gm*}A`fE{8L6qmXlE9hW_`%w%2_%`DL)S0w!j8j0wEHKvPUKZ^t} zi*+8I_it0Z=uNq$`|9JAE<5eBIXzRe_xRE^ZN4YqCr{#gt+UQexIWS+`I2Xp93EpC zSolomDu+aX@i^GN^`MN~bPqwD?g~-%&ioW!+coQ<4PVAffbLv>YcBH}H9Aa#kF}4{ zGaLk-?l=79tHUS9hfg#Jy+z`5hgco6L`D*X{U7K_Oc_Xe3izbEuF(5t8ZwN+L4E&yH?eY773|A6=0G+9tq`Bg%3`cjs84XomsMdjnD?`TUKWt`&(+G#mvv@7uS%Vxr5{OYt~Y7iM(msIZBzsGnjYtJ zf?3@@6aWAS2ml~gN?eDv_Pq}s z008T7mu#j2Ab-_8+jbi_lJEWsgrf;t6Oxjh%}hqJoWoGGtwgsG89O-|tJ3 zFQa~V>rKieD55kW-a7f^86g`RWRNC#;U`5-{3OJ0lYeMhW3?+w{u zZ3x*Netq=a;b3^aJKXR8utmPy-0ZN5(Xf9qczb@ZcX&Q{+dmm?kr$%kc<=CVcyj)B zZ?|god{Z{t?T?4&ua8a+`r|Fq{sDeA4h}YUciX)B>;B-|;oAny4!wM zaSO1=M}K>V<59)%_~`h2+#h|5DEiQLqevHHKfm1d3ttc!AC3F_=ev8O@!sKJ%%Dda zB>XP?csI(62qcIlxzUheAAnTGwMO`9kd{dy8te{_`zParAuy=Hj>_zc-fo0+;b#R7 znZ!T*{`lx*d_EYxLuh)lNV8(h+d!EKH2i)r+<&iu4Q~P(+d?`Rjz;}ALnWh0wk19R zx|5Tmlk=0|_+)SRZtw7okXvh*WwgvloMt%*DT#fOJ=_Q7;^Cev3=~2|nj{bRH1Cmj zw2b1I{*7e*B=aBsCzwSUHd^>oN@#(NX`cJHH0!lGg7o1LBX-Vv1T_0)P$pDjB@h2e zcz@?;M*J%pkQhi#qPWQ5cm8l6Q>Nemn=7QeKOnC2-J|!1`$zp5=1@`amwD6Oj0f6f?@l z6Rk&)-4cK5N6C`$JWLrPQlw%a$#qn4JUPYDqahnlnyoN^z+jkOCvobB$RPk=TUv4H zV5oVdEM#mz9z|yl$ssMS)9e!Dlk;)8hA~Lef~1#X1geR6pJy#SBdRXXH8j zYi+dPe^JHT+oi9|IR1h9nZhijFj_=O0@}Gl*1T3v6n1l7+FED*fJJ04iHgXNqrXwv zkfc{Mi~U;@-4QPYbO9_#1w{iq_J1#8x^L8bQY;K zREj1y{&!N9?2vYQ9p_V-C8BhjwG%~P_;b3K6cTH%NcYpgkALY1W?(Yq zLv!~`XA6fKjl`6Cm-JThA@E5He_H9-SEN13+5{E|nzYYOp~)F?C;@vkVP$nXD5-u- zv%;Hma^EUyJ}cKa(Lfw5&%jQ^l+8Ae;{P3@8gy`RD(Fo?xUe_{T(DA@g$&&Lk;s=0c9Rj2fl*BNPc2ix@7%0np?wY zyI8UZh1R!X7UkPU9jpjBRKPFhuc=xvJQ)&6%fd5=u1gT36maCUkPU!^omY&bp1)Yc zx1M03!|1KcesN59bt#BRDvaWOlw5ijaeC2VRx$DCR3D;(lvxb)uYaQi%xLesll>lV ze{}H^n05Hh8VhQo+W;?pQ~^DV+0y8>{k8!0dwFpS;~z%(f*X%^k|wk*YiF<)K_O6= zCDM#TspOPbRkSYB@D^o4lW;JL;?VOeVnG}Qm!9~lbta=%>7~{gpttVAn$bB}B^|3N zRFHq>2gPf_*y}8vzkdbioMwD@1CjuMN3PjPP@AA=Kzp{{ryYnqqphl)4xbVrik;D>8i9X6y=9)a4j7b&`yKt z&Bdzxl6(%PxGK)e3#Jg>^A2g{TwP02@G9}m9*Bucw6`!K#H56Iq!^>j{G)E zLbm8}akH-UqJR8ra9k)&JgWm8yGJlTVDbTZKMcJWz%nD61Jf{*!YVTd-VZ){qbY?`tnh}p6Q0;v}rymp9wt4oqrX7I5bA+{jx}dbiRNoOG%du z;s|DVHwWJY9N7F)#6wTUj*fQ?{SK*ifhv=RfCv5W&)@Bh_P*X90?hL-wyPRHW_uWD z%}>u%v5eNRj&OfhRdSAbrQL8AO=mIuEB0_*BDe~v$|ygAMHz?92Za!J3MM-l+wt^R$r3&Qh)M^tm>tg>)_;O5U63y%Dw&eYabTe z5Cebao9VQ+HB4fzRk#qs(;)5|Im3O0I#>NHV^)&=7BJvju-y!B0H(!^yds-eREIp> zJYxfxubX&@J}C^q9@l)uRAINQdRQRMq6g94+~e+8yIn8Z5M`AUxAqG-Z#z3`+9<*3 z-+%9%0t?V-Qp`cnWU^<*T5TR{$zWTJ*jAebT*j!lbxzkxH4oXG=>Y?6K6^T(W|Qy- z=l#zm&Ct~nZLa)SR|Xtl-4I#5!I?IqVo%UxCPnAjK*Il&9)12<}8R z(XBq_*AdJr!M>#}xNWF)X6p&mNqwa}@QYb*9wnYt^BH;GG1puvo-TQAAuShRuz%=V ziNL0r2U!ZXEv*1(XoFlppnkdS?&Wuje@-9$8@rEP?BnMDS7(M0qh?R+3aYTh^s5~{ z->l-7&cUj$6nvH(id4B+ps~TIO z*I+R#@R$;sunCYC%i|@d322%+I*lvbjUoP5=s zZhiuKLUXVs`IsM}=!aS?MSz`t1At$UB1_AwhkJI?b(mr#i49@AVYan3<0m=e=K!82 zdWgec#?h-b+a(&rex7^ny7DJ!SK!v7W$mZu7X<`S;DS&z9q9rEwSN@U&mzAYMme5Z zhS&z}bwdk0$ngxZC^%)x?UmG&I81?|uLp$K$qrf@Qx(|;OdRnY3N9Igr&W3?U?Scx z6eb7jw!wWxiY{n0pRbD}U3wB9?KDA0LMEiiR`~fQFB`M|GK7qG?naft{ag^_S47ow=A6 zqPA$&Z3HZZp@(bix;#evkdbK`7#9C4E>{pN(|f)SqVC&lo+|a+Y1Ksv1?|?Et_lLz zudj3e8XDmY&x~b$O_N4_1RM^DAw7MhbxaOth4~a5`7qWfoqukgS=>i;v3VTm>dtsU*2LLW~7ADPBsFR=?xzEgYZz=LgUbz+$7unCW(tw>t za10;9u$vbbC&o{=fd!Y_mG93C=hj;CUQNhCX6w@lU=vSD6m@YgMThEOIh?G{;fz&oQ_lzBZ-PF z_PpIl;9S|?A0^jg0Y8R6_}tD_je1kuu;(k(ss(d==V#apDcu@Qs`+j?O5^Ik%W zjYV8e!GBN5H(vBU@4eWFo`0EaOtS9l6Ly+YC9@(CwlW^jq{Q6o31%nLjGP|~55GGn zV1!v(vfdy{CTRtViNGNx=c94|WPFav+UJlidNqM6trJqs6Os1&#J) zAdF3e4Z{qQ12Fbd#n|d3uo8il<>GVWB!8R<)tqNExOi#f#ukiQ(VyV?cN@>bu0c|H zm&4aGD>T&#Gyi(v$MJ<9Ty8ltXo<{uu&?15+wKaax^&~Y=v|aW0V84PiZRn*wt#a3 zq7U+`x5YgEqHWBb0CgRm5`efU5(59aBB{^>EZFSR_o~L)6%cl@gzZwv6kDRM^nXaz zV4~24LOUcZI-(COV|o%zYez4SoocWZh$rmg`hy9rBG)xe1Ev?fG>bq-zgBLLva1Yuqk!!*9s8L-&+*JQ)w9^OADgI3=51=DZKm9H9veT3mpFdS5#*Pv zj4|Xzzx`2UcVK=S<5)Mn=qGA641fI@kdm+w9ZYfu6EMvUiCMY*+Wijk1IBNcUX)XS zoKA6Fp0FEEKbMrJ=fe_L2IA(UR1}dA11-E3ZYWls8aWXSIZCK&=^Zp09V=GJ(XX*V^03f_My5^Nls9zDC?^{OPAAwk3%moJB#>XteE6KGoA{ zmX-^vr>so$)TnnzN_y%R3Rx_$*igC(pv-W$^aNn&aTHwA?42K%vZ+}mL1Sp^|w zNwFsL+f5LHtXp|1WfLwKyT`{ThEeDkEY=h}nz#%pUM<6PxuYb$73~92G?>xg65?;b z5anKLE5PqGY#Ev(bx=04bWj#ss9ib;W@tYJ8_5ipw33LV!N|Qf0Do)t&E1I4X&*B# zC9KG}T%m>V`^|>1MyoHc|^~DSy{6-aA;uVXe8Kh{WKyu{~ZKWiq=?%QzHGm8W4`yvIwYU*V-w zjlY`eHVVcvT#}1xKTEvU`~Jz{-r<`qefZGzqhZdaitZXXVKmD-B3+Lyn<-(kHmroH zB?tZ`4~Y8T^uMo^n_XEBZxeqW1vSlBW1C!_!7kgIX^@NQZ-3q{z$Z0?-?2^N7W>~Q z&dUHJY0YDDr)i_)gcGG8Ot;Ly%kqFVtT(evT(#`*1n;Dd-$)_0d?qGEo>go+Opdmr z!Y@i@Lx3*YXZW^K6N1O#W;=F3zP#;;ytA#hmQq@wJ?j^?)9<1-0gsvV5L(F50@p9f z{!$nFU5B)tH-GnWli!qgd)WX7kL(xVPvf0gg;Se9u7Ep8<8p2X+(MV}jGtXz1?>~yb*-@I#&lA&%qUS3Er1~C%6#Fb z`Zmo{gq(8P$R3g46$fmu#*IE_&v~5C2@D!b9COe(d4IT{Jlx|~wrLvwwM~k4z|475J=(nFTp+)Z^L1KjuPT1k}nHkKq3XDL|N%;Syvb zC$hyVB!5`E0yDTl4=Jl>*RC0XHwt{E4uGT8Ad!dv0w0w#&4C(b?+ci{&Bz}Yj!CC3 z8_QOFv5eZtFQRTY8sr+V zg(1pw@lcJEsDWiw(tC68wy&B@$^79yj#999E`NHe=@W^GplWrRq)S9-Dc?(?P1!$&T(31KbL8QulFdz(1P$Lt9G5!SlV+wKS{z40bnQ}?hAZlsiE(J zg%$e#_YRooy zHGf|CLL{&e1Km^jcr#eB>i}p_WDTD}Y2YV*=&wjk02>r51W%zler$y#;bXFW%JQj( zHwTL4vhl3|9_PTs_N3umd98h%izhC`)d)PYAg?e0)@m(?+S~Nvjsb+pefF|Q?O7%W zuvIL=4l?jrCH@SF_2d&fC6w6?0?)X1_T;-Q@t1O-byT*6cu4fS*mQs;jO>V)2%d~UJ z0}r0YEWEECwR)z@@GYLb+7k5fG}U^}3Xe;l$%Gob(18WL(0Ps4dh<$q@2J{(v48G| z*H2hgJjgGL>-!k>R};0IRenEP+lttEWyY5ETjN&fX7X2oLPH$l5Oz z3SM;gV`F$)zhBOB$c-JKdJpQaKi2z#52PV^Xj6l3t#dLB?}$0jH!{R;aPynnHVfva z7~f`LL&i6|fCvc%6@HmpY*v`W#D5p_NgU_Vx_mm)sTJx;Ov(Ooby%(o{{%%)TCiLN z?ks-IS3E7Qtx>PQRvB@H(?Pp&oL3lR_Gn0enC$`PqsxcZ8a3@*QqBbLe)W){#>BFr z`sjg@!?f%jh&!D_?afr3N&XU*s^rIujss6gSi@6YjL}a@^+B-F%G(@2zJKKD^yCT; z+jd%OzbMEaE4ypGG7813W_K?)c*|EmT7#u}%T)qIX?L?x9kec)njoxy{dB5BYR64b zq#aelAhghRm||{XJyoY6%d=YLs`IDnO&ekyL;Nh>D+-k@cNWJ+t)jB<)i7k?PnY^kz%QvuU3 z*>1Je^6D_UdhpE{Bnc)?q$?mzWD;Z^C6D8o`!|o_@#Aa%Hph(Cfghu%oaJWjW6WMF z)pJ();ES`>08_8E{8jdvrK3$B$|JlD z%v#~MTdh@4=0!SZBY)#)d;D;pMJc%8`2vEYXo7e+an_8SaGR$(hgrD0{;h%KIi55t zm=Gj(GuHveysySDE+>WODr7hmx2VM2uh=CE_f zP^9AHAp|J0co*cwzc?9H$@M6~TvrhNZQ9m2EkWtngWfn_az2JJOPYdjXItddslpDO z)e?OT68-Wg2+hLwtc)1;F}|RuV^-K2alDO$di?;@Xl5g*y*dasqto!(Bd={D^e0&A zSZ;exkZUdv%zyAEe*%%*<_%>3=pfrf;`7Z$8c?-_$csNefy#gaNR)R2A@o_46ZS;4 zh1`0^Qj?nbG+z^)eNIPqN%h4=OdkhqINXUaiE2?8R@Lz2Hn{{pUv2+6Ue0SUY^8wC>0`;qM_M2|a`w8wX z0Ny|TN`JStw^9pi3p*i1e}7N0VZ`kP?!Q#8HSZ|$Gj?Mn$23^4J>U-{ceNLi^`4s# zH3OFB7p22xPf06`^2!~-2fDWuSNIi|#ERBk!yXCW>vZY^mVf%G*bQYE?SZH&I4=BD zmww|@F7uMW6uSG!0T=NPe_^BkIU{#QbJL4MV) za-Q_R1X2k@?P%+AV7D=TeMwlCDSlm9+{F2f5{CJ=Obl_b4@IZo_`H0 zbFP$r#MD;8s{GuKyOpx+P6}@=w@}-mo|DzkX4}SVT~4u3%B-zAWDSvZ_rpTOY6T(_ zvWBRB3BwR?IBe3zdEU?a!I|zz~#hc?Yf?)H}%Ltmve8kP455M!WK>CqhzEUN$P2wg@=T*P@)R?(-pQPrpTjz<4bm|wS1Tc~JTW-2P;ZMKZ( zx$;M+^!z5S>!^PzqmrJ?%OnODA(F>gU8^q_ctTZCdIDk}%C;)*zpCi|XCfY{BCX1- z@rkaox+$wHiR!FTLW%#SfB#b(h_H#PkMa=xEAjp^FWV-1%i_?hTo-A!R7Kg=(f3T} zE_zcI&5DK+jjG&~QQFe4vf7PF>4i@C>8w)GW!sd=s-b_^JcP-ODmS^RqZc$oagj!! zR(Da>&@9(cQYo72lsLbRqd%DGC^Qj8Z0l&FS{@!-ruBKGnh3wEXj;pHo}r=m1x-kf z-zTbRy!nlz`>)OYS7LYnm45CDeM9qBM^pOFX&jwy$~;RlFsanC%~=-ufkercB3XS# z0^k2h=Bj_j+z^E%q|o5wfX4kV%UrEh(SXMNSC5D%Mv{=wx2jfg^_E_ZK17mCQd%ez z`fajO75yLmVb6&BUoeCg(~dDDWrr7Qc zgPyl_R^Z=zN7II+FI1^bmDNN1UrldV9lUF|RaQlBV){|Nn)aTIqv`FXWq0ZXKOd6k zoIcd1qHjpg(#Slcf1GuMB)yQ7>rJD03;z92|Ig*^0NXr|UMSl14HjBdF6eV$I@RcR zAj*FYEq(f)*e>ChZliTp&{oH{;2o%m)q{K!8bj+n<$ZjaG~IoJzc*Ra8bwkjE$@bC zQI+ecS*hq%xm8tRB-abm%KD`vYfgG8*jCU5jrxqg`@9O3;}>bR$Y|H$t(IjAMm!2X zkF4b6ZcY6<}RAIq*0p8pS~}=jNN}9=*#e+`u-~qy8qfEs@9vlyaU~Kvni{F z=vUhedw5Y+>)sZ@FKG%%*D`hcaC#DNHf_ewXp(K!|1JwfglMvxm>&DQp@W4c1+)S- z(QT|{5#M9qK@Zbr#lL%8vI1htAxHnSOslx47c?8)m#RRU)Sv!rhO2*h zzH!{z&pl@AyJ&iI!*AsC4VUy9600`DhrwiJ>&^XN`CH%K^mmO%vd*(jcYhpB?CN@0 zJgvwF=uH}Y(VAug`|EhCUR51ALzU9?{CFce=L&3-(J_}-a0 zfc}Pbe!}Mht=*c832Z@FFilzJ-Q|A*MM+PY$4DvZUy|y|a#lc7p@m<%9j(Bof960j zUKT}58%oq~M*pJY0{eA%7wZ!gzoc<0A0){-FN+I0%-3sr_vw$(>2&(znQuT4P5L#R zI_p-f-;@p}dhEw(*JKfzSEP2!H5sYe2ACD`re2j@Id4cvve#%{zRCbHkT8Eu^EO?Q zc?M-SNd9G3)yA-t>Ax;oBC{&jihmSIp{tXarkAX;WfiZ9`wTzae~q^>EzJsF;70zo z=F_w;p}g^xAbpmzH1wwHj85WKlO?MYlJQ5osnnV+lv1}zs0$V7jK%)~&} zU+j~|d(kL4)5(mWMN^gAtmc!FPsCFu9le`gzPTL!&|2&_F)z#DIE-GkSt_&CqdYt> z@99)hFr|uEWDI6t*J~4>rKyOs)Bv^aLq8Z(3klMT=IpBr*5^%Mx$%jBfa(yw`MdBv!bd zr;7Iy-bi#Sv-Vk)A}6MdJ_zZSIKeH!{(yUW)9bP9Zn$p?NFG$bY2N!=a+y=b3V_|j?K7jWu z+qhsQh*Q!r!~j0*=}ukY`V$Y>&P$okA2UVk0KSgSTrI2Yy4cdT#r)6@7a9Mw=Sfdr z^9JyT@Y}?+@+$hXH~?Z=C}cI~qROEf|Hr?yi#jAu3VBW%zPStO^G11HX7GBkgM@hjR8EiB(@u4u8nr^|Oy=H>Fvknb=e{bwG@n0SdxAT)Grsi{#G z8CFy@EAv)%`RV0!cIF*=uk8uA_8+sd8(&G3Fey4~E`xJ@H#hlsT1KAaIQofB1GB)P zr&QdI(7VA`^)x<7+rm*p>no$%Yg}h?*zTVSIr-U9M^t~VXhq_{+c)MzImfld?U5_C zT1jcq6$Eoax4wpMRCcxompbi$f6uRc7k#hdyjj87rRaV`+of1yj^O;##vRR1QsNb9 zR88+0+zsh>KWR#*D?@t%~t0t9+BUb%qBfLFS#$J#*Ys;hS=LRPt4h8Y85i`k8hQM0KOZ^(=k4@0UDFb};?rlg^E(?m zY{LgJc914r-Cxk_YF$28g<8;QZ(fIsNTkSzGxEZu8^g? zxA=da&##uy2d}U`$wW|wXfgbzM@mKC<`}WC@19UDx;hkjR;b5J5HZeS>phU`gC}4g z-&spH>}^>g{vh}K<3571C_FDg%_QTZdBjKPi?!zy93sc@bFuFWJO$VEce)QM)sP}( z17x#rX^d?OH!Vc1V&nSP5omOxzO_V$?Ad>D8FsD}vBu2OyvfNh@U+G$3H0L3DUXLQ zm;0~FY#mBEVBUpt!B>`KP4Np8tpaWA+*0dg7($5H5LLQCzn?v zkHc@a%(l3~1=D=Mksx+fRVFJ~92ptX>}B2I7(RsYA>a3LoXx%b4qJ?N2(cq8?AU*| zrymWW3AUCYq@GrigO%$~6^QP!S7#$qNj$MSUJiPQMrxPs!IMyD$wv;; zK4>-M*qM)IcJL%0#f<}otkkay{djbGb$#|!6Fl%)hvazG(p8@*D|qq~c=6e>ti8~$ zu4iXE`SZi~UnPo*lV+=mHd-=GT1J1f+gF3@=GsCI+x75>6rbXQ&1o-25qt>^uPL#W9(ir0F6w);N|#rt2@N-Td5%L`is z0t625zI3-L&(wmy)2&L75pfs2B-tJ%;LEZ|^}a-OM(OX9^UgPd<%32<>`avRRlHSs z^tN5k+1vI)7_+-Z=kkE=w!Dk!a~j*^NTLJw3W-e|-f9ju5NTNrbC_Mf-KDSJ4to>a zxUo4NA6Rm1)~QtePNzh1_i}%>ljkeWsAhV!po!z)ijD{FbGz8!=vBcDZkVdMq~Rwo zeQ(3*d&ik&EnpZx}B58W%ylxEVqHCKhk3@ctr8)p9pM zfSS~1m5eQ1ko=T2E6IPRxV;SApdq~p;?_a7-oxlf0DO#4p*}gS3P-h05ec+3GT-8s z|I8^QPe^Ky!UxUANo7Z$E;tjUp*#G5US(=|9_l44t<9?J9>REtdJYswo3i5`*W+}z$04pnwc`mHW62!MrICN5*koqzdVOtK*u$Pz zDn0y^ti5;L&-#g9du*N`$GlEfC0(!B#}gx{~)5Q<)S4-)pg3PF;8cX^P80asKd;b@hm23cHTjgvt zg^Y4`fmMI7{!gdhT|ED8OqeRh+i`K!i~Fyeveqkzeg`FkS1!q@C97|g09ozLfocZl zg$x*`#t$K|5?(EP#!I1XqgjhWP>o# zPb(;3J{)s=HKX~xLutf1a7q^J<*2OL3?@B4>8OACZ!7_=B7IhW6aM?p8Gj1cf*(5T zzO@i;7LFHz>$nbH@jPJkz8sJ{%)sdq-e;^Jedd^>LX9QFFu5YS%2m=-WsxPuS9RGo ztFp?z=p1eJ{&JUl06aj$zvl$?ij~X9u^-~AAq>@XdimpU*aH$2s#@Mfvv|vCWw&Y` za}nrp;!NCs$!^De2S+Tj?eD*W6rGJ+lsLlfI3hrm-EBZrGIU($&Ti91=` zyNQmygr&;Yp`CQSXnC$kB_V$Ju&}uam($W|E3Te6GAjF!l!!q(9DYjfb`z24(y(=w zs<>I%X*h>FDp8y`V+sqsyt74AmurPY&rd7b3K^H4Tg}DQ=3#^t8J73I5Lx7Y=8``n zbR~#?n0JS8UZzQ}k>RLm92R{bHSXZ(ujIp<{FWi|w3^z&W?GMtMcGW1lCuL7ghk5j=^)$u8|RmFRU^lV3gk1^v~ zmgrR-(}T@O^ykP}*=`b}`Kbp|@KT%V7Pkw3Nk2b0j<;2b%TGTM0E2M@$miNosH7Y5 z6X^?4t%pirasX$8YId(`H4-7-h}v*6`w%waWo+n;9B;l965WwF1FHGVP{e;g?m*V7 zmZ)RvE*4qxQNHj|yiGov+ub|gntl5>agr^vDIa4a+kii_eQrNRl7bBQ`T&~l$swwL zycBeCky#&Hj4nl4TwEFCqouqbb#-BQ_$uux(2HZC4;d-iS~En)kO(f>2vXQ=qlX`D z=@X_Mv3w|0k@?X60mRq3-i*U88`_cK=&+%pE9esQfKLuOS@~o^#`{v!ML3SuKTr0PKD}=$( zCeIB@|8HXpgwPIeyD05WBf)Cfz%jx(U z*~!VIXMA%;J8lKvgzwRlxQDubS0~_D>@K9avHQHolW%jzx{FpZ$~fcAWZ2T%FU8Kv znxn-aQ*^f+2*UsvjihV8gc++UZR+r^IR1`Z6du2fYED**5XB;EXtE&8e)Hw#;$yt2p z5%2;Rp1j=9a$uZ=7=Q>FmvnljWWDo*h9qy)y5#JzSIpStgW=DDuR?eDO^JQEvwL1`?lxmQJH_azl_CRCEQk=)_ZO&BHpQ`VFmfxApFq6ytALuea8bS3Yr6xO~GWLGz7w6l&T$2p3p2sa+ z5`I&8YbS7hu*AghGt45S2oAd}2DQgO%1iybZ}?81V?A%*;Ke5VT9YWB?EX-bX7Z2n zO26d-{I&MFfbPJ_Y@-1VjxeE1jpT{%2tBSugWAxe111cQGv(NSbOo{Zwy@HF$JGnz zFl5T)IlqKpqcTj?up`yPr(?l0Pl`7FnJHd>3ri9ohH{+vN9u?fZh864n>Z zwbn#`ECKY(xlD+UXiUy}aA(ux{z0_`*A|(KM+>6CGzI}U58$g4=N`(|=KGDXZC26M z=VXPH&)Owg405{vvw5z=bAU4KZ3E-On6;HI5wPJ}7N`Ynov5HJMG`bf+A)0@X2ztBweaUP70RR=(HUB$qcdM zMHpUWPbJfnEg=v)=rcY<$|v}eYdT|+ClsjeV9g&W2AdX7x1PR7@ACj557d>rzL@?fzn0=wsq<^sz<#CwYO?AJT@>K-OM#jWT)Kb-Y~rO6+QEcZ zB_f${qwHer;rqsQ!zJIT;a&%(*>w5}`PaExD*tVNLI_vfm;hu9Hfl-g!>ef5xi$kA)KIILn(!J#;PXWis_ava;2VMi zyxDetN2FdCPQ~-8j8jQVxW1b9>Ve*i&B~XCMrXfjd|g+PBv~$>H=LG?TWyfh=psT_ z*VD6u3WN3u8YD~-W2N~TM)W3Uy;m77PS=4zotJd~6}W)r#`eHBbR}HB@*D2*_%@>- zGJH|94e7VP`!D(%EKWZq3&})bv!Z-)l_5R0X{-OlJ#|@K4qVT$xM;PKug; zmPpxTT$M8<6cQu7(tRY!;^MrWTd724 zoBs6Ls6O(w?*FwNBlKFu6_^R+dD}#PS#utJTE+NBgzh)1@{{hQ1+7y?Eg2J8pWl^H zD17wu)}RG>j&w6UC;JQ)%3WS@Y# zSq6WR&Q3<5o%#d-4k>7U_v7`8i+}UK_a;yyq${)o8ri|p7|voD5J^6}HN|g#A)B5z zCmZ6z-$=Fry{I+#9p_=eUKr5dy#1|yth@R#wYpKOYYwY7mD;1OnJktSUHoWj=znz4 zEpwGHcv+*t<%3y5V>`~%hx<^qs31LQ3wf4?A}*45E^{F}IUjTmsHoviubIwj-g28K ze3PV<#QIJQdX)Z8g3krt`zDWnchSbI@*}A-qsX4Oy zm%G<|$zN%I7hvQMZABpU{?FTgIB%Wr8dsIL zae3X0NoSwuCk&l{Eda*E#$7;7(?*8l<+8@r$n;q{y_{WLa^c|X6MqO^{;kvFIsGwH zf&!RcT-9hJ^p=MDHw7}qf%dPv3`TWQDWxwzV!^k`P;Wic_KxnLkF zWd_c*hp}+sze9N7lNMi?dCOb_obZNy{`+2t|7c0Kjh}<^5j*F%PMb|Fr~#FK&;2s3Yh(p|B`dCkbxi zEOos`b#Wc~vBlE&f&P)@TCZ)iCrHYJq=p^ohPH=PxKEydiBH+%=$Je=uHrwmMOJ#? z*|*}Sfo>KDul~gcd9II4W+{L!yUFp2f?OydeCBEy z7X}@`k>$&t_rAJ+Hbk#(`J?WtzP zWjHk##PU5=v^__`Y>~1*NLN&_8;#Rg^u+*4R12u&72_80Tq6S z0d!Wz;z1;1q(J8tsYpHH9xICg;K;JatPEpS9)d_2kkMm**{NugP%~8zQ9C3X?rKvV2A|lfIcp97^QtlSJlaJj+S@0=Y=oYb)WRgyPBi^ROIbdHS#~24| z!k543d3z@({tI3Nu^>@IlC`G^=}1Ldu3@a{qnY%oPdKaS>-4e6o{>#r7R=t`<`5zW z90nXO|9m zAl<<XuD5HL(K30E09=!<={ro_*nD@Up&d&VSo%!*6qCfvSWQ3 z#HP&LFceI-uwHz6`S#_z+gDd_XKY#&Qr~KRMJvhtoec=okm^4^fW*wwsLh{!Dz|Tt z)czc;dHL=xH9!o20myshw>G4$BPlT2{(S|E-wSI7>px2pg5S+HDI0AS+UCLtCp3+J zGWYG-OE2YidUZQ9nf9=VuLO5SJXDzD8ROg|3w!$F3SldaQXk-{ccN=`#gX8jQ`idx_dXx^sNzf14 zE45$d<(&S*3L-sV-gX6lC6IvL+tk` zTDuU?q=Y^CbO$t0bnkCo-S{UqeO)}E3RLDby5Nn6;tV&Zwk}6f5>N01{9*PcFed0A z2cp!hfkwV~qdsRz8Cnd}s~_I@0?0u6#r>agWPw6WKVfJP-k6f@0m%RL1_~RZ;6F5x zwMl(5DPvQ4rh(0Q4hx-sERaN202V}i|KChpinmn)!gYty|N6iETQ3?s<&f{+el~yV zJS-9ndtZ5R$V0^6{7yWuwY4$>_Bn!z4P9CmoJPQXs22vubxn(N8FPlOJSipL>r#79 zacP}2(duqPX8a_Pp2+P_Xv_@fLo{KpRf;U_Y@VwpaLpQ9xZjK|T^k<6 z*QyXZjkJWHaWS+Sn^|ue_$sXy479aW3K(J>xt@$Ka2m)L=Bx*C z+C`&XazgJZx$9h^$FUD|cliCXxpw`$j^_YxDXTl*!(|Y3PN%P>L8JKv5EjCW6g^(N zg`A#}W78~u&0wD`83x*0#pz-zQ?!GIvn`pAbkRU?CV)2*2hCK9u!yOL9ri5hl6*nje+$jkSk4p`iefwl2M{NT2xt6QFd zTVH4Cd*-kl=}F6UX?5OAf9Ow%&lmfEfkN(>lk5Xma_C4o)GSl}$RGpJ>FkH;>s>tl zh;8EW_+yucLl+t1b~+;lefk4{U>A`T){LMu9smVKBwiRjbPzb>eqk6b`R3+e{s-YW zK16_jv00fMB-9Y_TzmwI<>Tdi%7Q^?i_Iy+F1fu|0W2uH~`S#868T%SNB zcSRiN__|BB=}ILZyH!v=4D#kEF)yMY5fbDyx4c^f;Lwi)^ZOVi8+m3r?>w6ICW8V`y;7I62 zrt{57?Dx}wYw0IuU0bD2EcdxDdK^zLr|)}|Ptd--OgT;r-68*_ZL;qAFa}0{a#RmC z$$Oo2_ZqxmBj}R;;e5OCWpN_aMc9d1;i4Q##DOlE9 zv&Wtg2V!c#kR-3bsd|hyxi2z)ErI``Ws)ETHEUY^4avSmmgXJrBJ)$Gg2xJJFu&t# zqXx3d=B<2ln%WIY>psO2CiVX4i48a3vQ-s#zo3sa4HIRJ@T zq|sg#aQ&yeZ_PaDq>BY^IQ~SD;%lVN?%bPKLjxapXvR7cboop=Y>ubUlXQ^8x=i4& zPEa;uz6_@K+W#?~=*PIu;3)_K+59ky3)CmlR_ka9A5wVW{bi?hAZ8ZWN1(NPQc!tA z7K))OU7dX1+zCs+mgA{^p>B8^sm6OKlw$YWx~4=bs%^HZNi$7*-G_E5U^iEEWo1I& z->pgM9i(Y}jfOLbrh*#+RvFE^XhSl%>PB)FXp>vD<#t96XN*3>a_%R{VNR1^lS=c< znzr6%)!(HTKYTa)&L}mUomFOo=C}Tjq9Qt(~MNSD`tumCn&pUbAuS*v9F($(3yD**Kz${?Czp`!;p1+lLV(!1aT6lmMw@)ks zf~S|u$^w&e+_8=>lMsj7!zd*E^t#M^E4;StJh;oRX@2rpRtDePp%B)kZev%@>E12z zWOncc=D)>hLwf6fdQ(=MwJ;=1wN@!`){rCjMq@3QKFpF&%{}F~=}V%!1=eOjT&-b{ zc@wdhhs`9}5oCBW2AYgGh{8+ZRV0D;S7`3o%Ba!R{qpt9q0tdgcGnx z24EouBaV81#g`dSL=fAezq8p&dTE=b{sKPiUEWt*Ti+|XH$&!af_gbU?g$}|k>e1u z2hkfK^wylvZ}?;ix6DjiEe0{>?VFi&$=jks15uR1QfIph+`3O9c309DFWwHl3T%g3 zCm_qenSzfDU&?tD=oFaG>?-u|-Uq0!$^xk(fP<)inqIcinwzMwIflkqIB=7)(yz;v zpemK@`1e3SfRhB85A`>NHt)co5_2q+P)adVuIGY2vvg4|O3ICoxmt_BU)zix`c63t zZN)s|09nhOyc*6MUn%$Jt>QawrO`(8+_x|xXg_Ckiq?Ehv$vMlST=^TXA6Ld^6|Bd zaiAT4E>Ug=0tQ47wOI8dPU7x4jCZ2jc$KwIDYgO(yy+*pZlby}HfeJDU$nU9`Pk(W z4dG+btU9EEHRR z2KkA;z&XBBoNEA)Ga;jg;rYg9Sj#o~oCYC(E^n-sbDnai(Byt}N1PVul(UeGDYo z=T<3I1^(G*UbjD!yGF-T#U6s*$W7d=`1+XK&3zZD1vY@8UM>{pNfs&>4?UiB-JrUE zL`kbPp6xDmIQaR3ed>D8V#>8t?8)#4C>~$>{`UUWtXKVry2f)La?C3g+a!ukp<}nW zaj2$Io@piR?*!Fm;)veK{YbtCa9Bxo`yfy3OPcT1UY z3S)R58zo{dNnI*r;*61zH8YTheXxL&$M;7*QkGrsDNgdorjUE`oYcGy8o=QSuovz# zbaE+!0aVx~l#8rRMxBdH^XmG4sEIx4c97psZ{OtXC3zzb*SBTk-P4{$_x~3h8rV}r zg}YW5>-`c}H*vHsI4G?r<@-k)ck%ukeA#I|o=*0`=b+E>vd?;sI% zt$B(YiV6{@J50hMwW)d-1C|y>+5(MJt_jf~cAnkmeOJ9kY6WaY9nYG77z}G`^gVz< z@ETnX*ztQ<=z`WlDZr!BH;m!DQ90SvRas<-?VF*|8s)21=0xL^x?G>oW*ka;ZfLK(cs&FnUYpWQpasrg^C{HliD4L7Vgb3p_}*9zo^HQ&I8L z)$4d5|Jl&kW(8OIv3CkxS{i9h-wBw9uNnN&5fNXXM`hqE9nJB}BRK}>DC|c_D@lO# z)lv9<%3`LN7B*dfMZ%u5ZJ9Bg3wQn**rI*bd}L;(7cINcVh%FS@1l7bH{Aoy3DU=8 zA;po2f|G!ZC)k{b#_iLHGcqyXL>}FV=!g%)dARKJWO#MjzNkNTKFuCab|>NXBXCSH zD$_l@oNz{V2{14LLK4^M!KvuV;>uI#)>$*QKBNh2RXp~84q<+6cQoC}TBxxe?Y7{< zgxzy3*)WaO61MTp$x5}7vX?6aPE;dZ`;d6cxTCW&C)?+nkgf+wyW4gM?P9WcKE+ux zsChZ)tZ${j+i27yvwDsd2QGNxwf5X{-fiY-#4~<=s6SQ2#YkGq<3)eJUs}HXl^5|E zA0c6g;NOvdbWcB*Hug4CpV1Ffar22=wim0rP;HxE`+p}`5f;_7n;d+7*H z{<@E3oq!c` zqX2tVFwj3-U=H~!*xGbNavJvkYq6B17nF(6-v8C6IT|N3f?#Em@ttW_awZIbD~np6=sI0NtauoI?UicUid&0KyxyVdM2`V@Fe80R#~(IZ1j~kZ?Ih@* zF6Mjv1hNE;OabuiNyFI_!{T)MxsS+W(gCe7eE|#-q{B(9Je)*HC_M-#F&DHPDa^uU z38?^Ei=_#WzH31Z(8j5W;~*~3aKxNGdA!Uji~N=_&FJ*z`ZDl0XjX}TWXYV`?1Z4^ z`J7~IIa!TvUi3R@bihMQhmo~ZqeiFF?9`Y_J4lQQfv+5UiF~Je1kp<4jkb+L32ILS zLI3v0ql!wAGUNQifXp5tvPzJdo4eiIe=z77v3 z1HV+&T31teaZ;=+yU65!^2f{8L~C?3^?;mVHnNR3YHk}SEw~}lCU4hs{u#}!mUleu z;fRU!-Z__bn(B)A5>+@EQJ7#{rp}&_qiOdu#**}WpXXY6krfVVS8CBN6;$Sr?6-GO z8@~<+DTD1Y=ovJ1tyW-%%b9bdt!meYC9vH~TEmr>&_9ohkH+_ZAwgPxz=VL|>ZtKh zGM;fSBT~dqOc)%MFgf~k+|k8~bWUpi60lg8g^7W4Vh#V3HRcCg@G|&#LKg}~^6p{y zY{_TvdLY~IaUGqKg~Z+9P@RQPH+>os1+9&19W-Ik|1&gq&fCoX=ypAbKA4=+7-xP1-;-(8ul>h%y!!_RR-(JyJ>JP4mnz5A+KC%5O%%Y zq(Fy+-jp@+@`|d=O@{@>Kf{?V{Y!mdvlF=w3`H;g+_b*Ov<5 zILOy2^XMX~KVrU8w1CT&m0~3 zbXjFfFx&FmG>B-STOCWJh7zE}UF~vT16-saR=hj}B&kb|qjM;kQ&oiwIc`3Z^%HAN z%+AZ+O(p$InkCxt-Q^W6PnPXur_7Vz zm&Aun^vOS>(2ral>6Qav4cW$vh1eZ7^B<8;jtq6x3ofWxt&5s~R4qh7MVwo_=A@ktnu(M!Hjr&DJUa z{o39goHUIb@jA4PTBbk3+1SIc6yFX#Sd^2$# zKVKuF<*NF~_)~y4AjzaNv;qCR0eE@zMo_$ZJKk7VF%6a0Im=2dID|?wLVJGA#c4cx z=rCXb=-$&3y^G5Xp0O9I1`-%F_zSdx=R39s#T3qo-e>a8iP{)<2PaCP5JBUXk#a@a zUs5Um?%fN^AW>NZ3)(&aQ zyN~#=y$(GLby11N`Z9tj(@BL3I<jd#r(+Wvi zj!4fp0U(3BtJM1&N?^}_F6nLop~7p_HBJhU5Ujvvp&K9@Rz4o*gSN)-TMq&@)Zwwf zSn;+ivbk*UJ1jWy=ydkuh>>(7{Vq+nJA=k|;MKuHD&*W{-2ii_S**vCY#fC|Ig=XwepQu4@6*yr zB>*)vm+!0lzYckSEty(NUk1j9-g&7uHRMN960P4Wu&0Rh?}>>lFutIjbf|RSb)b8s zCs8a$l<`d!hg}l8hSa{B;xO-oPJRglA<(XDOU{&i%Qlo`Fd@gG4ICkt_$m5PbwW$S zg3y$i2vBX@f{Qo-Fu{=S4IWP=!H~2`?o`+Ke(JF@2DU|i+nUmjBGzU-rmh)sXf(zr=f$|2U@Kp5|B#7MGfTpdK|uu7lbk5w3Byw z`^GQWGiyOiZQF(gyLC@@1V-wb`_VfrXJV`nR$ zjyv9DoF7Qc>E47`Xq`3OS9#cb#&YP}@i-@ceXl)iyuN;G!&m=JW2c38mt9;CKXlM> z%0Wq56+CjaVTrD9r-N$~zaMy7@;@ZC;Z{=PWHtGz+U8q=#^Co4$(YMY+|(XZq3zwpR)F-%5aKY+*X>B+jm041bM2H5R3V?&)`b z_i{8}Tn&Ag$H`}>>B$9)o$nj{)9RYj4-!68V@`KT81BN9Q;u&zhFW40h`UNwf}!KN zGjt5C52yNc0)07Jpb>;uE7DC2U(GbuZRpi7JFPdNa_oRXYN*+xL+2QJZpaYDKPvc* z3vW4PD4=zbYYwpY2 zRm00gQh6r1(rKK-IFyedegD@E?SXrlCce<_O#L|~-Q{(v*W$TbiRU`QK!yzJ5jVTq z9~%jfp!(cQIt9ehsa>j$2NtdSJSK-=aN;{Jz=psRzk>Czg7|19^grT@a8&w#8@!6{ znuD?eRm-KBQ%`nkQGQ&yLBy=fwO-m~g~gn=j+<8Cuh6GPTZH}!i5~Tn7BndfnooD5 z3ZbE@OO5})F;|OjKR~GPyRo@PG_C+ePpeCsU~q7) z&%}_4=d{RCl90r;8d?{wl?E+?y8WOGrW0)RzB6VAaU{W7@Q4TS!3GfIKIFspxx#?I zd_S8_JJ-QzHhppV{&IML{*2EBr^Cj@wCR63eLlM!+|{0$U%Tu?(_K=3Resa0)63b* zA*1g>tePao#_bA6n$QuecdDX-Gjn4Qz-*H^e;!zfV#OQ` zu$z|ax{ufJYSMoU9qFYsH6-S4Y73#5qse%IdGnx_(50Rdo_)Ud~ zf`0#@6%m`VJ0u3%G*7)?UA2TL8n60vkni7qmbLM>pC7Y0Bsauc;?LVVRe9UX0|j@v5%%1H*qcg$_vh;E9e|GxH6Rv)<{WgdZHhjNfS1I#j}lyjuTbr0bSQeh69hR z#;myDlY+~z12m)?%iQCCn|PzK+4Z9VXnvm~0}`pv+&^#W zm)F0VzMBPn0!VotAuU2bN3*NfVbqYg#oMfE(Va+VyPd&_f)FWLTEOQ^ME!Hx$Y~lk zF&CZ6rT^S7B!3O{H%QRd&I+x#Z6xy5l*y`LkhW8E!)M}-`aog0^nfO7619#fbvK=K zJ*NVH#JSw4YNF3?RE3;+f3HnhFHY14Q@{V$W67fi5zrfj`V`&1yTVtiCQ<^$=@d|; zS9_kPSvq{cLh5xFg4B1%=^_Zrj!@G66%NJHKgcj<$Qt^7%>WZqb&8Z$ctMZ^qvl+G z{S16H*50y|#KK8V=X@nBd8qU-0{Tu3P+cy6K?Mwr{JM_N{(y{(1z>z8WMYQ}ybqM( z{?DUguw!ty9DIiw6Q!`uAMk~Dk`wO&vw-L(cH(u}vrPJMm)e2KW#L9FT843XHT^%- z9m8xS2_O7;^Ou1Qk)H!%EJxKldYPUh0TRuVx$6BD{mNLydQa6FynN1> zd^uQ1oYq>A z#J){C?>b2GQ(1l7PjJAp9iZnvGpTofWai%OqwIgxI_6oB|jDw9hFb*s~Nr2ofoB14z%rz}qw8b{Gly*7|J>_F#+wMQ~QLRKv|aC*D4 zlG93etkp#O^ITxv_U^n@8KCK70%c84Oi zL0GS^KAY^%7bfav(lO;vT5E(3WS_3$cEtjHt#$-rr?6LO zu~oWc_>$~aycFvOKn#`$K*wudP}14?()R|dwS=$WNzd^wI`BS zuoaetJ_l-jlJ)C5*XStg=f)k^PS zvcq+y&yW4Frg(_4(`#5{I9*FPspzE6bN=0(ZiaoU8aQK3zB;`&9FOKSmo{q~Hb2<7 z%W!QzZOT@V0&whTqwnlV1TlsDffQ_ukO&^XOi;Aw!ybf{J1i-}ewf>z6jjoM*~CypRwRnmS+h-KQ+(S_Na zWOL9IxE7%2e8FKfF|P?~Y9N}dnQm~1Ptk&9X*z_Sn+wfZk8|db@`u@78u)w1?GWOO zBqycGx(zj#X|h{qUD8mgx;N8BkE@_NHM`!?@s|W4%ZhG)J~Arc(bCak3)VR|bQpg6 zboyfU?8TciU$X>ihFe0l^@XWlk4|UwwA{Q70I4PhS8qbag9|Zd7v^-kC@>LT3QKL; z*}S$@D`E0Vtzog8dgA*!{SXxMzMxG|tvO_8%;C8D$aRVmDlY+c1yoM-FK&_6lu2BO zVG^SSTb%rV0W=|dJ@{Vnd4gn**2qB<()ixG~kRcFp z^PiJ}$M@53Dg75GJtvt3muPUOm%3i}gYCOXw_e|TKP>Vt z(ymL<^*pN*>0)Z?i^!5I`p@v%%UU6VQxAd>G z0rsV9dR})l7dHB>OV6|zBaZ6rTTmU4PztIwD(>5t&uvk(QKl?ICbwnxCmwSDOJmZ1 z+26h#p)FvY)KYe?o5Wb6&M0kFsRm2nyDXGdz#b^rLTNTk+Uik zxrM|}DzHvKlRIU&)Pm|>m%sL6VntInuT49e9D&IJ^}df4#G9lYlJJs0LKJEIRMNB2 zsY4?`7l8Ff(A__yBNP|@oCWj2-(^*Q)>1+t7Qd!2=@6J00#74?n+Z<_ecofdm+9@*`&oi|_b8z|SfRTa`0+R+(g17A znM>SFSdK4&(%L{mQn1-Ap8*+v;t09Uke#in!P{@hnoG^RSf+L&BfD8Fj`hwvv16>E z+uu*}iKFd>Id=}~h_riHSw%Wr=cj#6X*7p`7tyU`7vNLBq=`zcqd&+2#+AlB+!X?m zWYnv39~a~hGWl-etqU;Z@Ete0@KdhpuF1^csNpvQ-X7PCm7BX=y|Ouf>#Qd-=@8?O zf(qG4?c1*Y*_JosU)<46*mNvO7TX^5oqPw5T+X%AU^~yk<^(#N&>*?JJHla5Yo~98k1cc<9>FG2hIAqhKw2PjB&5cL zI3>8y3W=71H_fAqSVJs-ScQrU%;aIy3!KgjIO&S;_^e6^c+oYR_`wE7sm?;~@#c@^ z{eKtBcY~|i7xcagE|T2Dv~iiNthL#};i-Hb=~6{%@b1mS8XE! zANuy41a-!XE&%irpR~s(LWwBi3l$DqH53$Q{^zzkl&Dqug@Hm0Q99^ba68VLZ3mH> z*5KKIa3_IiC%+%To@Ca5T);hwFQS)OF8)d5dXeZXIP(+S^@N|i5m{}J&Giw}cv-pw zlBgWxW2v8-t*6R=AHeq}=GG3b7xE}u*W0U({M z03P-=hM8Q!&2cBed`6Th7cf^yo0h4x%(MxY^oPi-!~kg3mF?(wzW5Q5j%NR&n#g)h zhejH|fn+X}bUPP^U}`)xl0EX$a{*{SddrJM)q9;YmRXELgZ5aae~%-t%o7ko%W~Oi z2XW;xU*Ah-qRX}+y_tQ{)k^9;*VtXkCbXuUv>Xa^U!&8@AALN9D;I`|xcMrHgqo@mvmf9Y9t}o7YEN*M= zv36Lo!}Ze3(!8=zf1Wpp8&)c1eEdHu^^wyBuC?%nnfx@0WL69fKfLuXTM6xPu;+vz$l&orWEP(__W+5h7}4ze;J)Y-%t{pd^aEqyS;xC zVbG59DTU$4j@}GO3}c!X-rNEE4hVEJobuX<0O;)4lF^}JWbLrTPar63xFVCTFj%R6 z^F1@+qXNv*aUh`hDU}4xCC(-~E+kJNP?4 znQ%i-4G1R{e@6$3mp@P}X@X7j<>f#O&y+j))*6Pkd-gp>f<5dp7ft}N!$J`bV>V+C z222UwT#QFM__njMU8|;Hc%N>g-Uq&@$9w3h+fiwxFzdo3dV9~8&zAn$H^!@ zFLro&&8Sar-(8&@GFg?%)pp{woIbq`?Cf7j0uJ0fPz01{$bO;k<%;R{ur4{9NpF;} z4DVsfrq6G1ltMT~w7X>Rf6|)QZtn>-XETb_oL&y`P6OoYgYZ9bc;f zx?Xnyr=-RT&YAU*ygBvc816pnpam|YA+S#$e+aZq_+nBHhNPXa5JU#)1}+le)a%ue zxnYk=wvi%nLnBOM=r6uvo6)U%ZAyoF{VeqZrq@ifzgwk85&`+r>!r%YN$zTTn#Z3I zT+1qiNsIJ6`UFc}qNAu^%Cm*)HDr}e2!@9E*8?F>fdQk*B9O1nBa~di=M&QcJsT4> ze`7aIQ!MC9r%7{|<-`#MlgzJays9PFa|QjbK5w|yz27-7=#p;o-=rLieLeSoW&*6~Qw!MH zYf&Hj$dpai^y<3kb%tCT1LCnm(8lUKe^I@v2#%6WJjo_jFfmm<(Yy%UgnLR3_A-2w zBx94bOBM~`cdR&1@acL|xsOLj3zxJr^xFX+Pt-?>@>HOz!Mkf34)DMXG&Au^9Im#?^sw-nXV?infrE~7g}8|Te|vrI z|GY&wUKF8ff*u-t@-hVc(v?)0Y@bg$oWN3e{QEAfT@KEowi8$q@R4Lbu*Dve;YWx*O_Ss z0)zwxVP$We*evc_+cT3RPl+;Ne^p!d#KBU@c=Uhe$kts+1frj(?1zFIHlU|5$006t z>lNQ;8$H)MN6CEYS{N?+ppDYh7eobvWvEx?VBv^{Ds7CGL)ys6s@@|?vllQN@4Txrkve>?!?2>Q!M zRoNDDLm}0W8Jf>D4mMJrb<$W8r}_Z63R}weDYO2ANkg9!8IOPv!1~r1+0zxNSOw$6 zWwBwX-swsdw&-U|LOEno2N=i2QoaZXWs5E$ZE+XGk8kMPm7K>dTc?xqci1XG_41r=^JDHR&1{D-sMdpTMa9O18?WL>yX!mf70R@oXhMrdPxTl zVO2}Ji?QZw$BQLhHy$G1xgU9YVo_-$ZD2feO^7XZaSiSem1`scainh>Z^vz>q|>B> zPxX4(^(Dv!g0A)&YQ9#kji$vG^X{Df3P;R0j$X~)Kl^_69-Xk-s)!6~(4hZKMelEB z&))y|eUFMp!*jhoe}N^I<0FN|Un-K{s&1WhPv{=<&4~f zZn@P~g}eX)f5L}TAy7mos`#m$G>;ok_CP?uv>o;mDd=p{pTuE?=u`>6LohFCdXWB8 zsA0RyQrB2%y|TV%h~ltKpeZBE$a(LEa+3N)fjF?E<7=M-t`tF+R{UbHOKYDQ7hMX@ zvy=*)^jas&3!GRmXwDauV(fr&>h1<|sgP8(^(HPvfAaSg+W^7drH$_2Kn5>751}nP zws*rjfc`qxI9E#rJASju5|_naNm{Iw_f#55Hg$CZ%lof-5O*Xr?2ciEgMOTy_X0av zk1>RAv!qLl^qtLdN$AWTgOr($@lvf^+qTR+b};Lb*$l=!aOn{MSD%dr;z&=*#iCLN zp%60*f7DxWcN?8G3}`L4t9=eo9C6~@^{A!bO~@K%gghGSr0AzaM+XCn%zkR=a>=%} zAKU z>bo%YKs;|(M2ZtbceEzGimdXc^S=Hg6M2F&&WKLZ?_Bo;OpvstxzIm%vN6|+=rZ{U zAb31}n#XOej|MNd{&aSUwrOvqLg2cQdI>jc8Gd7%1hY!fgjA5w-xe7R2~Mx(pena* ze?6T}f4DsB35de=s@*gRXI{})E%Pm}ZHX?25~Qec<;{tzw>-}pDOs4vI7xk-d>bCJ z<}4TA=VaJ;HR7GA^8geb^fdA)IiCQ>O%S#*1oLvqfCnKlwgPhP`zn{M>J1#~fb5+H zQg37W9D7d>5EA>hzsdFSd*p}?*q|K)f6SY%er&708Zev+5k32PJVKOG6Q=#i5U&1M2hfBn66 z6o(KqX9r|XpAEO7U*xDY^g&Ra^1xh(0@`GG$;~rxB2+mp0xkGb1 zw~j|}v37LF`m}4b_J*QFO8k9Xf5zD}v`3Rlo0ex zq&Gs|)}0(g7;kR+`E`1#k4?rvzx2WUsy-u&DH~{;Zcdjpq}fGhQ)OE?f7WbE`M#hg zIEP0RXa0xy0Ul8fzKt}4R-eDqJx=MS|7@h0VXcvgtA^AM!!`w3dS_!Zxuc^r@%`J+ zwzZ+-OncaLeippM99j2pHrW0s^d|;)vxoeEM0z=eHz|8?M_7*u23+z`^Ktq%SBCwA_E zym<)=>__D8hl7g3?xM|+cRQM)-maeG0^H|e04EKaBNBnVfq>SG1>a_4iwL>e)S^-K zNtP+*}LHBk1S)zM={?XN-~RS+ZA%C=^pj~*Fx#6(2Cd!PQ|f8VEhvRAb7RyznR z;>6_M`yUVnNSx=M`*(~|%@zQ1BVgAhtAbrsWo4^?5w0%cyu*OL4(v2Dm`@%V4yA=I ziBjAUhHqec*yH94b=Yh+ z&9S30SrMG!Az*NMe_SkE0r>JrH_EdZ;(0YOBQ#CyC{ zR`J8d4UkOYUwPOZ7JeBgIa+P@Qj@1PHQCEdw&nu!=?Yv(-!cC)ZQ|r37Iay49Zjj^ z?r2XFe;V66L_Ga$)C;PCzQ} zwa{&c#7Zyp%AnU`E4{ZKtYql`Q1CeGE>19w-jqcLM7zVm0KRmoS~$!xsA{I;P;3D_ zWqO6Tg~6qJTNW2w)kstLy?pQIX2|K=>+heRdCAOykJ5WBbU8Jo6Mm!-J1A&@jZwDe ze>n*~6vD(y-u;&@wnL1K3vM1LWcpOWw zZbbu68c3l4$=B~yr9$;a;rPzJaOX#r zr`@HOP8=<(r}?IAU&6be>%|~%&NY1WI-3czs3*O3@RV|T9b|S0YVY*Jk|I(Fe^L8- z-Io=fgy<9U9k`YZhs|;F8R-2SfRix$*k0s##zDe(mGut+3HKLhN41upbea;w`~Trl2nWkR5) z=E4>(WNQYBg`w(6*_ExA_n5Zae@)JGw)MqmO|x1r#WLlN8w}2>M|3%OkZvj{+Z}q- zHh_1xo4~yNctvoJmj$51*ZY{EEtVhuGR=hD*S^p^3H%(2S5BU z8s`+1Ycw3;lDiSHhtJQ!MZU`_GUUkC<)S3A9ohutW=a*S5_g_u40zJGf10DwuVN^f z&;}lwfH>2@TDY!rrns~SwZl=;7JtDLii}V`)@qc28&;~f*F?~BXF=#is5=o!@yx!@ zbM7xpjxc$3f`UtB>hq<{-+sA{I7^(_VH;$fk}|XzRIjNEooaj;WJ`F#>LvH9 zIp;1~a&G9Y71+d_yW7rne`1q9iFFGtfwuL(*6wKZfz16{xu=q3Ux8gmJetG}-L-V# z@_-i3trk|F8TU=QEP8xtVL;;E2R988xe!2#$~foB04%br!8%WG;=5?t&EAx)ZTdgj zqHT*GE-Cp8WNiT$Q&^v5Xd4@RYMjxvv(q{Jb~h?9Tx}}e!lBH`fB&_)-Ht3(E26Q` zd_T9q+(UY~y|Ps{vUEKGP%VR{QmJ*>DB7+&j*h+vwiJyvWojIgrV#o8+@G!P=2e!u zR>Vhf)}y=gjrvYgkH>ea6m3npI}$2O5d$O9(UBL#D^dou&0fbzmtDry@Tl*tIazC=&rRtz z=`ikf3e;%N$;d&7egUSjl=IpgsdK>#F#RTVu`jor9PBtLJ!qP;MUw-$&$gVvf}WP3 zz^Fjnf@J3l1L>AoY>MQ^V zS8K0*?k1DQXqGT7J+!+vLT$^QL~AIcI|D^v%M>o@HjwHxl#YqOL*zc7{~oh*YNT3T z*!0i3K~6Sl0NvzSUBcXiS7NPnhW=1=ORmvDE2};71v=Cm-7#0x!lLU(33j|eTm#vb zJDi4og2~WTf7?E-#>-P4!ffPb|1frp2P|vwwTS@Vpok}rOh%3X152*LpacOfu+8IX z*{)(*yDaekx-`2Y=+u=CG$!U?JWZ`Rb?Mrv38O6rSGExC3s#dje2=8E_kDvtOxBb-z(*MN zUos$0FJ<`g`51rWhCu1)^!fhWPE-|oBL{Pn)u@qY9_4NqVq;dZfTs5Dtd z2do@BP|N3sE?Pr=twvxB_R00PpMN)k#o{1bWPozX0K8%9|2W>pG46rh+6YriC$saQ zBv70vMZD!6FC*PS ze;ZV6(N!FmI&ALl|B|eDU)OQFE)B30N`R2Dtenc!8PrCTs^~oyY^sSnY}W|x9IQzWCHVqX-g6@lZOn;-sUH>a-X2>3FUWS^? zZV|*kBX0NMqqqNQx(BbQHSKxXbGGg0cgRtH497a&+M`AgQVj;@KCYZhLB<}+_*A2x zF%YW*F_SK1V}O2A@rI)y+Vx5Qe}V;C3jkf5RY?^unqh-975|sXtFUfR{j*r4_85zS zcu}YYD<{+f@0O4R<0=7OecXC@VS5lBddJtA&^8=gbBRR>G)C!+#aCr%M!Z{PRbFn1 z_7($DvS7qVm_wL{-Zl+XSK0bWBsPxpLA8au;^?2^Wrdk!IOm>NeyJkLe?soGc#)ouCDx@yT;=;9^>O|*z*-fS;nZ$!_@lXe|Se(Mf9dF*saq7DSQNq$on3!IFf7_8L z>}IWVA|xyD`gYb$89$z?pK7s-tj45`E2TmtE==i5vWLaJj)&eQ3Nt$hSu>;~RUH}r zdI1odiamswReGNF$<2i4f1MtAmrNXk--D>qkI0vmZFeo~{nrOe8#d)FQJeRwjRQ!K z$BIg7`V~>6VFa{UJ%j*Y1+bpkZZ^7?fu1VKe;AT11BKg zRU0S_rbSSwPqo2W>80}K(wia?AD?-MLvKmb#zWvRL4|HlDIQj%3(P7mmvqIi72Wo_ zK6*Kh_zzeZJWBMdQ>Got>$~Xoc6K9eF(Zb2F5>(D#`SNQ!q3^dU2~x61Hx1AAC?WL z`%9w8?bX%o07-76f6P@?x6bC7X=CID0kTuDJrm&RY%U-cMu>ixtd_VM%u0#IH>P={ zh+$%Awu3YLNGHaCxiH2O+RR+tc5`fgHv)S$*M5=T$Dc3IHQY*hnQ+GMgFhv*uNvh| z8+wHs$SrORI4r~hLew20PT#+rT^>AJxf+=)!PVR+py^w9e>%PY^Xu!8x%$<`^eyP_ zOpb`Eq1+g=e9fT+bO>4@i3Pd|RSxI|18^rsi|=QVU6@VH_ehUx4|413$pF4iT*L9>_9j8vRqv-jLcr6k)k zS6{vzPlHZ+e+XB`6%F73gpV#xAYPZOzf&$8-T@C_YYv7v3CQo2fFd(q+ z?2+&05(UbR`>M4%%gtO*;^dh8p#koOC+Bx`)hqwff2-^rOWGfz>vs?e!?O+WhnJXs z!F5FvQzW&!C?B0?5|9`!nhpcD9Pa`>96Z6y$ek(H)xE5wBg2lBWJHG#abY5J2>-;Hl$qQR{oQDiU7@&?W1;)a7!bAIHJ7)7PVgPv zYz{R{fA^MQYu@HLn9<#v>rqmMA|1cjN13~@)I-*O#>LVCH70IjU1ep;rccm_fiA*l zVWG>8@2qgjA{ALK0G$dMtUklgz`=-XfMNcn=E}X?DQ?x>lXT!6?97_>UAj1O2j~DN zx7LwAr%F0?9r|TC+)w-#?5Xm+TspHIl zhjTYY*WoW#r*Izs-i>Fn_j$_cm}(tH0Pa&l)HQ8KvrE~hJR2;~sJt(A#{CP8|99N_ zu;6~3<71TFb-`0luaP0=nX5OrJRDj5WT4S!U{>d*$W^D+GujjSLFiMIK7Gw7-AJK6 zf2Dt@wV8r*n^C`>FbK`~8vJ#o(U>^n;=DFjQm>y=x4iA}Z{s-~JH4iM-f5jUH*n9O z5KMjA!&u{eXx_B^wsEd|er)2}v^ng#G#x8$YDX^|vki?Ff;fJSGEEIGD`(0YW^C0f zZ`?R_^vtPk;K@X}>UJ&})V0A9@``-+f9}fQEm5EDg~B|_60r{34UP&rkLxUPaBkM2 zGNPY!@f6LHE*6lHncOmn*!YyVE=jDL4n0!LfpYK{%Hu98xLcp>5J~RnUN&#@{LXw` ze8yZYbsNc_T9X|3E=+hBh~_XYxTe-wYQJi&y=3T{Dx^NNRhI5Po~05uLu(&tf6scZ zO`9ZdYdzl%8gcj%p-CX;C-=IxN~cCcX9PphNdg0_ZbDObgk$iGPH03dd6YI6W#MQ_ z+RDHgkF5%u2LRmZTEIVaC}xztR=I3&bE72eQd5xVOxS0p+8bZXHAS+SBF<(Vtt50j z1=W0M~#ZMZs0CJ8AG zdHx?!=5e?B1I7PsXSyG1I@p!*AeveAFq(c%Zm*q~SGu}yx7xzp6Xo|s>(ud%icyFn zk>|9lOir^aj)2qMRXq3h>ybT@)#13sxPsUKmlg%0@=2Q&!!C3YQO7KMe-q{0#CKfC zAq8zCFsUBXl}?27^7FXwA9R#;HxV!(O1huAZW*UH&!=ZQ7KmjdxHJ+e7A{J9C~*A?@yZHh zlJf$J(JM}u6-Ux}WsWmPZqOFbqtMtL&d!;>?nBLaudGoZ``Ky3cjRvNo9MfVhKU^i z$dBQ}31-5`0#c51;=>3Q7g6Rj`!2ft6k`R~b@YZ*@yb(B6RxL|f4lITGBXa%TIre? zefOPMGp?R6%`O<{1KG=R-p^m#yDWgUM0SeMZ@+kA%X9WNU>wq-rWv$pB;mkJdHL$@ zi?zd#*(o0C4F&BWVUU~!JKHM(n%5V9ZCca$$5Nyt{tFOj_1#nD+;2*S?gMY9=#8TH z$xaay*Ea>F`-$$Gf4j#um)IsLtfWx$FaE7#J#i2rTW{iok(Dhlm)4DYj@T1D(qxYH zEx>T`#(y9omuCNBX3#e^&Dk~g->b+N0-*Dd@&QWAQSCKtF_Gn%n z7>i16=ynMS*7`}kN|o0icv9kWF>DD}ZuV9Gc4M4Fwte_jH*a$Bb{lQ@Dw39NA6=1w zDJw+C!Sy@2C1Nk3e7Rw_4#7G=ZT_9{B$vc%t5J(#e3dM$v&gOM5V~0n_i82 zA6`gtEcWswcMXXQ$k^h8d<06ALa5fwwlIPcE%vsDU+r^iH>rn9i#O0Q14__sgLgdJ z?cLf9sglJhI;T2=gih1dnP8p7QGMZy3%;%+f2($1gUGwWN!%<6^JAxH5gphTsGcHU zqKBg=VBMex>Kd7R<^u&^U_XcqV*R~@T+-aA5I;A9FpqZOT7cD zRY2UeRNR+%yNma+&cJ}b2RaQ!9dMgk>}10&S>_syY^sO97JPzTTbLRsM47-ASC${^ ze;!7RsRP3zcjylZ3((=JfWA{npa0`^mhD7>$4}5NZND+$a=)@vC=CNH)4)o>f8MYvkeQN>oVjcZV?P|1i8nkcY10Y5ADe`fZY zv%S4}Lf;C_8;_r&({qqvI>&{d9xVR(Djd1;rjDqo~;Bd7(A%4fwdIsmpuxRVa7;V2S4U=n++JNeU2f7*0UI3>=S zb~2^A^|`2L1njy$IpR7^_6Iy8O-~3rb~S&E03>63OXuD9Qf~P3rCoN4$s6aEpTVyc zuwB29jRnqQ)M_~7UJ;fsD~GUXp;V!wrd@SguqT}ABY0Z|BqbDsE{^iXY~u6?@$~4L z=Z(MyM;srub@Rmc>V?5de>=k+*SsFxYo5&D7~Sw_L2VDe+7S=+xvv#Kq!SpU%3okD z%eQ(4V1-WL5*d3=2_Z(YOt62pN!lmEgXpGPG?FQsh#l8k03T=WFp;?eizgvMI1`z0 zT9hSSB73m1UxNt6;?lxPupWvJfQ1SJT*@P4D=DCb^>NXU;fAUff3El_$Ix7&{>E%w zVN^77?Th)j)Iy%!m~%b>m~EpVu+LP9KXqg_IA_6+OBoaofTr`7-mkZ0?jsCF{h`+C zbR6Zf+9-sTOqTw~JT@YLnR=ybo*c<H6WfYp`_~=Kir@&Cs}yo|&VE|2|mZC$Zz`e}J5K(y5uIIx&}@y&IL# zk3MT15e6k*$Yxp39Bdd}BUj}6h zRJCdDB{~2s=Zhk%j0T`kaEo5Bsr=fXJ>}Q6>rQo8e_uW7*>7g09gTx#%I}|Or~QtS zqOd1z_R!p`L5Pe6bAD;DbhwdUrRDh7z) z!={u)osn!6{(`2$bx93B%UP$&@`=lFtpf^30tuUt80}si%tm>}GYx{?)kg z8+ArFe=I74inbk8MqU-?@BwdO?n4OjLELPvs+=c5d3*`;?0*AaYE2Z;_{QcO6@|~C zF%Hm8cXb9T4dJMS8zlyWj>9<9wd<4Eq5Hk{B4`nBLfAH?`~(o`2B%}YprHGSK0k+9 z#`ZDZXU|*3GW8+JLl#_T;$FMj6Nhh)wpM$Te~x!i)O9SiaqK9G&3XY{4R^ad7ZRNLg_w9^Q!=;v6J2db+&Hu}VYYV*cS#@nF`sVcf`8X}FFCB?8NK9F| zgMHxV#&6elX~`?8^hw|g?bY`aSzwr~f37Ff(>HI1ck(ZNr0@PLBTpeGmhOQZxwD0+U|1%zx+%}*Mf8v|C zuG+>CK9Rt+EthP6%kT`wHk#oZo|pY&_9 zR0A2Do;yXFS{)VG5ba4d$70Ji=1>T*68Z^HT}a#Ow8pa?`!rt~rHYH(yaqY<1`RCK zDP(PxP=g|=0u#snPul84k^NV9e+C~|+8vwq_3FAiM{kM28$5ZYJ!sb3>1b~<>B>c= zN4xPOeCfjS_X=omz-hdz{*zg>vcWw;e;Y~!h}U6Xo@?BHf-QDkS*?cflmtA;;VCUk zm!Ui`0FkQs+g~*O@zggSavujiW)0x{0?xQ&3hA;@BDbK!DB%au`IkcOe>!PhEelx% z1vjdr!1anasHmA;MV7!AKUN^|!u1Zf)!*f1a40; z*^eUBwWSe`@O_D~sHnKee+i)zm}7nP{zXE%cM*UvP8Wdcd2w-iJW-sc?tqQtS8&iO zER+n}yKO;lbmeZZ5nuBW{RqmmiRN%x>pYphKD&6)T}|PA*5#@}UN15Vgp=hB9O**N zVgw=bag#WXQb&Q5u5kN$-ko0YBLNoAzF9aV=MvVrYPVZGS504?e_tK?KHqwP7^5oxv z>%qZRAh&qLVku?%6GhEXA)?S*>**9SWjw1E7@f9?gCguqyK5p+D|Y$g%p z%%Ro#>lnvo&B#27^#lW5_V-C9YEpoace;SRc!+cVihz{oSkgGd2ZV0Sr=}OMRNS;! zdH_sYOUcpV7WEW|wFXF25l<=02^h&3U$7FY#?fxBfW&4;enDL78~?uhoJOIJv>47H z6~+~WuqZose_YpOH_!s8NJ(1Pa3Gfv%LZcNoB;k3LTtZG`hj-!%&!ngv zfm?c}%7vWxR3lu*@?9eK4U^IsbfA}i0De0|?GQG3!aO-|JD-bmFU>MW4@6L|n5tDVV@JMU!?5A@F2y<^Qx-Q*Q zHM^YEqFnkWq%XEZFq$vV-dxywtY>m7elQ^i{Zf0(O=-Pu*$-5C1Z*I++FN26&sUdc zlPN?0K2XDY*MefG?Qk=?PrjT7b#jMS`UOJce}~v5RRh2%Q_6hHu%@4s-0cjXMzGJ2 z09(3qzTP82Fka;Lj1iVL>ws2k``NTZ0Q3_C`I+IX-saaiLIO9fR3)H_ub#|-#>diy zb&l(`$A2bV6nfv>q@@N=&|^V ze}owW4rrGsYmeaJ3J-j>_eiV9H#SVM#~xvtrYF0`6`A6YUT1bIrX%*e%C@e!iyQV5 z3~%v0$vUZv{jA7uc9YV>Nnbq9f8A26{EGx5>M6eK0#XIq;+)@;9&c2S=Fa!4p_5f*Q0=fx^qe^t{5InGQPa-f5v-zcc_}9jS z@^JUvU`M4`9V2?HiO(FUDolP<3AcKRyhua9kf}sBOMBFP_^b8LQ;FzQEM%vdO3@le z<4v0{5zC!LL2+>#xUXQ>T3C~(e_#yGB+@l=*_S(x$0#;_+|#%QOGw6Yeo`()_b;If1I#KLExqt8+i2^iweP1%`$J-Cw2bWemk~-v9)v14wNsr zqK+nS2b-mVev=)C#N1#nrR-KmCX+L#;Hbf8*hr%rSScrBz=j zIx6aNvf*Uy5dJbp2uQ1T6JZzJDl0Q_;7Tr|G%NBG}LAwO!g1G2BC^5SEd~rKx zu?te&T3Ps&WHZ9KxCL|6e)+GAgWZtBVl3H}fs^tB2g##u!B3F$Zj0h`B^^nGNa4Mw z4H>`rsrM_gTE0Oke+VOYr|k__1b2)|Al2-9Qt5qB2;6$0wzCNE?GZQaQ)QT)#gtb_ zV2``XsEmp0V{Wl2)V-U{FRcWO+=_+{fR6}a%ZetO7wZc1ik{&71~<%QZQzW)0Wpun zGv}yf+?4BpeBQNVm8X%tC)@Gx=Nn1=4_k8d4`Yc`S3TMme?scS2^(qFx(XEt{iaVj z0o=?t^Gepkz%_Ceysch|>6dAH_|37tCgdjj6gJWX|BAPFYDck@*!wHQ0oW^=>?h}d zba7;+jNA`xDJF@>zn3uSTOkdap1ps29CfGICBgm$N6RQg;v=5Zw`V^ccO|PV=tw5OY z()0Cp-o#)oQ%_%M?Jyg5SRTn$wa2Z%cGUYa-}Qmge@>ghBIQG#$|di1Jl1uI-a`_% z&wWukLJv~+4_{t#+mXEiU<8Gx^g_y(j>rO&%l|=YF^Ny#n5^BQn&d0rSGhY!DdE@X z@DI*vSHz;+-b&x8&B%gA9d2EN~}q(&Fq6sO82RKNSsBb zgYG83PRbd)5e~g7B;}*Ugw8;VLhz~mvcN3Te{cn_w0pZfqm8d5okFvy&Mc~2wRXtb zpnB{M*rId<`gCJSh3KkM_tp_#^5Gf~1)e;wbuwZQF6~boAnN!|Pb?Sx!>k|#)TMGuhU%#VIPdb}tY;G=mH~sPcAy~(u$N{Mr%$J?jPEFN7@^>asICs8 zWa!u*SyX%Z8{P@7kT}X@y(mWNCqI^%cEIcq;|t+H&{T z(rY!$ty=uWx-0TS&xW}*VeT#Xn!5SSe_r`vZ=kRL-5s)y<|AW3K*ZFzObGEtpD?rE z@Zn!t9;ZXtcZ8}*75HRGOe0`6H+E;lvz@+qaU5ld;?d`R>%vLw8nX_U@$3Q1c{W!v z`04u>r~Rk<>dM__-MF6u9sRHc0cZPzoe)!jtlZiKEJKaavQ=n9*TZKQ8Gy!Cf2bh; zNB~1rKhLZmv%W@|xyhQDT~Qa>t)+A+VzOIUmq&`rJ(==Y!^&W3jJMmM?1qiiV$VA$ ztde%V0yTT^-%uh4?$yF906`^5m*o)?3r5>PV2z<2zx&5{Vk86IGfScPztS58<;>K& z!jE`#29DB)$7eqL@i)j8ZSD3wf74}<<&+3(E9z!Cr|eE@AK~-KmK**oS}Eyrx_nhn zPqd+TcJi^^TI9(!L!Im*I4kb;d>aEG_*zP>)7vrQwe%k4^2^Doz5fpymC#7fx&13E z16k??SHrrMh@NW>(y28KgI$hoRW?B5!ML$CWq>G@uo1sHTII1T_B`0se<+eV2@QA} za?dwt{c8aEJ+-nGX=D~r38GdhyGG;b%z@9$cxEk6tT&24$>MnDGpGuBaoxy$;2an2 zEUFbALO?X7dYxKy0zxm2e4VFmn{rL+SE4&PD6X@JiEi>Ia}7A{z{)s1`_t+1q{CLm zPC*qX-M;=Xn8i0kntYy4e`C+|^iP*v>+Uk^^DLyq*8zMzoBUMzV0(c5I`S8%GT;Wc zs35nG*6DuUl^b=>#=~sLlk#!KbEN|IEJwfEy4;Gw)i{(d$twFk>5ipJy8v^*qJ`!l zaPlrXj~|;BzX86~n}Y1Nj%$HL#wgHj)A-w{wvTo#W!t4oAr8#Ce~#k5GHw5fAvo8* z1~4_lwIC)q{SmFs4`-A2`O?n2KS|B(75(X#de^JYV%BY6TsrJg--2_1ypDnUvgl76 zDgEp=lyTuLd|6b^?B(Z>TffT|3wOBKR>(DWspb&AxRG>sB^#6p1&`ZGF{^ZKhxFQy zQG^78{M0bNI*|Gre?$4&zGEJy40%*Zn>HyoHw0y}+f{2iD}-yFj&K^Ui-%wJbdue3 z^TE|QNf4{4U*rzCqa6fm*55yH7 zcR~uW$K{usD9Yf^vi6W}%qBX*bSBX#C2qfpWoUK>l{*bXujAG(xjz0P5bo18>PuL> zV5ORB1atvk^3#^#SPiQrpzYoS%=@VlMS;?u(+oea4Y^pWUNE*}CgE93b6XPYA3Z=Q zb5=*;Ra|_1e=shVH3dMjx0)*@P)aU^@tVF(c?$-RItL8B%eDjr6U)dyVr|mj?x*9# z>bETkd)mc5Z2h0Q2E=D+Z9~%1LN`ORB@1>vHQ0L=#ssDV0<$^{xcI$!aj}*_=s}P= z_G8EOG3bZ$CBm$5N2y=yLx7dE@{hbwbUZ{1u<=5Mx|~Rrx0Io~BK{)XE+^nO!T6{n~eS+ddxmaYPa)XT>uP zKmhYQ#$4@ckhQXE0Eso*bmkMmcspa2MC^CwKGG;$R%U$BV@H@(2m3_h&x;TIRUQ&vVxg~<{O~;X|_o&(X#Ws7wxrKg}a0af!d8SY4GQ{&r zGpo`XhTyIpN1u(fx2F@!z9PHQ@yw7nQkm2{e;If&OL*s#sr)BOLCiuZd8W82OZ#s5 zY{#Pt5mG0_PMWjOU(Z}%c{Wk_lpr!SFQ6;1VlJ;d%EB`^DD$QH45GZb{5CiK23L+u z7CoYk+x>idYp=-WRfog%07dpASWODlGpbC{N)l~ES9z4Wco->Eguh%WYMsoE(^|8A ze>Xa2@#NJ#NW{meHG!ea%JUcdUf#ZF63UakrVns&F5t)==xiUg(V3m>iz9km1UhD7 zZa8hE2=`671V$-3{BlUk>p%jZ?DRdkAsupdap8J7I}v6M%emG!dU!ePX_psgPnW0} zl>H)=ud*b~m8&?5P??4UBVCwC`N;oDf3904hW#={^IeMO)HDAIYTVi4J3P@rsu+v? zPRfR$MWCy(-oXkKka6djxH00>qub>p8c_phQA$vhxE&oal&2Nc7$ke)QZ-F-X zIS?BSpzVpVpC)yYZ;_4okF&}9|78F7e{@}+m1$A4g_h>LUck$VFYXBRv{?=ye;|6Z zt?%mh+*h5uZ>8Gg!kvQNTl>zmrsXn9L&pYoN>ygNDpihpbt-)WG}7xE2p!kElsWmr z_vA}u;xTDF*3gBByV3l)06=9A|Gmlk3tps}3<}|ds?jCxJN5ukmsRS$aF3w+xkQ5* zYQna|B!tJvnk(-8FhlLvvcZLv+U!DreIa)}I|>(GRv+j9)cjA~PR||HCn@ zWg+g`EJ8J;FZD)=G#_P8-IoDaoFSLHD#-3&5~f8HK@ z<)f9jfZA7AlX!#UDv}^cs(^_YUk`Nl?x*wTC;$Hc49CJaEfDl+wWUAq#eY{tuw#zl zBJ+a(9?JjrmqG0~glNxep@znGB0|?k-~#l znFRAXLs+W0kuJwH0`c%0ue_G=FeaC-GbYoO1C=?)OA1AsuK4K{tH_`EDlbND(n|vs zFU|%|-V{~!@e3XbXZs-^W#_m%HYl~cK{ViXKj+3Hh`j){1}4ZjB!9I1t&AAe9XU-B z9T}L5JB^C0xcZ6@4Is^#R&t_LhTEsBZVa%ZZrhHTn6k;M>@ym=`C{n8`BF};(~iV_ zA3NSUCw1mb=?XL2i7mgZcYHC2yy~PM_)3q6$h3t=L#{|BB-%z=J}*(8g6>?IG9gEC zg#H-hzwIrj&h33oVt;gX?g6sjWt)zSEd}3_p)|WTX_nkUYR7=J2?ey&XuH;MRkGIJq)6y@IwN3T1poo|5bbuXv$H@Wopm$$7+qFRk_*ujqHRe{Ga0J{-GDFARx%JJD{*L} z_9seoKTI!9FVEwR3kmJp68sG}86c^12U6tf;292vJ!N%&%(gy%4PHpbz&XkMc+LUo zm9Jmtdz8BwhZxdc14eD;@i zEG)~lVt;1p7L$-0$WN3Kb*IbKDM4ue2+Cni%@`-1f+#A;^#aE<&5 zlU@VYD?DTV}@Npwc< z3L1X22M9a#Pkyw6JUl74<~wAb{3`R~k3U?xDSr{*2;s#D= z0#sp}p@rE1sMn9*j-vJAdvmgC>GM^L#EHFjaUZsuXW`FA_Gwqo*Donmc@VR7rOU2^ zmVbi@2eUCU!U*_$IS-w;epmrt%YM)~3YA?=if#^vkOF))+mgQEu64rF@@3|En4{rp zf~!Doo5h7-9(y&n^Q0x@=}?WpkG>#zT}l!3;#ytwy7o?L8h5Y@id z$**_HCV)XON0ka$TESTgakAiej!}w4UVnFH9ifu_m~jo*H!%uWNndCcDp1*Mh-Ltf zZ1lWa?^u`Z+Roxi8%a~3qaR%zYZp((7i`IA)tnUu&%wwsKl%zygicuk%hJ31iJou( z8*Eopto`>V z>221gYh>Bh5!|+;$?+6_k$2fkAKL>=Cob@#_2>f4wq5D$;Dqq9C|X^m&KUEFDV}dA zkJZq6*?>SCa(*;G%)BwW6MvdI#FiY;bcCGGqF-)LINa7`_=_l}FEV=sS(hwFbr>w% zt|+{{b1h8@nXeiowi1FyjPN)$R*6YXUzU?|S6`Aj`ks087Pj`Llb=nf5wS~zXXu%y z!q#^72bfl6kuN`PA}UZT7BO}7pEW0W;aWQkQ-o~#EjP#V70`y%WTAZIZnA3X^M`(xKx+2Y$FU%o=PgB;*4xskHUt8OPa0`@+8dwHfu zl(uQeYOQ!$1L+oT-x}|arfKM>0C+SrV{yw|OxkMACbP9fLVrUuoQoDG;h`w}Qx8>) zsUaGEVi$u~bh>q2s|X!_(j^7`CLzK)ef8t3W0dCI7!O8kZ?KDHGx=<) z5}Aen@K65A2liIU%VP^o35Ac6$w2@XqsTbe@>f>lk)qf_kPUuj4kAEGS{3Qct|6J!y z>(T`=a6rB(HA6FFOb>gU^%ZZad>9U%j5?D8zKpzMP&;F|f-$+Mdn^@a@cE#h#)@gGRb_6h>iByNlb1 zR)zL`_kSapPG)&Ws$J`Afym1@Musn!ZxpSBOQ$vBBtY_@Nh;F6!g1MGudO|VIkx~z z%V<0}BA(BR7!TV)IbF6{H+`qJT3x!}c0zNk7;D<={+GxFrkB98x)wKC5dsza%htT^ z8(|)f7?R_Gcw`rxMU|7$0}*PaH6D-y$4}Al>VI0RmYtZ$H3P6eVK-77BNc<{%4U}j z!V7l$ARnt-pn7+R0jF**`|O}32D_gJwC365j9`jbOa8AC`F#(e`aH#9HcbqwDj14B zZJI4hJAfBy@ueuMLfXf=$s0++K9_us29!LRTBDa(B@!k#BhnJ;`9WC&JNNk{TT6qP z(0};abE0qvu!Fu=N*wuZzi0lvCU~TB_zGV9#N}Ma`&aue+xg|$nFHpnCnpmi!^@;y zhGEMwwq^6;5pOs_BisVdMs9B84~_t?Dny}GM?7n@jfej|@q%Yg-Ar5n-DP(;YbN6wnG?&}2OPy3hos z6n9}jZBTn&*Rs4R-~`HWxi>OU*i(5gnIQJzMlmBg**g5}>&5J`&ecK-Ak$V~-`)Ex zLDODDXIOkA!1u*%xBe&)4vAHk^PO_Ki^sIU(=AMdm>I&&9i04uXCwNzqj$Pycz=%- zf1%rCniY%kwk&4$ch@lUxce9;^p$Ld)~5pXPTW%>QYa*|LXMwiiT%qayUy!p=&$|R z?l{@gY#EUAG=o-3Tr{MmfOq<^pO?Xtr1kB~0Af9i)_8rpZA+mjpriyBTXE-9Y) zI-kYx`U8eYPTzmzKk!ra^yhN@n91B%`?T5o6~^bVDPKN7#x-pkW9hJhf#)jc*fP&fmcFgnzqD0HgVGrny=Br9p8rd(B{dq+8 z{F_NW)M`6cRwwG2E&~m*e<$;abz`cy6@=qN5%r%g*X}!y7VKcRUVPe;0{X>9Ijx*f zj8gm(rD8@ddV-wK9*b)MhJR=~ws67x>x=x#X4+5wHKZQ;65|ETeSjTH6zepQ$Gx9v zYK})w#>is)y_tsLkG)*ISCYIq2868h%$;9nN&p%~=t;jOfDy_$C%->VY#WC!>+~_i zXlBEW3<12%71MU`%j~Ia5Wno)CB!_?l4iy_J=o_%NwEk%YVhq-^nZ=-RPmi9eZisn z*aHE^ttg|?T?M)vgjoL~MJ7fP-A8#4?_k`7*&zTh%HEks=E|kSg4+I5FG?2dp04N0 zVeH6J70;f028T=WRLEU1Y$uB3Z0s#t$--pu*$Ta!b{T6mHxwO%00~zv@_F3N{B$vl z1;&Cr#3uml%Z<6WgMW)X!2V;HswyiK;VR+Rz4jVQ@!)xc;E65+0#oK5Q3hE9B|}bN zQb}B@l9M&Mmx??ZV&s9Ek88Wec1t1lFJB z4A!L*#4lDvL4Rr|Jf7%g_q?>53BfVq(6#hhqJBJmN7x9Wl0%JJ*N#yTVSLgGB;Xb2 zDc+YaPLWil9rG13LM>U{LcvX{I3R=isvCs>i*6=7RudPZ>^CC8BI?-U@PnAJlU5@s z;EHjAhwa<|!AS3Gd=Xc2ql0gZH7-qrPVGRA4t*TdSAQr%mRX)uW@ReG=T1U7`>?I+ zj6EuubQjnmzp_6vvZvCB%BRIZ0DOMgFx#g8w3w8NcEmax4Xi z_?*UdcrRSt-8KF$a27JgI`{X#L`uYY5f9*mb~B9K_-@~5h3WU)el)!J7oQdgP`M`k zD+hHlJ%4}xBD<26%ikC=kF4-&l!7{l=v93~jJZmdBfJuUc(ATCPXC|%`2IsbO`bI!IYVi^$$NQR~g_3mPT#UmKf z!rbBL=oj7Lc@u}nBao%*c6nn}P1%o;1Ima=%zvfU{s(?hR~Lql@PphG;Iq=GH=xg# z(sHp0xNfd!40C-RrMSAE;~&S$BolXtnZ9-ocsTale|?|Sx`^OGTg1tn*Dlg@@b~*t zm005r(z(v655|}7vPKE_rr@VzH%l@{Yb978>`GOz5@a zrDE>rThZ^SAFWPtUw4W+Bf`-=4mF(ZBeu z)}LJ(djR2^bVskZm-b)BkraG*dzrf~Dl&7oT)sU^(2pOX1dF~2<~~i&MFyw#jDO!R zdUpTofjjH~2Mk&Np74kMT|>OF?%w%MYS=?0SnY?1h#*F;h$(w26@#%U#nGu0F1kZc zG(Vmqkv&z96**o{J#~#oKikVuP+1h^M^xY=|IXxwR*(79OFAAM*jt3PXaZtF7%zTc z`9>ym^Z?=0{-Y0feI(a+2blJw`hPyqZeMDcxI=5fAe>(;7g;;&dD_Fs;6fQcxyww{ zM%YE=R;&rr@#S#jakf={hZqiIl~s6*t`1xm2T3Udk&Uuwfqqc=!1RUnQS&E$A2X&vZ}GC zEB1<%)lKG-9MMOzlke1l@~=@BmBkB~3!_DfFeL3dr$@5oyqMp#^R#@3nCj40E4~2O z>N=p6yTYx;>OFwhQck4yH`X;);B@I8 zz+VP#xjcJwF(J9Z&t>jfV*t~2c{XshU8M<`Mphnl;Q&LG>n@W-SbxH!yV^}&Mo5g8 z?Bzw=j{m49Kl6gYkm7$e_sW`XpIYj1Sm#@=9Q0}0HbVj*PE%LDBi+B{!i6(KTmQg` z?7wcbI}Z)yx}MlMT=1A7#8z9(=p|{l>z52E0=R45cqp80>7hV0GB|y45wn8slSL4)!-Z8h=A;JbukR|!eJi7O zg79skkr=oGzggEQp=Eh3sLa3uLvfZNY~3;g0K~O*kymKbpMN<_S=M|F;WAGZ6dJMn z+;Ov20=V!?TQ)g|>?}o>Js!4Vj+eu>_e^)UXezN>^MU|5SpahQK1 z3fEDuuPWAqn9)}lwcTk2v3}qx!h>A%HHI#ve~ZC8^c0=Olt&KWu~_=g z^OMJM--Ki&4{3YMV8-|B5(J(v!qV;#d z@+BtnlMtdmEI$Ls{Q|{Q@b26lo{_-iVpno3_6OyWK;i2Qc$YpRO5EqrWNn|0KBmVN zAz`I&u#Uu-tcr5sJ^*sMu@8ZMwa_^YPw)1Ay-E2Zx(<~Hl=pCYZQsyMjw>CCNbI}~ zQw4ftk$=pW2n{)IBYJMXsh-r&S1eBVj;z-W7Ii==&=FI=C&t!PL|O6lhjsX-ugXUt zLtd2liv19!1VobhkPdZH6@rv5R~+EcJrjegV9vlqv^)E?D}UL^zuMSn(E&W~vQ62CseS{WD;CfpvXdOY4vkV%y)Xe@?kn%=8Ru&3Ibhlte|FAdjN@|ASRq+bKi&|z|t-}O% zgHV6F?0T1fD}vuTu(v-(fpJJ-L1Xwc52#csrx`JX#WH&yQ_q5EGYHfVLtix^c@VTc zkAFbu$J!oc+f1t(Twfs=)Y-?sW6G@*tJA(odkkV{t^zzs$KhZNUtc|^{L-w;1&WFn zfGI$Ms9WYEKo8+#kNyhu7rD)GgC3|Z_!@`4S|SPfyB?uQP@?==H*>#{Iz8|2bc&=7 zTIdoSDWIoj?iigbx`14fn}|>@DaAVAF@Lbb3$R1&yG?7MawqGgEH^urK3U&c=MwGn zZfRllp_8)=*N#|JE<;qa1ON5H#hBP3(6b@A8d>K^)UYyFsAM;%w;;4f8q!njJ)684 z+;sZ{x@dzWp^s_e^=??_i?g#cuA~UHGP_tX3F->-^Af^1Er(ZlxtI<)uf>d9=YJdP z3NSSe=A0ua8Bu>ed2b4{y@juEXD3kR!DdV3LokIjTL47l3x)B;MPHzabuc ztIUzR)E;TsylRR7m5hfxwC}^7Yo&W+TRi-Aoj^(_CWV^%uJ4EJkxPDzeuSD=nGFuV zF*)q8im=8u^3O}%Zrv$NX_6^u7YRq(#0EGiIgu|ckKet>Z;4m?q)%zquumXB1r zC1sCZy_O)%QEr#p$YJWA_Kc6w1+odd$CSdMhT0e@3f`lR7g~4bwyfkxDnfQ@yT~>t zev5pGhH1iCpGeipiU(G^8Do-pC)IBM3pD-R1C#Y*12jvQI01iBA!Jk|-pCo7->h1< zk2+nu0IFt_MO7l}0>MPSvwv%p^%qEo#G|+a!WU>fXT;bu*R^4;Ly@1|hZ^-*!k5%` zD~}h=gre}?k4(fXp|Y_~VN?qI(k@(dtqOCK*<(fmUx`tcgY+nm>XPF#{=oR6r*unp z6BltoTwc7CKoQ2t_7Wh9fma7-7+G!TTsa#@o~E_y^c{||7h2x5=YL@Bs-OhA-`<-g zX^u#=;L5O!TB|ss?R4L^=_)e(vN=Sp8f%M6)_v>;zyjIm*%Pf^CElc55^5yOMquR@ zE%K@(>cSG0u(?UpK+}R(+E~;%?B03M*_bj;z?eFD!$VaL=l-5%!vX2S#4JJ2T>7TT zgiT`n%#d7${fTVpvVXMF)ft)Xz%~&XM z42xaqH;;lo8Go@IkJ$vZE53arxLq?6KrnXWgHN?*2|$~Ei|q#i9v(d-rh;Oxk$|wR z&{{lGdyS1V)iNs81(#x6auFA4wxahKNY|I{@bcCA&py41R&l(KWav z-s_{@?8w`j?R|HAzoXw}q2lk$=N0DtUlL$bl1%F=mWKr;)0wa1#oU-pG2DQ9bFr@ny4>- zJczR_Q5C2hY)bg4gmMdlpAU8JCz>^k+t1N?KW)Te30~S*hEC!b?U>KrAuexjk-+P2 z9?99=4u9}W>t0YrG)7DwD?z4V;jw-f^>^39!HRF^wmPsO&wDAAmFfKxkFkYeAK&E%uKOMppq zI4`11^>sxekmEyL%VkWM5*36^6Q7M}mYW-XdVk^FTvaCDu(T_}_jLx@Nj;JkGev#_ zgysmxp59#D?1+zQor0fE5C04IEqPqN9^Lglpk;)$sic;?OHT?w1ru2|56C+bb3Nos1>HtVG8a?yZ)r=6Nd4(}ucX?HAT!=ax>v>*^ z%YOr2Bv(d+QK#S%JVS}x@LS5#XaRZwMAXK^rGjd&%;SveL3d7HpIwZlS_9S~f@R2o zA*xfS=%oT98WkgqyjTx4NbmxmGds%IbFSwXsgcmi1(7&vTB{C$G_J{V@k@(WfRTtq zFrqkk@#Ap_C5+-+5fC%%%}-j3yqiy%qkpr1C#bN+!|PNHr;^qNm_xH8Z>M=@kbCT6_(*go;@^-SqEH_ zVJ)|Z(Jv0~7><7DQKXEC_Jf)9hKE}?IX{VCFEK^ZDl<*XIEYds4F!wbqe2X(nK4x6 zw78UZ&$&y!%ruVe#L7=Wcq=a3LVp9go^UNz^Q|lf|3ff2${2k^qZ3Xh7N}^-uXh4< zWfpd249Lm8Na%?7n#Y&3-0q?V60c`Tyo>>sg~8?D(Om2%^cDg>u62%y&Nk+z{UfgFZUVycgF$M zYx*Bv?DF;Y;jbYirQK29-8ge`a_ju$TEPmWef&f&H4e0vKYIwpO>-DfK>D0%QMl$Y z(;R9^Y$?FB9h625m+QurN`LD>cbHAs*oJNNTx;T%YRXZ{0!L=i4H&&WQe!7~=t=>{ zw81=_UbQt*{QAP!ua5eWr=4kymn%DrlRLJq=xIW?G>7gLF$)6?M$z|&E4vip3#fy# zuZc+SlFLFPXWFvQ2|8ldE_}ju1WVYITY>J|IaYRn6&4+^!Zg?9A%79a-k%@RI-vDD zyJ$y;Oi00t_BykxU850TVMmo_rG3HA9?Q-wSQ9~o#0^pn;NNaBz{&+fTg${d4wS7O zm)r+ZhY5KAn;IdGBw!=H8*7hey)g~5{wz1Zsk5}Rc`|+b{^EG=*L9Z*GO#`F^B`CQ z){X*(HQN6v)1%!U+pXQX0Matg5i z+{6bMyr$dxCDU~KUXz{Ac+Ncsjv~MIIbu&>u^G=>#eiF^O$3Kov~`aLfjp?z9b=6W z@iPzq($?L&txjuUtUT$W+?1OWGQ{QD*wN{sj2kBdQ~>__~=yr=t%t6E6y2_|K(Y^pW7t}Me{M= zhkQlZb>S&sN5em^{I>QiM%j3Xk;nerCn@aWaGS%EaTJ52+31);aFyjXv2nO-F&d%p z=uW(D`|j8DHh-4+V*C)HXT|Izwq#U7GGOCFhS<&IK#Di(OdUHn8;zH0Mo{9!(OI%X zGwZd;dK5iqbOs(Vn?&iF=Dr)T&g3Tz+nrp zPuY1`-RnV+i?4V3maRD`{Jk!h(R!jXC1um1i_D=qb^94cz?~-3%d4xGV>>2TDa9RQ zvF@_nm3zY_@P{kO>1Y<{s9dc^Lw5M`Ka^$7I;?8)gG0N1AF4XY4Ban8%c3w=0O|fb zkXbQ3`hTHuTXfvHDzgie2u{x~4)92#Hywk?81)lNaqMhu`+5T^(SNmGfrRl=l zE@Cwz^#J315yTt1=c%z*TKK0Ecl!3t)m}>h^NYUFa9h;=yj6S)twu{te*XOJ@xB%D zAJukBKg4#Xr=N$UaOf(0-s>u4X3HI$)9%4gUS%Kc;>C}nd9(j8Q1D|qReP0CH9)oz>yI-O;LqG?--q4~$?kWt5{jL9MWpLnk4b{J9Gr7-v1 zA7H8@`SSsmE(Kp#i9qQ8sjTea_)}JmIe!rjpnvkJWn-d)e)>9s>4qIF*|*X-xMTaz z*STrYn6U|+HnmR?M}0O?o6TUjCTgQm9DSEjExd;MBwVFOm$B}gzyCvc0O!B+V*oSY z*4Wwpjh~}z^=^cjAN@2{`LW|$z1x7V<{-Z+fLQ>@E{T&RNU~U8@tos!{P?@qzki$j zSQbb}o_@q)#Wl@(ekadMbg0|+a7F5#eP@kKp(+xQT+buO#H|&)RJpr+Pd1K49TKOZ z?njZ@C)3mO1Khuh(5i9d>v)brUxRP=nqHiq@7Q3@LuIqanH(|-hCk7&I3O7pIK#Bd zUADb_@!$S<6?Lr)9jc?A6<)qW+JEKQB=pk~;uw4ijJ)su{^2eyQs8~NJC0Q2Q5|I> z=mj2dv~?H8iSm6~93*Ij{~2D~-q@z^`iVPA@U;FX-EVh3?@z!;v#ytJr3is(G>f{Vso+b8AW|nz zb$xF?9=+bN2q8quZswAYhsC5gFzgIl=PW>5jrBIsY%SI;Kw$;1-1Avs1KU}WQLyC8 z5j=CSD_p0Ktn5hy!GLAH;(q{Xd{c1Rr^%5&-!gXrcmqooVB8*rAujChIsa|o=c~nw!k$iT?-Wa_NGR8JW}we49UxU zSsx!>$bc*kD_y0V@;9x7+i0n2zF%%4rj)a2IG1?S|f(awP`+r#Le*w*S@GD*Ts2kItS24Sz&an zs}%hJDrmeQSPW8k#tySqs}+nvu`O0Q1hze&$!K$nzmvl1E&yQdLfE^^KIkPSP1h2O+ka923_XpNHFECJONdqkrxTSl8C$4aX#_cgOf;DY;Bn zOcvu5%30g2R+PWHHCt%yt#2b0v>q4-6=z&tX_|^k_7Ufg>}>K0HoII$kILiU$diz$ zxVyw>N!5MmOP1`X{j+&&#mQ%T;`0D3amVKl48W-A)A}Bt?ZQ|FFLhkaNng#>6hfRm zo7~=CSAY3(#+oU+Ol{beF#&_&t_Hivl#U(X2^Zl4|0eQT*7g@B^YLF%_VDXiV)Ac) ziCT5Dz!r(A7HVY1i7?5$Svoi$SphS!WBISL-C`QC~DUkHh<)qROA7%Vxtv$d9f_=l^HR9tbCjS zB3R4lIx4PE)C^7NJH@R>R976?<&FRu4f8b$HVc-# z9j?y-&thNmCI{oNuewz&=ux#xbm9}?7dw0+^@>~W+KBpi@7lqij2wfQYQWOK9W=3~0XvbulMl%IS?J?@EvkH2IATLy$I z6tVUzUDTlK%G2FDJRAu2@Q}v(TN^95*niQ;<=RQ)Tw;g2aj(p;yP>p|XhkZu@7Ww? zl`Ee@2d1OkvMV;uLqIql-3cCRYAC6aj@OuOi^?!sdRu~f24Io_q9%0ZXos>%_(%() z*kIW3SODPp#e$6`c0gbQ^5tp=R|vYNJhFQmLcWIJHiB|?ByByK*7F@bQHxJxKz~sR zeu59z>O?uTicnug2tAuX?gLK<^Af$_j5>vKw}I9mCjzS-X@6p0s%TNP$2c=jh@(D} zx5s5H?EuQx68sz-Y2!tJa+?dJ_zWnE%!0QuTG6eR5M*G2JRDmwoCz7*lj7baR%PSo zKmP9OcayyahB08|cvAIxk|d|}=YQXw{PB0`>2TKh zjfXPZH%eW|1mxUS0?Jnv14lk@ByFb|gv|Cyl?6sy*BFL?^CtgnBrfqN76f2SYzBz^-gI;;1%FWvEbWjg z;Sqy%nuMXQi%>ii2j;EZHneOcWdr->iE0-htS{H?0JVxo=+^cK>lWcB&PT7jzf*hN zrqNsIr|r>Xzu*m5$t&|oI8#`4D@&3;cn<2@H1nIvNL!ZqMx%U~ zR&&mLJE^mVgtgvDxSls%o~$p?qf5+?qKE%Jt_e5~3;T-7YpL1Ic2@-6nyixJ=Rkk5 zcp~y1TcYhQb7k#&MA=_j^*5QGy*}$Fv-8zteQ(_&Ek3e`FpoWhZ-4HRmd_?vlB2D2 z)XPQ1+7n==2b38xc~@T2YQ(!*!^N;?;8b6>1BFiBl@P_*msRI7>OfRhcPtoNdedXU zBhc#h82$Zh?HaZ&QJup$&D)nhOa#$ov~8y}7-&*Hdi3t?%U#kAplt3dc^sp1Pw9JE z+}^M;om1g7IxP-AmVcZY{6%24&>mn`$Y`4bl0buv4v}^#?X?!)(CN2}mtE;34{%_W z4DLqoLQ8}0vI3Cf1BhZBtyfJZ^Xwfm^#XU>+K0NIoK}?sB}m@I^y=N!DSk8ZAz0fV zUGGN#UjoJ*78{H-iA@AG{f7EJ^8b{gC-2Tq-<%GAPbvB#QhyP9<0~BxlM@+PI1v!! zc>LWC0v>I+5_?&%j{>}Lj5X1$dQ0-H1lty-&hdER%Gj1Lc@^>5E zL?^=uixqD^a7BrBC;L$J&P%C%&lUu(=4a@*MSnbNG;+)VZqGnzd(Ql?*rEJ^0ELtk zV-Btc{Sz}m>iKg0GOQ*d1Or$F#G{VVxTK4=FJGKKTq`Z2_L_AGY<_+WMTO2c^}_BR zMod_CQr-SCvSd1Enx#r>I-?$YD&qbN@7d%h zJEVM0b&;*NT1i9PI(oi#J10&Q-Uh~j!tse;vRJfe*BWfBOiX074h~OCd>5zKOO-#_ zwbbtQjtsp65mX}b^%A*(^OS0e`MhVEg@03^j_B{5EC51xY0Ee`Y-I(M;{s)^5S+LQe+XvA~5A4x(<026cCt zUf_zf@}_ICmGOH4At+D8$($u|EsnHN~@GEdFi6q|Y8h?^z z@nxgLrPVOVM_;m3G13K6Nfe{SjYE`lUdG}UWLd;kkUHkiArKqO(jsT6^8&1v;2tan zADLto*7$}L=m`u;A{B@9Ew@zUdEhV?yPsGD*I!+-b%h12TA+(vBG#jwgi+9iGYNg$ z2~bPYD2kKxU2l?Dwc18=KVg3cw5?4 zqHeT%tzgZ8Vkri&YkSl_dvmd8h_lZjKwWDiTiQeV>hg?vcR1~WT1@09@o&GLnJ@Xd zzKe>@8OD-v&34Na6=$zjn!mYiT5~!$D`4LdEKeCrNa2_=SX#b$_W2sB5i8 zS-*=AQ4oboH%fq{9GFXQvY$&wUXru<&{eE2gKL`ma}Tzd;Fz8?BB&!9^kPivx> zNd5f~j;l)YNL=;^{z2Nz0)LjJLu{zr_Lw>JG4T*^)544B$%aVlnJfZab}T#^`Uxc@ z*8}^)3s)oVR4mehLp55Lx~Q8%a&l-Lg4T9wvS`a@{V{@_b% z%E{z;#697x@LSK{=YJvP5aS+GXl%VIyPhq8m$_kqnS$jmANLTMe~4HzxsWtz8~@%t zNxWuxTjy5Ryhhq`p2%wLuh4ux`U$?NRXg9HwTA#ZfJNFvo&2nG6xjvU9bSbuA44XW4~fgj&BiP-CM znZC$e_R(5W2)oD<-bfo%#t@8M*5o~LfeAI1dE$0GpKs?4gOjYS$^{>6Tg@Zj{>f>ZDib)nt)@k_DRqJUhA9CfrAuTzl8N0>V(GQkv)6T+v3}!F zxCH|mWwF{D&EsV*{kL8m!)b!%>?&0m7$Pe@TG8!x)L(+wSR2l?8c0abt*@fIemJ;F zpnUvrntupqDqIT`lGo~fxr_)q6Dfo~Aq~Fb!{PSv*_N=HNrr%#W$Y@LP>Z#Us5d7X;zwbtxxFpErdw^xlJIzO>GU^{fEA z^#P9Qg>OKP;cYbLERUQZ@#1R=oBEJ;#b`xi=YLjvE=Ce z$&fd>FX{Fa-4B0Gm50iKC#c^FKm+SgWG!en#9fese;j5y^U?N&R-SNO@Yg$Xt=>in zn8#2nW>?fEU#hZlVXVVh*p;nd(f(PuYR&tADw$Q>gsm=Ng#q;w(7k2tTs-`i)cII_ zAAd-46P=@2`|?ATeI`oD`9SkLcYb|>AB4aA0Fh_6)`Qz8(QJ5~IY8b^SMR$|pj>!> z#8+&zxIaMTX@Rc#n}h5GZpIOF7o6XU;4jkj0tRDt~Ysj13(o9&;8 zycq4I_Ua~ubsQ6Y!}1J|bEcpUELxEh(0+xH2vpM*dbDQ!KJHCQPR8u;RH~H3(|@d{ ziw-lQYLrXN-=#Jc9e-LzVy)Hwsu(mS*-#OFr-$JIFqr< z^N^2MTHjou7*>`0jO(}%drX_7J7kMAn@S%sXkG>eMAHPoCVN7-E)Q5PBb>^0wt%a% zf49MXZ}j3k#hyGsUm7CUTAKia{{@rN=gvDhfV!jQ5F_KlodfJh@7S;5HGjI`J)hkn z`rp$6N%o>hx_o|@mLJz^0Y8rY`{{}Sf{eWg^eK4?k zE=f%W+MA^kX`y{dmufpG9)4SrR!}ak@ZSmvp*1S7*w+Z1czpS0GZxnNu9nqJ%4@-U>h`dk+Wc?xylhD zZxdJYMpWy}k`mE*J(mZyzggQ8R$fV=P2AHszn@4=yd+qsr*GaIe|Lj5dnz`&uY=zX zSnbgoBEykT>sbyIHGiQmQ)2G$4ACaw*Z8F~0N*hx3NunCVp!D9^50m=Bj^%SX2f|+ zjObb~W2C^N6esWtRHY=02kB~VOLmRctxrJj;9;_J7B?8_L+NyDE%!4qi9UydQ#W-a zQyRqV&V65}Gf8f-4{k;0t9#m~9UJ$sF0QjT0q{4-Wz69YYkwB2P6|)n>glKBGI?4e ze~iswk3Yh-*Ll?;DV`?u+_gsPjq=F(3KETSMx|L;lR+-XamfB_Aka*=31_zt()$FA zlQ(MJZM$Jj-ZW_{z_=kzdqYcZ!BxvSFl0kDk0Ih_GKiYoH(%H({cZK97Yb!4^klI+@rENI$Ty?M|&L6 zA5ibXL}LAjI_)=L+ajUuI4s*O3EH_o+FwfqXU$}{r(Ea42=JqxK?91`ZEe~$%+bYZ zl^242D0qRh$^ZUmZ2~^RB{1gNVWU+2Q-`5zkl*Ss4YV>ggyl_Y4Q+3#thtK zt#y-e37rY}E9Mg_5VUP*Vc*xoZ|icCe=C)<@2Jx|O^?;-s<@ziW zk&RoAmU+F+sx)?{IMnu)*gMqM6Yt6~AaIaGm(AT}SbOJ4-$_3Di-ZQG0`Vdb6+8PH za_xG?lYhTp-!}=pHwag9zQ^~51TfgWGby^$Ke-a|MC1nOR(5q=VjU4Q4z}gMyJoe{ z#%>c5^to!QJChTWR8!7t{{+6L!eR4Q7y?A&bl zNji|r#qIsJZ0s3y(HTK)ZI`gJ{$L6N$L2?IY=7{cPpjtEo=0X)2qAK&!N)!8XZFwbty;)9eVoLyWzdv|)3v;m?#mHkg|u$xGwV^^je zqigWH*6K5$BBBZ9Tv6HGZq`2*a7?a3vQ|!5Kjr*L2|U~5p6x|o6*>3e&gqNuV=V*L z=YNzyStS5uOCxEv> z(aG&`Pp3-6C1a&ZOs#I;Z{2#7lSdIe9`LNM92V63|M+5N|KBM#g149danfX;CUpTk zfxVC8=(}P0%Cs0&jZDvcjl#sg{Ur!*A^cGmUb=t2V`&4#uXmd?ee)d6?e;q&doSo& z(nZTeBmVkr4d`qB0)3mPO?c0D_#&-WC~nC&2YhYm_d$_d-K(5GT#r3ZJ>paLl|J!f zK1%(N-bZQs2^dnB>haj4VzgpTFWNnp7F{yCF9uwn7$6|)c#W$2AQ~O5{$gBqg>Y+>;A8!*ujDTEa95K zianrURb)3w9R9Vny~?%-90bGr;dU=T2avSL*yFh1Yq2jL}w(M)Ujr{z70ZCwwPB4eGcVh-pAMrU)ry0>26+AbQW=V#=($1fg!m9zgMy;gs^;e9zez?ySORJ zDu4eDx?dl?i(8hg%=h33)2P;w3V}M&_3nK~720*m55j|Nz zYvr2j%JV$CHd449UxWaoT*dVRS3Ue1M^N5fgP9g6NvA)Zz4L!bh{8%?`u~}af&r7P zU6bi2fW-Y^hy2-qH0E&$nbNq34>5!6`PET-u^ZTqgKU{7F}$bpz6p+Fl6Z5pa1Jj> z=)JN4LxIvZ@+J%zBrK420QtpGPmuQ=?Vjl|#rt&UP3huy*VKJYp+*8wf6PEhJwLJs z_ui`$f?a#MAf11(U<+cqB>o2QBv*zz<8fqOM1Sbz5N}HknP z1>gN~TK?ymt*`ATuzrV?0TDR9&WpLqS=bvqVd?)veB*w%it5&g3}Oxi((0k9lKdAv`Jw4?(_=-A? zwqjbpIu|F-q*mPptEN{!LGX?j6BwuLomW56gB89ulaSJ zXUA*a`7C=r^0zVWAMtH}yobJq8Krx8fv?oaxq^X5>c{ZADD5Z7h|ywQEDL+$w9 z%f^5H=Zr*bPFD654HosKHe6$H{1AS$G6cMIWvV!W|4wj@10$>ljACJ;AXP-Yh!ffryqNFzq$7bo`DNtv{GI@E^iEoejN}838&SXbR47g(5}uUX~kBGl`+bFKf2r&B1^E zOOxPYSx+!eAUg02g6wpi0UCVg=&_e19m(&cLd*d}IbbsDLoO<_%o_*y#H#B>S(!wKmMXdNVn=s1w>N!dkw^@7 zWomJvopnm(JN?7uzk4^EJU@N+9IyO&_zTis)e^WZY*?8-e|P$PHhFjX@+^OO!66c- zM7anTG7HV&@f^;-Lv&VtThrdLhF1^b@$$tvi#it^ARO8VIW57A0ZI-gjdPry35a*v zHbR4v*+rf(sA%8Flm~ONIYI>7o^zEnqOrfjo#tEW1nS{UOG;}+F!)Z2rC{vQk1Hy_ z>C2U95jB>p-eZa6;4)=SS)B!tV7_ zJO`~s#s;xDRFS9!aMb$6BFijIVF{TtQl!pc~u@tI{oT>{(Yjd5j3{_!Z>v*L zbhbR`$P`HbEKw=UW)_;p)>cw~jA(yxb$|P%C)I=lPnRfY>{7>*n2)bG{xzRTtJOhX&fU*w%4Pq$)GV~55t)P{8iqKjSqPw#egC&hiv!J1@9+*?Pn1{cG0YyX|e z)KySyWPt21jXf0S)%~%|_3Hvf2oiS7?#*PXgR<@s&C7oUo>9p*^($s36@wF?`Hb&oY!xd9~fVMR0lV$anl_9Z|3OIyeG9%YO0D01U$LOpTH z%l)Zid6hNV4D3IomcOD6OvyN^`MTX`FI>nW4|Pi(F7n|wD>LDj`gmQ(thqdc} zTRD~|>wH}!;i*fow!8gG>{Ni6SJ~F?11T=-g$rz-z>O7lI7fP&Nx{Y0J>gHD16*`4Gye;X5CHbYpO$;=d0=E>n8w8ht@54?+G6f89_R z&HGrkg`L6(<9tLk`z{9-GT2py_#r2bi<5tK#NHSsfONhY2b2`0>Tp8f%CmTRdp5q= z0-q-~?HBUQHu^nalfgG23VC3W>2XCSFU>U**%j2l-_AD+dkkaoonW=FMqEMT;Fdi6 zYZJ=0W|Moq#3~n#N_sAfhu@Z5&nO|SmAgRDDx&p%HhJAP`~ZzT4OLm)ZEwF2hy;HH z*|uZEu2ypEg+C*`#yphkmdP2(ItBLY#lr4u2cna;1*2>?m22tP;;(5H(uL#WxCR5* z+P)2YW&)yiCd26$$!+Tn=xK8>A7cI_yU6n3Pk61{hrdFGfIw$XM3$fsLlko%XsxZt zRf)lyRZ^E+koz{)$U3HguAbzVB|v{Aa)3nLdO^vf3X`s6?Cqjg5aHSC2o$=gLcx|^ zYv{bn7b6k?&|kn2SQ{|WBSw!ZqZH5Fiu>7aJ9skD;) znJZRzY*Eh9+WNbaH;KA=@``GZ;`jESKOi}$9a`#Xkxbs6-?ZxzD~=sQi(Av2u%R>m z0->RqbFbJF#5UWtYbBt^qv%Zj!Sw(`m?itv{-#)xT^Tg({^I6l@)D{2^Ua-|Pj21m zhf|14iA!=<+!p2g{c-=!?izn&tyQX>|NYPHDt?9v(b*wNpo6J^oCt2N8v;kMQDX`g zFb<=ShP16&(;$?6Khs$FjC83EI}D^{H)PIL{IIQ8ug{fBD}HW8d+x9q*WR{LKp+i@ z&nBd8S!COpz_A_o%>|1!BhxME!dJ-a-IS!2D2a}DpSFMab&rJBG|hhwsymi>Nc}DV z^{Syxk4LB+g5x__^#M?d&J>)Q?Ml~H8}X$b?K`M7t*mA8`IY+v%s62kl-j1+yKu5S zOW8L{%hM53M=c$!u-~9>&2<7}3f8y6e*GT39+_}7`<9Nm-(V!KkNdeA@z%K}`(B&L zA6n~scOpVxtX-K|#?*g%xb#u|8uXY=&ffiW{(N$3ohCbS7XXj8UmwG^2KJ98f5cZL z`K^2fe>+P*qW{wvXIC zWM?cgU!(*r^yRbanlYnmVJv)~RdF*7Ls9+)o8)!do~DKJYN(^1q*T-kU#_CIMJ+74~e0p4fzb0fR$+ zBSG^4ki%i=ayowi8l6qA>9p zMLI2ZJjAkHNbM2gH`490uxp;(tM%0EYyIpQ5D5q=6q73wNpxFM+=$DuAg}Zx4S)_@ zC`Z*gKEwq^rau3ayMguYgsVcp*C_WXEZ`y z>>y1?blWN1Zh*pdErB=j=CrBIrQDpKMG=ZG?{^cfB{;$0fLX99ks>Pp=lekJUzo6$W2_D+pK?~y1;f+gKNX6BdgSHl6(c`|)^-va0~cG}3sT-C8%xtWx(ntrKs( zNaa`VbuZ6N(!9*wf)cBwDERMZV7I;cKntCQNc)+;s~3FU%>_LoS{J=R%(O>}lxRKB zezSjj>s|=VLp=*2-Wkv^7cH0ZV~yH1L%FpP&6DZeK|MIBbF@gYeeL)g+0{+ZjaU{? zC}trzJ!)H&Am-jzyU0g`xgvjv?-aCH7f&{b#ji|dB)SfU5I~bo&o1BKAx;q`(NVI_ zcnA%Tv;wFQ>%K%5R)Fc71h3@}fFp2zHXDD@)>{LjzFbo>XrXzAknx!Zboj>2zjsAnhqDweuf@yA<2f;Y1E``E%CLMT|n2b-oE0j&5#Ys}^- z&N?V-pVT+ApqWjvQSmav(k?GxZv|^v6q~<1dvjs8)D0@0vYpYl0=Mh0=c<23 z2PK=liqn&q0MB*7J)gDmptMtWOTpDmXoaek-T$Z0wpRfR3>n{xw&$N=+eEb zm@3n%a@N?ypj2LgYo1|0^v1*&b%k+6`ga%*i!|<-kjeUsPy?Jt!M_1EvaaWl^EMC!2lsAm;dPz%4Qs_;?3wi@# z^JKUa*YGB=yrx+oEoC9;`bcda*e5D5 zxHE1s?>4KrHkH=`%8(wAI}Lv;sl*;A5c^ra*rM2!GTm^Zt9F|*V8d&sIW-|TQUdYX z0aN%qr62HiN4W8fmSfcsUfH1=YIxGUTkB-n=@U9s*`u@!i2u11Zm>KcvWeq!oz-?r z^{){n8%iP;6ec%eK4(Rd$Ll(S4gu;dup+Q6Z}3Z^SfXzH(t&N(HJ5*d&B;%>$Y)3w zRv`7r!sqS=rjG}_ib@m@L$~twZNnIo9vuhF$3C6zsAKWkt;v;!CO64I^f_r=4Dqh) zD;z5EbJ<9)x=Lv?WL`W>XrtpOV?7;_YS7+rqco*si<0i&{%$=T;9#*?l4?R^nYJD_ zqgA)fmASIp(qSIiu~dJ2%lnfU;jc%$#&dbZ8Zq9$bHBM^x;+fkZ1NgIw_+K-9vkI4ot%EG za%*!8+@%C(WjjD9rONKIJb6eDhP)zXsGk=SP8ReaafHsC^J9N4TVJaR>wR3uMK2I| zC;3WqKPf*NV1A;46Cp{an(6RWQt4#h~A z_bjS<)F@{rfPv}n33Rv!wa)2ZHN$+|d;Y)u<fiqI|Ff^EnD$Bg`rZFm-M92Mk|b%~_gBPC6q>5UEarc*CxS^Sv(%FhwW!R*E-;4> zBP2#;kim{%NJ#+$?6vtbK^ucWX(Ot&5C)6hg zW4DtG^f&L(9@#M8)+f1?Zs`>gGP9(!V@NSOplg53#0MArV0w9e+*B^{@EeqpA{Pu> z$Laa2uGOH$W|w0R(0&(AM;oN$ID8{gmgsOYxGI4J_ri1>?E}(5_X_&+&y|(fKOQBG zn9zs1gIT1n;ciY6+Y(7!;96^Z$DEo~28kcG2^}l1C-0}>tif2Dp1tYRK@Be7pGBY2 z>#%>#D7xgo9?*ndPG6f8$eShs4|O24%qu0&xjda-00`;F;yzj+Zv*Gzj8oEYxp)C6 zdd44g&9Pz^)3FQ(IC(fhjkd(wWqOh=@8Ud5_(&RDo`IF<1cqsD5tCLpA0AHlY&2;c zAhN8l)ziub4E^Q02>oyS4@r@F8gZz@`s{z;VYIrV-4(V}f^Ro?FRgDjkZ_3UW&KT6 zm$kK*v2~a}&mHhh3X$R;W@c3E7Uv)7P2wEgsF~yPGaLz}F=t0nb%dG#lS?I2%kZbE zdwi5WR|gymrAHCFtqZn6kQI5!roAoOr-}cF_!+hyDdYchqi`R4r4;j%){pFn$J2j- z#0C;TQ-uF)f9>u5)wV{8kaYz79hxp}PP;MB9(Ubh9N(1q>hW!Kf@*FN?$KBzib~IX zHS8^Nk`UK(^Fh&gME0ce#O{S-MAbWR+PHLU+(3{|8#?RZE!X$$IFpKw@ z1Z=jp!M8~79Mo3n!UJ{idVs|pfsW)hOs0Qx1O$r`d>#finIG*4I&YW5-~Mw*di>iV zQp5{stASfzu2%-^x1=ivEs_vqqCh&|f}|wT^!y!*TJUqc_r3!TW?CjSf3JTd=678t zz#h9DJ*Q-;(K4d_OgbZ5O5p?@Qc$6#rUO-snItwg?0%;%KZ*?mb2Y#<}2{@aEA&B zMs^H`uKsZ(Loy^+t)bCk=pNl4ad4>LlU0{3f2uhsr+=i0?}9XzhEt+=vGk8mTZ4%Ah~Z*DFXs zU;(M>#i%{&`!=To6o`LI2MfT@*-VrBMA{Y+_jF0VO$yB%_n0^wy|d(GfZMJ_lnhuG zCS6IxQp~o%X;TK87cUA$Oqs;)=VJXqzO0b7ea6WhKc3adeIavlB}i^S0_yi{bP6Ni&3O$!#<^e|LEi z+#%HqrvXicss)0FQc&tLP=64YudUXmgaqH=h?^_wN9w328I$A4qosUSt>W1`R4oT@ z5b0%>GXwbYDmH&{1P|-Vke;>CUz`{qV1g@FLL<0fe@^`ntFSHqlUEkWbs-kg$_re0 z;2x+1H1D3{+RS!pay4noQ*2nTbdr>G_wNpf<8+~to3_@kEYrA@iUYqp;ylJ#>>aN7 zcAdWzPx$C_RujWVrvk^TN`ry&&$*s%qU0%3w0k0kMYeyXxO!uccg7RrYNlz|X%-zD zAvRIsCKHA;uX$zcGr<>E8_lLdw1v?^xP}F=piMS$sdxUBFVaBtyq^l0Z zJU9ZHDy`KG|MfWN24hkSlLkzsB?*-*BnJA6nB*wWID)_ipZ@wrtIrtF95A9THP04n95HQ7#g{3yncz zabWZ~FWH}#cmz1?YtKwD1^Vny?0xgnr6fqwH?D@|8+`%)QmZp? zQgi0s*8a%O(d-ZsSwJG7_S1_s>J9{!P&Zr$=sj{bDh!hzS1G91)FB%US%pG@1P!a^PF^>gb191&qPSJuHeS{CPV9fH z&KJq|AD@*YN#n#67l+xT0)&=l3oi1`=OYel^rjiG7$Era(TUK7G?!sE?&46H!)+$gdmcCQVH!<%8?drmj=PGDL zBm-u|o|pMOI>ndv=kJ!xHGRhB4Sj#a4rKwlOlMNo;>Kb>csnC><5JTEDuC+@POMro*4_9+g5s(;B92aeu$EJk3k zks0e~R~g__1IxzRHksWFQ-bqud5en7YGGVKCevIie5W3-j~L*oVQ&?On96@(&f4Ar zP3I|V@4}Y#3|{@ETA{c8Jph`sr2*ixNUm6|IINk96i~$m$swfX?VSw)gkP*`P<4zm zSXQSgJ9(I*w~TLiF%2f;)6?T<3cr~!OS%5U;CJSW%~F9RwJ^Q1IqA)1IZiM1#tUbF%`4$1Qk<*R-gv<0Tv6jc52A zGugmPcCvA{$D52A>?8RSRj={Bg4vAaCR@8rr?pOiQNxAhH*|mevGX70bi*KaZxOTY z!Qbl9D7EL23g?7zuWxkl0TJ>j6wDDRBU$bBS3EJz1-Yfm@Z5ih6dJ~XfZCnsC6fv`c+a%j#`pq%R<6x3k;rZ85BsctThEiXS?QC_4KmrxNX{Cl1D87Ly8ERTyHnuH{wJl&b3`Kbl_6_apufI=xM;KZ%n;aI|t3%4kh0@anuDeRKx0Q9~7e#LDzZ5o2i*IJwxCKj5OCgYN)qs~>Fm58m@_ILSfRyE>2@nH^^T*4T@h(@=HF z#FKW2?(u*Ab#VW()+$7WKWJJ zFRul;y<-aZC@0)Y{SkJ%7Pe zqQ>L8q%(|n zdv2HDmV^tFix7Fp6!5#fVlKo_MVTkjCqbtSgI_k^r*;VqYWQ9Nrh7#5__|KZl3C=F zFr0t>-L-QT3NVl; zp#RSXH)bIok?NV02D+RgC&Vkue5y|WbPQ%PRBuM6v193q)Bd|E@4oLyKW4Pe)zu#R z1n@VOdLiB>rP0mp%>a9Nn`%BSqkAAH*XDmt^$b5TesIZ`f)td|!aPXVPLNVl_78oB z_AZy+Q+u(`@$XWzynu~YC+$wSEY-5RbcHKm@`4QV!CbW4Ng&Rndsu5ZGm5KFGH z-U_DdN7(CHAmD>({Uzi4uU$8RZ&!b3BzT%fPVwS5RqPMBSF>9YE^&3gw~sEq7brs< zI^g%AOFVAszz5v=y~hk8*vP&W#-lQo0PIAlK$=>$D92KKG|B5ZOIP8)+h>nQ^WjMB zN1mJIr?g(Shx#3q29T9)t^DHi7`YL2+NO7LUVEN;57F`QZ}vAxcN7G?4wiqovx?g- zc=I#PNxZ|7N$+tH6!VHbQ&PB2hE-kO6}h~aY?;&*2Mz=Ye}*)IVdN|>cFPO8YoG_- zd(O|*GM2~|%U4>+CipMgTQN*G*Ra?rkaA08q|OUuFMi5SUS(t%7D%Q*e`Y_hbvP1T z556vy_Qjkv)bY4v+L;03^BsQ@Ya{Y|b<@nr-u>j5|KUA#{p)%YMp<`T8H*i?i~-7y z+p_w)>i4nPMO-9Xv@t#?rXTGV@=b#ZqSpqWG$`#PJ+_J}+Gx_H&pVCh@D&L6Z z7zKg(GS!kof6sw(TO&Sq5hEBkfor&yO1Kw@{Ahm-n_*O9CAbD_ zBn|iF0`#!!j8j-(m->Vq;CM-u^~0&yr#rNn;LHBL9db(c=+dVYrESaTjFx19XvwJ< z29^?R@agpU`*pUdjgztI4RdD{Z|gmm{0vUd-XFIIgp;u|Nl7`VDgi!z{qpKB|M^b_ zNSq5RPe(wZC_Q%Y-gJL5xcJu$+m**EgT_2EVxP5F82mSNi)OsDUm10xC`;Lr;=Bdx zF_}(|fmTXi7jjp)rlXXXt}N1UK-ySy{{6M& zxHhlIQgp%>+O>ZaSSz(D@>S)i;8mA~>;78fg1#~|UFcj>4SEE`!F z2^;(P0%|!L)yL6b>}XE7%?MUF9h)`c(GM{}tSB&i0^5K2JGy(Quo~a9hXy%gpB{d; zZz;69IW;_Z7jc%jm)x=!Tx;QA4bCZC#9aAtBGtNq^zYp%El+x;Uaboup#<1rQaCt_ zR*2B=PuozOf1%=ji-`;0-lVd37PnOp&C z(}<>2fNb)5h88!^DV;jMMLdU<>&jgnx)Yu0AA*0=Xo!IfgVgQ}=xH|lEMHvdpold4 z4{MQbL1d8yF=9o$lrP zEA_2<{G+M!>+j>p|{B$SHXf^i`?vUkV{d7oZK0|l==?$7}2l{*}J zM;d>-P}I>++)kQxDvi0Ig|-k`O?ZCnl~FcOlo`f24GJyMLiVDNm9M3Zl+jBjD;_Cx zzvsISIubiX(J^oO_7XSvI3^>+xxxC@g$Ic|8UtIN{x)H<2SIc(;>NIPcmyL;VV-Nt z->{1?2lncundaVJV%tKR>n$7B;O)BQ>->M)Hte>Ldezt<8YHwv625=oB%;Mc)>F1_ z#t3cES3?7xiYQ}#{Kwh}@N2&MBT@aTG4}$N%6>HPG>Avpx0eK{xVsB9g93D81H`@o z_1t~1^DtVCI=fJ{x&V2z2ItZ|)j@9$PM#`}1wX*gzlfi%9%;Wpdd_}ZB&|Sv--D_7c zUfsF1`QFt?tBnTJ^LKy=mlS%znimYtcR-9Q3tSB=)2L!8X*75@o}yJx<~;q69(Wez zxGx^6{`b`V?dtmlFL!rrU&VX8USEF{*;BCu))*oX;VoKaz-9?P1Ef$!=`5$)F02A} zK5@toz88bv$K1Vej>c;ZUjlSYnpBd=Xfhcpj)Z89cX15|MDtPuYBHpbuo(@Ko2tN6 z(N}dH|5R+9PI+9P4xu@Hu`zswF&<-|Av}Pls^sy1Y*i4n!@1j)A0(R6s9t}>ibe7e zKmPmU|8&F1=T9Gp@~plWMlu9@)F7PzK6fc;Zv1bCnbAIx92F~bi*z)r!TW}EyyA64 z=IG~WQ0X6#altTCYw;-$)xs#5X6US1jW`rVZ){Z3(i*r5`c!`FZ0w_>JYDtU&qg;~ z2~Fkv>wel%7Y4r$qqhFFjzNE^F%0~haI^{#ay8?hS*@$!8g}|Q_m{0u$Oj3hcgcH= zB0WiQ1(sLLI7@Qb6!0PAyc6cVwh$i<%M@wQjoD<@q(POKlh1e_if)9DgMr*siG1sS zt=WZNsi?l%+i&T{!}e~#&vL__%p*V3=y&S{!)@%}55$m7AQ%}`iTQuSNi-FFVHmR( zdky*S+8mdr;BCPTXIj&y%(!2WSe-bT9w&}?`WH2C<78~JiC}@-^wzZ!>G7?Pj ze+io8F=u*W91|qs$X+ypoGZu%}U-r_i5OHN%#+D&v@L}KI+?aYPMpWEHlUJ;_mh9|+s2GDq_*`PbNm!J z%W0E)tl6m7Lg}^!CLD{MiOWVJ+i9OUVCcsj!T5i7)t(v}kVmb+r7-$LUVZu3 z{o#$KT>CXc;cZ8_&*m%o1p}|>Jj3@mlB!9Ypg1z)2!znF-gSaMS*=&jZZ*3pd_L7( zMG8;q!amW(R=FsB1N{}EdsT!!sR*cOIH^{KufAR8SX_R`VG5@@&Dw)I1c)_vNISS_ZN}A&%Z;H>vLe zd1$&o=q$bFDqMA9;O%BrS3-&&HjP9YMq^NAAA^4cFprMKAo4qA7L%&KiiJJmC^4`rRXX2~hjF@W485j8wjk z(@UO=-;H0Lb!Z124_GB|G1&x}4~>ZquE0zs079L(>X5mLH<2BNV7>SIv5t77(^4iW z*4ck_O_Px%?CXCnO1kunDiA(_uql^yGV0LaQ0r?$@5DnA5qoN)$!+TD9L}N2meJX{ zdDs3o)qcIsU3(%Is7_%na_tvSIH zH`rTeu)+n}c;N5l0p`qcd*e*io~A`|t$+e_Itm9vWu>Ab!d)%{;268{w0Q<{FxHyVD9ui;hT;|m0PKc?47flrQ~4IJUSq)iW%CM16# zbtN^u#VRW@4a#xOc){euoE7yV`hcoKfm0vB3jxc6XRH)FgMq~7*~LPFM)cdUQuN57 zqx8aw;Td_BuE4pnvoDYT`=HLSyU9A{oHMTF1**bUoHFLGIqL=2=i2&w_!6t`bUdrn&&fj&XEt9Kp|Ra1ex1(d%Yw-l zJn;kj`<45BJez^C5k$b|6YTGSx&i1iwqS_)g!8#o7J?)LcJ<|aNnji#_bcOlc7Km< z1n^WACF-?b6(z0%sI~ko)sVpBWzV$+qjFYYZ4k*UmsIbb`3dIY?9+4@P0oKV>HoRh zW#`}r)9HuFFrxo^GZdbPoe6!GprGq(yN9X%HzkxA>xCsr1XUJBbJ#mV3hTBgAScEgSA2!XKza^HvoT44kM8GEyGPl z9Gwj!TiPF7Gt}|m$6?qI7iaNxjyjlbf49zbviEwu*(_F!Y%g#DmAb9@&yW95t|iCx z(a{iw`TLLOrzijPU&4kGhc&--wJbRbuKZOIaPLtj&bF#XzM?_;!|e~zOfl&gcH8u!_S>m8dek9LJ;uwF_cN#R)@|`cKRt$d(#*^uvjyu!~Z?Q)} zh){5)(J{=lA$sEnyQ+7u;x8vg>U>!{RQ-3#p;CQktOSohKt~eWrl;2>kzC5`+i$!f5TG6v z)eMz~fkRb*B2j-8OH$}c%l;<&nzz6{Ug@sDmq7QWpV}4L`=!HTDGfrr=Qdl?{lAwP{yo_mt3M%O%=sVtHDQwwlUY6Zm01Jj^anbZIfHl zLVJqRs*IT?bAOF!^7y~jA? zIB;a9-N6bk(y~5O*#+{D>w{H&_{=G42QNr%cd$O(kH{!Bif~AD79+DC!-I&(N$r(^I#_vc`YggWDBnkrXFBury7l*zwlrNG^ z3n+hqZ_%z01cxcFBxR|B@~WwQU65r=cb?ZuF?TfwiWtqAl`_H+pVZm9r!9i1FX1UJ zHwwmAmi0<6L|1dUta|eB{KP)fFLS~-W&@+sFRJ%q-H>;hRUp8kJJNbBXg>WyFCTwa z#2<0>W;e*dB2#0_9Gsn45nINs|MB=so`QdGc^MY>w`4BwGJ0rxXZ4|GdSgqL))|YB zhp&!30$+JW=A5zUGRC%y|5cf$*2~-@`Av3RrY9yls$bUYoNl^#1jI4sa?h64mPwt* zkAGk4y(@8@MwokDl7c@N=c%uW*> zsxn}#TjoTy807MP@tn$%c0;^2g<5~wVR|+8wZc7B&$dhqGSF+3>Xe3cSl?`Cte~mW zLLl_YH&1lRKup%|NW&<#yYtXHp@v$)WqK&Q${UB5Cz`83^&k&+v7!4V*wsTlWk|ei zD#uzFdNcwuCWp~I9rWcrvmCK27OrKmT*oUx>(li7p}|p<;(GAQmGsBE0^fi3GQP`h zG3kP0ry^$TVQ2_ZNX14+9BdtS3%d~MA{T~MURmQBaRdL^K;E+ALJI20?cAkQ=?`fc zvOcw1k~H=OF;2$WL|LHd=Tna+`HH(EtDr9y>1_G z%PN;TcIwl!b%?}Y|GuBhU;n;SDzee*#crv= zb8V@T^iXn>Ov6(u%rI@&-j5BN70wt5TG{wjRg{_a6tmw1p-;yoh^s6@2sYQ@aDmqS zvWGA~G4Ir+;u#68=hg40D8h)c3rdsn}1(F@pL^6%RQ)xsS5sFdjQqMKy5(at4E`e9rj>fU;uy2sa zkIRyd#L4)b7sPPH@?5ScD0!Ys&uilcHatT4<1H$C#uKtfZym%2RR}aec}k)s#-mC2 z`Nm+5l3^zRHfd@KD%OA8j*YqHZ2;lxpl&L}GaJ~Xo%#8;6NRg49c1Ybk>V>WQPd1) zR+3dQBiqC_oUFJlHl|Rr3l-Zu-^;bDLGf!eSp7g|!w+7B7~biac3hc%Kn3epFpFiN z@fvKY#cCeB5!3Z*3;Q5#NM^e1V@|{ehMivXegQH8!9JK=jxB!xiDzU2R7O$nz*Qkh zTO)xsfJ2{Ae%B+t4=^$bvUW^g`@imsM5Ps@rUEa^2>!cGhIlbv?MzqN2XH{&*(iEQ3M4moyDB3>1DVYf9L+vdd1#I|kQHYd&^w(J<9_@LFGo-*+nuukhQx22oy}hi z5N#8l=MdT8cD~g%ECGQ?+ukM}Lg#PBxs7&q@y}+iQ(7tQFd;pEXu{WLqK0fhhDrYstH)omeaWx4023pN_1R0drq z?kRtIiB}3MJd(Z|omtp|1XZyX$L7z7@2#X1{vSjup>jIYh>%giX zZsv$=oDTtBrpXO8#_H)|TMb7LcA02~>*HL+Ml-T0i&r7xv8Q~Q%oqXTM5owru980h z>12sNwP-E^xbR$2ov5r1N0O?=NSPEJSv!BP4c7un)e?@ilA7UA3$YQf{yD4BhG-ES zkvWXEjFQnTeA)8r$i6O@K4!k&4pLPNry9E-Job;{y3SdhEXtHh%9sP7aVBTL>FCiD zYe}2*!my#vC30UakjiJ!#iH7Fv48viCVi&pf=-gix#h(8NIRl-){Qgp*Q?*7_!Ftz zXqpHB5qnZm*sN~z8bIw3r7wt&O-quV7sYP$!y{Jqw!4qE!AUJtoHGVT)8VvG`@QbV zFKba>eEef%BM^){)w}`%bYe$QrE)Krkj4IYdz3QMxZ|WY4HnO5#tOE*6=ZXq8W3cA zu1N0{=oo{z=2~wRl@KWXcvdgKII`NTu#f^^;m+1mI)7N-)bmq&&2q$5Ip9vu`PJCn z$^?{!m);>h=9%xQU~h&YOs)E-Z0Hh|^z-j#rPg_Rue4{E3Lp7|k`Rc_+D0c@5+ZYW zrm1L7S%OkK+=zg&Nneh|nf#6zqxvP1hh%x*vWm&Wswei%M%qq z`i8~{Txav*4{wvl^wke?_G26>s}OrU7Flcq<`Q_qa%pvW?+^o z@ARdC4fUn8JE0Z$6rLMvp4w1(b&#y0R*pjCZ68LT7!+o)_}9r!y8ft@bVtm=EP_Dd`g)#lueb@QAT*4V3&X zO&Tf((to0^KRjvz!qgs?{$9T#;OZrZi@nKp(wySNPIp&2Yg&$XEguF#BNz|@Sj+7= zP8R4t`myZ}Jfa$owSToz=JZpY_G?cHXli3+xt*6^I}~nw#0$NJOS_ zx=gA6Ep>Mhv_xJEJWhSM>1v&WeP6x^^+f6V8*BRex4{T9m%k375zuMsrM5EUcn`Qc zPLgq<`AJTZ47wBP>WW$qHicLZI2$}%ui!S!Yi_ix8D4VZfo;Yewxc=6?U;!kTz$*z zDWa#)E(8`QF5E7)iuSctNcklWQ-sI4-Z55q@_Td*cT+3FmMxlp;twJ@8+wSB6UwBB z|IUs&-#yXGA=G>QnBcG0G7ro?!^15%1}0!?g+`bO!}9pV6Z%D-@^LByB%3@SrB}jQ zOGKyE#WeRTvyyKSFA2Eq$N010O;rZDw71c)g(MI`^MY{7%G_`ZhSH9P*7264hC3I; zrhXP8%(FhP5W$^C{O07VG6UP3lSNO{+ni^S-o-mGW4*8DG`kxBQ*t0br!cvg7r8R? zC7l;sBix$RuZg4Tw;ebFxUIcr-76r&-x&~M&|X%Sdf2wY-f?{9;!$a@%}z3|n-&Rf z{E{sV(glMf_qm3J9vhnH7GoHmIWO@DtcSMF39^t|ZdAzOQrdcdf!7%8NVkvNF|4Y> zw^)JiD#GDF@)qq2rMS24SWwzX@7H@%S}CGH(|UBTm6Dy#=N-xcJW+Osef{i)I+qTF zh~j zv5tba-~SP}h4DZR5HY)$*!P>@Xp%j*L$j(+;6&*L1H(&xK#2ucjLdm+WUjLq6;uV^ zr)DHQRLOjtSISLZHk>1;e;1@Btu8vc^8E@9QBgToM!wywy-e@7@pao`DcPIYnDLDP zMG-I=$%Z%d0h z5zAxY3zGo}CUgvgn=wZ(d_=Sp!Ut9wXC@A3nZS+^h+nio@Cc9$k>S-McZ)Rn-Ehi1M1<}p$hi*P}f&~WLU<|usBl)qIajV6; zw@h9=nqeg&)P@lx|J(@ajme@U5(>gVv6S8>3UcLhN0ra9e`n(f{r%GtDWIZ3UD$shrYz zI<&C@a;r+^C{t}vj%cecO~@?$%xLT_HK^$9XyARoJ%MCa`^etq&)(XYQH{Og^7ZatCXjb^z$lNTXp4fY>8qc{69FCO&kY<2(!90U z;gdeE=ArP(3{Vr~@6S8d`NIAlgPVQQYm~?i<18s1yON?E5SyTv_1nQ`JiF^yL57xq zA^hCaawDu+{Nw5(LU+y=_kzqPn85Ls1HZ~=M+NmhXtsadf08~e=e?BGAijZtU7cZICF~ps3a?rmO+Npm zey>frcy|W&eeW($0W*nVNTO7(=6!lrhs<;@%Xc%Id0B@*Xp({8CMuQ68sz-|-C@pl zBO1GacV#soZpPJMlsvRrgWLq9F4G4r9=G(gs+B*n&6Hy*CGXhKM2I1@&0!9Q`{8y?OBXi4}@QWwu`+ zepF)5;hHJqn4XIr1S*4+bqnX$9~B<^ze|Wx(^5weaFwfqa-1)u%^rdu*d9xHg-^H7 zVW!sjj`HqJEAoG6NIcp3!-cW{pxa>f5f@;|kK~u8Ga}LA2x!Oa+IClU%=Wh0=}ytH zjP(t;*UE8)*T4T16WUUc8=W(0m|(L_%~PF1u0NM>Jl9XAQDjekM%T>9MsA(m0BS%)<2qPpQSIWE7WU@OGDsr#!a$G?@w-+RUXO)Dz^FsvKsJflguHG4R# zVq&QieOT_yx&a%uTu+icd@>h#>YdEW|9VHB5VTi|vAdwINf;1_0V5l@(}Q@`34vKR?J-JCK5#A?kgejBY?klgX>!YmR@QU-WJgX;;qi<_v zymXmguC5;&i#Ie`{7<032k>-90tSur+>k9MNT+kB^_+q5IZ#`G2vFCxQhufJWDVH= zTo4rBIher#Mcy?${rb8T{5bytSCR#XzyJY(fdL`bl+p7|%^3x&1pkJq@?&5U{{vFS zzy|*VTJ*=k+CcvY;ZB0>{ujMZfmQw&Rm^}zfFl0qB$=hJO{X9rAb`|87jW!U%{j2w z|Jk2DS}7p}2Lj@s3hD+<1u%DDuyV7v+tT%M-QYm`68rb)>##zPGIyH+{?l6cIf0Ky?jE*HMj>!A(^X@H)>H?ecvp3bm z?T~qo-7sJ_no@qEGTzx)US%ju(q~i#ye1Dr0-B8GyVt%G;UEjLY1J2ZA@_`hB=-Dh z&tuuFk67J>m13s$Fu-j*ZH>%Aqqcy5zyU$!BHk$(vH3Bjsw<&}^CWX2lM7Xtyl8HA z0StZ=@96e4$vVB^M*qg|2C8nQJUB~Kw`u})P>?Qy6MIk>-E7V(TkxN3X&?YqD&l}Z zp?@$$v**<@xCeZN?gO8ZxaW&_=bZEhOCr3pd~)m8}QjpI|OIY1G^nMun52= z4h-US3~Jefi{e$;!Oa_KuWNhQ`qV!SG55{4yB3QtV3P~9uMHYmk=tT`Ry?+GSDQuU zHKzY<pVChO( z+Sn5h#Jf?~DRuj;wJJy*I1i_~!e7ZBgp)3-4v|))-G`Kk<%4EIPN` z#+J6lvRhr{Lkr!Mf|t4*=jmL9dCgsGwE>u%p*r60K~s`{oe$bF)KBMbb+24J+6J69 zqn4g;PhH`zLkMK&&F=U|r>%?}q7n3pzwQNkTwHq$DT&Lp?4In+U)l^=k&1H!_jZhX>C&AVs3P>t-!2=$8S&N%C8v8+ z?GSX~9YZ!)W_izX;W9@=3a&OnaZN!k;DJtLv6{WhgMvU-oS705R-J44gKrD2BA zg&AT>^@TK-+j(>pwv>8UBr@5kyaQCgq!Eq!XA$O@+`|ttB=`<2pyHx@V`|Awf)LxZ zL;tL_U2{7F>yD^Aa?J=9Tz+^QYkSOgjvh{CU}1Y#mPQyyU1fEE59lmj==r5&|h;Gk1w|Y7f)oM=4fI_vZ;c>2EeTc2jUId*eBb%Wnr<04O<2yMU46XbY~f z89NW4;eyGlZkNOCk{?fy8K31jg>^hymem@rSmYYDr<(jmOU6QL1rUM7gau`fD^s(g z`5GQ1^vO!EGpUgtZ;H3EXj?TWG^zNfkLWxbrww>*om{;6u<1|6_~j?+1qsP*4F#H? zVv2d7cTJz^YmY=W<0_z%eC^at-wGZT64MLps{l8;>COXr;o0Q1*YCjNW1`WrHWg)H z8m<2%Tx`2uU^%F52gDjAR@8CuS){%d8n9FLajvOAx!13_T<=-BtHR<@ez--coK zBg?_{V7SZdiVT-|5AeN%2bg;Y3FYQsbGmU?7jcndx%$-Ja1$*zOIoa11PR=nq&}D4 zo--QFffF(Q^6k4GfQlZUYEuz2?H?5*ND@_hRnHhH-$tkr0F~olxi3s+*UZ-Hx>j#` zj5b_6A~;P2y6GH3xFAfBJ=D~is4nhC>--Zsl&3TgXU0~Tx4r=H&1X{PVyr5bq2xac zY{g6euAgF+NiFoe)+k@gjjNVwLp13FjwK_Z7e{H;Na9ceD=s*{5+?hEH+vq)oTcwbz+H*+Dvc;iCt1-wv>;=RE5Htmv|AiR;Q2M z8+oqH!4>1$_v5sqV9k!!)?F@=2JN}|Yli1scxhNxvsG-hGGS~63und#=7o8I9FxF(3 zK*`|i_XAoAQMjmHl(=49>yS=qZu?m+iRMu2jgAts&J zqd;Vhsgo$nR~|32?O;kjP(%RV$lthYVU)23(6VaiH12^vIY!S&&cCf---e#yc9|=H z(Nf&N@WueqqWMqXD)pr3SDsGR-KzBDzk_2A@>!b!A+l+SWcKK;Kydq1PUjyWqGV-W zeOfg6jYl7U%HMC?iPOM3wK@>hmMfj-Y5lKsO*LDO!iwxXLb~X7*PCkeOblz>BCc9; z0IAu=Ep776bjazo#76~-)s08ugUR~`Qgj|8)qg`YGJfI;ov>e2n;arzT9S@g=teYy z*6QS;Q^0Q)at0QKn`c2b%GSC^AsO;>^x!cHw#4cNFP~`c=`_HqLp%;g2RmGjb&!F) zzP~W`)M$L(9!*rlU0i+~AX!^u*oI7$14c#%OJ~?V4O(*-%(;6#o>aqXx_zyyM|=7h z`YSq~KAV}S$aTAZ!*rOq=Q&`T5=8BLo5|mVi(o;jmb#X$B10<%Fm+NZJraHX%Jg)v z19P0L&hjint-=4o{=cMFx=dp26AT2z6BYyn`gid4r!e`Y;a(FUh+ZGA>c5nsW5zhfz5$-vf(D@4v0J#n!>V4 zLrG|u36Td_TjvOV!0y#)68AjwA%{pT(SWo=Za$A6{`(hwu{|G7FHhIl!`p+A+n@g+fYvtu06zs19pNZ(rsDXyGPo#(IqNxe zqnnr_4J0X8m0x(Snumbw#8(~}^p6?%O%Hu!|e649*@RG@5 zFhzt8cINuH)}~AXGk1qQF8?78+cK4p`CG}VQtb;7XExRsHyX2ld7Qr$C!~Zdu(vmlNE*`SR%6yNuH~V~z11}xL2`T?tmOUn4Iu}cx_mw6 zkJ+la1j;Fh2YGt*s+bUc>Wp+kb3>LQt*U%&J?%fHPIy7k1<=M)pQYS`*RW{=NtDK1 z00dbJnmh~GSHk>2HfDLZUoQxpL6GoC;XqBbcCl{&R;5Z}ZetK* zg*IcUN`if0Uo$4McHHb)4TGx}URl|8Wsw>lbiOQ!$?{i-nCuu75y?#xkQy{*Yjf8| zHA$0JV^fq`omTa~jKTv=N>C;&IVzyj0A(mHQ@O>{8+JsiAl9i$!`K{e;M>|4{Rp92aFKN;2Jp^KyS6{;b8%njfZ^ZD z$wDHZX42C}Y?T5A8cny=X}z%-8@zbzDzIE}Z5U3dli)q+!lq4r?5!=g6YDq;sCaR` zN4Xg(8@RP>v-^{0^{J>%HV6oMNmx^Nos;xXa0M&!VOcY257!yAq2;HVU*WMR9D1WlUY#*cyDRLo)vc?yyBw!}{bGo=K0O zeCAt8TM2s)_C{&$E90ykkE`pmT`<k0ij)C{&PZcv--MVM*)llA8}@`;oZG-jdI^c_QMq{R)Fj!?T6nX7IbrQ28x8Iw)OGg`+L_@i^N*~q)!UO}ijdXRAN9wSR6K#Elotef zy)d~K+lm*}PE}Uw?laUs{*du{?LE38F!3bg^l5BURJ(y{0T{D=|GFG(nPRS92jUbo|Z zTv}1y8xc(i1Zg2@XKtZz$@K2(6nxki``1gutobO#rnDNKD<(F0x35dJS*!j`lR z$#vW9iFRF6r3>Mj<=1WA-YIw0$07{;mI@Z3) zH0IsDX%%9-wKj2>SO{~L6$#B#%6q=Hp`)GP-^;5F02%Tq62qfj1KJo}Vr`JBfrZ=3L;*=s^=)Xq|TYR4P?B#=H z1*VV`!oP&CTr-9kO-iCq0F85Ll-LidpAfUN4NKkxNm6xUR|7+n>QZ7(p6U1fW_$Hnao;#)!2D{nX~w zP_6Hhebkm|8uIcKQy8Wt(jwXZTE|h9C?wFfHOWXiOS7 z?@kzY$<(ek<8?B%*=I#L6zSN7yP=%MY7B~tY*r=}A(z)mw)=?(1j@v7vgDDPZlP`>S2v5U`R5YeX;WH2`f0ro^`!}0`*ER zy!+AuZ%)O=BlAxt_k}3KhChmp*{J+BSIDUvb8+oAbMN_=DK zRLZ1(HK%u*q0qYx_OB`0 zY65meCZ7}R{=3|^$*W!-BkflZX2tqJju{!;g%NuEn1&m1KfL$dYExwjQS?1Ed6>czC$^WWQ0si5bUi=XgNjC2!>suvDt@`)mswqY<*iB2942lx5G%Zh$QTc ziC}z?RTAUpUees@KRwkU5*WC3EADN#{3mR(7XWb`SLsVt3l0R9n680gs~e2JyU*wu zqS+)-AG6a8UU}*%0;K$qpfMy9v7-W^@;l5qs_%xE5faqDSNJWel|nw=8aJ|pj2j`F z6s_xO410tH7q0`+&z>?y#)Pk5ascnev1RA}fZ4m)x415>A|H{j{3narLBYR0Kkl)} z^#Da}*Vjb3JJ&=3GuK4#?Va^S#}_WyK`n5`1Kck}IIox@QClaN|1uTgJp`A(f;Ymu z$68lHzwiop)dDV2j(F^9rz-h>0HX9_d#6=(u~2!Bp<;I^<7$v_C*jFzq$VjiP5;VU znDrx$R84dKQB@F0?p+MOgD1sd9@_g3KmZ&RNhNw`(fC9M3;3X$6+DLw4Z%X?zQ%zz zH!$0w&14=B$T_b5d2Nx)a?Y)CthzkXjKGO%V#BO-ef#BT37JUk5#6NDbye4cd_)27 z;~US^-3jPau3T^yCA@|kyV7Yv{dpl7#J^R`4Y8pocQg)lE|Md@D<}FqyEZiq-~cD9 zD>q+$blM4L#A~$$HuvIuh=GMqvr?g^hp7;ysj``ARa!ErpdmFJsaE}pjB)(maI0OU z@xF^`8EQq^a4%kS1}lI{Ey9XMj{@nMqjD)++Ywb~y-_85N$zFwXf3!Lhov5=mhW~qIX)O155zCNiK<*MDyu0V*Hal}!+jbxenn$D|hdd0Mt za>7G`Jc9DXvWAr#W87`;WB<()wl}3h0!A3my}phpzk!snm&VM#Zoys?zI<3q>}+F!?!FR zofHRtfu`(tq~$Q@`?R0NTZEJH`<)G!9bA#WCjczFcD5^v;oK(MPugoZRZqjBtHrKr z`m^2-(FV%I*#p^&;m(JK08lv1m46IYWxY1F(B09lnU<*XxDFZCVRVbAmkmolK!VW9 zp|*vVT(5Q!3^-zGOe+GLt`g}WS6o6EBhO*aM8uk+jihn_WbM&~Q8az_Yivd69G)Sx z<#Xa;IWk|T95f3FG$!=^A*xHW=x?u=Hfk|R`+1CM)%ddRgDGPY3Ba}hS-=@UxlTBE zfxNK&S%LzcUQJYI3ma#Xqr^`KLH%eE_ptv^yuG_IWv)d`69S?~6o2>W74c-saYRTN z*B1uj^jyBXV_ZqqcdTF{zJfT#$(~%pXRLvH=W5o?QcJjdSvKEP$g;RElPTRcNT;sp zN~S_Csb1e%-T~&R3>Z8)xYPSh!B8%@)LQ9&l#d0=YN}pOx|;(1r*2K{boBYE`oN_{ z>!3Xu-%(^#J*4L>M;mfg`0&)(f9D1QKP8Np@R$!LNRu(DTVzP}$J#B!+V=YErG8+q z!FEQMUsg3P(Pe8?4f8rEhK*>anob^00sCHW`p_Nx)W1Z|TL5<=QTR7xQZo{Q zSeqK|O~I|V6aSQPF-sR^(+lMGCvAPQJ2AFq!E$(C%Z~TfOKB&VPLzdnT!X+Qr7u$H z5oK}Imi=kU5swy<)hJ|l71i9y1;Nf1=YXbn)hviK*xRq_NO=7t)9|Sz-CS@Yz4cxD zkTWUsSJ7fFX~1a)%T|DqtHUt>c|=WzAtb@YKK4#V!P8$qX7UU42ed^OXmdqp9ClY2 zOn&rzX(8&C)tDsW5zSV(ee^^Zk>j+AF>hvmpt6UUz@V!og1xSXAmOmVwyI$u0@({c zm0J<5OXd!c@vMSzLbSerVO;;Evq)s@?~N+J)+N%X06=_liPx}#Tj@)mK%Mlk*jv5L z(oo7Np?iX#)M1^}jm=$zt}`jAfTzV#YZ>^?vz#?1HF-u%aP2}vd<*d`8=}4d`(xY4 z=W=HI;qgh~aho53whO%+_5u+CdaG@MjxYf5bj2x{iVyJm`ZN~eyRNX!ZJVbHNR@91 z9GeTkwF)+{0JZ$*4gcm4hVY{su=Dd4FtQ0%veGkNW{d`-@giVF$UAQ4&EaBr<(o~r zsRdGxVsgF0i=SJ|Cm;X1VrT%#@CLFP!V?~1IKSHh_=5bubUR`;aQqz_1jHwG8yuV% z;IP4k)jgwHD^phoFYDsJ(e7OPA@&Z6b*_!_CKca;&L{p`VQp-=?j>9#EE$hSueFC3 zT3ii@u(&ALjm0P}Hf(x6+QL(yWS*hZU}6e~oNs-}pXmG~2f zxNi;?hfm@6FtuE*8bsEZ`$e}?oFN;(v;KWN#NT@kvIMjrXl@h`Z*uHszIG7$Oozi>ZE*%_;txbJBAyM8q2P2^mkVso7*P0XSm<=v7-D@?++gvR z)>CB#_Mu625(~4|b7G(>i`#G#K#qmPot5WgSR-Vw;y#zj;fO3>M4A=xhMHK_qs?!{ zDx)cbt}5Nq5==5cEYAg2^m{5D6U63OMY*m|R1&>&o{UjQ+5yaf;Ge&<;SQ$}bUOkM z15$JV30G`Z+- zT(|PWmnqcd=o*Drk@_muc$hm3r6c)hnG(;i$;I2CtojJ4na9;Ox=fV(Gxro`JQMI9 z(0LZBu6E|=XBr~pxI}4G?xj2Jme#-Bw43%p!itxbBBKNJvb7cBVddQ>LY)0kzstafuH~CuBi&7uQ5$lFZ&B zs;Z1kEAZ_biM{I96_n3&Yd*lpo-2MoRwh^)cIF>ABk^d_64XXeZ*)cAc}-H8a2w9I z4SmAMPRW0mB5#OMP3Jk5zrzyOTc7^O^ABj1nT zHd4%^oHNOk;g3fJYG~_QIkIk}D0yX=aBmqE0}|?om(`+w)c<)~s78qTy4Z}KRHMiK zrs2flW!}dvkeB{ayCk#fMO#dP;zfav`MqqBy*!#WFG1#*4_0->zyL7v5Mkq~Jd@jz znFBnWkIy+}l%~8ux#G6YaqMH+nK+*YFA4?v;g@hIth95TB8UdhR76BLlGD8` zA1P3O0rZUtwPFjIX0&GyCoRuA#zTf7=|bHF1bcjBdd!v#jNu{~4V6%nGz`>q{5O45 z-V(6Eu4Oq&vMGDN8tn@jS?$s0!^4~#AS%uk5UvV&{~cdp37*bQtO%hs5{7YYWa1hP zTALt2Eoi}vfm|k0PJ!-C4G5<}e51Zzof)rtVd9eA8_&h$v>0S#!4GJ~E&rl(4)xzE z@ffPU=dE8cuW*Iah1}1(z!dI<;#&C~*NY6At<}}+;k~}*^>Ot+^5<8(`QfkK0--R=nLZ~O6x zD;{D6wjGP`(QEs<<@P35mxK@4BL4aZLh-VX2x;PJSZ`%}XBmTBS=V4O2Tym~qjQqV z=jp5WY1ZEHutd*1Yj5l51Faw(Krjs_T{Xo02a^C#!Fz*_`M8@Qg4Y$Q#p@)`634Uo z4j|r6yB_I)KT~tIp1SMew$fboABgYAzrFjDp1q@!TH9BA{T)#K+M?qiMb-F4qLX0|Aj&n%%6TZHpv-c)*!b3S4{_!rA+!Z`K%{$Ax3wwxBSm-W$+AI z)WrV?YTDm|8hx``gJT)MS);urz-VXp{>NK%=HC}Auy)!%jM)EhYXZl~0_*2)h)Qzc zk6w&tBe0#6E2=6MWaF$Dm;NKDHQ3NhG*2M^(ygm+PQh&832aI1aE2jDMfn$XusG!2 zr7S70FPcn0FT%tYln~}6g*C{X?h7G%>}Gqr>bd+TdL^7PY}O9wYon_K`QwEnk|(Kg z(BTcu8g9)DLv|#t(;9f3v%e=8h@b8uQq)j@@@{`OU5UuGNUa%rZ~kC&FX##GR3p@M z;Cwj|n9K;O!RV@C<($m>I8_$HoqZGKQT6{{ytRZD^|isj{afD)IL`mp(OU2kz<>R> zj23zSv*GC5-=)ly`Ue@D9597{>9WD`50C?Pw5eu4jd4)emDyfj9Vvk3K`=trp5FFt z>_UN+`8IZe3jN2}^|f9232@xS?$D1*pw?DF=xEzEqu(>_sqI+R7m_-U+TOSt5}bK6 zGpTR(c%&RYloV#loXTjxmMtfcrBAY^uw)Ro zK82_$(PU5bR|;d5Dc_r_GA&^AK*)CHLOe*l_+d0ieOJ=zo@xv&`78vf&N#C$4on%9 z4c=fQCapH1G^&!K=vb8LxgChf5VO!|q8)%m1mL$>=N9A*#PhF2uv4Bqf&z&WpX`Mq zoDn9c&Z3!KTJ^G{YR--Y+)7X+FbL{3(uTAhL`DVm@bl)j4JMkOn4q^W6m&zxXwN)3H%5%Nwi zbAY*b-kbKto*RPo@R^KoraeK&ZYu#~38sGp7Lo$%4;$qGY??Ix<#$Rc%1=&tF(szE z$`{hoI<3S9pu#WsFYDC~x{gI=*%!4n_uqV?+-YEfM%=O0Y3mo9M57Bj{M{i$Mqo=4jNA3 z1>`XZsX?7*L5tzUu84c^J5=B~L7=1DnDi9gJrcFU^os9;BCp&c)y&(F+!}n_AeCuI zN6`d7;(tt(v6L2ryTA!31$-b$A@cj*Y3VbBgLLe9p- zJ#FZF0Q1E!9!nrW_^8w02n?`>S#=WQ?^aj?@KlA{yHzXxuAj?@rvxxSy;y&)}z#J|v?z{Dyy^#Cydhdhb)260c{Bc;DoBKiKU@B3u0Yy%> z^I#z8F8M{UZB|HEH~Kn_%}o(mO#=zB`wT$~0IS!dcX)vH*+mrLEoG01&*v!Q`Eg2i zm1%3b*H#q0d8*er?}P+re-rhHpvvQF{Itp4T3#?-qBp5Z+=PDXW6)o24)T&8r8DdIf`M8nzo9iN^TmYceo`A0rG3<*I z&_1FX{1bKNvaHYc&(1bA!$FtCE-9m2)ppHzJ)%m~x}B?*@E9W`fk2n|#722*6$jE) zS@LCYRKm*(>Wj6fH^|Uy+9~*aGVU_)^)7kLY>9EvVh*rEiv>mQ#tCMk5!o_TB{Qjt zSNB`a6sq%PGk2SM5dSI+-S|GnuBl{|P;n&Zv@>Kq1or$c?W(@a5Fxdr= z?cyROX`ng;cVRZh%@TZ*krtQvc>hhMq#p^%U1P^b*+p-q&SRMHNib%vHfRb3fL>31 z+(1=#?PGh^A_}o=+s|lYj_sc86Yg=VXvl|^^tl%o=|kO8x+6df4y+1LkaMAIRKJMB z73bbI<+&K-WHAY% zAn4pB2nxx=qII}|Mzc_cl3c0=Y&eGuiHpf{_Iy0$UrLZnsB*W29f@E^M#8|=0}F6! zp*KESN*tC_x{kvl;d@j$Whv=_YZ$5gM$WPFW4cbzr7@e|@2#UiAQX11omvojU>!%F zSTML=R(RhKZ_8a@$Q*`;FwEQBoVtu!P|H>=dLc>+r(9wh>IaIBwE`(1EDt6q@&k&h znC}%a9HIHapf>6@RQbxzS$ z=|Jjj9PS@zklFv7n^0#`>^afwpo0F4nT#88wn`%wfd_`7k9vjH@BQ>W5hD)I$_Re7 zi!Whsu$P2$^}+pvxf?SM@Ox3$5C$zz!EX<|Q+C`OICEzk2g-R`zCjgFT&vde(xbTv z`wieNz@arRaue#8!+&OyPp-BUgSj-L%swAaKdGfaGP%d0+0U;6&|nX*#wM&TIxjd^ zr2Xa+n9QK&@#$(-m7FSE$I+!y@_D;VEPLxx>@67fIA9(>PY7%WLe|b8;bg6>IqfKm z^`wnCS>Z^jVT4pydv&mAO*D+L4nZw^#OhD9heyiCe^ONd@lk81aP*-0up&G9N3BeD zM=vcrM(0aIpv^4+eKL2H=4GKOrF9ipuIVljLI>b3+ExQ(7SciNacYB?n2oDjB%!%N8zL`JR6+iD3s^3DIUSD!+VJ^=_8n8~wgK7&3K zrt_GbM27x6_NfERAj5ulwf;Hpw&>5Vi0|BX-m9GiqZ0uEv<|NOn_9Q_;g={R7zM)q zj>oi4Z_8UHRlaNwPm0AgDiM*clBSG#EVzG!qP>7pjl_)f9jcC%GKI*ydn|Sq!V40X zpzVUnP?Fm-g57xb)?_F%B>ZXK@)EIkB`97xt!8hKPY?Rj%2q&|EIpC^h*pK&A1l1cDp=*`gG`yMu1a#HGYj zpD)dqBmH#+6{-ts=dB<#83SX|H|(aHzK8B_t06O7hejp7|IR4b?v z%vVIc=}91U-IHFNbTpb}BO=Q^x6qsS7$0_UoHyhZ&nEYgCcB1=I!X2GinkiBPehy5 z><-=zz$njw|8iu@=cBGXy){>%-5I}0ps8z`nBI7MsYVwt419U$c-wNaRm}MntncJQ z)h{I@?T~otu=*#gTXx35N`c6a#aE5i<*0)w9A&oI_Wmoc^BpO&luRrUBRh_%D<=+p1juE|M*`Lo>64a%iK}uqNs~H zVVepnE76UdzB><=OX1L^oBFR3H!4`W42r|`A);s|VNGN5Rr%~;Uw3p(i=TWf3=sHsYA!C-%a5CR^%?yh|7p0ug!O&?}f|>Idbt z{XT@Eps$st%T=9+lh+gG4V4~*@)>gc^|?yuXwC3r*9&snq-*i4f=V4x4sSkw&I$Dq zGC)_d($QP$h@*N})#9B9;{W5#-?v{0 zO8-rpCmH`kn+g9n7cr&dVzxA3zu}r1&#bqC_;i+;34fMV@AkK;(*d^Nvbt1 z;kQY_0{DfLs3I9nG}5pNFwkq*9c7Fyy76-*qL@!R$3T|sYr8~*2xTZ?0o*$5uN=5=a(glvrxY}mDG8aRad8G%>{drhcbOoUXsKBH7mW*2z87iw%kNgXie~S zaO$X66^|76tW8WiSsRQ2O^_yfA4knoWY^&LV9M_jJx#pTH&WgFl9yR+ICD1?+hdJI% ztyrzLW8Tls{$_E&T2w{*qhKoQLf}hy1wH z09Y{-Wgg6JI8odjtI95)pi%}oVqoOf;E{43+9;XqdfIa{?)0T;vHa`XNd&ui+7D}L z4qV5vRZ}fi@v5X$huD33v_5;6U(+9CdwgkDcSAp&0Q`YwR~6 zqV=osTVV-0er3>26RrL zx-H6itxRFKxndNS*ghCTbaP#qo}f2oC#Tjbl)Mt^EcZnDSV4;Z`e0xjx#A+@p^WRi z_nN59LF+rD3NJYSXqG}(I}fQYzWkJno$A*0BdyO9A+DxlyI#ZgOW2?6 zXbZO)Y<}YG`WihT5(;~lb$kgeR7w*-Kt>@I@I%^{2t1fUwh1_AXraeLp(Z$UrVYqN z(eBs^pI3YPCQJ{Tw6p=@*9Z61h`he&q5s*j_rBP*Mq=~>BvKl;-B5V9YG$i>OGNhS zlp@(nS@XKiQuI;25(qx{O0{Erg2j1J^NStt%QK1A7Zt2;*4J=<>@QwQqfGTGQpVLO za(RC?Vpm}(`JreRbp3PJ)LKI76)jb@O3SdlhH27Rh>|(Z!_5+bMs#Rl92H6(#?Z`> z{B<@+=w>J69y3p0{Y5h}E4;uo+56WKr}}7%y}S`_9#R2#JIIiVb4%rlS*mv*-iQg0 z;G1l@?D3Vm;{_Qe)?1ry&+8ufioIh_jfsnVgSC@oQK2kPsg7}PftpxR8!h-#l&Wg1 zzBOc}N`1q$^EAaWv-(>?3!0gFX?sV|!}M-5q=NZZe69gD?8%cTBhJbPn`!7Gr)lM+ zRv*R*>=fsHbN0V`oS(s2=}b{eyLZVDB}uS|&_+Az2y!-vwU5T#P#sPQvSx%A=M zC&5+xh&GoDQmn-0ch$7W(EE&&=YD#%j1*>xJ$&7y_I!aTSBC~VnXbQ?@|MOwyVUtx z4|rX_#`$QG?Q8YV`TK4&pD_kjlZTzgHdw{XoL_>(vKw5?Al$g_N2tIV^tkS&N&@5V z@H3PF(5R}LfN^lf&8PfmU!0aL_QSg6KDvH+FoPC)iaH`c1I`qS%92H<6T;E}HL)t! zNvb%3-~)H&MB)v<{$TFy9*IZU?O4}!a~aTVXEFBtIoHHjW}O67C%oPn#`m%B6Vdw_ zyvX1A;5zYA7~)`Asq{RXm2?PS=MmDAfTrQkrr{mR;pwFF9Ww>Oj?EGVyDEl9vCXQl zn23-L$ zk|~FVA)BT;2952QQgQxl2iU9PTflv|D;3YUX(#DUz99Id5C&mpGO2(VG3 z?k$m#0TW*R$GS|$FZxY#vZXQ(^P9bi*JMu|mN(4^au z>pcHTWhP|KwF@yQ%ndn6s9wW>fowAEkh(F$8tAqPe)y`+85c5l8RXv;x&H!%ahmo^ z`nx5UsR8>zwh(Hx&W8Ih4W~=9ri2fOJI=V0lH_0I36w{wk!^Fqlgx^H;Pw9Ty zo?^!(PzwHG--|C;ykr?OJfzaCgX6H-&l~;7>JKeKtIQfp0JH5GntO{ihZcg9(gCs)PNHNHQi% z)gBqElbwn=q{}nQ8uOCN}gReU*@~TEXI(W??^bSa37jt|aYa0~OoX!|MnIBCQ>=ez~zgnndZ z@41nebSHf8)Pe$MIY|t^ zxvl^XvDY>Pcb!mouUq&%OMNi)34aHcYf(yHzS-sHOFM>|2&VV(>N~qtwDSk7(o9P? zX5`vg$CZ|Iu82n1YirlH@PAIcc9~8QodV;wu6JuiY5)IDyjq(*!uvh(y8b^CuYvy` z6R-KA5a%(wfd-OI^G!NkOVCo5B15KfK9dQ!H#3IT@?N4U`cv6*LON&8XvmSkIK}Pi zlxG`$MhP=cIfY62Mx0({fqtUGz@zMhC&dNGBmD%5G0U4^bczBQGdu=uW`vQiLT*L^ zeH=}h4eS^42riy!*b1mvs7*Njuk%S<#WD?DA+gbmAr-gd;MdpWes2<(@UXkw`s_|m zmhytQ#yp&zE~>&AWSae`a2;e^6@ z9ulu8zYsCfScPwL#w^Mhp?4lqsPah>B!brWS=xSyx9NG=`eWPmg_I6#s%M4zA3n>c za-qZ5Ulfx}^2Nr{v#X;<+;=83Is1l7e!`305QgI!F;gTj z#xrz+!M+5vn^8jGs4;yKO7HKGSuYbKohNN{hlzcuL^VkDOjtUY+LUTV&O<>_(KSO@ zDL+h1M251}=tmt!DlL3mKM}^+WrWHk7x*$en5qkP3!5iJ5q?dOmGN}z8Znp&ysrVN zsEHWAPkM$ClO(wHCBvla>AAaax?)&g(c)-RxAaeq6?XG=M zRRh`f82H%}OnL>QL~;flTBes2jXB0rm}71SG@cZ_i5-N{A0hMphV8e-)@(gY7HS9k zs^-Ms2DYdJ1rr1qRchU+>& zXP7p2lM~C0^GNd(NtRt={4lp~dTD`B7WR+@e;(w=;TV z(OLbm2nR3Kk9*gu%|a ztlIKwad-bGl>x`fwqwQcxvE1}&ODrMKv< zCW6+R+S`Q@U1(Z-1QJAt2aMAWl!xR=S(3t5xwgb@+Qy$?pRDB?*RfFhhx2%dA){F+;0G z;M%|0~lkj!_gZ&ByJo6=KcdGuC603 zjZU7CH{e44<4a=JvY!DE8HNcAKb;eIHPK{MuTUjB7w@B;HO9QFiIbC0q92DNBYgme zE>5xA8a|pnoLt=XDBB{&-Y#Rb*Q} z^PE}J8I1i3e|GWhD{4ioxK8;pJJ6Y)s1gxXvmq^8guE!aT z>FDihv({bwIH7LaBk6hS0jtyrrdy9o4LzY>sL}|QMP?Vm#Q45w zvG?j$I5iXa8Ersl-g419ia0OE!?k`!O%J*7dW4};ETbq!r~QFDkcYW?TCJ=(Z$xKn z5y9>Cn=!AJhxTtb^a?kMz1#HrEL)J6qrn4mA0g>3?0DV6Ri_ z+}|+&fz6uYRn~oPO=lmg5m|>MehX=%yb{5C-2{c6LML+nJ9#Ntem7M_0-^N^QmR*2 z@GV%={DwqbNEoeiiEn?X+*dmC<%ztJ=Dzgpo90_D#A5Pj+gsMk9~Y1lKFdIYSB+*% z^N*6ffITQIB-@a``UeTzWh(-}h}GKN!YqP%5I=|t8N%_*`==|N==+H!L92xP$6aUA z{`88P^6zMlXus^}5v3=s4{KC9d_ShRh)DZ##0KZ0BW5)6?V;f_=4jT0T7QV}ak}j& z7E7diIlE1r#%s?Ux>>#2VeU!eQr*64jq^@>mZa0kYBSA8$77mOsx7aq(my|Wo7WLY z)-K?dVYCP#-8~l7(p}f2^+%yOt!Tfhbw4!YQ~a@K%hnfVYEBR;sE{5Z?vLXv!3X&v zvU~j;Ibj)l)8qXi_;qD^V(qddW_TdqrFh`+!jef%XsVwZ$J)$Bzq@~r`3k%IHp^JLElR9=u?eY zv0gi0m?%qLt!C`C|E0rlNzr@HfPuU?=DWQl3=rLGU=IoQt@u+v$Jr5H3|YumvsHN; zG95SXwORYG3{Z1!{`+@+P5goB?}1_03!$HoB`S_dgO~*Q(6?OzTLvP;D`tmt-Fv20 zaMNuNm+@xLS2GXVFyHL8^4-MDafYb({-}+@BC{0AsLQ`(qwXEqtFatS*UPO^eGA%! zLN?!v-_z;XMCmW{qI-w7sYur(lLFTL^t3EwOY?XpCE8h4H9WT+nZh|RH`TQia?AaV z;xa|H-PDq2Pn)&6=_fFb*UDaLgDlcS-DdtSAr?WI7Tfv@$vrNlgXEGV7O7s1@B6eQ zKa3{@33adRBxo(L`~9Qxj#-TdEYa!4Y9K_@Hf|+O0kY|c@%XdcQ!$H8hM!5$a`1<^ zd(eO_5if)+9tRA0eD<85mHeve%<@&@-i|L}5q75ww2_7|+UAVZU%ybta@Bpd@y2|= zJ`M3g-eFHKxCfgut z#?RtTlrQx14KikGe`t3+_%y^4CY|s`;Q&P7{4=Qko98x*2T8aUw$U@!hw@(ohJBQg z7f?Cxe_k7(CctIrtl>8+V_YTyqsXjAA~2^MGI%OEWcXqYVty5|79F?>Lz0}45&86j zwJ{T(BTH;?p+?ZTwdQ_4iO6niyu1*;QVs4c;Gh)sp!B>Ld)+f)q-?m`@^Z2F>f8GXh4V&LMtVBRqe8QB zd6^m&y5~ia$q9-*G|TKLxTwMo+`87nTd8eR6lf05-{)SxF`=4I6Jd{_BM)ZvPll|1 z_?lzviZSRW?;$hq%be&YiLWxDym@+NK2AE_IlZ`$_A}`+FPXqIdvu9@ep`DYC$dBH zXYQl1Cw){-2Kjgj3y1+rh~xLx_U8Bm*Wnu;H0EO83$cSb-V>=+J?)E`<%&xJYd=Bb zJ4s@ESXa@VutO0;OQ2Tt%m}MLaa0O&8k63ss<4^NhN||_LWi=pi+03cBW1|f7gG|M zmRdN8A3FG*-TZ}cQ0~i0e}fNS1f}6nBe`;Y$x$QKBUKcyqzEN@lUDe3MPBi@LxBa`mlU z*Kc`x3}uxE{hWx;`-N1t$MAOo=13}|>X66=xlVR^wOJ}(M-MOB%6cgz3aV>q84AX6 z^|USdPpHXL)DB(fNtBy?JUrbY>a4j)$sRLQdEIixqJ3RB{cy}IIt!&^DEX914S3k) z4}Ax0u%ApBKNAE!b!E^Y zKO(;`jnu?|L0Vn{Nm02W{NA#*O!-!H)tVZDv$BG`+=QYkw5D(QIeiQ_8xJl{JY63- zm$wOa;6Un)0I5cd1+FIlD9c{8!SHxBxvk#~IUk#d?CB^e2C<}+$JGU?O?wm9)8$jl zzEC`ctC(Z3j8qUXK1nOE9|M_kUp_ZbYv6i})W~@=-@VSH{QLm@SXldVX9s~$wH-Or z(`}r!5Yv+bYj=w9_54lr#hc9QCafG@hikOb_{DBxOuo%53{OFdQ=WT#*JkKE*Jdc( z*K6X+#$%2Wy6$Yb1V=wIe#~&&WKOdm&dNDxnqhecr%g2nS?@MhHf=!O&WtEfX(Xn4 z$Xx1UTVO)X`y@ys(&MnB8-C>Qr^ljd>90khp_UU3Vt5SSPQf4O_Q(`Hab^Q;w0O)H zAHh*{hqBKXnin+FS6+qG&$AMr$lwhv-_J@ceVnKzlzgP*e|qEBNXE%U8ZU%MpVi1O z?Q|)+#>>RB>{(dzv@H(uBFsal$uZgPqO|)v+fS0_Oc+!626S2>hXm?3aUBDgs33nAb+-KLlHq5 zi8FA*umtDyVWcSq9y3qHKRe|dcf{*^pP^ZLqP&I_F`#RLrsl847FXb(J3g|5yB>tU zil{|(zC-07-{)L%NjNN>pIM)w9>TlIU`wdDXKQP*WEJf~ose;=TvwE7HK$Mv-A-*- z@)l+cqU68lOs(E#@Xl+Uq;c}Xr1>IB|;Prs5-?@#g1^|M)>K&7p9(^lO?Xej)=*iu_M?{P_D zj!4~nnPdxL2X(d*;oRRTbm`)CTXF-H+vu91QM;^|7?blF5<)bs%jJW4DjOVCk8-3Y zmQf}jM(anW(HrlWA2Hm99oTo~BHP@%)j@_>d|CkSzgi#Dnl>qK5-8~@x7SbQb*&Np zq|y2P?WxKm@XZ_r={Vh3KCnW#2X7)}5x!=4!!|AsySsog`+!U2kh#D;^5YcpMj2fg zJyub=1&&2O9UTPgjD3ormoW zt%B(diyMYZ%rL2koQ_E zhGhkqt=lgARG^~Wv{hnHzP0)R*o=Yw#KFjxs41?hFjMU?u?0O)_!Nb_8Rw~s70m0`u zFf028>(5cX+KCXP9bjdqEj%0?as3Mg5Dq-d!O0FzgAfhi;KT+0&cO*4q+8q0VUF+q z&CV5?CK0D`VQz~H>Gyu5YF5OsGQD6V($k`BnORloSY`!Tr|`Y{ea0{xw!vo)ONkI< z6879VMq_(>6*I4n=e`UZRa87He^Mu=Fa%nFMwDp8*cz~{HCU$>HiiVu_gIc*iAV28 zDjO#z2`x=boR{ZDtVTY=f+!PchOT53o@AO1zwg?oRd($X@49|JU5wNx1`T*FWvZmr zxkQ=fKUSXr;g)JMKukd1#tlg}trpXvD_yRC5H8EU)#ItU%uFjnqy5onppbiSwK;k7 zY~k{N=0Z#;a;XSQ7ICd+ViO&_;^Bgw(aYp5h-^)gs^7l5$c?%>0ol}P>HlaMn?fb| zlEk1ZGrW5FSw7y^wwQ!6guGV=f(3YSpPJFQ$Bzwr&J-p zzlPI^OC#zaDv_k7bV4pRl<&2EAaf{kLRv}J`8F`)j}~uir=dcKHjAgIrgOmdvRtL} zp(gH8QJm=;kDOOeW06oQHJ@TXSL8{^)+96(lvICA9a#}rgH7-BB_Btc-4`_?Gl2S{ zl^rgLu3R|=Hhx1=7Dl$MDm>?LJDnyu~PtMC+coYhDI z^DQ0(2KuQDjLFGAX!GO6E*-w5vkz2O>s;)2(ZhaPQ_p6;enU)MNCaKmR;8fV^#cL{!93)tx8ZTrsrf zcZ+zTgkj64-8`-j54j+Y=I~Dw(n6WIDL+rbXU-a*hm+u-`!3JJJ1LLcBC zW3-)yKNUnaE4X&QzuTpQZsI`rN@a2oh)3VC;HH}NwO|5c5^=%@u}6&fEycC3B*0?E zZmV?0g{A`U8jZ(#v?P~m^ye@r$lY{pF%F3KiQl`;)P7m?f)wYxA(5s!pwfkWE6p#JJ{h0jiVIk z5CMmb+G*+Ie3N6j#zW25F5Yp})=doy<}-Ur*8|B#sHqpiZrH zi_rU+8&gP^mJxE2YXMfo$yuH|f^!WF3`uDp8VQil?3A&^UO`3S979g4}e zw29aLsHgQ1{N2*Z*oNYZC-%a;Rp+?R!Ysc7@md^@*7VSo@Bct zrPvuS+B%n3_*aOf;)xU2t>}@WcZByts*?_Qpo;4@vI7PRqTZs2h)m30!WO~CPx^Om z+eW=C6(FR*sJsm=DEeb08Tt0!1B!ZR>0kaw^esylGj{=RTDH*r1q8x+ur}!CpA}7r zdZ1B4*ea)~mmuy#|pe)aVle!@uq|^nmt90Ow}Ws1q&t#J-|BwazPe zoouPeZGL?$KPZvKkueOBZJYo%R9#^p>Q&Xx>zn@d%j-8+RcSe2>sw~AUo|&?LzzOo zp9?%pC)9l*y7ziB^UBsy9w$C;_YvC_)rJo9u^*HuejmB>1)uGRAx~Z^*sH=2(uy`x z6|Lnq%ik|29)GtrK&WSLkrqMRqCH{6!i4YQZgaqsyUhXOh=Z|`Ghb-GZTJk)6cw5v zFSbK650kG2G~1V@xdab-25iL<@`)qolC)XAtwzv=MPiZ2KL(Xm;mPqoP*sK#+h`*0 zXAOCObD8{HB!iL+Sm#8hngbz~sXETi85Xe+G8y6tN!i%RHkoeh#KyoWjqhAsEUwr3 zbVA_r(37J3tzg_It7PjaLV1$&!>tJGl&WQmqs#S&U5gD1LjuQNni8mPwB=e5X%~@b z2bI%~V+|ECuA+RU6P!6QOmWkF4vlzj0e2fGPep=H7i-ojL=Lj}jd&ng$g~YdWSLRk zpO1ci(a2pstXUs4PCw&F6OibPw;U$yBnh?EH;NxKm}qGKd2*idJvq<2cxOi@lbZj| z{cHLoOGSfLd$Hu=FVB=8l#XhPydBqx{%%fJ6b4~Mo(fQ=k8DgndpUroeS=empD=k{ z$QyUqBE{c-18ftRF^z;o;AfaCc3gyYgk`VPLWQg>67J#Tsc-+_(&w(7>~sq|clq+* zWFoZv=hfq^lIw)@g|UyPk55sev07&O9{C%3xqFx-?{Ua7Shr2mX2cTQUD-NT{IqrJbXT@2!QE~vp!gXB#2ekET5zZPN6@`(tB zy)gH^d^r9ZT`e4cux=*_HjPyeU%$QV$4{}1yje_2_a?<+1MLyNl_8swxo0T1Z`TTE z*xTjqZC8TiO_t!*e?lUsd?sAsTm%9VUv0t_LIUEqDO|rxlVd~+QyrPqPYAko%-km? z6@o+aD;f(N`zT$pfbrA@baFx2a(dYrd?C>*3iq9S3Q1_kO;Y}>T}*viy3kOYvUo|> z>$?kiY0J%c)l?9q)^AZeX>n>}v#fUDg7Z;fdh1yqmVrufD_-LS)%qzLzFTh+mTS{g z$&c1EZ-dWmYkvjtkC;P8#CyFgTGc)OyywX=Gl$``%TygMT;tsn1B|`l3Kz>>0xk%XhVyNevfb}BB6)Li2S z%XO+VZ>IJGeh44I==HMHaz6j^OFvVYoJph%D_lAf^keh;NDnBt3;IysF_mB3ze)fd zv9F-`I3TbXp*eYU^4JI1YMlWK@q^eY$!f0y5FdL$^q21Agi<3OpC~KOGj6L#^@W5z zthml!e)b{40ZLf0ulKNM2pngP0&&=AqN3I73x>{!0H_OD{WGq;1*V7eE0&875AK*uTcFGp9Nwm^EbJ4 z4F;eL2yh(8#ET zU*&MTMv{DLh9T*KEz1YLH^AE7!ijFG_ClJrDowov4O2vY|*5e1p0PFF2_VXNL z*kojF(7H3@0&Ho&%&S%@Qxce;4@n~OKIgj)ibL0J5~IOYE6=Um!y+cYBg$iH5MjHA z&s739*B#p^pv>WsbQoG(9ro^v>}%u7P}F3;QW3^iXteLT)R}Av)Z~h$xg!xjY^0Cy|_Y3-XDfsW0E}wc&jme0bUk z{UEuF=p)MuVh>2yB*0DjX$$zFjrt+r-*9P!97>)`s^%TJ@h)AOS(g-ZDb=6;CzfXR zlLhQiYq+KS!ByFJ8<$_RKE8U2YW@(i>2a*a4QJwA(tfF1K^FVPHD}MW-v;EsHdFb| zSecz~47+52?Zr_(kGZXvUl+eAs=63@Ls$JMo*G>N8vfV|zItrE-LG~^P0#WUkwe^h z-*c1BTYYXu^^SkU;sfbXT9xjm$cX%U&h9ZkJgZl&Q{?Ds@Fe=ICTEZul!<=>u`B4I zpUaa6T=hwb)x~uvvl82@dc)g^^eAC5s%yt4;S=KR(CMn-F)eKd%=>mZCMvwUW^8R4 zqqFDC)6VIu-|^1kk&C%+XvmWp7i64$&TS}xi)PoNb86>Z|1n|r{ZwsjddU|es>fei z-_{MM34i(|h`*bsSgwFTBOx>30r9<_9hoa}c;L14a%=K*@26PZ`CW5$hiI^6BE<`;VxHVd!_(KkxGj+{EY!77D};Id$-|u= zJ$t3*|INEDZl#bjhDggczeU@#Di#}j<6Wr7m>^MC_K=l5xd;!PN7s9!!Ue)atY%cj zMI~uEf##lu&cV^J95jLVSQgk)r%9#+_kA=%N=ZvO`vOgG1l-oUh#@ZKjd?G|2FGCD z_G&>uTqK%v(3^2TTLS0@99VR>%g);)VZ9=#7in5KRjQv{x_(NmVdfJxyxJ?ZM%qtS-Svp)`FSxb6587dp^FKV5dhKV4XuF*T#8-{Fk z5u&8v*IJeV_VCipPCL?*?6Gq{%vD`qUrN$z?LVoZc@&sNT*JI^HsMd&cEJ&wb~7@h^5tw*oM6xHWk=j~wfdVXmP(~?%*^@PHr;4(SFeotk%9-E za`j9a;13o9lJ%l7;(~D5PqS{0k1mFd#2`L6F>-4TQ$a~`Ra}m)+vO&vINXs&GVHxu zKbk^E?J0;w&aWCe$RIP9S@9K;TL_#O`8f;~_~fOugK#E~FU zs8a-p9`>ex_x3&lL=AhJjsS`M21)$>E&_Wx2|}m5L$ZXpIMM+K8sH}Q0~rftj|I_F-NkABt~f>wNZEa&8D@&LLQKr{V;c1O8GL(}3wnDNmlNYI;D5IQWq7;%6CkkMeg z?xPXHKEQaTh`&|u0Ql4cBZLqC;8l+Pn-?<->F#%mSH=EC9*=AJ6@w zmC8>5zZqOOIKDrSwL~xp+K8y3jd37!7~i&57PB@0bpzZSf1u|me@lP|9f|*yc(P~2 zhGzh*4N$2|&8(X<&Tp6F@95Wu)H`m1tqau>=q!jCctU;eDZm ziNNxQJCk{q2!Oh|puR~Uy!b&beAa)=@}J{U?()oFUT|w25wKEBI5?3%dN3Ex@C?(o5V^14@?; zF;Kkz;B*GHhk`g@sn3Q2(uV5BuXGbaKSMz@Fyi?g(ZB*mY)b`ULWPq-6tFy$?0iNo z{0K1cVmLVVKX{s3!r(EE*^U$9u=u7xhK;NZZ3!TlLX zJ{@YD0m6e)W&Gm5=B`*C4k+&hu!5N75B|YWqYRJ`Otkb2AbEO~{{&U3gvW+1X8cO| z?%gNt)_*=xWP&JQ0mL%_>T%Z{l@xl=^(z2Ow(DD7IX=M5Ie?1w&j?cn{^1fe08b2y z0EREYNUXI5(!v0g3#vZ^B%1yQk1-983FXN8C6HJa5OwDUR5BZc3$@Pz5x}_6;5eSK z0%|k{iU#c;Tqd{vfwFJG<3RfXE--vAb)UE_V4Af+F{1bbFTM8zbffIKDr4FP_0{g$C|*&t?^3fr@RbVMRT z=d(dPu%>2L<}poJy>k67pd2|MCRixF93WIYD%3p(BnWHDdTw%CI)U1{ z2XO20XF@d4pyN3pRv79=*oSKjKzR84UA3rUL&@KQIAJJr(CgwM1T{4_Phlumb(^y8z6x2#1NqK%m|dw)VCmX>bs`XWQ7pV0BA#+)&I_t ziKhtAG!fv?*MG63OZo&8fVONN{M{fsnIS;a6%fe($cj7mmAfmWDggTcabUviUuE4X z*~bowod+Uk3}9sjnl#ZL%Or+frbs81eH%Nk;|3`;FH`2w#+144z1qb`T^T8VpKF}4=(jajEY4OMSU}#JM@DCib0H~ht;+rul ztOJVcU0?LCb~ldz43#VZvBO~V6jvSLckF!OLQUzLum>@46x8o3W3n-q+lre2m%R|rSwPF!LLWAlTfpB2~{yt&jcZgg+E@mLYynw%|wB`l%0 zMLkXLmZ)t$vT)$jVFw{^S z$lk8vU&8z^mfq)_AV5m41AoRcH^53TM zzvCvf0z)%PK`bzx{k!ewe{=?U3DX%a^t$wy9{ybd{6Bgq^#nt?%0RR*mjA7C{adv} zZ(ypWg7z2w%7#DIBm9vK`H^6#y#j~?I$!n+``;Rczm20m3T7On|MC5I4hpF4|I{6A zA{hFt{FjQQKPt7w0pIl@e>YgN$zW(wIfw(6BIMRF%56Y8i~lJVgq2|E`fqOk&1L;v zD)_7ZD;3!PXr*jP9A&BnHEZfx7ycw=MZJfH9Wo~l#z>eJot>FGJ= zpP8ENO^nMuWF!@NNGNzPFjz1!`X3SrNR*KO17`yy-G4YC{vVRyz{&oR37qPG(Iic9 z)_){`AV^Z;f=Q|bhyNFE184r{Klv~IKOF%C<3GwlF#Z2`g0#<5aG0cQ2zW@^{}L)7 z$p3K$g8Co-LQwr92_*eLDnPRRVi;G~4@Lj4s5TVmKgL0c z{4cj@9%=&opC}ig`9DF^6Cf7+pAiQ8{|!v|Vu*j9PDEtLf5sHbJuKRP$p+UId-V$d zFtBwDFfi^Ua5CH^LKvK;FWf(Xe|aY)u;9r5%Oh09GkOLC1M2}#iiag=!Xv{5NBeJy z3_gVmidX*g2Z4iuasE%A7B>e)lH^Ig`%kY&!TNudK~!Rh{|e5=NB0pzf`LuKfPv8@ ziE?2zJ+cY>-=sLWgaH3*t?7rr+5dS=go*x79w^EH{cpfpDGj)P2DD1tzmL(BsyF|C zhMgr8#J>`C?ET6X(qLdRm0)1ZNo0+)mn+UWg;eV?84 z+S+5E3m*nzKh2LgKK9VSw=e&l(c1f0cTY`iZOzsBx}8aNVJB}?u+pkD{=g6mNL@&1 z4IqGzCM+#%n`p0=+jFomiJYk$acOX)bHn$TJwCdW(>jod-C=i*6oV5W$zX2W0@ev!%f2MYQlLoQF7k7df9%NZR`y66fV#;KQkkv?SumPhsI!#bBtO7d42=; zd&~nbDNZ)`*rEwv3RiNx* zsJ@c-@$KB^dd65{fJi9uPar=0S;VwJ5c}}ZEZvDqs8YO`gst?D;TQn{V4u%|1H$w{ z5n$S}qEWNq^6-*EB1zvp>=WWVK1$&#(BtzyN_;_)T%}!fD+`_mTAJJLY2J9X*#JQ4sniWx!8fb{~z$9^>4ApfmN1EVDM~WyY zq<)lckuIj2YW3pCpFnO`Atd5#?{f^Hz^iB&k7hTA%O_c#?1g-*7@SpSHHKiZU z9Is>Baiq<2_KbMQVE6n}+Am8qIj2Y*cnezl&ntuq7BKF}tnL0HhHq7a1ACF;mUd~& zE#q-uDnPBF0R_cp z6i32cU;(#un9CLMBKdxaJ~m&fD$9auX#x{hU`>L z1l$}%e1&QI`E||(JY{mSZ|AwViuGub)W<291xaqT^O`ekQ*WQVGqY>A*PG_*Fm^Sz zcEecvk;zbI$a6ho8HC%_%UJtxc&qRI##!54Ep3N#Mmh^%4bD#sktqEDa<;?QO1+D< z#Vu$~viBw}u6gYA#g)sh4mdg7=p)sJoX^iA!@+;RRo2u2t7?k6t)u2S`}!zqnmG0V z?ehR0TW5}~M2ndai!n{NpxiiQKy4wE2#X}07%=qJ2%*jP#+RHK2c{;v;H7D#ctzO8 z8Kwn!bS3&J&O@ygxd{@@xeNd#C*Iuf^~>4rW~jJgM!E|3jStTKtwXsrZqiG+@u-*h z&B#iCO|TQF91^e=sTbE;YEBjMk@U)Pb&d|zSrrR0i}O6T$#KPyF0T#NHV0q*nJKt%3>!)o$%Y)7e)@~1|w)5(rb6aC^%~J+EXo%yl_XA zfLnQ*U^{*Kt;SNID=_vu&8yMEuB8{Wbd=-W_Nf znDO}h&s}_S&zn>LkVZLNsjNGR{;GLUz-x1PbzZdX+U|z9>nB^+74y5JA#Xa*R+9iu zYhX3-E&|_A!pKgcxQuFx2+l)VZ)1=MJd@j2z8%{3f(-t;IFBHT4?X4E;_l83iALP- z@_O&|9899D5rLA5rhXhmE8YIzrJCTO{@+#e~0B+I4(r zX!$0%z#a_2dwIX|4Mzx{_#pmwdvPiR1p8fJRGRAF4YT=goP_s@&%e?tQzN@GZ%*II zV-7?tt+_|IsM#|5(Rwk-)V9zs&&9$FRURhC85DY2$oWgzvq0-ysr}9n(_aFEth=TL zQPaJBt%w89h@}mT1O%lG4yl7CXW!9Ur33~q4X;c%SM+t(i5G>aHz1YgVp_fah8Bkb zvmC9JLWK&59LJTo4a_NYzTy8Qz8KogF6~3w&5Wkb6QqmpPCAhinP)a*q08Ziv5RY;)nH71+7{jmYQn&=QhVj5-!y6%sPm~1 z0wU%ZI%I$!5agJr7gwl!=VanThH0?Ca33DH?NC!1$7CzQ-)$aPKv0U2|c zrc*@vF9I1h8j9s*BJ%(>(sQ0OYwJclhf>h=!dd~QfB=k#Xaf`6-z90S2elpGI=(>c zbb%KngIbc!VoTE?j0LCr-glU+n2v8%BD-3y$qwvQOX)u~3+8NuXU8W0HlLfrl4Dpk z;DcV)6KrOGy`i_#qk~5@2T3F^*;U6ap9{o%)*8k7LCpd@o|JC|bSMNiMj+DdnoQIx zbHFm1W$l(?+?R_RthiAu%^3keOm!tk*XD=}*pN5&bqJ4Y5Yy6{%Y~PPyV;+mD83fv z>{x6U3LVd}xuzIi_-MiPs6)5`NOaDs*<`D;F!+rL6AeL6&aU8wuVWJ?hlY_2T0x@J zE+!epOMHQ-d1^Rru3>&ZLt2>)mLbZuYp5B1wnsA?n9(xj4*Cs@#9CcowZ6H$Zfvy= zAIC3g+2rdcQ1I>F_c=q5G>W!>DGoCkbu z+3e<{`C%zV6k#WK3(F&?r zUgK*fNKN9$Wj=VS9aa?(_$jKmLDsz&haJRZx>QVqZnpcZ9$BGYwjeRPy5=LLFEIjf zi*6b6-HQ|XA~NQc+@k?xSlA%HUbpbwt2k)E6Q{m_YGDz>*0C9=Rn8$x6E;Nm)iDVN zzZD_N*C}SM-S{PX`XKe_=VS|?8=)!0N5oa?Q5m|9Emv_!YU*2OynbILv{}hw{uLx@CsYBC9Ykdu7 zV#0Kc{V{k*CdFWpMLi7X6X_dAw84d=x6gZWDOTyR1T8SSCaTlm!W1Ml&|0u_hUgii zHHE!+M}fzQq+GvlB2Vob>)6&X%Jl^09X{WA9nCHkBcpUe2l@!(pA@<*lelnzfppS4 z52-$n4A-X!4?Cr!W#Dyp7mcy>(KDORC9W)lK@qaJ{ERM*6C%L5-&H73e-n62LsHJAx~2}`d%Bj571M)!3n3xPcRq-p-e4ZwzP*Q_0?8(@^#9qr8ZuGOnv%| zymV2Q0Pe4qE%64uV|O92!5GirFIpFJX(7C}_7ndtDs}KeXhDXjdnkt3Cm07gs<2mn zXa?wk7HA$Sf_KIYGUt_IxHx?JJ|%e)wD*nj5jMMhwmC^2KP^fl`pKTc(6L+InX}ez zYvhvmGVW={gL1gdX>b|cZQl#VHDZKg{O|Fum;1v-{jy9fp7Zc`PG#l^=`iW9XiX$1qS(*&LlDu3`1JYCeTb(V_H)*SCkWLO&>(=Rre!lIgz~D6pq=C~8i`y`x6tz43t5 zv_i=zx(v#KAzxHKlt&k=1U${Z9gum-hi^N7vz)JuOM%`m5cBRoRM%FP!k8^9xZi^@ z^%H2OAjkc@*j?lbfE5x-m~+^CQHV{2Kx4aP=!(NJb5eFy_N%Tw@h$ zNl2f+Hh+4lA9%F}uG(zP{*>6LvCtdhIr7EZp`>1pY|%P!?;-}-BjOPb`k9$b*+0@C zbKAY!#6=ml?vj>DTpEt7nCyX3zkWbcn;nx){c!Wtor@U6V${>EXWzi7ig^GsN3~)r z($V0t=tZH`hw$8ca|gr%24DQ{O_O%j9Fw`x@2WY-wWtb(u@ybrG6)hriOOydUf>YD ze3d6S+C`PwFJB7arDOJVqP`~1&L&Pew4t5my%@?qx=;3{TuzD^EJtZ{dwlt`n?l-b z{ov48TIR*Gh~6ndd5l-8E^I)gqa6I}eN|Jt(BkosT`=Coi{t}E+^m}t{GanZFaXY$ z`J)6}A(tOFM!&5OCOLbu>-ubH4aq}J8huciMzrUdg?=z@eE@XKp7>(&3UAeI-(qG` zIfv#-LgzcypU;xJ$$!vh9-iVG56+TCk-eRHrs-d1Ek)W|+rB%P=@|jVRLt4qWWGrs z950Cb31s%KO_&t(V0<@Oba;O+zQ=%7l`);2Q0R#>&c8*l9Ze9!ba5Df8+;y4m%o+A zC2aOZ!li6F=v{cWe0LqfyVBDw6UM^rE!+AYlw&MPcG-Y{qa@VhtT~??Hp(n`wX{4; z6+yx?Jj3>whQrL5E%giN+%i(Pw^|4oCI4>^o*K#f8n2`s;Q@$j$yc{zdglijEC12I zM0>OL2!N!wxA&rI*)G1#ssMHA4YX$EkXcalDjxLG(AYa&FX+mU0_UEI4lSE}(Ay5m zkCZ@PQSs{yR1yuen!ihKJEzrETSjC_DtmE0=$ch4j1LHySowhz5-C|+Jz?}jLT+Y@ zbK(NM#s?@jFbO#WOPYGpp_Q=;n*tVfrZofL@}VQ%G6yL4($1nM2c+^4kz{7b>MhDM zbeA$e?cUjXh?aF?EnLS4ZC+6UaxqVEAYoaX2)Jfi8X^j=56J^%^(1vpyeSZmaM5kA z+K)IJY>0UR$9G^yaR`0Or6G;9-n636XLYS3i`_dFyG><}{&}dw%4sNJKm!KXJC|NS zow^+>rhR7w^eGe#FbVY&B)S@pTDmQ~o~DRJb2uLwe*a(hP8`lO6H!XsmuUU4V)4qt z6feUT`oGIAP9Xv2j3k*>!jb#|5>c}-n2iC|x5~7tXh2ccOx^u2Yy7Xaj)Yv)GOGdm z_a7jjsI|m}+owQm>dH*7SW*wK6llkWH47-Po8G!7JthULyUlrrF&M|C7^()%ek@*8 zaSsc?()`6ho&uJNYjg@JHG|ovi6o`-I<8~4K_wQ;vTL4Mx9LBOZ}ka#ihwK@DLa!z z0hMLsz+f|JA8KklvB^Z8W`=0-c`DIg2(Y~B;!Ak@TWQt}weJh8iW8}>v>jKXA*;VD zN!qqQMrMdHb*3gNWW5K5+o*I!Y(oLjp%sg3g&W&KcxdBFF`RNq2H3`9^&6B5i6f&a zLrt*Dlv`r!cBb_?9)_U=ZZbtB4V)A0$?qodz#7^J4N_2>ER4+pR0Zm)@7a^TX1a%! zHvW2hLy<6>Y<<)$Pf{+sOwx&gwXd?5s;{)~wOpr0s0T}caXsxq*bCF2b+rZ!vm`mL z3WZF&9xYU1GT8{dK_QC>&m1NG2wz0~~OlFlJ2&DK4p}fdOP0UDztb)}npT1)gjNK+HMUfb4b4CCG^nh!^ zqf+_l=>eCN#7@*%)&oW$&ebF0AEcbuiKDx4QRQeuiKatnFExM|m*KXI@JI8zK8+90 ztHc*3GWnfcryC-AY0@4ytxn*OSAtft3z^Ft0j29tYu4dHgp!{>9+zN{jJ&fTKIi-_ zM9WKqt zqHavoSO|$~<}&;%Dq-;1KUqxVm}^yN$c|FQpbsuJg8)khdc7>Du?)$E1EicGQZDC^ zb9m%+Z5zzn2tdQ>2N@S$O%!2!))GsgoQT&I6&aM6&Y3mqrkOt&3zFrS zxN(y(Z8I{BLfh}~U;J*+M)t1m?w_QO_3~M)!BUf04=?seQLv0DpOux=L69_xuaS2Z zR0L_UV``>Li%gt`oTQAK%t9tg$z$-`K3%s_pM2j`9bjLCfGy+a&!(B>^{Bkvju151 z#Dik-T2BYKuigX@;Qkf)(Nx|@7E4LEPkQcJqdvwp%LgoGP_EdKP7%1^qaRhYp%)83 zil@i#n`7%y94#elgmuL27n!^Jc12iHAzZ3Dl^%+znh8qROVWm(zqR3BVxe2cJ51OY zN{IP~h@QsN0_#gdZ6~L?sfHjv1(=u#`)YoEw&oY1!F|xA`e}l6{^r_lqBgaa78Il^ z$eUxJ?{h($q_OVN7K+*_l2_uNxrb2uP!D5!oKmpana|byykTqXZG@kmDAOsYc)N2- zcEeIy!a+qttaJ@oJ(kUX`vIsOaXcLv%pf5?I~jhe6SVE2sJwBn`N(^Zb@q`@OiRR|T`aT89g zsK}C&4Q7#D?MQA2mrjyx7fD`%i+pm4*sv~QQ%-26N>XFgQ z+yteNeMn2q3+AM+&FBgR!I{)b>gF+EGk&E-Tat$)K5S%Q&oC>G*jVulZXD5JDxlrV zja@I979dW$xI2nNvojB0j(<0hNL8=07io(Mj^t4mSFEAdLd^_e8?5U;C-b5zn32e{ z9>THu0*W_GM3PNauHzoB#J99ey4f_1C|3sXrrJr451QB^z1jl(-RY#jG{IwEAQX)l zyxCLpWy}?lji%V`2;4N4q0w8xK&ZoLpH_{5F1#disUx1};@aw9n#$}?6d`IO+@^5@ zG8z0>?FbJ&?oi7rpb`M1Ca2ch<=y<4Bs||7aFZ*ag6db5(5*{I`3F|y5`}>eg_Hnz zV`4LUX8i#KnMkm-xM^Beyc~XC%|R~BfMB8Lw^wN4UsrZQCoIFP1(g*W*6GYFcQ)YU z<+nU~kR&lvis2&mOB$CnrKnl&1>rA;9vDaNgm$33Vo4P8;9_Z0w{S^zSE>1Y%s9GZbgED+-tH{Eet+ozOEJ zC(C~-;XD1XvGLEUF7EUI-l-^+cdIL=D^e9ne$09Z6en?S<<#@T%yr_$k)up1)ilMp zrV}`7sHAc@MRxisR`{Z~Y643M%lc_-Qc2x?O^mE!hWT^A1%e!k< zJ&uS5HwhbU|CZk05uzgg?gNNOhdk^z)KFt^_l0ib5=kOha>)9XY!M1_q(@m%a^w?^ zb3Yj9jl>P10T4zgcb|V>nMR;Afs{MKtYam(;G6LEzbe>uq}AUjsK-{A3PwM_gWu2q zu)>q)HBA!LM0ie=`LJM9~&VnmQNPG@yR%fz($8*2& z^&meK`Z6wE&jG<}ibteEVyEI|bO|X3DP#Cb25-b}#AYwri58p4W zZL6(nKo%mHn=n5gG0?F_I60p-J$22Qu?-i1fmYD~LFbk3)}4yTSW576;xx`3Q<8+M zWdd-O5p+R^+)e!5%4|ZVX+s9mC|XHtKPNMvF&jQIcaHV4R1oJRoFbrciZJ@2 z(G{MUC>6_VsUYXdG_KkO#2-K%Wj2RMjF8pnGhPkEcW~Ka?xh4HxVU2&(sU{^9C7MiYUEey5t)-rfx=kdwB6v$j+{{=10)1YPRUX&67($Ab zm6dw%-Be9Y!DL&Kv ze2;sR%~*wXhm_J7-FIx%Us2Z>YsExHn2fJLRwfCf?5;Z@Ti2()OhNiHh&M7kiIrf>WiJtrraPpo2D7G{Bm8o!|}_i2?z+@w-PcY97^ zzT~$_f|g#rXF6*LkeAUvonPaOL#CD2x9yvYg79HrTkU+Uh3ZuFlU{$9sYAYLPljy# zuhoK{@Hq`G?xn;Y`gHl&ick#Jo_#0sJ2nkAZV+TDAz>)JFMy6YhdYCa})^ zLe>a)+`q>#_JZJq^jt%#tZ>f58DV4{W&C9I8mwIP^Pe22z-0DZXBc~%6F9RXY8`WJ z)*(*^>3R|(sO6fMp?5beXfZJSul!BY21WndE&&Y)B*L*57JF?DTxIj#JGZe(X zD6HeGZJ1L?uTV_dtXC`zXD|+Q=`VT^lPK7PupPs+5p#-T806N~CaJr{1c;gFX+^HI z^BO_j)-l~gz+&{pkO9;UvgX5kbtKjVf}1cw@Lm{SVrH!%oFd(B>UrlVBqvNIangiu z3LFl+nfi#KFOVn&UaTZzQBHALhHOk@Ep`X&BZQ)M)HOoU3-ry0@Kz8MS^i`skBW-b z$$*XHN*cT+96V-hPI_>m9jdwl1YlT#?~ z0g<5V6Kdre;qMQaQ*hK;FK1^Dede3L?CiKb{86dn^9S8Lq5&@F&ulZt_w<+WVJ|5? zfX-mk&qMDX6WW&ySgHJ={N9N*$cA{+DPf@&(8FO4mv)9|>uj}+jaW4{B{jrZmmCjr zlpl8-@C}-Ldp_6W!_;J-Vk%wJ>Dx%`-)u!|q{sWM=}V!@wUg7c=%;WHg<{h}E~y?S zoabXZ&N&M4wkbm2<>@(y+3BaG9vYLrNLEK=36BGzRsvYyJPIjF$fcv<-tTWdVg{La zZa4MY!T~ukkyS~vF@)SFLFhy~fy6(csn-b{fh8=)%dMW0XK(yCl4kp) z--Os)W z!0;_PHLu!`p;Hk_z#=j;r+U0ucPS=T8W!^BppRkLZ`oyKkls%9K;@~p7U)bS_>OOD zMb!)uFookxuSK0RjvKwCjtsdAg^Gu)2t0lrhS6&Tp*TH;7XGF}Td4T&3`$TY@G~k& zOZ?KsKfLp#NJ=+mv(uSPCofgD7x~ExHZkr{a{k-#GO|~ZEY0R(+*e@~@w8?X--bh|wPm-Gx zTU~V9%c9vzD*U^ABL;Gg4k{^yalv{Mz5XER;Rj*B;sSXQ7)@j0Dv@qDW{3ZSyhD^* zR0hQn<}&BmbJy+njlA6PI6pY5i#-CXB%9f`AR^;I}#4jik4H65DA zFd~cs#(NqIicHX0PVuxeoH(e@b${@+r;5SnHMOw1J1~E%6Fs}U^rR*ibK+y#U9cu(IZv{+;EqI#|D~< zl)LOUD1Q&>J{UI!hWsH!00y9`{|$UE_(IVLKvBoVMnQVC6y)ZsC?@5hYap~#>5fHy zJQG7Z_C;F-AJ5m?&4kKp;Qcf-mh?Nsge1OI)RpW?Fw>nr{Hr36%U5zdDEq@|S9(Nx zE*o@xn~4kas3u`Y?IuyNX9*`vH{yB+*nx$1s};u=M4qG8x40^ zPnZ_3BOqj92`3mpV}$~XvVQQky<)Aaij$U+8{Xee*)?9*fTff*vwQe;7o#4c{KMH5 z*=iRLpDzTNo!ce;5a$fOj3{(w!AAKNS81==77-uD8^byt$Ody?zMg>9o~X(xg%!SS zm~gZ*UEg!H5_-d-{jiV$GA2eyBJZ%Aw0_t7*rA=H=}i{R4go1pG8Pt5yrrz%AF9m|CFEt`! z%Yp;=HQ=)knC#?t{ZgX#V>KADNJLMO&|q3# zwyjj3o>Jv#C`_P_TUjz#&Mg9X-qSF>kM&XU+1(R6q>$r=~CGk@OKw*LhK=W#(OXBgVDX+_s$Ji`EPBwNgo^X67BJ&lP_= zru*L`o-=vM-0;&=**L3bAvohC1!PZhIJjr#+asA0U=$-Doc2p~;&}!!9(P1~-zm6Pk18 zc|K}fv7a3@A&4-d0K)2r-JH@8+HN@#A#m+fQG_RIHyBfdmi3rx=uPUeb(1~Sid>;o zFsIc$=v$?W7DBcfUTmG8jcR<7yFy${zpFXDzSt?dst~)XQWiz1yBMSI8_l4q@IhgMP=s z0XmW9%ohpx_U?pbrY!GINDv zxFYLU3u3y#<=3;E;ok_dhd;r!o7$lBAb5{SFJOM8EUIF~g$Y_BrD{Zqgu8~jQm;i) zgu7L^rMhyvt{|r|*r)tZF*R_;#xxOzizX}0jya=ZIL3R&;hNyD=F4*fLOsvcF9BY- z$6ETU4J?He0l2ND(=T!=@m1ymI=^==KWQOs12n1sHRfyKOO$-K%Nh(tpV zSBi7`+WQ7{-_PZ<%c8|P4E7Cb(vs1SPkm&WTyhK29H?fR9um8UI<#0UlX+*C<>SoK zF4PPvC;v2dvKz#K>T3moKNt)m)jHY@7%n5^YlDyU_guSr3k4@r!uVY*g$#-I+2^zbsLEZE#J!_z8El z;~7bwG+we|aP2#N-2AL6n0je7`aE7{?MaU&*n^}T4V;t<{9&5~+%x7pBm99qXfSAy zA$7oN_lYa7ZwkX5u#ZnI1SY^eSSB%k{BdLHy;5WH!!p%+eyJ|JL1siJCbkQT-Qli= zRGuRogzJGNNGlB1aZh#J)~|TuFMQ!zdtoi-{j|-f?lflJ(XYr@Cn)V72+C&ZXyj(o zcJ8^DK%UVy;9KJawhFdA8*%?m$r`2p(=h(wAlI=-DLi|0VSRPCSG$*mH$ti{N|Z8z zCpbi%_H%9G&&vA@9ud!4zA!3p791j|GVc8-Uqj zXQ1Um;2H7_NZeXava9+;AvhTjti3jS!@LQ-;}XW#F)`vyAP{fe=vvFhGHd4UhnqFp zw62yr=;O_--+#aM=*QccaokknN4eQA-H_HE^MO%Ea@TO-Yt+X_GW*}A?}q$a(CnYE zt_0;nglEbC!n`Tv!{IJa+6^ts0mE~UA5q?j(=p5~5cF>HNt!p4x6AQt?}rUcO1uAy z`YLZk=VByD9jhq<-i0ujB0rCa6oRm4ail$A89zK?vVEkJHr&Ok`NHM1Z0bO#7srsy zKo)~jK+!=mt@&+-#ERjo$N-vRO{-nEL$3qSxQ^Ve(4qB$bVw?!P1~zkD?Sr|;yCd* zaosl#SN1(hr76Kaiv(Ib7uVoD3ceWwJ%nOt+e|~*W9tGDQg#lenqGWue%TW9 z4Ok>G%yoEnj&mHLtQkAYbwJ)BA-~Tb2D;K5o|>BqD~?vZj}OJv@D1DuBM+)1kWKLI);9bHCd8FH_q(nh-Ug)v7e3kBptuUgu|51rLn=4!6OXz%7{dG4mkIhOiK+m5U$** z@3y^bw1euxJ6~+uZL|jm-x0l%^N@eua@`OLBm6$Jj3YZbm{qLX@#tu$2O|4Tt}Jyg7n2 z0uO^3!#>QY1Q|4$0h^VC-*i}zHN%a6U(Uy7H7*a*&Bko9p!iM$z&`Sp;%rPUL_6LH zc!K+&opGuN6_z7@L%|+qN$o{FVksZhT{>W-&k-%*D0kyexsmQ~r~c_L88m&#FXY~l>La^udk72d{4hp`#(0RI3G+PG z4RmpgcT^NzAu1~t_E8hCHfr#zkVYxZer;nm=Xh`6_k{G+&X{y+=gm%ez_*E`0oBom z`;Sv2u-eOG40I>zPJ`yxN4p}<4qRVa0zM<|e1&zaRE70dsEkJ7;zEV4!3>`T$Fl|| zk+2GccI$mbKmhARZs@n!6h+sGkDb({AA#9-=(ySPh#sZv?S5WtVQGN0iu9GpjU?y% zu6sbjUs$qgG#794dO2|rCl&VuS2QOWOX-l5t}7l^+9a(Za}hV}@0qn&m&8*|+O?5i z>+Lp?9_)vH$bamB&AH`q)cq){-H5_wo<@JZVT%c?=c-qa{(=}Y_rgV#^Bxv)3LzaX z^c4&f1C4ErbuW>d*&J?D8+B)p42z%?SKu3BuIF>s*w}jLjSvun?A`BjvoLA^;}XP{{@eIKbfCpjBI_!u;&+m_1bB_ ztM#eB)>juIe1E=&_bKp9&%T$%)Uq`4hSc>K9?=%d}e3>Cxp|G|NM6d@mb=A`6Xxf$5=k* znMaN0OG|I2H)&>fNB;a->D2Wz#0}v~cVoy?7UkekHA-GtF8ZOcST0W%uaVJme0_n{ zn=*A&ro%PkFu6>g;*d|R$AAu$d|s@2CpbQXSWB`(TALS$}<56qU4N~>0 zF)q_DmiUxN*=b`E^(N&e0C;upZnFw2eID$XbIg+w1XcXl)S|`uR7o=xW z%T3iw<|)=Xa-=KtV{VB`K2oJMmrTzURH%Ri+OsYs3AS#?C})?0b4ak}fqYb`gI@@j z!o?Cc4jY?vi+=yCu?}d>yMrAFfFPmYWc9|2tJs{JC`#{&-7Rs>k}guIw;vv`8=MluG?1OF& zETKW0boNH%jAoM>vvh99r7+G#ZW_X+IO5yIHjgdT8B++ae@MQ=iSDnLutke7op_sA zoIsA9gHOguv6g_>s1~GBBfu&(H)xS77WpwBmq)FZkFOv*gH5L*(jiJIj;vGu{!^xc z-L%0qK_-*)MCv_R#&XYJq1b5fkgHl7I25^lw^%JB5zaT^<|QK$(=lPEQ~Qo3uXIFs zg1&T2=M*UKjeSZ`+XeERHKj8i0^yjdt(z3fdH<@ex0pEdQ26UMBkbf#TqKut&q8_( zP15kay}$cd@yax3yc@?PS&41M^4!gAJRd`zI){bS60?pO(jDiHJFStZ6$679=>7Lp zsa7WZq4*dOxUO~9f>6fgP>u^0V4@xUP8(7*M@lB`!=@PbfPN%1F-hKR^`hek{pG7E zVxFfxq*WBs6L0JA(pnTexAMcvWt_S^mu5$mW}A%MD{Jj5S)xZ27zJO9tWu&>FK-x6 zCMl_;5}1$MA5)&!`pA)jRgOdol&cfPLiXzE@iZ{!XeD<+W{A&U9a4JpX%{JjP^^!Y zgK`ihHWn$kN(|_!-^v|T-WvLE-IE<)l%rr>Cgs}(W7UKe-f?YaI z4suK}*Bn(2T$!A8Ki7g@yCOf#Rnkm|bg}zQb~EwsMCL%0VuTE8!=dPsn03>Ik_+ck z?I{++kw3E9u)}>N2r%LWcl^vin5l5K2?Cu73w*-zu8Mag#Zed=px|$@kaNw#+YTe5c>$UDVinLK?QNp?bmk@ zP=GfyIxZqM&m>o;8tbK`_G9R22+7QMpbg_$374+fvl>Zj?}+o=3F%Y1GENjWJLD^e zhVzvo694?nxmbr07?mjac`g`WDcnncWE<@UGSTd5aGg2^%dqK9fc_IVrVepJVuSDA zMM7buS9jjph#lJ-psr2tu{O++uodvRsYZD1dHY6i`icFK%k^}x|MqgJGu#vD`C?wN zR>R}OqjC@2|NA#N8Y$rZsYk70(&_hideCfTdMKUYPizQ(V1XN?LhAQW*HdaNkpB;G%aQoWRApkz@`A zJp3Xs6}H7t0LF741g`}n><5S*i20MojEFx-M{1y-jY!(2)aL8(D{8AS;=xB#iHkP4 zmEJBLqZTZ9oZH6r$#+tijT~H7ug}q{Zz?besILkRetuza`5xIOMFR;kB03Pi^p|$&U|p?$0Szo{*L4IOf z(kwjfDy5s*fZq`u)u9A2@AX1c{e0KbPq!zLgvrjrS5_<405$~fC<^95!L zOcyqr`($E|!7N0xtrMp?;xQnGlM&ozT&%17MuxstW#vknTj03og!oO|U-gqH>@NzU z;7+*ef`AHXH-hDYFRQc<34QU;0_5xS66N7odtiJnAtLnn_X%9R8B}fqQ6&W|?rhAC z`F-i4;h$0suhQHMchDn+J(+;zJmWYJH|83^37iDH25A&Cd zaRCtBA8D|}$+Yx=Xi08ITxJ6H|t>VYXgs1KQrj#US`d-cq*Smzmv-TB`66 zQxg}tDoni?%PnL0aFUVQ*lIm{a_AN^XT15zjS$%8yj6R^x{`KM=VlH>?{|&|2H%zf zt1v$uT?-{p>3-T@NYf^iMYL}G#v8C3bO!RMx0-|Hf}2~wD2%u!RA0KZWg`|~bbNo?Hzm3hnT&i7YDzf{(1-id2YlG&E=tx$R!QbSZf ze}qeR+`C5p25vfhG|wCKK?=h$$#$oM%kncsjWKN;Iu&a+s9~ZP5%{OI^x(e-8~DlS z!hdymnoOm1oLziMI1M@CrqrLyNfh#BzViLgwJa+(3yGX82iT&1Ou8&{^NEB`%rA%p zLv~dkqKf^(2ewr7X_cU{%k+X%+%ZTGz=c)fGhCw1#3bV8j}8}`qr$|1&pHe3U;Oo~d>U9ixvp(g8+`(Scgmgl^m%nt02KK-a~==C44$iQYA;XzCS z`+}*I={0C0A8MPnTQr}rWwV3xz?jZe53+|V0a+iKR*c3T3XWk6_o_bhEo+&P-jpxg zh?=btI_i>VqfbM*Ii^_|-hpBr>8fwqJ*@lZ9lY{tBrWZS-#!iB15-onj$Bm^*WpY% z?QRvgW)e^P;S=HckoniF=YVdZL0aOLKHzDNF2Y~8ahMAu)TApz|6LBuL`4;MFxFrD zgS*C#x>>s)aH1rck`_oWzDDwzW?Jw%BIe$lP!>Df)s_z1)M(^YQ*691rl>w|O_@)^ zpuq9*Ur%3JFEb**c2Qd^w#3&{D_Oiig^iSCK*C!QFax{sIwc3t2y|8Frs6#YmhQiN zQ)M1dh3}vhR^box3eX5(zsZj9r&arwU!5lzP1iG^8Jna@*N`UvMit?`@&|eH9ri_@ z#H{fq;gJ`UEs_^bB5I$KS`L#24GSicPX<;1zGsmCqaNGr6%F1&_SMCsGGLBO2XfhrVuw)j#p+hd*2~b=MOZ(W zlbJ8Ub^Q5tf+kKzSuFekGh7VVpL|C5|ClU9Yu};O_43?(Xgm!QF$~!d-*A zy9W0F!Ciwp1b3If$=;`Kom(}l`e8oIsvg}v$EflDUyr8eDP6}GYrx)w(2Q}Q#pl-2 zrJU|&oT421&F#3B-St4{RqS3F4yyj`CQ;2->fU=Vb>m?F$%yB;Ew13aqwJ4bS^i*s773b`ZIH|a@!}!!b=em@m;c~e#_tGlko~cX zt`o!ZPXJ$IjH>V?A3d~ym7<`wtvnY-p(R7kdZk=dFezLaZ04FDYKBeqNm;r2p`pOA zvGW}%)YJw~Asq>n@5aI*zfcHP3Y zWpnS>EX9m+#U*E^=BX5oj+1W2%CwC3J|>Rct+VV$Yks>T1i#sVEp{~5EH?A@DRcY| z*>H#6KlDpw61(4R3na7!Hzfda@MEpnacGEVUJaRzxT>9f`C$_#B=)cVx}N0l%Gb;p z5%`0oN%wsml0tVc5swtNGM+8bz;v)QIaWOC!6LFoLU>r`kAZGgdi2EoH#AROTZ&lX z{E*m8c<*;-oQZ_MsEuTlS|zlR{^M;5mzub!?JQ|I0sYDFZ+?`6l$F_vvN zu|}@cTsfK4icR>43y>TA{V#HPZZgijS=3Vq(`|>c5oLf$E}$iRATMag8MuQA*unth z!|tF1mOy>XfOs^3J1qc_N+blpqX&S55=jPRq=Q(tAv6BH17iY4U<1)1MR=eJh9Ip` z0jR)PD!>|4-xw_*mrA4@5D6Dp3M!BW+?N6vxPfW#fvKP!4Pb*FASVyx91iOo4&ado z)L;UR-~#`BUic2LoGP=VJKfE6Y{9tuFY6d>RL5?}=6p#o;$0*|2jVrT)(*#KtvKy9eL zGtiDA@LCJ5Pgo%k3=`-H+1CZy@dsX;z=8XIx@th|eFg2I18*_|pA!O~$#}N&sQptx zPjS4n+@N!QV5@rIUz)xECFsO{lu!gnl5e0y3s7IyL0y$>a!quv$J{dMt8J(Okrc-m zFRimu2-PZWUpRb&ACOBfFir`GlWZmyi;7|fImiQ4B_TmVfxv`5Ix=3O=w7MN2D7D+ zq01(Ts4*m_z)`3}eTPs7Ah7|F&;ScieF#7nc|b}zfWQ(&Kn3^%7f22%5(cPH09LR8 zs~|;E0TrkKPSDOMMxY*gffis9K2QpXf&wVS2((nsnF1B)0tm8$4aEt;lqy=nJv2KD$r~p1tBA#-~7F3rOMQ3nx4;XXq zseS%>aD8~_#&G~1bwCayU>X&0R0_y(0_89Rm{0)Nuz~WBef4SpCT<{80zdf+9PnBg zv~!9PXr~xxHw5z&6R->)h!5GPNDF8?$Ux|n6xpC6al}UPgo)$_hvhlVKD=LIT>DPl zTw>1t1^FZgZjlvSDFeM`A-z-p0u%ruR6qh;-~}x}IpbcC^uN)D4J=ph6f*PhmvY18 z(!k=<2oNegi=o10j;>>lsjH8!tA}UXQUH2QKzhjo-o*jk z2%-MlB7vXa5`dox$d44ziw4++3A}>ro5lzvW}N#=LlQs*0|g_t3t2cy!6%7Xq<%iO z6a5QE*#)J!2=>?n#3wDnuRfgZh{hx6n4Pi70p3{6kOV=CI!DHiEkZ! zo*8}I+B^JYPz3`hL29G`I!KXHK!x0ip4naiA4zyTj< z1}PHFsi|OB1@r$s6gukTlo>p$&wTf09WdVlJ9a{UnILEk*k6mn*cxLJfMLt`-5EIs zh)DtX*K5clefkZ6t>LpT&SVqel9N%(stuupKx$TIqrbCLX=1Stdk+{o{f>d^D^p&7 zA#%oz0+-G$x_e>Ezu`{raCKYucf6x0>|5@-Ga1C%Y?gKt)~mLE{|c*pQ+?wjXfTo= zxP9|;=Yh992@K19=XCu_4&GqG93Y%G?@sH_RYSK=jPF0YnPtv}$S!gB>cJsO;TjO1 z$Lbb>TrWl5g*`Fr4nUe2g}Sa00M@JTc)wVCi6ZT~1G{PJgVPTeZaT5H60gF3j^W?D z0=nscez}?;-g{twmY@xqNvZV8McSr=-}OC&?3UX3awzt!+5uUw4enDO54mo-WicYQ zDtOOkJ%sNL7-`q*Gj|6Wm9s?nU@R>9bcgHIbw(dn{%5AXRf5gmD*sK@%y4ymBg7*2 z^($Al@q{tD1D;WC&7juwxc#^5Qwwzm>Lv&WL$3=9cKhW<-PW^fANFj!_5Sz!|C!y0*zD)G?g_`y z#TCWORWHJR$C;e5k3`-0W%3omO!<}EOzM4i+Vwrz3#0(E(@WdR`bigGx&4T z#HGJ9!HJ8qr{*n_G>V#=MI4HPGP$I3O^f17zhZxPRE^MR zRtObql)g%WPh=iwTDE97aY_U6)Usm(?ieDWum)YQ2BWkpB@OLWX3O%-7jx}fJakJ- zwJMhbdDILYmvT*0we(9lb@=4Zk!Tbw3i1${7CTx_JEYs6`7%oL$}MGzm)uW%Mpc+q znAMnp%b&piu%0mfv7TT6|6vzV5=~l$f&hSf$bZ}+mj3{Ol8NdG!TQSRq8K0HVr|V6 zni!&zB1u?@H^I@186pu)PE*DpIXa5QJP&inH-il+bJbr+%4o&`? z`yG8;WWLhI`b;gR}ap5<)d=f2iHeA~biP}wag`Zj_G}+CGp9|}W+03I$r$Da9 zEs1Tafm1AIlfu_B;ED?o>#f<&q5OF**&xIlAuQCP(dDqZNSa%VQ5Hi6Ug}p$u0w)X z+)hPYC@1?xS`w4%|Pj}uKJ9qzj5k5!PK8gi5BRlC{TRVGl zq?T=r?0^IHu4)sSmTDW2Y}>h;=_<GG;312;wR8BCpuPB zQ{V=%be~XHp97P9(sL3|wL|PQfw3R?CYIKq)K_^K96|&nKe=2mDnX|nlX;xH2=Z52 zq+Dx)U5VjcyI2I=>5#~>$4i={9d&vu$V^XO{UT#~dt{vryW;8kz$~tRWZ@F%jfsJ8 z_F#RfB;4p06(J6v&8Nsv2qB}tsXm({ugxhWf1Luu~r<7OCnx`0DyoX0Ko8H ztX1f5NbF?YVPvo|C<8UrgcVjdG8kG0fQUkZmqvvG*~~ZAO#zXd$-{0k*J)>HTdQBI zqF=4$jJ*g=c8Rs9Wn+h3t5v;J|J$~<#a18c<>RQAJ9%t){_5#1GShe4|0&ORy2I)v zpZ~_{tKcgnYHmU8L!uN@?go{G3f00aXOMf)tux8IUN5-BCT=OmcsvI;Iuxxb(?BvA z&z&tpuK36ATQ6w_3>$|isI}UMxs|os2Q78)jp$l<{is{XxdP0(cu0Kl-#*AE2jgY- zZ0_T%wCUk2g!EnZGKx;}6nx{@d&T`k6>Za(&3h|r3$~PaHC_T3aV&AnSsL8Oe4ORu z1ttoPyF%dXTkCcuas@nDY1TO2XE7>teobn$A1dlr1EzE|RcERa;$jrFSsKgQ+?sqZ zK9!SsCxw1^7W3A8;j+j>c5D1-_^FRtxEyJ+O=Qq<5c&NgWIKhh9IEAJigX2H=j#MC zP7X}U977Y?#Yqwjcu4v`Zh3=tqOBQtxH&-(`n122wC#pp(nH z>;n(~Lgi|BQb;59q_7e$rC;VutMFJ4324YMg~US;+ttRAV8rIrnyD*f$x-)hfd~n; zC`L6rbiVUyREJ80$u3y)B_~C$F=vKjBNoNVC0AKfse5e5!7Rj(VlG4mJ=#wW&`xok zQ1F3qxp15Kif&ZM@O~AhEj)fdU(tSVXc8~hJJ^KPCBsI;4(&FO0$4xwWnyGbo$*C5>ooDeMvA*C<{gDMa?Y9 zxYi4noPT9T?VM-2WO$djw?^QdASCxPQPVv##SDI(W}_vU{>N0C3PQ3oDH60-VK2$k zy{yU6MPh^2jdoK(wdJf-gs})wA@n*&Xx7`Suv5^JSFxosRU#p{G6TxqMI4dISaX77 z5Kl$c(b!>LXa6kYL+);VOJmTtp5;@Kh18oE{K?JZpXnWsL-DFOCy_0>Ey9t7dj%u$ zKD8?%AXJS~|9;DN?tI97>^I943cwa~h6x+(w5zawi7JNmV#K}|0#c9WcEk5a72#Wse9pc(F zheuy(q0G!$L}B*Y(Abi25cCCg&32FiEBY!WYTUDUziyZoOA3ljm!glx{db^^UE#?H z$~=6sF9#)AGQBEcXia znDis_u$7PHo_?^@?GTc2NSq{y{Ec&=s2^jVeP(+>bKK=IZ<(DmE@T_bcKFaOyT6Yq z(dZ`R)BY^D5ZvD`ia7gIxV#2QQH~pzDOO!zZcr zY`p>G%i%ENxq~tdS8}Z)KN|h=EA6LX7L6T}uy0$<8?ke?UwZ4UVA<>Ehe2Kszhk!U z&x@@Q+>#!p^&5yX^^Z3&`|;0(?VaySe?4CK7Y4|Gdx%?o=~MOn6#NKcSL{((Kg{>w zNSOM4!meYMK)z&e-O6V!4kY|!JK4S`hCJ(}gcli=GTBW-|DCcdsjr_}>_5iwLyD~F z=TfvxSvWqGvS2)52{L@Jy2(b^zjOhpZpsUJB_Cb+yrbf*tIyC0HW~$@kQOvqHp+w2 z@!8iAr;YJSpDXU=iypbZkR@3UY@5F@0{dh(YO?K}v1(W_qF^onJzLdOVFhZ`O1{VW{q?h9KH#U7js)|YIiV<=JqA?mFDR|fHCe>z8U=9YJ z;ckS@Q2&z9@n}hB2w62Zq&9IwuCqP30aGcAz;P?86328xS}{Mvpm4 zhc5a{e(z}#3FVa^3oIR=mtYC`TvrCdu+kGCLL$}$em{zi5^+bh>mk;s6V!KwNtHWl znij0*DAjr>0ISux0F`>F{R8nO#(%X5ZIkpz^Y|u>3wr(7qKEe@}!fu@dav5 z#7p79@mr^oPKXL&5!w@CUnkV*PBGU0YEbOev%GLrA_%mWM}o|~Qpc)a+z|L>MNTaG zihyr^gl{Xfp2nAmLi9sXMcjQRoP{Y$1*3FM@%7cW+-*>%&iT3%=~K+vc~hdTZjP)S zntruAV3lRMn|NyqB<4{ls1C(GBo74yQYc;si#stFP4~SN1fvNK(nJ}^to5~AOYP60%>?%~wjqsJ%}A6@=Bc(&q?-VX+&8GN@b>swwwreyFn)Lrq9 zM}Qo!ztPnD>7n~X#_%$sEf?9jx3ktc3Ysv3esg}%1@Q8;8L@eJj$F>h9 zOa#uvqgqS8mtoct(R32K`XW=~gc(AA9nwgxJGONXDpGqWtdwEf7Q_6P7*KuvMFVU) z1m}JEGmkJvA%=|OX5Q~k^_4k^t(bBH*C{y(U-6?3&jv|)pJnRmVStMkW_LH+D|sv% zm-F903`YY7Hfdxa;6*Yd2$-HIi~1o6`4g*9F=sgqerb)kVXblq{Ws zgudcVe22a=i8q&#QEL+JH~s$n3o6yuTSJGEVs_wLBk1DM&Uw&~>S`x95>^fT2v#`0 z@U>yCYJ67RD!ntK5}u|J8L8w&Rd5wUXTTXHMS-7g$={vFjnuLt>nAW=c4}mY9e!sK zrW}6fSV$=XaufOeSQ+*R&`K*_oI2BWjEQ>UyW*|*WX2R@b(uR-3xQV}*?Vw+!Fh~xSKq-T-c)a+~R@}{@q7reT`}#+(35jkx(YidKaw2(Kx*^4mjh66E;#u!=xvtSaM!m54C{m~8eQ__NPC_+)rO z|6Fkbq7v$GDL3l)6=i^CwDaO^p47cCvZcMLXDpgAIkaT_=8s4_D+>Hr6Z^4J!8}N% zj=$T zNm^PQTQ{oJ8if@bjFHq?SdR|9Spj=0E1U&Yq53bE<~l@3&2Zs495c|rv}Tvz(Kaj? z0|n2ZdCb3!M;=J&qi~@;kf{Tlr;(Gka!Vy`YPXw6O!AEm_%b$iJmPAz9`VFAIMYmbLYgC%1cOJsa= zpIx>IDyzIQ`%`wlj+2dxP5vPz5Xh2xQ2cjvRE!wsr6&|K;S#_o8>Rta7&GjKoUyTu3T>n~<kpj^aq>fd2{lD}DukCCy}xQJlwv0%{Ck^bz~cC01vYF*lZT^AeH=C(W}JUx4Y zteF8tcy+96UEkJhL!H~cgTX@+7BDEmS$73 zREK?4e@k-2Z2ZR1%@lizW|K;cmS{LJeg=*WY>oF~&8Jv`t0AMwk!m?l%OQWGWq);b zP1Q5E#=5gy;Jt?9z>u={&m)~h%rQc%+x+*ooT*dkC5y}Gz|?`G1Pk#{tR40_w>^ue zjxc5jYDEQI)t#9m7jgQL-=3K+Ak@-bopWKY(NQl@+~aLyvpLcx`ON!di5+8BCsXwl zEQmNzOY=}CrhYzgT(sahn|bV;eSTBG!M3$WxFA`mXzsP%Hm~|9vxv*LQ9D7Z#B-G4gSsO+Ap!LysjVPEZv@)l2mNq*W;buZCZ4pH0E29xNk z7Pg@av)f|u*QX}WgN-ncd3fZ8<`!WvnE%PTnVl`*wK2$}lzGCprATGB>e{|^|JpCk zhsk-OiFjtY>L>~KRsdsWx%y~w5^e@&Mo=u~9Q>UszW++%J#EJ``e|6sj6UvZi(-oA zYHA+g$uW&;1a&`62)R_~7uLgXA-tcpF_#+>BWXTY{W7w0wNFuK#4@x9U8z28;D@Z6 z#7Qr6lvJwn9;4F>SGO+pvdixYBMZ`bDGB9oYhif)zcZJ=;|=QFH$O%WHNREX+@Yr%Jq8FF4<)+opg^PwHsFwG&HO-x}(oWZ~FGPj+VEq1aOrxuuvur?2_A80+dQi(e=`v6+-`{{a?X`U?qn*ssH;9EUAFXDai`u32 zQ>Ya4G)I<;7okZ$a$YRpS9J;O3~Y4I3UsukDytmvE9vwzUnLa}&oE=VxdK?I{x(jw z5b_u0K~NY=FdG0ifZb+Kvhb#79C?DrhSL{wg-_)>1&O`_Hq4 z!Ijxk_faR(y`Uc(&i8G77fex~AF8?inKyFjFjUIV^R4M#a6J%mMdR;3Qyc@4Rwk+L zQo5?%@2Ov#p>F9N(o_dd>ymNwp4W4!oyrkcw>0@iYeQy!K44w!gkOnWG1OJ1KHS(g z%|*|s!*BaLz21IBA3QenhP|=jsh9KNskj!1^z8nZ;f{HKiUjJ`v@#3JO!NM|Ja|0H)2BX^m zbX&vGo9-YAGc1C7{qh7ul!^KBa3pM1u%b;rweCJ$N=5zC-N#=(w=hx zudx25e*11KqZ-k6)B{rNBD58neO2tDKAhlL?ZKj%11#M65&J&@Ke2b8(7tGT z?{W!N*mj0b)@j0ZfBPp@UsbwN{%twjqHAqwN4-jQ_=;(q7uB|YkSO2johQ|h9tLVK zCZCClV_5rBH7oz5(!JQ)K7~Q&UNe4;8w^&G*4k1)3@q_k)lw5@Ow|>7BD&w4?z2cG zvXBmEo&X>Hh+|n#?}@neTOGxrj1Fd#`AQ`MmEfvqoRGc|Ac|;>wDW?V`CtGm&M#k}9- z&Fj>6T-yD;en-;}v;NQ3&B?f`QyFO>#M0WB^A85wvi)Y;dx4aKALABHss}lR8!H9a zHnDi@?W5jyB9BUkvzdtkB~x>M$Z`!2+daT#UXt@IbJ#Bt%CSLI{Zhwt8W4i@}9e>F1h|1z-oy!EyVZy9$by;XpEn0F-JtUFIF z4wZQV4cXtAPoi+h*_yp~{>-WtQ(8uu+-cjuBb9fdgyq0d-m_(V=V=>&rHljP zIkfIaus5g`yA=x;j~ruH2C>V(W&7D=4axHm%BdUo|2pfPZctf1lah3At zs(12B@-Nlxw!|14JF87IjqQtYbK8MKmGp_~PyRH-sA)3E`Cf|r=!!w7pCH<-wGEF;%qN588 ziidOjUQEg3e$ys$d0P7=FLBnr)^DRB)vv(jNr5(sa%baw!V4|Q3siK(*!Kxebrd*Q zMJ}6619&#g{4L=d(3kIe;VR30H*;^T5V@zbf zZw*$gpS81w3cOHG11?fTB9I8da|wXB1k#v`K_67PAd#=gUoQY|f)Vv)F)!tp%KJjq5*O@^44hTZ;$OaWe$TYp1ONH4egl`nU! z=-54OE>n9EbR4jSmxqL}_ImiAwSx&dpSeM_gm>=}KBjr^`eOwwmrMarFu(xarU zu=$C!t)Y2#e_dai<#cdrXoqfkr}tUVml%H{D5&!hV$8Qj&5u^%`lfP-%!B7i!ITSj z&s#hFv5T!SCyhT<=h^#r&y5!bLWA7q$XJ~X*Uc0NM5p+t6R0=>i$|yg0vOkjB3>2D z+_0e$YbS4NasSfCRNe9JZ8V*QDX?p@=`Zrz&jhdJ%X@{$T6n9vj@5EuTB18E@9dL% zh0LRcLx(@fC#1JM3WuY`yUN%5W*W(?1B|sHjoZY2!%820ur**|3F9efwqB@{clFNH zOU(<2`wCm)a&Xn-HzutMfszxxURaw>AnglPU>KEA$PvrDn^-dbE-v_55N7dd-nlnF ze)o&Wp{Pi_14l^PfYx#Ni}IL$o!?VUX|Dg7AYgVKNUC+L$o z&;*=_x$4L((>W)GEq>W2})1Fr5qH5>sA58nfyhlX;s)l zkyN7K#Kk*uy6I-kcm1~J@merl-^R_F7n)PAf3rExYS~nys(~Y}(brDaaA9PAJ+oe% z9d{J0J6IzL2tq+vPFZ%%NK9Ra2qRbdV+BvLN;uC(S(0E|UBAIxqa z4t%d7Ib&0s(&Tf3nVPyylA_sgT_l%nT2K|tG{{4bAnM15bwS2v%A@0+qmq$cKI+HK z?T}!U*J-(l4X|S6>~hZd1{J@vr76KT&KC%eH=``Q0v1siD4JI474C#=n-c$!F5E*; zqEB%{snd#o65%(s^t038{Lk80(-K9}Fjlw})fKrJiu7%FHvU*Rg

yl^4sr>&nBA zl$58xJ=x=ERhN6RZ6u;Pk2V!7qrUa8r^gvUDIg~zOMu6pMez8O)z1~Q(lSlUY2tEY zLJ40!uL(Trpm=o!Y9*FJKR2LXgeUgF?l<6DFE9~tV*Idomb^RLEr+3d<1Gi|?B~7T z6N`}}i?f>J6p8qqN^hFtK1XtN3qe-Zp<37<*?o7t=w%x{mZ9pH6&WIDl(<6O%6h}$ z%GYd~2^M~n^0Ye^|6arX#=LqXDp9fyyX9sr3taJ8yI*FbT)~{5@c-A+{U<+YTH81L z-MyZ++*^v0=G2mttkd)G}Oid&$&12h!bjY?Wd zioTSYxs6UMrIz9cqk-v)BH&fj%cf_5=&lIYdWrC9fwF{2(T9YXQKdK0@jA*y z%)d7YFRHC$9$F>$={kL++?UYI-O53N8TX_2 z5cB5J;!Cd19FBgkz#8{Rs6S*Z|9QhN5Ykdhk^}`xblxIy95twAuJrE&gcmpVW7rSq zb1PB6Fe&Hi1a12W!s1o!@y|EVU z)$HW%$)WlKOqO(9n-L>y($xoqAJxz6?hA*E&13UAU-~fB! zK;@1Xe|7v}z1JG=!q$^3V%BWsZ3@LH9mBs6 ztm_POtIdtg4uSz6HrU%4gGoxNcrRX zPV951U?`wb&GV7t1)_#Mlv#v4pe0{hu=!due8Y4V^YE0_pcN?F_c7|)?a~M!9v`~= zn6_55$5eFcE-m-{=WDw4yT60Xb?o=tK`__acuTtUN~>^rx*|iLCes}^b<_N}8<{%6 zut&yVLZt;NKV-W_s`T$%C9p?ihz`v-L9~RMb27@!->Urg1vZo!8XyQM(k}+?Trv!- zul~UAl0h)F?w~yv(pP0(RlmNHoh53pqkan;I-re-An~oJ?8cykS2QRi(ax0py(7`;@B|0;Rj&5Mqb3q&HiO%X}GB2uwse8-9oD39*5{d6X_)*_oS=o(Fy^Gbp6qv7n4gX9D9;d#f zo@=4g3%YgGq)-(-TMS=*@EbEFp>C~7Z4wlBQn#A&T!llreM@U7HEJ%LZoIzNe=UQMo>Kau5%XLmtvbShWR{^OSnl^unyQBs~f zx^COw<4k-h-*vcX{8Z6(k6ZW~Ox&;|s;Al_(BJcSEjZ$(lfPeW2Nj+u?1DzKbI-ln z2mMUPf$4U@X{QZZz_A~lB2l``!^f(Wm|XQ9LvD%5_VWqr9hf(aZ=l-u z!3i)*WbzmpO3-4@ZBf!AHT(y{OtDDJ{i8>{JZ#x(o#USp_Of$Bu;=GO?V~pQ z2Q)Lx=#YieN!+6(8Y=~3_`H36)`q+sg4ft46fJN)(y|5H2-0GJzJx`k>~O&D8X3Z< zZ3l54_k|Wxlj={YqQihbRyX2Rf$Gv6wj`EA`~!=2DWtYbxTM4m@8To*{ar5kWr&V0RVT)%j;lm1|Phy_#! ziGFM>KiIEHWC=G4Fd1wmKDb4bfliQPDvnT4zVImK{f#0;Gm!Z<6RGlRt z`uo`2diUtBFRR>xmJDy|LTPUybM75fSN6NLXI4;7;8wImMq2ejgmWSSzZasgWB}CV z)TqZLc-3Zx{y>7msyd>YCOXr7S*$3KJVrFxJQs~@*22X)p6lJpz^2_CiC^=^-_1>$ z!$D{HSQPTPlm>@f@Xjq!=%R$oDDsJMA%G)n8?9LOH7;tHpR8xj*{Qjhex8u5Lu#C4 zK1gtPJeJf6qfN#c^YnSCuHPd1$1$bKOEBhHmRXd!3qU&~ZV~H!2$LuQUViBr%}{}L z4(%;Q7P6IaRHd0aoE__o+|gcvchrB(by-wtDJPk}EV42jO!Gscl4jz%+7n7V0!q7+ zeY4hbo42=s{>MOCo;CL5ru+@>;xP6CgQ}=eHr5p%ubc+4aTM;J$gN)@TI<-=TFA#S z8LI9YVO+9pY_kj3%EEfW@Y*M%H=lVv<6qd*MS3JGc0|?*w1~)65Yk^Kye9uh6^ya- z*!60Z3v)q1@C?Q`$XK|A-;@#UjtZolt}kvgA!JZaV}I7#WEe|n`#MmwSFbAZ9Vr%19H zZ_ipjR6?gO$afA|&+uFg*816F!6JcwbLAp_aQ|E6&o!vnx)CY^)|zVaHQcjf>IYUtZ4SH>2~7gU zn$x^t+PVA&31Rp2gpgtuS}h0tWqi&-yk)N$m_NIh(U0Ckw$0arV>%F=Q)u&|^7cJH z2Z_efYDkq@25t7-;A|eqOlUmDpJ?#*?}L)VeivD-tzACr**n<5#-=TOuH^} zfos4tbtJtJRK%}XN%5E*8@$$DZqmMq{>b=F(ck7qaFmM$XV8REj@IRQvCBis+_-l~ zH4ZckBD*@F`6JW#ffnip48~&0HQga{6QGQkVy?lBst>QCZstzD`AtcpY}$ZG^tm-` z-CjD=X!*H&SJAR|0!}QsnmQr2-*pml;Bx#uI$&utB6*KSc@g(-%^zI<8UU!uJ7h(I zq2`3>NXyK9wH+K-`X`w9gPd4ikX%n@9BQfpkUV+D@R5KMsH$&0lmTRpA~XH1KYk5D zf{?atD2%x`*@>`Esd7}15)!}KMCTU~lo|;K7CQtP^Yt_>_g&8leCN+X3-II z2YeRniz45SRh@*K7-wQ{*Um8IL3s!fb zp=O6~@3tp%eP3*Bh`^;TsK`vamLFMx2Y8(6XlCmzCPZAQR7S8EB|mxw;iiM~gS;0-<%SVfOmt6R z2u5=3a<{?3cyt8U2AN$UDB!ubgf;5x*mGp9$;2-%S6S9XmUn2(+7;41Vam!Hb}h?O zzj_QcJT+alV(Rbv9$i^9scG&{Bib2g)ygt$m1C=vH$m~v-9JP2I=~aN{RYy48EKP+ ze*_6R{KWrscIKxyIzXu@f7?qn%Cs8u(+%umonOVhypoJlaxrP9ou~9d6D3E%H&3FB z;Z<55JN-V)q$rLwa~y7cVL?hVw@RqLyd2>%hGzxma%w6t9ynECtt$JIQhLHa@svgr zQ>D?4F-s|h_DS++^%6Xgms|41bo{SMoYgiNQYC`dAq(&H_x+PO1i@n4f&S#RM0C{e zZsxWFcj}I@wA8AD!kt{IbEsb(#%U`M%3SIsA}>qE=_Y<_S?ESrO)jZgwEEC}<5bs` zqfPzc#wf2YX;BBsNS>*iHZN!qvZ$o1wx41_o89PEtHzZQO)C#xrnC^JO>0ERRpScf zqm^Hvu+Wt&VNeIBAeQotL)*kPB82TejI(h#T6EZ*>{~V|u9+q_f+XW}n2bez5>2(0 zZ;m)Dx!A0h)nNG3=TpAyVJZC>QSvm;*2RN|j!m$tPy(cO46@J!?Q7AW@@T7PANjXZj%8w^!fVi-``WZXM!NL) zvnVOwpcc<__x15h6LSegvXw8UnhsPOlk(`?B)jMxb?N3bIrr=S z4TOvoSJc0PQ$~^}`_;He4q>g!OQBvAI#LF_#*Xu7U5wKHT zjM6d6c`}21%kllxb5dj9ChUEc$!1>Erb;ITS7Q#S*T2;Yu1agguY+`_(Wbar4sC(1 z?_SIpW8juF1M0aq_MD?_dxrB{@8zA_LSnu#bw=+jigMP@f8}lDg4vR!?`MTXp2-;d zOQpFo$Cn7_R?3;A?L+B}F&k^KCk*`II=IGZivzKc_g>1G)H4@R)!4^c_+-j#??8x{ zKL_K)qj!kjz$};Bf!JgmgcWKCPdRB==XdZsTctKrw%mp>Q z%JKF80gWRPq z%`7O7({oof+G)KvYZm6gp+tKuy1D5z2L5soLgPPbO>Nc^<8c~*Yv^hs>01SQe6@RN zAZ^pVMSY>kn(L~GBUG=+m8)7_Dh!J+NkO8``Xb2!`zu$_a%_8a`_}BBYFhJN!0J9F zS0leO5}>SeD+}^MnZ=t-`kDNb`+%6?rCGwtb3mnt40GdKktgp1W8tZ>gM%S^C)h?@ zE}a2J?X|{lIuYD>kWbn9E7>#J1tP*-kjD7;4`r(-@AKJHp047;uuT+2<(hc+I(g`c zgRf8ox&$agt8BaQxR zA~W7CrTm9sZ+EiDts~7p-88KcESSeWAt4Z9ZjV53Nt^KnkFj!T%V24XtBn%FKttPZ zd^u^T>J^>d)ZdW0$q1olN5lvq-B?9WL@ka`+gL{w-=oNWkX?s6yzb{n(F-bVq}`UH z%ofl?SISHNepRHVkhaYGrHsPoxx?_J^Ddvp=%5IFU@(=1Kvc=mJ5DAfu;AT?+ueYIvzaYRIp{FLDtGKkB-K zBo8rmk<>cU8a0TbCrXp155TnZy8Nuvo+Eb^+nPW^EF!BaGN3eL>;t>qNaRKO&9Az? zdG{b9xCqZ=yYH_O~w~&S;^9#7nNV8BXK*(2T zfT4f;T(@&Jo?|7dEd`-Sr1o90liqpr7fZt9&&R=8$Rdh|d;3!|b?}QzdB=s?3Qq$E zp3Zb(jnGCu2gyC_@h*D@iL7fGE?m#m7{B1wf}E1nc(wMiYkDXAq*?2kGJJCpK3c-} zSeOze-CcwNa-%VJ7O&)M4fCs{NnX|^9-w>3>A8nr2>-7#sshE-Zc&TywQa#yi~Q~( z{~rSLhD&WZ`R)`E7hp~FL!J~$+vw7=?+jzLbybFFRs5YjOdDy%a+;ZiGe1Du^Y~aK05a_AkQiE)J|A?fi3b^g(&Wdh<(B zABk1Xiv+IWvB!EI_6qJekIOOhe8168kRBOgS~`DmVe&0u;f^z z>>eNHvpZ3qkgdqCMqL;}g%N4OHTEpEsBd z++V8j1(W*|(zC^PGT_;=d}jY*9x9lKi2~1%I-QBB&lS(m#v}-OtW}OE3%HLjnqd?B zZqSyerVzPoXsGALWFM@UQ4<+g-Q}P-dzurz(wzFq8y3v!Kk()m>f5(jWd{$wVJ{pQ zvK=d8FN>=Qi~Sg_|CMpd29&-cW`4{6IC_Yd0=tKm)|Ie0GcgrZUw5~g)io|I9nc@H z9M#bfMYPnnEGATP^$^Vd3HLc3en@+T{U55{0XUF0=o)=v+uqpO*tTtKY}=V68*FUb zwr$(l*xcB@`M$qy-TzjdnW^fjo|>Aj>YDDSpK~^;@;L~Z1NmK^#AP-Q-1dfnviFkY zHOa&K!EHn+l~elU_NA%|@zAn&tmIenBs|>?4k6PPtur?o(zanHT$;`WWp^dRY@N|O zqju+*B1mAPc#{z!$-a3Jv&9mz-so>va{Es%^(PzbO^;q>q!!$?0@$B#-5+fcBYIxneAS6hTeCH&DNrvk62G{LZ&f-T#^VTCwiPiK9@!^HcL| zh)lvnbou0RoBn}$lU}wXL$^nR{sDIrKW@%;-Z+=0M&}H{9id;#k)!=9xoFEx0z*Ec zch1dsCD41xTcpRV*1U!Z`|LOCKG|x#8NS~iTsoFDxxCBnRb0Ok;jW(}hyC5Kn`v|Y zm}r0(tIFfOi@%0%K7YgFv5#L!PE@dwwPKD>KtW~6ghk0)(6=zxxU&8Ntx>kT*XEQe z4|wD_8N4+~uOEtyz8tcYMryh+eVUIN1>;NN0tL%qy2Jv)R4uED2$Y%0V};X09OBzQ z5?j-!i?)vvcxLNj#GCr;*JW0D8_qUwul&zW&ol`|V)?N`mCjUS>AvH^6@!nlPeIg ztSF-*qf=YNRcq@jC*v%mf;_b+Xxp(KvOs~Ej_ZYl=_(tv+I1-b-WWU}iGll{S8H)| zIYPvoYL1fHI=T&F$hxqaZQqM)K(k^kuHN&o!;g(=6NrA-ycZ#|{33oX<;G+4wjo{2 zN^8W$Zm;2x^5x}6gWU2D>=uH_B6mQMh`niy%0Cs8Y=+!~1~nLgttCjd3f&TcZ9l0j z3682|y~YZ0XR5i)HSb6;i|-RRGx^0eioU85c}z=W+aQ_6n!$96H=t>K+4*9byE^B4 zU#~}1Szbb{eL_GZ7c2gsgT)_Rl81e)5p0Ge9?AY?Qsc334xMUKhUVQ?Ya&2jb1(=c z;(Une6sCjbEAI}onevJz2DE(#x9Uo>Eni%MRh8BHEAldP6PHV7*h#KhQ<&hBNJSaN z_(`3rTIwp^)UYo>a_KPBQt-xu3=<|dp-Ms|hWus?QqvC!4#;!iU3B9#TyC@-jlc8)M2M!G8`Rbzo`L%~Ho{c?y9*PHu%5Er+q?oZSe+%a*Cp)>mXUdthvR zStZFpkNX9#?3=({(aN4_O3N479)Dy#!AS=EUkX`{JAiE7QysE0mIX9H-|itt2FvEC zryVVzAdH?8usW||)nL1#7wxkBz?e`9qV%?bR)eryOHU8nWo$OG(xXaOUP-G&Z9X@? zqqQ_aXpHh;Q=c0RbavD>N`(utXee+Lp#F;#xE5%8VY>=`dD!Nv7G>+~sNCDg?#P&Vg?hkh7-xtUw1`Y&Uuh!9sbHA2??Lr2fC z1aDkoW8YJ4(qM}hw622NWw$J=k$7ZbW4%GDy_*in#m(Dkeps}Jm6qbh**0X>);WoS zxxAH)C+|~a3EOF4A}TK{w;FzThnTE{X`-`WKw@8kbR^eV8vr&+;hWdn`2n$95s-2zgEpmrRXmvN%^oC36BW&XYoEBeUTe~tfv+!5%eVYo^`M#+ zSzh{I#dzm9{hHz=;ru^_Y0cJ_kdi)n5-fsr_h{~rf7TqV)#R)o?PRC^+p>UDXET$I z&#;8Vrw*pKJ!ocfhBNCY)A3_4$VpFD9Nj7(4Zy*LF9V*7{F%n;O@@xzhfSi^Tak1e z4I|tgh*qEUGA&t}y#H*nl>8_|JX18&;D8)(mf}ubqX1d3X2g;n`+Cq#aQiENw6NIB z2;s^aytv)fIBghj{p1{N_8Mbhbq}d~$^cD@BX?hJAE) zrc?K?r5XqtYPLRVZe)!Ix3ZN`w%RadY@(c1F0#YbV?NVKx2+pzWBEs*;vN2Gi(uU2 zM$|JRR$3)-ddF&(E(!mEqR~kRrGsVE0qfaSR9sCH^?0lZ-(tsuB!+*rot$oazF_~A zCO^KMV6uDkDNMjxp!|mCsuS z>pg;g$DNW#xS2a2Wpkan`%R^4qXS91l#5wrB_f`wv$PSrH^-p_$EB8GD*}1ie7-6( z&X`U6O~ELS{vd)jwAm#?5Ngfz#D8dInevWy++AJPRA*`!ALsygRyhn$I$?WDs!FTN zGYWJFEYv$W*lhwzPpf#YGkSR<`AaLYE}xNXjA`g!D2#dhtC3D|d87Ila-|IyT{(81 zeqnobrs$+Gih3rp>&3!+VqDG4nMa&C!|eK`T#G#CCTF-=n8B`cF@pOukmSeHzq7|R z*R2}XiD}2G;}1|{poYY4^{mxOqe5c_&43moXewKaw3zUrD#LARIQTFYzJt$yg*pof zG76$|2Bpx9e-CC@cWk_1CI7G+Lh2>&B1F+IaVBVaP5x#G7bq)A*H%O#F)y}T5V?l* zwksue(K*nSoimSXbt1f%yv1+m6Z306Td=_B4Q=27O`LT3*>>%g z4q6yo><=UKBs^t3vLr-ALd0Tgxf}>Z5ca|RNF`P9Pa1u5kl8CDc}+{02tD7hfF-Y- z`Zq&Ae^lR@qMAh>fxn+ABeGX8Z zdRQuk(gR(kQ}eB@gXt1+n&myAjdZEJOr)?rrYVNn48^wzm9@4alb_1> zJUykvnBi)C`H;#ymx&FC%x{^yuQc`^WhY!fHyv-1L;&G~_{lD11`f1DUiw3^oCJDz zi(DD1?IJe437+$0UCeF~{VuX&(jcQGRs-wu=e46bUGnahsUmGKlGvt%5HSu#?0qTHwXKWwXR|T3a2pcgm0|fYU&}V$E$y-!1oI_`w}U z)f}5f;sWEOonAioopsClF6caG0YhU@T*a7PDdN6MZU-ar#+LN?JfOa!dtN$sR(@0d?h-P7b;ZA%he);-L37ph}0MCQ0cxd>vEBV4)2MPM;)cM@+G7%eAsdolpZ`> zM}<_JM~t46Do_rt2V0Po3%)8$R-k_+M3hI>mTCgmk_TeyHEVdCM}z^(-t@zo607e% z_bc|dpdI9H&ykz9>CUe{ob=XL`msp?h1;Vw&!v)_HBmD zC2csYPfg2hjkOAn_u+rU@%$?HF*!qqf1u6&KKdwxM+0W-1VS88c~3wNl!^XfC_~N6 zxsYUhq{-rv?fqoM96>58ud$Y?gU5X-Sa{DhIluhCvaFY?S78B4q)1F(U_ApLGy|7E zf@Gm6`SKIkGgk=Q>Bne0?tFOd=XvX453{$5JrDZg3>D-XPK5^il+CW1@vRY>cKpwn z8!6I1O@T3K_R(mwMk8Au`Ps}c!MmR3yrL|4?KkoG*81KSYnZIxBB9NZPl>O<0&Hm7 z`9)rW3QD)-c)boaHLVV*RYEv;`3>@o{sWrnRl5$+TFDfh?F5IJ(;jJ!Grb zaAiTxPLUh6YFO0S0fUJcvWp8AJSDHe8DV_}6<|Dz_tUvTcvY`?s<5EwNbmj-|HMT!+oDh1Ao-wpdd8?UcjVlqm0F9RYR8}@mjB_^ z58#EfU1fV>i8gDiDvv^M;}7^1I2iE*=T}*n2vNZ*z5II9t4VqGA2KTvzD8NM>BSQ6 zs#SL3`Wt0jZ8kTpX(2LvIxk4Hb;aI1Sgln0C(FgW_U3ZMT3Bns-t}@wIr|PWJrbuN zqLnuCME*&zQ@v#?OzK69SFCyj4KK{DTp+`Ta7R5`?rNaDsLZio-M}FzD)xk{^re;3 z<&{Ac!wQX{>OJo6eC-T6^#cEl4c*YXxak<$z*S8LPkMRL*9F|^h$ow+Ir!4Q*Z4B%r-uy#n_)^;~(uTo2%@r;=a`Ypb&@*pj7*1{euj zzJYZG>YfEfVqJn{fwko>FP?%3+3H1<6)f?43hA}d-;E(_kK{SjZiT6nXNW|6=Kk{@ z45-Pj>wADc+X%$uc1sq`hcjUKAp^%V#D{lwmFMhp*RiK3(@~(t$H(**z?ME53h(J) zV#zv>R-#fa zIS`H9>Zi8&cNWI}RHKc1v0oE?Z7#<{vUx}9tLJioZsju0c?ZYZ;nQYq4pz*%4B&G@Vd{N` zKd!#Qej>N_7_4wiBub0OxsRY%--=4!SC8d^ASLhEu4N=8vn6A`d!H?}Vs_M-ALdlO zph0yy9m6aK=+Dm<(uZOp+1#vSyC0Y8_I)l{;9>~0Nnc{`;+`D{O+$LCS&r2AcS2-R z*cyNs+fs`wPYeG3kGqaVF2zRh)q^LIw^TOs-#`w>) zkbcx&S=5ue%H{P}^09;oY>{hMwLvvW{k8|vCMSM-v+y4R<7qI**364rKI29_`z(25e`k8J z)@!JE_V=(ZAc7w6fd<`vP*Hp`a5l8)s6F9NmZ;5d-I|SG?%vm*#tky8x9Lo$}JVsEBdid6{S=i_GwPVwpG|Z%V0rgdn4sq}w45|oYIO4d7 zYsQ3je~SNVb%*DrmNORAQbf|_)j0C&sil6*^S|O@{664#eoKyfq5 z>~70;YZTy*0c6+}#*~GkZL-j4`+wHU1Mg7@qJL`*YsK44Br8J_A9Ui1daNFyt;8!EfwK zEzVRb69S>ZEg$8XpzqtiQc)kRiyL8V9+FaSl<9nd`Q)WbBE;)!Ecp0z_B&hJaP&$F zu)o9F_d@ZB0pC*Y{ch?vb8qc2;4`LDJ2QX8dqMp3oSm;1*5fU?y6Nvng8 zSp6YxGyB*@!mu}N;k4nZ!%v9vg-^-GfE+R=ov8!oj>EtaTIxU3qzmAeEnImN-iK&s8n=FqnhU9mF^yz;obo7X zuP|rBrNW5fWV)pGs9KAHKD=b0#_!ky+LiTVqTsiq)JXohY#|49X zR2KKMom^oDPoyk&$?WP+Yxm2&tLB||AnGpAGO{Joryw`>a~+@r;6l&ji`!M`NLOlM zqfnE{J51|A2dGFj+e}YFluG3X+=^BDK$7#|t71QSEMlk;NxUfX%(Y$-!C-F$IKd`P z(AI|Yl0TC^UGuQRAS4v~;*vjuKTY#K$*tlH6cid`^g~F*r>35FLPLjw4HtQU?**uq zOapA^ECIx(yYg20f8&gZvauE;Y6tPyRvzp6(6> zGS?hLqm#5C2*taC#pjeeNv0ye{h#hc`d;1CfTprG91pRl$@q@GRruf*%JsQ2UEYKc z4qIL{jmRc$!BQf6NR$uEl2;%~Ge-YLUr-UG-APphcN> zyTX#;uH?JFtZXyxtUB6fd;NRo&!31eZC==ovFL8$&V<~?M412o0b$F)cx z<_cZE38$Kv*{+n1>hsj>S<5tUdlix8A=vxm&F)KLI2`)q&551#68kjDna!*=gxs73R5)axLUQapUc~t~YyaVW z8kN{A`VTW z%AaetUMYTe6V*8F6b%E0(F9VJHq=J5O|>CjTXGNVnELc<#bk#GG<5?D&<{Z+UyVGe zH&d%~=QZ|#Cxk!0r^N#PJ;jYKNFIc}%trUr_-k~+77SS{l6->5?a6Vw$l-6AuEXp_ z(^iQQ1(O^K6Z5rb>Lk4enad*7=8>%nsi$MPjJocD@Qfnz%S6vTA*~6t%flF<$!oB+?Z%pfnT z`u7C7q?+-vTi3}R+KB_GdR-|lIZu<|+X=8mGA6$bN^V<(>l46t2 z=(r>Ry&p(w8sh^?2)EF#8I?*3W7-d$l`1u(UJqq9vrdP)^gn*D_1#icX*64ujHzGf zdN#VX!CS9PuqzYqA+IWAg1nvUy@n~0Ee~M(k{^X1GGbS`pI78cR{vMC^}7w_n&^Dtb09NLn^Ef+{_5qwEe2LZ}ZcE`o@`W=z z(W&Brt#FXBMO{C%y-k8gQve4AcG;@vl{$4{ht4+BkLHNiA*=YbB2@X=t3BztYxxlAhk4|*E9Xj-S(y_heMjnA;)j@g*q3q! zm{bn`L2Mc#I z(6B5TXTaDNgrj%_cye(nO_EIN^7PYz@jKu@iEsi3Z1jIprn?67C(r7fDf7PFA@X3= zY&)1=nqPf91_Ich^yzhRkewlH;LH=pj1PFPq^&hK0Ff`qlz#7@pAO+qAF#!Se@k~g zKFE0s^~Hxv7c~kT8!^BBChs5GP(>MwNO6bEW4tCs2#G%+ysF(hv;CEOWwRLv!ckJY zFuy)h@kFf8w0Agj{j&V{V5u6*dCy~|;_43F8o_+>^$a64V=yxnba&9O+FoRQ_9W~+nR8kL@1DXD;NW;T!YXLH{Av_*d45z^Oww;0 z`%!6^`s|4>g7P~$d*qE!vWH;pt=hr-WcArQ-VH8RcxUdcMUJo=0H3%7dconY`pHHp zFZ;mP*Mp?06>RzjZ^OKqgdjWxC|>w)eo#R0-&o7S`WoR;i1FW0QIv8L4S**t*)!oB zp(z+JZ%}6UgHv8TrAFR|l`!EPq5*@0S7(jF`4!o%lz(+7=ENuMv=i zhd+Ig5d^ea{r!CL48O)f?To<7<+)(j89b0}V^tA=o8NebZY;nGj>@#!c=#ZtCEdYy z#)+^|SIK6t6ZtYPoRjZy2 zo-)S2O0s`lDhu>3)D!(mwBDg_!{kpc`LlkQWK^;7gD^=W?3l?{>Q@B%2X2>T6^weoCQ0z);s6!*IVT)~Aj*2B+ojtc?k9K;IeBa8gwwDVHx*1=RJa^ z4|T25Uqzp^qZlm%aIdzdCvmr8Wi6Fy8jUrZKS4gsZD_X?S6v@6Kt4wIYdE>bzZX%{ z>fC>Gnd2TrBp=UO@(R(V03#@)Db|CtQ9oB|?)b>ABSCal)#Yp{LZ@{GgE0kI1vWF#&p7N{4w0V;a&W6iX zFu7Q!61B&@BJ&8EE*=-^T6MCvC_beS6_Zd@nL33blq&^uOs+>vnHsBT@>=@mKH{Ud zt{2Z>*u+d{{BKa9pMw(I{wVtB7=>eo>R>6vf5P zKp+G81MG#{u9L%IqAM!nf&iWEDzDU&NNfs<%IY&L|40O#Eho41g(Ey&L21z^B>%`6 zo$X6V>5jaUp(o@ii6MwNsCrziI-Nqi6t?h0#<4Y>xSUbHpg2O^)gQV-%cz@MkxmgR z4AHgrM4e^mFg?^zJ(0Tnz5#RHg)mN;e1B9?CnODmrq@uUkRZ+z0oTNJZ+(viY_LJ`tJPNXT>x|FV-lueBF(Fk9u4y}y( zKr+f5jJH27-6!0}QE|_wqc;n0%@ zJAyznNkCH^pTVv#A{QWMW5+BG`m>L2gECY&nj5}rdcZJ}8lY=7qGtr6Tb43YUqD(?3PZwJh!t5yBBn zX+dX;o*z{UvP>BUupeCc=Llz$`nq2#C$J#w5SjAqiFvC6E7MO0KMnFT zAIaYX4?84ceI&Sk{lvB5Vo2WWoHI_+-=MX|O16uCkTV5i{u8Lm{$i2}tlwZkP?%y} zUkQKmWroL;RIbL<&&pwPb!VOl1^P_oY&@Ji@3@YGi^9Sqt;7*cU(K=c3xU3%x3qxYZbnQ&?zL!j1~ z5vQyk=+ar}Y_1=;+?g_T#e_j#JASl=hG0oMs=O**u7(~&#nO^Pc{}8^@=AZ(*@#14 zJ0gSH3NWB{M(NPi4)SymlQWT*N_r`T7>xJVDE4v@NFmD6Lm1&wh?f@@ zFA8-sEs6=)O}JT4FeCpPUzGZ6^5w6aVE1c&R_)9(^%ckB43lwbCM^-g&09)&d@&}r z4T2>P)Q~%IXXli7d;L0EWK6^(C3XVeb4}AK0uZqk%*TvC8ogRYty{#*5<$P>ak=3a z!6+GK#BCujUH|S%7z(&TO{%)@)o%pLIJ&QSBy;UEegEhQZ3G2!5c3%}$S_Fqd-*^+ z_bd}Ne?Yfl&o#1!rkL^FTeYiXH;MTv`&ZqPG&UZ_kR7orUTQN7_|=Qq6^_>w z0jX2PZnWrSZw8>!pH8pr6<)AuXWgvgoV;9bp*;EJ(Br!nsA`tpv&0^F>skdYB)?)# zVw~DHJw=~WKk=?-{Uh(<{7J}m$&}JaXPpIEEIPOE$8wNH_3ixQ{2FGlV_P(i5;y3t zgypC?;@s;95c|&GMnybInNu3tz?|OH0LJAh0Y41%ZR(sgy04Q2;4jG+#qML2>Md-_ z`v60mMt5E9?9LzM8>v#zh<$X0czY#Yscw-QvKPXkgaasig?OS6j)@qKF$G#@nU>M7 zSydpIJ?yXrKZ8t^t63_1mSkMaSkRAt4m;JgCNMZ7k*s61B(Z}W-P7=scVt8vXb*(Q zNLtCcitX4}R~{SEuvLC(?y~s%X!Hxmj=u4l=6%iBAYQBmFni-y<1A%^a^_3-6n`=P zjWYBb<&(EraN+{J3I+J|$89DK7Bh~lD^Ok)#yf9WwG#8b{dB5V<>)tQw8qE&%La~@ z5QxFa=q`vimN~eA9289;TB`31P(66N$ygacEBjjUYW3mbtYq7Z(5G(?5Zv+94BEfA zdR1E52G!fJDzS_WZLHwS3`wRQ3Cb7B#K|UvYnFY(vMa5yP?( z`=q0yvBpr%!8?{Flb*2xHPF_{oWE$%CmKoS3NRwr(iMC(@F*CT#lvZvl=i%)e%dXG zM|3p$4%Rd=?Mc~IdI)9w_^iI5{51!H{6nWj7ulg)4Nq@w=YhI+>qI_t5aE)T1nXmvEB*|292(LM_u~RAyvtX13 zWcpR$dS5JQE0uB=xzN+4pS;sZGo;7MWX|qfZNlEuj2Z?r=$lRE;g@R-{qCL&ROT^w z&i#3pKV#4Dzcl{kR3`8k+^;Aa;We|Eey%9mj}qmgypcBoAh*`o)_5IU`|!paD~u!l z>(@O5ivIv`NxXWS{m8FU;^xZWJaL85u|7ydXFTlB3p{Kk+tM%1JEtW?Mo^?5l+sl;-F4?+SJ_IDHejFOpAh%ec>{u9@!0uU}#3H6;2U zIN2>#Jk)UovDQIOl^sWkFCyGp1z;SN2{F0&rzXIXXsCa4Ddzl4joO)?Zv-q1)q1&N zxvdf$nK}bi$^4Lyk??lw{-@L95l8R+JYV!5o1g?;s9&@#zcCl9)zdqFS2H4Ev3_Zty4 zi(P^Km_}2JeumJhHCPXg^FX9VwBT9wx<0IadQQCI)0$oO`MFWrm9M;>=nOYn{M??t zj7Qu*XZB|%C;Ru5`+?&($c)F&wG=*OJ;4u&=la|izfx_UY;9KTEi%o6c5GT)qdzl&(T%Tv8bKwp^5r~r zytanHu6ZE+stVz@MUa2z&R+a&V-&A`FFX>?J{RJr01#15AW78oRVflp&I<^7mXiZ~ zpbSD%1#NM1Ty&dfgq<*7VH!kdM1L`xc@cS99K0wBg9+u<6DNuB%qX;op`Kjz@* zJ%;8^AH@V-_sag^A~9|9mwA<(`Ie!CeDWubVy0R)5O3A#fFWGA3&Cp4>C0HFx(<7!-T2iK#(UwWRJjQdi(9#e z->lhA;%Mw8XB~j2bt>+Hr#bDi9$dv}J@Ng+kGg?90O!ZtD;kou>x6mj86_&tY`CE^ zhl-(USzGQ-)v>nLpM3bchUE;i+?|X)w!Q+MLv?Vi7(L-DUxO8p(qc+{qCcQCy&GQk zi9?!(_QZA%aCO8|*t31=WGDl~-{Z|>o+hkAWnV`HNQKPu%$jF1s1IM#mLToJhNi!M zj*`&m;JZ@N9g~@XkvYpAP;3jS*TFHB z_EXyKABnH4mxHkT)2UUmLe5zZ*Kr_iCRhvMtww|Vx)oA!R`Ww^iT?vI^YF#lNEn@^ z+~Os5%6HqnsAcps$!fi~fG=J=Gn-7_J(_==bqvaZt;;2TJ4-x$A!^xrmCv@rdv1`>{-bi$*6(@_=jFnGGn_i3Y<_mfZR0incvsp6rjHdr z?Rc(=-YIx;WL~P=w({RU-1uW|k^a8;jN3QdK_qV59m7$7>G0@_zEEEHFdYK+$G(Zc z@HA4vyR(}g=V1=eaz{$_#la&GfBWBmk zyXYWUisBH03v*nd4wT6|gX1oiSHW77}fL^!ZQnIrBLNA9g zicF^}F8vr1vWn+amcvA#(U?^EHCHGd8&ADw!KRj(E3H?IDp9cSSYTMc6GMg}8k7Tz z_JKk=a?Pz^<1FY$p^fn12XYyyJ5bLhO}!yAs#ITEs7k3`rUZ`59c8R)nBk(ONkhf)rxa7w+{pt}qdMm_wR-kapPK&%yoX&NjisC=a_buw{ zHi#Kch=Gm3mX2>t*W-+ ziDtFsfcQbm@Yw$~@$b8UrhLipVhSvK;P%mn{Xb#upLJp)$+hmi=6ewbT7TdSL7B&+ zPSCf(-^McXgg?=vWAXCDKH-x`b$(FT2eTZ^?4rKFwF-TrUdHzXN*vf;XLb^7#eTcr z${PaX9YOkAQPb~yM$!1lQBDb*@^+YfP7%-18#D~bPvJSEZ-ZI4esyyEKeCgM!mti& zhVX6;Z_+lR7kNp#6Jy4OUo_`u8IbL9JYNZN2U8e%Jsrya#BhTgpJ<{H=+a29BmGj; z51%>tug_rv`9(aSfF^JnEQ%x@LoPY-mKFy{nF}&G(YwJ!4{uqB0xg)GvlkPO^W)Zf z6R&$SQv6IX0YDDA6>aR68#@ew3QRBK&GRVF7dnf5XO-^eg(Rl(dmED#0xYXyK^L@{ zhVrvgNkBr{{0-r;`}~#Qv8Vi*wEXKB4Cuf>;jw4@!{AdBAyW51iy3o+KuqCNhy8(5 zEq@#a14uALqh47^{C@v&y52m79Ysj|X@622#VP+aI>9cuQuAJ2$Vp>CQn2)f|Ed^r zlR$_e8<`CF!J@}N>6}0!upQ{YqRo3@;5E}BPFz5;;J+Q1AuA1f!?gVEux6+H2_f&9 zb7Mfl=z6WNYSTfiaU7Vz-Ci7c&IpiW#vN~XP7XMSY&gyskYkn|VMyIc zedA~9vlY_Fi7lLF1Xqy2piL0Uw99H5G1CZUAkUUh8+}08}nX!Y~Y#`EPE34 zeH!9D8U!%tWr6od1_8!Fd9OgT&3pB6u0g?m8TC$R`D^I)R=|5CfqWVC;=y~+!d*wh zd4z&oG3|gs`i%O=H2jy->aT!(O%29x-irnQOapfBhZB;lM%R(E=vUcaObb>{2r6z*pV2Gx@ zyYQUMaEce8Knv3#7*4a#9}VaK1keoRRacM*3>98;%D)MolMBwF9FCK%sGhfk zWd|NIGYNuo1R`^Q&*wXM%saf0nK=-xvz~sDT;jTue~6g(l*M(YZJdjy*tMKy_s4~h zCjJ+||6UZ5@$XxmW(WQ+B#=Y#RpZ~+;uq?JZ;bhO;4sEQto{RKXE9&_Yi8czhvbcg z@EC>Q9rO>yxrPR7X4&D;@*mOb-G}#x2k9~HCBnXz#oW=tx~2pB9P~fN`IhPK{Pq}w z=p6JGfJN(=_7(!8g1=%*{!r_5-%)`)^D*w?6FE|974qw%Tjv`ntasoXNMS>(mjs46r6 zucciM^?z;Ix z11-qHOWas)y#Ehg$slDNkcHF#7qU$S&#FPn8vZYo;KaH+Y}mmNVV8{h;-sGBq7TrO z2K{xwE@pE8uMDC&>0<>!a6o9sTQT%v0UCQ%99Z8$76kf0pCK_}LEwTwWJDoE2jOLr z0uJ}UPf!U`-TI^*VJcBmjJz-g2L~MDJU1!seVR|p%W7DF#2-qK$|`V}cmzF>q4x4SLcD8;0^Fc;7s$`!*d47^1T z{Z~z##pgR*7nIlL7ZkGg!B|b^J6CJYshcARJSQ$K|yXO4yM03Yf?h9Hd`8oDm{1)O|MeX@|#5yLfN@pA!W<9j%! zF4f4DD>SqRC?;Q3+4*fOm3t(n4^>%~;qcR8PFczbut-eDT$KKMY^HTikx8cMVVAB_ z=1XL@;muS#4557y$HbeTvR|bAN1StZ@`H_{bnGH~oDBpEL-_-|Ixgwkz`(r^3fmRt z#FSj>)=%}+nh3P17RC=jm*YreJ}y7mC$z9k$U1Iw!s03;xoPb>hGTTu8T9S3zhu*s zf5T5jjC`kc_Mo_~j9%kf2hXtt?xXu$I-ld*vs)+EgDf?5clpF@uCt?0x%RlPehw;h zet+AT)e~Q(jXhtS1&%>mpzUQZdV@q(B3!Ob;?GpuQtC8@j+6ILSDT~kO4yq-Kted# z1+$EGrlqkY z?lw#DV5Z;BP`FTdp$>M){zm$e86-gi^kO<#4UG~6%7HH)E{v%4!&jk4iczfV$ zxPB3InKj|Q5NjbiWr{}cduY@&*^I2l8;ix6N`#To{t}373dgyKE^KmlXJ_e1CZa_Z zRu+~5gRu=qu!Li+QMNEb`x`BVE9uWp=Bp&FBdn7?4;3t|pQs%E*3nS#^gZLVQUefQ zOm{u;Uhy4oIL~DHUQqt*1UD!Ecy}aF!r2l}sKn9?#)$X-ph#nv&COQtikPvIQmx}E z46&?(4+ZRWJ3T8__tg}Dw&yZf1&J5rP1d40$-YVQT7_^|sSeAU_P^xya@Y($>bOm! zRQ}VF^s5N9y)#C^wARcwrY;AkWssxMk`aAo4(6gk9BMYUH`QRad79O#(%r1oyzfO_At{NT+5;J|%dg~pCkM95eE;My0DDqentsa$n zvM$=2oSdK=U;YQlCh7ve%aDGG>au|?MLN)0a?GL2eTi9mI>o{?y(NWGp;1%4zY=38 z$~NedYUK#$@+fb4yKctaM=)qxwai&=EL-I$1xRpi^jJRu*<}!~4w8!5SknSx8MAS! zjpGq4CYT^wWM{nn9j>e44vt^89k0c5ZnZ;D#cku3^VGMb+{19+LN2Yw+|jhUrW*DV z?lY0g_$qzo7KQC6hecd%Uc}XWi-BkigTpshc3idw(>F8nKoVmAj zkUNA1-co~rNlo@az7$+TH~1pdQ$_A6zxX&2Y1XNd`aOKTj2dSL5#x1W5Z} zjku?8d`?0lGexGse5LV!R~Bae^9GNxdXA0OANa597IbK{gyWpgVs;%(!}WI&VJG|D zw8Ow-gqYjQE?2IZ5QtW8VBWd!1c{l)S8VS7Sn}w~xEgemupLvDu=iJrdRen)|4HKo z&+dI=;}uz%X52F4H0GW6`L2O2BBdTwcS=%x-n4;_eKLs+anN+T(YFS<>!K_U1onf!Ma;&Y$X(JR-c3^Zc@#e@nv z?CP?0_C2@x+`CL6LJIsExjKIadnaa5xSr{7-&>31e6P?3os$(G=&L zaRSuzxM%qW^E1THbgAHbyN2$|HtcuV=Tz;rsOK8PWJB@(jQRO%M1ZPm2*>!lxQqa3 zuL*oK1_Vx@v$bUoGijs=5-UX`J;G5QWt(I5!74jZ2f-nEc+}*zC^VSv zpgDx7gtSV-`)8RJ#Eet@dc~ zsm3*EeyyqJ(|X&9>IhQ|OM*Kmy|w22N)=9$L)`>Ed_LO_MOl4P)_FKidX=vPxd-cl& z{gQ)>E;$fEF6Bo#FkS|D)YVv)bp!DV+y9D>>DVN#(qmKmIr9j_x9D)O)X!hPA2Y)z zOW5m6K198s(AlG4mjfdi;I~vo;o95{Fkjd4YwGrs$9)`A>z@jc1P!B$k=F9A>n`S- zU&OaO=3XZWc;*$U^JUy;tsE-flLZ_EE3`zQL9T1RMX)xtDv|)ag9aNhi#Wj%DNlFb zOXx)Cf-Y2&oFOZEJE@iiD%E?VCj@1;Zg)z-P7B- zUQ@~?8dp5wnEi%mpTLe_0}Hz1-xDifV3Zu0xLmwJQN#IeiCa`omo;g*Q>Td&l_u);5O8sWnH2~6%b z{A+4!@5;}mO;Yk+(onHSF`wON%(cO6)Sf=2ko~$hn4n>|I!-=G5}I?UUeyrG&#$uGB%6O_bbH1xpjxqPTS zLWJ9@6)P2fl#9%=mHQFSdeU8RnK;hH#ln$$5c&Ini<#?yizcnXDORksET={HuwbJ7 z=$_f{xa|j^Jwg?CiNy8T7<2z)YAJcan4buW4P&vm3-1<-a@u~-@Np4zF7a-){CT8^kn99rpH~ z(ohxhD#IN#D}(L=9D^!gqFYP_jqH31)qaWZt{f8}?Hz6C>aYH!p+r(YQ+Hr>2`t0h zMGsxWKoql*j()*mLt;7qd|0`abJR>^c^$>$IDRpz%>+Q)%w~|Dw;Cgf zG~H}K3=5SbISLlP50M*9H-mCDVOjRrWH(+^!H?u47x#H8Qlh;;k(TEiz9D6= zK}5L|tkR>B79`&|#EWWb8|JBJ-gcym{j9lVCD!}Ov9^21`sQx^#p`O|6=;L{=>Qb4 z0pnoXfH~9}rM)({zH|!ZtLaZTgMvU_KK`l8S^=Oq|di|ca8EzD~OrV!W z)g=DwcPJYnvfBg{&hNm*8x*usmFiL>!;8uvxF#tTexB;G$&ect^i$8wE|B(#VlGL` zo55yJuKURMyO7&f9C9UJlw$Z9_H1K76Lop8&dSE<$x~@vTm1>ET~&oZ+%WMXNA}RW zXL?o%lYL&8WzMioPMBrhu*>9tP2TWjde~X+@Fo-D!igdIoB$%K8x#Dv=uk}r{t&#+ zHZVNjqZonjLR_T-Ma_WSusjz0Y8Zz2B*uFeJm{%#@S@1zW=J>Z=#OD~ICCh#sBV>K zxU2)xad?!d3o-1DsK_BPJ&q_wVb{(F20L2_1JePFfqA}XkkT8J;#T$WmQ8jyt8K+q zU3VLO;qEpSi&+*^FJy&mTrXh|N;mNSp1?RI)U^3cfI)B2!Pw*=*?w*>#Q4bavRDYB z0zv+7IsxU&OyuCWdHuHD9#~Q-{6aP%H{n#O%^Em8NxPz1H>P{U*j|R zZ7~b_vhl9KhzJfW-##~%yo;O>hZ;&7tEoPyD8#CUuzV=iq^Es=atru z=ch3;`CF!LUC?smdSn{=*-#d>HMR9)+(GDiWaju&b(GGs z82yD*a+=M(K*;?E%~5%jel6XTXzt(b_4^6}x&4t+2MN6ncB*tha$;Js&u?mWRgZ(A zZH?MFYigrBI@{{1YMqAnY?Yo@cmR50++h<(mHWj2&6C z#Md=XPt2uwq+OT=aCJpIyt3={xo4#J%-kW~HqZ{8n4t4B(6M^a=%pa|2tChUe%#^A z}S5dH&K62nxA{KJc5Qkm6V>f;pW-Bqdk1uCyx99*c{ z<2>&m-rjQr$hP4O>R!5cYi0ROr@cA7XJzTkb7s}Pc4bmoymf_For=)vtl#X?krQEc z=EQ@j6Q2WWUi=aJZq?qc{{zm;tO!tZ%j*|mX&wj0LG-}Qab=5&Pod?hF>Gi{ zow=yX+;b&S7!%itLz3Vygl9)>h;dbe9I&IvbmU>;|Dsj;yV?h2Q(U}ZF<0&KFtuPB z5pd*G+qJRenfKu{<5KS|a4YbC2nL-4580Y1P#_>1$h7)#V63$Gbuh@*o+{u{(EnHm zi#p)<|K%S{yMZ$x|Jwr|0{#R3->PIB*asfrf0&5CUd*T&1Rx-F!ZgNJU`hb22il73 z_sw;rrW$BC8{&ik5~6YU%J8ZI7?u=7kmg-t^yC10;g+W5+;wbv4tVfY$5f?d606ik z(~#{#lcP-HI@78+VR#HG3QxoqtCYT@7KhxyU_?@r+yZMo?#SCs&e~i}6H3wdE9=W! zp7YGxO#4Yq?`zb<43GxdJu(0cX%T5&DZ~lak zYMJA54hch}00TYSg*>&+DI(A|i;H6UjH4CnEr8yb5(K^4cbWUKegi6EL!0PVYA?{D9z;;6ASL7!@-Pw zQI_#YQL|JpDL=_*yV1~^F(47e;>w*mnvt>Dz?I`DyRp+GJL056fh2!&kea}n1Y(qz z-KHnOhr^k$=ddXa2Llj2ILIkLvz?!d#t88Ay$0qu!t?fMx*%59X`L|u%%jW_%MExwOT6B(1~ddaZKtPZ*%l%lfNgjHJKk-X#ei` zlX0PSUUcq6DaNo&20wDja&N|FH%y14cA*iZEme2d2U6fdZwg4jc_KTxa}LOULCRHG3^Y%hay=6!B+fp>7cu|n3eBcm2R}rm9z{>HV!yRLx4vFsNMgxMZs<;Q zQq*`{VhrspX$Ms(VxVbCvUEfnR+>uBn1s9;x?$S3i8E{#aK_(Gyc$@IbG=v(?-;OV z+`vssV~oQEd<6(kpi1ZY{iyfV6Z#sAZo9M^`wPeId^Kc?cei#|DxmWBnNEXoo4LoR z%?#NFwzh<9z!LhUmXMRB|ImVGDcv~OT;T!zB@t6}Fl&;awy)2tQ|k50}dkU~!3dUK|S3wXEpDzP8gmsKbVRyx~p^JtAN|sWpspO;2dt3Sa=`xhfAsc5RO$c+1%@kJ&OqA!7whZ=uOzW5j zH+9fix*)(8eC0YXoy}yOU*0QPF1hX-IAGN*=vii&D-~vMLOe-jZ^h;DfGA+Nd~J!v zKwBcFC;E)*io>N#j$4l7OlHHSn(ijt{nUeEduUN-)U?`!J0&$Md1-uj{g%OCxQAXOb}oT9Vs_~ALXeGa|6oFAHG8ta*yzp zi>{%lPrdvr<>V+V0p;&M=#KR5&+j(b^}EA}_OfZpgxiplJmeEu-ois;gy28{>{uaC z4qm4l+^!l6%{W~7Og#kg;+4fGIG7_el$mvAe;mf{8ArOeclJ(+S6JEXD5b09j}Kr# zWgk$wH(;23sQMxZMleFb`q>;SafemSZ5XGHuEAbwc@;lYNj}2ZU7T#10~)$zi%*~4 zE;^+Afpm@(cflF504CEm0K&1T&|GS0^l9PIP{r(IS+ggbu`@1-*00Q2d4MOLV)8F9 zLyHD%VmVYQ0;?a@qgC`hIkxl;E}!hESe7R+ zszI$Yc*g2AJNCqcR*q9!UCB#QkJahv#MK8_pS1Gbwo)*5vfMu1L)bGK)Ach(N8?Jv zkzAoODMbhiFcI+efspf#De8lfr1z5gg@W|j7(5b_7ZmkqaO`)^ikye#1 zX3_u4;qr;wGj=!~&*D7BoGyoIs3Rfk_Xh?)1^Y>xTQ8wQ9OXWcxik7RAMN|suiE`i zJhzY+#(_qkES2*?5)afwtlG2J9v6V#YW-$Aqu;239sGg7nddtO`he;=!OO#EQ+{UoMGk08ZI0csHOPA-*Om{ z(BElia2jJdp|&P+W*paLPtyOIv(9`nC9k;D)iID$-ZaM9 z3?^?m2G?O@U0J6p;}gwXc*Kq3?Zu1p$ZO~-eLe$&so&6ZS%ue&Rx|I!822{EXY`pD zXnsC{b(j48)R8>xB4|E;M`=8aUyX2YHSWb69M(iBNbw)7ayOr7lw$+jv^*u$#$t6P zCAZ8I46n#$)QJ6YXm4{knN$+$7AIwfW#$9CKU0{2QECh;N`yLCY^jh^f%rtk1-P!Y!}Z_%Q5Mi=2V zHu*>#zL#bQKjP3g^IHOtDlGeUL3I0)-7FpX@G(^PMr)his%F@EY5HU|rxaIJ@%k7a z?ct^`tdKEp-|!^ZRT@wnQjLvb53Sm!P#h{38VMd-LN7Q;n%s*Ibsa+IB_nWIz_l~w z<*~`x#DwzbD1A9>(WJQMmaJ$Y3nS`i=!3XnNsVz zpas=}S4MYAS0l&sdKTRgj)lW|4E(fl^Zw3<&GpShcHhmkb+0MpvvoM3 zRf1UH^{)d;WGIlYtvVKc?pWQYipI{{8}a4NaaAf90*8C8-&$j6mghDv>alP={9{zg zManA|x{^;TXfW#dVEgloGeY~WGBsWyX6OzT08J38XaYu+kx_bS>s9W}o-i>p#>3#7 zEgb897&(|nf-cIZc-L5B>PUAb!w;tr;&T&2=8k~4Oo7uGcQ)sqT26)&l<&=FjOmPG zXDWc5Z5jLES^$bkxr&x|W(}N^;}j(XIJR?}w|)4Qr|}lGoApS?!m946yM!ZY_%M=` zBg(&NjQj5rCEnARoDwc#+86yHM&a@Ck5i|37-SbFjh3Y6&a)7^s^P7s4?mj$;78&B zKT<%#2vHYk&?_Or!iFa=2&DeW3ofVdBxJZ3+z#1&oTGqWC}c_)`|P2d&mcWY6qPrw zd^mRt$e_0(ts#x%V2}}&Hqmu8^2Ff3*54JrJiSs$yn9BqS1cNzXmtKzm|V*Mn3vta zynS%^0XBZ^+7tC~uesgd0bMB4vGNl?9jt&;uCA|S0(N9{h?}BK_mo@N7Z<0Xo&*oM zqfIc|?E&TeX4y!NT99pth?h|`58yZNa?C3QuW}oXdW^Vz z4)ErT?NPYL+=c7W5Af-O7t-z@#=hme@#VaUWqq&eQ~jKQ5%Ie*pxhzUyWx_|SZ4rM z!p9ffE_rR7QdV42R-OTfcQW)PQ!D_b@|N?>6UKd))$NXmJ+;ftd+Y*1B}xssuqP2! zh!Gan5mfKlsUHX54Tl0h5yH|7A)y30TOgpKM0xRtZw3<=uY1-N7&Ajppu5`>ERQQd z?vt0{;2#PX?M3^#hwAB28#1w7q6B<135rbG*_E3X0er!J*1b{Yj#G!%XEi^)9S^G? zrszms-57p+Zju4(2$DR2NGrZ6+GjY0Pg;gzg@^NZTIcN(EZ`YqGX6NWR}l6C@W)*- z@>~WcjNVDkPng()O25IeA7v+!8T|cm^7=%&jA#7&g?EvCa!c%e{JsSvbimbeFur4B zTS$kbHJv}ZOz@6qOsEVFeGkVf9rhJE<9Xq9M*J3n z%~ym?{5I;Y#ivVDt-65_YBX>Pbn`sqBYXISF-y=sVG~gVHb<256;K8c$GoUVsrok{ zG~Wpma4N2Z8Xr;s=^b|x^Cm|^oUf>VnmBBSkFEvOZR|QC+e{l|WpZ|xov3(X_rxcl zZ-dmTWW|OWlZ=yJ7L$gm$`e7E#7Gr+-fN_E)l(KtVP)A~=9x<=^#}U*k;3!uF{@3P z@|XH9ZVh73a)y5&z_W*;{lF>Fnx3IOEZkk`9$)&pn|TZ>N?xEQmC~K%^H1YU#AuQQ zUp0t*G&-zj#&%7x-95wHl#UbRhIW1g-Qg@kz09LWb?4{umY;R+N{9L;#k&d(k!-@V zR@mxz#e_t7HWmuI6#)AG!s%ZkFvgp}K&{Isz%U^HVdR4|V5|St?G>+q{r+nwY@K@s z#)kdx^a>cH;(w8LCOC){Fev3er5_R!B=x_$Y5C9~z5i_)!GOF&ApASj`4`kKVE7Mc z^Gc*yA%jo?s&#Db4~CJy{d$eO#eqJI&MC(le7RW#ll0~gg#?=90*Ij^(c6Z<>0HBlBwYN5VQ)|s=(*{l{o z_?Lyb)mWXL%s$ssU^zX0jWcM|2G-gE>#4Ck(^_OLc%I2VE6&^Q7#6ustYFYrochEN zUCfgS;7zEhfcYyH91?g-_(ZIHLwpx2lY4BdtEjltGp5YX{)6p$38laTK|?D)(y*22 zQ9p+Bbi-}^p8B|`s-&D#0R1zbx1yTm?x|`gHDD0`$%3k2nR$GqXT?cQ<94VJ*R*y* z7OreRM$Hw@#`)V%0)d98B3%IntT6t?XY3gYaJL_e7!^}bS9$G~pmx$wW&vXs?|^JS zcrb82oM!-z>c213@a_?ixxOIZnlIMFP>8qQ_W<@B$JS;+74(Z*>s4*`SEr43^c(G2 z^WnCSk~9x>3FnEW`)cCI6vy>5963ZULP?iimfIx!3mD4g%FF163G8;6C=>!+sYZ4LFj!$0cXuH=l?@nB-& zeQ~QpL0dz1K10hVytn>uXn|rep=g0rA|XuofO@CJMj4{!K$X_WPM)A=A?b!Sbq ze6dH~cslq^+q8@!8+y1KzkhRPL#pZ+U~QfEC zG+AVzS-J_zt$#Kx@Ohx$I$)odi)yM9BogqJsA|&@!Q9Sifo++{+=9o1uzDu|sH`i% zn^=9Xq-7vnKZVebPKnz6aIDKW#RD9G#}Pep{d4mAsjE2jah?>hT)7vuh-7Rt)(dDV z)R9*T$9j%&qF1RVBh;7MCO6T8e!RsU1TA`$8`uYh|$Flg#5D;2X9BqzNk9UM|hQ zY<^v!(md(Zwc;v%if6=HJvpm3-eZ#FHHipk#twqA1xuPAa&qMNxbMF_y9BrE<7Fk* zZ^bLIHEN@Cr3&M=UJ#GxF8D56_Hv+Gxg z_s%+cgkSs=b^fig;r{*zEVbRA0@;_5>nGa@!cHeshPd*~7sm9Pv5xVgg(*^jOJ_HLJFl6n_2+M~2v=XYy ze;?KNF1Svx~4-p$R$D6V_h&l9@eC2I*FnZ>G*-=Hiu8S7GocibNwD% zg9;7M>X${Ib7!{*(5+Q_xd`K__+4KT8Zh~ZRZf@{e^lESvc1|0!FJ^OyDd6gv;LboA zP*kLP9+sX$ITp(5Py4hNsv;g#_44u}43hgSVU%wRh;@1c;4U}NCqn*Vg=2V)4I56V zCldU-EUHDN7W?ZXQxTh|4WV&n@q1R6{>Df)>|O0|rVxL!))x~)9u%E&B84$H+Lqrm zk>l?nW&6-L_X+Q+Y4RxFyWa$Z>HCC0=zZG}T?3pO$-HXFTUl3L;q(A$&x`?3R^;*E z7;yD+ZY?BEKz$~j=rM5cY}Elj*p#RssS_povnWV~QD!)YANprF%)I(8VMMmyNC%5? zaXOW4Mdpe?{H+>S*Fi@z6D0$@QgSw7kjEQK)oz?U(d}p%`j9<9sG_>(QT>_tp+0;= zsd@^(+YV;==yZM)q|7~s3o|0t=Kb^i4~iJiyp9(#z(Ai=&nX+W&&l(pe_^7Xv@DI~)DwgzLc2Pe?c?!NV+h2_ zaE^TYOp{L5zlMVL^v+m~@;n1rH)?$-@PgYrccEoab6~f`} zS@Q-i3a8E#@{6f0aZ?RyNt}qj-DnrccYdi_)sfU#8Dd)dL$Vkp#i-g(>ernW^i92TaGZTERJvsz4f4Z{U(&^56)5i5ie|lvF_JP zfSx|ILr^>iS{SdKW_foa`xp_9KQ@iKw`dftv1>FF@3p>Z+*(+)R#Nzd^}~B;rN`kP zfEMklU(Cv_1qll`C;aCE3<;hNkb&zl>oYK<@-)z zNE_T>C<|!zb&CJzuVs%XNdlJx7Ta+p0CKl4M0>32K$C;v(2RCPh4vt@Nul!q_aq_Iuht^uibC7APMqciXM=mFAlHBg#7-4kom9M2D*&f zOJPyNkkn?PNukemvOKE;gNMF~_!p%Ho-g$Q%fSplye596VS_SGqJ$UEbAcz#+kF1p zxPL`XM?SD_3ann1b1>w@#ZAZxI}cx%i;>(Sqyy3Q3zHDfS-d#{jk<00Ez4Vx_e<) za39PLule^j!GQ6qN#g;$UqNrk+4^u9@89P_UuGhpmjnT0141V3yElQJsZHd^0`TuM zqF)SpagePCqkz5^klo&wP0l6qJ%B>KQZfx?NH*Olu%HwW_j4O75OWmdE)wvd0ZSQB zlI`YP4vPZ@E)Xij9;hrEKxj}58+aiGK~0J)2$e7havVm`%GP%|4h0ly8jg^k%|BZB z3+kSbrDTjBL73N2-h4#a2wcFEh&B-!94dEh*;ggWwfbHY%8_#Pis+)3su z!3j+y4PfG(*>!pWp*Lure1Y<;gLd*TNEW;!bvdY;!2jJ19`ia`HnEBy1b_GndrnU& zMsr9DD5;&ivhaX8r+gSW+ald1OHa~a=dSP?5INMh@hJw#c8t*8Kxt>8*{!o3dxsuj z83P8Gujv|#@?6lFlv4$w_5kl6aVGBTxBx)V*W90BlxYL3xf;VqXavD;Py`pHmzUCp zs&30Skd4){AF%--8M{TQYn|-zji8K&_F=-1ZiH> zAj|;G3;TmMNA;$$CR~mZqthxl?N;A*nieMS$8%>+Y3k?8F83}k z*4A_!DBx?|8r04TS#9J6XlWL+OXc~b_FDl*X9v@#zGR6inCmvHL+5V3?o$b4;bEwI zYil&tSvms!HyrJGM-x#47#P$i5zWZ+q}o^6^c~&KvX)a7J;kC!^3mow){UFx(>3h6AM8Zd7WA2uH>X9ZQAQQ@th0ClUPg2RW`+n+Z zEb@`*8_oj1f_T$&#yK5##|qEYiF1pYqwXdo@XA3BHEPpz*t8+qKQA@@G~9(O~4e6+&GCuygb+)^L|MPGgxt%-p9%XUw+aU~;NS#D6Vu zB=qQKh4p6)3U6pSIr_LxVm;LF`y|&=0|c0|&T*m6(02uyWLn5n6!-(*c$h@h>=)F3MP0)j^EB{k|m+vo6I>YNGp8rAwYlv7MYW zzPK~I4R1~3wZs9#6o@nBXG*93k> z+w`fJ3ViHZu*P{Ngapf!t3_53ViFlBOhquz9+>P?tWNeh+OgbDoS9u(OjMv1-S5XSXACi;#WKH zi~5v&8mM_5^=bUe$x|Y1*z0Jz=UG9k4C$}U%KaL?b4cq`e5%RZl+I&#he&FC( z3W>DGQN`}$BdsB#NMnHfN|iLWU5VosDA$}*kx1*>>^%`e;l7|tWe=2|yOEEzaL%^% zaAt_SV8M=X)=s)!ok@*X4*hK%x$uB&r!ldCxue1<3DTekI&Z0hr?d^!L|UonBnlfB z4=u<5BU;J|Rtvx*YZ|f~|NLIZgw;O&&-13=p*A#goG)IIPB=FdOHcx=m})S$xDw96 z6e=_uX$Bz{$VWF>HG+@}P!8YhW=Z0V5{Qz*7Y@?E%I;zBd;9SE3gsZ@B}`As5T}#x zzs{BKk<)Z4uyy2!C%&E@DczC*gk4H*5@2(KN)Ivh4G4N>f|80Qyi;T zLS6Q-ToE95oLlDUOw~Y6fpaZ20bTfrcSxZ(d0VDAd0`k!tp}vE|N)d3O5qhs0@>cs_A5##4&0X!^sqgg6$ca79xfnS6H~9GsW$JrHm$X?Txg<(bGcnwWOyaMi1M~T zO)LS)NwYV|=C9)~a?V}$TOP|}l5Se8g2fhx1rY;sKV{^ z&+1=>-Hnb(ymOiI&+SS;ud+|L%#tI2((d#i%30NgN6$&QrtC^EjlQCf7n}imC~;>B z$d42VoUzdDCMtOPS3(xkaANhiEQNsg{%!)H(BTm>nmn}8{_zHA4Yv|e_)}JE z{sa2|6^H*(3*dP{kU{*6hE_@Ij-xQ(3~rI4Bi18Ta8G zS2^l)$NRzVJr=%pTJqhwKQvrX31bF-7hAH?XxzBxxQou{1w1^V*T|S^V}2H~1z~=> zTck|N52BCWSQnIzUEiNbrj~nb*1g<92AkOL=<2`~fAX1rfO;S>(ncKd*}FAFx1hf+ z;A_s>8M%02kF;*kcA6Wk+&Jl7gDJP$2vK`r(xO+}h*qcv#j(09;R9K{J25G6)dlld zXYlqdars(m0*Fp{mF|-W*@ut2bhfMPYTtarL#3y-*D}1by53DLol@V$dfIsHq*}ck zmx^|q)ku&ys;Xf!8f0>-6EDy!C@P2>Wv|~5{#FA09LqIX3yv5BbL8hk#Beuuu3r7| z%Vq+vYGJcCfY&7=_zIE~vn4`>^X&qLU@Z}k)1mF31PlvS*sl3hj-M*FoU8bA4N&tO z@0z~kOvIb-Sh>%Q*lB2{e4||5%hVJ2&v`#S%+BRbRTZf5#x8_t%Nq_WKbpkLUTVVq zOhOYDnhrK<$pR$T`EMpjZ^Slg63`l6@r4BYRml|J2YP~cK}5%J9)75;H>Ld)RTotx zGy(~30N$LlP=p}U7ONlDnH^czxiKZO;b=<;JC%Pq5WtrCg^d>%h+zGEGT7O`L^s5} z{Wr>sFBP2h)noRH@9WK7OUqADeQ_YF?3$+_U~dN~^zedvAgE*r+t06g#+W^sFTC=oQ__5uJ!3R2Crz}V@3 zic02tXmqXb!m|9qQO_>58&S9KCN|bA>hFr?qzTkUA26nQ!lbMNG_40AevgAI(21qQ zArR1EkD3Sg`rC1!X48hpNI_R4l)4(IMPrMl;Kax)V^@z!aO=1t=Wg#+o~#ZR5|f^J z1MaroXObuVELO|8S?Po3Y~hjlJ6>0pv9Fw(wLCjS^ZA>KCWv@(!q57N0>H>r#+SJh z#uaF5ao(_HivMsv{WD=cN4;p`>XV?d55n}I4{@@$A~g<(?RZ4_7GRKg2>=U!9i{AF ziF}-!YyIdb+9Gaj!}x;MtaO=7jDbKZ{Nq$8E1ng-Fo=PLaP(FRnJ2^a2}Z~-a`90o zyrb4yP90b2&_UCMQFjsGm$it}iXirl1*=9xMzx7-9*#Ut0=pNuHaUcOd)=fMf*bf{ zb{hWigB%Y{+^HJifzv3-`;qh~6O}-%4rb;-wROiuYpf#W{;BzW3OR9Kdi)PZfPE*x zeE#ZyS1+z`o5YeYlJtpQ)%PvFYJD(H`g{xqgLnl=pdW*n5Dx8jIoU+yd7Dt80fEbs zfvN(H7*}fa?C{?2%{LI=HXaCVdsWRNj;~V}@^JU+UZziVDGcx3s z=n>A98G61d*(8;4F(7)m;a}dO0Pj`ME7XrAlj)Q9p}!br#(zklSpF<9Yc4|;lN5!F z^Nf*nII%6Xvh~gS{@PFvYOqjL;aX)tVpmy_)5_IxK{d4G>&kcL zKNCC0jaRCG&v@#b=b5Ya+SEHuG>Z!QL=WeJ2;^SA?X3HXpt6mE&c z!d*?QQMN`YSElQLFn0l!BokZ0$8nJKSeXJCR51_w(mZx?m&t=>j%0MpOus0rM%|xO z?)~W@9Nk$&4hSX8WmplnCu%5gkYAu$c`Aiibb`-bp3Lug#KRLt@Y1L;*a z=+~?BDQ;n?-p}S`U}gRTA{?6F;D2pg-ZmBcF3JYxk#27z`RM>J0PD0;WL@ z_NlM_`zyF2dJc_2ql>=iCKRdn+wVAYcTl-O1}}{dK)tw&sHxoeS;m`0948o=mQln=AFc1e-bq^&H)|jld}xP%`F3#=R3*gD@^9 zIk{4^Sn?F(Y}W|52Hk-j*0#3b4V;HP#Jd&KooDk-l~O9IE}1j^CJd=6e{MovUOR6` zu2xhchXpEO&;C7K2(n<@82)>CxLADFzOv1#ACq9_P(`Q9ut}`4sV{T!49%WVv3J=H z+6D=YF{2+dAyQ?6kB#rzOG>73MLP4lBx@VBKEktc;Oz+DLS`YjSYiW4&BM6yFfw{E z>ze8g^Czw_vXdt}lQlW9TfDhjd`pm4Fb9eV{>Uebqru0ZOSYgzF&gx-b#{h}ZOTE3 zptLzQmy_1bGS^;!y<)Em)dSI6bJGRMF=|P$2q+(2#llks_0g zkMt3=_Dx8rNLi)(#Kw7RuLv{7tVE!@^U+Db9o9tlZW{fNHnh*pK9%hVQb*s$PY5aJ zL7B!);kWf(nA_)1##xPR$&GG1KU%~7(zua>;GYlhw=1iLlmrzkfZIva5E1q`(OEO6 zy{2@~%H-?Ys9&t#eo*2deh+_$ETn}&B{P=hZku}uMZP|BJJb0NgYbtthoH^1*slDg z+R`2(&C?z0;AMMkSNA{yLjAP==mF&uyhqrAGzdXoC^FM8Mu77dh&e!j{^&h!i}tSz zeqkO!3s~5ie6A819EYloCzx7Ny<~js58onQAWmCwQ2=oM2*QAyGdd(}{7_DHn0F^d z7=~kYX!BR2$v>3F?6Ra^Yu^J4YZQ6wZZCiYsa+5&Y=J40RWY0psBDp_jKO!)lhZ06#q>~KG6g4&868z@* zS1q~L5agH$if|_2;dz#xFJMLpS%~;(z_7a6HsT%tLta&)B*&ca5mpRS0otqMEx20y znfGEHXh{~!Lvu;Udzc@#tmmz2if!@@AC=1Ig2j7O0@^L1ft-rlO+Lt9htu~l&)Nyl zDn!mVDPOnKxCL=+&L&>c^3${ATx_i&zy5ek)LB-Z`8(vD5N+BRVMSsr33wd@7p7GHq0(V8R#3Cj}biP*hP>9nQnDCX?5oN3=y z{A6l$w!w0Bv^S{ywuLp-VPYhy1%%prl`H3%Fb*gO1%EnOga zTI8M3EROTZ77v$aLt-Q9$O?k(%1hjNrm`l7tH~Vh*vSfO$*+=bYo;MQ4*#!9dU4$H zfCzL-j_l)cLu9@tC)#Y<=@$!t9TRCuE<77i!%aOf$H?ODK6Yn)NMbu#q0SXT3xA&8aRvsx$2zhH!hPkuzxY<*iZx|T={aY{kp-U2%{X+W~w z&$0;akn<<1wTAj!J(x%s+#db7n;8C!bb1;JGua7mo}ZZ zjTL~C6c)gV#Ru!t9W3v+YCqzV2;Ngdot379Sb;yi>;BqMy}n~gtpTp7kUE=_aiTMV zcV9bQtlJ27)%oU1+JuP;KV5s=3egDrbhI)9OYfJAtJfUtpp(vWt+Z~#j@y3U(z2{-TPP>pGOi!qd% zdfx65sjYZYJyWUOPPElYbSYM_I7Vg`&XN#7WOD593@=!{n*?nVU-cJuK%{+plE(JG z$I8dap;>XZV#EQ!4`SJ=NnS)Se6mHmXUw_FL!#!U{rf~8rcw1dznUtN2=>Zw@%rs`vm{eKNa=+AhYr$zsqghlVq}Zp(IineZF;E!US^E41h!Z(hu~EY_ zl7JD$l6Re$OXY_UG>B@};_UTvysGb9)ryW>6Vp&*u~1n|+7vj8W}9h2SfOPtDTLEE z=mvK8bY%JKY@`nno%ALlQoBR#QmOiil)!?@@c=g1C@fFEBaN6L?;RG)6=AS>I5`dG zRK!0pswiveKqYjdJWkh3i*+2T#UiJmfV+S~YA1wegg$@9@cVl$C<1?M)3A4JeKk+s z6#B@G*zvx~8hIBc#Fxj@ys7DBJTRM?Lk)AzH5hK zAOPf#yviR!1ZgZff*$cD&D~tH(Mie8u|ZN{2&5L^cy(ZQK=BT@*_6^Asz(#6iHv{V zLSq?%&RR6DL%}r=9FbtI=S`vcGJpxZf~(+q`|E7FbO>EeCn5e*Yrrd6RziaH0AqIze_()|U30}Q1sE*B%&q|({&1%m9i;~) zb30_;gASB)72wtrnz!RYYWzLF0Y`;K+{`nM~fjQn!*2M_beHi1k*I- ze|4@|S(!zzRSjyi^wty9V@Sxph@;=80{oCh9MLcV_Zml$r4W13^VEDM`uc>Fr93Pb zG(P~~(#FvQ{hdfr?~r{D9tc?UB2t1F?slQ`L@Un7_-920x;D*3o~mYKE%QEvla{EU zuL4d^Np5IOQRU7YYQUmn1Z$WB;y~#ij(&s;tu9l(gl(`WQ63IA_DpFEI(E00 z989vXA;L5E7%X7Ztm;cG!7#;-Ml4#wz{r6<9-94z2ANtSv~(SOJwPore=)QZe<>sP zbzG!Y!srHwl_XQY7y4R=BJMCS>T(3$0?pts;b|K00m(Eet{!Yb^GaJ)rMHRl>K$p5?MCMON4zu1-3|RsSLDb zsSPW@&lhUUqFhXMG-`b=(u7kr76LfVGoh$)*a8BZ0a%WPvkSDyicN4W_|3z(cz(^7 z>U3USA94s|Q^-cgOv_rdAeap1fW{A=Oriyh{sezJuV3#R9eM0RCc+`Kf6ia=OOcP; zr0!c59Z#ox07Ru75Wt;BN7({Gf#_9T;Nvwi2@gS! z??sJ|cY^v(`69Xiyfs8xf77fGsgIwO9YcTB!T&ukt}=t}<=w|CY2RTYh0hnzlADH% zrmVBVK67w91XAApFTI?K3Ig3rDe&WDqD%YwLwVISAA!`&#~M;^+gI8hDpZzpe=*J= z@Pv39V{VEH%!)!>c|>0qV|L!F);(H$FF^)!Uv#XiX~R71%nAe?YvoHmu=s)LjUdvxndt z3%+OEgYy5^N#9kj|IkE+R2QV;$CZ#dU)mD0Z9OrKAkv8xW*JN==~d7lJEJgS165^3 zA>^Q`DPz>torPtP#itoy%$FEtH7PWy20?GJ4iSk0M7C6oB(_<-Es~o!=SY@ST3#2i zQ4mv00jp#)e|%$N7Im((Q`<$wjFE*l<*3%P&$Cpxia`L%*aso16A4B+3?-`^Lce*L zL&ur8(P5B=H6JOEc(9royn<0DPS~VeRG2T9HFoMu|g84HqJrKK4M_7|82|C}U=hXV_Q(BLpZs-(n8;nu1Zv~?C#!}He5%sd9qK`$c+ znkCFl6(Oqpx9-DcRH!;{WVy(ch+_~%nO}(!biRiPJ0m)04_;lV{}_VQVGU5C=}a+ECvIByT3~trkZtt zJpyk0QZUdLU>e>5a!#NSSw#VlO_J*Vrb18VakPWXpP`DXZw)60#_>)dPx%Cb0|qwg9wZaP-hM!rMZ ze|;rIiI?E+^KuqPZ_oy#8o}Un9F15wteuozp#Qx@<1;3O0q~rc;P@_MfP4LJuvM4H0$^dM@c(f8%>NVEEtu#?CRtJil;- zCt4h4S0gwfMafZf939iz&5Va?1V_^-e-xz|y&qE4%we4WR(K%PR*1M|8y%|=cysV< zKp|vVEa?rVvQ=n%fDqXCUsx@3Fd{oUlhmAs5jvF=Lhn?0J=+GOv$K~xPWE=PM_(5^ zQ@Q=}E$!wAB(ais<3)i=9OCgHCfw&X8M!GNCBz6 zB6MQ{*xBJ}s+!{+d&Ys@v7oC1Pj*}04n>};v$FC@n`Sp6{Z8;sEMjeC7V?pni!mGg zUOtOxWwu+WNI%zEUJVQ!Zl~6-f7(@@3Xxv&$p_Sn#z*5uh0gyvK5LqA;m2NzllmJr zO`Pi3SiN%;7X_g9Y|280CshF;oo-n$|D-Db0s&c& z_T;K#&>lWn8-{i*HGBW(4`O)@ix2oCT*qjiw(&^;!Lx!a7Li*Ffvs~!e?&Ld!r0$~ z9;3D&jA#t@>57>NP`UKiaTw0?yWfS-E{u8JJ;(9vIy@5+QW3K7h-ke`~+5*W&N-!p=gFX8R`MW-hH08!0*K4XsU<-e5+e}ARSW?2DZ8|;{CDM-@_j>_F3oVm*y_Woc1d2)%NbOJV7nLC1t z3NXhU;%#W`$wSbFP!Gnm##jx|SiX>w4pZrAah(I;#c(z2V_tVNU6WC)CO#;TB)HSa zs|r>=wgjAC3`RC#SxGl;yG=cI;odob$dOO*3O@hy)^{rKf7e~RIqW@H6P!zzr*w}r zT#yx0)1&R}4X=N=z8@p%P~%P0znjh*s{VOezp*w1h(B?;!|cw+*OM}@7lFOA0cix` z7R0;@^i2>dTxThU;L+3nh&*lS!V1l^TzTM6c6;F=v4IU#Qxy3SZdfAF&EmMaUDMLfWUBn2zp7OaM$B;6qc*8A;!JTotZ?g?Gj+%~i;cdnO1xE_sy ztDI)UJ=bm=#^0vaH9*|a!MA!>{?~;wo0#-}f-&FNjNh&b<=EW#{>O_Y@Ob}E1f#R6 zTDJ9xZC#f6HZ(S6IQsoU(K%)Lv7jH+V1mTof0wle8^9L4s6}or6|=klW)sM$AXxz` zVUEV=ii-Ui4#LvaVxFdu{ZoQXbV$n?APunVj2fS?9r9~* zUsr!%Qd1NAg6@;h;^WU`h6x=tDjg4~f5VvxQ@Aq_nTiKvTWK43>uFHobxtZt#{&%T zuf(8#aV)eH3-Dq612&M2U)=b}Q*SNQs+@5yZe6FXC+|z(ScSq7U8e_A2;GmEiiDekSt z+FI(bsiQtzL;ZyM>7Y|TZ4+9{%!UQjL0bY{L9syvwP$#EaoeCWmvC?k{~u6G0|XQR z00;;GD04(yNHtJa%>e)a(E|VgxAKqz`vC(eb3~``k^&q9D04)&^R5CG3lk`FL|k*Y zC>duL006*I001KZ0GANp1Q&lTWMOk?VsBw`WG-rR?L6Cd+%}T$`U)&3XPUikQSv2m zMzWlvk?cvbcI;TTlN=u(A9NGl4U0{308&zCM*p&p>zDn3ee{oQRRJIYHYv$=cAthP zad+cVs45f+b)&wD(_&VyL|%;(C3w1y=XE}-WRbIY%>J>(*v<}n?3#b7f|Xop!K$TT zf3JmFGhHc}FBs2Lwh$F{objv{te7*-bSY+XE@wE6uS6vjKx|fk2|pu{=hzw35VIx& z7>a4Z)oe+fnjNrQoU>Oio}75C@wv>?;ylTU8AphTnKIrd7)n&N$^$S7ENK_QF_&A0 zz*m*bWVLQF148G8TJe91<@IVRlxF9$TC!QOS^-f4AykFZJ~3wePc-}&7<`0db!_H4 zvgDlE7Ipv>)mg^=`A^og9I(-7?C>_N0V%}%AM(mUO{(Gvke-PX+J!hE>S!rur??{S z$tdIbVr2KM*$gH%P*Wkfqq!Pw8NN&XSc!bL1fJup6QMN{i0FSsa~18|VR>|GD!M_gr6=*q6J zDo}u9;kAwvGdPZZgJj9 zV7TjlDOa5>?jC!hb7qQ30aWQtJJnkE;b95%{39-1cU`6kMdJt2kJ6?1lub z00ZQ~O#l=Q9uh_gFUxElTNEa=-q_J)AYB^S^OyjlAuh^7Rh)ju0w%!RXrzD% zkE4Kq1{`?BTi(J>{#fgZ7G(wSVZyS4r;NkV#F1>SiWMCpE!3G%Ns>6mL2sfhYP zYbNqVh3Dta?R)p{eS7ztd-t3E7QJJ|&o}V1^tA{YrD2$cG|w`w^-pkq6VQF);@Lco zOsC!!7c+m6MPv35@bLjK_Ej>^6GZJLpJpO~JxuJRgeHAot+KBZe#T{n17h4Kw?E(A zbT(0ufI7-z+{ps_BHxrGk?rE3sm!IhTJT#VdyR&UOhOb}mLrfQ|RrbMZVQYg@}a6_HLFaXZZxn@%VnprTTUI2za-5sHhc7W69RLQDfl&o972Lo_BJu7uTdCC)(G!_@%{CNr!sxBa|! z+6(xG4ad)(HgMfV!{MknLNA>XcjOvFp;db=#dzU^#B5i9o85qh~|Ivne)aDGGk#TYi%HFKYjMfMwl8S%=!>5@i>Tp7#Kh-%5ofGyTbO; zwZpn}V9A2)H4i=JeG=G5c^U$3O+}CAuS%Ru6k3hfrLARkKMJ^w{dO&w!)%+OL3}k1 zo^EQ?GO}HXIUOYIpc4l&Mn{e&8eMC=Gy*u6O#w0822RvYR;kIm=bv>;VTx9X>35(V+F>*uij*WiCi^ycaw0 zdIpguJ51lBbvNZ2_5!^$LX6=8j3%Jg1mQj`mCPFS|89sS+$ZiANJPu@V|0I?Rx&qx zKdY5OMQowl35~}`d`hJLtEkR}$m0%oCS7)c$%1$CIN@m;-vNFQMR@2z(R&n*12Y!) z$}Nqz?$7t!bpUt!nJjAUQ*Y<_l)^3zA=0-yh}>U1=R%E)wnw{oS)6xQVG?YDR02e>g+QX3yOvZujfTk~5{U*taRYz0y*H#IhT>_K z00XFr^_Zb>o2}OL4J;yiCs>v{OoiVH5}_nm+kTtz@}G*l z2JluC-`s{}?!ejj8a{9D?%JgWI~*#&wI>8_4+pe}AAz%=Ulygm?p$7o^n1aHE+0i* zf~z4zB+GeYAvg z;s#t=G>X+88~s&1h-mk>TV$i^VI{M2WX7REve%$yB_{H8V-N)L7(04tzaw+f5xBx>;p(ZZdb6||Ax`qC}afU=Z2zM+L+}p(^2Pk zK6q(hsnmA;L(eJTD0y3UnD2Q7gFtfZkk*s( z1|ZL__w>eHb~)%Y?cJ$ZgX@lWPK4(z+9zH5EC)5L;c|b$MJyyQ?$Uh4jqbPuuPJeI zaD}JPA)#-6h;y*YAm{-BfB9cFpV_;lrEP zn78DD5#r2Xj<$tZmDPFzdWS+yv>z=2=-xVH!1y;FQdc+|*>2{Ma6ig*t%L^*7Q-cE zKFjJ9173dy;Ng#lzg`8^uJ6NaQ2GRjjYKuNi-glxUKdL>F|8ATql)uDAM#9qw)QUU z=n*(GHJU9-1G;dlGxhPqtS&!(P~2uWG={G7k00O~XRk#qvrPOBTQFDre+H*=#>-D7L--TfT~m3icCVxTvpp zOEn>B=$=+Nga5Z}bjurMf@{wx+NJjb;hz;*y`pu&@cqX?m$3TLg)nHP*OT{~svcgQ-CgDR1=G|O~ z6z!qy2$PO&1~be$VgP0vB_NJ==_4HI7xK$EIvpvgW2 z)-nv6kbOR3pgcFSN53duf?i*nls4?7jZ=*P@W^6r;;1}_|7ObqebB|G2|s$k*%E(l zjDu(dd?LxY#YPbfR=}x)=-m`d^V8^|*Bd?9;SZx8lfONItcTu5IbK)#i^zU_gNhPz z;B6?mW8))WQzK&gM_4=3w&J%@*J5?ap8nz#%IyV4{w9w*9?~YaERz~1XyTNFb;GTU zJ#ju$yp(Aw@>6zV(63wf|1FF+OtQhJI=u$2QO*sFcS2NN_tq ziHAcsfzhP)K!*t@8s0eV@CAP+I9K6;EsiN)wP@04*t>|Y$4rX`^dieKifN>sOxvmL;U}3+Yn(&PHx-eBp`nZr#G5`b#oe2 zqqr>$iwC@uJQ&*WgBmfxaL5;+@ig9DV%}QKjc32tTUgk**~VGl>nR&_Lsl}s0*+tj z(j?wZ@q^KFFv)O-j~?{6(ta2i6(JUi`qsIT1t8z6ZuA@sFuX+e zgil2lTpZD(`JB&yw`hM0QyGIdiOK|f<{U!1#F`SCg}>JRQefE^E84f7xz9g-P_lrl zL6;vtU^OwoF^khQQ*IFX2E9VwtOF>wVZyFqIVG9s7=itrdS(`U*U#p^2yq%reG?ta z6^LT=q((a=dWsaohoFxiMU5Y?1@)cqRrEH;A~| zGijE2{PDw?vflv#jh~0ml9>icsMIpIpK!5PG^F_WKlJ4UEPSz=Dztl|XS1rXUw?vo z)-@jkd(DqQ5=`=JlZeI~q@xyins5BQd|A|3|A8JK6-F3w06*`Te!T^ErT?sK3jW(k z{}SIzD`mgINTGi)x9ox4%shj}nGBR6nBJj|Ycu4xB&r@q4DT9`^5TIY#b$C1?1(zlqu z4;JoK81#<68Cu5%9fm0n5E&&}#B9+EqSjvw({Uc{M|*#1X_GkyL?$dl)zhJUZRed#Kvi==xIhn1#h z6C1ksssY{IxEbEJHD!a~=9quZ>HdRhrzUSF-Uils(hKcnXVE0EC zgM~XD2G)Nz3&C2JZe6jxzFk$E=hy-6@3jV+fo3A(VBH0^)|gjZEQA_d;E^d||GXt^ z{d?~sz#Lepec8!hAmVQ@iuCUXBk-x^0xPL=o^tpYy`8Y8bB3=6l(y8m84wC`^Uf4J zA}LLQ?y-r>#$nYi$+j(N&18Pcreev@WT6@W_U(Trv{K`*Ov!KpTd(2>F+%<4B3uUY zGZ;u<2^_c+oDMl~YsY}HkS$9pS(fWI*ScL5MYau%O+AMV&xPjLtDN5O!VD3IJE{8k z0n|FrYmr$G<>P-cFb^vZ_JTJ4jk)FRdto@1%655*xh*_0rr_5M^};F+KZ@7f5WAPl zkNfftd@JuwqAU$C$Alo1fk=T1c}72TzlO(x26MieD5NaCdQd2Fh$9Y|PJa z_eB0K{PIW@48;ulo44kqqWu)(5J|6&z{i7w;LVY34MAA)lL9{blnwy13uBUWwE8(NrXp^ro21;U~wWSB=%y_-abUPvMaBoc(ajIDBbevm86t_Z16uB*AqL z(bEf}-Q4~Pqs|)bfU8#N0TZs%ElPjttm3+_T4Mu5xI(82sI!3Wy$XI8KnOml9_j$6 zzN%~1y|^jrnhpEzz6hy`IUhllvO8mgdMpo6|cXtw`-A;GHovr!$Ga6%R7 zY-pQQrO-Sag%ZYM6^V(60<;@NJ+WqPBkD<6q%bB(hv?A-xnyv6R$@_L`pkbQA3Y|U zxQSfjd~c?G+qIo!FSr#i;}~BqqqXo0`4mC^%DpLTAp6&2&ulj=EWpE;bKGU`?w{ta zi$$_XCX}22FCQK3@y6=y4G3%BH$`FgH3U)}#tZ@tfm+3@4RiB1&4wZ4!>4l+-uW9) zOER}!Y`{hX@lYwgjy=4$+3kOE0@^Q&@fG!Pf|f6+%noK7eESJpA5+_G^7P9l(&l8) z8~?prENO&J=mW1=_-M>Kj{t1%mKB)C)_|Inu@?h0&to;yaym2d; zW2n1N#D}Gyx;IY1PX&KQgVB4Md1rx+fXN_X;YMRE_brLfCo=V$4pV*EXQ)Vg&^S1``PyAAVArPC;Qs&}jd71kmi>RY(3YIk^SQhTkM8D) zZLFd%yp1+^-O`9*4f{&7O>q$H-w#v?sM-^ z?H<#O4JfmszhHmVJ;vA?mK9?7b1*mQ#VV6@eJXRg0ueEPCqkEeCfL-x4Qs}mayTnD z8aZe8aXqlgLKSt{u9DpLMKWBVm52dYQ+n0v7n$PgSG`x~^~cm~dRuPkKSP`{Wv4?n zXJBd$USFoBE%XG!ArY`WS%rKM|7Vrtzt_QZ7ANM;C>@-J1fSkUXEn;9Mo zRE9H5EEba?{)<`R`liUq7tYs(RG4ma?`eNYMEbFe{ugGvE0Wg`WSypJFt9V2mqej+Dkj#vcIv(xW@cJlt-Ohl+x3=k} z-gty1_-CR8v++upouTOE!=Xv`vzJ#}?j&r5e{2P|z{KT%6Er3|73;dR8Z7uzZ$TE2 z4X;4e$<9|zX1=H^lcS|SOi^A@x%@fZLAU|awI8UO&758?zHf6YAGcH2gh@BWGo)?tLxUcs_N=~ z>IR8l%xIjqyD9a8g*z@{KM#|bxNY+B2_ft2q@ToD?!|dVyg0yL<8V@>e;z^sfRDAL ze{{IJ_l9hM|+2(e__e+=;-)-)EoYQD07Bz)#xv=e4|2pYta%xK84_dzS8N+bN%Pl`Af4R!{{y_321&l%yF6D2Y6h z-rxDf{Qiy)Cn$u9B#!UzXx1g~Xc0yc{ToTWaq8Xwk3S7lY&7>Kl+YX-(=78AH0?Sa zLHh8B5j*D+0nJ|Fe-|;8Sjqi=6D}N0iFZYP5&_9^809H^X7_gyWy2p}Gli7P1L`{8 zIeLG%f7IKtg(*l5Z9$l+mrf}54wj8WU>OKOOI?~8wmAi+|4*dBdg%cw)!FClLmyCo zN>lg;N(yu6-M$I)92JdM8ahb|tmbJ*ufljj0+^XyavV_)$fa})oJ~m% zLa@<+D^;E@h&S=Vc**EEOc)}PCt_HT>oDhdGKyn?25fZDbcNvn3r@b}u}cqWex0P3px=!5 z>oxRYoa7|A6g^lj3s+uB!fZFCF;LrvX&O(4FaU8@Z*OlCXPi1)0xV9h0V1Z?1eRCo zwq^M^NoQUTD#v1kNUpmRnja)_K85Y*FXTD=bJiXBe_vGb_IBxR5k)_P*b1}I;&2|u zF%0Z&^3-*@qHrzarB0j40UO?49Oj`Hg@2>6AxW-i8hHy7-4QPYbUtjJImOLl7$`S~{d9XthdO!zn1kqC&#ij0PcKj25UA5^{z}j>s7_G&Y&&W`M{o(f*i+QJ6z( zv7Kj7e_U?uT+fHa?1HB6VYv5`+04t_m=(0eR1C*NltBNH7*tAr|DBX2+oaWM<9saA zSd?zDcA^M2sf_N$xy0Jdll{c^B07W_98Y-H+&xkhXG@)N;ED(gq#%<4wl9F!8|nr!(r%(jd=*q<_}fDdL{s#;ij ze^Mlp6uD~t~Z}Y3sM=M(wt| zmH_p-S-yb&55jED7mrq)#Iz-Ar?8hne<4tpC2|{pQpqW=DrsFL!2)$cD(D|KkzK*qZko*Af+Imw-aBy)7V$jE zLIlPh8hb@lLhEZy6`VYKMyjP6(-jgup+HJw+E@z*9o1_e;d%> zx-2;T&#moW;hjxtUE3}2VtP``%nax9}* zvMtCWzMeimQ*4$KO;v)*VPL>yT}RH=CmmcoB+A<->VMJF(rN9wx(_@4ZkWOP`yYje zww^xUy+xv6qm(Walrh>Sm&J!|XdSTquoQOMs3o5zG&m zd_dj{0`~>5%!p>dG|VN9iMHx8oeMT3>Jio{0*QR15!o_Pf+(vZ1Sw_ne_KK$u*^*9 zVT-4>@P@2kX>6=4+@tt?K%<|-{5PM%yn*56r}hFi{&GdBK7p^VK8LTbALQ$azHpp2 z%_n6u$rbQvl7^Eo=Anv=+t2@ok%p2@6GB)bT|dj*)>W8=7t9=O!CD420T^uUEdxKp z)dya|oe>6l>s1h5kucbHe^}+3SQc@)a9+P!hsxKjdg9&~S2zo&B#8Dq)(n|@C;X5; zct^=>Cr#$K*}AghxC;n=kdRfnNi$e)!=b1gd(hXNvPGVQL6&W5D?I9AD4a-!Y`%F@rY<!G+D$sHg;pjOAqbJO$>w;pE=!$lr678x=8_NP#!?0U#4D-Jx zusZA5q{jC|E=?EAgGoMx{hG&WyLPOgU1?kj$;Hv#qL$sd)wZ}UR}l3Fe(84w7?K1G zP9A3w3YH-jQe@}`(;F5=ouK8y$MCV2db6xFX)L@rrMb0^f4za$tT1#V@Hm;x$kzw* z7Zv&Ks;Fs&aTbfv>2BMcxRo|lQF}oE?qsB-;V5y=f|-WmT5WWaUDyK$VBNazl^4O_ zCCnqP>0lm2xD4lPn7|?#c^I>rbH+iPJ|)+*l~OgoSV(~_Xcb&IT)qHO+z87sIN-Jz zXscZ}J_zc)e=FuaXPmns=)rdgSx@}tpT~I~L7919rYZw}=J0(mvxvcNPe3~ZLe{AaTK!!fejeuay9Iy7JwrB{t zC}efQG>H_{Ew=oR+X~5?1+>uD2GAOLx_lzJZXV`QlWH_ZztEQXZU+8{>v9_9y03nA z*^p-OFOI#ckQ&h#S2J(EGD{yx&Ne{?F6NQ=#UmS4l9fS?$k=uyq{&w30w29lmxr>J zbb^Xse~Cynn?Sgxw1Y^W1w-pgW6ld*`X~%%N z-ml&b`1%;xF=vOGQSzJc`eh$K)lO|eBECRxe+pJ%nJZ;wCXV8qiDZUI>c!=@kuEfE zss}b!6?loThFIJ#M`Y#E01u|4r@;>**-uAXnDLOI@UVL|Yw;s)1hCGoulqsV#WjMV z&AKto*XL0&SqtNA{YCd>_r-en{OfpqoUZMjuvN+d&ux>Ga+KpJgFRtR`;nJrFtEw# ze_2^`F-+3DtT1i+gq!uJryJ<7)693yRKt0i_;@@LPb|Yfqv;j+WZ*Mc72@p6F6L(4 z0gVeFrAE=|bD;VHJk>AZ^ZCZcS!b0xjXzN9K102UV1`V68b#SCnOmHU!y6j#;9rGx zwiSdG=7VImNm}2fuN>A#YYNcGU*};oe{U(!)VuD3J$2#vmz%Y5X(BfAk$n(vOfLme z9=mJxYVEiv@*G$(lxj?4SfIhW0QUXt>TN!YzHAx0wvU4X58?shB996DTN9x=6EL^k zoz_S@=4FS+?36nDVym#oUh6zfBi{@ zwMsa!(J2G1&Z5?AFRPtRRE5Z!+Gs|JZcEkoAH}29Ke7jT0)^3syy#!Q7um`5zeYb+ z*C^anw4EK7deD+sBRXX)#?Y8`Vy2y%ia&5QcIZVh0m#WjdP^z&t)TqS3-*G-azc%b z6ivf&?;2Tvc&@18 z9x%vc1g%2WZ1(J#iARP#UXu-b=5Xc&F{9B|&9GB4PST{9TQagTA)`@Wf1@L5wOA-* zvA|+O>79?-f;RL7t+nIOzoh9q?w9bMGOHR`sY76?$e`1R9JzNLEKjj~F3OFG%p_z% z1(DlPqEV$?o|oVXYriI`uLdV9;T4Rc>~Z+4m_4Teg931y%x^V82(tBqryOkkWHyI3 zEH9=EqpQN2&SFi$mWhghe`2ZzhAofcXd&ABqNqQm{^dn-0~o^0b-*8h-!yQHkt4^T zY-Ei=S!|)M8-uU_?I#%2!X-<1=DPp`N*7h+jmng}7nct9 zZ`frnC?YX9ZfuW(9pUT0_LfgS2_GY19 z85vKRFYFrZGKaN6FQ%mlPWPs%{EodOZnFQ4;;it|+0<+$6*#o4NohVQ2-6@l@Uj4o zhV^Eeil9%2M-}5LelvVzT1!leJfdWqN;PeV;Mo^!4FS5ie?G&nm6{NC!eq3=k_XzJ z$Q($$wbarI?U`JSQ85d6#I%RdLXQ@>o_O}Ls`lFsY1L-Z;t8y&@7A&o_W8b~$ImJ~ z+L(i;aBB0X&eislsF>NVwiwGT+}81o3pi)-Pt(!D4VQaX_@zVGS#u=A3@{S|3}86V zH~s{w)Eqh|f5_J&I?f%_Ka@msAP8e+Hm|4pHc1nNoN(I69+BWB2P_y=k3M6m{3mn_ zokr7o8YlO6e2N6A2Tst1k}nHkKq3XE%b^!#VyE0PGpN!NHBi|W^lteq^zFhT`&S~6!=O4fT7i( z5tgaIndU$Zv-ibD(=>%<59`Jx^C;CY7u3tcY|NuG^>lOyBMUzfBR4bMaxwQDF>uMl|I`F!YmUPPil!8SXL#yHv{|ns%i0<-QPuFg1Ig=^iNLq35zdeord1AzLf9~dUw-+gC4>0=ba9w8uydRg>2F06;{6##7+MhCWL42Q zjir+F8A)PHmd38UzsvE?RDJT>u*id{lY`@t#4!d(g6f3UFs!tz z2=Kl5D$Kp+A+PH3(irT&ETF6L!nYoQjTq=2!^fNcilPIcL6J3l45hvodx5tiH34i; zED=10>gb_8kpvIv_Awi#>fQ_}7R&m#1bCPO6WgP@cjevnVJ;rI^_D&Gz!tnh2Uz>F ze;{gyF17MLcmf{4^F)5@(iA%olxMvHPbD+3)z|Jq>UT%GU2et- z`YhxFWt>mUq^@8pFHX*35(7TW)S__!Iw9a~!zb4TH)BG{SOQtqWmzH2OrIv|~a57IcGL zPX%b3nv}Q3v>QWZutnVyYdB3+9w1Mg(jynuJJMQ`$%9!-4<;H%3SK)Z)CG9S{_^3ld@TGw3m}GKJ+5%p&~EJK6*`$^W%-EN?%-SPN|)7Z+A9Q{2`+wl6`~_YaJb8ol8N1eb59& z+94%$hQrgxoK8)8PD2`4x!aW|PkhUKBIZ&_6o?gR#OVl0olCkX=4JYD6TeYE4{tkn;vF>9SKbHQ3aI ztW}$?Fg_vVNKatlfhE;p;qCHXlI)}M#--6o<((L=^b$x@S$X#X7nGUQD^0k{k9xMUTzIQ<*fAbE}U_ADG&>o(g z_VE^umUqvtlh?HAVX8h@|GX9cTIiRI*rhSnGc|3G@9)wu0Si8xgKrg%5f3NMnvoN} zR4U=Z6g9Lkusp}3X$2F2#*W7CDZMnHPMw`_2E)hMFJk;SK;htnvXAd+fgkTEs{@zL zIjc=_CG4sodpgL%fBwA}Uxggm?)}|WD!v1m3_p8N67hnN5iG)3e1b!jGmzx|f7zEI zo#%9Rk>V!d9Qk=7z8->qBa3%HU;IZcqou3MW`J?qLVp~>86^b_I`+N~&X<= zQMTp_rBB0*us32X5@e*d{vroQ@Pp$x=s5?+1Z*83(oStFg7i*@3k(gsGaR zR52zl_akfdf0zEPIV3)m!IbfrES50cnM%>k2RWV z=nE{{7};jZb^v>iG>lSu)gioC%Ey1LY|SX}&oEQ!@UN!EDzS&Py4(P_UbK;U%6KQP z@@j|3H8`j|p3{(9i&a`&0ACt09O^oclKYgFQ^>Aef4$iFcQX?3VE%!6Kc{8B|7E5= zly4bDQC*B+c{rjzg23hD&*a#5scgSEw=+nLD^2A$!|l&8d{aJ`vaQIAn~0b<>$dv* zg_1Sxi4t9M^Q9EP()^@LuBSxRT5=1nSV zzII3pd#!w5PJ3QP`6@&#T>_>*d}lc;wO4TTr;|SO&dB3$8Pu&^tvs2ZqsMm6lWxxW zGk;w_yK0q5Qu_o)1-fiYScaXPhKQ$}JiYK4&X z!73Jdc~sDfEQ=b|9GFykM&Xgqj#!VUSjpaH+Hj^u%}~42uBTvs-VKmt_dn+5_4z>0 ze}Zagvt{G8E`nGnWu8%YB){ThR*;{^dNvxY53YwiLFo*%pmppBnTx^naBT)ks(Cea@C8$7Y?Oq_{rn-kl% z?I*Tv+qN|^Cw4NiJ@L&sr*7T%z13e1aZY2t0gL@_k08r2G$8RiI)M+9R`38u+ID*bRtWyz;6&;J z7(d`YDsAN-nALv;C?=rxzoHQnApT$Rh6xz{k7ygj0(AV3ZRCdo*!`a}!~;}={+EG- zOaKV~pUNTx;DP>^Cp?tbHXsWJ0>aLdCf@*{0Gis-Te#TTENOq)Z?I#2^#CC#@iFr` zGHlnk408^$Xf~t}V~jOAKt&YMn?=kKT|ndjlH&JgnlM^y?0C8 zCHTY@pY1f)24(4c*(Rntu6ro{hU)lHmcf6IYJBIOELXO;{_yKpC5rFI5R$;0ck!)s zA<&&dvxsHfW=eS`RPw5a=!WK0i9IPqvxrWqXf;i1^cUS*3cd6~;vdq(d)+D0iu676 zZ6Gi!G97rdcKweTFUOPj9+yGTVrD#cer7{FBclgP%CE%$#z43aC_zHZu*w)RdijIv zZ$INcbydV!g;30jYn5pXrdhkrdRddzEo+WJF`jiI8l&D?Y?Z(_bg z2bv*viS9uv;_mlM%qljlM>x@S(73~LJiqe){4B? z_mwgv3&I5|t}Q{sio_MsVe@U5T~d)cN5Xi|CX_r{EyS~@SD4@el>@FKL)AYVN~QAk zv}?IDQDpW#;u6Jk&nArCP(E^P=-L%%jgJ!2m@k<8tqK#6yySwwqY+;731GBsQyb|7{BqDy}N=C|e@H;_{uqZp#%>D@+8&Kc9b zjbIA;yyhRQS-MaauRm3Om;lds{DXhWW6#Z%Bn+_!Hd`WZp27f$Os z)PYYwf1rP_J96m;6f(5MoNKy%zD<+0W2Wx3mpOEx$QKpc34IFWop^bzy8DSLMnKPR3 z6gJdLJj}m>_XHBl6>yU}(08-Te_-h?96hZYvh!q}x4SC%lLDbcK!ooKqzQlP>HDiA zbelY3*t%|FTACNBocuM2CN9^NxTRf38}ub>f3hy<=X#g_8uBCP@Wdt-Uvg&8ETi3z zkTphx$3!H@!L*bvCOL_KNk!f5oM!k4q9Gh->I}l2x}ZK<0Khd@5~Q9|;vU4#mMV>O z;Tg!lISh$b(gD8;Ana1Oy0nC_4w#giQUVP#z@tFF3BnkZru@xPV%^}(JI3YJti6yq zVFLm0HUN_eO*4o}y)|37op7ILS?({@bw+7(PZ9$^;;8hmlHK(}E2atF!DItJlKph^ zxrj>t2uNyJ)QeiNHUC4OR+1}1mZidnJ(gv#eY_pYX&@)22E4eErXJdkfC9WmSfs~r z%!-G79#r@PvRqWOb&S916b|z%W~lqkB@699nLld6U_ac=9%AZo{X1R(XRLeTy{xt? zv=`q3F!_3l{%DG<-4HU4)Za9;Bs^5!owHy~uz0YacR_174q671_dvu@ZSUA~#>Rtn zlpvDE9hl!9uE9mwe5~j`=a@T@p-P@`D%?ODC{@)n)subP*)({$|MUoDo_|*i4Nvms z5_Z6-FJG_8!)td7(*aqdD%=SkbW7KWvYU!x-k-qEI^Q0IRJ%0d%zl##BFib`xT?Q; zoUjX>D>ThyyAR!ODMz9pF@oZe-~g4{9w~^W3rzlgPMeDeJax-62B^+tF3FfR1)Ytl zabJ6+=&nE@^g}mffTeXT&wpZ7G`cdPqAR>>=#J`7J6r(^I`%jqN2b04)-)}_ddyN- zPUDcXX>34rs=%G~wL$d(I-ez&C(xxN#eYzh$z2kh-txNi8ors;se5#x{u?;zC9P=& zl<@p=EM*~WemA@Xq!mTCgKtNmcQf3Whtn61;dbpYGtk~=ugPkl7l2-}`PCZD25t6? z)E93KeYFHHYgTR2g-f(=xNYsMglM?}et~UWu-V-->;u*>zOb{% zewMPi|2XQ%qGQIWUybP{ZG({AKxw;SoTau%lq6c&rbslmT!qcw>Roz?iRXbjJLBpL?GJ$BM&;wpR;#!M+kqUe{=izEEi`Z zzjPW~bN|t{{G1GY1R<67aN&ptJ|7Z8s!Lby4oHo99r^JNipq_@gOOywCdG4abcHQ5 zRLADKFx9*JYi3eTF{s;k%#C3Dj@VVMEmzE5WLkvW*Ahd&c32px6m1D;KvC2#m|c2_ z+TLkpg{OdXKJq0jc01_bpPF?vh_A0JKylT|dA)FF#+=smaF~Y88pgMr^bRh!@RZmZWjQYszx* zl`Xb$mAf*1=bc?0C20M8O5CB2;|*n^zpqr4hDG^A*VfJ6Y#(tJ*v}$5w3WW~ zSFoXkso{P3svPgl5N3`}fN>2ZaAKG9P9gcOD~0;w!JPK6x#<-{CZlN-2EIt(&ALq6 z)|{MXgVgW`T>Dc8a6!XJ*Pcy7DfHZP9mg%NEEHQF-IjhnQY&K=vM7ueN)F>OJ$;^#fua(4LA+Clbx!}exi^;dlWKx> z+Ju)quHVSLq3hqJQQWp?^ViGvynY`ikusZ%+lt#wQ1*193Sv-&(o6nM-t6(750GbS zxVZ1-_Vmu%m~znU+K&krS@-!jlIMO z;V<~Zv=abT8|?SXt?b_y9<=lh%sKEu4bW~Yg2v(pTP@3SgNrNHHOngX4GCmID(Gc~ zvKa4NQt6_OAB%p~uXWoGtwV8xF~Conm(=5%?hX{YK~Z~}O~kfWO2$TrCQ81|^ROpv zG6OHt_k4leCw^$h0RM~_hpy|0^jp^G;^3Y(fJ|tB$}uCaDLi}0jPq)Qk$GhtS@HD) z1&!2n>rKa3X3i`N%A~Q#4{kLcU*pIY0yctdGR=o|O-I@jlToD`!Q>KHLLeAAZxJuK zqHqc8!A(kmly*%{dR`|EWlh-BrH{3Fr<4aT{1GLe4$j4AuGC0V@~~{8W~m8-bS*u( zMYH9J^KZm#eDIg05`#c8HY*L;QTzj=!JD-ct?DFakL<(1NheS)xkgzW$b*5!BE7ixid}=gvV26e#0Re^Go15` zToaV5t}xgINzHTGMXFj<%nK5MO%FK;9F2%+IEQ-@nc}@w(E*ICHBD#|ufcBsOmG%| z;6E6*+nt==T$g0j8O`G6XWofKcM3DPR^#pUai_~osAR3leVIxd%eod$^AEKxL4^D~x(`|Bw0@<~b1 zmEG4dh#~~QslF;t&8wieuZa?!rB|{!TXoxjN`pFwEV-^w)WetB!s~H%shKh(b5IT^ zcW?iKlI2WBa1AUr82G7DC2Li2jkB&asnO!ddH;@{%^Ns-3#*mOeP;e@neYjEIb0sz zPpsc)F|ljO^y-m`H6g2>mE&L>&ww$PnY!hWeP>UDFr;4oOrk}b+;GiZCeG9Fjs>DqNj2>!&lj>* zti`td(kF0BH5X>9AdP}%F6^%1c4U`NiXP?5ESIhUpC)`TqFVEQSt_KC8jU&l6q>>) zCtMuns8z!-10p&Ws;DMCHY!u(%W2Bxn5|c7;2wW80^pM9=wxRJGK#%}YzqX}v|=@) zUz85ZZc6_4l6{ax&C)R5&MqbYX7aZkKi0%o`Pp=&mOMI8>;nCHrwsBdT|x9~BMNlO zFiUjBXNc$sb!Pts#4Wi|e$KGul~5fIoa5HjuraV<7Pux68Zj2x%_@ix>9D9TatQ6o zt2_+I$3QieqJUI*7$w@{U|&7MUJ6%=N&gF9ZMuYV1|qqt-5&*;hwuJ#W(Qp%a=23( z-&~QHX8hAIqmk_T)Cw03pP3{PrZR21eBT~6w1iEq3VAH@Krw(vkhlme%DIcnywAFZ zs& zQTTRv)9=2zzp|n+xyx*2zM=(Lr?smH+q6=8&@{vd-mDkfS&TJCV?m{E*hUtv znorykc8uyQWs5{!GkdDNvlo&_5+ci?LN;w+@|msFZ{hl2prgU)_Aw`bRNMGJ0up~6z| z0W$^cLQM)#KZbfRY)JX-y-)gj`r8gwc;GIaUGIFtO#~mqMREt?+VmFl4dm>vrYT-9 z2CBj@SMS@DZ(?u^_12s;?=K>&P*6-V9D2_%wX^4O z77!mfw9nK8Uo3u3S6B`nG*6NKR8O`wOM%)EL+`B{t3wd#Sxs(G-La$5PC}Uncc3J~ zh`-N0LUdvc(#m+)O-Dz=?H0Et?(0l7_?7G~Dz=?6PRo|4k#%$chE@`C^yoLwL(j>_ z<7R*Mw?Z71qwBbd0cM*A_lz|2h83@$C+q9oNxIHQ5dM$uRRIcAko$ip_eJyf#z>aF zm{3hRIiz_cfl(pg*nb6U!1!A_mVk}em@cgUz$#K5IbWj~KqsUNnZ=T7wGl8OeAJiB zK)XX!`cL3ENxM_uTLMX3b#z?> zG@ARa70eJ#5%dBTZ(-FTi75E6nmP~OiWd>H9-;ouK8e}a00(yS;kF7KO({Hf z+Zlt`JuV7Jxx zuRdtsXX^a9)>@tmdJ)2fa+lHNBckr)$m{0lUSE;&aQM+fL6L^fLtCMIdF`2d>q{oQ zAChDK*^@ z0zcH+2THhsT8{ZIw=hJ~A8d@DT)-OTC2GkAyeE@pHhPHg!=zYK_ia?T8#8WWHB!}{-Db)qSOjeN(&IOkTg!FSY%7YmVl5)k|h9T zLH(ineny=fgv`kuONVn#yA2!#BH+o-Fs#2Eyt%sV?-=7k9qL7W>`VaGqPcQ|-Qcm?jejX%4zuI5$`;^BLDJ(q3%?b>y*%{~lb)<=ZCmdXg;(_4{ z)v7Sylsb5L2?Ish01a~+3UCc#^1P9~rAzg~-9NaByw-ghol9tr$3NozY!tU6j;5V{D_xhHF2^HtZP}UHemYQOWE@>-RomhRe*60 z8XKZtex9q_eVxhT8Cs)u*IsCcJj=UJs)#*&p?}cdObfz~E1?Ea2$uSYhziKu0-k6x zH?e+gUdL~A&FXDJDcZ$R9yZtwCMu%EMqfn{AEi~o#ax}OG*sbkIoJP4Z|H8{1Ga${ zc~cJEz)E*K?VR!Xd`Lj}etcDY!Xf-$hOv!|6+jG%@E_}l&2~e`1PubR*`~w>V1WYK z2uK_kJk7}g&Fd7Cs8J4(U{V=nh@&E>;#3yx3>~zzIMh3Psph=vS?n-p+lXdOPkp%3 zW<117cpK%GVLva^oog8cs+spY8q3$z*iJ$sEw1O;CpCf^tcWMo4xzg8G}cun)iiUa zMbu%WZU+k-MHwPe!LXd(_q$#FbnR&#=AU&eGqhu%Ny1nAKJQlcW8&7R#=GiTh@8}Eez%bo3h3^~c{i;VH%BSOu0P}TPj&s=H z6dy+}qA-c|CLgvpq;8}3m811ZufvV75__CfhSXFGzZ%|$>4q?_&zq>UjxWgn>qF@T zWwMZN!-9bHFr_gD0SMF9`2fhkfkPLHu2Y5RoC~x4ls~Q}T(_~tT?u9k<0fuIsEGzi zAPD}ADLI!9Ex`FxnREVUqz7X@C?eA{IYm3}8fF+rE)INr{A_TdM~2uL?X5h9^%;fV ziuZ~H0yDPwj!O<ATyr`_uwpO=L`G3*sEf|EV?Y{FQeF|Oi*gu`&;iqTEx4glCdYp*JlA=h`3EQk}$UZxHNVZC#h0*q+Z0oX=yPhKaHl<@Yq2 zof25fVey6NSV|^o5%N{YUm6Z#hdw=O8C4mibcyte>NzU0C;zabnn}kcV)dH+zL(p;*VBu*&o_=w`Lg+w-_OT8aSZzJynY4X69<1S?6dLRhRevVUN6fo zgn$30tjh)7^CLbQ-X!Ms;P!aFjso-Q)j48D`DO)SOM*?nNAc+Q0^^JmGD}v=l$0{U z!y$-}vGlf09+aOiD}gH45f0g>GDt{X3DC7pJM(EK$jXR7KS~fb!2w%2oE782b~I5@ zstp8HYB&(cpC(1#>0?ol+uNV`Q@q*e95O`ke;j5F4TpM8J;&y3-2h1A{@m0lM2)1B z?iEV1%9O4)8U;D~u$)5eg!Y0{L$cOWO%bwbgS zapH&$V3-C#sPpvQI_uz1CEpgz%G&-VsP*r^rfa6_4ts6F2*+SG=+7yzvr#AhAf`jWJMFc;bDb077)zKQm#`$@uuBuH zif}s{C)tH1=%i-T@N@{i=z+~4?L9+IJvnt6t6it4UhsOqq7yRH*l?4-NgzR4W}LN5u8VA5%&>_4*DHIPC<8{xY} z+(r%HylTc8&4gthP6Y!QwtoR+5S2EkD%V{NY8iXag<+u!u}PAQ^?B7GzgCrjTfE8;36adjhL?+?%wh@ez7W$aLEo=O zAWt9!BbSVM_=^~baUTM?p`3AJh$P&!VgyL00J@=4p%!E_y6Q!t8|~Ua_D&V_I%Uxm zNOS%5mhNX{P{$-xqaq+B=3;a+?sLOfbaXXkDG3oBEFGS^yI0!&S(PNPM-0w2&{70E zslXgi2wSo^6gMz>zhjz_LVY3`9&J#mx7Mg+P)8 z1`@2apVG4ya4;0w9%*VqfEI0zrKA}AyZ^Nm7W;xs7R`xI3+DJXjhBCIs4Fwy#2aip zo;C-G)V&cn;d|{x*yQ)mkYqn)s|yl1?D01xlkWpvCY{V^Azg5BNHk6vQWL~;_QrWM z9^I%@gg+d*N)CJ$B90h0fBW#z85-NjC(p=l}6Sf_oQL$xLM*1R|&l_mXHUf>(O zC-jD081i&`?4-q$w}AZ31BeH%DrCjjhab^7K3IT zmzjC)-seoUeWx@7x;DUG*Me`4shqQJ-pw&)6s2D}cv%9bLnMERNFWij zsU4Y(oGQ+7xXNYoAIKsUa1ip4mZrn36QUjYYx-{>66J)K7d0BYFb4wBF@{K1gN=Bn zC88KDOpUPLRSQ4*8r3e_Z!~I6WdMybs&;I&NZh69Ea!c7lqfJK3Zldiqao*zl$h&q zB(g9+gps(0mg6DS`5e2X@J0*)Tr*P&rO8L3Dyc)LzB@&^d}h4iH=J;23(%M}50m2r z=wsoK8HXv^X|{5^B96eJ+tPVu)}MRnXFV#`4p3@}t;`56UYR^MD?!1G6i(S8c{o98 z$50N2Nj&L$29ke4%m^~idP{Ee_Sbt6ELdk(Soz`284f8R5s7`&RJ?r|EvOBNd$KkI z!WN=MQ?=6GqHEd$nTEp9SP@pUuTqVS2E9_OnSZr0YBi+pnw`IOj z3nQTwbra40cv8ZFt}7F+zF$^WY_bvgc+hNd(BeW0KOul0;*tTz_%;FHv8@6fNqHwF*J`!>ao zL+%skJaFQA=-yi!UBk^P(PO3hNt}sM_)FV7_!M)N4MAWD*OU*f07f_4 zvL-95PX<7BbrlnFSkk&T2PbQ0tlii;KR0{Jm-626iazKaMRnCcgRVk%7<}6b)UOFV98izQ2%~zaomrIg(*GPybZR^ z{_A7={J&j;j@8#$-Uk#27>G|AtrUO==(N#_+WV|b#A--2qi@%%<_~d2Oj&VsNnuV4yB}gH@71X$aTVQ zs)OLd?1Ea;6mTt1fhJG6n9LYxEI*de6e3L(T1K)0m&ld=yU#P*A`bXu&9@Udqly8e z{>-@IJWjW&TsuK_NUAVFzO)E_Yyt-<>EHqe8K+#x1dB$C0c!3<(8YlN7web24wf$w zD0k0vcyVwTKo@3!UonRJhg@AJa7@B}I8A_6NdGgaUuXh7655F8FZjQLXqKL5%afN z4@PIX*pK~6CW8UCJtCF@lwukZtJLI{&H`nGG_UrlPxC2aQ>vb)gnKUL@rEy$*^L;baVRb8#^ z6B5bkRbZl#o$(F-9itJv&e0J#9&VKRVOt)?4Z^_qj9=>hT!>~yeUX-p^6~Qb3D0fW zxqyXKd3buTJI->kP=f3D0;*n4rE>o@@>32#b&x&FA5LfD=-;C(W?g0#WzwJ}Ri^$Y zps%B2>tN|~)9~eZ9pY<3_mViQPGW5|g}YhGYrS#78kMEG=J_`?5Qa-|V<76p6JH%HPj`aU3C`=|v#PWOyDa(FK%Y#4X);Y&82XXI ze!k$+dO*9YY9J{S4v>fo*5SB(M??bZ#&cW5*S;<4)q0-*3R2j_$^F)LK0t7 z%G#$@6_I@s#Ho?+%tw?l_2VPx2kjzUOg1e9GL)iRy^*R%2Mmpb(Z zSN8O>?n^Gnm{xmt;At?_{}?R9IB5o=-Q^SRQ{3%_9xzoqI16yNtitkiR)LSY009 za@p75%*)(&0YST%R3w+Ih2Rm{2$EVcAug!?kZIW{S5Pt!&Qn*xUD}S~fl%US32(9^|H zG>)a|^y{k&3F(&qpeXnUGybgRQlb6)=cxl;v?IU`3oOLc{KD}Xa$1;cSXRV|z^JvM z^`AS~Q>@?FKH#Ah2ymNQXNq3L)qn8c^RMp|5gZ7=>r8ysUeKYPa%1CvqU+eT<~I02Vbt=9QKbv7Bsjbx4Q#vdC-hJNHvY~z&@k`F za}i6{-eqMuIV;yQz<0|sZE-tzRT^pyTHF~J2HAOK@u|bC(>TSlShtQ`EeIsH64B4| zvv+uvtZMAh4U>_}W~^Ypz?w}E-IaF_xgx{Iz+V*QI{NBwQ(1UrD;DzpULsw21Akrv zfbnA{oy3e)^!Al-%2o^w6)~~)wZ8Zz$-wSjJ#O>%j)wWV2Y5z$r=E$~2_y>fBXq+Y zsOY$vpI^ml8O&Q)BDvnd8T?IhEeL*V&-!HAsntUsvqu=sw9*XTyw+=pyde60-2xvk zKRjNzE;2ubRyYK)Y$`f-7ghdN-nRuU0riQhsOnM4LJZ-K7KD%$h#wpbN5m zP8-PfX)HxAg?KXlNpsKJZDly8M5^%yYtRxzFQI*75lj|Yvn9H;6UItkC!{pbfowCY zBsb?eqO7F=cFP&D^7$+0oc_`BKKHr)Qt9EpzJcUZYGXwtQFKcW+E&>qpLBw&9D+R( z0tXa6y`cfM(kGK4!K2pocap_6tnbGi$HKmT*zEfd27j#1VINT`)~#EnnU{B~wI&)b z?|Qb>t7&UZ$E#y^FE8w}2Y-_X1K;;~T^$YW(Up`}709ESk>O+VOAQGVAspo>e)K1D zZENvzW0ufsI^pBcxZx9vro}HSR?wUW(IeF^a$uZ+89enaIGs<{j#YFmX|6rXxZ? zPx4Zs*bTqsFBMMrM%#C*#PVG$CeYGMF{(61PcUe-pB_Nl<14j^U^1b>XsXQJl=DWE zOcACo`(L*7uJ^gC({fivt3Cp8j1eTaAFxB$H9<*1x{seyE(f z5Zh>V))=NpFAo>)4nb(XFIfM88w1rziau2*x_1cj7!g*P3vZriLWtnRwi!eNLzmDS z6H5M-lLYxaE@tS=+95_Tjae2Djkd~0u&R&X*7aEzPMTQaqdO4F8ehhIoR1^pwB4)F zVL4xThSn^hSLVF=xSk`IW>mqf{oJwx%Kp_Z)1Z-4=e^$|-`T&!S26SFhX~n2K!rf< zj0>+ITvrg{h>>gWfX6CmT69;=46;h+%Gsu|3O6LM*AXFw|Kxt2$`9d}-;TBW2b{r~ zy4e{)p7$k3kuz+_nd}fDBZ499zcd! zb&n7lj|eFO3rxw7%dX|n^->a9tiUtz(h4&6=O5PhVlUqt8o++JN!yoq<;Mz(hlOO@ zci06!6Z1m))yX$#WL(4h{=-eqS-RPCfS1+%S8}5sRs~+fOE?(RnRZs~w^M=tHiUMj zN8Oa$=ZSz;y216duHdtXM<`;RmXb0O?Sq|!Lh!=IDb5*7st`7E=2J#r9S~yFz^tFp zV-b^n`=NZS3iOfI?SMQES?Rs;HRvjza=8WK`mXlmE3E$hQ#g{@9RT<#7!XrwwB%mZ zJk#y;0tMg{2XHz;&soP^*|jJTQ_>MPZPpSsI|b|*XjI?fEot*Df~+S8Uk0`P^c*H0 zAVn%b0>i)oOO;Ia6RR~ge2F6)YZ+LPh4FWM{f#P9`{V>A?FoP$>`_Ggw`84X7=Z>n z0S-b7um1)sC>dK2dZz9rgWgBo*As_9Tk>>(^MEh^y6Qu6P>rj6-JW6d-_##9f79vW zxrwiOD4{Wff%B+Nj1L+E!z87qAWH8aWs+$pr~XY%^AEFfn};tug!2aS2#mLvX@?#P zZ~AA})64PXFzITXKhA?o6e?O~me(gxYvN~)+gI<9vz>^Lk|~~$le_kSCNWeN>H+I7 zA;3ycp;?zcg}idM(I%%ADM?4p*v*f{KsFF@mI!VP>>cs-ks%=K=E?f`J-G6h8o0LkYC_vv z{JlqM$X*_^o38K;n{2?q<3M~x=GK0-1$=irHe8sd8#^peyx z9wyC)nutQ25sl7SWiP;^*nqIO{_BjtesW_3{RotXVtfmTdFX{o^itJ;qvHDt4J{s91U zPN&PJEwLT6@-5z@Vebl)#w_q4nx%9b+uR?9*`XoGum56#jeKfr-ab=g?Ch1EI*q*P zLhsijX1(uq`*xvMA9djAA?iO#P-wammqil*ITMCZM`*jyLR>)_o$#LHWcvh9e>L?>wdb8W;6ry%& zNWFT{)qfo0%@fH$p?_G0i3^Q>g$$s{nqmr%M>q5qx=5$YaZpfC$8wH@`E1$!&xyB=+*xWe8}(-GsdC> z<4>Uows)us*`!pj!GKVnI<(NWE~=lWv62`b z`0QVG)RRSN7L9G)uODOVZ9+1?15H$r@ zyH;#gCB!!gJ%3O{Y$Oy<;JRO!JE#}3&4PkA{6>`zhx3(FWpmWmg~|6wS8;sMKnXzdd|-um{W5KF`!S zG-)a;>2awsj^hiuqMEIuS@rWNpLFgwsffFY`>YHsiwGP^|fee9Gi z;w00!4DPZ#grv#QH}E_?RKQ*>nA&;<#kA1_N?NXsw6s5J^%&Eywr?4?Cj|`7EI$Ul z`KnlR*gc`>Lc5za+(}veAoqJK7j~~~7VhH{RrZ0|*wM>v6fkgWxL@5tya$mtYK*pA zt-YqCjlor{ z{5zlmE~O(LQvu0~NpU}mre;=-+#1!6Zv(9bm=RWcmmUMOy7YT7Sfl7YoLZ6jJ=SiV z>$q(5m6%>eTY`4OFit3HYkvMUq5}jn(qTp%F;GCxCBth#u~jcnynNLnY$wKQ(vi+HAmTElNa90 zhB7bIOmMVb7I&6$)XVs2%jsiwT~)dvKL3C7>inIW05UL;Hdq6I9N2%urP@XSj{m6? z6F~I;+`??)%}Mw7*}Dqef7}8Ya74@2d4nDGGgm*r!R}1279EwcC#$oO9+rHqGr}~c z{9KkYX-vu)p}8}F57Gcesejy*id|IJYWK_X(+ceCrcogJc&aQ$X^ zu-=LgE{I~L$yK}h37z`z+fVJVGh@ti2)y5b`wHTep?1#Qre?=tQOR=xvkKeq1OF(& zXq%L5C(@$TtTG^syNY~Dt8;2aa2J1P{CUUF7vC3NcI=%|?ih4FV?&rbUD{o=81g5w zL+BWnWP`gY8}=6`Sy)y4ODri|=ffLm!45lq;tHiMXT7KrEIEtUFLr-v9YnC;h(bkk+5JQ_9Cz^Kps~x2a4r$<} zO?xJkWcOP8?0Cdvwl(5afUFhv_mZk&WSe4S$55y5+g4eSo8W%R=j*LDxrmGWy7qJ2 zVgH0^y^8!#qLiZ!&pyAO&%WC>dlBYuw#e!5h~r1E90Y8nKF2n2-twZ?nn+M+{Crfq z)6l4@*4x*q`%ZrHs_mi{+LOd=qFLsMYB`AJ20S-vH@9lbYuTk)fC(hEO7~suMX7y*T&cGPD1mn}=|smYWkyTo zS(QWfOY4xA*z2@;gKyT-P;$fe+9dsXz@CQ=-g4twbGMtu-&6fzq6x%R0^}_Aq}&?x z?6Dyfd7*X1J}>q>4$}4{@k~ZSuZyp~o?Ezxw4SRG93_YD<73W<{N!y5 zv9Ob1{h4Pg$?-=65^??y+GqrEkU)Pg@TeDv#!FzpKns)$tN)El`3@V!tw>LTKsz^% zm-js=Ma;?-SB+}2@I@)hi6*P(2~SOd{6_(V(Fw5`G&omtgG-D^AaV8S(4ylBTW^Z- z+b7#onDgWG^on$iPBo}Qfl`Q_)p}3oNB9Cj;!X19Itz* zBMzYO5eMrOQmV`t5k(kl$dpXa!1Nh`A5`N?xYx!G3i!hBLD|890nJf-BhKBDpkb(p zNcaF*vW!lmdku?EQW$Af1Lj!(GUuc5GzrIsr++DL5MZyO9B>3{2OxgYpv;>LR69GH z(Wv^0gomDW(8VDy43{63H4OKToZS8S*98b{ygpO{ZTYx9IcTusyKo4ve47`&4~F2K z`St-57&sJ*%u&e+p9I${j za-oaNiMI6zOH5r?dVA;m`eku0?|k}GEExP-Yt!*ViZoQw85INWmDwMV7^a!bEx=Xe z$0~dcF)m8WQqGFI0?(G4+{E{OpVgBJuu%{*5Gz)c`b-u}*=4aK)*~y>NmD*(#l|sX z(4?Gdqbmk-hG-XJl8!#YeSuPdv+=hD5Z13s#A5)lmhYIVjD=d#q9qi6FF8+i!-ho< zpi&yg9CnpgK$>*H5qHqC_hsCn1j=3t!*Lo9%@g#iPQeoTfb(Db-b1Hw0wTr0^iKDF zBc>nMYg-m@a`TUO&`u$H3=!j89%@%0axF6DHtqdCrM+cXRNMPMJis8`-Q7q@cXyYh zG)PDz0^-mhAt*6)mvoABcSuO5q;v@)`QLCn=lne17tf1lU)Nl-XRXh^*Ig_2thgQf9jeue@Z?>bkJioHA;&wnIIRtI)l;yZK@%Z=c@en~@RafW zEE7x%oh4YXC=8FEnL7%lX$4l*=VnIX7R0~F+HULoqUDPpc9Vkfs!E5Z!iQK;h@p#i zmEsIjzcXFnL1P)U?nLP{}Q@lE@_AT{Ym>^vaQ!;Rpz+Pw`m(uLx^%|<)a<`JN8x=`gqi!J`lNw6!C_x4W zr7uyr4SM%hh-a>xg{xpo`M3&dmzvT)!ZKyX_3X-BCFv@@XK5!!T`vxw@jsM-6~@*h zWg4L5=;|=p`UTNRj~^gHfu*Ha-7OG2C%h&M7IUTMfe$g7;>KQuA+K|i>wUgLuQAE# zUNb?wW)qm3yw{qZJym;U2aZ>%(v+Jm$uB6VnxGr9t>u(0t4bo1DV0an{3>`}z-2_Q z--j4W<$p`-oXNFtCSH~{$2FF>y8K=bS1|Atw}@+yj1eMcVBN1=uuxH`idRXa>PoLo zKg<=dNf*f6-Y*t}jMz#Z;VF90`+M zUVI@z1UE!L&+#&8eUecvSo)p)_fE(3#e_IISp327Lat9cU~!ytkf-3_hmnKosl61t z9IsDYVJ{(m2!%=FmGThkjvt7tbCan}^ODb@uyL!p zj!GMXPbE&?GhKEN%Lo&%N=+nSWbL=u)ZOKN{e1^QaFw*;R>qi0!LOp9MfI%EZZ5PaK(s*>R~3gu)53+K^VoDa{=JZncua@oac|tDl15<_ z>C;0p8KqwRopAOb+pRuPY=@%!l)3(v`8PCQ9J$rEdb+}=wJ`Q6nK>aR$ zY&*5Su)e+hb;_bRGV*2tq$5=guWv*4sILzaT1_!tMVDPTj>bCQJ^D05tZv6!lxy{e z;~mvHj%q;6a9v`7pbpdNRUc;hPp^b6qi^z7;jLnILH6&r^ag+4Ej)5m^_dX_Dowe- zG1l4LfBrSM$kkjqM*x9dl7T=(AP~si>V>m|nY)!6yQP)2nTG?k)D?{S|9j5;EgjC^ zbMB)5opXQl|25}s`vpSkp2Ai3NRUYI?bK}BPlnjH1+lh@gzc3K>wUA5dAOZg?|0$* zNr%>!g;i^M#ja}8on*F(!h?$C5_jv@@%NaXT75XdV%+$!v+eIz1&>3^F9;LZ%QQw9 zjFb@W_oV*aA_4kIL>WU_glG&XZOK|%vqLJNEXXvYP&N&t;HfcWJ%?{~kRmyg{Z3+q z(h6AyTuJ7d;`^)lE5{>2CpJ|v_pzYoe3+K2QH81}Z8;s~&wkl((;8txoy)_TTlEEL z9a&3jcJa~ei-U~zB&GySh14q9FsJPIF9$8Q_np@Hrlm_$+`@g zlcv)c!6o%W){}fo$Ooj4DPsbBpQuqy@(_YuSSYaY6q9ZJiyTi4~rNP_5{i=ycA}YgTmyGy7wizoS8IeVr{u5t2t!_WEiHgQoOagP#gm zXY?YNdYF;seR)?+Ujag2=y(0A;Ve_h?&oTUFI)Qk=xbxHOgJY;9BjqeHlvW^{46vP z=z1dSVbH~>@+$MG!rRS>k~G`zeyy(B1uCrtM&CsHuq$U8)K?iy`Y7W-#Pq!Bwt|`GsFERLEV%4qD<#Ja=G#5hCFwd?lsv#t$@jZDt6%h)nbK~iwqk5 zA|sTJp9*7#%8?p_m^9ifH07$^tj&65-fC{mB>=(byQ)RkfiO4PI*j1kN2v7(m=^>` zOytOgFyjLhhZVrV%{-@eYFE}mO0!1xrH^N$BOp4v{Lx>$?1#giCEt-$kVpkH&JDtaCf^lv@6qDMU{Re6tNWh2{k6dzniU3 zO8ThBrl(6Rfv$Bny+i;tB7jm(}b{=MF}fgV^y8gg>@t9_c5&J&#H2&HhH z!llPD7=-AE#Ry>BNXBv&uU5L@?j8rvHH+mBSEXy>(pud3ROmZv0mwKXR##I&CGN>s zSQun0-=VLhNgE5`&dsQF3n(;WAf22XQfCnI!#E?x+2VB&TU>Nn?6fS{XoiK3TChwS z6|N@^N8e7WJk4g-sg$7HPDrL0`|ceAvrp}9V^wMvHECPtN7zel9{8m8m63iONxTZm zAOV9!Qp@(#jhL{p`S2dt-5AC}xD}&;qv0V*oKZtCl#Y;) zojXM%Gozo|#xBe^A$uOPJE{FQ?sIOsLjH zE)W*!YFFrSr{X-*%Ps)6fbdOF ztA}YQ`*oZu+j#&Vs;pk$QZ|yr$EOM@AIkupg}f09%sYdldf)FZWvVN(q>YjP^_jUA z3E8sn6~7|W-7DW__b<+F7C9!{M5adT-tign6v~l9k2?f02r1GuZWT(otU}oHg?}PG z@wHB~OS!H(Y?c4SsvmlsKFso6KknK2t0`AnFHp-HFUaMo*wKj_KhI5InUfzIgkRIG zz2IY?&XyBGajUqlmMNV)awq;!P9SBbIO>nDpO)uR9%i_UXNFuT_jS_i!;~Mv;8ax3 zr_4*R9y2~>yBjcUTUD&WwZqH{=e7KBO&R3KmDf8ST26~ui?GkV%JNpa(Zgm$lUec@ zQ?b&WPM5uT&@M&=#hHBHQHBDNvcm$kD4qUn9MM+phBcOm&7UqnkR{vr#RFC@`*ukJ zE}j`H_9s$8g(_8aIP1AKiql6o-OD=Avt{ugY20H39yOF+XragSB)KI z*rcJv|1z5iBkB_2-gzl<_*LB5^MwdHsDCS8- z%Gd74%^H#_3R3Z`Nv}alo96b%J+G#&v<@T^dMq2->sd-b8D4~v zQF6L#Dc%Syp|+feG#fGopZzz}SHJxfj~L1bRJ4(!x|rWgo5klSIW!U(hfb1=-L0J5 zJqxz$U7Kq~DQUVhY5t=BIIH``!3-Y(_NI9U`|Z%B$)6iSmMzMC`GEa0t3WS}4}`9v z+5r>Pt$2fp5Fqnk#=HteY9^Lv?X`jV{|hN#{$HmroBEVya@~+HHDPKPufl2I2l+*0 zO84pG3pag1laah9&or2#OJZvSAVMdpyCWFIk*~^F?LO(e@Xn&16S`jjU|M3(SEci- z{eU^)(^Qq2F2j#e9ZAimm(NMRDrM)j1(UY&d!(5xl0X)Jh&(me)TIePq&_ciy{>(A zXmPG|a$x_s@142jRG5H5YNS{Iwwov~6sC#(V8+dvl?-C-Dvr@4%YTnHZs8e0zV+ zYBF&P$4<AkZ=W z{mvSC2=Tt-JpTzKBY-Y73DjY`2g)5SA3c>-;G19?WHCuv-3D z)ja}oy7~H<>`vz1PY%kK7`@ncr{!YS+?1_2w*?X>3cXYd+oG_sNazijMZ=7(GFh~1 z%I{%SEZS@BRDu%yjuML!*r~rf-J!4`)kt{B7K9I>FfAjcMcU<8EQl zWL_ZU&4v3fd+*a#i%ZF?Ai3k?XT%g}U3L7#-Zu;fBe#9q@zt!Uvl9f5RQ^IFPKY|SFmIyJZmRpTY$C989%QQxG5CDmaxmo z?d-(DxqVT|7D<;b9n_h;8hASD+@NbE1nG#Q$uP^~!gZIh3jw=}7of1Z&2}x$XIK=! zVzQ<~UFi^!4t)27q+YgSLS&yRmhO4Xg{TIy)i!L;q0UT?q-?MJ^!|NyLExlaQHd z6mo>wy*+*yowjsxYC_eMf$dMtk?#7c^Khj+7{a@fXnNuGZ{vmDQ@@3xviMNM5Gs+) znu(>?JykTh(9|`1q>en(9T`Yx8@3jvy}^D(XRZP-r!|BvT8B?`Ko20Rfwrklnu(J4DR5#=e<_Gw; zE7c=Vhru>)bY_=UpBP3n0aLnPBC#ofgi*JoooQNK>1Qivi!6~sAshuiJ|}@iI&}*( zU(q~G=W11u=h7OjAs;U#3Co2}qfmXQomVsPvIz; znZ~CkPI*+Xrm5~m%kWaW_+~RJTM@;U@I^#&lVJ#tiP0-@2{Bx)o;Ya~v9G3tsM~_d z7GrR$4EfUBITttV^Sn}x*b92!b+`f)oy6DUF0HfE5DyGrJ7Ag&vsFUkbL$aA=@th1 z3{8E>zAm_GWlL^2>S|ALCrn9Tq=ee%e;Xk(FnpsM;Q8!T5!X`*0%}ht2j)gihKyl%-83|8hL8JP?+`cPis>1)Ys*ru+E)S z*p5Iwkw{)))>M=0cmW%7Nsg>TZ*?~rwp~$Q3RpYzRZk{`jehiZD$IDid}ni$S|1lZ zB6xR@v9q-WwKm@SX=;~l!fVp?sF_dh;LK_{E~WQI;!E>EC$X-$CnU~ou90*I9_?}~ z@EO&hX|faT4NkSi4>eP`?F`}9#7k?}kK_*1{p_MG8A9nIqGcl~AJ5U$N1i^Bt-`jY zrMNAm(VrYxb@()VZcvk!cCwel^iuRdecA}Iz=taNsa^%5*+&IGcX>R`b3246#8+yg zM8sO?5dx+;xGEpBD+D0C>v|dq_*~?vW>IcK9}-SbHM{pVFvp)Q8N{L_xST!WfWD8u z%Qk6n+~Ge(VRKg+Pl{JIUL8XUE2Mq^`)62#cp!kPTA1Xl%4e-vc|yRFV@f%`nz=qq>T$ zUj8q(w1_>lC85Q&rohbUbFOoWf^5hZj;^Np)lZ!@`UQM=n6DV&&pjQg5l_zM+%*!k z?P`DIy|(kQwu@u)9RyFR3LFx)yDA?Jg$Og)`fRocI5{;LvRMpwN4ge!>GnP?Pk&*h zkqfWUlIxOyC6&bqkwW5QplvK<;qE|Q1-FwDXndT;s3psyHYV}!b*9X7z9qJ<8}dM^ z4HNDA@kZ46jo+kH;~MQ|Zq?Z8z{TU_&9ZaGKB$vP+v|MNJnHw~_m39qD0-3A-V?Aj%P$URT7xkiNr!I z+QW^{Jl6MEOg?qm9GXeNC8`ZBh#A_Lw!YC?n(A(Jz-!3HhZ!#uaI6t|UebkbD?M~h z+`VgCHBI22CPrJzU_?qZtw9?5QDmxIXG2Nyf}U(c?rp7V(%|mn=k7>m3z@y-(v-h= z!~9+5BNy{&d?0Hb$wi#!)%H74xxOX5^;Yuu9^ddgsu>f^8&r%`gHKkiP|iX*WC*gU zCSNAO^(lUGK}1G&?o``%!lvFy_v>x9!;9yye*CJ0b{6PS7orp4a?L$U z_3+y|-D+{6$Cq()-ydH_3E4OF zxu5&JGrYw`jQyBfEOYt(S$R?JyIuZ?p^dR(-~GiJG7M=+Y@BdQP+wK@vG4hOcSNSN z{>z<_TE4VM8Em~hln4rZCF`T_vndl15QvYgwQG9R`J-1<)2FNiou>3wv(ecbu0(9n zodIe&o$M_a)D5!9;y7m;C9(`QkYa&B!Zb>+is^A_B4a!heHtUn4--GlMl2KWu$g7D2{{cU1_7aLJxss(Ndov2+hY~Sd`+uf2k zX-5h%8_39sdef&U70Ml=brL zTGI++v6WX)V4-%tv?7I2Asp{M%1Hw+#W%2CS}M%Ykc7R!b|+SzDTDP;J_?_L}s< zUG!D%x^?!UMW-z~Sua$rtaAHjil?qr&1lp|WcdiZf{}4VQL`m|pdLu5e-hH(2h@IBHPc9JiO#^x{yYtCzO z6i$*Kwu#{ZZ((^(vpk73PPEA+c^^wl)do!*R!dn) z+AMA>8w?nv$LpegmxKxN)S+TZ@X{U4m3yN9(KUYtM?Yrb^l%za-_z!Uw2cCDf0O+4 z%|fLwfwFg*3BtG7WNxyG zMwal0Qj*DjVXcW5MKtO(k9erxomF7#_GVO*e(N>I=<{inmne)M%|_8z4u3_(oOL^% zSXr|7k(S^TIsbzMq)Hj)vNv*NMj+l6wZ97)M?TFS?6Ic2$8k0n7A9ZmD*eV5O2-ecm;BHhm^%f=)3`&I3I zg^Z;Fh6_T|lbGjk_pPP3wmlQ08Z8&mIvu|>kv!TPXi0&!g7`dobEv=2g1kl)u^bh# zn@JRCROeQzx($L>^q%fta+3(EiNLtUsTr$2CvU!e%wbvGu|wL(dh$tHJV2XU;{Bvq z-8<3J+Kb~f&Bo=K4SE@>V&BO;(m9q(i7VQCuc4}ZFs&I*L!0HQ_WQ5Z)gB4voaqIw zKI9&%?J$lgfXD1dhI&K5MEI+I1*l(xe->uvT(;cBcPItVItiQWn1%+o5jCb9i#S zy51O}G}OuV<(XI`ZFi8-v!;4}FRyL!2?}pscDnV(cF1mahc=--wpoT|2CF`7SK8Zp z2ApR@5|y!#ENLV;vcX*Y(14#S+UzWy2C;D{NJi;vlOO!ywAYk&YBwrG)%k|ryfEya z)iGcN*FfwY;TAn|*!Yq;m^OXK6X4*aKC#UNc2kZA!Rs5mo4fK+?X=C1Z!v8MexlK# z7#fwYMi1e}VRm+GFgZw?@rEBv)Jy292-35{SKy(?7HkJE$PnrpzfecEJo|lqSSL3@ zjAjNU3Z=d5;>)~=ZAo!i)u19(%vu+FtoAj7#cUFMF9Zn!&1&DON>_t$Na3veIxAk5 zqGW?v$95HPepnd?5Bea2Lu_$_QP7O<$!Ey38aK53>)hIKn^zK^ z+BR`D-a|?!rXd2OiCKZK>qR|I37*pH2xXa^c3n^Gvv_sLvK6|ol}AzS$8vT~7Vr~zK~pOYqy8Ct)7cVG zHLzxT+-uy-Z|n5{<&z{0v##j~A7i1F5y9Q4;fd?LYurF`ZD9QYuY|o3o$N5B$wb1p ze98O6!$zc)j}x!^87z&92hdB$;R>UJ$L6Gq1YrvnTc(O@88eYzlr_6PJ0cvu50$No=!Jc{gu8@*dH7mxq*New!wo1J4MKEC-B;_hmaXs9Q78-~tOCK&P}0P6`o2h%VPNw8Rv zR&)O4?Byc_eBth|{EdFkgDT%a)WQ%Li=`%uYzVO37P!c!>{nlwno|#OKb3oNwX>S~ zOd^CN#BBblu!?fB7RoENcK9#AxnV8T{#Ufr2632Let5pEoIR@qC`FZoo*Xl#@YrY5 zTgD1cY<)ehXRFLvsRXO3Pqf6OGNqcSU5aUfkM`!f$0qwMoBW?A(xcC+Lw>4zF{rQx zZTlf^8+tGPS}Dc`oy>G1q3^Lws7NVGWC}O43c%JlrsBcPZqZNI>n- z-0^Tl4!NvXD&HU{c*~jT4Md)9JyOxusr*u2h|Fo^YXn{=;U+RKqp1mBqlXkBqYX}f$&6g7Cpb$O<8W&Z=H4kYhkn2UpE0|2;?3JMtq>qq^TR?(@13Gy|hp6(l zB1^*I#Y^k;$BmlDCKZcunnYA;I6+?*3uvE1&a`f|-oVVL{)ljf{b>8_dxu*(t^i8& z^EG9*SI?x-DGpoP5ASMZM8~5ccs)+kLMJ(zu4(n!R3$Gav932nO!wg=WPL5)RKqPb zMYSvX@YmS?(8AHq%rJ($D*oAQeY3NDE*iSamowMfHY-B8y@tw}z~4XLhOp*GFqogW zrY9lxW)5)>2z+$(!Z`iM*G9g`cfGN#bQuipQLiO&&L6F8ZnsNJ2q?qH2u{GcAl&ZN zXKJxKYZF$Jcz;D#Jp_w>1x6;<*Q)rXJbTluhJ_YvdRT2-sW1o{W7zmQtWUuNhnN)ZGuNe-5@O@D8lO zK2ph>r9O*LQ&K82)JuDj-LgyeDMJTrjXs}KG~B#|dXQc)+Sn!W%luu5G#*JW|h&OQ3Xw2Hd=WqBfIM%5Sls)}&Yr(&Ys-Jn5wa_l=cs>ib zYKu5X4898mzdk619cFQM9dLpVtGvT$TirB+Tu!ksoS-!%!?rlIBuUaQi!1wUf@?!O0S)GNi(A!(h`=#@< z#_c@%O*Ad9lHr%+3n{j0?PL-5N?wT4wk4OX@-v>eciV$}PD`UoxyKO2>^ffk%<6vb zH6|MxV3Qu!MVvcRN>K;fDE`OEJtZmE`53WreFcLL-nrMlB**Hu*1yt!e#xMxUd@oZ zw0X_6CgPOaJoN-Kxw>#8kw=S)T|WEQb0-9Sq7@#^@nqQ&ZPcTBjwp32ZthJdnuNFR z4W8L0mu_vjvsB3iK0-YZRV_#Ck$v>aiPXb=y*IX%UFcb-KxCK3ymQ5tCA8&8g?2^~ufJ3le^L~@HN^Nm`J^#vo24yx%8C1$?g|gaQb1&v`5mUON0%~d zJY;mYyN~ckk2Yo2@X{|K%T#y#Vv)H#|I7Q9-M(iHAMcuS=dEjPY zQC1f1iht@ml0${U-Y`Tf)$RVHp4A9PP=^(p>wGfNe)O8iAU0v{2H0UeRwG&0KW|pl z5s|{lHO@NnIp`P<5`Zt!VLyDCnZ!w@kjP~*Fn!c_M(R%!-gS{ce>O1#srL!pWJ}YH zMPMY=Ir$Lw{7VX|ujTjJN7GMrS?~?AXa&AwW~65IR0K$;qQ<|=Okk&ICuT}ptRU5S zacGz~E|&;}-CM#{c;-{;3zHvW|KZ6EKL0)&6aP~&%e`I$JjgF>)iU*g5FpY^>y`{@ z;>?go`+IKP8CaIZ+;`US?_l5v=iqN=-VpEX%(4V{P23oxdV0pLFzO%;yc+ZbF#@;p}-b()0ChlfEhqM9*|b=SA2?6W8(qjgvT_ zS3!b!c1UZP=plT)0>r5`S#J^2US5HvU87TS(9{cIR#5H2aQ%c~cwN<{K4fmy3bqsZ z{osAHeURZ@`twE$`R%ZTY6Hl1JTGR3Fn4-eJZFWkyL{LsfNj+suFZeFhyRL9JNYHT zBV2$10YR8*FL%jr5Q`W%hQTXzkwU8eEG9;!S%bt?!e-80GW>PJ`(T=_5CW46QhTbtDuD8_!gqj z-fnc#@Pjt3yuhv8m5C~d$P{tHlPYq0$Hc@otIf?3If>vUTT$Ucmk_+JZqo_fA#UJN zu#BQ)(B5LMu2lVVn=eufWX3i`{s<||HwntvX1^eww5&Dly+%lg+CMz2!?wRo8GPfJ zemU(zl;xK>VozofZXx`EE5K#xrO`Q2V9|RgqT7T6K`2LuRVr7dz@xI-Jt;=tn~YkG zo#@bp8^h;_I1ob8^64ZD42G^k?=N(xalyhGwq5=bLOc&}~a zE?J&J$b;JZM*S2XYbif>+~MvBODAUNK&+@g zNDwF{?!?va`Qct>s=oQE6hqO^&(_SjFFLhtlv~Fiui_VRpiLPCswWBsM^YS842#V; zl1{VhE>R2KFFQD&(~r0`ss&!uZR;`m19zIvkTvzFuspd${2?`ITo)wYk0=!)>KZYo z9*+lPSydKNKidu(dwI)og@AI84KMPlvI)J)*(`pFjuw^=|PUJw6e`o&+^rv2KzJ73V}r%r;-gFGB~REWVSw#{u56`fCWix~rdh$~J%l9K znzKv0h|iXNbQDOVv!Z&;gQPk&G@tq+LzAYxm%Ta~hAhN2u&Tz@jqa}KjVbW*b$L9P z8FHE0@Q~W$YE|NCMP9S-RJX@(EN#2I$b`81Af?h@tL*O1gasl|SmYd>77q5V`b%5FEI}*qX zH6#LZ|B<*)oM2%NK5|tztJqzWQL&HF_LAQ}|6D96;S+|Xo7L-zZx&3-+wD9-(!P|& zvq0}`eG}DQPd^$1POXq^OtN&G%NGBNAXbFLBW`8r)kDm+ZufMqukO6$4( zI8$}8$5gj%bYkB2WB`w|I)64G5q}l3bnwQPVQfGV)|M(#Yg#E+o#)x*<;WJ& zzAr8CL%vr?5q{TH(~h0oC9aFJ2hYD74Gz*#N7%+BxKxGc@u{a^@V$UVhB;+}=*>kg zha|II-O-Jf>>SO9COH%$lN7t)Sx&v>1h$MI-4gWI4#c-RGxi`!4DKs0=%|}+<^){w z9%eazdh@l9HiFQMi+Z%tGMl?6H;oHw_`&r9Q$74oMpjM3=eKAIL6wSXWJ-MgFpa^U zrh@OQed>Y}UAv5>VI`PzKaH9jLEZ)Hj_Z4t1X@xGDYYk%RD@7@-mJ+hzUXK`&72>A z+PigsL6UUpRhg~IV5?H@YB(8r=SZ;w7g*NK@w!b{99Lftk6yR`F*k^RV&;kAX$Bp; z&MR$M8^+Ri#Ro0@#fO`P+HKN=5UCNAifv3)8YOiWOFZQDIXUb%N}xTIpOAB;23?a8 zb3{!)jFMhh1VeRt`Q?r2pHi7cRYgrPno%s>C`GRwx2o*js`s!-&JnLu?;P869$`2| zlAu$3{km^58PpjY%<=AS1f|}LP{VEU<)EW(Y?)r23B(wp@@tDvqa!GkK*~ekG1s{? z{$OENMSsXBTFwXj?o9`eat0(M$ZcL2>`q0i^6911WAd`7V3qJJq4J?|VY4>^zMU9p zWF0}6ZXG=E82%HHL}74+V^rOz`R=@O8e8!}Uv&;n;WIkAD3Z<=)dt&oW<(B8IXqBs zld5`NFcKN%jwTaeqE{?S$|Tp!g&F`eHkvqZL%na#cvX@+J36klY?UCtRu)asN@Z=%-UmF!L8>+!r4MGc- z8|RC};W?IwPuk&odej|TST4fSwc}UfF3h^N4V~ZUDl}OZe^PL9JHKs22p5jy zfgA~LC`WhEg{YtesqjJaH`Ay2OGVTIrA9BFzb3~#MPIa#YuH+w2uo3qXfoi`n#H_+ zUd)%L(mGPuqh(%a81O?lx@wYnyX->8-1Q)CqC7^ui2wqy=Ku0zXV`OQ5YKtqAe z1(U5%X^cg>qd{N4P@%R(M;E;Q{DY;AAyt`a{##?}qB?eDvqaU1m9f1ou zNaChYfKVgu-{o`|Oa?=x%w_!LoM*|TdZqbA9HxEM6syU0jKUsp}`BsAaXDDnDrE}aH zLY}jLSfq$-<8##NkXgN0ESYJ`oE8Ee+j0B0I9&6zUe0VoK7E;^$e4hy;+z0qr)!HZ zzs$PnCkOdnUxa3CK7ri+*cPA@5?WqlF<|bNY@aW&>b4{m*NZqlP!Z4)|DIZ1geslM1nRq9td((-yV_n;r=XE$2K38j48uFWrV&N^~DKsS`00GQL@RPa6JbywwBPX^=+F0<_$F}MU!f}XTEJWndkCRXZD1KVdLW|ZWE;2v z9*!A^fBB&Y{QlvFz8B2>aAVvH7Q27zfoAlA*&c32d%>I!H;w~f5-3Fm;yH?OynM%CM(!P_`j3*#oz#KmrUUv=aEu{3q53n2-DCqWk9#6SOb! z^d8Sm2{30gTo)!93(VTh06~XH{{ewOx&F!E*cITMWYm2yD#bmLCCuHK7C=w~A7H)Q zKUc254ODd)Oh4{h*r1BY@nCNDmo;$OKUG5isflnIy4n?KXf!-6Ig_$sc5bP=Axb zg?XOqr1;GNG3#G;#0Bh#2)fr3sRq%r3jo{#Xy8xjnNS`wnoR@F4YPkQV8J0_kQyCmFv$W_CTU$98CJ4Us2Rq)PQ~eDCzH|K* zBmg816m9}cN^!5M#>yB`+uW3k@jH2X>^{7@iIZsuMSpz3@;)k1%esOWq^$5>&+3U?9wD-3tl zr1&dfv8%Aif1SU(`=QXFDKO20K8mJ*LPOW?6F;ou{;MaLX&`-T_kq0W9uZV^`nLj& z?=#wterI4oy(YofRQG~z(;tB@)qsjo_1`kfp1?q{xM3duOC4(lXa`RMVPgGl@S!h) zVE!tY>fQ(J+;dOf0-9Y1{DA%sVc*8UKo4SI7@(yyzjx!~}sT0Jr>;0w@(=q#FhYDn1LQd~l|hbf#p&M<$j`u_L)GSgYvb8GV40mwsM!J-2YR#x zgA6U4`(0V7v7Iki0i~J(^@ipTG4Hjj_NBk_m;rUo2>1XE`9D{#KMhoE5zO?Uai2v%<4uUL&du>xjz5KNv&U3VC0XvP3@QT`19zH|M9tze;NF|bts zLs&YN12~Wk1me^JPKf*Ckr*2&$2Xvhz1NtAMJmiP;3;m5|K&I~5bE{~%>00I`^-pW zLjVG`Y5Z3QCGYN;B!o_W16=Q(;C4Gb@iAafQ()-xr(bC2L(x}(E)qaN1y%v&`?f-L zSHT<)32%V}IP^AHD9j+30BX7hMu2v&g0Ua+=I-;pb^hNx{I%bCENeg>b>F{vln?rP zjSLg)0SG+^eEzH}(Et_;A58K1|MtrFjL(`BegYJ6Kgjz}XDHqe_{2Jx?Sb+F`E^^w zJypOOe^P!6zyQib(4_U>%$2PJ%&8B+LWkDDbPrFHqI}6M0iJXK?D(g(QHNlmE+jzv zK(_(Lc@SG@19tbhu+Yp6prrfOI;HTk zb{oiq08qek|6IT*UO+Zk}Ls%%<7MT8ltAE0% z{NB9zH(R;>(nqjR?Z09Fh7$q$l)o{+cdmcQ1uV2(1WXBS-1^P;@6(n+um9R<@(()K zzZVV;`hDwnuZ#X2;N=1Z4$Audw<7;NW%0iT55<7H*AN9X@oz~o@1Kq)frGYu|E&kp z&+@eJfTcEoHvUg_eJ6v1!fk_T9~w&LZQwy_N;s(e_U~f&w{@?X_Th{4^fmI(T0 z=Xde{cj4imPOYH;2d&!qZPb4kA^z7T+!f*OT>=-1w)>l;P03RFKA<-H|M9Y^r*Ke- z-QU`k>Qrg@0I1an^54GU!T=5$vI}N^5C)-nlwuc<)arlg!hkCrbn0(v|IX6=w=V3s zJ*fPlE+9jN_kMGkDq0PW252q=#{KhcEZYwb>bwW&^1fwJ(|O7Y0|HIKtc>;0Vb